<?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>108915</bug_id>
          
          <creation_ts>2013-02-05 00:13:55 -0800</creation_ts>
          <short_desc>[EFL][WK2] Add WK2 C API to handle touch events.</short_desc>
          <delta_ts>2013-06-27 18:54:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>109128</dependson>
          <blocked>107662</blocked>
    
    <blocked>110085</blocked>
    
    <blocked>111543</blocked>
    
    <blocked>111702</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eunmi Lee">enmi.lee</reporter>
          <assigned_to name="Eunmi Lee">enmi.lee</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>d-r</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>levin</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>menard</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>825202</commentid>
    <comment_count>0</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-05 00:13:55 -0800</bug_when>
    <thetext>Add WKViewHandleTouchEvent() API for handling touch event in order to use C WK2 API and not C++ internals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825366</commentid>
    <comment_count>1</comment_count>
      <attachid>186596</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-05 04:25:27 -0800</bug_when>
    <thetext>Created attachment 186596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825367</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-05 04:27:49 -0800</bug_when>
    <thetext>Attachment 186596 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/NativeWebTouchEvent.h&apos;, u&apos;Source/WebKit2/Shared/efl/NativeWebTouchEventEfl.cpp&apos;, u&apos;Source/WebKit2/Shared/efl/WebEventFactory.cpp&apos;, u&apos;Source/WebKit2/Shared/efl/WebEventFactory.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/C/efl/WKView.h&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/EwkView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/EwkView.h&apos;, u&apos;Source/WebKit2/UIProcess/API/efl/ewk_view.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebView.cpp&apos;, u&apos;Source/WebKit2/UIProcess/efl/WebView.h&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:39:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:40:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:41:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:42:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:47:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:48:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:49:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:50:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:51:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:66:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 10 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825376</commentid>
    <comment_count>3</comment_count>
      <attachid>186600</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-05 04:44:37 -0800</bug_when>
    <thetext>Created attachment 186600
Patch

Modify checker.py for style error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825385</commentid>
    <comment_count>4</comment_count>
      <attachid>186596</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-05 04:58:27 -0800</bug_when>
    <thetext>Comment on attachment 186596
Patch

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +
&gt; +        Add WKViewHandleTouchEvent() API to handle touch events using C WK2 API
&gt; +        and not C++ internals. Additionally, WKTouchEvent and several types are
&gt; +        defined to represent touch events as WK style.

Let&apos;s make this more clear.

Touch events for our target platforms differ (XInput2, Wayland, Tizen) so
for the EFL port we want to be able to feed events manually.

To keep our current API for desktop EFL/Enlightenment working, we convert
our currently limited EFL events to the new EFL specific C WKTouchEvent type.

The WKViewSendTouchEvent can be used for any use-case (platform/product)
not involving the EFL events.

At the same time we make sure to avoid using WK2 internals in our EFL API
implementation.

&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:81
&gt; +#endif /* WKEventEfl_h */

Wouldn&apos;t this not be included as &lt;efl/WKEvent.h&gt; 

Maybe we do not need the appended Efl. Anyway it shouldn&apos;t matter. WebKit2 does not provide a WKEvent.h itself. So even if we install the headers in the same place there should be no conflict

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:56
&gt; +WK_EXPORT void WKViewHandleTouchEvent(WKViewRef, const WKTouchEvent*);

WKViewSendTouchEvent(WKViewRef, const WKTouchEvent*); is better I think

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:959
&gt; +void EwkView::handleTouchEvent(Ewk_Touch_Event_Type type, const Eina_List* points, const Evas_Modifier* modifiers)

send? as it doesnt return a bool on whether it got handed or not... it seems more correct.

Maybe, as this is purely conversion, it should be done directly in the ewk C API in ewk_view?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825390</commentid>
    <comment_count>5</comment_count>
      <attachid>186600</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-05 05:03:57 -0800</bug_when>
    <thetext>Comment on attachment 186600
Patch

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

&gt; Source/WebKit2/Shared/efl/WebEventFactory.cpp:243
&gt; +    for (unsigned i = 0; i &lt; event.numTouchPoints; ++i) {

maybe it&apos;s worth making sure that event.numTouchPoints &lt; kWKMaximumTouchPointsPerTouchEvent?

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.cpp:85
&gt; +{

ASSERT (touchEvent) ?

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:963
&gt; +    WKTouchEvent touchEvent;

maybe creation of WKTouchEvent deservse a separate function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825394</commentid>
    <comment_count>6</comment_count>
      <attachid>186600</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-05 05:06:42 -0800</bug_when>
    <thetext>Comment on attachment 186600
Patch

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

&gt; Source/WebKit2/ChangeLog:3
&gt; +        [EFL][WK2] Add WK2 C API to handle touch event.

events (plural) I guess.

&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:50
&gt; +    const WKTouchEvent* nativeEvent() const { return &amp;m_nativeEvent; }

It seems strange that the native touch event for EFL is a WK type. Also, this is internal WK2 C++ code. It usually does not rely on C API types.

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:996
&gt; +        switch (point-&gt;state) {

I guess we could do a cast instead and use COMPILE_ASSERT_MATCHING_ENUM() from ewk_private instead? This would be more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825410</commentid>
    <comment_count>7</comment_count>
      <attachid>186600</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-05 05:38:51 -0800</bug_when>
    <thetext>Comment on attachment 186600
Patch

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

&gt; Source/WebKit2/UIProcess/efl/WebView.cpp:79
&gt; +    m_webPageProxy-&gt;handleTouchEvent(NativeWebTouchEvent(touchEvent));

Maybe we could add a &quot;NativeWebTouchEvent toNativeWebTouchEvent(const WKTouchEvent&amp;);&quot; to Source/WebKit2/UIProcess/API/C/efl/WKAPICastEfl.h. Internally, we would construct a WebTouchEvent* from the WKTouchEvent and construct a NativeWebTouchEvent from the WebTouchEvent*. This would remove the dependency on WKTouchEvent from NativeWebTouchEvent. I think we should remove this dependency to respect layering between internal WK2 C++ API and external WK2 C API.

See as example:
Source/WebKit2/Shared/API/c/WKSharedAPICast.h:inline WebCore::IntRect toIntRect(const WKRect&amp; wkRect)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826047</commentid>
    <comment_count>8</comment_count>
      <attachid>186600</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-05 20:25:27 -0800</bug_when>
    <thetext>Comment on attachment 186600
Patch

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

&gt;&gt; Source/WebKit2/ChangeLog:3
&gt;&gt; +        [EFL][WK2] Add WK2 C API to handle touch event.
&gt; 
&gt; events (plural) I guess.

Yes, I will modify that.

&gt;&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:50
&gt;&gt; +    const WKTouchEvent* nativeEvent() const { return &amp;m_nativeEvent; }
&gt; 
&gt; It seems strange that the native touch event for EFL is a WK type. Also, this is internal WK2 C++ code. It usually does not rely on C API types.

Yes, C API types are not usually used in the internal WK2 c++ codes.
However in our case, we want to use common event type not Evas event type, (Evas does not have type for &quot;touch&quot; event, anyway)
so we have to define that like WKTouchEvent.

Additionally, the native event has to be stored because I want to use that when I return the result of touch event to the client of WKView.
So, I don&apos;t want to remove C API dependency from here.

How about changing the name of event type to EflTouchEvent? I think it can seem strange because the type starts with &quot;WK&quot;.

&gt;&gt; Source/WebKit2/Shared/efl/WebEventFactory.cpp:243
&gt;&gt; +    for (unsigned i = 0; i &lt; event.numTouchPoints; ++i) {
&gt; 
&gt; maybe it&apos;s worth making sure that event.numTouchPoints &lt; kWKMaximumTouchPointsPerTouchEvent?

Yes, right.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.cpp:85
&gt;&gt; +{
&gt; 
&gt; ASSERT (touchEvent) ?

I will add that.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:963
&gt;&gt; +    WKTouchEvent touchEvent;
&gt; 
&gt; maybe creation of WKTouchEvent deservse a separate function?

yes, it is better.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:996
&gt;&gt; +        switch (point-&gt;state) {
&gt; 
&gt; I guess we could do a cast instead and use COMPILE_ASSERT_MATCHING_ENUM() from ewk_private instead? This would be more efficient.

I couldn&apos;t do that because the sequence of types is different between EVAS_TOUCH_POINT and TouchPointState in the webkit.
(EVAS_TOUCH_POINT_UP is second member, but kWKTouchPointStateTouchReleased is first member.)

&gt;&gt; Source/WebKit2/UIProcess/efl/WebView.cpp:79
&gt;&gt; +    m_webPageProxy-&gt;handleTouchEvent(NativeWebTouchEvent(touchEvent));
&gt; 
&gt; Maybe we could add a &quot;NativeWebTouchEvent toNativeWebTouchEvent(const WKTouchEvent&amp;);&quot; to Source/WebKit2/UIProcess/API/C/efl/WKAPICastEfl.h. Internally, we would construct a WebTouchEvent* from the WKTouchEvent and construct a NativeWebTouchEvent from the WebTouchEvent*. This would remove the dependency on WKTouchEvent from NativeWebTouchEvent. I think we should remove this dependency to respect layering between internal WK2 C++ API and external WK2 C API.
&gt; 
&gt; See as example:
&gt; Source/WebKit2/Shared/API/c/WKSharedAPICast.h:inline WebCore::IntRect toIntRect(const WKRect&amp; wkRect)

I can&apos;t remove dependency of WKTouchEvent from NativeTouchEvent, because I save WKTouchEvent in the NativeTouchEvent as a native event to use it when I return the result of touch event to the client of WebView.
So, I want to maintain current codes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826054</commentid>
    <comment_count>9</comment_count>
      <attachid>186596</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-05 20:38:33 -0800</bug_when>
    <thetext>Comment on attachment 186596
Patch

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

&gt;&gt; Source/WebKit2/ChangeLog:10
&gt;&gt; +        defined to represent touch events as WK style.
&gt; 
&gt; Let&apos;s make this more clear.
&gt; 
&gt; Touch events for our target platforms differ (XInput2, Wayland, Tizen) so
&gt; for the EFL port we want to be able to feed events manually.
&gt; 
&gt; To keep our current API for desktop EFL/Enlightenment working, we convert
&gt; our currently limited EFL events to the new EFL specific C WKTouchEvent type.
&gt; 
&gt; The WKViewSendTouchEvent can be used for any use-case (platform/product)
&gt; not involving the EFL events.
&gt; 
&gt; At the same time we make sure to avoid using WK2 internals in our EFL API
&gt; implementation.

Thank you, your explanation makes me clear too. :)

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:81
&gt;&gt; +#endif /* WKEventEfl_h */
&gt; 
&gt; Wouldn&apos;t this not be included as &lt;efl/WKEvent.h&gt; 
&gt; 
&gt; Maybe we do not need the appended Efl. Anyway it shouldn&apos;t matter. WebKit2 does not provide a WKEvent.h itself. So even if we install the headers in the same place there should be no conflict

The WKEvent.h already exists in the WebKit2 - Shared/API/c/WKEvent.h, so I use WKEventEfl.h.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:56
&gt;&gt; +WK_EXPORT void WKViewHandleTouchEvent(WKViewRef, const WKTouchEvent*);
&gt; 
&gt; WKViewSendTouchEvent(WKViewRef, const WKTouchEvent*); is better I think

Yes, I agree with you.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:959
&gt;&gt; +void EwkView::handleTouchEvent(Ewk_Touch_Event_Type type, const Eina_List* points, const Evas_Modifier* modifiers)
&gt; 
&gt; send? as it doesnt return a bool on whether it got handed or not... it seems more correct.
&gt; 
&gt; Maybe, as this is purely conversion, it should be done directly in the ewk C API in ewk_view?

If so, I will move codes to the ewk_view.
Actually, I&apos;m confused the role of ewk_view and EwkView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826108</commentid>
    <comment_count>10</comment_count>
      <attachid>186764</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-05 23:33:29 -0800</bug_when>
    <thetext>Created attachment 186764
Patch

Fixed for comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826146</commentid>
    <comment_count>11</comment_count>
      <attachid>186600</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-06 00:06:55 -0800</bug_when>
    <thetext>Comment on attachment 186600
Patch

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

&gt;&gt;&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:50
&gt;&gt;&gt; +    const WKTouchEvent* nativeEvent() const { return &amp;m_nativeEvent; }
&gt;&gt; 
&gt;&gt; It seems strange that the native touch event for EFL is a WK type. Also, this is internal WK2 C++ code. It usually does not rely on C API types.
&gt; 
&gt; Yes, C API types are not usually used in the internal WK2 c++ codes.
&gt; However in our case, we want to use common event type not Evas event type, (Evas does not have type for &quot;touch&quot; event, anyway)
&gt; so we have to define that like WKTouchEvent.
&gt; 
&gt; Additionally, the native event has to be stored because I want to use that when I return the result of touch event to the client of WKView.
&gt; So, I don&apos;t want to remove C API dependency from here.
&gt; 
&gt; How about changing the name of event type to EflTouchEvent? I think it can seem strange because the type starts with &quot;WK&quot;.

I&apos;ve thought about this again, I can remove dependency of C API if I do not use native event variable.
and I can make WKTouchEvent from the NativeWebTouchEvent when I return the result of touch event to the client of WKView.
I have to convert again without storing native event, but C API dependency can be removed, so it would be better.
I will update patch for that. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826175</commentid>
    <comment_count>12</comment_count>
      <attachid>186764</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-06 00:32:11 -0800</bug_when>
    <thetext>Comment on attachment 186764
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:46
&gt; +enum EflTouchPointState {

C API Coding style would use EFL not Efl, but let me see you next patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826349</commentid>
    <comment_count>13</comment_count>
      <attachid>186833</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-06 04:58:00 -0800</bug_when>
    <thetext>Created attachment 186833
Patch

Update patch to remove C API dependency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826358</commentid>
    <comment_count>14</comment_count>
      <attachid>186833</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-06 05:17:53 -0800</bug_when>
    <thetext>Comment on attachment 186833
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/efl/EFLEvent.h:37
&gt; +enum EFLTouchEventType {

What was the problem with calling it WK ? it is only available from our port. Anyway if using WK is not fine, then I opt for EWK

&gt; Tools/Scripts/webkitpy/style/checker.py:232
&gt;        # struct members. Also, we allow unnecessary parameter names in
&gt;        # WebKit2 APIs because we&apos;re matching CF&apos;s header style.
&gt; +      # Additionally, we use word which starts with non-capital letter &apos;k&apos;
&gt; +      # for types of enums.
&gt;        &quot;Source/WebKit2/UIProcess/API/C/&quot;,
&gt;        &quot;Source/WebKit2/Shared/API/c/&quot;,
&gt;        &quot;Source/WebKit2/WebProcess/InjectedBundle/API/c/&quot;],
&gt; -     [&quot;-readability/naming&quot;,
&gt; +     [&quot;-readability/enum_casing&quot;,
&gt; +      &quot;-readability/naming&quot;,
&gt;        &quot;-readability/parameter_name&quot;,

This should be another patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826397</commentid>
    <comment_count>15</comment_count>
      <attachid>186833</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-06 06:34:24 -0800</bug_when>
    <thetext>Comment on attachment 186833
Patch

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

&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:42
&gt; +    explicit NativeWebTouchEvent(const WebTouchEvent&amp;);

NativeWebTouchEvent inherits WebTouchEvent and does not contain anything useful. Seems we don&apos;t need it at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826405</commentid>
    <comment_count>16</comment_count>
      <attachid>186833</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-06 06:42:34 -0800</bug_when>
    <thetext>Comment on attachment 186833
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/efl/EFLEvent.h:43
&gt; +typedef EFLTouchEventType EFLTouchEventType;

typedef struct EFLTouchEventType EFLTouchEventType;?

&gt; Source/WebKit2/UIProcess/API/C/efl/EFLEvent.h:52
&gt; +typedef EFLTouchPointState EFLTouchPointState;

Ditto.

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:56
&gt; +WK_EXPORT void WKViewSendTouchEvent(WKViewRef, const EFLTouchEvent*);

this really does not look good: it has to be WK_EXPORT void WKViewSendTouchEvent(WKViewRef, WKTouchEventRef);

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:366
&gt; +static EFLTouchEvent* createEFLTouchEvent(Evas_Object* ewkView, Ewk_Touch_Event_Type type, const Eina_List* points, const Evas_Modifier* modifiers)

can we find some better place for it? (I&apos;ve just cleaned up this file, would not like to do it again :))

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:433
&gt; +    EFLTouchEvent* touchEvent = createEFLTouchEvent(ewkView, type, points, modifiers);

OwnPtr might be useful</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827015</commentid>
    <comment_count>17</comment_count>
      <attachid>186833</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-06 19:51:03 -0800</bug_when>
    <thetext>Comment on attachment 186833
Patch

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

&gt;&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:42
&gt;&gt; +    explicit NativeWebTouchEvent(const WebTouchEvent&amp;);
&gt; 
&gt; NativeWebTouchEvent inherits WebTouchEvent and does not contain anything useful. Seems we don&apos;t need it at all.

We need this because we have to set the NativeWebTouchEvent not WebTouchEvent as a parameter to call the WebPageProxy::handleTouchEvent(const NativeWebTouchEvent&amp; event).

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/EFLEvent.h:37
&gt;&gt; +enum EFLTouchEventType {
&gt; 
&gt; What was the problem with calling it WK ? it is only available from our port. Anyway if using WK is not fine, then I opt for EWK

I thought that it can be confusing to use WK because this touch event type is only for EFL.
However, it is not matter because it is only available in the EFL port as you said.

so, I decide to change name to WK again.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/EFLEvent.h:43
&gt;&gt; +typedef EFLTouchEventType EFLTouchEventType;
&gt; 
&gt; typedef struct EFLTouchEventType EFLTouchEventType;?

oh, I&apos;ve missed &quot;enum&quot;. I will add it.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:56
&gt;&gt; +WK_EXPORT void WKViewSendTouchEvent(WKViewRef, const EFLTouchEvent*);
&gt; 
&gt; this really does not look good: it has to be WK_EXPORT void WKViewSendTouchEvent(WKViewRef, WKTouchEventRef);

OK, I will change codes to use WK Ref type.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:366
&gt;&gt; +static EFLTouchEvent* createEFLTouchEvent(Evas_Object* ewkView, Ewk_Touch_Event_Type type, const Eina_List* points, const Evas_Modifier* modifiers)
&gt; 
&gt; can we find some better place for it? (I&apos;ve just cleaned up this file, would not like to do it again :))

OK, I will consider that :)

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:433
&gt;&gt; +    EFLTouchEvent* touchEvent = createEFLTouchEvent(ewkView, type, points, modifiers);
&gt; 
&gt; OwnPtr might be useful

Yes, I agree.

&gt;&gt; Tools/Scripts/webkitpy/style/checker.py:232
&gt;&gt;        &quot;-readability/parameter_name&quot;,
&gt; 
&gt; This should be another patch

OK, I will upload this as a separated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827112</commentid>
    <comment_count>18</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-07 00:34:48 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 186833 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186833&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:42
&gt; &gt;&gt; +    explicit NativeWebTouchEvent(const WebTouchEvent&amp;);
&gt; &gt; 
&gt; &gt; NativeWebTouchEvent inherits WebTouchEvent and does not contain anything useful. Seems we don&apos;t need it at all.
&gt; 
&gt; We need this because we have to set the NativeWebTouchEvent not WebTouchEvent as a parameter to call the WebPageProxy::handleTouchEvent(const NativeWebTouchEvent&amp; event).
Guess it can be changed to accept const WebTouchEvent&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827241</commentid>
    <comment_count>19</comment_count>
      <attachid>186833</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-07 03:06:09 -0800</bug_when>
    <thetext>Comment on attachment 186833
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:42
&gt;&gt;&gt;&gt; +    explicit NativeWebTouchEvent(const WebTouchEvent&amp;);
&gt;&gt;&gt; 
&gt;&gt;&gt; NativeWebTouchEvent inherits WebTouchEvent and does not contain anything useful. Seems we don&apos;t need it at all.
&gt;&gt; 
&gt;&gt; We need this because we have to set the NativeWebTouchEvent not WebTouchEvent as a parameter to call the WebPageProxy::handleTouchEvent(const NativeWebTouchEvent&amp; event).
&gt; 
&gt; Guess it can be changed to accept const WebTouchEvent&amp;.

We can not change the parameter type of handleTouchEvent(const NativeWebTouchEvent&amp; event).
Because the event parameter is set to the doneWithTouchEvent(const NativeWebTouchEvent&amp; event, bool wasEventHandled) and event.nativeEvent() is used in the Qt port.
i.e. NativeWebTouchEvent is needed in order to use nativeEvent().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827327</commentid>
    <comment_count>20</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-07 04:42:41 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 186833 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186833&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:42
&gt; &gt;&gt;&gt;&gt; +    explicit NativeWebTouchEvent(const WebTouchEvent&amp;);
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; NativeWebTouchEvent inherits WebTouchEvent and does not contain anything useful. Seems we don&apos;t need it at all.
&gt; &gt;&gt; 
&gt; &gt;&gt; We need this because we have to set the NativeWebTouchEvent not WebTouchEvent as a parameter to call the WebPageProxy::handleTouchEvent(const NativeWebTouchEvent&amp; event).
&gt; &gt; 
&gt; &gt; Guess it can be changed to accept const WebTouchEvent&amp;.
&gt; 
&gt; We can not change the parameter type of handleTouchEvent(const NativeWebTouchEvent&amp; event).
&gt; Because the event parameter is set to the doneWithTouchEvent(const NativeWebTouchEvent&amp; event, bool wasEventHandled) and event.nativeEvent() is used in the Qt port.

Exactly, this looks like Qt port-specific thing that we do not need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827337</commentid>
    <comment_count>21</comment_count>
      <attachid>186833</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-07 04:58:33 -0800</bug_when>
    <thetext>Comment on attachment 186833
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:42
&gt;&gt;&gt;&gt;&gt;&gt; +    explicit NativeWebTouchEvent(const WebTouchEvent&amp;);
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; NativeWebTouchEvent inherits WebTouchEvent and does not contain anything useful. Seems we don&apos;t need it at all.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; We need this because we have to set the NativeWebTouchEvent not WebTouchEvent as a parameter to call the WebPageProxy::handleTouchEvent(const NativeWebTouchEvent&amp; event).
&gt;&gt;&gt; 
&gt;&gt;&gt; Guess it can be changed to accept const WebTouchEvent&amp;.
&gt;&gt; 
&gt;&gt; We can not change the parameter type of handleTouchEvent(const NativeWebTouchEvent&amp; event).
&gt;&gt; Because the event parameter is set to the doneWithTouchEvent(const NativeWebTouchEvent&amp; event, bool wasEventHandled) and event.nativeEvent() is used in the Qt port.
&gt;&gt; i.e. NativeWebTouchEvent is needed in order to use nativeEvent().
&gt; 
&gt; Exactly, this looks like Qt port-specific thing that we do not need.

Yes, the NativeWebTouchEvent is only needed by Qt,
but the events like NativeWebMouseEvent are used by other ports.

So, I don&apos;t think it is good way to change to use WebEvent instead of NativeWebEvent only for Touch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828214</commentid>
    <comment_count>22</comment_count>
      <attachid>187241</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-07 22:53:58 -0800</bug_when>
    <thetext>Created attachment 187241
Patch

Update patch for comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835113</commentid>
    <comment_count>23</comment_count>
      <attachid>188794</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-17 21:39:41 -0800</bug_when>
    <thetext>Created attachment 188794
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836096</commentid>
    <comment_count>24</comment_count>
      <attachid>188794</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-19 00:55:13 -0800</bug_when>
    <thetext>Comment on attachment 188794
Patch

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

&gt; Source/WebKit2/Shared/API/c/efl/WKBaseEfl.h:28
&gt; +typedef const struct OpaqueWKTouchEventRef* WKTouchEventRef;

&quot;OpaqueWKTouchEventRef&quot; -&gt; &quot;OpaqueWKTouchEvent&quot;

&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:65
&gt; +WKTouchEventRef WKTouchEventCreate(WKTouchEvent event)

Shouldn&apos;t we take a WKTouchEvent* in argument to avoid copying?

&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:106
&gt; +void WKTouchEventRelease(WKTouchEventRef touchEventRef)

All the WKTypes are ref counted. I think it is confusing that WKTouchEventRef isn&apos;t. It seems WKTouchEvent is the only WK type having a custom Release function. Shouldn&apos;t we have a WebTouchEvent that is an APIObject (similarly to WebRect and WKRectRef / WKRect) ?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:383
&gt; +    WKTouchEventRef touchEventRef = WKTouchEventCreate(*touchEvent.get());

We should really use WKRetainPtr IMHO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837033</commentid>
    <comment_count>25</comment_count>
      <attachid>188794</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-19 18:07:11 -0800</bug_when>
    <thetext>Comment on attachment 188794
Patch

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

&gt;&gt; Source/WebKit2/Shared/API/c/efl/WKBaseEfl.h:28
&gt;&gt; +typedef const struct OpaqueWKTouchEventRef* WKTouchEventRef;
&gt; 
&gt; &quot;OpaqueWKTouchEventRef&quot; -&gt; &quot;OpaqueWKTouchEvent&quot;

my mistake. thanks.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:65
&gt;&gt; +WKTouchEventRef WKTouchEventCreate(WKTouchEvent event)
&gt; 
&gt; Shouldn&apos;t we take a WKTouchEvent* in argument to avoid copying?

Yes, I agree. the pointer type is better.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:106
&gt;&gt; +void WKTouchEventRelease(WKTouchEventRef touchEventRef)
&gt; 
&gt; All the WKTypes are ref counted. I think it is confusing that WKTouchEventRef isn&apos;t. It seems WKTouchEvent is the only WK type having a custom Release function. Shouldn&apos;t we have a WebTouchEvent that is an APIObject (similarly to WebRect and WKRectRef / WKRect) ?

Yes. I&apos;ve also considered about that WebTouchEvent inherits an APIObject.
But I don&apos;t know I can change common class - WebTouchEvent only for EFL port. do you think is that OK?

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:383
&gt;&gt; +    WKTouchEventRef touchEventRef = WKTouchEventCreate(*touchEvent.get());
&gt; 
&gt; We should really use WKRetainPtr IMHO.

If WebTouchEvent can inherit APIObject, I can change to use WKRetainPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837051</commentid>
    <comment_count>26</comment_count>
      <attachid>188794</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-19 18:28:54 -0800</bug_when>
    <thetext>Comment on attachment 188794
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:106
&gt;&gt;&gt; +void WKTouchEventRelease(WKTouchEventRef touchEventRef)
&gt;&gt; 
&gt;&gt; All the WKTypes are ref counted. I think it is confusing that WKTouchEventRef isn&apos;t. It seems WKTouchEvent is the only WK type having a custom Release function. Shouldn&apos;t we have a WebTouchEvent that is an APIObject (similarly to WebRect and WKRectRef / WKRect) ?
&gt; 
&gt; Yes. I&apos;ve also considered about that WebTouchEvent inherits an APIObject.
&gt; But I don&apos;t know I can change common class - WebTouchEvent only for EFL port. do you think is that OK?

Anyway, I will prepare patch to inherits an APIObject and get comments for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837058</commentid>
    <comment_count>27</comment_count>
      <attachid>189221</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-19 18:32:55 -0800</bug_when>
    <thetext>Created attachment 189221
Patch

Modified for comments except inheriting APIObject (I will make patch for this again) and add missing ENABLE(TOUCH_EVENTS).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843825</commentid>
    <comment_count>28</comment_count>
      <attachid>190669</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-28 00:31:28 -0800</bug_when>
    <thetext>Created attachment 190669
Patch

Change WebTouchEvent to inherit an APIObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843831</commentid>
    <comment_count>29</comment_count>
      <attachid>190669</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-28 00:39:45 -0800</bug_when>
    <thetext>Comment on attachment 190669
Patch

Attachment 190669 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/16771946</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843835</commentid>
    <comment_count>30</comment_count>
      <attachid>190671</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-02-28 00:45:07 -0800</bug_when>
    <thetext>Created attachment 190671
Patch

Fix build break in the qt-wk2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849863</commentid>
    <comment_count>31</comment_count>
      <attachid>190671</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-07 01:28:49 -0800</bug_when>
    <thetext>Comment on attachment 190671
Patch

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

&gt; Source/WebKit2/Shared/WebEvent.h:330
&gt; +    static PassRefPtr&lt;WebTouchEvent&gt; create(WebEvent::Type type, Vector&lt;WebPlatformTouchPoint&gt; touchPoints, Modifiers modifiers, double timestamp)

I know you followed the existing code but I think the Vector should really be passed by const reference here.

&gt; Source/WebKit2/Shared/WebEvent.h:338
&gt; +    WebTouchEvent(WebEvent::Type, Vector&lt;WebPlatformTouchPoint&gt;, Modifiers, double timestamp);

Ditto.

&gt; Source/WebKit2/Shared/WebEvent.h:340
&gt; +    WebTouchEvent(const WebTouchEvent&amp;);

Adding a copy constructor does not seem right. RefCounted objects (such as APIObjects) are non-copyable by design.

&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:73
&gt; +    Vector&lt;WebPlatformTouchPoint&gt; touchPoints;

You could call touchPoints.reserveInitialCapacity(event-&gt;numTouchPoints); right after that since we already know the number of touch points.

&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:74
&gt; +    WebPlatformTouchPoint::TouchPointState state;

This could be declared in the for loop scope.

&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:78
&gt; +        switch (point.state) {

Feels like this should be in a separate function to improve readability (the switch). e.g. toWebPlatformTouchPointState().

&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:99
&gt; +        touchPoints.append(WebPlatformTouchPoint(point.id, state, toIntPoint(point.screenPosition), toIntPoint(point.position), toIntSize(point.radius), point.rotationAngle, point.force));

You could use WTF::Vector::uncheckedAppend() here to save a few capacity checks (provided that you call reserveInitialCapacity() earlier).

&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:102
&gt; +    RefPtr&lt;WebTouchEvent&gt; webTouchEvent = WebTouchEvent::create(typeForEvent(event-&gt;type), touchPoints, modifiersForWKEvent(event-&gt;modifiers), event-&gt;timestamp);

Useless local variable: you can return toAPI(WebTouchEvent::create(...).leakRef()) directly.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_touch.cpp:57
&gt; +    double x;

It seems this one could be in the for loop scope.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_touch.cpp:58
&gt; +    double y;

Ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_touch_private.h:35
&gt; +class AffineTransform;

I thought we stopped using WebCore types in our Ewk code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849885</commentid>
    <comment_count>32</comment_count>
      <attachid>190671</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-03-07 01:58:51 -0800</bug_when>
    <thetext>Comment on attachment 190671
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:38
&gt; +    if (type == kWKEventTypeTouchStart)

Isn&apos;t possibility to use switch ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849974</commentid>
    <comment_count>33</comment_count>
      <attachid>190671</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2013-03-07 05:02:50 -0800</bug_when>
    <thetext>Comment on attachment 190671
Patch

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

&gt; Source/WebKit2/Shared/WebEvent.cpp:36
&gt; +    : m_eventType(static_cast&lt;uint32_t&gt;(NoType))

I would suggest to split the patch in two pieces, and find out whether we can get the enabling change landed. So it would be: One patch for the type() -&gt; eventType() renaming, one for the second part of actually exporting WebEvent as an ApiObject. When creating the first patch the ChangeLog would need to describe the rationale/plan to export WebEvent as an ApiObject in order to be able to send touch and other events to the view. Eunmi, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850021</commentid>
    <comment_count>34</comment_count>
      <attachid>190671</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-07 06:07:39 -0800</bug_when>
    <thetext>Comment on attachment 190671
Patch

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

&gt;&gt; Source/WebKit2/Shared/WebEvent.h:340
&gt;&gt; +    WebTouchEvent(const WebTouchEvent&amp;);
&gt; 
&gt; Adding a copy constructor does not seem right. RefCounted objects (such as APIObjects) are non-copyable by design.

Agree with Chris, RefCounted objects are supposed to be created on heap and passed via smart pointers. Practically you won&apos;t need copy constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850025</commentid>
    <comment_count>35</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-07 06:13:44 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 190671 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190671&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/Shared/WebEvent.h:340
&gt; &gt;&gt; +    WebTouchEvent(const WebTouchEvent&amp;);
&gt; &gt; 
&gt; &gt; Adding a copy constructor does not seem right. RefCounted objects (such as APIObjects) are non-copyable by design.
&gt; 
&gt; Agree with Chris, RefCounted objects are supposed to be created on heap and passed via smart pointers. Practically you won&apos;t need copy constructor

And copying of ref count is not definitely desired behaviour :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850026</commentid>
    <comment_count>36</comment_count>
      <attachid>190671</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-07 06:16:27 -0800</bug_when>
    <thetext>Comment on attachment 190671
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:75
&gt; +typedef struct WKTouchEvent WKTouchEvent;

Could you please tell why we need this structure. Cannot we just pass every structure member simply as a parameter for WKTouchEventCreate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850974</commentid>
    <comment_count>37</comment_count>
      <attachid>190671</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-08 01:00:43 -0800</bug_when>
    <thetext>Comment on attachment 190671
Patch

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

Thanks for comments :)

&gt;&gt; Source/WebKit2/Shared/WebEvent.cpp:36
&gt;&gt; +    : m_eventType(static_cast&lt;uint32_t&gt;(NoType))
&gt; 
&gt; I would suggest to split the patch in two pieces, and find out whether we can get the enabling change landed. So it would be: One patch for the type() -&gt; eventType() renaming, one for the second part of actually exporting WebEvent as an ApiObject. When creating the first patch the ChangeLog would need to describe the rationale/plan to export WebEvent as an ApiObject in order to be able to send touch and other events to the view. Eunmi, what do you think?

I agree with you. This patch became bigger and includes many things, so it is better to split, especially renaming of type().

&gt;&gt; Source/WebKit2/Shared/WebEvent.h:330
&gt;&gt; +    static PassRefPtr&lt;WebTouchEvent&gt; create(WebEvent::Type type, Vector&lt;WebPlatformTouchPoint&gt; touchPoints, Modifiers modifiers, double timestamp)
&gt; 
&gt; I know you followed the existing code but I think the Vector should really be passed by const reference here.

yes right. I will fix that.

&gt;&gt;&gt;&gt; Source/WebKit2/Shared/WebEvent.h:340
&gt;&gt;&gt;&gt; +    WebTouchEvent(const WebTouchEvent&amp;);
&gt;&gt;&gt; 
&gt;&gt;&gt; Adding a copy constructor does not seem right. RefCounted objects (such as APIObjects) are non-copyable by design.
&gt;&gt; 
&gt;&gt; Agree with Chris, RefCounted objects are supposed to be created on heap and passed via smart pointers. Practically you won&apos;t need copy constructor
&gt; 
&gt; And copying of ref count is not definitely desired behaviour :)

It is difficult issue to me.

The copy constructor of WebTouchEvent is needed in the WebPageProxy::handleTouchEvent() function.
If WebTouchEvent inherits APIObject, the default copy constructor of WebTouchEvent is called and the copy constructor of APIObject is also required.
However, the APIObject is non-copyable because it is RefCounted object as you said.

So, I&apos;ve made explicit copy constructor of WebTouchEvent which does not require the copy constructor of APIObject.
Actually, I think it is not a good solution.

How can I solve this issue?

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:38
&gt;&gt; +    if (type == kWKEventTypeTouchStart)
&gt; 
&gt; Isn&apos;t possibility to use switch ?

Sure.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:73
&gt;&gt; +    Vector&lt;WebPlatformTouchPoint&gt; touchPoints;
&gt; 
&gt; You could call touchPoints.reserveInitialCapacity(event-&gt;numTouchPoints); right after that since we already know the number of touch points.

Yes, right.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:74
&gt;&gt; +    WebPlatformTouchPoint::TouchPointState state;
&gt; 
&gt; This could be declared in the for loop scope.

OK.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:78
&gt;&gt; +        switch (point.state) {
&gt; 
&gt; Feels like this should be in a separate function to improve readability (the switch). e.g. toWebPlatformTouchPointState().

I agree with you.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:99
&gt;&gt; +        touchPoints.append(WebPlatformTouchPoint(point.id, state, toIntPoint(point.screenPosition), toIntPoint(point.position), toIntSize(point.radius), point.rotationAngle, point.force));
&gt; 
&gt; You could use WTF::Vector::uncheckedAppend() here to save a few capacity checks (provided that you call reserveInitialCapacity() earlier).

I see, thanks for information. :)

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:102
&gt;&gt; +    RefPtr&lt;WebTouchEvent&gt; webTouchEvent = WebTouchEvent::create(typeForEvent(event-&gt;type), touchPoints, modifiersForWKEvent(event-&gt;modifiers), event-&gt;timestamp);
&gt; 
&gt; Useless local variable: you can return toAPI(WebTouchEvent::create(...).leakRef()) directly.

Yes, right.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.h:75
&gt;&gt; +typedef struct WKTouchEvent WKTouchEvent;
&gt; 
&gt; Could you please tell why we need this structure. Cannot we just pass every structure member simply as a parameter for WKTouchEventCreate?

It is useful to return TouchEvent values to the application :)
You can see that in the Bug 110085&apos;s WKTouchEventGetValue.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_touch.cpp:57
&gt;&gt; +    double x;
&gt; 
&gt; It seems this one could be in the for loop scope.

OK, I will move them.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_touch_private.h:35
&gt;&gt; +class AffineTransform;
&gt; 
&gt; I thought we stopped using WebCore types in our Ewk code?

OK, I have to think how to convert points without AffineTransform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851078</commentid>
    <comment_count>38</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2013-03-08 04:45:32 -0800</bug_when>
    <thetext>(In reply to comment #37)

&gt; &gt; And copying of ref count is not definitely desired behaviour :)
&gt; 
&gt; It is difficult issue to me.
&gt; 
&gt; The copy constructor of WebTouchEvent is needed in the WebPageProxy::handleTouchEvent() function.
&gt; If WebTouchEvent inherits APIObject, the default copy constructor of WebTouchEvent is called and the copy constructor of APIObject is also required.
&gt; However, the APIObject is non-copyable because it is RefCounted object as you said.
&gt; 
&gt; So, I&apos;ve made explicit copy constructor of WebTouchEvent which does not require the copy constructor of APIObject.
&gt; Actually, I think it is not a good solution.
&gt; 
&gt; How can I solve this issue?

As discussed on IRC, the underlying issue is that WebPageProxy needs to copy the touch events and buffer them in a queue for deferred sending to WebProcess. 

At the same time, in your patch, NativeWebTouchEvent is reusing WebTouchEvent for storage, which becomes non-copyable when exposing it as APIObject. As a solution, I would suggest to introduce our own storage class, e.g. EflTouchEvent. This one would fulfil a similar purpose as QTouchEvent or the structure that you already had there WKTouchEvent. IMO this would make the patch more consistent with other parts of the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851088</commentid>
    <comment_count>39</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-08 05:03:47 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; 
&gt; &gt; &gt; And copying of ref count is not definitely desired behaviour :)
&gt; &gt; 
&gt; &gt; It is difficult issue to me.
&gt; &gt; 
&gt; &gt; The copy constructor of WebTouchEvent is needed in the WebPageProxy::handleTouchEvent() function.
&gt; &gt; If WebTouchEvent inherits APIObject, the default copy constructor of WebTouchEvent is called and the copy constructor of APIObject is also required.
&gt; &gt; However, the APIObject is non-copyable because it is RefCounted object as you said.
&gt; &gt; 
&gt; &gt; So, I&apos;ve made explicit copy constructor of WebTouchEvent which does not require the copy constructor of APIObject.
&gt; &gt; Actually, I think it is not a good solution.
&gt; &gt; 
&gt; &gt; How can I solve this issue?
&gt; 
&gt; As discussed on IRC, the underlying issue is that WebPageProxy needs to copy the touch events and buffer them in a queue for deferred sending to WebProcess. 
&gt; 
&gt; At the same time, in your patch, NativeWebTouchEvent is reusing WebTouchEvent for storage, which becomes non-copyable when exposing it as APIObject. As a solution, I would suggest to introduce our own storage class, e.g. EflTouchEvent. This one would fulfil a similar purpose as QTouchEvent or the structure that you already had there WKTouchEvent. IMO this would make the patch more consistent with other parts of the implementation.

Maybe WebTouchEvent can be used some other way within WebPageProxy::handleTouchEvent()? As far as I see copy constructor is used for storing events in a queue, maybe this queue can keep shared pointers instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851215</commentid>
    <comment_count>40</comment_count>
      <attachid>192232</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-08 08:22:29 -0800</bug_when>
    <thetext>Created attachment 192232
WIP

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851216</commentid>
    <comment_count>41</comment_count>
      <attachid>192232</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-08 08:26:08 -0800</bug_when>
    <thetext>Comment on attachment 192232
WIP

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

&gt; Source/WebKit2/Shared/WebPlatformTouchPoint.h:46
&gt; +// FIXME: Having &quot;Platform&quot; in the name makes it sound like this event is platform-specific or low-
&gt; +// level in some way. That doesn&apos;t seem to be the case.
&gt; +class WebPlatformTouchPoint : public APIObject {

Seems you should just rename it! And moving it out and doing the rename should be a separate patch for the rest of your patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852071</commentid>
    <comment_count>42</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-10 23:57:29 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; (In reply to comment #38)
&gt; &gt; (In reply to comment #37)
&gt; &gt; 
&gt; &gt; &gt; &gt; And copying of ref count is not definitely desired behaviour :)
&gt; &gt; &gt; 
&gt; &gt; &gt; It is difficult issue to me.
&gt; &gt; &gt; 
&gt; &gt; &gt; The copy constructor of WebTouchEvent is needed in the WebPageProxy::handleTouchEvent() function.
&gt; &gt; &gt; If WebTouchEvent inherits APIObject, the default copy constructor of WebTouchEvent is called and the copy constructor of APIObject is also required.
&gt; &gt; &gt; However, the APIObject is non-copyable because it is RefCounted object as you said.
&gt; &gt; &gt; 
&gt; &gt; &gt; So, I&apos;ve made explicit copy constructor of WebTouchEvent which does not require the copy constructor of APIObject.
&gt; &gt; &gt; Actually, I think it is not a good solution.
&gt; &gt; &gt; 
&gt; &gt; &gt; How can I solve this issue?
&gt; &gt; 
&gt; &gt; As discussed on IRC, the underlying issue is that WebPageProxy needs to copy the touch events and buffer them in a queue for deferred sending to WebProcess. 
&gt; &gt; 
&gt; &gt; At the same time, in your patch, NativeWebTouchEvent is reusing WebTouchEvent for storage, which becomes non-copyable when exposing it as APIObject. As a solution, I would suggest to introduce our own storage class, e.g. EflTouchEvent. This one would fulfil a similar purpose as QTouchEvent or the structure that you already had there WKTouchEvent. IMO this would make the patch more consistent with other parts of the implementation.

I&apos;ve tried to solve &quot;copy constructor&quot; problem by change type of storage from WebTouchEvent to EFLTouchEvent, but I&apos;ve failed because NativeWebTouchEvent already use WebTouchEvent as its parent.
Go back to the beginning,
I think the problem is that we tried to make WebTouchEvent to inherit APIObject which is non-copyable.
So, I&apos;m going to prepare new patch which does not make WebTouchEvent to APIObject and make EFLTouchEvent to inherit APIObject instead.

&gt; 
&gt; Maybe WebTouchEvent can be used some other way within WebPageProxy::handleTouchEvent()? As far as I see copy constructor is used for storing events in a queue, maybe this queue can keep shared pointers instead?

Yes, WebTouchEvent can be used in the handleTouchEvent(), so I will prepare patch as I describe above.
I think it is not easy to make queue to keep shared pointers because handleTouchEvent&apos;s parameter is reference of NativeWebTouchEvent which does not a shared pointer type,
and we have to change many things to return shared pointer of NativeWebTouchEvent instead of reference of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852073</commentid>
    <comment_count>43</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-10 23:58:25 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 192232 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192232&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/WebPlatformTouchPoint.h:46
&gt; &gt; +// FIXME: Having &quot;Platform&quot; in the name makes it sound like this event is platform-specific or low-
&gt; &gt; +// level in some way. That doesn&apos;t seem to be the case.
&gt; &gt; +class WebPlatformTouchPoint : public APIObject {
&gt; 
&gt; Seems you should just rename it! And moving it out and doing the rename should be a separate patch for the rest of your patch

OK, I will prepare separate patch for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854237</commentid>
    <comment_count>44</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-13 05:55:39 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; (In reply to comment #41)
&gt; &gt; (From update of attachment 192232 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192232&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/Shared/WebPlatformTouchPoint.h:46
&gt; &gt; &gt; +// FIXME: Having &quot;Platform&quot; in the name makes it sound like this event is platform-specific or low-
&gt; &gt; &gt; +// level in some way. That doesn&apos;t seem to be the case.
&gt; &gt; &gt; +class WebPlatformTouchPoint : public APIObject {
&gt; &gt; 
&gt; &gt; Seems you should just rename it! And moving it out and doing the rename should be a separate patch for the rest of your patch
&gt; 
&gt; OK, I will prepare separate patch for that.

Kenneth,
I encountered a copy constructor problem when I make WebPlatformTouchPoint to inherit APIObject like WebTouchEvent,
and I&apos;ve defined EFLTouchPoint and make it to inherit APIObject instead of WebPlatformTouchPoint.
also, I don&apos;t have to make new patch for changing WebPlatformTouchPoint.

Please comment for new patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854254</commentid>
    <comment_count>45</comment_count>
      <attachid>192913</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-13 06:28:23 -0700</bug_when>
    <thetext>Created attachment 192913
Patch

Make new patch by adding EFLTouchEvent and EFLTouchPoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854953</commentid>
    <comment_count>46</comment_count>
      <attachid>193064</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-13 21:58:46 -0700</bug_when>
    <thetext>Created attachment 193064
Patch

Rebased and Modified wrong UNUSED_PARAM of WKTouchEventCreate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856944</commentid>
    <comment_count>47</comment_count>
      <attachid>193064</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-18 03:18:16 -0700</bug_when>
    <thetext>Comment on attachment 193064
Patch

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

&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:53
&gt;      const QTouchEvent* nativeEvent() const { return &amp;m_nativeEvent; }
&gt; +#elif PLATFORM(EFL)
&gt; +    const EFLTouchEvent* nativeEvent() const { return m_nativeEvent.get(); }
&gt;  #endif

Why do *we* need this nativeEvent() method at all?

&gt; Source/WebKit2/UIProcess/API/C/efl/WKAPICastEfl.h:45
&gt; +WK_ADD_API_MAPPING(WKTouchEventRef, EFLTouchEvent)
&gt; +WK_ADD_API_MAPPING(WKTouchPointRef, EFLTouchPoint)

Maybe EWKTouchEvent or EWebTouchEvent would make more sense

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:738
&gt; +    const unsigned count = eina_list_count(points);

length  = ...

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:742
&gt; +        Ewk_Touch_Point* point = static_cast&lt;Ewk_Touch_Point*&gt;(eina_list_nth(points, i));
&gt; +        EINA_SAFETY_ON_NULL_RETURN(point);

I dont see the point of using these EINA_ ...

When can this even happen? You already get the length above. Maybe ASSERT(point) makes more sense

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:744
&gt; +        touchPoints[i] = WKTouchPointCreate(point-&gt;id, toAPI(IntPoint(position)), toAPI(transformToScreen().mapPoint(position)), toWKTouchPointState(point-&gt;state), WKSizeMake(0, 0), 0, 0);

force == 0 seems wrong...no force at all. why not 1?

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1272
&gt; +    OwnArrayPtr&lt;WKTypeRef&gt; touchPoints = adoptArrayPtr(new WKTypeRef[count]);

I prefer length over count

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1279
&gt; +        int id = evas_touch_point_list_nth_id_get(sd-&gt;base.evas, i);
&gt; +        int x, y;
&gt; +        evas_touch_point_list_nth_xy_get(sd-&gt;base.evas, i, &amp;x, &amp;y);
&gt; +        Evas_Touch_Point_State state = evas_touch_point_list_nth_state_get(sd-&gt;base.evas, i);
&gt; +        IntPoint position(x, y);
&gt; +        touchPoints[i] = WKTouchPointCreate(id, toAPI(IntPoint(position)), toAPI(transformToScreen().mapPoint(position)), toWKTouchPointState(state), WKSizeMake(0, 0), 0, 0);

why not do the id = above the last line where you actually use it. Actually reorder things to where they are used... same thing with position vs state

&gt; Source/WebKit2/UIProcess/efl/EFLTouchPoint.h:57
&gt; +    EFLTouchPoint(uint32_t id, WKTouchPointState, const WKPoint&amp;, const WKPoint&amp;, const WKSize&amp;, float rotationAngle, float force);

forceFactor ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857016</commentid>
    <comment_count>48</comment_count>
      <attachid>193064</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-18 05:22:14 -0700</bug_when>
    <thetext>Comment on attachment 193064
Patch

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

Thank you for comments!

&gt;&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:53
&gt;&gt;  #endif
&gt; 
&gt; Why do *we* need this nativeEvent() method at all?

Because we have to return EFLTouchEvent to the EwkView in the doneWithTouchEvent() - Bug 110085.
So, we maintain the EFLTouchEvent as m_nativeEvent and it will be used to make gesture in the EwkView.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKAPICastEfl.h:45
&gt;&gt; +WK_ADD_API_MAPPING(WKTouchPointRef, EFLTouchPoint)
&gt; 
&gt; Maybe EWKTouchEvent or EWebTouchEvent would make more sense

Yes, I will change name to EwkTouchEvent like EwkView as you told in IRC :)

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:738
&gt;&gt; +    const unsigned count = eina_list_count(points);
&gt; 
&gt; length  = ...

OK.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:742
&gt;&gt; +        EINA_SAFETY_ON_NULL_RETURN(point);
&gt; 
&gt; I dont see the point of using these EINA_ ...
&gt; 
&gt; When can this even happen? You already get the length above. Maybe ASSERT(point) makes more sense

Yes, the point should not be null here. I will change to ASSERT.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:744
&gt;&gt; +        touchPoints[i] = WKTouchPointCreate(point-&gt;id, toAPI(IntPoint(position)), toAPI(transformToScreen().mapPoint(position)), toWKTouchPointState(point-&gt;state), WKSizeMake(0, 0), 0, 0);
&gt; 
&gt; force == 0 seems wrong...no force at all. why not 1?

Yes, right. it should have at least 1.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1272
&gt;&gt; +    OwnArrayPtr&lt;WKTypeRef&gt; touchPoints = adoptArrayPtr(new WKTypeRef[count]);
&gt; 
&gt; I prefer length over count

Yes, I will change it.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1279
&gt;&gt; +        touchPoints[i] = WKTouchPointCreate(id, toAPI(IntPoint(position)), toAPI(transformToScreen().mapPoint(position)), toWKTouchPointState(state), WKSizeMake(0, 0), 0, 0);
&gt; 
&gt; why not do the id = above the last line where you actually use it. Actually reorder things to where they are used... same thing with position vs state

OK, I will reorder things for readability :)

&gt;&gt; Source/WebKit2/UIProcess/efl/EFLTouchPoint.h:57
&gt;&gt; +    EFLTouchPoint(uint32_t id, WKTouchPointState, const WKPoint&amp;, const WKPoint&amp;, const WKSize&amp;, float rotationAngle, float force);
&gt; 
&gt; forceFactor ?

?? I will change the default value of force to 1 :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857032</commentid>
    <comment_count>49</comment_count>
      <attachid>193543</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-18 05:54:46 -0700</bug_when>
    <thetext>Created attachment 193543
Patch

Update for comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857037</commentid>
    <comment_count>50</comment_count>
      <attachid>193543</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-18 06:03:03 -0700</bug_when>
    <thetext>Comment on attachment 193543
Patch

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

LGTM

&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:37
&gt; +WKTouchPointRef WKTouchPointCreate(int id, WKPoint position, WKPoint screenPosition, WKTouchPointState state, WKSize radius, float rotationAngle, float force)

I would still s/force/forceFactor/

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1294
&gt; +        evas_touch_point_list_nth_xy_get(sd-&gt;base.evas, i, &amp;x, &amp;y);
&gt; +        int id = evas_touch_point_list_nth_id_get(sd-&gt;base.evas, i);
&gt; +        IntPoint position(x, y);
&gt; +        Evas_Touch_Point_State state = evas_touch_point_list_nth_state_get(sd-&gt;base.evas, i);
&gt; +        touchPoints[i] = WKTouchPointCreate(id, toAPI(IntPoint(position)), toAPI(transformToScreen().mapPoint(position)), toWKTouchPointState(state), WKSizeMake(0, 0), 0, 1);

I would still move id down two lines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857046</commentid>
    <comment_count>51</comment_count>
      <attachid>193543</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-18 06:15:26 -0700</bug_when>
    <thetext>Comment on attachment 193543
Patch

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

&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:46
&gt; +    NativeWebTouchEvent(EwkTouchEvent*, const WebCore::AffineTransform&amp;);

guess could be const EwkTouchEvent*

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:753
&gt; +    const unsigned length = eina_list_count(points);

const should be omitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857930</commentid>
    <comment_count>52</comment_count>
      <attachid>193543</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-18 22:09:24 -0700</bug_when>
    <thetext>Comment on attachment 193543
Patch

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

&gt;&gt; Source/WebKit2/Shared/NativeWebTouchEvent.h:46
&gt;&gt; +    NativeWebTouchEvent(EwkTouchEvent*, const WebCore::AffineTransform&amp;);
&gt; 
&gt; guess could be const EwkTouchEvent*

It is not const because EwkTouchEvent* is changed in the constructor in order to increase reference count.

&gt;&gt; Source/WebKit2/UIProcess/API/C/efl/WKEventEfl.cpp:37
&gt;&gt; +WKTouchPointRef WKTouchPointCreate(int id, WKPoint position, WKPoint screenPosition, WKTouchPointState state, WKSize radius, float rotationAngle, float force)
&gt; 
&gt; I would still s/force/forceFactor/

Ah, I see. you want more understandable name :)
I will change the name to forceFactor.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:753
&gt;&gt; +    const unsigned length = eina_list_count(points);
&gt; 
&gt; const should be omitted.

OK, I will remove that.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1294
&gt;&gt; +        touchPoints[i] = WKTouchPointCreate(id, toAPI(IntPoint(position)), toAPI(transformToScreen().mapPoint(position)), toWKTouchPointState(state), WKSizeMake(0, 0), 0, 1);
&gt; 
&gt; I would still move id down two lines

OK, I will move id.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857948</commentid>
    <comment_count>53</comment_count>
      <attachid>193733</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-03-18 22:38:00 -0700</bug_when>
    <thetext>Created attachment 193733
Patch

Modified for comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858182</commentid>
    <comment_count>54</comment_count>
      <attachid>193733</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-19 05:04:56 -0700</bug_when>
    <thetext>Comment on attachment 193733
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859192</commentid>
    <comment_count>55</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-20 02:16:21 -0700</bug_when>
    <thetext>LGTM too, now I guess we need approval from a WK2 owner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881752</commentid>
    <comment_count>56</comment_count>
      <attachid>199797</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-04-26 01:18:18 -0700</bug_when>
    <thetext>Created attachment 199797
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904059</commentid>
    <comment_count>57</comment_count>
      <attachid>205562</attachid>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2013-06-26 22:15:18 -0700</bug_when>
    <thetext>Created attachment 205562
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904060</commentid>
    <comment_count>58</comment_count>
      <attachid>205562</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-06-26 22:29:25 -0700</bug_when>
    <thetext>Comment on attachment 205562
Patch

This patch only touches two WK2 common files(NativeWebTouchEvent.h and APIObject.h). However, those are just update inside #if PLATFORM(EFL) ~ #endif. So, I believe this patch is for EFL specific patch. r+ based on informal review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904061</commentid>
    <comment_count>59</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-06-26 22:30:49 -0700</bug_when>
    <thetext>Benjamin, if you think this patch should be reviewed or signed off, please let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904323</commentid>
    <comment_count>60</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-06-27 12:54:08 -0700</bug_when>
    <thetext>(In reply to comment #59)
&gt; Benjamin, if you think this patch should be reviewed or signed off, please let me know.

I did not check the code in detail but I am completely okay with the architecture of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904418</commentid>
    <comment_count>61</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-06-27 18:34:21 -0700</bug_when>
    <thetext>(In reply to comment #60)
&gt; (In reply to comment #59)
&gt; &gt; Benjamin, if you think this patch should be reviewed or signed off, please let me know.
&gt; 
&gt; I did not check the code in detail but I am completely okay with the architecture of this.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904422</commentid>
    <comment_count>62</comment_count>
      <attachid>205562</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-27 18:54:08 -0700</bug_when>
    <thetext>Comment on attachment 205562
Patch

Clearing flags on attachment: 205562

Committed r152147: &lt;http://trac.webkit.org/changeset/152147&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904423</commentid>
    <comment_count>63</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-27 18:54:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186596</attachid>
            <date>2013-02-05 04:25:27 -0800</date>
            <delta_ts>2013-02-05 23:33:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130205212204.patch</filename>
            <type>text/plain</type>
            <size>19745</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzU2YmY3NTFlYzM2ODZh
YzZiNzQ0YTZhNWJjZDdmZDQ4ODQxZWNkYS4uMDM5ZDRhYTBhZjk2YjhmZDU5NTkxZGMwNWZkMmNm
ZDY5ZjU5YjBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAyLTA1ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4OTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdLVmlld0hhbmRsZVRvdWNoRXZlbnQoKSBB
UEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cyB1c2luZyBDIFdLMiBBUEkKKyAgICAgICAgYW5kIG5v
dCBDKysgaW50ZXJuYWxzLiBBZGRpdGlvbmFsbHksIFdLVG91Y2hFdmVudCBhbmQgc2V2ZXJhbCB0
eXBlcyBhcmUKKyAgICAgICAgZGVmaW5lZCB0byByZXByZXNlbnQgdG91Y2ggZXZlbnRzIGFzIFdL
IHN0eWxlLgorCisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAg
ICAgKE5hdGl2ZVdlYlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3Vj
aEV2ZW50OjpuYXRpdmVFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3Vj
aEV2ZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0
aXZlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rvcnku
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0eXBlRm9yVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6Om1vZGlmaWVyc0ZvcldLRXZlbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBT
aGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oOgorICAgICAgICAoV2ViRXZlbnRGYWN0b3J5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3SGFu
ZGxlVG91Y2hFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcDoKKyAgICAgICAgKEV3a1Zp
ZXc6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnRz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAgIChFd2tW
aWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAg
IChld2tfdmlld19mZWVkX3RvdWNoX2V2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dl
YlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpoYW5kbGVUb3VjaEV2ZW50KToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3Lmg6Cisg
ICAgICAgIChXZWJWaWV3KToKKwogMjAxMy0wMi0wNCAgR3dhbmcgWW9vbiBId2FuZyAgPHJ5dW1p
ZWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3MgOiBkaXNj
b25uZWN0Q3VzdG9tRmlsdGVyUHJvZ3JhbSBkb2VzIG5vdCBkbyBhbnl0aGluZy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCmluZGV4IGM2M2QxY2YwNzA1YmNh
MWVhNTRkMzg0ZjNmMGY1YmM4MzExYWQ2MmEuLjhmY2E4NjA3NjZiMDVjOWM5NTA3Y2ExNzFmY2Nk
NjVlYzAzYzEwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJU
b3VjaEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZl
bnQuaApAQCAtMzEsOSArMzEsNyBAQAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFUb3Vj
aEV2ZW50PgogI2VsaWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgImV3a190b3VjaC5oIgotI2lu
Y2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgorI2lu
Y2x1ZGUgIldLRXZlbnRFZmwuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQz
LDE2ICs0MSwyMCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgZXhwbGljaXQgTmF0
aXZlV2ViVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGNvbnN0IFFUcmFuc2Zvcm0mIGZy
b21JdGVtVHJhbnNmb3JtKTsKICNlbGlmIFBMQVRGT1JNKEVGTCkKLSAgICBOYXRpdmVXZWJUb3Vj
aEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqLCBjb25zdCBFdmFz
X01vZGlmaWVyKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQs
IGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0
aW1lc3RhbXApOworICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgV0tUb3VjaEV2ZW50Jik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIGNvbnN0IFFUb3VjaEV2ZW50KiBuYXRp
dmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuICZtX25hdGl2ZUV2ZW50OyB9CisjZWxpZiBQTEFURk9S
TShFRkwpCisgICAgY29uc3QgV0tUb3VjaEV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0
dXJuICZtX25hdGl2ZUV2ZW50OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKICNpZiBQTEFURk9STShR
VCkKICAgICBjb25zdCBRVG91Y2hFdmVudCBtX25hdGl2ZUV2ZW50OworI2VsaWYgUExBVEZPUk0o
RUZMKQorICAgIGNvbnN0IFdLVG91Y2hFdmVudCBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZl
bnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50
RWZsLmNwcAppbmRleCA3Mjc5NjgzNWE2NjQ3YjAyNzJkZWYyM2VlNmMyMGIxODEzOWE5MTY1Li5m
ZmI2MWM1Y2RjYjkxNjY2ZmMyYzMwMDNiYzVkYjU0NzhhZjZlOTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKQEAgLTMy
LDggKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYlRvdWNoRXZlbnQ6
Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWlu
YV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29uc3QgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmlu
ZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApCi0gICAgOiBXZWJU
b3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudCh0eXBlLCBwb2lu
dHMsIG1vZGlmaWVycywgdG9XZWJDb250ZW50LCB0b0RldmljZVNjcmVlbiwgdGltZXN0YW1wKSkK
K05hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgV0tUb3VjaEV2
ZW50JiBldmVudCkKKyAgICA6IFdlYlRvdWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVX
ZWJUb3VjaEV2ZW50KGV2ZW50KSkKKyAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBi
OTk5MjUwODQzOGQ3MGYxNGYxMTM5YTk0MTM0NDAwMGFiOThjY2U0Li5kYjQxOWQ5MzIyZjE3MmNj
ODgzZDAyMjk3YjVmNzY3NmEwYzEwNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2Vm
bC9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViRXZl
bnRGYWN0b3J5LmgiCiAKICNpbmNsdWRlICJFZmxLZXlib2FyZFV0aWxpdGllcy5oIgorI2luY2x1
ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3Jt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KIApAQCAtMjA1LDQzICsyMDYsNTYg
QEAgV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZl
bnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Ci1zdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpUeXBlIHR5cGVGb3JUb3VjaEV2ZW50KEV3a19Ub3Vj
aF9FdmVudF9UeXBlIHR5cGUpCitzdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpUeXBlIHR5cGVGb3JU
b3VjaEV2ZW50KFdLVG91Y2hFdmVudFR5cGUgdHlwZSkKIHsKLSAgICBpZiAodHlwZSA9PSBFV0tf
VE9VQ0hfU1RBUlQpCisgICAgaWYgKHR5cGUgPT0ga1dLVG91Y2hFdmVudFR5cGVUb3VjaFN0YXJ0
KQogICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7Ci0gICAgaWYgKHR5cGUgPT0g
RVdLX1RPVUNIX01PVkUpCisgICAgaWYgKHR5cGUgPT0ga1dLVG91Y2hFdmVudFR5cGVUb3VjaE1v
dmUpCiAgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hNb3ZlOwotICAgIGlmICh0eXBlID09
IEVXS19UT1VDSF9FTkQpCisgICAgaWYgKHR5cGUgPT0ga1dLVG91Y2hFdmVudFR5cGVUb3VjaEVu
ZCkKICAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaEVuZDsKLSAgICBpZiAodHlwZSA9PSBF
V0tfVE9VQ0hfQ0FOQ0VMKQorICAgIGlmICh0eXBlID09IGtXS1RvdWNoRXZlbnRUeXBlVG91Y2hD
YW5jZWwpCiAgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hDYW5jZWw7CiAKICAgICByZXR1
cm4gV2ViRXZlbnQ6Ok5vVHlwZTsKIH0KIAotV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWlu
YV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9EZXZp
Y2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApCitzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBt
b2RpZmllcnNGb3JXS0V2ZW50KHVuc2lnbmVkIG1vZGlmaWVycykKK3sKKyAgICB1bnNpZ25lZCBy
ZXN1bHQgPSAwOworCisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRL
ZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6U2hpZnRLZXk7CisgICAgaWYgKG1vZGlm
aWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdl
YkV2ZW50OjpDb250cm9sS2V5OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVy
c0FsdEtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpBbHRLZXk7CisgICAgaWYgKG1v
ZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdl
YkV2ZW50OjpNZXRhS2V5OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkV2ZW50OjpNb2Rp
ZmllcnM+KHJlc3VsdCk7Cit9CisKK1dlYlRvdWNoRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJUb3VjaEV2ZW50KGNvbnN0IFdLVG91Y2hFdmVudCYgZXZlbnQpCiB7CiAgICAgVmVjdG9y
PFdlYlBsYXRmb3JtVG91Y2hQb2ludD4gdG91Y2hQb2ludHM7CiAgICAgV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaFBvaW50U3RhdGUgc3RhdGU7Ci0gICAgY29uc3QgRWluYV9MaXN0KiBsaXN0
OwotICAgIHZvaWQqIGl0ZW07Ci0gICAgRUlOQV9MSVNUX0ZPUkVBQ0gocG9pbnRzLCBsaXN0LCBp
dGVtKSB7Ci0gICAgICAgIEV3a19Ub3VjaF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tf
VG91Y2hfUG9pbnQqPihpdGVtKTsKLQotICAgICAgICBzd2l0Y2ggKHBvaW50LT5zdGF0ZSkgewot
ICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfVVA6CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGV2ZW50Lm51bVRvdWNoUG9pbnRzOyArK2kpIHsKKyAgICAgICAgY29uc3QgV0tUb3Vj
aFBvaW50JiBwb2ludCA9IGV2ZW50LnRvdWNoUG9pbnRzW2ldOworICAgICAgICBzd2l0Y2ggKHBv
aW50LnN0YXRlKSB7CisgICAgICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hSZWxlYXNl
ZDoKICAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVh
c2VkOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9N
T1ZFOgorICAgICAgICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoTW92ZWQ6CiAgICAgICAg
ICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfRE9XTjoKKyAgICAgICAg
Y2FzZSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFByZXNzZWQ6CiAgICAgICAgICAgICBzdGF0ZSA9
IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9TVElMTDoKKyAgICAgICAgY2FzZSBrV0tU
b3VjaFBvaW50U3RhdGVUb3VjaFN0YXRpb25hcnk6CiAgICAgICAgICAgICBzdGF0ZSA9IFdlYlBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9DQU5DRUw6CisgICAgICAgIGNhc2Uga1dLVG91
Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ6CiAgICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKQEAgLTI0OSwxMSArMjYzLDEwIEBAIFdlYlRvdWNoRXZlbnQgV2ViRXZlbnRG
YWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUsIGNv
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIEludFBvaW50IHBv
cyhwb2ludC0+eCwgcG9pbnQtPnkpOwotICAgICAgICB0b3VjaFBvaW50cy5hcHBlbmQoV2ViUGxh
dGZvcm1Ub3VjaFBvaW50KHBvaW50LT5pZCwgc3RhdGUsIHRvRGV2aWNlU2NyZWVuLm1hcFBvaW50
KHBvcyksIHRvV2ViQ29udGVudC5tYXBQb2ludChwb3MpKSk7CisgICAgICAgIHRvdWNoUG9pbnRz
LmFwcGVuZChXZWJQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQuaWQsIHN0YXRlLCB0b0ludFBvaW50
KHBvaW50LnNjcmVlblBvc2l0aW9uKSwgdG9JbnRQb2ludChwb2ludC5wb3NpdGlvbiksIHRvSW50
U2l6ZShwb2ludC5yYWRpdXMpLCBwb2ludC5yb3RhdGlvbkFuZ2xlLCBwb2ludC5mb3JjZSkpOwog
ICAgIH0KIAotICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGVGb3JUb3VjaEV2ZW50KHR5cGUp
LCB0b3VjaFBvaW50cywgbW9kaWZpZXJzRm9yRXZlbnQobW9kaWZpZXJzKSwgdGltZXN0YW1wKTsK
KyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCh0eXBlRm9yVG91Y2hFdmVudChldmVudC50eXBlKSwg
dG91Y2hQb2ludHMsIG1vZGlmaWVyc0ZvcldLRXZlbnQoZXZlbnQubW9kaWZpZXJzKSwgZXZlbnQu
dGltZXN0YW1wKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJF
dmVudEZhY3RvcnkuaAppbmRleCBlNDQ0ZGIyOWQ1MjM4NDAyMjA0MWU1ZGI4ZDI0NDBjMzBkODIz
ZTgwLi4zYWJhZDcwZTJmMmRiOTcwNGQxNjMxNzFiNzYwYzkxNjhjYWU5MzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmgKQEAgLTI2LDggKzI2LDggQEAK
ICNpZm5kZWYgV2ViRXZlbnRGYWN0b3J5X2gKICNkZWZpbmUgV2ViRXZlbnRGYWN0b3J5X2gKIAor
I2luY2x1ZGUgIldLRXZlbnRFZmwuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgotI2luY2x1ZGUg
ImV3a190b3VjaC5oIgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FmZmlu
ZVRyYW5zZm9ybS5oPgogCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
S2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5
X0Rvd24qKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2
ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKik7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
LSAgICBzdGF0aWMgV2ViVG91Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9F
dmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqLCBjb25zdCBFdmFzX01vZGlmaWVyKiwgY29uc3Qg
V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
JiwgZG91YmxlIHRpbWVzdGFtcCk7CisgICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2Vi
VG91Y2hFdmVudChjb25zdCBXS1RvdWNoRXZlbnQmKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
OTU4Y2U5ZGUyNjk2NmM2MDRkYWZjMWNkYjExMGRmNTJhNTIzNDA3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmgKQEAgLTAs
MCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdLRXZlbnRFZmxfaAorI2RlZmluZSBXS0V2ZW50RWZsX2gKKworI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0V2ZW50Lmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0dlb21ldHJ5Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKworZW51bSBXS1RvdWNoRXZlbnRUeXBlIHsKKyAgICBrV0tUb3VjaEV2ZW50VHlwZVRv
dWNoU3RhcnQsCisgICAga1dLVG91Y2hFdmVudFR5cGVUb3VjaE1vdmUsCisgICAga1dLVG91Y2hF
dmVudFR5cGVUb3VjaEVuZCwKKyAgICBrV0tUb3VjaEV2ZW50VHlwZVRvdWNoQ2FuY2VsCit9Owor
dHlwZWRlZiBXS1RvdWNoRXZlbnRUeXBlIFdLVG91Y2hFdmVudFR5cGU7CisKK2VudW0gV0tUb3Vj
aFBvaW50U3RhdGUgeworICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQsCisgICAg
a1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQcmVzc2VkLAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRv
dWNoTW92ZWQsCisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hTdGF0aW9uYXJ5LAorICAgIGtX
S1RvdWNoUG9pbnRTdGF0ZVRvdWNoQ2FuY2VsbGVkCit9OwordHlwZWRlZiBXS1RvdWNoUG9pbnRT
dGF0ZSBXS1RvdWNoUG9pbnRTdGF0ZTsKKworc3RydWN0IFdLVG91Y2hQb2ludCB7CisgICAgdW5z
aWduZWQgaWQ7CisgICAgV0tUb3VjaFBvaW50U3RhdGUgc3RhdGU7CisgICAgV0tQb2ludCBwb3Np
dGlvbjsKKyAgICBXS1BvaW50IHNjcmVlblBvc2l0aW9uOworICAgIFdLU2l6ZSByYWRpdXM7Cisg
ICAgZmxvYXQgcm90YXRpb25BbmdsZTsKKyAgICBmbG9hdCBmb3JjZTsKK307Cit0eXBlZGVmIHN0
cnVjdCBXS1RvdWNoUG9pbnQgV0tUb3VjaFBvaW50OworCitlbnVtIHsga1dLTWF4aW11bVRvdWNo
UG9pbnRzUGVyVG91Y2hFdmVudCA9IDUgfTsKKworc3RydWN0IFdLVG91Y2hFdmVudCB7CisgICAg
V0tUb3VjaEV2ZW50VHlwZSB0eXBlOworICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzOwor
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgdW5zaWduZWQgbnVtVG91Y2hQb2ludHM7CisgICAg
V0tUb3VjaFBvaW50IHRvdWNoUG9pbnRzW2tXS01heGltdW1Ub3VjaFBvaW50c1BlclRvdWNoRXZl
bnRdOworfTsKK3R5cGVkZWYgc3RydWN0IFdLVG91Y2hFdmVudCBXS1RvdWNoRXZlbnQ7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0V2ZW50RWZsX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAppbmRleCA5
YzFkMzFkNGJhM2Q4NmI4ZjdmNjgwNzc1ZTYyM2NkMDlhM2IzM2EyLi45OGNkNzNjMzAwYWFiY2Iy
OWI0MmQxMTUxOWEwNDNjZjg5M2Q4Mzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuY3BwCkBAIC04MCwzICs4MCw4IEBAIFdLSW1hZ2VSZWYgV0tWaWV3
Q3JlYXRlU25hcHNob3QoV0tWaWV3UmVmIHZpZXdSZWYpCiAgICAgRXdrVmlldyogZXdrVmlldyA9
IEV3a1ZpZXc6OmZyb21FdmFzT2JqZWN0KHRvSW1wbCh2aWV3UmVmKS0+ZXZhc09iamVjdCgpKTsK
ICAgICByZXR1cm4gV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UoZXdrVmlldy0+dGFrZVNu
YXBzaG90KCkuZ2V0KCksIDAgLyogb3B0aW9ucyAqLyk7CiB9CisKK3ZvaWQgV0tWaWV3SGFuZGxl
VG91Y2hFdmVudChXS1ZpZXdSZWYgdmlld1JlZiwgY29uc3QgV0tUb3VjaEV2ZW50KiB0b3VjaEV2
ZW50KQoreworICAgIHRvSW1wbCh2aWV3UmVmKS0+aGFuZGxlVG91Y2hFdmVudCgqdG91Y2hFdmVu
dCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAppbmRl
eCBkNWI0MzJkOGVhMTMxNTQyODdmYThkNGE4N2M0OGI0MGI4ZDIyZjFhLi5mYWMxZDdhN2NjMGJi
Mjg5NTExNDJjODNiM2FjN2YzMzAyOWEzOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9lZmwvV0tWaWV3LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUgV0tWaWV3X2gK
IAogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0V2ZW50
RWZsLmg+CiAKICNpZiBVU0UoRU8pCiB0eXBlZGVmIHN0cnVjdCBfRW8gRXZhczsKQEAgLTUyLDYg
KzUzLDggQEAgV0tfRVhQT1JUIEV2YXNfT2JqZWN0KiBXS1ZpZXdHZXRFdmFzT2JqZWN0KFdLVmll
d1JlZik7CiAKIFdLX0VYUE9SVCBXS0ltYWdlUmVmIFdLVmlld0NyZWF0ZVNuYXBzaG90KFdLVmll
d1JlZik7CiAKK1dLX0VYUE9SVCB2b2lkIFdLVmlld0hhbmRsZVRvdWNoRXZlbnQoV0tWaWV3UmVm
LCBjb25zdCBXS1RvdWNoRXZlbnQqKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggMDQ2
Njk0ZDc0ZjRmOTA5OTQyMDgyMWRjMzhmZDI4NmEzNDIxMDA3Ny4uNjhlYmM3OGViMWQ0N2Q3YjAz
ZTZjNjJlYmJlYzcyODk4YmQ0N2NhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHAKQEAgLTk1Niw2ICs5NTYsNjYgQEAgdm9pZCBFd2tWaWV3Ojpvbk1v
dXNlTW92ZSh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8p
CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBFd2tWaWV3OjpoYW5kbGVUb3Vj
aEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRz
LCBjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMpCit7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4ocG9pbnRzKTsKKworICAgIFdLVG91Y2hFdmVudCB0b3VjaEV2ZW50OworICAg
IHRvdWNoRXZlbnQudHlwZSA9IHN0YXRpY19jYXN0PFdLVG91Y2hFdmVudFR5cGU+KHR5cGUpOwor
ICAgIHRvdWNoRXZlbnQudGltZXN0YW1wID0gZWNvcmVfdGltZV9nZXQoKTsKKyAgICB0b3VjaEV2
ZW50Lm51bVRvdWNoUG9pbnRzID0gZWluYV9saXN0X2NvdW50KHBvaW50cyk7CisKKyAgICB0b3Vj
aEV2ZW50Lm1vZGlmaWVycyA9IDA7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldCht
b2RpZmllcnMsICJTaGlmdCIpKQorICAgICAgICB0b3VjaEV2ZW50Lm1vZGlmaWVycyB8PSBrV0tF
dmVudE1vZGlmaWVyc1NoaWZ0S2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQo
bW9kaWZpZXJzLCAiQ29udHJvbCIpKQorICAgICAgICB0b3VjaEV2ZW50Lm1vZGlmaWVycyB8PSBr
V0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lz
X3NldChtb2RpZmllcnMsICJBbHQiKSkKKyAgICAgICAgdG91Y2hFdmVudC5tb2RpZmllcnMgfD0g
a1dLRXZlbnRNb2RpZmllcnNBbHRLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3Nl
dChtb2RpZmllcnMsICJNZXRhIikpCisgICAgICAgIHRvdWNoRXZlbnQubW9kaWZpZXJzIHw9IGtX
S0V2ZW50TW9kaWZpZXJzTWV0YUtleTsKKworICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdDsKKyAg
ICB2b2lkKiBpdGVtOworICAgIGRvdWJsZSB4OworICAgIGRvdWJsZSB5OworICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKKyAgICBFSU5BX0xJU1RfRk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0pIHsK
KyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Q
b2ludCo+KGl0ZW0pOworICAgICAgICBXS1RvdWNoUG9pbnQmIHdrVG91Y2hQb2ludCA9IHRvdWNo
RXZlbnQudG91Y2hQb2ludHNbaW5kZXgrK107CisKKyAgICAgICAgd2tUb3VjaFBvaW50LmlkID0g
cG9pbnQtPmlkOworICAgICAgICB0cmFuc2Zvcm1Gcm9tU2NlbmUoKS5tYXAocG9pbnQtPngsIHBv
aW50LT55LCB4LCB5KTsKKyAgICAgICAgd2tUb3VjaFBvaW50LnBvc2l0aW9uID0gV0tQb2ludE1h
a2UoeCwgeSk7CisgICAgICAgIHRyYW5zZm9ybVRvU2NyZWVuKCkubWFwKHBvaW50LT54LCBwb2lu
dC0+eSwgeCwgeSk7CisgICAgICAgIHdrVG91Y2hQb2ludC5zY3JlZW5Qb3NpdGlvbiA9IFdLUG9p
bnRNYWtlKHgsIHkpOworICAgICAgICB3a1RvdWNoUG9pbnQucmFkaXVzID0gV0tTaXplTWFrZSgw
LCAwKTsKKyAgICAgICAgd2tUb3VjaFBvaW50LnJvdGF0aW9uQW5nbGUgPSAwOworICAgICAgICB3
a1RvdWNoUG9pbnQuZm9yY2UgPSAwOworCisgICAgICAgIHN3aXRjaCAocG9pbnQtPnN0YXRlKSB7
CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9VUDoKKyAgICAgICAgICAgIHdrVG91Y2hQ
b2ludC5zdGF0ZSA9IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX01PVkU6CisgICAgICAgICAg
ICB3a1RvdWNoUG9pbnQuc3RhdGUgPSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9ET1dOOgorICAg
ICAgICAgICAgd2tUb3VjaFBvaW50LnN0YXRlID0ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQcmVz
c2VkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9T
VElMTDoKKyAgICAgICAgICAgIHdrVG91Y2hQb2ludC5zdGF0ZSA9IGtXS1RvdWNoUG9pbnRTdGF0
ZVRvdWNoU3RhdGlvbmFyeTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVWQVNf
VE9VQ0hfUE9JTlRfQ0FOQ0VMOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgd2tUb3Vj
aFBvaW50LnN0YXRlID0ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIFdLVmlld0hhbmRsZVRvdWNoRXZl
bnQod2tWaWV3KCksICZ0b3VjaEV2ZW50KTsKK30KKwogdm9pZCBFd2tWaWV3OjpmZWVkVG91Y2hF
dmVudHMoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSkKIHsKICAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwpAQCAtOTczLDcgKzEwMzMsNyBAQCB2b2lkIEV3a1ZpZXc6
OmZlZWRUb3VjaEV2ZW50cyhFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlKQogICAgICAgICBwb2lu
dHMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvaW50cywgcG9pbnQpOwogICAgIH0KIAotICAgIGV3a192
aWV3X2ZlZWRfdG91Y2hfZXZlbnQobV9ldmFzT2JqZWN0LCB0eXBlLCBwb2ludHMsIGV2YXNfa2V5
X21vZGlmaWVyX2dldChzZC0+YmFzZS5ldmFzKSk7CisgICAgaGFuZGxlVG91Y2hFdmVudCh0eXBl
LCBwb2ludHMsIGV2YXNfa2V5X21vZGlmaWVyX2dldChzZC0+YmFzZS5ldmFzKSk7CiAKICAgICB2
b2lkKiBkYXRhOwogICAgIEVJTkFfTElTVF9GUkVFKHBvaW50cywgZGF0YSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAppbmRleCA4NzE2NWJjODg1Njg3MTM5NGI0
YzBjNGNjYjlhMDI3NTRmNWE4MjE2Li5mNTVjYjc5N2Y4MWIyN2FmZmIxODJkNGQ3ZTA2MDcwOTI1
MWYyZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCkBA
IC0xNDgsNiArMTQ4LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAg
Ym9vbCB0b3VjaEV2ZW50c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoRXZlbnRzRW5h
YmxlZDsgfQogICAgIHZvaWQgc2V0VG91Y2hFdmVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCk7Cisg
ICAgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5h
X0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciopOwogI2VuZGlmCiAKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImIGN1cnNvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggZDYxODFiOGIwNzc1NzYy
YTNiZGNkZmUxMjY1MzUxMTgwMDQ0OTBiMi4uYjhkNGVkNmEyODcyOTc1NGZiOWEwNTQwZGFhODll
YTY4OTgzYWI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIK
ICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFt
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC04MjcsNyArODI4LDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IEV3a19Ub3VjaF9FdmVudF9UeXBlIHQKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX0JZX1NEX09S
X1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIGltcGwtPnBhZ2UoKS0+aGFu
ZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJz
LCBpbXBsLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgaW1wbC0+dHJhbnNmb3JtVG9TY3JlZW4oKSwg
ZWNvcmVfdGltZV9nZXQoKSkpOworICAgIGltcGwtPmhhbmRsZVRvdWNoRXZlbnQodHlwZSwgcG9p
bnRzLCBtb2RpZmllcnMpOwogCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKaW5kZXggYzFiMWZmNmYxZmI1MDhhNTNhNDU0YzU1
N2U3NjIyYmVkNjQ1ZjI5OS4uNjRjMDNkZjhhMjEwYTYzZDJmNDZhNjQwMTA1MjM0MmIyYjhhZDEx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC03NCw0ICs3
NCw5IEBAIHZvaWQgV2ViVmlldzo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
KQogICAgIG1fd2ViUGFnZVByb3h5LT5yZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
cygpOwogfQogCit2b2lkIFdlYlZpZXc6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgV0tUb3VjaEV2
ZW50JiB0b3VjaEV2ZW50KQoreworICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVUb3VjaEV2ZW50
KE5hdGl2ZVdlYlRvdWNoRXZlbnQodG91Y2hFdmVudCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgKaW5kZXggZTFlNzY2ZGZk
MWYwMDZhNjM5Mzg0NjdkMzI3NTIwMDJjODE3YTg1Ni4uNDExMjZiNzZiYmYwMTgzMWI5OGRjMGIz
ZDA5MWJkNjk2Yzc5NDQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIlBh
Z2VDbGllbnQuaCIKKyNpbmNsdWRlICJXS0V2ZW50RWZsLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4
dC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgpAQCAtNDksNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaGVtZVBhdGgoV0tTdHJp
bmdSZWYpOwogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7
CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworICAgIHZv
aWQgaGFuZGxlVG91Y2hFdmVudChjb25zdCBXS1RvdWNoRXZlbnQmKTsKIAogICAgIC8vIEZJWE1F
OiBSZW1vdmUgd2hlbiBwb3NzaWJsZS4KICAgICBFdmFzX09iamVjdCogZXZhc09iamVjdCgpIHsg
cmV0dXJuIG1fZXZhc09iamVjdDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186600</attachid>
            <date>2013-02-05 04:44:37 -0800</date>
            <delta_ts>2013-02-06 00:06:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130205214114.patch</filename>
            <type>text/plain</type>
            <size>21536</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzU2YmY3NTFlYzM2ODZh
YzZiNzQ0YTZhNWJjZDdmZDQ4ODQxZWNkYS4uMDM5ZDRhYTBhZjk2YjhmZDU5NTkxZGMwNWZkMmNm
ZDY5ZjU5YjBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAyLTA1ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4OTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdLVmlld0hhbmRsZVRvdWNoRXZlbnQoKSBB
UEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cyB1c2luZyBDIFdLMiBBUEkKKyAgICAgICAgYW5kIG5v
dCBDKysgaW50ZXJuYWxzLiBBZGRpdGlvbmFsbHksIFdLVG91Y2hFdmVudCBhbmQgc2V2ZXJhbCB0
eXBlcyBhcmUKKyAgICAgICAgZGVmaW5lZCB0byByZXByZXNlbnQgdG91Y2ggZXZlbnRzIGFzIFdL
IHN0eWxlLgorCisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAg
ICAgKE5hdGl2ZVdlYlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3Vj
aEV2ZW50OjpuYXRpdmVFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3Vj
aEV2ZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0
aXZlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rvcnku
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0eXBlRm9yVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6Om1vZGlmaWVyc0ZvcldLRXZlbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBT
aGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oOgorICAgICAgICAoV2ViRXZlbnRGYWN0b3J5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3SGFu
ZGxlVG91Y2hFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcDoKKyAgICAgICAgKEV3a1Zp
ZXc6OmhhbmRsZVRvdWNoRXZlbnQpOgorICAgICAgICAoRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnRz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAgIChFd2tW
aWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAg
IChld2tfdmlld19mZWVkX3RvdWNoX2V2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dl
YlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpoYW5kbGVUb3VjaEV2ZW50KToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3Lmg6Cisg
ICAgICAgIChXZWJWaWV3KToKKwogMjAxMy0wMi0wNCAgR3dhbmcgWW9vbiBId2FuZyAgPHJ5dW1p
ZWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3MgOiBkaXNj
b25uZWN0Q3VzdG9tRmlsdGVyUHJvZ3JhbSBkb2VzIG5vdCBkbyBhbnl0aGluZy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCmluZGV4IGM2M2QxY2YwNzA1YmNh
MWVhNTRkMzg0ZjNmMGY1YmM4MzExYWQ2MmEuLjhmY2E4NjA3NjZiMDVjOWM5NTA3Y2ExNzFmY2Nk
NjVlYzAzYzEwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJU
b3VjaEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZl
bnQuaApAQCAtMzEsOSArMzEsNyBAQAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFUb3Vj
aEV2ZW50PgogI2VsaWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgImV3a190b3VjaC5oIgotI2lu
Y2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgorI2lu
Y2x1ZGUgIldLRXZlbnRFZmwuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQz
LDE2ICs0MSwyMCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgZXhwbGljaXQgTmF0
aXZlV2ViVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGNvbnN0IFFUcmFuc2Zvcm0mIGZy
b21JdGVtVHJhbnNmb3JtKTsKICNlbGlmIFBMQVRGT1JNKEVGTCkKLSAgICBOYXRpdmVXZWJUb3Vj
aEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqLCBjb25zdCBFdmFz
X01vZGlmaWVyKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQs
IGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0
aW1lc3RhbXApOworICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgV0tUb3VjaEV2ZW50Jik7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIGNvbnN0IFFUb3VjaEV2ZW50KiBuYXRp
dmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuICZtX25hdGl2ZUV2ZW50OyB9CisjZWxpZiBQTEFURk9S
TShFRkwpCisgICAgY29uc3QgV0tUb3VjaEV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0
dXJuICZtX25hdGl2ZUV2ZW50OyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKICNpZiBQTEFURk9STShR
VCkKICAgICBjb25zdCBRVG91Y2hFdmVudCBtX25hdGl2ZUV2ZW50OworI2VsaWYgUExBVEZPUk0o
RUZMKQorICAgIGNvbnN0IFdLVG91Y2hFdmVudCBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZl
bnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50
RWZsLmNwcAppbmRleCA3Mjc5NjgzNWE2NjQ3YjAyNzJkZWYyM2VlNmMyMGIxODEzOWE5MTY1Li5m
ZmI2MWM1Y2RjYjkxNjY2ZmMyYzMwMDNiYzVkYjU0NzhhZjZlOTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKQEAgLTMy
LDggKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYlRvdWNoRXZlbnQ6
Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWlu
YV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29uc3QgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmlu
ZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApCi0gICAgOiBXZWJU
b3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudCh0eXBlLCBwb2lu
dHMsIG1vZGlmaWVycywgdG9XZWJDb250ZW50LCB0b0RldmljZVNjcmVlbiwgdGltZXN0YW1wKSkK
K05hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgV0tUb3VjaEV2
ZW50JiBldmVudCkKKyAgICA6IFdlYlRvdWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVX
ZWJUb3VjaEV2ZW50KGV2ZW50KSkKKyAgICAsIG1fbmF0aXZlRXZlbnQoZXZlbnQpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBi
OTk5MjUwODQzOGQ3MGYxNGYxMTM5YTk0MTM0NDAwMGFiOThjY2U0Li5kYjQxOWQ5MzIyZjE3MmNj
ODgzZDAyMjk3YjVmNzY3NmEwYzEwNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2Vm
bC9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViRXZl
bnRGYWN0b3J5LmgiCiAKICNpbmNsdWRlICJFZmxLZXlib2FyZFV0aWxpdGllcy5oIgorI2luY2x1
ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3Jt
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KIApAQCAtMjA1LDQzICsyMDYsNTYg
QEAgV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZl
bnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Ci1zdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpUeXBlIHR5cGVGb3JUb3VjaEV2ZW50KEV3a19Ub3Vj
aF9FdmVudF9UeXBlIHR5cGUpCitzdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpUeXBlIHR5cGVGb3JU
b3VjaEV2ZW50KFdLVG91Y2hFdmVudFR5cGUgdHlwZSkKIHsKLSAgICBpZiAodHlwZSA9PSBFV0tf
VE9VQ0hfU1RBUlQpCisgICAgaWYgKHR5cGUgPT0ga1dLVG91Y2hFdmVudFR5cGVUb3VjaFN0YXJ0
KQogICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7Ci0gICAgaWYgKHR5cGUgPT0g
RVdLX1RPVUNIX01PVkUpCisgICAgaWYgKHR5cGUgPT0ga1dLVG91Y2hFdmVudFR5cGVUb3VjaE1v
dmUpCiAgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hNb3ZlOwotICAgIGlmICh0eXBlID09
IEVXS19UT1VDSF9FTkQpCisgICAgaWYgKHR5cGUgPT0ga1dLVG91Y2hFdmVudFR5cGVUb3VjaEVu
ZCkKICAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaEVuZDsKLSAgICBpZiAodHlwZSA9PSBF
V0tfVE9VQ0hfQ0FOQ0VMKQorICAgIGlmICh0eXBlID09IGtXS1RvdWNoRXZlbnRUeXBlVG91Y2hD
YW5jZWwpCiAgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hDYW5jZWw7CiAKICAgICByZXR1
cm4gV2ViRXZlbnQ6Ok5vVHlwZTsKIH0KIAotV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWlu
YV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9EZXZp
Y2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApCitzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBt
b2RpZmllcnNGb3JXS0V2ZW50KHVuc2lnbmVkIG1vZGlmaWVycykKK3sKKyAgICB1bnNpZ25lZCBy
ZXN1bHQgPSAwOworCisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRL
ZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6U2hpZnRLZXk7CisgICAgaWYgKG1vZGlm
aWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdl
YkV2ZW50OjpDb250cm9sS2V5OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVy
c0FsdEtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpBbHRLZXk7CisgICAgaWYgKG1v
ZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdl
YkV2ZW50OjpNZXRhS2V5OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkV2ZW50OjpNb2Rp
ZmllcnM+KHJlc3VsdCk7Cit9CisKK1dlYlRvdWNoRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJUb3VjaEV2ZW50KGNvbnN0IFdLVG91Y2hFdmVudCYgZXZlbnQpCiB7CiAgICAgVmVjdG9y
PFdlYlBsYXRmb3JtVG91Y2hQb2ludD4gdG91Y2hQb2ludHM7CiAgICAgV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaFBvaW50U3RhdGUgc3RhdGU7Ci0gICAgY29uc3QgRWluYV9MaXN0KiBsaXN0
OwotICAgIHZvaWQqIGl0ZW07Ci0gICAgRUlOQV9MSVNUX0ZPUkVBQ0gocG9pbnRzLCBsaXN0LCBp
dGVtKSB7Ci0gICAgICAgIEV3a19Ub3VjaF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tf
VG91Y2hfUG9pbnQqPihpdGVtKTsKLQotICAgICAgICBzd2l0Y2ggKHBvaW50LT5zdGF0ZSkgewot
ICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfVVA6CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGV2ZW50Lm51bVRvdWNoUG9pbnRzOyArK2kpIHsKKyAgICAgICAgY29uc3QgV0tUb3Vj
aFBvaW50JiBwb2ludCA9IGV2ZW50LnRvdWNoUG9pbnRzW2ldOworICAgICAgICBzd2l0Y2ggKHBv
aW50LnN0YXRlKSB7CisgICAgICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hSZWxlYXNl
ZDoKICAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVh
c2VkOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9N
T1ZFOgorICAgICAgICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoTW92ZWQ6CiAgICAgICAg
ICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfRE9XTjoKKyAgICAgICAg
Y2FzZSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFByZXNzZWQ6CiAgICAgICAgICAgICBzdGF0ZSA9
IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9TVElMTDoKKyAgICAgICAgY2FzZSBrV0tU
b3VjaFBvaW50U3RhdGVUb3VjaFN0YXRpb25hcnk6CiAgICAgICAgICAgICBzdGF0ZSA9IFdlYlBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9DQU5DRUw6CisgICAgICAgIGNhc2Uga1dLVG91
Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ6CiAgICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKQEAgLTI0OSwxMSArMjYzLDEwIEBAIFdlYlRvdWNoRXZlbnQgV2ViRXZlbnRG
YWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUsIGNv
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIEludFBvaW50IHBv
cyhwb2ludC0+eCwgcG9pbnQtPnkpOwotICAgICAgICB0b3VjaFBvaW50cy5hcHBlbmQoV2ViUGxh
dGZvcm1Ub3VjaFBvaW50KHBvaW50LT5pZCwgc3RhdGUsIHRvRGV2aWNlU2NyZWVuLm1hcFBvaW50
KHBvcyksIHRvV2ViQ29udGVudC5tYXBQb2ludChwb3MpKSk7CisgICAgICAgIHRvdWNoUG9pbnRz
LmFwcGVuZChXZWJQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQuaWQsIHN0YXRlLCB0b0ludFBvaW50
KHBvaW50LnNjcmVlblBvc2l0aW9uKSwgdG9JbnRQb2ludChwb2ludC5wb3NpdGlvbiksIHRvSW50
U2l6ZShwb2ludC5yYWRpdXMpLCBwb2ludC5yb3RhdGlvbkFuZ2xlLCBwb2ludC5mb3JjZSkpOwog
ICAgIH0KIAotICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGVGb3JUb3VjaEV2ZW50KHR5cGUp
LCB0b3VjaFBvaW50cywgbW9kaWZpZXJzRm9yRXZlbnQobW9kaWZpZXJzKSwgdGltZXN0YW1wKTsK
KyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCh0eXBlRm9yVG91Y2hFdmVudChldmVudC50eXBlKSwg
dG91Y2hQb2ludHMsIG1vZGlmaWVyc0ZvcldLRXZlbnQoZXZlbnQubW9kaWZpZXJzKSwgZXZlbnQu
dGltZXN0YW1wKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJF
dmVudEZhY3RvcnkuaAppbmRleCBlNDQ0ZGIyOWQ1MjM4NDAyMjA0MWU1ZGI4ZDI0NDBjMzBkODIz
ZTgwLi4zYWJhZDcwZTJmMmRiOTcwNGQxNjMxNzFiNzYwYzkxNjhjYWU5MzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmgKQEAgLTI2LDggKzI2LDggQEAK
ICNpZm5kZWYgV2ViRXZlbnRGYWN0b3J5X2gKICNkZWZpbmUgV2ViRXZlbnRGYWN0b3J5X2gKIAor
I2luY2x1ZGUgIldLRXZlbnRFZmwuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgotI2luY2x1ZGUg
ImV3a190b3VjaC5oIgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FmZmlu
ZVRyYW5zZm9ybS5oPgogCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
S2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5
X0Rvd24qKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2
ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKik7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
LSAgICBzdGF0aWMgV2ViVG91Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9F
dmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqLCBjb25zdCBFdmFzX01vZGlmaWVyKiwgY29uc3Qg
V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
JiwgZG91YmxlIHRpbWVzdGFtcCk7CisgICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2Vi
VG91Y2hFdmVudChjb25zdCBXS1RvdWNoRXZlbnQmKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
OTU4Y2U5ZGUyNjk2NmM2MDRkYWZjMWNkYjExMGRmNTJhNTIzNDA3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmgKQEAgLTAs
MCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdLRXZlbnRFZmxfaAorI2RlZmluZSBXS0V2ZW50RWZsX2gKKworI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0V2ZW50Lmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0dlb21ldHJ5Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKworZW51bSBXS1RvdWNoRXZlbnRUeXBlIHsKKyAgICBrV0tUb3VjaEV2ZW50VHlwZVRv
dWNoU3RhcnQsCisgICAga1dLVG91Y2hFdmVudFR5cGVUb3VjaE1vdmUsCisgICAga1dLVG91Y2hF
dmVudFR5cGVUb3VjaEVuZCwKKyAgICBrV0tUb3VjaEV2ZW50VHlwZVRvdWNoQ2FuY2VsCit9Owor
dHlwZWRlZiBXS1RvdWNoRXZlbnRUeXBlIFdLVG91Y2hFdmVudFR5cGU7CisKK2VudW0gV0tUb3Vj
aFBvaW50U3RhdGUgeworICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQsCisgICAg
a1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQcmVzc2VkLAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRv
dWNoTW92ZWQsCisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hTdGF0aW9uYXJ5LAorICAgIGtX
S1RvdWNoUG9pbnRTdGF0ZVRvdWNoQ2FuY2VsbGVkCit9OwordHlwZWRlZiBXS1RvdWNoUG9pbnRT
dGF0ZSBXS1RvdWNoUG9pbnRTdGF0ZTsKKworc3RydWN0IFdLVG91Y2hQb2ludCB7CisgICAgdW5z
aWduZWQgaWQ7CisgICAgV0tUb3VjaFBvaW50U3RhdGUgc3RhdGU7CisgICAgV0tQb2ludCBwb3Np
dGlvbjsKKyAgICBXS1BvaW50IHNjcmVlblBvc2l0aW9uOworICAgIFdLU2l6ZSByYWRpdXM7Cisg
ICAgZmxvYXQgcm90YXRpb25BbmdsZTsKKyAgICBmbG9hdCBmb3JjZTsKK307Cit0eXBlZGVmIHN0
cnVjdCBXS1RvdWNoUG9pbnQgV0tUb3VjaFBvaW50OworCitlbnVtIHsga1dLTWF4aW11bVRvdWNo
UG9pbnRzUGVyVG91Y2hFdmVudCA9IDUgfTsKKworc3RydWN0IFdLVG91Y2hFdmVudCB7CisgICAg
V0tUb3VjaEV2ZW50VHlwZSB0eXBlOworICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzOwor
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgdW5zaWduZWQgbnVtVG91Y2hQb2ludHM7CisgICAg
V0tUb3VjaFBvaW50IHRvdWNoUG9pbnRzW2tXS01heGltdW1Ub3VjaFBvaW50c1BlclRvdWNoRXZl
bnRdOworfTsKK3R5cGVkZWYgc3RydWN0IFdLVG91Y2hFdmVudCBXS1RvdWNoRXZlbnQ7CisKKyNp
ZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0V2ZW50RWZsX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAppbmRleCA5
YzFkMzFkNGJhM2Q4NmI4ZjdmNjgwNzc1ZTYyM2NkMDlhM2IzM2EyLi45OGNkNzNjMzAwYWFiY2Iy
OWI0MmQxMTUxOWEwNDNjZjg5M2Q4Mzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuY3BwCkBAIC04MCwzICs4MCw4IEBAIFdLSW1hZ2VSZWYgV0tWaWV3
Q3JlYXRlU25hcHNob3QoV0tWaWV3UmVmIHZpZXdSZWYpCiAgICAgRXdrVmlldyogZXdrVmlldyA9
IEV3a1ZpZXc6OmZyb21FdmFzT2JqZWN0KHRvSW1wbCh2aWV3UmVmKS0+ZXZhc09iamVjdCgpKTsK
ICAgICByZXR1cm4gV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UoZXdrVmlldy0+dGFrZVNu
YXBzaG90KCkuZ2V0KCksIDAgLyogb3B0aW9ucyAqLyk7CiB9CisKK3ZvaWQgV0tWaWV3SGFuZGxl
VG91Y2hFdmVudChXS1ZpZXdSZWYgdmlld1JlZiwgY29uc3QgV0tUb3VjaEV2ZW50KiB0b3VjaEV2
ZW50KQoreworICAgIHRvSW1wbCh2aWV3UmVmKS0+aGFuZGxlVG91Y2hFdmVudCgqdG91Y2hFdmVu
dCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAppbmRl
eCBkNWI0MzJkOGVhMTMxNTQyODdmYThkNGE4N2M0OGI0MGI4ZDIyZjFhLi5mYWMxZDdhN2NjMGJi
Mjg5NTExNDJjODNiM2FjN2YzMzAyOWEzOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9lZmwvV0tWaWV3LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUgV0tWaWV3X2gK
IAogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0V2ZW50
RWZsLmg+CiAKICNpZiBVU0UoRU8pCiB0eXBlZGVmIHN0cnVjdCBfRW8gRXZhczsKQEAgLTUyLDYg
KzUzLDggQEAgV0tfRVhQT1JUIEV2YXNfT2JqZWN0KiBXS1ZpZXdHZXRFdmFzT2JqZWN0KFdLVmll
d1JlZik7CiAKIFdLX0VYUE9SVCBXS0ltYWdlUmVmIFdLVmlld0NyZWF0ZVNuYXBzaG90KFdLVmll
d1JlZik7CiAKK1dLX0VYUE9SVCB2b2lkIFdLVmlld0hhbmRsZVRvdWNoRXZlbnQoV0tWaWV3UmVm
LCBjb25zdCBXS1RvdWNoRXZlbnQqKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggMDQ2
Njk0ZDc0ZjRmOTA5OTQyMDgyMWRjMzhmZDI4NmEzNDIxMDA3Ny4uNjhlYmM3OGViMWQ0N2Q3YjAz
ZTZjNjJlYmJlYzcyODk4YmQ0N2NhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5jcHAKQEAgLTk1Niw2ICs5NTYsNjYgQEAgdm9pZCBFd2tWaWV3Ojpvbk1v
dXNlTW92ZSh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8p
CiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBFd2tWaWV3OjpoYW5kbGVUb3Vj
aEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRz
LCBjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMpCit7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk4ocG9pbnRzKTsKKworICAgIFdLVG91Y2hFdmVudCB0b3VjaEV2ZW50OworICAg
IHRvdWNoRXZlbnQudHlwZSA9IHN0YXRpY19jYXN0PFdLVG91Y2hFdmVudFR5cGU+KHR5cGUpOwor
ICAgIHRvdWNoRXZlbnQudGltZXN0YW1wID0gZWNvcmVfdGltZV9nZXQoKTsKKyAgICB0b3VjaEV2
ZW50Lm51bVRvdWNoUG9pbnRzID0gZWluYV9saXN0X2NvdW50KHBvaW50cyk7CisKKyAgICB0b3Vj
aEV2ZW50Lm1vZGlmaWVycyA9IDA7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldCht
b2RpZmllcnMsICJTaGlmdCIpKQorICAgICAgICB0b3VjaEV2ZW50Lm1vZGlmaWVycyB8PSBrV0tF
dmVudE1vZGlmaWVyc1NoaWZ0S2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQo
bW9kaWZpZXJzLCAiQ29udHJvbCIpKQorICAgICAgICB0b3VjaEV2ZW50Lm1vZGlmaWVycyB8PSBr
V0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lz
X3NldChtb2RpZmllcnMsICJBbHQiKSkKKyAgICAgICAgdG91Y2hFdmVudC5tb2RpZmllcnMgfD0g
a1dLRXZlbnRNb2RpZmllcnNBbHRLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3Nl
dChtb2RpZmllcnMsICJNZXRhIikpCisgICAgICAgIHRvdWNoRXZlbnQubW9kaWZpZXJzIHw9IGtX
S0V2ZW50TW9kaWZpZXJzTWV0YUtleTsKKworICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdDsKKyAg
ICB2b2lkKiBpdGVtOworICAgIGRvdWJsZSB4OworICAgIGRvdWJsZSB5OworICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKKyAgICBFSU5BX0xJU1RfRk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0pIHsK
KyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Q
b2ludCo+KGl0ZW0pOworICAgICAgICBXS1RvdWNoUG9pbnQmIHdrVG91Y2hQb2ludCA9IHRvdWNo
RXZlbnQudG91Y2hQb2ludHNbaW5kZXgrK107CisKKyAgICAgICAgd2tUb3VjaFBvaW50LmlkID0g
cG9pbnQtPmlkOworICAgICAgICB0cmFuc2Zvcm1Gcm9tU2NlbmUoKS5tYXAocG9pbnQtPngsIHBv
aW50LT55LCB4LCB5KTsKKyAgICAgICAgd2tUb3VjaFBvaW50LnBvc2l0aW9uID0gV0tQb2ludE1h
a2UoeCwgeSk7CisgICAgICAgIHRyYW5zZm9ybVRvU2NyZWVuKCkubWFwKHBvaW50LT54LCBwb2lu
dC0+eSwgeCwgeSk7CisgICAgICAgIHdrVG91Y2hQb2ludC5zY3JlZW5Qb3NpdGlvbiA9IFdLUG9p
bnRNYWtlKHgsIHkpOworICAgICAgICB3a1RvdWNoUG9pbnQucmFkaXVzID0gV0tTaXplTWFrZSgw
LCAwKTsKKyAgICAgICAgd2tUb3VjaFBvaW50LnJvdGF0aW9uQW5nbGUgPSAwOworICAgICAgICB3
a1RvdWNoUG9pbnQuZm9yY2UgPSAwOworCisgICAgICAgIHN3aXRjaCAocG9pbnQtPnN0YXRlKSB7
CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9VUDoKKyAgICAgICAgICAgIHdrVG91Y2hQ
b2ludC5zdGF0ZSA9IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX01PVkU6CisgICAgICAgICAg
ICB3a1RvdWNoUG9pbnQuc3RhdGUgPSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9ET1dOOgorICAg
ICAgICAgICAgd2tUb3VjaFBvaW50LnN0YXRlID0ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQcmVz
c2VkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9T
VElMTDoKKyAgICAgICAgICAgIHdrVG91Y2hQb2ludC5zdGF0ZSA9IGtXS1RvdWNoUG9pbnRTdGF0
ZVRvdWNoU3RhdGlvbmFyeTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVWQVNf
VE9VQ0hfUE9JTlRfQ0FOQ0VMOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgd2tUb3Vj
aFBvaW50LnN0YXRlID0ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIFdLVmlld0hhbmRsZVRvdWNoRXZl
bnQod2tWaWV3KCksICZ0b3VjaEV2ZW50KTsKK30KKwogdm9pZCBFd2tWaWV3OjpmZWVkVG91Y2hF
dmVudHMoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSkKIHsKICAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwpAQCAtOTczLDcgKzEwMzMsNyBAQCB2b2lkIEV3a1ZpZXc6
OmZlZWRUb3VjaEV2ZW50cyhFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlKQogICAgICAgICBwb2lu
dHMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvaW50cywgcG9pbnQpOwogICAgIH0KIAotICAgIGV3a192
aWV3X2ZlZWRfdG91Y2hfZXZlbnQobV9ldmFzT2JqZWN0LCB0eXBlLCBwb2ludHMsIGV2YXNfa2V5
X21vZGlmaWVyX2dldChzZC0+YmFzZS5ldmFzKSk7CisgICAgaGFuZGxlVG91Y2hFdmVudCh0eXBl
LCBwb2ludHMsIGV2YXNfa2V5X21vZGlmaWVyX2dldChzZC0+YmFzZS5ldmFzKSk7CiAKICAgICB2
b2lkKiBkYXRhOwogICAgIEVJTkFfTElTVF9GUkVFKHBvaW50cywgZGF0YSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAppbmRleCA4NzE2NWJjODg1Njg3MTM5NGI0
YzBjNGNjYjlhMDI3NTRmNWE4MjE2Li5mNTVjYjc5N2Y4MWIyN2FmZmIxODJkNGQ3ZTA2MDcwOTI1
MWYyZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCkBA
IC0xNDgsNiArMTQ4LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAg
Ym9vbCB0b3VjaEV2ZW50c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoRXZlbnRzRW5h
YmxlZDsgfQogICAgIHZvaWQgc2V0VG91Y2hFdmVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCk7Cisg
ICAgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5h
X0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciopOwogI2VuZGlmCiAKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImIGN1cnNvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggZDYxODFiOGIwNzc1NzYy
YTNiZGNkZmUxMjY1MzUxMTgwMDQ0OTBiMi4uYjhkNGVkNmEyODcyOTc1NGZiOWEwNTQwZGFhODll
YTY4OTgzYWI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIK
ICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFt
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC04MjcsNyArODI4LDcgQEAg
RWluYV9Cb29sIGV3a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IEV3a19Ub3VjaF9FdmVudF9UeXBlIHQKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX0JZX1NEX09S
X1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIGltcGwtPnBhZ2UoKS0+aGFu
ZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJz
LCBpbXBsLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgaW1wbC0+dHJhbnNmb3JtVG9TY3JlZW4oKSwg
ZWNvcmVfdGltZV9nZXQoKSkpOworICAgIGltcGwtPmhhbmRsZVRvdWNoRXZlbnQodHlwZSwgcG9p
bnRzLCBtb2RpZmllcnMpOwogCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKaW5kZXggYzFiMWZmNmYxZmI1MDhhNTNhNDU0YzU1
N2U3NjIyYmVkNjQ1ZjI5OS4uNjRjMDNkZjhhMjEwYTYzZDJmNDZhNjQwMTA1MjM0MmIyYjhhZDEx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC03NCw0ICs3
NCw5IEBAIHZvaWQgV2ViVmlldzo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
KQogICAgIG1fd2ViUGFnZVByb3h5LT5yZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
cygpOwogfQogCit2b2lkIFdlYlZpZXc6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgV0tUb3VjaEV2
ZW50JiB0b3VjaEV2ZW50KQoreworICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVUb3VjaEV2ZW50
KE5hdGl2ZVdlYlRvdWNoRXZlbnQodG91Y2hFdmVudCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgKaW5kZXggZTFlNzY2ZGZk
MWYwMDZhNjM5Mzg0NjdkMzI3NTIwMDJjODE3YTg1Ni4uNDExMjZiNzZiYmYwMTgzMWI5OGRjMGIz
ZDA5MWJkNjk2Yzc5NDQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIlBh
Z2VDbGllbnQuaCIKKyNpbmNsdWRlICJXS0V2ZW50RWZsLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4
dC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgpAQCAtNDksNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaGVtZVBhdGgoV0tTdHJp
bmdSZWYpOwogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7
CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworICAgIHZv
aWQgaGFuZGxlVG91Y2hFdmVudChjb25zdCBXS1RvdWNoRXZlbnQmKTsKIAogICAgIC8vIEZJWE1F
OiBSZW1vdmUgd2hlbiBwb3NzaWJsZS4KICAgICBFdmFzX09iamVjdCogZXZhc09iamVjdCgpIHsg
cmV0dXJuIG1fZXZhc09iamVjdDsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDYyMWU1Y2JlN2Q1Zjk5YjM3YmFhZjA2ODYzZDU2NDllYjRhMjE0
YTEuLmM3Nzg2N2M0YWYzMzQ0YWQwYmZmOTJhNjk4MmUwNTlmZmJjOTJjYTggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMy0wMi0wNSAgRXVubWkgTGVlICA8ZXVubWkxNS5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAg
ICAgW0VGTF1bV0syXSBBZGQgV0syIEMgQVBJIHRvIGhhbmRsZSB0b3VjaCBldmVudC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCAiLXJlYWRhYmls
aXR5L2VudW1fY2FzaW5nIiBmb3IgV2ViS2l0MiBDIEFQSXMgYmVjYXVzZSB3ZSB1c2Ugd29yZAor
ICAgICAgICB3aGljaCBzdGFydHMgd2l0aCBub24tY2FwaXRhbCBsZXR0ZXIgJ2snIGZvciB0eXBl
cyBvZiBlbnVtcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5w
eToKKwogMjAxMy0wMi0wNCAgQWxhbiBDdXR0ZXIgIDxhbGFuY3V0dGVyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBFV1MgYm90cyBkb24ndCByZW1vdmUgdW50cmFja2VkIGZpbGVzIGFmdGVyIHBy
b2Nlc3NpbmcgYSBwYXRjaApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5Cmlu
ZGV4IDk3NDEzZGJkNTFiM2VjNWNhZGM4YTEwYmNmY2Q5ZGQ5MmNmOTdiNTEuLmFkNTQxNmU5MDRh
Y2IzMzQwZWQ4MDhkZTlhZjA3YmExOGRlOWMwNmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXIucHkKQEAgLTIyMiwxMSArMjIyLDE0IEBAIF9QQVRIX1JVTEVTX1NQRUNJRklF
UiA9IFsKICAgICAoWyMgVGhlIFdlYktpdDIgQyBBUEkgaGFzIG5hbWVzIHdpdGggdW5kZXJzY29y
ZXMgYW5kIHdoaXRlc3BhY2UtYWxpZ25lZAogICAgICAgIyBzdHJ1Y3QgbWVtYmVycy4gQWxzbywg
d2UgYWxsb3cgdW5uZWNlc3NhcnkgcGFyYW1ldGVyIG5hbWVzIGluCiAgICAgICAjIFdlYktpdDIg
QVBJcyBiZWNhdXNlIHdlJ3JlIG1hdGNoaW5nIENGJ3MgaGVhZGVyIHN0eWxlLgorICAgICAgIyBB
ZGRpdGlvbmFsbHksIHdlIHVzZSB3b3JkIHdoaWNoIHN0YXJ0cyB3aXRoIG5vbi1jYXBpdGFsIGxl
dHRlciAnaycKKyAgICAgICMgZm9yIHR5cGVzIG9mIGVudW1zLgogICAgICAgIlNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy8iLAogICAgICAgIlNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy8iLAogICAgICAgIlNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvIl0sCiAgICAgIFsiLXJlYWRhYmlsaXR5L25hbWluZyIsCiAgICAgICAiLXJlYWRhYmlsaXR5
L3BhcmFtZXRlcl9uYW1lIiwKKyAgICAgICItcmVhZGFiaWxpdHkvZW51bV9jYXNpbmciLAogICAg
ICAgIi13aGl0ZXNwYWNlL2RlY2xhcmF0aW9uIl0pLAogICAgIChbIyBUaGVzZSBmaWxlcyBkZWZp
bmUgR09iamVjdHMsIHdoaWNoIGltcGxpZXMgc29tZSBkZWZpbml0aW9ucyBvZgogICAgICAgIyB2
YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyBjb250YWluaW5nIHVuZGVyc2NvcmVzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186764</attachid>
            <date>2013-02-05 23:33:29 -0800</date>
            <delta_ts>2013-02-06 04:57:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130206163004.patch</filename>
            <type>text/plain</type>
            <size>21088</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzU2YmY3NTFlYzM2ODZh
YzZiNzQ0YTZhNWJjZDdmZDQ4ODQxZWNkYS4uNmM1NzQ4ZTdjYmQ3NDAxNWRhNjkwNDcxYTNkN2Yw
NGZiZGE0ODRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAyLTA1ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvdWNoIGV2ZW50cyBmb3Igb3VyIHRhcmdldCBw
bGF0Zm9ybXMgZGlmZmVyIChYSW5wdXQyLCBXYXlsYW5kLCBUaXplbikgc28KKyAgICAgICAgZm9y
IHRoZSBFRkwgcG9ydCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZmVlZCBldmVudHMgbWFudWFsbHku
CisKKyAgICAgICAgVG8ga2VlcCBvdXIgY3VycmVudCBBUEkgZm9yIGRlc2t0b3AgRUZML0VubGln
aHRlbm1lbnQgd29ya2luZywgd2UgY29udmVydAorICAgICAgICBvdXIgY3VycmVudGx5IGxpbWl0
ZWQgRUZMIGV2ZW50cyB0byB0aGUgbmV3IEVGTCBzcGVjaWZpYyBDIEVmbFRvdWNoRXZlbnQgdHlw
ZS4KKworICAgICAgICBUaGUgV0tWaWV3U2VuZFRvdWNoRXZlbnQgY2FuIGJlIHVzZWQgZm9yIGFu
eSB1c2UtY2FzZSAocGxhdGZvcm0vcHJvZHVjdCkKKyAgICAgICAgbm90IGludm9sdmluZyB0aGUg
RUZMIGV2ZW50cy4KKworICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHdlIG1ha2Ugc3VyZSB0byBh
dm9pZCB1c2luZyBXSzIgaW50ZXJuYWxzIGluIG91ciBFRkwgQVBJCisgICAgICAgIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAg
ICAgKE5hdGl2ZVdlYlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3Vj
aEV2ZW50OjpuYXRpdmVFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3Vj
aEV2ZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0
aXZlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rvcnku
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp0eXBlRm9yVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6Om1vZGlmaWVyc0ZvcldLRXZlbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBT
aGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oOgorICAgICAgICAoV2ViRXZlbnRGYWN0b3J5KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3U2Vu
ZFRvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoY3JlYXRl
RWZsVG91Y2hFdmVudCk6CisgICAgICAgIChld2tfdmlld19mZWVkX3RvdWNoX2V2ZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3OjpzZW5kVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvV2ViVmlldy5oOgorICAgICAgICAoV2ViVmlldyk6CisKIDIwMTMtMDItMDQgIEd3
YW5nIFlvb24gSHdhbmcgIDxyeXVtaWVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIENvb3Jk
aW5hdGVkIEdyYXBoaWNzIDogZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dyYW0gZG9lcyBub3Qg
ZG8gYW55dGhpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2Vi
VG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQu
aAppbmRleCBjNjNkMWNmMDcwNWJjYTFlYTU0ZDM4NGYzZjBmNWJjODMxMWFkNjJhLi5jMjNjYzky
NDljYTVkOWMxODNlY2NiZTJjNTg5ZTg4OWFkN2QzYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTMxLDkgKzMxLDcgQEAKICNpZiBQTEFURk9S
TShRVCkKICNpbmNsdWRlIDxRVG91Y2hFdmVudD4KICNlbGlmIFBMQVRGT1JNKEVGTCkKLSNpbmNs
dWRlICJld2tfdG91Y2guaCIKLSNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9B
ZmZpbmVUcmFuc2Zvcm0uaD4KKyNpbmNsdWRlICJXS0V2ZW50RWZsLmgiCiAjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC00MywxNiArNDEsMjAgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KFFUKQogICAgIGV4cGxpY2l0IE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQq
LCBjb25zdCBRVHJhbnNmb3JtJiBmcm9tSXRlbVRyYW5zZm9ybSk7CiAjZWxpZiBQTEFURk9STShF
RkwpCi0gICAgTmF0aXZlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSwgY29uc3Qg
RWluYV9MaXN0KiwgY29uc3QgRXZhc19Nb2RpZmllciosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRv
RGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50
KGNvbnN0IEVmbFRvdWNoRXZlbnQmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCiAgICAg
Y29uc3QgUVRvdWNoRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gJm1fbmF0aXZl
RXZlbnQ7IH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBjb25zdCBFZmxUb3VjaEV2ZW50KiBu
YXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuICZtX25hdGl2ZUV2ZW50OyB9CiAjZW5kaWYKIAog
cHJpdmF0ZToKICNpZiBQTEFURk9STShRVCkKICAgICBjb25zdCBRVG91Y2hFdmVudCBtX25hdGl2
ZUV2ZW50OworI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIGNvbnN0IEVmbFRvdWNoRXZlbnQgbV9u
YXRpdmVFdmVudDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKaW5kZXggNzI3OTY4MzVhNjY0N2IwMjcy
ZGVmMjNlZTZjMjBiMTgxMzlhOTE2NS4uYmYxMjY0NTVjZjJlZGU4ZGM1YzUzNDVjNTUzZTNkMmQ4
NzRhYWJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJU
b3VjaEV2ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdl
YlRvdWNoRXZlbnRFZmwuY3BwCkBAIC0zMiw4ICszMiw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1OYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9F
dmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01vZGlm
aWVyKiBtb2RpZmllcnMsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250
ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuLCBkb3Vi
bGUgdGltZXN0YW1wKQotICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0
ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMsIHRvV2ViQ29udGVudCwgdG9E
ZXZpY2VTY3JlZW4sIHRpbWVzdGFtcCkpCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJU
b3VjaEV2ZW50KGNvbnN0IEVmbFRvdWNoRXZlbnQmIGV2ZW50KQorICAgIDogV2ViVG91Y2hFdmVu
dChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoZXZlbnQpKQorICAgICwgbV9u
YXRpdmVFdmVudChldmVudCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9X
ZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IGI5OTkyNTA4NDM4ZDcwZjE0ZjExMzlhOTQxMzQ0MDAw
YWI5OGNjZTQuLmI2NTI4ZDhmOTRiMTY3NGUzYWRjYzlkMWUxOGFkNTg0ZDNjMjhmNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKIAogI2luY2x1ZGUgIkVmbEtl
eWJvYXJkVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJh
ci5oPgogCkBAIC0yMDUsNDMgKzIwNiw1NyBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcAogfQog
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXN0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6OlR5cGUg
dHlwZUZvclRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSkKK3N0YXRpYyBpbmxp
bmUgV2ViRXZlbnQ6OlR5cGUgdHlwZUZvclRvdWNoRXZlbnQoRWZsVG91Y2hFdmVudFR5cGUgdHlw
ZSkKIHsKLSAgICBpZiAodHlwZSA9PSBFV0tfVE9VQ0hfU1RBUlQpCisgICAgaWYgKHR5cGUgPT0g
a0VmbFRvdWNoRXZlbnRUeXBlVG91Y2hTdGFydCkKICAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpU
b3VjaFN0YXJ0OwotICAgIGlmICh0eXBlID09IEVXS19UT1VDSF9NT1ZFKQorICAgIGlmICh0eXBl
ID09IGtFZmxUb3VjaEV2ZW50VHlwZVRvdWNoTW92ZSkKICAgICAgICAgcmV0dXJuIFdlYkV2ZW50
OjpUb3VjaE1vdmU7Ci0gICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNIX0VORCkKKyAgICBpZiAodHlw
ZSA9PSBrRWZsVG91Y2hFdmVudFR5cGVUb3VjaEVuZCkKICAgICAgICAgcmV0dXJuIFdlYkV2ZW50
OjpUb3VjaEVuZDsKLSAgICBpZiAodHlwZSA9PSBFV0tfVE9VQ0hfQ0FOQ0VMKQorICAgIGlmICh0
eXBlID09IGtFZmxUb3VjaEV2ZW50VHlwZVRvdWNoQ2FuY2VsKQogICAgICAgICByZXR1cm4gV2Vi
RXZlbnQ6OlRvdWNoQ2FuY2VsOwogCiAgICAgcmV0dXJuIFdlYkV2ZW50OjpOb1R5cGU7CiB9CiAK
LVdlYlRvdWNoRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KEV3a19U
b3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFz
X01vZGlmaWVyKiBtb2RpZmllcnMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1w
KQorc3RhdGljIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzRm9yV0tFdmVudCh1bnNpZ25l
ZCBtb2RpZmllcnMpCit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKworICAgIGlmIChtb2Rp
ZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5KQorICAgICAgICByZXN1bHQgfD0gV2Vi
RXZlbnQ6OlNoaWZ0S2V5OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc0Nv
bnRyb2xLZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6Q29udHJvbEtleTsKKyAgICBp
ZiAobW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmllcnNBbHRLZXkpCisgICAgICAgIHJlc3VsdCB8
PSBXZWJFdmVudDo6QWx0S2V5OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVy
c01ldGFLZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6TWV0YUtleTsKKworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZpZXJzPihyZXN1bHQpOworfQorCitXZWJU
b3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBFZmxU
b3VjaEV2ZW50JiBldmVudCkKIHsKICAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiB0
b3VjaFBvaW50czsKICAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0ZSBz
dGF0ZTsKLSAgICBjb25zdCBFaW5hX0xpc3QqIGxpc3Q7Ci0gICAgdm9pZCogaXRlbTsKLSAgICBF
SU5BX0xJU1RfRk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0pIHsKLSAgICAgICAgRXdrX1RvdWNo
X1BvaW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGl0ZW0pOwogCi0g
ICAgICAgIHN3aXRjaCAocG9pbnQtPnN0YXRlKSB7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9Q
T0lOVF9VUDoKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXZlbnQubnVtVG91Y2hQb2lu
dHMgJiYgaSA8IGtXS01heGltdW1Ub3VjaFBvaW50c1BlclRvdWNoRXZlbnQ7ICsraSkgeworICAg
ICAgICBjb25zdCBFZmxUb3VjaFBvaW50JiBwb2ludCA9IGV2ZW50LnRvdWNoUG9pbnRzW2ldOwor
ICAgICAgICBzd2l0Y2ggKHBvaW50LnN0YXRlKSB7CisgICAgICAgIGNhc2Uga0VmbFRvdWNoUG9p
bnRTdGF0ZVRvdWNoUmVsZWFzZWQ6CiAgICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEVWQVNfVE9VQ0hfUE9JTlRfTU9WRToKKyAgICAgICAgY2FzZSBrRWZsVG91Y2hQb2ludFN0YXRl
VG91Y2hNb3ZlZDoKICAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaE1vdmVkOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9Q
T0lOVF9ET1dOOgorICAgICAgICBjYXNlIGtFZmxUb3VjaFBvaW50U3RhdGVUb3VjaFByZXNzZWQ6
CiAgICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2Vk
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9TVElM
TDoKKyAgICAgICAgY2FzZSBrRWZsVG91Y2hQb2ludFN0YXRlVG91Y2hTdGF0aW9uYXJ5OgogICAg
ICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfQ0FOQ0VM
OgorICAgICAgICBjYXNlIGtFZmxUb3VjaFBvaW50U3RhdGVUb3VjaENhbmNlbGxlZDoKICAgICAg
ICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaENhbmNlbGxlZDsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtMjQ5LDExICsyNjQsMTAgQEAg
V2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoRXdrX1Rv
dWNoX0V2ZW50X1R5cGUgdHlwZSwgY28KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgSW50UG9pbnQgcG9zKHBvaW50LT54LCBwb2ludC0+eSk7Ci0gICAgICAgIHRv
dWNoUG9pbnRzLmFwcGVuZChXZWJQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQtPmlkLCBzdGF0ZSwg
dG9EZXZpY2VTY3JlZW4ubWFwUG9pbnQocG9zKSwgdG9XZWJDb250ZW50Lm1hcFBvaW50KHBvcykp
KTsKKyAgICAgICAgdG91Y2hQb2ludHMuYXBwZW5kKFdlYlBsYXRmb3JtVG91Y2hQb2ludChwb2lu
dC5pZCwgc3RhdGUsIHRvSW50UG9pbnQocG9pbnQuc2NyZWVuUG9zaXRpb24pLCB0b0ludFBvaW50
KHBvaW50LnBvc2l0aW9uKSwgdG9JbnRTaXplKHBvaW50LnJhZGl1cyksIHBvaW50LnJvdGF0aW9u
QW5nbGUsIHBvaW50LmZvcmNlKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQo
dHlwZUZvclRvdWNoRXZlbnQodHlwZSksIHRvdWNoUG9pbnRzLCBtb2RpZmllcnNGb3JFdmVudCht
b2RpZmllcnMpLCB0aW1lc3RhbXApOworICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGVGb3JU
b3VjaEV2ZW50KGV2ZW50LnR5cGUpLCB0b3VjaFBvaW50cywgbW9kaWZpZXJzRm9yV0tFdmVudChl
dmVudC5tb2RpZmllcnMpLCBldmVudC50aW1lc3RhbXApOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCmluZGV4IGU0NDRkYjI5ZDUyMzg0
MDIyMDQxZTVkYjhkMjQ0MGMzMGQ4MjNlODAuLmUwOTk0ZGFhOTcwM2ViY2YwYjc2NTJlNTc2Mzdl
MmRiMjdlZWU2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZl
bnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rv
cnkuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRlZiBXZWJFdmVudEZhY3RvcnlfaAogI2RlZmlu
ZSBXZWJFdmVudEZhY3RvcnlfaAogCisjaW5jbHVkZSAiV0tFdmVudEVmbC5oIgogI2luY2x1ZGUg
IldlYkV2ZW50LmgiCi0jaW5jbHVkZSAiZXdrX3RvdWNoLmgiCiAjaW5jbHVkZSA8RXZhcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAKQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGNyZWF0ZVdlYktleWJvYXJkRXZl
bnQoY29uc3QgRXZhc19FdmVudF9LZXlfRG93biopOwogICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2
ZW50IGNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAqKTsKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50IGNyZWF0ZVdl
YlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUsIGNvbnN0IEVpbmFfTGlzdCosIGNvbnN0
IEV2YXNfTW9kaWZpZXIqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBzdGF0aWMg
V2ViVG91Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IEVmbFRvdWNoRXZlbnQmKTsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS0V2ZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
RXZlbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODc3NTA3ZTM4YTdhMzBkZDk2YzBlMGQ5NjVkZWIyNjFm
MWU5YzlkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS0V2ZW50RWZsLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLRXZlbnRFZmxfaAorI2RlZmluZSBXS0V2ZW50
RWZsX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0V2ZW50Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5Lmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSBFZmxUb3VjaEV2ZW50VHlwZSB7
CisgICAga0VmbFRvdWNoRXZlbnRUeXBlVG91Y2hTdGFydCwKKyAgICBrRWZsVG91Y2hFdmVudFR5
cGVUb3VjaE1vdmUsCisgICAga0VmbFRvdWNoRXZlbnRUeXBlVG91Y2hFbmQsCisgICAga0VmbFRv
dWNoRXZlbnRUeXBlVG91Y2hDYW5jZWwKK307Cit0eXBlZGVmIEVmbFRvdWNoRXZlbnRUeXBlIEVm
bFRvdWNoRXZlbnRUeXBlOworCitlbnVtIEVmbFRvdWNoUG9pbnRTdGF0ZSB7CisgICAga0VmbFRv
dWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQsCisgICAga0VmbFRvdWNoUG9pbnRTdGF0ZVRvdWNo
UHJlc3NlZCwKKyAgICBrRWZsVG91Y2hQb2ludFN0YXRlVG91Y2hNb3ZlZCwKKyAgICBrRWZsVG91
Y2hQb2ludFN0YXRlVG91Y2hTdGF0aW9uYXJ5LAorICAgIGtFZmxUb3VjaFBvaW50U3RhdGVUb3Vj
aENhbmNlbGxlZAorfTsKK3R5cGVkZWYgRWZsVG91Y2hQb2ludFN0YXRlIEVmbFRvdWNoUG9pbnRT
dGF0ZTsKKworc3RydWN0IEVmbFRvdWNoUG9pbnQgeworICAgIHVuc2lnbmVkIGlkOworICAgIEVm
bFRvdWNoUG9pbnRTdGF0ZSBzdGF0ZTsKKyAgICBXS1BvaW50IHBvc2l0aW9uOworICAgIFdLUG9p
bnQgc2NyZWVuUG9zaXRpb247CisgICAgV0tTaXplIHJhZGl1czsKKyAgICBmbG9hdCByb3RhdGlv
bkFuZ2xlOworICAgIGZsb2F0IGZvcmNlOworfTsKK3R5cGVkZWYgc3RydWN0IEVmbFRvdWNoUG9p
bnQgRWZsVG91Y2hQb2ludDsKKworZW51bSB7IGtXS01heGltdW1Ub3VjaFBvaW50c1BlclRvdWNo
RXZlbnQgPSA1IH07CisKK3N0cnVjdCBFZmxUb3VjaEV2ZW50IHsKKyAgICBFZmxUb3VjaEV2ZW50
VHlwZSB0eXBlOworICAgIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzOworICAgIGRvdWJsZSB0
aW1lc3RhbXA7CisgICAgdW5zaWduZWQgbnVtVG91Y2hQb2ludHM7CisgICAgRWZsVG91Y2hQb2lu
dCB0b3VjaFBvaW50c1trV0tNYXhpbXVtVG91Y2hQb2ludHNQZXJUb3VjaEV2ZW50XTsKK307Cit0
eXBlZGVmIHN0cnVjdCBFZmxUb3VjaEV2ZW50IEVmbFRvdWNoRXZlbnQ7CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0V2ZW50RWZsX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAppbmRleCA5YzFkMzFkNGJh
M2Q4NmI4ZjdmNjgwNzc1ZTYyM2NkMDlhM2IzM2EyLi5iZDhjZWQ0ZjU0NGRmOGE4MzcyNmNmY2Yz
YjY2N2JmNTk2NjM3NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvZWZsL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXcuY3BwCkBAIC04MCwzICs4MCw5IEBAIFdLSW1hZ2VSZWYgV0tWaWV3Q3JlYXRlU25h
cHNob3QoV0tWaWV3UmVmIHZpZXdSZWYpCiAgICAgRXdrVmlldyogZXdrVmlldyA9IEV3a1ZpZXc6
OmZyb21FdmFzT2JqZWN0KHRvSW1wbCh2aWV3UmVmKS0+ZXZhc09iamVjdCgpKTsKICAgICByZXR1
cm4gV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UoZXdrVmlldy0+dGFrZVNuYXBzaG90KCku
Z2V0KCksIDAgLyogb3B0aW9ucyAqLyk7CiB9CisKK3ZvaWQgV0tWaWV3U2VuZFRvdWNoRXZlbnQo
V0tWaWV3UmVmIHZpZXdSZWYsIGNvbnN0IEVmbFRvdWNoRXZlbnQqIHRvdWNoRXZlbnQpCit7Cisg
ICAgQVNTRVJUKHRvdWNoRXZlbnQpOworICAgIHRvSW1wbCh2aWV3UmVmKS0+c2VuZFRvdWNoRXZl
bnQoKnRvdWNoRXZlbnQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tWaWV3LmgKaW5kZXggZDViNDMyZDhlYTEzMTU0Mjg3ZmE4ZDRhODdjNDhiNDBiOGQyMmYxYS4u
MGNmMGQ1OTQwYzAyYmNhZjViMWYwNmM1NzI3ZTJlZTg2ODUxZmZkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCkBAIC0yMSw2ICsyMSw3IEBACiAjZGVm
aW5lIFdLVmlld19oCiAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdl
YktpdDIvV0tFdmVudEVmbC5oPgogCiAjaWYgVVNFKEVPKQogdHlwZWRlZiBzdHJ1Y3QgX0VvIEV2
YXM7CkBAIC01Miw2ICs1Myw4IEBAIFdLX0VYUE9SVCBFdmFzX09iamVjdCogV0tWaWV3R2V0RXZh
c09iamVjdChXS1ZpZXdSZWYpOwogCiBXS19FWFBPUlQgV0tJbWFnZVJlZiBXS1ZpZXdDcmVhdGVT
bmFwc2hvdChXS1ZpZXdSZWYpOwogCitXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZW5kVG91Y2hFdmVu
dChXS1ZpZXdSZWYsIGNvbnN0IEVmbFRvdWNoRXZlbnQqKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcAppbmRleCBkNjE4MWI4YjA3NzU3NjJhM2JkY2RmZTEyNjUzNTExODAwNDQ5MGIyLi5iZDY2
YzU1Njc5NDIxZjM2NzI3MDk5M2MwMDNlYWI2MmRkN2VmMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5j
bHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KICNpbmNs
dWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ZpZXcuaD4K
ICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKQEAgLTgyMCwxNCArODIxLDgxIEBAIEVpbmFfQm9vbCBld2tfdmlld19tb3VzZV9ldmVu
dHNfZW5hYmxlZF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgcmV0dXJuIGlt
cGwtPm1vdXNlRXZlbnRzRW5hYmxlZCgpOwogfQogCitzdGF0aWMgRWZsVG91Y2hFdmVudCogY3Jl
YXRlRWZsVG91Y2hFdmVudChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1RvdWNoX0V2ZW50X1R5
cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1v
ZGlmaWVycykKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocG9pbnRzLCAw
KTsKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7
CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfQllfU0RfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwg
MCk7CisKKyAgICBFZmxUb3VjaEV2ZW50KiB0b3VjaEV2ZW50ID0gbmV3IEVmbFRvdWNoRXZlbnQ7
CisgICAgdG91Y2hFdmVudC0+dHlwZSA9IHN0YXRpY19jYXN0PEVmbFRvdWNoRXZlbnRUeXBlPih0
eXBlKTsKKyAgICB0b3VjaEV2ZW50LT50aW1lc3RhbXAgPSBlY29yZV90aW1lX2dldCgpOworICAg
IHRvdWNoRXZlbnQtPm51bVRvdWNoUG9pbnRzID0gZWluYV9saXN0X2NvdW50KHBvaW50cyk7Cisg
ICAgaWYgKHRvdWNoRXZlbnQtPm51bVRvdWNoUG9pbnRzID4ga1dLTWF4aW11bVRvdWNoUG9pbnRz
UGVyVG91Y2hFdmVudCkKKyAgICAgICAgdG91Y2hFdmVudC0+bnVtVG91Y2hQb2ludHMgPSBlaW5h
X2xpc3RfY291bnQocG9pbnRzKTsKKworICAgIHRvdWNoRXZlbnQtPm1vZGlmaWVycyA9IDA7Cisg
ICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJTaGlmdCIpKQorICAg
ICAgICB0b3VjaEV2ZW50LT5tb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleTsK
KyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIkNvbnRyb2wiKSkK
KyAgICAgICAgdG91Y2hFdmVudC0+bW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQ29udHJv
bEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIkFsdCIp
KQorICAgICAgICB0b3VjaEV2ZW50LT5tb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNBbHRL
ZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJNZXRhIikp
CisgICAgICAgIHRvdWNoRXZlbnQtPm1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc01ldGFL
ZXk7CisKKyAgICBjb25zdCBFaW5hX0xpc3QqIGxpc3Q7CisgICAgZG91YmxlIHg7CisgICAgZG91
YmxlIHk7CisgICAgdW5zaWduZWQgaW5kZXg7CisgICAgZm9yIChsaXN0ID0gcG9pbnRzLCBpbmRl
eCA9IDA7IGxpc3QgJiYgaW5kZXggPCB0b3VjaEV2ZW50LT5udW1Ub3VjaFBvaW50czsgbGlzdCA9
IGVpbmFfbGlzdF9uZXh0KGxpc3QpLCArK2luZGV4KSB7CisgICAgICAgIEV3a19Ub3VjaF9Qb2lu
dCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihlaW5hX2xpc3RfZGF0YV9n
ZXQobGlzdCkpOworICAgICAgICBFZmxUb3VjaFBvaW50JiB3a1RvdWNoUG9pbnQgPSB0b3VjaEV2
ZW50LT50b3VjaFBvaW50c1tpbmRleF07CisKKyAgICAgICAgd2tUb3VjaFBvaW50LmlkID0gcG9p
bnQtPmlkOworICAgICAgICBpbXBsLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKS5tYXAocG9pbnQtPngs
IHBvaW50LT55LCB4LCB5KTsKKyAgICAgICAgd2tUb3VjaFBvaW50LnBvc2l0aW9uID0gV0tQb2lu
dE1ha2UoeCwgeSk7CisgICAgICAgIGltcGwtPnRyYW5zZm9ybVRvU2NyZWVuKCkubWFwKHBvaW50
LT54LCBwb2ludC0+eSwgeCwgeSk7CisgICAgICAgIHdrVG91Y2hQb2ludC5zY3JlZW5Qb3NpdGlv
biA9IFdLUG9pbnRNYWtlKHgsIHkpOworICAgICAgICB3a1RvdWNoUG9pbnQucmFkaXVzID0gV0tT
aXplTWFrZSgwLCAwKTsKKyAgICAgICAgd2tUb3VjaFBvaW50LnJvdGF0aW9uQW5nbGUgPSAwOwor
ICAgICAgICB3a1RvdWNoUG9pbnQuZm9yY2UgPSAwOworCisgICAgICAgIHN3aXRjaCAocG9pbnQt
PnN0YXRlKSB7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9VUDoKKyAgICAgICAgICAg
IHdrVG91Y2hQb2ludC5zdGF0ZSA9IGtFZmxUb3VjaFBvaW50U3RhdGVUb3VjaFJlbGVhc2VkOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9NT1ZFOgor
ICAgICAgICAgICAgd2tUb3VjaFBvaW50LnN0YXRlID0ga0VmbFRvdWNoUG9pbnRTdGF0ZVRvdWNo
TW92ZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5U
X0RPV046CisgICAgICAgICAgICB3a1RvdWNoUG9pbnQuc3RhdGUgPSBrRWZsVG91Y2hQb2ludFN0
YXRlVG91Y2hQcmVzc2VkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVZBU19U
T1VDSF9QT0lOVF9TVElMTDoKKyAgICAgICAgICAgIHdrVG91Y2hQb2ludC5zdGF0ZSA9IGtFZmxU
b3VjaFBvaW50U3RhdGVUb3VjaFN0YXRpb25hcnk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX0NBTkNFTDoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHdrVG91Y2hQb2ludC5zdGF0ZSA9IGtFZmxUb3VjaFBvaW50U3RhdGVUb3VjaENhbmNl
bGxlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IHRvdWNoRXZlbnQ7Cit9CisKIEVpbmFfQm9vbCBld2tfdmlld19mZWVkX3RvdWNoX2V2ZW50KEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5h
X0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJzKQogewogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBv
aW50cywgZmFsc2UpOwogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfQllfU0RfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFnZSgpLT5oYW5kbGVUb3VjaEV2
ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMsIGltcGwtPnRy
YW5zZm9ybUZyb21TY2VuZSgpLCBpbXBsLT50cmFuc2Zvcm1Ub1NjcmVlbigpLCBlY29yZV90aW1l
X2dldCgpKSk7CisgICAgRWZsVG91Y2hFdmVudCogdG91Y2hFdmVudCA9IGNyZWF0ZUVmbFRvdWNo
RXZlbnQoZXdrVmlldywgdHlwZSwgcG9pbnRzLCBtb2RpZmllcnMpOworICAgIGlmICghdG91Y2hF
dmVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV0tWaWV3U2VuZFRvdWNoRXZlbnQo
aW1wbC0+d2tWaWV3KCksIHRvdWNoRXZlbnQpOworICAgIGRlbGV0ZSB0b3VjaEV2ZW50OwogCiAg
ICAgcmV0dXJuIHRydWU7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmll
dy5jcHAKaW5kZXggYzFiMWZmNmYxZmI1MDhhNTNhNDU0YzU1N2U3NjIyYmVkNjQ1ZjI5OS4uMTJm
YmRhZTM2YTE5MjgzNzEyMzJlYzkwNWE0NjdiYWI2ZmRhZDhlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC03NCw0ICs3NCw5IEBAIHZvaWQgV2ViVmlldzo6
cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogICAgIG1fd2ViUGFnZVByb3h5
LT5yZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogfQogCit2b2lkIFdlYlZp
ZXc6OnNlbmRUb3VjaEV2ZW50KGNvbnN0IEVmbFRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCit7Cisg
ICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudCh0
b3VjaEV2ZW50KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuaAppbmRleCBlMWU3NjZkZmQxZjAwNmE2MzkzODQ2N2QzMjc1MjAw
MmM4MTdhODU2Li43ODFlNzRjNWI4MzIxZjFkZTA4MGNiZjdjNjgyNjFlZmZmNzE3ZDE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUg
IldLRXZlbnRFZmwuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZUdyb3VwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCkBAIC00OSw2ICs1MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFRoZW1lUGF0aChXS1N0cmluZ1JlZik7CiAgICAgdm9pZCBzdXNw
ZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHJlc3VtZUFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CisgICAgdm9pZCBzZW5kVG91Y2hFdmVudChjb25z
dCBFZmxUb3VjaEV2ZW50Jik7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHdoZW4gcG9zc2libGUu
CiAgICAgRXZhc19PYmplY3QqIGV2YXNPYmplY3QoKSB7IHJldHVybiBtX2V2YXNPYmplY3Q7IH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2MjFl
NWNiZTdkNWY5OWIzN2JhYWYwNjg2M2Q1NjQ5ZWI0YTIxNGExLi5hNDJiYjVmNmMxMWMzZjA3MzEw
Y2FjZDFmZmIzODY3ZGEyOTI2YThkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDItMDUgIEV1bm1pIExlZSAg
PGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRkIFdLMiBD
IEFQSSB0byBoYW5kbGUgdG91Y2ggZXZlbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4OTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkICItcmVhZGFiaWxpdHkvZW51bV9jYXNpbmciIGZvciBX
ZWJLaXQyIEMgQVBJcyBiZWNhdXNlIHdlIHVzZSB3b3JkCisgICAgICAgIHdoaWNoIHN0YXJ0cyB3
aXRoIG5vbi1jYXBpdGFsIGxldHRlciAnaycgZm9yIHR5cGVzIG9mIGVudW1zLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorCiAyMDEzLTAyLTA0ICBBbGFu
IEN1dHRlciAgPGFsYW5jdXR0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEVXUyBib3RzIGRv
bid0IHJlbW92ZSB1bnRyYWNrZWQgZmlsZXMgYWZ0ZXIgcHJvY2Vzc2luZyBhIHBhdGNoCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggOTc0MTNkYmQ1MWIzZWM1Y2Fk
YzhhMTBiY2ZjZDlkZDkyY2Y5N2I1MS4uY2ZhZmZjYTRhNGQ1MzlhYjdmOGEzNGE0MjI5M2EzYjZj
Nzc2M2Y0NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMjIy
LDEwICsyMjIsMTMgQEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0gWwogICAgIChbIyBUaGUgV2Vi
S2l0MiBDIEFQSSBoYXMgbmFtZXMgd2l0aCB1bmRlcnNjb3JlcyBhbmQgd2hpdGVzcGFjZS1hbGln
bmVkCiAgICAgICAjIHN0cnVjdCBtZW1iZXJzLiBBbHNvLCB3ZSBhbGxvdyB1bm5lY2Vzc2FyeSBw
YXJhbWV0ZXIgbmFtZXMgaW4KICAgICAgICMgV2ViS2l0MiBBUElzIGJlY2F1c2Ugd2UncmUgbWF0
Y2hpbmcgQ0YncyBoZWFkZXIgc3R5bGUuCisgICAgICAjIEFkZGl0aW9uYWxseSwgd2UgdXNlIHdv
cmQgd2hpY2ggc3RhcnRzIHdpdGggbm9uLWNhcGl0YWwgbGV0dGVyICdrJworICAgICAgIyBmb3Ig
dHlwZXMgb2YgZW51bXMuCiAgICAgICAiU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DLyIs
CiAgICAgICAiU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jLyIsCiAgICAgICAiU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy8iXSwKLSAgICAgWyItcmVhZGFi
aWxpdHkvbmFtaW5nIiwKKyAgICAgWyItcmVhZGFiaWxpdHkvZW51bV9jYXNpbmciLAorICAgICAg
Ii1yZWFkYWJpbGl0eS9uYW1pbmciLAogICAgICAgIi1yZWFkYWJpbGl0eS9wYXJhbWV0ZXJfbmFt
ZSIsCiAgICAgICAiLXdoaXRlc3BhY2UvZGVjbGFyYXRpb24iXSksCiAgICAgKFsjIFRoZXNlIGZp
bGVzIGRlZmluZSBHT2JqZWN0cywgd2hpY2ggaW1wbGllcyBzb21lIGRlZmluaXRpb25zIG9mCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186833</attachid>
            <date>2013-02-06 04:58:00 -0800</date>
            <delta_ts>2013-02-07 22:53:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130206215436.patch</filename>
            <type>text/plain</type>
            <size>21719</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODdiNmFlNGM1OGExN2E1
Mzk3OGRmNmY2NDAxNTNjYTgwMzEyOGFhMy4uYTI1ODUyOGNlZDRmZDA3OWU1ZGFkNjE5NmM1Nzgw
OGVhNjRhYmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAyLTA2ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvdWNoIGV2ZW50cyBmb3Igb3VyIHRhcmdldCBw
bGF0Zm9ybXMgZGlmZmVyIChYSW5wdXQyLCBXYXlsYW5kLCBUaXplbikgc28KKyAgICAgICAgZm9y
IHRoZSBFRkwgcG9ydCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZmVlZCBldmVudHMgbWFudWFsbHku
CisKKyAgICAgICAgVG8ga2VlcCBvdXIgY3VycmVudCBBUEkgZm9yIGRlc2t0b3AgRUZML0VubGln
aHRlbm1lbnQgd29ya2luZywgd2UgY29udmVydAorICAgICAgICBvdXIgY3VycmVudGx5IGxpbWl0
ZWQgRUZMIGV2ZW50cyB0byB0aGUgbmV3IEVGTCBzcGVjaWZpYyBDIEVGTFRvdWNoRXZlbnQgdHlw
ZS4KKworICAgICAgICBUaGUgV0tWaWV3U2VuZFRvdWNoRXZlbnQgY2FuIGJlIHVzZWQgZm9yIGFu
eSB1c2UtY2FzZSAocGxhdGZvcm0vcHJvZHVjdCkKKyAgICAgICAgbm90IGludm9sdmluZyB0aGUg
RUZMIGV2ZW50cy4KKworICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHdlIG1ha2Ugc3VyZSB0byBh
dm9pZCB1c2luZyBXSzIgaW50ZXJuYWxzIGluIG91ciBFRkwgQVBJCisgICAgICAgIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAg
ICAgKE5hdGl2ZVdlYlRvdWNoRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwvTmF0aXZlV2Vi
VG91Y2hFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQ6
Ok5hdGl2ZVdlYlRvdWNoRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwvV2ViRXZlbnRGYWN0
b3J5LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oOgorICAgICAg
ICAoV2ViRXZlbnRGYWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL0VGTEV2
ZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZs
Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojp0eXBlRm9yVG91Y2hFdmVu
dCk6CisgICAgICAgIChXZWJLaXQ6Om1vZGlmaWVyc0ZvcldLRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0Ojp0b1dlYlRvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmNwcDoKKyAgICAgICAgKFdLVmlld1NlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmNwcDoKKyAgICAgICAgKGNyZWF0ZUVGTFRvdWNoRXZlbnQpOgorICAgICAgICAoZXdr
X3ZpZXdfZmVlZF90b3VjaF9ldmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2VuZFRvdWNoRXZlbnQpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuaDoKKyAgICAgICAg
KFdlYlZpZXcpOgorCiAyMDEzLTAyLTA2ICBNYXJqYSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBUYWtlIHJlZmVycmVyIHBvbGljeSBpbnRvIGFjY291bnQgd2hlbiBj
bGVhcmluZyB0aGUgcmVmZXJyZXIgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2
ZVdlYlRvdWNoRXZlbnQuaAppbmRleCBjNjNkMWNmMDcwNWJjYTFlYTU0ZDM4NGYzZjBmNWJjODMx
MWFkNjJhLi5jYWM3NDIyNGU5N2MyYTkxYWQyMTJiNDg2MjliN2E2YzBkZTlhNmVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTMwLDEwICszMCw2
IEBACiAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRVG91Y2hFdmVudD4KLSNlbGlmIFBM
QVRGT1JNKEVGTCkKLSNpbmNsdWRlICJld2tfdG91Y2guaCIKLSNpbmNsdWRlIDxFdmFzLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQzLDcgKzM5LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKFFUKQogICAg
IGV4cGxpY2l0IE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBjb25zdCBR
VHJhbnNmb3JtJiBmcm9tSXRlbVRyYW5zZm9ybSk7CiAjZWxpZiBQTEFURk9STShFRkwpCi0gICAg
TmF0aXZlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSwgY29uc3QgRWluYV9MaXN0
KiwgY29uc3QgRXZhc19Nb2RpZmllciosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYg
dG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2Ny
ZWVuLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50
KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNw
cAppbmRleCA3Mjc5NjgzNWE2NjQ3YjAyNzJkZWYyM2VlNmMyMGIxODEzOWE5MTY1Li44MDE4OTAw
ZTQyMjRjZGQxY2RlMWRhZWQzMjIyNzEwZGM4N2IwYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKQEAgLTI4LDEyICsy
OCwxMCBAQAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAiTmF0aXZlV2ViVG91
Y2hFdmVudC5oIgogCi0jaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCi0KIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1OYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KEV3a19U
b3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFz
X01vZGlmaWVyKiBtb2RpZmllcnMsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9X
ZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVu
LCBkb3VibGUgdGltZXN0YW1wKQotICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMsIHRvV2ViQ29udGVu
dCwgdG9EZXZpY2VTY3JlZW4sIHRpbWVzdGFtcCkpCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRp
dmVXZWJUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHdlYlRvdWNoRXZlbnQpCisgICAg
OiBXZWJUb3VjaEV2ZW50KHdlYlRvdWNoRXZlbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBiOTk5MjUwODQzOGQ3MGYxNGYx
MTM5YTk0MTM0NDAwMGFiOThjY2U0Li5iMjVjNmJkYjQwYWQ3Y2U4NWFhMDhmZGNmNzdiZjE3YjJm
NmM2Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFj
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rvcnku
Y3BwCkBAIC0yMDQsNTcgKzIwNCw0IEBAIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwCiAgICAgICAg
IGNvbnZlcnRNaWxsaXNlY29uZFRvU2Vjb25kKGV2ZW50LT50aW1lc3RhbXApKTsKIH0KIAotI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCi1zdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpUeXBlIHR5cGVG
b3JUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUpCi17Ci0gICAgaWYgKHR5cGUg
PT0gRVdLX1RPVUNIX1NUQVJUKQotICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7
Ci0gICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNIX01PVkUpCi0gICAgICAgIHJldHVybiBXZWJFdmVu
dDo6VG91Y2hNb3ZlOwotICAgIGlmICh0eXBlID09IEVXS19UT1VDSF9FTkQpCi0gICAgICAgIHJl
dHVybiBXZWJFdmVudDo6VG91Y2hFbmQ7Ci0gICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNIX0NBTkNF
TCkKLSAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaENhbmNlbDsKLQotICAgIHJldHVybiBX
ZWJFdmVudDo6Tm9UeXBlOwotfQotCi1XZWJUb3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5hX0xp
c3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJzLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHRvV2ViQ29udGVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNj
cmVlbiwgZG91YmxlIHRpbWVzdGFtcCkKLXsKLSAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBv
aW50PiB0b3VjaFBvaW50czsKLSAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRT
dGF0ZSBzdGF0ZTsKLSAgICBjb25zdCBFaW5hX0xpc3QqIGxpc3Q7Ci0gICAgdm9pZCogaXRlbTsK
LSAgICBFSU5BX0xJU1RfRk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0pIHsKLSAgICAgICAgRXdr
X1RvdWNoX1BvaW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGl0ZW0p
OwotCi0gICAgICAgIHN3aXRjaCAocG9pbnQtPnN0YXRlKSB7Ci0gICAgICAgIGNhc2UgRVZBU19U
T1VDSF9QT0lOVF9VUDoKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaFJlbGVhc2VkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19U
T1VDSF9QT0lOVF9NT1ZFOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoTW92ZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFVkFTX1RP
VUNIX1BPSU5UX0RPV046Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hQcmVzc2VkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19U
T1VDSF9QT0lOVF9TVElMTDoKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaFN0YXRpb25hcnk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBF
VkFTX1RPVUNIX1BPSU5UX0NBTkNFTDoKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1U
b3VjaFBvaW50OjpUb3VjaENhbmNlbGxlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIEludFBvaW50IHBvcyhwb2ludC0+eCwgcG9p
bnQtPnkpOwotICAgICAgICB0b3VjaFBvaW50cy5hcHBlbmQoV2ViUGxhdGZvcm1Ub3VjaFBvaW50
KHBvaW50LT5pZCwgc3RhdGUsIHRvRGV2aWNlU2NyZWVuLm1hcFBvaW50KHBvcyksIHRvV2ViQ29u
dGVudC5tYXBQb2ludChwb3MpKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQo
dHlwZUZvclRvdWNoRXZlbnQodHlwZSksIHRvdWNoUG9pbnRzLCBtb2RpZmllcnNGb3JFdmVudCht
b2RpZmllcnMpLCB0aW1lc3RhbXApOwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rvcnku
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXggZTQ0
NGRiMjlkNTIzODQwMjIwNDFlNWRiOGQyNDQwYzMwZDgyM2U4MC4uMjg3MjA3ODQ0ZGFkZGYxMDJk
OGE1ODk0MGFjNTU2YTZiNTRmYTU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2VmbC9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dl
YkV2ZW50RmFjdG9yeS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFdlYkV2ZW50RmFjdG9y
eV9oCiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgotI2luY2x1ZGUgImV3a190b3VjaC5oIgogI2lu
Y2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgogCkBA
IC00MSw5ICs0MCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVX
ZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqLCBjb25zdCBXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsKICAg
ICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2
YXNfRXZlbnRfS2V5X0Rvd24qKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVX
ZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKik7Ci0jaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKLSAgICBzdGF0aWMgV2ViVG91Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50
KEV3a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqLCBjb25zdCBFdmFzX01vZGlm
aWVyKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6QWZm
aW5lVHJhbnNmb3JtJiwgZG91YmxlIHRpbWVzdGFtcCk7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2VmbC9FRkxFdmVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9FRkxF
dmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAwODY4MjkxZmEwMDA0NmU4YWQyNzZjNjhlYjdjYzA5MjAwZmU5
YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L0VGTEV2ZW50LmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBT
YW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEVGTEV2ZW50X2gKKyNkZWZpbmUgRUZMRXZlbnRfaAorCisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0V2ZW50Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSBF
RkxUb3VjaEV2ZW50VHlwZSB7CisgICAga0VGTFRvdWNoRXZlbnRUeXBlVG91Y2hTdGFydCwKKyAg
ICBrRUZMVG91Y2hFdmVudFR5cGVUb3VjaE1vdmUsCisgICAga0VGTFRvdWNoRXZlbnRUeXBlVG91
Y2hFbmQsCisgICAga0VGTFRvdWNoRXZlbnRUeXBlVG91Y2hDYW5jZWwKK307Cit0eXBlZGVmIEVG
TFRvdWNoRXZlbnRUeXBlIEVGTFRvdWNoRXZlbnRUeXBlOworCitlbnVtIEVGTFRvdWNoUG9pbnRT
dGF0ZSB7CisgICAga0VGTFRvdWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQsCisgICAga0VGTFRv
dWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3NlZCwKKyAgICBrRUZMVG91Y2hQb2ludFN0YXRlVG91Y2hN
b3ZlZCwKKyAgICBrRUZMVG91Y2hQb2ludFN0YXRlVG91Y2hTdGF0aW9uYXJ5LAorICAgIGtFRkxU
b3VjaFBvaW50U3RhdGVUb3VjaENhbmNlbGxlZAorfTsKK3R5cGVkZWYgRUZMVG91Y2hQb2ludFN0
YXRlIEVGTFRvdWNoUG9pbnRTdGF0ZTsKKworc3RydWN0IEVGTFRvdWNoUG9pbnQgeworICAgIHVu
c2lnbmVkIGlkOworICAgIEVGTFRvdWNoUG9pbnRTdGF0ZSBzdGF0ZTsKKyAgICBXS1BvaW50IHBv
c2l0aW9uOworICAgIFdLUG9pbnQgc2NyZWVuUG9zaXRpb247CisgICAgV0tTaXplIHJhZGl1czsK
KyAgICBmbG9hdCByb3RhdGlvbkFuZ2xlOworICAgIGZsb2F0IGZvcmNlOworfTsKK3R5cGVkZWYg
c3RydWN0IEVGTFRvdWNoUG9pbnQgRUZMVG91Y2hQb2ludDsKKworZW51bSB7IGtFRkxNYXhpbXVt
VG91Y2hQb2ludHNQZXJUb3VjaEV2ZW50ID0gNSB9OworCitzdHJ1Y3QgRUZMVG91Y2hFdmVudCB7
CisgICAgRUZMVG91Y2hFdmVudFR5cGUgdHlwZTsKKyAgICBXS0V2ZW50TW9kaWZpZXJzIG1vZGlm
aWVyczsKKyAgICBkb3VibGUgdGltZXN0YW1wOworICAgIHVuc2lnbmVkIG51bVRvdWNoUG9pbnRz
OworICAgIEVGTFRvdWNoUG9pbnQgdG91Y2hQb2ludHNba0VGTE1heGltdW1Ub3VjaFBvaW50c1Bl
clRvdWNoRXZlbnRdOworfTsKK3R5cGVkZWYgc3RydWN0IEVGTFRvdWNoRXZlbnQgRUZMVG91Y2hF
dmVudDsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIEVGTEV2
ZW50X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tBUElDYXN0RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJ
Q2FzdEVmbC5oCmluZGV4IDE4ODlmYzQzNjc1NWY5MWE4MmYzYTMwM2ZhZTViYTUzZDdmNjJkZTcu
LjVmZGI4NzAwMzdmOTgyZjQ5NjUxYjI5MTUwOTMxZDJlOTVjYzk3NTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaApAQCAtMjQsMTIg
KzI0LDgwIEBACiAjZXJyb3IgIlBsZWFzZSAjaW5jbHVkZSBcIldLQVBJQ2FzdC5oXCIgaW5zdGVh
ZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHkuIgogI2VuZGlmCiAKKyNpbmNsdWRlICJFRkxFdmVudC5o
IgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViVmlldzsKIAogV0tfQUREX0FQSV9N
QVBQSU5HKFdLVmlld1JlZiwgV2ViVmlldykKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitp
bmxpbmUgV2ViRXZlbnQ6OlR5cGUgdHlwZUZvclRvdWNoRXZlbnQoRUZMVG91Y2hFdmVudFR5cGUg
dHlwZSkKK3sKKyAgICBpZiAodHlwZSA9PSBrRUZMVG91Y2hFdmVudFR5cGVUb3VjaFN0YXJ0KQor
ICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7CisgICAgaWYgKHR5cGUgPT0ga0VG
TFRvdWNoRXZlbnRUeXBlVG91Y2hNb3ZlKQorICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNo
TW92ZTsKKyAgICBpZiAodHlwZSA9PSBrRUZMVG91Y2hFdmVudFR5cGVUb3VjaEVuZCkKKyAgICAg
ICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaEVuZDsKKyAgICBpZiAodHlwZSA9PSBrRUZMVG91Y2hF
dmVudFR5cGVUb3VjaENhbmNlbCkKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaENhbmNl
bDsKKworICAgIHJldHVybiBXZWJFdmVudDo6Tm9UeXBlOworfQorCitpbmxpbmUgV2ViRXZlbnQ6
Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JXS0V2ZW50KHVuc2lnbmVkIG1vZGlmaWVycykKK3sKKyAg
ICB1bnNpZ25lZCByZXN1bHQgPSAwOworCisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9k
aWZpZXJzU2hpZnRLZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6U2hpZnRLZXk7Cisg
ICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleSkKKyAgICAgICAg
cmVzdWx0IHw9IFdlYkV2ZW50OjpDb250cm9sS2V5OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tF
dmVudE1vZGlmaWVyc0FsdEtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpBbHRLZXk7
CisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleSkKKyAgICAgICAg
cmVzdWx0IHw9IFdlYkV2ZW50OjpNZXRhS2V5OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
YkV2ZW50OjpNb2RpZmllcnM+KHJlc3VsdCk7Cit9CisKK2lubGluZSBXZWJUb3VjaEV2ZW50IHRv
V2ViVG91Y2hFdmVudChjb25zdCBFRkxUb3VjaEV2ZW50JiBldmVudCkKK3sKKyAgICBWZWN0b3I8
V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiB0b3VjaFBvaW50czsKKyAgICBXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoUG9pbnRTdGF0ZSBzdGF0ZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBldmVudC5udW1Ub3VjaFBvaW50cyAmJiBpIDwga0VGTE1heGltdW1Ub3VjaFBvaW50c1Bl
clRvdWNoRXZlbnQ7ICsraSkgeworICAgICAgICBjb25zdCBFRkxUb3VjaFBvaW50JiBwb2ludCA9
IGV2ZW50LnRvdWNoUG9pbnRzW2ldOworICAgICAgICBzd2l0Y2ggKHBvaW50LnN0YXRlKSB7Cisg
ICAgICAgIGNhc2Uga0VGTFRvdWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQ6CisgICAgICAgICAg
ICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIGtFRkxUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkOgor
ICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrRUZMVG91Y2hQb2ludFN0YXRlVG91Y2hQ
cmVzc2VkOgorICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
UHJlc3NlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtFRkxUb3VjaFBvaW50
U3RhdGVUb3VjaFN0YXRpb25hcnk6CisgICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2Uga0VGTFRvdWNoUG9pbnRTdGF0ZVRvdWNoQ2FuY2VsbGVkOgorICAgICAgICAgICAgc3RhdGUg
PSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2VsbGVkOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgdG91Y2hQb2ludHMu
YXBwZW5kKFdlYlBsYXRmb3JtVG91Y2hQb2ludChwb2ludC5pZCwgc3RhdGUsIHRvSW50UG9pbnQo
cG9pbnQuc2NyZWVuUG9zaXRpb24pLCB0b0ludFBvaW50KHBvaW50LnBvc2l0aW9uKSwgdG9JbnRT
aXplKHBvaW50LnJhZGl1cyksIHBvaW50LnJvdGF0aW9uQW5nbGUsIHBvaW50LmZvcmNlKSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQodHlwZUZvclRvdWNoRXZlbnQoZXZlbnQu
dHlwZSksIHRvdWNoUG9pbnRzLCBtb2RpZmllcnNGb3JXS0V2ZW50KGV2ZW50Lm1vZGlmaWVycyks
IGV2ZW50LnRpbWVzdGFtcCk7Cit9CisjZW5kaWYKKwogfQogCiAjZW5kaWYgLy8gV0tBUElDYXN0
RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcApp
bmRleCA2N2M5M2M0OGU0MTM0MDFmNzg0NDNkNzgyY2FjYjdhMDZiNWFhYzhhLi42MDBiMTExNjYy
NzM1N2JlM2Q2YTRlMWI4ZTBiNWM1YjZmZTc4OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCkBAIC04MiwzICs4Miw5IEBAIFdLSW1hZ2VSZWYg
V0tWaWV3Q3JlYXRlU25hcHNob3QoV0tWaWV3UmVmIHZpZXdSZWYpCiAgICAgRXdrVmlldyogZXdr
VmlldyA9IHRvRXdrVmlldyh0b0ltcGwodmlld1JlZiktPmV2YXNPYmplY3QoKSk7CiAgICAgcmV0
dXJuIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKGV3a1ZpZXctPnRha2VTbmFwc2hvdCgp
LmdldCgpLCAwIC8qIG9wdGlvbnMgKi8pOwogfQorCit2b2lkIFdLVmlld1NlbmRUb3VjaEV2ZW50
KFdLVmlld1JlZiB2aWV3UmVmLCBjb25zdCBFRkxUb3VjaEV2ZW50KiB0b3VjaEV2ZW50KQorewor
ICAgIEFTU0VSVCh0b3VjaEV2ZW50KTsKKyAgICB0b0ltcGwodmlld1JlZiktPnNlbmRUb3VjaEV2
ZW50KCp0b3VjaEV2ZW50KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9lZmwvV0tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLVmlldy5oCmluZGV4IGQ1YjQzMmQ4ZWExMzE1NDI4N2ZhOGQ0YTg3YzQ4YjQwYjhkMjJmMWEu
LmMwNzc2Mjg1NzVhYjc4MjZjYjE2ODQxMzI0NDYxOTA1NDZmY2IyNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaApAQCAtMjAsNiArMjAsNyBAQAogI2lm
bmRlZiBXS1ZpZXdfaAogI2RlZmluZSBXS1ZpZXdfaAogCisjaW5jbHVkZSA8V2ViS2l0Mi9FRkxF
dmVudC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAKICNpZiBVU0UoRU8pCkBAIC01
Miw2ICs1Myw4IEBAIFdLX0VYUE9SVCBFdmFzX09iamVjdCogV0tWaWV3R2V0RXZhc09iamVjdChX
S1ZpZXdSZWYpOwogCiBXS19FWFBPUlQgV0tJbWFnZVJlZiBXS1ZpZXdDcmVhdGVTbmFwc2hvdChX
S1ZpZXdSZWYpOwogCitXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZW5kVG91Y2hFdmVudChXS1ZpZXdS
ZWYsIGNvbnN0IEVGTFRvdWNoRXZlbnQqKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRl
eCBjNTNkODRkY2MzNGIyODdkOWM4ODVlYTY3YjFjMWU3YzAzYjMzOTUwLi4xNWRlZTU3NDQzN2Jm
ODk5MzE1NzJlMTViOWZmNjc0YWI1NWJjYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC00OCw3ICs0OCw5IEBACiAjaW5jbHVkZSAiZXdr
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3NfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
PEVjb3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgogI2lu
Y2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVmlldy5o
PgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIApAQCAtMzYxLDEzICszNjMsNzkgQEAgRWluYV9Cb29sIGV3a192aWV3X21vdXNlX2V2
ZW50c19lbmFibGVkX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKICAgICByZXR1cm4g
aW1wbC0+bW91c2VFdmVudHNFbmFibGVkKCk7CiB9CiAKK3N0YXRpYyBFRkxUb3VjaEV2ZW50KiBj
cmVhdGVFRkxUb3VjaEV2ZW50KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfVG91Y2hfRXZlbnRf
VHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciog
bW9kaWZpZXJzKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwb2ludHMs
IDApOworICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihld2tWaWV3LCBpbXBsLCBmYWxz
ZSk7CisKKyAgICBFRkxUb3VjaEV2ZW50KiB0b3VjaEV2ZW50ID0gbmV3IEVGTFRvdWNoRXZlbnQ7
CisgICAgdG91Y2hFdmVudC0+dHlwZSA9IHN0YXRpY19jYXN0PEVGTFRvdWNoRXZlbnRUeXBlPih0
eXBlKTsKKyAgICB0b3VjaEV2ZW50LT50aW1lc3RhbXAgPSBlY29yZV90aW1lX2dldCgpOworICAg
IHRvdWNoRXZlbnQtPm51bVRvdWNoUG9pbnRzID0gZWluYV9saXN0X2NvdW50KHBvaW50cyk7Cisg
ICAgaWYgKHRvdWNoRXZlbnQtPm51bVRvdWNoUG9pbnRzID4ga0VGTE1heGltdW1Ub3VjaFBvaW50
c1BlclRvdWNoRXZlbnQpCisgICAgICAgIHRvdWNoRXZlbnQtPm51bVRvdWNoUG9pbnRzID0gZWlu
YV9saXN0X2NvdW50KHBvaW50cyk7CisKKyAgICB0b3VjaEV2ZW50LT5tb2RpZmllcnMgPSAwOwor
ICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiU2hpZnQiKSkKKyAg
ICAgICAgdG91Y2hFdmVudC0+bW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXk7
CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJDb250cm9sIikp
CisgICAgICAgIHRvdWNoRXZlbnQtPm1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc0NvbnRy
b2xLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJBbHQi
KSkKKyAgICAgICAgdG91Y2hFdmVudC0+bW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQWx0
S2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiTWV0YSIp
KQorICAgICAgICB0b3VjaEV2ZW50LT5tb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNNZXRh
S2V5OworCisgICAgY29uc3QgRWluYV9MaXN0KiBsaXN0OworICAgIGRvdWJsZSB4OworICAgIGRv
dWJsZSB5OworICAgIHVuc2lnbmVkIGluZGV4OworICAgIGZvciAobGlzdCA9IHBvaW50cywgaW5k
ZXggPSAwOyBsaXN0ICYmIGluZGV4IDwgdG91Y2hFdmVudC0+bnVtVG91Y2hQb2ludHM7IGxpc3Qg
PSBlaW5hX2xpc3RfbmV4dChsaXN0KSwgKytpbmRleCkgeworICAgICAgICBFd2tfVG91Y2hfUG9p
bnQqIHBvaW50ID0gc3RhdGljX2Nhc3Q8RXdrX1RvdWNoX1BvaW50Kj4oZWluYV9saXN0X2RhdGFf
Z2V0KGxpc3QpKTsKKyAgICAgICAgRUZMVG91Y2hQb2ludCYgd2tUb3VjaFBvaW50ID0gdG91Y2hF
dmVudC0+dG91Y2hQb2ludHNbaW5kZXhdOworCisgICAgICAgIHdrVG91Y2hQb2ludC5pZCA9IHBv
aW50LT5pZDsKKyAgICAgICAgaW1wbC0+dHJhbnNmb3JtRnJvbVNjZW5lKCkubWFwKHBvaW50LT54
LCBwb2ludC0+eSwgeCwgeSk7CisgICAgICAgIHdrVG91Y2hQb2ludC5wb3NpdGlvbiA9IFdLUG9p
bnRNYWtlKHgsIHkpOworICAgICAgICBpbXBsLT50cmFuc2Zvcm1Ub1NjcmVlbigpLm1hcChwb2lu
dC0+eCwgcG9pbnQtPnksIHgsIHkpOworICAgICAgICB3a1RvdWNoUG9pbnQuc2NyZWVuUG9zaXRp
b24gPSBXS1BvaW50TWFrZSh4LCB5KTsKKyAgICAgICAgd2tUb3VjaFBvaW50LnJhZGl1cyA9IFdL
U2l6ZU1ha2UoMCwgMCk7CisgICAgICAgIHdrVG91Y2hQb2ludC5yb3RhdGlvbkFuZ2xlID0gMDsK
KyAgICAgICAgd2tUb3VjaFBvaW50LmZvcmNlID0gMDsKKworICAgICAgICBzd2l0Y2ggKHBvaW50
LT5zdGF0ZSkgeworICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfVVA6CisgICAgICAgICAg
ICB3a1RvdWNoUG9pbnQuc3RhdGUgPSBrRUZMVG91Y2hQb2ludFN0YXRlVG91Y2hSZWxlYXNlZDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfTU9WRToK
KyAgICAgICAgICAgIHdrVG91Y2hQb2ludC5zdGF0ZSA9IGtFRkxUb3VjaFBvaW50U3RhdGVUb3Vj
aE1vdmVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lO
VF9ET1dOOgorICAgICAgICAgICAgd2tUb3VjaFBvaW50LnN0YXRlID0ga0VGTFRvdWNoUG9pbnRT
dGF0ZVRvdWNoUHJlc3NlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVWQVNf
VE9VQ0hfUE9JTlRfU1RJTEw6CisgICAgICAgICAgICB3a1RvdWNoUG9pbnQuc3RhdGUgPSBrRUZM
VG91Y2hQb2ludFN0YXRlVG91Y2hTdGF0aW9uYXJ5OworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9DQU5DRUw6CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICB3a1RvdWNoUG9pbnQuc3RhdGUgPSBrRUZMVG91Y2hQb2ludFN0YXRlVG91Y2hDYW5j
ZWxsZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biB0b3VjaEV2ZW50OworfQorCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudChF
dmFzX09iamVjdCogZXdrVmlldywgRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWlu
YV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycykKIHsKICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChw
b2ludHMsIGZhbHNlKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
aW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFnZSgpLT5oYW5kbGVUb3VjaEV2ZW50KE5hdGl2
ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMsIGltcGwtPnRyYW5zZm9ybUZy
b21TY2VuZSgpLCBpbXBsLT50cmFuc2Zvcm1Ub1NjcmVlbigpLCBlY29yZV90aW1lX2dldCgpKSk7
CisgICAgRUZMVG91Y2hFdmVudCogdG91Y2hFdmVudCA9IGNyZWF0ZUVGTFRvdWNoRXZlbnQoZXdr
VmlldywgdHlwZSwgcG9pbnRzLCBtb2RpZmllcnMpOworICAgIGlmICghdG91Y2hFdmVudCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV0tWaWV3U2VuZFRvdWNoRXZlbnQoaW1wbC0+d2tW
aWV3KCksIHRvdWNoRXZlbnQpOworICAgIGRlbGV0ZSB0b3VjaEV2ZW50OwogCiAgICAgcmV0dXJu
IHRydWU7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKaW5k
ZXggYzFiMWZmNmYxZmI1MDhhNTNhNDU0YzU1N2U3NjIyYmVkNjQ1ZjI5OS4uZTgzNzBlNjVlZTFh
OTMyMGE2Y2QwMWMzYTJiNzJhNDQwMGI1NjBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlZpZXcuY3BwCkBAIC03NCw0ICs3NCw5IEBAIHZvaWQgV2ViVmlldzo6cmVzdW1lQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogICAgIG1fd2ViUGFnZVByb3h5LT5yZXN1bWVB
Y3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogfQogCit2b2lkIFdlYlZpZXc6OnNlbmRU
b3VjaEV2ZW50KGNvbnN0IEVGTFRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCit7CisgICAgbV93ZWJQ
YWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudCh0b1dlYlRvdWNo
RXZlbnQodG91Y2hFdmVudCkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCmluZGV4IGUxZTc2NmRmZDFmMDA2YTYzOTM4NDY3
ZDMyNzUyMDAyYzgxN2E4NTYuLmM0NTgwY2M2ZmE3OWJjNTY2ZmNhOGExOTQwZDAzODk1ZTBmMjYw
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCkBAIC00OSw2ICs0OSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRoZW1lUGF0aChXS1N0cmluZ1JlZik7CiAgICAgdm9p
ZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CisgICAgdm9pZCBzZW5kVG91Y2hFdmVu
dChjb25zdCBFRkxUb3VjaEV2ZW50Jik7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHdoZW4gcG9z
c2libGUuCiAgICAgRXZhc19PYmplY3QqIGV2YXNPYmplY3QoKSB7IHJldHVybiBtX2V2YXNPYmpl
Y3Q7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBmNWVjZmIxNjYxMzUwYjYwZjhjZjJiYmU2YTNkMTAxZjcwNTM2YTRjLi5iOGRiYzc3YmY2MGNm
NTM2NjE5MTc2YTBlMzJiNDdiZGZlNjQ3YjJlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDItMDYgIEV1bm1p
IExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gQWRk
IFdLMiBDIEFQSSB0byBoYW5kbGUgdG91Y2ggZXZlbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4OTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkICItcmVhZGFiaWxpdHkvZW51bV9jYXNpbmci
IGZvciBXZWJLaXQyIEMgQVBJcyBiZWNhdXNlIHdlIHVzZSB3b3JkCisgICAgICAgIHdoaWNoIHN0
YXJ0cyB3aXRoIG5vbi1jYXBpdGFsIGxldHRlciAnaycgZm9yIHR5cGVzIG9mIGVudW1zLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorCiAyMDEzLTAyLTA2
ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLiBVcGRhdGUgbXkgZW1haWwgYWRkcmVzcyBpbiBjb21taXR0ZXJzLnB5Lgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IDk3NDEzZGJkNTFiM2Vj
NWNhZGM4YTEwYmNmY2Q5ZGQ5MmNmOTdiNTEuLmNmYWZmY2E0YTRkNTM5YWI3ZjhhMzRhNDIyOTNh
M2I2Yzc3NjNmNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAg
LTIyMiwxMCArMjIyLDEzIEBAIF9QQVRIX1JVTEVTX1NQRUNJRklFUiA9IFsKICAgICAoWyMgVGhl
IFdlYktpdDIgQyBBUEkgaGFzIG5hbWVzIHdpdGggdW5kZXJzY29yZXMgYW5kIHdoaXRlc3BhY2Ut
YWxpZ25lZAogICAgICAgIyBzdHJ1Y3QgbWVtYmVycy4gQWxzbywgd2UgYWxsb3cgdW5uZWNlc3Nh
cnkgcGFyYW1ldGVyIG5hbWVzIGluCiAgICAgICAjIFdlYktpdDIgQVBJcyBiZWNhdXNlIHdlJ3Jl
IG1hdGNoaW5nIENGJ3MgaGVhZGVyIHN0eWxlLgorICAgICAgIyBBZGRpdGlvbmFsbHksIHdlIHVz
ZSB3b3JkIHdoaWNoIHN0YXJ0cyB3aXRoIG5vbi1jYXBpdGFsIGxldHRlciAnaycKKyAgICAgICMg
Zm9yIHR5cGVzIG9mIGVudW1zLgogICAgICAgIlNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy8iLAogICAgICAgIlNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy8iLAogICAgICAgIlNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvIl0sCi0gICAgIFsiLXJl
YWRhYmlsaXR5L25hbWluZyIsCisgICAgIFsiLXJlYWRhYmlsaXR5L2VudW1fY2FzaW5nIiwKKyAg
ICAgICItcmVhZGFiaWxpdHkvbmFtaW5nIiwKICAgICAgICItcmVhZGFiaWxpdHkvcGFyYW1ldGVy
X25hbWUiLAogICAgICAgIi13aGl0ZXNwYWNlL2RlY2xhcmF0aW9uIl0pLAogICAgIChbIyBUaGVz
ZSBmaWxlcyBkZWZpbmUgR09iamVjdHMsIHdoaWNoIGltcGxpZXMgc29tZSBkZWZpbml0aW9ucyBv
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187241</attachid>
            <date>2013-02-07 22:53:58 -0800</date>
            <delta_ts>2013-02-17 21:39:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130208155027.patch</filename>
            <type>text/plain</type>
            <size>27761</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjk5YTI3NzVlZDU3NDU4
OTU1ODFjNjBmMzMzOThjYzA3M2NkMDBmMy4uMTU3NDdiYWE0MzU1MjNlOTkzNjI1ZjliY2EzMjEz
ZDA1OGE2MGFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAyLTA3ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvdWNoIGV2ZW50cyBmb3Igb3VyIHRhcmdldCBw
bGF0Zm9ybXMgZGlmZmVyIChYSW5wdXQyLCBXYXlsYW5kLCBUaXplbikgc28KKyAgICAgICAgZm9y
IHRoZSBFRkwgcG9ydCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZmVlZCBldmVudHMgbWFudWFsbHku
CisKKyAgICAgICAgVG8ga2VlcCBvdXIgY3VycmVudCBBUEkgZm9yIGRlc2t0b3AgRUZML0VubGln
aHRlbm1lbnQgd29ya2luZywgd2UgY29udmVydAorICAgICAgICBvdXIgY3VycmVudGx5IGxpbWl0
ZWQgRUZMIGV2ZW50cyB0byB0aGUgbmV3IEVGTCBzcGVjaWZpYyBDIFdLVG91Y2hFdmVudCB0eXBl
LgorCisgICAgICAgIFRoZSBXS1ZpZXdTZW5kVG91Y2hFdmVudCBjYW4gYmUgdXNlZCBmb3IgYW55
IHVzZS1jYXNlIChwbGF0Zm9ybS9wcm9kdWN0KQorICAgICAgICBub3QgaW52b2x2aW5nIHRoZSBF
RkwgZXZlbnRzLgorCisgICAgICAgIEF0IHRoZSBzYW1lIHRpbWUgd2UgbWFrZSBzdXJlIHRvIGF2
b2lkIHVzaW5nIFdLMiBpbnRlcm5hbHMgaW4gb3VyIEVGTCBBUEkKKyAgICAgICAgaW1wbGVtZW50
YXRpb24uCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvZWZsL1dLQmFzZUVmbC5oOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJUb3VjaEV2
ZW50Lmg6CisgICAgICAgIChOYXRpdmVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQv
ZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVX
ZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZs
L1dlYkV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rv
cnkuaDoKKyAgICAgICAgKFdlYkV2ZW50RmFjdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS0FQSUNhc3RFZmwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcDogQWRkZWQuCisgICAgICAgICh0eXBlRm9y
VG91Y2hFdmVudCk6CisgICAgICAgIChtb2RpZmllcnNGb3JXS0V2ZW50KToKKyAgICAgICAgKFdL
VG91Y2hFdmVudENyZWF0ZSk6CisgICAgICAgIChXS1RvdWNoRXZlbnRSZWxlYXNlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3U2VuZFRvdWNo
RXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RvdWNoLmNwcDogQWRkZWQuCisgICAgICAgIChjcmVh
dGVXS1RvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3VjaF9w
cml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlldzo6c2VuZFRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuaDoKKyAgICAgICAgKFdlYlZpZXcpOgorCiAyMDEzLTAy
LTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQyMjEyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQppbmRleCBmNmNlMTc2ZmQzYTQzZmVkZDVkMzRhNzZlOWQ2NWJhODEwYjcxMzNlLi44ODdiMmEw
YjU0ZmU2ODcwYThlMjFlY2I5ODRhODlmYzlkNWUwZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtMzcsNiArMzcsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9jYWlyby9XS0ljb25EYXRhYmFzZUNhaXJvLmNwcAogCisgICAgVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tWaWV3LmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmlu
Zy5jcHAKQEAgLTczLDYgKzc0LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19zdG9yYWdlX21hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RleHRf
Y2hlY2tlci5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdG91Y2guY3BwCiAgICAgVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a191cmxfcmVzcG9uc2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hl
bWVfcmVxdWVzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9l
ZmwvV0tCYXNlRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVm
bC5oCmluZGV4IDYxODRjODE5MTFhNzBjNDcxNjBiNWNmY2FkYjllNzA2MjY3YzAxOGEuLmY0ZmM2
YWRlMDBkYTk1N2QwODkxZTFlMDZjMjZhYTIwNTRiNTI1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaApAQCAtMjUsNSArMjUsNiBAQAogI2VuZGlmCiAK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlldyogV0tWaWV3UmVmOwordHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tUb3VjaEV2ZW50UmVmKiBXS1RvdWNoRXZlbnRSZWY7CiAKICNl
bmRpZiAvKiBXS0Jhc2VFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L05hdGl2ZVdlYlRvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJU
b3VjaEV2ZW50LmgKaW5kZXggYzYzZDFjZjA3MDViY2ExZWE1NGQzODRmM2YwZjViYzgzMTFhZDYy
YS4uY2FjNzQyMjRlOTdjMmE5MWFkMjEyYjQ4NjI5YjdhNmMwZGU5YTZlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCkBAIC0zMCwxMCArMzAsNiBAQAog
CiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+Ci0jZWxpZiBQTEFURk9S
TShFRkwpCi0jaW5jbHVkZSAiZXdrX3RvdWNoLmgiCi0jaW5jbHVkZSA8RXZhcy5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC00Myw3ICszOSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShRVCkKICAgICBleHBs
aWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50KiwgY29uc3QgUVRyYW5z
Zm9ybSYgZnJvbUl0ZW1UcmFuc2Zvcm0pOwogI2VsaWYgUExBVEZPUk0oRUZMKQotICAgIE5hdGl2
ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUsIGNvbnN0IEVpbmFfTGlzdCosIGNv
bnN0IEV2YXNfTW9kaWZpZXIqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvV2Vi
Q29udGVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbiwg
ZG91YmxlIHRpbWVzdGFtcCk7CisgICAgZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChjb25z
dCBXZWJUb3VjaEV2ZW50Jik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKaW5k
ZXggNzI3OTY4MzVhNjY0N2IwMjcyZGVmMjNlZTZjMjBiMTgxMzlhOTE2NS4uODAxODkwMGU0MjI0
Y2RkMWNkZTFkYWVkMzIyMjcxMGRjODdiMGE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCkBAIC0yOCwxMiArMjgsMTAg
QEAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogI2luY2x1ZGUgIk5hdGl2ZVdlYlRvdWNoRXZl
bnQuaCIKIAotI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotTmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hf
RXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2Rp
ZmllciogbW9kaWZpZXJzLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29u
dGVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbiwgZG91
YmxlIHRpbWVzdGFtcCkKLSAgICA6IFdlYlRvdWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCB0b1dlYkNvbnRlbnQsIHRv
RGV2aWNlU2NyZWVuLCB0aW1lc3RhbXApKQorTmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2Vi
VG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiB3ZWJUb3VjaEV2ZW50KQorICAgIDogV2Vi
VG91Y2hFdmVudCh3ZWJUb3VjaEV2ZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKaW5kZXggYjk5OTI1MDg0MzhkNzBmMTRmMTEzOWE5
NDEzNDQwMDBhYjk4Y2NlNC4uYjI1YzZiZGI0MGFkN2NlODVhYTA4ZmRjZjc3YmYxN2IyZjZjNjY4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcApA
QCAtMjA0LDU3ICsyMDQsNCBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcAogICAgICAgICBjb252
ZXJ0TWlsbGlzZWNvbmRUb1NlY29uZChldmVudC0+dGltZXN0YW1wKSk7CiB9CiAKLSNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQotc3RhdGljIGlubGluZSBXZWJFdmVudDo6VHlwZSB0eXBlRm9yVG91
Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlKQotewotICAgIGlmICh0eXBlID09IEVX
S19UT1VDSF9TVEFSVCkKLSAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaFN0YXJ0OwotICAg
IGlmICh0eXBlID09IEVXS19UT1VDSF9NT1ZFKQotICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRv
dWNoTW92ZTsKLSAgICBpZiAodHlwZSA9PSBFV0tfVE9VQ0hfRU5EKQotICAgICAgICByZXR1cm4g
V2ViRXZlbnQ6OlRvdWNoRW5kOwotICAgIGlmICh0eXBlID09IEVXS19UT1VDSF9DQU5DRUwpCi0g
ICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hDYW5jZWw7Ci0KLSAgICByZXR1cm4gV2ViRXZl
bnQ6Ok5vVHlwZTsKLX0KLQotV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdl
YlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBw
b2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4s
IGRvdWJsZSB0aW1lc3RhbXApCi17Ci0gICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4g
dG91Y2hQb2ludHM7Ci0gICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBvaW50U3RhdGUg
c3RhdGU7Ci0gICAgY29uc3QgRWluYV9MaXN0KiBsaXN0OwotICAgIHZvaWQqIGl0ZW07Ci0gICAg
RUlOQV9MSVNUX0ZPUkVBQ0gocG9pbnRzLCBsaXN0LCBpdGVtKSB7Ci0gICAgICAgIEV3a19Ub3Vj
aF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihpdGVtKTsKLQot
ICAgICAgICBzd2l0Y2ggKHBvaW50LT5zdGF0ZSkgewotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hf
UE9JTlRfVVA6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91
Y2hSZWxlYXNlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hf
UE9JTlRfTU9WRToKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaE1vdmVkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9Q
T0lOVF9ET1dOOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoUHJlc3NlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hf
UE9JTlRfU1RJTEw6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hTdGF0aW9uYXJ5OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19U
T1VDSF9QT0lOVF9DQU5DRUw6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hDYW5jZWxsZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIH0KLQotICAgICAgICBJbnRQb2ludCBwb3MocG9pbnQtPngsIHBvaW50LT55
KTsKLSAgICAgICAgdG91Y2hQb2ludHMuYXBwZW5kKFdlYlBsYXRmb3JtVG91Y2hQb2ludChwb2lu
dC0+aWQsIHN0YXRlLCB0b0RldmljZVNjcmVlbi5tYXBQb2ludChwb3MpLCB0b1dlYkNvbnRlbnQu
bWFwUG9pbnQocG9zKSkpOwotICAgIH0KLQotICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGVG
b3JUb3VjaEV2ZW50KHR5cGUpLCB0b3VjaFBvaW50cywgbW9kaWZpZXJzRm9yRXZlbnQobW9kaWZp
ZXJzKSwgdGltZXN0YW1wKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCmluZGV4IGU0NDRkYjI5
ZDUyMzg0MDIyMDQxZTVkYjhkMjQ0MGMzMGQ4MjNlODAuLjI4NzIwNzg0NGRhZGRmMTAyZDhhNTg5
NDBhYzU1NmE2YjU0ZmE1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwv
V2ViRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVu
dEZhY3RvcnkuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWJFdmVudEZhY3RvcnlfaAog
CiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKLSNpbmNsdWRlICJld2tfdG91Y2guaCIKICNpbmNsdWRl
IDxFdmFzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KIApAQCAtNDEs
OSArNDAsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYldoZWVsRXZlbnQgY3JlYXRlV2ViV2hl
ZWxFdmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiwgY29uc3QgV2ViQ29yZTo6QWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJik7CiAgICAgc3Rh
dGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2
ZW50X0tleV9Eb3duKik7CiAgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5
Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOwotI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCi0gICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChFd2tf
VG91Y2hfRXZlbnRfVHlwZSwgY29uc3QgRWluYV9MaXN0KiwgY29uc3QgRXZhc19Nb2RpZmllcios
IGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSYsIGRvdWJsZSB0aW1lc3RhbXApOwotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tBUElDYXN0RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJ
Q2FzdEVmbC5oCmluZGV4IDE4ODlmYzQzNjc1NWY5MWE4MmYzYTMwM2ZhZTViYTUzZDdmNjJkZTcu
LmI0Mjk0MjFmZDQ4NzhmM2M1YWFmZDllODYzZjBiM2FkZjQ5ODNmMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaApAQCAtMjksNiAr
MjksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlZpZXc7CiAKIFdLX0FERF9BUElf
TUFQUElORyhXS1ZpZXdSZWYsIFdlYlZpZXcpCitXS19BRERfQVBJX01BUFBJTkcoV0tUb3VjaEV2
ZW50UmVmLCBXZWJUb3VjaEV2ZW50KQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRkOTUzMThiMGY2YzJm
Y2U1MjJjZTE1YTYwYjAzNGM5MTFmZDFkMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuY3BwCkBAIC0wLDAgKzEsMTA5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
S0V2ZW50RWZsLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJFdmVu
dC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
Kworc3RhdGljIGlubGluZSBXZWJFdmVudDo6VHlwZSB0eXBlRm9yVG91Y2hFdmVudChXS1RvdWNo
RXZlbnRUeXBlIHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0ga1dLVG91Y2hFdmVudFR5cGVUb3Vj
aFN0YXJ0KQorICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7CisgICAgaWYgKHR5
cGUgPT0ga1dLVG91Y2hFdmVudFR5cGVUb3VjaE1vdmUpCisgICAgICAgIHJldHVybiBXZWJFdmVu
dDo6VG91Y2hNb3ZlOworICAgIGlmICh0eXBlID09IGtXS1RvdWNoRXZlbnRUeXBlVG91Y2hFbmQp
CisgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hFbmQ7CisgICAgaWYgKHR5cGUgPT0ga1dL
VG91Y2hFdmVudFR5cGVUb3VjaENhbmNlbCkKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3Vj
aENhbmNlbDsKKworICAgIHJldHVybiBXZWJFdmVudDo6Tm9UeXBlOworfQorCitzdGF0aWMgaW5s
aW5lIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzRm9yV0tFdmVudCh1bnNpZ25lZCBtb2Rp
ZmllcnMpCit7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKworICAgIGlmIChtb2RpZmllcnMg
JiBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5KQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6
OlNoaWZ0S2V5OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xL
ZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6Q29udHJvbEtleTsKKyAgICBpZiAobW9k
aWZpZXJzICYga1dLRXZlbnRNb2RpZmllcnNBbHRLZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJF
dmVudDo6QWx0S2V5OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc01ldGFL
ZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6TWV0YUtleTsKKworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZpZXJzPihyZXN1bHQpOworfQorCitXS1RvdWNoRXZl
bnRSZWYgV0tUb3VjaEV2ZW50Q3JlYXRlKFdLVG91Y2hFdmVudCBldmVudCkKK3sKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IHRvdWNo
UG9pbnRzOworICAgIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQb2ludFN0YXRlIHN0YXRl
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV2ZW50Lm51bVRvdWNoUG9pbnRzICYm
IGkgPCBrV0tNYXhpbXVtVG91Y2hQb2ludHNQZXJUb3VjaEV2ZW50OyArK2kpIHsKKyAgICAgICAg
Y29uc3QgV0tUb3VjaFBvaW50JiBwb2ludCA9IGV2ZW50LnRvdWNoUG9pbnRzW2ldOworICAgICAg
ICBzd2l0Y2ggKHBvaW50LnN0YXRlKSB7CisgICAgICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRl
VG91Y2hSZWxlYXNlZDoKKyAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaFJlbGVhc2VkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga1dLVG91
Y2hQb2ludFN0YXRlVG91Y2hNb3ZlZDoKKyAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1U
b3VjaFBvaW50OjpUb3VjaE1vdmVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
a1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQcmVzc2VkOgorICAgICAgICAgICAgc3RhdGUgPSBXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoU3RhdGlvbmFyeToKKyAgICAgICAgICAg
IHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaENhbmNlbGxl
ZDoKKyAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaENhbmNl
bGxlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIHRvdWNoUG9pbnRzLmFwcGVuZChXZWJQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQu
aWQsIHN0YXRlLCB0b0ludFBvaW50KHBvaW50LnNjcmVlblBvc2l0aW9uKSwgdG9JbnRQb2ludChw
b2ludC5wb3NpdGlvbiksIHRvSW50U2l6ZShwb2ludC5yYWRpdXMpLCBwb2ludC5yb3RhdGlvbkFu
Z2xlLCBwb2ludC5mb3JjZSkpOworICAgIH0KKworICAgIFdlYlRvdWNoRXZlbnQqIHdlYlRvdWNo
RXZlbnQgPSBuZXcgV2ViVG91Y2hFdmVudCh0eXBlRm9yVG91Y2hFdmVudChldmVudC50eXBlKSwg
dG91Y2hQb2ludHMsIG1vZGlmaWVyc0ZvcldLRXZlbnQoZXZlbnQubW9kaWZpZXJzKSwgZXZlbnQu
dGltZXN0YW1wKTsKKworICAgIHJldHVybiB0b0FQSSh3ZWJUb3VjaEV2ZW50KTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit2b2lk
IFdLVG91Y2hFdmVudFJlbGVhc2UoV0tUb3VjaEV2ZW50UmVmIHRvdWNoRXZlbnRSZWYpCit7Cisg
ICAgZGVsZXRlIHRvSW1wbCh0b3VjaEV2ZW50UmVmKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgzODhlN2I2ZTU4
MmU3ODcxMzE4NGFmMjkyMTJjZTIwMjk5ZDBlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5oCkBAIC0wLDAgKzEsODMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDEzIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0V2ZW50
RWZsX2gKKyNkZWZpbmUgV0tFdmVudEVmbF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLRXZlbnQu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0cnkuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVz
CitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitlbnVtIFdLVG91Y2hFdmVudFR5cGUgeworICAgIGtX
S1RvdWNoRXZlbnRUeXBlVG91Y2hTdGFydCwKKyAgICBrV0tUb3VjaEV2ZW50VHlwZVRvdWNoTW92
ZSwKKyAgICBrV0tUb3VjaEV2ZW50VHlwZVRvdWNoRW5kLAorICAgIGtXS1RvdWNoRXZlbnRUeXBl
VG91Y2hDYW5jZWwKK307Cit0eXBlZGVmIGVudW0gV0tUb3VjaEV2ZW50VHlwZSBXS1RvdWNoRXZl
bnRUeXBlOworCitlbnVtIFdLVG91Y2hQb2ludFN0YXRlIHsKKyAgICBrV0tUb3VjaFBvaW50U3Rh
dGVUb3VjaFJlbGVhc2VkLAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3NlZCwKKyAg
ICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkLAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRv
dWNoU3RhdGlvbmFyeSwKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaENhbmNlbGxlZAorfTsK
K3R5cGVkZWYgZW51bSBXS1RvdWNoUG9pbnRTdGF0ZSBXS1RvdWNoUG9pbnRTdGF0ZTsKKworc3Ry
dWN0IFdLVG91Y2hQb2ludCB7CisgICAgdW5zaWduZWQgaWQ7CisgICAgV0tUb3VjaFBvaW50U3Rh
dGUgc3RhdGU7CisgICAgV0tQb2ludCBwb3NpdGlvbjsKKyAgICBXS1BvaW50IHNjcmVlblBvc2l0
aW9uOworICAgIFdLU2l6ZSByYWRpdXM7CisgICAgZmxvYXQgcm90YXRpb25BbmdsZTsKKyAgICBm
bG9hdCBmb3JjZTsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1RvdWNoUG9pbnQgV0tUb3VjaFBvaW50
OworCitlbnVtIHsga1dLTWF4aW11bVRvdWNoUG9pbnRzUGVyVG91Y2hFdmVudCA9IDUgfTsKKwor
c3RydWN0IFdLVG91Y2hFdmVudCB7CisgICAgV0tUb3VjaEV2ZW50VHlwZSB0eXBlOworICAgIFdL
RXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzOworICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgdW5z
aWduZWQgbnVtVG91Y2hQb2ludHM7CisgICAgV0tUb3VjaFBvaW50IHRvdWNoUG9pbnRzW2tXS01h
eGltdW1Ub3VjaFBvaW50c1BlclRvdWNoRXZlbnRdOworfTsKK3R5cGVkZWYgc3RydWN0IFdLVG91
Y2hFdmVudCBXS1RvdWNoRXZlbnQ7CisKK1dLX0VYUE9SVCBXS1RvdWNoRXZlbnRSZWYgV0tUb3Vj
aEV2ZW50Q3JlYXRlKFdLVG91Y2hFdmVudCBldmVudCk7CitXS19FWFBPUlQgdm9pZCBXS1RvdWNo
RXZlbnRSZWxlYXNlKFdLVG91Y2hFdmVudFJlZiB0b3VjaEV2ZW50UmVmKTsKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIFdLRXZlbnRFZmxfaCAqLwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCmluZGV4IDExY2QyOGE0
OGVmYzZmYTUwZTg1YjM3ODI2ZTdkODgwZjIyZWU5MWEuLmY0MjhhZjdjZmE2ZWUxN2E4OGExNjkz
ZjE2YTJiNzA2NmE0NjNmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
ZWZsL1dLVmlldy5jcHAKQEAgLTEwMiwzICsxMDIsOCBAQCBXS0ltYWdlUmVmIFdLVmlld0NyZWF0
ZVNuYXBzaG90KFdLVmlld1JlZiB2aWV3UmVmKQogICAgIEV3a1ZpZXcqIGV3a1ZpZXcgPSB0b0V3
a1ZpZXcodG9JbXBsKHZpZXdSZWYpLT5ldmFzT2JqZWN0KCkpOwogICAgIHJldHVybiBXS0ltYWdl
Q3JlYXRlRnJvbUNhaXJvU3VyZmFjZShld2tWaWV3LT50YWtlU25hcHNob3QoKS5nZXQoKSwgMCAv
KiBvcHRpb25zICovKTsKIH0KKwordm9pZCBXS1ZpZXdTZW5kVG91Y2hFdmVudChXS1ZpZXdSZWYg
dmlld1JlZiwgV0tUb3VjaEV2ZW50UmVmIHRvdWNoRXZlbnRSZWYpCit7CisgICAgdG9JbXBsKHZp
ZXdSZWYpLT5zZW5kVG91Y2hFdmVudCh0b0ltcGwodG91Y2hFdmVudFJlZikpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKaW5kZXggMWZiZmI1ZmJkNDk5
MWUzYzBlMjEyYThjYjRhNThlZWZhYjE2ZjY1YS4uZTU5NTYwYzIwNTRlZTIyZDg2YTMzYmI4NmNi
YWJhNTJkMTI1ZmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5oCkBAIC01OCw2ICs1OCw4IEBAIFdLX0VYUE9SVCBFdmFzX09iamVjdCogV0tWaWV3R2V0
RXZhc09iamVjdChXS1ZpZXdSZWYpOwogCiBXS19FWFBPUlQgV0tJbWFnZVJlZiBXS1ZpZXdDcmVh
dGVTbmFwc2hvdChXS1ZpZXdSZWYpOwogCitXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZW5kVG91Y2hF
dmVudChXS1ZpZXdSZWYsIFdLVG91Y2hFdmVudFJlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdG91Y2guY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RvdWNo
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMDViYjk1ZTJkYTBhMzY5YTIzYmY3ZmU2YzE2MTEyZDRhMDA2YmZi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3RvdWNoLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNh
bXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfdG91Y2guaCIKKworI2lu
Y2x1ZGUgImV3a190b3VjaF9wcml2YXRlLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworV0tUb3VjaEV2ZW50KiBjcmVhdGVXS1RvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUg
dHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlm
aWVycywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHBvaW50cywgMCk7CisKKyAgICBXS1RvdWNoRXZlbnQqIHRvdWNoRXZlbnQgPSBuZXcg
V0tUb3VjaEV2ZW50OworICAgIHRvdWNoRXZlbnQtPnR5cGUgPSBzdGF0aWNfY2FzdDxXS1RvdWNo
RXZlbnRUeXBlPih0eXBlKTsKKyAgICB0b3VjaEV2ZW50LT50aW1lc3RhbXAgPSBlY29yZV90aW1l
X2dldCgpOworICAgIHRvdWNoRXZlbnQtPm51bVRvdWNoUG9pbnRzID0gZWluYV9saXN0X2NvdW50
KHBvaW50cyk7CisgICAgaWYgKHRvdWNoRXZlbnQtPm51bVRvdWNoUG9pbnRzID4ga1dLTWF4aW11
bVRvdWNoUG9pbnRzUGVyVG91Y2hFdmVudCkKKyAgICAgICAgdG91Y2hFdmVudC0+bnVtVG91Y2hQ
b2ludHMgPSBlaW5hX2xpc3RfY291bnQocG9pbnRzKTsKKworICAgIHRvdWNoRXZlbnQtPm1vZGlm
aWVycyA9IDA7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJT
aGlmdCIpKQorICAgICAgICB0b3VjaEV2ZW50LT5tb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmll
cnNTaGlmdEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywg
IkNvbnRyb2wiKSkKKyAgICAgICAgdG91Y2hFdmVudC0+bW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9k
aWZpZXJzQ29udHJvbEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlm
aWVycywgIkFsdCIpKQorICAgICAgICB0b3VjaEV2ZW50LT5tb2RpZmllcnMgfD0ga1dLRXZlbnRN
b2RpZmllcnNBbHRLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmll
cnMsICJNZXRhIikpCisgICAgICAgIHRvdWNoRXZlbnQtPm1vZGlmaWVycyB8PSBrV0tFdmVudE1v
ZGlmaWVyc01ldGFLZXk7CisKKyAgICBjb25zdCBFaW5hX0xpc3QqIGxpc3Q7CisgICAgZG91Ymxl
IHg7CisgICAgZG91YmxlIHk7CisgICAgdW5zaWduZWQgaW5kZXg7CisgICAgZm9yIChsaXN0ID0g
cG9pbnRzLCBpbmRleCA9IDA7IGxpc3QgJiYgaW5kZXggPCB0b3VjaEV2ZW50LT5udW1Ub3VjaFBv
aW50czsgbGlzdCA9IGVpbmFfbGlzdF9uZXh0KGxpc3QpLCArK2luZGV4KSB7CisgICAgICAgIEV3
a19Ub3VjaF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihlaW5h
X2xpc3RfZGF0YV9nZXQobGlzdCkpOworICAgICAgICBXS1RvdWNoUG9pbnQmIHdrVG91Y2hQb2lu
dCA9IHRvdWNoRXZlbnQtPnRvdWNoUG9pbnRzW2luZGV4XTsKKworICAgICAgICB3a1RvdWNoUG9p
bnQuaWQgPSBwb2ludC0+aWQ7CisgICAgICAgIHRvV2ViQ29udGVudC5tYXAocG9pbnQtPngsIHBv
aW50LT55LCB4LCB5KTsKKyAgICAgICAgd2tUb3VjaFBvaW50LnBvc2l0aW9uID0gV0tQb2ludE1h
a2UoeCwgeSk7CisgICAgICAgIHRvRGV2aWNlU2NyZWVuLm1hcChwb2ludC0+eCwgcG9pbnQtPnks
IHgsIHkpOworICAgICAgICB3a1RvdWNoUG9pbnQuc2NyZWVuUG9zaXRpb24gPSBXS1BvaW50TWFr
ZSh4LCB5KTsKKyAgICAgICAgd2tUb3VjaFBvaW50LnJhZGl1cyA9IFdLU2l6ZU1ha2UoMCwgMCk7
CisgICAgICAgIHdrVG91Y2hQb2ludC5yb3RhdGlvbkFuZ2xlID0gMDsKKyAgICAgICAgd2tUb3Vj
aFBvaW50LmZvcmNlID0gMDsKKworICAgICAgICBzd2l0Y2ggKHBvaW50LT5zdGF0ZSkgeworICAg
ICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfVVA6CisgICAgICAgICAgICB3a1RvdWNoUG9pbnQu
c3RhdGUgPSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFJlbGVhc2VkOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9NT1ZFOgorICAgICAgICAgICAgd2tU
b3VjaFBvaW50LnN0YXRlID0ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hNb3ZlZDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfRE9XTjoKKyAgICAgICAg
ICAgIHdrVG91Y2hQb2ludC5zdGF0ZSA9IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3NlZDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfU1RJTEw6
CisgICAgICAgICAgICB3a1RvdWNoUG9pbnQuc3RhdGUgPSBrV0tUb3VjaFBvaW50U3RhdGVUb3Vj
aFN0YXRpb25hcnk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFVkFTX1RPVUNI
X1BPSU5UX0NBTkNFTDoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHdrVG91Y2hQb2lu
dC5zdGF0ZSA9IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoQ2FuY2VsbGVkOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdG91Y2hFdmVudDsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3VjaF9wcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdG91Y2hfcHJpdmF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUxYmEwMTczMDgyNDk2ZDllYjllNTIyYTE1NWFmOTg3NmY1OTQyNzEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dG91Y2hfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBld2tfdG91Y2hfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a190b3Vj
aF9wcml2YXRlX2gKKworI2luY2x1ZGUgIldLRXZlbnRFZmwuaCIKKyNpbmNsdWRlICJld2tfdG91
Y2guaCIKKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8RXZhcy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07Cit9CisKK1dLVG91Y2hFdmVudCogY3Jl
YXRlV0tUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqIHBv
aW50cywgY29uc3QgRXZhc19Nb2RpZmllciosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYgdG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNl
U2NyZWVuKTsKKworI2VuZGlmIC8vIGV3a190b3VjaF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA4NjNiZTQ4ODljMzI3YjBh
YzhkOGZkNzdhOWE0YzM4YTZjOWYzOGRmLi44NGRiMjBmMmE5YzgyNGU4MzM0ZDZjMDhiOTg3YWE4
MjE0MGM0MTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRWluYVNo
YXJlZFN0cmluZy5oIgorI2luY2x1ZGUgIldLRXZlbnRFZmwuaCIKICNpbmNsdWRlICJXS0ZpbmRP
cHRpb25zLmgiCiAjaW5jbHVkZSAiV0tJbnNwZWN0b3IuaCIKICNpbmNsdWRlICJXS1JldGFpblB0
ci5oIgpAQCAtNTAsOCArNTEsMTEgQEAKICNpbmNsdWRlICJld2tfZmF2aWNvbl9kYXRhYmFzZV9w
cml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2V0dGlu
Z3NfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a190b3VjaF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8
RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5j
bHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tWaWV3Lmg+
CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCkBAIC0zNjIsMTAgKzM2NiwxMiBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZl
bnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogRWluYV9Cb29sIGV3
a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Ub3VjaF9F
dmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01vZGlm
aWVyKiBtb2RpZmllcnMpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocG9pbnRzLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1Q
TF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIGltcGwsIGZhbHNlKTsKIAotICAgIGltcGwtPnBhZ2Uo
KS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9k
aWZpZXJzLCBpbXBsLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgaW1wbC0+dHJhbnNmb3JtVG9TY3Jl
ZW4oKSwgZWNvcmVfdGltZV9nZXQoKSkpOworICAgIE93blB0cjxXS1RvdWNoRXZlbnQ+IHRvdWNo
RXZlbnQgPSBhZG9wdFB0cihjcmVhdGVXS1RvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmll
cnMsIGltcGwtPnRyYW5zZm9ybUZyb21TY2VuZSgpLCBpbXBsLT50cmFuc2Zvcm1Ub1NjcmVlbigp
KSk7CisgICAgV0tUb3VjaEV2ZW50UmVmIHRvdWNoRXZlbnRSZWYgPSBXS1RvdWNoRXZlbnRDcmVh
dGUoKnRvdWNoRXZlbnQuZ2V0KCkpOworICAgIFdLVmlld1NlbmRUb3VjaEV2ZW50KGltcGwtPndr
VmlldygpLCB0b3VjaEV2ZW50UmVmKTsKKyAgICBXS1RvdWNoRXZlbnRSZWxlYXNlKHRvdWNoRXZl
bnRSZWYpOwogCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlldy5jcHAKaW5kZXggNjQ5ZjBmYjVlNGNhZGZkZTk3NDM0NWNjYWVmZDE3NjEy
ZTBjYjljZi4uN2MwMDIxZGRkODdlZTE3ZGU5MmVmMDNlMWViOGEzOGZhOTBjYzlkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC05NCw0ICs5NCwxMCBAQCB2
b2lkIFdlYlZpZXc6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBt
X3dlYlBhZ2VQcm94eS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIH0K
IAordm9pZCBXZWJWaWV3OjpzZW5kVG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50KiB0b3Vj
aEV2ZW50KQoreworICAgIEFTU0VSVCh0b3VjaEV2ZW50KTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+
aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KCp0b3VjaEV2ZW50KSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcu
aAppbmRleCA3ZWI1MmFkNzE3ZmE2YmUwZDVlZjE1OWZiYjAzZTYxMjNiNjE4OTE4Li5mZWQ0NmUy
ZWFiZGI1NDNkMzgwYTY2MGI5MTE2YTQ4Mjk5OTIwYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXcuaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN1
c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogICAgIHZvaWQgcmVzdW1lQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKKyAgICB2b2lkIHNlbmRUb3VjaEV2ZW50KGNv
bnN0IFdlYlRvdWNoRXZlbnQqKTsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgd2hlbiBwb3NzaWJs
ZS4KICAgICBFdmFzX09iamVjdCogZXZhc09iamVjdCgpIHsgcmV0dXJuIG1fZXZhc09iamVjdDsg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188794</attachid>
            <date>2013-02-17 21:39:41 -0800</date>
            <delta_ts>2013-02-19 18:32:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130218143602.patch</filename>
            <type>text/plain</type>
            <size>28507</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjRkYTkwMjBhYzg1MmZj
NDZmYjIxNmRiYjRmMmE2NDJhNDZiN2NmZS4uOTljYTMyOTY3ZmI0NmY1NWJmZGExZTQ3YTQ0ODY5
MTJhZDY2ZTNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEzLTAyLTE3ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvdWNoIGV2ZW50cyBmb3Igb3VyIHRhcmdldCBw
bGF0Zm9ybXMgZGlmZmVyIChYSW5wdXQyLCBXYXlsYW5kLCBUaXplbikgc28KKyAgICAgICAgZm9y
IHRoZSBFRkwgcG9ydCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZmVlZCBldmVudHMgbWFudWFsbHku
CisKKyAgICAgICAgVG8ga2VlcCBvdXIgY3VycmVudCBBUEkgZm9yIGRlc2t0b3AgRUZML0VubGln
aHRlbm1lbnQgd29ya2luZywgd2UgY29udmVydAorICAgICAgICBvdXIgY3VycmVudGx5IGxpbWl0
ZWQgRUZMIGV2ZW50cyB0byB0aGUgbmV3IEVGTCBzcGVjaWZpYyBDIFdLVG91Y2hFdmVudCB0eXBl
LgorCisgICAgICAgIFRoZSBXS1ZpZXdTZW5kVG91Y2hFdmVudCBjYW4gYmUgdXNlZCBmb3IgYW55
IHVzZS1jYXNlIChwbGF0Zm9ybS9wcm9kdWN0KQorICAgICAgICBub3QgaW52b2x2aW5nIHRoZSBF
RkwgZXZlbnRzLgorCisgICAgICAgIEF0IHRoZSBzYW1lIHRpbWUgd2UgbWFrZSBzdXJlIHRvIGF2
b2lkIHVzaW5nIFdLMiBpbnRlcm5hbHMgaW4gb3VyIEVGTCBBUEkKKyAgICAgICAgaW1wbGVtZW50
YXRpb24uCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvZWZsL1dLQmFzZUVmbC5oOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJUb3VjaEV2
ZW50Lmg6CisgICAgICAgIChOYXRpdmVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQv
ZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVX
ZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZs
L1dlYkV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rv
cnkuaDoKKyAgICAgICAgKFdlYkV2ZW50RmFjdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS0FQSUNhc3RFZmwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcDogQWRkZWQuCisgICAgICAgICh0eXBlRm9y
VG91Y2hFdmVudCk6CisgICAgICAgIChtb2RpZmllcnNGb3JXS0V2ZW50KToKKyAgICAgICAgKFdL
VG91Y2hFdmVudENyZWF0ZSk6CisgICAgICAgIChXS1RvdWNoRXZlbnRSZWxlYXNlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3U2VuZFRvdWNo
RXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RvdWNoLmNwcDogQWRkZWQuCisgICAgICAgIChj
cmVhdGVXS1RvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3Vj
aF9wcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfZmVlZF90b3VjaF9l
dmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlldzo6c2VuZFRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuaDoKKyAgICAgICAgKFdlYlZpZXcpOgorCiAyMDEz
LTAyLTE3ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAaW50ZWwuY29t
PgogCiAgICAgICAgIFtXSzJdW0VGTF0gUmVtb3ZlIGZ1bGxzY3JlZW4gbWFuYWdlciBwcm94eSBh
cyBhIG1lc3NhZ2UgcmVjZWl2ZXIgb24gaW52YWxpZGF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IGEwMDgxYjdlZWEzNzhiZmI1OWRhYTllM2ZiZGU0NTE3ZGVlODExM2YuLjQxZDNm
ZjdhNGIzNGY4MDI0ZWE1MTUzNmNkMDUzZDE1NTAyM2VhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCkBAIC0zNyw2ICszNyw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL2NhaXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCiAKKyAgICBV
SVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3Ry
aW5nLmNwcApAQCAtNzMsNiArNzQsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGluZ3MuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3N0b3JhZ2VfbWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdGV4
dF9jaGVja2VyLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3VjaC5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3VybF9yZXNwb25zZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Nj
aGVtZV9yZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L2VmbC9XS0Jhc2VFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNl
RWZsLmgKaW5kZXggNjE4NGM4MTkxMWE3MGM0NzE2MGI1Y2ZjYWRiOWU3MDYyNjdjMDE4YS4uZjRm
YzZhZGUwMGRhOTU3ZDA4OTFlMWUwNmMyNmFhMjA1NGI1MjUyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oCkBAIC0yNSw1ICsyNSw2IEBACiAjZW5kaWYK
IAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWV3KiBXS1ZpZXdSZWY7Cit0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS1RvdWNoRXZlbnRSZWYqIFdLVG91Y2hFdmVudFJlZjsKIAog
I2VuZGlmIC8qIFdLQmFzZUVmbF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdl
YlRvdWNoRXZlbnQuaAppbmRleCBjNjNkMWNmMDcwNWJjYTFlYTU0ZDM4NGYzZjBmNWJjODMxMWFk
NjJhLi5jYWM3NDIyNGU5N2MyYTkxYWQyMTJiNDg2MjliN2E2YzBkZTlhNmVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTMwLDEwICszMCw2IEBA
CiAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRVG91Y2hFdmVudD4KLSNlbGlmIFBMQVRG
T1JNKEVGTCkKLSNpbmNsdWRlICJld2tfdG91Y2guaCIKLSNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTQzLDcgKzM5LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKFFUKQogICAgIGV4
cGxpY2l0IE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBjb25zdCBRVHJh
bnNmb3JtJiBmcm9tSXRlbVRyYW5zZm9ybSk7CiAjZWxpZiBQTEFURk9STShFRkwpCi0gICAgTmF0
aXZlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSwgY29uc3QgRWluYV9MaXN0Kiwg
Y29uc3QgRXZhc19Nb2RpZmllciosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9X
ZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVu
LCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KGNv
bnN0IFdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNwcApp
bmRleCA3Mjc5NjgzNWE2NjQ3YjAyNzJkZWYyM2VlNmMyMGIxODEzOWE5MTY1Li44MDE4OTAwZTQy
MjRjZGQxY2RlMWRhZWQzMjIyNzEwZGM4N2IwYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKQEAgLTI4LDEyICsyOCwx
MCBAQAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAiTmF0aXZlV2ViVG91Y2hF
dmVudC5oIgogCi0jaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCi0KIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1OYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KEV3a19Ub3Vj
aF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01v
ZGlmaWVyKiBtb2RpZmllcnMsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9XZWJD
b250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuLCBk
b3VibGUgdGltZXN0YW1wKQotICAgIDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNy
ZWF0ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMsIHRvV2ViQ29udGVudCwg
dG9EZXZpY2VTY3JlZW4sIHRpbWVzdGFtcCkpCitOYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVX
ZWJUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHdlYlRvdWNoRXZlbnQpCisgICAgOiBX
ZWJUb3VjaEV2ZW50KHdlYlRvdWNoRXZlbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBiOTk5MjUwODQzOGQ3MGYxNGYxMTM5
YTk0MTM0NDAwMGFiOThjY2U0Li5iMjVjNmJkYjQwYWQ3Y2U4NWFhMDhmZGNmNzdiZjE3YjJmNmM2
Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3Bw
CkBAIC0yMDQsNTcgKzIwNCw0IEBAIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwCiAgICAgICAgIGNv
bnZlcnRNaWxsaXNlY29uZFRvU2Vjb25kKGV2ZW50LT50aW1lc3RhbXApKTsKIH0KIAotI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi1zdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpUeXBlIHR5cGVGb3JU
b3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUpCi17Ci0gICAgaWYgKHR5cGUgPT0g
RVdLX1RPVUNIX1NUQVJUKQotICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7Ci0g
ICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNIX01PVkUpCi0gICAgICAgIHJldHVybiBXZWJFdmVudDo6
VG91Y2hNb3ZlOwotICAgIGlmICh0eXBlID09IEVXS19UT1VDSF9FTkQpCi0gICAgICAgIHJldHVy
biBXZWJFdmVudDo6VG91Y2hFbmQ7Ci0gICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNIX0NBTkNFTCkK
LSAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaENhbmNlbDsKLQotICAgIHJldHVybiBXZWJF
dmVudDo6Tm9UeXBlOwotfQotCi1XZWJUb3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3Qq
IHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJzLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRvV2ViQ29udGVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVl
biwgZG91YmxlIHRpbWVzdGFtcCkKLXsKLSAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50
PiB0b3VjaFBvaW50czsKLSAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0
ZSBzdGF0ZTsKLSAgICBjb25zdCBFaW5hX0xpc3QqIGxpc3Q7Ci0gICAgdm9pZCogaXRlbTsKLSAg
ICBFSU5BX0xJU1RfRk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0pIHsKLSAgICAgICAgRXdrX1Rv
dWNoX1BvaW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGl0ZW0pOwot
Ci0gICAgICAgIHN3aXRjaCAocG9pbnQtPnN0YXRlKSB7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VD
SF9QT0lOVF9VUDoKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFJlbGVhc2VkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VD
SF9QT0lOVF9NT1ZFOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoTW92ZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFVkFTX1RPVUNI
X1BPSU5UX0RPV046Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hQcmVzc2VkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VD
SF9QT0lOVF9TVElMTDoKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaFN0YXRpb25hcnk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFVkFT
X1RPVUNIX1BPSU5UX0NBTkNFTDoKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50OjpUb3VjaENhbmNlbGxlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIEludFBvaW50IHBvcyhwb2ludC0+eCwgcG9pbnQt
PnkpOwotICAgICAgICB0b3VjaFBvaW50cy5hcHBlbmQoV2ViUGxhdGZvcm1Ub3VjaFBvaW50KHBv
aW50LT5pZCwgc3RhdGUsIHRvRGV2aWNlU2NyZWVuLm1hcFBvaW50KHBvcyksIHRvV2ViQ29udGVu
dC5tYXBQb2ludChwb3MpKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQodHlw
ZUZvclRvdWNoRXZlbnQodHlwZSksIHRvdWNoUG9pbnRzLCBtb2RpZmllcnNGb3JFdmVudChtb2Rp
ZmllcnMpLCB0aW1lc3RhbXApOwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXggZTQ0NGRi
MjlkNTIzODQwMjIwNDFlNWRiOGQyNDQwYzMwZDgyM2U4MC4uMjg3MjA3ODQ0ZGFkZGYxMDJkOGE1
ODk0MGFjNTU2YTZiNTRmYTU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2Vm
bC9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2
ZW50RmFjdG9yeS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFdlYkV2ZW50RmFjdG9yeV9o
CiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgotI2luY2x1ZGUgImV3a190b3VjaC5oIgogI2luY2x1
ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgogCkBAIC00
MSw5ICs0MCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJX
aGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqLCBjb25zdCBXZWJDb3JlOjpB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBz
dGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNf
RXZlbnRfS2V5X0Rvd24qKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJL
ZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKik7Ci0jaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKLSAgICBzdGF0aWMgV2ViVG91Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50KEV3
a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqLCBjb25zdCBFdmFzX01vZGlmaWVy
KiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtJiwgZG91YmxlIHRpbWVzdGFtcCk7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS0FQSUNhc3RFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tB
UElDYXN0RWZsLmgKaW5kZXggMTg4OWZjNDM2NzU1ZjkxYTgyZjNhMzAzZmFlNWJhNTNkN2Y2MmRl
Ny4uYjQyOTQyMWZkNDg3OGYzYzVhYWZkOWU4NjNmMGIzYWRmNDk4M2YzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oCkBAIC0yOSw2
ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViVmlldzsKIAogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLVmlld1JlZiwgV2ViVmlldykKK1dLX0FERF9BUElfTUFQUElORyhXS1RvdWNo
RXZlbnRSZWYsIFdlYlRvdWNoRXZlbnQpCiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQ5NTMxOGIwZjZj
MmZjZTUyMmNlMTVhNjBiMDM0YzkxMWZkMWQyNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHAKQEAgLTAsMCArMSwxMDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldLRXZlbnRFZmwuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkV2
ZW50LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCitzdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpUeXBlIHR5cGVGb3JUb3VjaEV2ZW50KFdLVG91
Y2hFdmVudFR5cGUgdHlwZSkKK3sKKyAgICBpZiAodHlwZSA9PSBrV0tUb3VjaEV2ZW50VHlwZVRv
dWNoU3RhcnQpCisgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hTdGFydDsKKyAgICBpZiAo
dHlwZSA9PSBrV0tUb3VjaEV2ZW50VHlwZVRvdWNoTW92ZSkKKyAgICAgICAgcmV0dXJuIFdlYkV2
ZW50OjpUb3VjaE1vdmU7CisgICAgaWYgKHR5cGUgPT0ga1dLVG91Y2hFdmVudFR5cGVUb3VjaEVu
ZCkKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaEVuZDsKKyAgICBpZiAodHlwZSA9PSBr
V0tUb3VjaEV2ZW50VHlwZVRvdWNoQ2FuY2VsKQorICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRv
dWNoQ2FuY2VsOworCisgICAgcmV0dXJuIFdlYkV2ZW50OjpOb1R5cGU7Cit9CisKK3N0YXRpYyBp
bmxpbmUgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JXS0V2ZW50KHVuc2lnbmVkIG1v
ZGlmaWVycykKK3sKKyAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworCisgICAgaWYgKG1vZGlmaWVy
cyAmIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVu
dDo6U2hpZnRLZXk7CisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQ29udHJv
bEtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpDb250cm9sS2V5OworICAgIGlmICht
b2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc0FsdEtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdl
YkV2ZW50OjpBbHRLZXk7CisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzTWV0
YUtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpNZXRhS2V5OworCisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdlYkV2ZW50OjpNb2RpZmllcnM+KHJlc3VsdCk7Cit9CisKK1dLVG91Y2hF
dmVudFJlZiBXS1RvdWNoRXZlbnRDcmVhdGUoV0tUb3VjaEV2ZW50IGV2ZW50KQoreworI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4gdG91
Y2hQb2ludHM7CisgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBvaW50U3RhdGUgc3Rh
dGU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXZlbnQubnVtVG91Y2hQb2ludHMg
JiYgaSA8IGtXS01heGltdW1Ub3VjaFBvaW50c1BlclRvdWNoRXZlbnQ7ICsraSkgeworICAgICAg
ICBjb25zdCBXS1RvdWNoUG9pbnQmIHBvaW50ID0gZXZlbnQudG91Y2hQb2ludHNbaV07CisgICAg
ICAgIHN3aXRjaCAocG9pbnQuc3RhdGUpIHsKKyAgICAgICAgY2FzZSBrV0tUb3VjaFBvaW50U3Rh
dGVUb3VjaFJlbGVhc2VkOgorICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoUmVsZWFzZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrV0tU
b3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkOgorICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFByZXNzZWQ6CisgICAgICAgICAgICBzdGF0ZSA9IFdl
YlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hTdGF0aW9uYXJ5OgorICAgICAgICAg
ICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoQ2FuY2Vs
bGVkOgorICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2Fu
Y2VsbGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKKyAgICAgICAgdG91Y2hQb2ludHMuYXBwZW5kKFdlYlBsYXRmb3JtVG91Y2hQb2ludChwb2lu
dC5pZCwgc3RhdGUsIHRvSW50UG9pbnQocG9pbnQuc2NyZWVuUG9zaXRpb24pLCB0b0ludFBvaW50
KHBvaW50LnBvc2l0aW9uKSwgdG9JbnRTaXplKHBvaW50LnJhZGl1cyksIHBvaW50LnJvdGF0aW9u
QW5nbGUsIHBvaW50LmZvcmNlKSk7CisgICAgfQorCisgICAgV2ViVG91Y2hFdmVudCogd2ViVG91
Y2hFdmVudCA9IG5ldyBXZWJUb3VjaEV2ZW50KHR5cGVGb3JUb3VjaEV2ZW50KGV2ZW50LnR5cGUp
LCB0b3VjaFBvaW50cywgbW9kaWZpZXJzRm9yV0tFdmVudChldmVudC5tb2RpZmllcnMpLCBldmVu
dC50aW1lc3RhbXApOworCisgICAgcmV0dXJuIHRvQVBJKHdlYlRvdWNoRXZlbnQpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oZXZlbnQpOworICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3Zv
aWQgV0tUb3VjaEV2ZW50UmVsZWFzZShXS1RvdWNoRXZlbnRSZWYgdG91Y2hFdmVudFJlZikKK3sK
KyAgICBkZWxldGUgdG9JbXBsKHRvdWNoRXZlbnRSZWYpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODM4OGU3YjZl
NTgyZTc4NzEzMTg0YWYyOTIxMmNlMjAyOTlkMGUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmgKQEAgLTAsMCArMSw4MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLRXZl
bnRFZmxfaAorI2RlZmluZSBXS0V2ZW50RWZsX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tFdmVu
dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5oPgorCisjaWZkZWYgX19jcGx1c3Bs
dXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0gV0tUb3VjaEV2ZW50VHlwZSB7CisgICAg
a1dLVG91Y2hFdmVudFR5cGVUb3VjaFN0YXJ0LAorICAgIGtXS1RvdWNoRXZlbnRUeXBlVG91Y2hN
b3ZlLAorICAgIGtXS1RvdWNoRXZlbnRUeXBlVG91Y2hFbmQsCisgICAga1dLVG91Y2hFdmVudFR5
cGVUb3VjaENhbmNlbAorfTsKK3R5cGVkZWYgZW51bSBXS1RvdWNoRXZlbnRUeXBlIFdLVG91Y2hF
dmVudFR5cGU7CisKK2VudW0gV0tUb3VjaFBvaW50U3RhdGUgeworICAgIGtXS1RvdWNoUG9pbnRT
dGF0ZVRvdWNoUmVsZWFzZWQsCisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQcmVzc2VkLAor
ICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoTW92ZWQsCisgICAga1dLVG91Y2hQb2ludFN0YXRl
VG91Y2hTdGF0aW9uYXJ5LAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoQ2FuY2VsbGVkCit9
OwordHlwZWRlZiBlbnVtIFdLVG91Y2hQb2ludFN0YXRlIFdLVG91Y2hQb2ludFN0YXRlOworCitz
dHJ1Y3QgV0tUb3VjaFBvaW50IHsKKyAgICB1bnNpZ25lZCBpZDsKKyAgICBXS1RvdWNoUG9pbnRT
dGF0ZSBzdGF0ZTsKKyAgICBXS1BvaW50IHBvc2l0aW9uOworICAgIFdLUG9pbnQgc2NyZWVuUG9z
aXRpb247CisgICAgV0tTaXplIHJhZGl1czsKKyAgICBmbG9hdCByb3RhdGlvbkFuZ2xlOworICAg
IGZsb2F0IGZvcmNlOworfTsKK3R5cGVkZWYgc3RydWN0IFdLVG91Y2hQb2ludCBXS1RvdWNoUG9p
bnQ7CisKK2VudW0geyBrV0tNYXhpbXVtVG91Y2hQb2ludHNQZXJUb3VjaEV2ZW50ID0gNSB9Owor
CitzdHJ1Y3QgV0tUb3VjaEV2ZW50IHsKKyAgICBXS1RvdWNoRXZlbnRUeXBlIHR5cGU7CisgICAg
V0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnM7CisgICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICB1
bnNpZ25lZCBudW1Ub3VjaFBvaW50czsKKyAgICBXS1RvdWNoUG9pbnQgdG91Y2hQb2ludHNba1dL
TWF4aW11bVRvdWNoUG9pbnRzUGVyVG91Y2hFdmVudF07Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tU
b3VjaEV2ZW50IFdLVG91Y2hFdmVudDsKKworV0tfRVhQT1JUIFdLVG91Y2hFdmVudFJlZiBXS1Rv
dWNoRXZlbnRDcmVhdGUoV0tUb3VjaEV2ZW50IGV2ZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLVG91
Y2hFdmVudFJlbGVhc2UoV0tUb3VjaEV2ZW50UmVmIHRvdWNoRXZlbnRSZWYpOworCisjaWZkZWYg
X19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tFdmVudEVmbF9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKaW5kZXggMjEwZjJl
MjM5ZTQwZjE2MzZjNDI5YWZiNTFhODFlMWZiZmQ3ZWQwNC4uMmE1ODMyMzU4NTQzZGRlYWJhYzg4
NGVkN2NjNTVkZjAxYTM0YmYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tWaWV3LmNwcApAQCAtMTA3LDMgKzEwNyw4IEBAIFdLSW1hZ2VSZWYgV0tWaWV3Q3Jl
YXRlU25hcHNob3QoV0tWaWV3UmVmIHZpZXdSZWYpCiAgICAgRXdrVmlldyogZXdrVmlldyA9IHRv
RXdrVmlldyh0b0ltcGwodmlld1JlZiktPmV2YXNPYmplY3QoKSk7CiAgICAgcmV0dXJuIFdLSW1h
Z2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKGV3a1ZpZXctPnRha2VTbmFwc2hvdCgpLmdldCgpLCAw
IC8qIG9wdGlvbnMgKi8pOwogfQorCit2b2lkIFdLVmlld1NlbmRUb3VjaEV2ZW50KFdLVmlld1Jl
ZiB2aWV3UmVmLCBXS1RvdWNoRXZlbnRSZWYgdG91Y2hFdmVudFJlZikKK3sKKyAgICB0b0ltcGwo
dmlld1JlZiktPnNlbmRUb3VjaEV2ZW50KHRvSW1wbCh0b3VjaEV2ZW50UmVmKSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAppbmRleCAzMjU0NmM2OGNm
OTVjOGE1ZjcyMzk1ZWY1MWI3N2UyNzg1NDcxN2MxLi43ODRmNDczN2VmNjM2M2VlY2FkZjA3ODE5
ZTUzNWM2ZjU1MTk3ZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvZWZsL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tWaWV3LmgKQEAgLTc1LDYgKzc1LDggQEAgV0tfRVhQT1JUIEV2YXNfT2JqZWN0KiBXS1ZpZXdH
ZXRFdmFzT2JqZWN0KFdLVmlld1JlZik7CiAKIFdLX0VYUE9SVCBXS0ltYWdlUmVmIFdLVmlld0Ny
ZWF0ZVNuYXBzaG90KFdLVmlld1JlZik7CiAKK1dLX0VYUE9SVCB2b2lkIFdLVmlld1NlbmRUb3Vj
aEV2ZW50KFdLVmlld1JlZiwgV0tUb3VjaEV2ZW50UmVmKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApp
bmRleCBmOGQ2MzczNWNiZmFhNGVjMTczMDY4ZmI2MTA2NzZhMTFmODFhODhjLi40MTU2MGNmNGM1
ZWQ0OTEyYmU0ZWQzNDU4OTcyOGQ1YjZiOTU5N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZWZQdHJDYWlyby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dERpcmVjdGlvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9u
TWF0cml4Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTgxLDcgKzgyLDYgQEAgY2xhc3Mg
Q29sb3I7CiBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU7CiBjbGFzcyBDdXJzb3I7CiBj
bGFzcyBJbnRTaXplOwotY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiB9CiAKIGNsYXNzIEV3
a0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdG91Y2guY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RvdWNo
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMDViYjk1ZTJkYTBhMzY5YTIzYmY3ZmU2YzE2MTEyZDRhMDA2YmZi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3RvdWNoLmNwcApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNh
bXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfdG91Y2guaCIKKworI2lu
Y2x1ZGUgImV3a190b3VjaF9wcml2YXRlLmgiCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworV0tUb3VjaEV2ZW50KiBjcmVhdGVXS1RvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUg
dHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlm
aWVycywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHBvaW50cywgMCk7CisKKyAgICBXS1RvdWNoRXZlbnQqIHRvdWNoRXZlbnQgPSBuZXcg
V0tUb3VjaEV2ZW50OworICAgIHRvdWNoRXZlbnQtPnR5cGUgPSBzdGF0aWNfY2FzdDxXS1RvdWNo
RXZlbnRUeXBlPih0eXBlKTsKKyAgICB0b3VjaEV2ZW50LT50aW1lc3RhbXAgPSBlY29yZV90aW1l
X2dldCgpOworICAgIHRvdWNoRXZlbnQtPm51bVRvdWNoUG9pbnRzID0gZWluYV9saXN0X2NvdW50
KHBvaW50cyk7CisgICAgaWYgKHRvdWNoRXZlbnQtPm51bVRvdWNoUG9pbnRzID4ga1dLTWF4aW11
bVRvdWNoUG9pbnRzUGVyVG91Y2hFdmVudCkKKyAgICAgICAgdG91Y2hFdmVudC0+bnVtVG91Y2hQ
b2ludHMgPSBlaW5hX2xpc3RfY291bnQocG9pbnRzKTsKKworICAgIHRvdWNoRXZlbnQtPm1vZGlm
aWVycyA9IDA7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJT
aGlmdCIpKQorICAgICAgICB0b3VjaEV2ZW50LT5tb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmll
cnNTaGlmdEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywg
IkNvbnRyb2wiKSkKKyAgICAgICAgdG91Y2hFdmVudC0+bW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9k
aWZpZXJzQ29udHJvbEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlm
aWVycywgIkFsdCIpKQorICAgICAgICB0b3VjaEV2ZW50LT5tb2RpZmllcnMgfD0ga1dLRXZlbnRN
b2RpZmllcnNBbHRLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmll
cnMsICJNZXRhIikpCisgICAgICAgIHRvdWNoRXZlbnQtPm1vZGlmaWVycyB8PSBrV0tFdmVudE1v
ZGlmaWVyc01ldGFLZXk7CisKKyAgICBjb25zdCBFaW5hX0xpc3QqIGxpc3Q7CisgICAgZG91Ymxl
IHg7CisgICAgZG91YmxlIHk7CisgICAgdW5zaWduZWQgaW5kZXg7CisgICAgZm9yIChsaXN0ID0g
cG9pbnRzLCBpbmRleCA9IDA7IGxpc3QgJiYgaW5kZXggPCB0b3VjaEV2ZW50LT5udW1Ub3VjaFBv
aW50czsgbGlzdCA9IGVpbmFfbGlzdF9uZXh0KGxpc3QpLCArK2luZGV4KSB7CisgICAgICAgIEV3
a19Ub3VjaF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihlaW5h
X2xpc3RfZGF0YV9nZXQobGlzdCkpOworICAgICAgICBXS1RvdWNoUG9pbnQmIHdrVG91Y2hQb2lu
dCA9IHRvdWNoRXZlbnQtPnRvdWNoUG9pbnRzW2luZGV4XTsKKworICAgICAgICB3a1RvdWNoUG9p
bnQuaWQgPSBwb2ludC0+aWQ7CisgICAgICAgIHRvV2ViQ29udGVudC5tYXAocG9pbnQtPngsIHBv
aW50LT55LCB4LCB5KTsKKyAgICAgICAgd2tUb3VjaFBvaW50LnBvc2l0aW9uID0gV0tQb2ludE1h
a2UoeCwgeSk7CisgICAgICAgIHRvRGV2aWNlU2NyZWVuLm1hcChwb2ludC0+eCwgcG9pbnQtPnks
IHgsIHkpOworICAgICAgICB3a1RvdWNoUG9pbnQuc2NyZWVuUG9zaXRpb24gPSBXS1BvaW50TWFr
ZSh4LCB5KTsKKyAgICAgICAgd2tUb3VjaFBvaW50LnJhZGl1cyA9IFdLU2l6ZU1ha2UoMCwgMCk7
CisgICAgICAgIHdrVG91Y2hQb2ludC5yb3RhdGlvbkFuZ2xlID0gMDsKKyAgICAgICAgd2tUb3Vj
aFBvaW50LmZvcmNlID0gMDsKKworICAgICAgICBzd2l0Y2ggKHBvaW50LT5zdGF0ZSkgeworICAg
ICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfVVA6CisgICAgICAgICAgICB3a1RvdWNoUG9pbnQu
c3RhdGUgPSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFJlbGVhc2VkOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9NT1ZFOgorICAgICAgICAgICAgd2tU
b3VjaFBvaW50LnN0YXRlID0ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hNb3ZlZDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfRE9XTjoKKyAgICAgICAg
ICAgIHdrVG91Y2hQb2ludC5zdGF0ZSA9IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3NlZDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfU1RJTEw6
CisgICAgICAgICAgICB3a1RvdWNoUG9pbnQuc3RhdGUgPSBrV0tUb3VjaFBvaW50U3RhdGVUb3Vj
aFN0YXRpb25hcnk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFVkFTX1RPVUNI
X1BPSU5UX0NBTkNFTDoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHdrVG91Y2hQb2lu
dC5zdGF0ZSA9IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoQ2FuY2VsbGVkOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdG91Y2hFdmVudDsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3VjaF9wcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdG91Y2hfcHJpdmF0
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUxYmEwMTczMDgyNDk2ZDllYjllNTIyYTE1NWFmOTg3NmY1OTQyNzEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dG91Y2hfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBld2tfdG91Y2hfcHJpdmF0ZV9oCisjZGVmaW5lIGV3a190b3Vj
aF9wcml2YXRlX2gKKworI2luY2x1ZGUgIldLRXZlbnRFZmwuaCIKKyNpbmNsdWRlICJld2tfdG91
Y2guaCIKKyNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8RXZhcy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07Cit9CisKK1dLVG91Y2hFdmVudCogY3Jl
YXRlV0tUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqIHBv
aW50cywgY29uc3QgRXZhc19Nb2RpZmllciosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYgdG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNl
U2NyZWVuKTsKKworI2VuZGlmIC8vIGV3a190b3VjaF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCBjM2E1OWM0YjBlNDI1MWI4
ODVjMzg1NzQ4ZGZmN2M3NDE5MDY1ODQ5Li5hNDIxMzg3MjM1NzczOWMwNjdmZWU3ZTY0Nzg5M2Fi
NjBlNzI5ZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRWluYVNo
YXJlZFN0cmluZy5oIgorI2luY2x1ZGUgIldLRXZlbnRFZmwuaCIKICNpbmNsdWRlICJXS0ZpbmRP
cHRpb25zLmgiCiAjaW5jbHVkZSAiV0tJbnNwZWN0b3IuaCIKICNpbmNsdWRlICJXS1JldGFpblB0
ci5oIgpAQCAtNDksOCArNTAsMTEgQEAKICNpbmNsdWRlICJld2tfZmF2aWNvbl9kYXRhYmFzZV9w
cml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2V0dGlu
Z3NfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a190b3VjaF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8
RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5j
bHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tWaWV3Lmg+
CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCkBAIC0zNzMsMTAgKzM3NywxMiBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZl
bnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogRWluYV9Cb29sIGV3
a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19Ub3VjaF9F
dmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01vZGlm
aWVyKiBtb2RpZmllcnMpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocG9pbnRzLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1Q
TF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIGltcGwsIGZhbHNlKTsKIAotICAgIGltcGwtPnBhZ2Uo
KS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9k
aWZpZXJzLCBpbXBsLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgaW1wbC0+dHJhbnNmb3JtVG9TY3Jl
ZW4oKSwgZWNvcmVfdGltZV9nZXQoKSkpOworICAgIE93blB0cjxXS1RvdWNoRXZlbnQ+IHRvdWNo
RXZlbnQgPSBhZG9wdFB0cihjcmVhdGVXS1RvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmll
cnMsIGltcGwtPnRyYW5zZm9ybUZyb21TY2VuZSgpLCBpbXBsLT50cmFuc2Zvcm1Ub1NjcmVlbigp
KSk7CisgICAgV0tUb3VjaEV2ZW50UmVmIHRvdWNoRXZlbnRSZWYgPSBXS1RvdWNoRXZlbnRDcmVh
dGUoKnRvdWNoRXZlbnQuZ2V0KCkpOworICAgIFdLVmlld1NlbmRUb3VjaEV2ZW50KGltcGwtPndr
VmlldygpLCB0b3VjaEV2ZW50UmVmKTsKKyAgICBXS1RvdWNoRXZlbnRSZWxlYXNlKHRvdWNoRXZl
bnRSZWYpOwogCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlldy5jcHAKaW5kZXggM2FiNGZkNGYzZjNiZGUyYmQxZmFmODcyMmQ5NzZiMGUz
NzVjNDZlNS4uOTkxMzUyNWE2NjEwYjhjZmM1ZDViNmVlZWFiMTczN2IyNDUzZjQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC00NDksNCArNDQ5LDEwIEBA
IHZvaWQgV2ViVmlldzo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKICAgICAgICAgbV9l
d2tWaWV3LT5zY2hlZHVsZVVwZGF0ZURpc3BsYXkoKTsKIH0KIAordm9pZCBXZWJWaWV3OjpzZW5k
VG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50KiB0b3VjaEV2ZW50KQoreworICAgIEFTU0VS
VCh0b3VjaEV2ZW50KTsKKyAgICBtX3BhZ2UtPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91
Y2hFdmVudCgqdG91Y2hFdmVudCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgKaW5kZXggYWIyMjhiMDE2NDUxOWM4ZjRmYmRh
OWNjM2M4ZGE0MDk5Y2U3NzczYS4uMDEwNDE1MWIxOTkxZDI1Y2IwOGQ4MGIyYzM5ZGMyMDgyNGVj
NmIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgKQEAgLTYzLDYgKzYz
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnMoKTsKICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7
CisgICAgdm9pZCBzZW5kVG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Kik7CiAKICAgICAv
LyBWaWV3IGNsaWVudC4KICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tWaWV3Q2xp
ZW50Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189221</attachid>
            <date>2013-02-19 18:32:55 -0800</date>
            <delta_ts>2013-02-28 00:31:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130220112915.patch</filename>
            <type>text/plain</type>
            <size>29131</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmQxYmJmMWY4NjFjODUz
MDU5YjkzMWY1Yzc3MGMyYzUzZTQzMTI1YS4uMDk5MmJhNzE2ZWY4NzgyNDQwMzRlYTIyNTNhZDc0
OGE2YjkyNTI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEzLTAyLTE5ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvdWNoIGV2ZW50cyBmb3Igb3VyIHRhcmdldCBw
bGF0Zm9ybXMgZGlmZmVyIChYSW5wdXQyLCBXYXlsYW5kLCBUaXplbikgc28KKyAgICAgICAgZm9y
IHRoZSBFRkwgcG9ydCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZmVlZCBldmVudHMgbWFudWFsbHku
CisKKyAgICAgICAgVG8ga2VlcCBvdXIgY3VycmVudCBBUEkgZm9yIGRlc2t0b3AgRUZML0VubGln
aHRlbm1lbnQgd29ya2luZywgd2UgY29udmVydAorICAgICAgICBvdXIgY3VycmVudGx5IGxpbWl0
ZWQgRUZMIGV2ZW50cyB0byB0aGUgbmV3IEVGTCBzcGVjaWZpYyBDIFdLVG91Y2hFdmVudCB0eXBl
LgorCisgICAgICAgIFRoZSBXS1ZpZXdTZW5kVG91Y2hFdmVudCBjYW4gYmUgdXNlZCBmb3IgYW55
IHVzZS1jYXNlIChwbGF0Zm9ybS9wcm9kdWN0KQorICAgICAgICBub3QgaW52b2x2aW5nIHRoZSBF
RkwgZXZlbnRzLgorCisgICAgICAgIEF0IHRoZSBzYW1lIHRpbWUgd2UgbWFrZSBzdXJlIHRvIGF2
b2lkIHVzaW5nIFdLMiBpbnRlcm5hbHMgaW4gb3VyIEVGTCBBUEkKKyAgICAgICAgaW1wbGVtZW50
YXRpb24uCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvZWZsL1dLQmFzZUVmbC5oOgorICAgICAgICAqIFNoYXJlZC9OYXRpdmVXZWJUb3VjaEV2
ZW50Lmg6CisgICAgICAgIChOYXRpdmVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQv
ZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVX
ZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZs
L1dlYkV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rv
cnkuaDoKKyAgICAgICAgKFdlYkV2ZW50RmFjdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS0FQSUNhc3RFZmwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcDogQWRkZWQuCisgICAgICAgICh0eXBlRm9y
RXZlbnQpOgorICAgICAgICAobW9kaWZpZXJzRm9yV0tFdmVudCk6CisgICAgICAgIChXS1RvdWNo
RXZlbnRDcmVhdGUpOgorICAgICAgICAoV0tUb3VjaEV2ZW50UmVsZWFzZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcDoKKyAgICAgICAgKFdLVmlld1NlbmRUb3VjaEV2ZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3VjaC5jcHA6IEFkZGVkLgorICAgICAgICAoY3JlYXRl
V0tUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdG91Y2hfcHJp
dmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZW5kVG91Y2hFdmVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3KToKKwogMjAxMy0wMi0x
OCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gUmVtb3ZlIHdlYmtpdF93ZWJfdmlld19nZXRfc3VicmVzb3VyY2VzIGZyb20gV2ViS2l0
MiBHVEsrIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2Ug
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3ZmE0ZWM5NzUxYjRmNDFm
Mjg0YzEzOGI4NTlhYmI5MDg4NWRkYmNlLi4xOWNmN2U4NDk5MmRmYjMzZTM0ZDYxMzNkODc0ZWUz
MDdmYTAxYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzcsNiArMzcsNyBAQCBs
aXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy9jYWlyby9X
S0ljb25EYXRhYmFzZUNhaXJvLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50
RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZsLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1BvcHVwTWVudUxpc3RlbmVyLmNwcApAQCAtNzYsNiArNzcsNyBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGluZ3MuY3BwCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdGV4dF9jaGVja2VyLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a190
b3VjaC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVlc3QuY3BwCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9lZmwvV0tCYXNlRWZsLmgKaW5kZXggNzJmYmZkMzAzYzAxYzcyYjU1M2JkZjY0NDgyZDUy
YjRhMmIyYzRkOC4uNTJmMzIzNDVlMjJjMTJiYjUxM2E5Mjg3OThjMjI5YThkYmI4YjM2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oCkBAIC0yNyw1ICsy
Nyw2IEBACiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpZXcqIFdLVmlld1JlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUG9wdXBJdGVtKiBXS1BvcHVwSXRlbVJlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUG9wdXBNZW51TGlzdGVuZXIqIFdLUG9wdXBNZW51
TGlzdGVuZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1RvdWNoRXZlbnQqIFdL
VG91Y2hFdmVudFJlZjsKIAogI2VuZGlmIC8qIFdLQmFzZUVmbF9oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaAppbmRleCBjNjNkMWNmMDcwNWJjYTFlYTU0
ZDM4NGYzZjBmNWJjODMxMWFkNjJhLi5jYWM3NDIyNGU5N2MyYTkxYWQyMTJiNDg2MjliN2E2YzBk
ZTlhNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgK
QEAgLTMwLDEwICszMCw2IEBACiAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRVG91Y2hF
dmVudD4KLSNlbGlmIFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRlICJld2tfdG91Y2guaCIKLSNpbmNs
dWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQzLDcgKzM5LDcgQEAgcHVibGljOgogI2lmIFBM
QVRGT1JNKFFUKQogICAgIGV4cGxpY2l0IE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgUVRvdWNo
RXZlbnQqLCBjb25zdCBRVHJhbnNmb3JtJiBmcm9tSXRlbVRyYW5zZm9ybSk7CiAjZWxpZiBQTEFU
Rk9STShFRkwpCi0gICAgTmF0aXZlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSwg
Y29uc3QgRWluYV9MaXN0KiwgY29uc3QgRXZhc19Nb2RpZmllciosIGNvbnN0IFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zv
cm0mIHRvRGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBleHBsaWNpdCBOYXRp
dmVXZWJUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oUVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdl
YlRvdWNoRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJU
b3VjaEV2ZW50RWZsLmNwcAppbmRleCA3Mjc5NjgzNWE2NjQ3YjAyNzJkZWYyM2VlNmMyMGIxODEz
OWE5MTY1Li44MDE4OTAwZTQyMjRjZGQxY2RlMWRhZWQzMjIyNzEwZGM4N2IwYTdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5j
cHAKQEAgLTI4LDEyICsyOCwxMCBAQAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVk
ZSAiTmF0aXZlV2ViVG91Y2hFdmVudC5oIgogCi0jaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5Lmgi
Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCi1OYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJU
b3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9p
bnRzLCBjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMsIGNvbnN0IFdlYkNvcmU6OkFmZmlu
ZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0m
IHRvRGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1wKQotICAgIDogV2ViVG91Y2hFdmVudChX
ZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmll
cnMsIHRvV2ViQ29udGVudCwgdG9EZXZpY2VTY3JlZW4sIHRpbWVzdGFtcCkpCitOYXRpdmVXZWJU
b3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHdlYlRv
dWNoRXZlbnQpCisgICAgOiBXZWJUb3VjaEV2ZW50KHdlYlRvdWNoRXZlbnQpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCBiOTk5
MjUwODQzOGQ3MGYxNGYxMTM5YTk0MTM0NDAwMGFiOThjY2U0Li5iMjVjNmJkYjQwYWQ3Y2U4NWFh
MDhmZGNmNzdiZjE3YjJmNmM2Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
ZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9X
ZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0yMDQsNTcgKzIwNCw0IEBAIFdlYktleWJvYXJkRXZlbnQg
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRf
S2V5X1VwCiAgICAgICAgIGNvbnZlcnRNaWxsaXNlY29uZFRvU2Vjb25kKGV2ZW50LT50aW1lc3Rh
bXApKTsKIH0KIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1zdGF0aWMgaW5saW5lIFdlYkV2
ZW50OjpUeXBlIHR5cGVGb3JUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUpCi17
Ci0gICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNIX1NUQVJUKQotICAgICAgICByZXR1cm4gV2ViRXZl
bnQ6OlRvdWNoU3RhcnQ7Ci0gICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNIX01PVkUpCi0gICAgICAg
IHJldHVybiBXZWJFdmVudDo6VG91Y2hNb3ZlOwotICAgIGlmICh0eXBlID09IEVXS19UT1VDSF9F
TkQpCi0gICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hFbmQ7Ci0gICAgaWYgKHR5cGUgPT0g
RVdLX1RPVUNIX0NBTkNFTCkKLSAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaENhbmNlbDsK
LQotICAgIHJldHVybiBXZWJFdmVudDo6Tm9UeXBlOwotfQotCi1XZWJUb3VjaEV2ZW50IFdlYkV2
ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBl
LCBjb25zdCBFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJz
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29udGVudCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0b0RldmljZVNjcmVlbiwgZG91YmxlIHRpbWVzdGFtcCkKLXsKLSAgICBWZWN0b3I8V2Vi
UGxhdGZvcm1Ub3VjaFBvaW50PiB0b3VjaFBvaW50czsKLSAgICBXZWJQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoUG9pbnRTdGF0ZSBzdGF0ZTsKLSAgICBjb25zdCBFaW5hX0xpc3QqIGxpc3Q7Ci0g
ICAgdm9pZCogaXRlbTsKLSAgICBFSU5BX0xJU1RfRk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0p
IHsKLSAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3Vj
aF9Qb2ludCo+KGl0ZW0pOwotCi0gICAgICAgIHN3aXRjaCAocG9pbnQtPnN0YXRlKSB7Ci0gICAg
ICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9VUDoKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxh
dGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9NT1ZFOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX0RPV046Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBs
YXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9TVElMTDoKLSAgICAgICAgICAgIHN0YXRlID0gV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX0NBTkNFTDoKLSAgICAgICAgICAgIHN0YXRl
ID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaENhbmNlbGxlZDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIEludFBvaW50IHBv
cyhwb2ludC0+eCwgcG9pbnQtPnkpOwotICAgICAgICB0b3VjaFBvaW50cy5hcHBlbmQoV2ViUGxh
dGZvcm1Ub3VjaFBvaW50KHBvaW50LT5pZCwgc3RhdGUsIHRvRGV2aWNlU2NyZWVuLm1hcFBvaW50
KHBvcyksIHRvV2ViQ29udGVudC5tYXBQb2ludChwb3MpKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IFdlYlRvdWNoRXZlbnQodHlwZUZvclRvdWNoRXZlbnQodHlwZSksIHRvdWNoUG9pbnRzLCBtb2Rp
ZmllcnNGb3JFdmVudChtb2RpZmllcnMpLCB0aW1lc3RhbXApOwotfQotI2VuZGlmCi0KIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9X
ZWJFdmVudEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0
b3J5LmgKaW5kZXggZTQ0NGRiMjlkNTIzODQwMjIwNDFlNWRiOGQyNDQwYzMwZDgyM2U4MC4uMjg3
MjA3ODQ0ZGFkZGYxMDJkOGE1ODk0MGFjNTU2YTZiNTRmYTU0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5l
IFdlYkV2ZW50RmFjdG9yeV9oCiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgotI2luY2x1ZGUgImV3
a190b3VjaC5oIgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRy
YW5zZm9ybS5oPgogCkBAIC00MSw5ICs0MCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViV2hl
ZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfV2hlZWwq
LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVU
cmFuc2Zvcm0mKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2Fy
ZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X0Rvd24qKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9h
cmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKik7
Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBzdGF0aWMgV2ViVG91Y2hFdmVudCBjcmVh
dGVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqLCBj
b25zdCBFdmFzX01vZGlmaWVyKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgZG91YmxlIHRpbWVzdGFtcCk7Ci0jZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgKaW5kZXggZDNiY2E5MjY1NzcyNzgyNWNmYTE2
ZjIyMTUyMGJjMTAzNmViZTkzYi4uNGE4MTRmM2QwMmRmNjU2ZDMyN2I2Mjc5MGFlZmRkMGI2NTRi
MGZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQ
SUNhc3RFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJ
Q2FzdEVmbC5oCkBAIC0zNyw2ICszNywxMCBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tWaWV3UmVm
LCBXZWJWaWV3KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUG9wdXBJdGVtUmVmLCBXZWJQb3B1cEl0
ZW1FZmwpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiwgV2ViUG9w
dXBNZW51TGlzdGVuZXJFZmwpCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorV0tfQUREX0FQ
SV9NQVBQSU5HKFdLVG91Y2hFdmVudFJlZiwgV2ViVG91Y2hFdmVudCkKKyNlbmRpZgorCiAvLyBF
bnVtIGNvbnZlcnNpb25zLgogaW5saW5lIFdLUG9wdXBJdGVtVGV4dERpcmVjdGlvbiB0b0FQSShX
ZWJDb3JlOjpUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ1YzU0MTBk
ZWZmMGExYjI4ZDM4NWM1ZDgzZWQ4YjdjYTdmZjdlMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuY3BwCkBAIC0wLDAgKzEs
MTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXS0V2ZW50RWZsLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJX
ZWJFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworc3RhdGljIGlubGluZSBXZWJFdmVudDo6VHlwZSB0eXBlRm9yRXZlbnQoV0tFdmVu
dFR5cGUgdHlwZSkKK3sKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmICh0eXBlID09
IGtXS0V2ZW50VHlwZVRvdWNoU3RhcnQpCisgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hT
dGFydDsKKyAgICBpZiAodHlwZSA9PSBrV0tFdmVudFR5cGVUb3VjaE1vdmUpCisgICAgICAgIHJl
dHVybiBXZWJFdmVudDo6VG91Y2hNb3ZlOworICAgIGlmICh0eXBlID09IGtXS0V2ZW50VHlwZVRv
dWNoRW5kKQorICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoRW5kOworICAgIGlmICh0eXBl
ID09IGtXS0V2ZW50VHlwZVRvdWNoQ2FuY2VsKQorICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRv
dWNoQ2FuY2VsOworI2VuZGlmCisKKyAgICByZXR1cm4gV2ViRXZlbnQ6Ok5vVHlwZTsKK30KKwor
c3RhdGljIGlubGluZSBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVyc0ZvcldLRXZlbnQodW5z
aWduZWQgbW9kaWZpZXJzKQoreworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisKKyAgICBpZiAo
bW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSkKKyAgICAgICAgcmVzdWx0IHw9
IFdlYkV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmll
cnNDb250cm9sS2V5KQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6OkNvbnRyb2xLZXk7Cisg
ICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5KQorICAgICAgICByZXN1
bHQgfD0gV2ViRXZlbnQ6OkFsdEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRNb2Rp
ZmllcnNNZXRhS2V5KQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6Ok1ldGFLZXk7CisKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4ocmVzdWx0KTsKK30KKwor
V0tUb3VjaEV2ZW50UmVmIFdLVG91Y2hFdmVudENyZWF0ZShXS1RvdWNoRXZlbnQqIGV2ZW50KQor
eworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgaWYgKCFldmVudCkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiB0b3VjaFBvaW50czsK
KyAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0ZSBzdGF0ZTsKKworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBldmVudC0+bnVtVG91Y2hQb2ludHMgJiYgaSA8IGtX
S01heGltdW1Ub3VjaFBvaW50c1BlclRvdWNoRXZlbnQ7ICsraSkgeworICAgICAgICBjb25zdCBX
S1RvdWNoUG9pbnQmIHBvaW50ID0gZXZlbnQtPnRvdWNoUG9pbnRzW2ldOworICAgICAgICBzd2l0
Y2ggKHBvaW50LnN0YXRlKSB7CisgICAgICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hS
ZWxlYXNlZDoKKyAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3Vj
aFJlbGVhc2VkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga1dLVG91Y2hQb2lu
dFN0YXRlVG91Y2hNb3ZlZDoKKyAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaE1vdmVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga1dLVG91
Y2hQb2ludFN0YXRlVG91Y2hQcmVzc2VkOgorICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoU3RhdGlvbmFyeToKKyAgICAgICAgICAgIHN0YXRl
ID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaENhbmNlbGxlZDoKKyAg
ICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaENhbmNlbGxlZDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIHRvdWNoUG9pbnRzLmFwcGVuZChXZWJQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQuaWQsIHN0
YXRlLCB0b0ludFBvaW50KHBvaW50LnNjcmVlblBvc2l0aW9uKSwgdG9JbnRQb2ludChwb2ludC5w
b3NpdGlvbiksIHRvSW50U2l6ZShwb2ludC5yYWRpdXMpLCBwb2ludC5yb3RhdGlvbkFuZ2xlLCBw
b2ludC5mb3JjZSkpOworICAgIH0KKworICAgIFdlYlRvdWNoRXZlbnQqIHdlYlRvdWNoRXZlbnQg
PSBuZXcgV2ViVG91Y2hFdmVudCh0eXBlRm9yRXZlbnQoZXZlbnQtPnR5cGUpLCB0b3VjaFBvaW50
cywgbW9kaWZpZXJzRm9yV0tFdmVudChldmVudC0+bW9kaWZpZXJzKSwgZXZlbnQtPnRpbWVzdGFt
cCk7CisKKyAgICByZXR1cm4gdG9BUEkod2ViVG91Y2hFdmVudCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShldmVudCk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwordm9pZCBXS1RvdWNo
RXZlbnRSZWxlYXNlKFdLVG91Y2hFdmVudFJlZiB0b3VjaEV2ZW50UmVmKQoreworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgZGVsZXRlIHRvSW1wbCh0b3VjaEV2ZW50UmVmKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHRvdWNoRXZlbnRSZWYpOworI2VuZGlmCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFh
ZTQxZDQ1OTkxODZhOGNlMWU0NDUzNjJhOTJlZTFlZTEyMTZkYzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaApAQCAtMCww
ICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV0tFdmVudEVmbF9oCisjZGVmaW5lIFdLRXZlbnRFZmxfaAorCisjaW5jbHVkZSA8V2ViS2l0
Mi9XS0V2ZW50Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5Lmg+CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSBXS0V2ZW50VHlwZSB7Cisg
ICAga1dLRXZlbnRUeXBlTm9UeXBlID0gLTEsCisgICAga1dLRXZlbnRUeXBlVG91Y2hTdGFydCwK
KyAgICBrV0tFdmVudFR5cGVUb3VjaE1vdmUsCisgICAga1dLRXZlbnRUeXBlVG91Y2hFbmQsCisg
ICAga1dLRXZlbnRUeXBlVG91Y2hDYW5jZWwKK307Cit0eXBlZGVmIGVudW0gV0tFdmVudFR5cGUg
V0tFdmVudFR5cGU7CisKK2VudW0gV0tUb3VjaFBvaW50U3RhdGUgeworICAgIGtXS1RvdWNoUG9p
bnRTdGF0ZVRvdWNoUmVsZWFzZWQsCisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQcmVzc2Vk
LAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoTW92ZWQsCisgICAga1dLVG91Y2hQb2ludFN0
YXRlVG91Y2hTdGF0aW9uYXJ5LAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoQ2FuY2VsbGVk
Cit9OwordHlwZWRlZiBlbnVtIFdLVG91Y2hQb2ludFN0YXRlIFdLVG91Y2hQb2ludFN0YXRlOwor
CitzdHJ1Y3QgV0tUb3VjaFBvaW50IHsKKyAgICB1bnNpZ25lZCBpZDsKKyAgICBXS1RvdWNoUG9p
bnRTdGF0ZSBzdGF0ZTsKKyAgICBXS1BvaW50IHBvc2l0aW9uOworICAgIFdLUG9pbnQgc2NyZWVu
UG9zaXRpb247CisgICAgV0tTaXplIHJhZGl1czsKKyAgICBmbG9hdCByb3RhdGlvbkFuZ2xlOwor
ICAgIGZsb2F0IGZvcmNlOworfTsKK3R5cGVkZWYgc3RydWN0IFdLVG91Y2hQb2ludCBXS1RvdWNo
UG9pbnQ7CisKK2VudW0geyBrV0tNYXhpbXVtVG91Y2hQb2ludHNQZXJUb3VjaEV2ZW50ID0gNSB9
OworCitzdHJ1Y3QgV0tUb3VjaEV2ZW50IHsKKyAgICBXS0V2ZW50VHlwZSB0eXBlOworICAgIFdL
RXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzOworICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgdW5z
aWduZWQgbnVtVG91Y2hQb2ludHM7CisgICAgV0tUb3VjaFBvaW50IHRvdWNoUG9pbnRzW2tXS01h
eGltdW1Ub3VjaFBvaW50c1BlclRvdWNoRXZlbnRdOworfTsKK3R5cGVkZWYgc3RydWN0IFdLVG91
Y2hFdmVudCBXS1RvdWNoRXZlbnQ7CisKK1dLX0VYUE9SVCBXS1RvdWNoRXZlbnRSZWYgV0tUb3Vj
aEV2ZW50Q3JlYXRlKFdLVG91Y2hFdmVudCogZXZlbnQpOworV0tfRVhQT1JUIHZvaWQgV0tUb3Vj
aEV2ZW50UmVsZWFzZShXS1RvdWNoRXZlbnRSZWYgdG91Y2hFdmVudFJlZik7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0V2ZW50RWZsX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAppbmRleCAyMTBmMmUy
MzllNDBmMTYzNmM0MjlhZmI1MWE4MWUxZmJmZDdlZDA0Li44YWY1YzI5M2M0MDZkZjAzMmEwMTVl
ZTc3OGU3NTc0NWU4ZDk2Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS1ZpZXcuY3BwCkBAIC0xMDcsMyArMTA3LDEzIEBAIFdLSW1hZ2VSZWYgV0tWaWV3Q3Jl
YXRlU25hcHNob3QoV0tWaWV3UmVmIHZpZXdSZWYpCiAgICAgRXdrVmlldyogZXdrVmlldyA9IHRv
RXdrVmlldyh0b0ltcGwodmlld1JlZiktPmV2YXNPYmplY3QoKSk7CiAgICAgcmV0dXJuIFdLSW1h
Z2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKGV3a1ZpZXctPnRha2VTbmFwc2hvdCgpLmdldCgpLCAw
IC8qIG9wdGlvbnMgKi8pOwogfQorCit2b2lkIFdLVmlld1NlbmRUb3VjaEV2ZW50KFdLVmlld1Jl
ZiB2aWV3UmVmLCBXS1RvdWNoRXZlbnRSZWYgdG91Y2hFdmVudFJlZikKK3sKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorICAgIHRvSW1wbCh2aWV3UmVmKS0+c2VuZFRvdWNoRXZlbnQodG9JbXBs
KHRvdWNoRXZlbnRSZWYpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZpZXdSZWYpOworICAg
IFVOVVNFRF9QQVJBTSh0b3VjaEV2ZW50UmVmKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKaW5kZXggMzI1NDZjNjhjZjk1YzhhNWY3MjM5
NWVmNTFiNzdlMjc4NTQ3MTdjMS4uNzg0ZjQ3MzdlZjYzNjNlZWNhZGYwNzgxOWU1MzVjNmY1NTE5
N2U0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1Zp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCkBA
IC03NSw2ICs3NSw4IEBAIFdLX0VYUE9SVCBFdmFzX09iamVjdCogV0tWaWV3R2V0RXZhc09iamVj
dChXS1ZpZXdSZWYpOwogCiBXS19FWFBPUlQgV0tJbWFnZVJlZiBXS1ZpZXdDcmVhdGVTbmFwc2hv
dChXS1ZpZXdSZWYpOwogCitXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZW5kVG91Y2hFdmVudChXS1Zp
ZXdSZWYsIFdLVG91Y2hFdmVudFJlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggNDIyZTk4
ZjNjYjgwZDY5MjcwZWYzNGY4NTQ2NDI2NzFhYzdlNWQ4MS4uZTg3MWFkMGI4ZjUzNjRmMDg1YzE3
NWE0MWY0ODhkNDFiM2VjNTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fp
cm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHREaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgog
I2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC03OSw3ICs4MCw2IEBAIGNsYXNzIENvbG9yOwogY2xh
c3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOwogY2xhc3MgQ3Vyc29yOwogY2xhc3MgSW50U2l6
ZTsKLWNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogfQogCiBjbGFzcyBFd2tDb250ZXh0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RvdWNoLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3VjaC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODZhMTBlNTZiMGM0NWVkYTkwMTM5YjhiMGNjYTIzODVlNjNlZTExYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3VjaC5jcHAK
QEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0
cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3RvdWNoLmgiCisKKyNpbmNsdWRlICJld2tf
dG91Y2hfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9B
ZmZpbmVUcmFuc2Zvcm0uaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dLVG91Y2hF
dmVudCogY3JlYXRlV0tUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0
IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRv
RGV2aWNlU2NyZWVuKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwb2lu
dHMsIDApOworCisgICAgV0tUb3VjaEV2ZW50KiB0b3VjaEV2ZW50ID0gbmV3IFdLVG91Y2hFdmVu
dDsKKyAgICB0b3VjaEV2ZW50LT50eXBlID0gc3RhdGljX2Nhc3Q8V0tFdmVudFR5cGU+KHR5cGUp
OworICAgIHRvdWNoRXZlbnQtPnRpbWVzdGFtcCA9IGVjb3JlX3RpbWVfZ2V0KCk7CisgICAgdG91
Y2hFdmVudC0+bnVtVG91Y2hQb2ludHMgPSBlaW5hX2xpc3RfY291bnQocG9pbnRzKTsKKyAgICBp
ZiAodG91Y2hFdmVudC0+bnVtVG91Y2hQb2ludHMgPiBrV0tNYXhpbXVtVG91Y2hQb2ludHNQZXJU
b3VjaEV2ZW50KQorICAgICAgICB0b3VjaEV2ZW50LT5udW1Ub3VjaFBvaW50cyA9IGVpbmFfbGlz
dF9jb3VudChwb2ludHMpOworCisgICAgdG91Y2hFdmVudC0+bW9kaWZpZXJzID0gMDsKKyAgICBp
ZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIlNoaWZ0IikpCisgICAgICAg
IHRvdWNoRXZlbnQtPm1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5OworICAg
IGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiQ29udHJvbCIpKQorICAg
ICAgICB0b3VjaEV2ZW50LT5tb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNDb250cm9sS2V5
OworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiQWx0IikpCisg
ICAgICAgIHRvdWNoRXZlbnQtPm1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc0FsdEtleTsK
KyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIk1ldGEiKSkKKyAg
ICAgICAgdG91Y2hFdmVudC0+bW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleTsK
KworICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdDsKKyAgICBkb3VibGUgeDsKKyAgICBkb3VibGUg
eTsKKyAgICB1bnNpZ25lZCBpbmRleDsKKyAgICBmb3IgKGxpc3QgPSBwb2ludHMsIGluZGV4ID0g
MDsgbGlzdCAmJiBpbmRleCA8IHRvdWNoRXZlbnQtPm51bVRvdWNoUG9pbnRzOyBsaXN0ID0gZWlu
YV9saXN0X25leHQobGlzdCksICsraW5kZXgpIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBw
b2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGVpbmFfbGlzdF9kYXRhX2dldChs
aXN0KSk7CisgICAgICAgIFdLVG91Y2hQb2ludCYgd2tUb3VjaFBvaW50ID0gdG91Y2hFdmVudC0+
dG91Y2hQb2ludHNbaW5kZXhdOworCisgICAgICAgIHdrVG91Y2hQb2ludC5pZCA9IHBvaW50LT5p
ZDsKKyAgICAgICAgdG9XZWJDb250ZW50Lm1hcChwb2ludC0+eCwgcG9pbnQtPnksIHgsIHkpOwor
ICAgICAgICB3a1RvdWNoUG9pbnQucG9zaXRpb24gPSBXS1BvaW50TWFrZSh4LCB5KTsKKyAgICAg
ICAgdG9EZXZpY2VTY3JlZW4ubWFwKHBvaW50LT54LCBwb2ludC0+eSwgeCwgeSk7CisgICAgICAg
IHdrVG91Y2hQb2ludC5zY3JlZW5Qb3NpdGlvbiA9IFdLUG9pbnRNYWtlKHgsIHkpOworICAgICAg
ICB3a1RvdWNoUG9pbnQucmFkaXVzID0gV0tTaXplTWFrZSgwLCAwKTsKKyAgICAgICAgd2tUb3Vj
aFBvaW50LnJvdGF0aW9uQW5nbGUgPSAwOworICAgICAgICB3a1RvdWNoUG9pbnQuZm9yY2UgPSAw
OworCisgICAgICAgIHN3aXRjaCAocG9pbnQtPnN0YXRlKSB7CisgICAgICAgIGNhc2UgRVZBU19U
T1VDSF9QT0lOVF9VUDoKKyAgICAgICAgICAgIHdrVG91Y2hQb2ludC5zdGF0ZSA9IGtXS1RvdWNo
UG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFVkFTX1RPVUNIX1BPSU5UX01PVkU6CisgICAgICAgICAgICB3a1RvdWNoUG9pbnQuc3RhdGUg
PSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9ET1dOOgorICAgICAgICAgICAgd2tUb3VjaFBvaW50
LnN0YXRlID0ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQcmVzc2VkOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9TVElMTDoKKyAgICAgICAgICAgIHdr
VG91Y2hQb2ludC5zdGF0ZSA9IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoU3RhdGlvbmFyeTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfQ0FOQ0VMOgor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgd2tUb3VjaFBvaW50LnN0YXRlID0ga1dLVG91
Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiB0b3VjaEV2ZW50OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RvdWNoX3ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3VjaF9wcml2YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTFiYTAxNzMwODI0OTZkOWViOWU1MjJhMTU1YWY5ODc2ZjU5NDI3MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3VjaF9wcml2YXRlLmgK
QEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0
cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIGV3a190b3VjaF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3RvdWNoX3ByaXZhdGVfaAorCisj
aW5jbHVkZSAiV0tFdmVudEVmbC5oIgorI2luY2x1ZGUgImV3a190b3VjaC5oIgorI2luY2x1ZGUg
PEVpbmEuaD4KKyNpbmNsdWRlIDxFdmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IEFmZmluZVRyYW5zZm9ybTsKK30KKworV0tUb3VjaEV2ZW50KiBjcmVhdGVXS1RvdWNoRXZlbnQo
RXdrX1RvdWNoX0V2ZW50X1R5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFz
X01vZGlmaWVyKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQs
IGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4pOworCisjZW5k
aWYgLy8gZXdrX3RvdWNoX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IGM5MWQ3YjhmZDgzYThlYmUwYTk4NmU2MTExNWRlZmJm
ZjlkYzE5MDMuLjlkMjczZTA2MTYxOWFjY2Q0YmZiMDNmYTczZjIxZGJkOWYwMWVmMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCisj
aW5jbHVkZSAiV0tFdmVudEVmbC5oIgogI2luY2x1ZGUgIldLRmluZE9wdGlvbnMuaCIKICNpbmNs
dWRlICJXS0luc3BlY3Rvci5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCkBAIC00OSw4ICs1
MCwxMSBAQAogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFiYXNlX3ByaXZhdGUuaCIKICNpbmNs
dWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZXR0aW5nc19wcml2YXRlLmgiCisj
aW5jbHVkZSAiZXdrX3RvdWNoX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxFY29yZV9FdmFzLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dL
UGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ZpZXcuaD4KICNpbmNsdWRlIDx3dGYv
VW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTM3Mywx
MCArMzc3LDEyIEBAIEVpbmFfQm9vbCBld2tfdmlld19tb3VzZV9ldmVudHNfZW5hYmxlZF9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfZmVlZF90b3Vj
aF9ldmVudChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwg
Y29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycykK
IHsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChwb2ludHMsIGZhbHNlKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgaW1wbCwgZmFsc2UpOwogCi0gICAgaW1wbC0+cGFnZSgpLT5oYW5kbGVUb3VjaEV2
ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMsIGltcGwtPnRy
YW5zZm9ybUZyb21TY2VuZSgpLCBpbXBsLT50cmFuc2Zvcm1Ub1NjcmVlbigpLCBlY29yZV90aW1l
X2dldCgpKSk7CisgICAgT3duUHRyPFdLVG91Y2hFdmVudD4gdG91Y2hFdmVudCA9IGFkb3B0UHRy
KGNyZWF0ZVdLVG91Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgaW1wbC0+dHJhbnNm
b3JtRnJvbVNjZW5lKCksIGltcGwtPnRyYW5zZm9ybVRvU2NyZWVuKCkpKTsKKyAgICBXS1RvdWNo
RXZlbnRSZWYgdG91Y2hFdmVudFJlZiA9IFdLVG91Y2hFdmVudENyZWF0ZSh0b3VjaEV2ZW50Lmdl
dCgpKTsKKyAgICBXS1ZpZXdTZW5kVG91Y2hFdmVudChpbXBsLT53a1ZpZXcoKSwgdG91Y2hFdmVu
dFJlZik7CisgICAgV0tUb3VjaEV2ZW50UmVsZWFzZSh0b3VjaEV2ZW50UmVmKTsKIAogICAgIHJl
dHVybiB0cnVlOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3Bw
CmluZGV4IGMzYzA2NjZlODZjNDkwMTdhMGU5OTE5OGU5OGM5MDViZjhiY2VmMWIuLjU4OGU1NmVh
Y2VlNWNhZmI2NmZiYjlkMzQyY2IyZWJlYWYyZjYwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3LmNwcApAQCAtNDQ5LDQgKzQ0OSwxMiBAQCB2b2lkIFdlYlZpZXc6OnBh
Z2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiAgICAgICAgIG1fZXdrVmlldy0+c2NoZWR1bGVV
cGRhdGVEaXNwbGF5KCk7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBXZWJW
aWV3OjpzZW5kVG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50KiB0b3VjaEV2ZW50KQorewor
ICAgIEFTU0VSVCh0b3VjaEV2ZW50KTsKKyAgICBtX3BhZ2UtPmhhbmRsZVRvdWNoRXZlbnQoTmF0
aXZlV2ViVG91Y2hFdmVudCgqdG91Y2hFdmVudCkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAppbmRleCBhYjIy
OGIwMTY0NTE5YzhmNGZiZGE5Y2MzYzhkYTQwOTljZTc3NzNhLi4zNjA5NTBhMWI0ZDYyODEwMzY2
YTg2ZjU2NzljMGYxMDNhYWYzNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZp
ZXcuaApAQCAtNjQsNiArNjQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2b2lkIHNl
bmRUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQqKTsKKyNlbmRpZgorCiAgICAgLy8gVmll
dyBjbGllbnQuCiAgICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLVmlld0NsaWVudCop
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190669</attachid>
            <date>2013-02-28 00:31:28 -0800</date>
            <delta_ts>2013-02-28 00:44:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130228172738.patch</filename>
            <type>text/plain</type>
            <size>68033</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2RmY2RiNjZjZGFhMDAz
NjY3OWZiYmJkZTIwODc5MDEyNzYxMDQ3My4uNjhkNDdlNDUyN2YwODQyN2E0ODIwOTAwZjdiNDU2
ZTMxZmMzMWFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMyBAQAorMjAxMy0wMi0yOCAgRXVu
bWkgTGVlICA8ZXVubWkxNS5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBB
ZGQgV0syIEMgQVBJIHRvIGhhbmRsZSB0b3VjaCBldmVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg5MTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3VjaCBldmVudHMgZm9yIG91ciB0YXJnZXQg
cGxhdGZvcm1zIGRpZmZlciAoWElucHV0MiwgV2F5bGFuZCwgVGl6ZW4pIHNvCisgICAgICAgIGZv
ciB0aGUgRUZMIHBvcnQgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGZlZWQgZXZlbnRzIG1hbnVhbGx5
LgorCisgICAgICAgIFRvIGtlZXAgb3VyIGN1cnJlbnQgQVBJIGZvciBkZXNrdG9wIEVGTC9Fbmxp
Z2h0ZW5tZW50IHdvcmtpbmcsIHdlIGNvbnZlcnQKKyAgICAgICAgb3VyIGN1cnJlbnRseSBsaW1p
dGVkIEVGTCBldmVudHMgdG8gdGhlIG5ldyBFRkwgc3BlY2lmaWMgQyBXS1RvdWNoRXZlbnQgdHlw
ZS4KKworICAgICAgICBUaGUgV0tWaWV3U2VuZFRvdWNoRXZlbnQgY2FuIGJlIHVzZWQgZm9yIGFu
eSB1c2UtY2FzZSAocGxhdGZvcm0vcHJvZHVjdCkKKyAgICAgICAgbm90IGludm9sdmluZyB0aGUg
RUZMIGV2ZW50cy4KKworICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHdlIG1ha2Ugc3VyZSB0byBh
dm9pZCB1c2luZyBXSzIgaW50ZXJuYWxzIGluIG91ciBFRkwgQVBJCisgICAgICAgIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgV2ViVG91Y2hFdmVudCBzdGFydHMgdG8g
aW5oZXJpdCBhbiBBUElPYmplY3QgaW4gb3JkZXIgdG8KKyAgICAgICAgY29udmVydCBXZWJUb3Vj
aEV2ZW50KiB0byBXS1RvdWNoRXZlbnRSZWYuCisKKyAgICAgICAgV2ViRXZlbnQ6OnR5cGUoKSBp
cyBjaGFuZ2VkIHRvIFdlYkV2ZW50OjpldmVudFR5cGUoKSB0byBwcmV2ZW50IHRvIGJlCisgICAg
ICAgIG1peGVkIHVwIHdpdGggQVBJT2JqZWN0Ojp0eXBlKCkgYmVjYXVzZSBXZWJUb3VjaEV2ZW50
IGluaGVyaXRzIGJvdGgKKyAgICAgICAgV2ViRXZlbnQgYW5kIEFQSU9iamVjdC4KKworICAgICAg
ICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9lZmwvV0tCYXNl
RWZsLmg6CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9O
YXRpdmVXZWJUb3VjaEV2ZW50Lmg6CisgICAgICAgIChOYXRpdmVXZWJUb3VjaEV2ZW50KToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViRXZlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudDo6
V2ViRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudDo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRXZlbnQ6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50OjpldmVudFR5cGUpOgorICAgICAgICAoV2ViRXZl
bnQpOgorICAgICAgICAoV2ViVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNo
RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnQ6OnR5cGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6V2ViS2l0MlBs
YXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudCk6
CisgICAgICAgICogU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50OjpXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRvdWNoRXZlbnQ6OmlzVG91Y2hFdmVudFR5cGUpOgorICAgICAgICAqIFNo
YXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5h
dGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQpOgorICAgICAgICAqIFNoYXJl
ZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvZWZsL1dlYkV2ZW50
RmFjdG9yeS5oOgorICAgICAgICAoV2ViRXZlbnRGYWN0b3J5KToKKyAgICAgICAgKiBTaGFyZWQv
cXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3ZWJFdmVudFR5cGVG
b3JFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50
RWZsLmNwcDogQWRkZWQuCisgICAgICAgICh0eXBlRm9yRXZlbnQpOgorICAgICAgICAobW9kaWZp
ZXJzRm9yV0tFdmVudCk6CisgICAgICAgIChXS1RvdWNoRXZlbnRDcmVhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdTZW5kVG91Y2hFdmVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcDoKKyAgICAgICAgKEV3a1ZpZXc6OmZlZWRUb3Vj
aEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdG91Y2guY3BwOiBB
ZGRlZC4KKyAgICAgICAgKGNyZWF0ZVdLVG91Y2hFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3RvdWNoX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZW5kV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFu
ZGxlVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZUV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2VuZFRvdWNoRXZlbnQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5oOgorICAgICAgICAoV2ViVmlldyk6CisgICAg
ICAgICogVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6ZG9uZVdpdGhHZXN0dXJlRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmRvbmVXaXRoVG91Y2hFdmVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VP
dmVybGF5LmNwcDoKKyAgICAgICAgKFBhZ2VPdmVybGF5Q2xpZW50SW1wbDo6bW91c2VFdmVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdp
bk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6YW55TW91c2VCdXR0b25Jc0Rvd24pOgorICAgICAg
ICAoV2ViS2l0OjpyaWdodE1vdXNlQnV0dG9uSXNEb3duKToKKyAgICAgICAgKFdlYktpdDo6aW5p
dGlhbGl6ZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1IYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUtleWJv
YXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5k
bGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
eDExL05ldHNjYXBlUGx1Z2luWDExLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2V0WEJ1dHRvbkV2
ZW50RmllbGRzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFu
ZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OnNldFhLZXlFdmVudEZpZWxkcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZUtleWJvYXJkRXZl
bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAg
ICAgICAoV2ViS2l0OjpldmVudFR5cGVGcm9tV2ViRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNsaWNr
ZWRMaW5rKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdp
bi5tbToKKyAgICAgICAgKFdlYktpdDo6U2ltcGxlUERGUGx1Z2luOjpoYW5kbGVNb3VzZUV2ZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RXZlbnREaXNw
YXRjaGVyOjpzZW5kRGlkUmVjZWl2ZUV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6
bW91c2VFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsaW5rQ2xpY2tlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6Om1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3aGVlbEV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlS2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjprZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omdlc3R1cmVF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnRvdWNoRXZlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBl
cmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZv
cm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudCk6CisKIDIwMTMtMDItMjcgIENzYWJhIE9zenRy
b2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbV0syXSBPbmUgbW9yZSB1bnJl
dmlld2VkIGJ1aWxkZml4IGZvciBFRkwsIEdUSyBhbmQgUXQgYWZ0ZXIgcjE0NDIxOC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggN2ZhNGVjOTc1MWI0ZjQxZjI4NGMxMzhiODU5YWJiOTA4
ODVkZGJjZS4uMTljZjdlODQ5OTJkZmIzM2UzNGQ2MTMzZDg3NGVlMzA3ZmEwMWMwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTM3LDYgKzM3LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0
Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvY2Fpcm8vV0tJY29uRGF0YWJhc2VDYWly
by5jcHAKIAorICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLUGFnZUVmbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dL
UG9wdXBJdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cE1lbnVMaXN0ZW5l
ci5jcHAKQEAgLTc2LDYgKzc3LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19zdG9yYWdlX21hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RleHRf
Y2hlY2tlci5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdG91Y2guY3BwCiAgICAgVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a191cmxfcmVzcG9uc2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hl
bWVfcmVxdWVzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9l
ZmwvV0tCYXNlRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVm
bC5oCmluZGV4IDcyZmJmZDMwM2MwMWM3MmI1NTNiZGY2NDQ4MmQ1MmI0YTJiMmM0ZDguLjUyZjMy
MzQ1ZTIyYzEyYmI1MTNhOTI4Nzk4YzIyOWE4ZGJiOGIzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaApAQCAtMjcsNSArMjcsNiBAQAogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWV3KiBXS1ZpZXdSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1BvcHVwSXRlbSogV0tQb3B1cEl0ZW1SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1BvcHVwTWVudUxpc3RlbmVyKiBXS1BvcHVwTWVudUxpc3RlbmVyUmVmOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tUb3VjaEV2ZW50KiBXS1RvdWNoRXZlbnRSZWY7CiAK
ICNlbmRpZiAvKiBXS0Jhc2VFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4
IDVlY2ViNTYyMmYzZjA3MTg4MWNmODU0Y2U1NjY1MjAwYjI4NDQzYjYuLjc1NTFkODg3ZmEzMTUy
ZWNlZTBjZjE3ODhmNzNiMmJkMDdiMmUxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgK
QEAgLTEzNiw2ICsxMzYsOSBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oRUZMKQogICAgICAgICBU
eXBlUG9wdXBNZW51SXRlbSwKICNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
ICAgIFR5cGVUb3VjaEV2ZW50LAorI2VuZGlmCiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkFQSU9i
amVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hF
dmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaAppbmRl
eCBjNjNkMWNmMDcwNWJjYTFlYTU0ZDM4NGYzZjBmNWJjODMxMWFkNjJhLi5jYWM3NDIyNGU5N2My
YTkxYWQyMTJiNDg2MjliN2E2YzBkZTlhNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
YXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTMwLDEwICszMCw2IEBACiAKICNpZiBQTEFURk9STShR
VCkKICNpbmNsdWRlIDxRVG91Y2hFdmVudD4KLSNlbGlmIFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRl
ICJld2tfdG91Y2guaCIKLSNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9BZmZp
bmVUcmFuc2Zvcm0uaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQzLDcgKzM5
LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKFFUKQogICAgIGV4cGxpY2l0IE5hdGl2ZVdlYlRv
dWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBjb25zdCBRVHJhbnNmb3JtJiBmcm9tSXRlbVRy
YW5zZm9ybSk7CiAjZWxpZiBQTEFURk9STShFRkwpCi0gICAgTmF0aXZlV2ViVG91Y2hFdmVudChF
d2tfVG91Y2hfRXZlbnRfVHlwZSwgY29uc3QgRWluYV9MaXN0KiwgY29uc3QgRXZhc19Nb2RpZmll
ciosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1w
KTsKKyAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQm
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViRXZlbnQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmNw
cAppbmRleCBmNjdkMTMwZWUzZTVjYWM4YTY3YjMyOWIxM2NkODVlYTJlMDBiZjI0Li41YTEwNzQ0
MDIzNGJhNmE3ZmU1MjRhZTAxYmQwZGYxMTFmZWZmMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJF
dmVudC5jcHAKQEAgLTMzLDE0ICszMywxNCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkV2
ZW50OjpXZWJFdmVudCgpCi0gICAgOiBtX3R5cGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KE5vVHlw
ZSkpCisgICAgOiBtX2V2ZW50VHlwZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oTm9UeXBlKSkKICAg
ICAsIG1fbW9kaWZpZXJzKDApCiAgICAgLCBtX3RpbWVzdGFtcCgwKQogewogfQogCiBXZWJFdmVu
dDo6V2ViRXZlbnQoVHlwZSB0eXBlLCBNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0
YW1wKQotICAgIDogbV90eXBlKHR5cGUpCisgICAgOiBtX2V2ZW50VHlwZSh0eXBlKQogICAgICwg
bV9tb2RpZmllcnMobW9kaWZpZXJzKQogICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQogewpA
QCAtNDgsMTQgKzQ4LDE0IEBAIFdlYkV2ZW50OjpXZWJFdmVudChUeXBlIHR5cGUsIE1vZGlmaWVy
cyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCiAKIHZvaWQgV2ViRXZlbnQ6OmVuY29kZShD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8
PCBtX3R5cGU7CisgICAgZW5jb2RlciA8PCBtX2V2ZW50VHlwZTsKICAgICBlbmNvZGVyIDw8IG1f
bW9kaWZpZXJzOwogICAgIGVuY29kZXIgPDwgbV90aW1lc3RhbXA7CiB9CiAKIGJvb2wgV2ViRXZl
bnQ6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYkV2ZW50JiBy
ZXN1bHQpCiB7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV90eXBlKSkKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2V2ZW50VHlwZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX21vZGlmaWVycykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJF
dmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmgKaW5kZXggMDg3NmY2ZGNh
OGY3NjY1YmM4OGQ3MDM1MmExZTg0NmE0MmJmZWZjMC4uZjQ2OWIzOTlkNTBmZThjZWZiMjFjNTdl
NDY1YmZkOTBiMmU0OTg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmgKQEAgLTM2LDYgKzM2
LDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNl
IENvcmVJUEMgewogICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKICAgICBjbGFzcyBBcmd1bWVu
dEVuY29kZXI7CkBAIC04Niw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgQ2Fwc0xvY2tLZXkg
PSAxIDw8IDQsCiAgICAgfTsKIAotICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFR5cGU+KG1fdHlwZSk7IH0KKyAgICBUeXBlIGV2ZW50VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PFR5cGU+KG1fZXZlbnRUeXBlKTsgfQogCiAgICAgYm9vbCBzaGlmdEtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJzICYgU2hpZnRLZXk7IH0KICAgICBib29sIGNv
bnRyb2xLZXkoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVycyAmIENvbnRyb2xLZXk7IH0KQEAg
LTEwNyw3ICsxMTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciYsIFdlYkV2ZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgdWludDMy
X3QgbV90eXBlOyAvLyBUeXBlCisgICAgdWludDMyX3QgbV9ldmVudFR5cGU7IC8vIEV2ZW50IHR5
cGUKICAgICB1aW50MzJfdCBtX21vZGlmaWVyczsgLy8gTW9kaWZpZXJzCiAgICAgZG91YmxlIG1f
dGltZXN0YW1wOwogfTsKQEAgLTMxOCwxMiArMzIzLDIxIEBAIHByaXZhdGU6CiB9OwogCiAvLyBG
SVhNRTogTW92ZSB0aGlzIGNsYXNzIHRvIGl0cyBvd24gaGVhZGVyIGZpbGUuCi1jbGFzcyBXZWJU
b3VjaEV2ZW50IDogcHVibGljIFdlYkV2ZW50IHsKK2NsYXNzIFdlYlRvdWNoRXZlbnQgOiBwdWJs
aWMgV2ViRXZlbnQsIHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgorICAgIHN0YXRpYyBjb25z
dCBBUElPYmplY3Q6OlR5cGUgQVBJVHlwZSA9IFR5cGVUb3VjaEV2ZW50OworCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViVG91Y2hFdmVudD4gY3JlYXRlKFdlYkV2ZW50OjpUeXBlIHR5cGUsIFZl
Y3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IHRvdWNoUG9pbnRzLCBNb2RpZmllcnMgbW9kaWZp
ZXJzLCBkb3VibGUgdGltZXN0YW1wKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJUb3VjaEV2ZW50KHR5cGUsIHRvdWNoUG9pbnRzLCBtb2RpZmllcnMsIHRpbWVzdGFtcCkp
OworICAgIH0KKwogICAgIFdlYlRvdWNoRXZlbnQoKSB7IH0KLSAKKwogICAgIC8vIEZJWE1FOiBJ
dCB3b3VsZCBiZSBuaWNlIG5vdCB0byBoYXZlIHRvIGNvcHkgdGhlIFZlY3RvciBoZXJlLgotICAg
IFdlYlRvdWNoRXZlbnQoVHlwZSwgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4sIE1vZGlm
aWVycywgZG91YmxlIHRpbWVzdGFtcCk7CisgICAgV2ViVG91Y2hFdmVudChXZWJFdmVudDo6VHlw
ZSwgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4sIE1vZGlmaWVycywgZG91YmxlIHRpbWVz
dGFtcCk7CisKKyAgICBXZWJUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKIAogICAg
IGNvbnN0IFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+JiB0b3VjaFBvaW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fdG91Y2hQb2ludHM7IH0KIApAQCAtMzMxLDcgKzM0NSw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiwgV2ViVG91
Y2hFdmVudCYpOwogICAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGJvb2wgaXNUb3VjaEV2ZW50VHlw
ZShUeXBlKTsKKyAgICB2aXJ0dWFsIEFQSU9iamVjdDo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gQVBJVHlwZTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNUb3VjaEV2ZW50VHlwZShXZWJFdmVu
dDo6VHlwZSk7CiAKICAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBtX3RvdWNoUG9p
bnRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZl
cnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAK
aW5kZXggODFhZjdlYjI3MDJlNjQwNjIxZTI4Y2JhNzUwOGE2ODM2Y2U0MzZmNi4uNmIzNTE2ZTk5
ZWUxMzVmNjljY2RhMWU0M2EwNDBiZWVjOWU2NzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAg
IFdlYktpdDJQbGF0Zm9ybU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgd2ViRXZlbnQp
CiAgICAgewogICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50Ci0gICAgICAgIHN3aXRjaCAod2ViRXZl
bnQudHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAod2ViRXZlbnQuZXZlbnRUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VEb3duOgogICAgICAgICAgICAgbV90eXBlID0gV2Vi
Q29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VQcmVzc2VkOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgIFdlYktpdDJQbGF0Zm9ybUtleWJvYXJkRXZl
bnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgd2ViRXZlbnQpCiAgICAgewogICAgICAgICAvLyBQ
bGF0Zm9ybUV2ZW50Ci0gICAgICAgIHN3aXRjaCAod2ViRXZlbnQudHlwZSgpKSB7CisgICAgICAg
IHN3aXRjaCAod2ViRXZlbnQuZXZlbnRUeXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6
S2V5RG93bjoKICAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Oktl
eURvd247CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwMiw3ICsyMDIsNyBAQCBwdWJsaWM6CiAg
ICAgV2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgd2Vi
RXZlbnQpCiAgICAgewogICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50Ci0gICAgICAgIHN3aXRjaCAo
d2ViRXZlbnQudHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAod2ViRXZlbnQuZXZlbnRUeXBlKCkp
IHsKICAgICAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgogICAgICAgICAg
ICAgbV90eXBlID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yODUsNyArMjg1LDcgQEAgcHVibGljOgogICAgIFdlYktp
dDJQbGF0Zm9ybVRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgd2ViRXZlbnQpCiAgICAg
ewogICAgICAgICAvLyBQbGF0Zm9ybUV2ZW50Ci0gICAgICAgIHN3aXRjaCAod2ViRXZlbnQudHlw
ZSgpKSB7CisgICAgICAgIHN3aXRjaCAod2ViRXZlbnQuZXZlbnRUeXBlKCkpIHsKICAgICAgICAg
Y2FzZSBXZWJFdmVudDo6VG91Y2hTdGFydDogCiAgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3Jl
OjpQbGF0Zm9ybUV2ZW50OjpUb3VjaFN0YXJ0OwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAKaW5kZXggMDViNWZlNTM3YjQ3OTIxY2UwODBi
NDgxMGJiNzZmZDNjYzg2MzM0Yy4uN2Y4Y2IyMWUyZTllYmQ5MTQxN2EyOThhZDAyMjc4MGRkOWIz
ODZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcApAQCAtNDAsNiAr
NDAsMTMgQEAgV2ViVG91Y2hFdmVudDo6V2ViVG91Y2hFdmVudChXZWJFdmVudDo6VHlwZSB0eXBl
LCBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PgogICAgIEFTU0VSVChpc1RvdWNoRXZlbnRU
eXBlKHR5cGUpKTsKIH0KIAorV2ViVG91Y2hFdmVudDo6V2ViVG91Y2hFdmVudChjb25zdCBXZWJU
b3VjaEV2ZW50JiB0b3VjaEV2ZW50KQorICAgIDogV2ViRXZlbnQodG91Y2hFdmVudC5ldmVudFR5
cGUoKSwgdG91Y2hFdmVudC5tb2RpZmllcnMoKSwgdG91Y2hFdmVudC50aW1lc3RhbXAoKSkKKyAg
ICAsIG1fdG91Y2hQb2ludHModG91Y2hFdmVudC50b3VjaFBvaW50cygpKQoreworICAgIEFTU0VS
VChpc1RvdWNoRXZlbnRUeXBlKHR5cGUpKTsKK30KKwogdm9pZCBXZWJUb3VjaEV2ZW50OjplbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIFdlYkV2
ZW50OjplbmNvZGUoZW5jb2Rlcik7CkBAIC01OCw3ICs2NSw3IEBAIGJvb2wgV2ViVG91Y2hFdmVu
dDo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViVG91Y2hFdmVu
dCYgcmVzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViVG91Y2hFdmVudDo6aXNUb3Vj
aEV2ZW50VHlwZShUeXBlIHR5cGUpCitib29sIFdlYlRvdWNoRXZlbnQ6OmlzVG91Y2hFdmVudFR5
cGUoV2ViRXZlbnQ6OlR5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gdHlwZSA9PSBUb3VjaFN0YXJ0
IHx8IHR5cGUgPT0gVG91Y2hNb3ZlIHx8IHR5cGUgPT0gVG91Y2hFbmQgfHwgdHlwZSA9PSBUb3Vj
aENhbmNlbDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZl
V2ViVG91Y2hFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdl
YlRvdWNoRXZlbnRFZmwuY3BwCmluZGV4IDcyNzk2ODM1YTY2NDdiMDI3MmRlZjIzZWU2YzIwYjE4
MTM5YTkxNjUuLjgwMTg5MDBlNDIyNGNkZDFjZGUxZGFlZDMyMjI3MTBkYzg3YjBhN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZs
LmNwcApAQCAtMjgsMTIgKzI4LDEwIEBACiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICNpbmNs
dWRlICJOYXRpdmVXZWJUb3VjaEV2ZW50LmgiCiAKLSNpbmNsdWRlICJXZWJFdmVudEZhY3Rvcnku
aCIKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdl
YlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBw
b2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29uc3QgV2ViQ29yZTo6QWZm
aW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApCi0gICAgOiBXZWJUb3VjaEV2ZW50
KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlm
aWVycywgdG9XZWJDb250ZW50LCB0b0RldmljZVNjcmVlbiwgdGltZXN0YW1wKSkKK05hdGl2ZVdl
YlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYgd2Vi
VG91Y2hFdmVudCkKKyAgICA6IFdlYlRvdWNoRXZlbnQod2ViVG91Y2hFdmVudCkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCmluZGV4IGI5
OTkyNTA4NDM4ZDcwZjE0ZjExMzlhOTQxMzQ0MDAwYWI5OGNjZTQuLmIyNWM2YmRiNDBhZDdjZTg1
YWEwOGZkY2Y3N2JmMTdiMmY2YzY2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZs
L1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTIwNCw1NyArMjA0LDQgQEAgV2ViS2V5Ym9hcmRFdmVu
dCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVu
dF9LZXlfVXAKICAgICAgICAgY29udmVydE1pbGxpc2Vjb25kVG9TZWNvbmQoZXZlbnQtPnRpbWVz
dGFtcCkpOwogfQogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXN0YXRpYyBpbmxpbmUgV2Vi
RXZlbnQ6OlR5cGUgdHlwZUZvclRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSkK
LXsKLSAgICBpZiAodHlwZSA9PSBFV0tfVE9VQ0hfU1RBUlQpCi0gICAgICAgIHJldHVybiBXZWJF
dmVudDo6VG91Y2hTdGFydDsKLSAgICBpZiAodHlwZSA9PSBFV0tfVE9VQ0hfTU9WRSkKLSAgICAg
ICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaE1vdmU7Ci0gICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNI
X0VORCkKLSAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaEVuZDsKLSAgICBpZiAodHlwZSA9
PSBFV0tfVE9VQ0hfQ0FOQ0VMKQotICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoQ2FuY2Vs
OwotCi0gICAgcmV0dXJuIFdlYkV2ZW50OjpOb1R5cGU7Ci19Ci0KLVdlYlRvdWNoRXZlbnQgV2Vi
RXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5
cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmll
cnMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRvRGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1wKQotewotICAgIFZlY3RvcjxX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IHRvdWNoUG9pbnRzOwotICAgIFdlYlBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hQb2ludFN0YXRlIHN0YXRlOwotICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdDsK
LSAgICB2b2lkKiBpdGVtOwotICAgIEVJTkFfTElTVF9GT1JFQUNIKHBvaW50cywgbGlzdCwgaXRl
bSkgewotICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHBvaW50ID0gc3RhdGljX2Nhc3Q8RXdrX1Rv
dWNoX1BvaW50Kj4oaXRlbSk7Ci0KLSAgICAgICAgc3dpdGNoIChwb2ludC0+c3RhdGUpIHsKLSAg
ICAgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX1VQOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX01PVkU6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdl
YlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfRE9XTjoKLSAgICAgICAgICAgIHN0YXRlID0gV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX1NUSUxMOgotICAgICAgICAgICAgc3RhdGUgPSBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfQ0FOQ0VMOgotICAgICAgICAgICAgc3Rh
dGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2VsbGVkOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgSW50UG9pbnQg
cG9zKHBvaW50LT54LCBwb2ludC0+eSk7Ci0gICAgICAgIHRvdWNoUG9pbnRzLmFwcGVuZChXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQtPmlkLCBzdGF0ZSwgdG9EZXZpY2VTY3JlZW4ubWFwUG9p
bnQocG9zKSwgdG9XZWJDb250ZW50Lm1hcFBvaW50KHBvcykpKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gV2ViVG91Y2hFdmVudCh0eXBlRm9yVG91Y2hFdmVudCh0eXBlKSwgdG91Y2hQb2ludHMsIG1v
ZGlmaWVyc0ZvckV2ZW50KG1vZGlmaWVycyksIHRpbWVzdGFtcCk7Ci19Ci0jZW5kaWYKLQogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZs
L1dlYkV2ZW50RmFjdG9yeS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZh
Y3RvcnkuaAppbmRleCBlNDQ0ZGIyOWQ1MjM4NDAyMjA0MWU1ZGI4ZDI0NDBjMzBkODIzZTgwLi4y
ODcyMDc4NDRkYWRkZjEwMmQ4YTU4OTQwYWM1NTZhNmI1NGZhNTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZp
bmUgV2ViRXZlbnRGYWN0b3J5X2gKIAogI2luY2x1ZGUgIldlYkV2ZW50LmgiCi0jaW5jbHVkZSAi
ZXdrX3RvdWNoLmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5l
VHJhbnNmb3JtLmg+CiAKQEAgLTQxLDkgKzQwLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJX
aGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVl
bCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkFmZmlu
ZVRyYW5zZm9ybSYpOwogICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGNyZWF0ZVdlYktleWJv
YXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfRG93biopOwogICAgIHN0YXRpYyBXZWJLZXli
b2FyZEV2ZW50IGNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAq
KTsKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50IGNy
ZWF0ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUsIGNvbnN0IEVpbmFfTGlzdCos
IGNvbnN0IEV2YXNfTW9kaWZpZXIqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBkb3VibGUgdGltZXN0YW1wKTsKLSNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcAppbmRleCAwMjQwNzI5YzBiYjg4MDhhMDcxNjQwMmVl
MDE5NTZiNGNlZDEwZjQzLi41NWVjMDdkMzc0YzQ3MTAzMGQxN2Q0NWM3MzE5NzkwZTQzMDhiN2M5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJFdmVudEZhY3RvcnlRdC5jcHAK
QEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRv
bkZvckV2ZW50KFFNb3VzZUV2ZW50ICpldmVudCkKIAogc3RhdGljIFdlYkV2ZW50OjpUeXBlIHdl
YkV2ZW50VHlwZUZvckV2ZW50KGNvbnN0IFFFdmVudCogZXZlbnQpCiB7Ci0gICAgc3dpdGNoIChl
dmVudC0+dHlwZSgpKSB7CisgICAgc3dpdGNoIChldmVudC0+ZXZlbnRUeXBlKCkpIHsKICAgICBj
YXNlIFFFdmVudDo6TW91c2VCdXR0b25QcmVzczoKICAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpN
b3VzZURvd247CiAgICAgY2FzZSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oCmluZGV4IGQz
YmNhOTI2NTc3Mjc4MjVjZmExNmYyMjE1MjBiYzEwMzZlYmU5M2IuLjRhODE0ZjNkMDJkZjY1NmQz
MjdiNjI3OTBhZWZkZDBiNjU0YjBmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaApAQCAtMzcsNiArMzcsMTAgQEAgV0tfQUREX0FQ
SV9NQVBQSU5HKFdLVmlld1JlZiwgV2ViVmlldykKIFdLX0FERF9BUElfTUFQUElORyhXS1BvcHVw
SXRlbVJlZiwgV2ViUG9wdXBJdGVtRWZsKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUG9wdXBNZW51
TGlzdGVuZXJSZWYsIFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsKQogCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKK1dLX0FERF9BUElfTUFQUElORyhXS1RvdWNoRXZlbnRSZWYsIFdlYlRvdWNoRXZl
bnQpCisjZW5kaWYKKwogLy8gRW51bSBjb252ZXJzaW9ucy4KIGlubGluZSBXS1BvcHVwSXRlbVRl
eHREaXJlY3Rpb24gdG9BUEkoV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MTE0MjE3ZjQ1NWNlMjhkZmRhMmNkZmVjMWI5NjM1NDhmNTc1NDM1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50
RWZsLmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1z
dW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tFdmVudEVmbC5oIgorCisjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6OlR5cGUg
dHlwZUZvckV2ZW50KFdLRXZlbnRUeXBlIHR5cGUpCit7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICBpZiAodHlwZSA9PSBrV0tFdmVudFR5cGVUb3VjaFN0YXJ0KQorICAgICAgICByZXR1
cm4gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7CisgICAgaWYgKHR5cGUgPT0ga1dLRXZlbnRUeXBlVG91
Y2hNb3ZlKQorICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoTW92ZTsKKyAgICBpZiAodHlw
ZSA9PSBrV0tFdmVudFR5cGVUb3VjaEVuZCkKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3Vj
aEVuZDsKKyAgICBpZiAodHlwZSA9PSBrV0tFdmVudFR5cGVUb3VjaENhbmNlbCkKKyAgICAgICAg
cmV0dXJuIFdlYkV2ZW50OjpUb3VjaENhbmNlbDsKKyNlbmRpZgorCisgICAgcmV0dXJuIFdlYkV2
ZW50OjpOb1R5cGU7Cit9CisKK3N0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2Rp
ZmllcnNGb3JXS0V2ZW50KHVuc2lnbmVkIG1vZGlmaWVycykKK3sKKyAgICB1bnNpZ25lZCByZXN1
bHQgPSAwOworCisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXkp
CisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6U2hpZnRLZXk7CisgICAgaWYgKG1vZGlmaWVy
cyAmIGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2
ZW50OjpDb250cm9sS2V5OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc0Fs
dEtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpBbHRLZXk7CisgICAgaWYgKG1vZGlm
aWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2
ZW50OjpNZXRhS2V5OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkV2ZW50OjpNb2RpZmll
cnM+KHJlc3VsdCk7Cit9CisKK1dLVG91Y2hFdmVudFJlZiBXS1RvdWNoRXZlbnRDcmVhdGUoV0tU
b3VjaEV2ZW50KiBldmVudCkKK3sKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmICgh
ZXZlbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQ
b2ludD4gdG91Y2hQb2ludHM7CisgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBvaW50
U3RhdGUgc3RhdGU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZXZlbnQtPm51bVRv
dWNoUG9pbnRzICYmIGkgPCBrV0tNYXhpbXVtVG91Y2hQb2ludHNQZXJUb3VjaEV2ZW50OyArK2kp
IHsKKyAgICAgICAgY29uc3QgV0tUb3VjaFBvaW50JiBwb2ludCA9IGV2ZW50LT50b3VjaFBvaW50
c1tpXTsKKyAgICAgICAgc3dpdGNoIChwb2ludC5zdGF0ZSkgeworICAgICAgICBjYXNlIGtXS1Rv
dWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQ6CisgICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoTW92ZWQ6CisgICAgICAgICAgICBzdGF0ZSA9
IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3NlZDoKKyAgICAgICAgICAg
IHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFN0YXRpb25hcnk6
CisgICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9u
YXJ5OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRl
VG91Y2hDYW5jZWxsZWQ6CisgICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hDYW5jZWxsZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKworICAgICAgICB0b3VjaFBvaW50cy5hcHBlbmQoV2ViUGxhdGZvcm1Ub3Vj
aFBvaW50KHBvaW50LmlkLCBzdGF0ZSwgdG9JbnRQb2ludChwb2ludC5zY3JlZW5Qb3NpdGlvbiks
IHRvSW50UG9pbnQocG9pbnQucG9zaXRpb24pLCB0b0ludFNpemUocG9pbnQucmFkaXVzKSwgcG9p
bnQucm90YXRpb25BbmdsZSwgcG9pbnQuZm9yY2UpKTsKKyAgICB9CisKKyAgICBSZWZQdHI8V2Vi
VG91Y2hFdmVudD4gd2ViVG91Y2hFdmVudCA9IFdlYlRvdWNoRXZlbnQ6OmNyZWF0ZSh0eXBlRm9y
RXZlbnQoZXZlbnQtPnR5cGUpLCB0b3VjaFBvaW50cywgbW9kaWZpZXJzRm9yV0tFdmVudChldmVu
dC0+bW9kaWZpZXJzKSwgZXZlbnQtPnRpbWVzdGFtcCk7CisgICAgcmV0dXJuIHRvQVBJKHdlYlRv
dWNoRXZlbnQucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShl
dmVudCk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk0M2Y1NDM4NWRiYzJl
NjM3YjMxZDZjNTFjNWZkNjczYTEwMThhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5oCkBAIC0wLDAgKzEsODMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDEzIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0V2ZW50RWZs
X2gKKyNkZWZpbmUgV0tFdmVudEVmbF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLRXZlbnQuaD4K
KyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0cnkuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCitlbnVtIFdLRXZlbnRUeXBlIHsKKyAgICBrV0tFdmVudFR5
cGVOb1R5cGUgPSAtMSwKKyAgICBrV0tFdmVudFR5cGVUb3VjaFN0YXJ0LAorICAgIGtXS0V2ZW50
VHlwZVRvdWNoTW92ZSwKKyAgICBrV0tFdmVudFR5cGVUb3VjaEVuZCwKKyAgICBrV0tFdmVudFR5
cGVUb3VjaENhbmNlbAorfTsKK3R5cGVkZWYgZW51bSBXS0V2ZW50VHlwZSBXS0V2ZW50VHlwZTsK
KworZW51bSBXS1RvdWNoUG9pbnRTdGF0ZSB7CisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hS
ZWxlYXNlZCwKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFByZXNzZWQsCisgICAga1dLVG91
Y2hQb2ludFN0YXRlVG91Y2hNb3ZlZCwKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFN0YXRp
b25hcnksCisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQKK307Cit0eXBlZGVm
IGVudW0gV0tUb3VjaFBvaW50U3RhdGUgV0tUb3VjaFBvaW50U3RhdGU7CisKK3N0cnVjdCBXS1Rv
dWNoUG9pbnQgeworICAgIHVuc2lnbmVkIGlkOworICAgIFdLVG91Y2hQb2ludFN0YXRlIHN0YXRl
OworICAgIFdLUG9pbnQgcG9zaXRpb247CisgICAgV0tQb2ludCBzY3JlZW5Qb3NpdGlvbjsKKyAg
ICBXS1NpemUgcmFkaXVzOworICAgIGZsb2F0IHJvdGF0aW9uQW5nbGU7CisgICAgZmxvYXQgZm9y
Y2U7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tUb3VjaFBvaW50IFdLVG91Y2hQb2ludDsKKworZW51
bSB7IGtXS01heGltdW1Ub3VjaFBvaW50c1BlclRvdWNoRXZlbnQgPSA1IH07CisKK3N0cnVjdCBX
S1RvdWNoRXZlbnQgeworICAgIFdLRXZlbnRUeXBlIHR5cGU7CisgICAgV0tFdmVudE1vZGlmaWVy
cyBtb2RpZmllcnM7CisgICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICB1bnNpZ25lZCBudW1Ub3Vj
aFBvaW50czsKKyAgICBXS1RvdWNoUG9pbnQgdG91Y2hQb2ludHNba1dLTWF4aW11bVRvdWNoUG9p
bnRzUGVyVG91Y2hFdmVudF07Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tUb3VjaEV2ZW50IFdLVG91
Y2hFdmVudDsKKworV0tfRVhQT1JUIFdLVG91Y2hFdmVudFJlZiBXS1RvdWNoRXZlbnRDcmVhdGUo
V0tUb3VjaEV2ZW50KiBldmVudCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisK
KyNlbmRpZiAvKiBXS0V2ZW50RWZsX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tWaWV3LmNwcAppbmRleCAxNzc5MTFmYjIzMzkyYmUyZGVmODM0YzM1Y2Q2NWIy
YzYwMGI4OTM5Li4yN2Q2Zjk3NjAxYWYxNmZkZmE0YjYwODM0OTBiOTczMGY1ZGMwMzRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCkBAIC0xNDgs
MyArMTQ4LDEzIEBAIFdLSW1hZ2VSZWYgV0tWaWV3Q3JlYXRlU25hcHNob3QoV0tWaWV3UmVmIHZp
ZXdSZWYpCiAgICAgRXdrVmlldyogZXdrVmlldyA9IHRvRXdrVmlldyh0b0ltcGwodmlld1JlZikt
PmV2YXNPYmplY3QoKSk7CiAgICAgcmV0dXJuIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNl
KGV3a1ZpZXctPnRha2VTbmFwc2hvdCgpLmdldCgpLCAwIC8qIG9wdGlvbnMgKi8pOwogfQorCit2
b2lkIFdLVmlld1NlbmRUb3VjaEV2ZW50KFdLVmlld1JlZiB2aWV3UmVmLCBXS1RvdWNoRXZlbnRS
ZWYgdG91Y2hFdmVudFJlZikKK3sKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHRvSW1w
bCh2aWV3UmVmKS0+c2VuZFRvdWNoRXZlbnQodG9JbXBsKHRvdWNoRXZlbnRSZWYpKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHZpZXdSZWYpOworICAgIFVOVVNFRF9QQVJBTSh0b3VjaEV2ZW50
UmVmKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmgKaW5kZXggNzM0NTU2NjNiYzQ0ZDU4NGQ4YmI5NjIxMWYxODZkZjI5NGJiNTU3MS4uZjIz
MGY4NDU0NDQ3NGJiZDNiMThkMzM4ZmYyMGVlNmZlMGZlMDNjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCkBAIC04OSw2ICs4OSw4IEBAIFdLX0VYUE9S
VCBFdmFzX09iamVjdCogV0tWaWV3R2V0RXZhc09iamVjdChXS1ZpZXdSZWYpOwogCiBXS19FWFBP
UlQgV0tJbWFnZVJlZiBXS1ZpZXdDcmVhdGVTbmFwc2hvdChXS1ZpZXdSZWYpOwogCitXS19FWFBP
UlQgdm9pZCBXS1ZpZXdTZW5kVG91Y2hFdmVudChXS1ZpZXdSZWYsIFdLVG91Y2hFdmVudFJlZik7
CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4IDhmMzQzOWI5MDM2ZDA5ZGU5MTBhNjJhNjZk
YTFjNTVhNDNlNjhmODUuLmMyYTUyYmJhMTI3YzQ1MDBjMDhhZDJjN2VhMWY1ZTM1ZWRiODBkZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiU25hcHNob3RJbWFnZUdMLmgiCiAjaW5jbHVkZSAiVmll
d0NsaWVudEVmbC5oIgogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIldLRXZl
bnRFZmwuaCIKICNpbmNsdWRlICJXS0dlb21ldHJ5LmgiCiAjaW5jbHVkZSAiV0tOdW1iZXIuaCIK
ICNpbmNsdWRlICJXS1BhZ2VHcm91cC5oIgpAQCAtNTgsNiArNTksNyBAQAogI2luY2x1ZGUgImV3
a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbl9wcml2YXRlLmgiCiAj
aW5jbHVkZSAiZXdrX3NldHRpbmdzX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdG91Y2hfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAjaW5jbHVkZSAiZXdrX3dpbmRvd19mZWF0
dXJlc19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgpAQCAtNjkyLDcgKzY5NCw4
IEBAIHZvaWQgRXdrVmlldzo6c2V0TW91c2VFdmVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBFd2tWaWV3OjpmZWVkVG91Y2hFdmVudChFd2tf
VG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgRXZh
c19Nb2RpZmllciogbW9kaWZpZXJzKQogewotICAgIHBhZ2UoKS0+aGFuZGxlVG91Y2hFdmVudChO
YXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCB3ZWJWaWV3KCktPnRy
YW5zZm9ybUZyb21TY2VuZSgpLCB0cmFuc2Zvcm1Ub1NjcmVlbigpLCBlY29yZV90aW1lX2dldCgp
KSk7CisgICAgT3duUHRyPFdLVG91Y2hFdmVudD4gdG91Y2hFdmVudCA9IGFkb3B0UHRyKGNyZWF0
ZVdLVG91Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgd2ViVmlldygpLT50cmFuc2Zv
cm1Gcm9tU2NlbmUoKSwgdHJhbnNmb3JtVG9TY3JlZW4oKSkpOworICAgIFdLVmlld1NlbmRUb3Vj
aEV2ZW50KHdrVmlldygpLCBhZG9wdFdLKFdLVG91Y2hFdmVudENyZWF0ZSh0b3VjaEV2ZW50Lmdl
dCgpKSkuZ2V0KCkpOwogfQogCiB2b2lkIEV3a1ZpZXc6OnNldFRvdWNoRXZlbnRzRW5hYmxlZChi
b29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgK
aW5kZXggNzFkYWQyZDU3YTcwMWU2ZjU5MmMzYzY2N2M0ODEzNDU3ODBlMTc1Mi4uNGFiOGFkZDFj
MzU1ZjdkM2Y1ZjM0OTgzMjg5Mjk0NmI0Nzc5OTk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHREaXJlY3Rpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC04MCw3ICs4MSw2IEBAIGNsYXNz
IENvbG9yOwogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOwogY2xhc3MgQ3Vyc29yOwog
Y2xhc3MgSW50U2l6ZTsKLWNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogfQogCiBjbGFzcyBF
d2tDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3RvdWNoLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3Vj
aC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODZhMTBlNTZiMGM0NWVkYTkwMTM5YjhiMGNjYTIzODVlNjNlZTEx
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a190b3VjaC5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBT
YW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3RvdWNoLmgiCisKKyNp
bmNsdWRlICJld2tfdG91Y2hfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK1dLVG91Y2hFdmVudCogY3JlYXRlV0tUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBl
IHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01vZGlmaWVyKiBtb2Rp
ZmllcnMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOX1ZBTChwb2ludHMsIDApOworCisgICAgV0tUb3VjaEV2ZW50KiB0b3VjaEV2ZW50ID0gbmV3
IFdLVG91Y2hFdmVudDsKKyAgICB0b3VjaEV2ZW50LT50eXBlID0gc3RhdGljX2Nhc3Q8V0tFdmVu
dFR5cGU+KHR5cGUpOworICAgIHRvdWNoRXZlbnQtPnRpbWVzdGFtcCA9IGVjb3JlX3RpbWVfZ2V0
KCk7CisgICAgdG91Y2hFdmVudC0+bnVtVG91Y2hQb2ludHMgPSBlaW5hX2xpc3RfY291bnQocG9p
bnRzKTsKKyAgICBpZiAodG91Y2hFdmVudC0+bnVtVG91Y2hQb2ludHMgPiBrV0tNYXhpbXVtVG91
Y2hQb2ludHNQZXJUb3VjaEV2ZW50KQorICAgICAgICB0b3VjaEV2ZW50LT5udW1Ub3VjaFBvaW50
cyA9IGVpbmFfbGlzdF9jb3VudChwb2ludHMpOworCisgICAgdG91Y2hFdmVudC0+bW9kaWZpZXJz
ID0gMDsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIlNoaWZ0
IikpCisgICAgICAgIHRvdWNoRXZlbnQtPm1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc1No
aWZ0S2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiQ29u
dHJvbCIpKQorICAgICAgICB0b3VjaEV2ZW50LT5tb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmll
cnNDb250cm9sS2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJz
LCAiQWx0IikpCisgICAgICAgIHRvdWNoRXZlbnQtPm1vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlm
aWVyc0FsdEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywg
Ik1ldGEiKSkKKyAgICAgICAgdG91Y2hFdmVudC0+bW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZp
ZXJzTWV0YUtleTsKKworICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdDsKKyAgICBkb3VibGUgeDsK
KyAgICBkb3VibGUgeTsKKyAgICB1bnNpZ25lZCBpbmRleDsKKyAgICBmb3IgKGxpc3QgPSBwb2lu
dHMsIGluZGV4ID0gMDsgbGlzdCAmJiBpbmRleCA8IHRvdWNoRXZlbnQtPm51bVRvdWNoUG9pbnRz
OyBsaXN0ID0gZWluYV9saXN0X25leHQobGlzdCksICsraW5kZXgpIHsKKyAgICAgICAgRXdrX1Rv
dWNoX1BvaW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGVpbmFfbGlz
dF9kYXRhX2dldChsaXN0KSk7CisgICAgICAgIFdLVG91Y2hQb2ludCYgd2tUb3VjaFBvaW50ID0g
dG91Y2hFdmVudC0+dG91Y2hQb2ludHNbaW5kZXhdOworCisgICAgICAgIHdrVG91Y2hQb2ludC5p
ZCA9IHBvaW50LT5pZDsKKyAgICAgICAgdG9XZWJDb250ZW50Lm1hcChwb2ludC0+eCwgcG9pbnQt
PnksIHgsIHkpOworICAgICAgICB3a1RvdWNoUG9pbnQucG9zaXRpb24gPSBXS1BvaW50TWFrZSh4
LCB5KTsKKyAgICAgICAgdG9EZXZpY2VTY3JlZW4ubWFwKHBvaW50LT54LCBwb2ludC0+eSwgeCwg
eSk7CisgICAgICAgIHdrVG91Y2hQb2ludC5zY3JlZW5Qb3NpdGlvbiA9IFdLUG9pbnRNYWtlKHgs
IHkpOworICAgICAgICB3a1RvdWNoUG9pbnQucmFkaXVzID0gV0tTaXplTWFrZSgwLCAwKTsKKyAg
ICAgICAgd2tUb3VjaFBvaW50LnJvdGF0aW9uQW5nbGUgPSAwOworICAgICAgICB3a1RvdWNoUG9p
bnQuZm9yY2UgPSAwOworCisgICAgICAgIHN3aXRjaCAocG9pbnQtPnN0YXRlKSB7CisgICAgICAg
IGNhc2UgRVZBU19UT1VDSF9QT0lOVF9VUDoKKyAgICAgICAgICAgIHdrVG91Y2hQb2ludC5zdGF0
ZSA9IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX01PVkU6CisgICAgICAgICAgICB3a1RvdWNo
UG9pbnQuc3RhdGUgPSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9ET1dOOgorICAgICAgICAgICAg
d2tUb3VjaFBvaW50LnN0YXRlID0ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQcmVzc2VkOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9TVElMTDoKKyAg
ICAgICAgICAgIHdrVG91Y2hQb2ludC5zdGF0ZSA9IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoU3Rh
dGlvbmFyeTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9J
TlRfQ0FOQ0VMOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgd2tUb3VjaFBvaW50LnN0
YXRlID0ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0b3VjaEV2ZW50OworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RvdWNoX3ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3VjaF9wcml2YXRlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTFiYTAxNzMwODI0OTZkOWViOWU1MjJhMTU1YWY5ODc2ZjU5NDI3MQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3Vj
aF9wcml2YXRlLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBT
YW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIGV3a190b3VjaF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3RvdWNoX3By
aXZhdGVfaAorCisjaW5jbHVkZSAiV0tFdmVudEVmbC5oIgorI2luY2x1ZGUgImV3a190b3VjaC5o
IgorI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxFdmFzLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEFmZmluZVRyYW5zZm9ybTsKK30KKworV0tUb3VjaEV2ZW50KiBjcmVhdGVX
S1RvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRz
LCBjb25zdCBFdmFzX01vZGlmaWVyKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0
b1dlYkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3Jl
ZW4pOworCisjZW5kaWYgLy8gZXdrX3RvdWNoX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiODAxZDU1YThhNzMxOWM2NzljMmIyNWUwY2Q3
MDgzMTFjNTg5YjU1Li45YTliOTVlNDg3OTY0ZDk3MDQxYzI5MDY5NjNjYmY0ODY4ODYwYjg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTA5MSw3ICsx
MDkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRXZlbnQoY29uc3QgTmF0aXZl
V2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIE5PVEU6IFRo
aXMgZG9lcyBub3Qgc3RhcnQgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyIGJlY2F1c2UgbW91c2Ug
bW92ZSBzaG91bGQgbm90IGluZGljYXRlIGludGVyYWN0aW9uLgotICAgIGlmIChldmVudC50eXBl
KCkgIT0gV2ViRXZlbnQ6Ok1vdXNlTW92ZSkKKyAgICBpZiAoZXZlbnQuZXZlbnRUeXBlKCkgIT0g
V2ViRXZlbnQ6Ok1vdXNlTW92ZSkKICAgICAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1Rp
bWVyKCktPnN0YXJ0KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChtX3Byb2Nlc3NpbmdNb3Vz
ZU1vdmVFdmVudCkgewpAQCAtMTEwNiwxMyArMTEwNiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aGFuZGxlTW91c2VFdmVudChjb25zdCBOYXRpdmVXZWJNb3VzZUV2ZW50JiBldmVudCkKICAgICAv
LyBkaXNwbGF5IGEgcG9wdXAgbWVudSBmb3Igc2VsZWN0IGVsZW1lbnRzLiBXaGVuIHRoZSB1c2Vy
IGNoYW5nZXMgdGhlIHNlbGVjdGVkIGl0ZW0sCiAgICAgLy8gd2UgZmFrZSBhIG1vdXNlIHVwIGV2
ZW50IGJ5IHVzaW5nIHRoaXMgc3RvcmVkIGRvd24gZXZlbnQuIFRoaXMgZXZlbnQgZ2V0cyBjbGVh
cmVkCiAgICAgLy8gd2hlbiB0aGUgbW91c2UgdXAgbWVzc2FnZSBpcyByZWNlaXZlZCBmcm9tIFdl
YlByb2Nlc3MuCi0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKQor
ICAgIGlmIChldmVudC5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKQogICAgICAg
ICBtX2N1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50ID0gYWRvcHRQdHIobmV3IE5hdGl2
ZVdlYk1vdXNlRXZlbnQoZXZlbnQpKTsKIAogICAgIGlmIChtX3Nob3VsZFNlbmRFdmVudHNTeW5j
aHJvbm91c2x5KSB7CiAgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwogICAgICAgICBtX3By
b2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50U3luY0ZvclRlc3Rp
bmcoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudFN5bmNGb3JUZXN0aW5nOjpS
ZXBseShoYW5kbGVkKSwgbV9wYWdlSUQpOwotICAgICAgICBkaWRSZWNlaXZlRXZlbnQoZXZlbnQu
dHlwZSgpLCBoYW5kbGVkKTsKKyAgICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LmV2ZW50VHlw
ZSgpLCBoYW5kbGVkKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOwogfQpAQCAtMTIxOSw3
ICsxMjE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbmRXaGVlbEV2ZW50KGNvbnN0IFdlYldo
ZWVsRXZlbnQmIGV2ZW50KQogICAgIGlmIChtX3Nob3VsZFNlbmRFdmVudHNTeW5jaHJvbm91c2x5
KSB7CiAgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwogICAgICAgICBtX3Byb2Nlc3MtPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaGVlbEV2ZW50U3luY0ZvclRlc3RpbmcoZXZlbnQp
LCBNZXNzYWdlczo6V2ViUGFnZTo6V2hlZWxFdmVudFN5bmNGb3JUZXN0aW5nOjpSZXBseShoYW5k
bGVkKSwgbV9wYWdlSUQpOwotICAgICAgICBkaWRSZWNlaXZlRXZlbnQoZXZlbnQudHlwZSgpLCBo
YW5kbGVkKTsKKyAgICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LmV2ZW50VHlwZSgpLCBoYW5k
bGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTIzMSw3ICsxMjMxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBMT0coS2V5SGFuZGxpbmcsICJXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZl
bnQ6ICVzIiwgd2ViS2V5Ym9hcmRFdmVudFR5cGVTdHJpbmcoZXZlbnQudHlwZSgpKSk7CisgICAg
TE9HKEtleUhhbmRsaW5nLCAiV2ViUGFnZVByb3h5OjpoYW5kbGVLZXlib2FyZEV2ZW50OiAlcyIs
IHdlYktleWJvYXJkRXZlbnRUeXBlU3RyaW5nKGV2ZW50LmV2ZW50VHlwZSgpKSk7CiAKICAgICBt
X2tleUV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKIApAQCAtMTIzOSw3ICsxMjM5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKG1fc2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkp
IHsKICAgICAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CiAgICAgICAgIG1fcHJvY2Vzcy0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50U3luY0ZvclRlc3RpbmcoZXZlbnQpLCBN
ZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnRTeW5jRm9yVGVzdGluZzo6UmVwbHkoaGFuZGxlZCks
IG1fcGFnZUlEKTsKLSAgICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LnR5cGUoKSwgaGFuZGxl
ZCk7CisgICAgICAgIGRpZFJlY2VpdmVFdmVudChldmVudC5ldmVudFR5cGUoKSwgaGFuZGxlZCk7
CiAgICAgfSBlbHNlIGlmIChtX2tleUV2ZW50UXVldWUuc2l6ZSgpID09IDEpIC8vIE90aGVyd2lz
ZSwgc2VudCBmcm9tIERpZFJlY2VpdmVFdmVudCBtZXNzYWdlIGhhbmRsZXIuCiAgICAgICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQoZXZlbnQpLCBtX3BhZ2VJ
RCk7CiB9CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91
Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgaWYgKG1f
c2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkpIHsKICAgICAgICAgICAgIGJvb2wgaGFuZGxl
ZCA9IGZhbHNlOwogICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZTo6VG91Y2hFdmVudFN5bmNGb3JUZXN0aW5nKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6
OlRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZzo6UmVwbHkoaGFuZGxlZCksIG1fcGFnZUlEKTsKLSAg
ICAgICAgICAgIGRpZFJlY2VpdmVFdmVudChldmVudC50eXBlKCksIGhhbmRsZWQpOworICAgICAg
ICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LmV2ZW50VHlwZSgpLCBoYW5kbGVkKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlRvdWNoRXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CiAgICAgfSBlbHNlIHsKQEAgLTM0NTksNyAr
MzQ1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3Bh
cXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgIGNhc2UgV2ViRXZlbnQ6Okdlc3R1cmVTY3JvbGxF
bmQ6CiAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZVNpbmdsZVRhcDogewogICAgICAgICBXZWJH
ZXN0dXJlRXZlbnQgZXZlbnQgPSBtX2dlc3R1cmVFdmVudFF1ZXVlLmZpcnN0KCk7Ci0gICAgICAg
IE1FU1NBR0VfQ0hFQ0sodHlwZSA9PSBldmVudC50eXBlKCkpOworICAgICAgICBNRVNTQUdFX0NI
RUNLKHR5cGUgPT0gZXZlbnQuZXZlbnRUeXBlKCkpOwogCiAgICAgICAgIG1fZ2VzdHVyZUV2ZW50
UXVldWUucmVtb3ZlRmlyc3QoKTsKICAgICAgICAgbV9wYWdlQ2xpZW50LT5kb25lV2l0aEdlc3R1
cmVFdmVudChldmVudCwgaGFuZGxlZCk7CkBAIC0zNDkxLDcgKzM0OTEsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxl
ZCkKICAgICAgICAgTE9HKEtleUhhbmRsaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZl
bnQ6ICVzIiwgd2ViS2V5Ym9hcmRFdmVudFR5cGVTdHJpbmcodHlwZSkpOwogCiAgICAgICAgIE5h
dGl2ZVdlYktleWJvYXJkRXZlbnQgZXZlbnQgPSBtX2tleUV2ZW50UXVldWUuZmlyc3QoKTsKLSAg
ICAgICAgTUVTU0FHRV9DSEVDSyh0eXBlID09IGV2ZW50LnR5cGUoKSk7CisgICAgICAgIE1FU1NB
R0VfQ0hFQ0sodHlwZSA9PSBldmVudC5ldmVudFR5cGUoKSk7CiAKICAgICAgICAgbV9rZXlFdmVu
dFF1ZXVlLnJlbW92ZUZpcnN0KCk7CiAKQEAgLTM1MTIsNyArMzUxMiw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVk
KQogICAgIGNhc2UgV2ViRXZlbnQ6OlRvdWNoRW5kOgogICAgIGNhc2UgV2ViRXZlbnQ6OlRvdWNo
Q2FuY2VsOiB7CiAgICAgICAgIFF1ZXVlZFRvdWNoRXZlbnRzIHF1ZXVlZEV2ZW50cyA9IG1fdG91
Y2hFdmVudFF1ZXVlLmZpcnN0KCk7Ci0gICAgICAgIE1FU1NBR0VfQ0hFQ0sodHlwZSA9PSBxdWV1
ZWRFdmVudHMuZm9yd2FyZGVkRXZlbnQudHlwZSgpKTsKKyAgICAgICAgTUVTU0FHRV9DSEVDSyh0
eXBlID09IHF1ZXVlZEV2ZW50cy5mb3J3YXJkZWRFdmVudC5ldmVudFR5cGUoKSk7CiAgICAgICAg
IG1fdG91Y2hFdmVudFF1ZXVlLnJlbW92ZUZpcnN0KCk7CiAKICAgICAgICAgbV9wYWdlQ2xpZW50
LT5kb25lV2l0aFRvdWNoRXZlbnQocXVldWVkRXZlbnRzLmZvcndhcmRlZEV2ZW50LCBoYW5kbGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCmluZGV4IDJhM2FhOWM4
MjM2ZTVmZTFhMTFhMzMzNDI2ODY1Yzc5YTUyMjVlZWUuLmMyNjI2Zjg2YjM4YjAwZDlhZTVmZWM1
OTQ5ODkxMGExMjkwOGJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3
LmNwcApAQCAtNTQyLDQgKzU0MiwxMiBAQCB2b2lkIFdlYlZpZXc6OnBhZ2VUcmFuc2l0aW9uVmll
d3BvcnRSZWFkeSgpCiAgICAgbV9ld2tWaWV3LT5zY2hlZHVsZVVwZGF0ZURpc3BsYXkoKTsKIH0K
IAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIFdlYlZpZXc6OnNlbmRUb3VjaEV2ZW50
KGNvbnN0IFdlYlRvdWNoRXZlbnQqIHRvdWNoRXZlbnQpCit7CisgICAgQVNTRVJUKHRvdWNoRXZl
bnQpOworICAgIG1fcGFnZS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KCp0
b3VjaEV2ZW50KSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCmluZGV4IDQyYzhkMTNkMGYxZDUwZDQ5MzE2NzFl
OTBlNGRkNzkzNTVlMmVlZGUuLmUwODNmN2RlZWFmZjA5OTg1Mzk4ZmY4MzRjMzQwYjU5M2U1NDFl
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCkBAIC04MCw2ICs4MCwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBleGl0RnVsbFNjcmVlbigpOwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoY29uc3QgV2ViVG91
Y2hFdmVudCopOworI2VuZGlmCisKICAgICAvLyBWaWV3IGNsaWVudC4KICAgICB2b2lkIGluaXRp
YWxpemVDbGllbnQoY29uc3QgV0tWaWV3Q2xpZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKaW5kZXggYjgwNjEz
NDM4YjM1YmY5NmRlNzNiNGE2MDRkZGFjYTE0MzA0OTNkYS4uN2ZmN2QxZmY0MDVhMjhlNWYxYzMz
MWQ2MTc3ZTgyODZhNDBhNmM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKQEAgLTQ0Myw3ICs0NDMsNyBAQCB2b2lk
IFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlV2lsbFNldElucHV0TWV0aG9kU3RhdGUoKQog
CiB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6ZG9uZVdpdGhHZXN0dXJlRXZlbnQoY29uc3Qg
V2ViR2VzdHVyZUV2ZW50JiBldmVudCwgYm9vbCB3YXNFdmVudEhhbmRsZWQpCiB7Ci0gICAgaWYg
KGV2ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6R2VzdHVyZVNpbmdsZVRhcCkKKyAgICBpZiAoZXZl
bnQuZXZlbnRUeXBlKCkgIT0gV2ViRXZlbnQ6Okdlc3R1cmVTaW5nbGVUYXApCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fcG9zdHBvbmVUZXh0SW5wdXRTdGF0ZUNoYW5nZWQgPSBmYWxzZTsKQEAg
LTU4MywxMCArNTgzLDEwIEBAIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOjpoYW5kbGVJbnB1
dEV2ZW50KGNvbnN0IFFJbnB1dEV2ZW50KiBldmVudCkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBO
YXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCwgYm9vbCB3YXNFdmVudEhhbmRsZWQpCiB7Ci0gICAg
aWYgKHdhc0V2ZW50SGFuZGxlZCB8fCBldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6OlRvdWNoQ2Fu
Y2VsKSB7CisgICAgaWYgKHdhc0V2ZW50SGFuZGxlZCB8fCBldmVudC5ldmVudFR5cGUoKSA9PSBX
ZWJFdmVudDo6VG91Y2hDYW5jZWwpIHsKICAgICAgICAgbV9wYW5HZXN0dXJlUmVjb2duaXplci5j
YW5jZWwoKTsKICAgICAgICAgbV9waW5jaEdlc3R1cmVSZWNvZ25pemVyLmNhbmNlbCgpOwotICAg
ICAgICBpZiAoZXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpUb3VjaE1vdmUpCisgICAgICAgIGlm
IChldmVudC5ldmVudFR5cGUoKSAhPSBXZWJFdmVudDo6VG91Y2hNb3ZlKQogICAgICAgICAgICAg
bV90YXBHZXN0dXJlUmVjb2duaXplci5jYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCmluZGV4IDQzNjRjZTk3
Y2EwZmM3ZGQ2ZTA5ZDU1MDRkNDhkM2QxMzUwNTllNGIuLjFiZGEwYWZmMWQ5ZjhlMzhhNzEzYzIz
NDJlOTgwYmMzNjk1ZDA3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVy
bGF5LmNwcApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiBwYWdlT3ZlcmxheSwgY29uc3QgV2ViTW91c2VFdmVu
dCYgZXZlbnQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUoKSkgeworICAgICAg
ICBzd2l0Y2ggKGV2ZW50LmV2ZW50VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6Ok1v
dXNlRG93bjogewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5tb3VzZURvd24pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMu
bW0KaW5kZXggYzIxMDExZDYwYjEwYzkxZmU0MjBjZDU0OTYzYjRiZWFiNjIzY2RkZC4uZDVlNDhk
ZTYwNmVhNmYyYjcyZjhkOGRmYzA2MjIxZmYyMjM4NTZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05l
dHNjYXBlUGx1Z2luTWFjLm1tCkBAIC0zNzcsMTAgKzM3NywxMCBAQCBzdGF0aWMgaW5saW5lIEV2
ZW50UmVjb3JkIGluaXRpYWxpemVFdmVudFJlY29yZChFdmVudEtpbmQgZXZlbnRLaW5kKQogCiBz
dGF0aWMgYm9vbCBhbnlNb3VzZUJ1dHRvbklzRG93bihjb25zdCBXZWJFdmVudCYgZXZlbnQpCiB7
Ci0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKQorICAgIGlmIChl
dmVudC5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlTW92ZSAmJiBz
dGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oZXZlbnQpLmJ1dHRvbigpICE9IFdlYk1v
dXNlRXZlbnQ6Ok5vQnV0dG9uKQorICAgIGlmIChldmVudC5ldmVudFR5cGUoKSA9PSBXZWJFdmVu
dDo6TW91c2VNb3ZlICYmIHN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPihldmVudCku
YnV0dG9uKCkgIT0gV2ViTW91c2VFdmVudDo6Tm9CdXR0b24pCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzg4LDEwICszODgsMTAgQEAgc3RhdGljIGJvb2wg
YW55TW91c2VCdXR0b25Jc0Rvd24oY29uc3QgV2ViRXZlbnQmIGV2ZW50KQogCiBzdGF0aWMgYm9v
bCByaWdodE1vdXNlQnV0dG9uSXNEb3duKGNvbnN0IFdlYkV2ZW50JiBldmVudCkKIHsKLSAgICBp
ZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24gJiYgc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViTW91c2VFdmVudCY+KGV2ZW50KS5idXR0b24oKSA9PSBXZWJNb3VzZUV2ZW50OjpSaWdo
dEJ1dHRvbikKKyAgICBpZiAoZXZlbnQuZXZlbnRUeXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93
biAmJiBzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oZXZlbnQpLmJ1dHRvbigpID09
IFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAK
LSAgICBpZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZU1vdmUgJiYgc3RhdGljX2Nh
c3Q8Y29uc3QgV2ViTW91c2VFdmVudCY+KGV2ZW50KS5idXR0b24oKSA9PSBXZWJNb3VzZUV2ZW50
OjpSaWdodEJ1dHRvbikKKyAgICBpZiAoZXZlbnQuZXZlbnRUeXBlKCkgPT0gV2ViRXZlbnQ6Ok1v
dXNlTW92ZSAmJiBzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oZXZlbnQpLmJ1dHRv
bigpID09IFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAKICAgICByZXR1cm4gZmFsc2U7CkBAIC01MTMsNyArNTEzLDcgQEAgc3RhdGljIE5QQ29j
b2FFdmVudCBpbml0aWFsaXplTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2
ZW50LCBjb25zdAogewogICAgIE5QQ29jb2FFdmVudFR5cGUgZXZlbnRUeXBlOwogCi0gICAgc3dp
dGNoIChtb3VzZUV2ZW50LnR5cGUoKSkgeworICAgIHN3aXRjaCAobW91c2VFdmVudC5ldmVudFR5
cGUoKSkgewogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlRG93bjoKICAgICAgICAgZXZlbnRUeXBl
ID0gTlBDb2NvYUV2ZW50TW91c2VEb3duOwogICAgICAgICBicmVhazsKQEAgLTU2Nyw3ICs1Njcs
NyBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQoY29uc3Qg
V2ViTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICAgICAgY2FzZSBOUEV2ZW50TW9kZWxDYXJi
b246IHsKICAgICAgICAgICAgIEV2ZW50S2luZCBldmVudEtpbmQgPSBudWxsRXZlbnQ7CiAKLSAg
ICAgICAgICAgIHN3aXRjaCAobW91c2VFdmVudC50eXBlKCkpIHsKKyAgICAgICAgICAgIHN3aXRj
aCAobW91c2VFdmVudC5ldmVudFR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBXZWJFdmVudDo6
TW91c2VEb3duOgogICAgICAgICAgICAgICAgIGV2ZW50S2luZCA9IG1vdXNlRG93bjsKICAgICAg
ICAgICAgICAgICBidXR0b25TdGF0ZUZyb21MYXN0TW91c2VFdmVudCB8PSAoMSA8PCBidXR0b25O
dW1iZXIobW91c2VFdmVudC5idXR0b24oKSkpOwpAQCAtNzQzLDcgKzc0Myw3IEBAIHN0YXRpYyBO
UENvY29hRXZlbnQgaW5pdGlhbGl6ZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVu
dCYga2V5Ym9hcmRFdmVuCiAgICAgaWYgKGlzRmxhZ3NDaGFuZ2VkRXZlbnQoa2V5Ym9hcmRFdmVu
dCkpCiAgICAgICAgIGV2ZW50VHlwZSA9IE5QQ29jb2FFdmVudEZsYWdzQ2hhbmdlZDsKICAgICBl
bHNlIHsKLSAgICAgICAgc3dpdGNoIChrZXlib2FyZEV2ZW50LnR5cGUoKSkgeworICAgICAgICBz
d2l0Y2ggKGtleWJvYXJkRXZlbnQuZXZlbnRUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgV2Vi
RXZlbnQ6OktleURvd246CiAgICAgICAgICAgICAgICAgZXZlbnRUeXBlID0gTlBDb2NvYUV2ZW50
S2V5RG93bjsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTc3Miw3ICs3NzIsNyBAQCBib29s
IE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5
Ym9hcmRFdmVudCYga2V5Ym9hcgogCiAgICAgc3dpdGNoIChtX2V2ZW50TW9kZWwpIHsKICAgICBj
YXNlIE5QRXZlbnRNb2RlbENvY29hOiB7Ci0gICAgICAgIGlmIChrZXlib2FyZEV2ZW50LnR5cGUo
KSA9PSBXZWJFdmVudDo6S2V5RG93bikgeworICAgICAgICBpZiAoa2V5Ym9hcmRFdmVudC5ldmVu
dFR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikgewogICAgICAgICAgICAgbV9oYXNIYW5kbGVk
QUtleURvd25FdmVudCA9IHRydWU7CiAKICAgICAgICAgICAgIGlmICghbV9wbHVnaW5XYW50c0xl
Z2FjeUNvY29hVGV4dElucHV0ICYmIG1faXNDb21wbGV4VGV4dElucHV0RW5hYmxlZCAmJiAha2V5
Ym9hcmRFdmVudC5pc0F1dG9SZXBlYXQoKSkgewpAQCAtNzgxLDcgKzc4MSw3IEBAIGJvb2wgTmV0
c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2Fy
ZEV2ZW50JiBrZXlib2FyCiAgICAgICAgICAgICAgICAgbV9pZ25vcmVOZXh0S2V5VXBFdmVudENv
dW50ZXIrKzsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIGlmIChrZXlib2FyZEV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5VXAg
JiYgbV9pZ25vcmVOZXh0S2V5VXBFdmVudENvdW50ZXIpIHsKKyAgICAgICAgfSBlbHNlIGlmIChr
ZXlib2FyZEV2ZW50LmV2ZW50VHlwZSgpID09IFdlYkV2ZW50OjpLZXlVcCAmJiBtX2lnbm9yZU5l
eHRLZXlVcEV2ZW50Q291bnRlcikgewogICAgICAgICAgICAgbV9pZ25vcmVOZXh0S2V5VXBFdmVu
dENvdW50ZXItLTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC04MDUs
NyArODA1LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVLZXlib2FyZEV2
ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXIKICAgICBjYXNlIE5QRXZlbnRNb2Rl
bENhcmJvbjogewogICAgICAgICBFdmVudEtpbmQgZXZlbnRLaW5kID0gbnVsbEV2ZW50OwogCi0g
ICAgICAgIHN3aXRjaCAoa2V5Ym9hcmRFdmVudC50eXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChr
ZXlib2FyZEV2ZW50LmV2ZW50VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgV2ViRXZlbnQ6OktleURv
d246CiAgICAgICAgICAgICBldmVudEtpbmQgPSBrZXlib2FyZEV2ZW50LmlzQXV0b1JlcGVhdCgp
ID8gYXV0b0tleSA6IGtleURvd247CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5YMTEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gx
MS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXggYTE4NDY4NzhiMzEwNDYxNGI3YTI2ZmMyN2Nl
YWI3OWExYTRiOThlMC4uMDJlZjliZDdlZTE0ODZkMTk2YmE1ZDhlZThiNDQxZTE3Mzg1MjEzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gx
MS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAgLTQ1NSw3ICs0NTUs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0WEJ1dHRvbkV2ZW50RmllbGRzKFhFdmVudCYgeEV2
ZW50LCBjb25zdCBXZWJNb3VzZUV2ZW50JiB3ZQogICAgIFhCdXR0b25FdmVudCYgeEJ1dHRvbiA9
IHhFdmVudC54YnV0dG9uOwogICAgIHNldENvbW1vbk1vdXNlRXZlbnRGaWVsZHMoeEJ1dHRvbiwg
d2ViRXZlbnQsIHBsdWdpbkxvY2F0aW9uKTsKIAotICAgIHhCdXR0b24udHlwZSA9ICh3ZWJFdmVu
dC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikgPyBCdXR0b25QcmVzcyA6IEJ1dHRvblJl
bGVhc2U7CisgICAgeEJ1dHRvbi50eXBlID0gKHdlYkV2ZW50LmV2ZW50VHlwZSgpID09IFdlYkV2
ZW50OjpNb3VzZURvd24pID8gQnV0dG9uUHJlc3MgOiBCdXR0b25SZWxlYXNlOwogICAgIHN3aXRj
aCAod2ViRXZlbnQuYnV0dG9uKCkpIHsKICAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6OkxlZnRCdXR0
b246CiAgICAgICAgIHhCdXR0b24uYnV0dG9uID0gQnV0dG9uMTsKQEAgLTUwOCw3ICs1MDgsNyBA
QCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2Vi
TW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKG1faXNXaW5kb3dlZCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93biB8
fCBldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlVXApCisgICAgaWYgKChldmVudC5ldmVu
dFR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duIHx8IGV2ZW50LmV2ZW50VHlwZSgpID09IFdl
YkV2ZW50OjpNb3VzZVVwKQogICAgICAgICAgJiYgZXZlbnQuYnV0dG9uKCkgPT0gV2ViTW91c2VF
dmVudDo6UmlnaHRCdXR0b24KICAgICAgICAgICYmIHF1aXJrcygpLmNvbnRhaW5zKFBsdWdpblF1
aXJrczo6SWdub3JlUmlnaHRDbGlja0luV2luZG93bGVzc01vZGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC01MTYsNyArNTE2LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1I
YW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgIFhFdmVudCB4
RXZlbnQ7CiAgICAgaW5pdGlhbGl6ZVhFdmVudCh4RXZlbnQpOwogCi0gICAgc3dpdGNoIChldmVu
dC50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGV2ZW50LmV2ZW50VHlwZSgpKSB7CiAgICAgY2FzZSBX
ZWJFdmVudDo6TW91c2VEb3duOgogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlVXA6CiAgICAgICAg
IHNldFhCdXR0b25FdmVudEZpZWxkcyh4RXZlbnQsIGV2ZW50LCBjb252ZXJ0VG9Sb290VmlldyhJ
bnRQb2ludCgpKSk7CkBAIC02MTEsNyArNjExLDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1IYW5kbGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAK
IHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRYS2V5RXZlbnRGaWVsZHMoWEV2ZW50JiB4RXZlbnQsIGNv
bnN0IFdlYktleWJvYXJkRXZlbnQmIHdlYkV2ZW50KQogewotICAgIHhFdmVudC54YW55LnR5cGUg
PSAod2ViRXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlEb3duKSA/IGtLZXlQcmVzc1R5cGUg
OiBrS2V5UmVsZWFzZVR5cGU7CisgICAgeEV2ZW50LnhhbnkudHlwZSA9ICh3ZWJFdmVudC5ldmVu
dFR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikgPyBrS2V5UHJlc3NUeXBlIDoga0tleVJlbGVh
c2VUeXBlOwogICAgIFhLZXlFdmVudCYgeEtleSA9IHhFdmVudC54a2V5OwogICAgIHhLZXkucm9v
dCA9IHJvb3RXaW5kb3dJRCgpOwogICAgIHhLZXkuc3Vid2luZG93ID0gMDsKQEAgLTYzMiw3ICs2
MzIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0WEtleUV2ZW50RmllbGRzKFhFdmVudCYgeEV2
ZW50LCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiB3ZQogYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxh
dGZvcm1IYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQog
ewogICAgIC8vIFdlIGRvbid0IGdlbmVyYXRlIG90aGVyIHR5cGVzIG9mIGtleWJvYXJkIGV2ZW50
cyB2aWEgV2ViRXZlbnRGYWN0b3J5LgotICAgIEFTU0VSVChldmVudC50eXBlKCkgPT0gV2ViRXZl
bnQ6OktleURvd24gfHwgZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlVcCk7CisgICAgQVNT
RVJUKGV2ZW50LmV2ZW50VHlwZSgpID09IFdlYkV2ZW50OjpLZXlEb3duIHx8IGV2ZW50LmV2ZW50
VHlwZSgpID09IFdlYkV2ZW50OjpLZXlVcCk7CiAKICAgICBYRXZlbnQgeEV2ZW50OwogICAgIGlu
aXRpYWxpemVYRXZlbnQoeEV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggMmY1OWFmOWU2ODNhNjY3ZTkzMDhmNmQy
MTRkYmVhYzNhNTcwNWQzZS4uZjM0NDc5ODVmOTMxNjIzNGRhNjlhNTNjZWVjZTJiNTI2N2IzNzBm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCBzdGF0aWMgTlNVSW50ZWdlciBtb2RpZmllckZs
YWdzRnJvbVdlYkV2ZW50KGNvbnN0IFdlYkV2ZW50JiBldmVudCkKICAgICAKIHN0YXRpYyBOU0V2
ZW50VHlwZSBldmVudFR5cGVGcm9tV2ViRXZlbnQoY29uc3QgV2ViRXZlbnQmIGV2ZW50KQogewot
ICAgIHN3aXRjaCAoZXZlbnQudHlwZSgpKSB7CisgICAgc3dpdGNoIChldmVudC5ldmVudFR5cGUo
KSkgewogICAgIGNhc2UgV2ViRXZlbnQ6OktleURvd246CiAgICAgICAgIHJldHVybiBOU0tleURv
d247CiAgICAgY2FzZSBXZWJFdmVudDo6S2V5VXA6CkBAIC01NTgsNyArNTU4LDcgQEAgYm9vbCBQ
REZQbHVnaW46OmhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAK
ICAgICBOU0V2ZW50ICpuc0V2ZW50ID0gbnNFdmVudEZvcldlYk1vdXNlRXZlbnQoZXZlbnQpOwog
Ci0gICAgc3dpdGNoIChldmVudC50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGV2ZW50LmV2ZW50VHlw
ZSgpKSB7CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VNb3ZlOgogICAgICAgICBtb3VzZU1vdmVk
SW5Db250ZW50QXJlYSgpOwogCkBAIC02NDAsNyArNjQwLDcgQEAgYm9vbCBQREZQbHVnaW46Omhh
bmRsZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgCiAg
ICAgTlNFdmVudCAqZmFrZUV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRoVHlwZTpldmVudFR5
cGUgbG9jYXRpb246TlNaZXJvUG9pbnQgbW9kaWZpZXJGbGFnczptb2RpZmllckZsYWdzIHRpbWVz
dGFtcDowIHdpbmRvd051bWJlcjowIGNvbnRleHQ6MCBjaGFyYWN0ZXJzOmV2ZW50LnRleHQoKSBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6ZXZlbnQudW5tb2RpZmllZFRleHQoKSBpc0FSZXBl
YXQ6ZXZlbnQuaXNBdXRvUmVwZWF0KCkga2V5Q29kZTpldmVudC5uYXRpdmVWaXJ0dWFsS2V5Q29k
ZSgpXTsKICAgICAKLSAgICBzd2l0Y2ggKGV2ZW50LnR5cGUoKSkgeworICAgIHN3aXRjaCAoZXZl
bnQuZXZlbnRUeXBlKCkpIHsKICAgICBjYXNlIFdlYkV2ZW50OjpLZXlEb3duOgogICAgICAgICBy
ZXR1cm4gW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIGtleURvd246ZmFrZUV2ZW50XTsKICAg
ICBkZWZhdWx0OgpAQCAtNzE1LDcgKzcxNSw3IEBAIHZvaWQgUERGUGx1Z2luOjpjbGlja2VkTGlu
ayhOU1VSTCAqdXJsKQogICAgIEZyYW1lKiBmcmFtZSA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgp
OwogCiAgICAgUmVmUHRyPEV2ZW50PiBjb3JlRXZlbnQ7Ci0gICAgaWYgKG1fbGFzdE1vdXNlRXZl
bnQudHlwZSgpICE9IFdlYkV2ZW50OjpOb1R5cGUpCisgICAgaWYgKG1fbGFzdE1vdXNlRXZlbnQu
ZXZlbnRUeXBlKCkgIT0gV2ViRXZlbnQ6Ok5vVHlwZSkKICAgICAgICAgY29yZUV2ZW50ID0gTW91
c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBmcmFtZS0+ZG9jdW1lbnQo
KS0+ZGVmYXVsdFZpZXcoKSwgcGxhdGZvcm0obV9sYXN0TW91c2VFdmVudCksIDAsIDApOwogCiAg
ICAgZnJhbWUtPmxvYWRlcigpLT51cmxTZWxlY3RlZCh1cmwsIGVtcHR5U3RyaW5nKCksIGNvcmVF
dmVudC5nZXQoKSwgZmFsc2UsIGZhbHNlLCBNYXliZVNlbmRSZWZlcnJlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2lu
Lm1tCmluZGV4IGYwNzEyYjllY2YzMmVjMzAzOTgyYzJiZWZmYWViZjA4ZmNjYjgwMWEuLmVhODNl
MGJmYTUyNDNmYTViMmE0NzE3OGM4MTJjMTRjZTE1OTQzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tCkBA
IC02OTEsNyArNjkxLDcgQEAgdm9pZCBTaW1wbGVQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZEZh
aWwoYm9vbCkKIAogYm9vbCBTaW1wbGVQREZQbHVnaW46OmhhbmRsZU1vdXNlRXZlbnQoY29uc3Qg
V2ViTW91c2VFdmVudCYgZXZlbnQpCiB7Ci0gICAgc3dpdGNoIChldmVudC50eXBlKCkpIHsKKyAg
ICBzd2l0Y2ggKGV2ZW50LmV2ZW50VHlwZSgpKSB7CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VN
b3ZlOgogICAgICAgICBtb3VzZU1vdmVkSW5Db250ZW50QXJlYSgpOwogICAgICAgICAvLyBGSVhN
RTogU2hvdWxkIGFsc28gbm90aWZ5IHNjcm9sbGJhciB0byBzaG93IGhvdmVyIGVmZmVjdC4gU2hv
dWxkIGFsc28gc2VuZCBtb3VzZUV4aXRlZCB0byBoaWRlIGl0LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ5YzIwMDVkNDY1OWNm
MjUxYTE0MTY3YjVlOTcwZjI2ZGE0YjM3ZTguLjZmMzc0NjgxZjI5N2Y4MGUxNGI4ZWZmMDg2MDg4
OWIwODNhOGZlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKQEAgLTgyMiwzMSArODIyLDMxIEBAIHZvaWQgUGx1Z2luVmlldzo6aGFu
ZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQogCiAgICAgYm9vbCBkaWRIYW5kbGVFdmVudCA9IGZhbHNl
OwogCi0gICAgaWYgKChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVu
dCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlKQotICAgICAg
ICB8fCAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgY3Vy
cmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikKLSAgICAgICAgfHwgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCAmJiBjdXJyZW50RXZlbnQt
PnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VVcCkpIHsKKyAgICBpZiAoKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50ICYmIGN1cnJlbnRFdmVudC0+ZXZlbnRUeXBl
KCkgPT0gV2ViRXZlbnQ6Ok1vdXNlTW92ZSkKKyAgICAgICAgfHwgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIGN1cnJlbnRFdmVudC0+ZXZlbnRUeXBlKCkg
PT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikKKyAgICAgICAgfHwgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLm1vdXNldXBFdmVudCAmJiBjdXJyZW50RXZlbnQtPmV2ZW50VHlwZSgpID09IFdl
YkV2ZW50OjpNb3VzZVVwKSkgewogICAgICAgICAvLyBGSVhNRTogQ2xpY2tpbmcgaW4gYSBzY3Jv
bGwgYmFyIHNob3VsZCBub3QgY2hhbmdlIGZvY3VzLgotICAgICAgICBpZiAoY3VycmVudEV2ZW50
LT50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikgeworICAgICAgICBpZiAoY3VycmVudEV2
ZW50LT5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKSB7CiAgICAgICAgICAgICBm
b2N1c1BsdWdpbkVsZW1lbnQoKTsKICAgICAgICAgICAgIGZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUobV9wbHVnaW5FbGVtZW50LmdldCgpKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VV
cCkKKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RXZlbnQtPmV2ZW50VHlwZSgpID09IFdlYkV2
ZW50OjpNb3VzZVVwKQogICAgICAgICAgICAgZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPnNldENh
cHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKIAogICAgICAgICBkaWRIYW5kbGVFdmVudCA9IG1f
cGx1Z2luLT5oYW5kbGVNb3VzZUV2ZW50KHN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQm
PigqY3VycmVudEV2ZW50KSk7CiAgICAgICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFt
ZXMoKS5tb3VzZW1vdmVFdmVudCkKICAgICAgICAgICAgIHBsdWdpbkRpZFJlY2VpdmVVc2VySW50
ZXJhY3Rpb24oKTsKLSAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
Lm1vdXNld2hlZWxFdmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6V2hl
ZWwgJiYgbV9wbHVnaW4tPndhbnRzV2hlZWxFdmVudHMoKSkgeworICAgIH0gZWxzZSBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V3aGVlbEV2ZW50ICYmIGN1cnJlbnRFdmVu
dC0+ZXZlbnRUeXBlKCkgPT0gV2ViRXZlbnQ6OldoZWVsICYmIG1fcGx1Z2luLT53YW50c1doZWVs
RXZlbnRzKCkpIHsKICAgICAgICAgZGlkSGFuZGxlRXZlbnQgPSBtX3BsdWdpbi0+aGFuZGxlV2hl
ZWxFdmVudChzdGF0aWNfY2FzdDxjb25zdCBXZWJXaGVlbEV2ZW50Jj4oKmN1cnJlbnRFdmVudCkp
OwogICAgICAgICBwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKCk7Ci0gICAgfSBlbHNl
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCAmJiBjdXJy
ZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlKQorICAgIH0gZWxzZSBpZiAo
ZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQgJiYgY3VycmVudEV2
ZW50LT5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlKQogICAgICAgICBkaWRIYW5k
bGVFdmVudCA9IG1fcGx1Z2luLT5oYW5kbGVNb3VzZUVudGVyRXZlbnQoc3RhdGljX2Nhc3Q8Y29u
c3QgV2ViTW91c2VFdmVudCY+KCpjdXJyZW50RXZlbnQpKTsKLSAgICBlbHNlIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50ICYmIGN1cnJlbnRFdmVudC0+dHlw
ZSgpID09IFdlYkV2ZW50OjpNb3VzZU1vdmUpCisgICAgZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCAmJiBjdXJyZW50RXZlbnQtPmV2ZW50VHlwZSgp
ID09IFdlYkV2ZW50OjpNb3VzZU1vdmUpCiAgICAgICAgIGRpZEhhbmRsZUV2ZW50ID0gbV9wbHVn
aW4tPmhhbmRsZU1vdXNlTGVhdmVFdmVudChzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50
Jj4oKmN1cnJlbnRFdmVudCkpOwotICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmNvbnRleHRtZW51RXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZl
bnQ6Ok1vdXNlRG93bikgeworICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmNvbnRleHRtZW51RXZlbnQgJiYgY3VycmVudEV2ZW50LT5ldmVudFR5cGUoKSA9PSBXZWJF
dmVudDo6TW91c2VEb3duKSB7CiAgICAgICAgIGRpZEhhbmRsZUV2ZW50ID0gbV9wbHVnaW4tPmhh
bmRsZUNvbnRleHRNZW51RXZlbnQoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCY+KCpj
dXJyZW50RXZlbnQpKTsKICAgICAgICAgcGx1Z2luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbigp
OwotICAgIH0gZWxzZSBpZiAoKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25F
dmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikKLSAgICAg
ICAgICAgICAgIHx8IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50ICYm
IGN1cnJlbnRFdmVudC0+dHlwZSgpID09IFdlYkV2ZW50OjpLZXlVcCkpIHsKKyAgICB9IGVsc2Ug
aWYgKChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgY3VycmVu
dEV2ZW50LT5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikKKyAgICAgICAgfHwgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXVwRXZlbnQgJiYgY3VycmVudEV2ZW50LT5l
dmVudFR5cGUoKSA9PSBXZWJFdmVudDo6S2V5VXApKSB7CiAgICAgICAgIGRpZEhhbmRsZUV2ZW50
ID0gbV9wbHVnaW4tPmhhbmRsZUtleWJvYXJkRXZlbnQoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2V5
Ym9hcmRFdmVudCY+KCpjdXJyZW50RXZlbnQpKTsKICAgICAgICAgcGx1Z2luRGlkUmVjZWl2ZVVz
ZXJJbnRlcmFjdGlvbigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggZjE5OTcwZWFiOTU1ZmRmMjZl
N2QxODljNDNkNDc5ZmIzNzEyNGNjOS4uMGE1YWUwMjdkNjk2NmRlZTQwNzA4NDllM2UyYzdkZjUz
N2U2NWRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIEV2ZW50RGlzcGF0
Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0
dXJlRXZlbgogI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCiB2b2lkIEV2ZW50RGlzcGF0
Y2hlcjo6c2VuZERpZFJlY2VpdmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50
JiBldmVudCwgYm9vbCBkaWRIYW5kbGVFdmVudCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2
ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90PihldmVudC50eXBlKCkpLCBkaWRIYW5kbGVFdmVudCks
IHBhZ2VJRCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJf
dD4oZXZlbnQuZXZlbnRUeXBlKCkpLCBkaWRIYW5kbGVFdmVudCksIHBhZ2VJRCk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5jcHAKaW5kZXggNzA0MTgzZGJkOGJkYThmNWMzYTgwYzBiNjhhNTg3OGVlODAxNjhm
NC4uZTJhYWJmNzgzN2IwNTc2ZGQyYjhkNGYyMjIyNmEyMGZlMTNlYTA5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCkBA
IC00NjMsNyArNDYzLDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6ZHJhd1JlY3QoUGFnZU92ZXJs
YXkqIHBhZ2VPdmVybGF5LCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWMKIGJvb2wgRmluZENvbnRy
b2xsZXI6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkqLCBjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3Vz
ZUV2ZW50KQogewogICAgIC8vIElmIHdlIGdldCBhIG1vdXNlIGRvd24gZXZlbnQgaW5zaWRlIHRo
ZSBwYWdlIG92ZXJsYXkgd2Ugc2hvdWxkIGhpZGUgdGhlIGZpbmQgVUkuCi0gICAgaWYgKG1vdXNl
RXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24pIHsKKyAgICBpZiAobW91c2VFdmVu
dC5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKSB7CiAgICAgICAgIC8vIERpc21p
c3MgdGhlIG92ZXJsYXkuCiAgICAgICAgIGhpZGVGaW5kVUkoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMTJmYjQwMjMwYjZh
YjQ3NmJkZmQ3NmQyYmEyNjFkMmY2ZGZhMzljYy4uYzI1Mjg5MTMzNjNhYjNiNDIwY2I0MGRlNjhi
ODIzYjhjNzM1ZTFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtODg1LDcgKzg4NSw3IEBAIHZvaWQgV2ViUGFnZTo6bGlua0NsaWNrZWQo
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgICAgICBy
ZXR1cm47CiAKICAgICBSZWZQdHI8RXZlbnQ+IGNvcmVFdmVudDsKLSAgICBpZiAoZXZlbnQudHlw
ZSgpICE9IFdlYkV2ZW50OjpOb1R5cGUpCisgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSgpICE9IFdl
YkV2ZW50OjpOb1R5cGUpCiAgICAgICAgIGNvcmVFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCwgZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCks
IHBsYXRmb3JtKGV2ZW50KSwgMCwgMCk7CiAKICAgICBmcmFtZS0+bG9hZGVyKCktPmxvYWRGcmFt
ZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdChmcmFtZSwgUmVzb3VyY2VSZXF1ZXN0KHVybCkpLCBm
YWxzZSwgZmFsc2UsIGNvcmVFdmVudC5nZXQoKSwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOwpAQCAt
MTU0Miw3ICsxNTQyLDcgQEAgdm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNl
RXZlbnQmIG1vdXNlRXZlbnQpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgLy8gRG9u
J3QgdHJ5IHRvIGhhbmRsZSBhbnkgcGVuZGluZyBtb3VzZSBldmVudHMgaWYgYSBjb250ZXh0IG1l
bnUgaXMgc2hvd2luZy4KICAgICBpZiAobV9pc1Nob3dpbmdDb250ZXh0TWVudSkgewotICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4obW91c2VFdmVudC50eXBlKCkpLCBmYWxzZSkpOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJf
dD4obW91c2VFdmVudC5ldmVudFR5cGUoKSksIGZhbHNlKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAjZW5kaWYKQEAgLTE1NjQsNyArMTU2NCw3IEBAIHZvaWQgV2ViUGFnZTo6bW91c2VFdmVu
dChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgICAgICBoYW5kbGVkID0gaGFu
ZGxlTW91c2VFdmVudChtb3VzZUV2ZW50LCB0aGlzLCBvbmx5VXBkYXRlU2Nyb2xsYmFycyk7CiAg
ICAgfQogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1vdXNlRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0
PHVpbnQzMl90Pihtb3VzZUV2ZW50LmV2ZW50VHlwZSgpKSwgaGFuZGxlZCkpOwogfQogCiB2b2lk
IFdlYlBhZ2U6Om1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJNb3VzZUV2ZW50JiBt
b3VzZUV2ZW50LCBib29sJiBoYW5kbGVkKQpAQCAtMTYwMyw3ICsxNjAzLDcgQEAgdm9pZCBXZWJQ
YWdlOjp3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAKICAgICAg
ICAgaGFuZGxlZCA9IGhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgbV9wYWdlLmdldCgpKTsK
ICAgICB9Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHdoZWVsRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0
PHVpbnQzMl90Pih3aGVlbEV2ZW50LmV2ZW50VHlwZSgpKSwgaGFuZGxlZCkpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OndoZWVsRXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiB3
aGVlbEV2ZW50LCBib29sJiBoYW5kbGVkKQpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgc3RhdGljIGJv
b2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcmRFdmVudCwg
UGFnZSogcGFnZSkKICAgICBpZiAoIXBhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGlmIChrZXlib2FyZEV2ZW50LnR5cGUoKSA9PSBXZWJFdmVu
dDo6Q2hhciAmJiBrZXlib2FyZEV2ZW50LmlzU3lzdGVtS2V5KCkpCisgICAgaWYgKGtleWJvYXJk
RXZlbnQuZXZlbnRUeXBlKCkgPT0gV2ViRXZlbnQ6OkNoYXIgJiYga2V5Ym9hcmRFdmVudC5pc1N5
c3RlbUtleSgpKQogICAgICAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlQWNjZXNzS2V5KHBsYXRmb3Jt
KGtleWJvYXJkRXZlbnQpKTsKICAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQocGxhdGZvcm0oa2V5
Ym9hcmRFdmVudCkpOwogfQpAQCAtMTYzNSw3ICsxNjM1LDcgQEAgdm9pZCBXZWJQYWdlOjprZXlF
dmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQogICAgICAgICBpZiAo
IWhhbmRsZWQpCiAgICAgICAgICAgICBoYW5kbGVkID0gcGVyZm9ybURlZmF1bHRCZWhhdmlvckZv
cktleUV2ZW50KGtleWJvYXJkRXZlbnQpOwogICAgIH0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4oa2V5Ym9hcmRF
dmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtleWJvYXJkRXZlbnQuZXZl
bnRUeXBlKCkpLCBoYW5kbGVkKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6a2V5RXZlbnRTeW5jRm9y
VGVzdGluZyhjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50LCBib29sJiBoYW5k
bGVkKQpAQCAtMTY2Nyw3ICsxNjY3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXN0dXJlRXZlbnQoY29u
c3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAKICAgICAgICAgaGFuZGxlZCA9IGhh
bmRsZUdlc3R1cmVFdmVudChnZXN0dXJlRXZlbnQsIG1fcGFnZS5nZXQoKSk7CiAgICAgfQotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0
PHVpbnQzMl90PihnZXN0dXJlRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90
PihnZXN0dXJlRXZlbnQuZXZlbnRUeXBlKCkpLCBoYW5kbGVkKSk7CiB9CiAjZW5kaWYKIApAQCAt
MTc4OSw3ICsxNzg5LDcgQEAgdm9pZCBXZWJQYWdlOjp0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNo
RXZlbnQmIHRvdWNoRXZlbnQpCiAKICAgICAgICAgaGFuZGxlZCA9IGhhbmRsZVRvdWNoRXZlbnQo
dG91Y2hFdmVudCwgbV9wYWdlLmdldCgpKTsKICAgICB9Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvdWNoRXZl
bnQudHlwZSgpKSwgaGFuZGxlZCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b3VjaEV2ZW50LmV2ZW50VHlw
ZSgpKSwgaGFuZGxlZCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnRvdWNoRXZlbnRTeW5jRm9yVGVz
dGluZyhjb25zdCBXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50LCBib29sJiBoYW5kbGVkKQpAQCAt
MTkwNSw3ICsxOTA1LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3
YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWIKICAgICBGcmFtZSogZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2V0Rm9jdXNlZE5vZGUoMCk7CiAKLSAgICBpZiAoaXNLZXli
b2FyZEV2ZW50VmFsaWQgJiYgZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlEb3duKSB7Cisg
ICAgaWYgKGlzS2V5Ym9hcmRFdmVudFZhbGlkICYmIGV2ZW50LmV2ZW50VHlwZSgpID09IFdlYkV2
ZW50OjpLZXlEb3duKSB7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBwbGF0Zm9ybUV2
ZW50KHBsYXRmb3JtKGV2ZW50KSk7CiAgICAgICAgIHBsYXRmb3JtRXZlbnQuZGlzYW1iaWd1YXRl
S2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAgICAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0
aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsIEtleWJvYXJkRXZlbnQ6OmNyZWF0
ZShwbGF0Zm9ybUV2ZW50LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSkuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQ
YWdlRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFn
ZUVmbC5jcHAKaW5kZXggMmZiMGMzMjIwM2RmZDZiOGMxNjBlMWJhNjlmNDg0NDhlNTg4MzllNC4u
ZDY3OGU0YzFiNmJiNThjOGIxMWM3ZDIyODg1ZmEwMmU1ZmE2NzFmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCkBAIC04
MSw3ICs4MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzY3JvbGwoUGFnZSogcGFnZSwgU2Nyb2xs
RGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpCiAKIGJvb2wgV2ViUGFnZTo6cGVy
Zm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtl
eWJvYXJkRXZlbnQpCiB7Ci0gICAgaWYgKGtleWJvYXJkRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50
OjpLZXlEb3duICYmIGtleWJvYXJkRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpSYXdLZXlEb3du
KQorICAgIGlmIChrZXlib2FyZEV2ZW50LmV2ZW50VHlwZSgpICE9IFdlYkV2ZW50OjpLZXlEb3du
ICYmIGtleWJvYXJkRXZlbnQuZXZlbnRUeXBlKCkgIT0gV2ViRXZlbnQ6OlJhd0tleURvd24pCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAoa2V5Ym9hcmRFdmVudC53aW5kb3dz
VmlydHVhbEtleUNvZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvcXQvV2ViUGFnZVF0LmNwcAppbmRleCA0OGE4MDEwM2M0MzZhNTZlMDkyMWI0NGE0MTMy
MTMxNWJlMmYwZTAzLi5iMjAxNmRmYTIyMjE3ZGMzODBmMzgwNGYzYzhhMjIxMThkMmZmYmVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0
LmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBsb2dpY2FsU2Nyb2xs
KFBhZ2UqIHBhZ2UsIFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTCiAKIGJvb2wg
V2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJv
YXJkRXZlbnQmIGtleWJvYXJkRXZlbnQpCiB7Ci0gICAgaWYgKGtleWJvYXJkRXZlbnQudHlwZSgp
ICE9IFdlYkV2ZW50OjpLZXlEb3duICYmIGtleWJvYXJkRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50
OjpSYXdLZXlEb3duKQorICAgIGlmIChrZXlib2FyZEV2ZW50LmV2ZW50VHlwZSgpICE9IFdlYkV2
ZW50OjpLZXlEb3duICYmIGtleWJvYXJkRXZlbnQuZXZlbnRUeXBlKCkgIT0gV2ViRXZlbnQ6OlJh
d0tleURvd24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAoa2V5Ym9hcmRF
dmVudC53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190671</attachid>
            <date>2013-02-28 00:45:07 -0800</date>
            <delta_ts>2013-03-08 08:22:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130228174117.patch</filename>
            <type>text/plain</type>
            <size>67304</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2RmY2RiNjZjZGFhMDAz
NjY3OWZiYmJkZTIwODc5MDEyNzYxMDQ3My4uNTM5MTYzZjg4NDE0N2VmNDQxZWIxNmViYjcxZDBm
ZGM3Y2RmN2FjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAxMy0wMi0yOCAgRXVu
bWkgTGVlICA8ZXVubWkxNS5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBB
ZGQgV0syIEMgQVBJIHRvIGhhbmRsZSB0b3VjaCBldmVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg5MTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb3VjaCBldmVudHMgZm9yIG91ciB0YXJnZXQg
cGxhdGZvcm1zIGRpZmZlciAoWElucHV0MiwgV2F5bGFuZCwgVGl6ZW4pIHNvCisgICAgICAgIGZv
ciB0aGUgRUZMIHBvcnQgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGZlZWQgZXZlbnRzIG1hbnVhbGx5
LgorCisgICAgICAgIFRvIGtlZXAgb3VyIGN1cnJlbnQgQVBJIGZvciBkZXNrdG9wIEVGTC9Fbmxp
Z2h0ZW5tZW50IHdvcmtpbmcsIHdlIGNvbnZlcnQKKyAgICAgICAgb3VyIGN1cnJlbnRseSBsaW1p
dGVkIEVGTCBldmVudHMgdG8gdGhlIG5ldyBFRkwgc3BlY2lmaWMgQyBXS1RvdWNoRXZlbnQgdHlw
ZS4KKworICAgICAgICBUaGUgV0tWaWV3U2VuZFRvdWNoRXZlbnQgY2FuIGJlIHVzZWQgZm9yIGFu
eSB1c2UtY2FzZSAocGxhdGZvcm0vcHJvZHVjdCkKKyAgICAgICAgbm90IGludm9sdmluZyB0aGUg
RUZMIGV2ZW50cy4KKworICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHdlIG1ha2Ugc3VyZSB0byBh
dm9pZCB1c2luZyBXSzIgaW50ZXJuYWxzIGluIG91ciBFRkwgQVBJCisgICAgICAgIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgV2ViVG91Y2hFdmVudCBzdGFydHMgdG8g
aW5oZXJpdCBhbiBBUElPYmplY3QgaW4gb3JkZXIgdG8KKyAgICAgICAgY29udmVydCBXZWJUb3Vj
aEV2ZW50KiB0byBXS1RvdWNoRXZlbnRSZWYuCisKKyAgICAgICAgV2ViRXZlbnQ6OnR5cGUoKSBp
cyBjaGFuZ2VkIHRvIFdlYkV2ZW50OjpldmVudFR5cGUoKSB0byBwcmV2ZW50IHRvIGJlCisgICAg
ICAgIG1peGVkIHVwIHdpdGggQVBJT2JqZWN0Ojp0eXBlKCkgYmVjYXVzZSBXZWJUb3VjaEV2ZW50
IGluaGVyaXRzIGJvdGgKKyAgICAgICAgV2ViRXZlbnQgYW5kIEFQSU9iamVjdC4KKworICAgICAg
ICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9lZmwvV0tCYXNl
RWZsLmg6CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9O
YXRpdmVXZWJUb3VjaEV2ZW50Lmg6CisgICAgICAgIChOYXRpdmVXZWJUb3VjaEV2ZW50KToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViRXZlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudDo6
V2ViRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudDo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRXZlbnQ6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkV2ZW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50OjpldmVudFR5cGUpOgorICAgICAgICAoV2ViRXZl
bnQpOgorICAgICAgICAoV2ViVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNo
RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnQ6OnR5cGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50OjpXZWJLaXQyUGxhdGZvcm1Nb3VzZUV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6V2ViS2l0MlBs
YXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYktpdDJQbGF0Zm9ybUdl
c3R1cmVFdmVudDo6V2ViS2l0MlBsYXRmb3JtR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudCk6
CisgICAgICAgICogU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50OjpXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRvdWNoRXZlbnQ6OmlzVG91Y2hFdmVudFR5cGUpOgorICAgICAgICAqIFNo
YXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5h
dGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQpOgorICAgICAgICAqIFNoYXJl
ZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvZWZsL1dlYkV2ZW50
RmFjdG9yeS5oOgorICAgICAgICAoV2ViRXZlbnRGYWN0b3J5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKHR5
cGVGb3JFdmVudCk6CisgICAgICAgIChtb2RpZmllcnNGb3JXS0V2ZW50KToKKyAgICAgICAgKFdL
VG91Y2hFdmVudENyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50
RWZsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcDoK
KyAgICAgICAgKFdLVmlld1NlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvZWZsL1dLVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
OgorICAgICAgICAoRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a190b3VjaC5jcHA6IEFkZGVkLgorICAgICAgICAoY3JlYXRlV0tUb3Vj
aEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdG91Y2hfcHJpdmF0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbmRXaGVlbEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3OjpzZW5kVG91Y2hFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3
Lmg6CisgICAgICAgIChXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdl
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UXRXZWJQYWdlRXZlbnRIYW5kbGVy
Ojpkb25lV2l0aEdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViUGFnZUV2ZW50
SGFuZGxlcjo6ZG9uZVdpdGhUb3VjaEV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoUGFnZU92
ZXJsYXlDbGllbnRJbXBsOjptb3VzZUV2ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojph
bnlNb3VzZUJ1dHRvbklzRG93bik6CisgICAgICAgIChXZWJLaXQ6OnJpZ2h0TW91c2VCdXR0b25J
c0Rvd24pOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplTW91c2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0Ojppbml0aWFsaXplS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVnaW5YMTEuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpzZXRYQnV0dG9uRXZlbnRGaWVsZHMpOgorICAgICAgICAoV2ViS2l0
OjpOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6c2V0WEtleUV2ZW50RmllbGRzKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVn
aW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OmV2ZW50VHlwZUZyb21X
ZWJFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aGFuZGxlTW91c2VFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y2xpY2tlZExpbmspOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpTaW1w
bGVQREZQbHVnaW46OmhhbmRsZU1vdXNlRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6aGFuZGxl
RXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpFdmVudERpc3BhdGNoZXI6OnNlbmREaWRSZWNlaXZlRXZlbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjptb3VzZUV2ZW50KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxp
bmtDbGlja2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW91c2VFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OndoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpoYW5k
bGVLZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmtleUV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluaXRpYWxG
b2N1cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2
ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50
KToKKwogMjAxMy0wMi0yNyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFtXSzJdIE9uZSBtb3JlIHVucmV2aWV3ZWQgYnVpbGRmaXggZm9yIEVGTCwgR1RL
IGFuZCBRdCBhZnRlciByMTQ0MjE4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3ZmE0
ZWM5NzUxYjRmNDFmMjg0YzEzOGI4NTlhYmI5MDg4NWRkYmNlLi4xOWNmN2U4NDk5MmRmYjMzZTM0
ZDYxMzNkODc0ZWUzMDdmYTAxYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzcs
NiArMzcsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9B
UEkvQy9jYWlyby9XS0ljb25EYXRhYmFzZUNhaXJvLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS0V2ZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZsLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0uY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1BvcHVwTWVudUxpc3RlbmVyLmNwcApAQCAtNzYsNiArNzcsNyBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGlu
Z3MuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3N0b3JhZ2VfbWFuYWdlci5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdGV4dF9jaGVja2VyLmNwcAorICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a190b3VjaC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3JlcXVl
c3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9yZXNwb25zZS5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKaW5kZXggNzJmYmZkMzAzYzAxYzcyYjU1
M2JkZjY0NDgyZDUyYjRhMmIyYzRkOC4uNTJmMzIzNDVlMjJjMTJiYjUxM2E5Mjg3OThjMjI5YThk
YmI4YjM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jh
c2VFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5o
CkBAIC0yNyw1ICsyNyw2IEBACiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpZXcqIFdL
Vmlld1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUG9wdXBJdGVtKiBXS1BvcHVw
SXRlbVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUG9wdXBNZW51TGlzdGVuZXIq
IFdLUG9wdXBNZW51TGlzdGVuZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Rv
dWNoRXZlbnQqIFdLVG91Y2hFdmVudFJlZjsKIAogI2VuZGlmIC8qIFdLQmFzZUVmbF9oICovCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggNWVjZWI1NjIyZjNmMDcxODgxY2Y4NTRjZTU2
NjUyMDBiMjg0NDNiNi4uNzU1MWQ4ODdmYTMxNTJlY2VlMGNmMTc4OGY3M2IyYmQwN2IyZTFlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTM2LDYgKzEzNiw5IEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShFRkwpCiAgICAgICAgIFR5cGVQb3B1cE1lbnVJdGVtLAogI2VuZGlmCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgVHlwZVRvdWNoRXZlbnQsCisjZW5kaWYK
ICAgICB9OwogCiAgICAgdmlydHVhbCB+QVBJT2JqZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCmluZGV4IGM2M2QxY2YwNzA1YmNhMWVhNTRkMzg0ZjNm
MGY1YmM4MzExYWQ2MmEuLmNhYzc0MjI0ZTk3YzJhOTFhZDIxMmI0ODYyOWI3YTZjMGRlOWE2ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaApAQCAtMzAs
MTAgKzMwLDYgQEAKIAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFUb3VjaEV2ZW50Pgot
I2VsaWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgImV3a190b3VjaC5oIgotI2luY2x1ZGUgPEV2
YXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgogI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNDMsNyArMzksNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0o
UVQpCiAgICAgZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCos
IGNvbnN0IFFUcmFuc2Zvcm0mIGZyb21JdGVtVHJhbnNmb3JtKTsKICNlbGlmIFBMQVRGT1JNKEVG
TCkKLSAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBF
aW5hX0xpc3QqLCBjb25zdCBFdmFzX01vZGlmaWVyKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9E
ZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApOworICAgIGV4cGxpY2l0IE5hdGl2ZVdlYlRv
dWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShR
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnQuY3BwCmluZGV4IGY2N2QxMzBlZTNlNWNhYzhhNjdi
MzI5YjEzY2Q4NWVhMmUwMGJmMjQuLjVhMTA3NDQwMjM0YmE2YTdmZTUyNGFlMDFiZDBkZjExMWZl
ZmYwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmNwcApAQCAtMzMsMTQgKzMzLDE0IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViRXZlbnQ6OldlYkV2ZW50KCkKLSAgICA6IG1fdHlw
ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oTm9UeXBlKSkKKyAgICA6IG1fZXZlbnRUeXBlKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihOb1R5cGUpKQogICAgICwgbV9tb2RpZmllcnMoMCkKICAgICAsIG1f
dGltZXN0YW1wKDApCiB7CiB9CiAKIFdlYkV2ZW50OjpXZWJFdmVudChUeXBlIHR5cGUsIE1vZGlm
aWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCi0gICAgOiBtX3R5cGUodHlwZSkKKyAg
ICA6IG1fZXZlbnRUeXBlKHR5cGUpCiAgICAgLCBtX21vZGlmaWVycyhtb2RpZmllcnMpCiAgICAg
LCBtX3RpbWVzdGFtcCh0aW1lc3RhbXApCiB7CkBAIC00OCwxNCArNDgsMTQgQEAgV2ViRXZlbnQ6
OldlYkV2ZW50KFR5cGUgdHlwZSwgTW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFt
cCkKIAogdm9pZCBXZWJFdmVudDo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IG1fdHlwZTsKKyAgICBlbmNvZGVyIDw8IG1f
ZXZlbnRUeXBlOwogICAgIGVuY29kZXIgPDwgbV9tb2RpZmllcnM7CiAgICAgZW5jb2RlciA8PCBt
X3RpbWVzdGFtcDsKIH0KIAogYm9vbCBXZWJFdmVudDo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgV2ViRXZlbnQmIHJlc3VsdCkKIHsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5tX3R5cGUpKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1f
ZXZlbnRUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0Lm1fbW9kaWZpZXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViRXZlbnQuaAppbmRleCAwODc2ZjZkY2E4Zjc2NjViYzg4ZDcwMzUyYTFlODQ2YTQyYmZl
ZmMwLi5mNDY5YjM5OWQ1MGZlOGNlZmIyMWM1N2U0NjViZmQ5MGIyZTQ5ODQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViRXZlbnQuaApAQCAtMzYsNiArMzYsMTEgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0lu
dFNpemUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAgICAgY2xhc3MgQXJndW1l
bnREZWNvZGVyOwogICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKQEAgLTg2LDcgKzkxLDcgQEAg
cHVibGljOgogICAgICAgICBDYXBzTG9ja0tleSA9IDEgPDwgNCwKICAgICB9OwogCi0gICAgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4obV90eXBlKTsgfQorICAg
IFR5cGUgZXZlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4obV9ldmVu
dFR5cGUpOyB9CiAKICAgICBib29sIHNoaWZ0S2V5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmll
cnMgJiBTaGlmdEtleTsgfQogICAgIGJvb2wgY29udHJvbEtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kaWZpZXJzICYgQ29udHJvbEtleTsgfQpAQCAtMTA3LDcgKzExMiw3IEBAIHByb3RlY3RlZDoK
ICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiwgV2ViRXZl
bnQmKTsKIAogcHJpdmF0ZToKLSAgICB1aW50MzJfdCBtX3R5cGU7IC8vIFR5cGUKKyAgICB1aW50
MzJfdCBtX2V2ZW50VHlwZTsgLy8gRXZlbnQgdHlwZQogICAgIHVpbnQzMl90IG1fbW9kaWZpZXJz
OyAvLyBNb2RpZmllcnMKICAgICBkb3VibGUgbV90aW1lc3RhbXA7CiB9OwpAQCAtMzE4LDEyICsz
MjMsMjEgQEAgcHJpdmF0ZToKIH07CiAKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgY2xhc3MgdG8gaXRz
IG93biBoZWFkZXIgZmlsZS4KLWNsYXNzIFdlYlRvdWNoRXZlbnQgOiBwdWJsaWMgV2ViRXZlbnQg
eworY2xhc3MgV2ViVG91Y2hFdmVudCA6IHB1YmxpYyBXZWJFdmVudCwgcHVibGljIEFQSU9iamVj
dCB7CiBwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IEFQSU9iamVjdDo6VHlwZSBBUElUeXBlID0g
VHlwZVRvdWNoRXZlbnQ7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJUb3VjaEV2ZW50PiBj
cmVhdGUoV2ViRXZlbnQ6OlR5cGUgdHlwZSwgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4g
dG91Y2hQb2ludHMsIE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlRvdWNoRXZlbnQodHlwZSwgdG91Y2hQ
b2ludHMsIG1vZGlmaWVycywgdGltZXN0YW1wKSk7CisgICAgfQorCiAgICAgV2ViVG91Y2hFdmVu
dCgpIHsgfQotIAorCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2Ugbm90IHRvIGhhdmUg
dG8gY29weSB0aGUgVmVjdG9yIGhlcmUuCi0gICAgV2ViVG91Y2hFdmVudChUeXBlLCBWZWN0b3I8
V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiwgTW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKKyAg
ICBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50OjpUeXBlLCBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBv
aW50PiwgTW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKKworICAgIFdlYlRvdWNoRXZlbnQo
Y29uc3QgV2ViVG91Y2hFdmVudCYpOwogCiAgICAgY29uc3QgVmVjdG9yPFdlYlBsYXRmb3JtVG91
Y2hQb2ludD4mIHRvdWNoUG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaFBvaW50czsgfQog
CkBAIC0zMzEsNyArMzQ1LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGRlY29kZShDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXImLCBXZWJUb3VjaEV2ZW50Jik7CiAgIAogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgYm9vbCBpc1RvdWNoRXZlbnRUeXBlKFR5cGUpOworICAgIHZpcnR1YWwgQVBJT2Jq
ZWN0OjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBzdGF0aWMg
Ym9vbCBpc1RvdWNoRXZlbnRUeXBlKFdlYkV2ZW50OjpUeXBlKTsKIAogICAgIFZlY3RvcjxXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQ+IG1fdG91Y2hQb2ludHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAppbmRleCA4MWFmN2ViMjcwMmU2NDA2MjFlMjhj
YmE3NTA4YTY4MzZjZTQzNmY2Li42YjM1MTZlOTllZTEzNWY2OWNjZGExZTQzYTA0MGJlZWM5ZTY3
MzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcApA
QCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgV2ViS2l0MlBsYXRmb3JtTW91c2VFdmVudChj
b25zdCBXZWJNb3VzZUV2ZW50JiB3ZWJFdmVudCkKICAgICB7CiAgICAgICAgIC8vIFBsYXRmb3Jt
RXZlbnQKLSAgICAgICAgc3dpdGNoICh3ZWJFdmVudC50eXBlKCkpIHsKKyAgICAgICAgc3dpdGNo
ICh3ZWJFdmVudC5ldmVudFR5cGUoKSkgewogICAgICAgICBjYXNlIFdlYkV2ZW50OjpNb3VzZURv
d246CiAgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb3VzZVBy
ZXNzZWQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0OSw3ICsxNDksNyBAQCBwdWJsaWM6CiAg
ICAgV2ViS2l0MlBsYXRmb3JtS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiB3
ZWJFdmVudCkKICAgICB7CiAgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQKLSAgICAgICAgc3dpdGNo
ICh3ZWJFdmVudC50eXBlKCkpIHsKKyAgICAgICAgc3dpdGNoICh3ZWJFdmVudC5ldmVudFR5cGUo
KSkgewogICAgICAgICBjYXNlIFdlYkV2ZW50OjpLZXlEb3duOgogICAgICAgICAgICAgbV90eXBl
ID0gV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6S2V5RG93bjsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXQyUGxhdGZvcm1HZXN0dXJlRXZl
bnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiB3ZWJFdmVudCkKICAgICB7CiAgICAgICAgIC8vIFBs
YXRmb3JtRXZlbnQKLSAgICAgICAgc3dpdGNoICh3ZWJFdmVudC50eXBlKCkpIHsKKyAgICAgICAg
c3dpdGNoICh3ZWJFdmVudC5ldmVudFR5cGUoKSkgewogICAgICAgICBjYXNlIFdlYkV2ZW50OjpH
ZXN0dXJlU2Nyb2xsQmVnaW46CiAgICAgICAgICAgICBtX3R5cGUgPSBXZWJDb3JlOjpQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW47CiAgICAgICAgICAgICBicmVhazsKQEAgLTI4NSw3
ICsyODUsNyBAQCBwdWJsaWM6CiAgICAgV2ViS2l0MlBsYXRmb3JtVG91Y2hFdmVudChjb25zdCBX
ZWJUb3VjaEV2ZW50JiB3ZWJFdmVudCkKICAgICB7CiAgICAgICAgIC8vIFBsYXRmb3JtRXZlbnQK
LSAgICAgICAgc3dpdGNoICh3ZWJFdmVudC50eXBlKCkpIHsKKyAgICAgICAgc3dpdGNoICh3ZWJF
dmVudC5ldmVudFR5cGUoKSkgewogICAgICAgICBjYXNlIFdlYkV2ZW50OjpUb3VjaFN0YXJ0OiAK
ICAgICAgICAgICAgIG1fdHlwZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6OlRvdWNoU3RhcnQ7
CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJUb3VjaEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJUb3VjaEV2ZW50LmNw
cAppbmRleCAwNWI1ZmU1MzdiNDc5MjFjZTA4MGI0ODEwYmI3NmZkM2NjODYzMzRjLi43ZjhjYjIx
ZTJlOWViZDkxNDE3YTI5OGFkMDIyNzgwZGQ5YjM4NmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlRvdWNoRXZlbnQuY3BwCkBAIC00MCw2ICs0MCwxMyBAQCBXZWJUb3VjaEV2ZW50OjpXZWJU
b3VjaEV2ZW50KFdlYkV2ZW50OjpUeXBlIHR5cGUsIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9p
bnQ+CiAgICAgQVNTRVJUKGlzVG91Y2hFdmVudFR5cGUodHlwZSkpOwogfQogCitXZWJUb3VjaEV2
ZW50OjpXZWJUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCisgICAg
OiBXZWJFdmVudCh0b3VjaEV2ZW50LmV2ZW50VHlwZSgpLCB0b3VjaEV2ZW50Lm1vZGlmaWVycygp
LCB0b3VjaEV2ZW50LnRpbWVzdGFtcCgpKQorICAgICwgbV90b3VjaFBvaW50cyh0b3VjaEV2ZW50
LnRvdWNoUG9pbnRzKCkpCit7CisgICAgQVNTRVJUKGlzVG91Y2hFdmVudFR5cGUodHlwZSkpOwor
fQorCiB2b2lkIFdlYlRvdWNoRXZlbnQ6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7CiAgICAgV2ViRXZlbnQ6OmVuY29kZShlbmNvZGVyKTsKQEAgLTU4
LDcgKzY1LDcgQEAgYm9vbCBXZWJUb3VjaEV2ZW50OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBXZWJUb3VjaEV2ZW50JiByZXMKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBXZWJUb3VjaEV2ZW50Ojppc1RvdWNoRXZlbnRUeXBlKFR5cGUgdHlwZSkKK2Jvb2wg
V2ViVG91Y2hFdmVudDo6aXNUb3VjaEV2ZW50VHlwZShXZWJFdmVudDo6VHlwZSB0eXBlKQogewog
ICAgIHJldHVybiB0eXBlID09IFRvdWNoU3RhcnQgfHwgdHlwZSA9PSBUb3VjaE1vdmUgfHwgdHlw
ZSA9PSBUb3VjaEVuZCB8fCB0eXBlID09IFRvdWNoQ2FuY2VsOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKaW5kZXggNzI3
OTY4MzVhNjY0N2IwMjcyZGVmMjNlZTZjMjBiMTgxMzlhOTE2NS4uODAxODkwMGU0MjI0Y2RkMWNk
ZTFkYWVkMzIyMjcxMGRjODdiMGE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCkBAIC0yOCwxMiArMjgsMTAgQEAKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogI2luY2x1ZGUgIk5hdGl2ZVdlYlRvdWNoRXZlbnQuaCIK
IAotI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRf
VHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciog
bW9kaWZpZXJzLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29udGVudCwg
Y29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbiwgZG91YmxlIHRp
bWVzdGFtcCkKLSAgICA6IFdlYlRvdWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJU
b3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCB0b1dlYkNvbnRlbnQsIHRvRGV2aWNl
U2NyZWVuLCB0aW1lc3RhbXApKQorTmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hF
dmVudChjb25zdCBXZWJUb3VjaEV2ZW50JiB3ZWJUb3VjaEV2ZW50KQorICAgIDogV2ViVG91Y2hF
dmVudCh3ZWJUb3VjaEV2ZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZs
L1dlYkV2ZW50RmFjdG9yeS5jcHAKaW5kZXggYjk5OTI1MDg0MzhkNzBmMTRmMTEzOWE5NDEzNDQw
MDBhYjk4Y2NlNC4uYjI1YzZiZGI0MGFkN2NlODVhYTA4ZmRjZjc3YmYxN2IyZjZjNjY4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAtMjA0
LDU3ICsyMDQsNCBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2Vi
S2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcAogICAgICAgICBjb252ZXJ0TWls
bGlzZWNvbmRUb1NlY29uZChldmVudC0+dGltZXN0YW1wKSk7CiB9CiAKLSNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQotc3RhdGljIGlubGluZSBXZWJFdmVudDo6VHlwZSB0eXBlRm9yVG91Y2hFdmVu
dChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlKQotewotICAgIGlmICh0eXBlID09IEVXS19UT1VD
SF9TVEFSVCkKLSAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaFN0YXJ0OwotICAgIGlmICh0
eXBlID09IEVXS19UT1VDSF9NT1ZFKQotICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoTW92
ZTsKLSAgICBpZiAodHlwZSA9PSBFV0tfVE9VQ0hfRU5EKQotICAgICAgICByZXR1cm4gV2ViRXZl
bnQ6OlRvdWNoRW5kOwotICAgIGlmICh0eXBlID09IEVXS19UT1VDSF9DQU5DRUwpCi0gICAgICAg
IHJldHVybiBXZWJFdmVudDo6VG91Y2hDYW5jZWw7Ci0KLSAgICByZXR1cm4gV2ViRXZlbnQ6Ok5v
VHlwZTsKLX0KLQotV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNo
RXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMs
IGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
b1dlYkNvbnRlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJs
ZSB0aW1lc3RhbXApCi17Ci0gICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4gdG91Y2hQ
b2ludHM7Ci0gICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBvaW50U3RhdGUgc3RhdGU7
Ci0gICAgY29uc3QgRWluYV9MaXN0KiBsaXN0OwotICAgIHZvaWQqIGl0ZW07Ci0gICAgRUlOQV9M
SVNUX0ZPUkVBQ0gocG9pbnRzLCBsaXN0LCBpdGVtKSB7Ci0gICAgICAgIEV3a19Ub3VjaF9Qb2lu
dCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihpdGVtKTsKLQotICAgICAg
ICBzd2l0Y2ggKHBvaW50LT5zdGF0ZSkgewotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRf
VVA6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxl
YXNlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRf
TU9WRToKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1v
dmVkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9E
T1dOOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJl
c3NlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRf
U1RJTEw6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hT
dGF0aW9uYXJ5OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9Q
T0lOVF9DQU5DRUw6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hDYW5jZWxsZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0KLQotICAgICAgICBJbnRQb2ludCBwb3MocG9pbnQtPngsIHBvaW50LT55KTsKLSAg
ICAgICAgdG91Y2hQb2ludHMuYXBwZW5kKFdlYlBsYXRmb3JtVG91Y2hQb2ludChwb2ludC0+aWQs
IHN0YXRlLCB0b0RldmljZVNjcmVlbi5tYXBQb2ludChwb3MpLCB0b1dlYkNvbnRlbnQubWFwUG9p
bnQocG9zKSkpOwotICAgIH0KLQotICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGVGb3JUb3Vj
aEV2ZW50KHR5cGUpLCB0b3VjaFBvaW50cywgbW9kaWZpZXJzRm9yRXZlbnQobW9kaWZpZXJzKSwg
dGltZXN0YW1wKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCmluZGV4IGU0NDRkYjI5ZDUyMzg0
MDIyMDQxZTVkYjhkMjQ0MGMzMGQ4MjNlODAuLjI4NzIwNzg0NGRhZGRmMTAyZDhhNTg5NDBhYzU1
NmE2YjU0ZmE1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZl
bnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rv
cnkuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWJFdmVudEZhY3RvcnlfaAogCiAjaW5j
bHVkZSAiV2ViRXZlbnQuaCIKLSNpbmNsdWRlICJld2tfdG91Y2guaCIKICNpbmNsdWRlIDxFdmFz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KIApAQCAtNDEsOSArNDAs
NiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYldoZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVu
dChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJik7CiAgICAgc3RhdGljIFdl
YktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tl
eV9Eb3duKik7CiAgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRF
dmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOwotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
Ci0gICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hf
RXZlbnRfVHlwZSwgY29uc3QgRWluYV9MaXN0KiwgY29uc3QgRXZhc19Nb2RpZmllciosIGNvbnN0
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYsIGRvdWJsZSB0aW1lc3RhbXApOwotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElD
YXN0RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVm
bC5oCmluZGV4IGQzYmNhOTI2NTc3Mjc4MjVjZmExNmYyMjE1MjBiYzEwMzZlYmU5M2IuLjRhODE0
ZjNkMDJkZjY1NmQzMjdiNjI3OTBhZWZkZDBiNjU0YjBmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaApAQCAtMzcsNiArMzcsMTAg
QEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLVmlld1JlZiwgV2ViVmlldykKIFdLX0FERF9BUElfTUFQ
UElORyhXS1BvcHVwSXRlbVJlZiwgV2ViUG9wdXBJdGVtRWZsKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLUG9wdXBNZW51TGlzdGVuZXJSZWYsIFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsKQogCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKK1dLX0FERF9BUElfTUFQUElORyhXS1RvdWNoRXZlbnRSZWYs
IFdlYlRvdWNoRXZlbnQpCisjZW5kaWYKKwogLy8gRW51bSBjb252ZXJzaW9ucy4KIGlubGluZSBX
S1BvcHVwSXRlbVRleHREaXJlY3Rpb24gdG9BUEkoV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2
ZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTE0MjE3ZjQ1NWNlMjhkZmRhMmNkZmVjMWI5NjM1NDhm
NTc1NDM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS0V2ZW50RWZsLmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tFdmVudEVmbC5oIgorCisjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyBpbmxpbmUgV2Vi
RXZlbnQ6OlR5cGUgdHlwZUZvckV2ZW50KFdLRXZlbnRUeXBlIHR5cGUpCit7CisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICBpZiAodHlwZSA9PSBrV0tFdmVudFR5cGVUb3VjaFN0YXJ0KQor
ICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7CisgICAgaWYgKHR5cGUgPT0ga1dL
RXZlbnRUeXBlVG91Y2hNb3ZlKQorICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoTW92ZTsK
KyAgICBpZiAodHlwZSA9PSBrV0tFdmVudFR5cGVUb3VjaEVuZCkKKyAgICAgICAgcmV0dXJuIFdl
YkV2ZW50OjpUb3VjaEVuZDsKKyAgICBpZiAodHlwZSA9PSBrV0tFdmVudFR5cGVUb3VjaENhbmNl
bCkKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaENhbmNlbDsKKyNlbmRpZgorCisgICAg
cmV0dXJuIFdlYkV2ZW50OjpOb1R5cGU7Cit9CisKK3N0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6Ok1v
ZGlmaWVycyBtb2RpZmllcnNGb3JXS0V2ZW50KHVuc2lnbmVkIG1vZGlmaWVycykKK3sKKyAgICB1
bnNpZ25lZCByZXN1bHQgPSAwOworCisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZp
ZXJzU2hpZnRLZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6U2hpZnRLZXk7CisgICAg
aWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleSkKKyAgICAgICAgcmVz
dWx0IHw9IFdlYkV2ZW50OjpDb250cm9sS2V5OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVu
dE1vZGlmaWVyc0FsdEtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpBbHRLZXk7Cisg
ICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleSkKKyAgICAgICAgcmVz
dWx0IHw9IFdlYkV2ZW50OjpNZXRhS2V5OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkV2
ZW50OjpNb2RpZmllcnM+KHJlc3VsdCk7Cit9CisKK1dLVG91Y2hFdmVudFJlZiBXS1RvdWNoRXZl
bnRDcmVhdGUoV0tUb3VjaEV2ZW50KiBldmVudCkKK3sKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgIGlmICghZXZlbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgVmVjdG9yPFdlYlBs
YXRmb3JtVG91Y2hQb2ludD4gdG91Y2hQb2ludHM7CisgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50
OjpUb3VjaFBvaW50U3RhdGUgc3RhdGU7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZXZlbnQtPm51bVRvdWNoUG9pbnRzICYmIGkgPCBrV0tNYXhpbXVtVG91Y2hQb2ludHNQZXJUb3Vj
aEV2ZW50OyArK2kpIHsKKyAgICAgICAgY29uc3QgV0tUb3VjaFBvaW50JiBwb2ludCA9IGV2ZW50
LT50b3VjaFBvaW50c1tpXTsKKyAgICAgICAgc3dpdGNoIChwb2ludC5zdGF0ZSkgeworICAgICAg
ICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQ6CisgICAgICAgICAgICBzdGF0
ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoTW92ZWQ6CisgICAgICAg
ICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3NlZDoK
KyAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBrV0tUb3VjaFBvaW50U3RhdGVUb3Vj
aFN0YXRpb25hcnk6CisgICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hTdGF0aW9uYXJ5OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Uga1dLVG91
Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ6CisgICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICB0b3VjaFBvaW50cy5hcHBlbmQoV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50KHBvaW50LmlkLCBzdGF0ZSwgdG9JbnRQb2ludChwb2ludC5zY3Jl
ZW5Qb3NpdGlvbiksIHRvSW50UG9pbnQocG9pbnQucG9zaXRpb24pLCB0b0ludFNpemUocG9pbnQu
cmFkaXVzKSwgcG9pbnQucm90YXRpb25BbmdsZSwgcG9pbnQuZm9yY2UpKTsKKyAgICB9CisKKyAg
ICBSZWZQdHI8V2ViVG91Y2hFdmVudD4gd2ViVG91Y2hFdmVudCA9IFdlYlRvdWNoRXZlbnQ6OmNy
ZWF0ZSh0eXBlRm9yRXZlbnQoZXZlbnQtPnR5cGUpLCB0b3VjaFBvaW50cywgbW9kaWZpZXJzRm9y
V0tFdmVudChldmVudC0+bW9kaWZpZXJzKSwgZXZlbnQtPnRpbWVzdGFtcCk7CisgICAgcmV0dXJu
IHRvQVBJKHdlYlRvdWNoRXZlbnQucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShldmVudCk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk0
M2Y1NDM4NWRiYzJlNjM3YjMxZDZjNTFjNWZkNjczYTEwMThhZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5oCkBAIC0wLDAg
KzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDEzIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXS0V2ZW50RWZsX2gKKyNkZWZpbmUgV0tFdmVudEVmbF9oCisKKyNpbmNsdWRlIDxXZWJLaXQy
L1dLRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0cnkuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitlbnVtIFdLRXZlbnRUeXBlIHsKKyAg
ICBrV0tFdmVudFR5cGVOb1R5cGUgPSAtMSwKKyAgICBrV0tFdmVudFR5cGVUb3VjaFN0YXJ0LAor
ICAgIGtXS0V2ZW50VHlwZVRvdWNoTW92ZSwKKyAgICBrV0tFdmVudFR5cGVUb3VjaEVuZCwKKyAg
ICBrV0tFdmVudFR5cGVUb3VjaENhbmNlbAorfTsKK3R5cGVkZWYgZW51bSBXS0V2ZW50VHlwZSBX
S0V2ZW50VHlwZTsKKworZW51bSBXS1RvdWNoUG9pbnRTdGF0ZSB7CisgICAga1dLVG91Y2hQb2lu
dFN0YXRlVG91Y2hSZWxlYXNlZCwKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFByZXNzZWQs
CisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hNb3ZlZCwKKyAgICBrV0tUb3VjaFBvaW50U3Rh
dGVUb3VjaFN0YXRpb25hcnksCisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQK
K307Cit0eXBlZGVmIGVudW0gV0tUb3VjaFBvaW50U3RhdGUgV0tUb3VjaFBvaW50U3RhdGU7CisK
K3N0cnVjdCBXS1RvdWNoUG9pbnQgeworICAgIHVuc2lnbmVkIGlkOworICAgIFdLVG91Y2hQb2lu
dFN0YXRlIHN0YXRlOworICAgIFdLUG9pbnQgcG9zaXRpb247CisgICAgV0tQb2ludCBzY3JlZW5Q
b3NpdGlvbjsKKyAgICBXS1NpemUgcmFkaXVzOworICAgIGZsb2F0IHJvdGF0aW9uQW5nbGU7Cisg
ICAgZmxvYXQgZm9yY2U7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tUb3VjaFBvaW50IFdLVG91Y2hQ
b2ludDsKKworZW51bSB7IGtXS01heGltdW1Ub3VjaFBvaW50c1BlclRvdWNoRXZlbnQgPSA1IH07
CisKK3N0cnVjdCBXS1RvdWNoRXZlbnQgeworICAgIFdLRXZlbnRUeXBlIHR5cGU7CisgICAgV0tF
dmVudE1vZGlmaWVycyBtb2RpZmllcnM7CisgICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICB1bnNp
Z25lZCBudW1Ub3VjaFBvaW50czsKKyAgICBXS1RvdWNoUG9pbnQgdG91Y2hQb2ludHNba1dLTWF4
aW11bVRvdWNoUG9pbnRzUGVyVG91Y2hFdmVudF07Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tUb3Vj
aEV2ZW50IFdLVG91Y2hFdmVudDsKKworV0tfRVhQT1JUIFdLVG91Y2hFdmVudFJlZiBXS1RvdWNo
RXZlbnRDcmVhdGUoV0tUb3VjaEV2ZW50KiBldmVudCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
fQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0V2ZW50RWZsX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAppbmRleCAxNzc5MTFmYjIzMzkyYmUyZGVm
ODM0YzM1Y2Q2NWIyYzYwMGI4OTM5Li4yN2Q2Zjk3NjAxYWYxNmZkZmE0YjYwODM0OTBiOTczMGY1
ZGMwMzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcu
Y3BwCkBAIC0xNDgsMyArMTQ4LDEzIEBAIFdLSW1hZ2VSZWYgV0tWaWV3Q3JlYXRlU25hcHNob3Qo
V0tWaWV3UmVmIHZpZXdSZWYpCiAgICAgRXdrVmlldyogZXdrVmlldyA9IHRvRXdrVmlldyh0b0lt
cGwodmlld1JlZiktPmV2YXNPYmplY3QoKSk7CiAgICAgcmV0dXJuIFdLSW1hZ2VDcmVhdGVGcm9t
Q2Fpcm9TdXJmYWNlKGV3a1ZpZXctPnRha2VTbmFwc2hvdCgpLmdldCgpLCAwIC8qIG9wdGlvbnMg
Ki8pOwogfQorCit2b2lkIFdLVmlld1NlbmRUb3VjaEV2ZW50KFdLVmlld1JlZiB2aWV3UmVmLCBX
S1RvdWNoRXZlbnRSZWYgdG91Y2hFdmVudFJlZikKK3sKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgIHRvSW1wbCh2aWV3UmVmKS0+c2VuZFRvdWNoRXZlbnQodG9JbXBsKHRvdWNoRXZlbnRS
ZWYpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZpZXdSZWYpOworICAgIFVOVVNFRF9QQVJB
TSh0b3VjaEV2ZW50UmVmKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tWaWV3LmgKaW5kZXggNzM0NTU2NjNiYzQ0ZDU4NGQ4YmI5NjIxMWYxODZkZjI5
NGJiNTU3MS4uZjIzMGY4NDU0NDQ3NGJiZDNiMThkMzM4ZmYyMGVlNmZlMGZlMDNjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCkBAIC04OSw2ICs4OSw4
IEBAIFdLX0VYUE9SVCBFdmFzX09iamVjdCogV0tWaWV3R2V0RXZhc09iamVjdChXS1ZpZXdSZWYp
OwogCiBXS19FWFBPUlQgV0tJbWFnZVJlZiBXS1ZpZXdDcmVhdGVTbmFwc2hvdChXS1ZpZXdSZWYp
OwogCitXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZW5kVG91Y2hFdmVudChXS1ZpZXdSZWYsIFdLVG91
Y2hFdmVudFJlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4IDhmMzQzOWI5MDM2ZDA5
ZGU5MTBhNjJhNjZkYTFjNTVhNDNlNjhmODUuLmMyYTUyYmJhMTI3YzQ1MDBjMDhhZDJjN2VhMWY1
ZTM1ZWRiODBkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiU25hcHNob3RJbWFnZUdMLmgiCiAj
aW5jbHVkZSAiVmlld0NsaWVudEVmbC5oIgogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgorI2lu
Y2x1ZGUgIldLRXZlbnRFZmwuaCIKICNpbmNsdWRlICJXS0dlb21ldHJ5LmgiCiAjaW5jbHVkZSAi
V0tOdW1iZXIuaCIKICNpbmNsdWRlICJXS1BhZ2VHcm91cC5oIgpAQCAtNTgsNiArNTksNyBAQAog
I2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbl9w
cml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJl
d2tfdG91Y2hfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAjaW5jbHVkZSAiZXdr
X3dpbmRvd19mZWF0dXJlc19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgpAQCAt
NjkyLDcgKzY5NCw4IEBAIHZvaWQgRXdrVmlldzo6c2V0TW91c2VFdmVudHNFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBFd2tWaWV3OjpmZWVkVG91
Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBvaW50
cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJzKQogewotICAgIHBhZ2UoKS0+aGFuZGxl
VG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCB3
ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZSgpLCB0cmFuc2Zvcm1Ub1NjcmVlbigpLCBlY29y
ZV90aW1lX2dldCgpKSk7CisgICAgT3duUHRyPFdLVG91Y2hFdmVudD4gdG91Y2hFdmVudCA9IGFk
b3B0UHRyKGNyZWF0ZVdLVG91Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgd2ViVmll
dygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwgdHJhbnNmb3JtVG9TY3JlZW4oKSkpOworICAgIFdL
Vmlld1NlbmRUb3VjaEV2ZW50KHdrVmlldygpLCBhZG9wdFdLKFdLVG91Y2hFdmVudENyZWF0ZSh0
b3VjaEV2ZW50LmdldCgpKSkuZ2V0KCkpOwogfQogCiB2b2lkIEV3a1ZpZXc6OnNldFRvdWNoRXZl
bnRzRW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3LmgKaW5kZXggNzFkYWQyZDU3YTcwMWU2ZjU5MmMzYzY2N2M0ODEzNDU3ODBlMTc1
Mi4uNGFiOGFkZDFjMzU1ZjdkM2Y1ZjM0OTgzMjg5Mjk0NmI0Nzc5OTk0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHREaXJl
Y3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9U
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC04MCw3ICs4
MSw2IEBAIGNsYXNzIENvbG9yOwogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOwogY2xh
c3MgQ3Vyc29yOwogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4Owog
fQogCiBjbGFzcyBFd2tDb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3RvdWNoLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a190b3VjaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZhMTBlNTZiMGM0NWVkYTkwMTM5YjhiMGNj
YTIzODVlNjNlZTExYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a190b3VjaC5jcHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3Rv
dWNoLmgiCisKKyNpbmNsdWRlICJld2tfdG91Y2hfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEVjb3Jl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK1dLVG91Y2hFdmVudCogY3JlYXRlV0tUb3VjaEV2ZW50KEV3a19Ub3Vj
aF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01v
ZGlmaWVyKiBtb2RpZmllcnMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuKQoreworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChwb2ludHMsIDApOworCisgICAgV0tUb3VjaEV2ZW50KiB0b3Vj
aEV2ZW50ID0gbmV3IFdLVG91Y2hFdmVudDsKKyAgICB0b3VjaEV2ZW50LT50eXBlID0gc3RhdGlj
X2Nhc3Q8V0tFdmVudFR5cGU+KHR5cGUpOworICAgIHRvdWNoRXZlbnQtPnRpbWVzdGFtcCA9IGVj
b3JlX3RpbWVfZ2V0KCk7CisgICAgdG91Y2hFdmVudC0+bnVtVG91Y2hQb2ludHMgPSBlaW5hX2xp
c3RfY291bnQocG9pbnRzKTsKKyAgICBpZiAodG91Y2hFdmVudC0+bnVtVG91Y2hQb2ludHMgPiBr
V0tNYXhpbXVtVG91Y2hQb2ludHNQZXJUb3VjaEV2ZW50KQorICAgICAgICB0b3VjaEV2ZW50LT5u
dW1Ub3VjaFBvaW50cyA9IGVpbmFfbGlzdF9jb3VudChwb2ludHMpOworCisgICAgdG91Y2hFdmVu
dC0+bW9kaWZpZXJzID0gMDsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlm
aWVycywgIlNoaWZ0IikpCisgICAgICAgIHRvdWNoRXZlbnQtPm1vZGlmaWVycyB8PSBrV0tFdmVu
dE1vZGlmaWVyc1NoaWZ0S2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9k
aWZpZXJzLCAiQ29udHJvbCIpKQorICAgICAgICB0b3VjaEV2ZW50LT5tb2RpZmllcnMgfD0ga1dL
RXZlbnRNb2RpZmllcnNDb250cm9sS2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19z
ZXQobW9kaWZpZXJzLCAiQWx0IikpCisgICAgICAgIHRvdWNoRXZlbnQtPm1vZGlmaWVycyB8PSBr
V0tFdmVudE1vZGlmaWVyc0FsdEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0
KG1vZGlmaWVycywgIk1ldGEiKSkKKyAgICAgICAgdG91Y2hFdmVudC0+bW9kaWZpZXJzIHw9IGtX
S0V2ZW50TW9kaWZpZXJzTWV0YUtleTsKKworICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdDsKKyAg
ICBkb3VibGUgeDsKKyAgICBkb3VibGUgeTsKKyAgICB1bnNpZ25lZCBpbmRleDsKKyAgICBmb3Ig
KGxpc3QgPSBwb2ludHMsIGluZGV4ID0gMDsgbGlzdCAmJiBpbmRleCA8IHRvdWNoRXZlbnQtPm51
bVRvdWNoUG9pbnRzOyBsaXN0ID0gZWluYV9saXN0X25leHQobGlzdCksICsraW5kZXgpIHsKKyAg
ICAgICAgRXdrX1RvdWNoX1BvaW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2lu
dCo+KGVpbmFfbGlzdF9kYXRhX2dldChsaXN0KSk7CisgICAgICAgIFdLVG91Y2hQb2ludCYgd2tU
b3VjaFBvaW50ID0gdG91Y2hFdmVudC0+dG91Y2hQb2ludHNbaW5kZXhdOworCisgICAgICAgIHdr
VG91Y2hQb2ludC5pZCA9IHBvaW50LT5pZDsKKyAgICAgICAgdG9XZWJDb250ZW50Lm1hcChwb2lu
dC0+eCwgcG9pbnQtPnksIHgsIHkpOworICAgICAgICB3a1RvdWNoUG9pbnQucG9zaXRpb24gPSBX
S1BvaW50TWFrZSh4LCB5KTsKKyAgICAgICAgdG9EZXZpY2VTY3JlZW4ubWFwKHBvaW50LT54LCBw
b2ludC0+eSwgeCwgeSk7CisgICAgICAgIHdrVG91Y2hQb2ludC5zY3JlZW5Qb3NpdGlvbiA9IFdL
UG9pbnRNYWtlKHgsIHkpOworICAgICAgICB3a1RvdWNoUG9pbnQucmFkaXVzID0gV0tTaXplTWFr
ZSgwLCAwKTsKKyAgICAgICAgd2tUb3VjaFBvaW50LnJvdGF0aW9uQW5nbGUgPSAwOworICAgICAg
ICB3a1RvdWNoUG9pbnQuZm9yY2UgPSAwOworCisgICAgICAgIHN3aXRjaCAocG9pbnQtPnN0YXRl
KSB7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9VUDoKKyAgICAgICAgICAgIHdrVG91
Y2hQb2ludC5zdGF0ZSA9IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQ7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX01PVkU6CisgICAgICAg
ICAgICB3a1RvdWNoUG9pbnQuc3RhdGUgPSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9ET1dOOgor
ICAgICAgICAgICAgd2tUb3VjaFBvaW50LnN0YXRlID0ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQ
cmVzc2VkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lO
VF9TVElMTDoKKyAgICAgICAgICAgIHdrVG91Y2hQb2ludC5zdGF0ZSA9IGtXS1RvdWNoUG9pbnRT
dGF0ZVRvdWNoU3RhdGlvbmFyeTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVW
QVNfVE9VQ0hfUE9JTlRfQ0FOQ0VMOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgd2tU
b3VjaFBvaW50LnN0YXRlID0ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0b3VjaEV2ZW50
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Rv
dWNoX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a190b3Vj
aF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFiYTAxNzMwODI0OTZkOWViOWU1MjJhMTU1YWY5ODc2
ZjU5NDI3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a190b3VjaF9wcml2YXRlLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworICogTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a190b3VjaF9wcml2YXRlX2gKKyNkZWZpbmUg
ZXdrX3RvdWNoX3ByaXZhdGVfaAorCisjaW5jbHVkZSAiV0tFdmVudEVmbC5oIgorI2luY2x1ZGUg
ImV3a190b3VjaC5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxFdmFzLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEFmZmluZVRyYW5zZm9ybTsKK30KKworV0tUb3VjaEV2
ZW50KiBjcmVhdGVXS1RvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUsIGNvbnN0IEVpbmFf
TGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01vZGlmaWVyKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYg
dG9EZXZpY2VTY3JlZW4pOworCisjZW5kaWYgLy8gZXdrX3RvdWNoX3ByaXZhdGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiODAxZDU1YThhNzMxOWM2
NzljMmIyNWUwY2Q3MDgzMTFjNTg5YjU1Li45YTliOTVlNDg3OTY0ZDk3MDQxYzI5MDY5NjNjYmY0
ODY4ODYwYjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtMTA5MSw3ICsxMDkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRXZlbnQo
Y29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIE5PVEU6IFRoaXMgZG9lcyBub3Qgc3RhcnQgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyIGJl
Y2F1c2UgbW91c2UgbW92ZSBzaG91bGQgbm90IGluZGljYXRlIGludGVyYWN0aW9uLgotICAgIGlm
IChldmVudC50eXBlKCkgIT0gV2ViRXZlbnQ6Ok1vdXNlTW92ZSkKKyAgICBpZiAoZXZlbnQuZXZl
bnRUeXBlKCkgIT0gV2ViRXZlbnQ6Ok1vdXNlTW92ZSkKICAgICAgICAgbV9wcm9jZXNzLT5yZXNw
b25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChtX3By
b2Nlc3NpbmdNb3VzZU1vdmVFdmVudCkgewpAQCAtMTEwNiwxMyArMTEwNiwxMyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aGFuZGxlTW91c2VFdmVudChjb25zdCBOYXRpdmVXZWJNb3VzZUV2ZW50JiBl
dmVudCkKICAgICAvLyBkaXNwbGF5IGEgcG9wdXAgbWVudSBmb3Igc2VsZWN0IGVsZW1lbnRzLiBX
aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHNlbGVjdGVkIGl0ZW0sCiAgICAgLy8gd2UgZmFrZSBh
IG1vdXNlIHVwIGV2ZW50IGJ5IHVzaW5nIHRoaXMgc3RvcmVkIGRvd24gZXZlbnQuIFRoaXMgZXZl
bnQgZ2V0cyBjbGVhcmVkCiAgICAgLy8gd2hlbiB0aGUgbW91c2UgdXAgbWVzc2FnZSBpcyByZWNl
aXZlZCBmcm9tIFdlYlByb2Nlc3MuCi0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6
TW91c2VEb3duKQorICAgIGlmIChldmVudC5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VE
b3duKQogICAgICAgICBtX2N1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50ID0gYWRvcHRQ
dHIobmV3IE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXZlbnQpKTsKIAogICAgIGlmIChtX3Nob3VsZFNl
bmRFdmVudHNTeW5jaHJvbm91c2x5KSB7CiAgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwog
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50
U3luY0ZvclRlc3RpbmcoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudFN5bmNG
b3JUZXN0aW5nOjpSZXBseShoYW5kbGVkKSwgbV9wYWdlSUQpOwotICAgICAgICBkaWRSZWNlaXZl
RXZlbnQoZXZlbnQudHlwZSgpLCBoYW5kbGVkKTsKKyAgICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2
ZW50LmV2ZW50VHlwZSgpLCBoYW5kbGVkKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOwog
fQpAQCAtMTIxOSw3ICsxMjE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbmRXaGVlbEV2ZW50
KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZW50KQogICAgIGlmIChtX3Nob3VsZFNlbmRFdmVudHNT
eW5jaHJvbm91c2x5KSB7CiAgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwogICAgICAgICBt
X3Byb2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaGVlbEV2ZW50U3luY0ZvclRl
c3RpbmcoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6V2hlZWxFdmVudFN5bmNGb3JUZXN0aW5n
OjpSZXBseShoYW5kbGVkKSwgbV9wYWdlSUQpOwotICAgICAgICBkaWRSZWNlaXZlRXZlbnQoZXZl
bnQudHlwZSgpLCBoYW5kbGVkKTsKKyAgICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LmV2ZW50
VHlwZSgpLCBoYW5kbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTIzMSw3ICsx
MjMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBMT0coS2V5SGFuZGxpbmcsICJXZWJQYWdlUHJveHk6OmhhbmRs
ZUtleWJvYXJkRXZlbnQ6ICVzIiwgd2ViS2V5Ym9hcmRFdmVudFR5cGVTdHJpbmcoZXZlbnQudHlw
ZSgpKSk7CisgICAgTE9HKEtleUhhbmRsaW5nLCAiV2ViUGFnZVByb3h5OjpoYW5kbGVLZXlib2Fy
ZEV2ZW50OiAlcyIsIHdlYktleWJvYXJkRXZlbnRUeXBlU3RyaW5nKGV2ZW50LmV2ZW50VHlwZSgp
KSk7CiAKICAgICBtX2tleUV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKIApAQCAtMTIzOSw3ICsx
MjM5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKG1fc2hvdWxkU2VuZEV2ZW50c1N5
bmNocm9ub3VzbHkpIHsKICAgICAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CiAgICAgICAgIG1f
cHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50U3luY0ZvclRlc3Rp
bmcoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnRTeW5jRm9yVGVzdGluZzo6UmVw
bHkoaGFuZGxlZCksIG1fcGFnZUlEKTsKLSAgICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LnR5
cGUoKSwgaGFuZGxlZCk7CisgICAgICAgIGRpZFJlY2VpdmVFdmVudChldmVudC5ldmVudFR5cGUo
KSwgaGFuZGxlZCk7CiAgICAgfSBlbHNlIGlmIChtX2tleUV2ZW50UXVldWUuc2l6ZSgpID09IDEp
IC8vIE90aGVyd2lzZSwgc2VudCBmcm9tIERpZFJlY2VpdmVFdmVudCBtZXNzYWdlIGhhbmRsZXIu
CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQoZXZl
bnQpLCBtX3BhZ2VJRCk7CiB9CkBAIC0xMzA4LDcgKzEzMDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICAg
ICAgICAgaWYgKG1fc2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkpIHsKICAgICAgICAgICAg
IGJvb2wgaGFuZGxlZCA9IGZhbHNlOwogICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmNGb3JUZXN0aW5nKGV2ZW50KSwgTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZzo6UmVwbHkoaGFuZGxlZCksIG1f
cGFnZUlEKTsKLSAgICAgICAgICAgIGRpZFJlY2VpdmVFdmVudChldmVudC50eXBlKCksIGhhbmRs
ZWQpOworICAgICAgICAgICAgZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LmV2ZW50VHlwZSgpLCBoYW5k
bGVkKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CiAgICAgfSBlbHNlIHsK
QEAgLTM0NTksNyArMzQ1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQo
dWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgIGNhc2UgV2ViRXZlbnQ6Okdl
c3R1cmVTY3JvbGxFbmQ6CiAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZVNpbmdsZVRhcDogewog
ICAgICAgICBXZWJHZXN0dXJlRXZlbnQgZXZlbnQgPSBtX2dlc3R1cmVFdmVudFF1ZXVlLmZpcnN0
KCk7Ci0gICAgICAgIE1FU1NBR0VfQ0hFQ0sodHlwZSA9PSBldmVudC50eXBlKCkpOworICAgICAg
ICBNRVNTQUdFX0NIRUNLKHR5cGUgPT0gZXZlbnQuZXZlbnRUeXBlKCkpOwogCiAgICAgICAgIG1f
Z2VzdHVyZUV2ZW50UXVldWUucmVtb3ZlRmlyc3QoKTsKICAgICAgICAgbV9wYWdlQ2xpZW50LT5k
b25lV2l0aEdlc3R1cmVFdmVudChldmVudCwgaGFuZGxlZCk7CkBAIC0zNDkxLDcgKzM0OTEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUs
IGJvb2wgaGFuZGxlZCkKICAgICAgICAgTE9HKEtleUhhbmRsaW5nLCAiV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlRXZlbnQ6ICVzIiwgd2ViS2V5Ym9hcmRFdmVudFR5cGVTdHJpbmcodHlwZSkpOwog
CiAgICAgICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQgZXZlbnQgPSBtX2tleUV2ZW50UXVldWUu
Zmlyc3QoKTsKLSAgICAgICAgTUVTU0FHRV9DSEVDSyh0eXBlID09IGV2ZW50LnR5cGUoKSk7Cisg
ICAgICAgIE1FU1NBR0VfQ0hFQ0sodHlwZSA9PSBldmVudC5ldmVudFR5cGUoKSk7CiAKICAgICAg
ICAgbV9rZXlFdmVudFF1ZXVlLnJlbW92ZUZpcnN0KCk7CiAKQEAgLTM1MTIsNyArMzUxMiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwg
Ym9vbCBoYW5kbGVkKQogICAgIGNhc2UgV2ViRXZlbnQ6OlRvdWNoRW5kOgogICAgIGNhc2UgV2Vi
RXZlbnQ6OlRvdWNoQ2FuY2VsOiB7CiAgICAgICAgIFF1ZXVlZFRvdWNoRXZlbnRzIHF1ZXVlZEV2
ZW50cyA9IG1fdG91Y2hFdmVudFF1ZXVlLmZpcnN0KCk7Ci0gICAgICAgIE1FU1NBR0VfQ0hFQ0so
dHlwZSA9PSBxdWV1ZWRFdmVudHMuZm9yd2FyZGVkRXZlbnQudHlwZSgpKTsKKyAgICAgICAgTUVT
U0FHRV9DSEVDSyh0eXBlID09IHF1ZXVlZEV2ZW50cy5mb3J3YXJkZWRFdmVudC5ldmVudFR5cGUo
KSk7CiAgICAgICAgIG1fdG91Y2hFdmVudFF1ZXVlLnJlbW92ZUZpcnN0KCk7CiAKICAgICAgICAg
bV9wYWdlQ2xpZW50LT5kb25lV2l0aFRvdWNoRXZlbnQocXVldWVkRXZlbnRzLmZvcndhcmRlZEV2
ZW50LCBoYW5kbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCmlu
ZGV4IDJhM2FhOWM4MjM2ZTVmZTFhMTFhMzMzNDI2ODY1Yzc5YTUyMjVlZWUuLmMyNjI2Zjg2YjM4
YjAwZDlhZTVmZWM1OTQ5ODkxMGExMjkwOGJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJWaWV3LmNwcApAQCAtNTQyLDQgKzU0MiwxMiBAQCB2b2lkIFdlYlZpZXc6OnBhZ2VU
cmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiAgICAgbV9ld2tWaWV3LT5zY2hlZHVsZVVwZGF0ZURp
c3BsYXkoKTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIFdlYlZpZXc6OnNl
bmRUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQqIHRvdWNoRXZlbnQpCit7CisgICAgQVNT
RVJUKHRvdWNoRXZlbnQpOworICAgIG1fcGFnZS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJU
b3VjaEV2ZW50KCp0b3VjaEV2ZW50KSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCmluZGV4IDQyYzhkMTNkMGYx
ZDUwZDQ5MzE2NzFlOTBlNGRkNzkzNTVlMmVlZGUuLmUwODNmN2RlZWFmZjA5OTg1Mzk4ZmY4MzRj
MzQwYjU5M2U1NDFlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCkBA
IC04MCw2ICs4MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBleGl0RnVsbFNjcmVlbigpOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQo
Y29uc3QgV2ViVG91Y2hFdmVudCopOworI2VuZGlmCisKICAgICAvLyBWaWV3IGNsaWVudC4KICAg
ICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tWaWV3Q2xpZW50Kik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VFdmVudEhhbmRsZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAK
aW5kZXggYjgwNjEzNDM4YjM1YmY5NmRlNzNiNGE2MDRkZGFjYTE0MzA0OTNkYS4uN2ZmN2QxZmY0
MDVhMjhlNWYxYzMzMWQ2MTc3ZTgyODZhNDBhNmM2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZUV2ZW50SGFuZGxlci5jcHAKQEAgLTQ0Myw3ICs0
NDMsNyBAQCB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6aGFuZGxlV2lsbFNldElucHV0TWV0
aG9kU3RhdGUoKQogCiB2b2lkIFF0V2ViUGFnZUV2ZW50SGFuZGxlcjo6ZG9uZVdpdGhHZXN0dXJl
RXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVudCwgYm9vbCB3YXNFdmVudEhhbmRsZWQp
CiB7Ci0gICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6R2VzdHVyZVNpbmdsZVRhcCkK
KyAgICBpZiAoZXZlbnQuZXZlbnRUeXBlKCkgIT0gV2ViRXZlbnQ6Okdlc3R1cmVTaW5nbGVUYXAp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcG9zdHBvbmVUZXh0SW5wdXRTdGF0ZUNoYW5nZWQg
PSBmYWxzZTsKQEAgLTU4MywxMCArNTgzLDEwIEBAIHZvaWQgUXRXZWJQYWdlRXZlbnRIYW5kbGVy
OjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFFJbnB1dEV2ZW50KiBldmVudCkKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogdm9pZCBRdFdlYlBhZ2VFdmVudEhhbmRsZXI6OmRvbmVXaXRoVG91Y2hF
dmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCwgYm9vbCB3YXNFdmVudEhhbmRs
ZWQpCiB7Ci0gICAgaWYgKHdhc0V2ZW50SGFuZGxlZCB8fCBldmVudC50eXBlKCkgPT0gV2ViRXZl
bnQ6OlRvdWNoQ2FuY2VsKSB7CisgICAgaWYgKHdhc0V2ZW50SGFuZGxlZCB8fCBldmVudC5ldmVu
dFR5cGUoKSA9PSBXZWJFdmVudDo6VG91Y2hDYW5jZWwpIHsKICAgICAgICAgbV9wYW5HZXN0dXJl
UmVjb2duaXplci5jYW5jZWwoKTsKICAgICAgICAgbV9waW5jaEdlc3R1cmVSZWNvZ25pemVyLmNh
bmNlbCgpOwotICAgICAgICBpZiAoZXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpUb3VjaE1vdmUp
CisgICAgICAgIGlmIChldmVudC5ldmVudFR5cGUoKSAhPSBXZWJFdmVudDo6VG91Y2hNb3ZlKQog
ICAgICAgICAgICAgbV90YXBHZXN0dXJlUmVjb2duaXplci5jYW5jZWwoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCmlu
ZGV4IDQzNjRjZTk3Y2EwZmM3ZGQ2ZTA5ZDU1MDRkNDhkM2QxMzUwNTllNGIuLjFiZGEwYWZmMWQ5
ZjhlMzhhNzEzYzIzNDJlOTgwYmMzNjk1ZDA3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2VPdmVybGF5LmNwcApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgIAogICAg
IHZpcnR1YWwgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiBwYWdlT3ZlcmxheSwgY29uc3Qg
V2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUo
KSkgeworICAgICAgICBzd2l0Y2ggKGV2ZW50LmV2ZW50VHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
V2ViRXZlbnQ6Ok1vdXNlRG93bjogewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5tb3VzZURv
d24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2Nh
cGVQbHVnaW5NYWMubW0KaW5kZXggYzIxMDExZDYwYjEwYzkxZmU0MjBjZDU0OTYzYjRiZWFiNjIz
Y2RkZC4uZDVlNDhkZTYwNmVhNmYyYjcyZjhkOGRmYzA2MjIxZmYyMjM4NTZkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2Fw
ZVBsdWdpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCkBAIC0zNzcsMTAgKzM3NywxMCBAQCBzdGF0
aWMgaW5saW5lIEV2ZW50UmVjb3JkIGluaXRpYWxpemVFdmVudFJlY29yZChFdmVudEtpbmQgZXZl
bnRLaW5kKQogCiBzdGF0aWMgYm9vbCBhbnlNb3VzZUJ1dHRvbklzRG93bihjb25zdCBXZWJFdmVu
dCYgZXZlbnQpCiB7Ci0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3du
KQorICAgIGlmIChldmVudC5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1v
dXNlTW92ZSAmJiBzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oZXZlbnQpLmJ1dHRv
bigpICE9IFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uKQorICAgIGlmIChldmVudC5ldmVudFR5cGUo
KSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlICYmIHN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZl
bnQmPihldmVudCkuYnV0dG9uKCkgIT0gV2ViTW91c2VFdmVudDo6Tm9CdXR0b24pCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzg4LDEwICszODgsMTAgQEAg
c3RhdGljIGJvb2wgYW55TW91c2VCdXR0b25Jc0Rvd24oY29uc3QgV2ViRXZlbnQmIGV2ZW50KQog
CiBzdGF0aWMgYm9vbCByaWdodE1vdXNlQnV0dG9uSXNEb3duKGNvbnN0IFdlYkV2ZW50JiBldmVu
dCkKIHsKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24gJiYgc3Rh
dGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCY+KGV2ZW50KS5idXR0b24oKSA9PSBXZWJNb3Vz
ZUV2ZW50OjpSaWdodEJ1dHRvbikKKyAgICBpZiAoZXZlbnQuZXZlbnRUeXBlKCkgPT0gV2ViRXZl
bnQ6Ok1vdXNlRG93biAmJiBzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oZXZlbnQp
LmJ1dHRvbigpID09IFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZU1vdmUg
JiYgc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCY+KGV2ZW50KS5idXR0b24oKSA9PSBX
ZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbikKKyAgICBpZiAoZXZlbnQuZXZlbnRUeXBlKCkgPT0g
V2ViRXZlbnQ6Ok1vdXNlTW92ZSAmJiBzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4o
ZXZlbnQpLmJ1dHRvbigpID09IFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CkBAIC01MTMsNyArNTEzLDcgQEAg
c3RhdGljIE5QQ29jb2FFdmVudCBpbml0aWFsaXplTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2
ZW50JiBtb3VzZUV2ZW50LCBjb25zdAogewogICAgIE5QQ29jb2FFdmVudFR5cGUgZXZlbnRUeXBl
OwogCi0gICAgc3dpdGNoIChtb3VzZUV2ZW50LnR5cGUoKSkgeworICAgIHN3aXRjaCAobW91c2VF
dmVudC5ldmVudFR5cGUoKSkgewogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNlRG93bjoKICAgICAg
ICAgZXZlbnRUeXBlID0gTlBDb2NvYUV2ZW50TW91c2VEb3duOwogICAgICAgICBicmVhazsKQEAg
LTU2Nyw3ICs1NjcsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNl
RXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICAgICAgY2FzZSBOUEV2
ZW50TW9kZWxDYXJib246IHsKICAgICAgICAgICAgIEV2ZW50S2luZCBldmVudEtpbmQgPSBudWxs
RXZlbnQ7CiAKLSAgICAgICAgICAgIHN3aXRjaCAobW91c2VFdmVudC50eXBlKCkpIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAobW91c2VFdmVudC5ldmVudFR5cGUoKSkgewogICAgICAgICAgICAgY2Fz
ZSBXZWJFdmVudDo6TW91c2VEb3duOgogICAgICAgICAgICAgICAgIGV2ZW50S2luZCA9IG1vdXNl
RG93bjsKICAgICAgICAgICAgICAgICBidXR0b25TdGF0ZUZyb21MYXN0TW91c2VFdmVudCB8PSAo
MSA8PCBidXR0b25OdW1iZXIobW91c2VFdmVudC5idXR0b24oKSkpOwpAQCAtNzQzLDcgKzc0Myw3
IEBAIHN0YXRpYyBOUENvY29hRXZlbnQgaW5pdGlhbGl6ZUtleWJvYXJkRXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYga2V5Ym9hcmRFdmVuCiAgICAgaWYgKGlzRmxhZ3NDaGFuZ2VkRXZlbnQo
a2V5Ym9hcmRFdmVudCkpCiAgICAgICAgIGV2ZW50VHlwZSA9IE5QQ29jb2FFdmVudEZsYWdzQ2hh
bmdlZDsKICAgICBlbHNlIHsKLSAgICAgICAgc3dpdGNoIChrZXlib2FyZEV2ZW50LnR5cGUoKSkg
eworICAgICAgICBzd2l0Y2ggKGtleWJvYXJkRXZlbnQuZXZlbnRUeXBlKCkpIHsKICAgICAgICAg
ICAgIGNhc2UgV2ViRXZlbnQ6OktleURvd246CiAgICAgICAgICAgICAgICAgZXZlbnRUeXBlID0g
TlBDb2NvYUV2ZW50S2V5RG93bjsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTc3Miw3ICs3
NzIsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZUtleWJvYXJkRXZlbnQo
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcgogCiAgICAgc3dpdGNoIChtX2V2ZW50TW9k
ZWwpIHsKICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOiB7Ci0gICAgICAgIGlmIChrZXlib2Fy
ZEV2ZW50LnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikgeworICAgICAgICBpZiAoa2V5Ym9h
cmRFdmVudC5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikgewogICAgICAgICAgICAg
bV9oYXNIYW5kbGVkQUtleURvd25FdmVudCA9IHRydWU7CiAKICAgICAgICAgICAgIGlmICghbV9w
bHVnaW5XYW50c0xlZ2FjeUNvY29hVGV4dElucHV0ICYmIG1faXNDb21wbGV4VGV4dElucHV0RW5h
YmxlZCAmJiAha2V5Ym9hcmRFdmVudC5pc0F1dG9SZXBlYXQoKSkgewpAQCAtNzgxLDcgKzc4MSw3
IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtSGFuZGxlS2V5Ym9hcmRFdmVudChjb25z
dCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyCiAgICAgICAgICAgICAgICAgbV9pZ25vcmVOZXh0
S2V5VXBFdmVudENvdW50ZXIrKzsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChrZXlib2FyZEV2ZW50LnR5cGUoKSA9PSBXZWJF
dmVudDo6S2V5VXAgJiYgbV9pZ25vcmVOZXh0S2V5VXBFdmVudENvdW50ZXIpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChrZXlib2FyZEV2ZW50LmV2ZW50VHlwZSgpID09IFdlYkV2ZW50OjpLZXlVcCAm
JiBtX2lnbm9yZU5leHRLZXlVcEV2ZW50Q291bnRlcikgewogICAgICAgICAgICAgbV9pZ25vcmVO
ZXh0S2V5VXBFdmVudENvdW50ZXItLTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CkBAIC04MDUsNyArODA1LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1IYW5k
bGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXIKICAgICBjYXNl
IE5QRXZlbnRNb2RlbENhcmJvbjogewogICAgICAgICBFdmVudEtpbmQgZXZlbnRLaW5kID0gbnVs
bEV2ZW50OwogCi0gICAgICAgIHN3aXRjaCAoa2V5Ym9hcmRFdmVudC50eXBlKCkpIHsKKyAgICAg
ICAgc3dpdGNoIChrZXlib2FyZEV2ZW50LmV2ZW50VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgV2Vi
RXZlbnQ6OktleURvd246CiAgICAgICAgICAgICBldmVudEtpbmQgPSBrZXlib2FyZEV2ZW50Lmlz
QXV0b1JlcGVhdCgpID8gYXV0b0tleSA6IGtleURvd247CiAgICAgICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEv
TmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXggYTE4NDY4NzhiMzEwNDYx
NGI3YTI2ZmMyN2NlYWI3OWExYTRiOThlMC4uMDJlZjliZDdlZTE0ODZkMTk2YmE1ZDhlZThiNDQx
ZTE3Mzg1MjEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAg
LTQ1NSw3ICs0NTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0WEJ1dHRvbkV2ZW50RmllbGRz
KFhFdmVudCYgeEV2ZW50LCBjb25zdCBXZWJNb3VzZUV2ZW50JiB3ZQogICAgIFhCdXR0b25FdmVu
dCYgeEJ1dHRvbiA9IHhFdmVudC54YnV0dG9uOwogICAgIHNldENvbW1vbk1vdXNlRXZlbnRGaWVs
ZHMoeEJ1dHRvbiwgd2ViRXZlbnQsIHBsdWdpbkxvY2F0aW9uKTsKIAotICAgIHhCdXR0b24udHlw
ZSA9ICh3ZWJFdmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikgPyBCdXR0b25QcmVz
cyA6IEJ1dHRvblJlbGVhc2U7CisgICAgeEJ1dHRvbi50eXBlID0gKHdlYkV2ZW50LmV2ZW50VHlw
ZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24pID8gQnV0dG9uUHJlc3MgOiBCdXR0b25SZWxlYXNl
OwogICAgIHN3aXRjaCAod2ViRXZlbnQuYnV0dG9uKCkpIHsKICAgICBjYXNlIFdlYk1vdXNlRXZl
bnQ6OkxlZnRCdXR0b246CiAgICAgICAgIHhCdXR0b24uYnV0dG9uID0gQnV0dG9uMTsKQEAgLTUw
OCw3ICs1MDgsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybUhhbmRsZU1vdXNlRXZl
bnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKG1faXNXaW5kb3dlZCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKChldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6
Ok1vdXNlRG93biB8fCBldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlVXApCisgICAgaWYg
KChldmVudC5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duIHx8IGV2ZW50LmV2ZW50
VHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZVVwKQogICAgICAgICAgJiYgZXZlbnQuYnV0dG9uKCkg
PT0gV2ViTW91c2VFdmVudDo6UmlnaHRCdXR0b24KICAgICAgICAgICYmIHF1aXJrcygpLmNvbnRh
aW5zKFBsdWdpblF1aXJrczo6SWdub3JlUmlnaHRDbGlja0luV2luZG93bGVzc01vZGUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC01MTYsNyArNTE2LDcgQEAgYm9vbCBOZXRzY2FwZVBsdWdp
bjo6cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQog
ICAgIFhFdmVudCB4RXZlbnQ7CiAgICAgaW5pdGlhbGl6ZVhFdmVudCh4RXZlbnQpOwogCi0gICAg
c3dpdGNoIChldmVudC50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGV2ZW50LmV2ZW50VHlwZSgpKSB7
CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VEb3duOgogICAgIGNhc2UgV2ViRXZlbnQ6Ok1vdXNl
VXA6CiAgICAgICAgIHNldFhCdXR0b25FdmVudEZpZWxkcyh4RXZlbnQsIGV2ZW50LCBjb252ZXJ0
VG9Sb290VmlldyhJbnRQb2ludCgpKSk7CkBAIC02MTEsNyArNjExLDcgQEAgYm9vbCBOZXRzY2Fw
ZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVu
dCYgZXZlbnQpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRYS2V5RXZlbnRGaWVsZHMoWEV2ZW50
JiB4RXZlbnQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIHdlYkV2ZW50KQogewotICAgIHhFdmVu
dC54YW55LnR5cGUgPSAod2ViRXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlEb3duKSA/IGtL
ZXlQcmVzc1R5cGUgOiBrS2V5UmVsZWFzZVR5cGU7CisgICAgeEV2ZW50LnhhbnkudHlwZSA9ICh3
ZWJFdmVudC5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikgPyBrS2V5UHJlc3NUeXBl
IDoga0tleVJlbGVhc2VUeXBlOwogICAgIFhLZXlFdmVudCYgeEtleSA9IHhFdmVudC54a2V5Owog
ICAgIHhLZXkucm9vdCA9IHJvb3RXaW5kb3dJRCgpOwogICAgIHhLZXkuc3Vid2luZG93ID0gMDsK
QEAgLTYzMiw3ICs2MzIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0WEtleUV2ZW50RmllbGRz
KFhFdmVudCYgeEV2ZW50LCBjb25zdCBXZWJLZXlib2FyZEV2ZW50JiB3ZQogYm9vbCBOZXRzY2Fw
ZVBsdWdpbjo6cGxhdGZvcm1IYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmIGV2ZW50KQogewogICAgIC8vIFdlIGRvbid0IGdlbmVyYXRlIG90aGVyIHR5cGVzIG9mIGtl
eWJvYXJkIGV2ZW50cyB2aWEgV2ViRXZlbnRGYWN0b3J5LgotICAgIEFTU0VSVChldmVudC50eXBl
KCkgPT0gV2ViRXZlbnQ6OktleURvd24gfHwgZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpLZXlV
cCk7CisgICAgQVNTRVJUKGV2ZW50LmV2ZW50VHlwZSgpID09IFdlYkV2ZW50OjpLZXlEb3duIHx8
IGV2ZW50LmV2ZW50VHlwZSgpID09IFdlYkV2ZW50OjpLZXlVcCk7CiAKICAgICBYRXZlbnQgeEV2
ZW50OwogICAgIGluaXRpYWxpemVYRXZlbnQoeEV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggMmY1OWFmOWU2ODNh
NjY3ZTkzMDhmNmQyMTRkYmVhYzNhNTcwNWQzZS4uZjM0NDc5ODVmOTMxNjIzNGRhNjlhNTNjZWVj
ZTJiNTI2N2IzNzBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTQ2Myw3ICs0NjMsNyBAQCBzdGF0aWMgTlNVSW50ZWdl
ciBtb2RpZmllckZsYWdzRnJvbVdlYkV2ZW50KGNvbnN0IFdlYkV2ZW50JiBldmVudCkKICAgICAK
IHN0YXRpYyBOU0V2ZW50VHlwZSBldmVudFR5cGVGcm9tV2ViRXZlbnQoY29uc3QgV2ViRXZlbnQm
IGV2ZW50KQogewotICAgIHN3aXRjaCAoZXZlbnQudHlwZSgpKSB7CisgICAgc3dpdGNoIChldmVu
dC5ldmVudFR5cGUoKSkgewogICAgIGNhc2UgV2ViRXZlbnQ6OktleURvd246CiAgICAgICAgIHJl
dHVybiBOU0tleURvd247CiAgICAgY2FzZSBXZWJFdmVudDo6S2V5VXA6CkBAIC01NTgsNyArNTU4
LDcgQEAgYm9vbCBQREZQbHVnaW46OmhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVu
dCYgZXZlbnQpCiAKICAgICBOU0V2ZW50ICpuc0V2ZW50ID0gbnNFdmVudEZvcldlYk1vdXNlRXZl
bnQoZXZlbnQpOwogCi0gICAgc3dpdGNoIChldmVudC50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGV2
ZW50LmV2ZW50VHlwZSgpKSB7CiAgICAgY2FzZSBXZWJFdmVudDo6TW91c2VNb3ZlOgogICAgICAg
ICBtb3VzZU1vdmVkSW5Db250ZW50QXJlYSgpOwogCkBAIC02NDAsNyArNjQwLDcgQEAgYm9vbCBQ
REZQbHVnaW46OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZl
bnQpCiAgICAgCiAgICAgTlNFdmVudCAqZmFrZUV2ZW50ID0gW05TRXZlbnQga2V5RXZlbnRXaXRo
VHlwZTpldmVudFR5cGUgbG9jYXRpb246TlNaZXJvUG9pbnQgbW9kaWZpZXJGbGFnczptb2RpZmll
ckZsYWdzIHRpbWVzdGFtcDowIHdpbmRvd051bWJlcjowIGNvbnRleHQ6MCBjaGFyYWN0ZXJzOmV2
ZW50LnRleHQoKSBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6ZXZlbnQudW5tb2RpZmllZFRl
eHQoKSBpc0FSZXBlYXQ6ZXZlbnQuaXNBdXRvUmVwZWF0KCkga2V5Q29kZTpldmVudC5uYXRpdmVW
aXJ0dWFsS2V5Q29kZSgpXTsKICAgICAKLSAgICBzd2l0Y2ggKGV2ZW50LnR5cGUoKSkgeworICAg
IHN3aXRjaCAoZXZlbnQuZXZlbnRUeXBlKCkpIHsKICAgICBjYXNlIFdlYkV2ZW50OjpLZXlEb3du
OgogICAgICAgICByZXR1cm4gW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIGtleURvd246ZmFr
ZUV2ZW50XTsKICAgICBkZWZhdWx0OgpAQCAtNzE1LDcgKzcxNSw3IEBAIHZvaWQgUERGUGx1Z2lu
OjpjbGlja2VkTGluayhOU1VSTCAqdXJsKQogICAgIEZyYW1lKiBmcmFtZSA9IHdlYkZyYW1lKCkt
PmNvcmVGcmFtZSgpOwogCiAgICAgUmVmUHRyPEV2ZW50PiBjb3JlRXZlbnQ7Ci0gICAgaWYgKG1f
bGFzdE1vdXNlRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpOb1R5cGUpCisgICAgaWYgKG1fbGFz
dE1vdXNlRXZlbnQuZXZlbnRUeXBlKCkgIT0gV2ViRXZlbnQ6Ok5vVHlwZSkKICAgICAgICAgY29y
ZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBmcmFt
ZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgcGxhdGZvcm0obV9sYXN0TW91c2VFdmVudCks
IDAsIDApOwogCiAgICAgZnJhbWUtPmxvYWRlcigpLT51cmxTZWxlY3RlZCh1cmwsIGVtcHR5U3Ry
aW5nKCksIGNvcmVFdmVudC5nZXQoKSwgZmFsc2UsIGZhbHNlLCBNYXliZVNlbmRSZWZlcnJlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBs
ZVBERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2lt
cGxlUERGUGx1Z2luLm1tCmluZGV4IGYwNzEyYjllY2YzMmVjMzAzOTgyYzJiZWZmYWViZjA4ZmNj
YjgwMWEuLmVhODNlMGJmYTUyNDNmYTViMmE0NzE3OGM4MTJjMTRjZTE1OTQzYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERG
UGx1Z2luLm1tCkBAIC02OTEsNyArNjkxLDcgQEAgdm9pZCBTaW1wbGVQREZQbHVnaW46Om1hbnVh
bFN0cmVhbURpZEZhaWwoYm9vbCkKIAogYm9vbCBTaW1wbGVQREZQbHVnaW46OmhhbmRsZU1vdXNl
RXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiB7Ci0gICAgc3dpdGNoIChldmVudC50
eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGV2ZW50LmV2ZW50VHlwZSgpKSB7CiAgICAgY2FzZSBXZWJF
dmVudDo6TW91c2VNb3ZlOgogICAgICAgICBtb3VzZU1vdmVkSW5Db250ZW50QXJlYSgpOwogICAg
ICAgICAvLyBGSVhNRTogU2hvdWxkIGFsc28gbm90aWZ5IHNjcm9sbGJhciB0byBzaG93IGhvdmVy
IGVmZmVjdC4gU2hvdWxkIGFsc28gc2VuZCBtb3VzZUV4aXRlZCB0byBoaWRlIGl0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ5
YzIwMDVkNDY1OWNmMjUxYTE0MTY3YjVlOTcwZjI2ZGE0YjM3ZTguLjZmMzc0NjgxZjI5N2Y4MGUx
NGI4ZWZmMDg2MDg4OWIwODNhOGZlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTgyMiwzMSArODIyLDMxIEBAIHZvaWQgUGx1
Z2luVmlldzo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQogCiAgICAgYm9vbCBkaWRIYW5kbGVF
dmVudCA9IGZhbHNlOwogCi0gICAgaWYgKChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5t
b3VzZW1vdmVFdmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VN
b3ZlKQotICAgICAgICB8fCAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3du
RXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikKLSAg
ICAgICAgfHwgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCAmJiBj
dXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VVcCkpIHsKKyAgICBpZiAoKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50ICYmIGN1cnJlbnRFdmVu
dC0+ZXZlbnRUeXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlTW92ZSkKKyAgICAgICAgfHwgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIGN1cnJlbnRFdmVudC0+
ZXZlbnRUeXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikKKyAgICAgICAgfHwgKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCAmJiBjdXJyZW50RXZlbnQtPmV2ZW50
VHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZVVwKSkgewogICAgICAgICAvLyBGSVhNRTogQ2xpY2tp
bmcgaW4gYSBzY3JvbGwgYmFyIHNob3VsZCBub3QgY2hhbmdlIGZvY3VzLgotICAgICAgICBpZiAo
Y3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikgeworICAgICAgICBp
ZiAoY3VycmVudEV2ZW50LT5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKSB7CiAg
ICAgICAgICAgICBmb2N1c1BsdWdpbkVsZW1lbnQoKTsKICAgICAgICAgICAgIGZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUobV9wbHVnaW5FbGVtZW50
LmdldCgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJF
dmVudDo6TW91c2VVcCkKKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50RXZlbnQtPmV2ZW50VHlw
ZSgpID09IFdlYkV2ZW50OjpNb3VzZVVwKQogICAgICAgICAgICAgZnJhbWUoKS0+ZXZlbnRIYW5k
bGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKIAogICAgICAgICBkaWRIYW5k
bGVFdmVudCA9IG1fcGx1Z2luLT5oYW5kbGVNb3VzZUV2ZW50KHN0YXRpY19jYXN0PGNvbnN0IFdl
Yk1vdXNlRXZlbnQmPigqY3VycmVudEV2ZW50KSk7CiAgICAgICAgIGlmIChldmVudC0+dHlwZSgp
ICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCkKICAgICAgICAgICAgIHBsdWdpbkRpZFJl
Y2VpdmVVc2VySW50ZXJhY3Rpb24oKTsKLSAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBX
ZWJFdmVudDo6V2hlZWwgJiYgbV9wbHVnaW4tPndhbnRzV2hlZWxFdmVudHMoKSkgeworICAgIH0g
ZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2V3aGVlbEV2ZW50ICYm
IGN1cnJlbnRFdmVudC0+ZXZlbnRUeXBlKCkgPT0gV2ViRXZlbnQ6OldoZWVsICYmIG1fcGx1Z2lu
LT53YW50c1doZWVsRXZlbnRzKCkpIHsKICAgICAgICAgZGlkSGFuZGxlRXZlbnQgPSBtX3BsdWdp
bi0+aGFuZGxlV2hlZWxFdmVudChzdGF0aWNfY2FzdDxjb25zdCBXZWJXaGVlbEV2ZW50Jj4oKmN1
cnJlbnRFdmVudCkpOwogICAgICAgICBwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKCk7
Ci0gICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJF
dmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlKQorICAg
IH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQg
JiYgY3VycmVudEV2ZW50LT5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlKQogICAg
ICAgICBkaWRIYW5kbGVFdmVudCA9IG1fcGx1Z2luLT5oYW5kbGVNb3VzZUVudGVyRXZlbnQoc3Rh
dGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCY+KCpjdXJyZW50RXZlbnQpKTsKLSAgICBlbHNl
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50ICYmIGN1cnJl
bnRFdmVudC0+dHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZU1vdmUpCisgICAgZWxzZSBpZiAoZXZl
bnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCAmJiBjdXJyZW50RXZlbnQt
PmV2ZW50VHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZU1vdmUpCiAgICAgICAgIGRpZEhhbmRsZUV2
ZW50ID0gbV9wbHVnaW4tPmhhbmRsZU1vdXNlTGVhdmVFdmVudChzdGF0aWNfY2FzdDxjb25zdCBX
ZWJNb3VzZUV2ZW50Jj4oKmN1cnJlbnRFdmVudCkpOwotICAgIGVsc2UgaWYgKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmNvbnRleHRtZW51RXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBl
KCkgPT0gV2ViRXZlbnQ6Ok1vdXNlRG93bikgeworICAgIGVsc2UgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmNvbnRleHRtZW51RXZlbnQgJiYgY3VycmVudEV2ZW50LT5ldmVudFR5
cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKSB7CiAgICAgICAgIGRpZEhhbmRsZUV2ZW50ID0g
bV9wbHVnaW4tPmhhbmRsZUNvbnRleHRNZW51RXZlbnQoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91
c2VFdmVudCY+KCpjdXJyZW50RXZlbnQpKTsKICAgICAgICAgcGx1Z2luRGlkUmVjZWl2ZVVzZXJJ
bnRlcmFjdGlvbigpOwotICAgIH0gZWxzZSBpZiAoKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmtleWRvd25FdmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudDo6S2V5
RG93bikKLSAgICAgICAgICAgICAgIHx8IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5r
ZXl1cEV2ZW50ICYmIGN1cnJlbnRFdmVudC0+dHlwZSgpID09IFdlYkV2ZW50OjpLZXlVcCkpIHsK
KyAgICB9IGVsc2UgaWYgKChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZl
bnQgJiYgY3VycmVudEV2ZW50LT5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6S2V5RG93bikKKyAg
ICAgICAgfHwgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXVwRXZlbnQgJiYgY3Vy
cmVudEV2ZW50LT5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6S2V5VXApKSB7CiAgICAgICAgIGRp
ZEhhbmRsZUV2ZW50ID0gbV9wbHVnaW4tPmhhbmRsZUtleWJvYXJkRXZlbnQoc3RhdGljX2Nhc3Q8
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCY+KCpjdXJyZW50RXZlbnQpKTsKICAgICAgICAgcGx1Z2lu
RGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggZjE5OTcw
ZWFiOTU1ZmRmMjZlN2QxODljNDNkNDc5ZmIzNzEyNGNjOS4uMGE1YWUwMjdkNjk2NmRlZTQwNzA4
NDllM2UyYzdkZjUzN2U2NWRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lk
IEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJHZXN0dXJlRXZlbgogI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCiB2b2lk
IEV2ZW50RGlzcGF0Y2hlcjo6c2VuZERpZFJlY2VpdmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFdlYkV2ZW50JiBldmVudCwgYm9vbCBkaWRIYW5kbGVFdmVudCkKIHsKLSAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90PihldmVudC50eXBlKCkpLCBkaWRI
YW5kbGVFdmVudCksIHBhZ2VJRCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oZXZlbnQuZXZlbnRUeXBlKCkpLCBkaWRIYW5kbGVFdmVudCksIHBhZ2VJ
RCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNzA0MTgzZGJkOGJkYThmNWMzYTgwYzBiNjhh
NTg3OGVlODAxNjhmNC4uZTJhYWJmNzgzN2IwNTc2ZGQyYjhkNGYyMjIyNmEyMGZlMTNlYTA5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuY3BwCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkqIHBhZ2VPdmVybGF5LCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWMKIGJv
b2wgRmluZENvbnRyb2xsZXI6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkqLCBjb25zdCBXZWJNb3Vz
ZUV2ZW50JiBtb3VzZUV2ZW50KQogewogICAgIC8vIElmIHdlIGdldCBhIG1vdXNlIGRvd24gZXZl
bnQgaW5zaWRlIHRoZSBwYWdlIG92ZXJsYXkgd2Ugc2hvdWxkIGhpZGUgdGhlIGZpbmQgVUkuCi0g
ICAgaWYgKG1vdXNlRXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpNb3VzZURvd24pIHsKKyAgICBp
ZiAobW91c2VFdmVudC5ldmVudFR5cGUoKSA9PSBXZWJFdmVudDo6TW91c2VEb3duKSB7CiAgICAg
ICAgIC8vIERpc21pc3MgdGhlIG92ZXJsYXkuCiAgICAgICAgIGhpZGVGaW5kVUkoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
MTJmYjQwMjMwYjZhYjQ3NmJkZmQ3NmQyYmEyNjFkMmY2ZGZhMzljYy4uYzI1Mjg5MTMzNjNhYjNi
NDIwY2I0MGRlNjhiODIzYjhjNzM1ZTFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtODg1LDcgKzg4NSw3IEBAIHZvaWQgV2ViUGFnZTo6
bGlua0NsaWNrZWQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50
KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8RXZlbnQ+IGNvcmVFdmVudDsKLSAgICBp
ZiAoZXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpOb1R5cGUpCisgICAgaWYgKGV2ZW50LmV2ZW50
VHlwZSgpICE9IFdlYkV2ZW50OjpOb1R5cGUpCiAgICAgICAgIGNvcmVFdmVudCA9IE1vdXNlRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgZnJhbWUtPmRvY3VtZW50KCktPmRl
ZmF1bHRWaWV3KCksIHBsYXRmb3JtKGV2ZW50KSwgMCwgMCk7CiAKICAgICBmcmFtZS0+bG9hZGVy
KCktPmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdChmcmFtZSwgUmVzb3VyY2VSZXF1
ZXN0KHVybCkpLCBmYWxzZSwgZmFsc2UsIGNvcmVFdmVudC5nZXQoKSwgMCwgTWF5YmVTZW5kUmVm
ZXJyZXIpOwpAQCAtMTU0Miw3ICsxNTQyLDcgQEAgdm9pZCBXZWJQYWdlOjptb3VzZUV2ZW50KGNv
bnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
CiAgICAgLy8gRG9uJ3QgdHJ5IHRvIGhhbmRsZSBhbnkgcGVuZGluZyBtb3VzZSBldmVudHMgaWYg
YSBjb250ZXh0IG1lbnUgaXMgc2hvd2luZy4KICAgICBpZiAobV9pc1Nob3dpbmdDb250ZXh0TWVu
dSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVu
dChzdGF0aWNfY2FzdDx1aW50MzJfdD4obW91c2VFdmVudC50eXBlKCkpLCBmYWxzZSkpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNf
Y2FzdDx1aW50MzJfdD4obW91c2VFdmVudC5ldmVudFR5cGUoKSksIGZhbHNlKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTE1NjQsNyArMTU2NCw3IEBAIHZvaWQgV2ViUGFn
ZTo6bW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgICAgICBo
YW5kbGVkID0gaGFuZGxlTW91c2VFdmVudChtb3VzZUV2ZW50LCB0aGlzLCBvbmx5VXBkYXRlU2Ny
b2xsYmFycyk7CiAgICAgfQogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRS
ZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1vdXNlRXZlbnQudHlwZSgpKSwgaGFu
ZGxlZCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50
KHN0YXRpY19jYXN0PHVpbnQzMl90Pihtb3VzZUV2ZW50LmV2ZW50VHlwZSgpKSwgaGFuZGxlZCkp
OwogfQogCiB2b2lkIFdlYlBhZ2U6Om1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJN
b3VzZUV2ZW50JiBtb3VzZUV2ZW50LCBib29sJiBoYW5kbGVkKQpAQCAtMTYwMyw3ICsxNjAzLDcg
QEAgdm9pZCBXZWJQYWdlOjp3aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZl
bnQpCiAKICAgICAgICAgaGFuZGxlZCA9IGhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgbV9w
YWdlLmdldCgpKTsKICAgICB9Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRS
ZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHdoZWVsRXZlbnQudHlwZSgpKSwgaGFu
ZGxlZCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50
KHN0YXRpY19jYXN0PHVpbnQzMl90Pih3aGVlbEV2ZW50LmV2ZW50VHlwZSgpKSwgaGFuZGxlZCkp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OndoZWVsRXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJX
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBib29sJiBoYW5kbGVkKQpAQCAtMTYxOCw3ICsxNjE4LDcg
QEAgc3RhdGljIGJvb2wgaGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5
Ym9hcmRFdmVudCwgUGFnZSogcGFnZSkKICAgICBpZiAoIXBhZ2UtPm1haW5GcmFtZSgpLT52aWV3
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChrZXlib2FyZEV2ZW50LnR5cGUo
KSA9PSBXZWJFdmVudDo6Q2hhciAmJiBrZXlib2FyZEV2ZW50LmlzU3lzdGVtS2V5KCkpCisgICAg
aWYgKGtleWJvYXJkRXZlbnQuZXZlbnRUeXBlKCkgPT0gV2ViRXZlbnQ6OkNoYXIgJiYga2V5Ym9h
cmRFdmVudC5pc1N5c3RlbUtleSgpKQogICAgICAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlQWNjZXNz
S2V5KHBsYXRmb3JtKGtleWJvYXJkRXZlbnQpKTsKICAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQo
cGxhdGZvcm0oa2V5Ym9hcmRFdmVudCkpOwogfQpAQCAtMTYzNSw3ICsxNjM1LDcgQEAgdm9pZCBX
ZWJQYWdlOjprZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50KQog
ICAgICAgICBpZiAoIWhhbmRsZWQpCiAgICAgICAgICAgICBoYW5kbGVkID0gcGVyZm9ybURlZmF1
bHRCZWhhdmlvckZvcktleUV2ZW50KGtleWJvYXJkRXZlbnQpOwogICAgIH0KLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJf
dD4oa2V5Ym9hcmRFdmVudC50eXBlKCkpLCBoYW5kbGVkKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGtleWJv
YXJkRXZlbnQuZXZlbnRUeXBlKCkpLCBoYW5kbGVkKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6a2V5
RXZlbnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50
LCBib29sJiBoYW5kbGVkKQpAQCAtMTY2Nyw3ICsxNjY3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXN0
dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiAKICAgICAgICAg
aGFuZGxlZCA9IGhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJlRXZlbnQsIG1fcGFnZS5nZXQoKSk7
CiAgICAgfQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50
KHN0YXRpY19jYXN0PHVpbnQzMl90PihnZXN0dXJlRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19j
YXN0PHVpbnQzMl90PihnZXN0dXJlRXZlbnQuZXZlbnRUeXBlKCkpLCBoYW5kbGVkKSk7CiB9CiAj
ZW5kaWYKIApAQCAtMTc4OSw3ICsxNzg5LDcgQEAgdm9pZCBXZWJQYWdlOjp0b3VjaEV2ZW50KGNv
bnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCiAKICAgICAgICAgaGFuZGxlZCA9IGhhbmRs
ZVRvdWNoRXZlbnQodG91Y2hFdmVudCwgbV9wYWdlLmdldCgpKTsKICAgICB9Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHRvdWNoRXZlbnQudHlwZSgpKSwgaGFuZGxlZCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b3VjaEV2
ZW50LmV2ZW50VHlwZSgpKSwgaGFuZGxlZCkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnRvdWNoRXZl
bnRTeW5jRm9yVGVzdGluZyhjb25zdCBXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50LCBib29sJiBo
YW5kbGVkKQpAQCAtMTkwNSw3ICsxOTA1LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbml0aWFsRm9j
dXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWIKICAg
ICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2V0Rm9jdXNlZE5vZGUoMCk7CiAKLSAg
ICBpZiAoaXNLZXlib2FyZEV2ZW50VmFsaWQgJiYgZXZlbnQudHlwZSgpID09IFdlYkV2ZW50OjpL
ZXlEb3duKSB7CisgICAgaWYgKGlzS2V5Ym9hcmRFdmVudFZhbGlkICYmIGV2ZW50LmV2ZW50VHlw
ZSgpID09IFdlYkV2ZW50OjpLZXlEb3duKSB7CiAgICAgICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCBwbGF0Zm9ybUV2ZW50KHBsYXRmb3JtKGV2ZW50KSk7CiAgICAgICAgIHBsYXRmb3JtRXZlbnQu
ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50KFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pOwogICAg
ICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/
IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsIEtleWJvYXJk
RXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZp
ZXcoKSkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2VmbC9XZWJQYWdlRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9lZmwvV2ViUGFnZUVmbC5jcHAKaW5kZXggMmZiMGMzMjIwM2RmZDZiOGMxNjBlMWJhNjlmNDg0
NDhlNTg4MzllNC4uZDY3OGU0YzFiNmJiNThjOGIxMWM3ZDIyODg1ZmEwMmU1ZmE2NzFmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VF
ZmwuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzY3JvbGwoUGFnZSog
cGFnZSwgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpCiAKIGJvb2wg
V2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJv
YXJkRXZlbnQmIGtleWJvYXJkRXZlbnQpCiB7Ci0gICAgaWYgKGtleWJvYXJkRXZlbnQudHlwZSgp
ICE9IFdlYkV2ZW50OjpLZXlEb3duICYmIGtleWJvYXJkRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50
OjpSYXdLZXlEb3duKQorICAgIGlmIChrZXlib2FyZEV2ZW50LmV2ZW50VHlwZSgpICE9IFdlYkV2
ZW50OjpLZXlEb3duICYmIGtleWJvYXJkRXZlbnQuZXZlbnRUeXBlKCkgIT0gV2ViRXZlbnQ6OlJh
d0tleURvd24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAoa2V5Ym9hcmRF
dmVudC53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcAppbmRleCA0OGE4MDEwM2M0MzZhNTZl
MDkyMWI0NGE0MTMyMTMxNWJlMmYwZTAzLi5iMjAxNmRmYTIyMjE3ZGMzODBmMzgwNGYzYzhhMjIx
MThkMmZmYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
cXQvV2ViUGFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
cXQvV2ViUGFnZVF0LmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBs
b2dpY2FsU2Nyb2xsKFBhZ2UqIHBhZ2UsIFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9u
LCBTCiAKIGJvb2wgV2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50KGNv
bnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkRXZlbnQpCiB7Ci0gICAgaWYgKGtleWJvYXJk
RXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpLZXlEb3duICYmIGtleWJvYXJkRXZlbnQudHlwZSgp
ICE9IFdlYkV2ZW50OjpSYXdLZXlEb3duKQorICAgIGlmIChrZXlib2FyZEV2ZW50LmV2ZW50VHlw
ZSgpICE9IFdlYkV2ZW50OjpLZXlEb3duICYmIGtleWJvYXJkRXZlbnQuZXZlbnRUeXBlKCkgIT0g
V2ViRXZlbnQ6OlJhd0tleURvd24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRj
aCAoa2V5Ym9hcmRFdmVudC53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192232</attachid>
            <date>2013-03-08 08:22:29 -0800</date>
            <delta_ts>2013-03-13 06:28:12 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-108915-20130309011830.patch</filename>
            <type>text/plain</type>
            <size>44307</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDNjZTU5YmM4NzUzNWUw
ZjNlNTNlZjU1NTUzM2VhOGM4NDA1MTEyZS4uNTEyNjFhNmRmZTBkYWFjNzU0N2YzNWRlZTEzYTMw
NTM0NzM3ZGY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk1IEBACiAyMDEzLTAzLTA4ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KIAorICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvdWNoIGV2ZW50cyBmb3Igb3VyIHRhcmdldCBw
bGF0Zm9ybXMgZGlmZmVyIChYSW5wdXQyLCBXYXlsYW5kLCBUaXplbikgc28KKyAgICAgICAgZm9y
IHRoZSBFRkwgcG9ydCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZmVlZCBldmVudHMgbWFudWFsbHku
CisKKyAgICAgICAgVG8ga2VlcCBvdXIgY3VycmVudCBBUEkgZm9yIGRlc2t0b3AgRUZML0VubGln
aHRlbm1lbnQgd29ya2luZywgd2UgY29udmVydAorICAgICAgICBvdXIgY3VycmVudGx5IGxpbWl0
ZWQgRUZMIGV2ZW50cyB0byB0aGUgbmV3IEVGTCBzcGVjaWZpYyBDIFdLVG91Y2hFdmVudCB0eXBl
LgorCisgICAgICAgIFRoZSBXS1ZpZXdTZW5kVG91Y2hFdmVudCBjYW4gYmUgdXNlZCBmb3IgYW55
IHVzZS1jYXNlIChwbGF0Zm9ybS9wcm9kdWN0KQorICAgICAgICBub3QgaW52b2x2aW5nIHRoZSBF
RkwgZXZlbnRzLgorCisgICAgICAgIEF0IHRoZSBzYW1lIHRpbWUgd2UgbWFrZSBzdXJlIHRvIGF2
b2lkIHVzaW5nIFdLMiBpbnRlcm5hbHMgaW4gb3VyIEVGTCBBUEkKKyAgICAgICAgaW1wbGVtZW50
YXRpb24uCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBXZWJUb3VjaEV2ZW50IHN0YXJ0cyB0byBp
bmhlcml0IGFuIEFQSU9iamVjdCBpbiBvcmRlciB0bworICAgICAgICBjb252ZXJ0IFdlYlRvdWNo
RXZlbnQqIHRvIFdLVG91Y2hFdmVudFJlZi4KKworICAgICAgICBXZWJFdmVudDo6dHlwZSgpIGlz
IGNoYW5nZWQgdG8gV2ViRXZlbnQ6OmV2ZW50VHlwZSgpIHRvIHByZXZlbnQgdG8gYmUKKyAgICAg
ICAgbWl4ZWQgdXAgd2l0aCBBUElPYmplY3Q6OnR5cGUoKSBiZWNhdXNlIFdlYlRvdWNoRXZlbnQg
aW5oZXJpdHMgYm90aAorICAgICAgICBXZWJFdmVudCBhbmQgQVBJT2JqZWN0LgorCisgICAgICAg
ICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VF
ZmwuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL05h
dGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKE5hdGl2ZVdlYlRvdWNoRXZlbnQpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJFdmVudC5oOgorICAgICAgICAoV2ViVG91Y2hFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRvdWNoRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvdWNoRXZlbnQ6OnR5cGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQbGF0Zm9ybVRvdWNoUG9p
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OldlYlBsYXRm
b3JtVG91Y2hQb2ludCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQuaDogQWRkZWQuCisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJQbGF0Zm9ybVRvdWNoUG9pbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtVG91Y2hQb2ludDo6V2ViUGxhdGZvcm1Ub3VjaFBvaW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxhdGZvcm1Ub3VjaFBvaW50OjppZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
YXRmb3JtVG91Y2hQb2ludDo6c3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQ6OnNjcmVlblBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1U
b3VjaFBvaW50Ojpwb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtVG91Y2hQ
b2ludDo6cmFkaXVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1Ub3VjaFBvaW50Ojpy
b3RhdGlvbkFuZ2xlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1Ub3VjaFBvaW50Ojpm
b3JjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtVG91Y2hQb2ludDo6c2V0U3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OnR5cGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVG91Y2hF
dmVudDo6V2ViVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJUb3VjaEV2ZW50Ojppc1RvdWNoRXZlbnRUeXBlKToKKyAgICAgICAgKiBTaGFyZWQvZWZs
L05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJU
b3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL1dl
YkV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rvcnku
aDoKKyAgICAgICAgKFdlYkV2ZW50RmFjdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS0FQSUNhc3RFZmwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcDogQWRkZWQuCisgICAgICAgICh0b1dlYkV2ZW50
VHlwZSk6CisgICAgICAgICh0b1dlYkV2ZW50TW9kaWZpZXJzKToKKyAgICAgICAgKFdLVG91Y2hF
dmVudENyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcDoKKyAgICAg
ICAgKFdLVmlld1NlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKHRvV2ViUGxhdGZvcm1Ub3VjaFBv
aW50U3RhdGUpOgorICAgICAgICAoV0tWaWV3Q3JlYXRlVG91Y2hQb2ludCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3LmNwcDoKKyAgICAgICAgKHRvV0tUb3VjaFBvaW50U3RhdGUpOgorICAgICAgICAo
dG9XS0V2ZW50TW9kaWZpZXJzKToKKyAgICAgICAgKEV3a1ZpZXc6OmZlZWRUb3VjaEV2ZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdG91Y2guY3BwOiBBZGRlZC4KKyAg
ICAgICAgKGNyZWF0ZVdLVG91Y2hFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3RvdWNoX3ByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlldzo6c2VuZFRvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvV2ViVmlldy5oOgorICAgICAgICAoV2ViVmlldyk6CisKKzIwMTMtMDMtMDggIEV1bm1pIExl
ZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgorCiAgICAgICAgIFtXSzJdIFJlbmFtZSBXZWJF
dmVudDo6dHlwZSgpIHRvIFdlYkV2ZW50OjpldmVudFR5cGUoKS4KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTgzNAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDhmNmI5YmEyZjM4ODVkZWUzMGZiNjUyNTkzNmI1NDU4NWYxNWM5NGQuLmRm
Njg5ZjcyZGQ3NTNiNzQzNDQ0OGVmZmEzODQ5MDViNjFmNWQ4YzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC0zNyw2ICszNyw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
CiAgICAgVUlQcm9jZXNzL0FQSS9DL2NhaXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCiAKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS1BhZ2VFZmwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwSXRlbS5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBNZW51TGlzdGVuZXIuY3BwCkBAIC03
Niw2ICs3Nyw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19zZXR0aW5ncy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfc3RvcmFn
ZV9tYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a190ZXh0X2NoZWNrZXIuY3Bw
CisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RvdWNoLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a191cmxfcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jl
c3BvbnNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3Qu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVm
bC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaAppbmRleCA3
MmZiZmQzMDNjMDFjNzJiNTUzYmRmNjQ0ODJkNTJiNGEyYjJjNGQ4Li45YzA3ZjhlMGM4Yzg2MmQ4
MTQ0ZmE1YjliM2EwYjliM2U4YTk3OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9lZmwvV0tCYXNlRWZsLmgKQEAgLTI3LDUgKzI3LDcgQEAKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLVmlldyogV0tWaWV3UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQ
b3B1cEl0ZW0qIFdLUG9wdXBJdGVtUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQ
b3B1cE1lbnVMaXN0ZW5lciogV0tQb3B1cE1lbnVMaXN0ZW5lclJlZjsKK3R5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLVG91Y2hQb2ludCogV0tUb3VjaFBvaW50UmVmOwordHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tUb3VjaEV2ZW50KiBXS1RvdWNoRXZlbnRSZWY7CiAKICNlbmRpZiAv
KiBXS0Jhc2VFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9i
amVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDVlY2ViNTYy
MmYzZjA3MTg4MWNmODU0Y2U1NjY1MjAwYjI4NDQzYjYuLjUwOWQzYTUzMzY5OTIxZDE3NjM5YWYz
YTM1NTlkYWRlZWQ1MGMzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTEzNiw2
ICsxMzYsMTAgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKEVGTCkKICAgICAgICAgVHlwZVBvcHVw
TWVudUl0ZW0sCiAjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICAgICBUeXBl
VG91Y2hQb2ludCwKKyAgICAgICAgVHlwZVRvdWNoRXZlbnQsCisjZW5kaWYKICAgICB9OwogCiAg
ICAgdmlydHVhbCB+QVBJT2JqZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2Vi
VG91Y2hFdmVudC5oCmluZGV4IGM2M2QxY2YwNzA1YmNhMWVhNTRkMzg0ZjNmMGY1YmM4MzExYWQ2
MmEuLmNhYzc0MjI0ZTk3YzJhOTFhZDIxMmI0ODYyOWI3YTZjMGRlOWE2ZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaApAQCAtMzAsMTAgKzMwLDYgQEAK
IAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgotI2VsaWYgUExBVEZP
Uk0oRUZMKQotI2luY2x1ZGUgImV3a190b3VjaC5oIgotI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNDMsNyArMzksNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgZXhw
bGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGNvbnN0IFFUcmFu
c2Zvcm0mIGZyb21JdGVtVHJhbnNmb3JtKTsKICNlbGlmIFBMQVRGT1JNKEVGTCkKLSAgICBOYXRp
dmVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqLCBj
b25zdCBFdmFzX01vZGlmaWVyKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dl
YkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4s
IGRvdWJsZSB0aW1lc3RhbXApOworICAgIGV4cGxpY2l0IE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29u
c3QgV2ViVG91Y2hFdmVudCYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkV2ZW50LmgKaW5kZXggMWE5ODI5ZDlhZDAzNmY2ZTcyZjg4MTQ2MjkzM2MzMDE5MTQ2
ZWZhYS4uMjExODViODk5YTQ4YTJmMzZiZGU2YjZjZDIzNDIwZTIwOGI3N2QzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkV2ZW50LmgKQEAgLTMwLDEyICszMCwxOCBAQAogLy8gRklYTUU6IFdlIHNob3Vs
ZCBwcm9iYWJseSBtb3ZlIHRvIG1ha2VpbmcgdGhlIFdlYkNvcmUvUGxhdGZvcm1Gb29FdmVudHMg
dHJpdmlhbCBjbGFzc2VzIHNvIHRoYXQKIC8vIHdlIGNhbiB1c2UgdGhlbSBhcyB0aGUgZXZlbnQg
dHlwZS4KIAorI2luY2x1ZGUgIldlYlBsYXRmb3JtVG91Y2hQb2ludC5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2VuZGlmCisKIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7
CiAgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwpAQCAtMjc1LDU1ICsyODEsMjAgQEAgcHJpdmF0
ZToKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAvLyBGSVhNRTogTW92ZSB0aGlzIGNsYXNz
IHRvIGl0cyBvd24gaGVhZGVyIGZpbGUuCi0vLyBGSVhNRTogSGF2aW5nICJQbGF0Zm9ybSIgaW4g
dGhlIG5hbWUgbWFrZXMgaXQgc291bmQgbGlrZSB0aGlzIGV2ZW50IGlzIHBsYXRmb3JtLXNwZWNp
ZmljIG9yIGxvdy0KLS8vIGxldmVsIGluIHNvbWUgd2F5LiBUaGF0IGRvZXNuJ3Qgc2VlbSB0byBi
ZSB0aGUgY2FzZS4KLWNsYXNzIFdlYlBsYXRmb3JtVG91Y2hQb2ludCB7CitjbGFzcyBXZWJUb3Vj
aEV2ZW50IDogcHVibGljIFdlYkV2ZW50LCBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKLSAg
ICBlbnVtIFRvdWNoUG9pbnRTdGF0ZSB7Ci0gICAgICAgIFRvdWNoUmVsZWFzZWQsCi0gICAgICAg
IFRvdWNoUHJlc3NlZCwKLSAgICAgICAgVG91Y2hNb3ZlZCwKLSAgICAgICAgVG91Y2hTdGF0aW9u
YXJ5LAotICAgICAgICBUb3VjaENhbmNlbGxlZAotICAgIH07Ci0KLSAgICBXZWJQbGF0Zm9ybVRv
dWNoUG9pbnQoKSA6IG1fcm90YXRpb25BbmdsZSgwLjApLCBtX2ZvcmNlKDAuMCkgeyB9CisgICAg
c3RhdGljIGNvbnN0IEFQSU9iamVjdDo6VHlwZSBBUElUeXBlID0gVHlwZVRvdWNoRXZlbnQ7CiAK
LSAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQodWludDMyX3QgaWQsIFRvdWNoUG9pbnRTdGF0ZSwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9zaXRpb24pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlRvdWNoRXZlbnQ+
IGNyZWF0ZShXZWJFdmVudDo6VHlwZSB0eXBlLCBjb25zdCBWZWN0b3I8V2ViUGxhdGZvcm1Ub3Vj
aFBvaW50PiYgdG91Y2hQb2ludHMsIE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3Rh
bXApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlRvdWNoRXZlbnQodHlw
ZSwgdG91Y2hQb2ludHMsIG1vZGlmaWVycywgdGltZXN0YW1wKSk7CisgICAgfQogCi0gICAgV2Vi
UGxhdGZvcm1Ub3VjaFBvaW50KHVpbnQzMl90IGlkLCBUb3VjaFBvaW50U3RhdGUsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBzY3JlZW5Qb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiByYWRpdXMsIGZsb2F0IHJvdGF0aW9u
QW5nbGUgPSAwLjAsIGZsb2F0IGZvcmNlID0gMC4wKTsKLSAgICAKLSAgICB1aW50MzJfdCBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAgICBUb3VjaFBvaW50U3RhdGUgc3RhdGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUb3VjaFBvaW50U3RhdGU+KG1fc3RhdGUpOyB9Ci0KLSAg
ICBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3NjcmVlblBvc2l0aW9uOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzOyB9Ci0gICAgZmxvYXQgcm90
YXRpb25BbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm90YXRpb25BbmdsZTsgfQotICAgIGZsb2F0
IGZvcmNlKCkgY29uc3QgeyByZXR1cm4gbV9mb3JjZTsgfQotCi0gICAgdm9pZCBzZXRTdGF0ZShU
b3VjaFBvaW50U3RhdGUgc3RhdGUpIHsgbV9zdGF0ZSA9IHN0YXRlOyB9Ci0KLSAgICB2b2lkIGVu
Y29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiwgV2ViUGxhdGZvcm1Ub3VjaFBvaW50Jik7
Ci0KLXByaXZhdGU6Ci0gICAgdWludDMyX3QgbV9pZDsKLSAgICB1aW50MzJfdCBtX3N0YXRlOwot
ICAgIFdlYkNvcmU6OkludFBvaW50IG1fc2NyZWVuUG9zaXRpb247Ci0gICAgV2ViQ29yZTo6SW50
UG9pbnQgbV9wb3NpdGlvbjsKLSAgICBXZWJDb3JlOjpJbnRTaXplIG1fcmFkaXVzOwotICAgIGZs
b2F0IG1fcm90YXRpb25BbmdsZTsKLSAgICBmbG9hdCBtX2ZvcmNlOwotfTsKLQotLy8gRklYTUU6
IE1vdmUgdGhpcyBjbGFzcyB0byBpdHMgb3duIGhlYWRlciBmaWxlLgotY2xhc3MgV2ViVG91Y2hF
dmVudCA6IHB1YmxpYyBXZWJFdmVudCB7Ci1wdWJsaWM6CiAgICAgV2ViVG91Y2hFdmVudCgpIHsg
fQogCi0gICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2Ugbm90IHRvIGhhdmUgdG8gY29weSB0
aGUgVmVjdG9yIGhlcmUuCi0gICAgV2ViVG91Y2hFdmVudChUeXBlLCBWZWN0b3I8V2ViUGxhdGZv
cm1Ub3VjaFBvaW50PiwgTW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBXZWJUb3Vj
aEV2ZW50KFdlYkV2ZW50OjpUeXBlLCBjb25zdCBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50
PiYsIE1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCk7CisKKyAgICBXZWJUb3VjaEV2ZW50KGNv
bnN0IFdlYlRvdWNoRXZlbnQmKTsKIAogICAgIGNvbnN0IFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQ+JiB0b3VjaFBvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hQb2ludHM7IH0KIApA
QCAtMzMxLDcgKzMwMiw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyJiwgV2ViVG91Y2hFdmVudCYpOwogICAKIHByaXZhdGU6Ci0gICAg
c3RhdGljIGJvb2wgaXNUb3VjaEV2ZW50VHlwZShUeXBlKTsKKyAgICB2aXJ0dWFsIEFQSU9iamVj
dDo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgc3RhdGljIGJv
b2wgaXNUb3VjaEV2ZW50VHlwZShXZWJFdmVudDo6VHlwZSk7CiAKICAgICBWZWN0b3I8V2ViUGxh
dGZvcm1Ub3VjaFBvaW50PiBtX3RvdWNoUG9pbnRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAKaW5kZXggZjE1MjAxMzgzYzJhOWU2Y2Vl
OWU0ZDRiMjUyMjQ5YTFmZDM1ZDViMy4uYzk4ZTBhZDEwYzVlMGMwOTI3MjQxM2RkOTVlN2RiYjI2
Njk5YWYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBsYXRmb3JtVG91
Y2hQb2ludC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQ
b2ludC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJQbGF0Zm9ybVRvdWNoUG9pbnQuaCIK
IAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAKQEAgLTU3LDYgKzU3LDE3IEBAIFdlYlBsYXRm
b3JtVG91Y2hQb2ludDo6V2ViUGxhdGZvcm1Ub3VjaFBvaW50KHVuc2lnbmVkIGlkLCBUb3VjaFBv
aW50U3RhdGUgc3RhdGUsCiB7CiB9CiAKK1dlYlBsYXRmb3JtVG91Y2hQb2ludDo6V2ViUGxhdGZv
cm1Ub3VjaFBvaW50KGNvbnN0IFdlYlBsYXRmb3JtVG91Y2hQb2ludCYgcG9pbnQpCisgICAgOiBt
X2lkKHBvaW50LmlkKCkpCisgICAgLCBtX3N0YXRlKHBvaW50LnN0YXRlKCkpCisgICAgLCBtX3Nj
cmVlblBvc2l0aW9uKHBvaW50LnNjcmVlblBvc2l0aW9uKCkpCisgICAgLCBtX3Bvc2l0aW9uKHBv
aW50LnBvc2l0aW9uKCkpCisgICAgLCBtX3JhZGl1cyhwb2ludC5yYWRpdXMoKSkKKyAgICAsIG1f
cm90YXRpb25BbmdsZShwb2ludC5yb3RhdGlvbkFuZ2xlKCkpCisgICAgLCBtX2ZvcmNlKHBvaW50
LmZvcmNlKCkpCit7Cit9CisKIHZvaWQgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjplbmNvZGUoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwg
bV9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQbGF0Zm9ybVRvdWNo
UG9pbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZDM0NjYyZTBlYzgwOTNmNzk3NjE4YTk1Y2E2NDhhZDBmMDY2ZWY4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2lu
dC5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRfaAorI2RlZmluZSBXZWJQbGF0Zm9ybVRvdWNoUG9p
bnRfaAorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFNp
emUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgQ29yZUlQQyB7
CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBBcmd1bWVudEVuY29kZXI7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogSGF2aW5nICJQbGF0Zm9ybSIgaW4gdGhlIG5h
bWUgbWFrZXMgaXQgc291bmQgbGlrZSB0aGlzIGV2ZW50IGlzIHBsYXRmb3JtLXNwZWNpZmljIG9y
IGxvdy0KKy8vIGxldmVsIGluIHNvbWUgd2F5LiBUaGF0IGRvZXNuJ3Qgc2VlbSB0byBiZSB0aGUg
Y2FzZS4KK2NsYXNzIFdlYlBsYXRmb3JtVG91Y2hQb2ludCA6IHB1YmxpYyBBUElPYmplY3Qgewor
cHVibGljOgorICAgIGVudW0gVG91Y2hQb2ludFN0YXRlIHsKKyAgICAgICAgVG91Y2hSZWxlYXNl
ZCwKKyAgICAgICAgVG91Y2hQcmVzc2VkLAorICAgICAgICBUb3VjaE1vdmVkLAorICAgICAgICBU
b3VjaFN0YXRpb25hcnksCisgICAgICAgIFRvdWNoQ2FuY2VsbGVkCisgICAgfTsKKworICAgIHN0
YXRpYyBjb25zdCBBUElPYmplY3Q6OlR5cGUgQVBJVHlwZSA9IFR5cGVUb3VjaFBvaW50OworCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiBjcmVhdGUodWludDMy
X3QgaWQsIFRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNj
cmVlblBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHJhZGl1cywgZmxvYXQgcm90YXRpb25BbmdsZSA9IDAuMCwgZmxvYXQg
Zm9yY2UgPSAwLjApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBsYXRm
b3JtVG91Y2hQb2ludChpZCwgc3RhdGUsIHNjcmVlblBvc2l0aW9uLCBwb3NpdGlvbiwgcmFkaXVz
LCByb3RhdGlvbkFuZ2xlLCBmb3JjZSkpOworICAgIH0KKworICAgIFdlYlBsYXRmb3JtVG91Y2hQ
b2ludCgpIDogbV9yb3RhdGlvbkFuZ2xlKDAuMCksIG1fZm9yY2UoMC4wKSB7IH0KKworICAgIFdl
YlBsYXRmb3JtVG91Y2hQb2ludCh1aW50MzJfdCBpZCwgVG91Y2hQb2ludFN0YXRlLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgc2NyZWVuUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb3NpdGlvbik7CisKKyAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQodWludDMyX3QgaWQsIFRv
dWNoUG9pbnRTdGF0ZSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBvc2l0aW9uLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHJhZGl1cywgZmxvYXQgcm90YXRpb25BbmdsZSA9IDAuMCwgZmxvYXQgZm9yY2UgPSAwLjApOwor
CisgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50KGNvbnN0IFdlYlBsYXRmb3JtVG91Y2hQb2ludCYp
OworCisgICAgdWludDMyX3QgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgVG91Y2hQ
b2ludFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VG91Y2hQb2ludFN0
YXRlPihtX3N0YXRlKTsgfQorCisgICAgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcmVlblBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5Qb3NpdGlvbjsgfQorICAgIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0K
KyAgICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiByYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3Jh
ZGl1czsgfQorICAgIGZsb2F0IHJvdGF0aW9uQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX3JvdGF0
aW9uQW5nbGU7IH0KKyAgICBmbG9hdCBmb3JjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2U7IH0K
KworICAgIHZvaWQgc2V0U3RhdGUoVG91Y2hQb2ludFN0YXRlIHN0YXRlKSB7IG1fc3RhdGUgPSBz
dGF0ZTsgfQorCisgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJikgY29u
c3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYsIFdl
YlBsYXRmb3JtVG91Y2hQb2ludCYpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgQVBJT2JqZWN0
OjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICB1aW50MzJfdCBt
X2lkOworICAgIHVpbnQzMl90IG1fc3RhdGU7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9zY3Jl
ZW5Qb3NpdGlvbjsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3Bvc2l0aW9uOworICAgIFdlYkNv
cmU6OkludFNpemUgbV9yYWRpdXM7CisgICAgZmxvYXQgbV9yb3RhdGlvbkFuZ2xlOworICAgIGZs
b2F0IG1fZm9yY2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisKKyNlbmRpZiAvLyBXZWJFdmVudF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViVG91Y2hFdmVudC5jcHAKaW5kZXggMDViNWZlNTM3YjQ3OTIxY2UwODBiNDgxMGJi
NzZmZDNjYzg2MzM0Yy4uMmJiZjU3OWMwOTMyZmJlMmI4ZTFkZWQ1MTJlYjQ5ZWIzNGE1ZGVlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcApAQCAtMzMsMTMgKzMzLDIw
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJUb3VjaEV2ZW50OjpXZWJUb3VjaEV2ZW50
KFdlYkV2ZW50OjpUeXBlIHR5cGUsIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IHRvdWNo
UG9pbnRzLCBNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKQorV2ViVG91Y2hF
dmVudDo6V2ViVG91Y2hFdmVudChXZWJFdmVudDo6VHlwZSB0eXBlLCBjb25zdCBWZWN0b3I8V2Vi
UGxhdGZvcm1Ub3VjaFBvaW50PiYgdG91Y2hQb2ludHMsIE1vZGlmaWVycyBtb2RpZmllcnMsIGRv
dWJsZSB0aW1lc3RhbXApCiAgICAgOiBXZWJFdmVudCh0eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFt
cCkKICAgICAsIG1fdG91Y2hQb2ludHModG91Y2hQb2ludHMpCiB7CiAgICAgQVNTRVJUKGlzVG91
Y2hFdmVudFR5cGUodHlwZSkpOwogfQogCitXZWJUb3VjaEV2ZW50OjpXZWJUb3VjaEV2ZW50KGNv
bnN0IFdlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCisgICAgOiBXZWJFdmVudCh0b3VjaEV2ZW50
LmV2ZW50VHlwZSgpLCB0b3VjaEV2ZW50Lm1vZGlmaWVycygpLCB0b3VjaEV2ZW50LnRpbWVzdGFt
cCgpKQorICAgICwgbV90b3VjaFBvaW50cyh0b3VjaEV2ZW50LnRvdWNoUG9pbnRzKCkpCit7Cisg
ICAgQVNTRVJUKGlzVG91Y2hFdmVudFR5cGUodHlwZSkpOworfQorCiB2b2lkIFdlYlRvdWNoRXZl
bnQ6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAg
ICAgV2ViRXZlbnQ6OmVuY29kZShlbmNvZGVyKTsKQEAgLTU4LDcgKzY1LDcgQEAgYm9vbCBXZWJU
b3VjaEV2ZW50OjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJU
b3VjaEV2ZW50JiByZXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJUb3VjaEV2ZW50
Ojppc1RvdWNoRXZlbnRUeXBlKFR5cGUgdHlwZSkKK2Jvb2wgV2ViVG91Y2hFdmVudDo6aXNUb3Vj
aEV2ZW50VHlwZShXZWJFdmVudDo6VHlwZSB0eXBlKQogewogICAgIHJldHVybiB0eXBlID09IFRv
dWNoU3RhcnQgfHwgdHlwZSA9PSBUb3VjaE1vdmUgfHwgdHlwZSA9PSBUb3VjaEVuZCB8fCB0eXBl
ID09IFRvdWNoQ2FuY2VsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2Vm
bC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwv
TmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKaW5kZXggNzI3OTY4MzVhNjY0N2IwMjcyZGVmMjNl
ZTZjMjBiMTgxMzlhOTE2NS4uODAxODkwMGU0MjI0Y2RkMWNkZTFkYWVkMzIyMjcxMGRjODdiMGE3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2
ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNo
RXZlbnRFZmwuY3BwCkBAIC0yOCwxMiArMjgsMTAgQEAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogI2luY2x1ZGUgIk5hdGl2ZVdlYlRvdWNoRXZlbnQuaCIKIAotI2luY2x1ZGUgIldlYkV2ZW50
RmFjdG9yeS5oIgotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTmF0aXZlV2ViVG91Y2hFdmVudDo6
TmF0aXZlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5h
X0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJzLCBjb25zdCBXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29udGVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbiwgZG91YmxlIHRpbWVzdGFtcCkKLSAgICA6IFdlYlRv
dWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50
cywgbW9kaWZpZXJzLCB0b1dlYkNvbnRlbnQsIHRvRGV2aWNlU2NyZWVuLCB0aW1lc3RhbXApKQor
TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2
ZW50JiB3ZWJUb3VjaEV2ZW50KQorICAgIDogV2ViVG91Y2hFdmVudCh3ZWJUb3VjaEV2ZW50KQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAK
aW5kZXggNGUyMWFlOTk2MWI0MWY2YzNlZjY5NzJjNzEyYmVmYWQyNWFhMzFmZi4uYjI1YzZiZGI0
MGFkN2NlODVhYTA4ZmRjZjc3YmYxN2IyZjZjNjY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAtMjA0LDU5ICsyMDQsNCBAQCBXZWJLZXli
b2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBF
dmFzX0V2ZW50X0tleV9VcAogICAgICAgICBjb252ZXJ0TWlsbGlzZWNvbmRUb1NlY29uZChldmVu
dC0+dGltZXN0YW1wKSk7CiB9CiAKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotc3RhdGljIGlu
bGluZSBXZWJFdmVudDo6VHlwZSB0eXBlRm9yVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlw
ZSB0eXBlKQotewotICAgIGlmICh0eXBlID09IEVXS19UT1VDSF9TVEFSVCkKLSAgICAgICAgcmV0
dXJuIFdlYkV2ZW50OjpUb3VjaFN0YXJ0OwotICAgIGlmICh0eXBlID09IEVXS19UT1VDSF9NT1ZF
KQotICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoTW92ZTsKLSAgICBpZiAodHlwZSA9PSBF
V0tfVE9VQ0hfRU5EKQotICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoRW5kOwotICAgIGlm
ICh0eXBlID09IEVXS19UT1VDSF9DQU5DRUwpCi0gICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91
Y2hDYW5jZWw7Ci0KLSAgICByZXR1cm4gV2ViRXZlbnQ6Ok5vVHlwZTsKLX0KLQotV2ViVG91Y2hF
dmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50
X1R5cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIq
IG1vZGlmaWVycywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApCi17Ci0gICAg
VmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4gdG91Y2hQb2ludHM7Ci0gICAgdG91Y2hQb2lu
dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlaW5hX2xpc3RfY291bnQocG9pbnRzKSk7Ci0KLSAg
ICBjb25zdCBFaW5hX0xpc3QqIGxpc3Q7Ci0gICAgdm9pZCogaXRlbTsKLSAgICBFSU5BX0xJU1Rf
Rk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0pIHsKLSAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBw
b2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGl0ZW0pOwotCi0gICAgICAgIFdl
YlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQb2ludFN0YXRlIHN0YXRlOwotICAgICAgICBzd2l0
Y2ggKHBvaW50LT5zdGF0ZSkgewotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfVVA6Ci0g
ICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfTU9WRToK
LSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9ET1dOOgot
ICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfU1RJTEw6
Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9u
YXJ5OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9D
QU5DRUw6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hD
YW5jZWxsZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IH0KLQotICAgICAgICBJbnRQb2ludCBwb3MocG9pbnQtPngsIHBvaW50LT55KTsKLSAgICAgICAg
dG91Y2hQb2ludHMudW5jaGVja2VkQXBwZW5kKFdlYlBsYXRmb3JtVG91Y2hQb2ludChwb2ludC0+
aWQsIHN0YXRlLCB0b0RldmljZVNjcmVlbi5tYXBQb2ludChwb3MpLCB0b1dlYkNvbnRlbnQubWFw
UG9pbnQocG9zKSkpOwotICAgIH0KLQotICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5cGVGb3JU
b3VjaEV2ZW50KHR5cGUpLCB0b3VjaFBvaW50cywgbW9kaWZpZXJzRm9yRXZlbnQobW9kaWZpZXJz
KSwgdGltZXN0YW1wKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCmluZGV4IGU0NDRkYjI5ZDUy
Mzg0MDIyMDQxZTVkYjhkMjQ0MGMzMGQ4MjNlODAuLjI4NzIwNzg0NGRhZGRmMTAyZDhhNTg5NDBh
YzU1NmE2YjU0ZmE1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2Vi
RXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZh
Y3RvcnkuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWJFdmVudEZhY3RvcnlfaAogCiAj
aW5jbHVkZSAiV2ViRXZlbnQuaCIKLSNpbmNsdWRlICJld2tfdG91Y2guaCIKICNpbmNsdWRlIDxF
dmFzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KIApAQCAtNDEsOSAr
NDAsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYldoZWVsRXZlbnQgY3JlYXRlV2ViV2hlZWxF
dmVudChjb25zdCBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJik7CiAgICAgc3RhdGlj
IFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50
X0tleV9Eb3duKik7CiAgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9h
cmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOwotI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCi0gICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChFd2tfVG91
Y2hfRXZlbnRfVHlwZSwgY29uc3QgRWluYV9MaXN0KiwgY29uc3QgRXZhc19Nb2RpZmllciosIGNv
bnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYsIGRvdWJsZSB0aW1lc3RhbXApOwotI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tB
UElDYXN0RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2Fz
dEVmbC5oCmluZGV4IGQzYmNhOTI2NTc3Mjc4MjVjZmExNmYyMjE1MjBiYzEwMzZlYmU5M2IuLjlh
YTEyN2NmMjE3ODYxNGZlMDlhY2I3N2QyYTFkMjMyYTI0NTc0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaApAQCAtMzcsNiArMzcs
MTEgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLVmlld1JlZiwgV2ViVmlldykKIFdLX0FERF9BUElf
TUFQUElORyhXS1BvcHVwSXRlbVJlZiwgV2ViUG9wdXBJdGVtRWZsKQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLUG9wdXBNZW51TGlzdGVuZXJSZWYsIFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsKQogCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK1dLX0FERF9BUElfTUFQUElORyhXS1RvdWNoUG9pbnRS
ZWYsIFdlYlBsYXRmb3JtVG91Y2hQb2ludCkKK1dLX0FERF9BUElfTUFQUElORyhXS1RvdWNoRXZl
bnRSZWYsIFdlYlRvdWNoRXZlbnQpCisjZW5kaWYKKwogLy8gRW51bSBjb252ZXJzaW9ucy4KIGlu
bGluZSBXS1BvcHVwSXRlbVRleHREaXJlY3Rpb24gdG9BUEkoV2ViQ29yZTo6VGV4dERpcmVjdGlv
biBkaXJlY3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvZWZsL1dLRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS0V2ZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWY3OWQzMzQ5OGVmYjRmNDkwYWZjOTRmYmUx
MWViYjVjMGFlZjVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0V2ZW50RWZsLmgiCisK
KyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2lu
Y2x1ZGUgIldlYkV2ZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRpYyBp
bmxpbmUgV2ViRXZlbnQ6OlR5cGUgdG9XZWJFdmVudFR5cGUoV0tFdmVudFR5cGUgdHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpIHsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2Ug
a1dLRXZlbnRUeXBlVG91Y2hTdGFydDoKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaFN0
YXJ0OworICAgIGNhc2Uga1dLRXZlbnRUeXBlVG91Y2hNb3ZlOgorICAgICAgICByZXR1cm4gV2Vi
RXZlbnQ6OlRvdWNoTW92ZTsKKyAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoRW5kOgorICAgICAg
ICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoRW5kOworICAgIGNhc2Uga1dLRXZlbnRUeXBlVG91Y2hD
YW5jZWw6CisgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hDYW5jZWw7CisjZW5kaWYKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV2ViRXZlbnQ6Ok5vVHlwZTsKKyAgICB9CisKK30K
Kworc3RhdGljIGlubGluZSBXZWJFdmVudDo6TW9kaWZpZXJzIHRvV2ViRXZlbnRNb2RpZmllcnMo
dW5zaWduZWQgbW9kaWZpZXJzKQoreworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisKKyAgICBp
ZiAobW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSkKKyAgICAgICAgcmVzdWx0
IHw9IFdlYkV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRNb2Rp
ZmllcnNDb250cm9sS2V5KQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6OkNvbnRyb2xLZXk7
CisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5KQorICAgICAgICBy
ZXN1bHQgfD0gV2ViRXZlbnQ6OkFsdEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRN
b2RpZmllcnNNZXRhS2V5KQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6Ok1ldGFLZXk7CisK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4ocmVzdWx0KTsKK30K
KworV0tUb3VjaEV2ZW50UmVmIFdLVG91Y2hFdmVudENyZWF0ZShXS0V2ZW50VHlwZSB0eXBlLCBX
S0FycmF5UmVmIHdrVG91Y2hQb2ludHMsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3Vi
bGUgdGltZXN0YW1wKQoreworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgSW1tdXRhYmxl
QXJyYXkqIHRvdWNoUG9pbnRzQXJyYXkgPSB0b0ltcGwod2tUb3VjaFBvaW50cyk7CisgICAgc2l6
ZV90IHNpemUgPSB0b3VjaFBvaW50c0FycmF5LT5zaXplKCk7CisKKyAgICBWZWN0b3I8V2ViUGxh
dGZvcm1Ub3VjaFBvaW50PiB0b3VjaFBvaW50czsKKyAgICB0b3VjaFBvaW50cy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHNpemUpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKKyAgICAgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50KiB3ZWJUb3VjaFBvaW50ID0gdG91
Y2hQb2ludHNBcnJheS0+YXQ8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PihpKTsKKyAgICAgICAgaWYg
KHdlYlRvdWNoUG9pbnQpCisgICAgICAgICAgICB0b3VjaFBvaW50cy51bmNoZWNrZWRBcHBlbmQo
KndlYlRvdWNoUG9pbnQpOworICAgIH0KKworICAgIHJldHVybiB0b0FQSShXZWJUb3VjaEV2ZW50
OjpjcmVhdGUodG9XZWJFdmVudFR5cGUodHlwZSksIHRvdWNoUG9pbnRzLCB0b1dlYkV2ZW50TW9k
aWZpZXJzKG1vZGlmaWVycyksIHRpbWVzdGFtcCkubGVha1JlZigpKTsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGV2ZW50KTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTc5
MTYwNDE3ZWIxZjMxYWU5MGZiNTUxNzY5MjVmOWQzODAzOWZiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmgKQEAgLTAsMCAr
MSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdLRXZlbnRFZmxfaAorI2RlZmluZSBXS0V2ZW50RWZsX2gKKworI2luY2x1ZGUgPFdlYktpdDIv
V0tFdmVudC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5oPgorCisjaWZkZWYgX19j
cGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0gV0tFdmVudFR5cGUgeworICAg
IGtXS0V2ZW50VHlwZU5vVHlwZSA9IC0xLAorICAgIGtXS0V2ZW50VHlwZVRvdWNoU3RhcnQsCisg
ICAga1dLRXZlbnRUeXBlVG91Y2hNb3ZlLAorICAgIGtXS0V2ZW50VHlwZVRvdWNoRW5kLAorICAg
IGtXS0V2ZW50VHlwZVRvdWNoQ2FuY2VsCit9OwordHlwZWRlZiBlbnVtIFdLRXZlbnRUeXBlIFdL
RXZlbnRUeXBlOworCitlbnVtIFdLVG91Y2hQb2ludFN0YXRlIHsKKyAgICBrV0tUb3VjaFBvaW50
U3RhdGVUb3VjaFJlbGVhc2VkLAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3NlZCwK
KyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkLAorICAgIGtXS1RvdWNoUG9pbnRTdGF0
ZVRvdWNoU3RhdGlvbmFyeSwKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaENhbmNlbGxlZAor
fTsKK3R5cGVkZWYgZW51bSBXS1RvdWNoUG9pbnRTdGF0ZSBXS1RvdWNoUG9pbnRTdGF0ZTsKKwor
c3RydWN0IFdLVG91Y2hQb2ludCB7CisgICAgdW5zaWduZWQgaWQ7CisgICAgV0tUb3VjaFBvaW50
U3RhdGUgc3RhdGU7CisgICAgV0tQb2ludCBwb3NpdGlvbjsKKyAgICBXS1BvaW50IHNjcmVlblBv
c2l0aW9uOworICAgIFdLU2l6ZSByYWRpdXM7CisgICAgZmxvYXQgcm90YXRpb25BbmdsZTsKKyAg
ICBmbG9hdCBmb3JjZTsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1RvdWNoUG9pbnQgV0tUb3VjaFBv
aW50OworCitlbnVtIHsga1dLTWF4aW11bVRvdWNoUG9pbnRzUGVyVG91Y2hFdmVudCA9IDUgfTsK
Kworc3RydWN0IFdLVG91Y2hFdmVudCB7CisgICAgV0tFdmVudFR5cGUgdHlwZTsKKyAgICBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVyczsKKyAgICBkb3VibGUgdGltZXN0YW1wOworICAgIHVuc2ln
bmVkIG51bVRvdWNoUG9pbnRzOworICAgIFdLVG91Y2hQb2ludCB0b3VjaFBvaW50c1trV0tNYXhp
bXVtVG91Y2hQb2ludHNQZXJUb3VjaEV2ZW50XTsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1RvdWNo
RXZlbnQgV0tUb3VjaEV2ZW50OworCitXS19FWFBPUlQgV0tUb3VjaEV2ZW50UmVmIFdLVG91Y2hF
dmVudENyZWF0ZShXS0V2ZW50VHlwZSwgV0tBcnJheVJlZiwgV0tFdmVudE1vZGlmaWVycywgZG91
YmxlIHRpbWVzdGFtcCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRp
ZiAvKiBXS0V2ZW50RWZsX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9lZmwvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tWaWV3LmNwcAppbmRleCBhMjQ5ODIwNWFlMGY5OTg0NWNlMDI5YWQ4YmNlNjFkNzgwN2Yz
ZjYzLi5kYzM1MDRiNDQ3NDJjOGQ5ZDE2MTFhNjJiZTRmYWM3MDM4YTliM2Y1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCkBAIC0yMyw5ICsyMywx
NCBAQAogCiAjaW5jbHVkZSAiRXdrVmlldy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2lu
Y2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSAiV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmgiCiAj
aW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5l
VHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlQ2Fpcm8uaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKIAogc3RhdGljIGlubGluZSBXS1ZpZXdSZWYgY3JlYXRlV0tWaWV3KEV2YXMq
IGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZiwgRXdrVmlldzo6Vmlld0JlaGF2aW9yIGJlaGF2aW9yKQpAQCAtMTQ4LDMgKzE1Myw0NyBA
QCBXS0ltYWdlUmVmIFdLVmlld0NyZWF0ZVNuYXBzaG90KFdLVmlld1JlZiB2aWV3UmVmKQogICAg
IEV3a1ZpZXcqIGV3a1ZpZXcgPSB0b0V3a1ZpZXcodG9JbXBsKHZpZXdSZWYpLT5ldmFzT2JqZWN0
KCkpOwogICAgIHJldHVybiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShld2tWaWV3LT50
YWtlU25hcHNob3QoKS5nZXQoKSwgMCAvKiBvcHRpb25zICovKTsKIH0KKwordm9pZCBXS1ZpZXdT
ZW5kVG91Y2hFdmVudChXS1ZpZXdSZWYgdmlld1JlZiwgV0tUb3VjaEV2ZW50UmVmIHRvdWNoRXZl
bnRSZWYpCit7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB0b0ltcGwodmlld1JlZikt
PnNlbmRUb3VjaEV2ZW50KHRvSW1wbCh0b3VjaEV2ZW50UmVmKSk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTSh2aWV3UmVmKTsKKyAgICBVTlVTRURfUEFSQU0odG91Y2hFdmVudFJlZik7CisjZW5k
aWYKK30KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitzdGF0aWMgaW5saW5lIFdlYlBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hQb2ludFN0YXRlIHRvV2ViUGxhdGZvcm1Ub3VjaFBvaW50U3Rh
dGUoV0tUb3VjaFBvaW50U3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAg
IGNhc2Uga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hSZWxlYXNlZDoKKyAgICAgICAgcmV0dXJuIFdl
YlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICBjYXNlIGtXS1RvdWNoUG9p
bnRTdGF0ZVRvdWNoTW92ZWQ6CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoTW92ZWQ7CisgICAgY2FzZSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFByZXNzZWQ6Cisg
ICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDsKKyAgICBj
YXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoU3RhdGlvbmFyeToKKyAgICAgICAgcmV0dXJuIFdl
YlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OworICAgIGNhc2Uga1dLVG91Y2hQ
b2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ6CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFdl
YlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQ7CisgICAgfQorfQorI2VuZGlmCisK
K1dLVG91Y2hQb2ludFJlZiBXS1ZpZXdDcmVhdGVUb3VjaFBvaW50KFdLVmlld1JlZiB2aWV3UmVm
LCBpbnQgaWQsIFdLUG9pbnQgcG9zaXRpb24sIFdLUG9pbnQgc2NyZWVuUG9zaXRpb24sIFdLVG91
Y2hQb2ludFN0YXRlIHN0YXRlLCBXS1NpemUgcmFkaXVzLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBm
bG9hdCBmb3JjZSkKK3sKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIEFmZmluZVRyYW5z
Zm9ybSB0b1dlYkNvbnRlbnQgPSB0b0ltcGwodmlld1JlZiktPnRyYW5zZm9ybUZyb21TY2VuZSgp
OworCisgICAgcmV0dXJuIHRvQVBJKFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6Y3JlYXRlKGlkLCB0
b1dlYlBsYXRmb3JtVG91Y2hQb2ludFN0YXRlKHN0YXRlKSwgdG9JbnRQb2ludChzY3JlZW5Qb3Np
dGlvbiksIHRvV2ViQ29udGVudC5tYXBQb2ludCh0b0ludFBvaW50KHBvc2l0aW9uKSksIHRvSW50
U2l6ZShyYWRpdXMpLCByb3RhdGlvbkFuZ2xlLCBmb3JjZSkubGVha1JlZigpKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGlkKTsKKyAgICBVTlVTRURfUEFSQU0oeCk7CisgICAgVU5VU0VEX1BB
UkFNKHkpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCmluZGV4IGE3
MDliNDg4YTgwM2M1MzdjZGUzMGNhMTcxODMwOTk5OTc5Y2RmZmIuLjI4ODYzOTZlZDVjYzU1YmI3
N2E2MjlmNWViNDZmNzlhYjhmYzMwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1ZpZXcuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBXS1ZpZXdfaAogCiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLRXZlbnRFZmwu
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0cnkuaD4KIAogI2lmIFVTRShFTykKQEAgLTkz
LDYgKzk0LDkgQEAgV0tfRVhQT1JUIEV2YXNfT2JqZWN0KiBXS1ZpZXdHZXRFdmFzT2JqZWN0KFdL
Vmlld1JlZik7CiAKIFdLX0VYUE9SVCBXS0ltYWdlUmVmIFdLVmlld0NyZWF0ZVNuYXBzaG90KFdL
Vmlld1JlZik7CiAKK1dLX0VYUE9SVCB2b2lkIFdLVmlld1NlbmRUb3VjaEV2ZW50KFdLVmlld1Jl
ZiwgV0tUb3VjaEV2ZW50UmVmKTsKK1dLX0VYUE9SVCBXS1RvdWNoUG9pbnRSZWYgV0tWaWV3Q3Jl
YXRlVG91Y2hQb2ludChXS1ZpZXdSZWYsIGludCBpZCwgV0tQb2ludCBwb3NpdGlvbiwgV0tQb2lu
dCBzY3JlZW5Qb3NpdGlvbiwgV0tUb3VjaFBvaW50U3RhdGUsIFdLU2l6ZSByYWRpdXMsIGZsb2F0
IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5k
ZXggMWYyZWVhMjM2OTU5MzA1Yzc5YTA1YmU2OTMyYjNkMmI2NTBkNjg3Zi4uMmJhZWRhYjQxMWIy
NjFhZGJiZDllMjI5NzNmMDgwYTU2ZjZkYjMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTM2LDcgKzM2LDkgQEAKICNpbmNsdWRlICJQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiU25hcHNob3RJbWFnZUdM
LmgiCiAjaW5jbHVkZSAiVmlld0NsaWVudEVmbC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKICNp
bmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXS0V2ZW50RWZsLmgiCiAjaW5jbHVk
ZSAiV0tHZW9tZXRyeS5oIgogI2luY2x1ZGUgIldLTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tQYWdl
R3JvdXAuaCIKQEAgLTU4LDYgKzYwLDcgQEAKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW5fcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZXR0
aW5nc19wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3RvdWNoX3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfdmlldy5oIgogI2luY2x1ZGUgImV3a193aW5kb3dfZmVhdHVyZXNfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgPEVjb3JlX0V2YXMuaD4KQEAgLTcxMCw5ICs3MTMsNTEgQEAgdm9pZCBFd2tWaWV3
OjpzZXRNb3VzZUV2ZW50c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogfQogCiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKK3N0YXRpYyBXS1RvdWNoUG9pbnRTdGF0ZSB0b1dLVG91Y2hQb2ludFN0YXRl
KEV2YXNfVG91Y2hfUG9pbnRfU3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZSkgewor
ICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9VUDoKKyAgICAgICAgcmV0dXJuIGtXS1RvdWNoUG9p
bnRTdGF0ZVRvdWNoUmVsZWFzZWQ7CisgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX01PVkU6Cisg
ICAgICAgIHJldHVybiBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkOworICAgIGNhc2UgRVZB
U19UT1VDSF9QT0lOVF9ET1dOOgorICAgICAgICByZXR1cm4ga1dLVG91Y2hQb2ludFN0YXRlVG91
Y2hQcmVzc2VkOworICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9TVElMTDoKKyAgICAgICAgcmV0
dXJuIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoU3RhdGlvbmFyeTsKKyAgICBjYXNlIEVWQVNfVE9V
Q0hfUE9JTlRfQ0FOQ0VMOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBrV0tUb3VjaFBv
aW50U3RhdGVUb3VjaENhbmNlbGxlZDsKKyAgICB9Cit9CisKK3N0YXRpYyBXS0V2ZW50TW9kaWZp
ZXJzIHRvV0tFdmVudE1vZGlmaWVycyhjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMpCit7
CisgICAgV0tFdmVudE1vZGlmaWVycyB3a01vZGlmaWVycyA9IDA7CisgICAgaWYgKGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJTaGlmdCIpKQorICAgICAgICB3a01vZGlmaWVy
cyB8PSBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmll
cl9pc19zZXQobW9kaWZpZXJzLCAiQ29udHJvbCIpKQorICAgICAgICB3a01vZGlmaWVycyB8PSBr
V0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lz
X3NldChtb2RpZmllcnMsICJBbHQiKSkKKyAgICAgICAgd2tNb2RpZmllcnMgfD0ga1dLRXZlbnRN
b2RpZmllcnNBbHRLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmll
cnMsICJNZXRhIikpCisgICAgICAgIHdrTW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzTWV0
YUtleTsKKworICAgIHJldHVybiB3a01vZGlmaWVyczsKK30KKwogdm9pZCBFd2tWaWV3OjpmZWVk
VG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBv
aW50cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJzKQogewotICAgIHBhZ2UoKS0+aGFu
ZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJz
LCB3ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZSgpLCB0cmFuc2Zvcm1Ub1NjcmVlbigpLCBl
Y29yZV90aW1lX2dldCgpKSk7CisgICAgY29uc3QgdW5zaWduZWQgY291bnQgPSBlaW5hX2xpc3Rf
Y291bnQocG9pbnRzKTsKKyAgICBPd25BcnJheVB0cjxXS1R5cGVSZWY+IHRvdWNoUG9pbnRzID0g
YWRvcHRBcnJheVB0cihuZXcgV0tUeXBlUmVmW2NvdW50XSk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBwb2ludCA9
IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGVpbmFfbGlzdF9udGgocG9pbnRzLCBpKSk7
CisgICAgICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHBvaW50KTsKKyAgICAgICAgSW50
UG9pbnQgcG9zaXRpb24ocG9pbnQtPngsIHBvaW50LT55KTsKKyAgICAgICAgdG91Y2hQb2ludHNb
aV0gPSBXS1ZpZXdDcmVhdGVUb3VjaFBvaW50KHdrVmlldygpLCBwb2ludC0+aWQsIHRvQVBJKElu
dFBvaW50KHBvc2l0aW9uKSksIHRvQVBJKHRyYW5zZm9ybVRvU2NyZWVuKCkubWFwUG9pbnQocG9z
aXRpb24pKSwgdG9XS1RvdWNoUG9pbnRTdGF0ZShwb2ludC0+c3RhdGUpLCBXS1NpemVNYWtlKDAs
IDApLCAwLCAwKTsKKyAgICB9CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tUb3VjaFBv
aW50cyhBZG9wdFdLLCBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXModG91Y2hQb2ludHMuZ2V0
KCksIGNvdW50KSk7CisKKyAgICBXS1ZpZXdTZW5kVG91Y2hFdmVudCh3a1ZpZXcoKSwgYWRvcHRX
SyhXS1RvdWNoRXZlbnRDcmVhdGUoc3RhdGljX2Nhc3Q8V0tFdmVudFR5cGU+KHR5cGUpLCB3a1Rv
dWNoUG9pbnRzLmdldCgpLCB0b1dLRXZlbnRNb2RpZmllcnMobW9kaWZpZXJzKSwgZWNvcmVfdGlt
ZV9nZXQoKSkpLmdldCgpKTsKIH0KIAogdm9pZCBFd2tWaWV3OjpzZXRUb3VjaEV2ZW50c0VuYWJs
ZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
dy5oCmluZGV4IDJjYzZlMjdmYjI3ZjljYTVlZmRkN2I5NWNiZmFjZjk1ZDZjZGZhMDMuLjIzZDAy
YzU5YzA3YjYxZDVkMWUzZjc5MjJkMzA3MDVmZmQ4NmE1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1JlZlB0ckNhaXJvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0aW9uLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3Jt
YXRpb25NYXRyaXguaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtODAsNyArODEsNiBAQCBj
bGFzcyBDb2xvcjsKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTsKIGNsYXNzIEN1cnNv
cjsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIH0KIAogY2xh
c3MgRXdrQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a190b3VjaC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dG91Y2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzZTdlNDEzZTNkYTg0NGQ5MjQ1NTlmZTFjZTI0M2RiZTUx
ZjhkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdG91Y2guY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a190b3VjaC5oIgor
CisjaW5jbHVkZSAiZXdrX3RvdWNoX3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxFY29yZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitXS1RvdWNoRXZlbnQqIGNyZWF0ZVdLVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRf
VHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciog
bW9kaWZpZXJzLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuKQoreworICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwb2ludHMsIDApOworCisgICAgV0tUb3Vj
aEV2ZW50KiB0b3VjaEV2ZW50ID0gbmV3IFdLVG91Y2hFdmVudDsKKyAgICB0b3VjaEV2ZW50LT50
eXBlID0gc3RhdGljX2Nhc3Q8V0tFdmVudFR5cGU+KHR5cGUpOworICAgIHRvdWNoRXZlbnQtPnRp
bWVzdGFtcCA9IGVjb3JlX3RpbWVfZ2V0KCk7CisgICAgdG91Y2hFdmVudC0+bnVtVG91Y2hQb2lu
dHMgPSBlaW5hX2xpc3RfY291bnQocG9pbnRzKTsKKyAgICBpZiAodG91Y2hFdmVudC0+bnVtVG91
Y2hQb2ludHMgPiBrV0tNYXhpbXVtVG91Y2hQb2ludHNQZXJUb3VjaEV2ZW50KQorICAgICAgICB0
b3VjaEV2ZW50LT5udW1Ub3VjaFBvaW50cyA9IGVpbmFfbGlzdF9jb3VudChwb2ludHMpOworCisg
ICAgdG91Y2hFdmVudC0+bW9kaWZpZXJzID0gMDsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJf
aXNfc2V0KG1vZGlmaWVycywgIlNoaWZ0IikpCisgICAgICAgIHRvdWNoRXZlbnQtPm1vZGlmaWVy
cyB8PSBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5OworICAgIGlmIChldmFzX2tleV9tb2RpZmll
cl9pc19zZXQobW9kaWZpZXJzLCAiQ29udHJvbCIpKQorICAgICAgICB0b3VjaEV2ZW50LT5tb2Rp
ZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNDb250cm9sS2V5OworICAgIGlmIChldmFzX2tleV9t
b2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiQWx0IikpCisgICAgICAgIHRvdWNoRXZlbnQtPm1v
ZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc0FsdEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9k
aWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIk1ldGEiKSkKKyAgICAgICAgdG91Y2hFdmVudC0+bW9k
aWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleTsKKworICAgIGNvbnN0IEVpbmFfTGlz
dCogbGlzdDsKKyAgICB1bnNpZ25lZCBpbmRleDsKKyAgICBmb3IgKGxpc3QgPSBwb2ludHMsIGlu
ZGV4ID0gMDsgbGlzdCAmJiBpbmRleCA8IHRvdWNoRXZlbnQtPm51bVRvdWNoUG9pbnRzOyBsaXN0
ID0gZWluYV9saXN0X25leHQobGlzdCksICsraW5kZXgpIHsKKyAgICAgICAgZG91YmxlIHg7Cisg
ICAgICAgIGRvdWJsZSB5OworICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHBvaW50ID0gc3RhdGlj
X2Nhc3Q8RXdrX1RvdWNoX1BvaW50Kj4oZWluYV9saXN0X2RhdGFfZ2V0KGxpc3QpKTsKKyAgICAg
ICAgV0tUb3VjaFBvaW50JiB3a1RvdWNoUG9pbnQgPSB0b3VjaEV2ZW50LT50b3VjaFBvaW50c1tp
bmRleF07CisKKyAgICAgICAgd2tUb3VjaFBvaW50LmlkID0gcG9pbnQtPmlkOworICAgICAgICB3
a1RvdWNoUG9pbnQucG9zaXRpb24gPSBXS1BvaW50TWFrZShwb2ludC0+eCwgcG9pbnQtPnkpOwor
ICAgICAgICB0b0RldmljZVNjcmVlbi5tYXAocG9pbnQtPngsIHBvaW50LT55LCB4LCB5KTsKKyAg
ICAgICAgd2tUb3VjaFBvaW50LnNjcmVlblBvc2l0aW9uID0gV0tQb2ludE1ha2UoeCwgeSk7Cisg
ICAgICAgIHdrVG91Y2hQb2ludC5yYWRpdXMgPSBXS1NpemVNYWtlKDAsIDApOworICAgICAgICB3
a1RvdWNoUG9pbnQucm90YXRpb25BbmdsZSA9IDA7CisgICAgICAgIHdrVG91Y2hQb2ludC5mb3Jj
ZSA9IDA7CisKKyAgICAgICAgc3dpdGNoIChwb2ludC0+c3RhdGUpIHsKKyAgICAgICAgY2FzZSBF
VkFTX1RPVUNIX1BPSU5UX1VQOgorICAgICAgICAgICAgd2tUb3VjaFBvaW50LnN0YXRlID0ga1dL
VG91Y2hQb2ludFN0YXRlVG91Y2hSZWxlYXNlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfTU9WRToKKyAgICAgICAgICAgIHdrVG91Y2hQb2ludC5z
dGF0ZSA9IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoTW92ZWQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX0RPV046CisgICAgICAgICAgICB3a1RvdWNo
UG9pbnQuc3RhdGUgPSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFByZXNzZWQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX1NUSUxMOgorICAgICAgICAg
ICAgd2tUb3VjaFBvaW50LnN0YXRlID0ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hTdGF0aW9uYXJ5
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9DQU5D
RUw6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB3a1RvdWNoUG9pbnQuc3RhdGUgPSBr
V0tUb3VjaFBvaW50U3RhdGVUb3VjaENhbmNlbGxlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRvdWNoRXZlbnQ7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdG91Y2hfcHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RvdWNoX3ByaXZhdGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43YzAxMmYzMWViMGQ5YzQ3NWZiNWVmMzcyZDdkODMxYjFlMjg3NjcyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3RvdWNoX3ByaXZh
dGUuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcg
RWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgZXdrX3RvdWNoX3ByaXZhdGVfaAorI2RlZmluZSBld2tfdG91Y2hfcHJpdmF0ZV9o
CisKKyNpbmNsdWRlICJXS0V2ZW50RWZsLmgiCisjaW5jbHVkZSAiZXdrX3RvdWNoLmgiCisjaW5j
bHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPEV2YXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgQWZmaW5lVHJhbnNmb3JtOworfQorCitXS1RvdWNoRXZlbnQqIGNyZWF0ZVdLVG91Y2hF
dmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0
IEV2YXNfTW9kaWZpZXIqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNl
U2NyZWVuKTsKKworI2VuZGlmIC8vIGV3a190b3VjaF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCmluZGV4IDVjMmIzYmE0M2ZhNWY1MjhiNzExYzE1MmM1
YWRlYzk3OWQyMWQ0MWUuLjMyZGQ5ZTRhNTA3MTg0OTY0ODkwMjRkMDVjNjVjZWY1MDgyNDQwY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApAQCAtNTE5LDQgKzUx
OSwxMiBAQCB2b2lkIFdlYlZpZXc6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiAgICAg
bV9ld2tWaWV3LT5zY2hlZHVsZVVwZGF0ZURpc3BsYXkoKTsKIH0KIAorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCit2b2lkIFdlYlZpZXc6OnNlbmRUb3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZl
bnQqIHRvdWNoRXZlbnQpCit7CisgICAgQVNTRVJUKHRvdWNoRXZlbnQpOworICAgIG1fcGFnZS0+
aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KCp0b3VjaEV2ZW50KSk7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlldy5oCmluZGV4IDlmNWY2ZjQ3NjZlYTgwMDFmZGU5ODc5NDBmYzUyZGQ4NmI2MmNhOGEu
LmNmNmI2MjFjODVhMDFiMDliZTYwYWE4OWVjODk4Y2JhZTY3YzlhZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCkBAIC04MCw2ICs4MCwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBleGl0RnVsbFNjcmVlbigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoY29uc3QgV2ViVG91Y2hFdmVudCopOworI2VuZGlm
CisKICAgICAvLyBWaWV3IGNsaWVudC4KICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3Qg
V0tWaWV3Q2xpZW50Kik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192913</attachid>
            <date>2013-03-13 06:28:23 -0700</date>
            <delta_ts>2013-03-13 21:58:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130313222420.patch</filename>
            <type>text/plain</type>
            <size>38541</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDNjZTU5YmM4NzUzNWUw
ZjNlNTNlZjU1NTUzM2VhOGM4NDA1MTEyZS4uZDQ2ZTg5NWZhY2U4YTlkOThkN2ZlM2ZmYTkyOTY0
ZGZhZjUwYTIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEzLTAzLTEzICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvdWNoIGV2ZW50cyBmb3Igb3VyIHRhcmdldCBw
bGF0Zm9ybXMgZGlmZmVyIChYSW5wdXQyLCBXYXlsYW5kLCBUaXplbikgc28KKyAgICAgICAgZm9y
IHRoZSBFRkwgcG9ydCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZmVlZCBldmVudHMgbWFudWFsbHku
CisKKyAgICAgICAgVG8ga2VlcCBvdXIgY3VycmVudCBBUEkgZm9yIGRlc2t0b3AgRUZML0VubGln
aHRlbm1lbnQgd29ya2luZywgd2UgY29udmVydAorICAgICAgICBvdXIgY3VycmVudGx5IGxpbWl0
ZWQgRUZMIGV2ZW50cyB0byB0aGUgbmV3IEVGTCBzcGVjaWZpYyBDIEVGTFRvdWNoUG9pbnQKKyAg
ICAgICAgYW5kIEVGTFRvdWNoRXZlbnQgdHlwZS4KKworICAgICAgICBFRkxUb3VjaFBvaW50IGFu
ZCBFRkxUb3VjaEV2ZW50IGFyZSBleHBvc2VkIGFzIFdLVG91Y2hQb2ludFJlZiBhbmQKKyAgICAg
ICAgV0tUb3VjaEV2ZW50UmVmLCBzbyB0aGV5IGFyZSBvcGFxdWUgaW4gdGhlIGFwcGxpY2F0aW9u
cy4KKworICAgICAgICBUaGUgV0tWaWV3U2VuZFRvdWNoRXZlbnQgY2FuIGJlIHVzZWQgZm9yIGFu
eSB1c2UtY2FzZSAocGxhdGZvcm0vcHJvZHVjdCkKKyAgICAgICAgbm90IGludm9sdmluZyB0aGUg
RUZMIGV2ZW50cy4KKworICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHdlIG1ha2Ugc3VyZSB0byBh
dm9pZCB1c2luZyBXSzIgaW50ZXJuYWxzIGluIG91ciBFRkwgQVBJCisgICAgICAgIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogU2hhcmVk
L0FQSS9jL2VmbC9XS0Jhc2VFZmwuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6Cisg
ICAgICAgICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKE5hdGl2ZVdl
YlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50OjpuYXRp
dmVFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hF
dmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojp0b1dlYlBsYXRmb3JtVG91Y2hQb2ludFN0YXRlKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OnRvV2ViRXZlbnRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
dG9XZWJFdmVudE1vZGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rv
cnkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJFdmVudEZhY3RvcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHA6IEFkZGVk
LgorICAgICAgICAoV0tUb3VjaFBvaW50Q3JlYXRlKToKKyAgICAgICAgKFdLVG91Y2hFdmVudENy
ZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcDoKKyAgICAgICAgKFdL
Vmlld1NlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAgICAo
dG9XS1RvdWNoUG9pbnRTdGF0ZSk6CisgICAgICAgICh0b1dLRXZlbnRNb2RpZmllcnMpOgorICAg
ICAgICAoRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQpOgorICAgICAgICAoRXdrVmlldzo6ZmVlZFRv
dWNoRXZlbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0VGTFRvdWNoRXZlbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkVGTFRvdWNoRXZlbnQ6
OkVGTFRvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRUZMVG91Y2hFdmVudC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChFRkxUb3VjaEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6RUZMVG91Y2hFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
RUZMVG91Y2hFdmVudDo6ZXZlbnRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6RUZMVG91Y2hFdmVu
dDo6dG91Y2hQb2ludHMpOgorICAgICAgICAoV2ViS2l0OjpFRkxUb3VjaEV2ZW50Ojptb2RpZmll
cnMpOgorICAgICAgICAoV2ViS2l0OjpFRkxUb3VjaEV2ZW50Ojp0aW1lc3RhbXApOgorICAgICAg
ICAoV2ViS2l0OjpFRkxUb3VjaEV2ZW50Ojp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZs
L0VGTFRvdWNoUG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OkVGTFRvdWNoUG9pbnQ6OkVGTFRvdWNoUG9pbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvRUZMVG91Y2hQb2ludC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChFRkxUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6RUZMVG91Y2hQb2ludDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6RUZMVG91Y2hQb2ludDo6aWQpOgorICAgICAgICAoV2ViS2l0
OjpFRkxUb3VjaFBvaW50OjpzdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkVGTFRvdWNoUG9pbnQ6
OnNjcmVlblBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RUZMVG91Y2hQb2ludDo6cG9zaXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpFRkxUb3VjaFBvaW50OjpyYWRpdXMpOgorICAgICAgICAo
V2ViS2l0OjpFRkxUb3VjaFBvaW50Ojpyb3RhdGlvbkFuZ2xlKToKKyAgICAgICAgKFdlYktpdDo6
RUZMVG91Y2hQb2ludDo6Zm9yY2UpOgorICAgICAgICAoV2ViS2l0OjpFRkxUb3VjaFBvaW50Ojp0
eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2VuZFRvdWNoRXZlbnQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlZpZXcpOgorCiAyMDEzLTAzLTA4ICBFdW5taSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbV0syXSBSZW5hbWUgV2ViRXZlbnQ6OnR5cGUoKSB0byBXZWJFdmVu
dDo6ZXZlbnRUeXBlKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDhmNmI5YmEyZjM4
ODVkZWUzMGZiNjUyNTkzNmI1NDU4NWYxNWM5NGQuLjg3YTU3NTMwMzlhODViMDk3OWRjYTk1MTdm
MjgyOTI5MDY2ZTY3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zNyw2ICszNyw3
IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL0FQSS9DL2Nh
aXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dL
RXZlbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BhZ2VFZmwuY3BwCiAgICAg
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwSXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0Mv
ZWZsL1dLUG9wdXBNZW51TGlzdGVuZXIuY3BwCkBAIC04OCw2ICs4OSw4IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL0VG
TFRvdWNoRXZlbnQuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9FRkxUb3VjaFBvaW50LmNwcAogICAg
IFVJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Zvcm1D
bGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9JbnB1dE1ldGhvZENvbnRleHRFZmwuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaAppbmRleCA3MmZi
ZmQzMDNjMDFjNzJiNTUzYmRmNjQ0ODJkNTJiNGEyYjJjNGQ4Li45YzA3ZjhlMGM4Yzg2MmQ4MTQ0
ZmE1YjliM2EwYjliM2U4YTk3OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvZWZsL1dLQmFzZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9l
ZmwvV0tCYXNlRWZsLmgKQEAgLTI3LDUgKzI3LDcgQEAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLVmlldyogV0tWaWV3UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQb3B1
cEl0ZW0qIFdLUG9wdXBJdGVtUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQb3B1
cE1lbnVMaXN0ZW5lciogV0tQb3B1cE1lbnVMaXN0ZW5lclJlZjsKK3R5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLVG91Y2hQb2ludCogV0tUb3VjaFBvaW50UmVmOwordHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tUb3VjaEV2ZW50KiBXS1RvdWNoRXZlbnRSZWY7CiAKICNlbmRpZiAvKiBX
S0Jhc2VFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVj
dC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDVlY2ViNTYyMmYz
ZjA3MTg4MWNmODU0Y2U1NjY1MjAwYjI4NDQzYjYuLmE1NzUwY2ZkNTE3ZjJjNWNmYjNhMmQyYTE3
MWVhODg5YjI4YmRhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTEzNSw2ICsx
MzUsMTAgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgUExBVEZPUk0oRUZMKQogICAgICAgICBUeXBl
UG9wdXBNZW51SXRlbSwKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICAgICBUeXBlVG91
Y2hQb2ludCwKKyAgICAgICAgVHlwZVRvdWNoRXZlbnQsCisjZW5kaWYKICNlbmRpZgogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCmluZGV4IGM2
M2QxY2YwNzA1YmNhMWVhNTRkMzg0ZjNmMGY1YmM4MzExYWQ2MmEuLmZiOTgwNGQwNzlhYzNmMDM0
NTdlZmY3ODY0YzAxNTI0MDUyODgwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2
ZVdlYlRvdWNoRXZlbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2lmIFBMQVRGT1JNKFFUKQogI2lu
Y2x1ZGUgPFFUb3VjaEV2ZW50PgogI2VsaWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgImV3a190
b3VjaC5oIgotI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlICJFRkxUb3VjaEV2ZW50LmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MywxNiArNDMsMjAgQEAgcHVi
bGljOgogI2lmIFBMQVRGT1JNKFFUKQogICAgIGV4cGxpY2l0IE5hdGl2ZVdlYlRvdWNoRXZlbnQo
Y29uc3QgUVRvdWNoRXZlbnQqLCBjb25zdCBRVHJhbnNmb3JtJiBmcm9tSXRlbVRyYW5zZm9ybSk7
CiAjZWxpZiBQTEFURk9STShFRkwpCi0gICAgTmF0aXZlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hf
RXZlbnRfVHlwZSwgY29uc3QgRWluYV9MaXN0KiwgY29uc3QgRXZhc19Nb2RpZmllciosIGNvbnN0
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpB
ZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBO
YXRpdmVXZWJUb3VjaEV2ZW50KEVGTFRvdWNoRXZlbnQqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVU
cmFuc2Zvcm0mKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgY29uc3QgUVRvdWNo
RXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gJm1fbmF0aXZlRXZlbnQ7IH0KKyNl
bGlmIFBMQVRGT1JNKEVGTCkKKyAgICBjb25zdCBFRkxUb3VjaEV2ZW50KiBuYXRpdmVFdmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KICNlbmRpZgogCiBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKFFUKQogICAgIGNvbnN0IFFUb3VjaEV2ZW50IG1fbmF0aXZlRXZlbnQ7
CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgUmVmUHRyPEVGTFRvdWNoRXZlbnQ+IG1fbmF0aXZl
RXZlbnQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9l
ZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZs
L05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCmluZGV4IDcyNzk2ODM1YTY2NDdiMDI3MmRlZjIz
ZWU2YzIwYjE4MTM5YTkxNjUuLmU4MGZiNTBjOGE1MzI4MTAwNGQ1ZTQ5NzBmNGUwN2ZhZWJjMDEz
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hF
dmVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3Vj
aEV2ZW50RWZsLmNwcApAQCAtMzIsOCArMzIsOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRf
VHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciog
bW9kaWZpZXJzLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29udGVudCwg
Y29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbiwgZG91YmxlIHRp
bWVzdGFtcCkKLSAgICA6IFdlYlRvdWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJU
b3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCB0b1dlYkNvbnRlbnQsIHRvRGV2aWNl
U2NyZWVuLCB0aW1lc3RhbXApKQorTmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hF
dmVudChFRkxUb3VjaEV2ZW50KiB0b3VjaEV2ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFu
c2Zvcm0mIHRvV2ViQ29udGVudCkKKyAgICA6IFdlYlRvdWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJUb3VjaEV2ZW50KHRvdWNoRXZlbnQsIHRvV2ViQ29udGVudCkpCisgICAgLCBt
X25hdGl2ZUV2ZW50KHRvdWNoRXZlbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCA0ZTIxYWU5OTYxYjQxZjZjM2VmNjk3MmM3
MTJiZWZhZDI1YWEzMWZmLi45OTlkY2I1ODBiODZjMmQ3MTFjNTRkYzEwNGRiNjA5NzRmMGY0NjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCkBA
IC0zMSw2ICszMSwxMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisjaW5jbHVkZSAiRUZMVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIkVGTFRvdWNoUG9pbnQuaCIK
KyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2Vu
ZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTIwNSw1NyArMjEyLDcwIEBAIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwCiB9CiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQotc3RhdGljIGlubGluZSBXZWJFdmVudDo6VHlwZSB0eXBlRm9yVG91
Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlKQorc3RhdGljIGlubGluZSBXZWJQbGF0
Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0ZSB0b1dlYlBsYXRmb3JtVG91Y2hQb2ludFN0
YXRlKFdLVG91Y2hQb2ludFN0YXRlIHN0YXRlKQogewotICAgIGlmICh0eXBlID09IEVXS19UT1VD
SF9TVEFSVCkKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBrV0tUb3VjaFBvaW50U3Rh
dGVUb3VjaFJlbGVhc2VkOgorICAgICAgICByZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFJlbGVhc2VkOworICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hNb3ZlZDoKKyAg
ICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3ZlZDsKKyAgICBjYXNl
IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3NlZDoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRm
b3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkOworICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRl
VG91Y2hTdGF0aW9uYXJ5OgorICAgICAgICByZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFN0YXRpb25hcnk7CisgICAgY2FzZSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaENhbmNlbGxl
ZDoKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaENhbmNlbGxlZDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6OlR5cGUg
dG9XZWJFdmVudFR5cGUoV0tFdmVudFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoU3RhcnQ6CiAgICAgICAgIHJldHVybiBXZWJFdmVu
dDo6VG91Y2hTdGFydDsKLSAgICBpZiAodHlwZSA9PSBFV0tfVE9VQ0hfTU9WRSkKKyAgICBjYXNl
IGtXS0V2ZW50VHlwZVRvdWNoTW92ZToKICAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaE1v
dmU7Ci0gICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNIX0VORCkKKyAgICBjYXNlIGtXS0V2ZW50VHlw
ZVRvdWNoRW5kOgogICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoRW5kOwotICAgIGlmICh0
eXBlID09IEVXS19UT1VDSF9DQU5DRUwpCisgICAgY2FzZSBrV0tFdmVudFR5cGVUb3VjaENhbmNl
bDoKICAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaENhbmNlbDsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gV2ViRXZlbnQ6Ok5vVHlwZTsKKyAgICB9CiAKLSAgICByZXR1cm4gV2Vi
RXZlbnQ6Ok5vVHlwZTsKIH0KIAotV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0
ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0
KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3Jl
ZW4sIGRvdWJsZSB0aW1lc3RhbXApCitzdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpNb2RpZmllcnMg
dG9XZWJFdmVudE1vZGlmaWVycyh1bnNpZ25lZCBtb2RpZmllcnMpCiB7CisgICAgdW5zaWduZWQg
cmVzdWx0ID0gMDsKKworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0
S2V5KQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6OlNoaWZ0S2V5OworICAgIGlmIChtb2Rp
ZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXkpCisgICAgICAgIHJlc3VsdCB8PSBX
ZWJFdmVudDo6Q29udHJvbEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmll
cnNBbHRLZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6QWx0S2V5OworICAgIGlmICht
b2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXkpCisgICAgICAgIHJlc3VsdCB8PSBX
ZWJFdmVudDo6TWV0YUtleTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJFdmVudDo6TW9k
aWZpZXJzPihyZXN1bHQpOworfQorCitXZWJUb3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViVG91Y2hFdmVudChjb25zdCBFRkxUb3VjaEV2ZW50KiBldmVudCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQpCit7CisgICAgSW1tdXRhYmxlQXJyYXkqIHRvdWNoUG9p
bnRzQXJyYXkgPSB0b0ltcGwoZXZlbnQtPnRvdWNoUG9pbnRzKCkpOworICAgIHNpemVfdCBzaXpl
ID0gdG91Y2hQb2ludHNBcnJheS0+c2l6ZSgpOworCiAgICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91
Y2hQb2ludD4gdG91Y2hQb2ludHM7Ci0gICAgdG91Y2hQb2ludHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShlaW5hX2xpc3RfY291bnQocG9pbnRzKSk7Ci0KLSAgICBjb25zdCBFaW5hX0xpc3QqIGxp
c3Q7Ci0gICAgdm9pZCogaXRlbTsKLSAgICBFSU5BX0xJU1RfRk9SRUFDSChwb2ludHMsIGxpc3Qs
IGl0ZW0pIHsKLSAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3
a19Ub3VjaF9Qb2ludCo+KGl0ZW0pOwotCi0gICAgICAgIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hQb2ludFN0YXRlIHN0YXRlOwotICAgICAgICBzd2l0Y2ggKHBvaW50LT5zdGF0ZSkgewot
ICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfVVA6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdl
YlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfTU9WRToKLSAgICAgICAgICAgIHN0YXRlID0g
V2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9ET1dOOgotICAgICAgICAgICAgc3RhdGUgPSBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfU1RJTEw6Ci0gICAgICAgICAgICBzdGF0ZSA9
IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9DQU5DRUw6Ci0gICAgICAgICAgICBz
dGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQ7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBJbnRQb2lu
dCBwb3MocG9pbnQtPngsIHBvaW50LT55KTsKLSAgICAgICAgdG91Y2hQb2ludHMudW5jaGVja2Vk
QXBwZW5kKFdlYlBsYXRmb3JtVG91Y2hQb2ludChwb2ludC0+aWQsIHN0YXRlLCB0b0RldmljZVNj
cmVlbi5tYXBQb2ludChwb3MpLCB0b1dlYkNvbnRlbnQubWFwUG9pbnQocG9zKSkpOworICAgIHRv
dWNoUG9pbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoRUZMVG91Y2hQb2ludCogcG9p
bnQgPSB0b3VjaFBvaW50c0FycmF5LT5hdDxFRkxUb3VjaFBvaW50PihpKSkKKyAgICAgICAgICAg
IHRvdWNoUG9pbnRzLnVuY2hlY2tlZEFwcGVuZChXZWJQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQt
PmlkKCksIHRvV2ViUGxhdGZvcm1Ub3VjaFBvaW50U3RhdGUocG9pbnQtPnN0YXRlKCkpLCB0b0lu
dFBvaW50KHBvaW50LT5zY3JlZW5Qb3NpdGlvbigpKSwgdG9XZWJDb250ZW50Lm1hcFBvaW50KHRv
SW50UG9pbnQocG9pbnQtPnBvc2l0aW9uKCkpKSwgdG9JbnRTaXplKHBvaW50LT5yYWRpdXMoKSks
IHBvaW50LT5yb3RhdGlvbkFuZ2xlKCksIHBvaW50LT5mb3JjZSgpKSk7CiAgICAgfQogCi0gICAg
cmV0dXJuIFdlYlRvdWNoRXZlbnQodHlwZUZvclRvdWNoRXZlbnQodHlwZSksIHRvdWNoUG9pbnRz
LCBtb2RpZmllcnNGb3JFdmVudChtb2RpZmllcnMpLCB0aW1lc3RhbXApOworICAgIHJldHVybiBX
ZWJUb3VjaEV2ZW50KHRvV2ViRXZlbnRUeXBlKGV2ZW50LT5ldmVudFR5cGUoKSksIHRvdWNoUG9p
bnRzLCB0b1dlYkV2ZW50TW9kaWZpZXJzKGV2ZW50LT5tb2RpZmllcnMoKSksIGV2ZW50LT50aW1l
c3RhbXAoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2VmbC9XZWJFdmVudEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZl
bnRGYWN0b3J5LmgKaW5kZXggZTQ0NGRiMjlkNTIzODQwMjIwNDFlNWRiOGQyNDQwYzMwZDgyM2U4
MC4uZmJmN2RiOWU4MGIwM2ExZWY0MjZmY2UyZWI1NmVjMzAzNDQ5MDgwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCkBAIC0yNywxMiArMjcsMTUgQEAK
ICNkZWZpbmUgV2ViRXZlbnRGYWN0b3J5X2gKIAogI2luY2x1ZGUgIldlYkV2ZW50LmgiCi0jaW5j
bHVkZSAiZXdrX3RvdWNoLmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
QWZmaW5lVHJhbnNmb3JtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKK2NsYXNzIEVGTFRvdWNoRXZlbnQ7CisjZW5kaWYKKwogY2xhc3MgV2ViRXZl
bnRGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJN
b3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93biosIGNvbnN0IFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwpAQCAtNDIs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2Vi
S2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3duKik7CiAgICAgc3RhdGljIFdl
YktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tl
eV9VcCopOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgc3RhdGljIFdlYlRvdWNoRXZl
bnQgY3JlYXRlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSwgY29uc3QgRWluYV9M
aXN0KiwgY29uc3QgRXZhc19Nb2RpZmllciosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGRvdWJsZSB0aW1lc3RhbXApOwor
ICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50IGNyZWF0ZVdlYlRvdWNoRXZlbnQoY29uc3QgRUZMVG91
Y2hFdmVudCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2Fz
dEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwu
aAppbmRleCBkM2JjYTkyNjU3NzI3ODI1Y2ZhMTZmMjIxNTIwYmMxMDM2ZWJlOTNiLi43MzEyZDYz
NWIyMjdiNjhhYTAzYzMyZmFmMTUzODJjMzFhNGZiNTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgKQEAgLTM3LDYgKzM3LDE0IEBA
IFdLX0FERF9BUElfTUFQUElORyhXS1ZpZXdSZWYsIFdlYlZpZXcpCiBXS19BRERfQVBJX01BUFBJ
TkcoV0tQb3B1cEl0ZW1SZWYsIFdlYlBvcHVwSXRlbUVmbCkKIFdLX0FERF9BUElfTUFQUElORyhX
S1BvcHVwTWVudUxpc3RlbmVyUmVmLCBXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbCkKIAorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBFRkxUb3VjaEV2ZW50OworY2xhc3MgRUZMVG91Y2hQ
b2ludDsKKworV0tfQUREX0FQSV9NQVBQSU5HKFdLVG91Y2hFdmVudFJlZiwgRUZMVG91Y2hFdmVu
dCkKK1dLX0FERF9BUElfTUFQUElORyhXS1RvdWNoUG9pbnRSZWYsIEVGTFRvdWNoUG9pbnQpCisj
ZW5kaWYKKwogLy8gRW51bSBjb252ZXJzaW9ucy4KIGlubGluZSBXS1BvcHVwSXRlbVRleHREaXJl
Y3Rpb24gdG9BUEkoV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYWU5YTdhZGU3NjMyNTUxNGMwYjhiMzIxMzlhMTMzMjJiMDkyNWU5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNw
cApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXS0V2ZW50RWZsLmgiCisKKyNpbmNsdWRlICJFRkxUb3VjaEV2ZW50
LmgiCisjaW5jbHVkZSAiRUZMVG91Y2hQb2ludC5oIgorI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5
LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUb3VjaFBvaW50UmVmIFdLVG91Y2hQb2ludENyZWF0
ZShpbnQgaWQsIFdLUG9pbnQgcG9zaXRpb24sIFdLUG9pbnQgc2NyZWVuUG9zaXRpb24sIFdLVG91
Y2hQb2ludFN0YXRlIHN0YXRlLCBXS1NpemUgcmFkaXVzLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBm
bG9hdCBmb3JjZSkKK3sKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHJldHVybiB0b0FQ
SShFRkxUb3VjaFBvaW50OjpjcmVhdGUoaWQsIHN0YXRlLCBzY3JlZW5Qb3NpdGlvbiwgcG9zaXRp
b24sIHJhZGl1cywgcm90YXRpb25BbmdsZSwgZm9yY2UpLmxlYWtSZWYoKSk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShpZCk7CisgICAgVU5VU0VEX1BBUkFNKHBvc2l0aW9uKTsKKyAgICBVTlVT
RURfUEFSQU0oc2NyZWVuUG9zaXRpb24pOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
VU5VU0VEX1BBUkFNKHJhZGl1cyk7CisgICAgVU5VU0VEX1BBUkFNKHJvdGF0aW9uQW5nbGUpOwor
ICAgIFVOVVNFRF9QQVJBTShmb3JjZSk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tU
b3VjaEV2ZW50UmVmIFdLVG91Y2hFdmVudENyZWF0ZShXS0V2ZW50VHlwZSB0eXBlLCBXS0FycmF5
UmVmIHdrVG91Y2hQb2ludHMsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGlt
ZXN0YW1wKQoreworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgcmV0dXJuIHRvQVBJKEVG
TFRvdWNoRXZlbnQ6OmNyZWF0ZSh0eXBlLCB3a1RvdWNoUG9pbnRzLCBtb2RpZmllcnMsIHRpbWVz
dGFtcCkubGVha1JlZigpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHR5cGUsIHdrVG91Y2hQ
b2ludHMsIG1vZGlmaWVycywgdGltZXN0YW1wKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMzE0ZWRlMTY1ODIxNjVlNjljNjcyMzM1MjE3OGU4YzcyOTI2NjdiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZs
LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVs
ZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdLRXZlbnRFZmxfaAorI2RlZmluZSBXS0V2ZW50RWZsX2gKKworI2luY2x1
ZGUgPFdlYktpdDIvV0tFdmVudC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5oPgor
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0gV0tFdmVu
dFR5cGUgeworICAgIGtXS0V2ZW50VHlwZU5vVHlwZSA9IC0xLAorICAgIGtXS0V2ZW50VHlwZVRv
dWNoU3RhcnQsCisgICAga1dLRXZlbnRUeXBlVG91Y2hNb3ZlLAorICAgIGtXS0V2ZW50VHlwZVRv
dWNoRW5kLAorICAgIGtXS0V2ZW50VHlwZVRvdWNoQ2FuY2VsCit9OwordHlwZWRlZiBlbnVtIFdL
RXZlbnRUeXBlIFdLRXZlbnRUeXBlOworCitlbnVtIFdLVG91Y2hQb2ludFN0YXRlIHsKKyAgICBr
V0tUb3VjaFBvaW50U3RhdGVUb3VjaFJlbGVhc2VkLAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRv
dWNoUHJlc3NlZCwKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkLAorICAgIGtXS1Rv
dWNoUG9pbnRTdGF0ZVRvdWNoU3RhdGlvbmFyeSwKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3Vj
aENhbmNlbGxlZAorfTsKK3R5cGVkZWYgZW51bSBXS1RvdWNoUG9pbnRTdGF0ZSBXS1RvdWNoUG9p
bnRTdGF0ZTsKKworV0tfRVhQT1JUIFdLVG91Y2hQb2ludFJlZiBXS1RvdWNoUG9pbnRDcmVhdGUo
aW50IGlkLCBXS1BvaW50IHBvc2l0aW9uLCBXS1BvaW50IHNjcmVlblBvc2l0aW9uLCBXS1RvdWNo
UG9pbnRTdGF0ZSwgV0tTaXplIHJhZGl1cywgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9y
Y2UpOworV0tfRVhQT1JUIFdLVG91Y2hFdmVudFJlZiBXS1RvdWNoRXZlbnRDcmVhdGUoV0tFdmVu
dFR5cGUsIFdLQXJyYXlSZWYsIFdLRXZlbnRNb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tFdmVudEVmbF9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKaW5k
ZXggYTI0OTgyMDVhZTBmOTk4NDVjZTAyOWFkOGJjZTYxZDc4MDdmM2Y2My4uNjRjY2IwYzFlYzkx
NThlOTg0Y2VkYmZlNjIwYWZkNzQ3ZDc5NDRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtMTQ4LDMgKzE0OCwxMyBAQCBXS0ltYWdlUmVm
IFdLVmlld0NyZWF0ZVNuYXBzaG90KFdLVmlld1JlZiB2aWV3UmVmKQogICAgIEV3a1ZpZXcqIGV3
a1ZpZXcgPSB0b0V3a1ZpZXcodG9JbXBsKHZpZXdSZWYpLT5ldmFzT2JqZWN0KCkpOwogICAgIHJl
dHVybiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShld2tWaWV3LT50YWtlU25hcHNob3Qo
KS5nZXQoKSwgMCAvKiBvcHRpb25zICovKTsKIH0KKwordm9pZCBXS1ZpZXdTZW5kVG91Y2hFdmVu
dChXS1ZpZXdSZWYgdmlld1JlZiwgV0tUb3VjaEV2ZW50UmVmIHRvdWNoRXZlbnRSZWYpCit7Cisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB0b0ltcGwodmlld1JlZiktPnNlbmRUb3VjaEV2
ZW50KHRvSW1wbCh0b3VjaEV2ZW50UmVmKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2aWV3
UmVmKTsKKyAgICBVTlVTRURfUEFSQU0odG91Y2hFdmVudFJlZik7CisjZW5kaWYKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCmluZGV4IGE3MDliNDg4YTgw
M2M1MzdjZGUzMGNhMTcxODMwOTk5OTc5Y2RmZmIuLjZmOWVkMGNlMDNhY2M2MDYwNWYyNjRlMTYy
NDFhZjlhMjc0MDE4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1ZpZXcuaApAQCAtOTMsNiArOTMsOCBAQCBXS19FWFBPUlQgRXZhc19PYmplY3QqIFdLVmlld0dl
dEV2YXNPYmplY3QoV0tWaWV3UmVmKTsKIAogV0tfRVhQT1JUIFdLSW1hZ2VSZWYgV0tWaWV3Q3Jl
YXRlU25hcHNob3QoV0tWaWV3UmVmKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2VuZFRvdWNo
RXZlbnQoV0tWaWV3UmVmLCBXS1RvdWNoRXZlbnRSZWYpOworCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNw
cAppbmRleCAxZjJlZWEyMzY5NTkzMDVjNzlhMDViZTY5MzJiM2QyYjY1MGQ2ODdmLi5mOTRkNjc0
MjUxMzhkN2UwZGViZmQyOTIzZDVkMTY2ZWZiZGVmZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtMzYsNyArMzYsOSBAQAogI2luY2x1ZGUg
IlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaCIKICNpbmNsdWRlICJTbmFwc2hvdElt
YWdlR0wuaCIKICNpbmNsdWRlICJWaWV3Q2xpZW50RWZsLmgiCisjaW5jbHVkZSAiV0tBcnJheS5o
IgogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIldLRXZlbnRFZmwuaCIKICNp
bmNsdWRlICJXS0dlb21ldHJ5LmgiCiAjaW5jbHVkZSAiV0tOdW1iZXIuaCIKICNpbmNsdWRlICJX
S1BhZ2VHcm91cC5oIgpAQCAtNzEwLDkgKzcxMiw1MSBAQCB2b2lkIEV3a1ZpZXc6OnNldE1vdXNl
RXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpCiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorc3RhdGljIFdLVG91Y2hQb2ludFN0YXRlIHRvV0tUb3VjaFBvaW50U3RhdGUoRXZhc19Ub3Vj
aF9Qb2ludF9TdGF0ZSBzdGF0ZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBF
VkFTX1RPVUNIX1BPSU5UX1VQOgorICAgICAgICByZXR1cm4ga1dLVG91Y2hQb2ludFN0YXRlVG91
Y2hSZWxlYXNlZDsKKyAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfTU9WRToKKyAgICAgICAgcmV0
dXJuIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoTW92ZWQ7CisgICAgY2FzZSBFVkFTX1RPVUNIX1BP
SU5UX0RPV046CisgICAgICAgIHJldHVybiBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFByZXNzZWQ7
CisgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX1NUSUxMOgorICAgICAgICByZXR1cm4ga1dLVG91
Y2hQb2ludFN0YXRlVG91Y2hTdGF0aW9uYXJ5OworICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9D
QU5DRUw6CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGtXS1RvdWNoUG9pbnRTdGF0ZVRv
dWNoQ2FuY2VsbGVkOworICAgIH0KK30KKworc3RhdGljIFdLRXZlbnRNb2RpZmllcnMgdG9XS0V2
ZW50TW9kaWZpZXJzKGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycykKK3sKKyAgICBXS0V2
ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzID0gMDsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJf
aXNfc2V0KG1vZGlmaWVycywgIlNoaWZ0IikpCisgICAgICAgIHdrTW9kaWZpZXJzIHw9IGtXS0V2
ZW50TW9kaWZpZXJzU2hpZnRLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldCht
b2RpZmllcnMsICJDb250cm9sIikpCisgICAgICAgIHdrTW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9k
aWZpZXJzQ29udHJvbEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlm
aWVycywgIkFsdCIpKQorICAgICAgICB3a01vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc0Fs
dEtleTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIk1ldGEi
KSkKKyAgICAgICAgd2tNb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNNZXRhS2V5OworCisg
ICAgcmV0dXJuIHdrTW9kaWZpZXJzOworfQorCiB2b2lkIEV3a1ZpZXc6OmZlZWRUb3VjaEV2ZW50
KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25z
dCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMpCiB7Ci0gICAgcGFnZSgpLT5oYW5kbGVUb3VjaEV2
ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMsIHdlYlZpZXco
KS0+dHJhbnNmb3JtRnJvbVNjZW5lKCksIHRyYW5zZm9ybVRvU2NyZWVuKCksIGVjb3JlX3RpbWVf
Z2V0KCkpKTsKKyAgICBjb25zdCB1bnNpZ25lZCBjb3VudCA9IGVpbmFfbGlzdF9jb3VudChwb2lu
dHMpOworICAgIE93bkFycmF5UHRyPFdLVHlwZVJlZj4gdG91Y2hQb2ludHMgPSBhZG9wdEFycmF5
UHRyKG5ldyBXS1R5cGVSZWZbY291bnRdKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgeworICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHBvaW50ID0gc3RhdGljX2Nh
c3Q8RXdrX1RvdWNoX1BvaW50Kj4oZWluYV9saXN0X250aChwb2ludHMsIGkpKTsKKyAgICAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4ocG9pbnQpOworICAgICAgICBJbnRQb2ludCBwb3Np
dGlvbihwb2ludC0+eCwgcG9pbnQtPnkpOworICAgICAgICB0b3VjaFBvaW50c1tpXSA9IFdLVG91
Y2hQb2ludENyZWF0ZShwb2ludC0+aWQsIHRvQVBJKEludFBvaW50KHBvc2l0aW9uKSksIHRvQVBJ
KHRyYW5zZm9ybVRvU2NyZWVuKCkubWFwUG9pbnQocG9zaXRpb24pKSwgdG9XS1RvdWNoUG9pbnRT
dGF0ZShwb2ludC0+c3RhdGUpLCBXS1NpemVNYWtlKDAsIDApLCAwLCAwKTsKKyAgICB9CisgICAg
V0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tUb3VjaFBvaW50cyhBZG9wdFdLLCBXS0FycmF5Q3Jl
YXRlQWRvcHRpbmdWYWx1ZXModG91Y2hQb2ludHMuZ2V0KCksIGNvdW50KSk7CisKKyAgICBXS1Zp
ZXdTZW5kVG91Y2hFdmVudCh3a1ZpZXcoKSwgYWRvcHRXSyhXS1RvdWNoRXZlbnRDcmVhdGUoc3Rh
dGljX2Nhc3Q8V0tFdmVudFR5cGU+KHR5cGUpLCB3a1RvdWNoUG9pbnRzLmdldCgpLCB0b1dLRXZl
bnRNb2RpZmllcnMobW9kaWZpZXJzKSwgZWNvcmVfdGltZV9nZXQoKSkpLmdldCgpKTsKIH0KIAog
dm9pZCBFd2tWaWV3OjpzZXRUb3VjaEV2ZW50c0VuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtMTIz
NiwyMCArMTI4MCwxOCBAQCB2b2lkIEV3a1ZpZXc6OmZlZWRUb3VjaEV2ZW50cyhFd2tfVG91Y2hf
RXZlbnRfVHlwZSB0eXBlKQogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEVpbmFfTGlzdCogcG9pbnRzID0gMDsKKyAgICBPd25BcnJheVB0cjxXS1R5cGVSZWY+IHRvdWNo
UG9pbnRzID0gYWRvcHRBcnJheVB0cihuZXcgV0tUeXBlUmVmW2NvdW50XSk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgRXdrX1RvdWNoX1BvaW50
KiBwb2ludCA9IG5ldyBFd2tfVG91Y2hfUG9pbnQ7Ci0gICAgICAgIHBvaW50LT5pZCA9IGV2YXNf
dG91Y2hfcG9pbnRfbGlzdF9udGhfaWRfZ2V0KHNkLT5iYXNlLmV2YXMsIGkpOwotICAgICAgICBl
dmFzX3RvdWNoX3BvaW50X2xpc3RfbnRoX3h5X2dldChzZC0+YmFzZS5ldmFzLCBpLCAmcG9pbnQt
PngsICZwb2ludC0+eSk7Ci0gICAgICAgIHBvaW50LT5zdGF0ZSA9IGV2YXNfdG91Y2hfcG9pbnRf
bGlzdF9udGhfc3RhdGVfZ2V0KHNkLT5iYXNlLmV2YXMsIGkpOwotICAgICAgICBwb2ludHMgPSBl
aW5hX2xpc3RfYXBwZW5kKHBvaW50cywgcG9pbnQpOworICAgICAgICBpbnQgaWQgPSBldmFzX3Rv
dWNoX3BvaW50X2xpc3RfbnRoX2lkX2dldChzZC0+YmFzZS5ldmFzLCBpKTsKKyAgICAgICAgaW50
IHgsIHk7CisgICAgICAgIGV2YXNfdG91Y2hfcG9pbnRfbGlzdF9udGhfeHlfZ2V0KHNkLT5iYXNl
LmV2YXMsIGksICZ4LCAmeSk7CisgICAgICAgIEV2YXNfVG91Y2hfUG9pbnRfU3RhdGUgc3RhdGUg
PSBldmFzX3RvdWNoX3BvaW50X2xpc3RfbnRoX3N0YXRlX2dldChzZC0+YmFzZS5ldmFzLCBpKTsK
KyAgICAgICAgSW50UG9pbnQgcG9zaXRpb24oeCwgeSk7CisgICAgICAgIHRvdWNoUG9pbnRzW2ld
ID0gV0tUb3VjaFBvaW50Q3JlYXRlKGlkLCB0b0FQSShJbnRQb2ludChwb3NpdGlvbikpLCB0b0FQ
SSh0cmFuc2Zvcm1Ub1NjcmVlbigpLm1hcFBvaW50KHBvc2l0aW9uKSksIHRvV0tUb3VjaFBvaW50
U3RhdGUoc3RhdGUpLCBXS1NpemVNYWtlKDAsIDApLCAwLCAwKTsKICAgICB9CisgICAgV0tSZXRh
aW5QdHI8V0tBcnJheVJlZj4gd2tUb3VjaFBvaW50cyhBZG9wdFdLLCBXS0FycmF5Q3JlYXRlQWRv
cHRpbmdWYWx1ZXModG91Y2hQb2ludHMuZ2V0KCksIGNvdW50KSk7CiAKLSAgICBmZWVkVG91Y2hF
dmVudCh0eXBlLCBwb2ludHMsIGV2YXNfa2V5X21vZGlmaWVyX2dldChzZC0+YmFzZS5ldmFzKSk7
Ci0KLSAgICB2b2lkKiBkYXRhOwotICAgIEVJTkFfTElTVF9GUkVFKHBvaW50cywgZGF0YSkKLSAg
ICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGRhdGEpOworICAgIFdL
Vmlld1NlbmRUb3VjaEV2ZW50KHdrVmlldygpLCBhZG9wdFdLKFdLVG91Y2hFdmVudENyZWF0ZShz
dGF0aWNfY2FzdDxXS0V2ZW50VHlwZT4odHlwZSksIHdrVG91Y2hQb2ludHMuZ2V0KCksIHRvV0tF
dmVudE1vZGlmaWVycyhldmFzX2tleV9tb2RpZmllcl9nZXQoc2QtPmJhc2UuZXZhcykpLCBlY29y
ZV90aW1lX2dldCgpKSkuZ2V0KCkpOwogfQogCiB2b2lkIEV3a1ZpZXc6OmhhbmRsZVRvdWNoRG93
bih2b2lkKiAvKiBkYXRhICovLCBFdmFzKiAvKiBjYW52YXMgKi8sIEV2YXNfT2JqZWN0KiBld2tW
aWV3LCB2b2lkKiAvKiBldmVudEluZm8gKi8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL0VGTFRvdWNoRXZlbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9FRkxUb3VjaEV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzBkNGI1MzkzZGUxOWY1NjYxYjBh
NWI1NWYxOWJmNDgzZWE4NTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9FRkxUb3VjaEV2ZW50LmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFRkxUb3VjaEV2ZW50
LmgiCisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
RUZMVG91Y2hFdmVudDo6RUZMVG91Y2hFdmVudChXS0V2ZW50VHlwZSB0eXBlLCBXS0FycmF5UmVm
IHRvdWNoUG9pbnRzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFt
cCkKKyAgICA6IG1fZXZlbnRUeXBlKHR5cGUpCisgICAgLCBtX3RvdWNoUG9pbnRzKHRvdWNoUG9p
bnRzKQorICAgICwgbV9tb2RpZmllcnMobW9kaWZpZXJzKQorICAgICwgbV90aW1lc3RhbXAodGlt
ZXN0YW1wKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShUT1VDSF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0VGTFRvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRUZMVG91Y2hF
dmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE5NmYyODc2MTdhNDViMjk4YThmYjhmZmU2ZDYyNDc4YmY3ZTM2
NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0VGTFRv
dWNoRXZlbnQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNh
bXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgRUZMVG91Y2hFdmVudF9oCisjZGVmaW5lIEVGTFRvdWNoRXZlbnRfaAorCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldLQXJy
YXkuaCIKKyNpbmNsdWRlICJXS0V2ZW50RWZsLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgRUZMVG91Y2hFdmVudCA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdCBBUElPYmplY3Q6OlR5cGUgQVBJVHlwZSA9IFR5cGVUb3VjaEV2ZW50OworCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RUZMVG91Y2hFdmVudD4gY3JlYXRlKFdLRXZlbnRUeXBlIHR5cGUs
IFdLQXJyYXlSZWYgdG91Y2hQb2ludHMsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3Vi
bGUgdGltZXN0YW1wKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFRkxUb3Vj
aEV2ZW50KHR5cGUsIHRvdWNoUG9pbnRzLCBtb2RpZmllcnMsIHRpbWVzdGFtcCkpOworICAgIH0K
KworICAgIFdLRXZlbnRUeXBlIGV2ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRUeXBl
OyB9CisgICAgV0tBcnJheVJlZiB0b3VjaFBvaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hQ
b2ludHMuZ2V0KCk7IH0KKyAgICBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycygpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kaWZpZXJzOyB9CisgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGltZXN0YW1wOyB9CisKK3ByaXZhdGU6CisgICAgRUZMVG91Y2hFdmVudChXS0V2ZW50
VHlwZSwgV0tBcnJheVJlZiwgV0tFdmVudE1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCk7CisK
KyAgICB2aXJ0dWFsIEFQSU9iamVjdDo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlw
ZTsgfQorCisgICAgV0tFdmVudFR5cGUgbV9ldmVudFR5cGU7CisgICAgV0tSZXRhaW5QdHI8V0tB
cnJheVJlZj4gbV90b3VjaFBvaW50czsKKyAgICBXS0V2ZW50TW9kaWZpZXJzIG1fbW9kaWZpZXJz
OworICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2VuZGlmIC8qIEVGTFRvdWNoRXZl
bnRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FRkxUb3Vj
aFBvaW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRUZMVG91Y2hQb2ludC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTU0NTI0YmQyZDZjN2Y1NzNkNDNmMjRhMDYxMDgyNWMzNmJiY2ViYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRUZMVG91Y2hQ
b2ludC5jcHAKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1z
dW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRUZMVG91Y2hQb2ludC5oIgorCisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0VGTFRvdWNoUG9pbnQ6OkVGTFRv
dWNoUG9pbnQodWludDMyX3QgaWQsIFdLVG91Y2hQb2ludFN0YXRlIHN0YXRlLCBjb25zdCBXS1Bv
aW50JiBzY3JlZW5Qb3NpdGlvbiwgY29uc3QgV0tQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdLU2l6
ZSYgcmFkaXVzLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSkKKyAgICA6IG1faWQo
aWQpCisgICAgLCBtX3N0YXRlKHN0YXRlKQorICAgICwgbV9zY3JlZW5Qb3NpdGlvbihzY3JlZW5Q
b3NpdGlvbikKKyAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgLCBtX3JhZGl1cyhyYWRp
dXMpCisgICAgLCBtX3JvdGF0aW9uQW5nbGUocm90YXRpb25BbmdsZSkKKyAgICAsIG1fZm9yY2Uo
Zm9yY2UpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFRPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
RUZMVG91Y2hQb2ludC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FRkxUb3VjaFBv
aW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZThhYmIzMDMwMjIwODgyNWI3OTYwN2IyYWI1ZmRiZDkyZWRjMzEx
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRUZMVG91
Y2hQb2ludC5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBFRkxUb3VjaFBvaW50X2gKKyNkZWZpbmUgRUZMVG91Y2hQb2ludF9oCisKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV0tBcnJh
eS5oIgorI2luY2x1ZGUgIldLRXZlbnRFZmwuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBFRkxUb3VjaFBvaW50IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0IEFQSU9iamVjdDo6VHlwZSBBUElUeXBlID0gVHlwZVRvdWNoUG9pbnQ7CisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxFRkxUb3VjaFBvaW50PiBjcmVhdGUodWludDMyX3QgaWQsIFdLVG91
Y2hQb2ludFN0YXRlIHN0YXRlLCBjb25zdCBXS1BvaW50JiBzY3JlZW5Qb3NpdGlvbiwgY29uc3Qg
V0tQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdLU2l6ZSYgcmFkaXVzLCBmbG9hdCByb3RhdGlvbkFu
Z2xlID0gMC4wLCBmbG9hdCBmb3JjZSA9IDAuMCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRUZMVG91Y2hQb2ludChpZCwgc3RhdGUsIHNjcmVlblBvc2l0aW9uLCBwb3NpdGlv
biwgcmFkaXVzLCByb3RhdGlvbkFuZ2xlLCBmb3JjZSkpOworICAgIH0KKworICAgIHVpbnQzMl90
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIFdLVG91Y2hQb2ludFN0YXRlIHN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorICAgIFdLUG9pbnQgc2NyZWVuUG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3NjcmVlblBvc2l0aW9uOyB9CisgICAgV0tQb2ludCBwb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKyAgICBXS1NpemUgcmFkaXVzKCkgY29u
c3QgeyByZXR1cm4gbV9yYWRpdXM7IH0KKyAgICBmbG9hdCByb3RhdGlvbkFuZ2xlKCkgY29uc3Qg
eyByZXR1cm4gbV9yb3RhdGlvbkFuZ2xlOyB9CisgICAgZmxvYXQgZm9yY2UoKSBjb25zdCB7IHJl
dHVybiBtX2ZvcmNlOyB9CisKK3ByaXZhdGU6CisgICAgRUZMVG91Y2hQb2ludCh1aW50MzJfdCBp
ZCwgV0tUb3VjaFBvaW50U3RhdGUsIGNvbnN0IFdLUG9pbnQmLCBjb25zdCBXS1BvaW50JiwgY29u
c3QgV0tTaXplJiwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UpOworCisgICAgdmly
dHVhbCBBUElPYmplY3Q6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKwor
ICAgIHVpbnQzMl90IG1faWQ7CisgICAgV0tUb3VjaFBvaW50U3RhdGUgbV9zdGF0ZTsKKyAgICBX
S1BvaW50IG1fc2NyZWVuUG9zaXRpb247CisgICAgV0tQb2ludCBtX3Bvc2l0aW9uOworICAgIFdL
U2l6ZSBtX3JhZGl1czsKKyAgICBmbG9hdCBtX3JvdGF0aW9uQW5nbGU7CisgICAgZmxvYXQgbV9m
b3JjZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFRP
VUNIX0VWRU5UUykKKworI2VuZGlmIC8qIEVGTFRvdWNoUG9pbnRfaCAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKaW5kZXggNWMyYjNiYTQzZmE1ZjUyOGI3MTFjMTUy
YzVhZGVjOTc5ZDIxZDQxZS4uYzBkMTMxZmMwYTM1Mjc3OWI4YWUyM2I1YmU3ZTMzOWZhM2Q5MDI5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC00Niw2ICs0
NiwxMCBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNlbmRpZgog
CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJFRkxUb3VjaEV2ZW50LmgiCisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtNTE5LDQgKzUyMywxMiBAQCB2b2lkIFdlYlZpZXc6OnBhZ2VUcmFu
c2l0aW9uVmlld3BvcnRSZWFkeSgpCiAgICAgbV9ld2tWaWV3LT5zY2hlZHVsZVVwZGF0ZURpc3Bs
YXkoKTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIFdlYlZpZXc6OnNlbmRU
b3VjaEV2ZW50KEVGTFRvdWNoRXZlbnQqIHRvdWNoRXZlbnQpCit7CisgICAgQVNTRVJUKHRvdWNo
RXZlbnQpOworICAgIG1fcGFnZS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50
KHRvdWNoRXZlbnQsIHRyYW5zZm9ybUZyb21TY2VuZSgpKSk7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCmluZGV4
IDlmNWY2ZjQ3NjZlYTgwMDFmZGU5ODc5NDBmYzUyZGQ4NmI2MmNhOGEuLjNlNTk1NjNiMDc5NzMz
ZDUwMGQ1NWI0ZTEwMzQ0YWVlMmQ0ZTMyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlldy5oCkBAIC00Niw2ICs0NiwxMCBAQCBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2Ns
YXNzIEVGTFRvdWNoRXZlbnQ7CisjZW5kaWYKKwogY2xhc3MgV2ViVmlldyA6IHB1YmxpYyBBUElP
YmplY3QsIHB1YmxpYyBQYWdlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlw
ZSBBUElUeXBlID0gVHlwZVZpZXc7CkBAIC04MCw2ICs4NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBleGl0RnVsbFNjcmVlbigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoRUZMVG91Y2hFdmVudCopOworI2VuZGlmCisKICAgICAv
LyBWaWV3IGNsaWVudC4KICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tWaWV3Q2xp
ZW50Kik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193064</attachid>
            <date>2013-03-13 21:58:46 -0700</date>
            <delta_ts>2013-03-18 05:54:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130314135441.patch</filename>
            <type>text/plain</type>
            <size>38630</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjU5NDk4ZTZiMTM1ZGJl
MWRkOWI3MDViNTlhNWY3NWJiZmYxNWNmZi4uMDZkNmJjOWExODQ0MjljMWNlNDRiOTU3ZjA5ODFk
NzJjZjU2MDY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEzLTAzLTEzICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvdWNoIGV2ZW50cyBmb3Igb3VyIHRhcmdldCBw
bGF0Zm9ybXMgZGlmZmVyIChYSW5wdXQyLCBXYXlsYW5kLCBUaXplbikgc28KKyAgICAgICAgZm9y
IHRoZSBFRkwgcG9ydCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZmVlZCBldmVudHMgbWFudWFsbHku
CisKKyAgICAgICAgVG8ga2VlcCBvdXIgY3VycmVudCBBUEkgZm9yIGRlc2t0b3AgRUZML0VubGln
aHRlbm1lbnQgd29ya2luZywgd2UgY29udmVydAorICAgICAgICBvdXIgY3VycmVudGx5IGxpbWl0
ZWQgRUZMIGV2ZW50cyB0byB0aGUgbmV3IEVGTCBzcGVjaWZpYyBDIEVGTFRvdWNoUG9pbnQKKyAg
ICAgICAgYW5kIEVGTFRvdWNoRXZlbnQgdHlwZS4KKworICAgICAgICBFRkxUb3VjaFBvaW50IGFu
ZCBFRkxUb3VjaEV2ZW50IGFyZSBleHBvc2VkIGFzIFdLVG91Y2hQb2ludFJlZiBhbmQKKyAgICAg
ICAgV0tUb3VjaEV2ZW50UmVmLCBzbyB0aGV5IGFyZSBvcGFxdWUgaW4gdGhlIGFwcGxpY2F0aW9u
cy4KKworICAgICAgICBUaGUgV0tWaWV3U2VuZFRvdWNoRXZlbnQgY2FuIGJlIHVzZWQgZm9yIGFu
eSB1c2UtY2FzZSAocGxhdGZvcm0vcHJvZHVjdCkKKyAgICAgICAgbm90IGludm9sdmluZyB0aGUg
RUZMIGV2ZW50cy4KKworICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHdlIG1ha2Ugc3VyZSB0byBh
dm9pZCB1c2luZyBXSzIgaW50ZXJuYWxzIGluIG91ciBFRkwgQVBJCisgICAgICAgIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogU2hhcmVk
L0FQSS9jL2VmbC9XS0Jhc2VFZmwuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6Cisg
ICAgICAgICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKE5hdGl2ZVdl
YlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50OjpuYXRp
dmVFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hF
dmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojp0b1dlYlBsYXRmb3JtVG91Y2hQb2ludFN0YXRlKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OnRvV2ViRXZlbnRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
dG9XZWJFdmVudE1vZGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rv
cnkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJFdmVudEZhY3RvcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHA6IEFkZGVk
LgorICAgICAgICAoV0tUb3VjaFBvaW50Q3JlYXRlKToKKyAgICAgICAgKFdLVG91Y2hFdmVudENy
ZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcDoKKyAgICAgICAgKFdL
Vmlld1NlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAgICAo
dG9XS1RvdWNoUG9pbnRTdGF0ZSk6CisgICAgICAgICh0b1dLRXZlbnRNb2RpZmllcnMpOgorICAg
ICAgICAoRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQpOgorICAgICAgICAoRXdrVmlldzo6ZmVlZFRv
dWNoRXZlbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0VGTFRvdWNoRXZlbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkVGTFRvdWNoRXZlbnQ6
OkVGTFRvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRUZMVG91Y2hFdmVudC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChFRkxUb3VjaEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6RUZMVG91Y2hFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
RUZMVG91Y2hFdmVudDo6ZXZlbnRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6RUZMVG91Y2hFdmVu
dDo6dG91Y2hQb2ludHMpOgorICAgICAgICAoV2ViS2l0OjpFRkxUb3VjaEV2ZW50Ojptb2RpZmll
cnMpOgorICAgICAgICAoV2ViS2l0OjpFRkxUb3VjaEV2ZW50Ojp0aW1lc3RhbXApOgorICAgICAg
ICAoV2ViS2l0OjpFRkxUb3VjaEV2ZW50Ojp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZs
L0VGTFRvdWNoUG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OkVGTFRvdWNoUG9pbnQ6OkVGTFRvdWNoUG9pbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvRUZMVG91Y2hQb2ludC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChFRkxUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6RUZMVG91Y2hQb2ludDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6RUZMVG91Y2hQb2ludDo6aWQpOgorICAgICAgICAoV2ViS2l0
OjpFRkxUb3VjaFBvaW50OjpzdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkVGTFRvdWNoUG9pbnQ6
OnNjcmVlblBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RUZMVG91Y2hQb2ludDo6cG9zaXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpFRkxUb3VjaFBvaW50OjpyYWRpdXMpOgorICAgICAgICAo
V2ViS2l0OjpFRkxUb3VjaFBvaW50Ojpyb3RhdGlvbkFuZ2xlKToKKyAgICAgICAgKFdlYktpdDo6
RUZMVG91Y2hQb2ludDo6Zm9yY2UpOgorICAgICAgICAoV2ViS2l0OjpFRkxUb3VjaFBvaW50Ojp0
eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2VuZFRvdWNoRXZlbnQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlZpZXcpOgorCiAyMDEzLTAzLTEzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFRocmVhZGVkIEhUTUwgUGFyc2VyIGlzIG1pc3NpbmcgZmVhdHVyZSBkZWZp
bmUgZmxhZ3MgaW4gYWxsIGJ1dCBDaHJvbWl1bSBwb3J0J3MgYnVpbGQgZmlsZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggOGY2YjliYTJmMzg4NWRlZTMwZmI2NTI1OTM2YjU0NTg1ZjE1
Yzk0ZC4uODdhNTc1MzAzOWE4NWIwOTc5ZGNhOTUxN2YyODI5MjkwNjZlNjcwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTM3LDYgKzM3LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvY2Fpcm8vV0tJY29uRGF0YWJhc2VDYWlyby5j
cHAKIAorICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL0MvZWZsL1dLUGFnZUVmbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9w
dXBJdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cE1lbnVMaXN0ZW5lci5j
cHAKQEAgLTg4LDYgKzg5LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQ
cm9jZXNzL2VmbC9Db250ZXh0SGlzdG9yeUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZs
L0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5h
Z2VyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvRUZMVG91Y2hFdmVudC5jcHAKKyAgICBVSVBy
b2Nlc3MvZWZsL0VGTFRvdWNoUG9pbnQuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50
RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nl
c3MvZWZsL0lucHV0TWV0aG9kQ29udGV4dEVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvZWZsL1dLQmFzZUVmbC5oCmluZGV4IDcyZmJmZDMwM2MwMWM3MmI1NTNiZGY2NDQ4MmQ1
MmI0YTJiMmM0ZDguLjljMDdmOGUwYzhjODYyZDgxNDRmYTViOWIzYTBiOWIzZThhOTc4YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaApAQCAtMjcsNSAr
MjcsNyBAQAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWV3KiBXS1ZpZXdSZWY7CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BvcHVwSXRlbSogV0tQb3B1cEl0ZW1SZWY7CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BvcHVwTWVudUxpc3RlbmVyKiBXS1BvcHVwTWVu
dUxpc3RlbmVyUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tUb3VjaFBvaW50KiBX
S1RvdWNoUG9pbnRSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1RvdWNoRXZlbnQq
IFdLVG91Y2hFdmVudFJlZjsKIAogI2VuZGlmIC8qIFdLQmFzZUVmbF9oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJT2JqZWN0LmgKaW5kZXggNWVjZWI1NjIyZjNmMDcxODgxY2Y4NTRjZTU2NjUyMDBiMjg0
NDNiNi4uYTU3NTBjZmQ1MTdmMmM1Y2ZiM2EyZDJhMTcxZWE4ODliMjhiZGEyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTM1LDYgKzEzNSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYK
ICNpZiBQTEFURk9STShFRkwpCiAgICAgICAgIFR5cGVQb3B1cE1lbnVJdGVtLAorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgICAgIFR5cGVUb3VjaFBvaW50LAorICAgICAgICBUeXBlVG91
Y2hFdmVudCwKKyNlbmRpZgogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKaW5kZXggYzYzZDFjZjA3MDViY2ExZWE1NGQzODRmM2Yw
ZjViYzgzMTFhZDYyYS4uZmI5ODA0ZDA3OWFjM2YwMzQ1N2VmZjc4NjRjMDE1MjQwNTI4ODBjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oCkBAIC0zMSw5
ICszMSw5IEBACiAjaWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+CiAjZWxp
ZiBQTEFURk9STShFRkwpCi0jaW5jbHVkZSAiZXdrX3RvdWNoLmgiCi0jaW5jbHVkZSA8RXZhcy5o
PgorI2luY2x1ZGUgIkVGTFRvdWNoRXZlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRy
YW5zZm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQzLDE2ICs0MywyMCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oUVQpCiAg
ICAgZXhwbGljaXQgTmF0aXZlV2ViVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGNvbnN0
IFFUcmFuc2Zvcm0mIGZyb21JdGVtVHJhbnNmb3JtKTsKICNlbGlmIFBMQVRGT1JNKEVGTCkKLSAg
ICBOYXRpdmVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5hX0xp
c3QqLCBjb25zdCBFdmFzX01vZGlmaWVyKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
JiB0b1dlYkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VT
Y3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApOworICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoRUZMVG91
Y2hFdmVudCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShRVCkKICAgICBjb25zdCBRVG91Y2hFdmVudCogbmF0aXZlRXZlbnQoKSBjb25z
dCB7IHJldHVybiAmbV9uYXRpdmVFdmVudDsgfQorI2VsaWYgUExBVEZPUk0oRUZMKQorICAgIGNv
bnN0IEVGTFRvdWNoRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVF
dmVudC5nZXQoKTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oUVQpCiAgICAg
Y29uc3QgUVRvdWNoRXZlbnQgbV9uYXRpdmVFdmVudDsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAg
ICBSZWZQdHI8RUZMVG91Y2hFdmVudD4gbV9uYXRpdmVFdmVudDsKICNlbmRpZgogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5j
cHAKaW5kZXggNzI3OTY4MzVhNjY0N2IwMjcyZGVmMjNlZTZjMjBiMTgxMzlhOTE2NS4uZTgwZmI1
MGM4YTUzMjgxMDA0ZDVlNDk3MGY0ZTA3ZmFlYmMwMTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCkBAIC0zMiw4ICsz
Miw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1OYXRpdmVXZWJUb3VjaEV2ZW50OjpOYXRp
dmVXZWJUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlz
dCogcG9pbnRzLCBjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMsIGNvbnN0IFdlYkNvcmU6
OkFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFu
c2Zvcm0mIHRvRGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1wKQotICAgIDogV2ViVG91Y2hF
dmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBt
b2RpZmllcnMsIHRvV2ViQ29udGVudCwgdG9EZXZpY2VTY3JlZW4sIHRpbWVzdGFtcCkpCitOYXRp
dmVXZWJUb3VjaEV2ZW50OjpOYXRpdmVXZWJUb3VjaEV2ZW50KEVGTFRvdWNoRXZlbnQqIHRvdWNo
RXZlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50KQorICAg
IDogV2ViVG91Y2hFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQodG91
Y2hFdmVudCwgdG9XZWJDb250ZW50KSkKKyAgICAsIG1fbmF0aXZlRXZlbnQodG91Y2hFdmVudCkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZh
Y3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3Bw
CmluZGV4IDRlMjFhZTk5NjFiNDFmNmMzZWY2OTcyYzcxMmJlZmFkMjVhYTMxZmYuLjk5OWRjYjU4
MGI4NmMyZDcxMWM1NGRjMTA0ZGI2MDk3NGYwZjQ2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTMxLDYgKzMxLDEzIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJh
ci5oPgogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJFRkxUb3VjaEV2ZW50
LmgiCisjaW5jbHVkZSAiRUZMVG91Y2hQb2ludC5oIgorI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5
LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjA1LDU3ICsyMTIsNzAgQEAgV2ViS2V5
Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3Qg
RXZhc19FdmVudF9LZXlfVXAKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1zdGF0aWMg
aW5saW5lIFdlYkV2ZW50OjpUeXBlIHR5cGVGb3JUb3VjaEV2ZW50KEV3a19Ub3VjaF9FdmVudF9U
eXBlIHR5cGUpCitzdGF0aWMgaW5saW5lIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQb2lu
dFN0YXRlIHRvV2ViUGxhdGZvcm1Ub3VjaFBvaW50U3RhdGUoV0tUb3VjaFBvaW50U3RhdGUgc3Rh
dGUpCiB7Ci0gICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNIX1NUQVJUKQorICAgIHN3aXRjaCAoc3Rh
dGUpIHsKKyAgICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQ6CisgICAgICAg
IHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQ7CisgICAgY2FzZSBr
V0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkOgorICAgICAgICByZXR1cm4gV2ViUGxhdGZvcm1U
b3VjaFBvaW50OjpUb3VjaE1vdmVkOworICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQ
cmVzc2VkOgorICAgICAgICByZXR1cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNz
ZWQ7CisgICAgY2FzZSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFN0YXRpb25hcnk6CisgICAgICAg
IHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKKyAgICBjYXNl
IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoQ2FuY2VsbGVkOgorICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2VsbGVkOworICAgIH0KK30K
Kworc3RhdGljIGlubGluZSBXZWJFdmVudDo6VHlwZSB0b1dlYkV2ZW50VHlwZShXS0V2ZW50VHlw
ZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Uga1dLRXZlbnRUeXBlVG91
Y2hTdGFydDoKICAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaFN0YXJ0OwotICAgIGlmICh0
eXBlID09IEVXS19UT1VDSF9NT1ZFKQorICAgIGNhc2Uga1dLRXZlbnRUeXBlVG91Y2hNb3ZlOgog
ICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoTW92ZTsKLSAgICBpZiAodHlwZSA9PSBFV0tf
VE9VQ0hfRU5EKQorICAgIGNhc2Uga1dLRXZlbnRUeXBlVG91Y2hFbmQ6CiAgICAgICAgIHJldHVy
biBXZWJFdmVudDo6VG91Y2hFbmQ7Ci0gICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNIX0NBTkNFTCkK
KyAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoQ2FuY2VsOgogICAgICAgICByZXR1cm4gV2ViRXZl
bnQ6OlRvdWNoQ2FuY2VsOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBXZWJFdmVudDo6
Tm9UeXBlOworICAgIH0KIAotICAgIHJldHVybiBXZWJFdmVudDo6Tm9UeXBlOwogfQogCi1XZWJU
b3VjaEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hf
RXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2Rp
ZmllciogbW9kaWZpZXJzLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29udGVudCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVlbiwgZG91YmxlIHRpbWVzdGFtcCkKK3N0
YXRpYyBpbmxpbmUgV2ViRXZlbnQ6Ok1vZGlmaWVycyB0b1dlYkV2ZW50TW9kaWZpZXJzKHVuc2ln
bmVkIG1vZGlmaWVycykKIHsKKyAgICB1bnNpZ25lZCByZXN1bHQgPSAwOworCisgICAgaWYgKG1v
ZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXkpCisgICAgICAgIHJlc3VsdCB8PSBX
ZWJFdmVudDo6U2hpZnRLZXk7CisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJz
Q29udHJvbEtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpDb250cm9sS2V5OworICAg
IGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc0FsdEtleSkKKyAgICAgICAgcmVzdWx0
IHw9IFdlYkV2ZW50OjpBbHRLZXk7CisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZp
ZXJzTWV0YUtleSkKKyAgICAgICAgcmVzdWx0IHw9IFdlYkV2ZW50OjpNZXRhS2V5OworCisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFdlYkV2ZW50OjpNb2RpZmllcnM+KHJlc3VsdCk7Cit9CisKK1dl
YlRvdWNoRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IEVG
TFRvdWNoRXZlbnQqIGV2ZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29udGVudCkK
K3sKKyAgICBJbW11dGFibGVBcnJheSogdG91Y2hQb2ludHNBcnJheSA9IHRvSW1wbChldmVudC0+
dG91Y2hQb2ludHMoKSk7CisgICAgc2l6ZV90IHNpemUgPSB0b3VjaFBvaW50c0FycmF5LT5zaXpl
KCk7CisKICAgICBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50PiB0b3VjaFBvaW50czsKLSAg
ICB0b3VjaFBvaW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVpbmFfbGlzdF9jb3VudChwb2lu
dHMpKTsKLQotICAgIGNvbnN0IEVpbmFfTGlzdCogbGlzdDsKLSAgICB2b2lkKiBpdGVtOwotICAg
IEVJTkFfTElTVF9GT1JFQUNIKHBvaW50cywgbGlzdCwgaXRlbSkgewotICAgICAgICBFd2tfVG91
Y2hfUG9pbnQqIHBvaW50ID0gc3RhdGljX2Nhc3Q8RXdrX1RvdWNoX1BvaW50Kj4oaXRlbSk7Ci0K
LSAgICAgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBvaW50U3RhdGUgc3RhdGU7Ci0g
ICAgICAgIHN3aXRjaCAocG9pbnQtPnN0YXRlKSB7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9Q
T0lOVF9VUDoKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3Vj
aFJlbGVhc2VkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9Q
T0lOVF9NT1ZFOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoTW92ZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFVkFTX1RPVUNIX1BP
SU5UX0RPV046Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91
Y2hQcmVzc2VkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9Q
T0lOVF9TVElMTDoKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFN0YXRpb25hcnk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFVkFTX1RP
VUNIX1BPSU5UX0NBTkNFTDoKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaENhbmNlbGxlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIEludFBvaW50IHBvcyhwb2ludC0+eCwgcG9pbnQtPnkp
OwotICAgICAgICB0b3VjaFBvaW50cy51bmNoZWNrZWRBcHBlbmQoV2ViUGxhdGZvcm1Ub3VjaFBv
aW50KHBvaW50LT5pZCwgc3RhdGUsIHRvRGV2aWNlU2NyZWVuLm1hcFBvaW50KHBvcyksIHRvV2Vi
Q29udGVudC5tYXBQb2ludChwb3MpKSk7CisgICAgdG91Y2hQb2ludHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShzaXplKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
CisgICAgICAgIGlmIChFRkxUb3VjaFBvaW50KiBwb2ludCA9IHRvdWNoUG9pbnRzQXJyYXktPmF0
PEVGTFRvdWNoUG9pbnQ+KGkpKQorICAgICAgICAgICAgdG91Y2hQb2ludHMudW5jaGVja2VkQXBw
ZW5kKFdlYlBsYXRmb3JtVG91Y2hQb2ludChwb2ludC0+aWQoKSwgdG9XZWJQbGF0Zm9ybVRvdWNo
UG9pbnRTdGF0ZShwb2ludC0+c3RhdGUoKSksIHRvSW50UG9pbnQocG9pbnQtPnNjcmVlblBvc2l0
aW9uKCkpLCB0b1dlYkNvbnRlbnQubWFwUG9pbnQodG9JbnRQb2ludChwb2ludC0+cG9zaXRpb24o
KSkpLCB0b0ludFNpemUocG9pbnQtPnJhZGl1cygpKSwgcG9pbnQtPnJvdGF0aW9uQW5nbGUoKSwg
cG9pbnQtPmZvcmNlKCkpKTsKICAgICB9CiAKLSAgICByZXR1cm4gV2ViVG91Y2hFdmVudCh0eXBl
Rm9yVG91Y2hFdmVudCh0eXBlKSwgdG91Y2hQb2ludHMsIG1vZGlmaWVyc0ZvckV2ZW50KG1vZGlm
aWVycyksIHRpbWVzdGFtcCk7CisgICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQodG9XZWJFdmVudFR5
cGUoZXZlbnQtPmV2ZW50VHlwZSgpKSwgdG91Y2hQb2ludHMsIHRvV2ViRXZlbnRNb2RpZmllcnMo
ZXZlbnQtPm1vZGlmaWVycygpKSwgZXZlbnQtPnRpbWVzdGFtcCgpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaAppbmRleCBlNDQ0ZGIy
OWQ1MjM4NDAyMjA0MWU1ZGI4ZDI0NDBjMzBkODIzZTgwLi5mYmY3ZGI5ZTgwYjAzYTFlZjQyNmZj
ZTJlYjU2ZWMzMDM0NDkwODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZs
L1dlYkV2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZl
bnRGYWN0b3J5LmgKQEAgLTI3LDEyICsyNywxNSBAQAogI2RlZmluZSBXZWJFdmVudEZhY3Rvcnlf
aAogCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKLSNpbmNsdWRlICJld2tfdG91Y2guaCIKICNpbmNs
dWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgRUZMVG91
Y2hFdmVudDsKKyNlbmRpZgorCiBjbGFzcyBXZWJFdmVudEZhY3RvcnkgewogcHVibGljOgogICAg
IHN0YXRpYyBXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoY29uc3QgRXZhc19FdmVu
dF9Nb3VzZV9Eb3duKiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtJik7CkBAIC00Miw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNf
RXZlbnRfS2V5X0Rvd24qKTsKICAgICBzdGF0aWMgV2ViS2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJL
ZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwKik7CiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKLSAgICBzdGF0aWMgV2ViVG91Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50KEV3
a19Ub3VjaF9FdmVudF9UeXBlLCBjb25zdCBFaW5hX0xpc3QqLCBjb25zdCBFdmFzX01vZGlmaWVy
KiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6QWZmaW5l
VHJhbnNmb3JtJiwgZG91YmxlIHRpbWVzdGFtcCk7CisgICAgc3RhdGljIFdlYlRvdWNoRXZlbnQg
Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBFRkxUb3VjaEV2ZW50KiwgY29uc3QgV2ViQ29yZTo6
QWZmaW5lVHJhbnNmb3JtJik7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oCmluZGV4IGQzYmNhOTI2NTc3Mjc4MjVj
ZmExNmYyMjE1MjBiYzEwMzZlYmU5M2IuLjczMTJkNjM1YjIyN2I2OGFhMDNjMzJmYWYxNTM4MmMz
MWE0ZmI1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tBUElDYXN0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S0FQSUNhc3RFZmwuaApAQCAtMzcsNiArMzcsMTQgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLVmll
d1JlZiwgV2ViVmlldykKIFdLX0FERF9BUElfTUFQUElORyhXS1BvcHVwSXRlbVJlZiwgV2ViUG9w
dXBJdGVtRWZsKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUG9wdXBNZW51TGlzdGVuZXJSZWYsIFdl
YlBvcHVwTWVudUxpc3RlbmVyRWZsKQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNz
IEVGTFRvdWNoRXZlbnQ7CitjbGFzcyBFRkxUb3VjaFBvaW50OworCitXS19BRERfQVBJX01BUFBJ
TkcoV0tUb3VjaEV2ZW50UmVmLCBFRkxUb3VjaEV2ZW50KQorV0tfQUREX0FQSV9NQVBQSU5HKFdL
VG91Y2hQb2ludFJlZiwgRUZMVG91Y2hQb2ludCkKKyNlbmRpZgorCiAvLyBFbnVtIGNvbnZlcnNp
b25zLgogaW5saW5lIFdLUG9wdXBJdGVtVGV4dERpcmVjdGlvbiB0b0FQSShXZWJDb3JlOjpUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLRXZlbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjY2Y2NGFmMDk1OWZjNjNkYjM1
YzdhOTIyZWRmZjY4N2YyMDQ2MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLRXZlbnRF
ZmwuaCIKKworI2luY2x1ZGUgIkVGTFRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJFRkxUb3VjaFBv
aW50LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKKyNpbmNsdWRlICJXZWJFdmVudC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitX
S1RvdWNoUG9pbnRSZWYgV0tUb3VjaFBvaW50Q3JlYXRlKGludCBpZCwgV0tQb2ludCBwb3NpdGlv
biwgV0tQb2ludCBzY3JlZW5Qb3NpdGlvbiwgV0tUb3VjaFBvaW50U3RhdGUgc3RhdGUsIFdLU2l6
ZSByYWRpdXMsIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKQoreworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgcmV0dXJuIHRvQVBJKEVGTFRvdWNoUG9pbnQ6OmNyZWF0ZShp
ZCwgc3RhdGUsIHNjcmVlblBvc2l0aW9uLCBwb3NpdGlvbiwgcmFkaXVzLCByb3RhdGlvbkFuZ2xl
LCBmb3JjZSkubGVha1JlZigpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlkKTsKKyAgICBV
TlVTRURfUEFSQU0ocG9zaXRpb24pOworICAgIFVOVVNFRF9QQVJBTShzY3JlZW5Qb3NpdGlvbik7
CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0ocmFkaXVzKTsKKyAg
ICBVTlVTRURfUEFSQU0ocm90YXRpb25BbmdsZSk7CisgICAgVU5VU0VEX1BBUkFNKGZvcmNlKTsK
KyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS1RvdWNoRXZlbnRSZWYgV0tUb3VjaEV2ZW50
Q3JlYXRlKFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYgd2tUb3VjaFBvaW50cywgV0tFdmVu
dE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCit7CisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKKyAgICByZXR1cm4gdG9BUEkoRUZMVG91Y2hFdmVudDo6Y3JlYXRlKHR5cGUs
IHdrVG91Y2hQb2ludHMsIG1vZGlmaWVycywgdGltZXN0YW1wKS5sZWFrUmVmKCkpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0odHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKHdrVG91Y2hQb2ludHMp
OworICAgIFVOVVNFRF9QQVJBTShtb2RpZmllcnMpOworICAgIFVOVVNFRF9QQVJBTSh0aW1lc3Rh
bXApOworICAgIHJldHVybiAwOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzMTRlZGUxNjU4MjE2NWU2
OWM2NzIzMzUyMTc4ZThjNzI5MjY2N2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tFdmVudEVmbF9o
CisjZGVmaW5lIFdLRXZlbnRFZmxfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0V2ZW50Lmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0
ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSBXS0V2ZW50VHlwZSB7CisgICAga1dLRXZlbnRUeXBl
Tm9UeXBlID0gLTEsCisgICAga1dLRXZlbnRUeXBlVG91Y2hTdGFydCwKKyAgICBrV0tFdmVudFR5
cGVUb3VjaE1vdmUsCisgICAga1dLRXZlbnRUeXBlVG91Y2hFbmQsCisgICAga1dLRXZlbnRUeXBl
VG91Y2hDYW5jZWwKK307Cit0eXBlZGVmIGVudW0gV0tFdmVudFR5cGUgV0tFdmVudFR5cGU7CisK
K2VudW0gV0tUb3VjaFBvaW50U3RhdGUgeworICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUmVs
ZWFzZWQsCisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQcmVzc2VkLAorICAgIGtXS1RvdWNo
UG9pbnRTdGF0ZVRvdWNoTW92ZWQsCisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hTdGF0aW9u
YXJ5LAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoQ2FuY2VsbGVkCit9OwordHlwZWRlZiBl
bnVtIFdLVG91Y2hQb2ludFN0YXRlIFdLVG91Y2hQb2ludFN0YXRlOworCitXS19FWFBPUlQgV0tU
b3VjaFBvaW50UmVmIFdLVG91Y2hQb2ludENyZWF0ZShpbnQgaWQsIFdLUG9pbnQgcG9zaXRpb24s
IFdLUG9pbnQgc2NyZWVuUG9zaXRpb24sIFdLVG91Y2hQb2ludFN0YXRlLCBXS1NpemUgcmFkaXVz
LCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSk7CitXS19FWFBPUlQgV0tUb3VjaEV2
ZW50UmVmIFdLVG91Y2hFdmVudENyZWF0ZShXS0V2ZW50VHlwZSwgV0tBcnJheVJlZiwgV0tFdmVu
dE1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCisKKyNlbmRpZiAvKiBXS0V2ZW50RWZsX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAppbmRleCA5ZGQ2OTExMTc5YmRlNWEzNzJkYjli
ZTQ1N2Q1ZjBjYmYxNjFkN2JiLi4zOThjYzdmNWIyZTk2NWFjYTRlMzc0MDYxY2EzZWJhM2M3YjZm
MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3Bw
CkBAIC0xNDgsMyArMTQ4LDEzIEBAIFdLSW1hZ2VSZWYgV0tWaWV3Q3JlYXRlU25hcHNob3QoV0tW
aWV3UmVmIHZpZXdSZWYpCiAgICAgRXdrVmlldyogZXdrVmlldyA9IHRvRXdrVmlldyh0b0ltcGwo
dmlld1JlZiktPmV2YXNPYmplY3QoKSk7CiAgICAgcmV0dXJuIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fp
cm9TdXJmYWNlKGV3a1ZpZXctPnRha2VTbmFwc2hvdCgpLmdldCgpLCAwIC8qIG9wdGlvbnMgKi8p
OwogfQorCit2b2lkIFdLVmlld1NlbmRUb3VjaEV2ZW50KFdLVmlld1JlZiB2aWV3UmVmLCBXS1Rv
dWNoRXZlbnRSZWYgdG91Y2hFdmVudFJlZikKK3sKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgIHRvSW1wbCh2aWV3UmVmKS0+c2VuZFRvdWNoRXZlbnQodG9JbXBsKHRvdWNoRXZlbnRSZWYp
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZpZXdSZWYpOworICAgIFVOVVNFRF9QQVJBTSh0
b3VjaEV2ZW50UmVmKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tWaWV3LmgKaW5kZXggYTcwOWI0ODhhODAzYzUzN2NkZTMwY2ExNzE4MzA5OTk5Nzlj
ZGZmYi4uNmY5ZWQwY2UwM2FjYzYwNjA1ZjI2NGUxNjI0MWFmOWEyNzQwMThmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCkBAIC05Myw2ICs5Myw4IEBA
IFdLX0VYUE9SVCBFdmFzX09iamVjdCogV0tWaWV3R2V0RXZhc09iamVjdChXS1ZpZXdSZWYpOwog
CiBXS19FWFBPUlQgV0tJbWFnZVJlZiBXS1ZpZXdDcmVhdGVTbmFwc2hvdChXS1ZpZXdSZWYpOwog
CitXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZW5kVG91Y2hFdmVudChXS1ZpZXdSZWYsIFdLVG91Y2hF
dmVudFJlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4IDA3ZDcyNjZiODRmOWFmZTA1
Y2I5MTY4YWJkYzIwMzU1YTVhYWMyMWEuLjIzOWQ4NWE2YWE4YzdhNTU3OTZjYTczNjFkM2NhMzUw
OGEyNDU3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcu
Y3BwCkBAIC0zNiw3ICszNiw5IEBACiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbC5oIgogI2luY2x1ZGUgIlNuYXBzaG90SW1hZ2VHTC5oIgogI2luY2x1ZGUgIlZpZXdD
bGllbnRFZmwuaCIKKyNpbmNsdWRlICJXS0FycmF5LmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5
LmgiCisjaW5jbHVkZSAiV0tFdmVudEVmbC5oIgogI2luY2x1ZGUgIldLR2VvbWV0cnkuaCIKICNp
bmNsdWRlICJXS051bWJlci5oIgogI2luY2x1ZGUgIldLUGFnZUdyb3VwLmgiCkBAIC02OTksOSAr
NzAxLDUxIEBAIHZvaWQgRXdrVmlldzo6c2V0TW91c2VFdmVudHNFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitzdGF0aWMgV0tUb3VjaFBvaW50U3Rh
dGUgdG9XS1RvdWNoUG9pbnRTdGF0ZShFdmFzX1RvdWNoX1BvaW50X1N0YXRlIHN0YXRlKQorewor
ICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfVVA6CisgICAg
ICAgIHJldHVybiBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFJlbGVhc2VkOworICAgIGNhc2UgRVZB
U19UT1VDSF9QT0lOVF9NT1ZFOgorICAgICAgICByZXR1cm4ga1dLVG91Y2hQb2ludFN0YXRlVG91
Y2hNb3ZlZDsKKyAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfRE9XTjoKKyAgICAgICAgcmV0dXJu
IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3NlZDsKKyAgICBjYXNlIEVWQVNfVE9VQ0hfUE9J
TlRfU1RJTEw6CisgICAgICAgIHJldHVybiBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFN0YXRpb25h
cnk7CisgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX0NBTkNFTDoKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ7CisgICAgfQorfQor
CitzdGF0aWMgV0tFdmVudE1vZGlmaWVycyB0b1dLRXZlbnRNb2RpZmllcnMoY29uc3QgRXZhc19N
b2RpZmllciogbW9kaWZpZXJzKQoreworICAgIFdLRXZlbnRNb2RpZmllcnMgd2tNb2RpZmllcnMg
PSAwOworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiU2hpZnQi
KSkKKyAgICAgICAgd2tNb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleTsKKyAg
ICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIkNvbnRyb2wiKSkKKyAg
ICAgICAgd2tNb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNDb250cm9sS2V5OworICAgIGlm
IChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiQWx0IikpCisgICAgICAgIHdr
TW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5OworICAgIGlmIChldmFzX2tleV9t
b2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiTWV0YSIpKQorICAgICAgICB3a01vZGlmaWVycyB8
PSBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXk7CisKKyAgICByZXR1cm4gd2tNb2RpZmllcnM7Cit9
CisKIHZvaWQgRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlw
ZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVy
cykKIHsKLSAgICBwYWdlKCktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudCh0
eXBlLCBwb2ludHMsIG1vZGlmaWVycywgd2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2NlbmUoKSwg
dHJhbnNmb3JtVG9TY3JlZW4oKSwgZWNvcmVfdGltZV9nZXQoKSkpOworICAgIGNvbnN0IHVuc2ln
bmVkIGNvdW50ID0gZWluYV9saXN0X2NvdW50KHBvaW50cyk7CisgICAgT3duQXJyYXlQdHI8V0tU
eXBlUmVmPiB0b3VjaFBvaW50cyA9IGFkb3B0QXJyYXlQdHIobmV3IFdLVHlwZVJlZltjb3VudF0p
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIEV3
a19Ub3VjaF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihlaW5h
X2xpc3RfbnRoKHBvaW50cywgaSkpOworICAgICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tihwb2ludCk7CisgICAgICAgIEludFBvaW50IHBvc2l0aW9uKHBvaW50LT54LCBwb2ludC0+eSk7
CisgICAgICAgIHRvdWNoUG9pbnRzW2ldID0gV0tUb3VjaFBvaW50Q3JlYXRlKHBvaW50LT5pZCwg
dG9BUEkoSW50UG9pbnQocG9zaXRpb24pKSwgdG9BUEkodHJhbnNmb3JtVG9TY3JlZW4oKS5tYXBQ
b2ludChwb3NpdGlvbikpLCB0b1dLVG91Y2hQb2ludFN0YXRlKHBvaW50LT5zdGF0ZSksIFdLU2l6
ZU1ha2UoMCwgMCksIDAsIDApOworICAgIH0KKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3
a1RvdWNoUG9pbnRzKEFkb3B0V0ssIFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyh0b3VjaFBv
aW50cy5nZXQoKSwgY291bnQpKTsKKworICAgIFdLVmlld1NlbmRUb3VjaEV2ZW50KHdrVmlldygp
LCBhZG9wdFdLKFdLVG91Y2hFdmVudENyZWF0ZShzdGF0aWNfY2FzdDxXS0V2ZW50VHlwZT4odHlw
ZSksIHdrVG91Y2hQb2ludHMuZ2V0KCksIHRvV0tFdmVudE1vZGlmaWVycyhtb2RpZmllcnMpLCBl
Y29yZV90aW1lX2dldCgpKSkuZ2V0KCkpOwogfQogCiB2b2lkIEV3a1ZpZXc6OnNldFRvdWNoRXZl
bnRzRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC0xMjI1LDIwICsxMjY5LDE4IEBAIHZvaWQgRXdr
Vmlldzo6ZmVlZFRvdWNoRXZlbnRzKEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUpCiAgICAgaWYg
KCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRWluYV9MaXN0KiBwb2ludHMgPSAwOwor
ICAgIE93bkFycmF5UHRyPFdLVHlwZVJlZj4gdG91Y2hQb2ludHMgPSBhZG9wdEFycmF5UHRyKG5l
dyBXS1R5cGVSZWZbY291bnRdKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgewotICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHBvaW50ID0gbmV3IEV3a19Ub3VjaF9Q
b2ludDsKLSAgICAgICAgcG9pbnQtPmlkID0gZXZhc190b3VjaF9wb2ludF9saXN0X250aF9pZF9n
ZXQoc2QtPmJhc2UuZXZhcywgaSk7Ci0gICAgICAgIGV2YXNfdG91Y2hfcG9pbnRfbGlzdF9udGhf
eHlfZ2V0KHNkLT5iYXNlLmV2YXMsIGksICZwb2ludC0+eCwgJnBvaW50LT55KTsKLSAgICAgICAg
cG9pbnQtPnN0YXRlID0gZXZhc190b3VjaF9wb2ludF9saXN0X250aF9zdGF0ZV9nZXQoc2QtPmJh
c2UuZXZhcywgaSk7Ci0gICAgICAgIHBvaW50cyA9IGVpbmFfbGlzdF9hcHBlbmQocG9pbnRzLCBw
b2ludCk7CisgICAgICAgIGludCBpZCA9IGV2YXNfdG91Y2hfcG9pbnRfbGlzdF9udGhfaWRfZ2V0
KHNkLT5iYXNlLmV2YXMsIGkpOworICAgICAgICBpbnQgeCwgeTsKKyAgICAgICAgZXZhc190b3Vj
aF9wb2ludF9saXN0X250aF94eV9nZXQoc2QtPmJhc2UuZXZhcywgaSwgJngsICZ5KTsKKyAgICAg
ICAgRXZhc19Ub3VjaF9Qb2ludF9TdGF0ZSBzdGF0ZSA9IGV2YXNfdG91Y2hfcG9pbnRfbGlzdF9u
dGhfc3RhdGVfZ2V0KHNkLT5iYXNlLmV2YXMsIGkpOworICAgICAgICBJbnRQb2ludCBwb3NpdGlv
bih4LCB5KTsKKyAgICAgICAgdG91Y2hQb2ludHNbaV0gPSBXS1RvdWNoUG9pbnRDcmVhdGUoaWQs
IHRvQVBJKEludFBvaW50KHBvc2l0aW9uKSksIHRvQVBJKHRyYW5zZm9ybVRvU2NyZWVuKCkubWFw
UG9pbnQocG9zaXRpb24pKSwgdG9XS1RvdWNoUG9pbnRTdGF0ZShzdGF0ZSksIFdLU2l6ZU1ha2Uo
MCwgMCksIDAsIDApOwogICAgIH0KKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1RvdWNo
UG9pbnRzKEFkb3B0V0ssIFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyh0b3VjaFBvaW50cy5n
ZXQoKSwgY291bnQpKTsKIAotICAgIGZlZWRUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgZXZhc19r
ZXlfbW9kaWZpZXJfZ2V0KHNkLT5iYXNlLmV2YXMpKTsKLQotICAgIHZvaWQqIGRhdGE7Ci0gICAg
RUlOQV9MSVNUX0ZSRUUocG9pbnRzLCBkYXRhKQotICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8
RXdrX1RvdWNoX1BvaW50Kj4oZGF0YSk7CisgICAgV0tWaWV3U2VuZFRvdWNoRXZlbnQod2tWaWV3
KCksIGFkb3B0V0soV0tUb3VjaEV2ZW50Q3JlYXRlKHN0YXRpY19jYXN0PFdLRXZlbnRUeXBlPih0
eXBlKSwgd2tUb3VjaFBvaW50cy5nZXQoKSwgdG9XS0V2ZW50TW9kaWZpZXJzKGV2YXNfa2V5X21v
ZGlmaWVyX2dldChzZC0+YmFzZS5ldmFzKSksIGVjb3JlX3RpbWVfZ2V0KCkpKS5nZXQoKSk7CiB9
CiAKIHZvaWQgRXdrVmlldzo6aGFuZGxlVG91Y2hEb3duKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMq
IC8qIGNhbnZhcyAqLywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIC8qIGV2ZW50SW5mbyAq
LykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRUZMVG91Y2hFdmVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0VGTFRvdWNoRXZlbnQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYzMGQ0YjUzOTNkZTE5ZjU2NjFiMGE1YjU1ZjE5YmY0ODNlYTg1MmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0VGTFRvdWNoRXZlbnQu
Y3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBF
bGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkVGTFRvdWNoRXZlbnQuaCIKKworI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitFRkxUb3VjaEV2ZW50OjpFRkxUb3VjaEV2
ZW50KFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMsIFdLRXZlbnRNb2Rp
ZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKQorICAgIDogbV9ldmVudFR5cGUodHlw
ZSkKKyAgICAsIG1fdG91Y2hQb2ludHModG91Y2hQb2ludHMpCisgICAgLCBtX21vZGlmaWVycyht
b2RpZmllcnMpCisgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3RhbXApCit7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRUZMVG91Y2hFdmVudC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FRkxUb3VjaEV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk2ZjI4
NzYxN2E0NWIyOThhOGZiOGZmZTZkNjI0NzhiZjdlMzY3NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRUZMVG91Y2hFdmVudC5oCkBAIC0wLDAgKzEsNjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFRkxUb3VjaEV2ZW50X2gKKyNkZWZp
bmUgRUZMVG91Y2hFdmVudF9oCisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCisjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV0tBcnJheS5oIgorI2luY2x1ZGUgIldLRXZlbnRF
ZmwuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBFRkxUb3VjaEV2ZW50IDogcHVibGlj
IEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IEFQSU9iamVjdDo6VHlwZSBB
UElUeXBlID0gVHlwZVRvdWNoRXZlbnQ7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFRkxUb3Vj
aEV2ZW50PiBjcmVhdGUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cywg
V0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVGTFRvdWNoRXZlbnQodHlwZSwgdG91Y2hQb2ludHMs
IG1vZGlmaWVycywgdGltZXN0YW1wKSk7CisgICAgfQorCisgICAgV0tFdmVudFR5cGUgZXZlbnRU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFR5cGU7IH0KKyAgICBXS0FycmF5UmVmIHRvdWNo
UG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaFBvaW50cy5nZXQoKTsgfQorICAgIFdLRXZl
bnRNb2RpZmllcnMgbW9kaWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnM7IH0KKyAg
ICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KKworcHJp
dmF0ZToKKyAgICBFRkxUb3VjaEV2ZW50KFdLRXZlbnRUeXBlLCBXS0FycmF5UmVmLCBXS0V2ZW50
TW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKKworICAgIHZpcnR1YWwgQVBJT2JqZWN0OjpU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBXS0V2ZW50VHlwZSBt
X2V2ZW50VHlwZTsKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBtX3RvdWNoUG9pbnRzOwor
ICAgIFdLRXZlbnRNb2RpZmllcnMgbV9tb2RpZmllcnM7CisgICAgZG91YmxlIG1fdGltZXN0YW1w
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorCisjZW5kaWYgLyogRUZMVG91Y2hFdmVudF9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0VGTFRvdWNoUG9pbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9FRkxUb3VjaFBvaW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTQ1MjRiZDJk
NmM3ZjU3M2Q0M2YyNGEwNjEwODI1YzM2YmJjZWJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FRkxUb3VjaFBvaW50LmNwcApAQCAtMCwwICsxLDQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJF
RkxUb3VjaFBvaW50LmgiCisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworRUZMVG91Y2hQb2ludDo6RUZMVG91Y2hQb2ludCh1aW50MzJfdCBpZCwgV0tU
b3VjaFBvaW50U3RhdGUgc3RhdGUsIGNvbnN0IFdLUG9pbnQmIHNjcmVlblBvc2l0aW9uLCBjb25z
dCBXS1BvaW50JiBwb3NpdGlvbiwgY29uc3QgV0tTaXplJiByYWRpdXMsIGZsb2F0IHJvdGF0aW9u
QW5nbGUsIGZsb2F0IGZvcmNlKQorICAgIDogbV9pZChpZCkKKyAgICAsIG1fc3RhdGUoc3RhdGUp
CisgICAgLCBtX3NjcmVlblBvc2l0aW9uKHNjcmVlblBvc2l0aW9uKQorICAgICwgbV9wb3NpdGlv
bihwb3NpdGlvbikKKyAgICAsIG1fcmFkaXVzKHJhZGl1cykKKyAgICAsIG1fcm90YXRpb25Bbmds
ZShyb3RhdGlvbkFuZ2xlKQorICAgICwgbV9mb3JjZShmb3JjZSkKK3sKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FRkxUb3VjaFBvaW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0VGTFRvdWNoUG9pbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGFiYjMw
MzAyMjA4ODI1Yjc5NjA3YjJhYjVmZGJkOTJlZGMzMTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9FRkxUb3VjaFBvaW50LmgKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEVGTFRvdWNoUG9pbnRfaAorI2RlZmlu
ZSBFRkxUb3VjaFBvaW50X2gKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNpbmNsdWRl
ICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXS0FycmF5LmgiCisjaW5jbHVkZSAiV0tFdmVudEVm
bC5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEVGTFRvdWNoUG9pbnQgOiBwdWJsaWMg
QVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgQVBJT2JqZWN0OjpUeXBlIEFQ
SVR5cGUgPSBUeXBlVG91Y2hQb2ludDsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVGTFRvdWNo
UG9pbnQ+IGNyZWF0ZSh1aW50MzJfdCBpZCwgV0tUb3VjaFBvaW50U3RhdGUgc3RhdGUsIGNvbnN0
IFdLUG9pbnQmIHNjcmVlblBvc2l0aW9uLCBjb25zdCBXS1BvaW50JiBwb3NpdGlvbiwgY29uc3Qg
V0tTaXplJiByYWRpdXMsIGZsb2F0IHJvdGF0aW9uQW5nbGUgPSAwLjAsIGZsb2F0IGZvcmNlID0g
MC4wKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFRkxUb3VjaFBvaW50KGlk
LCBzdGF0ZSwgc2NyZWVuUG9zaXRpb24sIHBvc2l0aW9uLCByYWRpdXMsIHJvdGF0aW9uQW5nbGUs
IGZvcmNlKSk7CisgICAgfQorCisgICAgdWludDMyX3QgaWQoKSBjb25zdCB7IHJldHVybiBtX2lk
OyB9CisgICAgV0tUb3VjaFBvaW50U3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
OyB9CisgICAgV0tQb2ludCBzY3JlZW5Qb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVu
UG9zaXRpb247IH0KKyAgICBXS1BvaW50IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbjsgfQorICAgIFdLU2l6ZSByYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3JhZGl1czsgfQor
ICAgIGZsb2F0IHJvdGF0aW9uQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX3JvdGF0aW9uQW5nbGU7
IH0KKyAgICBmbG9hdCBmb3JjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2U7IH0KKworcHJpdmF0
ZToKKyAgICBFRkxUb3VjaFBvaW50KHVpbnQzMl90IGlkLCBXS1RvdWNoUG9pbnRTdGF0ZSwgY29u
c3QgV0tQb2ludCYsIGNvbnN0IFdLUG9pbnQmLCBjb25zdCBXS1NpemUmLCBmbG9hdCByb3RhdGlv
bkFuZ2xlLCBmbG9hdCBmb3JjZSk7CisKKyAgICB2aXJ0dWFsIEFQSU9iamVjdDo6VHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgdWludDMyX3QgbV9pZDsKKyAgICBX
S1RvdWNoUG9pbnRTdGF0ZSBtX3N0YXRlOworICAgIFdLUG9pbnQgbV9zY3JlZW5Qb3NpdGlvbjsK
KyAgICBXS1BvaW50IG1fcG9zaXRpb247CisgICAgV0tTaXplIG1fcmFkaXVzOworICAgIGZsb2F0
IG1fcm90YXRpb25BbmdsZTsKKyAgICBmbG9hdCBtX2ZvcmNlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCisjZW5kaWYgLyog
RUZMVG91Y2hQb2ludF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNw
cAppbmRleCA1YzJiM2JhNDNmYTVmNTI4YjcxMWMxNTJjNWFkZWM5NzlkMjFkNDFlLi5jMGQxMzFm
YzBhMzUyNzc5YjhhZTIzYjViZTdlMzM5ZmEzZDkwMjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViVmlldy5jcHAKQEAgLTQ2LDYgKzQ2LDEwIEBACiAjaW5jbHVkZSAiV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorI2luY2x1ZGUgIkVGTFRvdWNoRXZlbnQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ug
RXdrVmlld0NhbGxiYWNrczsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01MTksNCAr
NTIzLDEyIEBAIHZvaWQgV2ViVmlldzo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKICAg
ICBtX2V3a1ZpZXctPnNjaGVkdWxlVXBkYXRlRGlzcGxheSgpOwogfQogCisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKK3ZvaWQgV2ViVmlldzo6c2VuZFRvdWNoRXZlbnQoRUZMVG91Y2hFdmVudCog
dG91Y2hFdmVudCkKK3sKKyAgICBBU1NFUlQodG91Y2hFdmVudCk7CisgICAgbV9wYWdlLT5oYW5k
bGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQodG91Y2hFdmVudCwgdHJhbnNmb3JtRnJv
bVNjZW5lKCkpKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgKaW5kZXggOWY1ZjZmNDc2NmVhODAwMWZkZTk4Nzk0
MGZjNTJkZDg2YjYyY2E4YS4uM2U1OTU2M2IwNzk3MzNkNTAwZDU1YjRlMTAzNDRhZWUyZDRlMzIy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgKQEAgLTQ2LDYgKzQ2LDEw
IEBAIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgRUZMVG91Y2hFdmVudDsKKyNlbmRp
ZgorCiBjbGFzcyBXZWJWaWV3IDogcHVibGljIEFQSU9iamVjdCwgcHVibGljIFBhZ2VDbGllbnQg
ewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlVmlldzsKQEAg
LTgwLDYgKzg0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGV4aXRGdWxsU2NyZWVuKCk7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdm9pZCBzZW5kVG91Y2hFdmVudChF
RkxUb3VjaEV2ZW50Kik7CisjZW5kaWYKKwogICAgIC8vIFZpZXcgY2xpZW50LgogICAgIHZvaWQg
aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS1ZpZXdDbGllbnQqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193543</attachid>
            <date>2013-03-18 05:54:46 -0700</date>
            <delta_ts>2013-03-18 22:37:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130318215037.patch</filename>
            <type>text/plain</type>
            <size>38859</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjRkMjFjMGVjZmZhZjEx
MDYwZjk3MmU3NjI0YWMzNmQxMjQ3YTcwNy4uMzU1MjQ5OTZkMGI0YjRlZWJhMDc2ZTc3OWU1MDM1
NjZmNDlhYTExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEzLTAzLTE4ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvdWNoIGV2ZW50cyBmb3Igb3VyIHRhcmdldCBw
bGF0Zm9ybXMgZGlmZmVyIChYSW5wdXQyLCBXYXlsYW5kLCBUaXplbikgc28KKyAgICAgICAgZm9y
IHRoZSBFRkwgcG9ydCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZmVlZCBldmVudHMgbWFudWFsbHku
CisKKyAgICAgICAgVG8ga2VlcCBvdXIgY3VycmVudCBBUEkgZm9yIGRlc2t0b3AgRUZML0VubGln
aHRlbm1lbnQgd29ya2luZywgd2UgY29udmVydAorICAgICAgICBvdXIgY3VycmVudGx5IGxpbWl0
ZWQgRUZMIGV2ZW50cyB0byB0aGUgbmV3IEVGTCBzcGVjaWZpYyBDIEV3a1RvdWNoUG9pbnQKKyAg
ICAgICAgYW5kIEV3a1RvdWNoRXZlbnQgdHlwZS4KKworICAgICAgICBFd2tUb3VjaFBvaW50IGFu
ZCBFd2tUb3VjaEV2ZW50IGFyZSBleHBvc2VkIGFzIFdLVG91Y2hQb2ludFJlZiBhbmQKKyAgICAg
ICAgV0tUb3VjaEV2ZW50UmVmLCBzbyB0aGV5IGFyZSBvcGFxdWUgaW4gdGhlIGFwcGxpY2F0aW9u
cy4KKworICAgICAgICBUaGUgV0tWaWV3U2VuZFRvdWNoRXZlbnQgY2FuIGJlIHVzZWQgZm9yIGFu
eSB1c2UtY2FzZSAocGxhdGZvcm0vcHJvZHVjdCkKKyAgICAgICAgbm90IGludm9sdmluZyB0aGUg
RUZMIGV2ZW50cy4KKworICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHdlIG1ha2Ugc3VyZSB0byBh
dm9pZCB1c2luZyBXSzIgaW50ZXJuYWxzIGluIG91ciBFRkwgQVBJCisgICAgICAgIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogU2hhcmVk
L0FQSS9jL2VmbC9XS0Jhc2VFZmwuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6Cisg
ICAgICAgICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKE5hdGl2ZVdl
YlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50OjpuYXRp
dmVFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hF
dmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojp0b1dlYlBsYXRmb3JtVG91Y2hQb2ludFN0YXRlKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OnRvV2ViRXZlbnRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
dG9XZWJFdmVudE1vZGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rv
cnkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJFdmVudEZhY3RvcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHA6IEFkZGVk
LgorICAgICAgICAoV0tUb3VjaFBvaW50Q3JlYXRlKToKKyAgICAgICAgKFdLVG91Y2hFdmVudENy
ZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcDoKKyAgICAgICAgKFdL
Vmlld1NlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAgICAo
dG9XS1RvdWNoUG9pbnRTdGF0ZSk6CisgICAgICAgICh0b1dLRXZlbnRNb2RpZmllcnMpOgorICAg
ICAgICAoRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQpOgorICAgICAgICAoRXdrVmlldzo6ZmVlZFRv
dWNoRXZlbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkV3a1RvdWNoRXZlbnQ6
OkV3a1RvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChFd2tUb3VjaEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6RXdrVG91Y2hFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
RXdrVG91Y2hFdmVudDo6ZXZlbnRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hFdmVu
dDo6dG91Y2hQb2ludHMpOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaEV2ZW50Ojptb2RpZmll
cnMpOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaEV2ZW50Ojp0aW1lc3RhbXApOgorICAgICAg
ICAoV2ViS2l0OjpFd2tUb3VjaEV2ZW50Ojp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZs
L0V3a1RvdWNoUG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OkV3a1RvdWNoUG9pbnQ6OkV3a1RvdWNoUG9pbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvRXdrVG91Y2hQb2ludC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChFd2tUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hQb2ludDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hQb2ludDo6aWQpOgorICAgICAgICAoV2ViS2l0
OjpFd2tUb3VjaFBvaW50OjpzdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkV3a1RvdWNoUG9pbnQ6
OnNjcmVlblBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hQb2ludDo6cG9zaXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaFBvaW50OjpyYWRpdXMpOgorICAgICAgICAo
V2ViS2l0OjpFd2tUb3VjaFBvaW50Ojpyb3RhdGlvbkFuZ2xlKToKKyAgICAgICAgKFdlYktpdDo6
RXdrVG91Y2hQb2ludDo6Zm9yY2UpOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaFBvaW50Ojp0
eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2VuZFRvdWNoRXZlbnQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlZpZXcpOgorCiAyMDEzLTAzLTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBJbnZhbGlkIGNoYXJzZXQgZW5jb2RpbmcgdXNp
bmcgd2hlbiBzdWJzdGl0dXRpbmcgYSBtaXNzcGVsbGVkIHdvcmQgaW4gV2ViS2l0MgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3ODRkY2QyNjY2ODU1ZGM0MDZhMGUwYTM3OWVlNWY2Mjc5
MWQwMzEyLi4zMTcwYWYxMWU1OTk3MjI4ZjY5OTljMWM5MDc1ZjY3NTYxMjg4ZjRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzgsNiArMzgsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQy
X1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy9jYWlyby9XS0ljb25EYXRhYmFzZUNhaXJv
LmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQ
b3B1cEl0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudUxpc3RlbmVy
LmNwcApAQCAtOTAsNiArOTEsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBV
SVByb2Nlc3MvZWZsL0NvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9l
ZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1h
bmFnZXJFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaEV2ZW50LmNwcAorICAgIFVJ
UHJvY2Vzcy9lZmwvRXdrVG91Y2hQb2ludC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0ZpbmRDbGll
bnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcAogICAgIFVJUHJv
Y2Vzcy9lZmwvSW5wdXRNZXRob2RDb250ZXh0RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKaW5kZXggNzJmYmZkMzAzYzAxYzcyYjU1M2JkZjY0NDgy
ZDUyYjRhMmIyYzRkOC4uOWMwN2Y4ZTBjOGM4NjJkODE0NGZhNWI5YjNhMGI5YjNlOGE5NzhiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oCkBAIC0yNyw1
ICsyNyw3IEBACiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpZXcqIFdLVmlld1JlZjsK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUG9wdXBJdGVtKiBXS1BvcHVwSXRlbVJlZjsK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUG9wdXBNZW51TGlzdGVuZXIqIFdLUG9wdXBN
ZW51TGlzdGVuZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1RvdWNoUG9pbnQq
IFdLVG91Y2hQb2ludFJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVG91Y2hFdmVu
dCogV0tUb3VjaEV2ZW50UmVmOwogCiAjZW5kaWYgLyogV0tCYXNlRWZsX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElPYmplY3QuaAppbmRleCA1ZWNlYjU2MjJmM2YwNzE4ODFjZjg1NGNlNTY2NTIwMGIy
ODQ0M2I2Li5hNTc1MGNmZDUxN2YyYzVjZmIzYTJkMmExNzFlYTg4OWIyOGJkYTJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xMzUsNiArMTM1LDEwIEBAIHB1YmxpYzoKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKEVGTCkKICAgICAgICAgVHlwZVBvcHVwTWVudUl0ZW0sCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgVHlwZVRvdWNoUG9pbnQsCisgICAgICAgIFR5cGVU
b3VjaEV2ZW50LAorI2VuZGlmCiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaAppbmRleCBjNjNkMWNmMDcwNWJjYTFlYTU0ZDM4NGYz
ZjBmNWJjODMxMWFkNjJhLi5hNjgwN2E1YmY1NDY2NmEzYmYyYmY0YzkyOGYyYjlmNmE5ZDg2ZTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKQEAgLTMx
LDkgKzMxLDkgQEAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRVG91Y2hFdmVudD4KICNl
bGlmIFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRlICJld2tfdG91Y2guaCIKLSNpbmNsdWRlIDxFdmFz
Lmg+CisjaW5jbHVkZSAiRXdrVG91Y2hFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5l
VHJhbnNmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNDMsMTYgKzQzLDIwIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShRVCkK
ICAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50KiwgY29u
c3QgUVRyYW5zZm9ybSYgZnJvbUl0ZW1UcmFuc2Zvcm0pOwogI2VsaWYgUExBVEZPUk0oRUZMKQot
ICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUsIGNvbnN0IEVpbmFf
TGlzdCosIGNvbnN0IEV2YXNfTW9kaWZpZXIqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zv
cm0mIHRvV2ViQ29udGVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0Rldmlj
ZVNjcmVlbiwgZG91YmxlIHRpbWVzdGFtcCk7CisgICAgTmF0aXZlV2ViVG91Y2hFdmVudChFd2tU
b3VjaEV2ZW50KiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJik7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKFFUKQogICAgIGNvbnN0IFFUb3VjaEV2ZW50KiBuYXRpdmVFdmVudCgpIGNv
bnN0IHsgcmV0dXJuICZtX25hdGl2ZUV2ZW50OyB9CisjZWxpZiBQTEFURk9STShFRkwpCisgICAg
Y29uc3QgRXdrVG91Y2hFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX25hdGl2
ZUV2ZW50LmdldCgpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKICNpZiBQTEFURk9STShRVCkKICAg
ICBjb25zdCBRVG91Y2hFdmVudCBtX25hdGl2ZUV2ZW50OworI2VsaWYgUExBVEZPUk0oRUZMKQor
ICAgIFJlZlB0cjxFd2tUb3VjaEV2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRF
ZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZs
LmNwcAppbmRleCA3Mjc5NjgzNWE2NjQ3YjAyNzJkZWYyM2VlNmMyMGIxODEzOWE5MTY1Li4wZDNi
MDYwNTM0YTNiNzgyMTBhZDk5ZmJiZjM1Y2VmZjcxYWEzYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKQEAgLTMyLDgg
KzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5h
dGl2ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3QgRWluYV9M
aXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29uc3QgV2ViQ29y
ZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApCi0gICAgOiBXZWJUb3Vj
aEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudCh0eXBlLCBwb2ludHMs
IG1vZGlmaWVycywgdG9XZWJDb250ZW50LCB0b0RldmljZVNjcmVlbiwgdGltZXN0YW1wKSkKK05h
dGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoRXdrVG91Y2hFdmVudCogdG91
Y2hFdmVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQpCisg
ICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudCh0
b3VjaEV2ZW50LCB0b1dlYkNvbnRlbnQpKQorICAgICwgbV9uYXRpdmVFdmVudCh0b3VjaEV2ZW50
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50
RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5j
cHAKaW5kZXggNGUyMWFlOTk2MWI0MWY2YzNlZjY5NzJjNzEyYmVmYWQyNWFhMzFmZi4uNDQ2M2Vi
YmQwYTIzMjc0Yzk0OTg4NjcwNWYyNzFiYWZhNzcyOGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAtMzEsNiArMzEsMTMgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xs
YmFyLmg+CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIkV3a1RvdWNoRXZl
bnQuaCIKKyNpbmNsdWRlICJFd2tUb3VjaFBvaW50LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJy
YXkuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMDUsNTcgKzIxMiw3MCBAQCBXZWJL
ZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25z
dCBFdmFzX0V2ZW50X0tleV9VcAogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXN0YXRp
YyBpbmxpbmUgV2ViRXZlbnQ6OlR5cGUgdHlwZUZvclRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50
X1R5cGUgdHlwZSkKK3N0YXRpYyBpbmxpbmUgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFBv
aW50U3RhdGUgdG9XZWJQbGF0Zm9ybVRvdWNoUG9pbnRTdGF0ZShXS1RvdWNoUG9pbnRTdGF0ZSBz
dGF0ZSkKIHsKLSAgICBpZiAodHlwZSA9PSBFV0tfVE9VQ0hfU1RBUlQpCisgICAgc3dpdGNoIChz
dGF0ZSkgeworICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hSZWxlYXNlZDoKKyAgICAg
ICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAgICBjYXNl
IGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoTW92ZWQ6CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7CisgICAgY2FzZSBrV0tUb3VjaFBvaW50U3RhdGVUb3Vj
aFByZXNzZWQ6CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJl
c3NlZDsKKyAgICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoU3RhdGlvbmFyeToKKyAgICAg
ICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OworICAgIGNh
c2Uga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ6CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQ7CisgICAgfQor
fQorCitzdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpUeXBlIHRvV2ViRXZlbnRUeXBlKFdLRXZlbnRU
eXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBrV0tFdmVudFR5cGVU
b3VjaFN0YXJ0OgogICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7Ci0gICAgaWYg
KHR5cGUgPT0gRVdLX1RPVUNIX01PVkUpCisgICAgY2FzZSBrV0tFdmVudFR5cGVUb3VjaE1vdmU6
CiAgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hNb3ZlOwotICAgIGlmICh0eXBlID09IEVX
S19UT1VDSF9FTkQpCisgICAgY2FzZSBrV0tFdmVudFR5cGVUb3VjaEVuZDoKICAgICAgICAgcmV0
dXJuIFdlYkV2ZW50OjpUb3VjaEVuZDsKLSAgICBpZiAodHlwZSA9PSBFV0tfVE9VQ0hfQ0FOQ0VM
KQorICAgIGNhc2Uga1dLRXZlbnRUeXBlVG91Y2hDYW5jZWw6CiAgICAgICAgIHJldHVybiBXZWJF
dmVudDo6VG91Y2hDYW5jZWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFdlYkV2ZW50
OjpOb1R5cGU7CisgICAgfQogCi0gICAgcmV0dXJuIFdlYkV2ZW50OjpOb1R5cGU7CiB9CiAKLVdl
YlRvdWNoRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KEV3a19Ub3Vj
aF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBFdmFzX01v
ZGlmaWVyKiBtb2RpZmllcnMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0YW1wKQor
c3RhdGljIGlubGluZSBXZWJFdmVudDo6TW9kaWZpZXJzIHRvV2ViRXZlbnRNb2RpZmllcnModW5z
aWduZWQgbW9kaWZpZXJzKQogeworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisKKyAgICBpZiAo
bW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSkKKyAgICAgICAgcmVzdWx0IHw9
IFdlYkV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmll
cnNDb250cm9sS2V5KQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6OkNvbnRyb2xLZXk7Cisg
ICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5KQorICAgICAgICByZXN1
bHQgfD0gV2ViRXZlbnQ6OkFsdEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRNb2Rp
ZmllcnNNZXRhS2V5KQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6Ok1ldGFLZXk7CisKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4ocmVzdWx0KTsKK30KKwor
V2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoY29uc3Qg
RXdrVG91Y2hFdmVudCogZXZlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50
KQoreworICAgIEltbXV0YWJsZUFycmF5KiB0b3VjaFBvaW50c0FycmF5ID0gdG9JbXBsKGV2ZW50
LT50b3VjaFBvaW50cygpKTsKKyAgICBzaXplX3Qgc2l6ZSA9IHRvdWNoUG9pbnRzQXJyYXktPnNp
emUoKTsKKwogICAgIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IHRvdWNoUG9pbnRzOwot
ICAgIHRvdWNoUG9pbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZWluYV9saXN0X2NvdW50KHBv
aW50cykpOwotCi0gICAgY29uc3QgRWluYV9MaXN0KiBsaXN0OwotICAgIHZvaWQqIGl0ZW07Ci0g
ICAgRUlOQV9MSVNUX0ZPUkVBQ0gocG9pbnRzLCBsaXN0LCBpdGVtKSB7Ci0gICAgICAgIEV3a19U
b3VjaF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihpdGVtKTsK
LQotICAgICAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0ZSBzdGF0ZTsK
LSAgICAgICAgc3dpdGNoIChwb2ludC0+c3RhdGUpIHsKLSAgICAgICAgY2FzZSBFVkFTX1RPVUNI
X1BPSU5UX1VQOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoUmVsZWFzZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFVkFTX1RPVUNI
X1BPSU5UX01PVkU6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hNb3ZlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hf
UE9JTlRfRE9XTjoKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFByZXNzZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFVkFTX1RPVUNI
X1BPSU5UX1NUSUxMOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6
OlRvdWNoU3RhdGlvbmFyeTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNf
VE9VQ0hfUE9JTlRfQ0FOQ0VMOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoQ2FuY2VsbGVkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgSW50UG9pbnQgcG9zKHBvaW50LT54LCBwb2ludC0+
eSk7Ci0gICAgICAgIHRvdWNoUG9pbnRzLnVuY2hlY2tlZEFwcGVuZChXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQocG9pbnQtPmlkLCBzdGF0ZSwgdG9EZXZpY2VTY3JlZW4ubWFwUG9pbnQocG9zKSwgdG9X
ZWJDb250ZW50Lm1hcFBvaW50KHBvcykpKTsKKyAgICB0b3VjaFBvaW50cy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHNpemUpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgaWYgKEV3a1RvdWNoUG9pbnQqIHBvaW50ID0gdG91Y2hQb2ludHNBcnJheS0+
YXQ8RXdrVG91Y2hQb2ludD4oaSkpCisgICAgICAgICAgICB0b3VjaFBvaW50cy51bmNoZWNrZWRB
cHBlbmQoV2ViUGxhdGZvcm1Ub3VjaFBvaW50KHBvaW50LT5pZCgpLCB0b1dlYlBsYXRmb3JtVG91
Y2hQb2ludFN0YXRlKHBvaW50LT5zdGF0ZSgpKSwgdG9JbnRQb2ludChwb2ludC0+c2NyZWVuUG9z
aXRpb24oKSksIHRvV2ViQ29udGVudC5tYXBQb2ludCh0b0ludFBvaW50KHBvaW50LT5wb3NpdGlv
bigpKSksIHRvSW50U2l6ZShwb2ludC0+cmFkaXVzKCkpLCBwb2ludC0+cm90YXRpb25BbmdsZSgp
LCBwb2ludC0+Zm9yY2UoKSkpOwogICAgIH0KIAotICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHR5
cGVGb3JUb3VjaEV2ZW50KHR5cGUpLCB0b3VjaFBvaW50cywgbW9kaWZpZXJzRm9yRXZlbnQobW9k
aWZpZXJzKSwgdGltZXN0YW1wKTsKKyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCh0b1dlYkV2ZW50
VHlwZShldmVudC0+ZXZlbnRUeXBlKCkpLCB0b3VjaFBvaW50cywgdG9XZWJFdmVudE1vZGlmaWVy
cyhldmVudC0+bW9kaWZpZXJzKCkpLCBldmVudC0+dGltZXN0YW1wKCkpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCmluZGV4IGU0NDRk
YjI5ZDUyMzg0MDIyMDQxZTVkYjhkMjQ0MGMzMGQ4MjNlODAuLjRhOTg5NGU5YWY0NTZiYThmMTUz
MjA2YjBlYjdiN2YzZjQ4YmRiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9l
ZmwvV2ViRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJF
dmVudEZhY3RvcnkuaApAQCAtMjcsMTIgKzI3LDE1IEBACiAjZGVmaW5lIFdlYkV2ZW50RmFjdG9y
eV9oCiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgotI2luY2x1ZGUgImV3a190b3VjaC5oIgogI2lu
Y2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBFd2tU
b3VjaEV2ZW50OworI2VuZGlmCisKIGNsYXNzIFdlYkV2ZW50RmFjdG9yeSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFdlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91c2VFdmVudChjb25zdCBFdmFzX0V2
ZW50X01vdXNlX0Rvd24qLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsKQEAgLTQyLDcgKzQ1LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZh
c19FdmVudF9LZXlfRG93biopOwogICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGNyZWF0ZVdl
YktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAqKTsKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQotICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50IGNyZWF0ZVdlYlRvdWNoRXZlbnQo
RXdrX1RvdWNoX0V2ZW50X1R5cGUsIGNvbnN0IEVpbmFfTGlzdCosIGNvbnN0IEV2YXNfTW9kaWZp
ZXIqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpBZmZp
bmVUcmFuc2Zvcm0mLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBzdGF0aWMgV2ViVG91Y2hFdmVu
dCBjcmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IEV3a1RvdWNoRXZlbnQqLCBjb25zdCBXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm0mKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgKaW5kZXggZDNiY2E5MjY1NzcyNzgy
NWNmYTE2ZjIyMTUyMGJjMTAzNmViZTkzYi4uMzUxYTE5ZmZlNTI3YzEyNThkNWQzYWRkMDk5NTA2
NmQwYzg2MTlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS0FQSUNhc3RFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLQVBJQ2FzdEVmbC5oCkBAIC0zNyw2ICszNywxNCBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tW
aWV3UmVmLCBXZWJWaWV3KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUG9wdXBJdGVtUmVmLCBXZWJQ
b3B1cEl0ZW1FZmwpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiwg
V2ViUG9wdXBNZW51TGlzdGVuZXJFZmwpCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorY2xh
c3MgRXdrVG91Y2hFdmVudDsKK2NsYXNzIEV3a1RvdWNoUG9pbnQ7CisKK1dLX0FERF9BUElfTUFQ
UElORyhXS1RvdWNoRXZlbnRSZWYsIEV3a1RvdWNoRXZlbnQpCitXS19BRERfQVBJX01BUFBJTkco
V0tUb3VjaFBvaW50UmVmLCBFd2tUb3VjaFBvaW50KQorI2VuZGlmCisKIC8vIEVudW0gY29udmVy
c2lvbnMuCiBpbmxpbmUgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uIHRvQVBJKFdlYkNvcmU6OlRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IzMTNlZWM3NzQwNGVhZWRi
MmY1YTg0ZWU4YmYwNTU4ZTMyZTljYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tFdmVu
dEVmbC5oIgorCisjaW5jbHVkZSAiRXdrVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIkV3a1RvdWNo
UG9pbnQuaCIKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgorI2luY2x1ZGUgIldlYkV2ZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K1dLVG91Y2hQb2ludFJlZiBXS1RvdWNoUG9pbnRDcmVhdGUoaW50IGlkLCBXS1BvaW50IHBvc2l0
aW9uLCBXS1BvaW50IHNjcmVlblBvc2l0aW9uLCBXS1RvdWNoUG9pbnRTdGF0ZSBzdGF0ZSwgV0tT
aXplIHJhZGl1cywgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UpCit7CisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKKyAgICByZXR1cm4gdG9BUEkoRXdrVG91Y2hQb2ludDo6Y3JlYXRl
KGlkLCBzdGF0ZSwgc2NyZWVuUG9zaXRpb24sIHBvc2l0aW9uLCByYWRpdXMsIHJvdGF0aW9uQW5n
bGUsIGZvcmNlKS5sZWFrUmVmKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaWQpOworICAg
IFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKHNjcmVlblBvc2l0aW9u
KTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTShyYWRpdXMpOwor
ICAgIFVOVVNFRF9QQVJBTShyb3RhdGlvbkFuZ2xlKTsKKyAgICBVTlVTRURfUEFSQU0oZm9yY2Up
OworICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLVG91Y2hFdmVudFJlZiBXS1RvdWNoRXZl
bnRDcmVhdGUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB3a1RvdWNoUG9pbnRzLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKK3sKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorICAgIHJldHVybiB0b0FQSShFd2tUb3VjaEV2ZW50OjpjcmVhdGUodHlw
ZSwgd2tUb3VjaFBvaW50cywgbW9kaWZpZXJzLCB0aW1lc3RhbXApLmxlYWtSZWYoKSk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsKKyAgICBVTlVTRURfUEFSQU0od2tUb3VjaFBvaW50
cyk7CisgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVycyk7CisgICAgVU5VU0VEX1BBUkFNKHRpbWVz
dGFtcCk7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjMxNGVkZTE2NTgyMTY1
ZTY5YzY3MjMzNTIxNzhlOGM3MjkyNjY3YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDEzIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0V2ZW50RWZs
X2gKKyNkZWZpbmUgV0tFdmVudEVmbF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLRXZlbnQuaD4K
KyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0cnkuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCitlbnVtIFdLRXZlbnRUeXBlIHsKKyAgICBrV0tFdmVudFR5
cGVOb1R5cGUgPSAtMSwKKyAgICBrV0tFdmVudFR5cGVUb3VjaFN0YXJ0LAorICAgIGtXS0V2ZW50
VHlwZVRvdWNoTW92ZSwKKyAgICBrV0tFdmVudFR5cGVUb3VjaEVuZCwKKyAgICBrV0tFdmVudFR5
cGVUb3VjaENhbmNlbAorfTsKK3R5cGVkZWYgZW51bSBXS0V2ZW50VHlwZSBXS0V2ZW50VHlwZTsK
KworZW51bSBXS1RvdWNoUG9pbnRTdGF0ZSB7CisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hS
ZWxlYXNlZCwKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFByZXNzZWQsCisgICAga1dLVG91
Y2hQb2ludFN0YXRlVG91Y2hNb3ZlZCwKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFN0YXRp
b25hcnksCisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQKK307Cit0eXBlZGVm
IGVudW0gV0tUb3VjaFBvaW50U3RhdGUgV0tUb3VjaFBvaW50U3RhdGU7CisKK1dLX0VYUE9SVCBX
S1RvdWNoUG9pbnRSZWYgV0tUb3VjaFBvaW50Q3JlYXRlKGludCBpZCwgV0tQb2ludCBwb3NpdGlv
biwgV0tQb2ludCBzY3JlZW5Qb3NpdGlvbiwgV0tUb3VjaFBvaW50U3RhdGUsIFdLU2l6ZSByYWRp
dXMsIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZvcmNlKTsKK1dLX0VYUE9SVCBXS1RvdWNo
RXZlbnRSZWYgV0tUb3VjaEV2ZW50Q3JlYXRlKFdLRXZlbnRUeXBlLCBXS0FycmF5UmVmLCBXS0V2
ZW50TW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8qIFdLRXZlbnRFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCmluZGV4IGRjZDNlMmM4NWMyYzhmN2ZiYWE0
YzQ5ZTQzOWFmM2M2YmYyZTZiODEuLjU5ZjY4ODQyODJmN2Q1Y2JjZTQzYjY5OGVhZGY1MTg4ODQz
YjIxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5j
cHAKQEAgLTE1MCwzICsxNTAsMTMgQEAgV0tJbWFnZVJlZiBXS1ZpZXdDcmVhdGVTbmFwc2hvdChX
S1ZpZXdSZWYgdmlld1JlZikKICAgICBFd2tWaWV3KiBld2tWaWV3ID0gdG9Fd2tWaWV3KHRvSW1w
bCh2aWV3UmVmKS0+ZXZhc09iamVjdCgpKTsKICAgICByZXR1cm4gV0tJbWFnZUNyZWF0ZUZyb21D
YWlyb1N1cmZhY2UoZXdrVmlldy0+dGFrZVNuYXBzaG90KCkuZ2V0KCksIDAgLyogb3B0aW9ucyAq
Lyk7CiB9CisKK3ZvaWQgV0tWaWV3U2VuZFRvdWNoRXZlbnQoV0tWaWV3UmVmIHZpZXdSZWYsIFdL
VG91Y2hFdmVudFJlZiB0b3VjaEV2ZW50UmVmKQoreworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CisgICAgdG9JbXBsKHZpZXdSZWYpLT5zZW5kVG91Y2hFdmVudCh0b0ltcGwodG91Y2hFdmVudFJl
ZikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odmlld1JlZik7CisgICAgVU5VU0VEX1BBUkFN
KHRvdWNoRXZlbnRSZWYpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1ZpZXcuaAppbmRleCBhNzA5YjQ4OGE4MDNjNTM3Y2RlMzBjYTE3MTgzMDk5OTk3
OWNkZmZiLi42ZjllZDBjZTAzYWNjNjA2MDVmMjY0ZTE2MjQxYWY5YTI3NDAxOGY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKQEAgLTkzLDYgKzkzLDgg
QEAgV0tfRVhQT1JUIEV2YXNfT2JqZWN0KiBXS1ZpZXdHZXRFdmFzT2JqZWN0KFdLVmlld1JlZik7
CiAKIFdLX0VYUE9SVCBXS0ltYWdlUmVmIFdLVmlld0NyZWF0ZVNuYXBzaG90KFdLVmlld1JlZik7
CiAKK1dLX0VYUE9SVCB2b2lkIFdLVmlld1NlbmRUb3VjaEV2ZW50KFdLVmlld1JlZiwgV0tUb3Vj
aEV2ZW50UmVmKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggMTdkY2I2NDNlZmY3YTFm
YWM2NWM5YzFlNzg2MThkMDNiMWU3MTQ4OS4uOGQ2NzQyZWFjMjNjNDIxNzYwZWI1YWFlZThmMzJi
NjdlODc5NGQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
dy5jcHAKQEAgLTM2LDcgKzM2LDkgQEAKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiU25hcHNob3RJbWFnZUdMLmgiCiAjaW5jbHVkZSAiVmll
d0NsaWVudEVmbC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25h
cnkuaCIKKyNpbmNsdWRlICJXS0V2ZW50RWZsLmgiCiAjaW5jbHVkZSAiV0tHZW9tZXRyeS5oIgog
I2luY2x1ZGUgIldLTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tQYWdlR3JvdXAuaCIKQEAgLTcxNCw5
ICs3MTYsNTEgQEAgdm9pZCBFd2tWaWV3OjpzZXRNb3VzZUV2ZW50c0VuYWJsZWQoYm9vbCBlbmFi
bGVkKQogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3N0YXRpYyBXS1RvdWNoUG9pbnRT
dGF0ZSB0b1dLVG91Y2hQb2ludFN0YXRlKEV2YXNfVG91Y2hfUG9pbnRfU3RhdGUgc3RhdGUpCit7
CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9VUDoKKyAg
ICAgICAgcmV0dXJuIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQ7CisgICAgY2FzZSBF
VkFTX1RPVUNIX1BPSU5UX01PVkU6CisgICAgICAgIHJldHVybiBrV0tUb3VjaFBvaW50U3RhdGVU
b3VjaE1vdmVkOworICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9ET1dOOgorICAgICAgICByZXR1
cm4ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hQcmVzc2VkOworICAgIGNhc2UgRVZBU19UT1VDSF9Q
T0lOVF9TVElMTDoKKyAgICAgICAgcmV0dXJuIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoU3RhdGlv
bmFyeTsKKyAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfQ0FOQ0VMOgorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaENhbmNlbGxlZDsKKyAgICB9Cit9
CisKK3N0YXRpYyBXS0V2ZW50TW9kaWZpZXJzIHRvV0tFdmVudE1vZGlmaWVycyhjb25zdCBFdmFz
X01vZGlmaWVyKiBtb2RpZmllcnMpCit7CisgICAgV0tFdmVudE1vZGlmaWVycyB3a01vZGlmaWVy
cyA9IDA7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJTaGlm
dCIpKQorICAgICAgICB3a01vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5Owor
ICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiQ29udHJvbCIpKQor
ICAgICAgICB3a01vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXk7CisgICAg
aWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJBbHQiKSkKKyAgICAgICAg
d2tNb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNBbHRLZXk7CisgICAgaWYgKGV2YXNfa2V5
X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJNZXRhIikpCisgICAgICAgIHdrTW9kaWZpZXJz
IHw9IGtXS0V2ZW50TW9kaWZpZXJzTWV0YUtleTsKKworICAgIHJldHVybiB3a01vZGlmaWVyczsK
K30KKwogdm9pZCBFd2tWaWV3OjpmZWVkVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0
eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZp
ZXJzKQogewotICAgIHBhZ2UoKS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50
KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCB3ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZSgp
LCB0cmFuc2Zvcm1Ub1NjcmVlbigpLCBlY29yZV90aW1lX2dldCgpKSk7CisgICAgY29uc3QgdW5z
aWduZWQgbGVuZ3RoID0gZWluYV9saXN0X2NvdW50KHBvaW50cyk7CisgICAgT3duQXJyYXlQdHI8
V0tUeXBlUmVmPiB0b3VjaFBvaW50cyA9IGFkb3B0QXJyYXlQdHIobmV3IFdLVHlwZVJlZltsZW5n
dGhdKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgRXdrX1RvdWNoX1BvaW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+
KGVpbmFfbGlzdF9udGgocG9pbnRzLCBpKSk7CisgICAgICAgIEFTU0VSVChwb2ludCk7CisgICAg
ICAgIEludFBvaW50IHBvc2l0aW9uKHBvaW50LT54LCBwb2ludC0+eSk7CisgICAgICAgIHRvdWNo
UG9pbnRzW2ldID0gV0tUb3VjaFBvaW50Q3JlYXRlKHBvaW50LT5pZCwgdG9BUEkoSW50UG9pbnQo
cG9zaXRpb24pKSwgdG9BUEkodHJhbnNmb3JtVG9TY3JlZW4oKS5tYXBQb2ludChwb3NpdGlvbikp
LCB0b1dLVG91Y2hQb2ludFN0YXRlKHBvaW50LT5zdGF0ZSksIFdLU2l6ZU1ha2UoMCwgMCksIDAs
IDEpOworICAgIH0KKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1RvdWNoUG9pbnRzKEFk
b3B0V0ssIFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyh0b3VjaFBvaW50cy5nZXQoKSwgbGVu
Z3RoKSk7CisKKyAgICBXS1ZpZXdTZW5kVG91Y2hFdmVudCh3a1ZpZXcoKSwgYWRvcHRXSyhXS1Rv
dWNoRXZlbnRDcmVhdGUoc3RhdGljX2Nhc3Q8V0tFdmVudFR5cGU+KHR5cGUpLCB3a1RvdWNoUG9p
bnRzLmdldCgpLCB0b1dLRXZlbnRNb2RpZmllcnMobW9kaWZpZXJzKSwgZWNvcmVfdGltZV9nZXQo
KSkpLmdldCgpKTsKIH0KIAogdm9pZCBFd2tWaWV3OjpzZXRUb3VjaEV2ZW50c0VuYWJsZWQoYm9v
bCBlbmFibGVkKQpAQCAtMTIzNiwyNCArMTI4MCwyMiBAQCB2b2lkIEV3a1ZpZXc6OmZlZWRUb3Vj
aEV2ZW50cyhFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlKQogewogICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CiAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGV2YXNfdG91
Y2hfcG9pbnRfbGlzdF9jb3VudChzZC0+YmFzZS5ldmFzKTsKLSAgICBpZiAoIWNvdW50KQorICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGV2YXNfdG91Y2hfcG9pbnRfbGlzdF9jb3VudChzZC0+YmFzZS5l
dmFzKTsKKyAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRWluYV9MaXN0
KiBwb2ludHMgPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7
Ci0gICAgICAgIEV3a19Ub3VjaF9Qb2ludCogcG9pbnQgPSBuZXcgRXdrX1RvdWNoX1BvaW50Owot
ICAgICAgICBwb2ludC0+aWQgPSBldmFzX3RvdWNoX3BvaW50X2xpc3RfbnRoX2lkX2dldChzZC0+
YmFzZS5ldmFzLCBpKTsKLSAgICAgICAgZXZhc190b3VjaF9wb2ludF9saXN0X250aF94eV9nZXQo
c2QtPmJhc2UuZXZhcywgaSwgJnBvaW50LT54LCAmcG9pbnQtPnkpOwotICAgICAgICBwb2ludC0+
c3RhdGUgPSBldmFzX3RvdWNoX3BvaW50X2xpc3RfbnRoX3N0YXRlX2dldChzZC0+YmFzZS5ldmFz
LCBpKTsKLSAgICAgICAgcG9pbnRzID0gZWluYV9saXN0X2FwcGVuZChwb2ludHMsIHBvaW50KTsK
KyAgICBPd25BcnJheVB0cjxXS1R5cGVSZWY+IHRvdWNoUG9pbnRzID0gYWRvcHRBcnJheVB0cihu
ZXcgV0tUeXBlUmVmW2xlbmd0aF0pOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7ICsraSkgeworICAgICAgICBpbnQgeCwgeTsKKyAgICAgICAgZXZhc190b3VjaF9wb2ludF9s
aXN0X250aF94eV9nZXQoc2QtPmJhc2UuZXZhcywgaSwgJngsICZ5KTsKKyAgICAgICAgaW50IGlk
ID0gZXZhc190b3VjaF9wb2ludF9saXN0X250aF9pZF9nZXQoc2QtPmJhc2UuZXZhcywgaSk7Cisg
ICAgICAgIEludFBvaW50IHBvc2l0aW9uKHgsIHkpOworICAgICAgICBFdmFzX1RvdWNoX1BvaW50
X1N0YXRlIHN0YXRlID0gZXZhc190b3VjaF9wb2ludF9saXN0X250aF9zdGF0ZV9nZXQoc2QtPmJh
c2UuZXZhcywgaSk7CisgICAgICAgIHRvdWNoUG9pbnRzW2ldID0gV0tUb3VjaFBvaW50Q3JlYXRl
KGlkLCB0b0FQSShJbnRQb2ludChwb3NpdGlvbikpLCB0b0FQSSh0cmFuc2Zvcm1Ub1NjcmVlbigp
Lm1hcFBvaW50KHBvc2l0aW9uKSksIHRvV0tUb3VjaFBvaW50U3RhdGUoc3RhdGUpLCBXS1NpemVN
YWtlKDAsIDApLCAwLCAxKTsKICAgICB9CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tU
b3VjaFBvaW50cyhBZG9wdFdLLCBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXModG91Y2hQb2lu
dHMuZ2V0KCksIGxlbmd0aCkpOwogCi0gICAgZmVlZFRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBl
dmFzX2tleV9tb2RpZmllcl9nZXQoc2QtPmJhc2UuZXZhcykpOwotCi0gICAgdm9pZCogZGF0YTsK
LSAgICBFSU5BX0xJU1RfRlJFRShwb2ludHMsIGRhdGEpCi0gICAgICAgIGRlbGV0ZSBzdGF0aWNf
Y2FzdDxFd2tfVG91Y2hfUG9pbnQqPihkYXRhKTsKKyAgICBXS1ZpZXdTZW5kVG91Y2hFdmVudCh3
a1ZpZXcoKSwgYWRvcHRXSyhXS1RvdWNoRXZlbnRDcmVhdGUoc3RhdGljX2Nhc3Q8V0tFdmVudFR5
cGU+KHR5cGUpLCB3a1RvdWNoUG9pbnRzLmdldCgpLCB0b1dLRXZlbnRNb2RpZmllcnMoZXZhc19r
ZXlfbW9kaWZpZXJfZ2V0KHNkLT5iYXNlLmV2YXMpKSwgZWNvcmVfdGltZV9nZXQoKSkpLmdldCgp
KTsKIH0KIAogdm9pZCBFd2tWaWV3OjpoYW5kbGVUb3VjaERvd24odm9pZCogLyogZGF0YSAqLywg
RXZhcyogLyogY2FudmFzICovLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJ
bmZvICovKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Fd2tUb3Vj
aEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTdjZDcwZWI2OGIxNTU0M2ZjYjMwNDNjZjIwMjk2NzNhODhiNzI2ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hF
dmVudC5jcHAKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1z
dW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXdrVG91Y2hFdmVudC5oIgorCisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0V3a1RvdWNoRXZlbnQ6OkV3a1Rv
dWNoRXZlbnQoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cywgV0tFdmVu
dE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCisgICAgOiBtX2V2ZW50VHlw
ZSh0eXBlKQorICAgICwgbV90b3VjaFBvaW50cyh0b3VjaFBvaW50cykKKyAgICAsIG1fbW9kaWZp
ZXJzKG1vZGlmaWVycykKKyAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKK3sKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaEV2ZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
MTJjM2QwNWI4MDA0YmU1MjFhYmQzYzFiMmQ4OWJjYjU5YWI5MGI4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaEV2ZW50LmgKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV3a1RvdWNoRXZlbnRfaAor
I2RlZmluZSBFd2tUb3VjaEV2ZW50X2gKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXS0FycmF5LmgiCisjaW5jbHVkZSAiV0tF
dmVudEVmbC5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEV3a1RvdWNoRXZlbnQgOiBw
dWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgQVBJT2JqZWN0OjpU
eXBlIEFQSVR5cGUgPSBUeXBlVG91Y2hFdmVudDsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3
a1RvdWNoRXZlbnQ+IGNyZWF0ZShXS0V2ZW50VHlwZSB0eXBlLCBXS0FycmF5UmVmIHRvdWNoUG9p
bnRzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrVG91Y2hFdmVudCh0eXBlLCB0b3VjaFBv
aW50cywgbW9kaWZpZXJzLCB0aW1lc3RhbXApKTsKKyAgICB9CisKKyAgICBXS0V2ZW50VHlwZSBl
dmVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50VHlwZTsgfQorICAgIFdLQXJyYXlSZWYg
dG91Y2hQb2ludHMoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoUG9pbnRzLmdldCgpOyB9CisgICAg
V0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVyczsg
fQorICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQor
Citwcml2YXRlOgorICAgIEV3a1RvdWNoRXZlbnQoV0tFdmVudFR5cGUsIFdLQXJyYXlSZWYsIFdL
RXZlbnRNb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOworCisgICAgdmlydHVhbCBBUElPYmpl
Y3Q6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFdLRXZlbnRU
eXBlIG1fZXZlbnRUeXBlOworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1fdG91Y2hQb2lu
dHM7CisgICAgV0tFdmVudE1vZGlmaWVycyBtX21vZGlmaWVyczsKKyAgICBkb3VibGUgbV90aW1l
c3RhbXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisKKyNlbmRpZiAvKiBFd2tUb3VjaEV2ZW50X2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hQb2ludC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyMWFm
ZTM5MTI5MmVkNTNhMmUxNjYzYjVmOTc2YzQzYWI0MzVkMWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuY3BwCkBAIC0wLDAgKzEs
NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkV3a1RvdWNoUG9pbnQuaCIKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitFd2tUb3VjaFBvaW50OjpFd2tUb3VjaFBvaW50KHVpbnQzMl90IGlk
LCBXS1RvdWNoUG9pbnRTdGF0ZSBzdGF0ZSwgY29uc3QgV0tQb2ludCYgc2NyZWVuUG9zaXRpb24s
IGNvbnN0IFdLUG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXS1NpemUmIHJhZGl1cywgZmxvYXQgcm90
YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UpCisgICAgOiBtX2lkKGlkKQorICAgICwgbV9zdGF0ZShz
dGF0ZSkKKyAgICAsIG1fc2NyZWVuUG9zaXRpb24oc2NyZWVuUG9zaXRpb24pCisgICAgLCBtX3Bv
c2l0aW9uKHBvc2l0aW9uKQorICAgICwgbV9yYWRpdXMocmFkaXVzKQorICAgICwgbV9yb3RhdGlv
bkFuZ2xlKHJvdGF0aW9uQW5nbGUpCisgICAgLCBtX2ZvcmNlKGZvcmNlKQoreworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hQb2ludC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFk
NWQ4MzM1NDUxZTBkNGU2ZmIyYTQwZDU5ODI4YThjZWU5ZjYxMjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuaApAQCAtMCwwICsx
LDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRXdrVG91Y2hQb2ludF9oCisj
ZGVmaW5lIEV3a1RvdWNoUG9pbnRfaAorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNsdWRlICJXS0V2
ZW50RWZsLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRXdrVG91Y2hQb2ludCA6IHB1
YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBBUElPYmplY3Q6OlR5
cGUgQVBJVHlwZSA9IFR5cGVUb3VjaFBvaW50OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXdr
VG91Y2hQb2ludD4gY3JlYXRlKHVpbnQzMl90IGlkLCBXS1RvdWNoUG9pbnRTdGF0ZSBzdGF0ZSwg
Y29uc3QgV0tQb2ludCYgc2NyZWVuUG9zaXRpb24sIGNvbnN0IFdLUG9pbnQmIHBvc2l0aW9uLCBj
b25zdCBXS1NpemUmIHJhZGl1cywgZmxvYXQgcm90YXRpb25BbmdsZSA9IDAsIGZsb2F0IGZvcmNl
ID0gMSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrVG91Y2hQb2ludChp
ZCwgc3RhdGUsIHNjcmVlblBvc2l0aW9uLCBwb3NpdGlvbiwgcmFkaXVzLCByb3RhdGlvbkFuZ2xl
LCBmb3JjZSkpOworICAgIH0KKworICAgIHVpbnQzMl90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9p
ZDsgfQorICAgIFdLVG91Y2hQb2ludFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZTsgfQorICAgIFdLUG9pbnQgc2NyZWVuUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NjcmVl
blBvc2l0aW9uOyB9CisgICAgV0tQb2ludCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9z
aXRpb247IH0KKyAgICBXS1NpemUgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXM7IH0K
KyAgICBmbG9hdCByb3RhdGlvbkFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9yb3RhdGlvbkFuZ2xl
OyB9CisgICAgZmxvYXQgZm9yY2UoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlOyB9CisKK3ByaXZh
dGU6CisgICAgRXdrVG91Y2hQb2ludCh1aW50MzJfdCBpZCwgV0tUb3VjaFBvaW50U3RhdGUsIGNv
bnN0IFdLUG9pbnQmLCBjb25zdCBXS1BvaW50JiwgY29uc3QgV0tTaXplJiwgZmxvYXQgcm90YXRp
b25BbmdsZSwgZmxvYXQgZm9yY2UpOworCisgICAgdmlydHVhbCBBUElPYmplY3Q6OlR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIHVpbnQzMl90IG1faWQ7CisgICAg
V0tUb3VjaFBvaW50U3RhdGUgbV9zdGF0ZTsKKyAgICBXS1BvaW50IG1fc2NyZWVuUG9zaXRpb247
CisgICAgV0tQb2ludCBtX3Bvc2l0aW9uOworICAgIFdLU2l6ZSBtX3JhZGl1czsKKyAgICBmbG9h
dCBtX3JvdGF0aW9uQW5nbGU7CisgICAgZmxvYXQgbV9mb3JjZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2VuZGlmIC8q
IEV3a1RvdWNoUG9pbnRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5j
cHAKaW5kZXggNWMyYjNiYTQzZmE1ZjUyOGI3MTFjMTUyYzVhZGVjOTc5ZDIxZDQxZS4uYTE3ODQx
NThjNGJjNTIwMjRhZGUwMDRkNTg3MzY4MTNkM2U3NzBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC00Niw2ICs0NiwxMCBAQAogI2luY2x1ZGUgIldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyNpbmNsdWRlICJFd2tUb3VjaEV2ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNl
IEV3a1ZpZXdDYWxsYmFja3M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTE5LDQg
KzUyMywxMiBAQCB2b2lkIFdlYlZpZXc6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiAg
ICAgbV9ld2tWaWV3LT5zY2hlZHVsZVVwZGF0ZURpc3BsYXkoKTsKIH0KIAorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCit2b2lkIFdlYlZpZXc6OnNlbmRUb3VjaEV2ZW50KEV3a1RvdWNoRXZlbnQq
IHRvdWNoRXZlbnQpCit7CisgICAgQVNTRVJUKHRvdWNoRXZlbnQpOworICAgIG1fcGFnZS0+aGFu
ZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHRvdWNoRXZlbnQsIHRyYW5zZm9ybUZy
b21TY2VuZSgpKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCmluZGV4IDlmNWY2ZjQ3NjZlYTgwMDFmZGU5ODc5
NDBmYzUyZGQ4NmI2MmNhOGEuLjExNDFhMzhkOTgwYzQ4ZjU1NTVmNWQwMmI5OWE3ZTY3MGU5MDcx
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCkBAIC00Niw2ICs0Niwx
MCBAQCBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIEV3a1RvdWNoRXZlbnQ7CisjZW5k
aWYKKwogY2xhc3MgV2ViVmlldyA6IHB1YmxpYyBBUElPYmplY3QsIHB1YmxpYyBQYWdlQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVZpZXc7CkBA
IC04MCw2ICs4NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBleGl0RnVsbFNjcmVlbigpOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQo
RXdrVG91Y2hFdmVudCopOworI2VuZGlmCisKICAgICAvLyBWaWV3IGNsaWVudC4KICAgICB2b2lk
IGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tWaWV3Q2xpZW50Kik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193733</attachid>
            <date>2013-03-18 22:38:00 -0700</date>
            <delta_ts>2013-04-26 01:18:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130319143350.patch</filename>
            <type>text/plain</type>
            <size>38943</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjRkMjFjMGVjZmZhZjEx
MDYwZjk3MmU3NjI0YWMzNmQxMjQ3YTcwNy4uMDk5Y2NhNDVhMDBkMzQyNzIwNGY2ZjRmNTFmMDY2
OGZhZGFhMmI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEzLTAzLTE4ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvdWNoIGV2ZW50cyBmb3Igb3VyIHRhcmdldCBw
bGF0Zm9ybXMgZGlmZmVyIChYSW5wdXQyLCBXYXlsYW5kLCBUaXplbikgc28KKyAgICAgICAgZm9y
IHRoZSBFRkwgcG9ydCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZmVlZCBldmVudHMgbWFudWFsbHku
CisKKyAgICAgICAgVG8ga2VlcCBvdXIgY3VycmVudCBBUEkgZm9yIGRlc2t0b3AgRUZML0VubGln
aHRlbm1lbnQgd29ya2luZywgd2UgY29udmVydAorICAgICAgICBvdXIgY3VycmVudGx5IGxpbWl0
ZWQgRUZMIGV2ZW50cyB0byB0aGUgbmV3IEVGTCBzcGVjaWZpYyBDIEV3a1RvdWNoUG9pbnQKKyAg
ICAgICAgYW5kIEV3a1RvdWNoRXZlbnQgdHlwZS4KKworICAgICAgICBFd2tUb3VjaFBvaW50IGFu
ZCBFd2tUb3VjaEV2ZW50IGFyZSBleHBvc2VkIGFzIFdLVG91Y2hQb2ludFJlZiBhbmQKKyAgICAg
ICAgV0tUb3VjaEV2ZW50UmVmLCBzbyB0aGV5IGFyZSBvcGFxdWUgaW4gdGhlIGFwcGxpY2F0aW9u
cy4KKworICAgICAgICBUaGUgV0tWaWV3U2VuZFRvdWNoRXZlbnQgY2FuIGJlIHVzZWQgZm9yIGFu
eSB1c2UtY2FzZSAocGxhdGZvcm0vcHJvZHVjdCkKKyAgICAgICAgbm90IGludm9sdmluZyB0aGUg
RUZMIGV2ZW50cy4KKworICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHdlIG1ha2Ugc3VyZSB0byBh
dm9pZCB1c2luZyBXSzIgaW50ZXJuYWxzIGluIG91ciBFRkwgQVBJCisgICAgICAgIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogU2hhcmVk
L0FQSS9jL2VmbC9XS0Jhc2VFZmwuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6Cisg
ICAgICAgICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKE5hdGl2ZVdl
YlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50OjpuYXRp
dmVFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hF
dmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojp0b1dlYlBsYXRmb3JtVG91Y2hQb2ludFN0YXRlKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OnRvV2ViRXZlbnRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
dG9XZWJFdmVudE1vZGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rv
cnkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJFdmVudEZhY3RvcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHA6IEFkZGVk
LgorICAgICAgICAoV0tUb3VjaFBvaW50Q3JlYXRlKToKKyAgICAgICAgKFdLVG91Y2hFdmVudENy
ZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcDoKKyAgICAgICAgKFdL
Vmlld1NlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAgICAo
dG9XS1RvdWNoUG9pbnRTdGF0ZSk6CisgICAgICAgICh0b1dLRXZlbnRNb2RpZmllcnMpOgorICAg
ICAgICAoRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQpOgorICAgICAgICAoRXdrVmlldzo6ZmVlZFRv
dWNoRXZlbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkV3a1RvdWNoRXZlbnQ6
OkV3a1RvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChFd2tUb3VjaEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6RXdrVG91Y2hFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
RXdrVG91Y2hFdmVudDo6ZXZlbnRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hFdmVu
dDo6dG91Y2hQb2ludHMpOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaEV2ZW50Ojptb2RpZmll
cnMpOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaEV2ZW50Ojp0aW1lc3RhbXApOgorICAgICAg
ICAoV2ViS2l0OjpFd2tUb3VjaEV2ZW50Ojp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZs
L0V3a1RvdWNoUG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OkV3a1RvdWNoUG9pbnQ6OkV3a1RvdWNoUG9pbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvRXdrVG91Y2hQb2ludC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChFd2tUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hQb2ludDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hQb2ludDo6aWQpOgorICAgICAgICAoV2ViS2l0
OjpFd2tUb3VjaFBvaW50OjpzdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkV3a1RvdWNoUG9pbnQ6
OnNjcmVlblBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hQb2ludDo6cG9zaXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaFBvaW50OjpyYWRpdXMpOgorICAgICAgICAo
V2ViS2l0OjpFd2tUb3VjaFBvaW50Ojpyb3RhdGlvbkFuZ2xlKToKKyAgICAgICAgKFdlYktpdDo6
RXdrVG91Y2hQb2ludDo6Zm9yY2VGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaFBv
aW50Ojp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2VuZFRvdWNoRXZlbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5oOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYlZpZXcpOgorCiAyMDEzLTAzLTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBJbnZhbGlkIGNoYXJzZXQgZW5jb2Rp
bmcgdXNpbmcgd2hlbiBzdWJzdGl0dXRpbmcgYSBtaXNzcGVsbGVkIHdvcmQgaW4gV2ViS2l0Mgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3ODRkY2QyNjY2ODU1ZGM0MDZhMGUwYTM3OWVl
NWY2Mjc5MWQwMzEyLi4zMTcwYWYxMWU1OTk3MjI4ZjY5OTljMWM5MDc1ZjY3NTYxMjg4ZjRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzgsNiArMzgsNyBAQCBsaXN0KEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy9jYWlyby9XS0ljb25EYXRhYmFz
ZUNhaXJvLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tQb3B1cEl0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudUxp
c3RlbmVyLmNwcApAQCAtOTAsNiArOTEsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvZWZsL0NvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmNwcAogICAgIFVJUHJv
Y2Vzcy9lZmwvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Eb3du
bG9hZE1hbmFnZXJFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaEV2ZW50LmNwcAor
ICAgIFVJUHJvY2Vzcy9lZmwvRXdrVG91Y2hQb2ludC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Zp
bmRDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcAogICAg
IFVJUHJvY2Vzcy9lZmwvSW5wdXRNZXRob2RDb250ZXh0RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKaW5kZXggNzJmYmZkMzAzYzAxYzcyYjU1M2Jk
ZjY0NDgyZDUyYjRhMmIyYzRkOC4uOWMwN2Y4ZTBjOGM4NjJkODE0NGZhNWI5YjNhMGI5YjNlOGE5
NzhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VF
ZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oCkBA
IC0yNyw1ICsyNyw3IEBACiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpZXcqIFdLVmll
d1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUG9wdXBJdGVtKiBXS1BvcHVwSXRl
bVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUG9wdXBNZW51TGlzdGVuZXIqIFdL
UG9wdXBNZW51TGlzdGVuZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1RvdWNo
UG9pbnQqIFdLVG91Y2hQb2ludFJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVG91
Y2hFdmVudCogV0tUb3VjaEV2ZW50UmVmOwogCiAjZW5kaWYgLyogV0tCYXNlRWZsX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCA1ZWNlYjU2MjJmM2YwNzE4ODFjZjg1NGNlNTY2
NTIwMGIyODQ0M2I2Li5hNTc1MGNmZDUxN2YyYzVjZmIzYTJkMmExNzFlYTg4OWIyOGJkYTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xMzUsNiArMTM1LDEwIEBAIHB1YmxpYzoK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKEVGTCkKICAgICAgICAgVHlwZVBvcHVwTWVudUl0ZW0sCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgVHlwZVRvdWNoUG9pbnQsCisgICAgICAg
IFR5cGVUb3VjaEV2ZW50LAorI2VuZGlmCiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVudC5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaAppbmRleCBjNjNkMWNmMDcwNWJjYTFlYTU0
ZDM4NGYzZjBmNWJjODMxMWFkNjJhLi5hNjgwN2E1YmY1NDY2NmEzYmYyYmY0YzkyOGYyYjlmNmE5
ZDg2ZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgK
QEAgLTMxLDkgKzMxLDkgQEAKICNpZiBQTEFURk9STShRVCkKICNpbmNsdWRlIDxRVG91Y2hFdmVu
dD4KICNlbGlmIFBMQVRGT1JNKEVGTCkKLSNpbmNsdWRlICJld2tfdG91Y2guaCIKLSNpbmNsdWRl
IDxFdmFzLmg+CisjaW5jbHVkZSAiRXdrVG91Y2hFdmVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QWZmaW5lVHJhbnNmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNDMsMTYgKzQzLDIwIEBAIHB1YmxpYzoKICNpZiBQTEFURk9S
TShRVCkKICAgICBleHBsaWNpdCBOYXRpdmVXZWJUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50
KiwgY29uc3QgUVRyYW5zZm9ybSYgZnJvbUl0ZW1UcmFuc2Zvcm0pOwogI2VsaWYgUExBVEZPUk0o
RUZMKQotICAgIE5hdGl2ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUsIGNvbnN0
IEVpbmFfTGlzdCosIGNvbnN0IEV2YXNfTW9kaWZpZXIqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVU
cmFuc2Zvcm0mIHRvV2ViQ29udGVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0
b0RldmljZVNjcmVlbiwgZG91YmxlIHRpbWVzdGFtcCk7CisgICAgTmF0aXZlV2ViVG91Y2hFdmVu
dChFd2tUb3VjaEV2ZW50KiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJik7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIGNvbnN0IFFUb3VjaEV2ZW50KiBuYXRpdmVFdmVu
dCgpIGNvbnN0IHsgcmV0dXJuICZtX25hdGl2ZUV2ZW50OyB9CisjZWxpZiBQTEFURk9STShFRkwp
CisgICAgY29uc3QgRXdrVG91Y2hFdmVudCogbmF0aXZlRXZlbnQoKSBjb25zdCB7IHJldHVybiBt
X25hdGl2ZUV2ZW50LmdldCgpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKICNpZiBQTEFURk9STShR
VCkKICAgICBjb25zdCBRVG91Y2hFdmVudCBtX25hdGl2ZUV2ZW50OworI2VsaWYgUExBVEZPUk0o
RUZMKQorICAgIFJlZlB0cjxFd2tUb3VjaEV2ZW50PiBtX25hdGl2ZUV2ZW50OwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNo
RXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2
ZW50RWZsLmNwcAppbmRleCA3Mjc5NjgzNWE2NjQ3YjAyNzJkZWYyM2VlNmMyMGIxODEzOWE5MTY1
Li4wZDNiMDYwNTM0YTNiNzgyMTBhZDk5ZmJiZjM1Y2VmZjcxYWEzYjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKQEAg
LTMyLDggKzMyLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLU5hdGl2ZVdlYlRvdWNoRXZl
bnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29uc3Qg
RWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29uc3Qg
V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IFdlYkNvcmU6OkFm
ZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApCi0gICAgOiBX
ZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudCh0eXBlLCBw
b2ludHMsIG1vZGlmaWVycywgdG9XZWJDb250ZW50LCB0b0RldmljZVNjcmVlbiwgdGltZXN0YW1w
KSkKK05hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoRXdrVG91Y2hFdmVu
dCogdG91Y2hFdmVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRl
bnQpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hF
dmVudCh0b3VjaEV2ZW50LCB0b1dlYkNvbnRlbnQpKQorICAgICwgbV9uYXRpdmVFdmVudCh0b3Vj
aEV2ZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dl
YkV2ZW50RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFj
dG9yeS5jcHAKaW5kZXggNGUyMWFlOTk2MWI0MWY2YzNlZjY5NzJjNzEyYmVmYWQyNWFhMzFmZi4u
N2Y1YjNlZWFhZDYyMDQ0ODUzNzkxOTllMDA4MTQxOWQ1ZWIzMDRmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAtMzEsNiArMzEsMTMgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5zZm9ybS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2Nyb2xsYmFyLmg+CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgIkV3a1Rv
dWNoRXZlbnQuaCIKKyNpbmNsdWRlICJFd2tUb3VjaFBvaW50LmgiCisjaW5jbHVkZSAiSW1tdXRh
YmxlQXJyYXkuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yMDUsNTcgKzIxMiw3MCBA
QCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVu
dChjb25zdCBFdmFzX0V2ZW50X0tleV9VcAogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
LXN0YXRpYyBpbmxpbmUgV2ViRXZlbnQ6OlR5cGUgdHlwZUZvclRvdWNoRXZlbnQoRXdrX1RvdWNo
X0V2ZW50X1R5cGUgdHlwZSkKK3N0YXRpYyBpbmxpbmUgV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFBvaW50U3RhdGUgdG9XZWJQbGF0Zm9ybVRvdWNoUG9pbnRTdGF0ZShXS1RvdWNoUG9pbnRT
dGF0ZSBzdGF0ZSkKIHsKLSAgICBpZiAodHlwZSA9PSBFV0tfVE9VQ0hfU1RBUlQpCisgICAgc3dp
dGNoIChzdGF0ZSkgeworICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hSZWxlYXNlZDoK
KyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKKyAg
ICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoTW92ZWQ6CisgICAgICAgIHJldHVybiBXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoTW92ZWQ7CisgICAgY2FzZSBrV0tUb3VjaFBvaW50U3Rh
dGVUb3VjaFByZXNzZWQ6CisgICAgICAgIHJldHVybiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoUHJlc3NlZDsKKyAgICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoU3RhdGlvbmFyeToK
KyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5Owor
ICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ6CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQ7Cisg
ICAgfQorfQorCitzdGF0aWMgaW5saW5lIFdlYkV2ZW50OjpUeXBlIHRvV2ViRXZlbnRUeXBlKFdL
RXZlbnRUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBrV0tFdmVu
dFR5cGVUb3VjaFN0YXJ0OgogICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoU3RhcnQ7Ci0g
ICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNIX01PVkUpCisgICAgY2FzZSBrV0tFdmVudFR5cGVUb3Vj
aE1vdmU6CiAgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hNb3ZlOwotICAgIGlmICh0eXBl
ID09IEVXS19UT1VDSF9FTkQpCisgICAgY2FzZSBrV0tFdmVudFR5cGVUb3VjaEVuZDoKICAgICAg
ICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaEVuZDsKLSAgICBpZiAodHlwZSA9PSBFV0tfVE9VQ0hf
Q0FOQ0VMKQorICAgIGNhc2Uga1dLRXZlbnRUeXBlVG91Y2hDYW5jZWw6CiAgICAgICAgIHJldHVy
biBXZWJFdmVudDo6VG91Y2hDYW5jZWw7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFdl
YkV2ZW50OjpOb1R5cGU7CisgICAgfQogCi0gICAgcmV0dXJuIFdlYkV2ZW50OjpOb1R5cGU7CiB9
CiAKLVdlYlRvdWNoRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KEV3
a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUsIGNvbnN0IEVpbmFfTGlzdCogcG9pbnRzLCBjb25zdCBF
dmFzX01vZGlmaWVyKiBtb2RpZmllcnMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250
ZW50LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0
YW1wKQorc3RhdGljIGlubGluZSBXZWJFdmVudDo6TW9kaWZpZXJzIHRvV2ViRXZlbnRNb2RpZmll
cnModW5zaWduZWQgbW9kaWZpZXJzKQogeworICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CisKKyAg
ICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSkKKyAgICAgICAgcmVz
dWx0IHw9IFdlYkV2ZW50OjpTaGlmdEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRN
b2RpZmllcnNDb250cm9sS2V5KQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6OkNvbnRyb2xL
ZXk7CisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5KQorICAgICAg
ICByZXN1bHQgfD0gV2ViRXZlbnQ6OkFsdEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZl
bnRNb2RpZmllcnNNZXRhS2V5KQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6Ok1ldGFLZXk7
CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4ocmVzdWx0KTsK
K30KKworV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQo
Y29uc3QgRXdrVG91Y2hFdmVudCogZXZlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdG9XZWJD
b250ZW50KQoreworICAgIEltbXV0YWJsZUFycmF5KiB0b3VjaFBvaW50c0FycmF5ID0gdG9JbXBs
KGV2ZW50LT50b3VjaFBvaW50cygpKTsKKyAgICBzaXplX3Qgc2l6ZSA9IHRvdWNoUG9pbnRzQXJy
YXktPnNpemUoKTsKKwogICAgIFZlY3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IHRvdWNoUG9p
bnRzOwotICAgIHRvdWNoUG9pbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZWluYV9saXN0X2Nv
dW50KHBvaW50cykpOwotCi0gICAgY29uc3QgRWluYV9MaXN0KiBsaXN0OwotICAgIHZvaWQqIGl0
ZW07Ci0gICAgRUlOQV9MSVNUX0ZPUkVBQ0gocG9pbnRzLCBsaXN0LCBpdGVtKSB7Ci0gICAgICAg
IEV3a19Ub3VjaF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihp
dGVtKTsKLQotICAgICAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0ZSBz
dGF0ZTsKLSAgICAgICAgc3dpdGNoIChwb2ludC0+c3RhdGUpIHsKLSAgICAgICAgY2FzZSBFVkFT
X1RPVUNIX1BPSU5UX1VQOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoUmVsZWFzZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFVkFT
X1RPVUNIX1BPSU5UX01PVkU6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hNb3ZlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNf
VE9VQ0hfUE9JTlRfRE9XTjoKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBv
aW50OjpUb3VjaFByZXNzZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFVkFT
X1RPVUNIX1BPSU5UX1NUSUxMOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQ6OlRvdWNoU3RhdGlvbmFyeTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEVWQVNfVE9VQ0hfUE9JTlRfQ0FOQ0VMOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2VsbGVkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgSW50UG9pbnQgcG9zKHBvaW50LT54LCBw
b2ludC0+eSk7Ci0gICAgICAgIHRvdWNoUG9pbnRzLnVuY2hlY2tlZEFwcGVuZChXZWJQbGF0Zm9y
bVRvdWNoUG9pbnQocG9pbnQtPmlkLCBzdGF0ZSwgdG9EZXZpY2VTY3JlZW4ubWFwUG9pbnQocG9z
KSwgdG9XZWJDb250ZW50Lm1hcFBvaW50KHBvcykpKTsKKyAgICB0b3VjaFBvaW50cy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHNpemUpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKKyAgICAgICAgaWYgKEV3a1RvdWNoUG9pbnQqIHBvaW50ID0gdG91Y2hQb2ludHNB
cnJheS0+YXQ8RXdrVG91Y2hQb2ludD4oaSkpCisgICAgICAgICAgICB0b3VjaFBvaW50cy51bmNo
ZWNrZWRBcHBlbmQoV2ViUGxhdGZvcm1Ub3VjaFBvaW50KHBvaW50LT5pZCgpLCB0b1dlYlBsYXRm
b3JtVG91Y2hQb2ludFN0YXRlKHBvaW50LT5zdGF0ZSgpKSwgdG9JbnRQb2ludChwb2ludC0+c2Ny
ZWVuUG9zaXRpb24oKSksIHRvV2ViQ29udGVudC5tYXBQb2ludCh0b0ludFBvaW50KHBvaW50LT5w
b3NpdGlvbigpKSksIHRvSW50U2l6ZShwb2ludC0+cmFkaXVzKCkpLCBwb2ludC0+cm90YXRpb25B
bmdsZSgpLCBwb2ludC0+Zm9yY2VGYWN0b3IoKSkpOwogICAgIH0KIAotICAgIHJldHVybiBXZWJU
b3VjaEV2ZW50KHR5cGVGb3JUb3VjaEV2ZW50KHR5cGUpLCB0b3VjaFBvaW50cywgbW9kaWZpZXJz
Rm9yRXZlbnQobW9kaWZpZXJzKSwgdGltZXN0YW1wKTsKKyAgICByZXR1cm4gV2ViVG91Y2hFdmVu
dCh0b1dlYkV2ZW50VHlwZShldmVudC0+ZXZlbnRUeXBlKCkpLCB0b3VjaFBvaW50cywgdG9XZWJF
dmVudE1vZGlmaWVycyhldmVudC0+bW9kaWZpZXJzKCkpLCBldmVudC0+dGltZXN0YW1wKCkpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZl
bnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5o
CmluZGV4IGU0NDRkYjI5ZDUyMzg0MDIyMDQxZTVkYjhkMjQ0MGMzMGQ4MjNlODAuLjRhOTg5NGU5
YWY0NTZiYThmMTUzMjA2YjBlYjdiN2YzZjQ4YmRiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaApAQCAtMjcsMTIgKzI3LDE1IEBACiAjZGVmaW5lIFdl
YkV2ZW50RmFjdG9yeV9oCiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgotI2luY2x1ZGUgImV3a190
b3VjaC5oIgogI2luY2x1ZGUgPEV2YXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FmZmluZVRyYW5z
Zm9ybS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CitjbGFzcyBFd2tUb3VjaEV2ZW50OworI2VuZGlmCisKIGNsYXNzIFdlYkV2ZW50RmFjdG9yeSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91c2VFdmVudChj
b25zdCBFdmFzX0V2ZW50X01vdXNlX0Rvd24qLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsKQEAgLTQyLDcgKzQ1LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2ZW50IGNyZWF0ZVdlYktleWJvYXJkRXZl
bnQoY29uc3QgRXZhc19FdmVudF9LZXlfRG93biopOwogICAgIHN0YXRpYyBXZWJLZXlib2FyZEV2
ZW50IGNyZWF0ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgRXZhc19FdmVudF9LZXlfVXAqKTsKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50IGNyZWF0ZVdl
YlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUsIGNvbnN0IEVpbmFfTGlzdCosIGNvbnN0
IEV2YXNfTW9kaWZpZXIqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBzdGF0aWMg
V2ViVG91Y2hFdmVudCBjcmVhdGVXZWJUb3VjaEV2ZW50KGNvbnN0IEV3a1RvdWNoRXZlbnQqLCBj
b25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgKaW5kZXggZDNi
Y2E5MjY1NzcyNzgyNWNmYTE2ZjIyMTUyMGJjMTAzNmViZTkzYi4uMzUxYTE5ZmZlNTI3YzEyNThk
NWQzYWRkMDk5NTA2NmQwYzg2MTlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oCkBAIC0zNyw2ICszNywxNCBAQCBXS19BRERfQVBJ
X01BUFBJTkcoV0tWaWV3UmVmLCBXZWJWaWV3KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUG9wdXBJ
dGVtUmVmLCBXZWJQb3B1cEl0ZW1FZmwpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQb3B1cE1lbnVM
aXN0ZW5lclJlZiwgV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwpCiAKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorY2xhc3MgRXdrVG91Y2hFdmVudDsKK2NsYXNzIEV3a1RvdWNoUG9pbnQ7CisKK1dL
X0FERF9BUElfTUFQUElORyhXS1RvdWNoRXZlbnRSZWYsIEV3a1RvdWNoRXZlbnQpCitXS19BRERf
QVBJX01BUFBJTkcoV0tUb3VjaFBvaW50UmVmLCBFd2tUb3VjaFBvaW50KQorI2VuZGlmCisKIC8v
IEVudW0gY29udmVyc2lvbnMuCiBpbmxpbmUgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uIHRvQVBJ
KFdlYkNvcmU6OlRleHREaXJlY3Rpb24gZGlyZWN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ1MDcx
ZjkwYmQ1YjdjNjA4YzY0YWY2ZDJkZjAwNDNkODcwNTIyMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHAKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV0tFdmVudEVmbC5oIgorCisjaW5jbHVkZSAiRXdrVG91Y2hFdmVudC5oIgorI2luY2x1
ZGUgIkV3a1RvdWNoUG9pbnQuaCIKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYkV2ZW50LmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK1dLVG91Y2hQb2ludFJlZiBXS1RvdWNoUG9pbnRDcmVhdGUoaW50IGlkLCBX
S1BvaW50IHBvc2l0aW9uLCBXS1BvaW50IHNjcmVlblBvc2l0aW9uLCBXS1RvdWNoUG9pbnRTdGF0
ZSBzdGF0ZSwgV0tTaXplIHJhZGl1cywgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2VG
YWN0b3IpCit7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICByZXR1cm4gdG9BUEkoRXdr
VG91Y2hQb2ludDo6Y3JlYXRlKGlkLCBzdGF0ZSwgc2NyZWVuUG9zaXRpb24sIHBvc2l0aW9uLCBy
YWRpdXMsIHJvdGF0aW9uQW5nbGUsIGZvcmNlRmFjdG9yKS5sZWFrUmVmKCkpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oaWQpOworICAgIFVOVVNFRF9QQVJBTShwb3NpdGlvbik7CisgICAgVU5V
U0VEX1BBUkFNKHNjcmVlblBvc2l0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IFVOVVNFRF9QQVJBTShyYWRpdXMpOworICAgIFVOVVNFRF9QQVJBTShyb3RhdGlvbkFuZ2xlKTsK
KyAgICBVTlVTRURfUEFSQU0oZm9yY2VGYWN0b3IpOworICAgIHJldHVybiAwOworI2VuZGlmCit9
CisKK1dLVG91Y2hFdmVudFJlZiBXS1RvdWNoRXZlbnRDcmVhdGUoV0tFdmVudFR5cGUgdHlwZSwg
V0tBcnJheVJlZiB3a1RvdWNoUG9pbnRzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgZG91
YmxlIHRpbWVzdGFtcCkKK3sKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHJldHVybiB0
b0FQSShFd2tUb3VjaEV2ZW50OjpjcmVhdGUodHlwZSwgd2tUb3VjaFBvaW50cywgbW9kaWZpZXJz
LCB0aW1lc3RhbXApLmxlYWtSZWYoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh0eXBlKTsK
KyAgICBVTlVTRURfUEFSQU0od2tUb3VjaFBvaW50cyk7CisgICAgVU5VU0VEX1BBUkFNKG1vZGlm
aWVycyk7CisgICAgVU5VU0VEX1BBUkFNKHRpbWVzdGFtcCk7CisgICAgcmV0dXJuIDA7CisjZW5k
aWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tF
dmVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2RhMjYzNmU2NTE3MWM4YjkzYmM3NDI0NWZkM2NiOWE3NzJjOTJjMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tF
dmVudEVmbC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ft
c3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXS0V2ZW50RWZsX2gKKyNkZWZpbmUgV0tFdmVudEVmbF9oCisK
KyNpbmNsdWRlIDxXZWJLaXQyL1dLRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0
cnkuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitlbnVt
IFdLRXZlbnRUeXBlIHsKKyAgICBrV0tFdmVudFR5cGVOb1R5cGUgPSAtMSwKKyAgICBrV0tFdmVu
dFR5cGVUb3VjaFN0YXJ0LAorICAgIGtXS0V2ZW50VHlwZVRvdWNoTW92ZSwKKyAgICBrV0tFdmVu
dFR5cGVUb3VjaEVuZCwKKyAgICBrV0tFdmVudFR5cGVUb3VjaENhbmNlbAorfTsKK3R5cGVkZWYg
ZW51bSBXS0V2ZW50VHlwZSBXS0V2ZW50VHlwZTsKKworZW51bSBXS1RvdWNoUG9pbnRTdGF0ZSB7
CisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hSZWxlYXNlZCwKKyAgICBrV0tUb3VjaFBvaW50
U3RhdGVUb3VjaFByZXNzZWQsCisgICAga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hNb3ZlZCwKKyAg
ICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFN0YXRpb25hcnksCisgICAga1dLVG91Y2hQb2ludFN0
YXRlVG91Y2hDYW5jZWxsZWQKK307Cit0eXBlZGVmIGVudW0gV0tUb3VjaFBvaW50U3RhdGUgV0tU
b3VjaFBvaW50U3RhdGU7CisKK1dLX0VYUE9SVCBXS1RvdWNoUG9pbnRSZWYgV0tUb3VjaFBvaW50
Q3JlYXRlKGludCBpZCwgV0tQb2ludCBwb3NpdGlvbiwgV0tQb2ludCBzY3JlZW5Qb3NpdGlvbiwg
V0tUb3VjaFBvaW50U3RhdGUsIFdLU2l6ZSByYWRpdXMsIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZs
b2F0IGZvcmNlRmFjdG9yKTsKK1dLX0VYUE9SVCBXS1RvdWNoRXZlbnRSZWYgV0tUb3VjaEV2ZW50
Q3JlYXRlKFdLRXZlbnRUeXBlLCBXS0FycmF5UmVmLCBXS0V2ZW50TW9kaWZpZXJzLCBkb3VibGUg
dGltZXN0YW1wKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8q
IFdLRXZlbnRFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1ZpZXcuY3BwCmluZGV4IGRjZDNlMmM4NWMyYzhmN2ZiYWE0YzQ5ZTQzOWFmM2M2YmYyZTZiODEu
LjU5ZjY4ODQyODJmN2Q1Y2JjZTQzYjY5OGVhZGY1MTg4ODQzYjIxOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKQEAgLTE1MCwzICsxNTAsMTMg
QEAgV0tJbWFnZVJlZiBXS1ZpZXdDcmVhdGVTbmFwc2hvdChXS1ZpZXdSZWYgdmlld1JlZikKICAg
ICBFd2tWaWV3KiBld2tWaWV3ID0gdG9Fd2tWaWV3KHRvSW1wbCh2aWV3UmVmKS0+ZXZhc09iamVj
dCgpKTsKICAgICByZXR1cm4gV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UoZXdrVmlldy0+
dGFrZVNuYXBzaG90KCkuZ2V0KCksIDAgLyogb3B0aW9ucyAqLyk7CiB9CisKK3ZvaWQgV0tWaWV3
U2VuZFRvdWNoRXZlbnQoV0tWaWV3UmVmIHZpZXdSZWYsIFdLVG91Y2hFdmVudFJlZiB0b3VjaEV2
ZW50UmVmKQoreworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdG9JbXBsKHZpZXdSZWYp
LT5zZW5kVG91Y2hFdmVudCh0b0ltcGwodG91Y2hFdmVudFJlZikpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0odmlld1JlZik7CisgICAgVU5VU0VEX1BBUkFNKHRvdWNoRXZlbnRSZWYpOworI2Vu
ZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAppbmRl
eCBhNzA5YjQ4OGE4MDNjNTM3Y2RlMzBjYTE3MTgzMDk5OTk3OWNkZmZiLi42ZjllZDBjZTAzYWNj
NjA2MDVmMjY0ZTE2MjQxYWY5YTI3NDAxOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9lZmwvV0tWaWV3LmgKQEAgLTkzLDYgKzkzLDggQEAgV0tfRVhQT1JUIEV2YXNfT2Jq
ZWN0KiBXS1ZpZXdHZXRFdmFzT2JqZWN0KFdLVmlld1JlZik7CiAKIFdLX0VYUE9SVCBXS0ltYWdl
UmVmIFdLVmlld0NyZWF0ZVNuYXBzaG90KFdLVmlld1JlZik7CiAKK1dLX0VYUE9SVCB2b2lkIFdL
Vmlld1NlbmRUb3VjaEV2ZW50KFdLVmlld1JlZiwgV0tUb3VjaEV2ZW50UmVmKTsKKwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlldy5jcHAKaW5kZXggMTdkY2I2NDNlZmY3YTFmYWM2NWM5YzFlNzg2MThkMDNiMWU3
MTQ4OS4uMWU2NDNlZTFhMTE5ZWVkZDY2MDU5OWQzYzIxMTAxYjhiYjg5YTEzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTM2LDcgKzM2LDkg
QEAKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAjaW5jbHVk
ZSAiU25hcHNob3RJbWFnZUdMLmgiCiAjaW5jbHVkZSAiVmlld0NsaWVudEVmbC5oIgorI2luY2x1
ZGUgIldLQXJyYXkuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXS0V2
ZW50RWZsLmgiCiAjaW5jbHVkZSAiV0tHZW9tZXRyeS5oIgogI2luY2x1ZGUgIldLTnVtYmVyLmgi
CiAjaW5jbHVkZSAiV0tQYWdlR3JvdXAuaCIKQEAgLTcxNCw5ICs3MTYsNTEgQEAgdm9pZCBFd2tW
aWV3OjpzZXRNb3VzZUV2ZW50c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogfQogCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKK3N0YXRpYyBXS1RvdWNoUG9pbnRTdGF0ZSB0b1dLVG91Y2hQb2ludFN0
YXRlKEV2YXNfVG91Y2hfUG9pbnRfU3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZSkg
eworICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9VUDoKKyAgICAgICAgcmV0dXJuIGtXS1RvdWNo
UG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQ7CisgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX01PVkU6
CisgICAgICAgIHJldHVybiBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkOworICAgIGNhc2Ug
RVZBU19UT1VDSF9QT0lOVF9ET1dOOgorICAgICAgICByZXR1cm4ga1dLVG91Y2hQb2ludFN0YXRl
VG91Y2hQcmVzc2VkOworICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9TVElMTDoKKyAgICAgICAg
cmV0dXJuIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoU3RhdGlvbmFyeTsKKyAgICBjYXNlIEVWQVNf
VE9VQ0hfUE9JTlRfQ0FOQ0VMOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBrV0tUb3Vj
aFBvaW50U3RhdGVUb3VjaENhbmNlbGxlZDsKKyAgICB9Cit9CisKK3N0YXRpYyBXS0V2ZW50TW9k
aWZpZXJzIHRvV0tFdmVudE1vZGlmaWVycyhjb25zdCBFdmFzX01vZGlmaWVyKiBtb2RpZmllcnMp
Cit7CisgICAgV0tFdmVudE1vZGlmaWVycyB3a01vZGlmaWVycyA9IDA7CisgICAgaWYgKGV2YXNf
a2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJTaGlmdCIpKQorICAgICAgICB3a01vZGlm
aWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5OworICAgIGlmIChldmFzX2tleV9tb2Rp
Zmllcl9pc19zZXQobW9kaWZpZXJzLCAiQ29udHJvbCIpKQorICAgICAgICB3a01vZGlmaWVycyB8
PSBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVy
X2lzX3NldChtb2RpZmllcnMsICJBbHQiKSkKKyAgICAgICAgd2tNb2RpZmllcnMgfD0ga1dLRXZl
bnRNb2RpZmllcnNBbHRLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2Rp
ZmllcnMsICJNZXRhIikpCisgICAgICAgIHdrTW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJz
TWV0YUtleTsKKworICAgIHJldHVybiB3a01vZGlmaWVyczsKK30KKwogdm9pZCBFd2tWaWV3Ojpm
ZWVkVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3Qq
IHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJzKQogewotICAgIHBhZ2UoKS0+
aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZp
ZXJzLCB3ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZSgpLCB0cmFuc2Zvcm1Ub1NjcmVlbigp
LCBlY29yZV90aW1lX2dldCgpKSk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gZWluYV9saXN0X2Nv
dW50KHBvaW50cyk7CisgICAgT3duQXJyYXlQdHI8V0tUeXBlUmVmPiB0b3VjaFBvaW50cyA9IGFk
b3B0QXJyYXlQdHIobmV3IFdLVHlwZVJlZltsZW5ndGhdKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBwb2ludCA9
IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGVpbmFfbGlzdF9udGgocG9pbnRzLCBpKSk7
CisgICAgICAgIEFTU0VSVChwb2ludCk7CisgICAgICAgIEludFBvaW50IHBvc2l0aW9uKHBvaW50
LT54LCBwb2ludC0+eSk7CisgICAgICAgIHRvdWNoUG9pbnRzW2ldID0gV0tUb3VjaFBvaW50Q3Jl
YXRlKHBvaW50LT5pZCwgdG9BUEkoSW50UG9pbnQocG9zaXRpb24pKSwgdG9BUEkodHJhbnNmb3Jt
VG9TY3JlZW4oKS5tYXBQb2ludChwb3NpdGlvbikpLCB0b1dLVG91Y2hQb2ludFN0YXRlKHBvaW50
LT5zdGF0ZSksIFdLU2l6ZU1ha2UoMCwgMCksIDAsIDEpOworICAgIH0KKyAgICBXS1JldGFpblB0
cjxXS0FycmF5UmVmPiB3a1RvdWNoUG9pbnRzKEFkb3B0V0ssIFdLQXJyYXlDcmVhdGVBZG9wdGlu
Z1ZhbHVlcyh0b3VjaFBvaW50cy5nZXQoKSwgbGVuZ3RoKSk7CisKKyAgICBXS1ZpZXdTZW5kVG91
Y2hFdmVudCh3a1ZpZXcoKSwgYWRvcHRXSyhXS1RvdWNoRXZlbnRDcmVhdGUoc3RhdGljX2Nhc3Q8
V0tFdmVudFR5cGU+KHR5cGUpLCB3a1RvdWNoUG9pbnRzLmdldCgpLCB0b1dLRXZlbnRNb2RpZmll
cnMobW9kaWZpZXJzKSwgZWNvcmVfdGltZV9nZXQoKSkpLmdldCgpKTsKIH0KIAogdm9pZCBFd2tW
aWV3OjpzZXRUb3VjaEV2ZW50c0VuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtMTIzNiwyNCArMTI4
MCwyMiBAQCB2b2lkIEV3a1ZpZXc6OmZlZWRUb3VjaEV2ZW50cyhFd2tfVG91Y2hfRXZlbnRfVHlw
ZSB0eXBlKQogewogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CiAK
LSAgICB1bnNpZ25lZCBjb3VudCA9IGV2YXNfdG91Y2hfcG9pbnRfbGlzdF9jb3VudChzZC0+YmFz
ZS5ldmFzKTsKLSAgICBpZiAoIWNvdW50KQorICAgIHVuc2lnbmVkIGxlbmd0aCA9IGV2YXNfdG91
Y2hfcG9pbnRfbGlzdF9jb3VudChzZC0+YmFzZS5ldmFzKTsKKyAgICBpZiAoIWxlbmd0aCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRWluYV9MaXN0KiBwb2ludHMgPSAwOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIEV3a19Ub3VjaF9Qb2ludCog
cG9pbnQgPSBuZXcgRXdrX1RvdWNoX1BvaW50OwotICAgICAgICBwb2ludC0+aWQgPSBldmFzX3Rv
dWNoX3BvaW50X2xpc3RfbnRoX2lkX2dldChzZC0+YmFzZS5ldmFzLCBpKTsKLSAgICAgICAgZXZh
c190b3VjaF9wb2ludF9saXN0X250aF94eV9nZXQoc2QtPmJhc2UuZXZhcywgaSwgJnBvaW50LT54
LCAmcG9pbnQtPnkpOwotICAgICAgICBwb2ludC0+c3RhdGUgPSBldmFzX3RvdWNoX3BvaW50X2xp
c3RfbnRoX3N0YXRlX2dldChzZC0+YmFzZS5ldmFzLCBpKTsKLSAgICAgICAgcG9pbnRzID0gZWlu
YV9saXN0X2FwcGVuZChwb2ludHMsIHBvaW50KTsKKyAgICBPd25BcnJheVB0cjxXS1R5cGVSZWY+
IHRvdWNoUG9pbnRzID0gYWRvcHRBcnJheVB0cihuZXcgV0tUeXBlUmVmW2xlbmd0aF0pOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBpbnQgeCwg
eTsKKyAgICAgICAgZXZhc190b3VjaF9wb2ludF9saXN0X250aF94eV9nZXQoc2QtPmJhc2UuZXZh
cywgaSwgJngsICZ5KTsKKyAgICAgICAgSW50UG9pbnQgcG9zaXRpb24oeCwgeSk7CisgICAgICAg
IEV2YXNfVG91Y2hfUG9pbnRfU3RhdGUgc3RhdGUgPSBldmFzX3RvdWNoX3BvaW50X2xpc3RfbnRo
X3N0YXRlX2dldChzZC0+YmFzZS5ldmFzLCBpKTsKKyAgICAgICAgaW50IGlkID0gZXZhc190b3Vj
aF9wb2ludF9saXN0X250aF9pZF9nZXQoc2QtPmJhc2UuZXZhcywgaSk7CisgICAgICAgIHRvdWNo
UG9pbnRzW2ldID0gV0tUb3VjaFBvaW50Q3JlYXRlKGlkLCB0b0FQSShJbnRQb2ludChwb3NpdGlv
bikpLCB0b0FQSSh0cmFuc2Zvcm1Ub1NjcmVlbigpLm1hcFBvaW50KHBvc2l0aW9uKSksIHRvV0tU
b3VjaFBvaW50U3RhdGUoc3RhdGUpLCBXS1NpemVNYWtlKDAsIDApLCAwLCAxKTsKICAgICB9Cisg
ICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tUb3VjaFBvaW50cyhBZG9wdFdLLCBXS0FycmF5
Q3JlYXRlQWRvcHRpbmdWYWx1ZXModG91Y2hQb2ludHMuZ2V0KCksIGxlbmd0aCkpOwogCi0gICAg
ZmVlZFRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBldmFzX2tleV9tb2RpZmllcl9nZXQoc2QtPmJh
c2UuZXZhcykpOwotCi0gICAgdm9pZCogZGF0YTsKLSAgICBFSU5BX0xJU1RfRlJFRShwb2ludHMs
IGRhdGEpCi0gICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihkYXRh
KTsKKyAgICBXS1ZpZXdTZW5kVG91Y2hFdmVudCh3a1ZpZXcoKSwgYWRvcHRXSyhXS1RvdWNoRXZl
bnRDcmVhdGUoc3RhdGljX2Nhc3Q8V0tFdmVudFR5cGU+KHR5cGUpLCB3a1RvdWNoUG9pbnRzLmdl
dCgpLCB0b1dLRXZlbnRNb2RpZmllcnMoZXZhc19rZXlfbW9kaWZpZXJfZ2V0KHNkLT5iYXNlLmV2
YXMpKSwgZWNvcmVfdGltZV9nZXQoKSkpLmdldCgpKTsKIH0KIAogdm9pZCBFd2tWaWV3OjpoYW5k
bGVUb3VjaERvd24odm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2FudmFzICovLCBFdmFzX09i
amVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZvICovKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdjZDcwZWI2OGIx
NTU0M2ZjYjMwNDNjZjIwMjk2NzNhODhiNzI2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5jcHAKQEAgLTAsMCArMSw0MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXdr
VG91Y2hFdmVudC5oIgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK0V3a1RvdWNoRXZlbnQ6OkV3a1RvdWNoRXZlbnQoV0tFdmVudFR5cGUgdHlwZSwg
V0tBcnJheVJlZiB0b3VjaFBvaW50cywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJs
ZSB0aW1lc3RhbXApCisgICAgOiBtX2V2ZW50VHlwZSh0eXBlKQorICAgICwgbV90b3VjaFBvaW50
cyh0b3VjaFBvaW50cykKKyAgICAsIG1fbW9kaWZpZXJzKG1vZGlmaWVycykKKyAgICAsIG1fdGlt
ZXN0YW1wKHRpbWVzdGFtcCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9Fd2tUb3VjaEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0V3a1RvdWNoRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTJjM2QwNWI4MDA0YmU1MjFhYmQzYzFiMmQ4
OWJjYjU5YWI5MGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9Fd2tUb3VjaEV2ZW50LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEV3a1RvdWNoRXZlbnRfaAorI2RlZmluZSBFd2tUb3VjaEV2ZW50X2gKKwor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlICJXS0FycmF5LmgiCisjaW5jbHVkZSAiV0tFdmVudEVmbC5oIgorI2luY2x1ZGUgIldLUmV0
YWluUHRyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEV3a1RvdWNoRXZlbnQgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY29uc3QgQVBJT2JqZWN0OjpUeXBlIEFQSVR5cGUgPSBUeXBlVG91Y2hFdmVu
dDsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a1RvdWNoRXZlbnQ+IGNyZWF0ZShXS0V2ZW50
VHlwZSB0eXBlLCBXS0FycmF5UmVmIHRvdWNoUG9pbnRzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlm
aWVycywgZG91YmxlIHRpbWVzdGFtcCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRXdrVG91Y2hFdmVudCh0eXBlLCB0b3VjaFBvaW50cywgbW9kaWZpZXJzLCB0aW1lc3RhbXAp
KTsKKyAgICB9CisKKyAgICBXS0V2ZW50VHlwZSBldmVudFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2V2ZW50VHlwZTsgfQorICAgIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMoKSBjb25zdCB7IHJldHVy
biBtX3RvdWNoUG9pbnRzLmdldCgpOyB9CisgICAgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMo
KSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVyczsgfQorICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBj
b25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQorCitwcml2YXRlOgorICAgIEV3a1RvdWNoRXZl
bnQoV0tFdmVudFR5cGUsIFdLQXJyYXlSZWYsIFdLRXZlbnRNb2RpZmllcnMsIGRvdWJsZSB0aW1l
c3RhbXApOworCisgICAgdmlydHVhbCBBUElPYmplY3Q6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIEFQSVR5cGU7IH0KKworICAgIFdLRXZlbnRUeXBlIG1fZXZlbnRUeXBlOworICAgIFdLUmV0
YWluUHRyPFdLQXJyYXlSZWY+IG1fdG91Y2hQb2ludHM7CisgICAgV0tFdmVudE1vZGlmaWVycyBt
X21vZGlmaWVyczsKKyAgICBkb3VibGUgbV90aW1lc3RhbXA7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNlbmRpZiAvKiBF
d2tUb3VjaEV2ZW50X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvRXdrVG91Y2hQb2ludC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1Rv
dWNoUG9pbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlZmE2N2Q5ZmE0ODgzMDU4YjNjMzRhNWI5YTA4N2M1
MjVhMzAyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0V3a1RvdWNoUG9pbnQuY3BwCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV3a1RvdWNoUG9pbnQuaCIKKworI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitFd2tUb3VjaFBv
aW50OjpFd2tUb3VjaFBvaW50KHVpbnQzMl90IGlkLCBXS1RvdWNoUG9pbnRTdGF0ZSBzdGF0ZSwg
Y29uc3QgV0tQb2ludCYgc2NyZWVuUG9zaXRpb24sIGNvbnN0IFdLUG9pbnQmIHBvc2l0aW9uLCBj
b25zdCBXS1NpemUmIHJhZGl1cywgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2VGYWN0
b3IpCisgICAgOiBtX2lkKGlkKQorICAgICwgbV9zdGF0ZShzdGF0ZSkKKyAgICAsIG1fc2NyZWVu
UG9zaXRpb24oc2NyZWVuUG9zaXRpb24pCisgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorICAg
ICwgbV9yYWRpdXMocmFkaXVzKQorICAgICwgbV9yb3RhdGlvbkFuZ2xlKHJvdGF0aW9uQW5nbGUp
CisgICAgLCBtX2ZvcmNlRmFjdG9yKGZvcmNlRmFjdG9yKQoreworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hQb2ludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0M2JjYmJkMTY2
YWRlMjAxNzgyN2RkNTk1YWUyMTg5OWMxODU3YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuaApAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRXdrVG91Y2hQb2ludF9oCisjZGVmaW5lIEV3
a1RvdWNoUG9pbnRfaAorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNsdWRlICJXS0V2ZW50RWZsLmgi
CisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRXdrVG91Y2hQb2ludCA6IHB1YmxpYyBBUElP
YmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBBUElPYmplY3Q6OlR5cGUgQVBJVHlw
ZSA9IFR5cGVUb3VjaFBvaW50OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrVG91Y2hQb2lu
dD4gY3JlYXRlKHVpbnQzMl90IGlkLCBXS1RvdWNoUG9pbnRTdGF0ZSBzdGF0ZSwgY29uc3QgV0tQ
b2ludCYgc2NyZWVuUG9zaXRpb24sIGNvbnN0IFdLUG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXS1Np
emUmIHJhZGl1cywgZmxvYXQgcm90YXRpb25BbmdsZSA9IDAsIGZsb2F0IGZvcmNlRmFjdG9yID0g
MSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrVG91Y2hQb2ludChpZCwg
c3RhdGUsIHNjcmVlblBvc2l0aW9uLCBwb3NpdGlvbiwgcmFkaXVzLCByb3RhdGlvbkFuZ2xlLCBm
b3JjZUZhY3RvcikpOworICAgIH0KKworICAgIHVpbnQzMl90IGlkKCkgY29uc3QgeyByZXR1cm4g
bV9pZDsgfQorICAgIFdLVG91Y2hQb2ludFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZTsgfQorICAgIFdLUG9pbnQgc2NyZWVuUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Nj
cmVlblBvc2l0aW9uOyB9CisgICAgV0tQb2ludCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cG9zaXRpb247IH0KKyAgICBXS1NpemUgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXM7
IH0KKyAgICBmbG9hdCByb3RhdGlvbkFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9yb3RhdGlvbkFu
Z2xlOyB9CisgICAgZmxvYXQgZm9yY2VGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlRmFj
dG9yOyB9CisKK3ByaXZhdGU6CisgICAgRXdrVG91Y2hQb2ludCh1aW50MzJfdCBpZCwgV0tUb3Vj
aFBvaW50U3RhdGUsIGNvbnN0IFdLUG9pbnQmLCBjb25zdCBXS1BvaW50JiwgY29uc3QgV0tTaXpl
JiwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2VGYWN0b3IpOworCisgICAgdmlydHVh
bCBBUElPYmplY3Q6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAg
IHVpbnQzMl90IG1faWQ7CisgICAgV0tUb3VjaFBvaW50U3RhdGUgbV9zdGF0ZTsKKyAgICBXS1Bv
aW50IG1fc2NyZWVuUG9zaXRpb247CisgICAgV0tQb2ludCBtX3Bvc2l0aW9uOworICAgIFdLU2l6
ZSBtX3JhZGl1czsKKyAgICBmbG9hdCBtX3JvdGF0aW9uQW5nbGU7CisgICAgZmxvYXQgbV9mb3Jj
ZUZhY3RvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFRPVUNIX0VWRU5UUykKKworI2VuZGlmIC8qIEV3a1RvdWNoUG9pbnRfaCAqLwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKaW5kZXggNWMyYjNiYTQzZmE1ZjUyOGI3MTFj
MTUyYzVhZGVjOTc5ZDIxZDQxZS4uYTE3ODQxNThjNGJjNTIwMjRhZGUwMDRkNTg3MzY4MTNkM2U3
NzBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC00Niw2
ICs0NiwxMCBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNlbmRp
ZgogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJFd2tUb3VjaEV2ZW50Lmgi
CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtNTE5LDQgKzUyMywxMiBAQCB2b2lkIFdlYlZpZXc6OnBhZ2VU
cmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiAgICAgbV9ld2tWaWV3LT5zY2hlZHVsZVVwZGF0ZURp
c3BsYXkoKTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIFdlYlZpZXc6OnNl
bmRUb3VjaEV2ZW50KEV3a1RvdWNoRXZlbnQqIHRvdWNoRXZlbnQpCit7CisgICAgQVNTRVJUKHRv
dWNoRXZlbnQpOworICAgIG1fcGFnZS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2
ZW50KHRvdWNoRXZlbnQsIHRyYW5zZm9ybUZyb21TY2VuZSgpKSk7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCmlu
ZGV4IDlmNWY2ZjQ3NjZlYTgwMDFmZGU5ODc5NDBmYzUyZGQ4NmI2MmNhOGEuLjExNDFhMzhkOTgw
YzQ4ZjU1NTVmNWQwMmI5OWE3ZTY3MGU5MDcxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViVmlldy5oCkBAIC00Niw2ICs0NiwxMCBAQCBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
K2NsYXNzIEV3a1RvdWNoRXZlbnQ7CisjZW5kaWYKKwogY2xhc3MgV2ViVmlldyA6IHB1YmxpYyBB
UElPYmplY3QsIHB1YmxpYyBQYWdlQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
VHlwZSBBUElUeXBlID0gVHlwZVZpZXc7CkBAIC04MCw2ICs4NCwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBleGl0RnVsbFNjcmVlbigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoRXdrVG91Y2hFdmVudCopOworI2VuZGlmCisKICAg
ICAvLyBWaWV3IGNsaWVudC4KICAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tWaWV3
Q2xpZW50Kik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199797</attachid>
            <date>2013-04-26 01:18:18 -0700</date>
            <delta_ts>2013-06-26 22:15:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130426171737.patch</filename>
            <type>text/plain</type>
            <size>38968</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ5MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGU3MDg2OGZjYTM4ZTY4
YTc2Y2I3OGVlNGU3NDA3YzNlM2M4ZTY3NC4uYTQ5NTNkNDk3MGMyNTQ0MzEzMTY2ZTlmNjIxZmZk
MWVlNTI3ZWE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEzLTA0LTI2ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvdWNoIGV2ZW50cyBmb3Igb3VyIHRhcmdldCBw
bGF0Zm9ybXMgZGlmZmVyIChYSW5wdXQyLCBXYXlsYW5kLCBUaXplbikgc28KKyAgICAgICAgZm9y
IHRoZSBFRkwgcG9ydCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZmVlZCBldmVudHMgbWFudWFsbHku
CisKKyAgICAgICAgVG8ga2VlcCBvdXIgY3VycmVudCBBUEkgZm9yIGRlc2t0b3AgRUZML0VubGln
aHRlbm1lbnQgd29ya2luZywgd2UgY29udmVydAorICAgICAgICBvdXIgY3VycmVudGx5IGxpbWl0
ZWQgRUZMIGV2ZW50cyB0byB0aGUgbmV3IEVGTCBzcGVjaWZpYyBDIEV3a1RvdWNoUG9pbnQKKyAg
ICAgICAgYW5kIEV3a1RvdWNoRXZlbnQgdHlwZS4KKworICAgICAgICBFd2tUb3VjaFBvaW50IGFu
ZCBFd2tUb3VjaEV2ZW50IGFyZSBleHBvc2VkIGFzIFdLVG91Y2hQb2ludFJlZiBhbmQKKyAgICAg
ICAgV0tUb3VjaEV2ZW50UmVmLCBzbyB0aGV5IGFyZSBvcGFxdWUgaW4gdGhlIGFwcGxpY2F0aW9u
cy4KKworICAgICAgICBUaGUgV0tWaWV3U2VuZFRvdWNoRXZlbnQgY2FuIGJlIHVzZWQgZm9yIGFu
eSB1c2UtY2FzZSAocGxhdGZvcm0vcHJvZHVjdCkKKyAgICAgICAgbm90IGludm9sdmluZyB0aGUg
RUZMIGV2ZW50cy4KKworICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHdlIG1ha2Ugc3VyZSB0byBh
dm9pZCB1c2luZyBXSzIgaW50ZXJuYWxzIGluIG91ciBFRkwgQVBJCisgICAgICAgIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogU2hhcmVk
L0FQSS9jL2VmbC9XS0Jhc2VFZmwuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6Cisg
ICAgICAgICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKE5hdGl2ZVdl
YlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50OjpuYXRp
dmVFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hF
dmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojp0b1dlYlBsYXRmb3JtVG91Y2hQb2ludFN0YXRlKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OnRvV2ViRXZlbnRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6
dG9XZWJFdmVudE1vZGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rv
cnkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJFdmVudEZhY3RvcnkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHA6IEFkZGVk
LgorICAgICAgICAoV0tUb3VjaFBvaW50Q3JlYXRlKToKKyAgICAgICAgKFdLVG91Y2hFdmVudENy
ZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmg6IEFkZGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3RWZsLmNwcDoKKyAgICAgICAg
KFdLVmlld1NlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlld0VmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAg
ICAgICAodG9XS1RvdWNoUG9pbnRTdGF0ZSk6CisgICAgICAgICh0b1dLRXZlbnRNb2RpZmllcnMp
OgorICAgICAgICAoRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQpOgorICAgICAgICAoRXdrVmlldzo6
ZmVlZFRvdWNoRXZlbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkV3a1RvdWNo
RXZlbnQ6OkV3a1RvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRXdrVG91Y2hF
dmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChFd2tUb3VjaEV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6RXdrVG91Y2hFdmVudDo6ZXZlbnRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91
Y2hFdmVudDo6dG91Y2hQb2ludHMpOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaEV2ZW50Ojpt
b2RpZmllcnMpOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaEV2ZW50Ojp0aW1lc3RhbXApOgor
ICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaEV2ZW50Ojp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL0V3a1RvdWNoUG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OkV3a1RvdWNoUG9pbnQ6OkV3a1RvdWNoUG9pbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvRXdrVG91Y2hQb2ludC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChFd2tUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hQb2ludDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hQb2ludDo6aWQpOgorICAgICAgICAo
V2ViS2l0OjpFd2tUb3VjaFBvaW50OjpzdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkV3a1RvdWNo
UG9pbnQ6OnNjcmVlblBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hQb2ludDo6
cG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaFBvaW50OjpyYWRpdXMpOgorICAg
ICAgICAoV2ViS2l0OjpFd2tUb3VjaFBvaW50Ojpyb3RhdGlvbkFuZ2xlKToKKyAgICAgICAgKFdl
YktpdDo6RXdrVG91Y2hQb2ludDo6Zm9yY2VGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpFd2tU
b3VjaFBvaW50Ojp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0VmbDo6c2VuZFRv
dWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5oOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlZpZXdFZmwpOgorCiAyMDEzLTA0LTI0ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgV0VCIFNQRUVDSDogbGFu
Z3VhZ2Ugc3VwcG9ydCBkb2VzIG5vdCB3b3JrIGFzIGV4cGVjdGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDQzNTgxYzllMTQ5Mzk4YjMyYWFlOGJlOTRhZDExZTc4ZDYyMTQwMGYuLjU1
M2Q2NTcwMTA1YWY0NWU1OTFhMDc4Yjg4OTg1NTY0ZWNkMzdiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC00OCw2ICs0OCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
CiAgICAgVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcAogCisg
ICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tQYWdlRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0u
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudUxpc3RlbmVyLmNwcApAQCAt
MTAzLDYgKzEwNCw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Db250
ZXh0TWVudUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVm
bC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQuY3BwCisgICAgVUlQcm9jZXNz
L2VmbC9Fd2tUb3VjaFBvaW50LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5j
cHAKICAgICBVSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9JbnB1dE1ldGhvZENvbnRleHRFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L2VmbC9XS0Jhc2VFZmwuaAppbmRleCA3MmZiZmQzMDNjMDFjNzJiNTUzYmRmNjQ0ODJkNTJiNGEy
YjJjNGQ4Li45YzA3ZjhlMGM4Yzg2MmQ4MTQ0ZmE1YjliM2EwYjliM2U4YTk3OGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKQEAgLTI3LDUgKzI3LDcg
QEAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlldyogV0tWaWV3UmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQb3B1cEl0ZW0qIFdLUG9wdXBJdGVtUmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQb3B1cE1lbnVMaXN0ZW5lciogV0tQb3B1cE1lbnVMaXN0
ZW5lclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVG91Y2hQb2ludCogV0tUb3Vj
aFBvaW50UmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tUb3VjaEV2ZW50KiBXS1Rv
dWNoRXZlbnRSZWY7CiAKICNlbmRpZiAvKiBXS0Jhc2VFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SU9iamVjdC5oCmluZGV4IGEyMjVlMmFmM2E5MWJiZDMyMGE5NDc3MjBiMTdiNTg0OWExNGUxNjMu
LjQ4OGFjZTg2ZDNhNzg4NzMwYWQ5MTNmN2Y5OTE1YjIxNWFhYTMxYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJT2JqZWN0LmgKQEAgLTEzNiw2ICsxMzYsMTAgQEAgcHVibGljOgogI2VuZGlmCiAjaWYg
UExBVEZPUk0oRUZMKQogICAgICAgICBUeXBlUG9wdXBNZW51SXRlbSwKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgICAgICBUeXBlVG91Y2hQb2ludCwKKyAgICAgICAgVHlwZVRvdWNoRXZl
bnQsCisjZW5kaWYKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0
aXZlV2ViVG91Y2hFdmVudC5oCmluZGV4IGM2M2QxY2YwNzA1YmNhMWVhNTRkMzg0ZjNmMGY1YmM4
MzExYWQ2MmEuLmE2ODA3YTViZjU0NjY2YTNiZjJiZjRjOTI4ZjJiOWY2YTlkODZlNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaApAQCAtMzEsOSArMzEs
OSBAQAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgogI2VsaWYgUExB
VEZPUk0oRUZMKQotI2luY2x1ZGUgImV3a190b3VjaC5oIgotI2luY2x1ZGUgPEV2YXMuaD4KKyNp
bmNsdWRlICJFd2tUb3VjaEV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zv
cm0uaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC00MywxNiArNDMsMjAgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKFFUKQogICAgIGV4
cGxpY2l0IE5hdGl2ZVdlYlRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBjb25zdCBRVHJh
bnNmb3JtJiBmcm9tSXRlbVRyYW5zZm9ybSk7CiAjZWxpZiBQTEFURk9STShFRkwpCi0gICAgTmF0
aXZlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSwgY29uc3QgRWluYV9MaXN0Kiwg
Y29uc3QgRXZhc19Nb2RpZmllciosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9X
ZWJDb250ZW50LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVu
LCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEV3a1RvdWNoRXZl
bnQqLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oUVQpCiAgICAgY29uc3QgUVRvdWNoRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyBy
ZXR1cm4gJm1fbmF0aXZlRXZlbnQ7IH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBjb25zdCBF
d2tUb3VjaEV2ZW50KiBuYXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQu
Z2V0KCk7IH0KICNlbmRpZgogCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKFFUKQogICAgIGNvbnN0
IFFUb3VjaEV2ZW50IG1fbmF0aXZlRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgUmVm
UHRyPEV3a1RvdWNoRXZlbnQ+IG1fbmF0aXZlRXZlbnQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCmlu
ZGV4IDcyNzk2ODM1YTY2NDdiMDI3MmRlZjIzZWU2YzIwYjE4MTM5YTkxNjUuLjBkM2IwNjA1MzRh
M2I3ODIxMGFkOTlmYmJmMzVjZWZmNzFhYTNiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2VmbC9OYXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNwcApAQCAtMzIsOCArMzIsOSBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotTmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2Vi
VG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBv
aW50cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJzLCBjb25zdCBXZWJDb3JlOjpBZmZp
bmVUcmFuc2Zvcm0mIHRvV2ViQ29udGVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3Jt
JiB0b0RldmljZVNjcmVlbiwgZG91YmxlIHRpbWVzdGFtcCkKLSAgICA6IFdlYlRvdWNoRXZlbnQo
V2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZp
ZXJzLCB0b1dlYkNvbnRlbnQsIHRvRGV2aWNlU2NyZWVuLCB0aW1lc3RhbXApKQorTmF0aXZlV2Vi
VG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudChFd2tUb3VjaEV2ZW50KiB0b3VjaEV2ZW50
LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29udGVudCkKKyAgICA6IFdl
YlRvdWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KHRvdWNoRXZl
bnQsIHRvV2ViQ29udGVudCkpCisgICAgLCBtX25hdGl2ZUV2ZW50KHRvdWNoRXZlbnQpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRl
eCA0ZTIxYWU5OTYxYjQxZjZjM2VmNjk3MmM3MTJiZWZhZDI1YWEzMWZmLi43ZjViM2VlYWFkNjIw
NDQ4NTM3OTE5OWUwMDgxNDE5ZDVlYjMwNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0zMSw2ICszMSwxMyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4K
IAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiRXdrVG91Y2hFdmVudC5oIgor
I2luY2x1ZGUgIkV3a1RvdWNoUG9pbnQuaCIKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgor
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIwNSw1NyArMjEyLDcwIEBAIFdlYktleWJvYXJk
RXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNf
RXZlbnRfS2V5X1VwCiB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotc3RhdGljIGlubGlu
ZSBXZWJFdmVudDo6VHlwZSB0eXBlRm9yVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0
eXBlKQorc3RhdGljIGlubGluZSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0
ZSB0b1dlYlBsYXRmb3JtVG91Y2hQb2ludFN0YXRlKFdLVG91Y2hQb2ludFN0YXRlIHN0YXRlKQog
ewotICAgIGlmICh0eXBlID09IEVXS19UT1VDSF9TVEFSVCkKKyAgICBzd2l0Y2ggKHN0YXRlKSB7
CisgICAgY2FzZSBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFJlbGVhc2VkOgorICAgICAgICByZXR1
cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOworICAgIGNhc2Uga1dLVG91
Y2hQb2ludFN0YXRlVG91Y2hNb3ZlZDoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQ
b2ludDo6VG91Y2hNb3ZlZDsKKyAgICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3Nl
ZDoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkOwor
ICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hTdGF0aW9uYXJ5OgorICAgICAgICByZXR1
cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisgICAgY2FzZSBrV0tU
b3VjaFBvaW50U3RhdGVUb3VjaENhbmNlbGxlZDoKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaENhbmNlbGxlZDsKKyAgICB9Cit9CisKK3N0
YXRpYyBpbmxpbmUgV2ViRXZlbnQ6OlR5cGUgdG9XZWJFdmVudFR5cGUoV0tFdmVudFR5cGUgdHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoU3Rh
cnQ6CiAgICAgICAgIHJldHVybiBXZWJFdmVudDo6VG91Y2hTdGFydDsKLSAgICBpZiAodHlwZSA9
PSBFV0tfVE9VQ0hfTU9WRSkKKyAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoTW92ZToKICAgICAg
ICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaE1vdmU7Ci0gICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNI
X0VORCkKKyAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoRW5kOgogICAgICAgICByZXR1cm4gV2Vi
RXZlbnQ6OlRvdWNoRW5kOwotICAgIGlmICh0eXBlID09IEVXS19UT1VDSF9DQU5DRUwpCisgICAg
Y2FzZSBrV0tFdmVudFR5cGVUb3VjaENhbmNlbDoKICAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpU
b3VjaENhbmNlbDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV2ViRXZlbnQ6Ok5vVHlw
ZTsKKyAgICB9CiAKLSAgICByZXR1cm4gV2ViRXZlbnQ6Ok5vVHlwZTsKIH0KIAotV2ViVG91Y2hF
dmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50
X1R5cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIq
IG1vZGlmaWVycywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApCitzdGF0aWMg
aW5saW5lIFdlYkV2ZW50OjpNb2RpZmllcnMgdG9XZWJFdmVudE1vZGlmaWVycyh1bnNpZ25lZCBt
b2RpZmllcnMpCiB7CisgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKworICAgIGlmIChtb2RpZmll
cnMgJiBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5KQorICAgICAgICByZXN1bHQgfD0gV2ViRXZl
bnQ6OlNoaWZ0S2V5OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc0NvbnRy
b2xLZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6Q29udHJvbEtleTsKKyAgICBpZiAo
bW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmllcnNBbHRLZXkpCisgICAgICAgIHJlc3VsdCB8PSBX
ZWJFdmVudDo6QWx0S2V5OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc01l
dGFLZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6TWV0YUtleTsKKworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZpZXJzPihyZXN1bHQpOworfQorCitXZWJUb3Vj
aEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBFd2tUb3Vj
aEV2ZW50KiBldmVudCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQpCit7Cisg
ICAgSW1tdXRhYmxlQXJyYXkqIHRvdWNoUG9pbnRzQXJyYXkgPSB0b0ltcGwoZXZlbnQtPnRvdWNo
UG9pbnRzKCkpOworICAgIHNpemVfdCBzaXplID0gdG91Y2hQb2ludHNBcnJheS0+c2l6ZSgpOwor
CiAgICAgVmVjdG9yPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4gdG91Y2hQb2ludHM7Ci0gICAgdG91
Y2hQb2ludHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlaW5hX2xpc3RfY291bnQocG9pbnRzKSk7
Ci0KLSAgICBjb25zdCBFaW5hX0xpc3QqIGxpc3Q7Ci0gICAgdm9pZCogaXRlbTsKLSAgICBFSU5B
X0xJU1RfRk9SRUFDSChwb2ludHMsIGxpc3QsIGl0ZW0pIHsKLSAgICAgICAgRXdrX1RvdWNoX1Bv
aW50KiBwb2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGl0ZW0pOwotCi0gICAg
ICAgIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQb2ludFN0YXRlIHN0YXRlOwotICAgICAg
ICBzd2l0Y2ggKHBvaW50LT5zdGF0ZSkgewotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRf
VVA6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxl
YXNlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRf
TU9WRToKLSAgICAgICAgICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1v
dmVkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9E
T1dOOgotICAgICAgICAgICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJl
c3NlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRf
U1RJTEw6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hT
dGF0aW9uYXJ5OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9Q
T0lOVF9DQU5DRUw6Ci0gICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hDYW5jZWxsZWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0KLQotICAgICAgICBJbnRQb2ludCBwb3MocG9pbnQtPngsIHBvaW50LT55KTsKLSAg
ICAgICAgdG91Y2hQb2ludHMudW5jaGVja2VkQXBwZW5kKFdlYlBsYXRmb3JtVG91Y2hQb2ludChw
b2ludC0+aWQsIHN0YXRlLCB0b0RldmljZVNjcmVlbi5tYXBQb2ludChwb3MpLCB0b1dlYkNvbnRl
bnQubWFwUG9pbnQocG9zKSkpOworICAgIHRvdWNoUG9pbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc2l6ZSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICBpZiAoRXdrVG91Y2hQb2ludCogcG9pbnQgPSB0b3VjaFBvaW50c0FycmF5LT5hdDxFd2tU
b3VjaFBvaW50PihpKSkKKyAgICAgICAgICAgIHRvdWNoUG9pbnRzLnVuY2hlY2tlZEFwcGVuZChX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQtPmlkKCksIHRvV2ViUGxhdGZvcm1Ub3VjaFBvaW50
U3RhdGUocG9pbnQtPnN0YXRlKCkpLCB0b0ludFBvaW50KHBvaW50LT5zY3JlZW5Qb3NpdGlvbigp
KSwgdG9XZWJDb250ZW50Lm1hcFBvaW50KHRvSW50UG9pbnQocG9pbnQtPnBvc2l0aW9uKCkpKSwg
dG9JbnRTaXplKHBvaW50LT5yYWRpdXMoKSksIHBvaW50LT5yb3RhdGlvbkFuZ2xlKCksIHBvaW50
LT5mb3JjZUZhY3RvcigpKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQodHlw
ZUZvclRvdWNoRXZlbnQodHlwZSksIHRvdWNoUG9pbnRzLCBtb2RpZmllcnNGb3JFdmVudChtb2Rp
ZmllcnMpLCB0aW1lc3RhbXApOworICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHRvV2ViRXZlbnRU
eXBlKGV2ZW50LT5ldmVudFR5cGUoKSksIHRvdWNoUG9pbnRzLCB0b1dlYkV2ZW50TW9kaWZpZXJz
KGV2ZW50LT5tb2RpZmllcnMoKSksIGV2ZW50LT50aW1lc3RhbXAoKSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXggZTQ0NGRi
MjlkNTIzODQwMjIwNDFlNWRiOGQyNDQwYzMwZDgyM2U4MC4uNGE5ODk0ZTlhZjQ1NmJhOGYxNTMy
MDZiMGViN2I3ZjNmNDhiZGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2Vm
bC9XZWJFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2
ZW50RmFjdG9yeS5oCkBAIC0yNywxMiArMjcsMTUgQEAKICNkZWZpbmUgV2ViRXZlbnRGYWN0b3J5
X2gKIAogI2luY2x1ZGUgIldlYkV2ZW50LmgiCi0jaW5jbHVkZSAiZXdrX3RvdWNoLmgiCiAjaW5j
bHVkZSA8RXZhcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIEV3a1Rv
dWNoRXZlbnQ7CisjZW5kaWYKKwogY2xhc3MgV2ViRXZlbnRGYWN0b3J5IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZl
bnRfTW91c2VfRG93biosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdl
YkNvcmU6OkFmZmluZVRyYW5zZm9ybSYpOwpAQCAtNDIsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFz
X0V2ZW50X0tleV9Eb3duKik7CiAgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2Vi
S2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9VcCopOwogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCi0gICAgc3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChF
d2tfVG91Y2hfRXZlbnRfVHlwZSwgY29uc3QgRWluYV9MaXN0KiwgY29uc3QgRXZhc19Nb2RpZmll
ciosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkFmZmlu
ZVRyYW5zZm9ybSYsIGRvdWJsZSB0aW1lc3RhbXApOworICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50
IGNyZWF0ZVdlYlRvdWNoRXZlbnQoY29uc3QgRXdrVG91Y2hFdmVudCosIGNvbnN0IFdlYkNvcmU6
OkFmZmluZVRyYW5zZm9ybSYpOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaAppbmRleCBkM2JjYTkyNjU3NzI3ODI1
Y2ZhMTZmMjIxNTIwYmMxMDM2ZWJlOTNiLi4zNTFhMTlmZmU1MjdjMTI1OGQ1ZDNhZGQwOTk1MDY2
ZDBjODYxOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLQVBJQ2FzdEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tBUElDYXN0RWZsLmgKQEAgLTM3LDYgKzM3LDE0IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1Zp
ZXdSZWYsIFdlYlZpZXcpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQb3B1cEl0ZW1SZWYsIFdlYlBv
cHVwSXRlbUVmbCkKIFdLX0FERF9BUElfTUFQUElORyhXS1BvcHVwTWVudUxpc3RlbmVyUmVmLCBX
ZWJQb3B1cE1lbnVMaXN0ZW5lckVmbCkKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitjbGFz
cyBFd2tUb3VjaEV2ZW50OworY2xhc3MgRXdrVG91Y2hQb2ludDsKKworV0tfQUREX0FQSV9NQVBQ
SU5HKFdLVG91Y2hFdmVudFJlZiwgRXdrVG91Y2hFdmVudCkKK1dLX0FERF9BUElfTUFQUElORyhX
S1RvdWNoUG9pbnRSZWYsIEV3a1RvdWNoUG9pbnQpCisjZW5kaWYKKwogLy8gRW51bSBjb252ZXJz
aW9ucy4KIGlubGluZSBXS1BvcHVwSXRlbVRleHREaXJlY3Rpb24gdG9BUEkoV2ViQ29yZTo6VGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDUwNzFmOTBiZDViN2M2MDhj
NjRhZjZkMmRmMDA0M2Q4NzA1MjIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0V2ZW50
RWZsLmgiCisKKyNpbmNsdWRlICJFd2tUb3VjaEV2ZW50LmgiCisjaW5jbHVkZSAiRXdrVG91Y2hQ
b2ludC5oIgorI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKwor
V0tUb3VjaFBvaW50UmVmIFdLVG91Y2hQb2ludENyZWF0ZShpbnQgaWQsIFdLUG9pbnQgcG9zaXRp
b24sIFdLUG9pbnQgc2NyZWVuUG9zaXRpb24sIFdLVG91Y2hQb2ludFN0YXRlIHN0YXRlLCBXS1Np
emUgcmFkaXVzLCBmbG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZUZhY3RvcikKK3sKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHJldHVybiB0b0FQSShFd2tUb3VjaFBvaW50Ojpj
cmVhdGUoaWQsIHN0YXRlLCBzY3JlZW5Qb3NpdGlvbiwgcG9zaXRpb24sIHJhZGl1cywgcm90YXRp
b25BbmdsZSwgZm9yY2VGYWN0b3IpLmxlYWtSZWYoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShpZCk7CisgICAgVU5VU0VEX1BBUkFNKHBvc2l0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oc2Ny
ZWVuUG9zaXRpb24pOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFN
KHJhZGl1cyk7CisgICAgVU5VU0VEX1BBUkFNKHJvdGF0aW9uQW5nbGUpOworICAgIFVOVVNFRF9Q
QVJBTShmb3JjZUZhY3Rvcik7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tUb3VjaEV2
ZW50UmVmIFdLVG91Y2hFdmVudENyZWF0ZShXS0V2ZW50VHlwZSB0eXBlLCBXS0FycmF5UmVmIHdr
VG91Y2hQb2ludHMsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1w
KQoreworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgcmV0dXJuIHRvQVBJKEV3a1RvdWNo
RXZlbnQ6OmNyZWF0ZSh0eXBlLCB3a1RvdWNoUG9pbnRzLCBtb2RpZmllcnMsIHRpbWVzdGFtcCku
bGVha1JlZigpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgIFVOVVNFRF9Q
QVJBTSh3a1RvdWNoUG9pbnRzKTsKKyAgICBVTlVTRURfUEFSQU0obW9kaWZpZXJzKTsKKyAgICBV
TlVTRURfUEFSQU0odGltZXN0YW1wKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZGEyNjM2ZTY1MTcxYzhiOTNiYzc0MjQ1ZmQzY2I5YTc3MmM5MmMzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmgKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9u
aWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdLRXZlbnRFZmxfaAorI2RlZmluZSBXS0V2ZW50RWZsX2gKKworI2luY2x1ZGUgPFdl
YktpdDIvV0tFdmVudC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5oPgorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0gV0tFdmVudFR5cGUg
eworICAgIGtXS0V2ZW50VHlwZU5vVHlwZSA9IC0xLAorICAgIGtXS0V2ZW50VHlwZVRvdWNoU3Rh
cnQsCisgICAga1dLRXZlbnRUeXBlVG91Y2hNb3ZlLAorICAgIGtXS0V2ZW50VHlwZVRvdWNoRW5k
LAorICAgIGtXS0V2ZW50VHlwZVRvdWNoQ2FuY2VsCit9OwordHlwZWRlZiBlbnVtIFdLRXZlbnRU
eXBlIFdLRXZlbnRUeXBlOworCitlbnVtIFdLVG91Y2hQb2ludFN0YXRlIHsKKyAgICBrV0tUb3Vj
aFBvaW50U3RhdGVUb3VjaFJlbGVhc2VkLAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJl
c3NlZCwKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkLAorICAgIGtXS1RvdWNoUG9p
bnRTdGF0ZVRvdWNoU3RhdGlvbmFyeSwKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaENhbmNl
bGxlZAorfTsKK3R5cGVkZWYgZW51bSBXS1RvdWNoUG9pbnRTdGF0ZSBXS1RvdWNoUG9pbnRTdGF0
ZTsKKworV0tfRVhQT1JUIFdLVG91Y2hQb2ludFJlZiBXS1RvdWNoUG9pbnRDcmVhdGUoaW50IGlk
LCBXS1BvaW50IHBvc2l0aW9uLCBXS1BvaW50IHNjcmVlblBvc2l0aW9uLCBXS1RvdWNoUG9pbnRT
dGF0ZSwgV0tTaXplIHJhZGl1cywgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2VGYWN0
b3IpOworV0tfRVhQT1JUIFdLVG91Y2hFdmVudFJlZiBXS1RvdWNoRXZlbnRDcmVhdGUoV0tFdmVu
dFR5cGUsIFdLQXJyYXlSZWYsIFdLRXZlbnRNb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tFdmVudEVmbF9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmll
d0VmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlld0VmbC5j
cHAKaW5kZXggMDVjMTE2ZGUyYTVkZjdjMGIxZGM3YjgxNzRhMGVmMmQ1ZmIyMmFiYy4uMGZhMTNk
ZGEzMTkxZDE1NjcwMzk0OGI3NGRhMGUyOTdmN2UyMjdlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXdFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3RWZsLmNwcApAQCAtNDMsMyArNDMsMTMgQEAg
V0tJbWFnZVJlZiBXS1ZpZXdDcmVhdGVTbmFwc2hvdChXS1ZpZXdSZWYgdmlld1JlZikKICAgICBF
d2tWaWV3KiBld2tWaWV3ID0gc3RhdGljX2Nhc3Q8V2ViVmlld0VmbCo+KHRvSW1wbCh2aWV3UmVm
KSktPmV3a1ZpZXcoKTsKICAgICByZXR1cm4gV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2Uo
ZXdrVmlldy0+dGFrZVNuYXBzaG90KCkuZ2V0KCksIDAgLyogb3B0aW9ucyAqLyk7CiB9CisKK3Zv
aWQgV0tWaWV3U2VuZFRvdWNoRXZlbnQoV0tWaWV3UmVmIHZpZXdSZWYsIFdLVG91Y2hFdmVudFJl
ZiB0b3VjaEV2ZW50UmVmKQoreworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgc3RhdGlj
X2Nhc3Q8V2ViVmlld0VmbCo+KHRvSW1wbCh2aWV3UmVmKSktPnNlbmRUb3VjaEV2ZW50KHRvSW1w
bCh0b3VjaEV2ZW50UmVmKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2aWV3UmVmKTsKKyAg
ICBVTlVTRURfUEFSQU0odG91Y2hFdmVudFJlZik7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3RWZsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlld0VmbC5oCmluZGV4IGJiY2QyZWM5NmQxNDIy
Zjg3ZGUxZDgyMzE5NTBjYjQxNDQ3MjJjMjEuLmRjNTkwMGYyM2VkMzQzMzcwZTQ3ZmE0NDA2ZGU1
Zjg0NWE2ZDMxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tWaWV3RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1ZpZXdFZmwuaApAQCAtMzgsNiArMzgsOCBAQCBXS19FWFBPUlQgdm9pZCBXS1ZpZXdQYWludFRv
Q2Fpcm9TdXJmYWNlKFdLVmlld1JlZiwgY2Fpcm9fc3VyZmFjZV90Kik7CiAKIFdLX0VYUE9SVCBX
S0ltYWdlUmVmIFdLVmlld0NyZWF0ZVNuYXBzaG90KFdLVmlld1JlZik7CiAKK1dLX0VYUE9SVCB2
b2lkIFdLVmlld1NlbmRUb3VjaEV2ZW50KFdLVmlld1JlZiwgV0tUb3VjaEV2ZW50UmVmKTsKKwog
I2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggNzFjMzJlNWI1Y2ExYzAwZjdjY2E4NGJlMThiYzcx
Nzk4NzkyYzk0Yi4uOGNiMDI3YzQyOWJlMWQyYjE5NTI5N2Q0YzgzNTRkN2Q0MTQ2YmViNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTM2LDcg
KzM2LDkgQEAKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAj
aW5jbHVkZSAiU25hcHNob3RJbWFnZUdMLmgiCiAjaW5jbHVkZSAiVmlld0NsaWVudEVmbC5oIgor
I2luY2x1ZGUgIldLQXJyYXkuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKKyNpbmNsdWRl
ICJXS0V2ZW50RWZsLmgiCiAjaW5jbHVkZSAiV0tHZW9tZXRyeS5oIgogI2luY2x1ZGUgIldLTnVt
YmVyLmgiCiAjaW5jbHVkZSAiV0tQYWdlR3JvdXAuaCIKQEAgLTcwNCw5ICs3MDYsNTEgQEAgdm9p
ZCBFd2tWaWV3OjpzZXRNb3VzZUV2ZW50c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogfQogCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKK3N0YXRpYyBXS1RvdWNoUG9pbnRTdGF0ZSB0b1dLVG91Y2hQ
b2ludFN0YXRlKEV2YXNfVG91Y2hfUG9pbnRfU3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNoIChz
dGF0ZSkgeworICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9VUDoKKyAgICAgICAgcmV0dXJuIGtX
S1RvdWNoUG9pbnRTdGF0ZVRvdWNoUmVsZWFzZWQ7CisgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5U
X01PVkU6CisgICAgICAgIHJldHVybiBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkOworICAg
IGNhc2UgRVZBU19UT1VDSF9QT0lOVF9ET1dOOgorICAgICAgICByZXR1cm4ga1dLVG91Y2hQb2lu
dFN0YXRlVG91Y2hQcmVzc2VkOworICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9TVElMTDoKKyAg
ICAgICAgcmV0dXJuIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoU3RhdGlvbmFyeTsKKyAgICBjYXNl
IEVWQVNfVE9VQ0hfUE9JTlRfQ0FOQ0VMOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBr
V0tUb3VjaFBvaW50U3RhdGVUb3VjaENhbmNlbGxlZDsKKyAgICB9Cit9CisKK3N0YXRpYyBXS0V2
ZW50TW9kaWZpZXJzIHRvV0tFdmVudE1vZGlmaWVycyhjb25zdCBFdmFzX01vZGlmaWVyKiBtb2Rp
ZmllcnMpCit7CisgICAgV0tFdmVudE1vZGlmaWVycyB3a01vZGlmaWVycyA9IDA7CisgICAgaWYg
KGV2YXNfa2V5X21vZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJTaGlmdCIpKQorICAgICAgICB3
a01vZGlmaWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5OworICAgIGlmIChldmFzX2tl
eV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiQ29udHJvbCIpKQorICAgICAgICB3a01vZGlm
aWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXk7CisgICAgaWYgKGV2YXNfa2V5X21v
ZGlmaWVyX2lzX3NldChtb2RpZmllcnMsICJBbHQiKSkKKyAgICAgICAgd2tNb2RpZmllcnMgfD0g
a1dLRXZlbnRNb2RpZmllcnNBbHRLZXk7CisgICAgaWYgKGV2YXNfa2V5X21vZGlmaWVyX2lzX3Nl
dChtb2RpZmllcnMsICJNZXRhIikpCisgICAgICAgIHdrTW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9k
aWZpZXJzTWV0YUtleTsKKworICAgIHJldHVybiB3a01vZGlmaWVyczsKK30KKwogdm9pZCBFd2tW
aWV3OjpmZWVkVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5h
X0xpc3QqIHBvaW50cywgY29uc3QgRXZhc19Nb2RpZmllciogbW9kaWZpZXJzKQogewotICAgIHBh
Z2UoKS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywg
bW9kaWZpZXJzLCB3ZWJWaWV3KCktPnRyYW5zZm9ybUZyb21TY2VuZSgpLCB0cmFuc2Zvcm1Ub1Nj
cmVlbigpLCBlY29yZV90aW1lX2dldCgpKSk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gZWluYV9s
aXN0X2NvdW50KHBvaW50cyk7CisgICAgT3duQXJyYXlQdHI8V0tUeXBlUmVmPiB0b3VjaFBvaW50
cyA9IGFkb3B0QXJyYXlQdHIobmV3IFdLVHlwZVJlZltsZW5ndGhdKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBw
b2ludCA9IHN0YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGVpbmFfbGlzdF9udGgocG9pbnRz
LCBpKSk7CisgICAgICAgIEFTU0VSVChwb2ludCk7CisgICAgICAgIEludFBvaW50IHBvc2l0aW9u
KHBvaW50LT54LCBwb2ludC0+eSk7CisgICAgICAgIHRvdWNoUG9pbnRzW2ldID0gV0tUb3VjaFBv
aW50Q3JlYXRlKHBvaW50LT5pZCwgdG9BUEkoSW50UG9pbnQocG9zaXRpb24pKSwgdG9BUEkodHJh
bnNmb3JtVG9TY3JlZW4oKS5tYXBQb2ludChwb3NpdGlvbikpLCB0b1dLVG91Y2hQb2ludFN0YXRl
KHBvaW50LT5zdGF0ZSksIFdLU2l6ZU1ha2UoMCwgMCksIDAsIDEpOworICAgIH0KKyAgICBXS1Jl
dGFpblB0cjxXS0FycmF5UmVmPiB3a1RvdWNoUG9pbnRzKEFkb3B0V0ssIFdLQXJyYXlDcmVhdGVB
ZG9wdGluZ1ZhbHVlcyh0b3VjaFBvaW50cy5nZXQoKSwgbGVuZ3RoKSk7CisKKyAgICBXS1ZpZXdT
ZW5kVG91Y2hFdmVudCh3a1ZpZXcoKSwgYWRvcHRXSyhXS1RvdWNoRXZlbnRDcmVhdGUoc3RhdGlj
X2Nhc3Q8V0tFdmVudFR5cGU+KHR5cGUpLCB3a1RvdWNoUG9pbnRzLmdldCgpLCB0b1dLRXZlbnRN
b2RpZmllcnMobW9kaWZpZXJzKSwgZWNvcmVfdGltZV9nZXQoKSkpLmdldCgpKTsKIH0KIAogdm9p
ZCBFd2tWaWV3OjpzZXRUb3VjaEV2ZW50c0VuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtMTIzNSwy
NCArMTI3OSwyMiBAQCB2b2lkIEV3a1ZpZXc6OmZlZWRUb3VjaEV2ZW50cyhFd2tfVG91Y2hfRXZl
bnRfVHlwZSB0eXBlKQogewogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRh
KCk7CiAKLSAgICB1bnNpZ25lZCBjb3VudCA9IGV2YXNfdG91Y2hfcG9pbnRfbGlzdF9jb3VudChz
ZC0+YmFzZS5ldmFzKTsKLSAgICBpZiAoIWNvdW50KQorICAgIHVuc2lnbmVkIGxlbmd0aCA9IGV2
YXNfdG91Y2hfcG9pbnRfbGlzdF9jb3VudChzZC0+YmFzZS5ldmFzKTsKKyAgICBpZiAoIWxlbmd0
aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRWluYV9MaXN0KiBwb2ludHMgPSAwOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIEV3a19Ub3VjaF9Q
b2ludCogcG9pbnQgPSBuZXcgRXdrX1RvdWNoX1BvaW50OwotICAgICAgICBwb2ludC0+aWQgPSBl
dmFzX3RvdWNoX3BvaW50X2xpc3RfbnRoX2lkX2dldChzZC0+YmFzZS5ldmFzLCBpKTsKLSAgICAg
ICAgZXZhc190b3VjaF9wb2ludF9saXN0X250aF94eV9nZXQoc2QtPmJhc2UuZXZhcywgaSwgJnBv
aW50LT54LCAmcG9pbnQtPnkpOwotICAgICAgICBwb2ludC0+c3RhdGUgPSBldmFzX3RvdWNoX3Bv
aW50X2xpc3RfbnRoX3N0YXRlX2dldChzZC0+YmFzZS5ldmFzLCBpKTsKLSAgICAgICAgcG9pbnRz
ID0gZWluYV9saXN0X2FwcGVuZChwb2ludHMsIHBvaW50KTsKKyAgICBPd25BcnJheVB0cjxXS1R5
cGVSZWY+IHRvdWNoUG9pbnRzID0gYWRvcHRBcnJheVB0cihuZXcgV0tUeXBlUmVmW2xlbmd0aF0p
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBp
bnQgeCwgeTsKKyAgICAgICAgZXZhc190b3VjaF9wb2ludF9saXN0X250aF94eV9nZXQoc2QtPmJh
c2UuZXZhcywgaSwgJngsICZ5KTsKKyAgICAgICAgSW50UG9pbnQgcG9zaXRpb24oeCwgeSk7Cisg
ICAgICAgIEV2YXNfVG91Y2hfUG9pbnRfU3RhdGUgc3RhdGUgPSBldmFzX3RvdWNoX3BvaW50X2xp
c3RfbnRoX3N0YXRlX2dldChzZC0+YmFzZS5ldmFzLCBpKTsKKyAgICAgICAgaW50IGlkID0gZXZh
c190b3VjaF9wb2ludF9saXN0X250aF9pZF9nZXQoc2QtPmJhc2UuZXZhcywgaSk7CisgICAgICAg
IHRvdWNoUG9pbnRzW2ldID0gV0tUb3VjaFBvaW50Q3JlYXRlKGlkLCB0b0FQSShJbnRQb2ludChw
b3NpdGlvbikpLCB0b0FQSSh0cmFuc2Zvcm1Ub1NjcmVlbigpLm1hcFBvaW50KHBvc2l0aW9uKSks
IHRvV0tUb3VjaFBvaW50U3RhdGUoc3RhdGUpLCBXS1NpemVNYWtlKDAsIDApLCAwLCAxKTsKICAg
ICB9CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tUb3VjaFBvaW50cyhBZG9wdFdLLCBX
S0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXModG91Y2hQb2ludHMuZ2V0KCksIGxlbmd0aCkpOwog
Ci0gICAgZmVlZFRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBldmFzX2tleV9tb2RpZmllcl9nZXQo
c2QtPmJhc2UuZXZhcykpOwotCi0gICAgdm9pZCogZGF0YTsKLSAgICBFSU5BX0xJU1RfRlJFRShw
b2ludHMsIGRhdGEpCi0gICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQq
PihkYXRhKTsKKyAgICBXS1ZpZXdTZW5kVG91Y2hFdmVudCh3a1ZpZXcoKSwgYWRvcHRXSyhXS1Rv
dWNoRXZlbnRDcmVhdGUoc3RhdGljX2Nhc3Q8V0tFdmVudFR5cGU+KHR5cGUpLCB3a1RvdWNoUG9p
bnRzLmdldCgpLCB0b1dLRXZlbnRNb2RpZmllcnMoZXZhc19rZXlfbW9kaWZpZXJfZ2V0KHNkLT5i
YXNlLmV2YXMpKSwgZWNvcmVfdGltZV9nZXQoKSkpLmdldCgpKTsKIH0KIAogdm9pZCBFd2tWaWV3
OjpoYW5kbGVUb3VjaERvd24odm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2FudmFzICovLCBF
dmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZvICovKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaEV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdjZDcw
ZWI2OGIxNTU0M2ZjYjMwNDNjZjIwMjk2NzNhODhiNzI2ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5jcHAKQEAgLTAsMCArMSw0
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRXdrVG91Y2hFdmVudC5oIgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK0V3a1RvdWNoRXZlbnQ6OkV3a1RvdWNoRXZlbnQoV0tFdmVudFR5cGUg
dHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50cywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMs
IGRvdWJsZSB0aW1lc3RhbXApCisgICAgOiBtX2V2ZW50VHlwZSh0eXBlKQorICAgICwgbV90b3Vj
aFBvaW50cyh0b3VjaFBvaW50cykKKyAgICAsIG1fbW9kaWZpZXJzKG1vZGlmaWVycykKKyAgICAs
IG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL0V3a1RvdWNoRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTJjM2QwNWI4MDA0YmU1MjFhYmQz
YzFiMmQ4OWJjYjU5YWI5MGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9Fd2tUb3VjaEV2ZW50LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEV3a1RvdWNoRXZlbnRfaAorI2RlZmluZSBFd2tUb3VjaEV2ZW50
X2gKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIK
KyNpbmNsdWRlICJXS0FycmF5LmgiCisjaW5jbHVkZSAiV0tFdmVudEVmbC5oIgorI2luY2x1ZGUg
IldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIEV3a1RvdWNoRXZlbnQgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgQVBJT2JqZWN0OjpUeXBlIEFQSVR5cGUgPSBUeXBlVG91
Y2hFdmVudDsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a1RvdWNoRXZlbnQ+IGNyZWF0ZShX
S0V2ZW50VHlwZSB0eXBlLCBXS0FycmF5UmVmIHRvdWNoUG9pbnRzLCBXS0V2ZW50TW9kaWZpZXJz
IG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRXdrVG91Y2hFdmVudCh0eXBlLCB0b3VjaFBvaW50cywgbW9kaWZpZXJzLCB0aW1l
c3RhbXApKTsKKyAgICB9CisKKyAgICBXS0V2ZW50VHlwZSBldmVudFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2V2ZW50VHlwZTsgfQorICAgIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMoKSBjb25zdCB7
IHJldHVybiBtX3RvdWNoUG9pbnRzLmdldCgpOyB9CisgICAgV0tFdmVudE1vZGlmaWVycyBtb2Rp
ZmllcnMoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVyczsgfQorICAgIGRvdWJsZSB0aW1lc3Rh
bXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQorCitwcml2YXRlOgorICAgIEV3a1Rv
dWNoRXZlbnQoV0tFdmVudFR5cGUsIFdLQXJyYXlSZWYsIFdLRXZlbnRNb2RpZmllcnMsIGRvdWJs
ZSB0aW1lc3RhbXApOworCisgICAgdmlydHVhbCBBUElPYmplY3Q6OlR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFdLRXZlbnRUeXBlIG1fZXZlbnRUeXBlOworICAg
IFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IG1fdG91Y2hQb2ludHM7CisgICAgV0tFdmVudE1vZGlm
aWVycyBtX21vZGlmaWVyczsKKyAgICBkb3VibGUgbV90aW1lc3RhbXA7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNlbmRp
ZiAvKiBFd2tUb3VjaEV2ZW50X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvRXdrVG91Y2hQb2ludC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L0V3a1RvdWNoUG9pbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlZmE2N2Q5ZmE0ODgzMDU4YjNjMzRhNWI5
YTA4N2M1MjVhMzAyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL0V3a1RvdWNoUG9pbnQuY3BwCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV3a1RvdWNoUG9pbnQuaCIK
KworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitFd2tU
b3VjaFBvaW50OjpFd2tUb3VjaFBvaW50KHVpbnQzMl90IGlkLCBXS1RvdWNoUG9pbnRTdGF0ZSBz
dGF0ZSwgY29uc3QgV0tQb2ludCYgc2NyZWVuUG9zaXRpb24sIGNvbnN0IFdLUG9pbnQmIHBvc2l0
aW9uLCBjb25zdCBXS1NpemUmIHJhZGl1cywgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9y
Y2VGYWN0b3IpCisgICAgOiBtX2lkKGlkKQorICAgICwgbV9zdGF0ZShzdGF0ZSkKKyAgICAsIG1f
c2NyZWVuUG9zaXRpb24oc2NyZWVuUG9zaXRpb24pCisgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9u
KQorICAgICwgbV9yYWRpdXMocmFkaXVzKQorICAgICwgbV9yb3RhdGlvbkFuZ2xlKHJvdGF0aW9u
QW5nbGUpCisgICAgLCBtX2ZvcmNlRmFjdG9yKGZvcmNlRmFjdG9yKQoreworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hQb2ludC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0M2Jj
YmJkMTY2YWRlMjAxNzgyN2RkNTk1YWUyMTg5OWMxODU3YTQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuaApAQCAtMCwwICsxLDc0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRXdrVG91Y2hQb2ludF9oCisjZGVm
aW5lIEV3a1RvdWNoUG9pbnRfaAorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldLQXJyYXkuaCIKKyNpbmNsdWRlICJXS0V2ZW50
RWZsLmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgRXdrVG91Y2hQb2ludCA6IHB1Ymxp
YyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBBUElPYmplY3Q6OlR5cGUg
QVBJVHlwZSA9IFR5cGVUb3VjaFBvaW50OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrVG91
Y2hQb2ludD4gY3JlYXRlKHVpbnQzMl90IGlkLCBXS1RvdWNoUG9pbnRTdGF0ZSBzdGF0ZSwgY29u
c3QgV0tQb2ludCYgc2NyZWVuUG9zaXRpb24sIGNvbnN0IFdLUG9pbnQmIHBvc2l0aW9uLCBjb25z
dCBXS1NpemUmIHJhZGl1cywgZmxvYXQgcm90YXRpb25BbmdsZSA9IDAsIGZsb2F0IGZvcmNlRmFj
dG9yID0gMSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrVG91Y2hQb2lu
dChpZCwgc3RhdGUsIHNjcmVlblBvc2l0aW9uLCBwb3NpdGlvbiwgcmFkaXVzLCByb3RhdGlvbkFu
Z2xlLCBmb3JjZUZhY3RvcikpOworICAgIH0KKworICAgIHVpbnQzMl90IGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZDsgfQorICAgIFdLVG91Y2hQb2ludFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZTsgfQorICAgIFdLUG9pbnQgc2NyZWVuUG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3NjcmVlblBvc2l0aW9uOyB9CisgICAgV0tQb2ludCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcG9zaXRpb247IH0KKyAgICBXS1NpemUgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9y
YWRpdXM7IH0KKyAgICBmbG9hdCByb3RhdGlvbkFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9yb3Rh
dGlvbkFuZ2xlOyB9CisgICAgZmxvYXQgZm9yY2VGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Zv
cmNlRmFjdG9yOyB9CisKK3ByaXZhdGU6CisgICAgRXdrVG91Y2hQb2ludCh1aW50MzJfdCBpZCwg
V0tUb3VjaFBvaW50U3RhdGUsIGNvbnN0IFdLUG9pbnQmLCBjb25zdCBXS1BvaW50JiwgY29uc3Qg
V0tTaXplJiwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2VGYWN0b3IpOworCisgICAg
dmlydHVhbCBBUElPYmplY3Q6OlR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0K
KworICAgIHVpbnQzMl90IG1faWQ7CisgICAgV0tUb3VjaFBvaW50U3RhdGUgbV9zdGF0ZTsKKyAg
ICBXS1BvaW50IG1fc2NyZWVuUG9zaXRpb247CisgICAgV0tQb2ludCBtX3Bvc2l0aW9uOworICAg
IFdLU2l6ZSBtX3JhZGl1czsKKyAgICBmbG9hdCBtX3JvdGF0aW9uQW5nbGU7CisgICAgZmxvYXQg
bV9mb3JjZUZhY3RvcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2VuZGlmIC8qIEV3a1RvdWNoUG9pbnRfaCAqLwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHAKaW5kZXggZTAwZjBlYTY3
NTA2OTNmYzI5M2UwMzNjMzc1NDUwNmNjZmIzMGU1YS4uNmQ1YTcxOTA5ZjAwYmY0MDZlZTA0YTU4
NjkwMWIzNjVmOGYwY2U0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJWaWV3RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZp
ZXdFZmwuY3BwCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHkuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRl
ICJFd2tUb3VjaEV2ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxs
YmFja3M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTA4LDQgKzExMiwxMiBAQCB2
b2lkIFdlYlZpZXdFZmw6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3du
bG9hZCkKIH0KIAogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgV2ViVmlld0VmbDo6
c2VuZFRvdWNoRXZlbnQoRXdrVG91Y2hFdmVudCogdG91Y2hFdmVudCkKK3sKKyAgICBBU1NFUlQo
dG91Y2hFdmVudCk7CisgICAgbV9wYWdlLT5oYW5kbGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNo
RXZlbnQodG91Y2hFdmVudCwgdHJhbnNmb3JtRnJvbVNjZW5lKCkpKTsKK30KKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlld0VmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3
RWZsLmgKaW5kZXggYzJlN2VmMzQ2NGM1M2M3ZGQ2OTljMWY2NGJkMDBmNWRmMDg3YmQ3Yi4uN2Zl
Y2IxMDI0NmFlYWQ5MjI0N2M5NzNkYzQ3M2ZlNWZiYmM2NzM0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmgKQEAgLTMyLDYgKzMyLDEwIEBAIGNsYXNzIEV3a1Zp
ZXc7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2Ns
YXNzIEV3a1RvdWNoRXZlbnQ7CisjZW5kaWYKKwogY2xhc3MgV2ViVmlld0VmbCA6IHB1YmxpYyBX
ZWJWaWV3IHsKIHB1YmxpYzoKICAgICB2b2lkIHNldEV3a1ZpZXcoRXdrVmlldyopOwpAQCAtMzks
NiArNDMsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludFRvQ2Fpcm9TdXJmYWNlKGNhaXJv
X3N1cmZhY2VfdCopOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2b2lkIHNlbmRU
b3VjaEV2ZW50KEV3a1RvdWNoRXZlbnQqKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlZp
ZXdFZmwoV2ViQ29udGV4dCosIFdlYlBhZ2VHcm91cCopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205562</attachid>
            <date>2013-06-26 22:15:18 -0700</date>
            <delta_ts>2013-06-27 18:54:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108915-20130627141318.patch</filename>
            <type>text/plain</type>
            <size>38701</size>
            <attacher name="Eunmi Lee">enmi.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGQ0YjU5NzAxOWYzOGUw
NWU3N2ViNzM4MTJjNmI0YmY0NzJkNTFjNS4uZWVhOTI5NDVlYmIxY2E3ZTlmYTA3MGFhOWRlZmYz
MjE4NDAxOWQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTA2LTI2ICBFdW5t
aSBMZWUgIDxldW5taTE1LmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBXSzIgQyBBUEkgdG8gaGFuZGxlIHRvdWNoIGV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkxNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvdWNoIGV2ZW50cyBmb3Igb3VyIHRhcmdldCBw
bGF0Zm9ybXMgZGlmZmVyIChYSW5wdXQyLCBXYXlsYW5kLCBUaXplbikgc28KKyAgICAgICAgZm9y
IHRoZSBFRkwgcG9ydCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gZmVlZCBldmVudHMgbWFudWFsbHku
CisKKyAgICAgICAgVG8ga2VlcCBvdXIgY3VycmVudCBBUEkgZm9yIGRlc2t0b3AgRUZML0VubGln
aHRlbm1lbnQgd29ya2luZywgd2UgY29udmVydAorICAgICAgICBvdXIgY3VycmVudGx5IGxpbWl0
ZWQgRUZMIGV2ZW50cyB0byB0aGUgbmV3IEVGTCBzcGVjaWZpYyBDIEV3a1RvdWNoUG9pbnQKKyAg
ICAgICAgYW5kIEV3a1RvdWNoRXZlbnQgdHlwZS4KKworICAgICAgICBFd2tUb3VjaFBvaW50IGFu
ZCBFd2tUb3VjaEV2ZW50IGFyZSBleHBvc2VkIGFzIFdLVG91Y2hQb2ludFJlZiBhbmQKKyAgICAg
ICAgV0tUb3VjaEV2ZW50UmVmLCBzbyB0aGV5IGFyZSBvcGFxdWUgaW4gdGhlIGFwcGxpY2F0aW9u
cy4KKworICAgICAgICBUaGUgV0tWaWV3U2VuZFRvdWNoRXZlbnQgY2FuIGJlIHVzZWQgZm9yIGFu
eSB1c2UtY2FzZSAocGxhdGZvcm0vcHJvZHVjdCkKKyAgICAgICAgbm90IGludm9sdmluZyB0aGUg
RUZMIGV2ZW50cy4KKworICAgICAgICBBdCB0aGUgc2FtZSB0aW1lIHdlIG1ha2Ugc3VyZSB0byBh
dm9pZCB1c2luZyBXSzIgaW50ZXJuYWxzIGluIG91ciBFRkwgQVBJCisgICAgICAgIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogU2hhcmVk
L0FQSS9jL2VmbC9XS0Jhc2VFZmwuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6Cisg
ICAgICAgICogU2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6
TmF0aXZlV2ViVG91Y2hFdmVudDo6bmF0aXZlRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwv
TmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdGl2ZVdlYlRv
dWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9lZmwvV2Vi
RXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJQbGF0Zm9ybVRvdWNoUG9p
bnRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV2ViRXZlbnRUeXBlKToKKyAgICAgICAgKFdl
YktpdDo6dG9XZWJFdmVudE1vZGlmaWVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJFdmVu
dEZhY3RvcnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tFdmVudEVmbC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV0tUb3VjaFBvaW50Q3JlYXRlKToKKyAgICAgICAgKFdLVG91Y2hFdmVudENyZWF0
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdL
Vmlld1NlbmRUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmll
d0VmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAg
ICAodG9XS1RvdWNoUG9pbnRTdGF0ZSk6CisgICAgICAgICh0b1dLRXZlbnRNb2RpZmllcnMpOgor
ICAgICAgICAoRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQpOgorICAgICAgICAoRXdrVmlldzo6ZmVl
ZFRvdWNoRXZlbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hFdmVudDo6RXdrVG91Y2hFdmVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaEV2ZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpFd2tUb3VjaEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpFd2tU
b3VjaEV2ZW50OjpldmVudFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaEV2ZW50Ojp0
b3VjaFBvaW50cyk6CisgICAgICAgIChXZWJLaXQ6OkV3a1RvdWNoRXZlbnQ6Om1vZGlmaWVycyk6
CisgICAgICAgIChXZWJLaXQ6OkV3a1RvdWNoRXZlbnQ6OnRpbWVzdGFtcCk6CisgICAgICAgIChX
ZWJLaXQ6OkV3a1RvdWNoRXZlbnQ6OnR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRXdr
VG91Y2hQb2ludC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaFBvaW50OjpF
d2tUb3VjaFBvaW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkV3a1RvdWNoUG9pbnQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OkV3a1RvdWNoUG9pbnQ6OmlkKToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hQ
b2ludDo6c3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpFd2tUb3VjaFBvaW50OjpzY3JlZW5Qb3Np
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OkV3a1RvdWNoUG9pbnQ6OnBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6RXdrVG91Y2hQb2ludDo6cmFkaXVzKToKKyAgICAgICAgKFdlYktpdDo6RXdr
VG91Y2hQb2ludDo6cm90YXRpb25BbmdsZSk6CisgICAgICAgIChXZWJLaXQ6OkV3a1RvdWNoUG9p
bnQ6OmZvcmNlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6RXdrVG91Y2hQb2ludDo6dHlwZSk6
CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0VmbDo6c2VuZFRvdWNoRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwv
V2ViVmlld0VmbC5oOgorCiAyMDEzLTA2LTI2ICBHd2FuZyBZb29uIEh3YW5nICA8cnl1bWllbEBj
b21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogU2VwYXJhdGUg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IGludG8gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IGFu
ZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDli
NmI5ZTViZGE0YTFlZWM3NjdkNjA3NGU5ZDkzNWMxOTJiMjVhYWIuLjg4ZjljZmJjMjRjNzkyMDZk
OGU5MDdiMGZkZmI3YWJlYmE0YTUxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC00
OSw2ICs0OSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgVUlQcm9jZXNz
L0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcAogCisgICAgVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS0V2ZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZs
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0uY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudUxpc3RlbmVyLmNwcApAQCAtMTA0LDYgKzEwNSw4IEBA
IGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhp
c3RvcnlDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Db250ZXh0TWVudUNsaWVudEVm
bC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKKyAgICBVSVBy
b2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaFBv
aW50LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAKICAgICBVSVByb2Nl
c3MvZWZsL0Zvcm1DbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9JbnB1dE1ldGhvZENv
bnRleHRFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvZWZs
L1dLQmFzZUVmbC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2VmbC9XS0Jhc2VFZmwu
aAppbmRleCA3MmZiZmQzMDNjMDFjNzJiNTUzYmRmNjQ0ODJkNTJiNGEyYjJjNGQ4Li45YzA3Zjhl
MGM4Yzg2MmQ4MTQ0ZmE1YjliM2EwYjliM2U4YTk3OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvZWZsL1dLQmFzZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9lZmwvV0tCYXNlRWZsLmgKQEAgLTI3LDUgKzI3LDcgQEAKIHR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLVmlldyogV0tWaWV3UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tQb3B1cEl0ZW0qIFdLUG9wdXBJdGVtUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tQb3B1cE1lbnVMaXN0ZW5lciogV0tQb3B1cE1lbnVMaXN0ZW5lclJlZjsKK3R5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVG91Y2hQb2ludCogV0tUb3VjaFBvaW50UmVmOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tUb3VjaEV2ZW50KiBXS1RvdWNoRXZlbnRSZWY7CiAK
ICNlbmRpZiAvKiBXS0Jhc2VFZmxfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4
IDRiZTM5OWE3MTNiZjkyYmM3Yjk4MjA2YzdlYjExMjk4NDA3YzVlOGYuLjQ0MWUwNWU5ODdmNjcz
YzJjNzRhNmNjN2E3MGU0YTdjNGU0NzMyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgK
QEAgLTEzNyw2ICsxMzcsMTAgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgUExBVEZPUk0oRUZMKQog
ICAgICAgICBUeXBlUG9wdXBNZW51SXRlbSwKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAg
ICAgICBUeXBlVG91Y2hQb2ludCwKKyAgICAgICAgVHlwZVRvdWNoRXZlbnQsCisjZW5kaWYKICNl
bmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXRpdmVX
ZWJUb3VjaEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF0aXZlV2ViVG91Y2hFdmVu
dC5oCmluZGV4IGM2M2QxY2YwNzA1YmNhMWVhNTRkMzg0ZjNmMGY1YmM4MzExYWQ2MmEuLmE2ODA3
YTViZjU0NjY2YTNiZjJiZjRjOTI4ZjJiOWY2YTlkODZlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OYXRpdmVXZWJUb3VjaEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdGl2ZVdlYlRvdWNoRXZlbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2lmIFBMQVRG
T1JNKFFUKQogI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgogI2VsaWYgUExBVEZPUk0oRUZMKQotI2lu
Y2x1ZGUgImV3a190b3VjaC5oIgotI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlICJFd2tUb3Vj
aEV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MywxNiAr
NDMsMjAgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKFFUKQogICAgIGV4cGxpY2l0IE5hdGl2ZVdl
YlRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBjb25zdCBRVHJhbnNmb3JtJiBmcm9tSXRl
bVRyYW5zZm9ybSk7CiAjZWxpZiBQTEFURk9STShFRkwpCi0gICAgTmF0aXZlV2ViVG91Y2hFdmVu
dChFd2tfVG91Y2hfRXZlbnRfVHlwZSwgY29uc3QgRWluYV9MaXN0KiwgY29uc3QgRXZhc19Nb2Rp
ZmllciosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgdG9XZWJDb250ZW50LCBjb25z
dCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRvRGV2aWNlU2NyZWVuLCBkb3VibGUgdGltZXN0
YW1wKTsKKyAgICBOYXRpdmVXZWJUb3VjaEV2ZW50KEV3a1RvdWNoRXZlbnQqLCBjb25zdCBXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0mKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCiAgICAg
Y29uc3QgUVRvdWNoRXZlbnQqIG5hdGl2ZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gJm1fbmF0aXZl
RXZlbnQ7IH0KKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBjb25zdCBFd2tUb3VjaEV2ZW50KiBu
YXRpdmVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlRXZlbnQuZ2V0KCk7IH0KICNlbmRp
ZgogCiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKFFUKQogICAgIGNvbnN0IFFUb3VjaEV2ZW50IG1f
bmF0aXZlRXZlbnQ7CisjZWxpZiBQTEFURk9STShFRkwpCisgICAgUmVmUHRyPEV3a1RvdWNoRXZl
bnQ+IG1fbmF0aXZlRXZlbnQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9lZmwvTmF0aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZWZsL05hdGl2ZVdlYlRvdWNoRXZlbnRFZmwuY3BwCmluZGV4IDcyNzk2ODM1YTY2
NDdiMDI3MmRlZjIzZWU2YzIwYjE4MTM5YTkxNjUuLjBkM2IwNjA1MzRhM2I3ODIxMGFkOTlmYmJm
MzVjZWZmNzFhYTNiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvTmF0
aXZlV2ViVG91Y2hFdmVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9O
YXRpdmVXZWJUb3VjaEV2ZW50RWZsLmNwcApAQCAtMzIsOCArMzIsOSBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotTmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudChFd2tf
VG91Y2hfRXZlbnRfVHlwZSB0eXBlLCBjb25zdCBFaW5hX0xpc3QqIHBvaW50cywgY29uc3QgRXZh
c19Nb2RpZmllciogbW9kaWZpZXJzLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHRv
V2ViQ29udGVudCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiB0b0RldmljZVNjcmVl
biwgZG91YmxlIHRpbWVzdGFtcCkKLSAgICA6IFdlYlRvdWNoRXZlbnQoV2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgbW9kaWZpZXJzLCB0b1dlYkNvbnRl
bnQsIHRvRGV2aWNlU2NyZWVuLCB0aW1lc3RhbXApKQorTmF0aXZlV2ViVG91Y2hFdmVudDo6TmF0
aXZlV2ViVG91Y2hFdmVudChFd2tUb3VjaEV2ZW50KiB0b3VjaEV2ZW50LCBjb25zdCBXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm0mIHRvV2ViQ29udGVudCkKKyAgICA6IFdlYlRvdWNoRXZlbnQoV2Vi
RXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJUb3VjaEV2ZW50KHRvdWNoRXZlbnQsIHRvV2ViQ29udGVu
dCkpCisgICAgLCBtX25hdGl2ZUV2ZW50KHRvdWNoRXZlbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRleCA0ZTIxYWU5OTYxYjQx
ZjZjM2VmNjk3MmM3MTJiZWZhZDI1YWEzMWZmLi43ZjViM2VlYWFkNjIwNDQ4NTM3OTE5OWUwMDgx
NDE5ZDVlYjMwNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2
ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZh
Y3RvcnkuY3BwCkBAIC0zMSw2ICszMSwxMyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJh
bnNmb3JtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KIAorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiRXdrVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIkV3a1Rv
dWNoUG9pbnQuaCIKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTIwNSw1NyArMjEyLDcwIEBAIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRG
YWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfS2V5X1VwCiB9
CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotc3RhdGljIGlubGluZSBXZWJFdmVudDo6VHlw
ZSB0eXBlRm9yVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlKQorc3RhdGljIGlu
bGluZSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUG9pbnRTdGF0ZSB0b1dlYlBsYXRmb3Jt
VG91Y2hQb2ludFN0YXRlKFdLVG91Y2hQb2ludFN0YXRlIHN0YXRlKQogewotICAgIGlmICh0eXBl
ID09IEVXS19UT1VDSF9TVEFSVCkKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBrV0tU
b3VjaFBvaW50U3RhdGVUb3VjaFJlbGVhc2VkOgorICAgICAgICByZXR1cm4gV2ViUGxhdGZvcm1U
b3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkOworICAgIGNhc2Uga1dLVG91Y2hQb2ludFN0YXRlVG91
Y2hNb3ZlZDoKKyAgICAgICAgcmV0dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hNb3Zl
ZDsKKyAgICBjYXNlIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3NlZDoKKyAgICAgICAgcmV0
dXJuIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hQcmVzc2VkOworICAgIGNhc2Uga1dLVG91
Y2hQb2ludFN0YXRlVG91Y2hTdGF0aW9uYXJ5OgorICAgICAgICByZXR1cm4gV2ViUGxhdGZvcm1U
b3VjaFBvaW50OjpUb3VjaFN0YXRpb25hcnk7CisgICAgY2FzZSBrV0tUb3VjaFBvaW50U3RhdGVU
b3VjaENhbmNlbGxlZDoKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV2ViUGxhdGZvcm1U
b3VjaFBvaW50OjpUb3VjaENhbmNlbGxlZDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgV2Vi
RXZlbnQ6OlR5cGUgdG9XZWJFdmVudFR5cGUoV0tFdmVudFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoU3RhcnQ6CiAgICAgICAgIHJl
dHVybiBXZWJFdmVudDo6VG91Y2hTdGFydDsKLSAgICBpZiAodHlwZSA9PSBFV0tfVE9VQ0hfTU9W
RSkKKyAgICBjYXNlIGtXS0V2ZW50VHlwZVRvdWNoTW92ZToKICAgICAgICAgcmV0dXJuIFdlYkV2
ZW50OjpUb3VjaE1vdmU7Ci0gICAgaWYgKHR5cGUgPT0gRVdLX1RPVUNIX0VORCkKKyAgICBjYXNl
IGtXS0V2ZW50VHlwZVRvdWNoRW5kOgogICAgICAgICByZXR1cm4gV2ViRXZlbnQ6OlRvdWNoRW5k
OwotICAgIGlmICh0eXBlID09IEVXS19UT1VDSF9DQU5DRUwpCisgICAgY2FzZSBrV0tFdmVudFR5
cGVUb3VjaENhbmNlbDoKICAgICAgICAgcmV0dXJuIFdlYkV2ZW50OjpUb3VjaENhbmNlbDsKKyAg
ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gV2ViRXZlbnQ6Ok5vVHlwZTsKKyAgICB9CiAKLSAg
ICByZXR1cm4gV2ViRXZlbnQ6Ok5vVHlwZTsKIH0KIAotV2ViVG91Y2hFdmVudCBXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSwgY29u
c3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1vZGlmaWVycywgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dG9EZXZpY2VTY3JlZW4sIGRvdWJsZSB0aW1lc3RhbXApCitzdGF0aWMgaW5saW5lIFdlYkV2ZW50
OjpNb2RpZmllcnMgdG9XZWJFdmVudE1vZGlmaWVycyh1bnNpZ25lZCBtb2RpZmllcnMpCiB7Cisg
ICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKKworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1v
ZGlmaWVyc1NoaWZ0S2V5KQorICAgICAgICByZXN1bHQgfD0gV2ViRXZlbnQ6OlNoaWZ0S2V5Owor
ICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXkpCisgICAgICAg
IHJlc3VsdCB8PSBXZWJFdmVudDo6Q29udHJvbEtleTsKKyAgICBpZiAobW9kaWZpZXJzICYga1dL
RXZlbnRNb2RpZmllcnNBbHRLZXkpCisgICAgICAgIHJlc3VsdCB8PSBXZWJFdmVudDo6QWx0S2V5
OworICAgIGlmIChtb2RpZmllcnMgJiBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXkpCisgICAgICAg
IHJlc3VsdCB8PSBXZWJFdmVudDo6TWV0YUtleTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
ZWJFdmVudDo6TW9kaWZpZXJzPihyZXN1bHQpOworfQorCitXZWJUb3VjaEV2ZW50IFdlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChjb25zdCBFd2tUb3VjaEV2ZW50KiBldmVudCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0b1dlYkNvbnRlbnQpCit7CisgICAgSW1tdXRhYmxlQXJy
YXkqIHRvdWNoUG9pbnRzQXJyYXkgPSB0b0ltcGwoZXZlbnQtPnRvdWNoUG9pbnRzKCkpOworICAg
IHNpemVfdCBzaXplID0gdG91Y2hQb2ludHNBcnJheS0+c2l6ZSgpOworCiAgICAgVmVjdG9yPFdl
YlBsYXRmb3JtVG91Y2hQb2ludD4gdG91Y2hQb2ludHM7Ci0gICAgdG91Y2hQb2ludHMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShlaW5hX2xpc3RfY291bnQocG9pbnRzKSk7Ci0KLSAgICBjb25zdCBF
aW5hX0xpc3QqIGxpc3Q7Ci0gICAgdm9pZCogaXRlbTsKLSAgICBFSU5BX0xJU1RfRk9SRUFDSChw
b2ludHMsIGxpc3QsIGl0ZW0pIHsKLSAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBwb2ludCA9IHN0
YXRpY19jYXN0PEV3a19Ub3VjaF9Qb2ludCo+KGl0ZW0pOwotCi0gICAgICAgIFdlYlBsYXRmb3Jt
VG91Y2hQb2ludDo6VG91Y2hQb2ludFN0YXRlIHN0YXRlOwotICAgICAgICBzd2l0Y2ggKHBvaW50
LT5zdGF0ZSkgewotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfVVA6Ci0gICAgICAgICAg
ICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZDsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfTU9WRToKLSAgICAgICAg
ICAgIHN0YXRlID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaE1vdmVkOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9ET1dOOgotICAgICAgICAg
ICAgc3RhdGUgPSBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZDsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfU1RJTEw6Ci0gICAgICAg
ICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hTdGF0aW9uYXJ5OwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVZBU19UT1VDSF9QT0lOVF9DQU5DRUw6Ci0g
ICAgICAgICAgICBzdGF0ZSA9IFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQ7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICBJbnRQb2ludCBwb3MocG9pbnQtPngsIHBvaW50LT55KTsKLSAgICAgICAgdG91Y2hQb2lu
dHMudW5jaGVja2VkQXBwZW5kKFdlYlBsYXRmb3JtVG91Y2hQb2ludChwb2ludC0+aWQsIHN0YXRl
LCB0b0RldmljZVNjcmVlbi5tYXBQb2ludChwb3MpLCB0b1dlYkNvbnRlbnQubWFwUG9pbnQocG9z
KSkpOworICAgIHRvdWNoUG9pbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoRXdrVG91
Y2hQb2ludCogcG9pbnQgPSB0b3VjaFBvaW50c0FycmF5LT5hdDxFd2tUb3VjaFBvaW50PihpKSkK
KyAgICAgICAgICAgIHRvdWNoUG9pbnRzLnVuY2hlY2tlZEFwcGVuZChXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQocG9pbnQtPmlkKCksIHRvV2ViUGxhdGZvcm1Ub3VjaFBvaW50U3RhdGUocG9pbnQtPnN0
YXRlKCkpLCB0b0ludFBvaW50KHBvaW50LT5zY3JlZW5Qb3NpdGlvbigpKSwgdG9XZWJDb250ZW50
Lm1hcFBvaW50KHRvSW50UG9pbnQocG9pbnQtPnBvc2l0aW9uKCkpKSwgdG9JbnRTaXplKHBvaW50
LT5yYWRpdXMoKSksIHBvaW50LT5yb3RhdGlvbkFuZ2xlKCksIHBvaW50LT5mb3JjZUZhY3Rvcigp
KSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQodHlwZUZvclRvdWNoRXZlbnQo
dHlwZSksIHRvdWNoUG9pbnRzLCBtb2RpZmllcnNGb3JFdmVudChtb2RpZmllcnMpLCB0aW1lc3Rh
bXApOworICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHRvV2ViRXZlbnRUeXBlKGV2ZW50LT5ldmVu
dFR5cGUoKSksIHRvdWNoUG9pbnRzLCB0b1dlYkV2ZW50TW9kaWZpZXJzKGV2ZW50LT5tb2RpZmll
cnMoKSksIGV2ZW50LT50aW1lc3RhbXAoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmgKaW5kZXggZTQ0NGRiMjlkNTIzODQwMjIwNDFl
NWRiOGQyNDQwYzMwZDgyM2U4MC4uNGE5ODk0ZTlhZjQ1NmJhOGYxNTMyMDZiMGViN2I3ZjNmNDhi
ZGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZhY3Rv
cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5oCkBA
IC0yNywxMiArMjcsMTUgQEAKICNkZWZpbmUgV2ViRXZlbnRGYWN0b3J5X2gKIAogI2luY2x1ZGUg
IldlYkV2ZW50LmgiCi0jaW5jbHVkZSAiZXdrX3RvdWNoLmgiCiAjaW5jbHVkZSA8RXZhcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2NsYXNzIEV3a1RvdWNoRXZlbnQ7CisjZW5k
aWYKKwogY2xhc3MgV2ViRXZlbnRGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViTW91
c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KGNvbnN0IEV2YXNfRXZlbnRfTW91c2VfRG93bios
IGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSYpOwpAQCAtNDIsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYktleWJv
YXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChjb25zdCBFdmFzX0V2ZW50X0tleV9Eb3du
Kik7CiAgICAgc3RhdGljIFdlYktleWJvYXJkRXZlbnQgY3JlYXRlV2ViS2V5Ym9hcmRFdmVudChj
b25zdCBFdmFzX0V2ZW50X0tleV9VcCopOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAg
c3RhdGljIFdlYlRvdWNoRXZlbnQgY3JlYXRlV2ViVG91Y2hFdmVudChFd2tfVG91Y2hfRXZlbnRf
VHlwZSwgY29uc3QgRWluYV9MaXN0KiwgY29uc3QgRXZhc19Nb2RpZmllciosIGNvbnN0IFdlYkNv
cmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGRv
dWJsZSB0aW1lc3RhbXApOworICAgIHN0YXRpYyBXZWJUb3VjaEV2ZW50IGNyZWF0ZVdlYlRvdWNo
RXZlbnQoY29uc3QgRXdrVG91Y2hFdmVudCosIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYpOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS0FQSUNhc3RFZmwuaAppbmRleCBkM2JjYTkyNjU3NzI3ODI1Y2ZhMTZmMjIxNTIwYmMx
MDM2ZWJlOTNiLi4zNTFhMTlmZmU1MjdjMTI1OGQ1ZDNhZGQwOTk1MDY2ZDBjODYxOWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLQVBJQ2FzdEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgK
QEAgLTM3LDYgKzM3LDE0IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1ZpZXdSZWYsIFdlYlZpZXcp
CiBXS19BRERfQVBJX01BUFBJTkcoV0tQb3B1cEl0ZW1SZWYsIFdlYlBvcHVwSXRlbUVmbCkKIFdL
X0FERF9BUElfTUFQUElORyhXS1BvcHVwTWVudUxpc3RlbmVyUmVmLCBXZWJQb3B1cE1lbnVMaXN0
ZW5lckVmbCkKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitjbGFzcyBFd2tUb3VjaEV2ZW50
OworY2xhc3MgRXdrVG91Y2hQb2ludDsKKworV0tfQUREX0FQSV9NQVBQSU5HKFdLVG91Y2hFdmVu
dFJlZiwgRXdrVG91Y2hFdmVudCkKK1dLX0FERF9BUElfTUFQUElORyhXS1RvdWNoUG9pbnRSZWYs
IEV3a1RvdWNoUG9pbnQpCisjZW5kaWYKKwogLy8gRW51bSBjb252ZXJzaW9ucy4KIGlubGluZSBX
S1BvcHVwSXRlbVRleHREaXJlY3Rpb24gdG9BUEkoV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLRXZlbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2
ZW50RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDUwNzFmOTBiZDViN2M2MDhjNjRhZjZkMmRmMDA0M2Q4
NzA1MjIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS0V2ZW50RWZsLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0V2ZW50RWZsLmgiCisKKyNpbmNs
dWRlICJFd2tUb3VjaEV2ZW50LmgiCisjaW5jbHVkZSAiRXdrVG91Y2hQb2ludC5oIgorI2luY2x1
ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
V2ViRXZlbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUb3VjaFBvaW50UmVm
IFdLVG91Y2hQb2ludENyZWF0ZShpbnQgaWQsIFdLUG9pbnQgcG9zaXRpb24sIFdLUG9pbnQgc2Ny
ZWVuUG9zaXRpb24sIFdLVG91Y2hQb2ludFN0YXRlIHN0YXRlLCBXS1NpemUgcmFkaXVzLCBmbG9h
dCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZUZhY3RvcikKK3sKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIHJldHVybiB0b0FQSShFd2tUb3VjaFBvaW50OjpjcmVhdGUoaWQsIHN0YXRl
LCBzY3JlZW5Qb3NpdGlvbiwgcG9zaXRpb24sIHJhZGl1cywgcm90YXRpb25BbmdsZSwgZm9yY2VG
YWN0b3IpLmxlYWtSZWYoKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpZCk7CisgICAgVU5V
U0VEX1BBUkFNKHBvc2l0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oc2NyZWVuUG9zaXRpb24pOwor
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHJhZGl1cyk7CisgICAg
VU5VU0VEX1BBUkFNKHJvdGF0aW9uQW5nbGUpOworICAgIFVOVVNFRF9QQVJBTShmb3JjZUZhY3Rv
cik7CisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tUb3VjaEV2ZW50UmVmIFdLVG91Y2hF
dmVudENyZWF0ZShXS0V2ZW50VHlwZSB0eXBlLCBXS0FycmF5UmVmIHdrVG91Y2hQb2ludHMsIFdL
RXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKQoreworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgcmV0dXJuIHRvQVBJKEV3a1RvdWNoRXZlbnQ6OmNyZWF0ZSh0
eXBlLCB3a1RvdWNoUG9pbnRzLCBtb2RpZmllcnMsIHRpbWVzdGFtcCkubGVha1JlZigpKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHR5cGUpOworICAgIFVOVVNFRF9QQVJBTSh3a1RvdWNoUG9p
bnRzKTsKKyAgICBVTlVTRURfUEFSQU0obW9kaWZpZXJzKTsKKyAgICBVTlVTRURfUEFSQU0odGlt
ZXN0YW1wKTsKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGEyNjM2ZTY1MTcx
YzhiOTNiYzc0MjQ1ZmQzY2I5YTc3MmM5MmMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0V2ZW50RWZsLmgKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLRXZlbnRF
ZmxfaAorI2RlZmluZSBXS0V2ZW50RWZsX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tFdmVudC5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMK
K2V4dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0gV0tFdmVudFR5cGUgeworICAgIGtXS0V2ZW50
VHlwZU5vVHlwZSA9IC0xLAorICAgIGtXS0V2ZW50VHlwZVRvdWNoU3RhcnQsCisgICAga1dLRXZl
bnRUeXBlVG91Y2hNb3ZlLAorICAgIGtXS0V2ZW50VHlwZVRvdWNoRW5kLAorICAgIGtXS0V2ZW50
VHlwZVRvdWNoQ2FuY2VsCit9OwordHlwZWRlZiBlbnVtIFdLRXZlbnRUeXBlIFdLRXZlbnRUeXBl
OworCitlbnVtIFdLVG91Y2hQb2ludFN0YXRlIHsKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3Vj
aFJlbGVhc2VkLAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3NlZCwKKyAgICBrV0tU
b3VjaFBvaW50U3RhdGVUb3VjaE1vdmVkLAorICAgIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoU3Rh
dGlvbmFyeSwKKyAgICBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaENhbmNlbGxlZAorfTsKK3R5cGVk
ZWYgZW51bSBXS1RvdWNoUG9pbnRTdGF0ZSBXS1RvdWNoUG9pbnRTdGF0ZTsKKworV0tfRVhQT1JU
IFdLVG91Y2hQb2ludFJlZiBXS1RvdWNoUG9pbnRDcmVhdGUoaW50IGlkLCBXS1BvaW50IHBvc2l0
aW9uLCBXS1BvaW50IHNjcmVlblBvc2l0aW9uLCBXS1RvdWNoUG9pbnRTdGF0ZSwgV0tTaXplIHJh
ZGl1cywgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2VGYWN0b3IpOworV0tfRVhQT1JU
IFdLVG91Y2hFdmVudFJlZiBXS1RvdWNoRXZlbnRDcmVhdGUoV0tFdmVudFR5cGUsIFdLQXJyYXlS
ZWYsIFdLRXZlbnRNb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOworCisjaWZkZWYgX19jcGx1
c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tFdmVudEVmbF9oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlld0VmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlld0VmbC5jcHAKaW5kZXggM2MxYTNk
MWRmOGMzNzNjMjUyZWNiMTFkYzAxZGY5MzFlMTY5NTAyNS4uY2VmYTJkMzU4NzAxYzcyZGU5NTVl
MDE0MDMxYmUzOGM4YjQ5NDQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXdFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tWaWV3RWZsLmNwcApAQCAtNDgsMyArNDgsMTMgQEAgdm9pZCBXS1ZpZXdTZXRU
aGVtZVBhdGgoV0tWaWV3UmVmIHZpZXdSZWYsIFdLU3RyaW5nUmVmIHRoZW1lKQogewogICAgIHN0
YXRpY19jYXN0PFdlYlZpZXdFZmwqPih0b0ltcGwodmlld1JlZikpLT5zZXRUaGVtZVBhdGgodG9J
bXBsKHRoZW1lKS0+c3RyaW5nKCkpOwogfQorCit2b2lkIFdLVmlld1NlbmRUb3VjaEV2ZW50KFdL
Vmlld1JlZiB2aWV3UmVmLCBXS1RvdWNoRXZlbnRSZWYgdG91Y2hFdmVudFJlZikKK3sKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHN0YXRpY19jYXN0PFdlYlZpZXdFZmwqPih0b0ltcGwo
dmlld1JlZikpLT5zZW5kVG91Y2hFdmVudCh0b0ltcGwodG91Y2hFdmVudFJlZikpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0odmlld1JlZik7CisgICAgVU5VU0VEX1BBUkFNKHRvdWNoRXZlbnRS
ZWYpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvZWZsL1dLVmlld0VmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1ZpZXdFZmwuaAppbmRleCBjZjk4ODc0NDc3MDE0YmE5OWQyOWU1NzdkY2I0ZWI0NWMwOGI1ODA4
Li5kOGFmZGM0MzI4YWIxOWY2NDhlYWZiZWExNTk4YzAzYTE4M2EyNmFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlld0VmbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3RWZsLmgKQEAgLTQwLDYgKzQwLDgg
QEAgV0tfRVhQT1JUIFdLSW1hZ2VSZWYgV0tWaWV3Q3JlYXRlU25hcHNob3QoV0tWaWV3UmVmKTsK
IAogV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2V0VGhlbWVQYXRoKFdLVmlld1JlZiwgV0tTdHJpbmdS
ZWYpOwogCitXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZW5kVG91Y2hFdmVudChXS1ZpZXdSZWYsIFdL
VG91Y2hFdmVudFJlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4IGRmYTllMDc4NTIz
ZDc0NWJiNDAxN2Q5NmQxNjY0ZmQ4ZGNhMDA5MDUuLmIzMzYxMTAxMTYzNzg4Y2NmYzIzOTMzMjQ1
Yjg3ZmRhNjZjODdmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXcuY3BwCkBAIC0zNiw3ICszNiw5IEBACiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlNuYXBzaG90SW1hZ2VHTC5oIgogI2luY2x1ZGUg
IlZpZXdDbGllbnRFZmwuaCIKKyNpbmNsdWRlICJXS0FycmF5LmgiCiAjaW5jbHVkZSAiV0tEaWN0
aW9uYXJ5LmgiCisjaW5jbHVkZSAiV0tFdmVudEVmbC5oIgogI2luY2x1ZGUgIldLR2VvbWV0cnku
aCIKICNpbmNsdWRlICJXS051bWJlci5oIgogI2luY2x1ZGUgIldLUGFnZUdyb3VwLmgiCkBAIC03
MTIsOSArNzE0LDUxIEBAIHZvaWQgRXdrVmlldzo6c2V0TW91c2VFdmVudHNFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitzdGF0aWMgV0tUb3VjaFBv
aW50U3RhdGUgdG9XS1RvdWNoUG9pbnRTdGF0ZShFdmFzX1RvdWNoX1BvaW50X1N0YXRlIHN0YXRl
KQoreworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfVVA6
CisgICAgICAgIHJldHVybiBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFJlbGVhc2VkOworICAgIGNh
c2UgRVZBU19UT1VDSF9QT0lOVF9NT1ZFOgorICAgICAgICByZXR1cm4ga1dLVG91Y2hQb2ludFN0
YXRlVG91Y2hNb3ZlZDsKKyAgICBjYXNlIEVWQVNfVE9VQ0hfUE9JTlRfRE9XTjoKKyAgICAgICAg
cmV0dXJuIGtXS1RvdWNoUG9pbnRTdGF0ZVRvdWNoUHJlc3NlZDsKKyAgICBjYXNlIEVWQVNfVE9V
Q0hfUE9JTlRfU1RJTEw6CisgICAgICAgIHJldHVybiBrV0tUb3VjaFBvaW50U3RhdGVUb3VjaFN0
YXRpb25hcnk7CisgICAgY2FzZSBFVkFTX1RPVUNIX1BPSU5UX0NBTkNFTDoKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4ga1dLVG91Y2hQb2ludFN0YXRlVG91Y2hDYW5jZWxsZWQ7CisgICAg
fQorfQorCitzdGF0aWMgV0tFdmVudE1vZGlmaWVycyB0b1dLRXZlbnRNb2RpZmllcnMoY29uc3Qg
RXZhc19Nb2RpZmllciogbW9kaWZpZXJzKQoreworICAgIFdLRXZlbnRNb2RpZmllcnMgd2tNb2Rp
ZmllcnMgPSAwOworICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAi
U2hpZnQiKSkKKyAgICAgICAgd2tNb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtl
eTsKKyAgICBpZiAoZXZhc19rZXlfbW9kaWZpZXJfaXNfc2V0KG1vZGlmaWVycywgIkNvbnRyb2wi
KSkKKyAgICAgICAgd2tNb2RpZmllcnMgfD0ga1dLRXZlbnRNb2RpZmllcnNDb250cm9sS2V5Owor
ICAgIGlmIChldmFzX2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiQWx0IikpCisgICAg
ICAgIHdrTW9kaWZpZXJzIHw9IGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5OworICAgIGlmIChldmFz
X2tleV9tb2RpZmllcl9pc19zZXQobW9kaWZpZXJzLCAiTWV0YSIpKQorICAgICAgICB3a01vZGlm
aWVycyB8PSBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXk7CisKKyAgICByZXR1cm4gd2tNb2RpZmll
cnM7Cit9CisKIHZvaWQgRXdrVmlldzo6ZmVlZFRvdWNoRXZlbnQoRXdrX1RvdWNoX0V2ZW50X1R5
cGUgdHlwZSwgY29uc3QgRWluYV9MaXN0KiBwb2ludHMsIGNvbnN0IEV2YXNfTW9kaWZpZXIqIG1v
ZGlmaWVycykKIHsKLSAgICBwYWdlKCktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hF
dmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgd2ViVmlldygpLT50cmFuc2Zvcm1Gcm9tU2Nl
bmUoKSwgdHJhbnNmb3JtVG9TY3JlZW4oKSwgZWNvcmVfdGltZV9nZXQoKSkpOworICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGVpbmFfbGlzdF9jb3VudChwb2ludHMpOworICAgIE93bkFycmF5UHRyPFdL
VHlwZVJlZj4gdG91Y2hQb2ludHMgPSBhZG9wdEFycmF5UHRyKG5ldyBXS1R5cGVSZWZbbGVuZ3Ro
XSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAg
IEV3a19Ub3VjaF9Qb2ludCogcG9pbnQgPSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihl
aW5hX2xpc3RfbnRoKHBvaW50cywgaSkpOworICAgICAgICBBU1NFUlQocG9pbnQpOworICAgICAg
ICBJbnRQb2ludCBwb3NpdGlvbihwb2ludC0+eCwgcG9pbnQtPnkpOworICAgICAgICB0b3VjaFBv
aW50c1tpXSA9IFdLVG91Y2hQb2ludENyZWF0ZShwb2ludC0+aWQsIHRvQVBJKEludFBvaW50KHBv
c2l0aW9uKSksIHRvQVBJKHRyYW5zZm9ybVRvU2NyZWVuKCkubWFwUG9pbnQocG9zaXRpb24pKSwg
dG9XS1RvdWNoUG9pbnRTdGF0ZShwb2ludC0+c3RhdGUpLCBXS1NpemVNYWtlKDAsIDApLCAwLCAx
KTsKKyAgICB9CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tUb3VjaFBvaW50cyhBZG9w
dFdLLCBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXModG91Y2hQb2ludHMuZ2V0KCksIGxlbmd0
aCkpOworCisgICAgV0tWaWV3U2VuZFRvdWNoRXZlbnQod2tWaWV3KCksIGFkb3B0V0soV0tUb3Vj
aEV2ZW50Q3JlYXRlKHN0YXRpY19jYXN0PFdLRXZlbnRUeXBlPih0eXBlKSwgd2tUb3VjaFBvaW50
cy5nZXQoKSwgdG9XS0V2ZW50TW9kaWZpZXJzKG1vZGlmaWVycyksIGVjb3JlX3RpbWVfZ2V0KCkp
KS5nZXQoKSk7CiB9CiAKIHZvaWQgRXdrVmlldzo6c2V0VG91Y2hFdmVudHNFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKQEAgLTEyNjAsMjQgKzEzMDQsMjIgQEAgdm9pZCBFd2tWaWV3OjpmZWVkVG91Y2hF
dmVudHMoRXdrX1RvdWNoX0V2ZW50X1R5cGUgdHlwZSkKIHsKICAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwogCi0gICAgdW5zaWduZWQgY291bnQgPSBldmFzX3RvdWNo
X3BvaW50X2xpc3RfY291bnQoc2QtPmJhc2UuZXZhcyk7Ci0gICAgaWYgKCFjb3VudCkKKyAgICB1
bnNpZ25lZCBsZW5ndGggPSBldmFzX3RvdWNoX3BvaW50X2xpc3RfY291bnQoc2QtPmJhc2UuZXZh
cyk7CisgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIEVpbmFfTGlzdCog
cG9pbnRzID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewot
ICAgICAgICBFd2tfVG91Y2hfUG9pbnQqIHBvaW50ID0gbmV3IEV3a19Ub3VjaF9Qb2ludDsKLSAg
ICAgICAgcG9pbnQtPmlkID0gZXZhc190b3VjaF9wb2ludF9saXN0X250aF9pZF9nZXQoc2QtPmJh
c2UuZXZhcywgaSk7Ci0gICAgICAgIGV2YXNfdG91Y2hfcG9pbnRfbGlzdF9udGhfeHlfZ2V0KHNk
LT5iYXNlLmV2YXMsIGksICZwb2ludC0+eCwgJnBvaW50LT55KTsKLSAgICAgICAgcG9pbnQtPnN0
YXRlID0gZXZhc190b3VjaF9wb2ludF9saXN0X250aF9zdGF0ZV9nZXQoc2QtPmJhc2UuZXZhcywg
aSk7Ci0gICAgICAgIHBvaW50cyA9IGVpbmFfbGlzdF9hcHBlbmQocG9pbnRzLCBwb2ludCk7Cisg
ICAgT3duQXJyYXlQdHI8V0tUeXBlUmVmPiB0b3VjaFBvaW50cyA9IGFkb3B0QXJyYXlQdHIobmV3
IFdLVHlwZVJlZltsZW5ndGhdKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgaW50IHgsIHk7CisgICAgICAgIGV2YXNfdG91Y2hfcG9pbnRfbGlz
dF9udGhfeHlfZ2V0KHNkLT5iYXNlLmV2YXMsIGksICZ4LCAmeSk7CisgICAgICAgIEludFBvaW50
IHBvc2l0aW9uKHgsIHkpOworICAgICAgICBFdmFzX1RvdWNoX1BvaW50X1N0YXRlIHN0YXRlID0g
ZXZhc190b3VjaF9wb2ludF9saXN0X250aF9zdGF0ZV9nZXQoc2QtPmJhc2UuZXZhcywgaSk7Cisg
ICAgICAgIGludCBpZCA9IGV2YXNfdG91Y2hfcG9pbnRfbGlzdF9udGhfaWRfZ2V0KHNkLT5iYXNl
LmV2YXMsIGkpOworICAgICAgICB0b3VjaFBvaW50c1tpXSA9IFdLVG91Y2hQb2ludENyZWF0ZShp
ZCwgdG9BUEkoSW50UG9pbnQocG9zaXRpb24pKSwgdG9BUEkodHJhbnNmb3JtVG9TY3JlZW4oKS5t
YXBQb2ludChwb3NpdGlvbikpLCB0b1dLVG91Y2hQb2ludFN0YXRlKHN0YXRlKSwgV0tTaXplTWFr
ZSgwLCAwKSwgMCwgMSk7CiAgICAgfQorICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrVG91
Y2hQb2ludHMoQWRvcHRXSywgV0tBcnJheUNyZWF0ZUFkb3B0aW5nVmFsdWVzKHRvdWNoUG9pbnRz
LmdldCgpLCBsZW5ndGgpKTsKIAotICAgIGZlZWRUb3VjaEV2ZW50KHR5cGUsIHBvaW50cywgZXZh
c19rZXlfbW9kaWZpZXJfZ2V0KHNkLT5iYXNlLmV2YXMpKTsKLQotICAgIHZvaWQqIGRhdGE7Ci0g
ICAgRUlOQV9MSVNUX0ZSRUUocG9pbnRzLCBkYXRhKQotICAgICAgICBkZWxldGUgc3RhdGljX2Nh
c3Q8RXdrX1RvdWNoX1BvaW50Kj4oZGF0YSk7CisgICAgV0tWaWV3U2VuZFRvdWNoRXZlbnQod2tW
aWV3KCksIGFkb3B0V0soV0tUb3VjaEV2ZW50Q3JlYXRlKHN0YXRpY19jYXN0PFdLRXZlbnRUeXBl
Pih0eXBlKSwgd2tUb3VjaFBvaW50cy5nZXQoKSwgdG9XS0V2ZW50TW9kaWZpZXJzKGV2YXNfa2V5
X21vZGlmaWVyX2dldChzZC0+YmFzZS5ldmFzKSksIGVjb3JlX3RpbWVfZ2V0KCkpKS5nZXQoKSk7
CiB9CiAKIHZvaWQgRXdrVmlldzo6aGFuZGxlVG91Y2hEb3duKHZvaWQqIC8qIGRhdGEgKi8sIEV2
YXMqIC8qIGNhbnZhcyAqLywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIC8qIGV2ZW50SW5m
byAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hF
dmVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZlbnQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk3Y2Q3MGViNjhiMTU1NDNmY2IzMDQzY2YyMDI5NjczYTg4YjcyNmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoRXZl
bnQuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3Vu
ZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkV3a1RvdWNoRXZlbnQuaCIKKworI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitFd2tUb3VjaEV2ZW50OjpFd2tUb3Vj
aEV2ZW50KFdLRXZlbnRUeXBlIHR5cGUsIFdLQXJyYXlSZWYgdG91Y2hQb2ludHMsIFdLRXZlbnRN
b2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKQorICAgIDogbV9ldmVudFR5cGUo
dHlwZSkKKyAgICAsIG1fdG91Y2hQb2ludHModG91Y2hQb2ludHMpCisgICAgLCBtX21vZGlmaWVy
cyhtb2RpZmllcnMpCisgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3RhbXApCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaEV2ZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzEy
YzNkMDViODAwNGJlNTIxYWJkM2MxYjJkODliY2I1OWFiOTBiOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRXdrVG91Y2hFdmVudC5oCkBAIC0wLDAgKzEs
NjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFd2tUb3VjaEV2ZW50X2gKKyNk
ZWZpbmUgRXdrVG91Y2hFdmVudF9oCisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCisjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV0tBcnJheS5oIgorI2luY2x1ZGUgIldLRXZl
bnRFZmwuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBFd2tUb3VjaEV2ZW50IDogcHVi
bGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IEFQSU9iamVjdDo6VHlw
ZSBBUElUeXBlID0gVHlwZVRvdWNoRXZlbnQ7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tU
b3VjaEV2ZW50PiBjcmVhdGUoV0tFdmVudFR5cGUgdHlwZSwgV0tBcnJheVJlZiB0b3VjaFBvaW50
cywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a1RvdWNoRXZlbnQodHlwZSwgdG91Y2hQb2lu
dHMsIG1vZGlmaWVycywgdGltZXN0YW1wKSk7CisgICAgfQorCisgICAgV0tFdmVudFR5cGUgZXZl
bnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFR5cGU7IH0KKyAgICBXS0FycmF5UmVmIHRv
dWNoUG9pbnRzKCkgY29uc3QgeyByZXR1cm4gbV90b3VjaFBvaW50cy5nZXQoKTsgfQorICAgIFdL
RXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllcnM7IH0K
KyAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KKwor
cHJpdmF0ZToKKyAgICBFd2tUb3VjaEV2ZW50KFdLRXZlbnRUeXBlLCBXS0FycmF5UmVmLCBXS0V2
ZW50TW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKKworICAgIHZpcnR1YWwgQVBJT2JqZWN0
OjpUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBXS0V2ZW50VHlw
ZSBtX2V2ZW50VHlwZTsKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBtX3RvdWNoUG9pbnRz
OworICAgIFdLRXZlbnRNb2RpZmllcnMgbV9tb2RpZmllcnM7CisgICAgZG91YmxlIG1fdGltZXN0
YW1wOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorCisjZW5kaWYgLyogRXdrVG91Y2hFdmVudF9oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaFBvaW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWZhNjdk
OWZhNDg4MzA1OGIzYzM0YTViOWEwODdjNTI1YTMwMjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaFBvaW50LmNwcApAQCAtMCwwICsxLDQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJFd2tUb3VjaFBvaW50LmgiCisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworRXdrVG91Y2hQb2ludDo6RXdrVG91Y2hQb2ludCh1aW50MzJfdCBpZCwg
V0tUb3VjaFBvaW50U3RhdGUgc3RhdGUsIGNvbnN0IFdLUG9pbnQmIHNjcmVlblBvc2l0aW9uLCBj
b25zdCBXS1BvaW50JiBwb3NpdGlvbiwgY29uc3QgV0tTaXplJiByYWRpdXMsIGZsb2F0IHJvdGF0
aW9uQW5nbGUsIGZsb2F0IGZvcmNlRmFjdG9yKQorICAgIDogbV9pZChpZCkKKyAgICAsIG1fc3Rh
dGUoc3RhdGUpCisgICAgLCBtX3NjcmVlblBvc2l0aW9uKHNjcmVlblBvc2l0aW9uKQorICAgICwg
bV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAsIG1fcmFkaXVzKHJhZGl1cykKKyAgICAsIG1fcm90
YXRpb25BbmdsZShyb3RhdGlvbkFuZ2xlKQorICAgICwgbV9mb3JjZUZhY3Rvcihmb3JjZUZhY3Rv
cikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Fd2tU
b3VjaFBvaW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0V3a1RvdWNoUG9pbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NDNiY2JiZDE2NmFkZTIwMTc4MjdkZDU5NWFlMjE4OTljMTg1N2E0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Fd2tUb3VjaFBv
aW50LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5n
IEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV3
a1RvdWNoUG9pbnRfaAorI2RlZmluZSBFd2tUb3VjaFBvaW50X2gKKworI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJXS0FycmF5Lmgi
CisjaW5jbHVkZSAiV0tFdmVudEVmbC5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEV3
a1RvdWNoUG9pbnQgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29u
c3QgQVBJT2JqZWN0OjpUeXBlIEFQSVR5cGUgPSBUeXBlVG91Y2hQb2ludDsKKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEV3a1RvdWNoUG9pbnQ+IGNyZWF0ZSh1aW50MzJfdCBpZCwgV0tUb3VjaFBv
aW50U3RhdGUgc3RhdGUsIGNvbnN0IFdLUG9pbnQmIHNjcmVlblBvc2l0aW9uLCBjb25zdCBXS1Bv
aW50JiBwb3NpdGlvbiwgY29uc3QgV0tTaXplJiByYWRpdXMsIGZsb2F0IHJvdGF0aW9uQW5nbGUg
PSAwLCBmbG9hdCBmb3JjZUZhY3RvciA9IDEpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEV3a1RvdWNoUG9pbnQoaWQsIHN0YXRlLCBzY3JlZW5Qb3NpdGlvbiwgcG9zaXRpb24s
IHJhZGl1cywgcm90YXRpb25BbmdsZSwgZm9yY2VGYWN0b3IpKTsKKyAgICB9CisKKyAgICB1aW50
MzJfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBXS1RvdWNoUG9pbnRTdGF0ZSBz
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICBXS1BvaW50IHNjcmVlblBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5Qb3NpdGlvbjsgfQorICAgIFdLUG9pbnQgcG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAgV0tTaXplIHJhZGl1cygp
IGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzOyB9CisgICAgZmxvYXQgcm90YXRpb25BbmdsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcm90YXRpb25BbmdsZTsgfQorICAgIGZsb2F0IGZvcmNlRmFjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9mb3JjZUZhY3RvcjsgfQorCitwcml2YXRlOgorICAgIEV3a1RvdWNo
UG9pbnQodWludDMyX3QgaWQsIFdLVG91Y2hQb2ludFN0YXRlLCBjb25zdCBXS1BvaW50JiwgY29u
c3QgV0tQb2ludCYsIGNvbnN0IFdLU2l6ZSYsIGZsb2F0IHJvdGF0aW9uQW5nbGUsIGZsb2F0IGZv
cmNlRmFjdG9yKTsKKworICAgIHZpcnR1YWwgQVBJT2JqZWN0OjpUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBBUElUeXBlOyB9CisKKyAgICB1aW50MzJfdCBtX2lkOworICAgIFdLVG91Y2hQb2lu
dFN0YXRlIG1fc3RhdGU7CisgICAgV0tQb2ludCBtX3NjcmVlblBvc2l0aW9uOworICAgIFdLUG9p
bnQgbV9wb3NpdGlvbjsKKyAgICBXS1NpemUgbV9yYWRpdXM7CisgICAgZmxvYXQgbV9yb3RhdGlv
bkFuZ2xlOworICAgIGZsb2F0IG1fZm9yY2VGYWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNlbmRpZiAvKiBFd2tU
b3VjaFBvaW50X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlld0VmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwu
Y3BwCmluZGV4IDM2ZGVlMWMxYmYyZDM3YzdjYzEyOTVkMGYxNDdhMmZkNWI1NGFkMTAuLjU2NjBi
ZTExMWM0MmQwZDI1YzYxYTg4NzA2YTE3NmI3YmE4ZTljNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcApAQCAtMzksNiArMzksMTAgQEAKICNpbmNsdWRl
ICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisjaW5jbHVkZSAiRXdrVG91Y2hFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5h
bWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAg
LTExMiw0ICsxMTYsMTIgQEAgdm9pZCBXZWJWaWV3RWZsOjpzZXRUaGVtZVBhdGgoY29uc3QgU3Ry
aW5nJiB0aGVtZSkKICAgICBtX3BhZ2UtPnNldFRoZW1lUGF0aCh0aGVtZSk7CiB9CiAKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBXZWJWaWV3RWZsOjpzZW5kVG91Y2hFdmVudChFd2tU
b3VjaEV2ZW50KiB0b3VjaEV2ZW50KQoreworICAgIEFTU0VSVCh0b3VjaEV2ZW50KTsKKyAgICBt
X3BhZ2UtPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91Y2hFdmVudCh0b3VjaEV2ZW50LCB0
cmFuc2Zvcm1Gcm9tU2NlbmUoKSkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuaAppbmRleCA5NWQ5YzM5
OTAxY2Y5NzE4NmIwOWQ5YmY5YWI1ZjhhNmQwOTkyZTY3Li5kNzE3MjM0YzZiNzhkN2ZhZGUxMGU4
YTViNjVhMTY0NWFjYjYyNWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlZpZXdFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZp
ZXdFZmwuaApAQCAtMzIsNiArMzIsMTAgQEAgY2xhc3MgRXdrVmlldzsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorY2xhc3MgRXdrVG91Y2hFdmVudDsK
KyNlbmRpZgorCiBjbGFzcyBXZWJWaWV3RWZsIDogcHVibGljIFdlYlZpZXcgewogcHVibGljOgog
ICAgIHZvaWQgc2V0RXdrVmlldyhFd2tWaWV3Kik7CkBAIC00MCw2ICs0NCwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwYWludFRvQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCopOwogICAgIHZv
aWQgc2V0VGhlbWVQYXRoKGNvbnN0IFN0cmluZyYpOwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICB2b2lkIHNlbmRUb3VjaEV2ZW50KEV3a1RvdWNoRXZlbnQqKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIFdlYlZpZXdFZmwoV2ViQ29udGV4dCosIFdlYlBhZ2VHcm91cCopOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>