<?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>212507</bug_id>
          
          <creation_ts>2020-05-28 18:57:43 -0700</creation_ts>
          <short_desc>Don&apos;t use casts to convert between WebCore::DragDestinationAction and {Web,WK}DragDestinationAction types</short_desc>
          <delta_ts>2020-06-07 13:02:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=212582</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=212605</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=212885</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>212115</dependson>
          <blocked>211988</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1657124</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-28 18:57:43 -0700</bug_when>
    <thetext>Don&apos;t use casts to convert between WebCore types and {Web,WK}DragDestinationActionMask/{NS,WK}DragOperation.

Requested follow-up fixes by Darin Adler from Bug 212115 Comment #27:
&lt;https://bugs.webkit.org/show_bug.cgi?id=212115#c27&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657135</commentid>
    <comment_count>1</comment_count>
      <attachid>400540</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-28 20:21:25 -0700</bug_when>
    <thetext>Created attachment 400540
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657137</commentid>
    <comment_count>2</comment_count>
      <attachid>400541</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-28 20:25:49 -0700</bug_when>
    <thetext>Created attachment 400541
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657138</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-28 20:26:10 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #2)
&gt; Created attachment 400541 [details]
&gt; Patch v2

Fix bug title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657139</commentid>
    <comment_count>4</comment_count>
      <attachid>400542</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-28 20:29:02 -0700</bug_when>
    <thetext>Created attachment 400542
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657140</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-28 20:29:30 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #4)
&gt; Created attachment 400542 [details]
&gt; Patch v3

Fix a typo and sort new file in Xcode project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657141</commentid>
    <comment_count>6</comment_count>
      <attachid>400542</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-28 20:45:48 -0700</bug_when>
    <thetext>Comment on attachment 400542
Patch v3

Sigh.  Need to test iOS build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657146</commentid>
    <comment_count>7</comment_count>
      <attachid>400544</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-28 21:08:40 -0700</bug_when>
    <thetext>Created attachment 400544
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657147</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-28 21:09:53 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #7)
&gt; Created attachment 400544 [details]
&gt; Patch v4

- Try to fix the iOS builds.  (Taking too long on my old MBP to build, so uploading with fix for first known issue.)
- I&apos;m pretty sure I broke some layout tests on macOS, so not marking r? until I fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657309</commentid>
    <comment_count>9</comment_count>
      <attachid>400544</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-29 10:17:17 -0700</bug_when>
    <thetext>Comment on attachment 400544
Patch v4

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

&gt; Source/WebCore/page/DragActions.h:35
&gt; -// WebCore::DragDestinationAction must be kept in sync with WebDragDestinationAction and WKDragDestinationAction.
&gt; +// Must be kept in sync with WebDragDestinationAction and WKDragDestinationAction.

You should just remove the comment. Because we are using conversion functions this does *not* need to be kept in sync.

&gt; Source/WebCore/page/DragActions.h:63
&gt; +// Must be kept in sync with NSDragOperation.

Is this true? If so, why?

(Eventually we need to change this to an enum class and OptionSet.)

Can we remove DragOperationEvery?

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebDragClient.mm:81
&gt; +    return WebDragDestinationActionNone;

I think this should be ASSERT_NOT_REACHED(). We would never really want to return WebDragDestinationActionNone.

&gt; Source/WebKitLegacy/win/WebCoreSupport/WebDragClient.cpp:73
&gt; +    return WebDragDestinationActionNone;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657475</commentid>
    <comment_count>10</comment_count>
      <attachid>400628</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 16:01:08 -0700</bug_when>
    <thetext>Created attachment 400628
Patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657478</commentid>
    <comment_count>11</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 16:02:21 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #10)
&gt; Created attachment 400628 [details]
&gt; Patch v5

Just changes Patch v4 to use USE(APPKIT) instead of PLATFORM(APPKIT) due to think-o late last night.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657489</commentid>
    <comment_count>12</comment_count>
      <attachid>400544</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 16:09:33 -0700</bug_when>
    <thetext>Comment on attachment 400544
Patch v4

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

&gt;&gt; Source/WebCore/page/DragActions.h:35
&gt;&gt; +// Must be kept in sync with WebDragDestinationAction and WKDragDestinationAction.
&gt; 
&gt; You should just remove the comment. Because we are using conversion functions this does *not* need to be kept in sync.

I will change to &quot;See WebDragDestinationAction and WKDragDestinationAction.&quot; since that seems useful.

&gt;&gt; Source/WebCore/page/DragActions.h:63
&gt;&gt; +// Must be kept in sync with NSDragOperation.
&gt; 
&gt; Is this true? If so, why?
&gt; 
&gt; (Eventually we need to change this to an enum class and OptionSet.)
&gt; 
&gt; Can we remove DragOperationEvery?

] Is this true? If so, why?
I will change this to &quot;See NSDragOperation.&quot;  Was trying to keep the comments similar to DragDestinationAction above.

] (Eventually we need to change this to an enum class and OptionSet.)
] 
] Can we remove DragOperationEvery?

I was working on a patch to update DragOperation, but I wanted to address your comments before moving forward, even though you requested changes to DragDestinationAction and DragOperation changes in the same comment.

These changes to use OptionSet&lt;&gt; for these Drag enums is blocking Bug 211988, which is what I&apos;m desperately trying to work my way back to without getting side-tracked any further.

&gt;&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebDragClient.mm:81
&gt;&gt; +    return WebDragDestinationActionNone;
&gt; 
&gt; I think this should be ASSERT_NOT_REACHED(). We would never really want to return WebDragDestinationActionNone.

I will add ASSERT_NOT_REACHED(), but we need to keep the final `return WebDragDestinationActionNone` statement to avoid undefined behavior since this method has a return value.

I could also use RELEASE_ ASSERT_NOT_REACHED() and remove the final `return WebDragDestinationActionNone` statement if that&apos;s preferred.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657503</commentid>
    <comment_count>13</comment_count>
      <attachid>400631</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 16:25:15 -0700</bug_when>
    <thetext>Created attachment 400631
Patch v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657504</commentid>
    <comment_count>14</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 16:26:09 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #13)
&gt; Created attachment 400631 [details]
&gt; Patch v6

- Address Darin&apos;s first round of feedback.
- Try to fix iOS build failure for reals this time.

Remaining:
- Fix macOS test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657527</commentid>
    <comment_count>15</comment_count>
      <attachid>400544</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 17:30:49 -0700</bug_when>
    <thetext>Comment on attachment 400544
Patch v4

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

&gt;&gt;&gt; Source/WebCore/page/DragActions.h:63
&gt;&gt;&gt; +// Must be kept in sync with NSDragOperation.
&gt;&gt; 
&gt;&gt; Is this true? If so, why?
&gt;&gt; 
&gt;&gt; (Eventually we need to change this to an enum class and OptionSet.)
&gt;&gt; 
&gt;&gt; Can we remove DragOperationEvery?
&gt; 
&gt; ] Is this true? If so, why?
&gt; I will change this to &quot;See NSDragOperation.&quot;  Was trying to keep the comments similar to DragDestinationAction above.
&gt; 
&gt; ] (Eventually we need to change this to an enum class and OptionSet.)
&gt; ] 
&gt; ] Can we remove DragOperationEvery?
&gt; 
&gt; I was working on a patch to update DragOperation, but I wanted to address your comments before moving forward, even though you requested changes to DragDestinationAction and DragOperation changes in the same comment.
&gt; 
&gt; These changes to use OptionSet&lt;&gt; for these Drag enums is blocking Bug 211988, which is what I&apos;m desperately trying to work my way back to without getting side-tracked any further.

] ] Is this true? If so, why?
] 
] I will change this to &quot;See NSDragOperation.&quot; Was trying to keep the comments similar to DragDestinationAction above.

Oh my.  In WebKitLegacy, we have one method for iOS that uses uint64_t instead of NSDragOperation because that enum isn&apos;t defined on that platform in WebView.mm:

- (WebCore::DragData)dragDataForSession:(id &lt;UIDropSession&gt;)session client:(CGPoint)clientPosition global:(CGPoint)globalPosition operation:(uint64_t)operation

And all the methods that call it:

- (uint64_t)_enteredDataInteraction:(id &lt;UIDropSession&gt;)session client:(CGPoint)clientPosition global:(CGPoint)globalPosition operation:(uint64_t)operation
- (uint64_t)_updatedDataInteraction:(id &lt;UIDropSession&gt;)session client:(CGPoint)clientPosition global:(CGPoint)globalPosition operation:(uint64_t)operation
- (void)_exitedDataInteraction:(id &lt;UIDropSession&gt;)session client:(CGPoint)clientPosition global:(CGPoint)globalPosition operation:(uint64_t)operation
- (void)_performDataInteraction:(id &lt;UIDropSession&gt;)session client:(CGPoint)clientPosition global:(CGPoint)globalPosition operation:(uint64_t)operation
- (BOOL)_tryToPerformDataInteraction:(id &lt;UIDropSession&gt;)session client:(CGPoint)clientPosition global:(CGPoint)globalPosition operation:(uint64_t)operation

This is the perfect little mess that this static_cast&lt;&gt; was obscuring in the -dragDataForSession:client:global:operation: method:

    auto dragOperationMask = static_cast&lt;WebCore::DragOperation&gt;(operation);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657533</commentid>
    <comment_count>16</comment_count>
      <attachid>400642</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 18:05:19 -0700</bug_when>
    <thetext>Created attachment 400642
Patch v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657535</commentid>
    <comment_count>17</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 18:07:35 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #16)
&gt; Created attachment 400642 [details]
&gt; Patch v7

Tests were failing because I was using &apos;&amp;&apos; instead of &apos;|&apos; operator to add values to a mask.

Patch is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657539</commentid>
    <comment_count>18</comment_count>
      <attachid>400642</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 18:12:25 -0700</bug_when>
    <thetext>Comment on attachment 400642
Patch v7

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

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:601
&gt; +WebCore::DragOperation coreDragOperationMask(CocoaDragOperation operation)
&gt; +{
&gt; +#if !USE(APPKIT)
&gt; +#define NSDragOperationCopy 1
&gt; +#define NSDragOperationLink 2
&gt; +#define NSDragOperationGeneric 4
&gt; +#define NSDragOperationPrivate 8
&gt; +#define NSDragOperationMove 16
&gt; +#define NSDragOperationDelete 32
&gt; +#endif

I&apos;m open to better ways to do this (as well as CocoaDragOperation).

I could use WebCore::DragOperation values instead of hard-coding integers, but then we have to keep WebCore::DragOperation in sync with NSDragOperation for reals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657541</commentid>
    <comment_count>19</comment_count>
      <attachid>400642</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-29 18:14:46 -0700</bug_when>
    <thetext>Comment on attachment 400642
Patch v7

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:7323
&gt; +    WebCore::DragOperation dragOperationMask = coreDragOperationMask(session.allowsMoveOperation ? WebCore::DragOperationEvery : (WebCore::DragOperationEvery &amp; ~WebCore::DragOperationMove));

WebCore::DragOperationEvery and WebCore::DragOperationMove are already a WebCore::DragOperation. We should not call coreDragOperationMask. This only works because the values are the same, but this is the whole point of the patch really.

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:601
&gt; +#if !USE(APPKIT)
&gt; +#define NSDragOperationCopy 1
&gt; +#define NSDragOperationLink 2
&gt; +#define NSDragOperationGeneric 4
&gt; +#define NSDragOperationPrivate 8
&gt; +#define NSDragOperationMove 16
&gt; +#define NSDragOperationDelete 32
&gt; +#endif

I suggest constants instead of macros. Like:

    constexpr uint64_t  NSDragOperationCopy = 1;

Then you don’t have to do all the #undef.

Further, might also be good if this could go into an SPI header instead of being here, but maybe not a rush to do that right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657555</commentid>
    <comment_count>20</comment_count>
      <attachid>400642</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 19:16:23 -0700</bug_when>
    <thetext>Comment on attachment 400642
Patch v7

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

&gt;&gt;&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:601
&gt;&gt;&gt; +#endif
&gt;&gt; 
&gt;&gt; I&apos;m open to better ways to do this (as well as CocoaDragOperation).
&gt;&gt; 
&gt;&gt; I could use WebCore::DragOperation values instead of hard-coding integers, but then we have to keep WebCore::DragOperation in sync with NSDragOperation for reals.
&gt; 
&gt; I suggest constants instead of macros. Like:
&gt; 
&gt;     constexpr uint64_t  NSDragOperationCopy = 1;
&gt; 
&gt; Then you don’t have to do all the #undef.
&gt; 
&gt; Further, might also be good if this could go into an SPI header instead of being here, but maybe not a rush to do that right now.

] Further, might also be good if this could go into an SPI header instead of being here, but maybe not a rush to do that right now.

The reason that this is `uint64_t` on iOS (and in the Objective-C methods) is that there&apos;s an enum defined in UIKIt that matches a subset of the NSDragOperation values, but we can&apos;t include the UIKit header in WebKitLegacy due to circular dependency issues.  A better approach here might be to mirror the UIKit typedef in an SPI header, then use that instead.

I&apos;ll add a FIXME here and explore that in the next patch for DragOperation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657558</commentid>
    <comment_count>21</comment_count>
      <attachid>400647</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 20:14:13 -0700</bug_when>
    <thetext>Created attachment 400647
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657559</commentid>
    <comment_count>22</comment_count>
      <attachid>400642</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 20:15:46 -0700</bug_when>
    <thetext>Comment on attachment 400642
Patch v7

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

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:7323
&gt;&gt; +    WebCore::DragOperation dragOperationMask = coreDragOperationMask(session.allowsMoveOperation ? WebCore::DragOperationEvery : (WebCore::DragOperationEvery &amp; ~WebCore::DragOperationMove));
&gt; 
&gt; WebCore::DragOperationEvery and WebCore::DragOperationMove are already a WebCore::DragOperation. We should not call coreDragOperationMask. This only works because the values are the same, but this is the whole point of the patch really.

Fixed.

&gt;&gt;&gt;&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:601
&gt;&gt;&gt;&gt; +#endif
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m open to better ways to do this (as well as CocoaDragOperation).
&gt;&gt;&gt; 
&gt;&gt;&gt; I could use WebCore::DragOperation values instead of hard-coding integers, but then we have to keep WebCore::DragOperation in sync with NSDragOperation for reals.
&gt;&gt; 
&gt;&gt; I suggest constants instead of macros. Like:
&gt;&gt; 
&gt;&gt;     constexpr uint64_t  NSDragOperationCopy = 1;
&gt;&gt; 
&gt;&gt; Then you don’t have to do all the #undef.
&gt;&gt; 
&gt;&gt; Further, might also be good if this could go into an SPI header instead of being here, but maybe not a rush to do that right now.
&gt; 
&gt; ] Further, might also be good if this could go into an SPI header instead of being here, but maybe not a rush to do that right now.
&gt; 
&gt; The reason that this is `uint64_t` on iOS (and in the Objective-C methods) is that there&apos;s an enum defined in UIKIt that matches a subset of the NSDragOperation values, but we can&apos;t include the UIKit header in WebKitLegacy due to circular dependency issues.  A better approach here might be to mirror the UIKit typedef in an SPI header, then use that instead.
&gt; 
&gt; I&apos;ll add a FIXME here and explore that in the next patch for DragOperation.

Better yet, I defined the two _UIDragOperation constants and changed the #If/#endif into #if/#else/#endif.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657560</commentid>
    <comment_count>23</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-29 20:17:16 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #21)
&gt; Created attachment 400647 [details]
&gt; Patch for landing

Need to investigate fast/events/drag-and-drop.html failures before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657669</commentid>
    <comment_count>24</comment_count>
      <attachid>400680</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-30 14:51:35 -0700</bug_when>
    <thetext>Created attachment 400680
Patch v9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657797</commentid>
    <comment_count>25</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-31 11:08:55 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 400544 [details]
&gt; Patch v4
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=400544&amp;action=review
&gt; 
&gt; Can we remove DragOperationEvery?

Well that question was prescient.  The fast/events/drag-and-drop.html failure on Mac WK1 bots was due to the new conversion functions returning the minimum bits set instead of DragOperationEvery.

I guess I&apos;ll remove DragOperationEvery in this patch as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657800</commentid>
    <comment_count>26</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-05-31 12:40:01 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #25)
&gt; (In reply to Darin Adler from comment #9)
&gt; &gt; Comment on attachment 400544 [details]
&gt; &gt; Patch v4
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=400544&amp;action=review
&gt; &gt; 
&gt; &gt; Can we remove DragOperationEvery?
&gt; 
&gt; Well that question was prescient.  The fast/events/drag-and-drop.html
&gt; failure on Mac WK1 bots was due to the new conversion functions returning
&gt; the minimum bits set instead of DragOperationEvery.
&gt; 
&gt; I guess I&apos;ll remove DragOperationEvery in this patch as well.

Going to split out the DragOperation changes into a separate patch (the basis for using OptionSet&lt;DragOperation&gt;) since this patch is getting too big for a small follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658008</commentid>
    <comment_count>27</comment_count>
      <attachid>400748</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-01 12:45:18 -0700</bug_when>
    <thetext>Created attachment 400748
Patch for landing v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658072</commentid>
    <comment_count>28</comment_count>
      <attachid>400748</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-01 14:57:11 -0700</bug_when>
    <thetext>Comment on attachment 400748
Patch for landing v2

I didn&apos;t change the Source/WebKitLegacy/win code since Patch v9, and WPE build is broken due to TLS certificate issues, so marking cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658079</commentid>
    <comment_count>29</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-01 15:04:46 -0700</bug_when>
    <thetext>Committed r262395: &lt;https://trac.webkit.org/changeset/262395&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400748.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658080</commentid>
    <comment_count>30</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-01 15:05:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/63845799&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400540</attachid>
            <date>2020-05-28 20:21:25 -0700</date>
            <delta_ts>2020-05-28 20:25:48 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-212507-20200528202312.patch</filename>
            <type>text/plain</type>
            <size>32787</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmEyMjkzM2JiNThkNTNj
NTVlMjY1NTQzNDY3OTliZGEyNTM2ZmZkNS4uNTg2NzI2YzMyNzQzOTc3ZWQwNTllN2JlMDllMzM4
OWJlZDZhMTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI4ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3Rz
IHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7V2ViLFdLfURyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2sve05TLFdLfURyYWdPcGVyYXRpb24KKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURy
YWdEZXN0aW5hdGlvbkFjdGlvbik6IEFkZC4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEZXN0aW5h
dGlvbkFjdGlvbkFueSk6IERlbGV0ZS4KKyAgICAgICAgLSBSZW5hbWUgRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uQW55KCkgdG8KKyAgICAgICAgICBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSB0byBt
YXRjaCBXZWJLaXQgc3R5bGUuCisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAg
ICAgLSBVcGRhdGUgdG8gdXNlIGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpLgorCiAyMDIwLTA1
LTI3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGZv
ci1vZiBzaG91bGQgY2hlY2sgdGhlIGl0ZXJhYmxlIGlzIGEgSlNBcnJheSBmb3IgRmFzdEFycmF5
IGluIERGRyBpdGVyYXRvcl9vcGVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE0MDUxMzFjMTNhZDhiYzA1ODFhNjk0
ZTczNzM3OWFjNmQ3ZDQ5NWYuLjM0OGZkNzJjYTRkMmJjMDBjZGIxMTM3Y2NiM2I4NDU1YTRkNjQ2
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDUtMjggIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVy
dCBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHtXZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TWFzay97TlMsV0t9RHJhZ09wZXJhdGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MjEyNTA3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmg6IEFkZC4KKyAgICAg
ICAgKFdlYktpdDo6Y29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOgorICAgICAgICAoV2Vi
S2l0Ojpjb3JlRHJhZ09wZXJhdGlvbk1hc2spOgorICAgICAgICAtIEFkZCBjb252ZXJzaW9uIGZ1
bmN0aW9ucyB0byBhdm9pZCBjYXN0aW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IGRyYWdEYXRhRm9yRHJvcFNlc3Npb246ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOl0pOgor
ICAgICAgICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKCkgYW5k
CisgICAgICAgICAgY29yZURyYWdPcGVyYXRpb25NYXNrKCkuCisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQWRkIF9XS0RyYWdBY3Rpb25zSW50
ZXJuYWwuaCB0byBwcm9qZWN0LgorCiAyMDIwLTA1LTI4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWFkYWJsZUJ5dGVTdHJlYW0gc2hvdWxkIGJlIGVuYWJs
ZWQvZGlzYWJsZWQgaW4gc2VydmljZSB3b3JrZXJzIGFzIGRvbmUgaW4gcGFnZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCA3NDVhZjVmNjA0MDVjMDlmYWYwYzExZTg5MmI5MWM4NDIy
YWZjMWI0Li4wMDZlNWRkNzJlNDA4ZDc3M2I1MjBhZWU1NWM0Mjg5OTc3ZjZlZDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDUtMjggIERhdmlk
IEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgY2FzdHMg
dG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHtXZWIsV0t9RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFzay97TlMsV0t9RHJhZ09wZXJhdGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMjEyNTA3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAgICAgICAgKGtp
dCk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGluZy4K
KyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KToKKyAgICAgICAgLSBNYWtlIHVzZSBvZiBraXQoKSBjb252ZXJzaW9uIGZ1bmN0aW9uLgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKGNvcmVEcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrKToKKyAgICAgICAgKGNvcmVEcmFnT3BlcmF0aW9uTWFzayk6CisgICAgICAgIC0g
QWRkIGNvbnZlcnNpb24gZnVuY3Rpb25zIHRvIGF2b2lkIGNhc3RpbmcuCisgICAgICAgICgtW1dl
YlZpZXcgZHJhZ0RhdGFGb3JTZXNzaW9uOmNsaWVudDpnbG9iYWw6b3BlcmF0aW9uOl0pOgorICAg
ICAgICAoLVtXZWJWaWV3IGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86XSk6CisgICAgICAgICgt
W1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5n
VXBkYXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ0V4aXRlZDpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpdKToKKyAgICAgICAgLSBNYWtlIHVz
ZSBvZiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaygpIGFuZAorICAgICAgICAgIGNvcmVE
cmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNpb24gZnVuY3Rpb25zLgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2spOiBB
ZGQgZGVjbGFyYXRpb24uCisgICAgICAgIChjb3JlT3B0aW9ucyk6IFJlbW92ZSByZWR1bmRhbnQg
cGFyYW1ldGVyIG5hbWUuCisKIDIwMjAtMDUtMjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBGb2xsb3ctdXAgYnVpbGQgZml4OiBbQ29jb2FdIFBhc3MgYWxs
IGRlZmluZXMgZnJvbSBQbGF0Zm9ybS5oIHRvIHZhcmlvdXMgc2NyaXB0cywgbm90IGp1c3QgdGhl
IG9uZXMgZnJvbSAueGNjb25maWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAzM2Rl
YzhkMjdkNjVjZDBkZjlhYTE0YmI1YTkzMjc3Yzg5Y2UzY2UxLi42NGI2MjdmY2NiZDcyNTQ4M2Y4
ZWRjZmY1NTgxMjZmYWZiNDYyY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMjAtMDUtMjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KKworICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmUg
dHlwZXMgYW5kIHtXZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay97TlMsV0t9RHJhZ09w
ZXJhdGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNTA3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHA6CisgICAgICAgIChraXQpOgorICAgICAgICAtIEFkZCBjb252ZXJz
aW9uIGZ1bmN0aW9uIHRvIGF2b2lkIGNhc3RpbmcuCisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojp3
aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbik6CisgICAgICAgIC0gTWFrZSB1c2Ugb2Yg
a2l0KCkgY29udmVyc2lvbiBmdW5jdGlvbi4KKwogMjAyMC0wNS0xOSAgRnVqaWkgSGlyb25vcmkg
IDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEFTU0VSVCht
X2VnbERpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpIGZhaWxzIGluIH5QbGF0Zm9ybURpc3BsYXko
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCmluZGV4IGM4MTc3NDAyZjk3YzUwODNiNzU4MDgx
MDBlM2RhNzhjMjA4ZmZjYjQuLjhkY2UwNmYzMWU5ODg3OWNkNjY0YWYxODdjYjE4YjVmNjc1ZTg2
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKQEAgLTMyLDE0ICszMiwxNCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBt
dXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQgV0tE
cmFnRGVzdGluYXRpb25BY3Rpb24uCisvLyBNdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIFdlYkRy
YWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQgV2tEcmFnRGVzdGluYXRpb25BY3Rpb24uCiBlbnVtIGNs
YXNzIERyYWdEZXN0aW5hdGlvbkFjdGlvbiA6IHVpbnQ4X3QgewogICAgIERIVE1MID0gMSwKICAg
ICBFZGl0ICA9IDIsCiAgICAgTG9hZCAgPSA0CiB9OwogCi1pbmxpbmUgY29uc3RleHByIE9wdGlv
blNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSgpCitj
b25zdGV4cHIgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gYW55RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKCkKIHsKICAgICByZXR1cm4gT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlv
bj4geyBEcmFnRGVzdGluYXRpb25BY3Rpb246OkRIVE1MLCBEcmFnRGVzdGluYXRpb25BY3Rpb246
OkVkaXQsIERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZCB9OwogfQpAQCAtNjAsNyArNjAsNyBA
QCB0eXBlZGVmIGVudW0gewogICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBVSU5U
X01BWAogfSBEcmFnU291cmNlQWN0aW9uOwogCi0vLyBNYXRjaGVzIE5TRHJhZ09wZXJhdGlvbi4K
Ky8vIE11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggTlNEcmFnT3BlcmF0aW9uLgogdHlwZWRlZiBl
bnVtIHsKICAgICBEcmFnT3BlcmF0aW9uTm9uZSAgICA9IDAsCiAgICAgRHJhZ09wZXJhdGlvbkNv
cHkgICAgPSAxLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggNjUxMDE4NzBjMTk5
YWFhYmRmMTkwZDdkNmI0NWU2OTQzOGQ5ZGJiMi4uNDIxYTI5OTQzYjNkMTBkNDg1ZGE1Y2U5ZWZk
NTNlM2ZhZmJjMGYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03NSw4ICs3
NSw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdnaW5nUHVycG9zZSB7IEZvckVkaXRp
bmcsIEZvckZpbGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9OwogCiAgICAgLy8gY2xpZW50UG9z
aXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhp
biB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJD
T1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERy
YWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdE
ZXN0aW5hdGlvbkFjdGlvbj4gYWN0aW9uTWFzayA9IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSgp
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdl
TmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0Fw
cGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gYWN0aW9uTWFz
ayA9IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSgpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFn
RGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJ
bnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZs
YWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlv
bj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJh
Z0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9u
LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOwogICAg
IC8vIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBieSBXZWJLaXQyIElQQyBiZWNh
dXNlIERyYWdEYXRhCiAgICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIGRlY29kZXIgYW5kIG5v
dCBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgRHJhZ0RhdGEoKSA9IGRlZmF1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJu
YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NjRmMDEyNjQxZGUxNTBhNGRkNzY3YzI1ZmY1YjU4ZTUxNzI4ODMz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0Ry
YWdBY3Rpb25zSW50ZXJuYWwuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgT3B0aW9uU2V0PFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2soV0tEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uKQoreworICAgIE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHJlc3VsdDsKKyAgICBpZiAoYWN0aW9uICYgV0tE
cmFnRGVzdGluYXRpb25BY3Rpb25ESFRNTCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb246OkRIVE1MKTsKKyAgICBpZiAoYWN0aW9uICYgV0tEcmFnRGVz
dGluYXRpb25BY3Rpb25FZGl0KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0
aW5hdGlvbkFjdGlvbjo6RWRpdCk7CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTG9hZCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb246OkxvYWQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2lubGluZSBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhOU0RyYWdPcGVyYXRpb24gb3BlcmF0
aW9uKQoreworICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gcmVzdWx0ID0gV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbk5vbmU7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkNvcHkp
CisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJl
c3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICBpZiAob3BlcmF0aW9uICYg
TlNEcmFnT3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOwor
ICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1
bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJh
dGlvblByaXZhdGUpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+KHJlc3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICBp
ZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0ID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUp
CisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJl
c3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyNDIxYWI4MjNjNjEzNmU2YzE3NjZlNmFmZDc0NmM4
Y2U3M2U4NzljLi43ZGJhNGVmZGRkYTQzMWMxMDMwMDkzMDZmNTI1ZTI4ZTBlMDE2YmI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNzYsNiAr
NzYsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9v
bC5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJfV0tEcmFnQWN0aW9u
c0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPENhcmJvbi9D
YXJib24uaD4KQEAgLTM5NDUsOCArMzk0Niw5IEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1w
bDo6ZHJhZ2dpbmdFbnRlcmVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewog
ICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQ
b2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9j
YXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TWFzayA9IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+Ojpmcm9tUmF3
KFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dp
bmdJbmZvXSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBj
bGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dp
bmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JE
cmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFzayk7CisgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29y
ZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFj
dGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRp
b24gPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzayk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZv
LCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlvbiwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWco
bV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrKTsKIAogICAgIG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7
CiAgICAgbV9wYWdlLT5kcmFnRW50ZXJlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5n
UGFzdGVib2FyZC5uYW1lKTsKQEAgLTM5NTgsOCArMzk2MCw5IEBAIE5TRHJhZ09wZXJhdGlvbiBX
ZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJ
bmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2lu
dDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJD
b3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIGF1dG8gZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFzayA9IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+
Ojpmcm9tUmF3KFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0lu
Zm86ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dp
bmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9u
RmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CisgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW21fdmlldyBfd2ViX2RyYWdEZXN0
aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICBhdXRvIGRy
YWdPcGVyYXRpb24gPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFzayk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJh
Z2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlvbiwgYXBwbGljYXRpb25GbGFn
c0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrKTsKICAgICBtX3BhZ2UtPmRyYWdVcGRhdGVkKGRyYWdEYXRhLCBk
cmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogCiAgICAgTlNJbnRlZ2VyIG51
bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX3BhZ2UtPmN1cnJlbnREcmFnTnVtYmVyT2ZGaWxl
c1RvQmVBY2NlcHRlZCgpOwpAQCAtMzk4Myw3ICszOTg2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
ZHJhZ2dpbmdFeGl0ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5m
by5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50
IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlv
biwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJh
Z2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0
aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7
CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGds
b2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVh
c2VkKCksIGRyYWdnaW5nSW5mbykpOwogICAgIG1fcGFnZS0+ZHJhZ0V4aXRlZChkcmFnRGF0YSwg
ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsKICAgICBtX3BhZ2UtPnJlc2V0
Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAgIGRyYWdnaW5nSW5mby5udW1iZXJPZlZhbGlk
SXRlbXNGb3JEcm9wID0gbV9pbml0aWFsTnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsKQEAgLTM5
OTksNyArNDAwMiw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGlk
IDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50
IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlv
biBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6
Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93
XSkpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFn
RGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwg
YXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2lu
Z0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSAqZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6
RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25N
YXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlv
bkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOwog
CiAgICAgTlNBcnJheSAqdHlwZXMgPSBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLnR5
cGVzOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggMzE2MDZhOTU4N2Y1MWIwYjNhZWFhYmY1NmJjMzU5NmMyZDg0
MDNmMy4uZDBiZDNmMzhmM2I1ODc5NzY3Nzc5MzRiNDhhODYzYjIzYzE5MTdkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCkBAIC04Niw2ICs4Niw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJfV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mb0ludGVybmFsLmgiCisjaW1wb3J0ICJfV0tEcmFnQWN0aW9uc0ludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tFbGVtZW50QWN0aW9uLmgiCiAjaW1wb3J0ICJfV0tFbGVtZW50QWN0aW9uSW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZvY3VzZWRFbGVtZW50SW5mby5oIgpAQCAtNzMxMCw5ICs3
MzExLDggQEAgLSAoV2ViQ29yZTo6RHJhZ0RhdGEpZHJhZ0RhdGFGb3JEcm9wU2Vzc2lvbjooaWQg
PFVJRHJvcFNlc3Npb24+KXNlc3Npb24gZHJhZ0Rlc3QKICAgICBDR1BvaW50IGNsaWVudDsKICAg
ICBbc2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Npb246c2Vzc2lv
biBvdXRDbGllbnRQb2ludDomY2xpZW50IG91dEdsb2JhbFBvaW50OiZnbG9iYWxdOwogCi0gICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KHNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbiA/IFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25FdmVyeSA6IChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZlcnkgJiB+
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpKTsKLSAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2sgPSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJv
bVJhdyhkcmFnRGVzdGluYXRpb25BY3Rpb24pOwotICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNv
cmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xv
YmFsKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIGRy
YWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgfTsKKyAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRy
YWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25NYXNrKHNlc3Npb24uYWxsb3dzTW92
ZU9wZXJhdGlvbiA/IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25FdmVyeSA6IChXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uRXZlcnkgJiB+V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpKTsKKyAgICByZXR1
cm4geyBzZXNzaW9uLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6
cm91bmRlZEludFBvaW50KGdsb2JhbCksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFn
QXBwbGljYXRpb25Ob25lLCBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkcmFnRGVzdGlu
YXRpb25BY3Rpb24pIH07CiB9CiAKIC0gKHZvaWQpY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3Rh
dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDY2MWU5YThhNDgzMjRhOGYwNTlkNzg0NjFlODc5NGJlODg0ZDE5NGUuLmE0NGVhZGRjMzE3
N2I0NjAxMjZhZTYzNDU2YjI0MjI0ODAxNThlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTM3LDYgKzkzNyw3IEBACiAJCTQ0ODI3
MzQ3MjQ1MjhGNjAwMEE5NTQ5MyAvKiBDb2NvYUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDgyNzM0NjI0NTI4RjYwMDBBOTU0OTMgLyogQ29j
b2FJbWFnZS5oICovOyB9OwogCQk0NDlEOTBEQTIxRkRDMzBCMDBGNjc3QzAgLyogTG9jYWxBdXRo
ZW50aWNhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQ5RDkwRDgyMUZENjNGRTAwRjY3N0MwIC8qIExvY2FsQXV0aGVudGljYXRp
b25Tb2Z0TGluay5tbSAqLzsgfTsKIAkJNDRFOTM2RkQyNDQ3QzJEODAwOUZBM0UzIC8qIExlZ2Fj
eUN1c3RvbVByb3RvY29sSUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0RTkzNkZDMjQ0N0MyNTYwMDlGQTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90b2Nv
bElELmggKi87IH07CisJCTQ0RUMzRUE5MjQ3RjVDMDkwMDU5NDg5QyAvKiBfV0tEcmFnQWN0aW9u
c0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NEVDM0VBODI0N0Y1QzA4MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oICov
OyB9OwogCQk0NjBGNDg4RjFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNDYwRjQ4OTAx
Rjk5NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MEY0ODhF
MUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggKi87IH07CiAJCTQ2MUNDQ0E1MjMxNDg1QTcwMEI2NTlCOSAvKiBVSVJlbW90ZU9iamVjdFJl
Z2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjMyMzY4NTIzMTQ4MzNGMDBBNDhGQTcgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovOyB9
OwpAQCAtMzUzOSw2ICszNTQwLDcgQEAKIAkJNDQ5RDkwRDgyMUZENjNGRTAwRjY3N0MwIC8qIExv
Y2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDRBNDgxQzYyMUYyRDI3QjAwRjJGOTE5IC8qIENsaWVudENlcnRp
ZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0RTkzNkZDMjQ0N0MyNTYwMDlGQTNFMyAvKiBMZWdhY3lD
dXN0b21Qcm90b2NvbElELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2Fj
eUN1c3RvbVByb3RvY29sSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRFQzNF
QTgyNDdGNUMwODAwNTk0ODlDIC8qIF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjAzMDExQTIzNEJFMzFEMDA5QzgyMTcgLyogV2ViQmFj
a0ZvcndhcmRDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJCYWNrRm9yd2FyZENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYw
MzAxMUIyMzRCRTMxRTAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CkBAIC03NTM2LDYgKzc1MzgsNyBAQAogCQkzN0RGQTZGRTE4MTBCQjJE
MDAxRjRBOUYgLyogQ29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTQ0RUMzRUE4MjQ3RjVDMDgwMDU5NDg5QyAvKiBfV0tEcmFnQWN0aW9uc0ludGVy
bmFsLmggKi8sCiAJCQkJMzczRDEyMjExOEE0NzMwMTAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxl
LmggKi8sCiAJCQkJMzczRDEyMjAxOEE0NzMwMTAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlLm1t
ICovLAogCQkJCTM3M0QxMjI2MThBNDczRjYwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZUludGVy
bmFsLmggKi8sCkBAIC0xMDU0OSw2ICsxMDU1Miw3IEBACiAJCQkJMUE1NzA0RjgxQkUwMUZGNDAw
ODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDNUQyMzhDMjI3QTJDREEwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgzODkxQjY5MUE2OEJFQkMwMDMwRjM4NiAvKiBfV0tEaWFnbm9zdGlj
TG9nZ2luZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NEVDM0VBOTI0N0Y1QzA5MDA1
OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFB
NEZFNUExOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMUE0RkU2MTE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTFBNEZFNUMxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KaW5kZXggNGJiZTgxN2ExNDcxZWNi
Y2VjNGI0MDliZDYyOGU4ZTY1M2Q2NmIxNS4uZmNjZDdhYWM0ZTY1NjYyZjYyMGJiMzk0M2MzNDY5
ZGY4MDhmYmNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCkBAIC02OCw2ICs2OCwxOSBAQCBXZWJEcmFnQ2xp
ZW50OjpXZWJEcmFnQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAKICNpZiBQTEFURk9STShNQUMp
CiAKK3N0YXRpYyBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24ga2l0KFdlYkNvcmU6OkRyYWdEZXN0
aW5hdGlvbkFjdGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICBjYXNl
IFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6REhUTUw6CisgICAgICAgIHJldHVybiBX
ZWJEcmFnRGVzdGluYXRpb25BY3Rpb25ESFRNTDsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdEZXN0
aW5hdGlvbkFjdGlvbjo6RWRpdDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFj
dGlvbkVkaXQ7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQ6
CisgICAgICAgIHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkOworICAgIH0KKyAg
ICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsKK30KKwogYm9vbCBXZWJEcmFn
Q2xpZW50Ojp1c2VMZWdhY3lEcmFnQ2xpZW50KCkKIHsKICAgICByZXR1cm4gZmFsc2U7CkBAIC04
Niw3ICs5OSw3IEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqZ2V0VG9wSFRNTFZpZXcoRnJhbWUqIGZy
YW1lKQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OkRyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndh
cmRlcl0gd2ViVmlldzptX3dlYlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb246
c3RhdGljX2Nhc3Q8V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPihhY3Rpb24pIGZvckRyYWdnaW5n
SW5mbzpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKV07CisgICAgW1ttX3dlYlZpZXcgX1VJRGVsZWdh
dGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uOmtpdChhY3Rpb24pIGZvckRyYWdnaW5nSW5mbzpkcmFnRGF0YS5wbGF0Zm9ybURhdGEo
KV07CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmlu
ZGV4IDQ0ZjRjYzA1OWUxMmJiYzEwNmRjY2QxYzUyY2ZmZTUyMWE1NWNiMjIuLmYwM2RjZDY2MWYy
NDFkNzFhYjFlNzUxYzhmYjkyYTJhZTBjMTNkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTExMiw3ICsxMTIsNiBAQAogI2ltcG9ydCAiV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCiAjaW1wb3J0ICJXZWJUZXh0Q29tcGxldGlvbkNvbnRy
b2xsZXIuaCIKICNpbXBvcnQgIldlYlRleHRJdGVyYXRvci5oIgotI2ltcG9ydCAiV2ViVUlEZWxl
Z2F0ZS5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50LmgiCiAjaW1wb3J0ICJXZWJWaWV3R3JvdXAuaCIKQEAgLTU3
Nyw2ICs1NzYsMzYgQEAgLSAodm9pZCljbGVhclRhcmdldDsKICNlbmRpZgogQGVuZAogCitzdGF0
aWMgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gY29yZURyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2soV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2spCit7
CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gcmVzdWx0Owor
ICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhUTUwpCisgICAg
ICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpESFRNTCk7Cisg
ICAgaWYgKGFjdGlvbk1hc2sgJiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25FZGl0KQorICAgICAg
ICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6RWRpdCk7CisgICAg
aWYgKGFjdGlvbk1hc2sgJiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKQorICAgICAgICBy
ZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBjb3JlRHJhZ09wZXJhdGlv
bk1hc2soTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3sKKyAgICBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uIHJlc3VsdCA9IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChvcGVy
YXRpb24gJiBOU0RyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
Q29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAg
IHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCAmIFdl
YkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3Bl
cmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMpOworICAg
IGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlKQorICAgICAgICByZXN1bHQg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlv
bk1vdmUpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+KHJlc3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBpZiAob3BlcmF0
aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
RGVsZXRlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBXZWJDb3JlOjpGaW5kT3B0aW9ucyBj
b3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKQogewogICAgIFdlYkNvcmU6OkZpbmRP
cHRpb25zIGZpbmRPcHRpb25zOwpAQCAtMTkxMSw4ICsxOTQwLDggQEAgLSAoV2ViRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKWRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JTZXNzaW9uOihpZCA8VUlE
cm9wU2Vzc2kKIAogLSAoV2ViQ29yZTo6RHJhZ0RhdGEpZHJhZ0RhdGFGb3JTZXNzaW9uOihpZCA8
VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xv
YmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9u
CiB7Ci0gICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+KG9wZXJhdGlvbik7Ci0gICAgYXV0byBkcmFnRGVzdGluYXRpb25NYXNrID0g
T3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46OmZyb21SYXcoW3NlbGYg
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246c2Vzc2lvbl0pOworICAgIGF1dG8g
ZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2sob3BlcmF0aW9uKTsKKyAg
ICBhdXRvIGRyYWdEZXN0aW5hdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFz
ayhbc2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjpzZXNzaW9uXSk7CiAg
ICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudFBvc2l0
aW9uKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbFBvc2l0aW9uKSwgZHJhZ09wZXJh
dGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIGRyYWdEZXN0aW5hdGlvbk1h
c2sgfTsKIH0KIApAQCAtNjcyNiw3ICs2NzU1LDcgQEAgLSAoV2ViQ29yZTo6RHJhZ0FwcGxpY2F0
aW9uRmxhZ3MpYXBwbGljYXRpb25GbGFnczooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0kK
IAogLSAoT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4pYWN0aW9uTWFz
a0ZvckRyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KIHsKLSAg
ICByZXR1cm4gT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46OmZyb21S
YXcoW1tzZWxmIF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OnNlbGYgZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICByZXR1cm4g
Y29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW1tzZWxmIF9VSURlbGVnYXRlRm9yd2FyZGVy
XSB3ZWJWaWV3OnNlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpk
cmFnZ2luZ0luZm9dKTsKIH0KIAogLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nRW50ZXJlZDoo
aWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KQEAgLTY3MzQsNyArNjc2Myw3IEBAIC0g
KE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ0VudGVyZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJh
Z2dpbmdJbmZvCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJh
Z2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpn
bG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3dd
KSk7CiAKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVu
dCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJ
bmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdz
OmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJ
bmZvXSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGll
bnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZv
XSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKICAgICBy
ZXR1cm4gY29yZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7
CiB9CiAKQEAgLTY3NDcsNyArNjc3Niw3IEBAIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1Vw
ZGF0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNv
cmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7CiAKLSAgICBXZWJDb3JlOjpEcmFnRGF0
YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlv
bk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgV2ViQ29yZTo6RHJhZ0Rh
dGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRp
b25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxm
IGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdn
aW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKICAgICByZXR1cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CiB9CiAKQEAgLTY3NTksNyArNjc4OCw3IEBAIC0gKHZv
aWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9u
XSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtk
cmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAgICBXZWJD
b3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10p
OworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBn
bG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOwog
ICAgIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0V4aXRlZChkcmFnRGF0YSk7CiB9CiAKQEAg
LTY3NzIsNyArNjgwMSw3IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlkIDxOU0Ry
YWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50
KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50
IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRp
b25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgYXV0byogZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6
RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKKyAgICBhdXRvKiBk
cmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xv
YmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKIAog
ICAgIE5TQXJyYXkqIHR5cGVzID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC50eXBl
czsKICAgICBpZiAoIVt0eXBlcyBjb250YWluc09iamVjdDpXZWJBcmNoaXZlUGJvYXJkVHlwZV0g
JiYgW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3Rl
Ym9hcmRUeXBlKCldKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3SW50ZXJuYWwuaAppbmRleCA1NzY2MjlhYmE2OWE2Y2EwYmY1NmE1YjllNjlhMzMxOTEy
NzM4MmM4Li4yNGMzZWUwNDM2NzMxNmM0M2UyMmQ4OTFhNTJlNjI3YjQ5MzVlZDc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNiw2ICszNiw3IEBACiAj
aWZkZWYgX19jcGx1c3BsdXMKIAogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGll
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RmluZE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5oPgpAQCAtODksNyArOTAsOSBAQCBjbGFzcyBX
ZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKLVdl
YkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpOwor
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soTlNEcmFnT3BlcmF0
aW9uKTsKKworV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMp
OwogCiBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBjb3JlTGF5b3V0TWlsZXN0
b25lcyhXZWJMYXlvdXRNaWxlc3RvbmVzKTsKIFdlYkxheW91dE1pbGVzdG9uZXMga2l0TGF5b3V0
TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuY3BwCmluZGV4IGQ0M2MyZTQ0ZWM4MDBjZDU1MzlhMmQwMjBjOWRmYTRhNTM3ZDUwMWIuLjY5
ZDU4OGFiOGQ4ZjZhMDZmMmFjMWVkMzE3ZjM4ZjRmYmU5NmJlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjAsNiArNjAsMTkgQEAgc3RhdGljIERXT1JEIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
a1RvRHJhZ0N1cnNvcnMoRHJhZ09wZXJhdGlvbiBvcCkKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CitzdGF0aWMgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGtpdChEcmFnRGVzdGluYXRpb25BY3Rp
b24gYWN0aW9uKQoreworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgY2FzZSBEcmFnRGVzdGlu
YXRpb25BY3Rpb246OkRIVE1MOgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uREhUTUw7CisgICAgY2FzZSBEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQ6CisgICAgICAg
IHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25FZGl0OworICAgIGNhc2UgRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uOjpMb2FkOgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTG9hZDsKKyAgICB9CisgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7
Cit9CisKIFdlYkRyYWdDbGllbnQ6OldlYkRyYWdDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAg
ICA6IG1fd2ViVmlldyh3ZWJWaWV3KSAKIHsKQEAgLTcyLDcgKzg1LDcgQEAgdm9pZCBXZWJEcmFn
Q2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25B
Y3Rpb24gYWN0aW8KICAgICAvL3NvIHdlIGp1c3QgY2FsbCB0aGUgZGVsZWdhdGUsIGFuZCBkb24n
dCB3b3JyeSBhYm91dCB3aGV0aGVyIGl0J3MgaW1wbGVtZW50ZWQKICAgICBDT01QdHI8SVdlYlVJ
RGVsZWdhdGU+IGRlbGVnYXRlUmVmID0gMDsKICAgICBpZiAoU1VDQ0VFREVEKG1fd2ViVmlldy0+
dWlEZWxlZ2F0ZSgmZGVsZWdhdGVSZWYpKSkKLSAgICAgICAgZGVsZWdhdGVSZWYtPndpbGxQZXJm
b3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1fd2ViVmlldywgKFdlYkRyYWdEZXN0aW5hdGlvbkFj
dGlvbilhY3Rpb24sIGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICAgICAgZGVsZWdhdGVS
ZWYtPndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1fd2ViVmlldywga2l0KGFjdGlv
biksIGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KIAogRHJhZ1NvdXJjZUFjdGlvbiBXZWJE
cmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiB3
aW5kb3dQb2ludCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400541</attachid>
            <date>2020-05-28 20:25:49 -0700</date>
            <delta_ts>2020-05-28 20:28:58 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-212507-20200528202736.patch</filename>
            <type>text/plain</type>
            <size>32767</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmEyMjkzM2JiNThkNTNj
NTVlMjY1NTQzNDY3OTliZGEyNTM2ZmZkNS4uZWRjNzYzNGYzYTIyZjkyYTA3MDQyYjc4YWViMTIx
ODkyZDU1YjcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI4ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3Rz
IHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7V2ViLFdLfURyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2svTlNEcmFnT3BlcmF0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMTI1MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwYWdlL0RyYWdBY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnRGVz
dGluYXRpb25BY3Rpb24pOiBBZGQuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb25BbnkpOiBEZWxldGUuCisgICAgICAgIC0gUmVuYW1lIERyYWdEZXN0aW5hdGlvbkFjdGlv
bkFueSgpIHRvCisgICAgICAgICAgYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgdG8gbWF0Y2gg
V2ViS2l0IHN0eWxlLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIC0g
VXBkYXRlIHRvIHVzZSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKS4KKwogMjAyMC0wNS0yNyAg
S2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBmb3Itb2Yg
c2hvdWxkIGNoZWNrIHRoZSBpdGVyYWJsZSBpcyBhIEpTQXJyYXkgZm9yIEZhc3RBcnJheSBpbiBE
RkcgaXRlcmF0b3Jfb3BlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNDA1MTMxYzEzYWQ4YmMwNTgxYTY5NGU3Mzcz
NzlhYzZkN2Q0OTVmLi4zYjIyZWUxZGMxNjU2NWMwNTMyN2FmYTlkYTM1NWZhZGE5NTRmYmEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA1LTI4ICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3RzIHRvIGNvbnZlcnQgYmV0
d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7V2ViLFdLfURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sv
TlNEcmFnT3BlcmF0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI1MDc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaDogQWRkLgorICAgICAgICAoV2ViS2l0
Ojpjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk6CisgICAgICAgIChXZWJLaXQ6OmNvcmVE
cmFnT3BlcmF0aW9uTWFzayk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb25zIHRv
IGF2b2lkIGNhc3RpbmcuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRlcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJh
Z0RhdGFGb3JEcm9wU2Vzc2lvbjpkcmFnRGVzdGluYXRpb25BY3Rpb246XSk6CisgICAgICAgIC0g
TWFrZSB1c2Ugb2YgY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soKSBhbmQKKyAgICAgICAg
ICBjb3JlRHJhZ09wZXJhdGlvbk1hc2soKS4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBBZGQgX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIHRv
IHByb2plY3QuCisKIDIwMjAtMDUtMjggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlYWRhYmxlQnl0ZVN0cmVhbSBzaG91bGQgYmUgZW5hYmxlZC9kaXNhYmxl
ZCBpbiBzZXJ2aWNlIHdvcmtlcnMgYXMgZG9uZSBpbiBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDc0NWFmNWY2MDQwNWMwOWZhZjBjMTFlODkyYjkxYzg0MjJhZmMxYjQuLjk2
ZGViMmVhOGZmZDkxYmFmNWM2MWE1ZDAxNDQ4MzFmOTkwNzAxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMC0wNS0yOCAgRGF2aWQgS2lsemVyICA8
ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IHVzZSBjYXN0cyB0byBjb252ZXJ0
IGJldHdlZW4gV2ViQ29yZSB0eXBlcyBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrL05TRHJhZ09wZXJhdGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNTA3
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgIC0g
QWRkIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGluZy4KKyAgICAgICAgKFdlYkRy
YWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgLSBN
YWtlIHVzZSBvZiBraXQoKSBjb252ZXJzaW9uIGZ1bmN0aW9uLgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKToKKyAg
ICAgICAgKGNvcmVEcmFnT3BlcmF0aW9uTWFzayk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNpb24g
ZnVuY3Rpb25zIHRvIGF2b2lkIGNhc3RpbmcuCisgICAgICAgICgtW1dlYlZpZXcgZHJhZ0RhdGFG
b3JTZXNzaW9uOmNsaWVudDpnbG9iYWw6b3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dp
bmdFbnRlcmVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ0V4aXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBw
ZXJmb3JtRHJhZ09wZXJhdGlvbjpdKToKKyAgICAgICAgLSBNYWtlIHVzZSBvZiBjb3JlRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTWFzaygpIGFuZAorICAgICAgICAgIGNvcmVEcmFnT3BlcmF0aW9uTWFz
aygpIGNvbnZlcnNpb24gZnVuY3Rpb25zLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVy
bmFsLmg6CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2spOiBBZGQgZGVjbGFyYXRpb24u
CisgICAgICAgIChjb3JlT3B0aW9ucyk6IFJlbW92ZSByZWR1bmRhbnQgcGFyYW1ldGVyIG5hbWUu
CisKIDIwMjAtMDUtMjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGb2xsb3ctdXAgYnVpbGQgZml4OiBbQ29jb2FdIFBhc3MgYWxsIGRlZmluZXMgZnJvbSBQ
bGF0Zm9ybS5oIHRvIHZhcmlvdXMgc2NyaXB0cywgbm90IGp1c3QgdGhlIG9uZXMgZnJvbSAueGNj
b25maWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAzM2RlYzhkMjdkNjVjZDBkZjlh
YTE0YmI1YTkzMjc3Yzg5Y2UzY2UxLi5kNDE1N2M1MWU3YzdmYTAyZWY1ZDM2NTNkMzgxODIxNWJh
MmYwMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MjAtMDUtMjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBE
b24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHtXZWIs
V0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0RyYWdPcGVyYXRpb24KKyAgICAgICAgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwOgor
ICAgICAgICAoa2l0KToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbiB0byBhdm9p
ZCBjYXN0aW5nLgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGlu
YXRpb25BY3Rpb24pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGtpdCgpIGNvbnZlcnNpb24gZnVu
Y3Rpb24uCisKIDIwMjAtMDUtMTkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29u
eS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBBU1NFUlQobV9lZ2xEaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKSBmYWlscyBpbiB+UGxhdGZvcm1EaXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Fj
dGlvbnMuaAppbmRleCBjODE3NzQwMmY5N2M1MDgzYjc1ODA4MTAwZTNkYTc4YzIwOGZmY2I0Li44
ZGNlMDZmMzFlOTg4NzljZDY2NGFmMTg3Y2IxOGI1ZjY3NWU4NjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQWN0aW9ucy5oCkBAIC0zMiwxNCArMzIsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0vLyBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gbXVzdCBiZSBrZXB0IGluIHN5bmMg
d2l0aCBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24gYW5kIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
LgorLy8gTXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24g
YW5kIFdrRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLgogZW51bSBjbGFzcyBEcmFnRGVzdGluYXRpb25B
Y3Rpb24gOiB1aW50OF90IHsKICAgICBESFRNTCA9IDEsCiAgICAgRWRpdCAgPSAyLAogICAgIExv
YWQgID0gNAogfTsKIAotaW5saW5lIGNvbnN0ZXhwciBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uPiBEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkoKQorY29uc3RleHByIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpCiB7CiAgICAg
cmV0dXJuIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsgRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uOjpESFRNTCwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpFZGl0LCBEcmFnRGVzdGluYXRp
b25BY3Rpb246OkxvYWQgfTsKIH0KQEAgLTYwLDcgKzYwLDcgQEAgdHlwZWRlZiBlbnVtIHsKICAg
ICBEcmFnU291cmNlQWN0aW9uQW55ICAgICAgICAgID0gVUlOVF9NQVgKIH0gRHJhZ1NvdXJjZUFj
dGlvbjsKIAotLy8gTWF0Y2hlcyBOU0RyYWdPcGVyYXRpb24uCisvLyBNdXN0IGJlIGtlcHQgaW4g
c3luYyB3aXRoIE5TRHJhZ09wZXJhdGlvbi4KIHR5cGVkZWYgZW51bSB7CiAgICAgRHJhZ09wZXJh
dGlvbk5vbmUgICAgPSAwLAogICAgIERyYWdPcGVyYXRpb25Db3B5ICAgID0gMSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDY1MTAxODcwYzE5OWFhYWJkZjE5MGQ3ZDZiNDVlNjk0
MzhkOWRiYjIuLjQyMWEyOTk0M2IzZDEwZDQ4NWRhNWNlOWVmZDUzZTNmYWZiYzBmMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBEcmFnZ2luZ1B1cnBvc2UgeyBGb3JFZGl0aW5nLCBGb3JGaWxlVXBsb2FkLCBG
b3JDb2xvckNvbnRyb2wgfTsKIAogICAgIC8vIGNsaWVudFBvc2l0aW9uIGlzIHRha2VuIHRvIGJl
IHRoZSBwb3NpdGlvbiBvZiB0aGUgZHJhZyBldmVudCB3aXRoaW4gdGhlIHRhcmdldCB3aW5kb3cs
IHdpdGggKDAsMCkgYXQgdGhlIHRvcCBsZWZ0Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEo
RHJhZ0RhdGFSZWYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9
IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGFj
dGlvbk1hc2sgPSBEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkoKSk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3Bl
cmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlv
blNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGFjdGlvbk1hc2sgPSBEcmFnRGVzdGluYXRpb25B
Y3Rpb25BbnkoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlv
bk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYg
ZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpKTsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9y
IHNob3VsZCB1c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0YQogICAgIC8v
IGlzIGluaXRpYWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9y
LgogICAgIERyYWdEYXRhKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY0
ZjAxMjY0MWRlMTUwYTRkZDc2N2MyNWZmNWI1OGU1MTcyODgzMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlv
bnMuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworaW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRp
b25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFdLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uIGFjdGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uPiByZXN1bHQ7CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
REhUTUwpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
OjpESFRNTCk7CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCkK
KyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQp
OworICAgIGlmIChhY3Rpb24gJiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQpCisgICAgICAg
IHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitpbmxpbmUgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBjb3JlRHJh
Z09wZXJhdGlvbk1hc2soTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3sKKyAgICBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uIHJlc3VsdCA9IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lOworICAg
IGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmsp
CisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJl
c3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKTsKKyAgICBpZiAob3BlcmF0aW9uICYg
TlNEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVy
aWMpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlKQorICAgICAg
ICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJh
Z09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+KHJlc3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBp
ZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1bHQgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uRGVsZXRlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggMjQyMWFiODIzYzYxMzZlNmMxNzY2ZTZhZmQ3NDZjOGNlNzNlODc5Yy4uN2RiYTRlZmRk
ZGE0MzFjMTAzMDA5MzA2ZjUyNWUyOGUwZTAxNmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTc2LDYgKzc2LDcgQEAKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIldlYlBy
b2Nlc3NQcm94eS5oIgorI2ltcG9ydCAiX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVGh1bWJu
YWlsVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CkBAIC0zOTQ1LDgg
KzM5NDYsOSBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZChp
ZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2lu
dCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRp
b24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6
Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRv
d10pKTsKLSAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBPcHRpb25TZXQ8V2Vi
Q29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbbV92aWV3IF93ZWJfZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIFdlYkNv
cmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3Jl
bGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOworICAg
IGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rp
b25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86
ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uID0gY29yZURyYWdPcGVyYXRp
b25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOworICAgIFdl
YkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRy
YWdPcGVyYXRpb24sIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFz
ZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CiAKICAgICBt
X3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAgIG1fcGFnZS0+ZHJhZ0Vu
dGVyZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CkBA
IC0zOTU4LDggKzM5NjAsOSBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5n
VXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdn
aW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFs
KFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92
aWV3IHdpbmRvd10pKTsKLSAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbbV92aWV3IF93
ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwot
ICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9i
YWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcu
Z2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2spOworICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFn
Z2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uID0gY29yZURy
YWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sp
OworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBn
bG9iYWwsIGRyYWdPcGVyYXRpb24sIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRB
dXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7
CiAgICAgbV9wYWdlLT5kcmFnVXBkYXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5n
UGFzdGVib2FyZC5uYW1lKTsKIAogICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JE
cm9wID0gbV9wYWdlLT5jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsKQEAg
LTM5ODMsNyArMzk4Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdnaW5nRXhpdGVkKGlkIDxO
U0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNs
aWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBm
cm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xv
YmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkp
OwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBn
bG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5k
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3Zp
ZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdE
YXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0
aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGlj
YXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8p
KTsKICAgICBtX3BhZ2UtPmRyYWdFeGl0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2lu
Z1Bhc3RlYm9hcmQubmFtZSk7CiAgICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRp
b24oKTsKICAgICBkcmFnZ2luZ0luZm8ubnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1faW5p
dGlhbE51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7CkBAIC0zOTk5LDcgKzQwMDIsNyBAQCBib29s
IFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihpZCA8TlNEcmFnZ2luZ0luZm8+IGRy
YWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252
ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5n
SW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpE
cmFnRGF0YSAqZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBj
bGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dp
bmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JE
cmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29y
ZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5m
bywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3
LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKIAogICAgIE5TQXJyYXkgKnR5cGVz
ID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC50eXBlczsKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4
IDMxNjA2YTk1ODdmNTFiMGIzYWVhYWJmNTZiYzM1OTZjMmQ4NDAzZjMuLmQwYmQzZjM4ZjNiNTg3
OTc2Nzc3OTM0YjQ4YTg2M2IyM2MxOTE3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODYsNiArODYs
NyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nl
c3NQcm94eS5oIgogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgor
I2ltcG9ydCAiX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRWxlbWVudEFj
dGlvbi5oIgogI2ltcG9ydCAiX1dLRWxlbWVudEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tGb2N1c2VkRWxlbWVudEluZm8uaCIKQEAgLTczMTAsOSArNzMxMSw4IEBAIC0gKFdlYkNvcmU6
OkRyYWdEYXRhKWRyYWdEYXRhRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNz
aW9uIGRyYWdEZXN0CiAgICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVu
dEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNs
aWVudCBvdXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKIAotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PihzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24gPyBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZl
cnkgOiAoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5ICYgfldlYkNvcmU6OkRyYWdPcGVyYXRp
b25Nb3ZlKSk7Ci0gICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gT3B0aW9uU2V0
PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46OmZyb21SYXcoZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKTsKLSAgICByZXR1cm4geyBzZXNzaW9uLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
Y2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIGRyYWdPcGVyYXRpb25N
YXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrIH07CisgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFzayA9IGNv
cmVEcmFnT3BlcmF0aW9uTWFzayhzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24gPyBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uRXZlcnkgOiAoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5ICYgfldl
YkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKSk7CisgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29y
ZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9i
YWwpLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uTm9uZSwgY29y
ZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKSB9OwogfQog
CiAtICh2b2lkKWNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NjFlOWE4YTQ4MzI0YThm
MDU5ZDc4NDYxZTg3OTRiZTg4NGQxOTRlLi5hNDRlYWRkYzMxNzdiNDYwMTI2YWU2MzQ1NmIyNDIy
NDgwMTU4ZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTkzNyw2ICs5MzcsNyBAQAogCQk0NDgyNzM0NzI0NTI4RjYwMDBBOTU0OTMg
LyogQ29jb2FJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDQ4MjczNDYyNDUyOEY2MDAwQTk1NDkzIC8qIENvY29hSW1hZ2UuaCAqLzsgfTsKIAkJ
NDQ5RDkwREEyMUZEQzMwQjAwRjY3N0MwIC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OUQ5MEQ4
MjFGRDYzRkUwMEY2NzdDMCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW0gKi87IH07
CiAJCTQ0RTkzNkZEMjQ0N0MyRDgwMDlGQTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU5MzZGQzI0
NDdDMjU2MDA5RkEzRTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oICovOyB9OworCQk0NEVD
M0VBOTI0N0Y1QzA5MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFQzNFQTgyNDdGNUMwODAw
NTk0ODlDIC8qIF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCAqLzsgfTsKIAkJNDYwRjQ4OEYxRjk5
NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTQ2MEY0ODkwMUY5OTZGNzEwMENGNEI4NyAvKiBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyog
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwogCQk0NjFDQ0NB
NTIzMTQ4NUE3MDBCNjU5QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4
RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKQEAgLTM1MzksNiArMzU0MCw3
IEBACiAJCTQ0OUQ5MEQ4MjFGRDYzRkUwMEY2NzdDMCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29m
dExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEF1
dGhlbnRpY2F0aW9uU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
QTQ4MUM2MjFGMkQyN0IwMEYyRjkxOSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9u
WFBDQ29uc3RhbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaWVudENlcnRpZmljYXRlQXV0
aGVudGljYXRpb25YUENDb25zdGFudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEU5MzZGQzI0NDdDMjU2MDA5RkEzRTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lDdXN0b21Qcm90b2NvbElELmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0RUMzRUE4MjQ3RjVDMDgwMDU5NDg5QyAv
KiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDYwMzAxMUEyMzRCRTMxRDAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MDMwMTFCMjM0QkUzMUUwMDlDODIx
NyAvKiBXZWJCYWNrRm9yd2FyZENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAt
NzUzNiw2ICs3NTM4LDcgQEAKIAkJMzdERkE2RkUxODEwQkIyRDAwMUY0QTlGIC8qIENvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NEVDM0VBODI0
N0Y1QzA4MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oICovLAogCQkJCTM3M0Qx
MjIxMThBNDczMDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZS5oICovLAogCQkJCTM3M0QxMjIw
MThBNDczMDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZS5tbSAqLywKIAkJCQkzNzNEMTIyNjE4
QTQ3M0Y2MDA2NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oICovLApAQCAtMTA1NDks
NiArMTA1NTIsNyBAQAogCQkJCTFBNTcwNEY4MUJFMDFGRjQwMDg3NEFGMSAvKiBfV0tDb250ZXh0
TWVudUVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzVEMjM4QzIyN0EyQ0RBMDAw
QjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzg5
MUI2OTFBNjhCRUJDMDAzMEYzODYgLyogX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDRFQzNFQTkyNDdGNUMwOTAwNTk0ODlDIC8qIF9XS0RyYWdBY3Rp
b25zSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTRGRTVBMThEQ0U5RkEwMEI1RUE4
QSAvKiBfV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBNEZFNjExOERENTRBNDAw
QjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTRG
RTVDMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lm1tCmluZGV4IDRiYmU4MTdhMTQ3MWVjYmNlYzRiNDA5YmQ2MjhlOGU2NTNk
NjZiMTUuLmZjY2Q3YWFjNGU2NTY2MmY2MjBiYjM5NDNjMzQ2OWRmODA4ZmJjY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5tbQpAQCAtNjgsNiArNjgsMTkgQEAgV2ViRHJhZ0NsaWVudDo6V2ViRHJhZ0NsaWVudChX
ZWJWaWV3KiB3ZWJWaWV3KQogCiAjaWYgUExBVEZPUk0oTUFDKQogCitzdGF0aWMgV2ViRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uIGtpdChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9u
KQoreworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb246OkRIVE1MOgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uREhUTUw7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQ6
CisgICAgICAgIHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25FZGl0OworICAgIGNhc2Ug
V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkOgorICAgICAgICByZXR1cm4gV2Vi
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKKyAgICB9CisgICAgcmV0dXJuIFdlYkRyYWdEZXN0
aW5hdGlvbkFjdGlvbk5vbmU7Cit9CisKIGJvb2wgV2ViRHJhZ0NsaWVudDo6dXNlTGVnYWN5RHJh
Z0NsaWVudCgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODYsNyArOTksNyBAQCBzdGF0aWMg
V2ViSFRNTFZpZXcgKmdldFRvcEhUTUxWaWV3KEZyYW1lKiBmcmFtZSkKIAogdm9pZCBXZWJEcmFn
Q2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVz
dGluYXRpb25BY3Rpb24gYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0RhdGEp
CiB7Ci0gICAgW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJW
aWV3IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOnN0YXRpY19jYXN0PFdlYkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbj4oYWN0aW9uKSBmb3JEcmFnZ2luZ0luZm86ZHJhZ0RhdGEucGxhdGZv
cm1EYXRhKCldOworICAgIFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3
Om1fd2ViVmlldyB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbjpraXQoYWN0aW9uKSBm
b3JEcmFnZ2luZ0luZm86ZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCldOwogfQogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA0NGY0Y2MwNTllMTJiYmMx
MDZkY2NkMWM1MmNmZmU1MjFhNTVjYjIyLi5mMDNkY2Q2NjFmMjQxZDcxYWIxZTc1MWM4ZmI5MmEy
YWUwYzEzZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC0xMTIsNyArMTEyLDYgQEAKICNpbXBvcnQgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
ci5oIgogI2ltcG9ydCAiV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVyLmgiCiAjaW1wb3J0ICJX
ZWJUZXh0SXRlcmF0b3IuaCIKLSNpbXBvcnQgIldlYlVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIldl
YlVJRGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWYWxpZGF0aW9uTWVzc2FnZUNsaWVu
dC5oIgogI2ltcG9ydCAiV2ViVmlld0dyb3VwLmgiCkBAIC01NzcsNiArNTc2LDM2IEBAIC0gKHZv
aWQpY2xlYXJUYXJnZXQ7CiAjZW5kaWYKIEBlbmQKIAorc3RhdGljIE9wdGlvblNldDxXZWJDb3Jl
OjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFdl
YkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrKQoreworICAgIE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHJlc3VsdDsKKyAgICBpZiAoYWN0aW9uTWFzayAm
IFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1MKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNv
cmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6REhUTUwpOworICAgIGlmIChhY3Rpb25NYXNrICYg
V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3Jl
OjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQpOworICAgIGlmIChhY3Rpb25NYXNrICYgV2Vi
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1dl
YkNvcmU6OkRyYWdPcGVyYXRpb24gY29yZURyYWdPcGVyYXRpb25NYXNrKE5TRHJhZ09wZXJhdGlv
biBvcGVyYXRpb24pCit7CisgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiByZXN1bHQgPSBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0
aW9uQ29weSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpOworICAgIGlmIChvcGVy
YXRpb24gJiBOU0RyYWdPcGVyYXRpb25MaW5rKQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
TGluayk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAg
ICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCAm
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNE
cmFnT3BlcmF0aW9uUHJpdmF0ZSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGUp
OworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Nb3ZlKQorICAgICAgICByZXN1
bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlv
bkRlbGV0ZSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9w
dGlvbnMgb3B0aW9ucykKIHsKICAgICBXZWJDb3JlOjpGaW5kT3B0aW9ucyBmaW5kT3B0aW9uczsK
QEAgLTE5MTEsOCArMTk0MCw4IEBAIC0gKFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbilkcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3NpCiAKIC0gKFdlYkNv
cmU6OkRyYWdEYXRhKWRyYWdEYXRhRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Np
b24gY2xpZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQ
b3NpdGlvbiBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgogewotICAgIGF1dG8gZHJhZ09w
ZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihvcGVyYXRp
b24pOwotICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uTWFzayA9IE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb24+Ojpmcm9tUmF3KFtzZWxmIGRyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2tGb3JTZXNzaW9uOnNlc3Npb25dKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0g
Y29yZURyYWdPcGVyYXRpb25NYXNrKG9wZXJhdGlvbik7CisgICAgYXV0byBkcmFnRGVzdGluYXRp
b25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW3NlbGYgZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFza0ZvclNlc3Npb246c2Vzc2lvbl0pOwogICAgIHJldHVybiB7IHNlc3Npb24s
IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnRQb3NpdGlvbiksIFdlYkNvcmU6OnJvdW5k
ZWRJbnRQb2ludChnbG9iYWxQb3NpdGlvbiksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpE
cmFnQXBwbGljYXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25NYXNrIH07CiB9CiAKQEAgLTY3MjYs
NyArNjc1NSw3IEBAIC0gKFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbkZsYWdzKWFwcGxpY2F0aW9u
RmxhZ3M6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJCiAKIC0gKE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+KWFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KGlk
IDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7Ci0gICAgcmV0dXJuIE9wdGlvblNldDxX
ZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+Ojpmcm9tUmF3KFtbc2VsZiBfVUlEZWxlZ2F0
ZUZvcndhcmRlcl0gd2ViVmlldzpzZWxmIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFn
Z2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgcmV0dXJuIGNvcmVEcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrKFtbc2VsZiBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzpzZWxmIGRyYWdE
ZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CiB9CiAK
IC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ0VudGVyZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4p
ZHJhZ2dpbmdJbmZvCkBAIC02NzM0LDcgKzY3NjMsNyBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJh
Z2dpbmdFbnRlcmVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAgIFdlYkNv
cmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5n
SW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0gICAgV2ViQ29yZTo6
RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2Vs
ZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6
OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFn
T3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10p
LCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tG
b3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CiAgICAgcmV0dXJuIGNvcmUoc2VsZiktPmRy
YWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOwogfQogCkBAIC02NzQ3LDcgKzY3
NzYsNyBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdVcGRhdGVkOihpZCA8TlNEcmFnZ2lu
Z0luZm8+KWRyYWdnaW5nSW5mbwogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dp
bmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwo
V2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3Nl
bGYgd2luZG93XSkpOwogCi0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJ
bmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4o
W2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGlj
YXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZv
OmRyYWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5n
SW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZv
IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRy
YWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZv
XSk7CiAgICAgcmV0dXJuIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0Rh
dGEpOwogfQogCkBAIC02NzU5LDcgKzY3ODgsNyBAQCAtICh2b2lkKWRyYWdnaW5nRXhpdGVkOihp
ZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogCiAgICAgV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6Oklu
dFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
TG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0Rh
dGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwg
W3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKKyAgICBXZWJDb3JlOjpEcmFn
RGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJh
dGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3Nl
bGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKICAgICBwYWdlLT5kcmFnQ29udHJv
bGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwogfQogCkBAIC02NzcyLDcgKzY4MDEsNyBAQCAt
IChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5n
SW5mbwogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xv
YmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkp
OwotICAgIGF1dG8qIGRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5m
bywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtk
cmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0
aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byogZHJhZ0RhdGEgPSBuZXcgV2ViQ29y
ZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRp
b25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxm
IGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CiAKICAgICBOU0FycmF5KiB0eXBlcyA9
IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQudHlwZXM7CiAgICAgaWYgKCFbdHlwZXMg
Y29udGFpbnNPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdICYmIFt0eXBlcyBjb250YWluc09i
amVjdDpXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5k
ZXggNTc2NjI5YWJhNjlhNmNhMGJmNTZhNWI5ZTY5YTMzMTkxMjczODJjOC4uMjRjM2VlMDQzNjcz
MTZjNDNlMjJkODkxYTUyZTYyN2I0OTM1ZWQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMzYsNiArMzYsNyBAQAogI2lmZGVmIF9fY3BsdXNwbHVzCiAK
ICNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CisjaW1wb3J0IDxXZWJD
b3JlL0RyYWdBY3Rpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTWVkaWFFbGVt
ZW50RW51bXMuaD4KQEAgLTg5LDcgKzkwLDkgQEAgY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNv
bnRyb2xsZXI7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogCi1XZWJDb3JlOjpGaW5kT3B0aW9ucyBj
b3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKTsKK1dlYkNvcmU6OkRyYWdPcGVyYXRp
b24gY29yZURyYWdPcGVyYXRpb25NYXNrKE5TRHJhZ09wZXJhdGlvbik7CisKK1dlYkNvcmU6OkZp
bmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zKTsKIAogT3B0aW9uU2V0PFdlYkNv
cmU6OkxheW91dE1pbGVzdG9uZT4gY29yZUxheW91dE1pbGVzdG9uZXMoV2ViTGF5b3V0TWlsZXN0
b25lcyk7CiBXZWJMYXlvdXRNaWxlc3RvbmVzIGtpdExheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0
PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAppbmRleCBkNDNjMmU0
NGVjODAwY2Q1NTM5YTJkMDIwYzlkZmE0YTUzN2Q1MDFiLi42OWQ1ODhhYjhkOGY2YTA2ZjJhYzFl
ZDMxN2YzOGY0ZmJlOTZiZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYwLDYgKzYwLDE5IEBAIHN0
YXRpYyBEV09SRCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3JzKERyYWdP
cGVyYXRpb24gb3ApCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFdlYkRyYWdEZXN0
aW5hdGlvbkFjdGlvbiBraXQoRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbikKK3sKKyAgICBz
d2l0Y2ggKGFjdGlvbikgeworICAgIGNhc2UgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpESFRNTDoK
KyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1MOworICAgIGNhc2Ug
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpFZGl0OgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uRWRpdDsKKyAgICBjYXNlIERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZDoK
KyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7CisgICAgfQorICAg
IHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lOworfQorCiBXZWJEcmFnQ2xpZW50
OjpXZWJEcmFnQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmll
dykgCiB7CkBAIC03Miw3ICs4NSw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1E
cmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvCiAgICAgLy9z
byB3ZSBqdXN0IGNhbGwgdGhlIGRlbGVnYXRlLCBhbmQgZG9uJ3Qgd29ycnkgYWJvdXQgd2hldGhl
ciBpdCdzIGltcGxlbWVudGVkCiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiBkZWxlZ2F0ZVJl
ZiA9IDA7CiAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVsZWdhdGUoJmRlbGVnYXRl
UmVmKSkpCi0gICAgICAgIGRlbGVnYXRlUmVmLT53aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFj
dGlvbihtX3dlYlZpZXcsIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pYWN0aW9uLCBkcmFnRGF0
YS5wbGF0Zm9ybURhdGEoKSk7CisgICAgICAgIGRlbGVnYXRlUmVmLT53aWxsUGVyZm9ybURyYWdE
ZXN0aW5hdGlvbkFjdGlvbihtX3dlYlZpZXcsIGtpdChhY3Rpb24pLCBkcmFnRGF0YS5wbGF0Zm9y
bURhdGEoKSk7CiB9CiAKIERyYWdTb3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJj
ZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400542</attachid>
            <date>2020-05-28 20:29:02 -0700</date>
            <delta_ts>2020-05-28 21:08:39 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-212507-20200528203047.patch</filename>
            <type>text/plain</type>
            <size>32759</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmEyMjkzM2JiNThkNTNj
NTVlMjY1NTQzNDY3OTliZGEyNTM2ZmZkNS4uZWRjNzYzNGYzYTIyZjkyYTA3MDQyYjc4YWViMTIx
ODkyZDU1YjcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI4ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3Rz
IHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7V2ViLFdLfURyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2svTlNEcmFnT3BlcmF0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMTI1MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwYWdlL0RyYWdBY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnRGVz
dGluYXRpb25BY3Rpb24pOiBBZGQuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb25BbnkpOiBEZWxldGUuCisgICAgICAgIC0gUmVuYW1lIERyYWdEZXN0aW5hdGlvbkFjdGlv
bkFueSgpIHRvCisgICAgICAgICAgYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgdG8gbWF0Y2gg
V2ViS2l0IHN0eWxlLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIC0g
VXBkYXRlIHRvIHVzZSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKS4KKwogMjAyMC0wNS0yNyAg
S2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBmb3Itb2Yg
c2hvdWxkIGNoZWNrIHRoZSBpdGVyYWJsZSBpcyBhIEpTQXJyYXkgZm9yIEZhc3RBcnJheSBpbiBE
RkcgaXRlcmF0b3Jfb3BlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNDA1MTMxYzEzYWQ4YmMwNTgxYTY5NGU3Mzcz
NzlhYzZkN2Q0OTVmLi4zYjIyZWUxZGMxNjU2NWMwNTMyN2FmYTlkYTM1NWZhZGE5NTRmYmEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA1LTI4ICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3RzIHRvIGNvbnZlcnQgYmV0
d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7V2ViLFdLfURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sv
TlNEcmFnT3BlcmF0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI1MDc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaDogQWRkLgorICAgICAgICAoV2ViS2l0
Ojpjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk6CisgICAgICAgIChXZWJLaXQ6OmNvcmVE
cmFnT3BlcmF0aW9uTWFzayk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb25zIHRv
IGF2b2lkIGNhc3RpbmcuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRlcmVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJh
Z0RhdGFGb3JEcm9wU2Vzc2lvbjpkcmFnRGVzdGluYXRpb25BY3Rpb246XSk6CisgICAgICAgIC0g
TWFrZSB1c2Ugb2YgY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soKSBhbmQKKyAgICAgICAg
ICBjb3JlRHJhZ09wZXJhdGlvbk1hc2soKS4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBBZGQgX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIHRv
IHByb2plY3QuCisKIDIwMjAtMDUtMjggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlYWRhYmxlQnl0ZVN0cmVhbSBzaG91bGQgYmUgZW5hYmxlZC9kaXNhYmxl
ZCBpbiBzZXJ2aWNlIHdvcmtlcnMgYXMgZG9uZSBpbiBwYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDc0NWFmNWY2MDQwNWMwOWZhZjBjMTFlODkyYjkxYzg0MjJhZmMxYjQuLjk2
ZGViMmVhOGZmZDkxYmFmNWM2MWE1ZDAxNDQ4MzFmOTkwNzAxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMC0wNS0yOCAgRGF2aWQgS2lsemVyICA8
ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IHVzZSBjYXN0cyB0byBjb252ZXJ0
IGJldHdlZW4gV2ViQ29yZSB0eXBlcyBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrL05TRHJhZ09wZXJhdGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNTA3
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgIC0g
QWRkIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGluZy4KKyAgICAgICAgKFdlYkRy
YWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgLSBN
YWtlIHVzZSBvZiBraXQoKSBjb252ZXJzaW9uIGZ1bmN0aW9uLgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKToKKyAg
ICAgICAgKGNvcmVEcmFnT3BlcmF0aW9uTWFzayk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNpb24g
ZnVuY3Rpb25zIHRvIGF2b2lkIGNhc3RpbmcuCisgICAgICAgICgtW1dlYlZpZXcgZHJhZ0RhdGFG
b3JTZXNzaW9uOmNsaWVudDpnbG9iYWw6b3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dp
bmdFbnRlcmVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ0V4aXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBw
ZXJmb3JtRHJhZ09wZXJhdGlvbjpdKToKKyAgICAgICAgLSBNYWtlIHVzZSBvZiBjb3JlRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTWFzaygpIGFuZAorICAgICAgICAgIGNvcmVEcmFnT3BlcmF0aW9uTWFz
aygpIGNvbnZlcnNpb24gZnVuY3Rpb25zLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVy
bmFsLmg6CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2spOiBBZGQgZGVjbGFyYXRpb24u
CisgICAgICAgIChjb3JlT3B0aW9ucyk6IFJlbW92ZSByZWR1bmRhbnQgcGFyYW1ldGVyIG5hbWUu
CisKIDIwMjAtMDUtMjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGb2xsb3ctdXAgYnVpbGQgZml4OiBbQ29jb2FdIFBhc3MgYWxsIGRlZmluZXMgZnJvbSBQ
bGF0Zm9ybS5oIHRvIHZhcmlvdXMgc2NyaXB0cywgbm90IGp1c3QgdGhlIG9uZXMgZnJvbSAueGNj
b25maWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAzM2RlYzhkMjdkNjVjZDBkZjlh
YTE0YmI1YTkzMjc3Yzg5Y2UzY2UxLi5kNDE1N2M1MWU3YzdmYTAyZWY1ZDM2NTNkMzgxODIxNWJh
MmYwMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MjAtMDUtMjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBE
b24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHtXZWIs
V0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0RyYWdPcGVyYXRpb24KKyAgICAgICAgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwOgor
ICAgICAgICAoa2l0KToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbiB0byBhdm9p
ZCBjYXN0aW5nLgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGlu
YXRpb25BY3Rpb24pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGtpdCgpIGNvbnZlcnNpb24gZnVu
Y3Rpb24uCisKIDIwMjAtMDUtMTkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29u
eS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBBU1NFUlQobV9lZ2xEaXNwbGF5ID09IEVHTF9O
T19ESVNQTEFZKSBmYWlscyBpbiB+UGxhdGZvcm1EaXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Fj
dGlvbnMuaAppbmRleCBjODE3NzQwMmY5N2M1MDgzYjc1ODA4MTAwZTNkYTc4YzIwOGZmY2I0Li4z
MTI4MTI1NTM3MWE5MjA4ODA3NDc0ZjE4ODcyZDQzYjFhMWIwYTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQWN0aW9ucy5oCkBAIC0zMiwxNCArMzIsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0vLyBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gbXVzdCBiZSBrZXB0IGluIHN5bmMg
d2l0aCBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24gYW5kIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
LgorLy8gTXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24g
YW5kIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLgogZW51bSBjbGFzcyBEcmFnRGVzdGluYXRpb25B
Y3Rpb24gOiB1aW50OF90IHsKICAgICBESFRNTCA9IDEsCiAgICAgRWRpdCAgPSAyLAogICAgIExv
YWQgID0gNAogfTsKIAotaW5saW5lIGNvbnN0ZXhwciBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uPiBEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkoKQorY29uc3RleHByIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpCiB7CiAgICAg
cmV0dXJuIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsgRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uOjpESFRNTCwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpFZGl0LCBEcmFnRGVzdGluYXRp
b25BY3Rpb246OkxvYWQgfTsKIH0KQEAgLTYwLDcgKzYwLDcgQEAgdHlwZWRlZiBlbnVtIHsKICAg
ICBEcmFnU291cmNlQWN0aW9uQW55ICAgICAgICAgID0gVUlOVF9NQVgKIH0gRHJhZ1NvdXJjZUFj
dGlvbjsKIAotLy8gTWF0Y2hlcyBOU0RyYWdPcGVyYXRpb24uCisvLyBNdXN0IGJlIGtlcHQgaW4g
c3luYyB3aXRoIE5TRHJhZ09wZXJhdGlvbi4KIHR5cGVkZWYgZW51bSB7CiAgICAgRHJhZ09wZXJh
dGlvbk5vbmUgICAgPSAwLAogICAgIERyYWdPcGVyYXRpb25Db3B5ICAgID0gMSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDY1MTAxODcwYzE5OWFhYWJkZjE5MGQ3ZDZiNDVlNjk0
MzhkOWRiYjIuLjQyMWEyOTk0M2IzZDEwZDQ4NWRhNWNlOWVmZDUzZTNmYWZiYzBmMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBEcmFnZ2luZ1B1cnBvc2UgeyBGb3JFZGl0aW5nLCBGb3JGaWxlVXBsb2FkLCBG
b3JDb2xvckNvbnRyb2wgfTsKIAogICAgIC8vIGNsaWVudFBvc2l0aW9uIGlzIHRha2VuIHRvIGJl
IHRoZSBwb3NpdGlvbiBvZiB0aGUgZHJhZyBldmVudCB3aXRoaW4gdGhlIHRhcmdldCB3aW5kb3cs
IHdpdGggKDAsMCkgYXQgdGhlIHRvcCBsZWZ0Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEo
RHJhZ0RhdGFSZWYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9
IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGFj
dGlvbk1hc2sgPSBEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkoKSk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3Bl
cmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlv
blNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGFjdGlvbk1hc2sgPSBEcmFnRGVzdGluYXRpb25B
Y3Rpb25BbnkoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlv
bk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYg
ZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpKTsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9y
IHNob3VsZCB1c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0YQogICAgIC8v
IGlzIGluaXRpYWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9y
LgogICAgIERyYWdEYXRhKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY0
ZjAxMjY0MWRlMTUwYTRkZDc2N2MyNWZmNWI1OGU1MTcyODgzMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlv
bnMuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworaW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRp
b25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFdLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uIGFjdGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uPiByZXN1bHQ7CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
REhUTUwpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
OjpESFRNTCk7CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCkK
KyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQp
OworICAgIGlmIChhY3Rpb24gJiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQpCisgICAgICAg
IHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitpbmxpbmUgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBjb3JlRHJh
Z09wZXJhdGlvbk1hc2soTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3sKKyAgICBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uIHJlc3VsdCA9IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lOworICAg
IGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmsp
CisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJl
c3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKTsKKyAgICBpZiAob3BlcmF0aW9uICYg
TlNEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVy
aWMpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlKQorICAgICAg
ICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJh
Z09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+KHJlc3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBp
ZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1bHQgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uRGVsZXRlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggMjQyMWFiODIzYzYxMzZlNmMxNzY2ZTZhZmQ3NDZjOGNlNzNlODc5Yy4uN2RiYTRlZmRk
ZGE0MzFjMTAzMDA5MzA2ZjUyNWUyOGUwZTAxNmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTc2LDYgKzc2LDcgQEAKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIldlYlBy
b2Nlc3NQcm94eS5oIgorI2ltcG9ydCAiX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVGh1bWJu
YWlsVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CkBAIC0zOTQ1LDgg
KzM5NDYsOSBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZChp
ZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2lu
dCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRp
b24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6
Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRv
d10pKTsKLSAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBPcHRpb25TZXQ8V2Vi
Q29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbbV92aWV3IF93ZWJfZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIFdlYkNv
cmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3Jl
bGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOworICAg
IGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rp
b25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86
ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uID0gY29yZURyYWdPcGVyYXRp
b25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOworICAgIFdl
YkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRy
YWdPcGVyYXRpb24sIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFz
ZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CiAKICAgICBt
X3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAgIG1fcGFnZS0+ZHJhZ0Vu
dGVyZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CkBA
IC0zOTU4LDggKzM5NjAsOSBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5n
VXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdn
aW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFs
KFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92
aWV3IHdpbmRvd10pKTsKLSAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbbV92aWV3IF93
ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwot
ICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9i
YWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcu
Z2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2spOworICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFn
Z2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uID0gY29yZURy
YWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sp
OworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBn
bG9iYWwsIGRyYWdPcGVyYXRpb24sIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRB
dXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7
CiAgICAgbV9wYWdlLT5kcmFnVXBkYXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5n
UGFzdGVib2FyZC5uYW1lKTsKIAogICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JE
cm9wID0gbV9wYWdlLT5jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsKQEAg
LTM5ODMsNyArMzk4Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdnaW5nRXhpdGVkKGlkIDxO
U0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNs
aWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBm
cm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xv
YmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkp
OwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBn
bG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5k
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3Zp
ZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdE
YXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0
aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGlj
YXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8p
KTsKICAgICBtX3BhZ2UtPmRyYWdFeGl0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2lu
Z1Bhc3RlYm9hcmQubmFtZSk7CiAgICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRp
b24oKTsKICAgICBkcmFnZ2luZ0luZm8ubnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1faW5p
dGlhbE51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7CkBAIC0zOTk5LDcgKzQwMDIsNyBAQCBib29s
IFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihpZCA8TlNEcmFnZ2luZ0luZm8+IGRy
YWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252
ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5n
SW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpE
cmFnRGF0YSAqZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBj
bGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dp
bmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JE
cmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29y
ZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5m
bywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3
LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKIAogICAgIE5TQXJyYXkgKnR5cGVz
ID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC50eXBlczsKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4
IDMxNjA2YTk1ODdmNTFiMGIzYWVhYWJmNTZiYzM1OTZjMmQ4NDAzZjMuLmQwYmQzZjM4ZjNiNTg3
OTc2Nzc3OTM0YjQ4YTg2M2IyM2MxOTE3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODYsNiArODYs
NyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nl
c3NQcm94eS5oIgogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgor
I2ltcG9ydCAiX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRWxlbWVudEFj
dGlvbi5oIgogI2ltcG9ydCAiX1dLRWxlbWVudEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tGb2N1c2VkRWxlbWVudEluZm8uaCIKQEAgLTczMTAsOSArNzMxMSw4IEBAIC0gKFdlYkNvcmU6
OkRyYWdEYXRhKWRyYWdEYXRhRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNz
aW9uIGRyYWdEZXN0CiAgICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVu
dEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNs
aWVudCBvdXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKIAotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PihzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24gPyBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZl
cnkgOiAoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5ICYgfldlYkNvcmU6OkRyYWdPcGVyYXRp
b25Nb3ZlKSk7Ci0gICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gT3B0aW9uU2V0
PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46OmZyb21SYXcoZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKTsKLSAgICByZXR1cm4geyBzZXNzaW9uLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
Y2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIGRyYWdPcGVyYXRpb25N
YXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrIH07CisgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFzayA9IGNv
cmVEcmFnT3BlcmF0aW9uTWFzayhzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24gPyBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uRXZlcnkgOiAoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5ICYgfldl
YkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKSk7CisgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29y
ZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9i
YWwpLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uTm9uZSwgY29y
ZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKSB9OwogfQog
CiAtICh2b2lkKWNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NjFlOWE4YTQ4MzI0YThm
MDU5ZDc4NDYxZTg3OTRiZTg4NGQxOTRlLi5hMGIzNzY2YzdmYTY3OGQxNjJmZWQxN2U2YzFmOGFk
YzA3OGVkYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTkzNyw2ICs5MzcsNyBAQAogCQk0NDgyNzM0NzI0NTI4RjYwMDBBOTU0OTMg
LyogQ29jb2FJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDQ4MjczNDYyNDUyOEY2MDAwQTk1NDkzIC8qIENvY29hSW1hZ2UuaCAqLzsgfTsKIAkJ
NDQ5RDkwREEyMUZEQzMwQjAwRjY3N0MwIC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OUQ5MEQ4
MjFGRDYzRkUwMEY2NzdDMCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW0gKi87IH07
CiAJCTQ0RTkzNkZEMjQ0N0MyRDgwMDlGQTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU5MzZGQzI0
NDdDMjU2MDA5RkEzRTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oICovOyB9OworCQk0NEVD
M0VBOTI0N0Y1QzA5MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFQzNFQTgyNDdGNUMwODAw
NTk0ODlDIC8qIF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCAqLzsgfTsKIAkJNDYwRjQ4OEYxRjk5
NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTQ2MEY0ODkwMUY5OTZGNzEwMENGNEI4NyAvKiBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyog
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwogCQk0NjFDQ0NB
NTIzMTQ4NUE3MDBCNjU5QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4
RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKQEAgLTM1MzksNiArMzU0MCw3
IEBACiAJCTQ0OUQ5MEQ4MjFGRDYzRkUwMEY2NzdDMCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29m
dExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEF1
dGhlbnRpY2F0aW9uU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
QTQ4MUM2MjFGMkQyN0IwMEYyRjkxOSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9u
WFBDQ29uc3RhbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaWVudENlcnRpZmljYXRlQXV0
aGVudGljYXRpb25YUENDb25zdGFudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEU5MzZGQzI0NDdDMjU2MDA5RkEzRTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lDdXN0b21Qcm90b2NvbElELmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0RUMzRUE4MjQ3RjVDMDgwMDU5NDg5QyAv
KiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDYwMzAxMUEyMzRCRTMxRDAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MDMwMTFCMjM0QkUzMUUwMDlDODIx
NyAvKiBXZWJCYWNrRm9yd2FyZENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAt
NzUzNiw2ICs3NTM4LDcgQEAKIAkJMzdERkE2RkUxODEwQkIyRDAwMUY0QTlGIC8qIENvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NEVDM0VBODI0
N0Y1QzA4MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oICovLAogCQkJCTM3M0Qx
MjIxMThBNDczMDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZS5oICovLAogCQkJCTM3M0QxMjIw
MThBNDczMDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZS5tbSAqLywKIAkJCQkzNzNEMTIyNjE4
QTQ3M0Y2MDA2NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oICovLApAQCAtMTA1NTIs
NiArMTA1NTUsNyBAQAogCQkJCUExQTRGRTVBMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9h
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBNEZFNjExOERENTRBNDAwQjVFQThBIC8qIF9XS0Rv
d25sb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTRGRTVDMThEQ0U5RkEwMEI1
RUE4QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NEVDM0VB
OTI0N0Y1QzA5MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc5QTg3M0ExOEJCRkUwRjAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTM3OUE4NzNDMThCQkZGMDcwMDU4OEFGMiAvKiBfV0tFbGVtZW50
QWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDAxQkM5MTkwNUQzN0UwMEM5
QzQ1RiAvKiBfV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5tbQppbmRleCA0YmJlODE3YTE0NzFlY2JjZWM0YjQwOWJkNjI4ZThlNjUzZDY2YjE1Li5m
Y2NkN2FhYzRlNjU2NjJmNjIwYmIzOTQzYzM0NjlkZjgwOGZiY2NkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0K
QEAgLTY4LDYgKzY4LDE5IEBAIFdlYkRyYWdDbGllbnQ6OldlYkRyYWdDbGllbnQoV2ViVmlldyog
d2ViVmlldykKIAogI2lmIFBMQVRGT1JNKE1BQykKIAorc3RhdGljIFdlYkRyYWdEZXN0aW5hdGlv
bkFjdGlvbiBraXQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbikKK3sKKyAg
ICBzd2l0Y2ggKGFjdGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uOjpESFRNTDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1M
OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpFZGl0OgorICAgICAg
ICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdDsKKyAgICBjYXNlIFdlYkNvcmU6
OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0
aW5hdGlvbkFjdGlvbkxvYWQ7CisgICAgfQorICAgIHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25B
Y3Rpb25Ob25lOworfQorCiBib29sIFdlYkRyYWdDbGllbnQ6OnVzZUxlZ2FjeURyYWdDbGllbnQo
KQogewogICAgIHJldHVybiBmYWxzZTsKQEAgLTg2LDcgKzk5LDcgQEAgc3RhdGljIFdlYkhUTUxW
aWV3ICpnZXRUb3BIVE1MVmlldyhGcmFtZSogZnJhbWUpCiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6
d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAg
IFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyB3aWxs
UGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbjpzdGF0aWNfY2FzdDxXZWJEcmFnRGVzdGluYXRp
b25BY3Rpb24+KGFjdGlvbikgZm9yRHJhZ2dpbmdJbmZvOmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgp
XTsKKyAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZp
ZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb246a2l0KGFjdGlvbikgZm9yRHJhZ2dp
bmdJbmZvOmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpXTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNDRmNGNjMDU5ZTEyYmJjMTA2ZGNjZDFj
NTJjZmZlNTIxYTU1Y2IyMi4uZjAzZGNkNjYxZjI0MWQ3MWFiMWU3NTFjOGZiOTJhMmFlMGMxM2Q1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTEy
LDcgKzExMiw2IEBACiAjaW1wb3J0ICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKICNp
bXBvcnQgIldlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViVGV4dEl0
ZXJhdG9yLmgiCi0jaW1wb3J0ICJXZWJVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJVSURlbGVn
YXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCIKICNp
bXBvcnQgIldlYlZpZXdHcm91cC5oIgpAQCAtNTc3LDYgKzU3NiwzNiBAQCAtICh2b2lkKWNsZWFy
VGFyZ2V0OwogI2VuZGlmCiBAZW5kCiAKK3N0YXRpYyBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uPiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhXZWJEcmFnRGVz
dGluYXRpb25BY3Rpb24gYWN0aW9uTWFzaykKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uPiByZXN1bHQ7CisgICAgaWYgKGFjdGlvbk1hc2sgJiBXZWJEcmFn
RGVzdGluYXRpb25BY3Rpb25ESFRNTCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFn
RGVzdGluYXRpb25BY3Rpb246OkRIVE1MKTsKKyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbkVkaXQpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uOjpFZGl0KTsKKyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdEZXN0
aW5hdGlvbkFjdGlvbkxvYWQpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uOjpMb2FkKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhOU0RyYWdPcGVyYXRpb24gb3BlcmF0
aW9uKQoreworICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gcmVzdWx0ID0gV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbk5vbmU7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkNvcHkp
CisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJl
c3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICBpZiAob3BlcmF0aW9uICYg
TlNEcmFnT3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOwor
ICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1
bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJh
dGlvblByaXZhdGUpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+KHJlc3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICBp
ZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0ID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUp
CisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJl
c3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9w
dGlvbnMpCiB7CiAgICAgV2ViQ29yZTo6RmluZE9wdGlvbnMgZmluZE9wdGlvbnM7CkBAIC0xOTEx
LDggKzE5NDAsOCBAQCAtIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaQogCiAtIChXZWJDb3JlOjpEcmFn
RGF0YSlkcmFnRGF0YUZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGNsaWVu
dDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24g
b3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24KIHsKLSAgICBhdXRvIGRyYWdPcGVyYXRpb25N
YXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ob3BlcmF0aW9uKTsKLSAg
ICBhdXRvIGRyYWdEZXN0aW5hdGlvbk1hc2sgPSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbc2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9y
U2Vzc2lvbjpzZXNzaW9uXSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IGNvcmVEcmFn
T3BlcmF0aW9uTWFzayhvcGVyYXRpb24pOworICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uTWFzayA9
IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFtzZWxmIGRyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2tGb3JTZXNzaW9uOnNlc3Npb25dKTsKICAgICByZXR1cm4geyBzZXNzaW9uLCBXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQoY2xpZW50UG9zaXRpb24pLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9p
bnQoZ2xvYmFsUG9zaXRpb24pLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxp
Y2F0aW9uTm9uZSwgZHJhZ0Rlc3RpbmF0aW9uTWFzayB9OwogfQogCkBAIC02NzI2LDcgKzY3NTUs
NyBAQCAtIChXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncylhcHBsaWNhdGlvbkZsYWdzOihp
ZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSQogCiAtIChPcHRpb25TZXQ8V2ViQ29yZTo6RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uPilhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOihpZCA8TlNEcmFn
Z2luZ0luZm8+KWRyYWdnaW5nSW5mbwogewotICAgIHJldHVybiBPcHRpb25TZXQ8V2ViQ29yZTo6
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbW3NlbGYgX1VJRGVsZWdhdGVGb3J3YXJk
ZXJdIHdlYlZpZXc6c2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZv
OmRyYWdnaW5nSW5mb10pOworICAgIHJldHVybiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFz
ayhbW3NlbGYgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6c2VsZiBkcmFnRGVzdGluYXRp
b25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwogfQogCiAtIChOU0Ry
YWdPcGVyYXRpb24pZHJhZ2dpbmdFbnRlcmVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5n
SW5mbwpAQCAtNjczNCw3ICs2NzYzLDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nRW50
ZXJlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KICAgICBXZWJDb3JlOjpJbnRQ
b2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJh
Z2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKIAotICAgIFdlYkNvcmU6OkRyYWdEYXRh
IGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9u
TWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0
YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlv
bk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYg
YXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dp
bmdJbmZvOmRyYWdnaW5nSW5mb10pOwogICAgIHJldHVybiBjb3JlKHNlbGYpLT5kcmFnQ29udHJv
bGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKIH0KIApAQCAtNjc0Nyw3ICs2Nzc2LDcgQEAg
LSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nVXBkYXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilk
cmFnZ2luZ0luZm8KICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBk
cmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6
Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRv
d10pKTsKIAotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xp
ZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2lu
Z0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxh
Z3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2lu
Z0luZm9dKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNs
aWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0lu
Zm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwogICAg
IHJldHVybiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKIH0K
IApAQCAtNjc1OSw3ICs2Nzg4LDcgQEAgLSAodm9pZClkcmFnZ2luZ0V4aXRlZDooaWQgPE5TRHJh
Z2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KIAogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChb
ZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBn
bG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9u
XSwgW3NlbGYgd2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdn
aW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFw
cGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJh
Z0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNr
KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxp
Y2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CiAgICAgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5k
cmFnRXhpdGVkKGRyYWdEYXRhKTsKIH0KIApAQCAtNjc3Miw3ICs2ODAxLDcgQEAgLSAoQk9PTClw
ZXJmb3JtRHJhZ09wZXJhdGlvbjooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KIHsK
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0
aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50
KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAgICBh
dXRvKiBkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVu
dCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJ
bmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdz
OmRyYWdnaW5nSW5mb10pOworICAgIGF1dG8qIGRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdE
YXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhb
ZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNh
dGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOwogCiAgICAgTlNBcnJheSogdHlwZXMgPSBkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLnR5cGVzOwogICAgIGlmICghW3R5cGVzIGNvbnRhaW5z
T2JqZWN0OldlYkFyY2hpdmVQYm9hcmRUeXBlXSAmJiBbdHlwZXMgY29udGFpbnNPYmplY3Q6V2Vi
Q29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKV0pIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDU3NjYy
OWFiYTY5YTZjYTBiZjU2YTViOWU2OWEzMzE5MTI3MzgyYzguLjI0YzNlZTA0MzY3MzE2YzQzZTIy
ZDg5MWE1MmU2MjdiNDkzNWVkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKQEAgLTM2LDYgKzM2LDcgQEAKICNpZmRlZiBfX2NwbHVzcGx1cwogCiAjaW1wb3J0
IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9EcmFn
QWN0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudEVudW1z
Lmg+CkBAIC04OSw3ICs5MCw5IEBAIGNsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
OwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIAotV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlv
bnMoV2ViRmluZE9wdGlvbnMgb3B0aW9ucyk7CitXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGNvcmVE
cmFnT3BlcmF0aW9uTWFzayhOU0RyYWdPcGVyYXRpb24pOworCitXZWJDb3JlOjpGaW5kT3B0aW9u
cyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyk7CiAKIE9wdGlvblNldDxXZWJDb3JlOjpMYXlv
dXRNaWxlc3RvbmU+IGNvcmVMYXlvdXRNaWxlc3RvbmVzKFdlYkxheW91dE1pbGVzdG9uZXMpOwog
V2ViTGF5b3V0TWlsZXN0b25lcyBraXRMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3Jl
OjpMYXlvdXRNaWxlc3RvbmU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggZDQzYzJlNDRlYzgwMGNk
NTUzOWEyZDAyMGM5ZGZhNGE1MzdkNTAxYi4uNjlkNTg4YWI4ZDhmNmEwNmYyYWMxZWQzMTdmMzhm
NGZiZTk2YmUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCw2ICs2MCwxOSBAQCBzdGF0aWMgRFdP
UkQgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhEcmFnT3BlcmF0aW9u
IG9wKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBXZWJEcmFnRGVzdGluYXRpb25B
Y3Rpb24ga2l0KERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChh
Y3Rpb24pIHsKKyAgICBjYXNlIERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6REhUTUw6CisgICAgICAg
IHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25ESFRNTDsKKyAgICBjYXNlIERyYWdEZXN0
aW5hdGlvbkFjdGlvbjo6RWRpdDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFj
dGlvbkVkaXQ7CisgICAgY2FzZSBEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQ6CisgICAgICAg
IHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkOworICAgIH0KKyAgICByZXR1cm4g
V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsKK30KKwogV2ViRHJhZ0NsaWVudDo6V2ViRHJh
Z0NsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpIAogewpA
QCAtNzIsNyArODUsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3RpbwogICAgIC8vc28gd2UganVz
dCBjYWxsIHRoZSBkZWxlZ2F0ZSwgYW5kIGRvbid0IHdvcnJ5IGFib3V0IHdoZXRoZXIgaXQncyBp
bXBsZW1lbnRlZAogICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gZGVsZWdhdGVSZWYgPSAwOwog
ICAgIGlmIChTVUNDRUVERUQobV93ZWJWaWV3LT51aURlbGVnYXRlKCZkZWxlZ2F0ZVJlZikpKQot
ICAgICAgICBkZWxlZ2F0ZVJlZi0+d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24obV93
ZWJWaWV3LCAoV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWFjdGlvbiwgZHJhZ0RhdGEucGxhdGZv
cm1EYXRhKCkpOworICAgICAgICBkZWxlZ2F0ZVJlZi0+d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRp
b25BY3Rpb24obV93ZWJWaWV3LCBraXQoYWN0aW9uKSwgZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkp
OwogfQogCiBEcmFnU291cmNlQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25N
YXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400544</attachid>
            <date>2020-05-28 21:08:40 -0700</date>
            <delta_ts>2020-05-29 16:01:07 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-212507-20200528211027.patch</filename>
            <type>text/plain</type>
            <size>32721</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I1NzliYTg1ZDhkNGUx
ZDk1NWQxMTcxOWNmOWMxYTViZGMwMDNjNC4uNTI1ZDUwMGFiZmUyMTVlM2FhOTAwODZkMjI4N2Q3
NDZjY2RkNjZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI4ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3Rz
IHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7V2ViLFdLfURyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2svTlNEcmFnT3BlcmF0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMTI1MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwYWdlL0RyYWdBY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnRGVz
dGluYXRpb25BY3Rpb24pOiBBZGQuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb25BbnkpOiBEZWxldGUuCisgICAgICAgIC0gUmVuYW1lIERyYWdEZXN0aW5hdGlvbkFjdGlv
bkFueSgpIHRvCisgICAgICAgICAgYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgdG8gbWF0Y2gg
V2ViS2l0IHN0eWxlLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIC0g
VXBkYXRlIHRvIHVzZSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKS4KKwogMjAyMC0wNS0yOCAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU2hyaW5rIFN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEgYnkgOCBieXRlcyAob24gNjQtYml0IHBsYXRmb3JtcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMmNkYTMzOGIzZjRiYjQ0MjFhMzg5M2FmYzRlNjY1ZTQ1MDkwZDgwMi4uMzcxNTcwNzNm
NDBiZWQwNmQxMzA4NmI0NGVlOWJjMjZkNzhjYmM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBA
QAorMjAyMC0wNS0yOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIERvbid0IHVzZSBjYXN0cyB0byBjb252ZXJ0IGJldHdlZW4gV2ViQ29yZSB0eXBlcyBhbmQg
e1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrL05TRHJhZ09wZXJhdGlvbgorICAgICAg
ICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNTA3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9u
c0ludGVybmFsLmg6IEFkZC4KKyAgICAgICAgKFdlYktpdDo6Y29yZURyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2spOgorICAgICAgICAoV2ViS2l0Ojpjb3JlRHJhZ09wZXJhdGlvbk1hc2spOgorICAg
ICAgICAtIEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9ucyB0byBhdm9pZCBjYXN0aW5nLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpkcmFnZ2luZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dp
bmdFeGl0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVy
YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdEYXRhRm9yRHJvcFNlc3Npb246ZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uOl0pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrKCkgYW5kCisgICAgICAgICAgY29yZURyYWdPcGVyYXRpb25NYXNr
KCkuCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
IC0gQWRkIF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCB0byBwcm9qZWN0LgorCiAyMDIwLTA1LTI4
ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0g
QnVpbGRmaXggYWZ0ZXIgcjI2MjI0MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDgw
NGY4ZDE3NTg4MDRhNmY1NmNjMjQ1NWE3MzdjNzg3ZmQyYjAyM2IuLmFiMGMxYjNmNmMxOWUwNTg1
NDA5OTAyYjRjMmY3MjljNjI5ODZhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMSBAQAorMjAyMC0wNS0yOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIERvbid0IHVzZSBjYXN0cyB0byBjb252ZXJ0IGJldHdlZW4gV2ViQ29y
ZSB0eXBlcyBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrL05TRHJhZ09wZXJh
dGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNTA3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNpb24g
ZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGluZy4KKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OndpbGxQ
ZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgLSBNYWtlIHVzZSBvZiBraXQo
KSBjb252ZXJzaW9uIGZ1bmN0aW9uLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKToKKyAgICAgICAgKGNvcmVEcmFn
T3BlcmF0aW9uTWFzayk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb25zIHRvIGF2
b2lkIGNhc3RpbmcuCisgICAgICAgICgtW1dlYlZpZXcgZHJhZ0RhdGFGb3JTZXNzaW9uOmNsaWVu
dDpnbG9iYWw6b3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGFjdGlvbk1hc2tGb3JE
cmFnZ2luZ0luZm86XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmll
dyBkcmFnZ2luZ0V4aXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBwZXJmb3JtRHJhZ09wZXJh
dGlvbjpdKToKKyAgICAgICAgLSBNYWtlIHVzZSBvZiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TWFzaygpIGFuZAorICAgICAgICAgIGNvcmVEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNpb24g
ZnVuY3Rpb25zLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAg
IChjb3JlRHJhZ09wZXJhdGlvbk1hc2spOiBBZGQgZGVjbGFyYXRpb24uCisgICAgICAgIChjb3Jl
T3B0aW9ucyk6IFJlbW92ZSByZWR1bmRhbnQgcGFyYW1ldGVyIG5hbWUuCisKIDIwMjAtMDUtMjgg
IE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXNw
b25kaW5nIHRvIHBvc3QgY29tbWl0IHJldmlldyBjb21tZW50cyBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjA2MApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CmluZGV4IDMzZGVjOGQyN2Q2NWNkMGRmOWFhMTRiYjVhOTMyNzdjODljZTNjZTEuLmQ0MTU3YzUx
ZTdjN2ZhMDJlZjVkMzY1M2QzODE4MjE1YmEyZjAyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNS0yOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IHVzZSBjYXN0cyB0byBjb252ZXJ0IGJldHdl
ZW4gV2ViQ29yZSB0eXBlcyBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrL05T
RHJhZ09wZXJhdGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNTA3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHA6CisgICAgICAgIChraXQpOgorICAgICAgICAtIEFkZCBj
b252ZXJzaW9uIGZ1bmN0aW9uIHRvIGF2b2lkIGNhc3RpbmcuCisgICAgICAgIChXZWJEcmFnQ2xp
ZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbik6CisgICAgICAgIC0gTWFrZSB1
c2Ugb2Yga2l0KCkgY29udmVyc2lvbiBmdW5jdGlvbi4KKwogMjAyMC0wNS0xOSAgRnVqaWkgSGly
b25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEFT
U0VSVChtX2VnbERpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpIGZhaWxzIGluIH5QbGF0Zm9ybURp
c3BsYXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCmluZGV4IGM4MTc3NDAyZjk3YzUwODNi
NzU4MDgxMDBlM2RhNzhjMjA4ZmZjYjQuLjMxMjgxMjU1MzcxYTkyMDg4MDc0NzRmMTg4NzJkNDNi
MWExYjBhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKQEAgLTMyLDE0ICszMiwxNCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbiBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBh
bmQgV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uCisvLyBNdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRo
IFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQgV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uCiBl
bnVtIGNsYXNzIERyYWdEZXN0aW5hdGlvbkFjdGlvbiA6IHVpbnQ4X3QgewogICAgIERIVE1MID0g
MSwKICAgICBFZGl0ICA9IDIsCiAgICAgTG9hZCAgPSA0CiB9OwogCi1pbmxpbmUgY29uc3RleHBy
IE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFu
eSgpCitjb25zdGV4cHIgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gYW55RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uKCkKIHsKICAgICByZXR1cm4gT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlv
bkFjdGlvbj4geyBEcmFnRGVzdGluYXRpb25BY3Rpb246OkRIVE1MLCBEcmFnRGVzdGluYXRpb25B
Y3Rpb246OkVkaXQsIERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZCB9OwogfQpAQCAtNjAsNyAr
NjAsNyBAQCB0eXBlZGVmIGVudW0gewogICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAg
PSBVSU5UX01BWAogfSBEcmFnU291cmNlQWN0aW9uOwogCi0vLyBNYXRjaGVzIE5TRHJhZ09wZXJh
dGlvbi4KKy8vIE11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggTlNEcmFnT3BlcmF0aW9uLgogdHlw
ZWRlZiBlbnVtIHsKICAgICBEcmFnT3BlcmF0aW9uTm9uZSAgICA9IDAsCiAgICAgRHJhZ09wZXJh
dGlvbkNvcHkgICAgPSAxLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggNjUxMDE4
NzBjMTk5YWFhYmRmMTkwZDdkNmI0NWU2OTQzOGQ5ZGJiMi4uNDIxYTI5OTQzYjNkMTBkNDg1ZGE1
Y2U5ZWZkNTNlM2ZhZmJjMGYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RHJhZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03
NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdnaW5nUHVycG9zZSB7IEZv
ckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9OwogCiAgICAgLy8gY2xp
ZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50
IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAg
ICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRp
b24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0
PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gYWN0aW9uTWFzayA9IERyYWdEZXN0aW5hdGlvbkFjdGlv
bkFueSgpKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdT
dG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0g
RHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gYWN0
aW9uTWFzayA9IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSgpKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNh
dGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlv
bkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3Bl
cmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlv
blNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkp
OwogICAgIC8vIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBieSBXZWJLaXQyIElQ
QyBiZWNhdXNlIERyYWdEYXRhCiAgICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIGRlY29kZXIg
YW5kIG5vdCBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgRHJhZ0RhdGEoKSA9IGRlZmF1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25z
SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDZkZWQyMzMxNjgxM2IwYjM1NjhhMWI5NWVjOTlhZGVj
MTVmMmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gY29yZURyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2soV0tEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uKQoreworICAgIE9wdGlvblNl
dDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHJlc3VsdDsKKyAgICBpZiAoYWN0aW9u
ICYgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25ESFRNTCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkRIVE1MKTsKKyAgICBpZiAoYWN0aW9uICYgV0tE
cmFnRGVzdGluYXRpb25BY3Rpb25FZGl0KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbjo6RWRpdCk7CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTG9hZCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb246OkxvYWQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBQTEFURk9S
TShBUFBLSVQpCitpbmxpbmUgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBjb3JlRHJhZ09wZXJhdGlv
bk1hc2soTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3sKKyAgICBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uIHJlc3VsdCA9IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChvcGVy
YXRpb24gJiBOU0RyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
Q29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAg
IHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCAmIFdl
YkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3Bl
cmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMpOworICAg
IGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlKQorICAgICAgICByZXN1bHQg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlv
bk1vdmUpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+KHJlc3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBpZiAob3BlcmF0
aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
RGVsZXRlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmIC8vIFBMQVRGT1JNKEFQUEtJ
VCkKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDI0MjFhYjgyM2M2MTM2ZTZjMTc2NmU2YWZkNzQ2Yzhj
ZTczZTg3OWMuLjdkYmE0ZWZkZGRhNDMxYzEwMzAwOTMwNmY1MjVlMjhlMGUwMTZiYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC03Niw2ICs3
Niw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29s
LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgIl9XS0RyYWdBY3Rpb25z
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIl9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8Q2FyYm9uL0Nh
cmJvbi5oPgpAQCAtMzk0NSw4ICszOTQ2LDkgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBs
OjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5n
SW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2Nh
dGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrID0gT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46OmZyb21SYXco
W21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2lu
Z0luZm9dKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNs
aWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRy
YWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRp
b25BY3Rpb25NYXNrKTsKKyAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3Jl
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIGF1dG8gZHJhZ09wZXJhdGlv
biA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8s
IGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0aW9uLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyht
X3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2spOwogCiAgICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsK
ICAgICBtX3BhZ2UtPmRyYWdFbnRlcmVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQ
YXN0ZWJvYXJkLm5hbWUpOwpAQCAtMzk1OCw4ICszOTYwLDkgQEAgTlNEcmFnT3BlcmF0aW9uIFdl
YlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0lu
Zm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50
OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNv
cmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgYXV0byBkcmFnRGVzdGluYXRp
b25BY3Rpb25NYXNrID0gT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46
OmZyb21SYXcoW21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5m
bzpkcmFnZ2luZ0luZm9dKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2lu
Z0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25G
bGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFn
RGVzdGluYXRpb25BY3Rpb25NYXNrKTsKKyAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbbV92aWV3IF93ZWJfZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIGF1dG8gZHJh
Z09wZXJhdGlvbiA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFn
Z2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0aW9uLCBhcHBsaWNhdGlvbkZsYWdz
Rm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2spOwogICAgIG1fcGFnZS0+ZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEsIGRy
YWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CiAKICAgICBOU0ludGVnZXIgbnVt
YmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1fcGFnZS0+Y3VycmVudERyYWdOdW1iZXJPZkZpbGVz
VG9CZUFjY2VwdGVkKCk7CkBAIC0zOTgzLDcgKzM5ODYsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpk
cmFnZ2luZ0V4aXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQg
Z2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9u
LCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFn
Z2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRp
b25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsK
KyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xv
YmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFz
ZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CiAgICAgbV9wYWdlLT5kcmFnRXhpdGVkKGRyYWdEYXRhLCBk
cmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogICAgIG1fcGFnZS0+cmVzZXRD
dXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAgICAgZHJhZ2dpbmdJbmZvLm51bWJlck9mVmFsaWRJ
dGVtc0ZvckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwpAQCAtMzk5
OSw3ICs0MDAyLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24oaWQg
PE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9u
IGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpn
bG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3dd
KSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdE
YXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBh
cHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5n
SW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpE
cmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1h
c2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9u
RmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CiAK
ICAgICBOU0FycmF5ICp0eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQudHlw
ZXM7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCAzMWVjY2JmNDUyOGNhNjI5Y2NkM2I5M2EyMjQ5MWRiZjRjNzI1
NDUxLi4zM2Q5YjMwNzlmYzE3ZjY2NzhiNjRiZWMxMjdkYWM2NmNkOGZiYmZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTg2LDYgKzg2LDcgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIl9XS0FjdGl2YXRlZEVsZW1l
bnRJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCIKICNp
bXBvcnQgIl9XS0VsZW1lbnRBY3Rpb24uaCIKICNpbXBvcnQgIl9XS0VsZW1lbnRBY3Rpb25JbnRl
cm5hbC5oIgogI2ltcG9ydCAiX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmgiCkBAIC03MzExLDkgKzcz
MTIsOCBAQCAtIChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvckRyb3BTZXNzaW9uOihpZCA8
VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBkcmFnRGVzdAogICAgIENHUG9pbnQgY2xpZW50OwogICAg
IFtzZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vzc2lvbjpzZXNzaW9u
IG91dENsaWVudFBvaW50OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmdsb2JhbF07CiAKLSAgICBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4oc2Vzc2lvbi5hbGxvd3NNb3ZlT3BlcmF0aW9uID8gV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5IDogKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25FdmVyeSAmIH5X
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkpOwotICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzayA9IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+Ojpmcm9t
UmF3KGRyYWdEZXN0aW5hdGlvbkFjdGlvbik7Ci0gICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29y
ZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9i
YWwpLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uTm9uZSwgZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzayB9OworICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gZHJh
Z09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soc2Vzc2lvbi5hbGxvd3NNb3Zl
T3BlcmF0aW9uID8gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5IDogKFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25FdmVyeSAmIH5XZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkpOworICAgIHJldHVy
biB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpy
b3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdB
cHBsaWNhdGlvbk5vbmUsIGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKGRyYWdEZXN0aW5h
dGlvbkFjdGlvbikgfTsKIH0KIAogLSAodm9pZCljbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMzQ0NzcwZDVlZTk1NjMwY2FlYTQyNmFhMTYyOTg0MTM1NzFmMDM3ZC4uMTlmZjk0ZWRhYzYw
N2IxN2ExNjc2MzE4NjEzZWJhMDI4YjI3NGQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MzgsNiArOTM4LDcgQEAKIAkJNDQ4Mjcz
NDcyNDUyOEY2MDAwQTk1NDkzIC8qIENvY29hSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0ODI3MzQ2MjQ1MjhGNjAwMEE5NTQ5MyAvKiBDb2Nv
YUltYWdlLmggKi87IH07CiAJCTQ0OUQ5MERBMjFGREMzMEIwMEY2NzdDMCAvKiBMb2NhbEF1dGhl
bnRpY2F0aW9uU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NDlEOTBEODIxRkQ2M0ZFMDBGNjc3QzAgLyogTG9jYWxBdXRoZW50aWNhdGlv
blNvZnRMaW5rLm1tICovOyB9OwogCQk0NEU5MzZGRDI0NDdDMkQ4MDA5RkEzRTMgLyogTGVnYWN5
Q3VzdG9tUHJvdG9jb2xJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDRFOTM2RkMyNDQ3QzI1NjAwOUZBM0UzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29s
SUQuaCAqLzsgfTsKKwkJNDRFQzNFQTkyNDdGNUMwOTAwNTk0ODlDIC8qIF9XS0RyYWdBY3Rpb25z
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0RUMzRUE4MjQ3RjVDMDgwMDU5NDg5QyAvKiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggKi87
IH07CiAJCTQ2MEY0ODhGMUY5OTZGNzEwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjBGNDg4RDFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk0NjBGNDg5MDFG
OTk2RjcxMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYwRjQ4OEUx
Rjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMu
aCAqLzsgfTsKIAkJNDYxQ0NDQTUyMzE0ODVBNzAwQjY1OUI5IC8qIFVJUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
MzIzNjg1MjMxNDgzM0YwMEE0OEZBNyAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggKi87IH07
CkBAIC0zNTM4LDYgKzM1MzksNyBAQAogCQk0NDlEOTBEODIxRkQ2M0ZFMDBGNjc3QzAgLyogTG9j
YWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NEE0ODFDNjIxRjJEMjdCMDBGMkY5MTkgLyogQ2xpZW50Q2VydGlm
aWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
bGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRFOTM2RkMyNDQ3QzI1NjAwOUZBM0UzIC8qIExlZ2FjeUN1
c3RvbVByb3RvY29sSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5
Q3VzdG9tUHJvdG9jb2xJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NEVDM0VB
ODI0N0Y1QzA4MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MDMwMTFBMjM0QkUzMUQwMDlDODIxNyAvKiBXZWJCYWNr
Rm9yd2FyZENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkJhY2tGb3J3YXJkQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjAz
MDExQjIzNEJFMzFFMDA5QzgyMTcgLyogV2ViQmFja0ZvcndhcmRDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKQEAgLTc1MTMsNiArNzUxNSw3IEBACiAJCTM3REZBNkZFMTgxMEJCMkQw
MDFGNEE5RiAvKiBDb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJNDRFQzNFQTgyNDdGNUMwODAwNTk0ODlDIC8qIF9XS0RyYWdBY3Rpb25zSW50ZXJu
YWwuaCAqLywKIAkJCQkzNzNEMTIyMTE4QTQ3MzAxMDA2NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGUu
aCAqLywKIAkJCQkzNzNEMTIyMDE4QTQ3MzAxMDA2NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGUubW0g
Ki8sCiAJCQkJMzczRDEyMjYxOEE0NzNGNjAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlSW50ZXJu
YWwuaCAqLywKQEAgLTEwNTI5LDYgKzEwNTMyLDcgQEAKIAkJCQlBMUE0RkU1QTE4RENFOUZBMDBC
NUVBOEEgLyogX1dLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTRGRTYxMThERDU0
QTQwMEI1RUE4QSAvKiBfV0tEb3dubG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MUE0RkU1QzE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDRFQzNFQTkyNDdGNUMwOTAwNTk0ODlDIC8qIF9XS0RyYWdBY3Rpb25zSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUE4NzNBMThCQkZFMEYwMDU4OEFGMiAvKiBf
V0tFbGVtZW50QWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlBODczQzE4QkJGRjA3MDA1
ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUQwMUJDOTE5MDVEMzdFMDBDOUM0NUYgLyogX1dLRXJyb3JSZWNvdmVyeUF0dGVtcHRpbmcuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KaW5kZXggNGJiZTgxN2ExNDcxZWNiY2VjNGI0MDli
ZDYyOGU4ZTY1M2Q2NmIxNS4uZmNjZDdhYWM0ZTY1NjYyZjYyMGJiMzk0M2MzNDY5ZGY4MDhmYmNj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50Lm1tCkBAIC02OCw2ICs2OCwxOSBAQCBXZWJEcmFnQ2xpZW50OjpXZWJE
cmFnQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAKICNpZiBQTEFURk9STShNQUMpCiAKK3N0YXRp
YyBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24ga2l0KFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6
OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6REhUTUw6CisgICAgICAgIHJldHVybiBXZWJEcmFnRGVz
dGluYXRpb25BY3Rpb25ESFRNTDsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbjo6RWRpdDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQ7
CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQ6CisgICAgICAg
IHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkOworICAgIH0KKyAgICByZXR1cm4g
V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsKK30KKwogYm9vbCBXZWJEcmFnQ2xpZW50Ojp1
c2VMZWdhY3lEcmFnQ2xpZW50KCkKIHsKICAgICByZXR1cm4gZmFsc2U7CkBAIC04Niw3ICs5OSw3
IEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqZ2V0VG9wSFRNTFZpZXcoRnJhbWUqIGZyYW1lKQogCiB2
b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNv
cmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRh
JiBkcmFnRGF0YSkKIHsKLSAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2Vi
VmlldzptX3dlYlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb246c3RhdGljX2Nh
c3Q8V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPihhY3Rpb24pIGZvckRyYWdnaW5nSW5mbzpkcmFn
RGF0YS5wbGF0Zm9ybURhdGEoKV07CisgICAgW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJk
ZXJdIHdlYlZpZXc6bV93ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOmtp
dChhY3Rpb24pIGZvckRyYWdnaW5nSW5mbzpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKV07CiB9CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDJmYTcx
ZWEyNWE5MTUxMWUwMjUzMTI0ZDZiMzY4NzM3NzJjZTg1NjguLjA0ZDMyOTdjYTZmOWE4NjY4ZDJk
OTdhNjkyODA2YTUyNDhiNmM5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTExMiw3ICsxMTIsNiBAQAogI2ltcG9ydCAiV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgiCiAjaW1wb3J0ICJXZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuaCIK
ICNpbXBvcnQgIldlYlRleHRJdGVyYXRvci5oIgotI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZS5oIgog
I2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZhbGlkYXRpb25N
ZXNzYWdlQ2xpZW50LmgiCiAjaW1wb3J0ICJXZWJWaWV3R3JvdXAuaCIKQEAgLTU3Nyw2ICs1NzYs
MzYgQEAgLSAodm9pZCljbGVhclRhcmdldDsKICNlbmRpZgogQGVuZAogCitzdGF0aWMgT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gY29yZURyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2soV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2spCit7CisgICAgT3B0
aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gcmVzdWx0OworICAgIGlmIChh
Y3Rpb25NYXNrICYgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhUTUwpCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpESFRNTCk7CisgICAgaWYgKGFj
dGlvbk1hc2sgJiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25FZGl0KQorICAgICAgICByZXN1bHQu
YWRkKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6RWRpdCk7CisgICAgaWYgKGFjdGlv
bk1hc2sgJiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKQorICAgICAgICByZXN1bHQuYWRk
KFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soTlNE
cmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3sKKyAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIHJl
c3VsdCA9IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChvcGVyYXRpb24gJiBO
U0RyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7Cisg
ICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3VsdCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCAmIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25MaW5rKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uR2Vu
ZXJpYykKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMpOworICAgIGlmIChvcGVy
YXRpb24gJiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlKQorICAgICAgICByZXN1bHQgPSBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisg
ICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3Vs
dCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNE
cmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCiBXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9u
cyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKQogewogICAgIFdlYkNvcmU6OkZpbmRPcHRpb25zIGZp
bmRPcHRpb25zOwpAQCAtMTkwOSw4ICsxOTM4LDggQEAgLSAoV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKWRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2kK
IAogLSAoV2ViQ29yZTo6RHJhZ0RhdGEpZHJhZ0RhdGFGb3JTZXNzaW9uOihpZCA8VUlEcm9wU2Vz
c2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1Bv
aW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCiB7Ci0gICAg
YXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+KG9wZXJhdGlvbik7Ci0gICAgYXV0byBkcmFnRGVzdGluYXRpb25NYXNrID0gT3B0aW9uU2V0
PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46OmZyb21SYXcoW3NlbGYgZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246c2Vzc2lvbl0pOworICAgIGF1dG8gZHJhZ09wZXJh
dGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2sob3BlcmF0aW9uKTsKKyAgICBhdXRvIGRy
YWdEZXN0aW5hdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbc2VsZiBk
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjpzZXNzaW9uXSk7CiAgICAgcmV0dXJu
IHsgc2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudFBvc2l0aW9uKSwgV2Vi
Q29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbFBvc2l0aW9uKSwgZHJhZ09wZXJhdGlvbk1hc2ss
IFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIGRyYWdEZXN0aW5hdGlvbk1hc2sgfTsKIH0K
IApAQCAtNjcyNCw3ICs2NzUzLDcgQEAgLSAoV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uRmxhZ3Mp
YXBwbGljYXRpb25GbGFnczooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0kKIAogLSAoT3B0
aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4pYWN0aW9uTWFza0ZvckRyYWdn
aW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KIHsKLSAgICByZXR1cm4g
T3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46OmZyb21SYXcoW1tzZWxm
IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OnNlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICByZXR1cm4gY29yZURyYWdE
ZXN0aW5hdGlvbkFjdGlvbk1hc2soW1tzZWxmIF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3
OnNlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0lu
Zm9dKTsKIH0KIAogLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nRW50ZXJlZDooaWQgPE5TRHJh
Z2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KQEAgLTY3MzIsNyArNjc2MSw3IEBAIC0gKE5TRHJhZ09w
ZXJhdGlvbilkcmFnZ2luZ0VudGVyZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZv
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2Nh
dGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2lu
dChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7CiAKLSAg
ICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFs
LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5n
SW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Cisg
ICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2Jh
bCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYg
YWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKICAgICByZXR1cm4gY29y
ZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CiB9CiAKQEAg
LTY3NDUsNyArNjc3NCw3IEBAIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1VwZGF0ZWQ6KGlk
IDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xp
ZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9j
YXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7CiAKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0
YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBb
c2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JE
cmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0Rh
dGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtk
cmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0
aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpk
cmFnZ2luZ0luZm9dKTsKICAgICByZXR1cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBk
YXRlZChkcmFnRGF0YSk7CiB9CiAKQEAgLTY3NTcsNyArNjc4Niw3IEBAIC0gKHZvaWQpZHJhZ2dp
bmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAKICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0lu
Zm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFn
RGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOworICAgIFdl
YkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNv
cmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOwogICAgIHBhZ2Ut
PmRyYWdDb250cm9sbGVyKCkuZHJhZ0V4aXRlZChkcmFnRGF0YSk7CiB9CiAKQEAgLTY3NzAsNyAr
Njc5OSw3IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlkIDxOU0RyYWdnaW5nSW5m
bz4pZHJhZ2dpbmdJbmZvCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2lu
Z0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChX
ZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2Vs
ZiB3aW5kb3ddKSk7Ci0gICAgYXV0byogZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEo
ZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3Nl
bGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKKyAgICBhdXRvKiBkcmFnRGF0YSA9
IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3Jl
RHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKIAogICAgIE5TQXJy
YXkqIHR5cGVzID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC50eXBlczsKICAgICBp
ZiAoIVt0eXBlcyBjb250YWluc09iamVjdDpXZWJBcmNoaXZlUGJvYXJkVHlwZV0gJiYgW3R5cGVz
IGNvbnRhaW5zT2JqZWN0OldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBl
KCldKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50
ZXJuYWwuaAppbmRleCA1NzY2MjlhYmE2OWE2Y2EwYmY1NmE1YjllNjlhMzMxOTEyNzM4MmM4Li4y
NGMzZWUwNDM2NzMxNmM0M2UyMmQ4OTFhNTJlNjI3YjQ5MzVlZDc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBJ
Z2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNiw2ICszNiw3IEBACiAjaWZkZWYgX19j
cGx1c3BsdXMKIAogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmluZE9wdGlv
bnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hU
TUxNZWRpYUVsZW1lbnRFbnVtcy5oPgpAQCAtODksNyArOTAsOSBAQCBjbGFzcyBXZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlcjsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKLVdlYkNvcmU6OkZp
bmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpOworV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soTlNEcmFnT3BlcmF0aW9uKTsKKwor
V2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMpOwogCiBPcHRp
b25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBjb3JlTGF5b3V0TWlsZXN0b25lcyhXZWJM
YXlvdXRNaWxlc3RvbmVzKTsKIFdlYkxheW91dE1pbGVzdG9uZXMga2l0TGF5b3V0TWlsZXN0b25l
cyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCmlu
ZGV4IGQ0M2MyZTQ0ZWM4MDBjZDU1MzlhMmQwMjBjOWRmYTRhNTM3ZDUwMWIuLjY5ZDU4OGFiOGQ4
ZjZhMDZmMmFjMWVkMzE3ZjM4ZjRmYmU5NmJlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsNiAr
NjAsMTkgQEAgc3RhdGljIERXT1JEIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1
cnNvcnMoRHJhZ09wZXJhdGlvbiBvcCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMg
V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGtpdChEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9u
KQoreworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgY2FzZSBEcmFnRGVzdGluYXRpb25BY3Rp
b246OkRIVE1MOgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhUTUw7
CisgICAgY2FzZSBEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQ6CisgICAgICAgIHJldHVybiBX
ZWJEcmFnRGVzdGluYXRpb25BY3Rpb25FZGl0OworICAgIGNhc2UgRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uOjpMb2FkOgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsK
KyAgICB9CisgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7Cit9CisKIFdl
YkRyYWdDbGllbnQ6OldlYkRyYWdDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2Vi
Vmlldyh3ZWJWaWV3KSAKIHsKQEAgLTcyLDcgKzg1LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojp3
aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0
aW8KICAgICAvL3NvIHdlIGp1c3QgY2FsbCB0aGUgZGVsZWdhdGUsIGFuZCBkb24ndCB3b3JyeSBh
Ym91dCB3aGV0aGVyIGl0J3MgaW1wbGVtZW50ZWQKICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGU+
IGRlbGVnYXRlUmVmID0gMDsKICAgICBpZiAoU1VDQ0VFREVEKG1fd2ViVmlldy0+dWlEZWxlZ2F0
ZSgmZGVsZWdhdGVSZWYpKSkKLSAgICAgICAgZGVsZWdhdGVSZWYtPndpbGxQZXJmb3JtRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uKG1fd2ViVmlldywgKFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbilhY3Rp
b24sIGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICAgICAgZGVsZWdhdGVSZWYtPndpbGxQ
ZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1fd2ViVmlldywga2l0KGFjdGlvbiksIGRyYWdE
YXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KIAogRHJhZ1NvdXJjZUFjdGlvbiBXZWJEcmFnQ2xpZW50
OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2lu
dCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400628</attachid>
            <date>2020-05-29 16:01:08 -0700</date>
            <delta_ts>2020-05-29 16:25:13 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>bug-212507-20200529160302.patch</filename>
            <type>text/plain</type>
            <size>32736</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYzYjlmZWE4NzNkN2Q1
OTU4MmYyMTRhNzUyY2YxZDVhZWNlYmYyMC4uNTQ3M2UzMTMwMTA3MzMwNjJlMTI0NWZiNGNhMGM0
NjUxMTJiZDY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI4ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3Rz
IHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7V2ViLFdLfURyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2svTlNEcmFnT3BlcmF0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMTI1MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwYWdlL0RyYWdBY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnRGVz
dGluYXRpb25BY3Rpb24pOiBBZGQuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb25BbnkpOiBEZWxldGUuCisgICAgICAgIC0gUmVuYW1lIERyYWdEZXN0aW5hdGlvbkFjdGlv
bkFueSgpIHRvCisgICAgICAgICAgYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgdG8gbWF0Y2gg
V2ViS2l0IHN0eWxlLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIC0g
VXBkYXRlIHRvIHVzZSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKS4KKwogMjAyMC0wNS0yOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoaW5ncyBm
cm9tIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIHRoYXQgYXJlIGNvdmVyZWQgYnkgUGxhdGZvcm1F
bmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM5NzNhODA5ZDZjOWM1YmE1ODg2MGExNWUyZTRhMmVj
MDU2OGZiMzUuLjgyOWRiZjdhNDZkOWU5MWFjZGM2MTMzY2YyM2IyMmZkOTIzZDk4NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDUtMjggIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVu
IFdlYkNvcmUgdHlwZXMgYW5kIHtXZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0Ry
YWdPcGVyYXRpb24KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkv
Q29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oOiBBZGQuCisgICAgICAgIChXZWJLaXQ6OmNv
cmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKToKKyAgICAgICAgKFdlYktpdDo6Y29yZURyYWdP
cGVyYXRpb25NYXNrKToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbnMgdG8gYXZv
aWQgY2FzdGluZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmRyYWdnaW5nRXhpdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnRGF0
YUZvckRyb3BTZXNzaW9uOmRyYWdEZXN0aW5hdGlvbkFjdGlvbjpdKToKKyAgICAgICAgLSBNYWtl
IHVzZSBvZiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaygpIGFuZAorICAgICAgICAgIGNv
cmVEcmFnT3BlcmF0aW9uTWFzaygpLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAtIEFkZCBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggdG8gcHJv
amVjdC4KKwogMjAyMC0wNS0yOSAgSmFuLU1pY2hhZWwgQnJ1bW1lciAgPGphbi5icnVtbWVyQHRh
Ym9zLm9yZz4KIAogICAgICAgICBbR1RLXVtXUEVdIEFQSSBmb3IgV2ViVmlldyBhdWRpbyBtdXRl
IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAwNzkzYTQyZmQ3NWMwMjQ3
ZjMzNThlN2ZjN2QxNDY2YWIxMTFkMmZhLi5hNDUyYTgxOWMxMTdlYjkyNTdlODMxZDg0YzdhMzcz
ZTUxNzdlYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMjAtMDUtMjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHtX
ZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0RyYWdPcGVyYXRpb24KKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06
CisgICAgICAgIChraXQpOgorICAgICAgICAtIEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9uIHRvIGF2
b2lkIGNhc3RpbmcuCisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0
aW5hdGlvbkFjdGlvbik6CisgICAgICAgIC0gTWFrZSB1c2Ugb2Yga2l0KCkgY29udmVyc2lvbiBm
dW5jdGlvbi4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChjb3JlRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk6CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2sp
OgorICAgICAgICAtIEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9ucyB0byBhdm9pZCBjYXN0aW5nLgor
ICAgICAgICAoLVtXZWJWaWV3IGRyYWdEYXRhRm9yU2Vzc2lvbjpjbGllbnQ6Z2xvYmFsOm9wZXJh
dGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOl0p
OgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nRW50ZXJlZDpdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBkcmFnZ2luZ1VwZGF0ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFeGl0
ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgcGVyZm9ybURyYWdPcGVyYXRpb246XSk6CisgICAg
ICAgIC0gTWFrZSB1c2Ugb2YgY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soKSBhbmQKKyAg
ICAgICAgICBjb3JlRHJhZ09wZXJhdGlvbk1hc2soKSBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAoY29yZURyYWdPcGVy
YXRpb25NYXNrKTogQWRkIGRlY2xhcmF0aW9uLgorICAgICAgICAoY29yZU9wdGlvbnMpOiBSZW1v
dmUgcmVkdW5kYW50IHBhcmFtZXRlciBuYW1lLgorCiAyMDIwLTA1LTI5ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhpbmdzIGZyb20gRmVhdHVyZURl
ZmluZXMueGNjb25maWcgdGhhdCBhcmUgY292ZXJlZCBieSBQbGF0Zm9ybUVuYWJsZUNvY29hLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAzM2RlYzhkMjdkNjVjZDBkZjlhYTE0YmI1
YTkzMjc3Yzg5Y2UzY2UxLi5kNDE1N2M1MWU3YzdmYTAyZWY1ZDM2NTNkMzgxODIxNWJhMmYwMjY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDUt
MjggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1
c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHtXZWIsV0t9RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0RyYWdPcGVyYXRpb24KKyAgICAgICAgPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAg
ICAoa2l0KToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbiB0byBhdm9pZCBjYXN0
aW5nLgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25B
Y3Rpb24pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGtpdCgpIGNvbnZlcnNpb24gZnVuY3Rpb24u
CisKIDIwMjAtMDUtMTkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+
CiAKICAgICAgICAgW1dpbkNhaXJvXSBBU1NFUlQobV9lZ2xEaXNwbGF5ID09IEVHTF9OT19ESVNQ
TEFZKSBmYWlscyBpbiB+UGxhdGZvcm1EaXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMu
aAppbmRleCBjODE3NzQwMmY5N2M1MDgzYjc1ODA4MTAwZTNkYTc4YzIwOGZmY2I0Li4zMTI4MTI1
NTM3MWE5MjA4ODA3NDc0ZjE4ODcyZDQzYjFhMWIwYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0
aW9ucy5oCkBAIC0zMiwxNCArMzIsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBX
ZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBX
ZWJEcmFnRGVzdGluYXRpb25BY3Rpb24gYW5kIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLgorLy8g
TXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24gYW5kIFdL
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLgogZW51bSBjbGFzcyBEcmFnRGVzdGluYXRpb25BY3Rpb24g
OiB1aW50OF90IHsKICAgICBESFRNTCA9IDEsCiAgICAgRWRpdCAgPSAyLAogICAgIExvYWQgID0g
NAogfTsKIAotaW5saW5lIGNvbnN0ZXhwciBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiBEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkoKQorY29uc3RleHByIE9wdGlvblNldDxEcmFnRGVz
dGluYXRpb25BY3Rpb24+IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpCiB7CiAgICAgcmV0dXJu
IE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
OjpESFRNTCwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpFZGl0LCBEcmFnRGVzdGluYXRpb25BY3Rp
b246OkxvYWQgfTsKIH0KQEAgLTYwLDcgKzYwLDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBEcmFn
U291cmNlQWN0aW9uQW55ICAgICAgICAgID0gVUlOVF9NQVgKIH0gRHJhZ1NvdXJjZUFjdGlvbjsK
IAotLy8gTWF0Y2hlcyBOU0RyYWdPcGVyYXRpb24uCisvLyBNdXN0IGJlIGtlcHQgaW4gc3luYyB3
aXRoIE5TRHJhZ09wZXJhdGlvbi4KIHR5cGVkZWYgZW51bSB7CiAgICAgRHJhZ09wZXJhdGlvbk5v
bmUgICAgPSAwLAogICAgIERyYWdPcGVyYXRpb25Db3B5ICAgID0gMSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5oCmluZGV4IDY1MTAxODcwYzE5OWFhYWJkZjE5MGQ3ZDZiNDVlNjk0MzhkOWRi
YjIuLjQyMWEyOTk0M2IzZDEwZDQ4NWRhNWNlOWVmZDUzZTNmYWZiYzBmMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBj
bGFzcyBEcmFnZ2luZ1B1cnBvc2UgeyBGb3JFZGl0aW5nLCBGb3JGaWxlVXBsb2FkLCBGb3JDb2xv
ckNvbnRyb2wgfTsKIAogICAgIC8vIGNsaWVudFBvc2l0aW9uIGlzIHRha2VuIHRvIGJlIHRoZSBw
b3NpdGlvbiBvZiB0aGUgZHJhZyBldmVudCB3aXRoaW4gdGhlIHRhcmdldCB3aW5kb3csIHdpdGgg
KDAsMCkgYXQgdGhlIHRvcCBsZWZ0Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0Rh
dGFSZWYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdB
cHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGFjdGlvbk1h
c2sgPSBEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkoKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJh
Z0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9u
LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IGFjdGlvbk1hc2sgPSBEcmFnRGVzdGluYXRpb25BY3Rpb25B
bnkoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0IElu
dFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBE
cmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUs
IE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0
b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBE
cmFnQXBwbGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFu
eURyYWdEZXN0aW5hdGlvbkFjdGlvbigpKTsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHNob3Vs
ZCB1c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0YQogICAgIC8vIGlzIGlu
aXRpYWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9yLgogICAg
IERyYWdEYXRhKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNhZmJmNmFj
M2E1OTlkNDA1NzVlODgzM2MzNGIxN2IzMmE3M2NlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKQEAgLTAs
MCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworaW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rp
b24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
IGFjdGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiByZXN1bHQ7CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhUTUwp
CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpESFRN
TCk7CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCkKKyAgICAg
ICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQpOworICAg
IGlmIChhY3Rpb24gJiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQpCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisjaWYgVVNFKEFQUEtJVCkKK2lubGluZSBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhOU0RyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQorewor
ICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gcmVzdWx0ID0gV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bk5vbmU7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAg
IHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCAmIFdl
YkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3Bl
cmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChv
cGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvblByaXZh
dGUpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
KHJlc3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICBpZiAob3BlcmF0
aW9uICYgTlNEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1v
dmUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAg
IHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCAmIFdl
YkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5k
aWYgLy8gVVNFKEFQUEtJVCkKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDI0MjFhYjgyM2M2MTM2ZTZj
MTc2NmU2YWZkNzQ2YzhjZTczZTg3OWMuLjdkYmE0ZWZkZGRhNDMxYzEwMzAwOTMwNmY1MjVlMjhl
MGUwMTZiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCkBAIC03Niw2ICs3Niw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQg
IldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQg
Il9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIgogI2lt
cG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgpAQCAtMzk0NSw4ICszOTQ2LDkgQEAgTlNEcmFnT3BlcmF0
aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFn
Z2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVy
dFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAg
IFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0lu
Zm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgYXV0byBkcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrID0gT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbj46OmZyb21SYXcoW21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdn
aW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShk
cmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGlj
YXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8p
LCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKTsKKyAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbbV92aWV3IF93ZWJfZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIGF1
dG8gZHJhZ09wZXJhdGlvbiA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0
YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0aW9uLCBhcHBsaWNhdGlv
bkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRy
YWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOwogCiAgICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFn
SW5mb3JtYXRpb24oKTsKICAgICBtX3BhZ2UtPmRyYWdFbnRlcmVkKGRyYWdEYXRhLCBkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwpAQCAtMzk1OCw4ICszOTYwLDkgQEAgTlNE
cmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQoaWQgPE5TRHJhZ2dpbmdJ
bmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3Zp
ZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5p
bF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChk
cmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgYXV0
byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0
aW5hdGlvbkFjdGlvbj46OmZyb21SYXcoW21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlv
bkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBk
cmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
KSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFn
Z2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKTsKKyAgICBhdXRvIGRyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbbV92aWV3
IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10p
OworICAgIGF1dG8gZHJhZ09wZXJhdGlvbiA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0
YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0aW9uLCBh
cHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5n
SW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOwogICAgIG1fcGFnZS0+ZHJhZ1VwZGF0
ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CiAKICAg
ICBOU0ludGVnZXIgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1fcGFnZS0+Y3VycmVudERy
YWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkKCk7CkBAIC0zOTgzLDcgKzM5ODYsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0V4aXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5n
SW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9p
bnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5k
cmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0
YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBk
cmFnZ2luZ0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0lu
Zm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmll
dy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CiAgICAgbV9wYWdlLT5kcmFnRXhp
dGVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogICAg
IG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAgICAgZHJhZ2dpbmdJbmZv
Lm51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNG
b3JEcm9wOwpAQCAtMzk5OSw3ICs0MDAyLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURy
YWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5k
cmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGds
b2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwg
W21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3
IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVh
c2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0YSA9
IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3Jl
RHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
ayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJh
Z2dpbmdJbmZvKSk7CiAKICAgICBOU0FycmF5ICp0eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2lu
Z1Bhc3RlYm9hcmQudHlwZXM7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBhMzQ0Y2Y1ZmJkNjBhNTQ2NzVmZmQy
ODJmY2UwMDZhYmNjNjk4OGQwLi5iZDFiY2QyMmE3NjRhMTYwOWNkNjM2YjY1MzQwZWU3OGFlMjhk
YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTg2LDYgKzg2LDcgQEAKICNpbXBvcnQgIldlYlBhZ2VQ
cm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIl9X
S0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0RyYWdBY3Rpb25z
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0VsZW1lbnRBY3Rpb24uaCIKICNpbXBvcnQgIl9XS0Vs
ZW1lbnRBY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmgi
CkBAIC03MzE5LDkgKzczMjAsOCBAQCAtIChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvckRy
b3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBkcmFnRGVzdAogICAgIENHUG9p
bnQgY2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9w
U2Vzc2lvbjpzZXNzaW9uIG91dENsaWVudFBvaW50OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmds
b2JhbF07CiAKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oc2Vzc2lvbi5hbGxvd3NNb3ZlT3Bl
cmF0aW9uID8gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5IDogKFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25FdmVyeSAmIH5XZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkpOwotICAgIGF1dG8gZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRp
b25BY3Rpb24+Ojpmcm9tUmF3KGRyYWdEZXN0aW5hdGlvbkFjdGlvbik7Ci0gICAgcmV0dXJuIHsg
c2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5k
ZWRJbnRQb2ludChnbG9iYWwpLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxp
Y2F0aW9uTm9uZSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayB9OworICAgIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soc2Vz
c2lvbi5hbGxvd3NNb3ZlT3BlcmF0aW9uID8gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5IDog
KFdlYkNvcmU6OkRyYWdPcGVyYXRpb25FdmVyeSAmIH5XZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92
ZSkpOworICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGll
bnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgZHJhZ09wZXJhdGlvbk1hc2ss
IFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrKGRyYWdEZXN0aW5hdGlvbkFjdGlvbikgfTsKIH0KIAogLSAodm9pZCljbGVhblVwRHJhZ1Nv
dXJjZVNlc3Npb25TdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZGVlMzRkMjBmYWU1MTQ1ZWYyODBlNjU3NjQ3NGVlYjAyMmY5OTY2
NC4uZTI2YjQwM2Y4NmQ4NjA3MGE3N2I3ZWFlNGYzMWY0Y2VjNjE4ZjUwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05MzcsNiArOTM3
LDcgQEAKIAkJNDQ4MjczNDcyNDUyOEY2MDAwQTk1NDkzIC8qIENvY29hSW1hZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0ODI3MzQ2MjQ1MjhGNjAw
MEE5NTQ5MyAvKiBDb2NvYUltYWdlLmggKi87IH07CiAJCTQ0OUQ5MERBMjFGREMzMEIwMEY2NzdD
MCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDlEOTBEODIxRkQ2M0ZFMDBGNjc3QzAgLyogTG9j
YWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLm1tICovOyB9OwogCQk0NEU5MzZGRDI0NDdDMkQ4MDA5
RkEzRTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFOTM2RkMyNDQ3QzI1NjAwOUZBM0UzIC8qIExlZ2Fj
eUN1c3RvbVByb3RvY29sSUQuaCAqLzsgfTsKKwkJNDRFQzNFQTkyNDdGNUMwOTAwNTk0ODlDIC8q
IF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ0RUMzRUE4MjQ3RjVDMDgwMDU5NDg5QyAvKiBfV0tEcmFnQWN0aW9u
c0ludGVybmFsLmggKi87IH07CiAJCTQ2MEY0ODhGMUY5OTZGNzEwMENGNEI4NyAvKiBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBGNDg4RDFGOTk2RjZDMDBDRjRCODcg
LyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQk0NjBGNDg5MDFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDYwRjQ4OEUxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKIAkJNDYxQ0NDQTUyMzE0ODVBNzAwQjY1OUI5IC8qIFVJ
UmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2MzIzNjg1MjMxNDgzM0YwMEE0OEZBNyAvKiBVSVJlbW90ZU9iamVjdFJl
Z2lzdHJ5LmggKi87IH07CkBAIC0zNTM2LDYgKzM1MzcsNyBAQAogCQk0NDlEOTBEODIxRkQ2M0ZF
MDBGNjc3QzAgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEE0ODFDNjIxRjJEMjdCMDBGMkY5MTkg
LyogQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRFOTM2RkMyNDQ3QzI1NjAwOUZB
M0UzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NEVDM0VBODI0N0Y1QzA4MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEcmFnQWN0aW9uc0ludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MDMwMTFBMjM0QkUzMUQwMDlD
ODIxNyAvKiBXZWJCYWNrRm9yd2FyZENhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjAzMDExQjIzNEJFMzFFMDA5QzgyMTcgLyogV2ViQmFja0ZvcndhcmRDYWNo
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MEY0ODhEMUY5OTZGNkMwMENGNEI4
NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQy
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTc1MTEsNiArNzUxMyw3IEBACiAJCTM3
REZBNkZFMTgxMEJCMkQwMDFGNEE5RiAvKiBDb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDRFQzNFQTgyNDdGNUMwODAwNTk0ODlDIC8qIF9XS0Ry
YWdBY3Rpb25zSW50ZXJuYWwuaCAqLywKIAkJCQkzNzNEMTIyMTE4QTQ3MzAxMDA2NkQ5Q0MgLyog
X1dLRnJhbWVIYW5kbGUuaCAqLywKIAkJCQkzNzNEMTIyMDE4QTQ3MzAxMDA2NkQ5Q0MgLyogX1dL
RnJhbWVIYW5kbGUubW0gKi8sCiAJCQkJMzczRDEyMjYxOEE0NzNGNjAwNjZEOUNDIC8qIF9XS0Zy
YW1lSGFuZGxlSW50ZXJuYWwuaCAqLywKQEAgLTEwNTI3LDYgKzEwNTMwLDcgQEAKIAkJCQlBMUE0
RkU1QTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExQTRGRTYxMThERDU0QTQwMEI1RUE4QSAvKiBfV0tEb3dubG9hZERlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMUE0RkU1QzE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDRFQzNFQTkyNDdGNUMwOTAwNTk0ODlDIC8qIF9X
S0RyYWdBY3Rpb25zSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUE4NzNBMThCQkZF
MEYwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlB
ODczQzE4QkJGRjA3MDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbkludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUQwMUJDOTE5MDVEMzdFMDBDOUM0NUYgLyogX1dLRXJyb3JSZWNvdmVy
eUF0dGVtcHRpbmcuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KaW5kZXggNGJiZTgxN2Ex
NDcxZWNiY2VjNGI0MDliZDYyOGU4ZTY1M2Q2NmIxNS4uZmNjZDdhYWM0ZTY1NjYyZjYyMGJiMzk0
M2MzNDY5ZGY4MDhmYmNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCkBAIC02OCw2ICs2OCwxOSBAQCBXZWJE
cmFnQ2xpZW50OjpXZWJEcmFnQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAKICNpZiBQTEFURk9S
TShNQUMpCiAKK3N0YXRpYyBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24ga2l0KFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAg
ICBjYXNlIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6REhUTUw6CisgICAgICAgIHJl
dHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25ESFRNTDsKKyAgICBjYXNlIFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbjo6RWRpdDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5h
dGlvbkFjdGlvbkVkaXQ7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246
OkxvYWQ6CisgICAgICAgIHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkOworICAg
IH0KKyAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsKK30KKwogYm9vbCBX
ZWJEcmFnQ2xpZW50Ojp1c2VMZWdhY3lEcmFnQ2xpZW50KCkKIHsKICAgICByZXR1cm4gZmFsc2U7
CkBAIC04Niw3ICs5OSw3IEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqZ2V0VG9wSFRNTFZpZXcoRnJh
bWUqIGZyYW1lKQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24sIGNvbnN0IFdl
YkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0
ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25B
Y3Rpb246c3RhdGljX2Nhc3Q8V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPihhY3Rpb24pIGZvckRy
YWdnaW5nSW5mbzpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKV07CisgICAgW1ttX3dlYlZpZXcgX1VJ
RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uOmtpdChhY3Rpb24pIGZvckRyYWdnaW5nSW5mbzpkcmFnRGF0YS5wbGF0Zm9y
bURhdGEoKV07CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IDJmYTcxZWEyNWE5MTUxMWUwMjUzMTI0ZDZiMzY4NzM3NzJjZTg1NjguLjA0ZDMy
OTdjYTZmOWE4NjY4ZDJkOTdhNjkyODA2YTUyNDhiNmM5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTExMiw3ICsxMTIsNiBAQAogI2ltcG9ydCAi
V2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCiAjaW1wb3J0ICJXZWJUZXh0Q29tcGxldGlv
bkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlRleHRJdGVyYXRvci5oIgotI2ltcG9ydCAiV2Vi
VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQg
IldlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmgiCiAjaW1wb3J0ICJXZWJWaWV3R3JvdXAuaCIK
QEAgLTU3Nyw2ICs1NzYsMzYgQEAgLSAodm9pZCljbGVhclRhcmdldDsKICNlbmRpZgogQGVuZAog
CitzdGF0aWMgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gY29yZURy
YWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1h
c2spCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gcmVz
dWx0OworICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhUTUwp
CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpESFRN
TCk7CisgICAgaWYgKGFjdGlvbk1hc2sgJiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25FZGl0KQor
ICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6RWRpdCk7
CisgICAgaWYgKGFjdGlvbk1hc2sgJiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKQorICAg
ICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZCk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBjb3JlRHJhZ09w
ZXJhdGlvbk1hc2soTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3sKKyAgICBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uIHJlc3VsdCA9IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lOworICAgIGlm
IChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisg
ICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3Vs
dCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNE
cmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0ICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMp
OworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlKQorICAgICAgICBy
ZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09w
ZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+KHJlc3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBpZiAo
b3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1bHQgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uRGVsZXRlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBXZWJDb3JlOjpGaW5kT3B0
aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKQogewogICAgIFdlYkNvcmU6
OkZpbmRPcHRpb25zIGZpbmRPcHRpb25zOwpAQCAtMTkwOSw4ICsxOTM4LDggQEAgLSAoV2ViRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKWRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JTZXNzaW9uOihp
ZCA8VUlEcm9wU2Vzc2kKIAogLSAoV2ViQ29yZTo6RHJhZ0RhdGEpZHJhZ0RhdGFGb3JTZXNzaW9u
OihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRp
b24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3Bl
cmF0aW9uCiB7Ci0gICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+KG9wZXJhdGlvbik7Ci0gICAgYXV0byBkcmFnRGVzdGluYXRpb25N
YXNrID0gT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46OmZyb21SYXco
W3NlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246c2Vzc2lvbl0pOworICAg
IGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2sob3BlcmF0aW9u
KTsKKyAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzayhbc2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjpzZXNzaW9u
XSk7CiAgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVu
dFBvc2l0aW9uKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbFBvc2l0aW9uKSwgZHJh
Z09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIGRyYWdEZXN0aW5h
dGlvbk1hc2sgfTsKIH0KIApAQCAtNjcyNCw3ICs2NzUzLDcgQEAgLSAoV2ViQ29yZTo6RHJhZ0Fw
cGxpY2F0aW9uRmxhZ3MpYXBwbGljYXRpb25GbGFnczooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFn
Z2luZ0kKIAogLSAoT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4pYWN0
aW9uTWFza0ZvckRyYWdnaW5nSW5mbzooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8K
IHsKLSAgICByZXR1cm4gT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46
OmZyb21SYXcoW1tzZWxmIF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OnNlbGYgZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICBy
ZXR1cm4gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW1tzZWxmIF9VSURlbGVnYXRlRm9y
d2FyZGVyXSB3ZWJWaWV3OnNlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvckRyYWdnaW5n
SW5mbzpkcmFnZ2luZ0luZm9dKTsKIH0KIAogLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nRW50
ZXJlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KQEAgLTY3MzIsNyArNjc2MSw3
IEBAIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ0VudGVyZWQ6KGlkIDxOU0RyYWdnaW5nSW5m
bz4pZHJhZ2dpbmdJbmZvCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0lu
Zm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJD
b3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3
aW5kb3ddKSk7CiAKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8s
IGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJh
Z2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlv
bkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJh
Z2dpbmdJbmZvXSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZv
LCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dp
bmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsK
ICAgICByZXR1cm4gY29yZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFn
RGF0YSk7CiB9CiAKQEAgLTY3NDUsNyArNjc3NCw3IEBAIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFn
Z2luZ1VwZGF0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAgICAgV2ViQ29y
ZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAg
IFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJ
bmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7CiAKLSAgICBXZWJDb3JlOjpE
cmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxm
IGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgV2ViQ29yZTo6
RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdP
cGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSks
IFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0Zv
ckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKICAgICByZXR1cm4gcGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CiB9CiAKQEAgLTY3NTcsNyArNjc4Niw3IEBA
IC0gKHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZv
CiAKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xv
Y2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBv
aW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAg
ICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFs
LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5n
SW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xp
ZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5m
b10pOwogICAgIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0V4aXRlZChkcmFnRGF0YSk7CiB9
CiAKQEAgLTY3NzAsNyArNjc5OSw3IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlk
IDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6Oklu
dFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
TG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgYXV0byogZHJhZ0RhdGEgPSBuZXcgV2Vi
Q29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKKyAgICBh
dXRvKiBkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVu
dCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9d
KTsKIAogICAgIE5TQXJyYXkqIHR5cGVzID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2Fy
ZC50eXBlczsKICAgICBpZiAoIVt0eXBlcyBjb250YWluc09iamVjdDpXZWJBcmNoaXZlUGJvYXJk
VHlwZV0gJiYgW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlz
ZVBhc3RlYm9hcmRUeXBlKCldKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA1NzY2MjlhYmE2OWE2Y2EwYmY1NmE1YjllNjlh
MzMxOTEyNzM4MmM4Li4yNGMzZWUwNDM2NzMxNmM0M2UyMmQ4OTFhNTJlNjI3YjQ5MzVlZDc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNiw2ICszNiw3
IEBACiAjaWZkZWYgX19jcGx1c3BsdXMKIAogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRmluZE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5oPgpAQCAtODksNyArOTAsOSBAQCBj
bGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIAogI2lmZGVmIF9fY3BsdXNwbHVz
CiAKLVdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlv
bnMpOworV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soTlNEcmFn
T3BlcmF0aW9uKTsKKworV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9w
dGlvbnMpOwogCiBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBjb3JlTGF5b3V0
TWlsZXN0b25lcyhXZWJMYXlvdXRNaWxlc3RvbmVzKTsKIFdlYkxheW91dE1pbGVzdG9uZXMga2l0
TGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuY3BwCmluZGV4IGQ0M2MyZTQ0ZWM4MDBjZDU1MzlhMmQwMjBjOWRmYTRhNTM3ZDUw
MWIuLjY5ZDU4OGFiOGQ4ZjZhMDZmMmFjMWVkMzE3ZjM4ZjRmYmU5NmJlMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNjAsNiArNjAsMTkgQEAgc3RhdGljIERXT1JEIGRyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFza1RvRHJhZ0N1cnNvcnMoRHJhZ09wZXJhdGlvbiBvcCkKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCitzdGF0aWMgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGtpdChEcmFnRGVzdGluYXRp
b25BY3Rpb24gYWN0aW9uKQoreworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgY2FzZSBEcmFn
RGVzdGluYXRpb25BY3Rpb246OkRIVE1MOgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uREhUTUw7CisgICAgY2FzZSBEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQ6Cisg
ICAgICAgIHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25FZGl0OworICAgIGNhc2UgRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkOgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTG9hZDsKKyAgICB9CisgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlv
bk5vbmU7Cit9CisKIFdlYkRyYWdDbGllbnQ6OldlYkRyYWdDbGllbnQoV2ViVmlldyogd2ViVmll
dykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KSAKIHsKQEAgLTcyLDcgKzg1LDcgQEAgdm9pZCBX
ZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGlu
YXRpb25BY3Rpb24gYWN0aW8KICAgICAvL3NvIHdlIGp1c3QgY2FsbCB0aGUgZGVsZWdhdGUsIGFu
ZCBkb24ndCB3b3JyeSBhYm91dCB3aGV0aGVyIGl0J3MgaW1wbGVtZW50ZWQKICAgICBDT01QdHI8
SVdlYlVJRGVsZWdhdGU+IGRlbGVnYXRlUmVmID0gMDsKICAgICBpZiAoU1VDQ0VFREVEKG1fd2Vi
Vmlldy0+dWlEZWxlZ2F0ZSgmZGVsZWdhdGVSZWYpKSkKLSAgICAgICAgZGVsZWdhdGVSZWYtPndp
bGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1fd2ViVmlldywgKFdlYkRyYWdEZXN0aW5h
dGlvbkFjdGlvbilhY3Rpb24sIGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICAgICAgZGVs
ZWdhdGVSZWYtPndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1fd2ViVmlldywga2l0
KGFjdGlvbiksIGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KIAogRHJhZ1NvdXJjZUFjdGlv
biBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBv
aW50JiB3aW5kb3dQb2ludCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400631</attachid>
            <date>2020-05-29 16:25:15 -0700</date>
            <delta_ts>2020-05-29 18:05:17 -0700</delta_ts>
            <desc>Patch v6</desc>
            <filename>bug-212507-20200529162709.patch</filename>
            <type>text/plain</type>
            <size>32895</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYzYjlmZWE4NzNkN2Q1
OTU4MmYyMTRhNzUyY2YxZDVhZWNlYmYyMC4uMTUxOTcwYmVlNGQwZDcyYThmOTM3NjFkNWRkZjBj
NjljMmVkYjcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI5ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3Rz
IHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7V2ViLFdLfURyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2svTlNEcmFnT3BlcmF0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMTI1MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwYWdlL0RyYWdBY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnRGVz
dGluYXRpb25BY3Rpb24pOiBBZGQuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb25BbnkpOiBEZWxldGUuCisgICAgICAgIC0gUmVuYW1lIERyYWdEZXN0aW5hdGlvbkFjdGlv
bkFueSgpIHRvCisgICAgICAgICAgYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgdG8gbWF0Y2gg
V2ViS2l0IHN0eWxlLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIC0g
VXBkYXRlIHRvIHVzZSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKS4KKwogMjAyMC0wNS0yOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoaW5ncyBm
cm9tIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIHRoYXQgYXJlIGNvdmVyZWQgYnkgUGxhdGZvcm1F
bmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM5NzNhODA5ZDZjOWM1YmE1ODg2MGExNWUyZTRhMmVj
MDU2OGZiMzUuLjQ0NzU3Y2Q2ODI3MTA4ZTU4OWE2NTE2YjAxMTMzZjZiNWMzNzE3MWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDUtMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVu
IFdlYkNvcmUgdHlwZXMgYW5kIHtXZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0Ry
YWdPcGVyYXRpb24KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkv
Q29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oOiBBZGQuCisgICAgICAgIChXZWJLaXQ6OmNv
cmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKToKKyAgICAgICAgKFdlYktpdDo6Y29yZURyYWdP
cGVyYXRpb25NYXNrKToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbnMgdG8gYXZv
aWQgY2FzdGluZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmRyYWdnaW5nRXhpdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnRGF0
YUZvckRyb3BTZXNzaW9uOmRyYWdEZXN0aW5hdGlvbkFjdGlvbjpdKToKKyAgICAgICAgLSBNYWtl
IHVzZSBvZiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaygpIGFuZAorICAgICAgICAgIGNv
cmVEcmFnT3BlcmF0aW9uTWFzaygpLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAtIEFkZCBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggdG8gcHJv
amVjdC4KKwogMjAyMC0wNS0yOSAgSmFuLU1pY2hhZWwgQnJ1bW1lciAgPGphbi5icnVtbWVyQHRh
Ym9zLm9yZz4KIAogICAgICAgICBbR1RLXVtXUEVdIEFQSSBmb3IgV2ViVmlldyBhdWRpbyBtdXRl
IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAwNzkzYTQyZmQ3NWMwMjQ3
ZjMzNThlN2ZjN2QxNDY2YWIxMTFkMmZhLi5hNGE3MWMwZTdmMjlmOTAzYWRmYWEzZjRkZTEzNTMz
NjUwZWY2NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAK
KzIwMjAtMDUtMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHtX
ZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0RyYWdPcGVyYXRpb24KKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06
CisgICAgICAgIChraXQpOgorICAgICAgICAtIEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9uIHRvIGF2
b2lkIGNhc3RpbmcuCisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0
aW5hdGlvbkFjdGlvbik6CisgICAgICAgIC0gTWFrZSB1c2Ugb2Yga2l0KCkgY29udmVyc2lvbiBm
dW5jdGlvbi4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChjb3JlRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk6CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2sp
OgorICAgICAgICAtIEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9ucyB0byBhdm9pZCBjYXN0aW5nLgor
ICAgICAgICAoLVtXZWJWaWV3IGRyYWdEYXRhRm9yU2Vzc2lvbjpjbGllbnQ6Z2xvYmFsOm9wZXJh
dGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOl0p
OgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nRW50ZXJlZDpdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBkcmFnZ2luZ1VwZGF0ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFeGl0
ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgcGVyZm9ybURyYWdPcGVyYXRpb246XSk6CisgICAg
ICAgIC0gTWFrZSB1c2Ugb2YgY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soKSBhbmQKKyAg
ICAgICAgICBjb3JlRHJhZ09wZXJhdGlvbk1hc2soKSBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAoY29yZURyYWdPcGVy
YXRpb25NYXNrKTogQWRkIGRlY2xhcmF0aW9uLgorICAgICAgICAoY29yZU9wdGlvbnMpOiBSZW1v
dmUgcmVkdW5kYW50IHBhcmFtZXRlciBuYW1lLgorCiAyMDIwLTA1LTI5ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhpbmdzIGZyb20gRmVhdHVyZURl
ZmluZXMueGNjb25maWcgdGhhdCBhcmUgY292ZXJlZCBieSBQbGF0Zm9ybUVuYWJsZUNvY29hLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAzM2RlYzhkMjdkNjVjZDBkZjlhYTE0YmI1
YTkzMjc3Yzg5Y2UzY2UxLi42MGFjZWE1YTBhNGM5MGEyNzBhNWM3MWMzYWVlZmU4YTc1MTdmMWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDUt
MjkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1
c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHtXZWIsV0t9RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0RyYWdPcGVyYXRpb24KKyAgICAgICAgPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAg
ICAoa2l0KToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbiB0byBhdm9pZCBjYXN0
aW5nLgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25B
Y3Rpb24pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGtpdCgpIGNvbnZlcnNpb24gZnVuY3Rpb24u
CisKIDIwMjAtMDUtMTkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+
CiAKICAgICAgICAgW1dpbkNhaXJvXSBBU1NFUlQobV9lZ2xEaXNwbGF5ID09IEVHTF9OT19ESVNQ
TEFZKSBmYWlscyBpbiB+UGxhdGZvcm1EaXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMu
aAppbmRleCBjODE3NzQwMmY5N2M1MDgzYjc1ODA4MTAwZTNkYTc4YzIwOGZmY2I0Li43Nzk5MDEx
ZmE5OGI4ZWJhNGQyZDI3MmZkNjI1ZGZmN2I4MGNjMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0
aW9ucy5oCkBAIC0zMiwxNCArMzIsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBX
ZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBX
ZWJEcmFnRGVzdGluYXRpb25BY3Rpb24gYW5kIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLgorLy8g
U2VlIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQgV0tEcmFnRGVzdGluYXRpb25BY3Rpb24u
CiBlbnVtIGNsYXNzIERyYWdEZXN0aW5hdGlvbkFjdGlvbiA6IHVpbnQ4X3QgewogICAgIERIVE1M
ID0gMSwKICAgICBFZGl0ICA9IDIsCiAgICAgTG9hZCAgPSA0CiB9OwogCi1pbmxpbmUgY29uc3Rl
eHByIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IERyYWdEZXN0aW5hdGlvbkFjdGlv
bkFueSgpCitjb25zdGV4cHIgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gYW55RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKCkKIHsKICAgICByZXR1cm4gT3B0aW9uU2V0PERyYWdEZXN0aW5h
dGlvbkFjdGlvbj4geyBEcmFnRGVzdGluYXRpb25BY3Rpb246OkRIVE1MLCBEcmFnRGVzdGluYXRp
b25BY3Rpb246OkVkaXQsIERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZCB9OwogfQpAQCAtNjAs
NyArNjAsNyBAQCB0eXBlZGVmIGVudW0gewogICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAg
ICAgPSBVSU5UX01BWAogfSBEcmFnU291cmNlQWN0aW9uOwogCi0vLyBNYXRjaGVzIE5TRHJhZ09w
ZXJhdGlvbi4KKy8vIFNlZSBOU0RyYWdPcGVyYXRpb24uCiB0eXBlZGVmIGVudW0gewogICAgIERy
YWdPcGVyYXRpb25Ob25lICAgID0gMCwKICAgICBEcmFnT3BlcmF0aW9uQ29weSAgICA9IDEsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCA2NTEwMTg3MGMxOTlhYWFiZGYxOTBkN2Q2
YjQ1ZTY5NDM4ZDlkYmIyLi40MjFhMjk5NDNiM2QxMGQ0ODVkYTVjZTllZmQ1M2UzZmFmYmMwZjBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKQEAgLTc1LDggKzc1LDggQEAgcHVibGlj
OgogICAgIGVudW0gY2xhc3MgRHJhZ2dpbmdQdXJwb3NlIHsgRm9yRWRpdGluZywgRm9yRmlsZVVw
bG9hZCwgRm9yQ29sb3JDb250cm9sIH07CiAKICAgICAvLyBjbGllbnRQb3NpdGlvbiBpcyB0YWtl
biB0byBiZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRyYWcgZXZlbnQgd2l0aGluIHRoZSB0YXJnZXQg
d2luZG93LCB3aXRoICgwLDApIGF0IHRoZSB0b3AgbGVmdAotICAgIFdFQkNPUkVfRVhQT1JUIERy
YWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9u
RmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBhY3Rpb25NYXNrID0gRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55KCkpOwotICAgIFdFQkNP
UkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
RHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25l
LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBhY3Rpb25NYXNrID0gRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uQW55KCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRh
UmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBw
bGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdE
ZXN0aW5hdGlvbkFjdGlvbigpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBT
dHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNh
dGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlv
bkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CiAgICAgLy8gVGhpcyBjb25z
dHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEK
ICAgICAvLyBpcyBpbml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRoZSBjb25z
dHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIzYWZiZjZhYzNhNTk5ZDQwNTc1ZTg4MzNjMzRiMTdiMzJhNzNjZWEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRl
cm5hbC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0Ry
YWdBY3Rpb25zLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uPiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhXS0RyYWdEZXN0
aW5hdGlvbkFjdGlvbiBhY3Rpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0
aW5hdGlvbkFjdGlvbj4gcmVzdWx0OworICAgIGlmIChhY3Rpb24gJiBXS0RyYWdEZXN0aW5hdGlv
bkFjdGlvbkRIVE1MKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlv
bkFjdGlvbjo6REhUTUwpOworICAgIGlmIChhY3Rpb24gJiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlv
bkVkaXQpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
OjpFZGl0KTsKKyAgICBpZiAoYWN0aW9uICYgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKQor
ICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmIFVTRShBUFBLSVQpCitpbmxpbmUgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soTlNEcmFnT3BlcmF0aW9uIG9w
ZXJhdGlvbikKK3sKKyAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIHJlc3VsdCA9IFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25D
b3B5KQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlv
biAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5r
KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAg
cmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0ICYgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdP
cGVyYXRpb25Qcml2YXRlKQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7Cisg
ICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCAmIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVs
ZXRlKQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorI2VuZGlmIC8vIFVTRShBUFBLSVQpCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyNDIx
YWI4MjNjNjEzNmU2YzE3NjZlNmFmZDc0NmM4Y2U3M2U4NzljLi43ZGJhNGVmZGRkYTQzMWMxMDMw
MDkzMDZmNTI1ZTI4ZTBlMDE2YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQpAQCAtNzYsNiArNzYsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5
LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5
LmgiCisjaW1wb3J0ICJfV0tEcmFnQWN0aW9uc0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tSZW1v
dGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tUaHVtYm5haWxWaWV3SW50
ZXJuYWwuaCIKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KQEAgLTM5NDUsOCArMzk0Niw5IEBA
IE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRlcmVkKGlkIDxOU0RyYWdn
aW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChb
bV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmll
dzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9p
bnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAg
IGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IE9wdGlvblNldDxXZWJDb3JlOjpEcmFn
RGVzdGluYXRpb25BY3Rpb24+Ojpmcm9tUmF3KFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25B
Y3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0Rh
dGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwg
ZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CisgICAgYXV0byBkcmFn
RGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW21f
dmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0lu
Zm9dKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb24gPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJh
Z2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CisgICAgV2ViQ29yZTo6RHJh
Z0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlv
biwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFn
Z2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKTsKIAogICAgIG1fcGFnZS0+cmVz
ZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAgICAgbV9wYWdlLT5kcmFnRW50ZXJlZChkcmFn
RGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsKQEAgLTM5NTgsOCAr
Mzk2MCw5IEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKGlk
IDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50
IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlv
biBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6
Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93
XSkpOwotICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+Ojpmcm9tUmF3KFttX3ZpZXcgX3dlYl9kcmFnRGVz
dGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgV2ViQ29y
ZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVs
ZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CisgICAg
YXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2soW21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpk
cmFnZ2luZ0luZm9dKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb24gPSBjb3JlRHJhZ09wZXJhdGlv
bk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CisgICAgV2Vi
Q29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJh
Z09wZXJhdGlvbiwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNl
ZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKTsKICAgICBtX3Bh
Z2UtPmRyYWdVcGRhdGVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJk
Lm5hbWUpOwogCiAgICAgTlNJbnRlZ2VyIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX3Bh
Z2UtPmN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCgpOwpAQCAtMzk4Myw3ICsz
OTg2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQoaWQgPE5TRHJhZ2dpbmdJ
bmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3Zp
ZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5p
bF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChk
cmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2Vi
Q29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRv
cmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0Rh
dGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRy
YWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdz
Rm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOwogICAgIG1f
cGFnZS0+ZHJhZ0V4aXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2Fy
ZC5uYW1lKTsKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAg
IGRyYWdnaW5nSW5mby5udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9pbml0aWFsTnVtYmVy
T2ZWYWxpZEl0ZW1zRm9yRHJvcDsKQEAgLTM5OTksNyArNDAwMiw3IEBAIGJvb2wgV2ViVmlld0lt
cGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZv
KQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpk
cmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdn
aW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhICpk
cmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xv
YmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3
LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0
YSAqZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQs
IGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3Jl
bGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOwogCiAgICAgTlNBcnJheSAqdHlwZXMgPSBkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLnR5cGVzOwogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYTM0NGNmNWZi
ZDYwYTU0Njc1ZmZkMjgyZmNlMDA2YWJjYzY5ODhkMC4uYmQxYmNkMjJhNzY0YTE2MDljZDYzNmI2
NTM0MGVlNzhhZTI4ZGFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC04Niw2ICs4Niw3IEBACiAjaW1w
b3J0ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW1wb3J0ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCisjaW1wb3J0ICJf
V0tEcmFnQWN0aW9uc0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFbGVtZW50QWN0aW9uLmgiCiAj
aW1wb3J0ICJfV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZvY3VzZWRF
bGVtZW50SW5mby5oIgpAQCAtNzMxOSw5ICs3MzIwLDggQEAgLSAoV2ViQ29yZTo6RHJhZ0RhdGEp
ZHJhZ0RhdGFGb3JEcm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gZHJhZ0Rl
c3QKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBbc2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFs
UG9pbnRzRm9yRHJvcFNlc3Npb246c2Vzc2lvbiBvdXRDbGllbnRQb2ludDomY2xpZW50IG91dEds
b2JhbFBvaW50OiZnbG9iYWxdOwogCi0gICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBkcmFnT3Bl
cmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHNlc3Npb24u
YWxsb3dzTW92ZU9wZXJhdGlvbiA/IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25FdmVyeSA6IChXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uRXZlcnkgJiB+V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpKTsK
LSAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBPcHRpb25TZXQ8V2ViQ29yZTo6
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhkcmFnRGVzdGluYXRpb25BY3Rpb24pOwot
ICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBX
ZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdlYkNv
cmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgfTsKKyAg
ICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVy
YXRpb25NYXNrKHNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbiA/IFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25FdmVyeSA6IChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZlcnkgJiB+V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbk1vdmUpKTsKKyAgICByZXR1cm4geyBzZXNzaW9uLCBXZWJDb3JlOjpyb3VuZGVk
SW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIGRyYWdP
cGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25Ob25lLCBjb3JlRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFzayhkcmFnRGVzdGluYXRpb25BY3Rpb24pIH07CiB9CiAKIC0gKHZvaWQp
Y2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRlZTM0ZDIwZmFlNTE0NWVmMjgwZTY1NzY0
NzRlZWIwMjJmOTk2NjQuLmUyNmI0MDNmODZkODYwNzBhNzdiN2VhZTRmMzFmNGNlYzYxOGY1MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtOTM3LDYgKzkzNyw3IEBACiAJCTQ0ODI3MzQ3MjQ1MjhGNjAwMEE5NTQ5MyAvKiBDb2NvYUlt
YWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDgy
NzM0NjI0NTI4RjYwMDBBOTU0OTMgLyogQ29jb2FJbWFnZS5oICovOyB9OwogCQk0NDlEOTBEQTIx
RkRDMzBCMDBGNjc3QzAgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5RDkwRDgyMUZENjNGRTAw
RjY3N0MwIC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSAqLzsgfTsKIAkJNDRFOTM2
RkQyNDQ3QzJEODAwOUZBM0UzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sSUQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0RTkzNkZDMjQ0N0MyNTYwMDlG
QTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmggKi87IH07CisJCTQ0RUMzRUE5MjQ3RjVD
MDkwMDU5NDg5QyAvKiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEVDM0VBODI0N0Y1QzA4MDA1OTQ4OUMgLyog
X1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oICovOyB9OwogCQk0NjBGNDg4RjFGOTk2RjcxMDBDRjRC
ODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYwRjQ4OEQxRjk5
NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKIAkJNDYwRjQ4OTAxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CiAJCTQ2MUNDQ0E1MjMxNDg1QTcw
MEI2NTlCOSAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4NTIzMTQ4MzNGMDBBNDhGQTcgLyogVUlS
ZW1vdGVPYmplY3RSZWdpc3RyeS5oICovOyB9OwpAQCAtMzUzNiw2ICszNTM3LDcgQEAKIAkJNDQ5
RDkwRDgyMUZENjNGRTAwRjY3N0MwIC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsQXV0aGVudGljYXRp
b25Tb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBNDgxQzYyMUYy
RDI3QjAwRjJGOTE5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFu
dHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlv
blhQQ0NvbnN0YW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0RTkzNkZD
MjQ0N0MyNTYwMDlGQTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeUN1c3RvbVByb3RvY29sSUQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRFQzNFQTgyNDdGNUMwODAwNTk0ODlDIC8qIF9XS0RyYWdB
Y3Rpb25zSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRHJh
Z0FjdGlvbnNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjAzMDEx
QTIzNEJFMzFEMDA5QzgyMTcgLyogV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwMzAxMUIyMzRCRTMxRTAwOUM4MjE3IC8qIFdlYkJh
Y2tGb3J3YXJkQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFj
a0ZvcndhcmRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFG
OTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC03NTExLDYgKzc1
MTMsNyBAQAogCQkzN0RGQTZGRTE4MTBCQjJEMDAxRjRBOUYgLyogQ29jb2EgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ0RUMzRUE4MjQ3RjVDMDgwMDU5
NDg5QyAvKiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggKi8sCiAJCQkJMzczRDEyMjExOEE0NzMw
MTAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlLmggKi8sCiAJCQkJMzczRDEyMjAxOEE0NzMwMTAw
NjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlLm1tICovLAogCQkJCTM3M0QxMjI2MThBNDczRjYwMDY2
RDlDQyAvKiBfV0tGcmFtZUhhbmRsZUludGVybmFsLmggKi8sCkBAIC0xMDUyNyw2ICsxMDUzMCw3
IEBACiAJCQkJQTFBNEZFNUExOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMUE0RkU2MTE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxl
Z2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBNEZFNUMxOERDRTlGQTAwQjVFQThBIC8qIF9X
S0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ0RUMzRUE5MjQ3RjVDMDkw
MDU5NDg5QyAvKiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
NzlBODczQTE4QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc5QTg3M0MxOEJCRkYwNzAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb25JbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEMDFCQzkxOTA1RDM3RTAwQzlDNDVGIC8qIF9X
S0Vycm9yUmVjb3ZlcnlBdHRlbXB0aW5nLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCmlu
ZGV4IDRiYmU4MTdhMTQ3MWVjYmNlYzRiNDA5YmQ2MjhlOGU2NTNkNjZiMTUuLjNkMWEwYTM1ZmYy
NTIxZDE5NGRlZTU2MWFiODkxNzRkZmUxZWY0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQpAQCAtNjgsNiAr
NjgsMjAgQEAgV2ViRHJhZ0NsaWVudDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQog
CiAjaWYgUExBVEZPUk0oTUFDKQogCitzdGF0aWMgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGtp
dChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uKQoreworICAgIHN3aXRjaCAo
YWN0aW9uKSB7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkRIVE1M
OgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhUTUw7CisgICAgY2Fz
ZSBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQ6CisgICAgICAgIHJldHVybiBX
ZWJEcmFnRGVzdGluYXRpb25BY3Rpb25FZGl0OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uOjpMb2FkOgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTG9hZDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdl
YkRyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7Cit9CisKIGJvb2wgV2ViRHJhZ0NsaWVudDo6dXNl
TGVnYWN5RHJhZ0NsaWVudCgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODYsNyArMTAwLDcg
QEAgc3RhdGljIFdlYkhUTUxWaWV3ICpnZXRUb3BIVE1MVmlldyhGcmFtZSogZnJhbWUpCiAKIHZv
aWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29y
ZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEm
IGRyYWdEYXRhKQogewotICAgIFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJW
aWV3Om1fd2ViVmlldyB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbjpzdGF0aWNfY2Fz
dDxXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24+KGFjdGlvbikgZm9yRHJhZ2dpbmdJbmZvOmRyYWdE
YXRhLnBsYXRmb3JtRGF0YSgpXTsKKyAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRl
cl0gd2ViVmlldzptX3dlYlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb246a2l0
KGFjdGlvbikgZm9yRHJhZ2dpbmdJbmZvOmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpXTsKIH0KIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMmZhNzFl
YTI1YTkxNTExZTAyNTMxMjRkNmIzNjg3Mzc3MmNlODU2OC4uMjIyZWZmYjkzNGVjOGRmZGE4NDA4
NDZjZjM4OTdjZWVlODcwOTgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtMTEyLDcgKzExMiw2IEBACiAjaW1wb3J0ICJXZWJTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIuaCIKICNpbXBvcnQgIldlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oIgog
I2ltcG9ydCAiV2ViVGV4dEl0ZXJhdG9yLmgiCi0jaW1wb3J0ICJXZWJVSURlbGVnYXRlLmgiCiAj
aW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViVmFsaWRhdGlvbk1l
c3NhZ2VDbGllbnQuaCIKICNpbXBvcnQgIldlYlZpZXdHcm91cC5oIgpAQCAtNTc3LDYgKzU3Niw0
MCBAQCAtICh2b2lkKWNsZWFyVGFyZ2V0OwogI2VuZGlmCiBAZW5kCiAKKyNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQorc3RhdGljIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rp
b24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlv
biBhY3Rpb25NYXNrKQoreworICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb24+IHJlc3VsdDsKKyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdEZXN0aW5hdGlvbkFj
dGlvbkRIVE1MKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbjo6REhUTUwpOworICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uRWRpdCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rp
b246OkVkaXQpOworICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TG9hZCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246
OkxvYWQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBVU0UoQVBQS0lUKQorV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soTlNEcmFnT3BlcmF0aW9uIG9w
ZXJhdGlvbikKK3sKKyAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIHJlc3VsdCA9IFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25D
b3B5KQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlv
biAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5r
KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAg
cmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0ICYgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdP
cGVyYXRpb25Qcml2YXRlKQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7Cisg
ICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCAmIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVs
ZXRlKQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PihyZXN1bHQgJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorI2VuZGlmIC8vIFVTRShBUFBLSVQpCisjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQ
UE9SVCkKKwogV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMg
b3B0aW9ucykKIHsKICAgICBXZWJDb3JlOjpGaW5kT3B0aW9ucyBmaW5kT3B0aW9uczsKQEAgLTE5
MDksOCArMTk0Miw4IEBAIC0gKFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbilkcmFnRGVzdGluYXRp
b25BY3Rpb25NYXNrRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3NpCiAKIC0gKFdlYkNvcmU6OkRy
YWdEYXRhKWRyYWdEYXRhRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gY2xp
ZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQb3NpdGlv
biBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgogewotICAgIGF1dG8gZHJhZ09wZXJhdGlv
bk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihvcGVyYXRpb24pOwot
ICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uTWFzayA9IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVz
dGluYXRpb25BY3Rpb24+Ojpmcm9tUmF3KFtzZWxmIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tG
b3JTZXNzaW9uOnNlc3Npb25dKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURy
YWdPcGVyYXRpb25NYXNrKG9wZXJhdGlvbik7CisgICAgYXV0byBkcmFnRGVzdGluYXRpb25NYXNr
ID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW3NlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFza0ZvclNlc3Npb246c2Vzc2lvbl0pOwogICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNv
cmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnRQb3NpdGlvbiksIFdlYkNvcmU6OnJvdW5kZWRJbnRQ
b2ludChnbG9iYWxQb3NpdGlvbiksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBw
bGljYXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25NYXNrIH07CiB9CiAKQEAgLTY3MjQsNyArNjc1
Nyw3IEBAIC0gKFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbkZsYWdzKWFwcGxpY2F0aW9uRmxhZ3M6
KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJCiAKIC0gKE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb24+KWFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86KGlkIDxOU0Ry
YWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7Ci0gICAgcmV0dXJuIE9wdGlvblNldDxXZWJDb3Jl
OjpEcmFnRGVzdGluYXRpb25BY3Rpb24+Ojpmcm9tUmF3KFtbc2VsZiBfVUlEZWxlZ2F0ZUZvcndh
cmRlcl0gd2ViVmlldzpzZWxmIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0lu
Zm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgcmV0dXJuIGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrKFtbc2VsZiBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzpzZWxmIGRyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CiB9CiAKIC0gKE5T
RHJhZ09wZXJhdGlvbilkcmFnZ2luZ0VudGVyZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dp
bmdJbmZvCkBAIC02NzMyLDcgKzY3NjUsNyBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdF
bnRlcmVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAgIFdlYkNvcmU6Oklu
dFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJD
b3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBk
cmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0gICAgV2ViQ29yZTo6RHJhZ0Rh
dGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rp
b25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdE
YXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0
aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2Vs
ZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFn
Z2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CiAgICAgcmV0dXJuIGNvcmUoc2VsZiktPmRyYWdDb250
cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOwogfQogCkBAIC02NzQ1LDcgKzY3NzgsNyBA
QCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdVcGRhdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+
KWRyYWdnaW5nSW5mbwogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZv
IGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29y
ZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2lu
ZG93XSkpOwogCi0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBj
bGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdn
aW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25G
bGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdn
aW5nSW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywg
Y2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5n
SW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CiAg
ICAgcmV0dXJuIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOwog
fQogCkBAIC02NzU3LDcgKzY3OTAsNyBAQCAtICh2b2lkKWRyYWdnaW5nRXhpdGVkOihpZCA8TlNE
cmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50
KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50
IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRp
b25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJh
Z2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYg
YXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBk
cmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1h
c2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBw
bGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKICAgICBwYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwogfQogCkBAIC02NzcwLDcgKzY4MDMsNyBAQCAtIChCT09M
KXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwog
ewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9j
YXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9p
bnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwotICAg
IGF1dG8qIGRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xp
ZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2lu
Z0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxh
Z3M6ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byogZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJh
Z0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNr
KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxp
Y2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CiAKICAgICBOU0FycmF5KiB0eXBlcyA9IGRyYWdn
aW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQudHlwZXM7CiAgICAgaWYgKCFbdHlwZXMgY29udGFp
bnNPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdICYmIFt0eXBlcyBjb250YWluc09iamVjdDpX
ZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggNTc2
NjI5YWJhNjlhNmNhMGJmNTZhNWI5ZTY5YTMzMTkxMjczODJjOC4uMzNiODUxZTM2NzE2YjJjYzUw
YTBmY2VkZjVkNWM3ZWM4ZTEyYzZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtMzYsNiArMzYsNyBAQAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKICNpbXBv
cnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0Ry
YWdBY3Rpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50RW51
bXMuaD4KQEAgLTg5LDcgKzkwLDExIEBAIGNsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9s
bGVyOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIAotV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9w
dGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0aW9ucyk7CisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkg
JiYgVVNFKEFQUEtJVCkKK1dlYkNvcmU6OkRyYWdPcGVyYXRpb24gY29yZURyYWdPcGVyYXRpb25N
YXNrKE5TRHJhZ09wZXJhdGlvbik7CisjZW5kaWYKKworV2ViQ29yZTo6RmluZE9wdGlvbnMgY29y
ZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMpOwogCiBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWls
ZXN0b25lPiBjb3JlTGF5b3V0TWlsZXN0b25lcyhXZWJMYXlvdXRNaWxlc3RvbmVzKTsKIFdlYkxh
eW91dE1pbGVzdG9uZXMga2l0TGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5
b3V0TWlsZXN0b25lPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCmluZGV4IGQ0M2MyZTQ0ZWM4MDBjZDU1Mzlh
MmQwMjBjOWRmYTRhNTM3ZDUwMWIuLjMxMzI2MDM2YThhNDEyNTc3ZWMxY2ExOTE3ZGMzZmY4NjIw
N2UyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsNiArNjAsMjAgQEAgc3RhdGljIERXT1JEIGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMoRHJhZ09wZXJhdGlvbiBvcCkK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
IGtpdChEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uKQoreworICAgIHN3aXRjaCAoYWN0aW9u
KSB7CisgICAgY2FzZSBEcmFnRGVzdGluYXRpb25BY3Rpb246OkRIVE1MOgorICAgICAgICByZXR1
cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhUTUw7CisgICAgY2FzZSBEcmFnRGVzdGluYXRp
b25BY3Rpb246OkVkaXQ6CisgICAgICAgIHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25F
ZGl0OworICAgIGNhc2UgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkOgorICAgICAgICByZXR1
cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7Cit9CisK
IFdlYkRyYWdDbGllbnQ6OldlYkRyYWdDbGllbnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1f
d2ViVmlldyh3ZWJWaWV3KSAKIHsKQEAgLTcyLDcgKzg2LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50
Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24g
YWN0aW8KICAgICAvL3NvIHdlIGp1c3QgY2FsbCB0aGUgZGVsZWdhdGUsIGFuZCBkb24ndCB3b3Jy
eSBhYm91dCB3aGV0aGVyIGl0J3MgaW1wbGVtZW50ZWQKICAgICBDT01QdHI8SVdlYlVJRGVsZWdh
dGU+IGRlbGVnYXRlUmVmID0gMDsKICAgICBpZiAoU1VDQ0VFREVEKG1fd2ViVmlldy0+dWlEZWxl
Z2F0ZSgmZGVsZWdhdGVSZWYpKSkKLSAgICAgICAgZGVsZWdhdGVSZWYtPndpbGxQZXJmb3JtRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKG1fd2ViVmlldywgKFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbilh
Y3Rpb24sIGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKKyAgICAgICAgZGVsZWdhdGVSZWYtPndp
bGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1fd2ViVmlldywga2l0KGFjdGlvbiksIGRy
YWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KIAogRHJhZ1NvdXJjZUFjdGlvbiBXZWJEcmFnQ2xp
ZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQ
b2ludCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400642</attachid>
            <date>2020-05-29 18:05:19 -0700</date>
            <delta_ts>2020-06-01 14:57:24 -0700</delta_ts>
            <desc>Patch v7</desc>
            <filename>bug-212507-20200529180713.patch</filename>
            <type>text/plain</type>
            <size>34478</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYzYjlmZWE4NzNkN2Q1
OTU4MmYyMTRhNzUyY2YxZDVhZWNlYmYyMC4uMTUxOTcwYmVlNGQwZDcyYThmOTM3NjFkNWRkZjBj
NjljMmVkYjcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI5ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3Rz
IHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7V2ViLFdLfURyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2svTlNEcmFnT3BlcmF0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMTI1MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwYWdlL0RyYWdBY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnRGVz
dGluYXRpb25BY3Rpb24pOiBBZGQuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb25BbnkpOiBEZWxldGUuCisgICAgICAgIC0gUmVuYW1lIERyYWdEZXN0aW5hdGlvbkFjdGlv
bkFueSgpIHRvCisgICAgICAgICAgYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgdG8gbWF0Y2gg
V2ViS2l0IHN0eWxlLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIC0g
VXBkYXRlIHRvIHVzZSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKS4KKwogMjAyMC0wNS0yOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoaW5ncyBm
cm9tIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIHRoYXQgYXJlIGNvdmVyZWQgYnkgUGxhdGZvcm1F
bmFibGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM5NzNhODA5ZDZjOWM1YmE1ODg2MGExNWUyZTRhMmVj
MDU2OGZiMzUuLjQ0NzU3Y2Q2ODI3MTA4ZTU4OWE2NTE2YjAxMTMzZjZiNWMzNzE3MWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDUtMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVu
IFdlYkNvcmUgdHlwZXMgYW5kIHtXZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0Ry
YWdPcGVyYXRpb24KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkv
Q29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oOiBBZGQuCisgICAgICAgIChXZWJLaXQ6OmNv
cmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKToKKyAgICAgICAgKFdlYktpdDo6Y29yZURyYWdP
cGVyYXRpb25NYXNrKToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbnMgdG8gYXZv
aWQgY2FzdGluZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmRyYWdnaW5nRXhpdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnRGF0
YUZvckRyb3BTZXNzaW9uOmRyYWdEZXN0aW5hdGlvbkFjdGlvbjpdKToKKyAgICAgICAgLSBNYWtl
IHVzZSBvZiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaygpIGFuZAorICAgICAgICAgIGNv
cmVEcmFnT3BlcmF0aW9uTWFzaygpLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAtIEFkZCBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggdG8gcHJv
amVjdC4KKwogMjAyMC0wNS0yOSAgSmFuLU1pY2hhZWwgQnJ1bW1lciAgPGphbi5icnVtbWVyQHRh
Ym9zLm9yZz4KIAogICAgICAgICBbR1RLXVtXUEVdIEFQSSBmb3IgV2ViVmlldyBhdWRpbyBtdXRl
IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAwNzkzYTQyZmQ3NWMwMjQ3
ZjMzNThlN2ZjN2QxNDY2YWIxMTFkMmZhLi5hNmFmOTgzMzMxZjQ5OGZiZTk0OGZhNzIxZmY0Y2Vl
YmNhNTdhNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMjAtMDUtMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHtX
ZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0RyYWdPcGVyYXRpb24KKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06
CisgICAgICAgIChraXQpOgorICAgICAgICAtIEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9uIHRvIGF2
b2lkIGNhc3RpbmcuCisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0
aW5hdGlvbkFjdGlvbik6CisgICAgICAgIC0gTWFrZSB1c2Ugb2Yga2l0KCkgY29udmVyc2lvbiBm
dW5jdGlvbi4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChjb3JlRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk6CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2sp
OgorICAgICAgICAtIEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9ucyB0byBhdm9pZCBjYXN0aW5nLgor
ICAgICAgICAoLVtXZWJWaWV3IGRyYWdEYXRhRm9yU2Vzc2lvbjpjbGllbnQ6Z2xvYmFsOm9wZXJh
dGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOl0p
OgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nRW50ZXJlZDpdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBkcmFnZ2luZ1VwZGF0ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFeGl0
ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgcGVyZm9ybURyYWdPcGVyYXRpb246XSk6CisgICAg
ICAgIC0gTWFrZSB1c2Ugb2YgY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soKSBhbmQKKyAg
ICAgICAgICBjb3JlRHJhZ09wZXJhdGlvbk1hc2soKSBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAoQ29jb2FEcmFnT3Bl
cmF0aW9uKToKKyAgICAgICAgLSBBZGQgdHlwZWRlZiBzbyBjb3JlRHJhZ09wZXJhdGlvbk1hc2so
KSBtYXkgYmUgc2hhcmVkIGFjcm9zcworICAgICAgICAgIHBsYXRmb3Jtcy4KKyAgICAgICAgKGNv
cmVEcmFnT3BlcmF0aW9uTWFzayk6IEFkZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKGNvcmVPcHRp
b25zKTogUmVtb3ZlIHJlZHVuZGFudCBwYXJhbWV0ZXIgbmFtZS4KKwogMjAyMC0wNS0yOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoaW5ncyBmcm9t
IEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIHRoYXQgYXJlIGNvdmVyZWQgYnkgUGxhdGZvcm1FbmFi
bGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzNkZWM4ZDI3ZDY1Y2Qw
ZGY5YWExNGJiNWE5MzI3N2M4OWNlM2NlMS4uNjBhY2VhNWEwYTRjOTBhMjcwYTVjNzFjM2FlZWZl
OGE3NTE3ZjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIwLTA1LTI5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAg
ICAgRG9uJ3QgdXNlIGNhc3RzIHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7
V2ViLFdLfURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2svTlNEcmFnT3BlcmF0aW9uCisgICAgICAg
IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI1MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cDoKKyAgICAgICAgKGtpdCk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8g
YXZvaWQgY2FzdGluZy4KKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uKToKKyAgICAgICAgLSBNYWtlIHVzZSBvZiBraXQoKSBjb252ZXJzaW9u
IGZ1bmN0aW9uLgorCiAyMDIwLTA1LTE5ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlp
QHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gQVNTRVJUKG1fZWdsRGlzcGxheSA9PSBF
R0xfTk9fRElTUExBWSkgZmFpbHMgaW4gflBsYXRmb3JtRGlzcGxheSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdBY3Rpb25zLmgKaW5kZXggYzgxNzc0MDJmOTdjNTA4M2I3NTgwODEwMGUzZGE3OGMyMDhmZmNi
NC4uNzc5OTAxMWZhOThiOGViYTRkMmQyNzJmZDYyNWRmZjdiODBjYzFhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0FjdGlvbnMuaApAQCAtMzIsMTQgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotLy8gV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIG11c3QgYmUga2VwdCBpbiBz
eW5jIHdpdGggV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFuZCBXS0RyYWdEZXN0aW5hdGlvbkFj
dGlvbi4KKy8vIFNlZSBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24gYW5kIFdLRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uLgogZW51bSBjbGFzcyBEcmFnRGVzdGluYXRpb25BY3Rpb24gOiB1aW50OF90IHsK
ICAgICBESFRNTCA9IDEsCiAgICAgRWRpdCAgPSAyLAogICAgIExvYWQgID0gNAogfTsKIAotaW5s
aW5lIGNvbnN0ZXhwciBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBEcmFnRGVzdGlu
YXRpb25BY3Rpb25BbnkoKQorY29uc3RleHByIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rp
b24+IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpCiB7CiAgICAgcmV0dXJuIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IHsgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpESFRNTCwgRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uOjpFZGl0LCBEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQgfTsK
IH0KQEAgLTYwLDcgKzYwLDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBEcmFnU291cmNlQWN0aW9u
QW55ICAgICAgICAgID0gVUlOVF9NQVgKIH0gRHJhZ1NvdXJjZUFjdGlvbjsKIAotLy8gTWF0Y2hl
cyBOU0RyYWdPcGVyYXRpb24uCisvLyBTZWUgTlNEcmFnT3BlcmF0aW9uLgogdHlwZWRlZiBlbnVt
IHsKICAgICBEcmFnT3BlcmF0aW9uTm9uZSAgICA9IDAsCiAgICAgRHJhZ09wZXJhdGlvbkNvcHkg
ICAgPSAxLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggNjUxMDE4NzBjMTk5YWFh
YmRmMTkwZDdkNmI0NWU2OTQzOGQ5ZGJiMi4uNDIxYTI5OTQzYjNkMTBkNDg1ZGE1Y2U5ZWZkNTNl
M2ZhZmJjMGYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03NSw4ICs3NSw4
IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdnaW5nUHVycG9zZSB7IEZvckVkaXRpbmcs
IEZvckZpbGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9OwogCiAgICAgLy8gY2xpZW50UG9zaXRp
b24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0
aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JF
X0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdB
cHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0
aW5hdGlvbkFjdGlvbj4gYWN0aW9uTWFzayA9IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSgpKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFt
ZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxp
Y2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gYWN0aW9uTWFzayA9
IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSgpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0
YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdz
ID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4g
PSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0Rh
dGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBE
cmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFn
RGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOwogICAgIC8v
IFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBieSBXZWJLaXQyIElQQyBiZWNhdXNl
IERyYWdEYXRhCiAgICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIGRlY29kZXIgYW5kIG5vdCBp
biB0aGUgY29uc3RydWN0b3IuCiAgICAgRHJhZ0RhdGEoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hZGQ4ZDIwM2ZlODMwNGNiMzY4MGM4YjZiMzM3ZWYyMTNhMThhYzI0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdB
Y3Rpb25zSW50ZXJuYWwuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8
V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgT3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2so
V0tEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uKQoreworICAgIE9wdGlvblNldDxXZWJDb3Jl
OjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHJlc3VsdDsKKyAgICBpZiAoYWN0aW9uICYgV0tEcmFn
RGVzdGluYXRpb25BY3Rpb25ESFRNTCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFn
RGVzdGluYXRpb25BY3Rpb246OkRIVE1MKTsKKyAgICBpZiAoYWN0aW9uICYgV0tEcmFnRGVzdGlu
YXRpb25BY3Rpb25FZGl0KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0aW5h
dGlvbkFjdGlvbjo6RWRpdCk7CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTG9hZCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rp
b246OkxvYWQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBVU0UoQVBQS0lUKQoraW5s
aW5lIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gY29yZURyYWdPcGVyYXRpb25NYXNrKE5TRHJhZ09w
ZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiByZXN1bHQg
PSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFn
T3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpOworICAgIGlm
IChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25MaW5rKQorICAgICAgICByZXN1bHQgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgfCBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uTGluayk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkdlbmVyaWMp
CisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJl
c3VsdCB8IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9u
ICYgTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblBy
aXZhdGUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Nb3ZlKQorICAgICAg
ICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgfCBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09w
ZXJhdGlvbkRlbGV0ZSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0K
aW5kZXggMjQyMWFiODIzYzYxMzZlNmMxNzY2ZTZhZmQ3NDZjOGNlNzNlODc5Yy4uN2RiYTRlZmRk
ZGE0MzFjMTAzMDA5MzA2ZjUyNWUyOGUwZTAxNmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTc2LDYgKzc2LDcgQEAKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIldlYlBy
b2Nlc3NQcm94eS5oIgorI2ltcG9ydCAiX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVGh1bWJu
YWlsVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CkBAIC0zOTQ1LDgg
KzM5NDYsOSBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZChp
ZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2lu
dCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRp
b24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6
Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRv
d10pKTsKLSAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBPcHRpb25TZXQ8V2Vi
Q29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbbV92aWV3IF93ZWJfZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIFdlYkNv
cmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3Jl
bGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOworICAg
IGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rp
b25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86
ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uID0gY29yZURyYWdPcGVyYXRp
b25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOworICAgIFdl
YkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRy
YWdPcGVyYXRpb24sIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFz
ZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CiAKICAgICBt
X3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAgIG1fcGFnZS0+ZHJhZ0Vu
dGVyZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CkBA
IC0zOTU4LDggKzM5NjAsOSBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5n
VXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdn
aW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFs
KFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92
aWV3IHdpbmRvd10pKTsKLSAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbbV92aWV3IF93
ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwot
ICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9i
YWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcu
Z2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2spOworICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFn
Z2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uID0gY29yZURy
YWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sp
OworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBn
bG9iYWwsIGRyYWdPcGVyYXRpb24sIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRB
dXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7
CiAgICAgbV9wYWdlLT5kcmFnVXBkYXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5n
UGFzdGVib2FyZC5uYW1lKTsKIAogICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JE
cm9wID0gbV9wYWdlLT5jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsKQEAg
LTM5ODMsNyArMzk4Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdnaW5nRXhpdGVkKGlkIDxO
U0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNs
aWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBm
cm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xv
YmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkp
OwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBn
bG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5k
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3Zp
ZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdE
YXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0
aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGlj
YXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8p
KTsKICAgICBtX3BhZ2UtPmRyYWdFeGl0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2lu
Z1Bhc3RlYm9hcmQubmFtZSk7CiAgICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRp
b24oKTsKICAgICBkcmFnZ2luZ0luZm8ubnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1faW5p
dGlhbE51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7CkBAIC0zOTk5LDcgKzQwMDIsNyBAQCBib29s
IFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihpZCA8TlNEcmFnZ2luZ0luZm8+IGRy
YWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252
ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5n
SW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpE
cmFnRGF0YSAqZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBj
bGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dp
bmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JE
cmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29y
ZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5m
bywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3
LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKIAogICAgIE5TQXJyYXkgKnR5cGVz
ID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC50eXBlczsKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4
IGEzNDRjZjVmYmQ2MGE1NDY3NWZmZDI4MmZjZTAwNmFiY2M2OTg4ZDAuLmJkMWJjZDIyYTc2NGEx
NjA5Y2Q2MzZiNjUzNDBlZTc4YWUyOGRhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODYsNiArODYs
NyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nl
c3NQcm94eS5oIgogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgor
I2ltcG9ydCAiX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRWxlbWVudEFj
dGlvbi5oIgogI2ltcG9ydCAiX1dLRWxlbWVudEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tGb2N1c2VkRWxlbWVudEluZm8uaCIKQEAgLTczMTksOSArNzMyMCw4IEBAIC0gKFdlYkNvcmU6
OkRyYWdEYXRhKWRyYWdEYXRhRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNz
aW9uIGRyYWdEZXN0CiAgICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVu
dEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNs
aWVudCBvdXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKIAotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PihzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24gPyBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZl
cnkgOiAoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5ICYgfldlYkNvcmU6OkRyYWdPcGVyYXRp
b25Nb3ZlKSk7Ci0gICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gT3B0aW9uU2V0
PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46OmZyb21SYXcoZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKTsKLSAgICByZXR1cm4geyBzZXNzaW9uLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
Y2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIGRyYWdPcGVyYXRpb25N
YXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrIH07CisgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFzayA9IGNv
cmVEcmFnT3BlcmF0aW9uTWFzayhzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24gPyBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uRXZlcnkgOiAoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5ICYgfldl
YkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKSk7CisgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29y
ZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9i
YWwpLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uTm9uZSwgY29y
ZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKSB9OwogfQog
CiAtICh2b2lkKWNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZWUzNGQyMGZhZTUxNDVl
ZjI4MGU2NTc2NDc0ZWViMDIyZjk5NjY0Li5lMjZiNDAzZjg2ZDg2MDcwYTc3YjdlYWU0ZjMxZjRj
ZWM2MThmNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTkzNyw2ICs5MzcsNyBAQAogCQk0NDgyNzM0NzI0NTI4RjYwMDBBOTU0OTMg
LyogQ29jb2FJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDQ4MjczNDYyNDUyOEY2MDAwQTk1NDkzIC8qIENvY29hSW1hZ2UuaCAqLzsgfTsKIAkJ
NDQ5RDkwREEyMUZEQzMwQjAwRjY3N0MwIC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OUQ5MEQ4
MjFGRDYzRkUwMEY2NzdDMCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW0gKi87IH07
CiAJCTQ0RTkzNkZEMjQ0N0MyRDgwMDlGQTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEU5MzZGQzI0
NDdDMjU2MDA5RkEzRTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oICovOyB9OworCQk0NEVD
M0VBOTI0N0Y1QzA5MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFQzNFQTgyNDdGNUMwODAw
NTk0ODlDIC8qIF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCAqLzsgfTsKIAkJNDYwRjQ4OEYxRjk5
NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTQ2MEY0ODkwMUY5OTZGNzEwMENGNEI4NyAvKiBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBGNDg4RTFGOTk2RjZDMDBDRjRCODcgLyog
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwogCQk0NjFDQ0NB
NTIzMTQ4NUE3MDBCNjU5QjkgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzMjM2ODUyMzE0ODMzRjAwQTQ4
RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsgfTsKQEAgLTM1MzYsNiArMzUzNyw3
IEBACiAJCTQ0OUQ5MEQ4MjFGRDYzRkUwMEY2NzdDMCAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uU29m
dExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbEF1
dGhlbnRpY2F0aW9uU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0
QTQ4MUM2MjFGMkQyN0IwMEYyRjkxOSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9u
WFBDQ29uc3RhbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaWVudENlcnRpZmljYXRlQXV0
aGVudGljYXRpb25YUENDb25zdGFudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEU5MzZGQzI0NDdDMjU2MDA5RkEzRTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xJRC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lDdXN0b21Qcm90b2NvbElELmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0RUMzRUE4MjQ3RjVDMDgwMDU5NDg5QyAv
KiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDYwMzAxMUEyMzRCRTMxRDAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MDMwMTFCMjM0QkUzMUUwMDlDODIx
NyAvKiBXZWJCYWNrRm9yd2FyZENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9
IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAt
NzUxMSw2ICs3NTEzLDcgQEAKIAkJMzdERkE2RkUxODEwQkIyRDAwMUY0QTlGIC8qIENvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0NEVDM0VBODI0
N0Y1QzA4MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oICovLAogCQkJCTM3M0Qx
MjIxMThBNDczMDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZS5oICovLAogCQkJCTM3M0QxMjIw
MThBNDczMDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZS5tbSAqLywKIAkJCQkzNzNEMTIyNjE4
QTQ3M0Y2MDA2NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oICovLApAQCAtMTA1Mjcs
NiArMTA1MzAsNyBAQAogCQkJCUExQTRGRTVBMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9h
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBNEZFNjExOERENTRBNDAwQjVFQThBIC8qIF9XS0Rv
d25sb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTRGRTVDMThEQ0U5RkEwMEI1
RUE4QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NEVDM0VB
OTI0N0Y1QzA5MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc5QTg3M0ExOEJCRkUwRjAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTM3OUE4NzNDMThCQkZGMDcwMDU4OEFGMiAvKiBfV0tFbGVtZW50
QWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDAxQkM5MTkwNUQzN0UwMEM5
QzQ1RiAvKiBfV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5tbQppbmRleCA0YmJlODE3YTE0NzFlY2JjZWM0YjQwOWJkNjI4ZThlNjUzZDY2YjE1Li4z
ZDFhMGEzNWZmMjUyMWQxOTRkZWU1NjFhYjg5MTc0ZGZlMWVmNDNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0K
QEAgLTY4LDYgKzY4LDIwIEBAIFdlYkRyYWdDbGllbnQ6OldlYkRyYWdDbGllbnQoV2ViVmlldyog
d2ViVmlldykKIAogI2lmIFBMQVRGT1JNKE1BQykKIAorc3RhdGljIFdlYkRyYWdEZXN0aW5hdGlv
bkFjdGlvbiBraXQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbikKK3sKKyAg
ICBzd2l0Y2ggKGFjdGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uOjpESFRNTDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1M
OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpFZGl0OgorICAgICAg
ICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdDsKKyAgICBjYXNlIFdlYkNvcmU6
OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0
aW5hdGlvbkFjdGlvbkxvYWQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lOworfQorCiBib29sIFdlYkRyYWdD
bGllbnQ6OnVzZUxlZ2FjeURyYWdDbGllbnQoKQogewogICAgIHJldHVybiBmYWxzZTsKQEAgLTg2
LDcgKzEwMCw3IEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqZ2V0VG9wSFRNTFZpZXcoRnJhbWUqIGZy
YW1lKQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OkRyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndh
cmRlcl0gd2ViVmlldzptX3dlYlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb246
c3RhdGljX2Nhc3Q8V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPihhY3Rpb24pIGZvckRyYWdnaW5n
SW5mbzpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKV07CisgICAgW1ttX3dlYlZpZXcgX1VJRGVsZWdh
dGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uOmtpdChhY3Rpb24pIGZvckRyYWdnaW5nSW5mbzpkcmFnRGF0YS5wbGF0Zm9ybURhdGEo
KV07CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmlu
ZGV4IDJmYTcxZWEyNWE5MTUxMWUwMjUzMTI0ZDZiMzY4NzM3NzJjZTg1NjguLjU5OGU4ZDhiNDEx
ZDBlZTkzNzYzZGJlMWQwYzViODQyNmJkZjdjMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTExMiw3ICsxMTIsNiBAQAogI2ltcG9ydCAiV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCiAjaW1wb3J0ICJXZWJUZXh0Q29tcGxldGlvbkNvbnRy
b2xsZXIuaCIKICNpbXBvcnQgIldlYlRleHRJdGVyYXRvci5oIgotI2ltcG9ydCAiV2ViVUlEZWxl
Z2F0ZS5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50LmgiCiAjaW1wb3J0ICJXZWJWaWV3R3JvdXAuaCIKQEAgLTU3
Nyw2ICs1NzYsNTQgQEAgLSAodm9pZCljbGVhclRhcmdldDsKICNlbmRpZgogQGVuZAogCisjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKK3N0YXRpYyBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uPiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhXZWJEcmFnRGVzdGlu
YXRpb25BY3Rpb24gYWN0aW9uTWFzaykKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uPiByZXN1bHQ7CisgICAgaWYgKGFjdGlvbk1hc2sgJiBXZWJEcmFnRGVz
dGluYXRpb25BY3Rpb25ESFRNTCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVz
dGluYXRpb25BY3Rpb246OkRIVE1MKTsKKyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdEZXN0
aW5hdGlvbkFjdGlvbkVkaXQpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uOjpFZGl0KTsKKyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdEZXN0aW5h
dGlvbkFjdGlvbkxvYWQpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uOjpMb2FkKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRpb24gb3BlcmF0
aW9uKQoreworI2lmICFVU0UoQVBQS0lUKQorI2RlZmluZSBOU0RyYWdPcGVyYXRpb25Db3B5IDEK
KyNkZWZpbmUgTlNEcmFnT3BlcmF0aW9uTGluayAyCisjZGVmaW5lIE5TRHJhZ09wZXJhdGlvbkdl
bmVyaWMgNAorI2RlZmluZSBOU0RyYWdPcGVyYXRpb25Qcml2YXRlIDgKKyNkZWZpbmUgTlNEcmFn
T3BlcmF0aW9uTW92ZSAxNgorI2RlZmluZSBOU0RyYWdPcGVyYXRpb25EZWxldGUgMzIKKyNlbmRp
ZgorICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gcmVzdWx0ID0gV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbk5vbmU7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkNvcHkpCisgICAg
ICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCB8
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFn
T3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlm
IChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgfCBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvblBy
aXZhdGUpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+KHJlc3VsdCB8IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICBpZiAob3Bl
cmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAg
ICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCB8
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworICAgIHJldHVybiByZXN1bHQ7CisjaWYg
IVVTRShBUFBLSVQpCisjdW5kZWYgTlNEcmFnT3BlcmF0aW9uQ29weQorI3VuZGVmIE5TRHJhZ09w
ZXJhdGlvbkxpbmsKKyN1bmRlZiBOU0RyYWdPcGVyYXRpb25HZW5lcmljCisjdW5kZWYgTlNEcmFn
T3BlcmF0aW9uUHJpdmF0ZQorI3VuZGVmIE5TRHJhZ09wZXJhdGlvbk1vdmUKKyN1bmRlZiBOU0Ry
YWdPcGVyYXRpb25EZWxldGUKKyNlbmRpZgorfQorI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBP
UlQpCisKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9w
dGlvbnMpCiB7CiAgICAgV2ViQ29yZTo6RmluZE9wdGlvbnMgZmluZE9wdGlvbnM7CkBAIC0xOTA5
LDggKzE5NTYsOCBAQCAtIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaQogCiAtIChXZWJDb3JlOjpEcmFn
RGF0YSlkcmFnRGF0YUZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGNsaWVu
dDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24g
b3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24KIHsKLSAgICBhdXRvIGRyYWdPcGVyYXRpb25N
YXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ob3BlcmF0aW9uKTsKLSAg
ICBhdXRvIGRyYWdEZXN0aW5hdGlvbk1hc2sgPSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbc2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9y
U2Vzc2lvbjpzZXNzaW9uXSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IGNvcmVEcmFn
T3BlcmF0aW9uTWFzayhvcGVyYXRpb24pOworICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uTWFzayA9
IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFtzZWxmIGRyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2tGb3JTZXNzaW9uOnNlc3Npb25dKTsKICAgICByZXR1cm4geyBzZXNzaW9uLCBXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQoY2xpZW50UG9zaXRpb24pLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9p
bnQoZ2xvYmFsUG9zaXRpb24pLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxp
Y2F0aW9uTm9uZSwgZHJhZ0Rlc3RpbmF0aW9uTWFzayB9OwogfQogCkBAIC0xOTI3LDEyICsxOTc0
LDE0IEBAIC0gKHVpbnQ2NF90KV91cGRhdGVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vz
c2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpCiAgICAgYXV0byBkcmFnRGF0YSA9IFtzZWxm
IGRyYWdEYXRhRm9yU2Vzc2lvbjpzZXNzaW9uIGNsaWVudDpjbGllbnRQb3NpdGlvbiBnbG9iYWw6
Z2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOm9wZXJhdGlvbl07CiAgICAgcmV0dXJuIF9wcml2YXRl
LT5wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKIH0KKwogLSAo
dm9pZClfZXhpdGVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBj
bGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0
aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCiB7CiAgICAgV2ViVGhyZWFkTG9jaygp
OwogICAgIGF1dG8gZHJhZ0RhdGEgPSBbc2VsZiBkcmFnRGF0YUZvclNlc3Npb246c2Vzc2lvbiBj
bGllbnQ6Y2xpZW50UG9zaXRpb24gZ2xvYmFsOmdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjpvcGVy
YXRpb25dOwogICAgIF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQo
ZHJhZ0RhdGEpOwogfQorCiAtICh2b2lkKV9wZXJmb3JtRGF0YUludGVyYWN0aW9uOihpZCA8VUlE
cm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFs
OihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCiB7
CiAgICAgW3NlbGYgX3RyeVRvUGVyZm9ybURhdGFJbnRlcmFjdGlvbjpzZXNzaW9uIGNsaWVudDpj
bGllbnRQb3NpdGlvbiBnbG9iYWw6Z2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOm9wZXJhdGlvbl07
CkBAIC02NzI0LDcgKzY3NzMsNyBAQCAtIChXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncylh
cHBsaWNhdGlvbkZsYWdzOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSQogCiAtIChPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPilhY3Rpb25NYXNrRm9yRHJhZ2dp
bmdJbmZvOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogewotICAgIHJldHVybiBP
cHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbW3NlbGYg
X1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6c2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIHJldHVybiBjb3JlRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTWFzayhbW3NlbGYgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6
c2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5m
b10pOwogfQogCiAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdFbnRlcmVkOihpZCA8TlNEcmFn
Z2luZ0luZm8+KWRyYWdnaW5nSW5mbwpAQCAtNjczMiw3ICs2NzgxLDcgQEAgLSAoTlNEcmFnT3Bl
cmF0aW9uKWRyYWdnaW5nRW50ZXJlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8K
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0
aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50
KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKIAotICAg
IFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWws
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJ
bmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAg
ICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFs
LCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBh
Y3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwogICAgIHJldHVybiBjb3Jl
KHNlbGYpLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKIH0KIApAQCAt
Njc0NSw3ICs2Nzk0LDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nVXBkYXRlZDooaWQg
PE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGll
bnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9p
bnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2Nh
dGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKIAotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRh
KGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtz
ZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRy
YWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0
YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2Ry
YWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRp
b25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRy
YWdnaW5nSW5mb10pOwogICAgIHJldHVybiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRh
dGVkKGRyYWdEYXRhKTsKIH0KIApAQCAtNjc1Nyw3ICs2ODA2LDcgQEAgLSAodm9pZClkcmFnZ2lu
Z0V4aXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KIAogICAgIFdlYkNvcmU6
OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5m
byBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRyYWdE
YXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CisgICAgV2Vi
Q29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29y
ZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CiAgICAgcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRXhpdGVkKGRyYWdEYXRhKTsKIH0KIApAQCAtNjc3MCw3ICs2
ODE5LDcgQEAgLSAoQk9PTClwZXJmb3JtRHJhZ09wZXJhdGlvbjooaWQgPE5TRHJhZ2dpbmdJbmZv
PilkcmFnZ2luZ0luZm8KIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5n
SW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdl
YkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxm
IHdpbmRvd10pKTsKLSAgICBhdXRvKiBkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShk
cmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2Vs
ZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOworICAgIGF1dG8qIGRyYWdEYXRhID0g
bmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVE
cmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
a10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOwogCiAgICAgTlNBcnJh
eSogdHlwZXMgPSBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLnR5cGVzOwogICAgIGlm
ICghW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRUeXBlXSAmJiBbdHlwZXMg
Y29udGFpbnNPYmplY3Q6V2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUo
KV0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
d0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRl
cm5hbC5oCmluZGV4IDU3NjYyOWFiYTY5YTZjYTBiZjU2YTViOWU2OWEzMzE5MTI3MzgyYzguLmZj
ODYzNDg3YjE2YTljNjQ4YTFhMDJjOTkwZTYwYWUxYzMzMTkyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEln
YWxpYSBTLkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM2LDYgKzM2LDcgQEAKICNpZmRlZiBfX2Nw
bHVzcGx1cwogCiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaW5kT3B0aW9u
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE1lZGlhRWxlbWVudEVudW1zLmg+CkBAIC04OSw3ICs5MCwxNiBAQCBjbGFzcyBXZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlcjsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKLVdlYkNvcmU6OkZp
bmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpOworI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCisjaWYgVVNFKEFQUEtJVCkKK3R5cGVkZWYgTlNEcmFnT3BlcmF0aW9u
IENvY29hRHJhZ09wZXJhdGlvbjsKKyNlbHNlCit0eXBlZGVmIHVpbnQ2NF90IENvY29hRHJhZ09w
ZXJhdGlvbjsKKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBj
b3JlRHJhZ09wZXJhdGlvbk1hc2soQ29jb2FEcmFnT3BlcmF0aW9uKTsKKyNlbmRpZiAvLyBFTkFC
TEUoRFJBR19TVVBQT1JUKQorCitXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJG
aW5kT3B0aW9ucyk7CiAKIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGNvcmVM
YXlvdXRNaWxlc3RvbmVzKFdlYkxheW91dE1pbGVzdG9uZXMpOwogV2ViTGF5b3V0TWlsZXN0b25l
cyBraXRMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggZDQzYzJlNDRlYzgwMGNkNTUzOWEyZDAyMGM5ZGZhNGE1
MzdkNTAxYi4uMzEzMjYwMzZhOGE0MTI1NzdlYzFjYTE5MTdkYzNmZjg2MjA3ZTI2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAy
MCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC02MCw2ICs2MCwyMCBAQCBzdGF0aWMgRFdPUkQgZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhEcmFnT3BlcmF0aW9uIG9wKQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK3N0YXRpYyBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24ga2l0KERyYWdEZXN0
aW5hdGlvbkFjdGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICBjYXNl
IERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6REhUTUw6CisgICAgICAgIHJldHVybiBXZWJEcmFnRGVz
dGluYXRpb25BY3Rpb25ESFRNTDsKKyAgICBjYXNlIERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6RWRp
dDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQ7CisgICAgY2Fz
ZSBEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQ6CisgICAgICAgIHJldHVybiBXZWJEcmFnRGVz
dGluYXRpb25BY3Rpb25Mb2FkOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsKK30KKwogV2ViRHJhZ0NsaWVu
dDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZp
ZXcpIAogewpAQCAtNzIsNyArODYsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3Jt
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3RpbwogICAgIC8v
c28gd2UganVzdCBjYWxsIHRoZSBkZWxlZ2F0ZSwgYW5kIGRvbid0IHdvcnJ5IGFib3V0IHdoZXRo
ZXIgaXQncyBpbXBsZW1lbnRlZAogICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gZGVsZWdhdGVS
ZWYgPSAwOwogICAgIGlmIChTVUNDRUVERUQobV93ZWJWaWV3LT51aURlbGVnYXRlKCZkZWxlZ2F0
ZVJlZikpKQotICAgICAgICBkZWxlZ2F0ZVJlZi0+d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25B
Y3Rpb24obV93ZWJWaWV3LCAoV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWFjdGlvbiwgZHJhZ0Rh
dGEucGxhdGZvcm1EYXRhKCkpOworICAgICAgICBkZWxlZ2F0ZVJlZi0+d2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24obV93ZWJWaWV3LCBraXQoYWN0aW9uKSwgZHJhZ0RhdGEucGxhdGZv
cm1EYXRhKCkpOwogfQogCiBEcmFnU291cmNlQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmRyYWdTb3Vy
Y2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQo=
</data>
<flag name="review"
          id="416042"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400647</attachid>
            <date>2020-05-29 20:14:13 -0700</date>
            <delta_ts>2020-05-31 11:09:03 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212507-20200529201607.patch</filename>
            <type>text/plain</type>
            <size>34322</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYzYjlmZWE4NzNkN2Q1
OTU4MmYyMTRhNzUyY2YxZDVhZWNlYmYyMC4uMWRiNGU0YWNjZGZkYTFiOWU1Y2NiZjkzNzNiZjZh
NGJkZmFhMjJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI5ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3Rz
IHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7V2ViLFdLfURyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2svTlNEcmFnT3BlcmF0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMTI1MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgKiBwYWdlL0RyYWdBY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnRGVzdGlu
YXRpb25BY3Rpb24pOiBBZGQuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rp
b25BbnkpOiBEZWxldGUuCisgICAgICAgIC0gUmVuYW1lIERyYWdEZXN0aW5hdGlvbkFjdGlvbkFu
eSgpIHRvCisgICAgICAgICAgYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgdG8gbWF0Y2ggV2Vi
S2l0IHN0eWxlLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIC0gVXBk
YXRlIHRvIHVzZSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKS4KKwogMjAyMC0wNS0yOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoaW5ncyBmcm9t
IEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIHRoYXQgYXJlIGNvdmVyZWQgYnkgUGxhdGZvcm1FbmFi
bGVDb2NvYS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM5NzNhODA5ZDZjOWM1YmE1ODg2MGExNWUyZTRhMmVjMDU2
OGZiMzUuLmI4NTkyYTgzOTk3ZWM4YTUzZDBhMjcyMjQ3MDdjNDM1YWE1YTkzNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDUtMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdl
YkNvcmUgdHlwZXMgYW5kIHtXZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0RyYWdP
cGVyYXRpb24KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2Ev
X1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oOiBBZGQuCisgICAgICAgIChXZWJLaXQ6OmNvcmVEcmFn
RGVzdGluYXRpb25BY3Rpb25NYXNrKToKKyAgICAgICAgKFdlYktpdDo6Y29yZURyYWdPcGVyYXRp
b25NYXNrKToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbnMgdG8gYXZvaWQgY2Fz
dGluZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmRyYWdnaW5nRXhpdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBl
cmZvcm1EcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnRGF0YUZvckRy
b3BTZXNzaW9uOmRyYWdEZXN0aW5hdGlvbkFjdGlvbjpdKToKKyAgICAgICAgLSBNYWtlIHVzZSBv
ZiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaygpIGFuZAorICAgICAgICAgIGNvcmVEcmFn
T3BlcmF0aW9uTWFzaygpLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAtIEFkZCBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggdG8gcHJvamVjdC4K
KwogMjAyMC0wNS0yOSAgSmFuLU1pY2hhZWwgQnJ1bW1lciAgPGphbi5icnVtbWVyQHRhYm9zLm9y
Zz4KIAogICAgICAgICBbR1RLXVtXUEVdIEFQSSBmb3IgV2ViVmlldyBhdWRpbyBtdXRlIHN1cHBv
cnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAwNzkzYTQyZmQ3NWMwMjQ3ZjMzNThl
N2ZjN2QxNDY2YWIxMTFkMmZhLi41YTAxMjE3ZDQwOTY5YmYzNWQ4MWRkODI0NWEwMTllM2FjN2Ji
MDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjAt
MDUtMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBEb24n
dCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHtXZWIsV0t9
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0RyYWdPcGVyYXRpb24KKyAgICAgICAgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06CisgICAgICAg
IChraXQpOgorICAgICAgICAtIEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9uIHRvIGF2b2lkIGNhc3Rp
bmcuCisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFj
dGlvbik6CisgICAgICAgIC0gTWFrZSB1c2Ugb2Yga2l0KCkgY29udmVyc2lvbiBmdW5jdGlvbi4K
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChjb3JlRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFzayk6CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2spOgorICAgICAg
ICAtIEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9ucyB0byBhdm9pZCBjYXN0aW5nLgorICAgICAgICAo
LVtXZWJWaWV3IGRyYWdEYXRhRm9yU2Vzc2lvbjpjbGllbnQ6Z2xvYmFsOm9wZXJhdGlvbjpdKToK
KyAgICAgICAgKC1bV2ViVmlldyBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IGRyYWdnaW5nRW50ZXJlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFn
Z2luZ1VwZGF0ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFeGl0ZWQ6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgcGVyZm9ybURyYWdPcGVyYXRpb246XSk6CisgICAgICAgIC0gTWFr
ZSB1c2Ugb2YgY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soKSBhbmQKKyAgICAgICAgICBj
b3JlRHJhZ09wZXJhdGlvbk1hc2soKSBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAoQ29jb2FEcmFnT3BlcmF0aW9uKToK
KyAgICAgICAgLSBBZGQgdHlwZWRlZiBzbyBjb3JlRHJhZ09wZXJhdGlvbk1hc2soKSBtYXkgYmUg
c2hhcmVkIGFjcm9zcworICAgICAgICAgIHBsYXRmb3Jtcy4KKyAgICAgICAgKGNvcmVEcmFnT3Bl
cmF0aW9uTWFzayk6IEFkZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKGNvcmVPcHRpb25zKTogUmVt
b3ZlIHJlZHVuZGFudCBwYXJhbWV0ZXIgbmFtZS4KKwogMjAyMC0wNS0yOSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoaW5ncyBmcm9tIEZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnIHRoYXQgYXJlIGNvdmVyZWQgYnkgUGxhdGZvcm1FbmFibGVDb2NvYS5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzNkZWM4ZDI3ZDY1Y2QwZGY5YWExNGJi
NWE5MzI3N2M4OWNlM2NlMS4uMjBkNzc2ODc3ZDM4MGJiYWI3ZmU5Nzk5N2FiNTE1YjVlNDNmMDAx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA1
LTI5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3Qg
dXNlIGNhc3RzIHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7V2ViLFdLfURy
YWdEZXN0aW5hdGlvbkFjdGlvbk1hc2svTlNEcmFnT3BlcmF0aW9uCisgICAgICAgIDxodHRwczov
L3dlYmtpdC5vcmcvYi8yMTI1MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcDoKKyAgICAgICAg
KGtpdCk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGlu
Zy4KKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKToKKyAgICAgICAgLSBNYWtlIHVzZSBvZiBraXQoKSBjb252ZXJzaW9uIGZ1bmN0aW9uLgor
CiAyMDIwLTA1LTE5ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFtXaW5DYWlyb10gQVNTRVJUKG1fZWdsRGlzcGxheSA9PSBFR0xfTk9fRElTUExB
WSkgZmFpbHMgaW4gflBsYXRmb3JtRGlzcGxheSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdBY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgK
aW5kZXggYzgxNzc0MDJmOTdjNTA4M2I3NTgwODEwMGUzZGE3OGMyMDhmZmNiNC4uYjFmYTJiNmVj
MGZjYzM1N2E2NGRjNTlhZmE5ZTBlYmZiZDBhZjA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlv
bnMuaApAQCAtMzIsMTQgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gV2Vi
Q29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggV2Vi
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFuZCBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi4KKy8vIFNl
ZSBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24gYW5kIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLgog
ZW51bSBjbGFzcyBEcmFnRGVzdGluYXRpb25BY3Rpb24gOiB1aW50OF90IHsKICAgICBESFRNTCA9
IDEsCiAgICAgRWRpdCAgPSAyLAogICAgIExvYWQgID0gNAogfTsKIAotaW5saW5lIGNvbnN0ZXhw
ciBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBEcmFnRGVzdGluYXRpb25BY3Rpb25B
bnkoKQorY29uc3RleHByIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGFueURyYWdE
ZXN0aW5hdGlvbkFjdGlvbigpCiB7CiAgICAgcmV0dXJuIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+IHsgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpESFRNTCwgRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uOjpFZGl0LCBEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQgfTsKIH0KQEAgLTYwLDcg
KzYwLDcgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBEcmFnU291cmNlQWN0aW9uQW55ICAgICAgICAg
ID0gVUlOVF9NQVgKIH0gRHJhZ1NvdXJjZUFjdGlvbjsKIAotLy8gTWF0Y2hlcyBOU0RyYWdPcGVy
YXRpb24uCisvLyBTZWUgTlNEcmFnT3BlcmF0aW9uIGFuZCBfVUlEcmFnT3BlcmF0aW9uLgogdHlw
ZWRlZiBlbnVtIHsKICAgICBEcmFnT3BlcmF0aW9uTm9uZSAgICA9IDAsCiAgICAgRHJhZ09wZXJh
dGlvbkNvcHkgICAgPSAxLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggNjUxMDE4
NzBjMTk5YWFhYmRmMTkwZDdkNmI0NWU2OTQzOGQ5ZGJiMi4uNDIxYTI5OTQzYjNkMTBkNDg1ZGE1
Y2U5ZWZkNTNlM2ZhZmJjMGYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RHJhZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03
NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdnaW5nUHVycG9zZSB7IEZv
ckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9OwogCiAgICAgLy8gY2xp
ZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50
IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAg
ICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRp
b24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0
PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gYWN0aW9uTWFzayA9IERyYWdEZXN0aW5hdGlvbkFjdGlv
bkFueSgpKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdT
dG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0g
RHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gYWN0
aW9uTWFzayA9IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSgpKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNh
dGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlv
bkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3Bl
cmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlv
blNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkp
OwogICAgIC8vIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBieSBXZWJLaXQyIElQ
QyBiZWNhdXNlIERyYWdEYXRhCiAgICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIGRlY29kZXIg
YW5kIG5vdCBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgRHJhZ0RhdGEoKSA9IGRlZmF1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25z
SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGQ4ZDIwM2ZlODMwNGNiMzY4MGM4YjZiMzM3ZWYyMTNh
MThhYzI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gY29yZURyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2soV0tEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uKQoreworICAgIE9wdGlvblNl
dDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHJlc3VsdDsKKyAgICBpZiAoYWN0aW9u
ICYgV0tEcmFnRGVzdGluYXRpb25BY3Rpb25ESFRNTCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkRIVE1MKTsKKyAgICBpZiAoYWN0aW9uICYgV0tE
cmFnRGVzdGluYXRpb25BY3Rpb25FZGl0KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbjo6RWRpdCk7CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTG9hZCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb246OkxvYWQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBVU0UoQVBQ
S0lUKQoraW5saW5lIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gY29yZURyYWdPcGVyYXRpb25NYXNr
KE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
biByZXN1bHQgPSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBpZiAob3BlcmF0aW9u
ICYgTlNEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkp
OworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25MaW5rKQorICAgICAgICByZXN1
bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgfCBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uTGluayk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlv
bkdlbmVyaWMpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24+KHJlc3VsdCB8IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAo
b3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZSkKKyAgICAgICAgcmVzdWx0ID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvblByaXZhdGUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Nb3Zl
KQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihy
ZXN1bHQgfCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAm
IE5TRHJhZ09wZXJhdGlvbkRlbGV0ZSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0
ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KaW5kZXggMjQyMWFiODIzYzYxMzZlNmMxNzY2ZTZhZmQ3NDZjOGNlNzNlODc5Yy4u
N2RiYTRlZmRkZGE0MzFjMTAzMDA5MzA2ZjUyNWUyOGUwZTAxNmJiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTc2LDYgKzc2LDcgQEAKICNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBv
cnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9ydCAiX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9uLmg+CkBA
IC0zOTQ1LDggKzM5NDYsOSBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5n
RW50ZXJlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdn
aW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFs
KFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92
aWV3IHdpbmRvd10pKTsKLSAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbbV92aWV3IF93
ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwot
ICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9i
YWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcu
Z2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2spOworICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFn
Z2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uID0gY29yZURy
YWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sp
OworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBn
bG9iYWwsIGRyYWdPcGVyYXRpb24sIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRB
dXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7
CiAKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAgIG1fcGFn
ZS0+ZHJhZ0VudGVyZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQu
bmFtZSk7CkBAIC0zOTU4LDggKzM5NjAsOSBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6
OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJ
bmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9p
bnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0
aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2sgPSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhb
bV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5n
SW5mb10pOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xp
ZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5n
SW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJh
ZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlv
bkFjdGlvbk1hc2spOworICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVE
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rp
b25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9u
ID0gY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2spOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywg
Y2xpZW50LCBnbG9iYWwsIGRyYWdPcGVyYXRpb24sIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1f
dmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzayk7CiAgICAgbV9wYWdlLT5kcmFnVXBkYXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsKIAogICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlk
SXRlbXNGb3JEcm9wID0gbV9wYWdlLT5jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0
ZWQoKTsKQEAgLTM5ODMsNyArMzk4Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdnaW5nRXhp
dGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6Oklu
dFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdM
b2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2Vi
Q29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcg
d2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywg
Y2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdn
aW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9y
RHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNv
cmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVE
cmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
KSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFn
Z2luZ0luZm8pKTsKICAgICBtX3BhZ2UtPmRyYWdFeGl0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5m
by5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CiAgICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFn
SW5mb3JtYXRpb24oKTsKICAgICBkcmFnZ2luZ0luZm8ubnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJv
cCA9IG1faW5pdGlhbE51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7CkBAIC0zOTk5LDcgKzQwMDIs
NyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihpZCA8TlNEcmFnZ2lu
Z0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21f
dmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6
bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50
KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBX
ZWJDb3JlOjpEcmFnRGF0YSAqZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dp
bmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9u
RmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7Cisg
ICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRy
YWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRy
YWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKIAogICAgIE5TQXJy
YXkgKnR5cGVzID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC50eXBlczsKICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IGEzNDRjZjVmYmQ2MGE1NDY3NWZmZDI4MmZjZTAwNmFiY2M2OTg4ZDAuLjI2MmIz
MzQ3YTdkOWIzZWM4YjI0MTBkZmM1MzQwZWVmNjZjMjhlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
ODYsNiArODYsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQg
IldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRl
cm5hbC5oIgorI2ltcG9ydCAiX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
RWxlbWVudEFjdGlvbi5oIgogI2ltcG9ydCAiX1dLRWxlbWVudEFjdGlvbkludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tGb2N1c2VkRWxlbWVudEluZm8uaCIKQEAgLTczMjAsOCArNzMyMSw3IEBAIC0g
KFdlYkNvcmU6OkRyYWdEYXRhKWRyYWdEYXRhRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNz
aW9uPilzZXNzaW9uIGRyYWdEZXN0CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2JhbFBv
aW50c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBvdXRHbG9i
YWxQb2ludDomZ2xvYmFsXTsKIAogICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gZHJhZ09wZXJh
dGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihzZXNzaW9uLmFs
bG93c01vdmVPcGVyYXRpb24gPyBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZlcnkgOiAoV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5ICYgfldlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKSk7Ci0g
ICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbj46OmZyb21SYXcoZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKTsKLSAg
ICByZXR1cm4geyBzZXNzaW9uLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2Vi
Q29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3Jl
OjpEcmFnQXBwbGljYXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrIH07CisgICAg
cmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNv
cmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6
RHJhZ0FwcGxpY2F0aW9uTm9uZSwgV2ViS2l0Ojpjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFz
ayhkcmFnRGVzdGluYXRpb25BY3Rpb24pIH07CiB9CiAKIC0gKHZvaWQpY2xlYW5VcERyYWdTb3Vy
Y2VTZXNzaW9uU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGRlZTM0ZDIwZmFlNTE0NWVmMjgwZTY1NzY0NzRlZWIwMjJmOTk2NjQu
LmUyNmI0MDNmODZkODYwNzBhNzdiN2VhZTRmMzFmNGNlYzYxOGY1MDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTM3LDYgKzkzNyw3
IEBACiAJCTQ0ODI3MzQ3MjQ1MjhGNjAwMEE5NTQ5MyAvKiBDb2NvYUltYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDgyNzM0NjI0NTI4RjYwMDBB
OTU0OTMgLyogQ29jb2FJbWFnZS5oICovOyB9OwogCQk0NDlEOTBEQTIxRkRDMzBCMDBGNjc3QzAg
LyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5RDkwRDgyMUZENjNGRTAwRjY3N0MwIC8qIExvY2Fs
QXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSAqLzsgfTsKIAkJNDRFOTM2RkQyNDQ3QzJEODAwOUZB
M0UzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29sSUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0RTkzNkZDMjQ0N0MyNTYwMDlGQTNFMyAvKiBMZWdhY3lD
dXN0b21Qcm90b2NvbElELmggKi87IH07CisJCTQ0RUMzRUE5MjQ3RjVDMDkwMDU5NDg5QyAvKiBf
V0tEcmFnQWN0aW9uc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NEVDM0VBODI0N0Y1QzA4MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJ
bnRlcm5hbC5oICovOyB9OwogCQk0NjBGNDg4RjFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8q
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJNDYwRjQ4OTAxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbk1lc3NhZ2VzLmggKi87IH07CiAJCTQ2MUNDQ0E1MjMxNDg1QTcwMEI2NTlCOSAvKiBVSVJl
bW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjMyMzY4NTIzMTQ4MzNGMDBBNDhGQTcgLyogVUlSZW1vdGVPYmplY3RSZWdp
c3RyeS5oICovOyB9OwpAQCAtMzUzNiw2ICszNTM3LDcgQEAKIAkJNDQ5RDkwRDgyMUZENjNGRTAw
RjY3N0MwIC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBNDgxQzYyMUYyRDI3QjAwRjJGOTE5IC8q
IENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0RTkzNkZDMjQ0N0MyNTYwMDlGQTNF
MyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExlZ2FjeUN1c3RvbVByb3RvY29sSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDRFQzNFQTgyNDdGNUMwODAwNTk0ODlDIC8qIF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRHJhZ0FjdGlvbnNJbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjAzMDExQTIzNEJFMzFEMDA5Qzgy
MTcgLyogV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDYwMzAxMUIyMzRCRTMxRTAwOUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjBGNDg4RDFGOTk2RjZDMDBDRjRCODcg
LyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC03NTExLDYgKzc1MTMsNyBAQAogCQkzN0RG
QTZGRTE4MTBCQjJEMDAxRjRBOUYgLyogQ29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTQ0RUMzRUE4MjQ3RjVDMDgwMDU5NDg5QyAvKiBfV0tEcmFn
QWN0aW9uc0ludGVybmFsLmggKi8sCiAJCQkJMzczRDEyMjExOEE0NzMwMTAwNjZEOUNDIC8qIF9X
S0ZyYW1lSGFuZGxlLmggKi8sCiAJCQkJMzczRDEyMjAxOEE0NzMwMTAwNjZEOUNDIC8qIF9XS0Zy
YW1lSGFuZGxlLm1tICovLAogCQkJCTM3M0QxMjI2MThBNDczRjYwMDY2RDlDQyAvKiBfV0tGcmFt
ZUhhbmRsZUludGVybmFsLmggKi8sCkBAIC0xMDUyNyw2ICsxMDUzMCw3IEBACiAJCQkJQTFBNEZF
NUExOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MUE0RkU2MTE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTFBNEZFNUMxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ0RUMzRUE5MjQ3RjVDMDkwMDU5NDg5QyAvKiBfV0tE
cmFnQWN0aW9uc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlBODczQTE4QkJGRTBG
MDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5QTg3
M0MxOEJCRkYwNzAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFEMDFCQzkxOTA1RDM3RTAwQzlDNDVGIC8qIF9XS0Vycm9yUmVjb3ZlcnlB
dHRlbXB0aW5nLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCmluZGV4IDRiYmU4MTdhMTQ3
MWVjYmNlYzRiNDA5YmQ2MjhlOGU2NTNkNjZiMTUuLjNkMWEwYTM1ZmYyNTIxZDE5NGRlZTU2MWFi
ODkxNzRkZmUxZWY0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQpAQCAtNjgsNiArNjgsMjAgQEAgV2ViRHJh
Z0NsaWVudDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogCiAjaWYgUExBVEZPUk0o
TUFDKQogCitzdGF0aWMgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGtpdChXZWJDb3JlOjpEcmFn
RGVzdGluYXRpb25BY3Rpb24gYWN0aW9uKQoreworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAg
Y2FzZSBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkRIVE1MOgorICAgICAgICByZXR1
cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhUTUw7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFn
RGVzdGluYXRpb25BY3Rpb246OkVkaXQ6CisgICAgICAgIHJldHVybiBXZWJEcmFnRGVzdGluYXRp
b25BY3Rpb25FZGl0OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpM
b2FkOgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlv
bkFjdGlvbk5vbmU7Cit9CisKIGJvb2wgV2ViRHJhZ0NsaWVudDo6dXNlTGVnYWN5RHJhZ0NsaWVu
dCgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODYsNyArMTAwLDcgQEAgc3RhdGljIFdlYkhU
TUxWaWV3ICpnZXRUb3BIVE1MVmlldyhGcmFtZSogZnJhbWUpCiAKIHZvaWQgV2ViRHJhZ0NsaWVu
dDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhKQogewot
ICAgIFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyB3
aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbjpzdGF0aWNfY2FzdDxXZWJEcmFnRGVzdGlu
YXRpb25BY3Rpb24+KGFjdGlvbikgZm9yRHJhZ2dpbmdJbmZvOmRyYWdEYXRhLnBsYXRmb3JtRGF0
YSgpXTsKKyAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dl
YlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb246a2l0KGFjdGlvbikgZm9yRHJh
Z2dpbmdJbmZvOmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpXTsKIH0KIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMmZhNzFlYTI1YTkxNTExZTAyNTMx
MjRkNmIzNjg3Mzc3MmNlODU2OC4uYzU3ZDJkZTI3OGEzZDU1NzVkY2VmYzFlZDAwY2QwNWViYjg5
ZWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAt
MTEyLDcgKzExMiw2IEBACiAjaW1wb3J0ICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIK
ICNpbXBvcnQgIldlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViVGV4
dEl0ZXJhdG9yLmgiCi0jaW1wb3J0ICJXZWJVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJVSURl
bGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCIK
ICNpbXBvcnQgIldlYlZpZXdHcm91cC5oIgpAQCAtNTc3LDYgKzU3Niw1MCBAQCAtICh2b2lkKWNs
ZWFyVGFyZ2V0OwogI2VuZGlmCiBAZW5kCiAKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorc3Rh
dGljIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrKFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrKQor
eworICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHJlc3VsdDsK
KyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1MKQorICAg
ICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6REhUTUwpOwor
ICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCkKKyAgICAg
ICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQpOworICAg
IGlmIChhY3Rpb25NYXNrICYgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCkKKyAgICAgICAg
cmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK1dlYkNvcmU6OkRyYWdPcGVyYXRpb24gY29yZURyYWdPcGVyYXRp
b25NYXNrKENvY29hRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbiByZXN1bHQgPSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZTsKKworI2lmIFVT
RShBUFBLSVQpCisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkNvcHkpCisgICAg
ICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCB8
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFn
T3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlm
IChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgfCBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvblBy
aXZhdGUpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+KHJlc3VsdCB8IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICBpZiAob3Bl
cmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAg
ICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCB8
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworI2Vsc2UKKyAgICAvLyBTZWUgPFVJS2l0
L1VJRHJhZ2dpbmdfUHJpdmF0ZS5oPi4KKyAgICBjb25zdGV4cHIgdWludDY0X3QgX1VJRHJhZ09w
ZXJhdGlvbkNvcHkgPSAxOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBfVUlEcmFnT3BlcmF0aW9u
TW92ZSA9IDE2OworICAgIGlmIChvcGVyYXRpb24gJiBfVUlEcmFnT3BlcmF0aW9uQ29weSkKKyAg
ICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0
IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBfVUlE
cmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
RHJhZ09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworI2Vu
ZGlmIC8vIFVTRShBUFBLSVQpCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmIC8vIEVO
QUJMRShEUkFHX1NVUFBPUlQpCisKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdl
YkZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgV2ViQ29yZTo6RmluZE9wdGlvbnMgZmluZE9w
dGlvbnM7CkBAIC0xOTA5LDggKzE5NTIsOCBAQCAtIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24p
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaQogCiAt
IChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9u
PilzZXNzaW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQp
Z2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24KIHsKLSAgICBhdXRv
IGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4o
b3BlcmF0aW9uKTsKLSAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbk1hc2sgPSBPcHRpb25TZXQ8V2Vi
Q29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbc2VsZiBkcmFnRGVzdGluYXRp
b25BY3Rpb25NYXNrRm9yU2Vzc2lvbjpzZXNzaW9uXSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9u
TWFzayA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhvcGVyYXRpb24pOworICAgIGF1dG8gZHJhZ0Rl
c3RpbmF0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFtzZWxmIGRyYWdE
ZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JTZXNzaW9uOnNlc3Npb25dKTsKICAgICByZXR1cm4geyBz
ZXNzaW9uLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50UG9zaXRpb24pLCBXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsUG9zaXRpb24pLCBkcmFnT3BlcmF0aW9uTWFzaywgV2Vi
Q29yZTo6RHJhZ0FwcGxpY2F0aW9uTm9uZSwgZHJhZ0Rlc3RpbmF0aW9uTWFzayB9OwogfQogCkBA
IC0xOTI3LDEyICsxOTcwLDE0IEBAIC0gKHVpbnQ2NF90KV91cGRhdGVkRGF0YUludGVyYWN0aW9u
OihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpCiAgICAgYXV0byBk
cmFnRGF0YSA9IFtzZWxmIGRyYWdEYXRhRm9yU2Vzc2lvbjpzZXNzaW9uIGNsaWVudDpjbGllbnRQ
b3NpdGlvbiBnbG9iYWw6Z2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOm9wZXJhdGlvbl07CiAgICAg
cmV0dXJuIF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdE
YXRhKTsKIH0KKwogLSAodm9pZClfZXhpdGVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vz
c2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1Bv
aW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCiB7CiAgICAg
V2ViVGhyZWFkTG9jaygpOwogICAgIGF1dG8gZHJhZ0RhdGEgPSBbc2VsZiBkcmFnRGF0YUZvclNl
c3Npb246c2Vzc2lvbiBjbGllbnQ6Y2xpZW50UG9zaXRpb24gZ2xvYmFsOmdsb2JhbFBvc2l0aW9u
IG9wZXJhdGlvbjpvcGVyYXRpb25dOwogICAgIF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJvbGxl
cigpLmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwogfQorCiAtICh2b2lkKV9wZXJmb3JtRGF0YUludGVy
YWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50
UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0
X3Qpb3BlcmF0aW9uCiB7CiAgICAgW3NlbGYgX3RyeVRvUGVyZm9ybURhdGFJbnRlcmFjdGlvbjpz
ZXNzaW9uIGNsaWVudDpjbGllbnRQb3NpdGlvbiBnbG9iYWw6Z2xvYmFsUG9zaXRpb24gb3BlcmF0
aW9uOm9wZXJhdGlvbl07CkBAIC02NzI0LDcgKzY3NjksNyBAQCAtIChXZWJDb3JlOjpEcmFnQXBw
bGljYXRpb25GbGFncylhcHBsaWNhdGlvbkZsYWdzOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdn
aW5nSQogCiAtIChPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPilhY3Rp
b25NYXNrRm9yRHJhZ2dpbmdJbmZvOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwog
ewotICAgIHJldHVybiBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6
ZnJvbVJhdyhbW3NlbGYgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6c2VsZiBkcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIHJl
dHVybiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbW3NlbGYgX1VJRGVsZWdhdGVGb3J3
YXJkZXJdIHdlYlZpZXc6c2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJ
bmZvOmRyYWdnaW5nSW5mb10pOwogfQogCiAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdFbnRl
cmVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwpAQCAtNjczMiw3ICs2Nzc3LDcg
QEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nRW50ZXJlZDooaWQgPE5TRHJhZ2dpbmdJbmZv
PilkcmFnZ2luZ0luZm8KICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5m
byBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNv
cmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdp
bmRvd10pKTsKIAotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywg
Y2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFn
Z2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9u
RmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFn
Z2luZ0luZm9dKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8s
IGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2lu
Z0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwog
ICAgIHJldHVybiBjb3JlKHNlbGYpLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdE
YXRhKTsKIH0KIApAQCAtNjc0NSw3ICs2NzkwLDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdn
aW5nVXBkYXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0lu
Zm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKIAotICAgIFdlYkNvcmU6OkRy
YWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYg
YWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICBXZWJDb3JlOjpE
cmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09w
ZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwg
W3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9y
RHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwogICAgIHJldHVybiBwYWdlLT5kcmFnQ29udHJv
bGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKIH0KIApAQCAtNjc1Nyw3ICs2ODAyLDcgQEAg
LSAodm9pZClkcmFnZ2luZ0V4aXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8K
IAogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9j
YXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9p
bnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwotICAg
IFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWws
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJ
bmZvXSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGll
bnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZv
XSk7CiAgICAgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRXhpdGVkKGRyYWdEYXRhKTsKIH0K
IApAQCAtNjc3MCw3ICs2ODE1LDcgQEAgLSAoQk9PTClwZXJmb3JtRHJhZ09wZXJhdGlvbjooaWQg
PE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBj
bGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdM
b2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAgICBhdXRvKiBkcmFnRGF0YSA9IG5ldyBXZWJD
b3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOworICAgIGF1
dG8qIGRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50
LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10p
OwogCiAgICAgTlNBcnJheSogdHlwZXMgPSBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJk
LnR5cGVzOwogICAgIGlmICghW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRU
eXBlXSAmJiBbdHlwZXMgY29udGFpbnNPYmplY3Q6V2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNl
UGFzdGVib2FyZFR5cGUoKV0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDU3NjYyOWFiYTY5YTZjYTBiZjU2YTViOWU2OWEz
MzE5MTI3MzgyYzguLmZjODYzNDg3YjE2YTljNjQ4YTFhMDJjOTkwZTYwYWUxYzMzMTkyYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM2LDYgKzM2LDcg
QEAKICNpZmRlZiBfX2NwbHVzcGx1cwogCiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9GaW5kT3B0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudEVudW1zLmg+CkBAIC04OSw3ICs5MCwxNiBAQCBj
bGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIAogI2lmZGVmIF9fY3BsdXNwbHVz
CiAKLVdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlv
bnMpOworI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisjaWYgVVNFKEFQUEtJVCkKK3R5cGVkZWYg
TlNEcmFnT3BlcmF0aW9uIENvY29hRHJhZ09wZXJhdGlvbjsKKyNlbHNlCit0eXBlZGVmIHVpbnQ2
NF90IENvY29hRHJhZ09wZXJhdGlvbjsKKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soQ29jb2FEcmFnT3BlcmF0aW9uKTsK
KyNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQorCitXZWJDb3JlOjpGaW5kT3B0aW9ucyBj
b3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyk7CiAKIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRN
aWxlc3RvbmU+IGNvcmVMYXlvdXRNaWxlc3RvbmVzKFdlYkxheW91dE1pbGVzdG9uZXMpOwogV2Vi
TGF5b3V0TWlsZXN0b25lcyBraXRMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpM
YXlvdXRNaWxlc3RvbmU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggZDQzYzJlNDRlYzgwMGNkNTUz
OWEyZDAyMGM5ZGZhNGE1MzdkNTAxYi4uMzEzMjYwMzZhOGE0MTI1NzdlYzFjYTE5MTdkYzNmZjg2
MjA3ZTI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCw2ICs2MCwyMCBAQCBzdGF0aWMgRFdPUkQg
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhEcmFnT3BlcmF0aW9uIG9w
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBXZWJEcmFnRGVzdGluYXRpb25BY3Rp
b24ga2l0KERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rp
b24pIHsKKyAgICBjYXNlIERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6REhUTUw6CisgICAgICAgIHJl
dHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25ESFRNTDsKKyAgICBjYXNlIERyYWdEZXN0aW5h
dGlvbkFjdGlvbjo6RWRpdDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlv
bkVkaXQ7CisgICAgY2FzZSBEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQ6CisgICAgICAgIHJl
dHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkOworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsKK30K
KwogV2ViRHJhZ0NsaWVudDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpIAogewpAQCAtNzIsNyArODYsNyBAQCB2b2lkIFdlYkRyYWdDbGll
bnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlv
biBhY3RpbwogICAgIC8vc28gd2UganVzdCBjYWxsIHRoZSBkZWxlZ2F0ZSwgYW5kIGRvbid0IHdv
cnJ5IGFib3V0IHdoZXRoZXIgaXQncyBpbXBsZW1lbnRlZAogICAgIENPTVB0cjxJV2ViVUlEZWxl
Z2F0ZT4gZGVsZWdhdGVSZWYgPSAwOwogICAgIGlmIChTVUNDRUVERUQobV93ZWJWaWV3LT51aURl
bGVnYXRlKCZkZWxlZ2F0ZVJlZikpKQotICAgICAgICBkZWxlZ2F0ZVJlZi0+d2lsbFBlcmZvcm1E
cmFnRGVzdGluYXRpb25BY3Rpb24obV93ZWJWaWV3LCAoV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KWFjdGlvbiwgZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOworICAgICAgICBkZWxlZ2F0ZVJlZi0+
d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24obV93ZWJWaWV3LCBraXQoYWN0aW9uKSwg
ZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogfQogCiBEcmFnU291cmNlQWN0aW9uIFdlYkRyYWdD
bGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRv
d1BvaW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400680</attachid>
            <date>2020-05-30 14:51:35 -0700</date>
            <delta_ts>2020-05-31 11:09:11 -0700</delta_ts>
            <desc>Patch v9</desc>
            <filename>bug-212507-20200530145333.patch</filename>
            <type>text/plain</type>
            <size>34645</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg2NGJiZTEzNTJhYzhk
ZWUxOTQyOTkwMjk4ZTQyNjE3YWM0OTBjOS4uM2VjYjg1MTY0YTZiODNlZWRhMzI5ZTY5ZDJhYzZi
ZmRkMDE4MjlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA1LTI5ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3Rz
IHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlIHR5cGVzIGFuZCB7V2ViLFdLfURyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2svTlNEcmFnT3BlcmF0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMTI1MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgKiBwYWdlL0RyYWdBY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnRGVzdGlu
YXRpb25BY3Rpb24pOiBBZGQuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rp
b25BbnkpOiBEZWxldGUuCisgICAgICAgIC0gUmVuYW1lIERyYWdEZXN0aW5hdGlvbkFjdGlvbkFu
eSgpIHRvCisgICAgICAgICAgYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgdG8gbWF0Y2ggV2Vi
S2l0IHN0eWxlLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIC0gVXBk
YXRlIHRvIHVzZSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKS4KKwogMjAyMC0wNS0zMCAgQW5k
eSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0FwcGxlIFBheV0gU3VwcG9y
dCBwZXJjZW50YWdlIGJvcmRlci1yYWRpdXMgdmFsdWVzIGluIC1hcHBsZS1wYXktYnV0dG9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDg1YTM5ZTM2ZDY5MzU4ZWMxNDhlMTE5MGUxMGIxYTcwM2FlNDJjYmYuLmQyM2Jj
ODk3NTk3ZGYzZjc1ODE0ZjM5ZTYyYzcwZjU5YWU5Yjg5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMjAtMDUtMjkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMg
YW5kIHtXZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay9OU0RyYWdPcGVyYXRpb24KKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlv
bnNJbnRlcm5hbC5oOiBBZGQuCisgICAgICAgIChXZWJLaXQ6OmNvcmVEcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrKToKKyAgICAgICAgKFdlYktpdDo6Y29yZURyYWdPcGVyYXRpb25NYXNrKToKKyAg
ICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbnMgdG8gYXZvaWQgY2FzdGluZy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6ZHJhZ2dpbmdVcGRhdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdn
aW5nRXhpdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3Bl
cmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnRGF0YUZvckRyb3BTZXNzaW9uOmRy
YWdEZXN0aW5hdGlvbkFjdGlvbjpdKToKKyAgICAgICAgLSBNYWtlIHVzZSBvZiBjb3JlRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTWFzaygpIGFuZAorICAgICAgICAgIGNvcmVEcmFnT3BlcmF0aW9uTWFz
aygpLgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAtIEFkZCBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggdG8gcHJvamVjdC4KKwogMjAyMC0wNS0z
MCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IERlcHJlY2F0ZSBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwppbmRleCA1YzIwOTRhOTVjODM0ZWQzM2U0OWI1NTdlYjAwMmQzMGNkZGExOGYx
Li4xZjE5ZDgyZjg2MmIyMWVmMTAwZjg2ZGJjYzIwYzA4NDdhOGU4NzkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjAtMDUtMjkgIERhdmlkIEtpbHpl
ciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29u
dmVydCBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHtXZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzay9OU0RyYWdPcGVyYXRpb24KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIx
MjUwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06CisgICAgICAgIChraXQpOgorICAgICAgICAt
IEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9uIHRvIGF2b2lkIGNhc3RpbmcuCisgICAgICAgIChXZWJE
cmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbik6CisgICAgICAgIC0g
TWFrZSB1c2Ugb2Yga2l0KCkgY29udmVyc2lvbiBmdW5jdGlvbi4KKyAgICAgICAgKiBXZWJWaWV3
L1dlYlZpZXcubW06CisgICAgICAgIChjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk6Cisg
ICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2spOgorICAgICAgICAtIEFkZCBjb252ZXJzaW9u
IGZ1bmN0aW9ucyB0byBhdm9pZCBjYXN0aW5nLgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdEYXRh
Rm9yU2Vzc2lvbjpjbGllbnQ6Z2xvYmFsOm9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmll
dyBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdn
aW5nRW50ZXJlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ1VwZGF0ZWQ6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFeGl0ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcg
cGVyZm9ybURyYWdPcGVyYXRpb246XSk6CisgICAgICAgIC0gTWFrZSB1c2Ugb2YgY29yZURyYWdE
ZXN0aW5hdGlvbkFjdGlvbk1hc2soKSBhbmQKKyAgICAgICAgICBjb3JlRHJhZ09wZXJhdGlvbk1h
c2soKSBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRl
cm5hbC5oOgorICAgICAgICAoQ29jb2FEcmFnT3BlcmF0aW9uKToKKyAgICAgICAgLSBBZGQgdHlw
ZWRlZiBzbyBjb3JlRHJhZ09wZXJhdGlvbk1hc2soKSBtYXkgYmUgc2hhcmVkIGFjcm9zcworICAg
ICAgICAgIHBsYXRmb3Jtcy4KKyAgICAgICAgKGNvcmVEcmFnT3BlcmF0aW9uTWFzayk6IEFkZCBk
ZWNsYXJhdGlvbi4KKyAgICAgICAgKGNvcmVPcHRpb25zKTogUmVtb3ZlIHJlZHVuZGFudCBwYXJh
bWV0ZXIgbmFtZS4KKwogMjAyMC0wNS0yOSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgW0FwcGxlIFBheV0gUmVtb3ZlIGNvbmRpdGlvbmFscyBmb3IgRU5BQkxFX0FQ
UExFX1BBWV9TRVNTSU9OX1YoM3w0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDMz
ZGVjOGQyN2Q2NWNkMGRmOWFhMTRiYjVhOTMyNzdjODljZTNjZTEuLjIwZDc3Njg3N2QzODBiYmFi
N2ZlOTc5OTdhYjUxNWI1ZTQzZjAwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMC0wNS0yOSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIERvbid0IHVzZSBjYXN0cyB0byBjb252ZXJ0IGJldHdlZW4gV2ViQ29y
ZSB0eXBlcyBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrL05TRHJhZ09wZXJh
dGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNTA3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5jcHA6CisgICAgICAgIChraXQpOgorICAgICAgICAtIEFkZCBjb252ZXJzaW9uIGZ1
bmN0aW9uIHRvIGF2b2lkIGNhc3RpbmcuCisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojp3aWxsUGVy
Zm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbik6CisgICAgICAgIC0gTWFrZSB1c2Ugb2Yga2l0KCkg
Y29udmVyc2lvbiBmdW5jdGlvbi4KKwogMjAyMC0wNS0xOSAgRnVqaWkgSGlyb25vcmkgIDxIaXJv
bm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIEFTU0VSVChtX2VnbERp
c3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpIGZhaWxzIGluIH5QbGF0Zm9ybURpc3BsYXkoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQWN0aW9ucy5oCmluZGV4IGM4MTc3NDAyZjk3YzUwODNiNzU4MDgxMDBlM2Rh
NzhjMjA4ZmZjYjQuLmIxZmEyYjZlYzBmY2MzNTdhNjRkYzU5YWZhOWUwZWJmYmQwYWYwODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKQEAgLTMyLDE0ICszMiwxNCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLS8vIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBtdXN0IGJl
IGtlcHQgaW4gc3luYyB3aXRoIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQgV0tEcmFnRGVz
dGluYXRpb25BY3Rpb24uCisvLyBTZWUgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFuZCBXS0Ry
YWdEZXN0aW5hdGlvbkFjdGlvbi4KIGVudW0gY2xhc3MgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIDog
dWludDhfdCB7CiAgICAgREhUTUwgPSAxLAogICAgIEVkaXQgID0gMiwKICAgICBMb2FkICA9IDQK
IH07CiAKLWlubGluZSBjb25zdGV4cHIgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4g
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55KCkKK2NvbnN0ZXhwciBPcHRpb25TZXQ8RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uPiBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKQogewogICAgIHJldHVybiBP
cHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiB7IERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6
REhUTUwsIERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6RWRpdCwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
OjpMb2FkIH07CiB9CkBAIC02MCw3ICs2MCw3IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgRHJhZ1Nv
dXJjZUFjdGlvbkFueSAgICAgICAgICA9IFVJTlRfTUFYCiB9IERyYWdTb3VyY2VBY3Rpb247CiAK
LS8vIE1hdGNoZXMgTlNEcmFnT3BlcmF0aW9uLgorLy8gU2VlIE5TRHJhZ09wZXJhdGlvbiBhbmQg
X1VJRHJhZ09wZXJhdGlvbi4KIHR5cGVkZWYgZW51bSB7CiAgICAgRHJhZ09wZXJhdGlvbk5vbmUg
ICAgPSAwLAogICAgIERyYWdPcGVyYXRpb25Db3B5ICAgID0gMSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnRGF0YS5oCmluZGV4IDY1MTAxODcwYzE5OWFhYWJkZjE5MGQ3ZDZiNDVlNjk0MzhkOWRiYjIu
LjQyMWEyOTk0M2IzZDEwZDQ4NWRhNWNlOWVmZDUzZTNmYWZiYzBmMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0RhdGEuaApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFz
cyBEcmFnZ2luZ1B1cnBvc2UgeyBGb3JFZGl0aW5nLCBGb3JGaWxlVXBsb2FkLCBGb3JDb2xvckNv
bnRyb2wgfTsKIAogICAgIC8vIGNsaWVudFBvc2l0aW9uIGlzIHRha2VuIHRvIGJlIHRoZSBwb3Np
dGlvbiBvZiB0aGUgZHJhZyBldmVudCB3aXRoaW4gdGhlIHRhcmdldCB3aW5kb3csIHdpdGggKDAs
MCkgYXQgdGhlIHRvcCBsZWZ0Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFS
ZWYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBs
aWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGFjdGlvbk1hc2sg
PSBEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkoKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0Rh
dGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBE
cmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFn
RGVzdGluYXRpb25BY3Rpb24+IGFjdGlvbk1hc2sgPSBEcmFnRGVzdGluYXRpb25BY3Rpb25Bbnko
KSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFn
T3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9w
dGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFn
QXBwbGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURy
YWdEZXN0aW5hdGlvbkFjdGlvbigpKTsKICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCB1
c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0YQogICAgIC8vIGlzIGluaXRp
YWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVjdG9yLgogICAgIERy
YWdEYXRhKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRkOGQyMDNmZTgz
MDRjYjM2ODBjOGI2YjMzN2VmMjEzYTE4YWMyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KKyNp
bXBvcnQgPFdlYktpdC9XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworaW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+
IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFj
dGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBy
ZXN1bHQ7CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhUTUwpCisg
ICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpESFRNTCk7
CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCkKKyAgICAgICAg
cmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQpOworICAgIGlm
IChhY3Rpb24gJiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQpCisgICAgICAgIHJlc3VsdC5h
ZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCisjaWYgVVNFKEFQUEtJVCkKK2lubGluZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhOU0RyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQoreworICAg
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gcmVzdWx0ID0gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5v
bmU7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJl
c3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCB8IFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0
aW9uTGluaykKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChvcGVy
YXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQgPSBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihyZXN1bHQgfCBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvblByaXZhdGUp
CisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJl
c3VsdCB8IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICBpZiAob3BlcmF0aW9u
ICYgTlNEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUp
OworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAgIHJl
c3VsdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCB8IFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYg
Ly8gVVNFKEFQUEtJVCkKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDI0MjFhYjgyM2M2MTM2ZTZjMTc2
NmU2YWZkNzQ2YzhjZTczZTg3OWMuLmQyNWVlYTA3YzFhYTY1ZGQ2MGI3ZWIxYWNiZDU5M2FkNGQ5
YjM0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CkBAIC03Niw2ICs3Niw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgIl9X
S0RyYWdBY3Rpb25zSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIgogI2ltcG9y
dCA8Q2FyYm9uL0NhcmJvbi5oPgpAQCAtMzk0NSw4ICszOTQ2LDkgQEAgTlNEcmFnT3BlcmF0aW9u
IFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2lu
Z0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBv
aW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdl
YkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8u
ZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgYXV0byBkcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrID0gT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlv
bj46OmZyb21SYXcoW21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5n
SW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFn
Z2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRp
b25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBk
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKTsKKyAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbbV92aWV3IF93ZWJfZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIGF1dG8g
ZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0Rh
dGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlvbk1hc2ssIGFwcGxp
Y2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZv
KSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CiAKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVu
dERyYWdJbmZvcm1hdGlvbigpOwogICAgIG1fcGFnZS0+ZHJhZ0VudGVyZWQoZHJhZ0RhdGEsIGRy
YWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CkBAIC0zOTU4LDggKzM5NjAsOSBA
QCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFn
Z2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQo
W21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZp
ZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBv
aW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAg
ICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIFdlYkNvcmU6OkRyYWdE
YXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCks
IGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOworICAgIGF1dG8gZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFtt
X3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJ
bmZvXSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uID0gY29yZURyYWdPcGVyYXRpb25NYXNrKGRy
YWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOworICAgIFdlYkNvcmU6OkRy
YWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRyYWdPcGVyYXRp
b24sIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJh
Z2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CiAgICAgbV9wYWdlLT5kcmFn
VXBkYXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsK
IAogICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9wYWdlLT5jdXJy
ZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsKQEAgLTM5ODMsNyArMzk4Niw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OmRyYWdnaW5nRXhpdGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJh
Z2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZl
cnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJ
bmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRy
YWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2Vk
KCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdn
aW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0lu
Zm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWco
bV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKICAgICBtX3BhZ2UtPmRy
YWdFeGl0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7
CiAgICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKICAgICBkcmFnZ2lu
Z0luZm8ubnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1faW5pdGlhbE51bWJlck9mVmFsaWRJ
dGVtc0ZvckRyb3A7CkBAIC0zOTk5LDcgKzQwMDIsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJm
b3JtRHJhZ09wZXJhdGlvbihpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJ
bmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9p
bnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0
aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSAqZHJhZ0RhdGEg
PSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRv
cmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdE
YXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWws
IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgp
LCBkcmFnZ2luZ0luZm8pKTsKIAogICAgIE5TQXJyYXkgKnR5cGVzID0gZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nUGFzdGVib2FyZC50eXBlczsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGEzNDRjZjVmYmQ2MGE1NDY3
NWZmZDI4MmZjZTAwNmFiY2M2OTg4ZDAuLjI2MmIzMzQ3YTdkOWIzZWM4YjI0MTBkZmM1MzQwZWVm
NjZjMjhlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtODYsNiArODYsNyBAQAogI2ltcG9ydCAiV2Vi
UGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9y
dCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLRHJhZ0Fj
dGlvbnNJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRWxlbWVudEFjdGlvbi5oIgogI2ltcG9ydCAi
X1dLRWxlbWVudEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGb2N1c2VkRWxlbWVudElu
Zm8uaCIKQEAgLTczMjAsOCArNzMyMSw3IEBAIC0gKFdlYkNvcmU6OkRyYWdEYXRhKWRyYWdEYXRh
Rm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGRyYWdEZXN0CiAgICAg
W3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24g
b3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBvdXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKIAogICAgIFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPihzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24gPyBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uRXZlcnkgOiAoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5ICYgfldl
YkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKSk7Ci0gICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rp
b25NYXNrID0gT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46OmZyb21S
YXcoZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKTsKLSAgICByZXR1cm4geyBzZXNzaW9uLCBXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2Jh
bCksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25Ob25lLCBkcmFn
RGVzdGluYXRpb25BY3Rpb25NYXNrIH07CisgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6
cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwp
LCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uTm9uZSwgV2ViS2l0
Ojpjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkcmFnRGVzdGluYXRpb25BY3Rpb24pIH07
CiB9CiAKIC0gKHZvaWQpY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGRlZTM0ZDIwZmFl
NTE0NWVmMjgwZTY1NzY0NzRlZWIwMjJmOTk2NjQuLmUyNmI0MDNmODZkODYwNzBhNzdiN2VhZTRm
MzFmNGNlYzYxOGY1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtOTM3LDYgKzkzNyw3IEBACiAJCTQ0ODI3MzQ3MjQ1MjhGNjAwMEE5
NTQ5MyAvKiBDb2NvYUltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NDgyNzM0NjI0NTI4RjYwMDBBOTU0OTMgLyogQ29jb2FJbWFnZS5oICovOyB9
OwogCQk0NDlEOTBEQTIxRkRDMzBCMDBGNjc3QzAgLyogTG9jYWxBdXRoZW50aWNhdGlvblNvZnRM
aW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ5
RDkwRDgyMUZENjNGRTAwRjY3N0MwIC8qIExvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbSAq
LzsgfTsKIAkJNDRFOTM2RkQyNDQ3QzJEODAwOUZBM0UzIC8qIExlZ2FjeUN1c3RvbVByb3RvY29s
SUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0RTkz
NkZDMjQ0N0MyNTYwMDlGQTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElELmggKi87IH07CisJ
CTQ0RUMzRUE5MjQ3RjVDMDkwMDU5NDg5QyAvKiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEVDM0VBODI0N0Y1
QzA4MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oICovOyB9OwogCQk0NjBGNDg4
RjFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNDYwRjQ4OTAxRjk5NkY3MTAwQ0Y0Qjg3
IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MEY0ODhFMUY5OTZGNkMwMENGNEI4
NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CiAJCTQ2
MUNDQ0E1MjMxNDg1QTcwMEI2NTlCOSAvKiBVSVJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMyMzY4NTIzMTQ4MzNG
MDBBNDhGQTcgLyogVUlSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovOyB9OwpAQCAtMzUzNiw2ICsz
NTM3LDcgQEAKIAkJNDQ5RDkwRDgyMUZENjNGRTAwRjY3N0MwIC8qIExvY2FsQXV0aGVudGljYXRp
b25Tb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExv
Y2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDRBNDgxQzYyMUYyRDI3QjAwRjJGOTE5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGlj
YXRpb25YUENDb25zdGFudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xpZW50Q2VydGlmaWNh
dGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ0RTkzNkZDMjQ0N0MyNTYwMDlGQTNFMyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbElE
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeUN1c3RvbVByb3RvY29s
SUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRFQzNFQTgyNDdGNUMwODAwNTk0
ODlDIC8qIF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjAzMDExQTIzNEJFMzFEMDA5QzgyMTcgLyogV2ViQmFja0ZvcndhcmRDYWNoZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENh
Y2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwMzAxMUIyMzRCRTMxRTAw
OUM4MjE3IC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQmFja0ZvcndhcmRDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjBGNDg4RDFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CkBAIC03NTExLDYgKzc1MTMsNyBAQAogCQkzN0RGQTZGRTE4MTBCQjJEMDAxRjRBOUYgLyogQ29j
b2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ0RUMz
RUE4MjQ3RjVDMDgwMDU5NDg5QyAvKiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggKi8sCiAJCQkJ
MzczRDEyMjExOEE0NzMwMTAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlLmggKi8sCiAJCQkJMzcz
RDEyMjAxOEE0NzMwMTAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlLm1tICovLAogCQkJCTM3M0Qx
MjI2MThBNDczRjYwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZUludGVybmFsLmggKi8sCkBAIC0x
MDUyNyw2ICsxMDUzMCw3IEBACiAJCQkJQTFBNEZFNUExOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rv
d25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUE0RkU2MTE4REQ1NEE0MDBCNUVBOEEgLyog
X1dLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBNEZFNUMxOERDRTlG
QTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ0
RUMzRUE5MjQ3RjVDMDkwMDU5NDg5QyAvKiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzNzlBODczQTE4QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5QTg3M0MxOEJCRkYwNzAwNTg4QUYyIC8qIF9XS0Vs
ZW1lbnRBY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEMDFCQzkxOTA1RDM3
RTAwQzlDNDVGIC8qIF9XS0Vycm9yUmVjb3ZlcnlBdHRlbXB0aW5nLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50Lm1tCmluZGV4IDRiYmU4MTdhMTQ3MWVjYmNlYzRiNDA5YmQ2MjhlOGU2NTNkNjZi
MTUuLjNkMWEwYTM1ZmYyNTIxZDE5NGRlZTU2MWFiODkxNzRkZmUxZWY0M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5tbQpAQCAtNjgsNiArNjgsMjAgQEAgV2ViRHJhZ0NsaWVudDo6V2ViRHJhZ0NsaWVudChXZWJW
aWV3KiB3ZWJWaWV3KQogCiAjaWYgUExBVEZPUk0oTUFDKQogCitzdGF0aWMgV2ViRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uIGtpdChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uKQor
eworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnRGVzdGluYXRp
b25BY3Rpb246OkRIVE1MOgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
REhUTUw7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQ6Cisg
ICAgICAgIHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25FZGl0OworICAgIGNhc2UgV2Vi
Q29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkOgorICAgICAgICByZXR1cm4gV2ViRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbk5vbmU7Cit9CisKIGJvb2wgV2Vi
RHJhZ0NsaWVudDo6dXNlTGVnYWN5RHJhZ0NsaWVudCgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtODYsNyArMTAwLDcgQEAgc3RhdGljIFdlYkhUTUxWaWV3ICpnZXRUb3BIVE1MVmlldyhGcmFt
ZSogZnJhbWUpCiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRp
b25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIFtbbV93ZWJWaWV3IF9VSURlbGVnYXRl
Rm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFj
dGlvbjpzdGF0aWNfY2FzdDxXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24+KGFjdGlvbikgZm9yRHJh
Z2dpbmdJbmZvOmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpXTsKKyAgICBbW21fd2ViVmlldyBfVUlE
ZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgd2lsbFBlcmZvcm1EcmFnRGVzdGlu
YXRpb25BY3Rpb246a2l0KGFjdGlvbikgZm9yRHJhZ2dpbmdJbmZvOmRyYWdEYXRhLnBsYXRmb3Jt
RGF0YSgpXTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggODdjNzc4MjAxMmNiYmVkYjE5NDk3M2M4NzAyMTk3ZDcwYzQ0ZjZlMy4uYjc1NjUz
YWM5YjQyYjBiOTNjOWViMmYxMjVmYjJmZWVlNDY5N2M4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTEyLDcgKzExMiw2IEBACiAjaW1wb3J0ICJX
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKICNpbXBvcnQgIldlYlRleHRDb21wbGV0aW9u
Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViVGV4dEl0ZXJhdG9yLmgiCi0jaW1wb3J0ICJXZWJV
SURlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJVSURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAi
V2ViVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCIKICNpbXBvcnQgIldlYlZpZXdHcm91cC5oIgpA
QCAtNTc4LDYgKzU3Nyw1MCBAQCAtICh2b2lkKWNsZWFyVGFyZ2V0OwogI2VuZGlmCiBAZW5kCiAK
KyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorc3RhdGljIE9wdGlvblNldDxXZWJDb3JlOjpEcmFn
RGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFdlYkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrKQoreworICAgIE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb24+IHJlc3VsdDsKKyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRy
YWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1MKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbjo6REhUTUwpOworICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFn
RGVzdGluYXRpb25BY3Rpb246OkVkaXQpOworICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTG9hZCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVz
dGluYXRpb25BY3Rpb246OkxvYWQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1dlYkNvcmU6
OkRyYWdPcGVyYXRpb24gY29yZURyYWdPcGVyYXRpb25NYXNrKENvY29hRHJhZ09wZXJhdGlvbiBv
cGVyYXRpb24pCit7CisgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiByZXN1bHQgPSBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uTm9uZTsKKworI2lmIFVTRShBUFBLSVQpCisgICAgaWYgKG9wZXJhdGlv
biAmIE5TRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCB8IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5
KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVz
dWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRp
b25HZW5lcmljKQorICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPihyZXN1bHQgfCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYg
KG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvblByaXZhdGUpCisgICAgICAgIHJlc3VsdCA9IHN0
YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCB8IFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Qcml2YXRlKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTW92
ZSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4o
cmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVyYXRpb24g
JiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KHJlc3VsdCB8IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxl
dGUpOworI2Vsc2UKKyAgICAvLyBTZWUgPFVJS2l0L1VJRHJhZ2dpbmdfUHJpdmF0ZS5oPi4KKyAg
ICBjb25zdGV4cHIgdWludDY0X3QgX1VJRHJhZ09wZXJhdGlvbkNvcHkgPSAxOworICAgIGNvbnN0
ZXhwciB1aW50NjRfdCBfVUlEcmFnT3BlcmF0aW9uTW92ZSA9IDE2OworICAgIGlmIChvcGVyYXRp
b24gJiBfVUlEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0IHwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNv
cHkpOworICAgIGlmIChvcGVyYXRpb24gJiBfVUlEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAg
cmVzdWx0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ocmVzdWx0IHwgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworI2VuZGlmIC8vIFVTRShBUFBLSVQpCisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCisKIFdlYkNv
cmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CiAg
ICAgV2ViQ29yZTo6RmluZE9wdGlvbnMgZmluZE9wdGlvbnM7CkBAIC0xOTEwLDkgKzE5NTMsOSBA
QCAtIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0Zv
clNlc3Npb246KGlkIDxVSURyb3BTZXNzaQogCiAtIChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0
YUZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGNsaWVudDooQ0dQb2ludClj
bGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1
aW50NjRfdClvcGVyYXRpb24KIHsKLSAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ob3BlcmF0aW9uKTsKLSAgICBhdXRvIGRyYWdE
ZXN0aW5hdGlvbk1hc2sgPSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
Pjo6ZnJvbVJhdyhbc2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjpzZXNz
aW9uXSk7Ci0gICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNs
aWVudFBvc2l0aW9uKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbFBvc2l0aW9uKSwg
ZHJhZ09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIGRyYWdEZXN0
aW5hdGlvbk1hc2sgfTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVy
YXRpb25NYXNrKG9wZXJhdGlvbik7CisgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNr
ID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW3NlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFza0ZvclNlc3Npb246c2Vzc2lvbl0pOworICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNv
cmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnRQb3NpdGlvbiksIFdlYkNvcmU6OnJvdW5kZWRJbnRQ
b2ludChnbG9iYWxQb3NpdGlvbiksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBw
bGljYXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrIH07CiB9CiAKIC0gKHVpbnQ2
NF90KV9lbnRlcmVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBj
bGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0
aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCkBAIC0xOTI4LDEyICsxOTcxLDE0IEBA
IC0gKHVpbnQ2NF90KV91cGRhdGVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4p
c2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpCiAgICAgYXV0byBkcmFnRGF0YSA9IFtzZWxmIGRyYWdE
YXRhRm9yU2Vzc2lvbjpzZXNzaW9uIGNsaWVudDpjbGllbnRQb3NpdGlvbiBnbG9iYWw6Z2xvYmFs
UG9zaXRpb24gb3BlcmF0aW9uOm9wZXJhdGlvbl07CiAgICAgcmV0dXJuIF9wcml2YXRlLT5wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKIH0KKwogLSAodm9pZClf
ZXhpdGVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6
KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9w
ZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCiB7CiAgICAgV2ViVGhyZWFkTG9jaygpOwogICAg
IGF1dG8gZHJhZ0RhdGEgPSBbc2VsZiBkcmFnRGF0YUZvclNlc3Npb246c2Vzc2lvbiBjbGllbnQ6
Y2xpZW50UG9zaXRpb24gZ2xvYmFsOmdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjpvcGVyYXRpb25d
OwogICAgIF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0Rh
dGEpOwogfQorCiAtICh2b2lkKV9wZXJmb3JtRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vz
c2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1Bv
aW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCiB7CiAgICAg
W3NlbGYgX3RyeVRvUGVyZm9ybURhdGFJbnRlcmFjdGlvbjpzZXNzaW9uIGNsaWVudDpjbGllbnRQ
b3NpdGlvbiBnbG9iYWw6Z2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOm9wZXJhdGlvbl07CkBAIC02
NzI1LDcgKzY3NzAsNyBAQCAtIChXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncylhcHBsaWNh
dGlvbkZsYWdzOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSQogCiAtIChPcHRpb25TZXQ8
V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPilhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZv
OihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogewotICAgIHJldHVybiBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbW3NlbGYgX1VJRGVs
ZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6c2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9y
RHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIHJldHVybiBjb3JlRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFzayhbW3NlbGYgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6c2VsZiBk
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwog
fQogCiAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdFbnRlcmVkOihpZCA8TlNEcmFnZ2luZ0lu
Zm8+KWRyYWdnaW5nSW5mbwpAQCAtNjczMyw3ICs2Nzc4LDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9u
KWRyYWdnaW5nRW50ZXJlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFn
Z2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKIAotICAgIFdlYkNv
cmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwg
W3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICBXZWJD
b3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3Jl
RHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25N
YXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwogICAgIHJldHVybiBjb3JlKHNlbGYp
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKIH0KIApAQCAtNjc0Niw3
ICs2NzkxLDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nVXBkYXRlZDooaWQgPE5TRHJh
Z2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2Ry
YWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xv
YmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0s
IFtzZWxmIHdpbmRvd10pKTsKIAotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdn
aW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFw
cGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5n
SW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFn
Z2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5n
SW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFn
czpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5n
SW5mb10pOwogICAgIHJldHVybiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRy
YWdEYXRhKTsKIH0KIApAQCAtNjc1OCw3ICs2ODAzLDcgQEAgLSAodm9pZClkcmFnZ2luZ0V4aXRl
ZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KIAogICAgIFdlYkNvcmU6OkludFBv
aW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFn
Z2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRy
YWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
XSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CisgICAgV2ViQ29yZTo6
RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdP
cGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSks
IFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CiAgICAgcGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS5kcmFnRXhpdGVkKGRyYWdEYXRhKTsKIH0KIApAQCAtNjc3MSw3ICs2ODE2LDcg
QEAgLSAoQk9PTClwZXJmb3JtRHJhZ09wZXJhdGlvbjooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFn
Z2luZ0luZm8KIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBk
cmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6
Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRv
d10pKTsKLSAgICBhdXRvKiBkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2lu
Z0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBs
aWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOworICAgIGF1dG8qIGRyYWdEYXRhID0gbmV3IFdl
YkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3Bl
cmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBb
c2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOwogCiAgICAgTlNBcnJheSogdHlw
ZXMgPSBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLnR5cGVzOwogICAgIGlmICghW3R5
cGVzIGNvbnRhaW5zT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRUeXBlXSAmJiBbdHlwZXMgY29udGFp
bnNPYmplY3Q6V2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKV0pIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVy
bmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5o
CmluZGV4IDU3NjYyOWFiYTY5YTZjYTBiZjU2YTViOWU2OWEzMzE5MTI3MzgyYzguLjQ0OWZmZTMz
MzQ1MjNmYTQyYjVlMTU3MTIyOWY4ZDBiYjk1MTU4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBT
LkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM2LDYgKzM2LDcgQEAKICNpZmRlZiBfX2NwbHVzcGx1
cwogCiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlh
RWxlbWVudEVudW1zLmg+CkBAIC04OSw3ICs5MCwxNyBAQCBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlcjsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKLVdlYkNvcmU6OkZpbmRPcHRp
b25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpOworI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCisjaWYgVVNFKEFQUEtJVCkKK3R5cGVkZWYgTlNEcmFnT3BlcmF0aW9uIENvY29h
RHJhZ09wZXJhdGlvbjsKKyNlbHNlCit0eXBlZGVmIHVpbnQ2NF90IENvY29hRHJhZ09wZXJhdGlv
bjsKKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCitXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGNvcmVE
cmFnT3BlcmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRpb24pOworI2VuZGlmIC8vIEVOQUJMRShE
UkFHX1NVUFBPUlQpCisKK1dlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRP
cHRpb25zKTsKIAogT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gY29yZUxheW91
dE1pbGVzdG9uZXMoV2ViTGF5b3V0TWlsZXN0b25lcyk7CiBXZWJMYXlvdXRNaWxlc3RvbmVzIGtp
dExheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmNwcAppbmRleCBkNDNjMmU0NGVjODAwY2Q1NTM5YTJkMDIwYzlkZmE0YTUzN2Q1
MDFiLi4zMTMyNjAzNmE4YTQxMjU3N2VjMWNhMTkxN2RjM2ZmODYyMDdlMjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTYwLDYgKzYwLDIwIEBAIHN0YXRpYyBEV09SRCBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2tUb0RyYWdDdXJzb3JzKERyYWdPcGVyYXRpb24gb3ApCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorc3RhdGljIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBraXQoRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uIGFjdGlvbikKK3sKKyAgICBzd2l0Y2ggKGFjdGlvbikgeworICAgIGNhc2UgRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uOjpESFRNTDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5h
dGlvbkFjdGlvbkRIVE1MOworICAgIGNhc2UgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpFZGl0Ogor
ICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdDsKKyAgICBjYXNlIERy
YWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5h
dGlvbkFjdGlvbkxvYWQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lOworfQorCiBXZWJEcmFnQ2xpZW50OjpX
ZWJEcmFnQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykg
CiB7CkBAIC03Miw3ICs4Niw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvCiAgICAgLy9zbyB3
ZSBqdXN0IGNhbGwgdGhlIGRlbGVnYXRlLCBhbmQgZG9uJ3Qgd29ycnkgYWJvdXQgd2hldGhlciBp
dCdzIGltcGxlbWVudGVkCiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiBkZWxlZ2F0ZVJlZiA9
IDA7CiAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVsZWdhdGUoJmRlbGVnYXRlUmVm
KSkpCi0gICAgICAgIGRlbGVnYXRlUmVmLT53aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlv
bihtX3dlYlZpZXcsIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pYWN0aW9uLCBkcmFnRGF0YS5w
bGF0Zm9ybURhdGEoKSk7CisgICAgICAgIGRlbGVnYXRlUmVmLT53aWxsUGVyZm9ybURyYWdEZXN0
aW5hdGlvbkFjdGlvbihtX3dlYlZpZXcsIGtpdChhY3Rpb24pLCBkcmFnRGF0YS5wbGF0Zm9ybURh
dGEoKSk7CiB9CiAKIERyYWdTb3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFj
dGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400748</attachid>
            <date>2020-06-01 12:45:18 -0700</date>
            <delta_ts>2020-06-01 15:04:47 -0700</delta_ts>
            <desc>Patch for landing v2</desc>
            <filename>bug-212507-20200601124518.patch</filename>
            <type>text/plain</type>
            <size>25123</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg2NGJiZTEzNTJhYzhk
ZWUxOTQyOTkwMjk4ZTQyNjE3YWM0OTBjOS4uZDg0YmM0ZTk0M2M5OTYxNTA0MDY3NjgwYmM4ZWYw
N2M5NDY0NDJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTAxICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3Rz
IHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYW5kIHtX
ZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIHR5cGVzCisgICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8yMTI1MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBwYWdlL0RyYWdBY3Rpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnRGVz
dGluYXRpb25BY3Rpb24pOiBBZGQuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb25BbnkpOiBEZWxldGUuCisgICAgICAgIC0gUmVuYW1lIERyYWdEZXN0aW5hdGlvbkFjdGlv
bkFueSgpIHRvCisgICAgICAgICAgYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkgdG8gbWF0Y2gg
V2ViS2l0IHN0eWxlLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgIC0g
VXBkYXRlIHRvIHVzZSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKS4KKwogMjAyMC0wNS0zMCAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW0FwcGxlIFBheV0gU3Vw
cG9ydCBwZXJjZW50YWdlIGJvcmRlci1yYWRpdXMgdmFsdWVzIGluIC1hcHBsZS1wYXktYnV0dG9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDg1YTM5ZTM2ZDY5MzU4ZWMxNDhlMTE5MGUxMGIxYTcwM2FlNDJjYmYuLjc3
NmIzNGVhOTJkZjRlMDM2OTJhN2QwOTg0ZWM3YWRhMWUxNjQxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
KworICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb24gdHlw
ZXMKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLRHJh
Z0FjdGlvbnNJbnRlcm5hbC5oOiBBZGQuCisgICAgICAgIChXZWJLaXQ6OmNvcmVEcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbiB0byBh
dm9pZCBjYXN0aW5nLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IGRyYWdEYXRhRm9yRHJvcFNlc3Npb246ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOl0pOgor
ICAgICAgICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKCkgY29u
dmVyc2lvbgorICAgICAgICAgIGZ1bmN0aW9uLgorICAgICAgICAtIEV4dHJhY3QgYGRyYWdPcGVy
YXRpb25NYXNrYCB2YXJpYmxlIGZvciBmdXR1cmUgdXBkYXRlcy4KKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBBZGQgX1dLRHJhZ0FjdGlvbnNJ
bnRlcm5hbC5oIHRvIHByb2plY3QuCisKIDIwMjAtMDUtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEZXByZWNhdGUgV0tCdW5kbGVQb3N0
U3luY2hyb25vdXNNZXNzYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNWMyMDk0
YTk1YzgzNGVkMzNlNDliNTU3ZWIwMDJkMzBjZGRhMThmMS4uODU0Njg5MTE5Y2Q1MmM2NmQ2YzQ0
OTM2YTJhNGRkZDMwMzZiZmFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIzIEBACisyMDIwLTA2LTAxICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+
CisKKyAgICAgICAgRG9uJ3QgdXNlIGNhc3RzIHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb24gYW5kIHtXZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIHR5
cGVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI1MDc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50Lm1tOgorICAgICAgICAoa2l0KToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5j
dGlvbiB0byBhdm9pZCBjYXN0aW5nLgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZv
cm1EcmFnRGVzdGluYXRpb25BY3Rpb24pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGtpdCgpIGNv
bnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAg
ICAoY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOgorICAgICAgICAtIEFkZCBjb252ZXJz
aW9uIGZ1bmN0aW9uIHRvIGF2b2lkIGNhc3RpbmcuCisgICAgICAgICgtW1dlYlZpZXcgZHJhZ0Rh
dGFGb3JTZXNzaW9uOmNsaWVudDpnbG9iYWw6b3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJW
aWV3IGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86XSk6CisgICAgICAgIC0gTWFrZSB1c2Ugb2Yg
Y29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soKSBjb252ZXJzaW9uCisgICAgICAgICAgZnVu
Y3Rpb24uCisKIDIwMjAtMDUtMjkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtBcHBsZSBQYXldIFJlbW92ZSBjb25kaXRpb25hbHMgZm9yIEVOQUJMRV9BUFBMRV9Q
QVlfU0VTU0lPTl9WKDN8NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAzM2RlYzhk
MjdkNjVjZDBkZjlhYTE0YmI1YTkzMjc3Yzg5Y2UzY2UxLi45ZTY2YjVmNzA0MzM1NDdhZjI0MzQ5
NzI0NTIwZTg0NTJjYzg5YTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
KworICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb24gdHlw
ZXMKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjUwNz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuY3BwOgorICAgICAgICAoa2l0KToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5j
dGlvbiB0byBhdm9pZCBjYXN0aW5nLgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZv
cm1EcmFnRGVzdGluYXRpb25BY3Rpb24pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGtpdCgpIGNv
bnZlcnNpb24gZnVuY3Rpb24uCisKIDIwMjAtMDUtMTkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25v
cmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBBU1NFUlQobV9lZ2xEaXNw
bGF5ID09IEVHTF9OT19ESVNQTEFZKSBmYWlscyBpbiB+UGxhdGZvcm1EaXNwbGF5KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0FjdGlvbnMuaAppbmRleCBjODE3NzQwMmY5N2M1MDgzYjc1ODA4MTAwZTNkYTc4
YzIwOGZmY2I0Li5hOTIzY2FlNThjYmY1ZjY1YmVjYzdlOTIzZjJkMzgwN2IyZTgzZWJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCkBAIC0zMiwxNCArMzIsMTQgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0vLyBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gbXVzdCBiZSBr
ZXB0IGluIHN5bmMgd2l0aCBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24gYW5kIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLgorLy8gU2VlIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQgV0tEcmFn
RGVzdGluYXRpb25BY3Rpb24uCiBlbnVtIGNsYXNzIERyYWdEZXN0aW5hdGlvbkFjdGlvbiA6IHVp
bnQ4X3QgewogICAgIERIVE1MID0gMSwKICAgICBFZGl0ICA9IDIsCiAgICAgTG9hZCAgPSA0CiB9
OwogCi1pbmxpbmUgY29uc3RleHByIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IERy
YWdEZXN0aW5hdGlvbkFjdGlvbkFueSgpCitjb25zdGV4cHIgT3B0aW9uU2V0PERyYWdEZXN0aW5h
dGlvbkFjdGlvbj4gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkKIHsKICAgICByZXR1cm4gT3B0
aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4geyBEcmFnRGVzdGluYXRpb25BY3Rpb246OkRI
VE1MLCBEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQsIERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6
TG9hZCB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggNjUxMDE4NzBjMTk5
YWFhYmRmMTkwZDdkNmI0NWU2OTQzOGQ5ZGJiMi4uNDIxYTI5OTQzYjNkMTBkNDg1ZGE1Y2U5ZWZk
NTNlM2ZhZmJjMGYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03NSw4ICs3
NSw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdnaW5nUHVycG9zZSB7IEZvckVkaXRp
bmcsIEZvckZpbGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9OwogCiAgICAgLy8gY2xpZW50UG9z
aXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhp
biB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJD
T1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERy
YWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdE
ZXN0aW5hdGlvbkFjdGlvbj4gYWN0aW9uTWFzayA9IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSgp
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdl
TmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0Fw
cGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gYWN0aW9uTWFz
ayA9IERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSgpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFn
RGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJ
bnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZs
YWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlv
bj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJh
Z0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9u
LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOwogICAg
IC8vIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBieSBXZWJLaXQyIElQQyBiZWNh
dXNlIERyYWdEYXRhCiAgICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIGRlY29kZXIgYW5kIG5v
dCBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgRHJhZ0RhdGEoKSA9IGRlZmF1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJu
YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jODY4YzI3NzNmOGRiZDMyNzhiMjA1MGEwOGU2ZjhiNTdkYjhiYjRk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0Ry
YWdBY3Rpb25zSW50ZXJuYWwuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgT3B0aW9uU2V0PFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2soV0tEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uKQoreworICAgIE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHJlc3VsdDsKKyAgICBpZiAoYWN0aW9uICYgV0tE
cmFnRGVzdGluYXRpb25BY3Rpb25ESFRNTCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb246OkRIVE1MKTsKKyAgICBpZiAoYWN0aW9uICYgV0tEcmFnRGVz
dGluYXRpb25BY3Rpb25FZGl0KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0
aW5hdGlvbkFjdGlvbjo6RWRpdCk7CisgICAgaWYgKGFjdGlvbiAmIFdLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTG9hZCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb246OkxvYWQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRl
eCAyNDIxYWI4MjNjNjEzNmU2YzE3NjZlNmFmZDc0NmM4Y2U3M2U4NzljLi4yZTM5ZWE2Y2ZlODAx
ZTA4MDFlNDViZmE4N2MwOTNjODlkMjRhMGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNzYsNiArNzYsNyBAQAogI2ltcG9ydCAiV2ViUGFn
ZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisjaW1wb3J0ICJfV0tEcmFnQWN0aW9uc0ludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tUaHVtYm5haWxW
aWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KQEAgLTM5NDUsOCArMzk0
Niw5IEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRlcmVkKGlkIDxO
U0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNs
aWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBm
cm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xv
YmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkp
OwotICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IE9wdGlvblNldDxXZWJDb3Jl
OjpEcmFnRGVzdGluYXRpb25BY3Rpb24+Ojpmcm9tUmF3KFttX3ZpZXcgX3dlYl9kcmFnRGVzdGlu
YXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgV2ViQ29yZTo6
RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFz
ZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CisgICAgYXV0
byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2soW21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFn
Z2luZ0luZm9dKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzayk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGll
bnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1f
dmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzayk7CiAKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwog
ICAgIG1fcGFnZS0+ZHJhZ0VudGVyZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bh
c3RlYm9hcmQubmFtZSk7CkBAIC0zOTU4LDggKzM5NjAsOSBAQCBOU0RyYWdPcGVyYXRpb24gV2Vi
Vmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5m
bykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6
ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFn
Z2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBhdXRvIGRyYWdEZXN0aW5hdGlv
bkFjdGlvbk1hc2sgPSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPjo6
ZnJvbVJhdyhbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZv
OmRyYWdnaW5nSW5mb10pOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5n
SW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZs
YWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdE
ZXN0aW5hdGlvbkFjdGlvbk1hc2spOworICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFz
ayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGlu
YXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byBkcmFn
T3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdn
aW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOworICAgIFdlYkNvcmU6OkRyYWdE
YXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRyYWdPcGVyYXRpb25N
YXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRy
YWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOwogICAgIG1fcGFnZS0+ZHJh
Z1VwZGF0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7
CiAKICAgICBOU0ludGVnZXIgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1fcGFnZS0+Y3Vy
cmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBh
MzQ0Y2Y1ZmJkNjBhNTQ2NzVmZmQyODJmY2UwMDZhYmNjNjk4OGQwLi4yNjJiMzM0N2E3ZDliM2Vj
OGIyNDEwZGZjNTM0MGVlZjY2YzI4ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTg2LDYgKzg2LDcg
QEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UHJveHkuaCIKICNpbXBvcnQgIl9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIl9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0VsZW1lbnRBY3Rp
b24uaCIKICNpbXBvcnQgIl9XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
Rm9jdXNlZEVsZW1lbnRJbmZvLmgiCkBAIC03MzIwLDggKzczMjEsNyBAQCAtIChXZWJDb3JlOjpE
cmFnRGF0YSlkcmFnRGF0YUZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lv
biBkcmFnRGVzdAogICAgIFtzZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9w
U2Vzc2lvbjpzZXNzaW9uIG91dENsaWVudFBvaW50OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmds
b2JhbF07CiAKICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oc2Vzc2lvbi5hbGxvd3NNb3ZlT3Bl
cmF0aW9uID8gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5IDogKFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25FdmVyeSAmIH5XZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkpOwotICAgIGF1dG8gZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRp
b25BY3Rpb24+Ojpmcm9tUmF3KGRyYWdEZXN0aW5hdGlvbkFjdGlvbik7Ci0gICAgcmV0dXJuIHsg
c2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5k
ZWRJbnRQb2ludChnbG9iYWwpLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxp
Y2F0aW9uTm9uZSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayB9OworICAgIHJldHVybiB7IHNl
c3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVk
SW50UG9pbnQoZ2xvYmFsKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdBcHBsaWNh
dGlvbk5vbmUsIFdlYktpdDo6Y29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKSB9OwogfQogCiAtICh2b2lkKWNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0
YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBkZWUzNGQyMGZhZTUxNDVlZjI4MGU2NTc2NDc0ZWViMDIyZjk5NjY0Li5lMjZiNDAzZjg2
ZDg2MDcwYTc3YjdlYWU0ZjMxZjRjZWM2MThmNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkzNyw2ICs5MzcsNyBAQAogCQk0NDgy
NzM0NzI0NTI4RjYwMDBBOTU0OTMgLyogQ29jb2FJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4MjczNDYyNDUyOEY2MDAwQTk1NDkzIC8qIENv
Y29hSW1hZ2UuaCAqLzsgfTsKIAkJNDQ5RDkwREEyMUZEQzMwQjAwRjY3N0MwIC8qIExvY2FsQXV0
aGVudGljYXRpb25Tb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0OUQ5MEQ4MjFGRDYzRkUwMEY2NzdDMCAvKiBMb2NhbEF1dGhlbnRpY2F0
aW9uU29mdExpbmsubW0gKi87IH07CiAJCTQ0RTkzNkZEMjQ0N0MyRDgwMDlGQTNFMyAvKiBMZWdh
Y3lDdXN0b21Qcm90b2NvbElELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NEU5MzZGQzI0NDdDMjU2MDA5RkEzRTMgLyogTGVnYWN5Q3VzdG9tUHJvdG9j
b2xJRC5oICovOyB9OworCQk0NEVDM0VBOTI0N0Y1QzA5MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlv
bnNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDRFQzNFQTgyNDdGNUMwODAwNTk0ODlDIC8qIF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCAq
LzsgfTsKIAkJNDYwRjQ4OEYxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MEY0ODhEMUY5OTZGNkMwMENGNEI4NyAvKiBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTQ2MEY0ODkw
MUY5OTZGNzEwMENGNEI4NyAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjBGNDg4
RTFGOTk2RjZDMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
cy5oICovOyB9OwogCQk0NjFDQ0NBNTIzMTQ4NUE3MDBCNjU5QjkgLyogVUlSZW1vdGVPYmplY3RS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDYzMjM2ODUyMzE0ODMzRjAwQTQ4RkE3IC8qIFVJUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAqLzsg
fTsKQEAgLTM1MzYsNiArMzUzNyw3IEBACiAJCTQ0OUQ5MEQ4MjFGRDYzRkUwMEY2NzdDMCAvKiBM
b2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ0QTQ4MUM2MjFGMkQyN0IwMEYyRjkxOSAvKiBDbGllbnRDZXJ0
aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENsaWVudENlcnRpZmljYXRlQXV0aGVudGljYXRpb25YUENDb25zdGFudHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NEU5MzZGQzI0NDdDMjU2MDA5RkEzRTMgLyogTGVnYWN5
Q3VzdG9tUHJvdG9jb2xJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdh
Y3lDdXN0b21Qcm90b2NvbElELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0RUMz
RUE4MjQ3RjVDMDgwMDU5NDg5QyAvKiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwMzAxMUEyMzRCRTMxRDAwOUM4MjE3IC8qIFdlYkJh
Y2tGb3J3YXJkQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViQmFja0ZvcndhcmRDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MDMwMTFCMjM0QkUzMUUwMDlDODIxNyAvKiBXZWJCYWNrRm9yd2FyZENhY2hlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2FjaGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYwRjQ4OEQxRjk5NkY2QzAwQ0Y0Qjg3IC8qIFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwpAQCAtNzUxMSw2ICs3NTEzLDcgQEAKIAkJMzdERkE2RkUxODEwQkIy
RDAwMUY0QTlGIC8qIENvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk0NEVDM0VBODI0N0Y1QzA4MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRl
cm5hbC5oICovLAogCQkJCTM3M0QxMjIxMThBNDczMDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRs
ZS5oICovLAogCQkJCTM3M0QxMjIwMThBNDczMDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZS5t
bSAqLywKIAkJCQkzNzNEMTIyNjE4QTQ3M0Y2MDA2NkQ5Q0MgLyogX1dLRnJhbWVIYW5kbGVJbnRl
cm5hbC5oICovLApAQCAtMTA1MjcsNiArMTA1MzAsNyBAQAogCQkJCUExQTRGRTVBMThEQ0U5RkEw
MEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBNEZFNjExOERE
NTRBNDAwQjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUExQTRGRTVDMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NEVDM0VBOTI0N0Y1QzA5MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5QTg3M0ExOEJCRkUwRjAwNTg4QUYyIC8q
IF9XS0VsZW1lbnRBY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUE4NzNDMThCQkZGMDcw
MDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBRDAxQkM5MTkwNUQzN0UwMEM5QzQ1RiAvKiBfV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQppbmRleCA0YmJlODE3YTE0NzFlY2JjZWM0YjQw
OWJkNjI4ZThlNjUzZDY2YjE1Li4zZDFhMGEzNWZmMjUyMWQxOTRkZWU1NjFhYjg5MTc0ZGZlMWVm
NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJEcmFnQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQubW0KQEAgLTY4LDYgKzY4LDIwIEBAIFdlYkRyYWdDbGllbnQ6Oldl
YkRyYWdDbGllbnQoV2ViVmlldyogd2ViVmlldykKIAogI2lmIFBMQVRGT1JNKE1BQykKIAorc3Rh
dGljIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBraXQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uIGFjdGlvbikKK3sKKyAgICBzd2l0Y2ggKGFjdGlvbikgeworICAgIGNhc2UgV2ViQ29y
ZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpESFRNTDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbkRIVE1MOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uOjpFZGl0OgorICAgICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRp
dDsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZDoKKyAgICAg
ICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7CisgICAgfQorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25l
OworfQorCiBib29sIFdlYkRyYWdDbGllbnQ6OnVzZUxlZ2FjeURyYWdDbGllbnQoKQogewogICAg
IHJldHVybiBmYWxzZTsKQEAgLTg2LDcgKzEwMCw3IEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqZ2V0
VG9wSFRNTFZpZXcoRnJhbWUqIGZyYW1lKQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJm
b3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBh
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICBbW21fd2Vi
VmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgd2lsbFBlcmZvcm1E
cmFnRGVzdGluYXRpb25BY3Rpb246c3RhdGljX2Nhc3Q8V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PihhY3Rpb24pIGZvckRyYWdnaW5nSW5mbzpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKV07CisgICAg
W1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IHdpbGxQ
ZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOmtpdChhY3Rpb24pIGZvckRyYWdnaW5nSW5mbzpk
cmFnRGF0YS5wbGF0Zm9ybURhdGEoKV07CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDg3Yzc3ODIwMTJjYmJlZGIxOTQ5NzNjODcwMjE5N2Q3
MGM0NGY2ZTMuLjk2N2E5MDViNDI4ZTM4ZmQ0ZjZkYzc0ZTNmODViOTk5OTQyYzQyY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTExMiw3ICsxMTIs
NiBAQAogI2ltcG9ydCAiV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCiAjaW1wb3J0ICJX
ZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlRleHRJdGVyYXRvci5o
IgotI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaCIKICNpbXBvcnQgIldlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmgiCiAjaW1wb3J0ICJX
ZWJWaWV3R3JvdXAuaCIKQEAgLTU3OCw2ICs1NzcsMjAgQEAgLSAodm9pZCljbGVhclRhcmdldDsK
ICNlbmRpZgogQGVuZAogCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKK3N0YXRpYyBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzayhXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFzaykKK3sKKyAgICBPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiByZXN1bHQ7CisgICAgaWYgKGFj
dGlvbk1hc2sgJiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25ESFRNTCkKKyAgICAgICAgcmVzdWx0
LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkRIVE1MKTsKKyAgICBpZiAoYWN0
aW9uTWFzayAmIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQpCisgICAgICAgIHJlc3VsdC5h
ZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpFZGl0KTsKKyAgICBpZiAoYWN0aW9u
TWFzayAmIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQpCisgICAgICAgIHJlc3VsdC5hZGQo
V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCisKIFdlYkNvcmU6OkZpbmRPcHRp
b25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgV2ViQ29yZTo6
RmluZE9wdGlvbnMgZmluZE9wdGlvbnM7CkBAIC0xOTExLDggKzE5MjQsOCBAQCAtIChXZWJEcmFn
RGVzdGluYXRpb25BY3Rpb24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246KGlk
IDxVSURyb3BTZXNzaQogLSAoV2ViQ29yZTo6RHJhZ0RhdGEpZHJhZ0RhdGFGb3JTZXNzaW9uOihp
ZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24g
Z2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0
aW9uCiB7CiAgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24+KG9wZXJhdGlvbik7Ci0gICAgYXV0byBkcmFnRGVzdGluYXRpb25NYXNr
ID0gT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj46OmZyb21SYXcoW3Nl
bGYgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246c2Vzc2lvbl0pOwotICAgIHJl
dHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnRQb3NpdGlvbiks
IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWxQb3NpdGlvbiksIGRyYWdPcGVyYXRpb25N
YXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25NYXNrIH07
CisgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlv
bkFjdGlvbk1hc2soW3NlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246c2Vz
c2lvbl0pOworICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChj
bGllbnRQb3NpdGlvbiksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWxQb3NpdGlvbiks
IGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25Ob25lLCBkcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrIH07CiB9CiAKIC0gKHVpbnQ2NF90KV9lbnRlcmVkRGF0YUludGVy
YWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50
UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0
X3Qpb3BlcmF0aW9uCkBAIC0xOTI4LDEyICsxOTQxLDE0IEBAIC0gKHVpbnQ2NF90KV91cGRhdGVk
RGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9p
bnQpCiAgICAgYXV0byBkcmFnRGF0YSA9IFtzZWxmIGRyYWdEYXRhRm9yU2Vzc2lvbjpzZXNzaW9u
IGNsaWVudDpjbGllbnRQb3NpdGlvbiBnbG9iYWw6Z2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOm9w
ZXJhdGlvbl07CiAgICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRy
YWdVcGRhdGVkKGRyYWdEYXRhKTsKIH0KKwogLSAodm9pZClfZXhpdGVkRGF0YUludGVyYWN0aW9u
OihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRp
b24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3Bl
cmF0aW9uCiB7CiAgICAgV2ViVGhyZWFkTG9jaygpOwogICAgIGF1dG8gZHJhZ0RhdGEgPSBbc2Vs
ZiBkcmFnRGF0YUZvclNlc3Npb246c2Vzc2lvbiBjbGllbnQ6Y2xpZW50UG9zaXRpb24gZ2xvYmFs
Omdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjpvcGVyYXRpb25dOwogICAgIF9wcml2YXRlLT5wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwogfQorCiAtICh2b2lkKV9w
ZXJmb3JtRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6
KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9w
ZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCiB7CiAgICAgW3NlbGYgX3RyeVRvUGVyZm9ybURh
dGFJbnRlcmFjdGlvbjpzZXNzaW9uIGNsaWVudDpjbGllbnRQb3NpdGlvbiBnbG9iYWw6Z2xvYmFs
UG9zaXRpb24gb3BlcmF0aW9uOm9wZXJhdGlvbl07CkBAIC02NzI1LDcgKzY3NDAsNyBAQCAtIChX
ZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncylhcHBsaWNhdGlvbkZsYWdzOihpZCA8TlNEcmFn
Z2luZ0luZm8+KWRyYWdnaW5nSQogCiAtIChPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uPilhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOihpZCA8TlNEcmFnZ2luZ0luZm8+
KWRyYWdnaW5nSW5mbwogewotICAgIHJldHVybiBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uPjo6ZnJvbVJhdyhbW3NlbGYgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZp
ZXc6c2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5n
SW5mb10pOworICAgIHJldHVybiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbW3NlbGYg
X1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6c2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwogfQogCiAtIChOU0RyYWdPcGVyYXRp
b24pZHJhZ2dpbmdFbnRlcmVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmNwcAppbmRleCBkNDNjMmU0NGVjODAwY2Q1NTM5YTJkMDIwYzlkZmE0YTUzN2Q1MDFi
Li4zMTMyNjAzNmE4YTQxMjU3N2VjMWNhMTkxN2RjM2ZmODYyMDdlMjYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTYwLDYgKzYwLDIwIEBAIHN0YXRpYyBEV09SRCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2tUb0RyYWdDdXJzb3JzKERyYWdPcGVyYXRpb24gb3ApCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAorc3RhdGljIFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBraXQoRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uIGFjdGlvbikKK3sKKyAgICBzd2l0Y2ggKGFjdGlvbikgeworICAgIGNhc2UgRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uOjpESFRNTDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlv
bkFjdGlvbkRIVE1MOworICAgIGNhc2UgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpFZGl0OgorICAg
ICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdDsKKyAgICBjYXNlIERyYWdE
ZXN0aW5hdGlvbkFjdGlvbjo6TG9hZDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5hdGlv
bkFjdGlvbkxvYWQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lOworfQorCiBXZWJEcmFnQ2xpZW50OjpXZWJE
cmFnQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykgCiB7
CkBAIC03Miw3ICs4Niw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVz
dGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvCiAgICAgLy9zbyB3ZSBq
dXN0IGNhbGwgdGhlIGRlbGVnYXRlLCBhbmQgZG9uJ3Qgd29ycnkgYWJvdXQgd2hldGhlciBpdCdz
IGltcGxlbWVudGVkCiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiBkZWxlZ2F0ZVJlZiA9IDA7
CiAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVsZWdhdGUoJmRlbGVnYXRlUmVmKSkp
Ci0gICAgICAgIGRlbGVnYXRlUmVmLT53aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbiht
X3dlYlZpZXcsIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pYWN0aW9uLCBkcmFnRGF0YS5wbGF0
Zm9ybURhdGEoKSk7CisgICAgICAgIGRlbGVnYXRlUmVmLT53aWxsUGVyZm9ybURyYWdEZXN0aW5h
dGlvbkFjdGlvbihtX3dlYlZpZXcsIGtpdChhY3Rpb24pLCBkcmFnRGF0YS5wbGF0Zm9ybURhdGEo
KSk7CiB9CiAKIERyYWdTb3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlv
bk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>