<?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>222336</bug_id>
          
          <creation_ts>2021-02-23 16:15:41 -0800</creation_ts>
          <short_desc>[Cocoa] Make it possible to release a WKWebView on a non-main thread without a crash due to WKScriptMessage race</short_desc>
          <delta_ts>2021-03-22 11:47:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>Safari 14</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 14</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=223013</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=188955</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Wise">joshua.wise</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joshua.wise</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>nathan</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>timothy</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1732723</commentid>
    <comment_count>0</comment_count>
      <attachid>421367</attachid>
    <who name="Joshua Wise">joshua.wise</who>
    <bug_when>2021-02-23 16:15:41 -0800</bug_when>
    <thetext>Created attachment 421367
Minimized reproducer for WKScriptMessage _initWithBody / WKWebView release race.

If a `WKWebView` is destroyed while the main thread is processing a `WKScriptMessage` that is sent from the JavaScript to the embedder, then the weak reference to the `WKWebView` as part of `[WKScriptMessage _initWithBody]` can fall apart, with the following stack trace:

* thread #1, queue = &apos;com.apple.main-thread&apos;, stop reason = signal SIGABRT
    frame #0: 0x00000001c6fe21f0 libsystem_kernel.dylib`__abort_with_payload + 8
    frame #1: 0x00000001c6fe69c0 libsystem_kernel.dylib`abort_with_payload_wrapper_internal + 100
    frame #2: 0x00000001c6fe695c libsystem_kernel.dylib`abort_with_reason + 28
    frame #3: 0x00000001af7ca4cc libobjc.A.dylib`_objc_fatalv(unsigned long long, unsigned long long, char const*, char*) + 104
    frame #4: 0x00000001af7ca464 libobjc.A.dylib`_objc_fatal(char const*, ...) + 28
    frame #5: 0x00000001af7c61ec libobjc.A.dylib`weak_register_no_lock + 344
    frame #6: 0x00000001af7c7ff0 libobjc.A.dylib`objc_storeWeak + 348
    frame #7: 0x00000001a72d3ed4 WebKit`-[WKScriptMessage _initWithBody:webView:frameInfo:name:world:] + 136
    frame #8: 0x00000001a72de3fc WebKit`ScriptMessageHandlerDelegate::didPostMessage(WebKit::WebPageProxy&amp;, WebKit::FrameInfoData&amp;&amp;, API::ContentWorld&amp;, WebCore::SerializedScriptValue&amp;) + 204
    frame #9: 0x00000001a74cbeb8 WebKit`WebKit::WebUserContentControllerProxy::didPostMessage(WTF::ObjectIdentifier&lt;WebKit::WebPageProxyIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, unsigned long long, IPC::DataReference const&amp;, WTF::CompletionHandler&lt;void (IPC::DataReference const&amp;, WTF::String const&amp;)&gt;&amp;&amp;) + 556
    frame #10: 0x00000001a76f07c8 WebKit`void IPC::handleMessageAsync&lt;Messages::WebUserContentControllerProxy::DidPostMessage, WebKit::WebUserContentControllerProxy, void (WebKit::WebUserContentControllerProxy::*)(WTF::ObjectIdentifier&lt;WebKit::WebPageProxyIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, unsigned long long, IPC::DataReference const&amp;, WTF::CompletionHandler&lt;void (IPC::DataReference const&amp;, WTF::String const&amp;)&gt;&amp;&amp;)&gt;(IPC::Connection&amp;, IPC::Decoder&amp;, WebKit::WebUserContentControllerProxy*, void (WebKit::WebUserContentControllerProxy::*)(WTF::ObjectIdentifier&lt;WebKit::WebPageProxyIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, unsigned long long, IPC::DataReference const&amp;, WTF::CompletionHandler&lt;void (IPC::DataReference const&amp;, WTF::String const&amp;)&gt;&amp;&amp;)) + 3232
    frame #11: 0x00000001a76efb14 WebKit`WebKit::WebUserContentControllerProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 76
    frame #12: 0x00000001a70e666c WebKit`IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 116
    frame #13: 0x00000001a73f4584 WebKit`WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 36
    frame #14: 0x00000001a70ca218 WebKit`IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;) + 596
    frame #15: 0x00000001a70c9b5c WebKit`IPC::Connection::dispatchIncomingMessages() + 492
    frame #16: 0x00000001a4f38bcc JavaScriptCore`WTF::RunLoop::performWork() + 528
    frame #17: 0x00000001a4f39718 JavaScriptCore`WTF::RunLoop::performWork(void*) + 32
    frame #18: 0x000000019b3a4bf0 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24

It is generally considered to be bad etiquette in the UIKit world to call a function on a UIView without being on the main thread.  However, I would argue that this is something of an exception: in this case, `[WKWebView release]` is the function that races, which means that not only is it unsafe to call a method on a WKWebView, but it&apos;s unsafe even to hold a strong reference to a WKWebView (or to an object that holds a strong reference to a WKWebView deep in its hierarchy!) and do nothing with it.  This probably should be something that is safe to do.

Attached is a minimized reproducer for this crash.  On my iPod Touch (7th Generation), it crashes in about 5 to 10 seconds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735108</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-02 16:16:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/74955196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737832</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-09 16:07:56 -0800</bug_when>
    <thetext>The test case seems to be using the WKWebView API off the main thread, which is not supported. The WKWebView API is main thread only. I am not convinced there is a bug here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737834</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-09 16:09:18 -0800</bug_when>
    <thetext>Please let me know if I misread the test case or misunderstood the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740495</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Wise">joshua.wise</who>
    <bug_when>2021-03-17 01:01:47 -0700</bug_when>
    <thetext>Hi Chris --

In general, I agree with you: the UIKit API (and the WKWebView API) shouldn&apos;t be called off the main thread.  I think that `release`ing -- and, by extension, `dealloc`ing -- a WKWebView needs to be a special exception to this rule, though.  It is very difficult to avoid accidentally causing a `[WKWebView dealloc]` off of the main thread: although in this minimal reproducer case, a `WKWebView` is directly held off the main thread, consider the case in which another object deeply holds a strong reference to a `WKWebView`, and another thread happens to hold a strong reference to this object.

It seems like an exceptionally non-obvious pitfall that this can go wrong, along three axes of surprise for a programmer:

1) There is no textual representation in the source that a disallowed use of `WKWebView` will occur: even if a block does not directly make mention of a `WKWebView`, the failure can occur.  (Phrased another way, it would be expected that it is unsafe to use a `WKWebView` -- but it&apos;s not expected that it&apos;s unsafe to even &quot;think about&quot; a `WKWebView`.)

2) Although this is disallowed behavior for other `UIKit` APIs (and objects that derive from `UIView`), in practice, deallocation from off the main thread does not seem to fail for other `UIKit` APIs.  (This is, admittedly, weak justification.  But programmers are, if nothing else, pattern recognition machines...)

3) There is a violation of an otherwise-reasonable assumption in a programmer&apos;s mental model that ARC-managed objects should be, in general, responsible for avoiding wild pointers (i.e., that an ARC-managed object, if it needs to have a longer retain lifecycle than a local scope allows, should be managed by the holder of that pointer).

Although `WKWebView` is technically *allowed* to fail in this fashion by its specification, it is probably not a good idea for it to do so nondeterministically: it should either be tolerant of this misuse, or reliably crash or emit a diagnostic on this misuse [1].

Technically, it is probably not a bug, if the defect metric is &quot;does WKWebView correctly implement the specification&quot;.  But if the question is &quot;does WKWebView present an interface that avoids footguns&quot;, I would probably classify this as a defect.

Thanks for your consideration --
joshua

[1] One way that `WKWebView` could emit a diagnostic is particularly unpleasant: it could implement `[WKWebView release]` on its own (eventually calling into `[NSObject release]`), and call into the particularly-reviled `[self retainCount]` to determine whether the system is about to deallocate the object.  If it is, and the `release` operation is happening off the main thread -- i.e., `[self retainCount] == 1 &amp;&amp; ![NSThread isMainThread]` -- then WKWebView could subsequently assert, or minimally, emit a warning.

This relies on additional undefined and unpleasant behavior -- `[NSObject retainCount]` is specified to be unspecified.  But not only does it *happen* to work for this application, examination of the Objective-C runtime reveals that it *will* work for this application, too.  Tests of this by swizzling `[WKWebView release]` reliably catch this behavior in user applications.  (Astute observers may note that this cannot be 100% reliable, and that there is another -- smaller -- race condition here.  That&apos;s true, but the diagnostic now occurs when we &apos;win&apos; the race, not when we &apos;lose&apos;, and as a best-effort method to help users avoid API misuse, that&apos;s probably good enough.)

All that said, doing that is not pleasant.  It may just be better to make WKWebView tolerant of this misuse :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740698</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-17 07:32:06 -0700</bug_when>
    <thetext>(In reply to Joshua Wise from comment #4)
&gt; Hi Chris --
&gt; 
&gt; In general, I agree with you: the UIKit API (and the WKWebView API)
&gt; shouldn&apos;t be called off the main thread.  I think that `release`ing -- and,
&gt; by extension, `dealloc`ing -- a WKWebView needs to be a special exception to
&gt; this rule, though.  It is very difficult to avoid accidentally causing a
&gt; `[WKWebView dealloc]` off of the main thread: although in this minimal
&gt; reproducer case, a `WKWebView` is directly held off the main thread,
&gt; consider the case in which another object deeply holds a strong reference to
&gt; a `WKWebView`, and another thread happens to hold a strong reference to this
&gt; object.
&gt; 
&gt; It seems like an exceptionally non-obvious pitfall that this can go wrong,
&gt; along three axes of surprise for a programmer:
&gt; 
&gt; 1) There is no textual representation in the source that a disallowed use of
&gt; `WKWebView` will occur: even if a block does not directly make mention of a
&gt; `WKWebView`, the failure can occur.  (Phrased another way, it would be
&gt; expected that it is unsafe to use a `WKWebView` -- but it&apos;s not expected
&gt; that it&apos;s unsafe to even &quot;think about&quot; a `WKWebView`.)
&gt; 
&gt; 2) Although this is disallowed behavior for other `UIKit` APIs (and objects
&gt; that derive from `UIView`), in practice, deallocation from off the main
&gt; thread does not seem to fail for other `UIKit` APIs.  (This is, admittedly,
&gt; weak justification.  But programmers are, if nothing else, pattern
&gt; recognition machines...)
&gt; 
&gt; 3) There is a violation of an otherwise-reasonable assumption in a
&gt; programmer&apos;s mental model that ARC-managed objects should be, in general,
&gt; responsible for avoiding wild pointers (i.e., that an ARC-managed object, if
&gt; it needs to have a longer retain lifecycle than a local scope allows, should
&gt; be managed by the holder of that pointer).
&gt; 
&gt; Although `WKWebView` is technically *allowed* to fail in this fashion by its
&gt; specification, it is probably not a good idea for it to do so
&gt; nondeterministically: it should either be tolerant of this misuse, or
&gt; reliably crash or emit a diagnostic on this misuse [1].
&gt; 
&gt; Technically, it is probably not a bug, if the defect metric is &quot;does
&gt; WKWebView correctly implement the specification&quot;.  But if the question is
&gt; &quot;does WKWebView present an interface that avoids footguns&quot;, I would probably
&gt; classify this as a defect.
&gt; 
&gt; Thanks for your consideration --
&gt; joshua
&gt; 
&gt; [1] One way that `WKWebView` could emit a diagnostic is particularly
&gt; unpleasant: it could implement `[WKWebView release]` on its own (eventually
&gt; calling into `[NSObject release]`), and call into the particularly-reviled
&gt; `[self retainCount]` to determine whether the system is about to deallocate
&gt; the object.  If it is, and the `release` operation is happening off the main
&gt; thread -- i.e., `[self retainCount] == 1 &amp;&amp; ![NSThread isMainThread]` --
&gt; then WKWebView could subsequently assert, or minimally, emit a warning.
&gt; 
&gt; This relies on additional undefined and unpleasant behavior -- `[NSObject
&gt; retainCount]` is specified to be unspecified.  But not only does it *happen*
&gt; to work for this application, examination of the Objective-C runtime reveals
&gt; that it *will* work for this application, too.  Tests of this by swizzling
&gt; `[WKWebView release]` reliably catch this behavior in user applications. 
&gt; (Astute observers may note that this cannot be 100% reliable, and that there
&gt; is another -- smaller -- race condition here.  That&apos;s true, but the
&gt; diagnostic now occurs when we &apos;win&apos; the race, not when we &apos;lose&apos;, and as a
&gt; best-effort method to help users avoid API misuse, that&apos;s probably good
&gt; enough.)
&gt; 
&gt; All that said, doing that is not pleasant.  It may just be better to make
&gt; WKWebView tolerant of this misuse :-)

Deallocating a WKWebView (and other WK API objects) on a non-main thread was made safe very recently via Bug 223013.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740772</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Wise">joshua.wise</who>
    <bug_when>2021-03-17 10:34:44 -0700</bug_when>
    <thetext>Hi Chris --

*Very* interesting!

Although I don&apos;t have an environment to test this locally, I strongly suspect that if you run this reproducer against a WebKit that has been patched with Bug 223013, however, you will discover that the crash still occurs.  When I tried the thing I mentioned in [1] in comment #4 below, I initially implemented this as a swizzle on `[WKWebView dealloc]` that teleported the `dealloc` to the main thread (much as Bug 223013 does), rather than `[WKWebView release]`, and I found that I would still crash inside of `weak_register_no_lock`.

The reason why is that deallocation of an ARC or MRC managed object actually happens in two phases in Objective-C (much to my consternation...).  The base implementation of `[NSObject release]` is implemented as the C++ function `objc_object::rootRelease`: https://github.com/opensource-apple/objc4/blob/cd5e62a5597ea7a31dccef089317abb3a661c154/runtime/objc-object.h#L567 .  But, as you note in the linked line, just *before* it calls into `[self dealloc]`, it sets a flag in the object&apos;s internal state, `deallocating`!

Unfortunately, the core implementation of a weak pointer store -- weak_register_no_lock -- checks for this `deallocating` flag as set by `release`, not as set by `dealloc`: https://github.com/opensource-apple/objc4/blob/master/runtime/objc-weak.mm#L402

So teleporting `dealloc` to the main thread is not sufficient, and instead we need to teleport `release`.

I will make reference to this in Bug 223013 too.

Thanks,
joshua</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740785</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-03-17 11:00:37 -0700</bug_when>
    <thetext>Thanks for clarifying.

I think this issue is more narrow than general -release thread safety. I think this issue might be the use of __unsafe_unretained here:

static HashMap&lt;WebKit::WebPageProxy*, __unsafe_unretained WKWebView *&gt;&amp; pageToViewMap()
{
    static NeverDestroyed&lt;HashMap&lt;WebKit::WebPageProxy*, __unsafe_unretained WKWebView *&gt;&gt; map;
    return map;
}

-[WKScriptMessage _initWithBody...] is correctly signaling the error that we&apos;re storing a raw pointer into a weak pointer after the pointed-to object has initiated destruction.

The trivial solution would be to store a weak pointer in the map. Maybe that would just work. But I&apos;m not sure why we chose __unsafe_unretained in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740786</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-17 11:04:45 -0700</bug_when>
    <thetext>Reopening since it appears some issues persist after Bug 223013.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740787</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-17 11:07:01 -0700</bug_when>
    <thetext>We definitely will *not* fix this by &quot;teleporting&quot; a release to the main thread!

I think we should consider using an NSMapTable for the pageToViewMap, to fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740791</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-17 11:10:44 -0700</bug_when>
    <thetext>This is not a bug, exactly.

Historically, the modern WebKit has *not* supported releasing its objects on non-main threads. Any app running into this can and should fix this by doing release of WebKit objects only on the main thread.

However, it would be nice to allow releasing WebKit objects on any thread. That&apos;s why we made the changes in bug 223013, and we *can* fix this issue as well. It would be nice to make WebKit programming easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740816</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-17 11:32:42 -0700</bug_when>
    <thetext>Retitled this to reflect the enhancement aspect of the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740817</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-17 11:34:16 -0700</bug_when>
    <thetext>Releasing an object off the main thread is *not* an exception to the threading rule at this time, but in a future release we’d like it to be, as an enhancement.

It’s possible and practical to avoid releasing a WKWebView on a non-main thread and any program expecting to work correctly with today’s iOS must do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740846</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Wise">joshua.wise</who>
    <bug_when>2021-03-17 12:31:35 -0700</bug_when>
    <thetext>Thanks, all, for the considered feedback.

(In reply to Geoffrey Garen from comment #7)
&gt; -[WKScriptMessage _initWithBody...] is correctly signaling the error that
&gt; we&apos;re storing a raw pointer into a weak pointer after the pointed-to object
&gt; has initiated destruction.
&gt; 
&gt; The trivial solution would be to store a weak pointer in the map. Maybe that
&gt; would just work. But I&apos;m not sure why we chose __unsafe_unretained in the
&gt; first place.

One of the reasons why I did not propose a patch to fix this is that I didn&apos;t really understand the semantics of thread safety of weak pointers *in general* in Objective-C.  When I was reading through the Objective-C runtime, it wasn&apos;t obvious to me that, for instance:

  __weak id foo1; /* already assigned to something */
  __weak id foo2 = foo1;

cannot race with the destruction of p in a way that could cause a very similar crash.

I could not find a reference anywhere as to what the semantics of this are supposed to be...

(In reply to Darin Adler from comment #9)
&gt; We definitely will *not* fix this by &quot;teleporting&quot; a release to the main
&gt; thread!

I agree :) I actually do &quot;teleport&quot; in a swizzle now to keep misbehaving customer apps from crashing.  (Sorry.)  But I would rather not.

(In reply to Darin Adler from comment #12)
&gt; It’s possible and practical to avoid releasing a WKWebView on a non-main
&gt; thread and any program expecting to work correctly with today’s iOS must do
&gt; that.

This is probably the most important thing here.  This is a fix that will make things better going forward, but it won&apos;t fix issues on shipping iOS -- and, as a result, applications need to be careful of this *anyway* for the foreseeable future.

The genesis of this is that I have a framework that can inject WKScriptMessages into existing WKWebViews -- and, as a result, applications that don&apos;t crash normally (but still rely on this undefined and disallowed behavior) begin crashing with this race condition, and the customers of this framework blame me :)

The fix that I think might be more palatable to you would be to detect this condition in -release, and rather than &quot;teleporting&quot; -release, instantly abort() when it&apos;s called off the main thread.  This allows end users to quickly detect in development when something is about to go wrong (and fix it), and, more importantly, means they&apos;ll stop blaming me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740906</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-17 14:14:50 -0700</bug_when>
    <thetext>The test project indeed still crashes with WebKit trunk:
Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: Namespace OBJC, Code 0x1
Termination Description: OBJC, Cannot form weak reference to instance (0x109820c00) of class WKWebView. It is possible that this object was over-released, or is in the process of deallocation.
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib        	0x00000001beb5dfd8 __abort_with_payload + 8
1   libsystem_kernel.dylib        	0x00000001beb62848 abort_with_payload_wrapper_internal + 100
2   libsystem_kernel.dylib        	0x00000001beb627e4 abort_with_payload_wrapper_internal + 0
3   libobjc.A.dylib               	0x00000001a4ebc7b4 _objc_fatalv(unsigned long long, unsigned long long, char const*, char*) + 104
4   libobjc.A.dylib               	0x00000001a4ebc74c _objc_fatalv(unsigned long long, unsigned long long, char const*, char*) + 0
5   libobjc.A.dylib               	0x00000001a4eb8cec weak_clear_no_lock + 0
6   libobjc.A.dylib               	0x00000001a4ebaacc objc_storeWeak + 344
7   WebKit                        	0x0000000106a1979c -[WKScriptMessage _initWithBody:webView:frameInfo:name:world:] + 136
8   WebKit                        	0x0000000106a1b888 ScriptMessageHandlerDelegate::didPostMessage(WebKit::WebPageProxy&amp;, WebKit::FrameInfoData&amp;&amp;, API::ContentWorld&amp;, WebCore::SerializedScriptValue&amp;) + 196
9   WebKit                        	0x0000000106c23ddc WebKit::WebUserContentControllerProxy::didPostMessage(WTF::ObjectIdentifier&lt;WebKit::WebPageProxyIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, unsigned long long, IPC::ArrayReference&lt;unsigned char, 18446744073709551615ul&gt; const&amp;, WTF::CompletionHandler&lt;void (IPC::ArrayReference&lt;unsigned char, 18446744073709551615ul&gt; const&amp;, WTF::String const&amp;)&gt;&amp;&amp;) + 364
10  WebKit                        	0x0000000106efaeb4 void IPC::handleMessageAsync&lt;Messages::WebUserContentControllerProxy::DidPostMessage, WebKit::WebUserContentControllerProxy, void (WebKit::WebUserContentControllerProxy::*)(WTF::ObjectIdentifier&lt;WebKit::WebPageProxyIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, unsigned long long, IPC::ArrayReference&lt;unsigned char, 18446744073709551615ul&gt; const&amp;, WTF::CompletionHandler&lt;void (IPC::ArrayReference&lt;unsigned char, 18446744073709551615ul&gt; const&amp;, WTF::String const&amp;)&gt;&amp;&amp;)&gt;(IPC::Connection&amp;, IPC::Decoder&amp;, WebKit::WebUserContentControllerProxy*, void (WebKit::WebUserContentControllerProxy::*)(WTF::ObjectIdentifier&lt;WebKit::WebPageProxyIdentifierType&gt;, WebKit::FrameInfoData&amp;&amp;, unsigned long long, IPC::ArrayReference&lt;unsigned char, 18446744073709551615ul&gt; const&amp;, WTF::CompletionHandler&lt;void (IPC::ArrayReference&lt;unsigned char, 18446744073709551615ul&gt; const&amp;, WTF::String const&amp;)&gt;&amp;&amp;)) + 200
11  WebKit                        	0x0000000106efadc4 WebKit::WebUserContentControllerProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 72
12  WebKit                        	0x00000001067d3a64 IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 260
13  WebKit                        	0x0000000106b704ec WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 32
14  WebKit                        	0x00000001067b27d0 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;) + 352
15  WebKit                        	0x00000001067b1e08 IPC::Connection::dispatchIncomingMessages() + 396
16  JavaScriptCore                	0x000000010a15aa34 WTF::RunLoop::performWork() + 368
17  JavaScriptCore                	0x000000010a15b30c WTF::RunLoop::performWork(void*) + 36
18  CoreFoundation                	0x000000018f3e5808 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
19  CoreFoundation                	0x000000018f3e5704 __CFRunLoopDoSource0 + 204
20  CoreFoundation                	0x000000018f3e4a78 __CFRunLoopDoSources0 + 256
21  CoreFoundation                	0x000000018f3def68 __CFRunLoopRun + 768
22  CoreFoundation                	0x000000018f3de724 CFRunLoopRunSpecific + 572
23  GraphicsServices              	0x00000001a7a29be4 GSEventRunModal + 160
24  UIKitCore                     	0x0000000192101d50 -[UIApplication _run] + 1064
25  UIKitCore                     	0x000000019210817c UIApplicationMain + 1904
26  WKScriptMessage race          	0x00000001044bddb4 0x1044b8000 + 23988
27  dyld                          	0x00000001045c5248 start + 564</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740952</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-17 16:43:48 -0700</bug_when>
    <thetext>To fix this we will change fromWebPageProxy so it returns a RetainPtr&lt;WKWebView&gt; and so that it can return nil. And as Geoff suggested, use weak object pointers under the hood rather than a hand-implemented alternative with different timing (later in the dealloc method rather than before dealloc is called). Therefore, during the dealloc process, when dealloc has begun but not finished yet, we&apos;ll return nil. Callers will all need to be revised to be able to deal with nil.

Separately, we will need to audit to see if we have any other cases like this with back-pointers from C++ code to Objective-C objects that might be in the process of deallocation. I’m hoping this is the only one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741022</commentid>
    <comment_count>16</comment_count>
      <attachid>423559</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-17 20:54:41 -0700</bug_when>
    <thetext>Created attachment 423559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741027</commentid>
    <comment_count>17</comment_count>
      <attachid>423561</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-17 21:16:09 -0700</bug_when>
    <thetext>Created attachment 423561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741207</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-18 08:31:22 -0700</bug_when>
    <thetext>Looks like the URLSchemeHandler.SyncXHR API test may have regressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741227</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-18 09:41:40 -0700</bug_when>
    <thetext>Yes, noticed that last night. I’ll be debugging it to find out why when I have time later today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741350</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-18 12:54:08 -0700</bug_when>
    <thetext>This failure is an interesting case. The test requires that our WKURLSchemeHandler gets a -webView:stopURLSchemeTask: method called during the process of destroying a WKWebView. It&apos;s called because the WKWebView stops loading. The test does not tell the WKWebView to stop loading; instead it just releases the last reference to the WKWebView, and it&apos;s the deallocation of the WKWebView that causes the loading to stop. During deallocation, weak references to a WKWebView are already nil. The old code would pass this &quot;zombie&quot; WKWebView pointer to the -webView:stopURLSchemeTask: method. If anyone tried to retain the WKWebView, I believe we would see the same kind of crash as the one described in this bug report, even without a multi-thread race.

So we have choices:

1) Decide that not calling -webView:stopURLSchemeTask: in this case is OK. One risk of this strategy is that this could break real apps if they rely on this kind of behavior as the test does. If we take this option, then I&apos;d need to update the test, perhaps I could use the -[WKWebView stopLoading] method instead of relying on deallocation.

2) Decide that we should call -webView:stopURLSchemeTask: with a WKWebView of nil. This would work fine for the test and likely would also be OK for most real clients too; very few are likely to actually use the WKWebView pointer and we could document this behavior.

3) Decide that we need to preserve this &quot;pass the zombie pointer&quot; behavior for this delegate. We can&apos;t do that for cases like WKScriptMessage that retain the WKWebView pointer, but we could do it for this case. Annoying to implement, but not impossibly difficult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741535</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-18 18:16:59 -0700</bug_when>
    <thetext>Chose option (1) after talking to some other WebKit contributors in the internal Apple Slack. Geoff Garen also pointed out that we should not throw exceptions from WKURLSchemeHandler if calls are made after a stopURLSchemeTask that was never delivered, so I will make that change too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741833</commentid>
    <comment_count>22</comment_count>
      <attachid>423758</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-19 12:21:28 -0700</bug_when>
    <thetext>Created attachment 423758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741885</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-19 14:09:22 -0700</bug_when>
    <thetext>It appears URLSchemeHandler.SyncXHR is still failing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741970</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-19 18:22:00 -0700</bug_when>
    <thetext>That’s so annoying; it passed locally!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741971</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-19 18:22:39 -0700</bug_when>
    <thetext>I was able to reproduce the failure locally, and then made the change and it started passing. But I’ll double check my work and figure it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741975</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-19 18:32:43 -0700</bug_when>
    <thetext>I was running the test wrong. Had to use _close instead of stopLoading!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741977</commentid>
    <comment_count>27</comment_count>
      <attachid>423796</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-19 18:37:34 -0700</bug_when>
    <thetext>Created attachment 423796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742237</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-22 08:33:38 -0700</bug_when>
    <thetext>OK, a relief. That test is fixed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742244</commentid>
    <comment_count>29</comment_count>
      <attachid>423796</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-22 08:45:13 -0700</bug_when>
    <thetext>Comment on attachment 423796
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742327</commentid>
    <comment_count>30</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-22 11:47:15 -0700</bug_when>
    <thetext>Committed r274764 (235574@main): &lt;https://commits.webkit.org/235574@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>421367</attachid>
            <date>2021-02-23 16:15:41 -0800</date>
            <delta_ts>2021-02-23 16:15:41 -0800</delta_ts>
            <desc>Minimized reproducer for WKScriptMessage _initWithBody / WKWebView release race.</desc>
            <filename>wkscriptmessage-race.tar.gz</filename>
            <type>application/x-gzip</type>
            <size>7356</size>
            <attacher name="Joshua Wise">joshua.wise</attacher>
            
              <data encoding="base64">H4sIAAAAAAAAA+09aXfbtrL3q/0rWLXvHNu1dslKbCc3lEQnvNFWLXHcvFyVJiGLDUWqJOWlPXm/
/c0A3EVJlGyrTSt80EIOBoPZMACB4VS6H95oxrWkDcdEUoj5r6cvOSgnJyf0G0r0G26W/pUv5fLl
Yr6cy5Xger5UzhX/dfMMtMyVmWVLJjRpGoa9DG7V/WjnvpFSLnCyMZkQ3X6Vf1mUR5UKqZBRhUjS
9csXhRNSelmsFJVCWZZzhTwpkuJLsv9n07wrT1fuvliyqU7tCbEs6YakTUkm2SduA+2hUikvtn/4
HbH/cr5S+Ff5iemILf9w+4+V/+X7Hr3YZBc5vJi5lw2FTE3j17XVY335F4q5Smkn/y2UTeSPH0S2
M9Pre/y5sg02/pcWyL9YLOQrUfmf5MsQL2yh//90+Wez3Hc/HA36Fy+Ofvhu/4/9PcmUx+ot+UBM
SzV07hWXP9vfkzXJsogF/wDiK1wwrlEDfKByzrvIoPazR1yV3Kg616l+rM5UTblQNcJZAIA1jrL7
e3v58suK8LJeKZSFcq3On+RytXqxVC5xUJefTutEIzeSTTITDtD0jJkpAwlHWcSvWhJ8BVGfcSP4
7JIRkswQn6xGfJQ947A/Li18XJWeTHTyaGpeJkEdpaceV+mDSu5qhm6bhqYRc2OCaolwRygScnG1
mpKqZyzbMB+uDclUkKAusdYnSUiCPEpRwan0IiRm0FfbAqcl0R+bUiTkkyCPUlSOq9SQZro8BsdK
yFPwSiiu00iUwhdxlSfI6A21Sagswei0DhcEXVnoEEIu44LhJybR5Xi3UYjTldiRS5pOoz0JoT/j
yP1UU2XVxsv9hykBoDsTqoEFwCfckrD5M2CNrM0UIuqirpB7gMqdcVPJHsOv1KKmU2cck24fhAKA
1YHY6A873XZ9UOv3hnWxGzb58iqvNV7RGfDV9nvduNMDvWEU4AiekTNjj+gQ2gidqfMb05hNX6fC
5CVyqo8iD4YROZbCSTIKX6x2tE/IwgjiZCQmHAuejo0R3MmorCYYIJ6Qk1HMyYhMOoo9HS+jyJPR
eRFHZ1WyyAa0ofMNePczTpcm1LUAOo9M/JPRaMAeGUETEZx05FubdkNT0K1ifXCrkmbc+MYexp6M
zlIcnVti7ILhNhnhJ3GEi/rIyMCIY9kbkG+Te5tVztxPNI9gH2cywpYP5U9nSAzlUpr8kGFhQBAO
G0wQ2J1hfrFoiNEZox7ERA+1WHP0azv9BPg9v68xuJFre9f4l6dtNCXrC0AX8qVK6UXxpFShAKhW
OC06wD+H9JI509u69nBhmHUy1YwHXIHtGJYNagWBl6XqNzS6ANAwF1b0L8SMt8jI2N7Pjz/RztK6
lFKYDmoKcN2l33VopaTxF7R8HKxYjKvYMQ1lJlOPcuxzaYFmMK4kRrhB59YNLgM0Oy7DbX+NfqzD
0Q36lCiwDEkqUawXqpEw9grVSRgMheokDU1ClZKGCqFKCaekwTpJh85QnTWnc6G6q0eSEPhy/x5Q
5WVTm9Rqxfbd1pwnCvmpFsyubklfMm+IHTvVyz/GMILYfXcNIh+pNzOTTuwayCRvJluNDSiwEicH
a3GUtyPDnOtDPMNwGuy1Tz23FTHRWqyy+ZPxoBQTjGAhPY5dtwkuPATkTinszuYGLYVMCUx8dVmN
3nGc3hJNmTJ/2EoK6I/13urQuk45iM4JRlKyMaFTepJxbqRtuBOc5c9r7yL9DClxhy2Kxw63sauK
bgW2ahqnuQ4E7YZk26Z6PbPdRVgoDQi2BtMbU1JIbUxkjDvyhSKNGfb2GLX8fK3FNuVB7NVMAl5X
aet9w9CswFJwIVNk6Nm45X59TWJXtdi1zFV25XJpuUmBVMFXqdeqptoPPr2pjxh2ci8zxZSjv7dE
M6YYa3VBbhSG6PQWmGNPlnSdKBCSCTrUgxDMcmOwvS8Y1LI6vtESnVkYTggC1oOelDk8r+tzQ1xE
08PgKwMatzZypq6aHcdNp4LXu4Zh+xdtqg5Rf7OWY/V7GDKOGL0P2YXnYpYH5Kv905x5xGDeIBx/
ijXb0Oi6yXJ0CMEmK+wB9dtwZrFCTiGZ9pJIdNVgNifPOaybS3OT5yah0XLdZ1IhASZeXA81uf6j
p8cLfakgQyL/IJmqpNsLp5RJ4+Q5qQcRL52+LFtAm59+RZe8Es/C1g3EN+7Q0oWr+Q4tWmpaIwpf
JENf0B9r1blBPE7awss42uvkenYzx5I4nL5l94htOyMtiz74xiV/1Rv2BL5bezcc9ITusMP33/UA
oNVmQUetwbfeDvkW37j6GW632q3WoNEAgCuhFw8xaFbhq139j1DrD2vt1geh2xPbLVZlyL992xV6
PfGDEKxd+/hxiD8G/Fth2OvzrTrfrSN/b/TZjz/mS6k5YLHa5btXCKKp1/KPP4YghBZfbQjDZrs+
aAi9eWKd+0BjbQhdXw5wKfDv5yEu+W5rWG20a++HNb7TH3SFIT/ot7tCQ+B7YuvtohrtdmOOKXNQ
tXazyS+810IGzbN2DrIudLpCje8LddYRsdlpCE2h1ef7UCmGLayW2EXBsRo9HrQCZOIIT+h22935
Gu3awENLaYc/i9ALzU7/CthQv1oEAAq0um9i60JsiX1hCMQOlgMm4BRoNWhUX+jyjSGq9+oaHkPF
mtgHIvq82AI7alwsg3ebSIa9224D6Q2+11vK/Z8GbZSw2Ko1BnUBvocXXb4pXLa774fvBL4udBc0
0oVfwrDRbneY8fbERTLr9btijT5G7bf7V504i2Jwg14H+NEe9MD0PggLoAZo5t060Mx/4MUGXxWB
L1dL3YNTryvwtXfUMGvt+iL0w/oApQJqP2wK/Xft+rDJ92vvQtDtztWw847vCbRrnYC7qwvVwVvU
rna3yfSZ/QIQ5U4yRwzKcQ8OX6i0mr23PaFVDzbjQPUFsNdgJ9ndt7XasBbr9MDn5fM+UP2qxTfF
GijpELgboBVvwkU0uLbji3rRFtqdvtgUf2ZdaQgfhIY3zaL3wUOAWGvA8nYXHAY1Ksc5sPFzL0VZ
8iqfOnb+/3Cg6mNiqjBpPXQuHvoIqQxOSsN+e1gsDKviIuvzYPlqe0AtaAB/ULvmtd2DHbTqAoi6
C7oDtgZuqt2NxTlo0X7wDfFnVDPwy70F+hWoAsNffXgxaNX6i0h1YD7wXRElG4QRO+/aLaHdQ6fb
aF+hBxz2+e5bATUnX3Kn8s1+wx1bfE3Dp0aO9fbag25N8GEv+F4f9Tekvu1W42rIA5kfBBy9Qvd6
9ffoN+CSOh0bOjGswKKBE93Q0CEaifFxQUYXgmH/4d4uzNiFGbswYxdm7MKM5wwzUjTOSN+p9jit
WA+TVCiYaAHtPXCgrmm5CJNFJIljjlVhxW6U32SUd4W1cGRfMHrvfYA+1lHVnJ2MgTqhkd0Zr6Nj
e+35FhBAF/tgBHyj/RY1piM2YFDmO2CfoDsQtyL7+OlUlB00C2q8bbSr4LH4Wk2gjrQB0ahbW5aJ
btcMzTBds8JASXyLDuOKyoef2cYESJVd44Iwt91h0hH4JkC8+OnFZfl97+PJR0eQIBAwXxDBhUhR
xD7yyPqPdR0rbNSH3UELgxc3mnEDGTdajomO91JvyD2RZ7Z0rZEhPufN+o8OwxG0I99hFWwAtEes
Qx/EC5E6V/o4bTTTNLoglfn1TrWITSw7EyE97T/e8/A5vATqmLrSC4cOELsEKg+ME2sCqGZTbNCY
J39cSCWMH+vPGT/utOyfp2VhX+YsrK5aMw2urs4/HY17cPI8D0qj6j5Hi6/toVtzT8qWrv2GHoSs
mMAFFrkVMpJmmh1qWLQ+qJYKmuMtD8RBtZYOM8+4l+PJ+Ll0KAzxc4VDez5+eqq+XIGR83hOrs22
NHiPv5Ptfzjb/7o7Wr7t8pjzn/cydeTTVUfGNzj/W8ntzn9vpTyV/MGb2hCtWMGLimRL2Mby878g
7Vz0/G+xlCsWd+d/t1DO/30/0bhbtmXqVSqfyaU44mx/epUa9C/SL1L/fr1/fukKdZ/jXHAaKEGF
13jt3Nmgj7+haAbbTYcwFtFGpw5U1gEDlFkP5+ud3/+zylPZ/71sjSWTKGjz0cFgff8PPwrlnf/f
QoGJlmeGdBepxaZ9T9nGKv9fLJ9E5X+SL+a+bf//HIb1tD2nJan//67ertE1UnaioDOoNsQal0pn
szzups5m6/06RxcWOMCRzQqtFJca2/b0NJu9u7tz9lzDRB4BrSwE/1Ni2g84hUhDhYxiKzBCnDPs
IXLgqqLK9uv9vfMv5OE1KGxdhRnVZDqzSVOSi4Wqal9Kpg4En2cRAgBtc0ayOMSwmudZinc3zMyX
TdT0Xp5ZxIzz9PFlg/i/XChWdv5/C+WR8v/VsMYzCRfkMv5VJaIWm4z/lcLJTv5bKM8jfxi05DEB
nFQTNpB/sZLP7eS/heJKaiLpIGncNr79+K9cKkbkX4JrpX9e/LeGYT1V97+5+K9H+z8AjvRsySZe
yOfAMKAFfGa8G/73exZSf//foVvdr88QGKZCzHeqbnsAe+fwj9wQ83XuPOv+xIpZlzov2PyWgs7E
avqIpKAbxH/5fG7n/7dRkss/lClgrTZW+f9CpTCX/7NUKH/b/v8bKdnsfjbLhdNA0CtxOrDvQDvn
g7nrB+4/dJziLmGg4gydK2QLxWwhn0HI/e/VydQwbe58IL5X7Sz9zIxf7++/Qf9pjvBcaaBh7pQb
iF1iTQ0dnC/W4v1T2S4Q1N5/Q3Rl/6/tVr+Zspn9T9ZqY4X9F0rlaPwH9l/c2f82Soz9T57a/lMh
75JaaP8Hh65tv4GaGp2NsIdIASiw/zR3gJvJDwNJG04PQt6COwre5BRVuVB11RqzQ5QQ2l6q9rg9
pdsxTg9avbpKNzFI5gPU1CiQc5f7gz7Qgl63ISo1VYVwUwPIp3tFIDC3jYn6O2tFGkGnuGC7DFOG
YjCJPTN1tkfyK3Ti+6kp3UwkbiKZX7g0eD561LeHh3XpdpQRkR9kzemucze8x+goOQNCe10uDBMQ
6bhvQ78Jtnp6EKHi6FCOBeQMl3U+YTrbB+Ky7ejQiDKwJmkaKM3dmACvOJ3ccRbW5SwHqWpx1wRP
KstMvTJuRQj2OXsMtyfEHhsKZxtQR8NNI1JkFw/cYZUBngSawJ3LITF8+hTLUqDQkD9zoCs2agju
hTl9k6qzbTJcCDbl0t01NHIaz6eMCfc+M3mDFG8NVVlLaeuqJUumEkRJ1bVH7POoqF5DdSsIGM94
5AtOJwE9xW0BD0Ni8LgujjhJf3AvW9wdMYlbi2LD9K2ILkj0nWRxumFz5kzHBfljJrc7VdNAtpzM
CLHG4BW0h3mDOV1qqMv0wXQ2QSHFppcXwR5LNqPbmhJZHakywiLNfj9o561jTkJw8sBopV2gmpKh
wqNe6c921c9S1hj/wyks1pgPbjD/K+Uru/XfbZTN5R/YnpyR8ROuxivF+vIv5gqF4k7+WyhPLP+a
uw3sV8vQ3TZWzf/zlWj8XyxU8t/4+u83UjBISDHxpWAC/omOsX84m7hSqqIaE7yemukqrspKWore
+wqfn4+xrqqPDIRgdVLSDIZkk1ah69qpY3bdWdLFG/l9rL/b6/uXKI+wf3a4BVf2Vfhe6P032/97
Utn5/22UJ5V/rPdf6f+LuZO5/b+FYiW/8/9bKNT/qxOQ8nL/zw5/Ot4c7sD0SSP0TuE+cFX93bmY
uy/knKHieH2cxWfAGU/ny/vCy6em83E4Y+ks5e5LT83PR+KMpfMkd3/y1HQmxCkpcRjzj9CkeIyP
0fd1aEymRevQ+BiMsTQm1KA1aHwUxlgaKyf3lZMnpfHpMb4oZsr3+LESq2GlccGY4EpjYhbkc4XS
PX7sYvddiZTN478FwV5MWTX/h8nB3PsfTyqFXfy3hfLHzg/8o0ty+w+89mjNNjaY/xfRJ+zm/89f
NpL/glzEi9pYNf8v5PJz6z/lcmXn/7dQkuz/5YBFuiJpMGl7ldINuh9YMeQZ7s/g8PUZrwKv1RDd
rR00ywYxi5maIRtS35jJ40zP05XMR7Ga8tstYrt24G0TQEoxXyhk8idwnWbi6M50W51AW2q7F8CZ
4qbOXmJ8IGFZToJ3JBTmmPisG5PkaNKDMbNfpa6EXsrZlsHU17kEYH1TUvFxhsY2Mlj+nZ40IrxJ
JPcSXS5vSrY8JopzCXcMqJIWzjD/KpXL/yetTdPGhyY7/sydB1+h8tqJ1OHyVJvdiDqnwh1bHalY
dzFLM2LV738Haqp6gJXAt1wpky+ksgH8sjSV2Nsx6CvtXqWwT5wEneIYa7ibGTRupbiJGnrrx6vU
SxDNUlSuKlicJd0S+moCfMTO3r3xAjfKTCQ7BvELH/F5dp4v5+zJfKDl79JpZDDnczidDtx2tjHg
p1h/lRLejdLiZZovCCkfiAI676kOX6V3bkPyA3GERMhwN8nkmpjYQhg6NY/Pw8l9IQ8MHrWHxs1N
4M4rNnPrGxeqpqVocz+TcvrkOl2wiwvwUZwmbn6hOEeYTynF3QOhaEIPzvedqthjMKtKOcWNiXoz
Bt2HmDooyDmkEPYZJoFZI5g+fdUCbSB61cHdU3/HpE6O+rMmQteWtUQNiKG/luQvmK9eV+iTROgJ
qk0+7yt478GyyYTeBX7RP9VoJTke+m6s2oSBLCMH5dKgVvAWjYARZjlGz8Ry0v+SbgvpavVqEabz
LKKJ0alsWE1iIKYa2PaYvheTC/wWA85ArF6opmV7u2MZVerVr+n3v6UFKU/9lNmQrgl4PgrKBWAj
ejsKo4p06Dwbax/nbNsb5Y0s6beS1XBSPFDtKxep8qHCBZ1FljbtGrlr0WDujs/4i5+O+PuXjeK/
yMs1VrWx8vlPJXr+v3CSz+3yv2yjJD3/9S3He88U3FWvfk4XX6TtnLkL7rYd3Nk6Sf/UT6uj2aOC
u4AInc3cNU2yQBXCsnZvQsw200jHNG6BnSDFrUSEL65r6Y+j9K1S20WEu4hwRUSofLlP/55L678/
QdS3C97+ASV5/OenBF63jVXxX6VSml//PdnFf9so39z5/9pFFby8RurRd7l6mQAs2wTiX/9wEEyH
7b5g4BAcGbsfwSd4iarnEQkfhdqgz152gOmjF+Hw/fM8joUJrhdjA4PzD6Y5kVUU8Ukmt6g+nl5a
TMfSjnRgOAXDx5cmr+xJh6+9xzc3oHYsRNjDIz9OF3oUIoo3v7gjC7qej8I3el3y20yF2ETs4A6j
di+aEIzBhU5d0VNUTUlXR8Sy47NJhOFnUzzUaDVnmq2CTtP6lp9HYiRpFm3KrTt/zMxalHViIF6q
umLcBU924fGyQPOBfBSSaUrsZwDPkmaD+kABHe7FHm8L8DaK1D2JSUPlRUhDkEuQ+TNETAwahwkX
G8IIvJQb+NPjwlwijiXCE3VFxYhZ1KczW7jF+c0iVXGedXlkxllV8HlYVCkHInYgvpsLuujUc5RZ
AU+nyqTmzsxUX9t8FXAxSebkthJE5fHHZTrjAFG8eWfbVN1ztksQD8S4Ch1AhTProHyW12hIugJT
nClpkNEm1bo4rdi8g/+H+7Kev5dujcHUgulD3bjT/wIcik1Mkzz+C7+KeJ0MICviv1yxPLf/p1gp
nezivy0U50R/RLjbzAASano+B0hgRAzkAHnjLgJyB6DoBp401iFMwtP48iHn1uKOuDv642yXNGRB
2dT+18kAssL+S/lied7+y7vzH9sosfb/9BlAIv4ltcQDLM4CEoILpFSgK1NeLgo3DwI9ye8kpugb
i1NcuOknkuS0kOeueUkWYpISMIySpj14aSowQ4HCSbYtyWO6kO65ql+Yp/rFzVAwZavMChdygdwv
tG+/BLM0zCxMmiFx/gO5Y4rBw+j5SprbQHLfGUUJuybu4w31d2jMp44oLiW0Ra/BPvZRcYWlGIQl
fEBRPVBwPxWGk1jCML0UH5LJsnIcWAToC2Z+SJah5Bcg1rKJpBxmQkk1aEN1ljCDVZxXh2g6DJbw
waHRyz3iJJKgmk1v09XjcO8NWZ6ZViSNhY+LoGIz5P5a9jGygWbgUPFZip/yxMtE4bXRjc1lAXMt
Q1ap0WE2E6ZrrEGa5kKWdBSmSdJO+hQnBcq9zeFjtAB9DoesQKfcWxPpgWJgEJwGeEyaGiNItJvj
A0DQM5gq8MDPpzEv2gWJTFbJskpkY0J4Gd/FtFqaXnITdnsMNE4MfGA1Mo0JsBIakygq3MyG+WEM
vBi8tDy9CI4SNhWJLVlfgqlFptIM9eUA5ItceSA2R4GJchilCjnn0hHT6UswT4h91Bt9w15T+8Zu
e72O6XOYEWHNRvlT7eaUGYUH3QcHjnmRqLs2Z47bOyD3GYYMhIR2Q4900QQvceLEngmIACybMINY
00BhOqVbKmucdi5sXq6vGnn4l4kTbjNweSzpNwT7rdDBi5oudieMPV5BaYf8B09P0SGffLdDQSIW
dwifzXKYIfbYy4TDUpz6DuSY+nYcI9BDGbObMSMk7aXGYUqCZwHwmS4Q5jboGADW9OlHwvAOegZQ
GBP3Bjga9ffOmPP3Ksnj//Aj8XUWAFbN/wvlufi/VCju4v9tFCeejwp3mwsA4bbpCkD40i7l5/OV
je1/jQWAVfP/0vz6X6mwW//bSom3/6dfAIg6mJR/65Jco29gX9G1gYhzODjkziNkvZPwGaH5etGq
QQQDC8ou30NzdL/Z0fCO/TqjN3CPM7m1LZq00Y34cG+1c9zVx3R6cPl+EHcD4r/YCpjRsQtzJoi9
Qx1ARGFGHx065uhQiwT9+GOIJIvYs6nbBwbV6jWMm4M3qeCtU+5/FFo9dUy/Ds88hOwtsKzTI+7A
ZcOhd+58EcbxbPzvlIMIC0uUeOadLec4Fxc08emTz+pAds3PZyHADI2Gcbpp8ZHdZaJuG8BDC5+n
6JRqfGU9Vv7k1Q4tHmTimS8pSpzanOLLCelex9M3qaE1lSYph7ZPeCdD9+ph3dk1/jx12/zssO4T
8IhuFPNpZJMufEDqk3365pPHL59u25jyujzGTLIeqPDbTNL6Brt+6tHgw34+jsF0bdi2MUmMLAge
i08jIzsxNh84FpeJD6QSIwtAO9g+e7z29EozJOVdv9lgWwlAcudsFHs9munsdcQoSXAWfzh5Sg/y
h86jgAzg+AJ+ZhJSAytDZZ+ZGparIAf/mxoZxnf/C6rOfeXABPrqhICgDxDwmMvnDs9wUxxtNhXZ
wncNM7BBt3Gqq5pL/BCIl75EvdERXuyhCr7CnLYjpnqKCm3Y8nhIl5YOvL+4kHNQF3sdvl97N+yL
TWHYal8CLeUcdwTWKtSGHaE7bMKPw2Mfyw2xhxPg+fC3GZmRA7j1X9/GP3kU2EQygUH6pafh1KIP
Q34nAhRxPZG7j/M+vrhNgosaFzBL7s2mxLz1qVuXs2HuWg+6fBBi041mXEuaw6if2r1hrcH3esNB
X2yI/atjLhdmHpZou+x5lNOyS8RZqAr22Ac7nNv/6d9Lvw74UtCmMJ519eQRavKI3sb0mJtHTCUe
wBYccz7PI/wauvI1MBy5v78G1RZVpq4qDfAbTtufLFQlLnAj6PejzX/9u65oJI//UTXWTPzvlFXz
/0pu7v0fBTwTvov/n7844TwT7nPP+he+EACjJiThgIZP5o18jEuz4F7wz+2nz4feOMNGfLzho/A2
ojEDfsMOKNBl0KlhaAFnA33ooWFz9PgKXcOfYLzhZo0P1FQ4Z0M8d4PPuMbEdNbKscQ1jpGpQx6O
VPT6wafg+w1kvPT5MBgpO+noQ5vUcDfYAWMC9v4Y/f5xbJN0aP6zNWhXdmVXdmVXvsXy/+CGO9cA
yAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423559</attachid>
            <date>2021-03-17 20:54:41 -0700</date>
            <delta_ts>2021-03-17 21:31:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222336-20210317205440.patch</filename>
            <type>text/plain</type>
            <size>38733</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE4YjFhODFlYjQ4MzI1MmIz
MTk0MWNiMDE0NzYyYTk5MTc0MTg5MzUuLjhiNGVlMzdhNzk4MWVlNjU5M2U0ZTc1MTBhZjkwZDM2
NDg2ZGNhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMjEtMDMtMTcgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gTWFrZSBpdCBwb3NzaWJs
ZSB0byByZWxlYXNlIGEgV0tXZWJWaWV3IG9uIGEgbm9uLW1haW4gdGhyZWFkIHdpdGhvdXQgYSBj
cmFzaCBkdWUgdG8gV0tTY3JpcHRNZXNzYWdlIHJhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjMzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2
YXRlTWFjLm1tOgorICAgICAgICAoV0tQYWdlR2V0V2ViVmlldyk6IFVzZSBXS1BhZ2VQcm94eTo6
Y29jb2FWaWV3IGluc3RlYWQgb2YgZnJvbVdlYlBhZ2VQcm94eS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW06CisgICAgICAgICgtW1dLRG93bmxvYWQgd2ViVmll
d10pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1t
OgorICAgICAgICAoLVtXS0ZyYW1lSW5mbyB3ZWJWaWV3XSk6IERpdHRvLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAg
KFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU6OmRpZFBvc3RNZXNzYWdlKTogVXNlIFdLUGFn
ZVByb3h5Ojpjb2NvYVZpZXcKKyAgICAgICAgaW5zdGVhZCBvZiBmcm9tV2ViUGFnZVByb3h5IGFu
ZCBhZGQgbnVsbCBjaGVja3MuCisgICAgICAgIChTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRl
OjpkaWRQb3N0TWVzc2FnZVdpdGhBc3luY1JlcGx5KTogRGl0dG8uCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKHBhZ2VUb1ZpZXdNYXApOiBE
ZWxldGVkLgorICAgICAgICAoZnJvbVdlYlBhZ2VQcm94eSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOiBVc2UgV0tQYWdlUHJv
eHk6OnNldENvY29hVmlldworICAgICAgICBpbnN0ZWFkIG9mIGFkZGluZyB0aGUgcGFnZS92aWV3
IHBhaXIgdG8gYSBtYXAuCisgICAgICAgICgtW1dLV2ViVmlldyBkZWFsbG9jXSk6IFJlbW92ZWQg
Y29kZSB0aGF0IHJlbW92ZWQgdGhlIHBhZ2UvdmlldyBwYWlyIGZyb20gdGhlIG1hcC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDogUmVtb3ZlZCBm
cm9tV2ViUGFnZVByb3h5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZC5tbToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdXZWJWaWV3XSk6IFVz
ZSBXS1BhZ2VQcm94eTo6Y29jb2FWaWV3IGluc3RlYWQgb2YgZnJvbVdlYlBhZ2VQcm94eS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW06CisgICAgICAg
ICgtW19XS0ZyYW1lVHJlZU5vZGUgd2ViVmlld10pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIHdl
YlZpZXddKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JUZXN0aW5nLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3IgaW5zcGVjdG9yV2ViVmlld10p
OiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnJlcXVl
c3RTd2l0Y2hUb1BhZ2UpOiBVc2UgV0tQYWdlUHJveHk6OmNvY29hVmlldworICAgICAgICBpbnN0
ZWFkIG9mIGZyb21XZWJQYWdlUHJveHkgYW5kIGFkZCBhIG51bGwgY2hlY2suCisgICAgICAgIChX
ZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpyZXF1ZXN0SGlkZVdpbmRvd09mUGFnZSk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6cmVxdWVz
dFJlc3RvcmVXaW5kb3dPZlBhZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlv
blNlc3Npb25DbGllbnQ6OnJlcXVlc3RNYXhpbWl6ZVdpbmRvd09mUGFnZSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6aXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZ09uUGFnZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudDo6ZGlzbWlzc0N1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjphY2NlcHRDdXJyZW50SmF2
YVNjcmlwdERpYWxvZ09uUGFnZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudDo6bWVzc2FnZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnNldFVzZXJJ
bnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0T25QYWdlKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Ojp0eXBlT2ZDdXJyZW50SmF2YVNjcmlwdERp
YWxvZ09uUGFnZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudDo6Y3VycmVudFByZXNlbnRhdGlvbk9mUGFnZSk6IERpdHRvLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYktp
dDo6YWxlcnRGb3JQZXJtaXNzaW9uKTogVXNlIFdLUGFnZVByb3h5Ojpjb2NvYVZpZXcgaW5zdGVh
ZCBvZiBmcm9tV2ViUGFnZVByb3h5LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisgICAgICAgIChXZWJL
aXQ6OlBvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6YWJvcnRJbnRlcm5hbCk6IEFkZGVkIGEg
bnVsbCBjaGVjayBzaW5jZQorICAgICAgICBpbml0U2VjcmV0V2ViVmlldyBpcyBubyBsb25nZXIg
Z3VhcmFudGVlZCB0byBhbGxvY2F0ZSBtX3NlY3JldFdlYlZpZXcgaW4gdGhlIGNhc2UKKyAgICAg
ICAgd2hlcmUgdGhlIFdLV2ViVmlldyBpcyBuaWwuCisgICAgICAgIChXZWJLaXQ6OlBvcFVwU09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGVJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb246OmluaXRTZWNyZXRXZWJWaWV3KTog
VXNlIFdLUGFnZVByb3h5Ojpjb2NvYVZpZXcKKyAgICAgICAgaW5zdGVhZCBvZiBmcm9tV2ViUGFn
ZVByb3h5IGFuZCBhZGRlZCBhIG51bGwgY2hlY2suCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisgICAgICAgIChX
ZWJLaXQ6OlNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBv
bGljeSk6IFVzZSBXS1BhZ2VQcm94eTo6Y29jb2FWaWV3CisgICAgICAgIGluc3RlYWQgb2YgZnJv
bVdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVI
YW5kbGVyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2Nv
YTo6cGxhdGZvcm1TdGFydFRhc2spOiBVc2UgV0tQYWdlUHJveHk6OmNvY29hVmlldworICAgICAg
ICBpbnN0ZWFkIG9mIGZyb21XZWJQYWdlUHJveHkgYW5kIGFkZGVkIGEgbnVsbCBjaGVjay4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpwbGF0Zm9ybVN0b3BUYXNr
KTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbToKKyAg
ICAgICAgKC1bV0tQREZIVURWaWV3IGhpdFRlc3Q6XSk6IFVzZSBXS1BhZ2VQcm94eTo6Y29jb2FW
aWV3IGluc3RlYWQgb2YgZnJvbVdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDogVHdlYWtlZCBmb3J3YXJkIGRlY2xhcmF0aW9ucyBhIGJpdCwgYW5kIGFk
ZGVkIG9uZSBmb3IgV0tXZWJWaWV3LgorICAgICAgICBNYXJrZWQgdGhlIGNsYXNzIGZpbmFsIGFu
ZCB1c2UgZmluYWwgaW5zdGVhZCBvZiBvdmVycmlkZS4gQWRkZWQgQ29jb2Etb25seSBjb2NvYVZp
ZXcgYW5kCisgICAgICAgIHNldENvY29hVmlldyBmdW5jdGlvbiBtZW1iZXJzLCBhbmQgbV9jb2Nv
YVZpZXcgZGF0YSBtZW1iZXIuIEFsc28gYWRkZWQgaW5saW5lIGltcGxlbWVudGF0aW9ucworICAg
ICAgICBidXQgb25seSBjb21waWxlIHRoZW0gd2hlbiBpbmNsdWRlZCBmcm9tIGFuIE9iamVjdGl2
ZS1DIHNvdXJjZSBmaWxlLgorCisKIDIwMjEtMDMtMTcgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFw
cGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0gU29tZSBtZWRpYS1zb3VyY2UgdGVzdHMgZmFpbC90
aW1lb3V0IHdoZW4gbWVkaWEgaW4gR1BVIFByb2Nlc3MgaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQppbmRl
eCAzZmQzNzBhMGUwZjU3N2I5ZDI1NGIyODBjOTg4ZmI1Y2Y1NmZmNTUyLi4zYTZmNGM1OTI2MmNl
NmQwZWVhMjQwYzZkMmZiNzllYjE3ODZjNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQpAQCAtMTU1LDkgKzE1NSw3
IEBAIFdLTmF2aWdhdGlvbiAqV0tQYWdlTG9hZEZpbGVSZXR1cm5pbmdOYXZpZ2F0aW9uKFdLUGFn
ZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBmaWxlCiAKIFdLV2ViVmlldyAqV0tQYWdlR2V0V2ViVmll
dyhXS1BhZ2VSZWYgcGFnZSkKIHsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgcmV0dXJuIGZyb21XZWJQYWdlUHJveHkoKldlYktpdDo6dG9JbXBsKHBhZ2UpKTsKKyAg
ICByZXR1cm4gcGFnZSA/IFdlYktpdDo6dG9JbXBsKHBhZ2UpLT5jb2NvYVZpZXcoKS5hdXRvcmVs
ZWFzZSgpIDogbmlsOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbQppbmRleCAyMzIwMjEwNWRkZDExNzk2
ZjIyNjM1YmI1M2E5ZWZkMzllZmFlODVmLi5hYmVhOGEwZWViYjk4M2JkOTM0MmQ4NDg3NjI0M2Mz
ZTcwODdhZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZC5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiV0tOU0RhdGEuaCIKICNpbXBv
cnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAj
aW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KQEAgLTE5NiwxMCArMTk3LDggQEAgLSAoTlNVUkxS
ZXF1ZXN0ICopb3JpZ2luYWxSZXF1ZXN0CiAKIC0gKFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAg
ICBhdXRvKiBwYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKTsKLSAgICBpZiAoIXBh
Z2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGZyb21XZWJQYWdlUHJveHkoKnBh
Z2UpOworICAgIGF1dG8gcGFnZSA9IF9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdlKCk7CisgICAg
cmV0dXJuIHBhZ2UgPyBwYWdlLT5jb2NvYVZpZXcoKS5hdXRvcmVsZWFzZSgpIDogbmlsOwogfQog
CiAtIChpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCmluZGV4IGVmNjM5YjBjMTlhNzk2
ZTZkMzRkNDkyMzFiZTkyYWIzYjNmNzdlMjIuLmM4ZWJlYTJmYTcwY2Y2MzVlODIwZWRkNzBjMWVj
Y2MzZTc2NDJlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0ZyYW1lSW5mby5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tGcmFtZUluZm8ubW0KQEAgLTY3LDkgKzY3LDggQEAgLSAoV0tTZWN1cml0eU9yaWdpbiAqKXNl
Y3VyaXR5T3JpZ2luCiAKIC0gKFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICBpZiAoV2ViS2l0
OjpXZWJQYWdlUHJveHkqIHBhZ2UgPSBfZnJhbWVJbmZvLT5wYWdlKCkpCi0gICAgICAgIHJldHVy
biByZXRhaW5QdHIoZnJvbVdlYlBhZ2VQcm94eSgqcGFnZSkpLmF1dG9yZWxlYXNlKCk7Ci0gICAg
cmV0dXJuIG5pbDsKKyAgICBhdXRvIHBhZ2UgPSBfZnJhbWVJbmZvLT5wYWdlKCk7CisgICAgcmV0
dXJuIHBhZ2UgPyBwYWdlLT5jb2NvYVZpZXcoKS5hdXRvcmVsZWFzZSgpIDogbmlsOwogfQogCiAt
IChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpp
bmRleCA2YjMxNWUzMzRlMzlmZmU1NjUxZGFkMTlkM2EzNGVjZGNiM2U3MDcyLi43OGMxZTVlODVh
NDQwZTk0MDU3MzgxYzY1NGZiNDY0NDE2ZjEwYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
CkBAIC0xNDUsOSArMTQ1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKFdl
YktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm9EYXRhLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBmaW5hbAogICAgIHsKICAgICAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmll
dygpOworICAgICAgICAgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvRGF0YSksICZwYWdlKSk7CiAg
ICAgICAgICAgICBpZCBib2R5ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgMCk7Ci0gICAgICAgICAgICBhdXRvIG1lc3NhZ2Ug
PSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJvZHkgd2Vi
Vmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGZyYW1lSW5mbzpmcmFtZUluZm8uZ2V0KCkgbmFt
ZTptX25hbWUuZ2V0KCkgd29ybGQ6d3JhcHBlcih3b3JsZCldKTsKKyAgICAgICAgICAgIGF1dG8g
bWVzc2FnZSA9IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6
Ym9keSB3ZWJWaWV3OndlYlZpZXcuZ2V0KCkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1l
Om1fbmFtZS5nZXQoKSB3b3JsZDp3cmFwcGVyKHdvcmxkKV0pOwogICAgICAgICAKICAgICAgICAg
ICAgIFsoaWQ8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pbV9oYW5kbGVyLmdldCgpIHVzZXJDb250
ZW50Q29udHJvbGxlcjptX2NvbnRyb2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6
bWVzc2FnZS5nZXQoKV07CiAgICAgICAgIH0KQEAgLTE2Miw2ICsxNjUsMTIgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fc3VwcG9ydHNBc3luY1JlcGx5KTsKIAorICAgICAgICBh
dXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmlldygpOworICAgICAgICBpZiAoIXdlYlZpZXcpIHsK
KyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihudWxscHRyLCAiVGhlIFdLV2ViVmlldyB3YXMgcmVs
ZWFzZWQgYmVmb3JlIHRoZSBtZXNzYWdlIHdhcyBkZWxpdmVyZWQiX3MpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgYXV0byBmaW5hbGl6ZXIgPSBbXShGdW5jdGlv
bjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+JiBmdW5j
dGlvbikgewogICAgICAgICAgICAgZnVuY3Rpb24obnVsbHB0ciwgIldLV2ViVmlldyBBUEkgY2xp
ZW50IGRpZCBub3QgcmVzcG9uZCB0byB0aGlzIHBvc3RNZXNzYWdlIl9zKTsKICAgICAgICAgfTsK
QEAgLTE3MCw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewog
ICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgJnBhZ2UpKTsKICAg
ICAgICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxp
emUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCAwKTsKLSAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9
IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJW
aWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1l
Om1fbmFtZS5nZXQoKSB3b3JsZDp3cmFwcGVyKHdvcmxkKV0pOworICAgICAgICAgICAgYXV0byBt
ZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxvY10gX2luaXRXaXRoQm9keTpi
b2R5IHdlYlZpZXc6d2ViVmlldy5nZXQoKSBmcmFtZUluZm86ZnJhbWVJbmZvLmdldCgpIG5hbWU6
bV9uYW1lLmdldCgpIHdvcmxkOndyYXBwZXIod29ybGQpXSk7CiAKICAgICAgICAgICAgIFsoaWQ8
V0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4pbV9oYW5kbGVyLmdldCgpIHVzZXJDb250
ZW50Q29udHJvbGxlcjptX2NvbnRyb2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6
bWVzc2FnZS5nZXQoKSByZXBseUhhbmRsZXI6XihpZCByZXN1bHQsIE5TU3RyaW5nICplcnJvck1l
c3NhZ2UpIHsKICAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBkMDQ4NmMzMzZi
M2MzZTA4ZGYyZTM1NmZiOTE4YTIwOTEwOTA4YjE3Li5jMmU1MjIwMDI1MjQ3YTBkY2ZhMTA5ODMx
NTU2YTY0NTliZjBiYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTE5NywxNyArMTk3LDYgQEAgc3RhdGljIGNvbnN0IEJPT0wgZGVm
YXVsdEZhc3RDbGlja2luZ0VuYWJsZWQgPSBOTzsKIHN0YXRpYyBjb25zdCB1aW50MzJfdCBmaXJz
dFNES1ZlcnNpb25XaXRoTGlua1ByZXZpZXdFbmFibGVkQnlEZWZhdWx0ID0gMHhBMDAwMDsKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi1zdGF0aWMgSGFzaE1hcDxXZWJLaXQ6Oldl
YlBhZ2VQcm94eSosIF9fdW5zYWZlX3VucmV0YWluZWQgV0tXZWJWaWV3ICo+JiBwYWdlVG9WaWV3
TWFwKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJLaXQ6OldlYlBh
Z2VQcm94eSosIF9fdW5zYWZlX3VucmV0YWluZWQgV0tXZWJWaWV3ICo+PiBtYXA7Ci0gICAgcmV0
dXJuIG1hcDsKLX0KLQotV0tXZWJWaWV3KiBmcm9tV2ViUGFnZVByb3h5KFdlYktpdDo6V2ViUGFn
ZVByb3h5JiBwYWdlKQotewotICAgIHJldHVybiBwYWdlVG9WaWV3TWFwKCkuZ2V0KCZwYWdlKTsK
LX0KLQogUmV0YWluUHRyPE5TRXJyb3I+IG5zRXJyb3JGcm9tRXhjZXB0aW9uRGV0YWlscyhjb25z
dCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzKQogewogICAgIGF1dG8gdXNlcklu
Zm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwpAQCAtNDQw
LDcgKzQyOSw3IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KICAgICBmb3IgKGF1dG8mIHBhaXIgOiBw
YWdlQ29uZmlndXJhdGlvbi0+dXJsU2NoZW1lSGFuZGxlcnMoKSkKICAgICAgICAgX3BhZ2UtPnNl
dFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29j
b2E6OmNyZWF0ZShzdGF0aWNfY2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSY+
KHBhaXIudmFsdWUuZ2V0KCkpLmFwaUhhbmRsZXIoKSksIHBhaXIua2V5KTsKIAotICAgIHBhZ2VU
b1ZpZXdNYXAoKS5hZGQoX3BhZ2UuZ2V0KCksIHNlbGYpOworICAgIF9wYWdlLT5zZXRDb2NvYVZp
ZXcoc2VsZik7CiAKICAgICBbV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheSBpbnN0
YWxsRm9yV2ViVmlld0lmTmVlZGVkOnNlbGYga2luZDpAIldLV2ViVmlldyIgZGVwcmVjYXRlZDpO
T107CiAKQEAgLTQ0OSw3ICs0MzgsNyBAQCAtICh2b2lkKV9pbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAgICAgX3RpbWVP
ZlJlcXVlc3RGb3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgPSB0aW1lTm93OwogICAgIF90aW1l
T2ZMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlID0gdGltZU5vdzsKICAgICBfdGltZU9mRmly
c3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVXaXRoUGVuZGluZ0NvbW1pdCA9IHRpbWVOb3c7Ci0j
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNlbmRpZgogfQogCiAtICh2b2lkKV9zZXR1
cFBhZ2VDb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mKXBhZ2VDb25m
aWd1cmF0aW9uCkBAIC02NDMsOSArNjMyLDYgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgQ0ZOb3Rp
ZmljYXRpb25DZW50ZXJSZW1vdmVPYnNlcnZlcihDRk5vdGlmaWNhdGlvbkNlbnRlckdldERhcndp
bk5vdGlmeUNlbnRlcigpLCAoX19icmlkZ2UgY29uc3Qgdm9pZCAqKShzZWxmKSwgKENGU3RyaW5n
UmVmKVtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzprR1NFdmVudEhhcmR3YXJlS2V5Ym9h
cmRBdmFpbGFiaWxpdHlDaGFuZ2VkTm90aWZpY2F0aW9uXSwgbnVsbHB0cik7CiAjZW5kaWYKIAot
ICAgIGlmIChfcGFnZSkKLSAgICAgICAgcGFnZVRvVmlld01hcCgpLnJlbW92ZShfcGFnZS5nZXQo
KSk7Ci0KICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggMTc3ODdmZDUw
MmQxOThhMzBjMDBjZmM1NjU0MzE1MDBlZTZhNmJkOS4uMzMzZTc4N2Q0OGExODA3YTUyNjc0YWU2
ZDMxODE3ZWJlOTEwMGVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTI3OSw3ICsyNzksNiBAQCBjbGFzcyBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAKIEBlbmQKIAotV0tXZWJWaWV3KiBmcm9tV2ViUGFnZVBy
b3h5KFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CiBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvckZy
b21FeGNlcHRpb25EZXRhaWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmKTsKIAog
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQppbmRleCA5
MTNmNTNhNTQxMTg5NGMyOWViZmUwZDdmMDdmYjdiNjAyMDdhZjA4Li4wYjMyOTAwODc5ZjczYjk3
NzZmMWJmYmI2YWVjNzNjMDU1M2Y3YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCkBAIC04NCw5ICs4NCw4IEBAIC0gKE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3QKIAogLSAoV0tXZWJWaWV3ICopb3JpZ2luYXRpbmdXZWJWaWV3CiB7Ci0g
ICAgaWYgKGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9IF9kb3dubG9hZC0+X2Rvd25sb2FkLT5vcmln
aW5hdGluZ1BhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHJldGFpblB0cihmcm9tV2ViUGFnZVByb3h5
KCpvcmlnaW5hdGluZ1BhZ2UpKS5hdXRvcmVsZWFzZSgpOwotICAgIHJldHVybiBuaWw7CisgICAg
YXV0byBwYWdlID0gX2Rvd25sb2FkLT5fZG93bmxvYWQtPm9yaWdpbmF0aW5nUGFnZSgpOworICAg
IHJldHVybiBwYWdlID8gcGFnZS0+Y29jb2FWaWV3KCkuYXV0b3JlbGVhc2UoKSA6IG5pbDsKIH0K
IAogLShOU0FycmF5PE5TVVJMICo+ICopcmVkaXJlY3RDaGFpbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQppbmRleCAxNjBj
MWFkMWNhMjA0NzlhNTBhNDI5ZjdhMjUzMzc5ZGM0NDQ1ZDFjLi44NGNjN2NhMWNkNTBmOTFhZGQ0
MWRhN2RlNjQ5MzA5MTRmNTU4MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQpAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmlld0lu
dGVybmFsLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFu
ZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGVJbnRlcm5hbC5oIgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgpAQCAtNjEsNyArNjIsNyBAQCAtIChX
S1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4KIAogLSAoV0tXZWJWaWV3ICopd2ViVmll
dwogewotICAgIHJldHVybiByZXRhaW5QdHIoZnJvbVdlYlBhZ2VQcm94eShfbm9kZS0+cGFnZSgp
KSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX25vZGUtPnBhZ2UoKS5jb2NvYVZpZXcoKS5h
dXRvcmVsZWFzZSgpOwogfQogCiAtIChOU0FycmF5PF9XS0ZyYW1lVHJlZU5vZGUgKj4gKiljaGls
ZEZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3IubW0KaW5kZXggZjg3MWI5YTJjNzhkYmU0M2I2ZDI0ODczYjQ1NGVkZjBiYzI5NjNmMy4u
MmMxYmE3Yzg1MzhjMGNjYWJhM2Q4MTAwODAwZTExMmI5MTA5ZDVjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCkBAIC02Niw5ICs2
Niw4IEBAIC0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkPF9XS0luc3BlY3RvckRlbGVnYXRlPilkZWxl
Z2F0ZQogCiAtIChXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgaWYgKGF1dG8qIHBhZ2UgPSBf
aW5zcGVjdG9yLT5pbnNwZWN0ZWRQYWdlKCkpCi0gICAgICAgIHJldHVybiBmcm9tV2ViUGFnZVBy
b3h5KCpwYWdlKTsKLSAgICByZXR1cm4gbmlsOworICAgIGF1dG8gcGFnZSA9IF9pbnNwZWN0b3It
Pmluc3BlY3RlZFBhZ2UoKTsKKyAgICByZXR1cm4gcGFnZSA/IHBhZ2UtPmNvY29hVmlldygpLmF1
dG9yZWxlYXNlKCkgOiBuaWw7CiB9CiAKIC0gKEJPT0wpaXNDb25uZWN0ZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JUZXN0aW5nLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3Rpbmcu
bW0KaW5kZXggNzlhYmZlY2M3YjFlMWU1ZTExNWRiN2M3Zjg1ZDg0MWZkMWQwMDM0ZC4uOTBkOTAw
MTI0MjY1NzJlNmE3OWRkOGEzNjZlZTIwMTI0NGJiYzdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3RpbmcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3RpbmcubW0KQEAg
LTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJXS1dlYlZpZXdJ
bnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0
b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCIK
IApAQCAtNDEsOSArNDIsOCBAQCBAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9yIChXS1Rlc3Rp
bmcpCiAKIC0gKFdLV2ViVmlldyAqKWluc3BlY3RvcldlYlZpZXcKIHsKLSAgICBpZiAoYXV0byog
cGFnZSA9IF9pbnNwZWN0b3ItPmluc3BlY3RvclBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIGZyb21X
ZWJQYWdlUHJveHkoKnBhZ2UpOwotICAgIHJldHVybiBuaWw7CisgICAgYXV0byBwYWdlID0gX2lu
c3BlY3Rvci0+aW5zcGVjdG9yUGFnZSgpOworICAgIHJldHVybiBwYWdlID8gcGFnZS0+Y29jb2FW
aWV3KCkuYXV0b3JlbGVhc2UoKSA6IG5pbDsKIH0KIAogLSAodm9pZClfb3BlblVSTEV4dGVybmFs
bHlGb3JUZXN0aW5nOihOU1VSTCAqKXVybCB1c2VGcm9udGVuZEFQSTooQk9PTCl1c2VGcm9udGVu
ZEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlv
blNlc3Npb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudC5tbQppbmRleCAxMTg1ODkzOTkwMzE5YmRmNGM5ZjhhYjk4NmYwZjc5
MDAyOWRjN2U5Li5lYzg5YWNlZWM3MGE1ZGE2MDY3NDU5MTJlNmViZjIxNWI2ZjNhNTIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudC5tbQpAQCAtODMsNjggKzgzLDY4IEBAIHZvaWQgQXV0b21hdGlvblNlc3Npb25D
bGllbnQ6OnJlcXVlc3ROZXdQYWdlV2l0aE9wdGlvbnMoV2ViQXV0b21hdGlvblNlc3Npb24mIHNl
CiAKIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnJlcXVlc3RTd2l0Y2hUb1BhZ2UoV2Vi
QXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX2RlbGVn
YXRlTWV0aG9kcy5yZXF1ZXN0U3dpdGNoVG9XZWJWaWV3KQotICAgICAgICBbbV9kZWxlZ2F0ZS5n
ZXQoKSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSByZXF1ZXN0U3dpdGNoVG9X
ZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2Nr
UHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5nZXQoKV07CisgICAgaWYgKGF1dG8gd2Vi
VmlldyA9IHBhZ2UuY29jb2FWaWV3KCk7IHdlYlZpZXcgJiYgbV9kZWxlZ2F0ZU1ldGhvZHMucmVx
dWVzdFN3aXRjaFRvV2ViVmlldykKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRp
b25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgcmVxdWVzdFN3aXRjaFRvV2ViVmlldzp3ZWJWaWV3
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSkuZ2V0KCldOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
IH0KIAogdm9pZCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6cmVxdWVzdEhpZGVXaW5kb3dPZlBh
Z2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICht
X2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0SGlkZVdpbmRvd09mV2ViVmlldykKLSAgICAgICAgW21f
ZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgcmVxdWVz
dEhpZGVXaW5kb3dPZldlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLmdldCgpXTsKKyAg
ICBpZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsgd2ViVmlldyAmJiBtX2RlbGVn
YXRlTWV0aG9kcy5yZXF1ZXN0SGlkZVdpbmRvd09mV2ViVmlldykKKyAgICAgICAgW21fZGVsZWdh
dGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgcmVxdWVzdEhpZGVX
aW5kb3dPZldlYlZpZXc6d2ViVmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQ
dHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLmdldCgpXTsKICAgICBlbHNlCiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6
OnJlcXVlc3RSZXN0b3JlV2luZG93T2ZQYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiBzZXNzaW9u
LCBXZWJQYWdlUHJveHkmIHBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMucmVxdWVzdFJlc3RvcmVX
aW5kb3dPZldlYlZpZXcpCi0gICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vz
c2lvbjp3cmFwcGVyKHNlc3Npb24pIHJlcXVlc3RSZXN0b3JlV2luZG93T2ZXZWJWaWV3OmZyb21X
ZWJQYWdlUHJveHkocGFnZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKS5nZXQoKV07CisgICAgaWYgKGF1dG8gd2ViVmlldyA9IHBhZ2Uu
Y29jb2FWaWV3KCk7IHdlYlZpZXcgJiYgbV9kZWxlZ2F0ZU1ldGhvZHMucmVxdWVzdFJlc3RvcmVX
aW5kb3dPZldlYlZpZXcpCisgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vz
c2lvbjp3cmFwcGVyKHNlc3Npb24pIHJlcXVlc3RSZXN0b3JlV2luZG93T2ZXZWJWaWV3OndlYlZp
ZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKS5nZXQoKV07CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogfQogCiB2b2lkIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpyZXF1ZXN0TWF4aW1pemVXaW5k
b3dPZlBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYgcGFn
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0TWF4aW1pemVXaW5kb3dPZldlYlZpZXcpCi0g
ICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Np
b24pIHJlcXVlc3RNYXhpbWl6ZVdpbmRvd09mV2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2Up
IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkuZ2V0KCldOworICAgIGlmIChhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmlldygpOyB3ZWJW
aWV3ICYmIG1fZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RNYXhpbWl6ZVdpbmRvd09mV2ViVmlldykK
KyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vz
c2lvbikgcmVxdWVzdE1heGltaXplV2luZG93T2ZXZWJWaWV3OndlYlZpZXcuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5nZXQo
KV07CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiBib29sIEF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50Ojppc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdl
YkF1dG9tYXRpb25TZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLmlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3
KQotICAgICAgICByZXR1cm4gW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndy
YXBwZXIoc2Vzc2lvbikgaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXc6ZnJvbVdl
YlBhZ2VQcm94eShwYWdlKV07CisgICAgaWYgKGF1dG8gd2ViVmlldyA9IHBhZ2UuY29jb2FWaWV3
KCk7IHdlYlZpZXcgJiYgbV9kZWxlZ2F0ZU1ldGhvZHMuaXNTaG93aW5nSmF2YVNjcmlwdERpYWxv
Z0ZvcldlYlZpZXcpCisgICAgICAgIHJldHVybiBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlv
blNlc3Npb246d3JhcHBlcihzZXNzaW9uKSBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nRm9yV2Vi
Vmlldzp3ZWJWaWV3LmdldCgpXTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQg
QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OmRpc21pc3NDdXJyZW50SmF2YVNjcmlwdERpYWxvZ09u
UGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYgc2Vzc2lvbiwgV2ViUGFnZVByb3h5JiBwYWdlKQog
ewotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kaXNtaXNzQ3VycmVudEphdmFTY3JpcHREaWFs
b2dGb3JXZWJWaWV3KQotICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Np
b246d3JhcHBlcihzZXNzaW9uKSBkaXNtaXNzQ3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJW
aWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSldOworICAgIGlmIChhdXRvIHdlYlZpZXcgPSBwYWdl
LmNvY29hVmlldygpOyB3ZWJWaWV3ICYmIG1fZGVsZWdhdGVNZXRob2RzLmRpc21pc3NDdXJyZW50
SmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXcpCisgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9h
dXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIGRpc21pc3NDdXJyZW50SmF2YVNjcmlw
dERpYWxvZ0ZvcldlYlZpZXc6d2ViVmlldy5nZXQoKV07CiB9CiAKIHZvaWQgQXV0b21hdGlvblNl
c3Npb25DbGllbnQ6OmFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYkF1dG9t
YXRpb25TZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKG1f
ZGVsZWdhdGVNZXRob2RzLmFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldykK
LSAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vz
c2lvbikgYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3OmZyb21XZWJQYWdl
UHJveHkocGFnZSldOworICAgIGlmIChhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmlldygpOyB3
ZWJWaWV3ICYmIG1fZGVsZWdhdGVNZXRob2RzLmFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0RGlhbG9n
Rm9yV2ViVmlldykKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9u
OndyYXBwZXIoc2Vzc2lvbikgYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3
OndlYlZpZXcuZ2V0KCldOwogfQogCiBTdHJpbmcgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6Om1l
c3NhZ2VPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9u
JiBzZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGVNZXRo
b2RzLm1lc3NhZ2VPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldykKLSAgICAgICAg
cmV0dXJuIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Np
b24pIG1lc3NhZ2VPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldzpmcm9tV2ViUGFn
ZVByb3h5KHBhZ2UpXTsKKyAgICBpZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsg
d2ViVmlldyAmJiBtX2RlbGVnYXRlTWV0aG9kcy5tZXNzYWdlT2ZDdXJyZW50SmF2YVNjcmlwdERp
YWxvZ0ZvcldlYlZpZXcpCisgICAgICAgIHJldHVybiBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21h
dGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSBtZXNzYWdlT2ZDdXJyZW50SmF2YVNjcmlwdERp
YWxvZ0ZvcldlYlZpZXc6d2ViVmlldy5nZXQoKV07CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CiAKIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnNldFVzZXJJbnB1dEZvckN1cnJlbnRK
YXZhU2NyaXB0UHJvbXB0T25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiBzZXNzaW9uLCBXZWJQ
YWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLnNldFVzZXJJbnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0Rm9yV2ViVmll
dykKLSAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIo
c2Vzc2lvbikgc2V0VXNlcklucHV0OnZhbHVlIGZvckN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9y
V2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpXTsKKyAgICBpZiAoYXV0byB3ZWJWaWV3ID0g
cGFnZS5jb2NvYVZpZXcoKTsgd2ViVmlldyAmJiBtX2RlbGVnYXRlTWV0aG9kcy5zZXRVc2VySW5w
dXRGb3JDdXJyZW50SmF2YVNjcmlwdFByb21wdEZvcldlYlZpZXcpCisgICAgICAgIFttX2RlbGVn
YXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHNldFVzZXJJbnB1
dDp2YWx1ZSBmb3JDdXJyZW50SmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXc6d2ViVmlldy5nZXQo
KV07CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpK
YXZhU2NyaXB0RGlhbG9nVHlwZT4gdG9JbXBsKF9XS0F1dG9tYXRpb25TZXNzaW9uSmF2YVNjcmlw
dERpYWxvZ1R5cGUgdHlwZSkKQEAgLTE3MywxNiArMTczLDE2IEBAIHN0YXRpYyBBUEk6OkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50OjpCcm93c2luZ0NvbnRleHRQcmVzZW50YXRpb24gdG9JbXBsKF9X
S0F1dG9tCiAKIE9wdGlvbmFsPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkphdmFTY3Jp
cHREaWFsb2dUeXBlPiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6dHlwZU9mQ3VycmVudEphdmFT
Y3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQ
cm94eSYgcGFnZSkKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMudHlwZU9mQ3VycmVudEph
dmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3KQotICAgICAgICByZXR1cm4gdG9JbXBsKFttX2RlbGVn
YXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHR5cGVPZkN1cnJl
bnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpXSk7Cisg
ICAgaWYgKGF1dG8gd2ViVmlldyA9IHBhZ2UuY29jb2FWaWV3KCk7IHdlYlZpZXcgJiYgbV9kZWxl
Z2F0ZU1ldGhvZHMudHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3KQorICAg
ICAgICByZXR1cm4gdG9JbXBsKFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3
cmFwcGVyKHNlc3Npb24pIHR5cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldzp3
ZWJWaWV3LmdldCgpXSk7CiAKICAgICByZXR1cm4gQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU6OlByb21wdDsKIH0KIAogQVBJOjpBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudDo6QnJvd3NpbmdDb250ZXh0UHJlc2VudGF0aW9uIEF1dG9tYXRpb25TZXNzaW9u
Q2xpZW50OjpjdXJyZW50UHJlc2VudGF0aW9uT2ZQYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiBz
ZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGVNZXRob2Rz
LmN1cnJlbnRQcmVzZW50YXRpb25Gb3JXZWJWaWV3KQotICAgICAgICByZXR1cm4gdG9JbXBsKFtt
X2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIGN1cnJl
bnRQcmVzZW50YXRpb25Gb3JXZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSldKTsKKyAgICBp
ZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsgd2ViVmlldyAmJiBtX2RlbGVnYXRl
TWV0aG9kcy5jdXJyZW50UHJlc2VudGF0aW9uRm9yV2ViVmlldykKKyAgICAgICAgcmV0dXJuIHRv
SW1wbChbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9u
KSBjdXJyZW50UHJlc2VudGF0aW9uRm9yV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAKICAgICBy
ZXR1cm4gQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6QnJvd3NpbmdDb250ZXh0UHJlc2Vu
dGF0aW9uOjpXaW5kb3c7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KaW5kZXggNzkxOGQzMDEwMzMxNjE3
YmVjZTc3ZTIyNzBjODJjOGE5YWE2YjU2NS4uODlkZGE3ZTc2MjExYjg5ZTRlYWQyNDI3NjQxNTc2
ZTM3Nzc3ZDU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTWVk
aWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQg
YWxlcnRGb3JQZXJtaXNzaW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTWVkaWFQZXJtaXNzaW9uUmVh
c29uIHJlYXNvbiwgY29uc3QKICAgICB9CiAjZW5kaWYKIAotICAgIGF1dG8gKndlYlZpZXcgPSBm
cm9tV2ViUGFnZVByb3h5KHBhZ2UpOworICAgIGF1dG8gd2ViVmlldyA9IHBhZ2UuY29jb2FWaWV3
KCk7CiAgICAgaWYgKCF3ZWJWaWV3KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgYWxlcnRGb3JQZXJt
aXNzaW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTWVkaWFQZXJtaXNzaW9uUmVhc29uIHJlYXNvbiwg
Y29uc3QKICAgICBidXR0b24ua2V5RXF1aXZhbGVudCA9IEAiIjsKICAgICBidXR0b24gPSBbYWxl
cnQgYWRkQnV0dG9uV2l0aFRpdGxlOmRvTm90QWxsb3dCdXR0b25TdHJpbmddOwogICAgIGJ1dHRv
bi5rZXlFcXVpdmFsZW50ID0gQCJcRSI7Ci0gICAgW2FsZXJ0IGJlZ2luU2hlZXRNb2RhbEZvcldp
bmRvdzp3ZWJWaWV3LndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpbY29tcGxldGlvbkJsb2NrXShO
U01vZGFsUmVzcG9uc2UgcmV0dXJuQ29kZSkgeworICAgIFthbGVydCBiZWdpblNoZWV0TW9kYWxG
b3JXaW5kb3c6W3dlYlZpZXcgd2luZG93XSBjb21wbGV0aW9uSGFuZGxlcjpbY29tcGxldGlvbkJs
b2NrXShOU01vZGFsUmVzcG9uc2UgcmV0dXJuQ29kZSkgewogICAgICAgICBhdXRvIHNob3VsZEFs
bG93ID0gcmV0dXJuQ29kZSA9PSBOU0FsZXJ0Rmlyc3RCdXR0b25SZXR1cm47CiAgICAgICAgIGNv
bXBsZXRpb25CbG9jayhzaG91bGRBbGxvdyk7CiAgICAgfV07CkBAIC0yMjUsNyArMjI1LDcgQEAg
dm9pZCBhbGVydEZvclBlcm1pc3Npb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNZWRpYVBlcm1pc3Np
b25SZWFzb24gcmVhc29uLCBjb25zdAogICAgIFthbGVydCBhZGRBY3Rpb246ZG9Ob3RBbGxvd0Fj
dGlvbl07CiAgICAgW2FsZXJ0IGFkZEFjdGlvbjphbGxvd0FjdGlvbl07CiAKLSAgICBbW1VJVmll
d0NvbnRyb2xsZXIgX3ZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVlblByZXNlbnRhdGlvbkZyb21W
aWV3OndlYlZpZXddIHByZXNlbnRWaWV3Q29udHJvbGxlcjphbGVydCBhbmltYXRlZDpZRVMgY29t
cGxldGlvbjpuaWxdOworICAgIFtbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JG
dWxsU2NyZWVuUHJlc2VudGF0aW9uRnJvbVZpZXc6d2ViVmlldy5nZXQoKV0gcHJlc2VudFZpZXdD
b250cm9sbGVyOmFsZXJ0IGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0K
aW5kZXggMGYxODAzOGRlOTg5ZTY5YTg0MzJjODViNzFiNmMwNGU5MzEzMDJiMy4uNDkxN2M1YTFj
ZTYxY2EzMmEyYTQ1OWMzMWRlMmNmNDE1MjMxZjJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRp
b24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0xMjksNiArMTI5LDExIEBAIHZv
aWQgUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjphYm9ydEludGVybmFsKCkKICAgICB9CiAK
ICAgICBpbml0U2VjcmV0V2ViVmlldygpOworICAgIGlmICghbV9zZWNyZXRXZWJWaWV3KSB7Cisg
ICAgICAgIG1fbmV3UGFnZUNhbGxiYWNrKG51bGxwdHIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgbV9uZXdQYWdlQ2FsbGJhY2sobV9zZWNyZXRXZWJWaWV3LT5fcGFnZS5nZXQoKSk7
CiAgICAgW21fc2VjcmV0V2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6IEAid2luZG93LmNsb3Nl
KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CkBAIC0xNDEsNiArMTQ2LDExIEBAIHZvaWQg
UG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0ZUludGVybmFsKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uCiAgICAgfQogCiAgICAgaW5pdFNlY3JldFdlYlZpZXcoKTsKKyAg
ICBpZiAoIW1fc2VjcmV0V2ViVmlldykgeworICAgICAgICBmYWxsQmFja1RvV2ViUGF0aEludGVy
bmFsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX25ld1BhZ2VDYWxsYmFjayht
X3NlY3JldFdlYlZpZXctPl9wYWdlLmdldCgpKTsKICAgICBbbV9zZWNyZXRXZWJWaWV3IGxvYWRE
YXRhOmRhdGEgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGNoYXJhY3RlckVuY29kaW5nTmFtZTpAIlVU
Ri04IiBiYXNlVVJMOnJlc3BvbnNlLnVybCgpXTsKIH0KQEAgLTE2MCw5ICsxNzAsMTEgQEAgdm9p
ZCBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNsb3NlKFdLV2ViVmlldyAqd2ViVmlldykK
IHZvaWQgUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjppbml0U2VjcmV0V2ViVmlldygpCiB7
CiAgICAgQVNTRVJUKHBhZ2UoKSk7Ci0gICAgYXV0byBpbml0aWF0b3JXZWJWaWV3ID0gZnJvbVdl
YlBhZ2VQcm94eSgqcGFnZSgpKTsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtp
bml0aWF0b3JXZWJWaWV3LmNvbmZpZ3VyYXRpb24gY29weV0pOwotICAgIFtjb25maWd1cmF0aW9u
IF9zZXRSZWxhdGVkV2ViVmlldzppbml0aWF0b3JXZWJWaWV3XTsKKyAgICBhdXRvIGluaXRpYXRv
cldlYlZpZXcgPSBwYWdlKCktPmNvY29hVmlldygpOworICAgIGlmICghaW5pdGlhdG9yV2ViVmll
dykKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tp
bml0aWF0b3JXZWJWaWV3IGNvbmZpZ3VyYXRpb25dIGNvcHldKTsKKyAgICBbY29uZmlndXJhdGlv
biBfc2V0UmVsYXRlZFdlYlZpZXc6aW5pdGlhdG9yV2ViVmlldy5nZXQoKV07CiAgICAgbV9zZWNy
ZXRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgbV9zZWNy
ZXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1NPU2VjcmV0RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRo
U2Vzc2lvbjp0aGlzXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9u
Lm1tCmluZGV4IGMwNDM4YmRkYzFmZDAzMDgzYTQyZTkzODYxOWI0OWNlNjg1ZWE1OGQuLmRlMDQx
M2NlY2NkZmI5YTUyZjA1ODJkYmVjNzcyYzRlNDNlYTYwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNz
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBTT0F1
dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3koY29uc3Qg
U09BdXRob3JpemF0aW8KICAgICBbbV9zb0F1dGhvcml6YXRpb24gc2V0QXV0aG9yaXphdGlvbk9w
dGlvbnM6YXV0aG9yaXphdGlvbk9wdGlvbnNdOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlm
ICghW2Zyb21XZWJQYWdlUHJveHkoKm1fcGFnZSkuVUlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF9wcmVzZW50aW5nVmlld0NvbnRyb2xsZXJGb3JXZWJWaWV3OildKQorICAg
IGlmICghW1ttX3BhZ2UtPmNvY29hVmlldygpIFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXc6KV0pCiAgICAg
ICAgIFttX3NvQXV0aG9yaXphdGlvbiBzZXRFbmFibGVFbWJlZGRlZEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcjpOT107CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tCmluZGV4IDMwOGNkZGUx
NWI0ZWQ1OWU2ZGQ4N2JlZGJhOWMxN2IwYzJmOTU3NDguLjBkMWNkYjFmNDM5ZmI2YmQ1Zjk0NDM4
NGNkZWY0MGUyMzllM2JmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0KQEAgLTUyLDcgKzUyLDggQEAg
dm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OnBsYXRmb3JtU3RhcnRUYXNrKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgV2ViVVJMU2NoZW0KICAgICBhdXRvIHJlc3VsdCA9IG1fYXBpVGFza3MuYWRk
KHRhc2suaWRlbnRpZmllcigpLCBBUEk6OlVSTFNjaGVtZVRhc2s6OmNyZWF0ZSh0YXNrKSk7CiAg
ICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIFttX2FwaUhhbmRsZXIuZ2V0KCkg
d2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIHN0YXJ0VVJMU2NoZW1lVGFzazp3cmFwcGVy
KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpXTsKKyAgICBpZiAoYXV0byB3ZWJWaWV3ID0g
cGFnZS5jb2NvYVZpZXcoKSkKKyAgICAgICAgW21fYXBpSGFuZGxlci5nZXQoKSB3ZWJWaWV3Ondl
YlZpZXcuZ2V0KCkgc3RhcnRVUkxTY2hlbWVUYXNrOndyYXBwZXIocmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS5nZXQoKSldOwogfQogCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6cGxhdGZv
cm1TdG9wVGFzayhXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlVSTFNjaGVtZVRhc2smIHRhc2spCkBA
IC02MSw3ICs2Miw4IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpwbGF0Zm9ybVN0
b3BUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViVVJMU2NoZW1lCiAgICAgaWYgKGl0ZXJhdG9y
ID09IG1fYXBpVGFza3MuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFttX2FwaUhhbmRs
ZXIuZ2V0KCkgd2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIHN0b3BVUkxTY2hlbWVUYXNr
OndyYXBwZXIoaXRlcmF0b3ItPnZhbHVlLmdldCgpKV07CisgICAgaWYgKGF1dG8gd2ViVmlldyA9
IHBhZ2UuY29jb2FWaWV3KCkpCisgICAgICAgIFttX2FwaUhhbmRsZXIuZ2V0KCkgd2ViVmlldzp3
ZWJWaWV3LmdldCgpIHN0b3BVUkxTY2hlbWVUYXNrOndyYXBwZXIoaXRlcmF0b3ItPnZhbHVlLmdl
dCgpKV07CiAKICAgICBtX2FwaVRhc2tzLnJlbW92ZShpdGVyYXRvcik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQppbmRleCBmMGYxZjU0NjFlOWIzNGVk
NzhlYzQ0NTJmZjgzMDFhMzcyNDdkM2UyLi5hNTUxYTJjM2Y0OWUyYzY3YTc3OTRhMjM3ZDRlN2Ew
MThiOTgxZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZI
VURWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcu
bW0KQEAgLTE2MywxMSArMTYzLDggQEAgLSAodm9pZClfc2V0VmlzaWJsZTooYm9vbClpc1Zpc2li
bGUKIAogLSAoTlNWaWV3ICopaGl0VGVzdDooTlNQb2ludClwb2ludAogewotICAgIGlmIChfcGFn
ZSkKLSAgICAgICAgcmV0dXJuIGZyb21XZWJQYWdlUHJveHkoKl9wYWdlKTsKLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzZWxmOworICAgIEFTU0VSVChfcGFnZSk7Cisg
ICAgcmV0dXJuIF9wYWdlID8gX3BhZ2UtPmNvY29hVmlldygpLmF1dG9yZWxlYXNlKCkgOiBzZWxm
OwogfQogCiAtICh2b2lkKW1vdXNlTW92ZWQ6KE5TRXZlbnQgKilldmVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAxNDc3OWM3NTNkOWY2NDM3YjlkOTEwMmRiZGIx
NDVlZmUwYWRiNjU1Li45NTFkOTc5MzQzOGE2MmFkMzY0NDU2MWEyOTkyZjE3NzRlZjQ1OTZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTM4LDExICsxMzgsNiBA
QAogI2luY2x1ZGUgIkVuZG93bWVudFN0YXRlVHJhY2tlci5oIgogI2VuZGlmCiAKLU9CSkNfQ0xB
U1MgTlNNZW51OwotT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7Ci1PQkpDX0NMQVNTIE5T
VmlldzsKLU9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7Ci0KICNpZiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNlbmRpZgpA
QCAtMTU0LDYgKzE0OSw3IEBAIE9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZS5o
IgogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZU5vZGUuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha09i
akNQdHIuaD4KICNlbmRpZgogCiAjaWYgSEFWRShUT1VDSF9CQVIpCkBAIC0yMTksMTAgKzIxNSwx
OSBAQCBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiBjbGFzcyBTaGFy
ZWRCdWZmZXJDb3B5OwogfQorCisjaWYgUExBVEZPUk0oQ09DT0EpCiBPQkpDX0NMQVNTIE5TRmls
ZVdyYXBwZXI7CitPQkpDX0NMQVNTIE5TTWVudTsKK09CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRp
dmVzOworT0JKQ19DTEFTUyBOU1ZpZXc7CiBPQkpDX0NMQVNTIFdLUUxUaHVtYm5haWxMb2FkT3Bl
cmF0aW9uOworT0JKQ19DTEFTUyBXS1dlYlZpZXc7CitPQkpDX0NMQVNTIF9XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5OworI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDdXJzb3I7
CkBAIC0yOTQsNiArMjk5LDcgQEAgZW51bSBjbGFzcyBEYXRhT3duZXJUeXBlIDogdWludDhfdDsK
IAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsKIHVzaW5nIEZsb2F0Qm94RXh0
ZW50ID0gUmVjdEVkZ2VzPGZsb2F0PjsKKwogfQogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtMzEz
LDcgKzMxOSw3IEBAIHR5cGVkZWYgSFdORCBQbGF0Zm9ybVZpZXdXaWRnZXQ7CiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE7
CisKIGNsYXNzIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk7CiBjbGFzcyBEcmF3
aW5nQXJlYVByb3h5OwogY2xhc3MgR2FtZXBhZERhdGE7CkBAIC0zNTksNyArMzY1LDcgQEAgY2xh
c3MgV2ViV2hlZWxFdmVudDsKIGNsYXNzIFdlYldoZWVsRXZlbnRDb2FsZXNjZXI7CiBjbGFzcyBX
ZWJzaXRlRGF0YVN0b3JlOwogCi1zdHJ1Y3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzOworc3Ry
dWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOwogc3RydWN0IENvbG9yU3BhY2VEYXRh
Owogc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1bHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29u
dGV4dDsKQEAgLTM4MCwxMyArMzg2LDE0IEBAIHN0cnVjdCBQbGF0Zm9ybVBvcHVwTWVudURhdGE7
CiBzdHJ1Y3QgUHJpbnRJbmZvOwogc3RydWN0IFBERkNvbnRleHRNZW51Owogc3RydWN0IFJlc291
cmNlTG9hZEluZm87CitzdHJ1Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM7CitzdHJ1Y3QgVXNl
ck1lc3NhZ2U7CiBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25EYXRhOworc3RydWN0IFdlYkJhY2tG
b3J3YXJkTGlzdENvdW50czsKIHN0cnVjdCBXZWJIaXRUZXN0UmVzdWx0RGF0YTsKIHN0cnVjdCBX
ZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogc3RydWN0IFdlYlBvcHVwSXRlbTsKIHN0cnVjdCBXZWJT
cGVlY2hTeW50aGVzaXNWb2ljZTsKLXN0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczsKLXN0
cnVjdCBVc2VyTWVzc2FnZTsKIAogZW51bSBjbGFzcyBOZWdvdGlhdGVkTGVnYWN5VExTIDogYm9v
bDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CkBAIC00
MTQsNyArNDIxLDcgQEAgY2xhc3MgV2ViRGF0ZVRpbWVQaWNrZXI7CiAKIHVzaW5nIFNwZWxsRG9j
dW1lbnRUYWcgPSBpbnQ2NF90OwogCi1jbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgorY2xhc3MgV2ViUGFnZVByb3h5IGZp
bmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICAsIHB1YmxpYyBXZWJDb2xvclBpY2tlcjo6
Q2xpZW50CiAjZW5kaWYKQEAgLTEzNTgsNyArMTM2NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgLy8gV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudAotICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQq
IGN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50KCkgb3ZlcnJpZGU7CisgICAgTmF0aXZl
V2ViTW91c2VFdmVudCogY3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQoKSBmaW5hbDsK
IAogICAgIHZvaWQgc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyhib29sIGZsYWcpOwogICAg
IGJvb2wgc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcygpIHsgcmV0dXJuIG1fc3VwcHJlc3NWaXNp
YmlsaXR5VXBkYXRlczsgfQpAQCAtMTY0NCw4ICsxNjUxLDggQEAgcHVibGljOgogI2lmIEhBVkUo
UVVJQ0tMT09LX1RIVU1CTkFJTElORykKICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1lbnRJY29uKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+Jik7CiAgICAgdm9pZCBy
ZXF1ZXN0VGh1bWJuYWlsV2l0aFBhdGgoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Ci0g
ICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIqLCBj
b25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0aW9uKFdL
UUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uKik7CisgICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0
aEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIgKiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBy
ZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbiAq
KTsKICNlbmRpZgogICAgIGVudW0gY2xhc3MgU2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0
ZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1
dGVzIHdpbGxVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQm
KTsKQEAgLTE3MzYsOCArMTc0Myw4IEBAIHB1YmxpYzoKIAogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlBhZ2VQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYpIGZpbmFsOwogCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVu
dFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRh
YmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDY0X3QpPiYmKTsKIApAQCAtMTg3OSwxMSArMTg4NiwxMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgYXBwQm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJik+JiYpOwogICAg
IHZvaWQgY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0jZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE5TRGljdGlvbmFyeSAq
Y29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtKE5TU3RyaW5nICp1c2VySW50ZXJmYWNlSXRlbSk7
Ci0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBj
b2NvYVZpZXcoKTsKKyAgICB2b2lkIHNldENvY29hVmlldyhXS1dlYlZpZXcgKik7CisjZW5kaWYK
IAogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94
eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKQEAgLTE5MTMsMTUgKzE5MjEsMTUg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFVzZXJBZ2VudChTdHJpbmcmJik7CiAKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIKLSAgICBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVu
Y29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgb3Zl
cnJpZGU7Ci0gICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFs
OworICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBm
aW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZp
bmFsOwogCiAgICAgLy8gV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudAotICAgIHZvaWQgdmFsdWVD
aGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3Rl
ZEluZGV4KSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShX
ZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgaW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgdmFs
dWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdTZWxl
Y3RlZEluZGV4KSBmaW5hbDsKKyAgICB2b2lkIHNldFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShX
ZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgaW5kZXgpIGZpbmFsOwogI2lmIFBMQVRGT1JNKEdU
SykKLSAgICB2b2lkIGZhaWxlZFRvU2hvd1BvcHVwTWVudSgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmFpbGVkVG9TaG93UG9wdXBNZW51KCkgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShQT0lO
VEVSX0xPQ0spCkBAIC0yMDg3LDggKzIwOTUsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCiAgICAgdm9pZCBzaG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6
Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFZlY3RvcjxXZWJD
b3JlOjpDb2xvcj4mJik7Ci0gICAgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpD
b2xvciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRW5kQ29sb3JQaWNrZXIoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRFbmRDb2xvclBpY2tlcigpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
REFUQUxJU1RfRUxFTUVOVCkKQEAgLTIzODksMTMgKzIzOTcsMTMgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCi0gICAgdm9pZCBkaWRTdGFydFNwZWFr
aW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRGaW5pc2hTcGVha2luZyhXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUGF1c2VTcGVha2luZyhXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVzdW1lU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpIG92ZXJyaWRlOwotICAgIHZvaWQg
Ym91bmRhcnlFdmVudE9jY3VycmVkKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlJiwgV2ViQ29yZTo6U3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCB2b2ljZXNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFN0YXJ0U3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Um
KSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgZmluYWw7CisgICAgdm9pZCBkaWRQYXVzZVNwZWFraW5n
KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgZmluYWw7CisgICAg
dm9pZCBkaWRSZXN1bWVTcGVha2luZyhXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSYpIGZpbmFsOworICAgIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgZmluYWw7CisgICAgdm9pZCBib3Vu
ZGFyeUV2ZW50T2NjdXJyZWQoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UmLCBXZWJDb3JlOjpTcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSBmaW5hbDsK
KyAgICB2b2lkIHZvaWNlc0RpZENoYW5nZSgpIGZpbmFsOwogCiAgICAgc3RydWN0IFNwZWVjaFN5
bnRoZXNpc0RhdGE7CiAgICAgU3BlZWNoU3ludGhlc2lzRGF0YSYgc3BlZWNoU3ludGhlc2lzRGF0
YSgpOwpAQCAtMjQ3NCw2ICsyNDgyLDEwIEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViSW5z
cGVjdG9yUHJveHk+IG1faW5zcGVjdG9yOwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2Vh
a09iakNQdHI8V0tXZWJWaWV3PiBtX2NvY29hVmlldzsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5PiBtX2Z1bGxTY3JlZW5NYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZ1bGxz
Y3JlZW5DbGllbnQ+IG1fZnVsbHNjcmVlbkNsaWVudDsKQEAgLTI5NDUsNCArMjk1NywxOCBAQCBw
cml2YXRlOgogI2VuZGlmCiB9OwogCisjaWZkZWYgX19PQkpDX18KKworaW5saW5lIFJldGFpblB0
cjxXS1dlYlZpZXc+IFdlYlBhZ2VQcm94eTo6Y29jb2FWaWV3KCkKK3sKKyAgICByZXR1cm4gbV9j
b2NvYVZpZXcuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29jb2FW
aWV3KFdLV2ViVmlldyAqdmlldykKK3sKKyAgICBtX2NvY29hVmlldyA9IHZpZXc7Cit9CisKKyNl
bmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="commit-queue"
          id="442965"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423561</attachid>
            <date>2021-03-17 21:16:09 -0700</date>
            <delta_ts>2021-03-19 12:21:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222336-20210317211608.patch</filename>
            <type>text/plain</type>
            <size>48104</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NmI2ZDRhNGQ5NGNkMGU0MWViNjhlNTY1NGRjOTZlNWZkMTBiM2Y3Li4xNTM1YmVlYTQzNDYzYWY0
MjlhZmMwMzZlZjRlNDA2NzZhYmFlMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wMy0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBNYWtlIGl0IHBvc3NpYmxlIHRvIHJlbGVhc2UgYSBXS1dlYlZpZXcg
b24gYSBub24tbWFpbiB0aHJlYWQgd2l0aG91dCBhIGNyYXNoIGR1ZSB0byBXS1NjcmlwdE1lc3Nh
Z2UgcmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIyMzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBBUEkvT2JqY1J1bnRpbWVFeHRyYXMuaDogUmVtb3ZlZCBkZWNsYXJhdGlvbnMgb2Ygb2JqY19p
bml0V2VhayBhbmQgb2JqY19kZXN0cm95V2Vhaywgc2luY2UKKyAgICAgICAgdGhlc2UgYXJlIGFs
cmVhZHkgaW4gPHd0Zi9zcGkvY29jb2Evb2JqY1NQSS5oPi4KKwogMjAyMS0wMy0xNyAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gRXJyb3Ij
Y2F1c2Ugc2hvdWxkIGFwcGx5IHRvIFdlYkFzc2VtYmx5IGVycm9yIGNvbnN0cnVjdG9ycyB0b28K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYTZjZWQ2ZDc4NDFmMzVhNGI2MDQ4ZDc5Y2EwOGVlZDhmMzA3YWU1OS4uNmU2YjdiYmE2
NTEwZjA4NDc1YjliMzI4NWJkMmZkZjcyNmQ1NmQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MS0wMy0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29h
XSBNYWtlIGl0IHBvc3NpYmxlIHRvIHJlbGVhc2UgYSBXS1dlYlZpZXcgb24gYSBub24tbWFpbiB0
aHJlYWQgd2l0aG91dCBhIGNyYXNoIGR1ZSB0byBXS1NjcmlwdE1lc3NhZ2UgcmFjZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMzM2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvc3BpL2NvY29h
L29iamNTUEkuaDogUmVtb3ZlZCB1bm5lY2Vzc2FyeSAjaWYgc28gZnVuY3Rpb25zIGFyZSBjb3Jy
ZWN0bHkgY29tcGlsZWQgZm9yCisgICAgICAgIG5vbi1PYmplY3RpdmUtQyBzb3VyY2UgZmlsZXMu
IEFkZGVkIGluY2x1ZGUgb2YgPG9iamMvb2JqYy5oPiBzbyB0aGF0ICJpZCIgaXMgZGVmaW5lZC4K
KwogMjAyMS0wMy0xNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IHJhY2UgY29uZGl0aW9uIGluIENvbmN1cnJlbnRQdHJIYXNoU2V0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBl
YTZiZDQ0NjgyNGQzYWViMWI2ZDliNWYxZTk1ZGUwYmJiZGZhZDU5Li5hZjVmZjkwN2QyOTQ4M2Ey
MzE1N2IxZTFkM2M4ZGI2Njc5OWNkMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIx
LTAzLTE3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2Fd
IE1ha2UgaXQgcG9zc2libGUgdG8gcmVsZWFzZSBhIFdLV2ViVmlldyBvbiBhIG5vbi1tYWluIHRo
cmVhZCB3aXRob3V0IGEgY3Jhc2ggZHVlIHRvIFdLU2NyaXB0TWVzc2FnZSByYWNlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIzMzYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9D
b2NvYS9vYmpjU1BJLmg6IFJlbW92ZWQgdGhpcyB1bnVzZWQgZmlsZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbToKKyAgICAgICAgKFdLUGFnZUdl
dFdlYlZpZXcpOiBVc2UgV0tQYWdlUHJveHk6OmNvY29hVmlldyBpbnN0ZWFkIG9mIGZyb21XZWJQ
YWdlUHJveHkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tOgor
ICAgICAgICAoLVtXS0Rvd25sb2FkIHdlYlZpZXddKTogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbToKKyAgICAgICAgKC1bV0tGcmFtZUluZm8gd2Vi
Vmlld10pOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIubW06CisgICAgICAgIChTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRl
OjpkaWRQb3N0TWVzc2FnZSk6IFVzZSBXS1BhZ2VQcm94eTo6Y29jb2FWaWV3CisgICAgICAgIGlu
c3RlYWQgb2YgZnJvbVdlYlBhZ2VQcm94eSBhbmQgYWRkIG51bGwgY2hlY2tzLgorICAgICAgICAo
U2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZTo6ZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBs
eSk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06
CisgICAgICAgIChwYWdlVG9WaWV3TWFwKTogRGVsZXRlZC4KKyAgICAgICAgKGZyb21XZWJQYWdl
UHJveHkpOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbjpdKTogVXNlIFdLUGFnZVByb3h5OjpzZXRDb2NvYVZpZXcKKyAgICAgICAgaW5z
dGVhZCBvZiBhZGRpbmcgdGhlIHBhZ2UvdmlldyBwYWlyIHRvIGEgbWFwLgorICAgICAgICAoLVtX
S1dlYlZpZXcgZGVhbGxvY10pOiBSZW1vdmVkIGNvZGUgdGhhdCByZW1vdmVkIHRoZSBwYWdlL3Zp
ZXcgcGFpciBmcm9tIHRoZSBtYXAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0ludGVybmFsLmg6IFJlbW92ZWQgZnJvbVdlYlBhZ2VQcm94eS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW06CisgICAgICAgICgtW19XS0Rvd25s
b2FkIG9yaWdpbmF0aW5nV2ViVmlld10pOiBVc2UgV0tQYWdlUHJveHk6OmNvY29hVmlldyBpbnN0
ZWFkIG9mIGZyb21XZWJQYWdlUHJveHkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tGcmFtZVRyZWVOb2RlLm1tOgorICAgICAgICAoLVtfV0tGcmFtZVRyZWVOb2RlIHdlYlZpZXdd
KTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06
CisgICAgICAgICgtW19XS0luc3BlY3RvciB3ZWJWaWV3XSk6IERpdHRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVzdGluZy5tbToKKyAgICAgICAgKC1bX1dL
SW5zcGVjdG9yIGluc3BlY3RvcldlYlZpZXddKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpyZXF1ZXN0U3dpdGNoVG9QYWdlKTogVXNlIFdLUGFnZVBy
b3h5Ojpjb2NvYVZpZXcKKyAgICAgICAgaW5zdGVhZCBvZiBmcm9tV2ViUGFnZVByb3h5IGFuZCBh
ZGQgYSBudWxsIGNoZWNrLgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dDo6cmVxdWVzdEhpZGVXaW5kb3dPZlBhZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6QXV0
b21hdGlvblNlc3Npb25DbGllbnQ6OnJlcXVlc3RSZXN0b3JlV2luZG93T2ZQYWdlKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpyZXF1ZXN0TWF4aW1p
emVXaW5kb3dPZlBhZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Np
b25DbGllbnQ6OmlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2dPblBhZ2UpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OmRpc21pc3NDdXJyZW50SmF2YVNj
cmlwdERpYWxvZ09uUGFnZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudDo6YWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6Om1lc3NhZ2VPZkN1cnJl
bnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50OjpzZXRVc2VySW5wdXRGb3JDdXJyZW50SmF2YVNjcmlwdFByb21w
dE9uUGFnZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dDo6dHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OmN1cnJlbnRQcmVzZW50YXRpb25PZlBh
Z2UpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25V
dGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6OmFsZXJ0Rm9yUGVybWlzc2lvbik6IFVzZSBX
S1BhZ2VQcm94eTo6Y29jb2FWaWV3IGluc3RlYWQgb2YgZnJvbVdlYlBhZ2VQcm94eS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRp
b25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Np
b246OmFib3J0SW50ZXJuYWwpOiBBZGRlZCBhIG51bGwgY2hlY2sgc2luY2UKKyAgICAgICAgaW5p
dFNlY3JldFdlYlZpZXcgaXMgbm8gbG9uZ2VyIGd1YXJhbnRlZWQgdG8gYWxsb2NhdGUgbV9zZWNy
ZXRXZWJWaWV3IGluIHRoZSBjYXNlCisgICAgICAgIHdoZXJlIHRoZSBXS1dlYlZpZXcgaXMgbmls
LgorICAgICAgICAoV2ViS2l0OjpQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRl
SW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6UG9wVXBTT0F1dGhvcml6YXRpb25T
ZXNzaW9uOjppbml0U2VjcmV0V2ViVmlldyk6IFVzZSBXS1BhZ2VQcm94eTo6Y29jb2FWaWV3Cisg
ICAgICAgIGluc3RlYWQgb2YgZnJvbVdlYlBhZ2VQcm94eSBhbmQgYWRkZWQgYSBudWxsIGNoZWNr
LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6
YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9u
Ojpjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3kpOiBVc2UgV0tQYWdlUHJveHk6OmNvY29h
VmlldworICAgICAgICBpbnN0ZWFkIG9mIGZyb21XZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OnBsYXRmb3JtU3RhcnRUYXNrKTogVXNlIFdL
UGFnZVByb3h5Ojpjb2NvYVZpZXcKKyAgICAgICAgaW5zdGVhZCBvZiBmcm9tV2ViUGFnZVByb3h5
IGFuZCBhZGRlZCBhIG51bGwgY2hlY2suCisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhh
bmRsZXJDb2NvYTo6cGxhdGZvcm1TdG9wVGFzayk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1BERi9XS1BERkhVRFZpZXcubW06CisgICAgICAgICgtW1dLUERGSFVEVmlldyBoaXRUZXN0
Ol0pOiBVc2UgV0tQYWdlUHJveHk6OmNvY29hVmlldyBpbnN0ZWFkIG9mIGZyb21XZWJQYWdlUHJv
eHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IFR3ZWFrZWQgZm9yd2Fy
ZCBkZWNsYXJhdGlvbnMgYSBiaXQsIGFuZCBhZGRlZCBvbmUgZm9yIFdLV2ViVmlldy4KKyAgICAg
ICAgTWFya2VkIHRoZSBjbGFzcyBmaW5hbCBhbmQgdXNlIGZpbmFsIGluc3RlYWQgb2Ygb3ZlcnJp
ZGUuIEFkZGVkIENvY29hLW9ubHkgY29jb2FWaWV3IGFuZAorICAgICAgICBzZXRDb2NvYVZpZXcg
ZnVuY3Rpb24gbWVtYmVycywgYW5kIG1fY29jb2FWaWV3IGRhdGEgbWVtYmVyLiBBbHNvIGFkZGVk
IGlubGluZSBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgYnV0IG9ubHkgY29tcGlsZSB0aGVtIHdo
ZW4gaW5jbHVkZWQgZnJvbSBhbiBPYmplY3RpdmUtQyBzb3VyY2UgZmlsZS4KKworICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIG9iamNTUEkuaC4KKwog
MjAyMS0wMy0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBSZWZhY3RvciBzb21lIGdlc3R1cmUgZGVmZXJyYWwgbG9naWMgdG8gYWNjb3Vu
dCBmb3IgaW1hZ2UgZXh0cmFjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9PYmpjUnVudGltZUV4dHJhcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpj
UnVudGltZUV4dHJhcy5oCmluZGV4IDIwZDhiODU4NDdhNTUzYTMzY2RmYzEzZjUyZWM2YTRkOTUy
ZjhjMmYuLmM1MzVjOTQ4YjI5NzdiY2M3ZTMzZTQxZmMyZWJjMjg0Nzg2NDJiNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqY1J1bnRpbWVFeHRyYXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iamNSdW50aW1lRXh0cmFzLmgKQEAgLTI0Myw4ICsy
NDMsNiBAQCB0eXBlbmFtZSBEZWxlZ2F0ZVR5cGU6OlJlc3VsdFR5cGUgcGFyc2VPYmpDVHlwZShj
b25zdCBjaGFyKiYgcG9zaXRpb24pCiBleHRlcm4gIkMiIHsKICAgICAvLyBGb3J3YXJkIGRlY2xh
cmUgc29tZSBPYmplY3RpdmUtQyBydW50aW1lIGludGVybmFsIG1ldGhvZHMgdGhhdCBhcmUgbm90
IEFQSS4KICAgICBjb25zdCBjaGFyICpfcHJvdG9jb2xfZ2V0TWV0aG9kVHlwZUVuY29kaW5nKFBy
b3RvY29sICosIFNFTCwgQk9PTCBpc1JlcXVpcmVkTWV0aG9kLCBCT09MIGlzSW5zdGFuY2VNZXRo
b2QpOwotICAgIGlkIG9iamNfaW5pdFdlYWsoaWQgKiwgaWQpOwotICAgIHZvaWQgb2JqY19kZXN0
cm95V2VhayhpZCAqKTsKICAgICBib29sIF9CbG9ja19oYXNfc2lnbmF0dXJlKHZvaWQgKik7CiAg
ICAgY29uc3QgY2hhciAqIF9CbG9ja19zaWduYXR1cmUodm9pZCAqKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9vYmpjU1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkv
Y29jb2Evb2JqY1NQSS5oCmluZGV4IGE5ZTg5ZGUwNzZmMDVhYzY0MTk5NTUxNzJiNTNiN2VmMmY0
NDI0YTEuLmFkODQxMmE4YWI5OWQ3YjhkNzUzOTQ5ZWI2NDk1YWFmYWE0MmYzZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9vYmpjU1BJLmgKKysrIGIvU291cmNlL1dURi93
dGYvc3BpL2NvY29hL29iamNTUEkuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgPG9iamMvb2JqYy5oPgorCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
IAogI2luY2x1ZGUgPG9iamMvb2JqYy1pbnRlcm5hbC5oPgpAQCAtMzYsMTIgKzM4LDEwIEBAIFdU
Rl9FWFRFUk5fQ19CRUdJTgogdm9pZCogb2JqY19hdXRvcmVsZWFzZVBvb2xQdXNoKHZvaWQpOwog
dm9pZCBvYmpjX2F1dG9yZWxlYXNlUG9vbFBvcCh2b2lkKiBjb250ZXh0KTsKIAotI2lmZGVmIF9f
T0JKQ19fCiBpZCBvYmpjX2xvYWRXZWFrUmV0YWluZWQoaWQqKTsKIGlkIG9iamNfaW5pdFdlYWso
aWQqLCBpZCk7CiB2b2lkIG9iamNfZGVzdHJveVdlYWsoaWQqKTsKIHZvaWQgb2JqY19jb3B5V2Vh
ayhpZCosIGlkKik7CiB2b2lkIG9iamNfbW92ZVdlYWsoaWQqLCBpZCopOwotI2VuZGlmCiAKIFdU
Rl9FWFRFUk5fQ19FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0Nv
Y29hL29iamNTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL29iamNTUEku
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRjMmVhMTRiZTk3NDU1N2FmYWYxMjE3
ZjQ5ZjVlZWIxZGY4OTQ2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9vYmpjU1BJLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCi0KLSNpbXBvcnQgPG9iamMvb2JqYy1pbnRlcm5hbC5oPgotCi0jZW5kaWYKLQot
T0JKQ19FWFBPUlQgaWQgX29iamNfcm9vdFJldGFpbihpZCBvYmopOwotT0JKQ19FWFBPUlQgYm9v
bCBfb2JqY19yb290UmVsZWFzZVdhc1plcm8oaWQgb2JqKTsKLU9CSkNfRVhQT1JUIGJvb2wgX29i
amNfcm9vdFRyeVJldGFpbihpZCBvYmopOwotT0JKQ19FWFBPUlQgYm9vbCBfb2JqY19yb290SXNE
ZWFsbG9jYXRpbmcoaWQgb2JqKTsKLU9CSkNfRVhQT1JUIGlkIF9vYmpjX3Jvb3RBdXRvcmVsZWFz
ZShpZCBvYmopOwotT0JKQ19FWFBPUlQgdWludHB0cl90IF9vYmpjX3Jvb3RSZXRhaW5Db3VudChp
ZCBvYmopOwotT0JKQ19FWFBPUlQgdm9pZCBfb2JqY19yb290RGVhbGxvYyhpZCBvYmopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1h
Yy5tbQppbmRleCAzZmQzNzBhMGUwZjU3N2I5ZDI1NGIyODBjOTg4ZmI1Y2Y1NmZmNTUyLi4zYTZm
NGM1OTI2MmNlNmQwZWVhMjQwYzZkMmZiNzllYjE3ODZjNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQpAQCAtMTU1
LDkgKzE1NSw3IEBAIFdLTmF2aWdhdGlvbiAqV0tQYWdlTG9hZEZpbGVSZXR1cm5pbmdOYXZpZ2F0
aW9uKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBmaWxlCiAKIFdLV2ViVmlldyAqV0tQYWdl
R2V0V2ViVmlldyhXS1BhZ2VSZWYgcGFnZSkKIHsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIGZyb21XZWJQYWdlUHJveHkoKldlYktpdDo6dG9JbXBsKHBh
Z2UpKTsKKyAgICByZXR1cm4gcGFnZSA/IFdlYktpdDo6dG9JbXBsKHBhZ2UpLT5jb2NvYVZpZXco
KS5hdXRvcmVsZWFzZSgpIDogbmlsOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbQppbmRleCAyMzIwMjEw
NWRkZDExNzk2ZjIyNjM1YmI1M2E5ZWZkMzllZmFlODVmLi5hYmVhOGEwZWViYjk4M2JkOTM0MmQ4
NDg3NjI0M2MzZTcwODdhZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tEb3dubG9hZC5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiV0tOU0RhdGEu
aCIKICNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAi
V0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0
cmFzLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KQEAgLTE5NiwxMCArMTk3LDggQEAg
LSAoTlNVUkxSZXF1ZXN0ICopb3JpZ2luYWxSZXF1ZXN0CiAKIC0gKFdLV2ViVmlldyAqKXdlYlZp
ZXcKIHsKLSAgICBhdXRvKiBwYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKTsKLSAg
ICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGZyb21XZWJQYWdl
UHJveHkoKnBhZ2UpOworICAgIGF1dG8gcGFnZSA9IF9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdl
KCk7CisgICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5jb2NvYVZpZXcoKS5hdXRvcmVsZWFzZSgpIDog
bmlsOwogfQogCiAtIChpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCmluZGV4IGVmNjM5
YjBjMTlhNzk2ZTZkMzRkNDkyMzFiZTkyYWIzYjNmNzdlMjIuLmM4ZWJlYTJmYTcwY2Y2MzVlODIw
ZWRkNzBjMWVjY2MzZTc2NDJlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tGcmFtZUluZm8ubW0KQEAgLTY3LDkgKzY3LDggQEAgLSAoV0tTZWN1cml0eU9y
aWdpbiAqKXNlY3VyaXR5T3JpZ2luCiAKIC0gKFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICBp
ZiAoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UgPSBfZnJhbWVJbmZvLT5wYWdlKCkpCi0gICAg
ICAgIHJldHVybiByZXRhaW5QdHIoZnJvbVdlYlBhZ2VQcm94eSgqcGFnZSkpLmF1dG9yZWxlYXNl
KCk7Ci0gICAgcmV0dXJuIG5pbDsKKyAgICBhdXRvIHBhZ2UgPSBfZnJhbWVJbmZvLT5wYWdlKCk7
CisgICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5jb2NvYVZpZXcoKS5hdXRvcmVsZWFzZSgpIDogbmls
OwogfQogCiAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJv
bGxlci5tbQppbmRleCA2YjMxNWUzMzRlMzlmZmU1NjUxZGFkMTlkM2EzNGVjZGNiM2U3MDcyLi43
OGMxZTVlODVhNDQwZTk0MDU3MzgxYzY1NGZiNDY0NDE2ZjEwYTA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tCkBAIC0xNDUsOSArMTQ1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFBvc3RN
ZXNzYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm9EYXRhLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBmaW5hbAogICAgIHsKICAg
ICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBhdXRvIHdlYlZpZXcgPSBwYWdl
LmNvY29hVmlldygpOworICAgICAgICAgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0g
d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvRGF0YSksICZw
YWdlKSk7CiAgICAgICAgICAgICBpZCBib2R5ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmRlc2VyaWFsaXplKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgMCk7Ci0gICAgICAgICAgICBhdXRv
IG1lc3NhZ2UgPSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5
OmJvZHkgd2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGZyYW1lSW5mbzpmcmFtZUluZm8u
Z2V0KCkgbmFtZTptX25hbWUuZ2V0KCkgd29ybGQ6d3JhcHBlcih3b3JsZCldKTsKKyAgICAgICAg
ICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0
V2l0aEJvZHk6Ym9keSB3ZWJWaWV3OndlYlZpZXcuZ2V0KCkgZnJhbWVJbmZvOmZyYW1lSW5mby5n
ZXQoKSBuYW1lOm1fbmFtZS5nZXQoKSB3b3JsZDp3cmFwcGVyKHdvcmxkKV0pOwogICAgICAgICAK
ICAgICAgICAgICAgIFsoaWQ8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pbV9oYW5kbGVyLmdldCgp
IHVzZXJDb250ZW50Q29udHJvbGxlcjptX2NvbnRyb2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlw
dE1lc3NhZ2U6bWVzc2FnZS5nZXQoKV07CiAgICAgICAgIH0KQEAgLTE2Miw2ICsxNjUsMTIgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fc3VwcG9ydHNBc3luY1JlcGx5KTsKIAor
ICAgICAgICBhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmlldygpOworICAgICAgICBpZiAoIXdl
YlZpZXcpIHsKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihudWxscHRyLCAiVGhlIFdLV2ViVmll
dyB3YXMgcmVsZWFzZWQgYmVmb3JlIHRoZSBtZXNzYWdlIHdhcyBkZWxpdmVyZWQiX3MpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgYXV0byBmaW5hbGl6ZXIgPSBb
XShGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5n
Jik+JiBmdW5jdGlvbikgewogICAgICAgICAgICAgZnVuY3Rpb24obnVsbHB0ciwgIldLV2ViVmll
dyBBUEkgY2xpZW50IGRpZCBub3QgcmVzcG9uZCB0byB0aGlzIHBvc3RNZXNzYWdlIl9zKTsKICAg
ICAgICAgfTsKQEAgLTE3MCw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewogICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3
cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgJnBh
Z2UpKTsKICAgICAgICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
ZGVzZXJpYWxpemUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCAwKTsKLSAgICAgICAgICAgIGF1dG8g
bWVzc2FnZSA9IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6
Ym9keSB3ZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5n
ZXQoKSBuYW1lOm1fbmFtZS5nZXQoKSB3b3JsZDp3cmFwcGVyKHdvcmxkKV0pOworICAgICAgICAg
ICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxvY10gX2luaXRX
aXRoQm9keTpib2R5IHdlYlZpZXc6d2ViVmlldy5nZXQoKSBmcmFtZUluZm86ZnJhbWVJbmZvLmdl
dCgpIG5hbWU6bV9uYW1lLmdldCgpIHdvcmxkOndyYXBwZXIod29ybGQpXSk7CiAKICAgICAgICAg
ICAgIFsoaWQ8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4pbV9oYW5kbGVyLmdldCgp
IHVzZXJDb250ZW50Q29udHJvbGxlcjptX2NvbnRyb2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlw
dE1lc3NhZ2U6bWVzc2FnZS5nZXQoKSByZXBseUhhbmRsZXI6XihpZCByZXN1bHQsIE5TU3RyaW5n
ICplcnJvck1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBk
MDQ4NmMzMzZiM2MzZTA4ZGYyZTM1NmZiOTE4YTIwOTEwOTA4YjE3Li5jMmU1MjIwMDI1MjQ3YTBk
Y2ZhMTA5ODMxNTU2YTY0NTliZjBiYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE5NywxNyArMTk3LDYgQEAgc3RhdGljIGNvbnN0
IEJPT0wgZGVmYXVsdEZhc3RDbGlja2luZ0VuYWJsZWQgPSBOTzsKIHN0YXRpYyBjb25zdCB1aW50
MzJfdCBmaXJzdFNES1ZlcnNpb25XaXRoTGlua1ByZXZpZXdFbmFibGVkQnlEZWZhdWx0ID0gMHhB
MDAwMDsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi1zdGF0aWMgSGFzaE1hcDxX
ZWJLaXQ6OldlYlBhZ2VQcm94eSosIF9fdW5zYWZlX3VucmV0YWluZWQgV0tXZWJWaWV3ICo+JiBw
YWdlVG9WaWV3TWFwKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIF9fdW5zYWZlX3VucmV0YWluZWQgV0tXZWJWaWV3ICo+PiBtYXA7
Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQotV0tXZWJWaWV3KiBmcm9tV2ViUGFnZVByb3h5KFdlYktp
dDo6V2ViUGFnZVByb3h5JiBwYWdlKQotewotICAgIHJldHVybiBwYWdlVG9WaWV3TWFwKCkuZ2V0
KCZwYWdlKTsKLX0KLQogUmV0YWluUHRyPE5TRXJyb3I+IG5zRXJyb3JGcm9tRXhjZXB0aW9uRGV0
YWlscyhjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzKQogewogICAgIGF1
dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0p
OwpAQCAtNDQwLDcgKzQyOSw3IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KICAgICBmb3IgKGF1dG8m
IHBhaXIgOiBwYWdlQ29uZmlndXJhdGlvbi0+dXJsU2NoZW1lSGFuZGxlcnMoKSkKICAgICAgICAg
X3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVyQ29jb2E6OmNyZWF0ZShzdGF0aWNfY2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJDb2NvYSY+KHBhaXIudmFsdWUuZ2V0KCkpLmFwaUhhbmRsZXIoKSksIHBhaXIua2V5KTsKIAot
ICAgIHBhZ2VUb1ZpZXdNYXAoKS5hZGQoX3BhZ2UuZ2V0KCksIHNlbGYpOworICAgIF9wYWdlLT5z
ZXRDb2NvYVZpZXcoc2VsZik7CiAKICAgICBbV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3Zl
cmxheSBpbnN0YWxsRm9yV2ViVmlld0lmTmVlZGVkOnNlbGYga2luZDpAIldLV2ViVmlldyIgZGVw
cmVjYXRlZDpOT107CiAKQEAgLTQ0OSw3ICs0MzgsNyBAQCAtICh2b2lkKV9pbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAg
ICAgX3RpbWVPZlJlcXVlc3RGb3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgPSB0aW1lTm93Owog
ICAgIF90aW1lT2ZMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlID0gdGltZU5vdzsKICAgICBf
dGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVXaXRoUGVuZGluZ0NvbW1pdCA9IHRp
bWVOb3c7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNlbmRpZgogfQogCiAtICh2
b2lkKV9zZXR1cFBhZ2VDb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4m
KXBhZ2VDb25maWd1cmF0aW9uCkBAIC02NDMsOSArNjMyLDYgQEAgLSAodm9pZClkZWFsbG9jCiAg
ICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZW1vdmVPYnNlcnZlcihDRk5vdGlmaWNhdGlvbkNlbnRl
ckdldERhcndpbk5vdGlmeUNlbnRlcigpLCAoX19icmlkZ2UgY29uc3Qgdm9pZCAqKShzZWxmKSwg
KENGU3RyaW5nUmVmKVtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzprR1NFdmVudEhhcmR3
YXJlS2V5Ym9hcmRBdmFpbGFiaWxpdHlDaGFuZ2VkTm90aWZpY2F0aW9uXSwgbnVsbHB0cik7CiAj
ZW5kaWYKIAotICAgIGlmIChfcGFnZSkKLSAgICAgICAgcGFnZVRvVmlld01hcCgpLnJlbW92ZShf
cGFnZS5nZXQoKSk7Ci0KICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXgg
MTc3ODdmZDUwMmQxOThhMzBjMDBjZmM1NjU0MzE1MDBlZTZhNmJkOS4uMzMzZTc4N2Q0OGExODA3
YTUyNjc0YWU2ZDMxODE3ZWJlOTEwMGVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTI3OSw3ICsyNzksNiBA
QCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAKIEBlbmQKIAotV0tXZWJWaWV3KiBmcm9t
V2ViUGFnZVByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CiBSZXRhaW5QdHI8TlNFcnJvcj4g
bnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHMmKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5t
bQppbmRleCA5MTNmNTNhNTQxMTg5NGMyOWViZmUwZDdmMDdmYjdiNjAyMDdhZjA4Li4wYjMyOTAw
ODc5ZjczYjk3NzZmMWJmYmI2YWVjNzNjMDU1M2Y3YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCkBAIC04NCw5ICs4NCw4IEBAIC0g
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIAogLSAoV0tXZWJWaWV3ICopb3JpZ2luYXRpbmdXZWJW
aWV3CiB7Ci0gICAgaWYgKGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9IF9kb3dubG9hZC0+X2Rvd25s
b2FkLT5vcmlnaW5hdGluZ1BhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHJldGFpblB0cihmcm9tV2Vi
UGFnZVByb3h5KCpvcmlnaW5hdGluZ1BhZ2UpKS5hdXRvcmVsZWFzZSgpOwotICAgIHJldHVybiBu
aWw7CisgICAgYXV0byBwYWdlID0gX2Rvd25sb2FkLT5fZG93bmxvYWQtPm9yaWdpbmF0aW5nUGFn
ZSgpOworICAgIHJldHVybiBwYWdlID8gcGFnZS0+Y29jb2FWaWV3KCkuYXV0b3JlbGVhc2UoKSA6
IG5pbDsKIH0KIAogLShOU0FycmF5PE5TVVJMICo+ICopcmVkaXJlY3RDaGFpbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQpp
bmRleCAxNjBjMWFkMWNhMjA0NzlhNTBhNDI5ZjdhMjUzMzc5ZGM0NDQ1ZDFjLi44NGNjN2NhMWNk
NTBmOTFhZGQ0MWRhN2RlNjQ5MzA5MTRmNTU4MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQpAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
V2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIl9X
S0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGVJbnRlcm5h
bC5oIgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgpAQCAtNjEsNyArNjIs
NyBAQCAtIChXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4KIAogLSAoV0tXZWJWaWV3
ICopd2ViVmlldwogewotICAgIHJldHVybiByZXRhaW5QdHIoZnJvbVdlYlBhZ2VQcm94eShfbm9k
ZS0+cGFnZSgpKSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX25vZGUtPnBhZ2UoKS5jb2Nv
YVZpZXcoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU0FycmF5PF9XS0ZyYW1lVHJlZU5vZGUg
Kj4gKiljaGlsZEZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3IubW0KaW5kZXggZjg3MWI5YTJjNzhkYmU0M2I2ZDI0ODczYjQ1NGVkZjBi
YzI5NjNmMy4uMmMxYmE3Yzg1MzhjMGNjYWJhM2Q4MTAwODAwZTExMmI5MTA5ZDVjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCkBA
IC02Niw5ICs2Niw4IEBAIC0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkPF9XS0luc3BlY3RvckRlbGVn
YXRlPilkZWxlZ2F0ZQogCiAtIChXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgaWYgKGF1dG8q
IHBhZ2UgPSBfaW5zcGVjdG9yLT5pbnNwZWN0ZWRQYWdlKCkpCi0gICAgICAgIHJldHVybiBmcm9t
V2ViUGFnZVByb3h5KCpwYWdlKTsKLSAgICByZXR1cm4gbmlsOworICAgIGF1dG8gcGFnZSA9IF9p
bnNwZWN0b3ItPmluc3BlY3RlZFBhZ2UoKTsKKyAgICByZXR1cm4gcGFnZSA/IHBhZ2UtPmNvY29h
VmlldygpLmF1dG9yZWxlYXNlKCkgOiBuaWw7CiB9CiAKIC0gKEJPT0wpaXNDb25uZWN0ZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JU
ZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
clRlc3RpbmcubW0KaW5kZXggNzlhYmZlY2M3YjFlMWU1ZTExNWRiN2M3Zjg1ZDg0MWZkMWQwMDM0
ZC4uOTBkOTAwMTI0MjY1NzJlNmE3OWRkOGEzNjZlZTIwMTI0NGJiYzdmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3RpbmcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3Rp
bmcubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJX
S1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJf
V0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRl
c3RpbmcuaCIKIApAQCAtNDEsOSArNDIsOCBAQCBAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9y
IChXS1Rlc3RpbmcpCiAKIC0gKFdLV2ViVmlldyAqKWluc3BlY3RvcldlYlZpZXcKIHsKLSAgICBp
ZiAoYXV0byogcGFnZSA9IF9pbnNwZWN0b3ItPmluc3BlY3RvclBhZ2UoKSkKLSAgICAgICAgcmV0
dXJuIGZyb21XZWJQYWdlUHJveHkoKnBhZ2UpOwotICAgIHJldHVybiBuaWw7CisgICAgYXV0byBw
YWdlID0gX2luc3BlY3Rvci0+aW5zcGVjdG9yUGFnZSgpOworICAgIHJldHVybiBwYWdlID8gcGFn
ZS0+Y29jb2FWaWV3KCkuYXV0b3JlbGVhc2UoKSA6IG5pbDsKIH0KIAogLSAodm9pZClfb3BlblVS
TEV4dGVybmFsbHlGb3JUZXN0aW5nOihOU1VSTCAqKXVybCB1c2VGcm9udGVuZEFQSTooQk9PTCl1
c2VGcm9udGVuZEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
QXV0b21hdGlvblNlc3Npb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbQppbmRleCAxMTg1ODkzOTkwMzE5YmRmNGM5Zjhh
Yjk4NmYwZjc5MDAyOWRjN2U5Li5lYzg5YWNlZWM3MGE1ZGE2MDY3NDU5MTJlNmViZjIxNWI2ZjNh
NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudC5tbQpAQCAtODMsNjggKzgzLDY4IEBAIHZvaWQgQXV0b21hdGlv
blNlc3Npb25DbGllbnQ6OnJlcXVlc3ROZXdQYWdlV2l0aE9wdGlvbnMoV2ViQXV0b21hdGlvblNl
c3Npb24mIHNlCiAKIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnJlcXVlc3RTd2l0Y2hU
b1BhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYgcGFnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlm
IChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0U3dpdGNoVG9XZWJWaWV3KQotICAgICAgICBbbV9k
ZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSByZXF1ZXN0
U3dpdGNoVG9XZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgY29tcGxldGlvbkhhbmRsZXI6
bWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5nZXQoKV07CisgICAgaWYg
KGF1dG8gd2ViVmlldyA9IHBhZ2UuY29jb2FWaWV3KCk7IHdlYlZpZXcgJiYgbV9kZWxlZ2F0ZU1l
dGhvZHMucmVxdWVzdFN3aXRjaFRvV2ViVmlldykKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkg
X2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgcmVxdWVzdFN3aXRjaFRvV2ViVmll
dzp3ZWJWaWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSkuZ2V0KCldOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKIH0KIAogdm9pZCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6cmVxdWVzdEhpZGVX
aW5kb3dPZlBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYg
cGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0SGlkZVdpbmRvd09mV2ViVmlldykKLSAg
ICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lv
bikgcmVxdWVzdEhpZGVXaW5kb3dPZldlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBjb21w
bGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLmdl
dCgpXTsKKyAgICBpZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsgd2ViVmlldyAm
JiBtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0SGlkZVdpbmRvd09mV2ViVmlldykKKyAgICAgICAg
W21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgcmVx
dWVzdEhpZGVXaW5kb3dPZldlYlZpZXc6d2ViVmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpt
YWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLmdldCgpXTsKICAgICBlbHNl
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgQXV0b21hdGlvblNlc3Np
b25DbGllbnQ6OnJlcXVlc3RSZXN0b3JlV2luZG93T2ZQYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9u
JiBzZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMucmVxdWVz
dFJlc3RvcmVXaW5kb3dPZldlYlZpZXcpCi0gICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRv
bWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHJlcXVlc3RSZXN0b3JlV2luZG93T2ZXZWJW
aWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5nZXQoKV07CisgICAgaWYgKGF1dG8gd2ViVmll
dyA9IHBhZ2UuY29jb2FWaWV3KCk7IHdlYlZpZXcgJiYgbV9kZWxlZ2F0ZU1ldGhvZHMucmVxdWVz
dFJlc3RvcmVXaW5kb3dPZldlYlZpZXcpCisgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRv
bWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHJlcXVlc3RSZXN0b3JlV2luZG93T2ZXZWJW
aWV3OndlYlZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKS5nZXQoKV07CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCiB2b2lkIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpyZXF1ZXN0TWF4
aW1pemVXaW5kb3dPZlBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQ
cm94eSYgcGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0TWF4aW1pemVXaW5kb3dPZldl
YlZpZXcpCi0gICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFw
cGVyKHNlc3Npb24pIHJlcXVlc3RNYXhpbWl6ZVdpbmRvd09mV2ViVmlldzpmcm9tV2ViUGFnZVBy
b3h5KHBhZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkuZ2V0KCldOworICAgIGlmIChhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmll
dygpOyB3ZWJWaWV3ICYmIG1fZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RNYXhpbWl6ZVdpbmRvd09m
V2ViVmlldykKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndy
YXBwZXIoc2Vzc2lvbikgcmVxdWVzdE1heGltaXplV2luZG93T2ZXZWJWaWV3OndlYlZpZXcuZ2V0
KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKS5nZXQoKV07CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQog
CiBib29sIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Ojppc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9n
T25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2Up
CiB7Ci0gICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2dG
b3JXZWJWaWV3KQotICAgICAgICByZXR1cm4gW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25T
ZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZp
ZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKV07CisgICAgaWYgKGF1dG8gd2ViVmlldyA9IHBhZ2Uu
Y29jb2FWaWV3KCk7IHdlYlZpZXcgJiYgbV9kZWxlZ2F0ZU1ldGhvZHMuaXNTaG93aW5nSmF2YVNj
cmlwdERpYWxvZ0ZvcldlYlZpZXcpCisgICAgICAgIHJldHVybiBbbV9kZWxlZ2F0ZS5nZXQoKSBf
YXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSBpc1Nob3dpbmdKYXZhU2NyaXB0RGlh
bG9nRm9yV2ViVmlldzp3ZWJWaWV3LmdldCgpXTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OmRpc21pc3NDdXJyZW50SmF2YVNjcmlw
dERpYWxvZ09uUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYgc2Vzc2lvbiwgV2ViUGFnZVByb3h5
JiBwYWdlKQogewotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kaXNtaXNzQ3VycmVudEphdmFT
Y3JpcHREaWFsb2dGb3JXZWJWaWV3KQotICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21h
dGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSBkaXNtaXNzQ3VycmVudEphdmFTY3JpcHREaWFs
b2dGb3JXZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSldOworICAgIGlmIChhdXRvIHdlYlZp
ZXcgPSBwYWdlLmNvY29hVmlldygpOyB3ZWJWaWV3ICYmIG1fZGVsZWdhdGVNZXRob2RzLmRpc21p
c3NDdXJyZW50SmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXcpCisgICAgICAgIFttX2RlbGVnYXRl
LmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIGRpc21pc3NDdXJyZW50
SmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXc6d2ViVmlldy5nZXQoKV07CiB9CiAKIHZvaWQgQXV0
b21hdGlvblNlc3Npb25DbGllbnQ6OmFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdl
KFdlYkF1dG9tYXRpb25TZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0g
ICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9y
V2ViVmlldykKLSAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndy
YXBwZXIoc2Vzc2lvbikgYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3OmZy
b21XZWJQYWdlUHJveHkocGFnZSldOworICAgIGlmIChhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29h
VmlldygpOyB3ZWJWaWV3ICYmIG1fZGVsZWdhdGVNZXRob2RzLmFjY2VwdEN1cnJlbnRKYXZhU2Ny
aXB0RGlhbG9nRm9yV2ViVmlldykKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRp
b25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dG
b3JXZWJWaWV3OndlYlZpZXcuZ2V0KCldOwogfQogCiBTdHJpbmcgQXV0b21hdGlvblNlc3Npb25D
bGllbnQ6Om1lc3NhZ2VPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYkF1dG9tYXRp
b25TZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKG1fZGVs
ZWdhdGVNZXRob2RzLm1lc3NhZ2VPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldykK
LSAgICAgICAgcmV0dXJuIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFw
cGVyKHNlc3Npb24pIG1lc3NhZ2VPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldzpm
cm9tV2ViUGFnZVByb3h5KHBhZ2UpXTsKKyAgICBpZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2Nv
YVZpZXcoKTsgd2ViVmlldyAmJiBtX2RlbGVnYXRlTWV0aG9kcy5tZXNzYWdlT2ZDdXJyZW50SmF2
YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXcpCisgICAgICAgIHJldHVybiBbbV9kZWxlZ2F0ZS5nZXQo
KSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSBtZXNzYWdlT2ZDdXJyZW50SmF2
YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXc6d2ViVmlldy5nZXQoKV07CiAKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CiAKIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnNldFVzZXJJbnB1dEZv
ckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0T25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiBzZXNz
aW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYg
KG1fZGVsZWdhdGVNZXRob2RzLnNldFVzZXJJbnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0
Rm9yV2ViVmlldykKLSAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9u
OndyYXBwZXIoc2Vzc2lvbikgc2V0VXNlcklucHV0OnZhbHVlIGZvckN1cnJlbnRKYXZhU2NyaXB0
RGlhbG9nRm9yV2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpXTsKKyAgICBpZiAoYXV0byB3
ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsgd2ViVmlldyAmJiBtX2RlbGVnYXRlTWV0aG9kcy5z
ZXRVc2VySW5wdXRGb3JDdXJyZW50SmF2YVNjcmlwdFByb21wdEZvcldlYlZpZXcpCisgICAgICAg
IFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHNl
dFVzZXJJbnB1dDp2YWx1ZSBmb3JDdXJyZW50SmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXc6d2Vi
Vmlldy5nZXQoKV07CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxBUEk6OkF1dG9tYXRpb25TZXNzaW9u
Q2xpZW50OjpKYXZhU2NyaXB0RGlhbG9nVHlwZT4gdG9JbXBsKF9XS0F1dG9tYXRpb25TZXNzaW9u
SmF2YVNjcmlwdERpYWxvZ1R5cGUgdHlwZSkKQEAgLTE3MywxNiArMTczLDE2IEBAIHN0YXRpYyBB
UEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpCcm93c2luZ0NvbnRleHRQcmVzZW50YXRpb24g
dG9JbXBsKF9XS0F1dG9tCiAKIE9wdGlvbmFsPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6
OkphdmFTY3JpcHREaWFsb2dUeXBlPiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6dHlwZU9mQ3Vy
cmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24s
IFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMudHlwZU9m
Q3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3KQotICAgICAgICByZXR1cm4gdG9JbXBs
KFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHR5
cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBh
Z2UpXSk7CisgICAgaWYgKGF1dG8gd2ViVmlldyA9IHBhZ2UuY29jb2FWaWV3KCk7IHdlYlZpZXcg
JiYgbV9kZWxlZ2F0ZU1ldGhvZHMudHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJW
aWV3KQorICAgICAgICByZXR1cm4gdG9JbXBsKFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9u
U2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHR5cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9y
V2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAKICAgICByZXR1cm4gQVBJOjpBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU6OlByb21wdDsKIH0KIAogQVBJOjpBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudDo6QnJvd3NpbmdDb250ZXh0UHJlc2VudGF0aW9uIEF1dG9tYXRp
b25TZXNzaW9uQ2xpZW50OjpjdXJyZW50UHJlc2VudGF0aW9uT2ZQYWdlKFdlYkF1dG9tYXRpb25T
ZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLmN1cnJlbnRQcmVzZW50YXRpb25Gb3JXZWJWaWV3KQotICAgICAgICByZXR1cm4g
dG9JbXBsKFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Np
b24pIGN1cnJlbnRQcmVzZW50YXRpb25Gb3JXZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSld
KTsKKyAgICBpZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsgd2ViVmlldyAmJiBt
X2RlbGVnYXRlTWV0aG9kcy5jdXJyZW50UHJlc2VudGF0aW9uRm9yV2ViVmlldykKKyAgICAgICAg
cmV0dXJuIHRvSW1wbChbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBl
cihzZXNzaW9uKSBjdXJyZW50UHJlc2VudGF0aW9uRm9yV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7
CiAKICAgICByZXR1cm4gQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6QnJvd3NpbmdDb250
ZXh0UHJlc2VudGF0aW9uOjpXaW5kb3c7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KaW5kZXggNzkxOGQz
MDEwMzMxNjE3YmVjZTc3ZTIyNzBjODJjOGE5YWE2YjU2NS4uODlkZGE3ZTc2MjExYjg5ZTRlYWQy
NDI3NjQxNTc2ZTM3Nzc3ZDU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpAQCAtMTg1LDcgKzE4NSw3
IEBAIHZvaWQgYWxlcnRGb3JQZXJtaXNzaW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTWVkaWFQZXJt
aXNzaW9uUmVhc29uIHJlYXNvbiwgY29uc3QKICAgICB9CiAjZW5kaWYKIAotICAgIGF1dG8gKndl
YlZpZXcgPSBmcm9tV2ViUGFnZVByb3h5KHBhZ2UpOworICAgIGF1dG8gd2ViVmlldyA9IHBhZ2Uu
Y29jb2FWaWV3KCk7CiAgICAgaWYgKCF3ZWJWaWV3KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgYWxl
cnRGb3JQZXJtaXNzaW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTWVkaWFQZXJtaXNzaW9uUmVhc29u
IHJlYXNvbiwgY29uc3QKICAgICBidXR0b24ua2V5RXF1aXZhbGVudCA9IEAiIjsKICAgICBidXR0
b24gPSBbYWxlcnQgYWRkQnV0dG9uV2l0aFRpdGxlOmRvTm90QWxsb3dCdXR0b25TdHJpbmddOwog
ICAgIGJ1dHRvbi5rZXlFcXVpdmFsZW50ID0gQCJcRSI7Ci0gICAgW2FsZXJ0IGJlZ2luU2hlZXRN
b2RhbEZvcldpbmRvdzp3ZWJWaWV3LndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpbY29tcGxldGlv
bkJsb2NrXShOU01vZGFsUmVzcG9uc2UgcmV0dXJuQ29kZSkgeworICAgIFthbGVydCBiZWdpblNo
ZWV0TW9kYWxGb3JXaW5kb3c6W3dlYlZpZXcgd2luZG93XSBjb21wbGV0aW9uSGFuZGxlcjpbY29t
cGxldGlvbkJsb2NrXShOU01vZGFsUmVzcG9uc2UgcmV0dXJuQ29kZSkgewogICAgICAgICBhdXRv
IHNob3VsZEFsbG93ID0gcmV0dXJuQ29kZSA9PSBOU0FsZXJ0Rmlyc3RCdXR0b25SZXR1cm47CiAg
ICAgICAgIGNvbXBsZXRpb25CbG9jayhzaG91bGRBbGxvdyk7CiAgICAgfV07CkBAIC0yMjUsNyAr
MjI1LDcgQEAgdm9pZCBhbGVydEZvclBlcm1pc3Npb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNZWRp
YVBlcm1pc3Npb25SZWFzb24gcmVhc29uLCBjb25zdAogICAgIFthbGVydCBhZGRBY3Rpb246ZG9O
b3RBbGxvd0FjdGlvbl07CiAgICAgW2FsZXJ0IGFkZEFjdGlvbjphbGxvd0FjdGlvbl07CiAKLSAg
ICBbW1VJVmlld0NvbnRyb2xsZXIgX3ZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVlblByZXNlbnRh
dGlvbkZyb21WaWV3OndlYlZpZXddIHByZXNlbnRWaWV3Q29udHJvbGxlcjphbGVydCBhbmltYXRl
ZDpZRVMgY29tcGxldGlvbjpuaWxdOworICAgIFtbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRy
b2xsZXJGb3JGdWxsU2NyZWVuUHJlc2VudGF0aW9uRnJvbVZpZXc6d2ViVmlldy5nZXQoKV0gcHJl
c2VudFZpZXdDb250cm9sbGVyOmFsZXJ0IGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNl
c3Npb24ubW0KaW5kZXggMGYxODAzOGRlOTg5ZTY5YTg0MzJjODViNzFiNmMwNGU5MzEzMDJiMy4u
NDkxN2M1YTFjZTYxY2EzMmEyYTQ1OWMzMWRlMmNmNDE1MjMxZjJjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1
dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0xMjksNiArMTI5
LDExIEBAIHZvaWQgUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjphYm9ydEludGVybmFsKCkK
ICAgICB9CiAKICAgICBpbml0U2VjcmV0V2ViVmlldygpOworICAgIGlmICghbV9zZWNyZXRXZWJW
aWV3KSB7CisgICAgICAgIG1fbmV3UGFnZUNhbGxiYWNrKG51bGxwdHIpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgbV9uZXdQYWdlQ2FsbGJhY2sobV9zZWNyZXRXZWJWaWV3LT5fcGFn
ZS5nZXQoKSk7CiAgICAgW21fc2VjcmV0V2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6IEAid2lu
ZG93LmNsb3NlKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CkBAIC0xNDEsNiArMTQ2LDEx
IEBAIHZvaWQgUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0ZUludGVybmFsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uCiAgICAgfQogCiAgICAgaW5pdFNlY3JldFdlYlZp
ZXcoKTsKKyAgICBpZiAoIW1fc2VjcmV0V2ViVmlldykgeworICAgICAgICBmYWxsQmFja1RvV2Vi
UGF0aEludGVybmFsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX25ld1BhZ2VD
YWxsYmFjayhtX3NlY3JldFdlYlZpZXctPl9wYWdlLmdldCgpKTsKICAgICBbbV9zZWNyZXRXZWJW
aWV3IGxvYWREYXRhOmRhdGEgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGNoYXJhY3RlckVuY29kaW5n
TmFtZTpAIlVURi04IiBiYXNlVVJMOnJlc3BvbnNlLnVybCgpXTsKIH0KQEAgLTE2MCw5ICsxNzAs
MTEgQEAgdm9pZCBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNsb3NlKFdLV2ViVmlldyAq
d2ViVmlldykKIHZvaWQgUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjppbml0U2VjcmV0V2Vi
VmlldygpCiB7CiAgICAgQVNTRVJUKHBhZ2UoKSk7Ci0gICAgYXV0byBpbml0aWF0b3JXZWJWaWV3
ID0gZnJvbVdlYlBhZ2VQcm94eSgqcGFnZSgpKTsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtpbml0aWF0b3JXZWJWaWV3LmNvbmZpZ3VyYXRpb24gY29weV0pOwotICAgIFtjb25m
aWd1cmF0aW9uIF9zZXRSZWxhdGVkV2ViVmlldzppbml0aWF0b3JXZWJWaWV3XTsKKyAgICBhdXRv
IGluaXRpYXRvcldlYlZpZXcgPSBwYWdlKCktPmNvY29hVmlldygpOworICAgIGlmICghaW5pdGlh
dG9yV2ViVmlldykKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tpbml0aWF0b3JXZWJWaWV3IGNvbmZpZ3VyYXRpb25dIGNvcHldKTsKKyAgICBbY29u
ZmlndXJhdGlvbiBfc2V0UmVsYXRlZFdlYlZpZXc6aW5pdGlhdG9yV2ViVmlldy5nZXQoKV07CiAg
ICAgbV9zZWNyZXRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAg
ICAgbV9zZWNyZXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1NPU2VjcmV0RGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoU2Vzc2lvbjp0aGlzXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRp
b25TZXNzaW9uLm1tCmluZGV4IGMwNDM4YmRkYzFmZDAzMDgzYTQyZTkzODYxOWI0OWNlNjg1ZWE1
OGQuLmRlMDQxM2NlY2NkZmI5YTUyZjA1ODJkYmVjNzcyYzRlNDNlYTYwZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6
YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0xODIsNyArMTgyLDcgQEAg
dm9pZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xp
Y3koY29uc3QgU09BdXRob3JpemF0aW8KICAgICBbbV9zb0F1dGhvcml6YXRpb24gc2V0QXV0aG9y
aXphdGlvbk9wdGlvbnM6YXV0aG9yaXphdGlvbk9wdGlvbnNdOwogCiAjaWYgUExBVEZPUk0oSU9T
KQotICAgIGlmICghW2Zyb21XZWJQYWdlUHJveHkoKm1fcGFnZSkuVUlEZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9wcmVzZW50aW5nVmlld0NvbnRyb2xsZXJGb3JXZWJWaWV3
OildKQorICAgIGlmICghW1ttX3BhZ2UtPmNvY29hVmlldygpIFVJRGVsZWdhdGVdIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXc6
KV0pCiAgICAgICAgIFttX3NvQXV0aG9yaXphdGlvbiBzZXRFbmFibGVFbWJlZGRlZEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcjpOT107CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tCmluZGV4
IDMwOGNkZGUxNWI0ZWQ1OWU2ZGQ4N2JlZGJhOWMxN2IwYzJmOTU3NDguLjBkMWNkYjFmNDM5ZmI2
YmQ1Zjk0NDM4NGNkZWY0MGUyMzllM2JmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0KQEAgLTUyLDcg
KzUyLDggQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OnBsYXRmb3JtU3RhcnRUYXNr
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViVVJMU2NoZW0KICAgICBhdXRvIHJlc3VsdCA9IG1fYXBp
VGFza3MuYWRkKHRhc2suaWRlbnRpZmllcigpLCBBUEk6OlVSTFNjaGVtZVRhc2s6OmNyZWF0ZSh0
YXNrKSk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIFttX2FwaUhhbmRs
ZXIuZ2V0KCkgd2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIHN0YXJ0VVJMU2NoZW1lVGFz
azp3cmFwcGVyKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpXTsKKyAgICBpZiAoYXV0byB3
ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKSkKKyAgICAgICAgW21fYXBpSGFuZGxlci5nZXQoKSB3
ZWJWaWV3OndlYlZpZXcuZ2V0KCkgc3RhcnRVUkxTY2hlbWVUYXNrOndyYXBwZXIocmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5nZXQoKSldOwogfQogCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2Nv
YTo6cGxhdGZvcm1TdG9wVGFzayhXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlVSTFNjaGVtZVRhc2sm
IHRhc2spCkBAIC02MSw3ICs2Miw4IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpw
bGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViVVJMU2NoZW1lCiAgICAgaWYg
KGl0ZXJhdG9yID09IG1fYXBpVGFza3MuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtt
X2FwaUhhbmRsZXIuZ2V0KCkgd2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIHN0b3BVUkxT
Y2hlbWVUYXNrOndyYXBwZXIoaXRlcmF0b3ItPnZhbHVlLmdldCgpKV07CisgICAgaWYgKGF1dG8g
d2ViVmlldyA9IHBhZ2UuY29jb2FWaWV3KCkpCisgICAgICAgIFttX2FwaUhhbmRsZXIuZ2V0KCkg
d2ViVmlldzp3ZWJWaWV3LmdldCgpIHN0b3BVUkxTY2hlbWVUYXNrOndyYXBwZXIoaXRlcmF0b3It
PnZhbHVlLmdldCgpKV07CiAKICAgICBtX2FwaVRhc2tzLnJlbW92ZShpdGVyYXRvcik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQppbmRleCBmMGYxZjU0
NjFlOWIzNGVkNzhlYzQ0NTJmZjgzMDFhMzcyNDdkM2UyLi5hNTUxYTJjM2Y0OWUyYzY3YTc3OTRh
MjM3ZDRlN2EwMThiOTgxZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
REYvV0tQREZIVURWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BE
RkhVRFZpZXcubW0KQEAgLTE2MywxMSArMTYzLDggQEAgLSAodm9pZClfc2V0VmlzaWJsZTooYm9v
bClpc1Zpc2libGUKIAogLSAoTlNWaWV3ICopaGl0VGVzdDooTlNQb2ludClwb2ludAogewotICAg
IGlmIChfcGFnZSkKLSAgICAgICAgcmV0dXJuIGZyb21XZWJQYWdlUHJveHkoKl9wYWdlKTsKLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzZWxmOworICAgIEFTU0VSVChf
cGFnZSk7CisgICAgcmV0dXJuIF9wYWdlID8gX3BhZ2UtPmNvY29hVmlldygpLmF1dG9yZWxlYXNl
KCkgOiBzZWxmOwogfQogCiAtICh2b2lkKW1vdXNlTW92ZWQ6KE5TRXZlbnQgKilldmVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAxNDc3OWM3NTNkOWY2NDM3Yjlk
OTEwMmRiZGIxNDVlZmUwYWRiNjU1Li5mZjAyNDY5YzEzZWFmNmQwNmI2M2U1ZjRhMTA1ZTlkZjM1
OWRkOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTM4LDEx
ICsxMzgsNiBAQAogI2luY2x1ZGUgIkVuZG93bWVudFN0YXRlVHJhY2tlci5oIgogI2VuZGlmCiAK
LU9CSkNfQ0xBU1MgTlNNZW51OwotT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7Ci1PQkpD
X0NMQVNTIE5TVmlldzsKLU9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7Ci0KICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4K
ICNlbmRpZgpAQCAtMTU0LDYgKzE0OSw3IEBAIE9CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiRHluYW1pY1ZpZXdwb3J0U2l6
ZVVwZGF0ZS5oIgogI2luY2x1ZGUgIlJlbW90ZUxheWVyVHJlZU5vZGUuaCIKKyNpbmNsdWRlIDx3
dGYvV2Vha09iakNQdHIuaD4KICNlbmRpZgogCiAjaWYgSEFWRShUT1VDSF9CQVIpCkBAIC0yMTks
MTAgKzIxNSwxOSBAQCBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiBj
bGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQorCisjaWYgUExBVEZPUk0oQ09DT0EpCiBPQkpDX0NM
QVNTIE5TRmlsZVdyYXBwZXI7CitPQkpDX0NMQVNTIE5TTWVudTsKK09CSkNfQ0xBU1MgTlNUZXh0
QWx0ZXJuYXRpdmVzOworT0JKQ19DTEFTUyBOU1ZpZXc7CiBPQkpDX0NMQVNTIFdLUUxUaHVtYm5h
aWxMb2FkT3BlcmF0aW9uOworT0JKQ19DTEFTUyBXS1dlYlZpZXc7CitPQkpDX0NMQVNTIF9XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5OworI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFz
cyBDdXJzb3I7CkBAIC0yOTQsNiArMjk5LDcgQEAgZW51bSBjbGFzcyBEYXRhT3duZXJUeXBlIDog
dWludDhfdDsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJlY3RFZGdlczsKIHVzaW5nIEZs
b2F0Qm94RXh0ZW50ID0gUmVjdEVkZ2VzPGZsb2F0PjsKKwogfQogCiAjaWYgUExBVEZPUk0oR1RL
KQpAQCAtMzEzLDcgKzMxOSw3IEBAIHR5cGVkZWYgSFdORCBQbGF0Zm9ybVZpZXdXaWRnZXQ7CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVz
dGluZ0RhdGE7CisKIGNsYXNzIEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk7CiBj
bGFzcyBEcmF3aW5nQXJlYVByb3h5OwogY2xhc3MgR2FtZXBhZERhdGE7CkBAIC0zNTksNyArMzY1
LDcgQEAgY2xhc3MgV2ViV2hlZWxFdmVudDsKIGNsYXNzIFdlYldoZWVsRXZlbnRDb2FsZXNjZXI7
CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogCi1zdHJ1Y3QgV2ViQmFja0ZvcndhcmRMaXN0Q291
bnRzOworc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOwogc3RydWN0IENvbG9y
U3BhY2VEYXRhOwogc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1bHQ7CiBzdHJ1Y3QgRG9jdW1lbnRF
ZGl0aW5nQ29udGV4dDsKQEAgLTM4MCwxMyArMzg2LDE0IEBAIHN0cnVjdCBQbGF0Zm9ybVBvcHVw
TWVudURhdGE7CiBzdHJ1Y3QgUHJpbnRJbmZvOwogc3RydWN0IFBERkNvbnRleHRNZW51Owogc3Ry
dWN0IFJlc291cmNlTG9hZEluZm87CitzdHJ1Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM7Citz
dHJ1Y3QgVXNlck1lc3NhZ2U7CiBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25EYXRhOworc3RydWN0
IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50czsKIHN0cnVjdCBXZWJIaXRUZXN0UmVzdWx0RGF0YTsK
IHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogc3RydWN0IFdlYlBvcHVwSXRlbTsKIHN0
cnVjdCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTsKLXN0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1l
dGVyczsKLXN0cnVjdCBVc2VyTWVzc2FnZTsKIAogZW51bSBjbGFzcyBOZWdvdGlhdGVkTGVnYWN5
VExTIDogYm9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJv
b2w7CkBAIC00MTQsNyArNDIxLDcgQEAgY2xhc3MgV2ViRGF0ZVRpbWVQaWNrZXI7CiAKIHVzaW5n
IFNwZWxsRG9jdW1lbnRUYWcgPSBpbnQ2NF90OwogCi1jbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgorY2xhc3MgV2ViUGFn
ZVByb3h5IGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
UGFnZT4KICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICAsIHB1YmxpYyBXZWJDb2xv
clBpY2tlcjo6Q2xpZW50CiAjZW5kaWYKQEAgLTEzNTgsNyArMTM2NSw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgLy8gV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudAotICAgIE5hdGl2ZVdlYk1v
dXNlRXZlbnQqIGN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50KCkgb3ZlcnJpZGU7Cisg
ICAgTmF0aXZlV2ViTW91c2VFdmVudCogY3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQo
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyhib29sIGZs
YWcpOwogICAgIGJvb2wgc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcygpIHsgcmV0dXJuIG1fc3Vw
cHJlc3NWaXNpYmlsaXR5VXBkYXRlczsgfQpAQCAtMTY0NCw4ICsxNjUxLDggQEAgcHVibGljOgog
I2lmIEhBVkUoUVVJQ0tMT09LX1RIVU1CTkFJTElORykKICAgICB2b2lkIHVwZGF0ZUF0dGFjaG1l
bnRJY29uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+Jik7CiAg
ICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aFBhdGgoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJik7Ci0gICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aEZpbGVXcmFwcGVyKE5TRmlsZVdy
YXBwZXIqLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoT3Bl
cmF0aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uKik7CisgICAgdm9pZCByZXF1ZXN0VGh1
bWJuYWlsV2l0aEZpbGVXcmFwcGVyKE5TRmlsZVdyYXBwZXIgKiwgY29uc3QgU3RyaW5nJik7Cisg
ICAgdm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1bWJuYWlsTG9hZE9w
ZXJhdGlvbiAqKTsKICNlbmRpZgogICAgIGVudW0gY2xhc3MgU2hvdWxkVXBkYXRlQXR0YWNobWVu
dEF0dHJpYnV0ZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFNob3VsZFVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzIHdpbGxVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0
dGFjaG1lbnQmKTsKQEAgLTE3MzYsOCArMTc0Myw4IEBAIHB1YmxpYzoKIAogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlBhZ2VQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0
X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1
cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKIApAQCAtMTgwNiw4ICsxODEzLDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQorI2lmIFBMQVRGT1JNKE1BQykKICAgICBOU01lbnUgKnBsYXRmb3JtQWN0aXZlQ29udGV4
dE1lbnUoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAg
dm9pZCBwbGF0Zm9ybURpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoY29uc3QgV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YSYpOwogI2VuZGlmCiAKQEAgLTE4NzksMTEgKzE4ODksMTIgQEAg
cHVibGljOgogICAgIHZvaWQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSYp
PiYmKTsKICAgICB2b2lkIGNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKICAgICBOU0Rp
Y3Rpb25hcnkgKmNvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbShOU1N0cmluZyAqdXNlckludGVy
ZmFjZUl0ZW0pOwotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQorCisgICAgUmV0YWluUHRyPFdL
V2ViVmlldz4gY29jb2FWaWV3KCk7CisgICAgdm9pZCBzZXRDb2NvYVZpZXcoV0tXZWJWaWV3ICop
OworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQ
cm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CkBAIC0xOTEzLDE1
ICsxOTI0LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYpOwog
CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVS
ZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8
c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRf
dD4+JiYpIG92ZXJyaWRlOwotICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVm
PElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0
ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+
PiYmKSBmaW5hbDsKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBjb25zdCBmaW5hbDsKIAogICAgIC8vIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQKLSAgICB2
b2lkIHZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3Qg
bmV3U2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRUZXh0RnJvbUl0ZW1Gb3JQ
b3B1cE1lbnUoV2ViUG9wdXBNZW51UHJveHkqLCBpbnQzMl90IGluZGV4KSBvdmVycmlkZTsKKyAg
ICB2b2lkIHZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMy
X3QgbmV3U2VsZWN0ZWRJbmRleCkgZmluYWw7CisgICAgdm9pZCBzZXRUZXh0RnJvbUl0ZW1Gb3JQ
b3B1cE1lbnUoV2ViUG9wdXBNZW51UHJveHkqLCBpbnQzMl90IGluZGV4KSBmaW5hbDsKICNpZiBQ
TEFURk9STShHVEspCi0gICAgdm9pZCBmYWlsZWRUb1Nob3dQb3B1cE1lbnUoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZhaWxlZFRvU2hvd1BvcHVwTWVudSgpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQpAQCAtMjA4Nyw4ICsyMDk4LDggQEAgcHJpdmF0ZToKIAogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIHZvaWQgc2hvd0NvbG9yUGlja2VyKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBW
ZWN0b3I8V2ViQ29yZTo6Q29sb3I+JiYpOwotICAgIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZEVuZENvbG9yUGlja2VyKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYp
IGZpbmFsOworICAgIHZvaWQgZGlkRW5kQ29sb3JQaWNrZXIoKSBmaW5hbDsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCkBAIC0yMzg5LDEzICsyNDAwLDEzIEBAIHByaXZh
dGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotICAgIHZvaWQgZGlk
U3RhcnRTcGVha2luZyhXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRmluaXNoU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFBhdXNlU3Bl
YWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJy
ZWQoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJlZChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSYsIFdlYkNvcmU6OlNwZWVjaEJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFy
SW5kZXgpIG92ZXJyaWRlOwotICAgIHZvaWQgdm9pY2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRTdGFydFNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlJikgZmluYWw7CisgICAgdm9pZCBkaWRGaW5pc2hTcGVha2luZyhXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpIGZpbmFsOworICAgIHZvaWQgZGlkUGF1
c2VTcGVha2luZyhXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UmKSBmaW5hbDsKKyAgICB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJl
ZChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpIGZpbmFsOworICAg
IHZvaWQgYm91bmRhcnlFdmVudE9jY3VycmVkKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJiwgV2ViQ29yZTo6U3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRl
eCkgZmluYWw7CisgICAgdm9pZCB2b2ljZXNEaWRDaGFuZ2UoKSBmaW5hbDsKIAogICAgIHN0cnVj
dCBTcGVlY2hTeW50aGVzaXNEYXRhOwogICAgIFNwZWVjaFN5bnRoZXNpc0RhdGEmIHNwZWVjaFN5
bnRoZXNpc0RhdGEoKTsKQEAgLTI0NzQsNiArMjQ4NSwxMCBAQCBwcml2YXRlOgogCiAgICAgUmVm
UHRyPFdlYkluc3BlY3RvclByb3h5PiBtX2luc3BlY3RvcjsKIAorI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gbV9jb2NvYVZpZXc7CisjZW5kaWYKKwogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eT4gbV9mdWxsU2NyZWVuTWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpGdWxsc2NyZWVuQ2xpZW50PiBtX2Z1bGxzY3JlZW5DbGllbnQ7CkBAIC0yOTQ1LDQgKzI5
NjAsMTggQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAorI2lmZGVmIF9fT0JKQ19fCisKK2lubGlu
ZSBSZXRhaW5QdHI8V0tXZWJWaWV3PiBXZWJQYWdlUHJveHk6OmNvY29hVmlldygpCit7CisgICAg
cmV0dXJuIG1fY29jb2FWaWV3LmdldCgpOworfQorCitpbmxpbmUgdm9pZCBXZWJQYWdlUHJveHk6
OnNldENvY29hVmlldyhXS1dlYlZpZXcgKnZpZXcpCit7CisgICAgbV9jb2NvYVZpZXcgPSB2aWV3
OworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMDQzYjA2YjVhYzZkZTM3
NDNhNWM3N2EyODJhMTQ1MmU1YzNlMjQwLi44M2FlM2E4NWVjMWQyMDE5NGQ3NTliODE0ODVlNzQ5
OGU2NDU3MDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTg3Nyw3ICs4NzcsNiBAQAogCQkzN0E3MDlBNzFFM0VBMEZEMDBDQTU5Njkg
LyogV0tEYXRhRGV0ZWN0b3JUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzdBNzA5QTYxRTNFQTBGRDAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9y
VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJ
CTM3QTcwOUE5MUUzRUE0MEMwMENBNTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QTcwOUE4
MUUzRUE0MEMwMENBNTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwuaCAqLzsgfTsK
IAkJMzdCMEQxODQxQzFFNDk5QTAwRDQwRDY0IC8qIFBsdWdpblByb2Nlc3NTaGltLmR5bGliIGlu
IENvcHkgU2hpbXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDMjVGQjAx
MkE0OEVBNzAwQkQyNjcxIC8qIFBsdWdpblByb2Nlc3NTaGltLmR5bGliICovOyB9OwotCQkzN0I0
N0UyRDFENjREQjc2MDA1RjRFRkYgLyogb2JqY1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdCNDdFMkMxRDY0REI3NjAwNUY0RUZGIC8qIG9iamNT
UEkuaCAqLzsgfTsKIAkJMzdCNTA0NTIxOUVFRjMxMzAwQ0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0I1MDQ1
MTE5RUVGMzEzMDBDRTJDRjggLyogV0tFcnJvclByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0JFQzRERDE5NDhGQzZBMDA4QjQyODYg
LyogV2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUExQzc5QTEwMEU3RkM1MDA3OERFQkMgLyogV2ViQ29yZS5mcmFtZXdv
cmsgKi87IH07CiAJCTM3QkVDNEUxMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0JFQzRERjE5NDkxNDg2MDA4QjQyODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlci5oICovOyB9OwpAQCAtMzYwOSw3ICszNjA4LDYgQEAKIAkJMzdBNjRFNTYxOEYzOEY0NjAw
RUIzMEYxIC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gX1dLRm9ybUlucHV0U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzN0E3MDlBNjFFM0VBMEZEMDBDQTU5NjkgLyogV0tEYXRhRGV0ZWN0b3JUeXBlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RhdGFEZXRlY3RvclR5cGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QTcwOUE4MUUzRUE0MEMwMENBNTk2OSAvKiBX
S0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tEYXRhRGV0ZWN0b3JUeXBlc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTM3QjQ3RTJDMUQ2NERCNzYwMDVGNEVGRiAvKiBvYmpjU1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG9iamNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzdCNTA0NTExOUVFRjMxMzAwQ0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRXJyb3JQcml2YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QkVDNERFMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzdCRUM0REYxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Nzc2Nyw3ICs3NzY1LDYgQEAKIAkJCQk1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyogTG9jYWxB
dXRoZW50aWNhdGlvblNQSS5oICovLAogCQkJCTU3QjgyNjQwMjMwNEVCM0UwMEI3MkVCMCAvKiBO
ZWFyRmllbGRTUEkuaCAqLywKIAkJCQkzNzU0RDU0NDFCM0EyOUZEMDAzQTRDN0YgLyogTlNJbnZv
Y2F0aW9uU1BJLmggKi8sCi0JCQkJMzdCNDdFMkMxRDY0REI3NjAwNUY0RUZGIC8qIG9iamNTUEku
aCAqLywKIAkJCQkwRTk3RDc0QzIwMEU4RkYzMDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IENvY29hOwpAQCAtMTE5MjksNyArMTE5MjYsNiBAQAogCQkJ
CTFDMjE4NDAyMjIzMzg3MjgwMEJBQzcwMCAvKiBOU0F0dHJpYnV0ZWRTdHJpbmdQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzNzU0RDU0NTFCM0EyOUZEMDAzQTRDN0YgLyogTlNJbnZvY2F0
aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBQ0ExMzE2NjcwRDg5MDA0QzE5NDEgLyog
T2JqQ09iamVjdEdyYXBoLmggaW4gSGVhZGVycyAqLywKLQkJCQkzN0I0N0UyRDFENjREQjc2MDA1
RjRFRkYgLyogb2JqY1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NGNDdGRkIxNzI3NUM1NzAw
OEFDQjkxIC8qIFBhZ2VCYW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNkVEQUE2MTExMjcx
QzYwMEU3Njc4QiAvKiBQYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU0NjE4
QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGxJT1MuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423758</attachid>
            <date>2021-03-19 12:21:28 -0700</date>
            <delta_ts>2021-03-19 18:37:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222336-20210319122127.patch</filename>
            <type>text/plain</type>
            <size>53786</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
M2Y0YWE4ZTI0OGU2OGE2ZWRhYzQ3YjNiY2MyODcyZmEwY2MyNjdjLi43NTc1MTQ3ZWRiMzE2OWQw
NzkwNGEyYzQ2MWYxMWUzNWYzNDBmOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wMy0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBNYWtlIGl0IHBvc3NpYmxlIHRvIHJlbGVhc2UgYSBXS1dlYlZpZXcg
b24gYSBub24tbWFpbiB0aHJlYWQgd2l0aG91dCBhIGNyYXNoIGR1ZSB0byBXS1NjcmlwdE1lc3Nh
Z2UgcmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIyMzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBBUEkvT2JqY1J1bnRpbWVFeHRyYXMuaDogUmVtb3ZlZCBkZWNsYXJhdGlvbnMgb2Ygb2JqY19p
bml0V2VhayBhbmQgb2JqY19kZXN0cm95V2Vhaywgc2luY2UKKyAgICAgICAgdGhlc2UgYXJlIGFs
cmVhZHkgaW4gPHd0Zi9zcGkvY29jb2Evb2JqY1NQSS5oPi4KKwogMjAyMS0wMy0xOSAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQnJhbmRlZFN0cnVjdHVyZSBzaG91
bGQga2VlcCBpdHMgbWVtYmVycyBhbGl2ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYTdlNjc3NTUyMWQwN2ZmOWFkOWFhMGQz
ZjI3MTFkMmE2MjA3NjBjMC4uNjI5MzMyMTZiMTUzZWFjMmYxYTIyNGZkMzk5NTc2N2EzMjQzYmM2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMy0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNYWtlIGl0IHBvc3NpYmxlIHRvIHJlbGVhc2Ug
YSBXS1dlYlZpZXcgb24gYSBub24tbWFpbiB0aHJlYWQgd2l0aG91dCBhIGNyYXNoIGR1ZSB0byBX
S1NjcmlwdE1lc3NhZ2UgcmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyMzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvc3BpL2NvY29hL29iamNTUEkuaDogUmVtb3ZlZCB1bm5lY2Vzc2Fy
eSAjaWYgc28gZnVuY3Rpb25zIGFyZSBjb3JyZWN0bHkgY29tcGlsZWQgZm9yCisgICAgICAgIG5v
bi1PYmplY3RpdmUtQyBzb3VyY2UgZmlsZXMuIEFkZGVkIGluY2x1ZGUgb2YgPG9iamMvb2JqYy5o
PiBzbyB0aGF0ICJpZCIgaXMgZGVmaW5lZC4KKwogMjAyMS0wMy0xOSAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFByb3BlcnR5TmFtZSBwYXJhbWV0ZXIgdG8g
Y3VzdG9tIHNldHRlcnMgdG8gYWxsb3cgc2hhcmVkIGltcGxlbWVudGF0aW9ucyB0byBkbyBsYXRl
IG5hbWUgbG9va3VwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIwY2FmZTM3OWJlNzhkMzM1ZTIxYTRhYWI0YmEwYmMx
Y2JkM2E0NzEuLmUzN2ZhYTExZDZiMjJkZWVjNWFhNjgwM2IxNWZlNzcyNjY5N2I1MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTAyIEBACisyMDIxLTAzLTE5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIE1ha2UgaXQgcG9zc2libGUgdG8gcmVsZWFzZSBh
IFdLV2ViVmlldyBvbiBhIG5vbi1tYWluIHRocmVhZCB3aXRob3V0IGEgY3Jhc2ggZHVlIHRvIFdL
U2NyaXB0TWVzc2FnZSByYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjIzMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9vYmpjU1BJLmg6IFJlbW92ZWQgdGhpcyB1
bnVzZWQgZmlsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0
ZU1hYy5tbToKKyAgICAgICAgKFdLUGFnZUdldFdlYlZpZXcpOiBVc2UgV0tQYWdlUHJveHk6OmNv
Y29hVmlldyBpbnN0ZWFkIG9mIGZyb21XZWJQYWdlUHJveHkuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtXS0Rvd25sb2FkIHdlYlZpZXdd
KTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbToK
KyAgICAgICAgKC1bV0tGcmFtZUluZm8gd2ViVmlld10pOiBEaXR0by4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgIChT
Y3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlOjpkaWRQb3N0TWVzc2FnZSk6IFVzZSBXS1BhZ2VQ
cm94eTo6Y29jb2FWaWV3CisgICAgICAgIGluc3RlYWQgb2YgZnJvbVdlYlBhZ2VQcm94eSBhbmQg
YWRkIG51bGwgY2hlY2tzLgorICAgICAgICAoU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZTo6
ZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseSk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgIChwYWdlVG9WaWV3TWFwKTogRGVs
ZXRlZC4KKyAgICAgICAgKGZyb21XZWJQYWdlUHJveHkpOiBEZWxldGVkLgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKTogVXNlIFdLUGFnZVByb3h5
OjpzZXRDb2NvYVZpZXcKKyAgICAgICAgaW5zdGVhZCBvZiBhZGRpbmcgdGhlIHBhZ2UvdmlldyBw
YWlyIHRvIGEgbWFwLgorICAgICAgICAoLVtXS1dlYlZpZXcgZGVhbGxvY10pOiBSZW1vdmVkIGNv
ZGUgdGhhdCByZW1vdmVkIHRoZSBwYWdlL3ZpZXcgcGFpciBmcm9tIHRoZSBtYXAuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmg6IFJlbW92ZWQgZnJv
bVdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWQubW06CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nV2ViVmlld10pOiBVc2Ug
V0tQYWdlUHJveHk6OmNvY29hVmlldyBpbnN0ZWFkIG9mIGZyb21XZWJQYWdlUHJveHkuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGcmFtZVRyZWVOb2RlLm1tOgorICAgICAgICAo
LVtfV0tGcmFtZVRyZWVOb2RlIHdlYlZpZXddKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciB3ZWJW
aWV3XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
VGVzdGluZy5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIGluc3BlY3RvcldlYlZpZXddKTog
RGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGll
bnQubW06CisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpyZXF1ZXN0
U3dpdGNoVG9QYWdlKTogVXNlIFdLUGFnZVByb3h5Ojpjb2NvYVZpZXcKKyAgICAgICAgaW5zdGVh
ZCBvZiBmcm9tV2ViUGFnZVByb3h5IGFuZCBhZGQgYSBudWxsIGNoZWNrLgorICAgICAgICAoV2Vi
S2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6cmVxdWVzdEhpZGVXaW5kb3dPZlBhZ2UpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnJlcXVlc3RS
ZXN0b3JlV2luZG93T2ZQYWdlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50OjpyZXF1ZXN0TWF4aW1pemVXaW5kb3dPZlBhZ2UpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OmlzU2hvd2luZ0phdmFTY3JpcHRE
aWFsb2dPblBhZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ6OmRpc21pc3NDdXJyZW50SmF2YVNjcmlwdERpYWxvZ09uUGFnZSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6YWNjZXB0Q3VycmVudEphdmFT
Y3JpcHREaWFsb2dPblBhZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNl
c3Npb25DbGllbnQ6Om1lc3NhZ2VPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpzZXRVc2VySW5w
dXRGb3JDdXJyZW50SmF2YVNjcmlwdFByb21wdE9uUGFnZSk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6dHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFs
b2dPblBhZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGll
bnQ6OmN1cnJlbnRQcmVzZW50YXRpb25PZlBhZ2UpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6
OmFsZXJ0Rm9yUGVybWlzc2lvbik6IFVzZSBXS1BhZ2VQcm94eTo6Y29jb2FWaWV3IGluc3RlYWQg
b2YgZnJvbVdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhv
cml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0
OjpQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb246OmFib3J0SW50ZXJuYWwpOiBBZGRlZCBhIG51
bGwgY2hlY2sgc2luY2UKKyAgICAgICAgaW5pdFNlY3JldFdlYlZpZXcgaXMgbm8gbG9uZ2VyIGd1
YXJhbnRlZWQgdG8gYWxsb2NhdGUgbV9zZWNyZXRXZWJWaWV3IGluIHRoZSBjYXNlCisgICAgICAg
IHdoZXJlIHRoZSBXS1dlYlZpZXcgaXMgbmlsLgorICAgICAgICAoV2ViS2l0OjpQb3BVcFNPQXV0
aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRlSW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6UG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjppbml0U2VjcmV0V2ViVmlldyk6IFVz
ZSBXS1BhZ2VQcm94eTo6Y29jb2FWaWV3CisgICAgICAgIGluc3RlYWQgb2YgZnJvbVdlYlBhZ2VQ
cm94eSBhbmQgYWRkZWQgYSBudWxsIGNoZWNrLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xp
Y3kpOiBVc2UgV0tQYWdlUHJveHk6OmNvY29hVmlldworICAgICAgICBpbnN0ZWFkIG9mIGZyb21X
ZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFu
ZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6
OnBsYXRmb3JtU3RhcnRUYXNrKTogVXNlIFdLUGFnZVByb3h5Ojpjb2NvYVZpZXcKKyAgICAgICAg
aW5zdGVhZCBvZiBmcm9tV2ViUGFnZVByb3h5IGFuZCBhZGRlZCBhIG51bGwgY2hlY2suCisgICAg
ICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6cGxhdGZvcm1TdG9wVGFzayk6
IERpdHRvLiBBbHNvIGNhbGwgdGhlCisgICAgICAgIG5ldyBzdXBwcmVzc1Rhc2tTdG9wcGVkRXhj
ZXB0aW9ucyBpZiB3ZSBhcmUgdW5hYmxlIHRvIGNhbGwgdGhlIGRlbGVnYXRlIG1ldGhvZCBkdWUg
dG8KKyAgICAgICAgdGhlIFdLV2ViVmlldyBhbHJlYWR5IGJlaW5nIG5pbC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tOgorICAgICAgICAoLVtXS1BERkhVRFZpZXcg
aGl0VGVzdDpdKTogVXNlIFdLUGFnZVByb3h5Ojpjb2NvYVZpZXcgaW5zdGVhZCBvZiBmcm9tV2Vi
UGFnZVByb3h5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24p
OiBEb24ndCByYWlzZSB0aGUgInRhc2sgc3RvcHBlZCIKKyAgICAgICAgZXhjZXB0aW9uIGlmIGl0
IGhhcyBiZWVuIGV4cGxpY2l0bHkgc3VwcHJlc3NlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVVJM
U2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKTogRGl0dG8uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOiBBZGRlZCBhIHN1cHByZXNzVGFza1N0b3BwZWRF
eGNlcHRpb25zIGZ1bmN0aW9uLAorICAgICAgICB3aGljaCB3ZSB1c2UgdG8gcHJldmVudCBleGNl
cHRpb25zIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBXS1dlYlZpZXcgd2FzIGRlYWxsb2NhdGVkLgor
ICAgICAgICBTaW5jZSB3ZSB3ZXJlIG5vdCBhYmxlIHRvIGNhbGwgdGhlIGRlbGVnYXRlIG1ldGhv
ZCBpbiB0aGF0IGNhc2UsIHRoZSBjYWxsZXIgY2FuJ3QKKyAgICAgICAgYmUgZXhwZWN0ZWQgdG8g
cmVmcmFpbiBmcm9tIGNhbGxpbmcgbWV0aG9kcy4gQ2xpZW50cyBvZiBXS1dlYlZpZXcgc2hvdWxk
IGF2b2lkIHRoaXMKKyAgICAgICAgYnkgY2FsbGluZyB0aGUgc3RvcExvYWRpbmcgbWV0aG9kIGV4
cGxpY2l0bHkgYXMgcGFydCBvZiB0ZWFyZG93biByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICAg
IG9uIHRoZSB0aW1pbmcgb2YgdGhlIGRlYWxsb2NhdGlvbiBvZiB0aGUgd2ViIHZpZXcuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IFR3ZWFrZWQgZm9yd2FyZCBkZWNsYXJh
dGlvbnMgYSBiaXQsIGFuZCBhZGRlZCBvbmUgZm9yIFdLV2ViVmlldy4KKyAgICAgICAgTWFya2Vk
IHRoZSBjbGFzcyBmaW5hbCBhbmQgdXNlIGZpbmFsIGluc3RlYWQgb2Ygb3ZlcnJpZGUuIEFkZGVk
IENvY29hLW9ubHkgY29jb2FWaWV3IGFuZAorICAgICAgICBzZXRDb2NvYVZpZXcgZnVuY3Rpb24g
bWVtYmVycywgYW5kIG1fY29jb2FWaWV3IGRhdGEgbWVtYmVyLiBBbHNvIGFkZGVkIGlubGluZSBp
bXBsZW1lbnRhdGlvbnMKKyAgICAgICAgYnV0IG9ubHkgY29tcGlsZSB0aGVtIHdoZW4gaW5jbHVk
ZWQgZnJvbSBhbiBPYmplY3RpdmUtQyBzb3VyY2UgZmlsZS4KKworICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBSZW1vdmVkIG9iamNTUEkuaC4KKwogMjAyMS0wMy0x
OSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIHRo
ZSBudW1iZXIgb2YgYWxsb3dlZCBwYXJhbGxlbCBsb3cgcHJpb3JpdHkgcmVzb3VyY2UgbG9hZHMg
YmVmb3JlIHZpc3VhbCBjb21wbGV0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iamNSdW50aW1lRXh0cmFzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09i
amNSdW50aW1lRXh0cmFzLmgKaW5kZXggMjBkOGI4NTg0N2E1NTNhMzNjZGZjMTNmNTJlYzZhNGQ5
NTJmOGMyZi4uYzUzNWM5NDhiMjk3N2JjYzdlMzNlNDFmYzJlYmMyODQ3ODY0MmI2YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpjUnVudGltZUV4dHJhcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqY1J1bnRpbWVFeHRyYXMuaApAQCAtMjQzLDgg
KzI0Myw2IEBAIHR5cGVuYW1lIERlbGVnYXRlVHlwZTo6UmVzdWx0VHlwZSBwYXJzZU9iakNUeXBl
KGNvbnN0IGNoYXIqJiBwb3NpdGlvbikKIGV4dGVybiAiQyIgewogICAgIC8vIEZvcndhcmQgZGVj
bGFyZSBzb21lIE9iamVjdGl2ZS1DIHJ1bnRpbWUgaW50ZXJuYWwgbWV0aG9kcyB0aGF0IGFyZSBu
b3QgQVBJLgogICAgIGNvbnN0IGNoYXIgKl9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2Rpbmco
UHJvdG9jb2wgKiwgU0VMLCBCT09MIGlzUmVxdWlyZWRNZXRob2QsIEJPT0wgaXNJbnN0YW5jZU1l
dGhvZCk7Ci0gICAgaWQgb2JqY19pbml0V2VhayhpZCAqLCBpZCk7Ci0gICAgdm9pZCBvYmpjX2Rl
c3Ryb3lXZWFrKGlkICopOwogICAgIGJvb2wgX0Jsb2NrX2hhc19zaWduYXR1cmUodm9pZCAqKTsK
ICAgICBjb25zdCBjaGFyICogX0Jsb2NrX3NpZ25hdHVyZSh2b2lkICopOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL29iamNTUEkuaCBiL1NvdXJjZS9XVEYvd3RmL3Nw
aS9jb2NvYS9vYmpjU1BJLmgKaW5kZXggYTllODlkZTA3NmYwNWFjNjQxOTk1NTE3MmI1M2I3ZWYy
ZjQ0MjRhMS4uYWQ4NDEyYThhYjk5ZDdiOGQ3NTM5NDllYjY0OTVhYWZhYTQyZjNmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL29iamNTUEkuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9zcGkvY29jb2Evb2JqY1NQSS5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSA8b2JqYy9vYmpjLmg+CisKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQogCiAjaW5jbHVkZSA8b2JqYy9vYmpjLWludGVybmFsLmg+CkBAIC0zNiwxMiArMzgsMTAgQEAg
V1RGX0VYVEVSTl9DX0JFR0lOCiB2b2lkKiBvYmpjX2F1dG9yZWxlYXNlUG9vbFB1c2godm9pZCk7
CiB2b2lkIG9iamNfYXV0b3JlbGVhc2VQb29sUG9wKHZvaWQqIGNvbnRleHQpOwogCi0jaWZkZWYg
X19PQkpDX18KIGlkIG9iamNfbG9hZFdlYWtSZXRhaW5lZChpZCopOwogaWQgb2JqY19pbml0V2Vh
ayhpZCosIGlkKTsKIHZvaWQgb2JqY19kZXN0cm95V2VhayhpZCopOwogdm9pZCBvYmpjX2NvcHlX
ZWFrKGlkKiwgaWQqKTsKIHZvaWQgb2JqY19tb3ZlV2VhayhpZCosIGlkKik7Ci0jZW5kaWYKIAog
V1RGX0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
Q29jb2Evb2JqY1NQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2Evb2JqY1NQ
SS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGMyZWExNGJlOTc0NTU3YWZhZjEy
MTdmNDlmNWVlYjFkZjg5NDZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL29iamNTUEkuaAorKysg
L2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKLQotI2ltcG9ydCA8b2JqYy9vYmpjLWludGVybmFsLmg+Ci0KLSNlbmRpZgot
Ci1PQkpDX0VYUE9SVCBpZCBfb2JqY19yb290UmV0YWluKGlkIG9iaik7Ci1PQkpDX0VYUE9SVCBi
b29sIF9vYmpjX3Jvb3RSZWxlYXNlV2FzWmVybyhpZCBvYmopOwotT0JKQ19FWFBPUlQgYm9vbCBf
b2JqY19yb290VHJ5UmV0YWluKGlkIG9iaik7Ci1PQkpDX0VYUE9SVCBib29sIF9vYmpjX3Jvb3RJ
c0RlYWxsb2NhdGluZyhpZCBvYmopOwotT0JKQ19FWFBPUlQgaWQgX29iamNfcm9vdEF1dG9yZWxl
YXNlKGlkIG9iaik7Ci1PQkpDX0VYUE9SVCB1aW50cHRyX3QgX29iamNfcm9vdFJldGFpbkNvdW50
KGlkIG9iaik7Ci1PQkpDX0VYUE9SVCB2b2lkIF9vYmpjX3Jvb3REZWFsbG9jKGlkIG9iaik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0
ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRl
TWFjLm1tCmluZGV4IDNmZDM3MGEwZTBmNTc3YjlkMjU0YjI4MGM5ODhmYjVjZjU2ZmY1NTIuLjNh
NmY0YzU5MjYyY2U2ZDBlZWEyNDBjNmQyZmI3OWViMTc4NmM0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCkBAIC0x
NTUsOSArMTU1LDcgQEAgV0tOYXZpZ2F0aW9uICpXS1BhZ2VMb2FkRmlsZVJldHVybmluZ05hdmln
YXRpb24oV0tQYWdlUmVmIHBhZ2VSZWYsIFdLVVJMUmVmIGZpbGUKIAogV0tXZWJWaWV3ICpXS1Bh
Z2VHZXRXZWJWaWV3KFdLUGFnZVJlZiBwYWdlKQogewotICAgIGlmICghcGFnZSkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZnJvbVdlYlBhZ2VQcm94eSgqV2ViS2l0Ojp0b0ltcGwo
cGFnZSkpOworICAgIHJldHVybiBwYWdlID8gV2ViS2l0Ojp0b0ltcGwocGFnZSktPmNvY29hVmll
dygpLmF1dG9yZWxlYXNlKCkgOiBuaWw7CiB9CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCmluZGV4IDIzMjAy
MTA1ZGRkMTE3OTZmMjI2MzViYjUzYTllZmQzOWVmYWU4NWYuLmFiZWE4YTBlZWJiOTgzYmQ5MzQy
ZDg0ODc2MjQzYzNlNzA4N2FmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Rvd25sb2FkLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXS05TRGF0
YS5oIgogI2ltcG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0
ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNF
eHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgpAQCAtMTk2LDEwICsxOTcsOCBA
QCAtIChOU1VSTFJlcXVlc3QgKilvcmlnaW5hbFJlcXVlc3QKIAogLSAoV0tXZWJWaWV3ICopd2Vi
VmlldwogewotICAgIGF1dG8qIHBhZ2UgPSBfZG93bmxvYWQtPm9yaWdpbmF0aW5nUGFnZSgpOwot
ICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZnJvbVdlYlBh
Z2VQcm94eSgqcGFnZSk7CisgICAgYXV0byBwYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGluZ1Bh
Z2UoKTsKKyAgICByZXR1cm4gcGFnZSA/IHBhZ2UtPmNvY29hVmlldygpLmF1dG9yZWxlYXNlKCkg
OiBuaWw7CiB9CiAKIC0gKGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+KWRlbGVnYXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0KaW5kZXggZWY2
MzliMGMxOWE3OTZlNmQzNGQ0OTIzMWJlOTJhYjNiM2Y3N2UyMi4uYzhlYmVhMmZhNzBjZjYzNWU4
MjBlZGQ3MGMxZWNjYzNlNzY0MmU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQpAQCAtNjcsOSArNjcsOCBAQCAtIChXS1NlY3VyaXR5
T3JpZ2luICopc2VjdXJpdHlPcmlnaW4KIAogLSAoV0tXZWJWaWV3ICopd2ViVmlldwogewotICAg
IGlmIChXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSA9IF9mcmFtZUluZm8tPnBhZ2UoKSkKLSAg
ICAgICAgcmV0dXJuIHJldGFpblB0cihmcm9tV2ViUGFnZVByb3h5KCpwYWdlKSkuYXV0b3JlbGVh
c2UoKTsKLSAgICByZXR1cm4gbmlsOworICAgIGF1dG8gcGFnZSA9IF9mcmFtZUluZm8tPnBhZ2Uo
KTsKKyAgICByZXR1cm4gcGFnZSA/IHBhZ2UtPmNvY29hVmlldygpLmF1dG9yZWxlYXNlKCkgOiBu
aWw7CiB9CiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tCmluZGV4IDZiMzE1ZTMzNGUzOWZmZTU2NTFkYWQxOWQzYTM0ZWNkY2IzZTcwNzIu
Ljc4YzFlNWU4NWE0NDBlOTQwNTczODFjNjU0ZmI0NjQ0MTZmMTBhMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENv
bnRyb2xsZXIubW0KQEAgLTE0NSw5ICsxNDUsMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUG9z
dE1lc3NhZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6RnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mb0RhdGEsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCwgV2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpIGZpbmFsCiAgICAgewog
ICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIGF1dG8gd2ViVmlldyA9IHBh
Z2UuY29jb2FWaWV3KCk7CisgICAgICAgICAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8g
PSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwg
JnBhZ2UpKTsKICAgICAgICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVzZXJpYWxpemUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCAwKTsKLSAgICAgICAgICAgIGF1
dG8gbWVzc2FnZSA9IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJv
ZHk6Ym9keSB3ZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5m
by5nZXQoKSBuYW1lOm1fbmFtZS5nZXQoKSB3b3JsZDp3cmFwcGVyKHdvcmxkKV0pOworICAgICAg
ICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxvY10gX2lu
aXRXaXRoQm9keTpib2R5IHdlYlZpZXc6d2ViVmlldy5nZXQoKSBmcmFtZUluZm86ZnJhbWVJbmZv
LmdldCgpIG5hbWU6bV9uYW1lLmdldCgpIHdvcmxkOndyYXBwZXIod29ybGQpXSk7CiAgICAgICAg
IAogICAgICAgICAgICAgWyhpZDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiltX2hhbmRsZXIuZ2V0
KCkgdXNlckNvbnRlbnRDb250cm9sbGVyOm1fY29udHJvbGxlci5nZXQoKSBkaWRSZWNlaXZlU2Ny
aXB0TWVzc2FnZTptZXNzYWdlLmdldCgpXTsKICAgICAgICAgfQpAQCAtMTYyLDYgKzE2NSwxMiBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQobV9zdXBwb3J0c0FzeW5jUmVwbHkpOwog
CisgICAgICAgIGF1dG8gd2ViVmlldyA9IHBhZ2UuY29jb2FWaWV3KCk7CisgICAgICAgIGlmICgh
d2ViVmlldykgeworICAgICAgICAgICAgcmVwbHlIYW5kbGVyKG51bGxwdHIsICJUaGUgV0tXZWJW
aWV3IHdhcyByZWxlYXNlZCBiZWZvcmUgdGhlIG1lc3NhZ2Ugd2FzIGRlbGl2ZXJlZCJfcyk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBhdXRvIGZpbmFsaXplciA9
IFtdKEZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBjb25zdCBTdHJp
bmcmKT4mIGZ1bmN0aW9uKSB7CiAgICAgICAgICAgICBmdW5jdGlvbihudWxscHRyLCAiV0tXZWJW
aWV3IEFQSSBjbGllbnQgZGlkIG5vdCByZXNwb25kIHRvIHRoaXMgcG9zdE1lc3NhZ2UiX3MpOwog
ICAgICAgICB9OwpAQCAtMTcwLDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9
IHdyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCAm
cGFnZSkpOwogICAgICAgICAgICAgaWQgYm9keSA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpkZXNlcmlhbGl6ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUsIDApOwotICAgICAgICAgICAgYXV0
byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxvY10gX2luaXRXaXRoQm9k
eTpib2R5IHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBmcmFtZUluZm86ZnJhbWVJbmZv
LmdldCgpIG5hbWU6bV9uYW1lLmdldCgpIHdvcmxkOndyYXBwZXIod29ybGQpXSk7CisgICAgICAg
ICAgICBhdXRvIG1lc3NhZ2UgPSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5p
dFdpdGhCb2R5OmJvZHkgd2ViVmlldzp3ZWJWaWV3LmdldCgpIGZyYW1lSW5mbzpmcmFtZUluZm8u
Z2V0KCkgbmFtZTptX25hbWUuZ2V0KCkgd29ybGQ6d3JhcHBlcih3b3JsZCldKTsKIAogICAgICAg
ICAgICAgWyhpZDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aFJlcGx5PiltX2hhbmRsZXIuZ2V0
KCkgdXNlckNvbnRlbnRDb250cm9sbGVyOm1fY29udHJvbGxlci5nZXQoKSBkaWRSZWNlaXZlU2Ny
aXB0TWVzc2FnZTptZXNzYWdlLmdldCgpIHJlcGx5SGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNTdHJp
bmcgKmVycm9yTWVzc2FnZSkgewogICAgICAgICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4
IGQwNDg2YzMzNmIzYzNlMDhkZjJlMzU2ZmI5MThhMjA5MTA5MDhiMTcuLmMyZTUyMjAwMjUyNDdh
MGRjZmExMDk4MzE1NTZhNjQ1OWJmMGJiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTk3LDE3ICsxOTcsNiBAQCBzdGF0aWMgY29u
c3QgQk9PTCBkZWZhdWx0RmFzdENsaWNraW5nRW5hYmxlZCA9IE5POwogc3RhdGljIGNvbnN0IHVp
bnQzMl90IGZpcnN0U0RLVmVyc2lvbldpdGhMaW5rUHJldmlld0VuYWJsZWRCeURlZmF1bHQgPSAw
eEEwMDAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXN0YXRpYyBIYXNoTWFw
PFdlYktpdDo6V2ViUGFnZVByb3h5KiwgX191bnNhZmVfdW5yZXRhaW5lZCBXS1dlYlZpZXcgKj4m
IHBhZ2VUb1ZpZXdNYXAoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFdl
YktpdDo6V2ViUGFnZVByb3h5KiwgX191bnNhZmVfdW5yZXRhaW5lZCBXS1dlYlZpZXcgKj4+IG1h
cDsKLSAgICByZXR1cm4gbWFwOwotfQotCi1XS1dlYlZpZXcqIGZyb21XZWJQYWdlUHJveHkoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UpCi17Ci0gICAgcmV0dXJuIHBhZ2VUb1ZpZXdNYXAoKS5n
ZXQoJnBhZ2UpOwotfQotCiBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvckZyb21FeGNlcHRpb25E
ZXRhaWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmIGRldGFpbHMpCiB7CiAgICAg
YXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
XSk7CkBAIC00NDAsNyArNDI5LDcgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0
aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogICAgIGZvciAoYXV0
byYgcGFpciA6IHBhZ2VDb25maWd1cmF0aW9uLT51cmxTY2hlbWVIYW5kbGVycygpKQogICAgICAg
ICBfcGFnZS0+c2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZShXZWJLaXQ6OldlYlVSTFNjaGVt
ZUhhbmRsZXJDb2NvYTo6Y3JlYXRlKHN0YXRpY19jYXN0PFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlckNvY29hJj4ocGFpci52YWx1ZS5nZXQoKSkuYXBpSGFuZGxlcigpKSwgcGFpci5rZXkpOwog
Ci0gICAgcGFnZVRvVmlld01hcCgpLmFkZChfcGFnZS5nZXQoKSwgc2VsZik7CisgICAgX3BhZ2Ut
PnNldENvY29hVmlldyhzZWxmKTsKIAogICAgIFtXZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25P
dmVybGF5IGluc3RhbGxGb3JXZWJWaWV3SWZOZWVkZWQ6c2VsZiBraW5kOkAiV0tXZWJWaWV3IiBk
ZXByZWNhdGVkOk5PXTsKIApAQCAtNDQ5LDcgKzQzOCw3IEBAIC0gKHZvaWQpX2luaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24K
ICAgICBfdGltZU9mUmVxdWVzdEZvclZpc2libGVDb250ZW50UmVjdFVwZGF0ZSA9IHRpbWVOb3c7
CiAgICAgX3RpbWVPZkxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgPSB0aW1lTm93OwogICAg
IF90aW1lT2ZGaXJzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0ID0g
dGltZU5vdzsKLSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorI2VuZGlmCiB9CiAKIC0g
KHZvaWQpX3NldHVwUGFnZUNvbmZpZ3VyYXRpb246KFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYpcGFnZUNvbmZpZ3VyYXRpb24KQEAgLTY0Myw5ICs2MzIsNiBAQCAtICh2b2lkKWRlYWxsb2MK
ICAgICBDRk5vdGlmaWNhdGlvbkNlbnRlclJlbW92ZU9ic2VydmVyKENGTm90aWZpY2F0aW9uQ2Vu
dGVyR2V0RGFyd2luTm90aWZ5Q2VudGVyKCksIChfX2JyaWRnZSBjb25zdCB2b2lkICopKHNlbGYp
LCAoQ0ZTdHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmtHU0V2ZW50SGFy
ZHdhcmVLZXlib2FyZEF2YWlsYWJpbGl0eUNoYW5nZWROb3RpZmljYXRpb25dLCBudWxscHRyKTsK
ICNlbmRpZgogCi0gICAgaWYgKF9wYWdlKQotICAgICAgICBwYWdlVG9WaWV3TWFwKCkucmVtb3Zl
KF9wYWdlLmdldCgpKTsKLQogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRl
eCA4ODUyZmVlM2JhMTZlMzlhNGI2YTE3NWM4YTM4YWMxZjUyMmY0ZGUwLi40MWE3MjZjZWNiMTk4
MzVlNzJkMjk3YWM4MDBjZjFkMDlhNWQzNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtMjgzLDcgKzI4Myw2
IEBAIGNsYXNzIFZpZXdHZXN0dXJlQ29udHJvbGxlcjsKIAogQGVuZAogCi1XS1dlYlZpZXcqIGZy
b21XZWJQYWdlUHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKIFJldGFpblB0cjxOU0Vycm9y
PiBuc0Vycm9yRnJvbUV4Y2VwdGlvbkRldGFpbHMoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscyYpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Lm1tCmluZGV4IDkxM2Y1M2E1NDExODk0YzI5ZWJmZTBkN2YwN2ZiN2I2MDIwN2FmMDguLjBiMzI5
MDA4NzlmNzNiOTc3NmYxYmZiYjZhZWM3M2MwNTUzZjdhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KQEAgLTg0LDkgKzg0LDggQEAg
LSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogCiAtIChXS1dlYlZpZXcgKilvcmlnaW5hdGluZ1dl
YlZpZXcKIHsKLSAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5fZG93
bmxvYWQtPm9yaWdpbmF0aW5nUGFnZSgpKQotICAgICAgICByZXR1cm4gcmV0YWluUHRyKGZyb21X
ZWJQYWdlUHJveHkoKm9yaWdpbmF0aW5nUGFnZSkpLmF1dG9yZWxlYXNlKCk7Ci0gICAgcmV0dXJu
IG5pbDsKKyAgICBhdXRvIHBhZ2UgPSBfZG93bmxvYWQtPl9kb3dubG9hZC0+b3JpZ2luYXRpbmdQ
YWdlKCk7CisgICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5jb2NvYVZpZXcoKS5hdXRvcmVsZWFzZSgp
IDogbmlsOwogfQogCiAtKE5TQXJyYXk8TlNVUkwgKj4gKilyZWRpcmVjdENoYWluCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGcmFtZVRyZWVOb2RlLm1t
CmluZGV4IDE2MGMxYWQxY2EyMDQ3OWE1MGE0MjlmN2EyNTMzNzlkYzQ0NDVkMWMuLjg0Y2M3Y2Ex
Y2Q1MGY5MWFkZDQxZGE3ZGU2NDkzMDkxNGY1NTgwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGcmFtZVRyZWVOb2RlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGcmFtZVRyZWVOb2RlLm1tCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbXBvcnQgIldLU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAi
X1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVUcmVlTm9kZUludGVy
bmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CkBAIC02MSw3ICs2
Miw3IEBAIC0gKFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdpbgogCiAtIChXS1dlYlZp
ZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHJldGFpblB0cihmcm9tV2ViUGFnZVByb3h5KF9u
b2RlLT5wYWdlKCkpKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfbm9kZS0+cGFnZSgpLmNv
Y29hVmlldygpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TQXJyYXk8X1dLRnJhbWVUcmVlTm9k
ZSAqPiAqKWNoaWxkRnJhbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3Rvci5tbQppbmRleCBmODcxYjlhMmM3OGRiZTQzYjZkMjQ4NzNiNDU0ZWRm
MGJjMjk2M2YzLi4yYzFiYTdjODUzOGMwY2NhYmEzZDgxMDA4MDBlMTEyYjkxMDlkNWM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0K
QEAgLTY2LDkgKzY2LDggQEAgLSAodm9pZClzZXREZWxlZ2F0ZTooaWQ8X1dLSW5zcGVjdG9yRGVs
ZWdhdGU+KWRlbGVnYXRlCiAKIC0gKFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICBpZiAoYXV0
byogcGFnZSA9IF9pbnNwZWN0b3ItPmluc3BlY3RlZFBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIGZy
b21XZWJQYWdlUHJveHkoKnBhZ2UpOwotICAgIHJldHVybiBuaWw7CisgICAgYXV0byBwYWdlID0g
X2luc3BlY3Rvci0+aW5zcGVjdGVkUGFnZSgpOworICAgIHJldHVybiBwYWdlID8gcGFnZS0+Y29j
b2FWaWV3KCkuYXV0b3JlbGVhc2UoKSA6IG5pbDsKIH0KIAogLSAoQk9PTClpc0Nvbm5lY3RlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
clRlc3RpbmcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yVGVzdGluZy5tbQppbmRleCA3OWFiZmVjYzdiMWUxZTVlMTE1ZGI3YzdmODVkODQxZmQxZDAw
MzRkLi45MGQ5MDAxMjQyNjU3MmU2YTc5ZGQ4YTM2NmVlMjAxMjQ0YmJjN2ZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVzdGluZy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVz
dGluZy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQg
IldLV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQg
Il9XS0luc3BlY3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JQcml2YXRlRm9y
VGVzdGluZy5oIgogCkBAIC00MSw5ICs0Miw4IEBAIEBpbXBsZW1lbnRhdGlvbiBfV0tJbnNwZWN0
b3IgKFdLVGVzdGluZykKIAogLSAoV0tXZWJWaWV3ICopaW5zcGVjdG9yV2ViVmlldwogewotICAg
IGlmIChhdXRvKiBwYWdlID0gX2luc3BlY3Rvci0+aW5zcGVjdG9yUGFnZSgpKQotICAgICAgICBy
ZXR1cm4gZnJvbVdlYlBhZ2VQcm94eSgqcGFnZSk7Ci0gICAgcmV0dXJuIG5pbDsKKyAgICBhdXRv
IHBhZ2UgPSBfaW5zcGVjdG9yLT5pbnNwZWN0b3JQYWdlKCk7CisgICAgcmV0dXJuIHBhZ2UgPyBw
YWdlLT5jb2NvYVZpZXcoKS5hdXRvcmVsZWFzZSgpIDogbmlsOwogfQogCiAtICh2b2lkKV9vcGVu
VVJMRXh0ZXJuYWxseUZvclRlc3Rpbmc6KE5TVVJMICopdXJsIHVzZUZyb250ZW5kQVBJOihCT09M
KXVzZUZyb250ZW5kQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tCmluZGV4IDExODU4OTM5OTAzMTliZGY0Yzlm
OGFiOTg2ZjBmNzkwMDI5ZGM3ZTkuLmVjODlhY2VlYzcwYTVkYTYwNjc0NTkxMmU2ZWJmMjE1YjZm
M2E1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRp
b25TZXNzaW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1
dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tCkBAIC04Myw2OCArODMsNjggQEAgdm9pZCBBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudDo6cmVxdWVzdE5ld1BhZ2VXaXRoT3B0aW9ucyhXZWJBdXRvbWF0aW9u
U2Vzc2lvbiYgc2UKIAogdm9pZCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6cmVxdWVzdFN3aXRj
aFRvUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYgc2Vzc2lvbiwgV2ViUGFnZVByb3h5JiBwYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RTd2l0Y2hUb1dlYlZpZXcpCi0gICAgICAgIFtt
X2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHJlcXVl
c3RTd2l0Y2hUb1dlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBjb21wbGV0aW9uSGFuZGxl
cjptYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLmdldCgpXTsKKyAgICBp
ZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsgd2ViVmlldyAmJiBtX2RlbGVnYXRl
TWV0aG9kcy5yZXF1ZXN0U3dpdGNoVG9XZWJWaWV3KQorICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQo
KSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSByZXF1ZXN0U3dpdGNoVG9XZWJW
aWV3OndlYlZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKS5nZXQoKV07CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCiB2b2lkIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpyZXF1ZXN0SGlk
ZVdpbmRvd09mUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYgc2Vzc2lvbiwgV2ViUGFnZVByb3h5
JiBwYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RIaWRlV2luZG93T2ZXZWJWaWV3KQot
ICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNz
aW9uKSByZXF1ZXN0SGlkZVdpbmRvd09mV2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGNv
bXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSku
Z2V0KCldOworICAgIGlmIChhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmlldygpOyB3ZWJWaWV3
ICYmIG1fZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RIaWRlV2luZG93T2ZXZWJWaWV3KQorICAgICAg
ICBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSBy
ZXF1ZXN0SGlkZVdpbmRvd09mV2ViVmlldzp3ZWJWaWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Om1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkuZ2V0KCldOwogICAgIGVs
c2UKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBBdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudDo6cmVxdWVzdFJlc3RvcmVXaW5kb3dPZlBhZ2UoV2ViQXV0b21hdGlvblNlc3Np
b24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1
ZXN0UmVzdG9yZVdpbmRvd09mV2ViVmlldykKLSAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1
dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgcmVxdWVzdFJlc3RvcmVXaW5kb3dPZldl
YlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQ
dHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLmdldCgpXTsKKyAgICBpZiAoYXV0byB3ZWJW
aWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsgd2ViVmlldyAmJiBtX2RlbGVnYXRlTWV0aG9kcy5yZXF1
ZXN0UmVzdG9yZVdpbmRvd09mV2ViVmlldykKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1
dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgcmVxdWVzdFJlc3RvcmVXaW5kb3dPZldl
YlZpZXc6d2ViVmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpLmdldCgpXTsKICAgICBlbHNlCiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnJlcXVlc3RN
YXhpbWl6ZVdpbmRvd09mUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYgc2Vzc2lvbiwgV2ViUGFn
ZVByb3h5JiBwYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RNYXhpbWl6ZVdpbmRvd09m
V2ViVmlldykKLSAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndy
YXBwZXIoc2Vzc2lvbikgcmVxdWVzdE1heGltaXplV2luZG93T2ZXZWJWaWV3OmZyb21XZWJQYWdl
UHJveHkocGFnZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKS5nZXQoKV07CisgICAgaWYgKGF1dG8gd2ViVmlldyA9IHBhZ2UuY29jb2FW
aWV3KCk7IHdlYlZpZXcgJiYgbV9kZWxlZ2F0ZU1ldGhvZHMucmVxdWVzdE1heGltaXplV2luZG93
T2ZXZWJWaWV3KQorICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Npb246
d3JhcHBlcihzZXNzaW9uKSByZXF1ZXN0TWF4aW1pemVXaW5kb3dPZldlYlZpZXc6d2ViVmlldy5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpLmdldCgpXTsKICAgICBlbHNlCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9
CiAKIGJvb2wgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OmlzU2hvd2luZ0phdmFTY3JpcHREaWFs
b2dPblBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYgcGFn
ZSkKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuaXNTaG93aW5nSmF2YVNjcmlwdERpYWxv
Z0ZvcldlYlZpZXcpCi0gICAgICAgIHJldHVybiBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlv
blNlc3Npb246d3JhcHBlcihzZXNzaW9uKSBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nRm9yV2Vi
Vmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpXTsKKyAgICBpZiAoYXV0byB3ZWJWaWV3ID0gcGFn
ZS5jb2NvYVZpZXcoKTsgd2ViVmlldyAmJiBtX2RlbGVnYXRlTWV0aG9kcy5pc1Nob3dpbmdKYXZh
U2NyaXB0RGlhbG9nRm9yV2ViVmlldykKKyAgICAgICAgcmV0dXJuIFttX2RlbGVnYXRlLmdldCgp
IF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIGlzU2hvd2luZ0phdmFTY3JpcHRE
aWFsb2dGb3JXZWJWaWV3OndlYlZpZXcuZ2V0KCldOwogICAgIAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAogdm9pZCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6ZGlzbWlzc0N1cnJlbnRKYXZhU2Ny
aXB0RGlhbG9nT25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJv
eHkmIHBhZ2UpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRpc21pc3NDdXJyZW50SmF2
YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXcpCi0gICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRv
bWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIGRpc21pc3NDdXJyZW50SmF2YVNjcmlwdERp
YWxvZ0ZvcldlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKV07CisgICAgaWYgKGF1dG8gd2Vi
VmlldyA9IHBhZ2UuY29jb2FWaWV3KCk7IHdlYlZpZXcgJiYgbV9kZWxlZ2F0ZU1ldGhvZHMuZGlz
bWlzc0N1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldykKKyAgICAgICAgW21fZGVsZWdh
dGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgZGlzbWlzc0N1cnJl
bnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldzp3ZWJWaWV3LmdldCgpXTsKIH0KIAogdm9pZCBB
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6YWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dPblBh
Z2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsK
LSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dG
b3JXZWJWaWV3KQotICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Npb246
d3JhcHBlcihzZXNzaW9uKSBhY2NlcHRDdXJyZW50SmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXc6
ZnJvbVdlYlBhZ2VQcm94eShwYWdlKV07CisgICAgaWYgKGF1dG8gd2ViVmlldyA9IHBhZ2UuY29j
b2FWaWV3KCk7IHdlYlZpZXcgJiYgbV9kZWxlZ2F0ZU1ldGhvZHMuYWNjZXB0Q3VycmVudEphdmFT
Y3JpcHREaWFsb2dGb3JXZWJWaWV3KQorICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21h
dGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSBhY2NlcHRDdXJyZW50SmF2YVNjcmlwdERpYWxv
Z0ZvcldlYlZpZXc6d2ViVmlldy5nZXQoKV07CiB9CiAKIFN0cmluZyBBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudDo6bWVzc2FnZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21h
dGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICBpZiAobV9k
ZWxlZ2F0ZU1ldGhvZHMubWVzc2FnZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3
KQotICAgICAgICByZXR1cm4gW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndy
YXBwZXIoc2Vzc2lvbikgbWVzc2FnZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3
OmZyb21XZWJQYWdlUHJveHkocGFnZSldOworICAgIGlmIChhdXRvIHdlYlZpZXcgPSBwYWdlLmNv
Y29hVmlldygpOyB3ZWJWaWV3ICYmIG1fZGVsZWdhdGVNZXRob2RzLm1lc3NhZ2VPZkN1cnJlbnRK
YXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldykKKyAgICAgICAgcmV0dXJuIFttX2RlbGVnYXRlLmdl
dCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIG1lc3NhZ2VPZkN1cnJlbnRK
YXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldzp3ZWJWaWV3LmdldCgpXTsKIAogICAgIHJldHVybiBT
dHJpbmcoKTsKIH0KIAogdm9pZCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6c2V0VXNlcklucHV0
Rm9yQ3VycmVudEphdmFTY3JpcHRQcm9tcHRPblBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNl
c3Npb24sIFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBp
ZiAobV9kZWxlZ2F0ZU1ldGhvZHMuc2V0VXNlcklucHV0Rm9yQ3VycmVudEphdmFTY3JpcHRQcm9t
cHRGb3JXZWJWaWV3KQotICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Np
b246d3JhcHBlcihzZXNzaW9uKSBzZXRVc2VySW5wdXQ6dmFsdWUgZm9yQ3VycmVudEphdmFTY3Jp
cHREaWFsb2dGb3JXZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSldOworICAgIGlmIChhdXRv
IHdlYlZpZXcgPSBwYWdlLmNvY29hVmlldygpOyB3ZWJWaWV3ICYmIG1fZGVsZWdhdGVNZXRob2Rz
LnNldFVzZXJJbnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0Rm9yV2ViVmlldykKKyAgICAg
ICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikg
c2V0VXNlcklucHV0OnZhbHVlIGZvckN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldzp3
ZWJWaWV3LmdldCgpXTsKIH0KIAogc3RhdGljIE9wdGlvbmFsPEFQSTo6QXV0b21hdGlvblNlc3Np
b25DbGllbnQ6OkphdmFTY3JpcHREaWFsb2dUeXBlPiB0b0ltcGwoX1dLQXV0b21hdGlvblNlc3Np
b25KYXZhU2NyaXB0RGlhbG9nVHlwZSB0eXBlKQpAQCAtMTczLDE2ICsxNzMsMTYgQEAgc3RhdGlj
IEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlv
biB0b0ltcGwoX1dLQXV0b20KIAogT3B0aW9uYWw8QVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU+IEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Ojp0eXBlT2ZD
dXJyZW50SmF2YVNjcmlwdERpYWxvZ09uUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYgc2Vzc2lv
biwgV2ViUGFnZVByb3h5JiBwYWdlKQogewotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy50eXBl
T2ZDdXJyZW50SmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXcpCi0gICAgICAgIHJldHVybiB0b0lt
cGwoW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikg
dHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3OmZyb21XZWJQYWdlUHJveHko
cGFnZSldKTsKKyAgICBpZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsgd2ViVmll
dyAmJiBtX2RlbGVnYXRlTWV0aG9kcy50eXBlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxvZ0Zvcldl
YlZpZXcpCisgICAgICAgIHJldHVybiB0b0ltcGwoW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRp
b25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgdHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dG
b3JXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKIAogICAgIHJldHVybiBBUEk6OkF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50OjpKYXZhU2NyaXB0RGlhbG9nVHlwZTo6UHJvbXB0OwogfQogCiBBUEk6OkF1
dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpCcm93c2luZ0NvbnRleHRQcmVzZW50YXRpb24gQXV0b21h
dGlvblNlc3Npb25DbGllbnQ6OmN1cnJlbnRQcmVzZW50YXRpb25PZlBhZ2UoV2ViQXV0b21hdGlv
blNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICBpZiAobV9kZWxl
Z2F0ZU1ldGhvZHMuY3VycmVudFByZXNlbnRhdGlvbkZvcldlYlZpZXcpCi0gICAgICAgIHJldHVy
biB0b0ltcGwoW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vz
c2lvbikgY3VycmVudFByZXNlbnRhdGlvbkZvcldlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdl
KV0pOworICAgIGlmIChhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmlldygpOyB3ZWJWaWV3ICYm
IG1fZGVsZWdhdGVNZXRob2RzLmN1cnJlbnRQcmVzZW50YXRpb25Gb3JXZWJWaWV3KQorICAgICAg
ICByZXR1cm4gdG9JbXBsKFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFw
cGVyKHNlc3Npb24pIGN1cnJlbnRQcmVzZW50YXRpb25Gb3JXZWJWaWV3OndlYlZpZXcuZ2V0KCld
KTsKIAogICAgIHJldHVybiBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpCcm93c2luZ0Nv
bnRleHRQcmVzZW50YXRpb246OldpbmRvdzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQppbmRleCA1NjY3
NWQwNzQ3OWE5YzE5YTgzZjlkNWViZDY5MTBiMTcyMzM5M2U4Li4xNDQ1Y2ViNGUxMzQzMWViMjNj
MzNmODJhZjk2ZGVhMjJhYTg3MjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCkBAIC0xODUsNyArMTg1
LDcgQEAgdm9pZCBhbGVydEZvclBlcm1pc3Npb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNZWRpYVBl
cm1pc3Npb25SZWFzb24gcmVhc29uLCBjb25zdAogICAgIH0KICNlbmRpZgogCi0gICAgYXV0byAq
d2ViVmlldyA9IGZyb21XZWJQYWdlUHJveHkocGFnZSk7CisgICAgYXV0byB3ZWJWaWV3ID0gcGFn
ZS5jb2NvYVZpZXcoKTsKICAgICBpZiAoIXdlYlZpZXcpIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBh
bGVydEZvclBlcm1pc3Npb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNZWRpYVBlcm1pc3Npb25SZWFz
b24gcmVhc29uLCBjb25zdAogICAgIGJ1dHRvbi5rZXlFcXVpdmFsZW50ID0gQCIiOwogICAgIGJ1
dHRvbiA9IFthbGVydCBhZGRCdXR0b25XaXRoVGl0bGU6ZG9Ob3RBbGxvd0J1dHRvblN0cmluZ107
CiAgICAgYnV0dG9uLmtleUVxdWl2YWxlbnQgPSBAIlxFIjsKLSAgICBbYWxlcnQgYmVnaW5TaGVl
dE1vZGFsRm9yV2luZG93OndlYlZpZXcud2luZG93IGNvbXBsZXRpb25IYW5kbGVyOltjb21wbGV0
aW9uQmxvY2tdKE5TTW9kYWxSZXNwb25zZSByZXR1cm5Db2RlKSB7CisgICAgW2FsZXJ0IGJlZ2lu
U2hlZXRNb2RhbEZvcldpbmRvdzpbd2ViVmlldyB3aW5kb3ddIGNvbXBsZXRpb25IYW5kbGVyOltj
b21wbGV0aW9uQmxvY2tdKE5TTW9kYWxSZXNwb25zZSByZXR1cm5Db2RlKSB7CiAgICAgICAgIGF1
dG8gc2hvdWxkQWxsb3cgPSByZXR1cm5Db2RlID09IE5TQWxlcnRGaXJzdEJ1dHRvblJldHVybjsK
ICAgICAgICAgY29tcGxldGlvbkJsb2NrKHNob3VsZEFsbG93KTsKICAgICB9XTsKQEAgLTIyNSw3
ICsyMjUsNyBAQCB2b2lkIGFsZXJ0Rm9yUGVybWlzc2lvbihXZWJQYWdlUHJveHkmIHBhZ2UsIE1l
ZGlhUGVybWlzc2lvblJlYXNvbiByZWFzb24sIGNvbnN0CiAgICAgW2FsZXJ0IGFkZEFjdGlvbjpk
b05vdEFsbG93QWN0aW9uXTsKICAgICBbYWxlcnQgYWRkQWN0aW9uOmFsbG93QWN0aW9uXTsKIAot
ICAgIFtbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xsZXJGb3JGdWxsU2NyZWVuUHJlc2Vu
dGF0aW9uRnJvbVZpZXc6d2ViVmlld10gcHJlc2VudFZpZXdDb250cm9sbGVyOmFsZXJ0IGFuaW1h
dGVkOllFUyBjb21wbGV0aW9uOm5pbF07CisgICAgW1tVSVZpZXdDb250cm9sbGVyIF92aWV3Q29u
dHJvbGxlckZvckZ1bGxTY3JlZW5QcmVzZW50YXRpb25Gcm9tVmlldzp3ZWJWaWV3LmdldCgpXSBw
cmVzZW50Vmlld0NvbnRyb2xsZXI6YWxlcnQgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsK
ICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
T0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9u
U2Vzc2lvbi5tbQppbmRleCAwZjE4MDM4ZGU5ODllNjlhODQzMmM4NWI3MWI2YzA0ZTkzMTMwMmIz
Li40OTE3YzVhMWNlNjFjYTMyYTJhNDU5YzMxZGUyY2Y0MTUyMzFmMmNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhv
cml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NP
QXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTEyOSw2ICsx
MjksMTEgQEAgdm9pZCBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb246OmFib3J0SW50ZXJuYWwo
KQogICAgIH0KIAogICAgIGluaXRTZWNyZXRXZWJWaWV3KCk7CisgICAgaWYgKCFtX3NlY3JldFdl
YlZpZXcpIHsKKyAgICAgICAgbV9uZXdQYWdlQ2FsbGJhY2sobnVsbHB0cik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBtX25ld1BhZ2VDYWxsYmFjayhtX3NlY3JldFdlYlZpZXctPl9w
YWdlLmdldCgpKTsKICAgICBbbV9zZWNyZXRXZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDogQCJ3
aW5kb3cuY2xvc2UoKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KQEAgLTE0MSw2ICsxNDYs
MTEgQEAgdm9pZCBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRlSW50ZXJuYWwo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb24KICAgICB9CiAKICAgICBpbml0U2VjcmV0V2Vi
VmlldygpOworICAgIGlmICghbV9zZWNyZXRXZWJWaWV3KSB7CisgICAgICAgIGZhbGxCYWNrVG9X
ZWJQYXRoSW50ZXJuYWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fbmV3UGFn
ZUNhbGxiYWNrKG1fc2VjcmV0V2ViVmlldy0+X3BhZ2UuZ2V0KCkpOwogICAgIFttX3NlY3JldFdl
YlZpZXcgbG9hZERhdGE6ZGF0YSBNSU1FVHlwZTpAInRleHQvaHRtbCIgY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lOkAiVVRGLTgiIGJhc2VVUkw6cmVzcG9uc2UudXJsKCldOwogfQpAQCAtMTYwLDkgKzE3
MCwxMSBAQCB2b2lkIFBvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y2xvc2UoV0tXZWJWaWV3
ICp3ZWJWaWV3KQogdm9pZCBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb246OmluaXRTZWNyZXRX
ZWJWaWV3KCkKIHsKICAgICBBU1NFUlQocGFnZSgpKTsKLSAgICBhdXRvIGluaXRpYXRvcldlYlZp
ZXcgPSBmcm9tV2ViUGFnZVByb3h5KCpwYWdlKCkpOwotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW2luaXRpYXRvcldlYlZpZXcuY29uZmlndXJhdGlvbiBjb3B5XSk7Ci0gICAgW2Nv
bmZpZ3VyYXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3OmluaXRpYXRvcldlYlZpZXddOworICAgIGF1
dG8gaW5pdGlhdG9yV2ViVmlldyA9IHBhZ2UoKS0+Y29jb2FWaWV3KCk7CisgICAgaWYgKCFpbml0
aWF0b3JXZWJWaWV3KQorICAgICAgICByZXR1cm47CisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW2luaXRpYXRvcldlYlZpZXcgY29uZmlndXJhdGlvbl0gY29weV0pOworICAgIFtj
b25maWd1cmF0aW9uIF9zZXRSZWxhdGVkV2ViVmlldzppbml0aWF0b3JXZWJWaWV3LmdldCgpXTsK
ICAgICBtX3NlY3JldFdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAK
ICAgICBtX3NlY3JldERlbGVnYXRlID0gYWRvcHROUyhbW1dLU09TZWNyZXREZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhTZXNzaW9uOnRoaXNdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXph
dGlvblNlc3Npb24ubW0KaW5kZXggYzA0MzhiZGRjMWZkMDMwODNhNDJlOTM4NjE5YjQ5Y2U2ODVl
YTU4ZC4uZGUwNDEzY2VjY2RmYjlhNTJmMDU4MmRiZWM3NzJjNGU0M2VhNjBlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9y
aXphdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTE4Miw3ICsxODIsNyBA
QCB2b2lkIFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbnRpbnVlU3RhcnRBZnRlckRlY2lkZVBv
bGljeShjb25zdCBTT0F1dGhvcml6YXRpbwogICAgIFttX3NvQXV0aG9yaXphdGlvbiBzZXRBdXRo
b3JpemF0aW9uT3B0aW9uczphdXRob3JpemF0aW9uT3B0aW9uc107CiAKICNpZiBQTEFURk9STShJ
T1MpCi0gICAgaWYgKCFbZnJvbVdlYlBhZ2VQcm94eSgqbV9wYWdlKS5VSURlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZvcldlYlZp
ZXc6KV0pCisgICAgaWYgKCFbW21fcGFnZS0+Y29jb2FWaWV3KCkgVUlEZWxlZ2F0ZV0gcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyRm9yV2ViVmll
dzopXSkKICAgICAgICAgW21fc29BdXRob3JpemF0aW9uIHNldEVuYWJsZUVtYmVkZGVkQXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOk5PXTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0KaW5k
ZXggMzA4Y2RkZTE1YjRlZDU5ZTZkZDg3YmVkYmE5YzE3YjBjMmY5NTc0OC4uODg0OWFkOTJkM2I2
ZTViZmFiYzk2NDExNTIwMWJhYjE0OGQ0MDgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbQpAQCAtMzUs
NyArMzUsNiBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXJDb2Nv
YT4gV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpjcmVhdGUoaWQgPFdLVVJMU2NoZW1lSGFuZGxl
cj4gYXBpSGFuZGxlcikKIHsKQEAgLTUyLDcgKzUxLDggQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5k
bGVyQ29jb2E6OnBsYXRmb3JtU3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViVVJMU2No
ZW0KICAgICBhdXRvIHJlc3VsdCA9IG1fYXBpVGFza3MuYWRkKHRhc2suaWRlbnRpZmllcigpLCBB
UEk6OlVSTFNjaGVtZVRhc2s6OmNyZWF0ZSh0YXNrKSk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05l
d0VudHJ5KTsKIAotICAgIFttX2FwaUhhbmRsZXIuZ2V0KCkgd2ViVmlldzpmcm9tV2ViUGFnZVBy
b3h5KHBhZ2UpIHN0YXJ0VVJMU2NoZW1lVGFzazp3cmFwcGVyKHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuZ2V0KCkpXTsKKyAgICBpZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKSkKKyAg
ICAgICAgW21fYXBpSGFuZGxlci5nZXQoKSB3ZWJWaWV3OndlYlZpZXcuZ2V0KCkgc3RhcnRVUkxT
Y2hlbWVUYXNrOndyYXBwZXIocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSldOwogfQogCiB2
b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6cGxhdGZvcm1TdG9wVGFzayhXZWJQYWdlUHJv
eHkmIHBhZ2UsIFdlYlVSTFNjaGVtZVRhc2smIHRhc2spCkBAIC02MSw3ICs2MSwxMCBAQCB2b2lk
IFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6cGxhdGZvcm1TdG9wVGFzayhXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYlVSTFNjaGVtZQogICAgIGlmIChpdGVyYXRvciA9PSBtX2FwaVRhc2tzLmVuZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbbV9hcGlIYW5kbGVyLmdldCgpIHdlYlZpZXc6ZnJv
bVdlYlBhZ2VQcm94eShwYWdlKSBzdG9wVVJMU2NoZW1lVGFzazp3cmFwcGVyKGl0ZXJhdG9yLT52
YWx1ZS5nZXQoKSldOworICAgIGlmIChhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmlldygpKQor
ICAgICAgICBbbV9hcGlIYW5kbGVyLmdldCgpIHdlYlZpZXc6d2ViVmlldy5nZXQoKSBzdG9wVVJM
U2NoZW1lVGFzazp3cmFwcGVyKGl0ZXJhdG9yLT52YWx1ZS5nZXQoKSldOworICAgIGVsc2UKKyAg
ICAgICAgdGFzay5zdXBwcmVzc1Rhc2tTdG9wcGVkRXhjZXB0aW9ucygpOwogCiAgICAgbV9hcGlU
YXNrcy5yZW1vdmUoaXRlcmF0b3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9X
S1BERkhVRFZpZXcubW0KaW5kZXggZjBmMWY1NDYxZTliMzRlZDc4ZWM0NDUyZmY4MzAxYTM3MjQ3
ZDNlMi4uYTU1MWEyYzNmNDllMmM2N2E3Nzk0YTIzN2Q0ZTdhMDE4Yjk4MWU5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tCkBAIC0xNjMsMTEgKzE2Myw4
IEBAIC0gKHZvaWQpX3NldFZpc2libGU6KGJvb2wpaXNWaXNpYmxlCiAKIC0gKE5TVmlldyAqKWhp
dFRlc3Q6KE5TUG9pbnQpcG9pbnQKIHsKLSAgICBpZiAoX3BhZ2UpCi0gICAgICAgIHJldHVybiBm
cm9tV2ViUGFnZVByb3h5KCpfcGFnZSk7Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gc2VsZjsKKyAgICBBU1NFUlQoX3BhZ2UpOworICAgIHJldHVybiBfcGFnZSA/IF9w
YWdlLT5jb2NvYVZpZXcoKS5hdXRvcmVsZWFzZSgpIDogc2VsZjsKIH0KIAogLSAodm9pZCltb3Vz
ZU1vdmVkOihOU0V2ZW50ICopZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMTQ3NzljNzUzZDlmNjQzN2I5ZDkxMDJkYmRiMTQ1ZWZlMGFkYjY1NS4uZmYwMjQ2
OWMxM2VhZjZkMDZiNjNlNWY0YTEwNWU5ZGYzNTlkZDlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzOCwxMSArMTM4LDYgQEAKICNpbmNsdWRlICJFbmRvd21l
bnRTdGF0ZVRyYWNrZXIuaCIKICNlbmRpZgogCi1PQkpDX0NMQVNTIE5TTWVudTsKLU9CSkNfQ0xB
U1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwotT0JKQ19DTEFTUyBOU1ZpZXc7Ci1PQkpDX0NMQVNTIF9X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwotCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICNpbmNs
dWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjZW5kaWYKQEAgLTE1NCw2ICsxNDksNyBAQCBP
QkpDX0NMQVNTIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogI2lmIFBMQVRGT1JNKENPQ09BKQog
I2luY2x1ZGUgIkR5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUuaCIKICNpbmNsdWRlICJSZW1vdGVM
YXllclRyZWVOb2RlLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtPYmpDUHRyLmg+CiAjZW5kaWYKIAog
I2lmIEhBVkUoVE9VQ0hfQkFSKQpAQCAtMjE5LDEwICsyMTUsMTkgQEAgY2xhc3MgRGVjb2RlcjsK
IGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KKwor
I2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOworT0JKQ19DTEFT
UyBOU01lbnU7CitPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKK09CSkNfQ0xBU1MgTlNW
aWV3OwogT0JKQ19DTEFTUyBXS1FMVGh1bWJuYWlsTG9hZE9wZXJhdGlvbjsKK09CSkNfQ0xBU1Mg
V0tXZWJWaWV3OworT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKKyNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwog
Y2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ3Vyc29yOwpAQCAtMjk0LDYgKzI5OSw3IEBA
IGVudW0gY2xhc3MgRGF0YU93bmVyVHlwZSA6IHVpbnQ4X3Q7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
PiBjbGFzcyBSZWN0RWRnZXM7CiB1c2luZyBGbG9hdEJveEV4dGVudCA9IFJlY3RFZGdlczxmbG9h
dD47CisKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTMxMyw3ICszMTksNyBAQCB0eXBlZGVm
IEhXTkQgUGxhdGZvcm1WaWV3V2lkZ2V0OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewot
c3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOworCiBjbGFzcyBBdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvclByb3h5OwogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKIGNsYXNz
IEdhbWVwYWREYXRhOwpAQCAtMzU5LDcgKzM2NSw3IEBAIGNsYXNzIFdlYldoZWVsRXZlbnQ7CiBj
bGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAot
c3RydWN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50czsKK3N0cnVjdCBBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YTsKIHN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIHN0cnVjdCBEYXRhRGV0ZWN0
aW9uUmVzdWx0Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQ7CkBAIC0zODAsMTMgKzM4
NiwxNCBAQCBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOwogc3RydWN0IFByaW50SW5mbzsK
IHN0cnVjdCBQREZDb250ZXh0TWVudTsKIHN0cnVjdCBSZXNvdXJjZUxvYWRJbmZvOworc3RydWN0
IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOworc3RydWN0IFVzZXJNZXNzYWdlOwogc3RydWN0IFdl
YkF1dG9jb3JyZWN0aW9uRGF0YTsKK3N0cnVjdCBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHM7CiBz
dHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGE7CiBzdHJ1Y3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9y
ZTsKIHN0cnVjdCBXZWJQb3B1cEl0ZW07CiBzdHJ1Y3QgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U7
Ci1zdHJ1Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM7Ci1zdHJ1Y3QgVXNlck1lc3NhZ2U7CiAK
IGVudW0gY2xhc3MgTmVnb3RpYXRlZExlZ2FjeVRMUyA6IGJvb2w7CiBlbnVtIGNsYXNzIFByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBib29sOwpAQCAtNDE0LDcgKzQyMSw3IEBAIGNsYXNz
IFdlYkRhdGVUaW1lUGlja2VyOwogCiB1c2luZyBTcGVsbERvY3VtZW50VGFnID0gaW50NjRfdDsK
IAotY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6UGFnZT4KK2NsYXNzIFdlYlBhZ2VQcm94eSBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCiAgICAgLCBwdWJsaWMgV2ViQ29sb3JQaWNrZXI6OkNsaWVudAogI2VuZGlmCkBAIC0x
MzU4LDcgKzEzNjUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFdlYlBvcHVwTWVudVBy
b3h5OjpDbGllbnQKLSAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KiBjdXJyZW50bHlQcm9jZXNzZWRN
b3VzZURvd25FdmVudCgpIG92ZXJyaWRlOworICAgIE5hdGl2ZVdlYk1vdXNlRXZlbnQqIGN1cnJl
bnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50KCkgZmluYWw7CiAKICAgICB2b2lkIHNldFN1cHBy
ZXNzVmlzaWJpbGl0eVVwZGF0ZXMoYm9vbCBmbGFnKTsKICAgICBib29sIHN1cHByZXNzVmlzaWJp
bGl0eVVwZGF0ZXMoKSB7IHJldHVybiBtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXM7IH0KQEAg
LTE2NDQsOCArMTY1MSw4IEBAIHB1YmxpYzoKICNpZiBIQVZFKFFVSUNLTE9PS19USFVNQk5BSUxJ
TkcpCiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50SWNvbihjb25zdCBTdHJpbmcmLCBjb25zdCBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYpOwogICAgIHZvaWQgcmVxdWVzdFRodW1ibmFpbFdpdGhQ
YXRoKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgcmVxdWVzdFRodW1i
bmFpbFdpdGhGaWxlV3JhcHBlcihOU0ZpbGVXcmFwcGVyKiwgY29uc3QgU3RyaW5nJik7Ci0gICAg
dm9pZCByZXF1ZXN0VGh1bWJuYWlsV2l0aE9wZXJhdGlvbihXS1FMVGh1bWJuYWlsTG9hZE9wZXJh
dGlvbiopOworICAgIHZvaWQgcmVxdWVzdFRodW1ibmFpbFdpdGhGaWxlV3JhcHBlcihOU0ZpbGVX
cmFwcGVyICosIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgcmVxdWVzdFRodW1ibmFpbFdpdGhP
cGVyYXRpb24oV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24gKik7CiAjZW5kaWYKICAgICBlbnVt
IGNsYXNzIFNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzIDogYm9vbCB7IE5vLCBZZXMg
fTsKICAgICBTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyB3aWxsVXBkYXRlQXR0YWNo
bWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50Jik7CkBAIC0xNzM2LDggKzE3NDMs
OCBAQCBwdWJsaWM6CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIC8vIEltcGxl
bWVudGVkIGluIGdlbmVyYXRlZCBXZWJQYWdlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCi0gICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKLSAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CisgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAgIHZv
aWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3Vy
cmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3Qg
ZXhwZWN0ZWRVc2FnZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7
CiAKQEAgLTE4MDYsOCArMTgxMywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBncmFudEFjY2Vzc1Rv
Q3VycmVudFBhc3RlYm9hcmREYXRhKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyNpZiBQTEFURk9STShNQUMpCiAgICAg
TlNNZW51ICpwbGF0Zm9ybUFjdGl2ZUNvbnRleHRNZW51KCkgY29uc3Q7CisjZW5kaWYKKworI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIHZvaWQgcGxhdGZvcm1EaWRTZWxlY3RJdGVtRnJv
bUFjdGl2ZUNvbnRleHRNZW51KGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKICNlbmRp
ZgogCkBAIC0xODc5LDExICsxODg5LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9p
ZCBhcHBCb3VuZE5hdmlnYXRpb25EYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmKT4mJik7CiAgICAgdm9pZCBjbGVhckFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSNlbmRpZgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgTlNEaWN0aW9uYXJ5ICpjb250ZW50c09mVXNlckludGVy
ZmFjZUl0ZW0oTlNTdHJpbmcgKnVzZXJJbnRlcmZhY2VJdGVtKTsKLSNlbmRpZiAvLyBQTEFURk9S
TShDT0NPQSkKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IGNvY29hVmlldygpOworICAgIHZv
aWQgc2V0Q29jb2FWaWV3KFdLV2ViVmlldyAqKTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIFdl
YlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JiYpOwpAQCAtMTkxMywxNSArMTkyNCwxNSBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0VXNlckFnZW50KFN0cmluZyYmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgot
ICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0
PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBvdmVycmlkZTsKLSAgICBJUEM6OkNv
bm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJ
UEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CisgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBXZWJQ
b3B1cE1lbnVQcm94eTo6Q2xpZW50Ci0gICAgdm9pZCB2YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUo
V2ViUG9wdXBNZW51UHJveHkqLCBpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2V0VGV4dEZyb21JdGVtRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5Kiwg
aW50MzJfdCBpbmRleCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2YWx1ZUNoYW5nZWRGb3JQb3B1cE1l
bnUoV2ViUG9wdXBNZW51UHJveHkqLCBpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgpIGZpbmFsOwor
ICAgIHZvaWQgc2V0VGV4dEZyb21JdGVtRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5Kiwg
aW50MzJfdCBpbmRleCkgZmluYWw7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgZmFpbGVk
VG9TaG93UG9wdXBNZW51KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmYWlsZWRUb1Nob3dQb3B1cE1l
bnUoKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKQEAgLTIwODcs
OCArMjA5OCw4IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAg
ICB2b2lkIHNob3dDb2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9y
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgVmVjdG9yPFdlYkNvcmU6OkNvbG9yPiYmKTsKLSAg
ICB2b2lkIGRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRFbmRDb2xvclBpY2tlcigpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2hvb3Nl
Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZEVuZENvbG9y
UGlja2VyKCkgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQpA
QCAtMjM4OSwxMyArMjQwMCwxMyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1BF
RUNIX1NZTlRIRVNJUykKLSAgICB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZEZpbmlz
aFNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRQYXVzZVNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZXN1bWVTcGVha2lu
ZyhXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBib3VuZGFyeUV2ZW50T2NjdXJy
ZWQoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCBXZWJDb3JlOjpT
cGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSBvdmVycmlkZTsKLSAgICB2b2lkIHZv
aWNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU3RhcnRTcGVha2luZyhXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpIGZpbmFsOworICAgIHZvaWQg
ZGlkRmluaXNoU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlc3VtZVNwZWFr
aW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgZmluYWw7Cisg
ICAgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UmKSBmaW5hbDsKKyAgICB2b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJlZChX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIFdlYkNvcmU6OlNwZWVj
aEJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpIGZpbmFsOworICAgIHZvaWQgdm9pY2VzRGlk
Q2hhbmdlKCkgZmluYWw7CiAKICAgICBzdHJ1Y3QgU3BlZWNoU3ludGhlc2lzRGF0YTsKICAgICBT
cGVlY2hTeW50aGVzaXNEYXRhJiBzcGVlY2hTeW50aGVzaXNEYXRhKCk7CkBAIC0yNDc0LDYgKzI0
ODUsMTAgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJJbnNwZWN0b3JQcm94eT4gbV9pbnNw
ZWN0b3I7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+
IG1fY29jb2FWaWV3OworI2VuZGlmCisKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk+IG1fZnVsbFNjcmVlbk1h
bmFnZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6RnVsbHNjcmVlbkNsaWVudD4gbV9mdWxs
c2NyZWVuQ2xpZW50OwpAQCAtMjk0NSw0ICsyOTYwLDE4IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07
CiAKKyNpZmRlZiBfX09CSkNfXworCitpbmxpbmUgUmV0YWluUHRyPFdLV2ViVmlldz4gV2ViUGFn
ZVByb3h5Ojpjb2NvYVZpZXcoKQoreworICAgIHJldHVybiBtX2NvY29hVmlldy5nZXQoKTsKK30K
KworaW5saW5lIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb2NvYVZpZXcoV0tXZWJWaWV3ICp2aWV3
KQoreworICAgIG1fY29jb2FWaWV3ID0gdmlldzsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNw
cAppbmRleCAxZTdjMTExYzcxMjc0MDAxNDA1NGFiNTcyZjBkZTYyODZmZTBlZmFhLi44ZWVjYzkz
Mzk0NjM1ZjA0ZDM3MWYxZjcyNWUxMTMzMGQ0MjA2MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNjUsNyArNjUsNyBAQCBhdXRvIFdlYlVS
TFNjaGVtZVRhc2s6OmRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9ucwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAo
bV9zdG9wcGVkKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6VGFza0FscmVhZHlTdG9w
cGVkOworICAgICAgICByZXR1cm4gbV9zaG91bGRTdXBwcmVzc1Rhc2tTdG9wcGVkRXhjZXB0aW9u
cyA/IEV4Y2VwdGlvblR5cGU6OlRhc2tBbHJlYWR5U3RvcHBlZCA6IEV4Y2VwdGlvblR5cGU6Ok5v
bmU7CiAgICAgCiAgICAgaWYgKG1fY29tcGxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
VHlwZTo6Q29tcGxldGVBbHJlYWR5Q2FsbGVkOwpAQCAtOTQsNyArOTQsNyBAQCBhdXRvIFdlYlVS
TFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkgLT4gRQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAo
bV9zdG9wcGVkKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6VGFza0FscmVhZHlTdG9w
cGVkOworICAgICAgICByZXR1cm4gbV9zaG91bGRTdXBwcmVzc1Rhc2tTdG9wcGVkRXhjZXB0aW9u
cyA/IEV4Y2VwdGlvblR5cGU6OlRhc2tBbHJlYWR5U3RvcHBlZCA6IEV4Y2VwdGlvblR5cGU6Ok5v
bmU7CiAKICAgICBpZiAobV9jb21wbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBl
OjpDb21wbGV0ZUFscmVhZHlDYWxsZWQ7CkBAIC0xMTgsNyArMTE4LDcgQEAgYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4g
RXhjZXB0aW9uVHkKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKG1f
c3RvcHBlZCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OlRhc2tBbHJlYWR5U3RvcHBl
ZDsKKyAgICAgICAgcmV0dXJuIG1fc2hvdWxkU3VwcHJlc3NUYXNrU3RvcHBlZEV4Y2VwdGlvbnMg
PyBFeGNlcHRpb25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQgOiBFeGNlcHRpb25UeXBlOjpOb25l
OwogCiAgICAgaWYgKG1fY29tcGxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6
Q29tcGxldGVBbHJlYWR5Q2FsbGVkOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIGF1dG8gV2ViVVJMU2No
ZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2Vw
dGlvblR5cGUKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKG1fc3Rv
cHBlZCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OlRhc2tBbHJlYWR5U3RvcHBlZDsK
KyAgICAgICAgcmV0dXJuIG1fc2hvdWxkU3VwcHJlc3NUYXNrU3RvcHBlZEV4Y2VwdGlvbnMgPyBF
eGNlcHRpb25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQgOiBFeGNlcHRpb25UeXBlOjpOb25lOwog
CiAgICAgaWYgKG1fY29tcGxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Q29t
cGxldGVBbHJlYWR5Q2FsbGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5oCmluZGV4IDgyNWNkMDI2ODhhMjY4MjE5NDFmZjdhNDE4ZjRkZjVhOTc1YmExN2MuLjRi
MDdiYTFhMGRiMTViNDcxZWM3YjEwMmM0NDViZmM3NzZhYWY4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgog
ICAgIHZvaWQgc3RvcCgpOwogICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpOwogCisgICAgdm9pZCBz
dXBwcmVzc1Rhc2tTdG9wcGVkRXhjZXB0aW9ucygpIHsgbV9zaG91bGRTdXBwcmVzc1Rhc2tTdG9w
cGVkRXhjZXB0aW9ucyA9IHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBXZWJVUkxTY2hlbWVUYXNr
KFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJiwgU3luY0xv
YWRDb21wbGV0aW9uSGFuZGxlciYmKTsKIApAQCAtMTAzLDcgKzEwNSw4IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX3Jlc3BvbnNlU2VudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RhdGFTZW50IHsg
ZmFsc2UgfTsKICAgICBib29sIG1fY29tcGxldGVkIHsgZmFsc2UgfTsKLSAgICAKKyAgICBib29s
IG1fc2hvdWxkU3VwcHJlc3NUYXNrU3RvcHBlZEV4Y2VwdGlvbnMgeyBmYWxzZSB9OworCiAgICAg
U3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNlOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3M2JhYmQwMTRlYmRiNmZhZDUyMGQ1MmYz
MGRmYzg0NzBjYWQ1YzZhLi4xYWI5MzkwMTQ3OTZlNzhjMjQ0ODk2NTFlYzVkM2U0MzdkZDZmYzFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg3Nyw3ICs4NzcsNiBAQAogCQkzN0E3MDlBNzFFM0VBMEZEMDBDQTU5NjkgLyogV0tEYXRh
RGV0ZWN0b3JUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzdBNzA5QTYxRTNFQTBGRDAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTM3QTcwOUE5
MUUzRUE0MEMwMENBNTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QTcwOUE4MUUzRUE0MEMw
MENBNTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwuaCAqLzsgfTsKIAkJMzdCMEQx
ODQxQzFFNDk5QTAwRDQwRDY0IC8qIFBsdWdpblByb2Nlc3NTaGltLmR5bGliIGluIENvcHkgU2hp
bXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDMjVGQjAxMkE0OEVBNzAw
QkQyNjcxIC8qIFBsdWdpblByb2Nlc3NTaGltLmR5bGliICovOyB9OwotCQkzN0I0N0UyRDFENjRE
Qjc2MDA1RjRFRkYgLyogb2JqY1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzdCNDdFMkMxRDY0REI3NjAwNUY0RUZGIC8qIG9iamNTUEkuaCAqLzsg
fTsKIAkJMzdCNTA0NTIxOUVFRjMxMzAwQ0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0I1MDQ1MTE5RUVGMzEz
MDBDRTJDRjggLyogV0tFcnJvclByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0JFQzRERDE5NDhGQzZBMDA4QjQyODYgLyogV2ViQ29y
ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUExQzc5QTEwMEU3RkM1MDA3OERFQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87IH07
CiAJCTM3QkVDNEUxMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0JF
QzRERjE5NDkxNDg2MDA4QjQyODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oICov
OyB9OwpAQCAtMzYxMCw3ICszNjA5LDYgQEAKIAkJMzdBNjRFNTYxOEYzOEY0NjAwRUIzMEYxIC8q
IF9XS0Zvcm1JbnB1dFNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLRm9ybUlucHV0U2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0E3
MDlBNjFFM0VBMEZEMDBDQTU5NjkgLyogV0tEYXRhRGV0ZWN0b3JUeXBlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RhdGFEZXRlY3RvclR5cGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTM3QTcwOUE4MUUzRUE0MEMwMENBNTk2OSAvKiBXS0RhdGFEZXRl
Y3RvclR5cGVzSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tE
YXRhRGV0ZWN0b3JUeXBlc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTM3QjQ3RTJDMUQ2NERCNzYwMDVGNEVGRiAvKiBvYmpjU1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IG9iamNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzdCNTA0NTExOUVFRjMxMzAwQ0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRXJyb3JQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTM3QkVDNERFMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzdCRUM0REYxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxldGlvbkhhbmRs
ZXJDYWxsQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzc3MCw3ICs3
NzY4LDYgQEAKIAkJCQk1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyogTG9jYWxBdXRoZW50aWNh
dGlvblNQSS5oICovLAogCQkJCTU3QjgyNjQwMjMwNEVCM0UwMEI3MkVCMCAvKiBOZWFyRmllbGRT
UEkuaCAqLywKIAkJCQkzNzU0RDU0NDFCM0EyOUZEMDAzQTRDN0YgLyogTlNJbnZvY2F0aW9uU1BJ
LmggKi8sCi0JCQkJMzdCNDdFMkMxRDY0REI3NjAwNUY0RUZGIC8qIG9iamNTUEkuaCAqLywKIAkJ
CQkwRTk3RDc0QzIwMEU4RkYzMDBCRjY2NDMgLyogU2FmZUJyb3dzaW5nU1BJLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IENvY29hOwpAQCAtMTE5MzQsNyArMTE5MzEsNiBAQAogCQkJCTFDMjE4NDAy
MjIzMzg3MjgwMEJBQzcwMCAvKiBOU0F0dHJpYnV0ZWRTdHJpbmdQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzNzU0RDU0NTFCM0EyOUZEMDAzQTRDN0YgLyogTlNJbnZvY2F0aW9uU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzhBQ0ExMzE2NjcwRDg5MDA0QzE5NDEgLyogT2JqQ09iamVj
dEdyYXBoLmggaW4gSGVhZGVycyAqLywKLQkJCQkzN0I0N0UyRDFENjREQjc2MDA1RjRFRkYgLyog
b2JqY1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NGNDdGRkIxNzI3NUM1NzAwOEFDQjkxIC8q
IFBhZ2VCYW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNkVEQUE2MTExMjcxQzYwMEU3Njc4
QiAvKiBQYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU0NjE4QkJFMDQ0MDAw
RkNGQzkgLyogUGFnZUNsaWVudEltcGxJT1MuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY1OTY3YzFjMWU3ZDE2OGVi
NTVkZDQ2OTUyZTY2NDJhYjhmOTZjOTcuLmY0ZGRhMGY5MDJhZDM4ZGI1MTk2MjNhZmNiMzU1Njc2
NWYzYThiMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wMy0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNYWtlIGl0IHBvc3NpYmxlIHRvIHJlbGVhc2UgYSBX
S1dlYlZpZXcgb24gYSBub24tbWFpbiB0aHJlYWQgd2l0aG91dCBhIGNyYXNoIGR1ZSB0byBXS1Nj
cmlwdE1lc3NhZ2UgcmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyMzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFu
ZGxlci0xLm1tOgorICAgICAgICBVc2Ugc3RvcExvYWRpbmcgaW5zdGVhZCBvZiBXS1dlYlZpZXcg
ZGVhbGxvY2F0aW9uIHRvIHRyaWdnZXIgYSBjYWxsIHRvIHN0b3BVUkxTY2hlbWVUYXNrLAorICAg
ICAgICBzaW5jZSBzdWNoIGRlbGVnYXRlIG1ldGhvZHMgd2lsbCBpbnRlbnRpb25hbGx5IG5vIGxv
bmdlciBiZSBkZWxpdmVyZWQgaWYgdHJpZ2dlcmVkIGJ5IGRlYWxsb2NhdGlvbi4KKwogMjAyMS0w
My0xOSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGJyb2tlbiBjb250cmlidXRvcnMuanNvbiBhZnRlciByMjc0NzIwCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRs
ZXItMS5tbQppbmRleCA5YmIwNGUyNzBmN2FlZTRkMzMxOGUxOWFhYmI3NmRmMjExYzAyYzc1Li4z
MTE0Zjg3MjU3NDIzODdkNjYxYjkyYWZmOThjNmUzZjMzZTk2ZGY4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVI
YW5kbGVyLTEubW0KQEAgLTU1OCw3ICs1NTgsNyBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIFN5
bmNYSFIpCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc3RhcnRlZFhIUik7CiAg
ICAgICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwogCi0gICAgICAgIHdlYlZpZXcgPSBuaWw7
CisgICAgICAgIFt3ZWJWaWV3IHN0b3BMb2FkaW5nXTsKICAgICB9CiAgICAgCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFN0b3ApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423796</attachid>
            <date>2021-03-19 18:37:34 -0700</date>
            <delta_ts>2021-03-22 08:45:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222336-20210319183733.patch</filename>
            <type>text/plain</type>
            <size>53745</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
M2Y0YWE4ZTI0OGU2OGE2ZWRhYzQ3YjNiY2MyODcyZmEwY2MyNjdjLi43NTc1MTQ3ZWRiMzE2OWQw
NzkwNGEyYzQ2MWYxMWUzNWYzNDBmOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wMy0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBNYWtlIGl0IHBvc3NpYmxlIHRvIHJlbGVhc2UgYSBXS1dlYlZpZXcg
b24gYSBub24tbWFpbiB0aHJlYWQgd2l0aG91dCBhIGNyYXNoIGR1ZSB0byBXS1NjcmlwdE1lc3Nh
Z2UgcmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIyMzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBBUEkvT2JqY1J1bnRpbWVFeHRyYXMuaDogUmVtb3ZlZCBkZWNsYXJhdGlvbnMgb2Ygb2JqY19p
bml0V2VhayBhbmQgb2JqY19kZXN0cm95V2Vhaywgc2luY2UKKyAgICAgICAgdGhlc2UgYXJlIGFs
cmVhZHkgaW4gPHd0Zi9zcGkvY29jb2Evb2JqY1NQSS5oPi4KKwogMjAyMS0wMy0xOSAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQnJhbmRlZFN0cnVjdHVyZSBzaG91
bGQga2VlcCBpdHMgbWVtYmVycyBhbGl2ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYTdlNjc3NTUyMWQwN2ZmOWFkOWFhMGQz
ZjI3MTFkMmE2MjA3NjBjMC4uNjI5MzMyMTZiMTUzZWFjMmYxYTIyNGZkMzk5NTc2N2EzMjQzYmM2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMy0xOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBNYWtlIGl0IHBvc3NpYmxlIHRvIHJlbGVhc2Ug
YSBXS1dlYlZpZXcgb24gYSBub24tbWFpbiB0aHJlYWQgd2l0aG91dCBhIGNyYXNoIGR1ZSB0byBX
S1NjcmlwdE1lc3NhZ2UgcmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyMzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvc3BpL2NvY29hL29iamNTUEkuaDogUmVtb3ZlZCB1bm5lY2Vzc2Fy
eSAjaWYgc28gZnVuY3Rpb25zIGFyZSBjb3JyZWN0bHkgY29tcGlsZWQgZm9yCisgICAgICAgIG5v
bi1PYmplY3RpdmUtQyBzb3VyY2UgZmlsZXMuIEFkZGVkIGluY2x1ZGUgb2YgPG9iamMvb2JqYy5o
PiBzbyB0aGF0ICJpZCIgaXMgZGVmaW5lZC4KKwogMjAyMS0wMy0xOSAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFByb3BlcnR5TmFtZSBwYXJhbWV0ZXIgdG8g
Y3VzdG9tIHNldHRlcnMgdG8gYWxsb3cgc2hhcmVkIGltcGxlbWVudGF0aW9ucyB0byBkbyBsYXRl
IG5hbWUgbG9va3VwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5Zjc3OTRjOTVlYjMwZWQ2ZGU0ZDA0YjIzNDZiODI1
NDkyZDczNzMuLjU1OWZjZDZhM2M5NjZiNTMwNWY4ZmNjN2MzOWQ2YmEzNWEzNzhiNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTAyIEBACisyMDIxLTAzLTE5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIE1ha2UgaXQgcG9zc2libGUgdG8gcmVsZWFzZSBh
IFdLV2ViVmlldyBvbiBhIG5vbi1tYWluIHRocmVhZCB3aXRob3V0IGEgY3Jhc2ggZHVlIHRvIFdL
U2NyaXB0TWVzc2FnZSByYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjIzMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9vYmpjU1BJLmg6IFJlbW92ZWQgdGhpcyB1
bnVzZWQgZmlsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0
ZU1hYy5tbToKKyAgICAgICAgKFdLUGFnZUdldFdlYlZpZXcpOiBVc2UgV0tQYWdlUHJveHk6OmNv
Y29hVmlldyBpbnN0ZWFkIG9mIGZyb21XZWJQYWdlUHJveHkuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtXS0Rvd25sb2FkIHdlYlZpZXdd
KTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbToK
KyAgICAgICAgKC1bV0tGcmFtZUluZm8gd2ViVmlld10pOiBEaXR0by4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW06CisgICAgICAgIChT
Y3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlOjpkaWRQb3N0TWVzc2FnZSk6IFVzZSBXS1BhZ2VQ
cm94eTo6Y29jb2FWaWV3CisgICAgICAgIGluc3RlYWQgb2YgZnJvbVdlYlBhZ2VQcm94eSBhbmQg
YWRkIG51bGwgY2hlY2tzLgorICAgICAgICAoU2NyaXB0TWVzc2FnZUhhbmRsZXJEZWxlZ2F0ZTo6
ZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseSk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgIChwYWdlVG9WaWV3TWFwKTogRGVs
ZXRlZC4KKyAgICAgICAgKGZyb21XZWJQYWdlUHJveHkpOiBEZWxldGVkLgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKTogVXNlIFdLUGFnZVByb3h5
OjpzZXRDb2NvYVZpZXcKKyAgICAgICAgaW5zdGVhZCBvZiBhZGRpbmcgdGhlIHBhZ2UvdmlldyBw
YWlyIHRvIGEgbWFwLgorICAgICAgICAoLVtXS1dlYlZpZXcgZGVhbGxvY10pOiBSZW1vdmVkIGNv
ZGUgdGhhdCByZW1vdmVkIHRoZSBwYWdlL3ZpZXcgcGFpciBmcm9tIHRoZSBtYXAuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmg6IFJlbW92ZWQgZnJv
bVdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWQubW06CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nV2ViVmlld10pOiBVc2Ug
V0tQYWdlUHJveHk6OmNvY29hVmlldyBpbnN0ZWFkIG9mIGZyb21XZWJQYWdlUHJveHkuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGcmFtZVRyZWVOb2RlLm1tOgorICAgICAgICAo
LVtfV0tGcmFtZVRyZWVOb2RlIHdlYlZpZXddKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciB3ZWJW
aWV3XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
VGVzdGluZy5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIGluc3BlY3RvcldlYlZpZXddKTog
RGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGll
bnQubW06CisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpyZXF1ZXN0
U3dpdGNoVG9QYWdlKTogVXNlIFdLUGFnZVByb3h5Ojpjb2NvYVZpZXcKKyAgICAgICAgaW5zdGVh
ZCBvZiBmcm9tV2ViUGFnZVByb3h5IGFuZCBhZGQgYSBudWxsIGNoZWNrLgorICAgICAgICAoV2Vi
S2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6cmVxdWVzdEhpZGVXaW5kb3dPZlBhZ2UpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnJlcXVlc3RS
ZXN0b3JlV2luZG93T2ZQYWdlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50OjpyZXF1ZXN0TWF4aW1pemVXaW5kb3dPZlBhZ2UpOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OmlzU2hvd2luZ0phdmFTY3JpcHRE
aWFsb2dPblBhZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ6OmRpc21pc3NDdXJyZW50SmF2YVNjcmlwdERpYWxvZ09uUGFnZSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6YWNjZXB0Q3VycmVudEphdmFT
Y3JpcHREaWFsb2dPblBhZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNl
c3Npb25DbGllbnQ6Om1lc3NhZ2VPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpzZXRVc2VySW5w
dXRGb3JDdXJyZW50SmF2YVNjcmlwdFByb21wdE9uUGFnZSk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6dHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFs
b2dPblBhZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6QXV0b21hdGlvblNlc3Npb25DbGll
bnQ6OmN1cnJlbnRQcmVzZW50YXRpb25PZlBhZ2UpOiBEaXR0by4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6
OmFsZXJ0Rm9yUGVybWlzc2lvbik6IFVzZSBXS1BhZ2VQcm94eTo6Y29jb2FWaWV3IGluc3RlYWQg
b2YgZnJvbVdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhv
cml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0
OjpQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb246OmFib3J0SW50ZXJuYWwpOiBBZGRlZCBhIG51
bGwgY2hlY2sgc2luY2UKKyAgICAgICAgaW5pdFNlY3JldFdlYlZpZXcgaXMgbm8gbG9uZ2VyIGd1
YXJhbnRlZWQgdG8gYWxsb2NhdGUgbV9zZWNyZXRXZWJWaWV3IGluIHRoZSBjYXNlCisgICAgICAg
IHdoZXJlIHRoZSBXS1dlYlZpZXcgaXMgbmlsLgorICAgICAgICAoV2ViS2l0OjpQb3BVcFNPQXV0
aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRlSW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6UG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjppbml0U2VjcmV0V2ViVmlldyk6IFVz
ZSBXS1BhZ2VQcm94eTo6Y29jb2FWaWV3CisgICAgICAgIGluc3RlYWQgb2YgZnJvbVdlYlBhZ2VQ
cm94eSBhbmQgYWRkZWQgYSBudWxsIGNoZWNrLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xp
Y3kpOiBVc2UgV0tQYWdlUHJveHk6OmNvY29hVmlldworICAgICAgICBpbnN0ZWFkIG9mIGZyb21X
ZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFu
ZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6
OnBsYXRmb3JtU3RhcnRUYXNrKTogVXNlIFdLUGFnZVByb3h5Ojpjb2NvYVZpZXcKKyAgICAgICAg
aW5zdGVhZCBvZiBmcm9tV2ViUGFnZVByb3h5IGFuZCBhZGRlZCBhIG51bGwgY2hlY2suCisgICAg
ICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6cGxhdGZvcm1TdG9wVGFzayk6
IERpdHRvLiBBbHNvIGNhbGwgdGhlCisgICAgICAgIG5ldyBzdXBwcmVzc1Rhc2tTdG9wcGVkRXhj
ZXB0aW9ucyBpZiB3ZSBhcmUgdW5hYmxlIHRvIGNhbGwgdGhlIGRlbGVnYXRlIG1ldGhvZCBkdWUg
dG8KKyAgICAgICAgdGhlIFdLV2ViVmlldyBhbHJlYWR5IGJlaW5nIG5pbC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tOgorICAgICAgICAoLVtXS1BERkhVRFZpZXcg
aGl0VGVzdDpdKTogVXNlIFdLUGFnZVByb3h5Ojpjb2NvYVZpZXcgaW5zdGVhZCBvZiBmcm9tV2Vi
UGFnZVByb3h5LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24p
OiBEb24ndCByYWlzZSB0aGUgInRhc2sgc3RvcHBlZCIKKyAgICAgICAgZXhjZXB0aW9uIGlmIGl0
IGhhcyBiZWVuIGV4cGxpY2l0bHkgc3VwcHJlc3NlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVVJM
U2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKTogRGl0dG8uCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOiBBZGRlZCBhIHN1cHByZXNzVGFza1N0b3BwZWRF
eGNlcHRpb25zIGZ1bmN0aW9uLAorICAgICAgICB3aGljaCB3ZSB1c2UgdG8gcHJldmVudCBleGNl
cHRpb25zIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBXS1dlYlZpZXcgd2FzIGRlYWxsb2NhdGVkLgor
ICAgICAgICBTaW5jZSB3ZSB3ZXJlIG5vdCBhYmxlIHRvIGNhbGwgdGhlIGRlbGVnYXRlIG1ldGhv
ZCBpbiB0aGF0IGNhc2UsIHRoZSBjYWxsZXIgY2FuJ3QKKyAgICAgICAgYmUgZXhwZWN0ZWQgdG8g
cmVmcmFpbiBmcm9tIGNhbGxpbmcgbWV0aG9kcy4gRXZlbnR1YWxseSwgY2xpZW50cyBvZiBXS1dl
YlZpZXcgY291bGQgYXZvaWQgdGhpcworICAgICAgICBieSBjYWxsaW5nIHRoZSBfY2xvc2UgbWV0
aG9kIGluc3RlYWQgb2YgcmVseWluZyBmb3IgZGVhbGxvY2F0aW9uIHRvIGRvIHdlYiB2aWV3IHRl
YXJkb3duLAorICAgICAgICBidXQgd2UgbmVlZCB0byBwcm9tb3RlIHRoYXQgZnJvbSBTUEkgdG8g
QVBJLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBUd2Vha2VkIGZvcndh
cmQgZGVjbGFyYXRpb25zIGEgYml0LCBhbmQgYWRkZWQgb25lIGZvciBXS1dlYlZpZXcuCisgICAg
ICAgIE1hcmtlZCB0aGUgY2xhc3MgZmluYWwgYW5kIHVzZSBmaW5hbCBpbnN0ZWFkIG9mIG92ZXJy
aWRlLiBBZGRlZCBDb2NvYS1vbmx5IGNvY29hVmlldyBhbmQKKyAgICAgICAgc2V0Q29jb2FWaWV3
IGZ1bmN0aW9uIG1lbWJlcnMsIGFuZCBtX2NvY29hVmlldyBkYXRhIG1lbWJlci4gQWxzbyBhZGRl
ZCBpbmxpbmUgaW1wbGVtZW50YXRpb25zCisgICAgICAgIGJ1dCBvbmx5IGNvbXBpbGUgdGhlbSB3
aGVuIGluY2x1ZGVkIGZyb20gYW4gT2JqZWN0aXZlLUMgc291cmNlIGZpbGUuCisKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3ZlZCBvYmpjU1BJLmguCisK
IDIwMjEtMDMtMTkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ2Fubm90IGxvZ2luIHRvIG1pY3Jvc29mdG9ubGluZS5jb20gd2l0aG91dCBhbGxv
d2luZyBzdG9yYWdlIGFjY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9PYmpjUnVudGltZUV4dHJhcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpjUnVu
dGltZUV4dHJhcy5oCmluZGV4IDIwZDhiODU4NDdhNTUzYTMzY2RmYzEzZjUyZWM2YTRkOTUyZjhj
MmYuLmM1MzVjOTQ4YjI5NzdiY2M3ZTMzZTQxZmMyZWJjMjg0Nzg2NDJiNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqY1J1bnRpbWVFeHRyYXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL09iamNSdW50aW1lRXh0cmFzLmgKQEAgLTI0Myw4ICsyNDMs
NiBAQCB0eXBlbmFtZSBEZWxlZ2F0ZVR5cGU6OlJlc3VsdFR5cGUgcGFyc2VPYmpDVHlwZShjb25z
dCBjaGFyKiYgcG9zaXRpb24pCiBleHRlcm4gIkMiIHsKICAgICAvLyBGb3J3YXJkIGRlY2xhcmUg
c29tZSBPYmplY3RpdmUtQyBydW50aW1lIGludGVybmFsIG1ldGhvZHMgdGhhdCBhcmUgbm90IEFQ
SS4KICAgICBjb25zdCBjaGFyICpfcHJvdG9jb2xfZ2V0TWV0aG9kVHlwZUVuY29kaW5nKFByb3Rv
Y29sICosIFNFTCwgQk9PTCBpc1JlcXVpcmVkTWV0aG9kLCBCT09MIGlzSW5zdGFuY2VNZXRob2Qp
OwotICAgIGlkIG9iamNfaW5pdFdlYWsoaWQgKiwgaWQpOwotICAgIHZvaWQgb2JqY19kZXN0cm95
V2VhayhpZCAqKTsKICAgICBib29sIF9CbG9ja19oYXNfc2lnbmF0dXJlKHZvaWQgKik7CiAgICAg
Y29uc3QgY2hhciAqIF9CbG9ja19zaWduYXR1cmUodm9pZCAqKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9vYmpjU1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29j
b2Evb2JqY1NQSS5oCmluZGV4IGE5ZTg5ZGUwNzZmMDVhYzY0MTk5NTUxNzJiNTNiN2VmMmY0NDI0
YTEuLmFkODQxMmE4YWI5OWQ3YjhkNzUzOTQ5ZWI2NDk1YWFmYWE0MmYzZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9vYmpjU1BJLmgKKysrIGIvU291cmNlL1dURi93dGYv
c3BpL2NvY29hL29iamNTUEkuaApAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgPG9iamMvb2JqYy5oPgorCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAog
I2luY2x1ZGUgPG9iamMvb2JqYy1pbnRlcm5hbC5oPgpAQCAtMzYsMTIgKzM4LDEwIEBAIFdURl9F
WFRFUk5fQ19CRUdJTgogdm9pZCogb2JqY19hdXRvcmVsZWFzZVBvb2xQdXNoKHZvaWQpOwogdm9p
ZCBvYmpjX2F1dG9yZWxlYXNlUG9vbFBvcCh2b2lkKiBjb250ZXh0KTsKIAotI2lmZGVmIF9fT0JK
Q19fCiBpZCBvYmpjX2xvYWRXZWFrUmV0YWluZWQoaWQqKTsKIGlkIG9iamNfaW5pdFdlYWsoaWQq
LCBpZCk7CiB2b2lkIG9iamNfZGVzdHJveVdlYWsoaWQqKTsKIHZvaWQgb2JqY19jb3B5V2Vhayhp
ZCosIGlkKik7CiB2b2lkIG9iamNfbW92ZVdlYWsoaWQqLCBpZCopOwotI2VuZGlmCiAKIFdURl9F
WFRFUk5fQ19FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29h
L29iamNTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL29iamNTUEkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRjMmVhMTRiZTk3NDU1N2FmYWYxMjE3ZjQ5
ZjVlZWIxZGY4OTQ2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9vYmpjU1BJLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIFVTRShBUFBMRV9JTlRFUk5B
TF9TREspCi0KLSNpbXBvcnQgPG9iamMvb2JqYy1pbnRlcm5hbC5oPgotCi0jZW5kaWYKLQotT0JK
Q19FWFBPUlQgaWQgX29iamNfcm9vdFJldGFpbihpZCBvYmopOwotT0JKQ19FWFBPUlQgYm9vbCBf
b2JqY19yb290UmVsZWFzZVdhc1plcm8oaWQgb2JqKTsKLU9CSkNfRVhQT1JUIGJvb2wgX29iamNf
cm9vdFRyeVJldGFpbihpZCBvYmopOwotT0JKQ19FWFBPUlQgYm9vbCBfb2JqY19yb290SXNEZWFs
bG9jYXRpbmcoaWQgb2JqKTsKLU9CSkNfRVhQT1JUIGlkIF9vYmpjX3Jvb3RBdXRvcmVsZWFzZShp
ZCBvYmopOwotT0JKQ19FWFBPUlQgdWludHB0cl90IF9vYmpjX3Jvb3RSZXRhaW5Db3VudChpZCBv
YmopOwotT0JKQ19FWFBPUlQgdm9pZCBfb2JqY19yb290RGVhbGxvYyhpZCBvYmopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5t
bQppbmRleCAzZmQzNzBhMGUwZjU3N2I5ZDI1NGIyODBjOTg4ZmI1Y2Y1NmZmNTUyLi4zYTZmNGM1
OTI2MmNlNmQwZWVhMjQwYzZkMmZiNzllYjE3ODZjNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQpAQCAtMTU1LDkg
KzE1NSw3IEBAIFdLTmF2aWdhdGlvbiAqV0tQYWdlTG9hZEZpbGVSZXR1cm5pbmdOYXZpZ2F0aW9u
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1VSTFJlZiBmaWxlCiAKIFdLV2ViVmlldyAqV0tQYWdlR2V0
V2ViVmlldyhXS1BhZ2VSZWYgcGFnZSkKIHsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIGZyb21XZWJQYWdlUHJveHkoKldlYktpdDo6dG9JbXBsKHBhZ2Up
KTsKKyAgICByZXR1cm4gcGFnZSA/IFdlYktpdDo6dG9JbXBsKHBhZ2UpLT5jb2NvYVZpZXcoKS5h
dXRvcmVsZWFzZSgpIDogbmlsOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbQppbmRleCAyMzIwMjEwNWRk
ZDExNzk2ZjIyNjM1YmI1M2E5ZWZkMzllZmFlODVmLi5hYmVhOGEwZWViYjk4M2JkOTM0MmQ4NDg3
NjI0M2MzZTcwODdhZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tEb3dubG9hZC5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiV0tOU0RhdGEuaCIK
ICNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFz
Lmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KQEAgLTE5NiwxMCArMTk3LDggQEAgLSAo
TlNVUkxSZXF1ZXN0ICopb3JpZ2luYWxSZXF1ZXN0CiAKIC0gKFdLV2ViVmlldyAqKXdlYlZpZXcK
IHsKLSAgICBhdXRvKiBwYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKTsKLSAgICBp
ZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGZyb21XZWJQYWdlUHJv
eHkoKnBhZ2UpOworICAgIGF1dG8gcGFnZSA9IF9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdlKCk7
CisgICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5jb2NvYVZpZXcoKS5hdXRvcmVsZWFzZSgpIDogbmls
OwogfQogCiAtIChpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCmluZGV4IGVmNjM5YjBj
MTlhNzk2ZTZkMzRkNDkyMzFiZTkyYWIzYjNmNzdlMjIuLmM4ZWJlYTJmYTcwY2Y2MzVlODIwZWRk
NzBjMWVjY2MzZTc2NDJlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0ZyYW1lSW5mby5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tGcmFtZUluZm8ubW0KQEAgLTY3LDkgKzY3LDggQEAgLSAoV0tTZWN1cml0eU9yaWdp
biAqKXNlY3VyaXR5T3JpZ2luCiAKIC0gKFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICBpZiAo
V2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UgPSBfZnJhbWVJbmZvLT5wYWdlKCkpCi0gICAgICAg
IHJldHVybiByZXRhaW5QdHIoZnJvbVdlYlBhZ2VQcm94eSgqcGFnZSkpLmF1dG9yZWxlYXNlKCk7
Ci0gICAgcmV0dXJuIG5pbDsKKyAgICBhdXRvIHBhZ2UgPSBfZnJhbWVJbmZvLT5wYWdlKCk7Cisg
ICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5jb2NvYVZpZXcoKS5hdXRvcmVsZWFzZSgpIDogbmlsOwog
fQogCiAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
ci5tbQppbmRleCA2YjMxNWUzMzRlMzlmZmU1NjUxZGFkMTlkM2EzNGVjZGNiM2U3MDcyLi43OGMx
ZTVlODVhNDQwZTk0MDU3MzgxYzY1NGZiNDY0NDE2ZjEwYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9s
bGVyLm1tCkBAIC0xNDUsOSArMTQ1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFBvc3RNZXNz
YWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmJiBm
cmFtZUluZm9EYXRhLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKSBmaW5hbAogICAgIHsKICAgICAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBhdXRvIHdlYlZpZXcgPSBwYWdlLmNv
Y29hVmlldygpOworICAgICAgICAgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3Jh
cHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvRGF0YSksICZwYWdl
KSk7CiAgICAgICAgICAgICBpZCBib2R5ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
c2VyaWFsaXplKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgMCk7Ci0gICAgICAgICAgICBhdXRvIG1l
c3NhZ2UgPSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJv
ZHkgd2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGZyYW1lSW5mbzpmcmFtZUluZm8uZ2V0
KCkgbmFtZTptX25hbWUuZ2V0KCkgd29ybGQ6d3JhcHBlcih3b3JsZCldKTsKKyAgICAgICAgICAg
IGF1dG8gbWVzc2FnZSA9IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0
aEJvZHk6Ym9keSB3ZWJWaWV3OndlYlZpZXcuZ2V0KCkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQo
KSBuYW1lOm1fbmFtZS5nZXQoKSB3b3JsZDp3cmFwcGVyKHdvcmxkKV0pOwogICAgICAgICAKICAg
ICAgICAgICAgIFsoaWQ8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4pbV9oYW5kbGVyLmdldCgpIHVz
ZXJDb250ZW50Q29udHJvbGxlcjptX2NvbnRyb2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1l
c3NhZ2U6bWVzc2FnZS5nZXQoKV07CiAgICAgICAgIH0KQEAgLTE2Miw2ICsxNjUsMTIgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fc3VwcG9ydHNBc3luY1JlcGx5KTsKIAorICAg
ICAgICBhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmlldygpOworICAgICAgICBpZiAoIXdlYlZp
ZXcpIHsKKyAgICAgICAgICAgIHJlcGx5SGFuZGxlcihudWxscHRyLCAiVGhlIFdLV2ViVmlldyB3
YXMgcmVsZWFzZWQgYmVmb3JlIHRoZSBtZXNzYWdlIHdhcyBkZWxpdmVyZWQiX3MpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgYXV0byBmaW5hbGl6ZXIgPSBbXShG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgY29uc3QgU3RyaW5nJik+
JiBmdW5jdGlvbikgewogICAgICAgICAgICAgZnVuY3Rpb24obnVsbHB0ciwgIldLV2ViVmlldyBB
UEkgY2xpZW50IGRpZCBub3QgcmVzcG9uZCB0byB0aGlzIHBvc3RNZXNzYWdlIl9zKTsKICAgICAg
ICAgfTsKQEAgLTE3MCw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIEBhdXRvcmVsZWFzZXBv
b2wgewogICAgICAgICAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFw
cGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgJnBhZ2Up
KTsKICAgICAgICAgICAgIGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVz
ZXJpYWxpemUoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCAwKTsKLSAgICAgICAgICAgIGF1dG8gbWVz
c2FnZSA9IGFkb3B0TlMoW1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9k
eSB3ZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQo
KSBuYW1lOm1fbmFtZS5nZXQoKSB3b3JsZDp3cmFwcGVyKHdvcmxkKV0pOworICAgICAgICAgICAg
YXV0byBtZXNzYWdlID0gYWRvcHROUyhbW1dLU2NyaXB0TWVzc2FnZSBhbGxvY10gX2luaXRXaXRo
Qm9keTpib2R5IHdlYlZpZXc6d2ViVmlldy5nZXQoKSBmcmFtZUluZm86ZnJhbWVJbmZvLmdldCgp
IG5hbWU6bV9uYW1lLmdldCgpIHdvcmxkOndyYXBwZXIod29ybGQpXSk7CiAKICAgICAgICAgICAg
IFsoaWQ8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcldpdGhSZXBseT4pbV9oYW5kbGVyLmdldCgpIHVz
ZXJDb250ZW50Q29udHJvbGxlcjptX2NvbnRyb2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1l
c3NhZ2U6bWVzc2FnZS5nZXQoKSByZXBseUhhbmRsZXI6XihpZCByZXN1bHQsIE5TU3RyaW5nICpl
cnJvck1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBkMDQ4
NmMzMzZiM2MzZTA4ZGYyZTM1NmZiOTE4YTIwOTEwOTA4YjE3Li5jMmU1MjIwMDI1MjQ3YTBkY2Zh
MTA5ODMxNTU2YTY0NTliZjBiYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE5NywxNyArMTk3LDYgQEAgc3RhdGljIGNvbnN0IEJP
T0wgZGVmYXVsdEZhc3RDbGlja2luZ0VuYWJsZWQgPSBOTzsKIHN0YXRpYyBjb25zdCB1aW50MzJf
dCBmaXJzdFNES1ZlcnNpb25XaXRoTGlua1ByZXZpZXdFbmFibGVkQnlEZWZhdWx0ID0gMHhBMDAw
MDsKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi1zdGF0aWMgSGFzaE1hcDxXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIF9fdW5zYWZlX3VucmV0YWluZWQgV0tXZWJWaWV3ICo+JiBwYWdl
VG9WaWV3TWFwKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIF9fdW5zYWZlX3VucmV0YWluZWQgV0tXZWJWaWV3ICo+PiBtYXA7Ci0g
ICAgcmV0dXJuIG1hcDsKLX0KLQotV0tXZWJWaWV3KiBmcm9tV2ViUGFnZVByb3h5KFdlYktpdDo6
V2ViUGFnZVByb3h5JiBwYWdlKQotewotICAgIHJldHVybiBwYWdlVG9WaWV3TWFwKCkuZ2V0KCZw
YWdlKTsKLX0KLQogUmV0YWluUHRyPE5TRXJyb3I+IG5zRXJyb3JGcm9tRXhjZXB0aW9uRGV0YWls
cyhjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzKQogewogICAgIGF1dG8g
dXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwpA
QCAtNDQwLDcgKzQyOSw3IEBAIC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjoo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBwYWdlQ29uZmlndXJhdGlvbi0+dXJsU2NoZW1lSGFuZGxlcnMoKSkKICAgICAgICAgX3Bh
Z2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5k
bGVyQ29jb2E6OmNyZWF0ZShzdGF0aWNfY2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJD
b2NvYSY+KHBhaXIudmFsdWUuZ2V0KCkpLmFwaUhhbmRsZXIoKSksIHBhaXIua2V5KTsKIAotICAg
IHBhZ2VUb1ZpZXdNYXAoKS5hZGQoX3BhZ2UuZ2V0KCksIHNlbGYpOworICAgIF9wYWdlLT5zZXRD
b2NvYVZpZXcoc2VsZik7CiAKICAgICBbV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3Zlcmxh
eSBpbnN0YWxsRm9yV2ViVmlld0lmTmVlZGVkOnNlbGYga2luZDpAIldLV2ViVmlldyIgZGVwcmVj
YXRlZDpOT107CiAKQEAgLTQ0OSw3ICs0MzgsNyBAQCAtICh2b2lkKV9pbml0aWFsaXplV2l0aENv
bmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAgICAg
X3RpbWVPZlJlcXVlc3RGb3JWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgPSB0aW1lTm93OwogICAg
IF90aW1lT2ZMYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlID0gdGltZU5vdzsKICAgICBfdGlt
ZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVXaXRoUGVuZGluZ0NvbW1pdCA9IHRpbWVO
b3c7Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNlbmRpZgogfQogCiAtICh2b2lk
KV9zZXR1cFBhZ2VDb25maWd1cmF0aW9uOihSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mKXBh
Z2VDb25maWd1cmF0aW9uCkBAIC02NDMsOSArNjMyLDYgQEAgLSAodm9pZClkZWFsbG9jCiAgICAg
Q0ZOb3RpZmljYXRpb25DZW50ZXJSZW1vdmVPYnNlcnZlcihDRk5vdGlmaWNhdGlvbkNlbnRlckdl
dERhcndpbk5vdGlmeUNlbnRlcigpLCAoX19icmlkZ2UgY29uc3Qgdm9pZCAqKShzZWxmKSwgKENG
U3RyaW5nUmVmKVtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzprR1NFdmVudEhhcmR3YXJl
S2V5Ym9hcmRBdmFpbGFiaWxpdHlDaGFuZ2VkTm90aWZpY2F0aW9uXSwgbnVsbHB0cik7CiAjZW5k
aWYKIAotICAgIGlmIChfcGFnZSkKLSAgICAgICAgcGFnZVRvVmlld01hcCgpLnJlbW92ZShfcGFn
ZS5nZXQoKSk7Ci0KICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggODg1
MmZlZTNiYTE2ZTM5YTRiNmExNzVjOGEzOGFjMWY1MjJmNGRlMC4uNDFhNzI2Y2VjYjE5ODM1ZTcy
ZDI5N2FjODAwY2YxZDA5YTVkMzZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTI4Myw3ICsyODMsNiBAQCBj
bGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAKIEBlbmQKIAotV0tXZWJWaWV3KiBmcm9tV2Vi
UGFnZVByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CiBSZXRhaW5QdHI8TlNFcnJvcj4gbnNF
cnJvckZyb21FeGNlcHRpb25EZXRhaWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMm
KTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQpp
bmRleCA5MTNmNTNhNTQxMTg5NGMyOWViZmUwZDdmMDdmYjdiNjAyMDdhZjA4Li4wYjMyOTAwODc5
ZjczYjk3NzZmMWJmYmI2YWVjNzNjMDU1M2Y3YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCkBAIC04NCw5ICs4NCw4IEBAIC0gKE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3QKIAogLSAoV0tXZWJWaWV3ICopb3JpZ2luYXRpbmdXZWJWaWV3
CiB7Ci0gICAgaWYgKGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9IF9kb3dubG9hZC0+X2Rvd25sb2Fk
LT5vcmlnaW5hdGluZ1BhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHJldGFpblB0cihmcm9tV2ViUGFn
ZVByb3h5KCpvcmlnaW5hdGluZ1BhZ2UpKS5hdXRvcmVsZWFzZSgpOwotICAgIHJldHVybiBuaWw7
CisgICAgYXV0byBwYWdlID0gX2Rvd25sb2FkLT5fZG93bmxvYWQtPm9yaWdpbmF0aW5nUGFnZSgp
OworICAgIHJldHVybiBwYWdlID8gcGFnZS0+Y29jb2FWaWV3KCkuYXV0b3JlbGVhc2UoKSA6IG5p
bDsKIH0KIAogLShOU0FycmF5PE5TVVJMICo+ICopcmVkaXJlY3RDaGFpbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQppbmRl
eCAxNjBjMWFkMWNhMjA0NzlhNTBhNDI5ZjdhMjUzMzc5ZGM0NDQ1ZDFjLi44NGNjN2NhMWNkNTBm
OTFhZGQ0MWRhN2RlNjQ5MzA5MTRmNTU4MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQpAQCAtMjcsNiArMjcsNyBA
QAogCiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vi
Vmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIl9XS0Zy
YW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGVJbnRlcm5hbC5o
IgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgpAQCAtNjEsNyArNjIsNyBA
QCAtIChXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4KIAogLSAoV0tXZWJWaWV3ICop
d2ViVmlldwogewotICAgIHJldHVybiByZXRhaW5QdHIoZnJvbVdlYlBhZ2VQcm94eShfbm9kZS0+
cGFnZSgpKSkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX25vZGUtPnBhZ2UoKS5jb2NvYVZp
ZXcoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU0FycmF5PF9XS0ZyYW1lVHJlZU5vZGUgKj4g
KiljaGlsZEZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3IubW0KaW5kZXggZjg3MWI5YTJjNzhkYmU0M2I2ZDI0ODczYjQ1NGVkZjBiYzI5
NjNmMy4uMmMxYmE3Yzg1MzhjMGNjYWJhM2Q4MTAwODAwZTExMmI5MTA5ZDVjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCkBAIC02
Niw5ICs2Niw4IEBAIC0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkPF9XS0luc3BlY3RvckRlbGVnYXRl
PilkZWxlZ2F0ZQogCiAtIChXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgaWYgKGF1dG8qIHBh
Z2UgPSBfaW5zcGVjdG9yLT5pbnNwZWN0ZWRQYWdlKCkpCi0gICAgICAgIHJldHVybiBmcm9tV2Vi
UGFnZVByb3h5KCpwYWdlKTsKLSAgICByZXR1cm4gbmlsOworICAgIGF1dG8gcGFnZSA9IF9pbnNw
ZWN0b3ItPmluc3BlY3RlZFBhZ2UoKTsKKyAgICByZXR1cm4gcGFnZSA/IHBhZ2UtPmNvY29hVmll
dygpLmF1dG9yZWxlYXNlKCkgOiBuaWw7CiB9CiAKIC0gKEJPT0wpaXNDb25uZWN0ZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JUZXN0
aW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRl
c3RpbmcubW0KaW5kZXggNzlhYmZlY2M3YjFlMWU1ZTExNWRiN2M3Zjg1ZDg0MWZkMWQwMDM0ZC4u
OTBkOTAwMTI0MjY1NzJlNmE3OWRkOGEzNjZlZTIwMTI0NGJiYzdmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3RpbmcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3Rpbmcu
bW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJXS1dl
YlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJfV0tJ
bnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3Rp
bmcuaCIKIApAQCAtNDEsOSArNDIsOCBAQCBAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9yIChX
S1Rlc3RpbmcpCiAKIC0gKFdLV2ViVmlldyAqKWluc3BlY3RvcldlYlZpZXcKIHsKLSAgICBpZiAo
YXV0byogcGFnZSA9IF9pbnNwZWN0b3ItPmluc3BlY3RvclBhZ2UoKSkKLSAgICAgICAgcmV0dXJu
IGZyb21XZWJQYWdlUHJveHkoKnBhZ2UpOwotICAgIHJldHVybiBuaWw7CisgICAgYXV0byBwYWdl
ID0gX2luc3BlY3Rvci0+aW5zcGVjdG9yUGFnZSgpOworICAgIHJldHVybiBwYWdlID8gcGFnZS0+
Y29jb2FWaWV3KCkuYXV0b3JlbGVhc2UoKSA6IG5pbDsKIH0KIAogLSAodm9pZClfb3BlblVSTEV4
dGVybmFsbHlGb3JUZXN0aW5nOihOU1VSTCAqKXVybCB1c2VGcm9udGVuZEFQSTooQk9PTCl1c2VG
cm9udGVuZEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0
b21hdGlvblNlc3Npb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9B
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbQppbmRleCAxMTg1ODkzOTkwMzE5YmRmNGM5ZjhhYjk4
NmYwZjc5MDAyOWRjN2U5Li5lYzg5YWNlZWM3MGE1ZGE2MDY3NDU5MTJlNmViZjIxNWI2ZjNhNTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vz
c2lvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudC5tbQpAQCAtODMsNjggKzgzLDY4IEBAIHZvaWQgQXV0b21hdGlvblNl
c3Npb25DbGllbnQ6OnJlcXVlc3ROZXdQYWdlV2l0aE9wdGlvbnMoV2ViQXV0b21hdGlvblNlc3Np
b24mIHNlCiAKIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnJlcXVlc3RTd2l0Y2hUb1Bh
Z2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICht
X2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0U3dpdGNoVG9XZWJWaWV3KQotICAgICAgICBbbV9kZWxl
Z2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSByZXF1ZXN0U3dp
dGNoVG9XZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgY29tcGxldGlvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5nZXQoKV07CisgICAgaWYgKGF1
dG8gd2ViVmlldyA9IHBhZ2UuY29jb2FWaWV3KCk7IHdlYlZpZXcgJiYgbV9kZWxlZ2F0ZU1ldGhv
ZHMucmVxdWVzdFN3aXRjaFRvV2ViVmlldykKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1
dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgcmVxdWVzdFN3aXRjaFRvV2ViVmlldzp3
ZWJWaWV3LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSkuZ2V0KCldOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKIH0KIAogdm9pZCBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6cmVxdWVzdEhpZGVXaW5k
b3dPZlBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94eSYgcGFn
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0SGlkZVdpbmRvd09mV2ViVmlldykKLSAgICAg
ICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikg
cmVxdWVzdEhpZGVXaW5kb3dPZldlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLmdldCgp
XTsKKyAgICBpZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsgd2ViVmlldyAmJiBt
X2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0SGlkZVdpbmRvd09mV2ViVmlldykKKyAgICAgICAgW21f
ZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgcmVxdWVz
dEhpZGVXaW5kb3dPZldlYlZpZXc6d2ViVmlldy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtl
QmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpLmdldCgpXTsKICAgICBlbHNlCiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgQXV0b21hdGlvblNlc3Npb25D
bGllbnQ6OnJlcXVlc3RSZXN0b3JlV2luZG93T2ZQYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiBz
ZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMucmVxdWVzdFJl
c3RvcmVXaW5kb3dPZldlYlZpZXcpCi0gICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0
aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHJlcXVlc3RSZXN0b3JlV2luZG93T2ZXZWJWaWV3
OmZyb21XZWJQYWdlUHJveHkocGFnZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKS5nZXQoKV07CisgICAgaWYgKGF1dG8gd2ViVmlldyA9
IHBhZ2UuY29jb2FWaWV3KCk7IHdlYlZpZXcgJiYgbV9kZWxlZ2F0ZU1ldGhvZHMucmVxdWVzdFJl
c3RvcmVXaW5kb3dPZldlYlZpZXcpCisgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0
aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHJlcXVlc3RSZXN0b3JlV2luZG93T2ZXZWJWaWV3
OndlYlZpZXcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKS5nZXQoKV07CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogfQogCiB2b2lkIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpyZXF1ZXN0TWF4aW1p
emVXaW5kb3dPZlBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdlYlBhZ2VQcm94
eSYgcGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0TWF4aW1pemVXaW5kb3dPZldlYlZp
ZXcpCi0gICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVy
KHNlc3Npb24pIHJlcXVlc3RNYXhpbWl6ZVdpbmRvd09mV2ViVmlldzpmcm9tV2ViUGFnZVByb3h5
KHBhZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSkuZ2V0KCldOworICAgIGlmIChhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmlldygp
OyB3ZWJWaWV3ICYmIG1fZGVsZWdhdGVNZXRob2RzLnJlcXVlc3RNYXhpbWl6ZVdpbmRvd09mV2Vi
VmlldykKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBw
ZXIoc2Vzc2lvbikgcmVxdWVzdE1heGltaXplV2luZG93T2ZXZWJWaWV3OndlYlZpZXcuZ2V0KCkg
Y29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KS5nZXQoKV07CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiBi
b29sIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Ojppc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nT25Q
YWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7
Ci0gICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2dGb3JX
ZWJWaWV3KQotICAgICAgICByZXR1cm4gW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNz
aW9uOndyYXBwZXIoc2Vzc2lvbikgaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXc6
ZnJvbVdlYlBhZ2VQcm94eShwYWdlKV07CisgICAgaWYgKGF1dG8gd2ViVmlldyA9IHBhZ2UuY29j
b2FWaWV3KCk7IHdlYlZpZXcgJiYgbV9kZWxlZ2F0ZU1ldGhvZHMuaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZ0ZvcldlYlZpZXcpCisgICAgICAgIHJldHVybiBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0
b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9n
Rm9yV2ViVmlldzp3ZWJWaWV3LmdldCgpXTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OmRpc21pc3NDdXJyZW50SmF2YVNjcmlwdERp
YWxvZ09uUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYgc2Vzc2lvbiwgV2ViUGFnZVByb3h5JiBw
YWdlKQogewotICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kaXNtaXNzQ3VycmVudEphdmFTY3Jp
cHREaWFsb2dGb3JXZWJWaWV3KQotICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlv
blNlc3Npb246d3JhcHBlcihzZXNzaW9uKSBkaXNtaXNzQ3VycmVudEphdmFTY3JpcHREaWFsb2dG
b3JXZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSldOworICAgIGlmIChhdXRvIHdlYlZpZXcg
PSBwYWdlLmNvY29hVmlldygpOyB3ZWJWaWV3ICYmIG1fZGVsZWdhdGVNZXRob2RzLmRpc21pc3ND
dXJyZW50SmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXcpCisgICAgICAgIFttX2RlbGVnYXRlLmdl
dCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIGRpc21pc3NDdXJyZW50SmF2
YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXc6d2ViVmlldy5nZXQoKV07CiB9CiAKIHZvaWQgQXV0b21h
dGlvblNlc3Npb25DbGllbnQ6OmFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdl
YkF1dG9tYXRpb25TZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLmFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2Vi
VmlldykKLSAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndyYXBw
ZXIoc2Vzc2lvbikgYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3OmZyb21X
ZWJQYWdlUHJveHkocGFnZSldOworICAgIGlmIChhdXRvIHdlYlZpZXcgPSBwYWdlLmNvY29hVmll
dygpOyB3ZWJWaWV3ICYmIG1fZGVsZWdhdGVNZXRob2RzLmFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0
RGlhbG9nRm9yV2ViVmlldykKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25T
ZXNzaW9uOndyYXBwZXIoc2Vzc2lvbikgYWNjZXB0Q3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JX
ZWJWaWV3OndlYlZpZXcuZ2V0KCldOwogfQogCiBTdHJpbmcgQXV0b21hdGlvblNlc3Npb25DbGll
bnQ6Om1lc3NhZ2VPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYkF1dG9tYXRpb25T
ZXNzaW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLm1lc3NhZ2VPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldykKLSAg
ICAgICAgcmV0dXJuIFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVy
KHNlc3Npb24pIG1lc3NhZ2VPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldzpmcm9t
V2ViUGFnZVByb3h5KHBhZ2UpXTsKKyAgICBpZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZp
ZXcoKTsgd2ViVmlldyAmJiBtX2RlbGVnYXRlTWV0aG9kcy5tZXNzYWdlT2ZDdXJyZW50SmF2YVNj
cmlwdERpYWxvZ0ZvcldlYlZpZXcpCisgICAgICAgIHJldHVybiBbbV9kZWxlZ2F0ZS5nZXQoKSBf
YXV0b21hdGlvblNlc3Npb246d3JhcHBlcihzZXNzaW9uKSBtZXNzYWdlT2ZDdXJyZW50SmF2YVNj
cmlwdERpYWxvZ0ZvcldlYlZpZXc6d2ViVmlldy5nZXQoKV07CiAKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKIHZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6OnNldFVzZXJJbnB1dEZvckN1
cnJlbnRKYXZhU2NyaXB0UHJvbXB0T25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiBzZXNzaW9u
LCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKG1f
ZGVsZWdhdGVNZXRob2RzLnNldFVzZXJJbnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0Rm9y
V2ViVmlldykKLSAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2F1dG9tYXRpb25TZXNzaW9uOndy
YXBwZXIoc2Vzc2lvbikgc2V0VXNlcklucHV0OnZhbHVlIGZvckN1cnJlbnRKYXZhU2NyaXB0RGlh
bG9nRm9yV2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpXTsKKyAgICBpZiAoYXV0byB3ZWJW
aWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsgd2ViVmlldyAmJiBtX2RlbGVnYXRlTWV0aG9kcy5zZXRV
c2VySW5wdXRGb3JDdXJyZW50SmF2YVNjcmlwdFByb21wdEZvcldlYlZpZXcpCisgICAgICAgIFtt
X2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHNldFVz
ZXJJbnB1dDp2YWx1ZSBmb3JDdXJyZW50SmF2YVNjcmlwdERpYWxvZ0ZvcldlYlZpZXc6d2ViVmll
dy5nZXQoKV07CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50OjpKYXZhU2NyaXB0RGlhbG9nVHlwZT4gdG9JbXBsKF9XS0F1dG9tYXRpb25TZXNzaW9uSmF2
YVNjcmlwdERpYWxvZ1R5cGUgdHlwZSkKQEAgLTE3MywxNiArMTczLDE2IEBAIHN0YXRpYyBBUEk6
OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpCcm93c2luZ0NvbnRleHRQcmVzZW50YXRpb24gdG9J
bXBsKF9XS0F1dG9tCiAKIE9wdGlvbmFsPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6Okph
dmFTY3JpcHREaWFsb2dUeXBlPiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6dHlwZU9mQ3VycmVu
dEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mIHNlc3Npb24sIFdl
YlBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMudHlwZU9mQ3Vy
cmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3KQotICAgICAgICByZXR1cm4gdG9JbXBsKFtt
X2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24pIHR5cGVP
ZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2ViVmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2Up
XSk7CisgICAgaWYgKGF1dG8gd2ViVmlldyA9IHBhZ2UuY29jb2FWaWV3KCk7IHdlYlZpZXcgJiYg
bV9kZWxlZ2F0ZU1ldGhvZHMudHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dGb3JXZWJWaWV3
KQorICAgICAgICByZXR1cm4gdG9JbXBsKFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vz
c2lvbjp3cmFwcGVyKHNlc3Npb24pIHR5cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nRm9yV2Vi
Vmlldzp3ZWJWaWV3LmdldCgpXSk7CiAKICAgICByZXR1cm4gQVBJOjpBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU6OlByb21wdDsKIH0KIAogQVBJOjpBdXRvbWF0
aW9uU2Vzc2lvbkNsaWVudDo6QnJvd3NpbmdDb250ZXh0UHJlc2VudGF0aW9uIEF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50OjpjdXJyZW50UHJlc2VudGF0aW9uT2ZQYWdlKFdlYkF1dG9tYXRpb25TZXNz
aW9uJiBzZXNzaW9uLCBXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGVN
ZXRob2RzLmN1cnJlbnRQcmVzZW50YXRpb25Gb3JXZWJWaWV3KQotICAgICAgICByZXR1cm4gdG9J
bXBsKFttX2RlbGVnYXRlLmdldCgpIF9hdXRvbWF0aW9uU2Vzc2lvbjp3cmFwcGVyKHNlc3Npb24p
IGN1cnJlbnRQcmVzZW50YXRpb25Gb3JXZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSldKTsK
KyAgICBpZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKTsgd2ViVmlldyAmJiBtX2Rl
bGVnYXRlTWV0aG9kcy5jdXJyZW50UHJlc2VudGF0aW9uRm9yV2ViVmlldykKKyAgICAgICAgcmV0
dXJuIHRvSW1wbChbbV9kZWxlZ2F0ZS5nZXQoKSBfYXV0b21hdGlvblNlc3Npb246d3JhcHBlcihz
ZXNzaW9uKSBjdXJyZW50UHJlc2VudGF0aW9uRm9yV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAK
ICAgICByZXR1cm4gQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6QnJvd3NpbmdDb250ZXh0
UHJlc2VudGF0aW9uOjpXaW5kb3c7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9NZWRpYVBlcm1pc3Npb25VdGlsaXRpZXMubW0KaW5kZXggNTY2NzVkMDc0
NzlhOWMxOWE4M2Y5ZDVlYmQ2OTEwYjE3MjMzOTNlOC4uMTQ0NWNlYjRlMTM0MzFlYjIzYzMzZjgy
YWY5NmRlYTIyYWE4NzI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTWVkaWFQZXJtaXNzaW9uVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL01lZGlhUGVybWlzc2lvblV0aWxpdGllcy5tbQpAQCAtMTg1LDcgKzE4NSw3IEBA
IHZvaWQgYWxlcnRGb3JQZXJtaXNzaW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTWVkaWFQZXJtaXNz
aW9uUmVhc29uIHJlYXNvbiwgY29uc3QKICAgICB9CiAjZW5kaWYKIAotICAgIGF1dG8gKndlYlZp
ZXcgPSBmcm9tV2ViUGFnZVByb3h5KHBhZ2UpOworICAgIGF1dG8gd2ViVmlldyA9IHBhZ2UuY29j
b2FWaWV3KCk7CiAgICAgaWYgKCF3ZWJWaWV3KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgYWxlcnRG
b3JQZXJtaXNzaW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTWVkaWFQZXJtaXNzaW9uUmVhc29uIHJl
YXNvbiwgY29uc3QKICAgICBidXR0b24ua2V5RXF1aXZhbGVudCA9IEAiIjsKICAgICBidXR0b24g
PSBbYWxlcnQgYWRkQnV0dG9uV2l0aFRpdGxlOmRvTm90QWxsb3dCdXR0b25TdHJpbmddOwogICAg
IGJ1dHRvbi5rZXlFcXVpdmFsZW50ID0gQCJcRSI7Ci0gICAgW2FsZXJ0IGJlZ2luU2hlZXRNb2Rh
bEZvcldpbmRvdzp3ZWJWaWV3LndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpbY29tcGxldGlvbkJs
b2NrXShOU01vZGFsUmVzcG9uc2UgcmV0dXJuQ29kZSkgeworICAgIFthbGVydCBiZWdpblNoZWV0
TW9kYWxGb3JXaW5kb3c6W3dlYlZpZXcgd2luZG93XSBjb21wbGV0aW9uSGFuZGxlcjpbY29tcGxl
dGlvbkJsb2NrXShOU01vZGFsUmVzcG9uc2UgcmV0dXJuQ29kZSkgewogICAgICAgICBhdXRvIHNo
b3VsZEFsbG93ID0gcmV0dXJuQ29kZSA9PSBOU0FsZXJ0Rmlyc3RCdXR0b25SZXR1cm47CiAgICAg
ICAgIGNvbXBsZXRpb25CbG9jayhzaG91bGRBbGxvdyk7CiAgICAgfV07CkBAIC0yMjUsNyArMjI1
LDcgQEAgdm9pZCBhbGVydEZvclBlcm1pc3Npb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNZWRpYVBl
cm1pc3Npb25SZWFzb24gcmVhc29uLCBjb25zdAogICAgIFthbGVydCBhZGRBY3Rpb246ZG9Ob3RB
bGxvd0FjdGlvbl07CiAgICAgW2FsZXJ0IGFkZEFjdGlvbjphbGxvd0FjdGlvbl07CiAKLSAgICBb
W1VJVmlld0NvbnRyb2xsZXIgX3ZpZXdDb250cm9sbGVyRm9yRnVsbFNjcmVlblByZXNlbnRhdGlv
bkZyb21WaWV3OndlYlZpZXddIHByZXNlbnRWaWV3Q29udHJvbGxlcjphbGVydCBhbmltYXRlZDpZ
RVMgY29tcGxldGlvbjpuaWxdOworICAgIFtbVUlWaWV3Q29udHJvbGxlciBfdmlld0NvbnRyb2xs
ZXJGb3JGdWxsU2NyZWVuUHJlc2VudGF0aW9uRnJvbVZpZXc6d2ViVmlldy5nZXQoKV0gcHJlc2Vu
dFZpZXdDb250cm9sbGVyOmFsZXJ0IGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm5pbF07CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRo
b3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Np
b24ubW0KaW5kZXggMGYxODAzOGRlOTg5ZTY5YTg0MzJjODViNzFiNmMwNGU5MzEzMDJiMy4uNDkx
N2M1YTFjZTYxY2EzMmEyYTQ1OWMzMWRlMmNmNDE1MjMxZjJjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhv
cml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0xMjksNiArMTI5LDEx
IEBAIHZvaWQgUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjphYm9ydEludGVybmFsKCkKICAg
ICB9CiAKICAgICBpbml0U2VjcmV0V2ViVmlldygpOworICAgIGlmICghbV9zZWNyZXRXZWJWaWV3
KSB7CisgICAgICAgIG1fbmV3UGFnZUNhbGxiYWNrKG51bGxwdHIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgbV9uZXdQYWdlQ2FsbGJhY2sobV9zZWNyZXRXZWJWaWV3LT5fcGFnZS5n
ZXQoKSk7CiAgICAgW21fc2VjcmV0V2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6IEAid2luZG93
LmNsb3NlKCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CkBAIC0xNDEsNiArMTQ2LDExIEBA
IHZvaWQgUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0ZUludGVybmFsKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uCiAgICAgfQogCiAgICAgaW5pdFNlY3JldFdlYlZpZXco
KTsKKyAgICBpZiAoIW1fc2VjcmV0V2ViVmlldykgeworICAgICAgICBmYWxsQmFja1RvV2ViUGF0
aEludGVybmFsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBtX25ld1BhZ2VDYWxs
YmFjayhtX3NlY3JldFdlYlZpZXctPl9wYWdlLmdldCgpKTsKICAgICBbbV9zZWNyZXRXZWJWaWV3
IGxvYWREYXRhOmRhdGEgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGNoYXJhY3RlckVuY29kaW5nTmFt
ZTpAIlVURi04IiBiYXNlVVJMOnJlc3BvbnNlLnVybCgpXTsKIH0KQEAgLTE2MCw5ICsxNzAsMTEg
QEAgdm9pZCBQb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNsb3NlKFdLV2ViVmlldyAqd2Vi
VmlldykKIHZvaWQgUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjppbml0U2VjcmV0V2ViVmll
dygpCiB7CiAgICAgQVNTRVJUKHBhZ2UoKSk7Ci0gICAgYXV0byBpbml0aWF0b3JXZWJWaWV3ID0g
ZnJvbVdlYlBhZ2VQcm94eSgqcGFnZSgpKTsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtpbml0aWF0b3JXZWJWaWV3LmNvbmZpZ3VyYXRpb24gY29weV0pOwotICAgIFtjb25maWd1
cmF0aW9uIF9zZXRSZWxhdGVkV2ViVmlldzppbml0aWF0b3JXZWJWaWV3XTsKKyAgICBhdXRvIGlu
aXRpYXRvcldlYlZpZXcgPSBwYWdlKCktPmNvY29hVmlldygpOworICAgIGlmICghaW5pdGlhdG9y
V2ViVmlldykKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tpbml0aWF0b3JXZWJWaWV3IGNvbmZpZ3VyYXRpb25dIGNvcHldKTsKKyAgICBbY29uZmln
dXJhdGlvbiBfc2V0UmVsYXRlZFdlYlZpZXc6aW5pdGlhdG9yV2ViVmlldy5nZXQoKV07CiAgICAg
bV9zZWNyZXRXZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAg
bV9zZWNyZXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1NPU2VjcmV0RGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoU2Vzc2lvbjp0aGlzXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25T
ZXNzaW9uLm1tCmluZGV4IGMwNDM4YmRkYzFmZDAzMDgzYTQyZTkzODYxOWI0OWNlNjg1ZWE1OGQu
LmRlMDQxM2NlY2NkZmI5YTUyZjA1ODJkYmVjNzcyYzRlNDNlYTYwZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRp
b25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9y
aXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0xODIsNyArMTgyLDcgQEAgdm9p
ZCBTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb250aW51ZVN0YXJ0QWZ0ZXJEZWNpZGVQb2xpY3ko
Y29uc3QgU09BdXRob3JpemF0aW8KICAgICBbbV9zb0F1dGhvcml6YXRpb24gc2V0QXV0aG9yaXph
dGlvbk9wdGlvbnM6YXV0aG9yaXphdGlvbk9wdGlvbnNdOwogCiAjaWYgUExBVEZPUk0oSU9TKQot
ICAgIGlmICghW2Zyb21XZWJQYWdlUHJveHkoKm1fcGFnZSkuVUlEZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF9wcmVzZW50aW5nVmlld0NvbnRyb2xsZXJGb3JXZWJWaWV3Oild
KQorICAgIGlmICghW1ttX3BhZ2UtPmNvY29hVmlldygpIFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlckZvcldlYlZpZXc6KV0p
CiAgICAgICAgIFttX3NvQXV0aG9yaXphdGlvbiBzZXRFbmFibGVFbWJlZGRlZEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcjpOT107CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tCmluZGV4IDMw
OGNkZGUxNWI0ZWQ1OWU2ZGQ4N2JlZGJhOWMxN2IwYzJmOTU3NDguLjg4NDlhZDkyZDNiNmU1YmZh
YmM5NjQxMTUyMDFiYWIxNDhkNDA4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0KQEAgLTM1LDcgKzM1
LDYgQEAKICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E+IFdl
YlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6Y3JlYXRlKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+IGFw
aUhhbmRsZXIpCiB7CkBAIC01Miw3ICs1MSw4IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlckNv
Y29hOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlVSTFNjaGVtCiAg
ICAgYXV0byByZXN1bHQgPSBtX2FwaVRhc2tzLmFkZCh0YXNrLmlkZW50aWZpZXIoKSwgQVBJOjpV
UkxTY2hlbWVUYXNrOjpjcmVhdGUodGFzaykpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRy
eSk7CiAKLSAgICBbbV9hcGlIYW5kbGVyLmdldCgpIHdlYlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShw
YWdlKSBzdGFydFVSTFNjaGVtZVRhc2s6d3JhcHBlcihyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdl
dCgpKV07CisgICAgaWYgKGF1dG8gd2ViVmlldyA9IHBhZ2UuY29jb2FWaWV3KCkpCisgICAgICAg
IFttX2FwaUhhbmRsZXIuZ2V0KCkgd2ViVmlldzp3ZWJWaWV3LmdldCgpIHN0YXJ0VVJMU2NoZW1l
VGFzazp3cmFwcGVyKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpXTsKIH0KIAogdm9pZCBX
ZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OnBsYXRmb3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJVUkxTY2hlbWVUYXNrJiB0YXNrKQpAQCAtNjEsNyArNjEsMTAgQEAgdm9pZCBXZWJV
UkxTY2hlbWVIYW5kbGVyQ29jb2E6OnBsYXRmb3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiBwYWdl
LCBXZWJVUkxTY2hlbWUKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9hcGlUYXNrcy5lbmQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgW21fYXBpSGFuZGxlci5nZXQoKSB3ZWJWaWV3OmZyb21XZWJQ
YWdlUHJveHkocGFnZSkgc3RvcFVSTFNjaGVtZVRhc2s6d3JhcHBlcihpdGVyYXRvci0+dmFsdWUu
Z2V0KCkpXTsKKyAgICBpZiAoYXV0byB3ZWJWaWV3ID0gcGFnZS5jb2NvYVZpZXcoKSkKKyAgICAg
ICAgW21fYXBpSGFuZGxlci5nZXQoKSB3ZWJWaWV3OndlYlZpZXcuZ2V0KCkgc3RvcFVSTFNjaGVt
ZVRhc2s6d3JhcHBlcihpdGVyYXRvci0+dmFsdWUuZ2V0KCkpXTsKKyAgICBlbHNlCisgICAgICAg
IHRhc2suc3VwcHJlc3NUYXNrU3RvcHBlZEV4Y2VwdGlvbnMoKTsKIAogICAgIG1fYXBpVGFza3Mu
cmVtb3ZlKGl0ZXJhdG9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BERi9XS1BERkhVRFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZI
VURWaWV3Lm1tCmluZGV4IGYwZjFmNTQ2MWU5YjM0ZWQ3OGVjNDQ1MmZmODMwMWEzNzI0N2QzZTIu
LmE1NTFhMmMzZjQ5ZTJjNjdhNzc5NGEyMzdkNGU3YTAxOGI5ODFlOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQpAQCAtMTYzLDExICsxNjMsOCBAQCAt
ICh2b2lkKV9zZXRWaXNpYmxlOihib29sKWlzVmlzaWJsZQogCiAtIChOU1ZpZXcgKiloaXRUZXN0
OihOU1BvaW50KXBvaW50CiB7Ci0gICAgaWYgKF9wYWdlKQotICAgICAgICByZXR1cm4gZnJvbVdl
YlBhZ2VQcm94eSgqX3BhZ2UpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIHNlbGY7CisgICAgQVNTRVJUKF9wYWdlKTsKKyAgICByZXR1cm4gX3BhZ2UgPyBfcGFnZS0+
Y29jb2FWaWV3KCkuYXV0b3JlbGVhc2UoKSA6IHNlbGY7CiB9CiAKIC0gKHZvaWQpbW91c2VNb3Zl
ZDooTlNFdmVudCAqKWV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDE0Nzc5Yzc1M2Q5ZjY0MzdiOWQ5MTAyZGJkYjE0NWVmZTBhZGI2NTUuLmZmMDI0NjljMTNl
YWY2ZDA2YjYzZTVmNGExMDVlOWRmMzU5ZGQ5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0xMzgsMTEgKzEzOCw2IEBACiAjaW5jbHVkZSAiRW5kb3dtZW50U3Rh
dGVUcmFja2VyLmgiCiAjZW5kaWYKIAotT0JKQ19DTEFTUyBOU01lbnU7Ci1PQkpDX0NMQVNTIE5T
VGV4dEFsdGVybmF0aXZlczsKLU9CSkNfQ0xBU1MgTlNWaWV3OwotT0JKQ19DTEFTUyBfV0tSZW1v
dGVPYmplY3RSZWdpc3RyeTsKLQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAjaW5jbHVkZSA8
V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2VuZGlmCkBAIC0xNTQsNiArMTQ5LDcgQEAgT0JKQ19D
TEFTUyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNs
dWRlICJEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJU
cmVlTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2VuZGlmCiAKICNpZiBI
QVZFKFRPVUNIX0JBUikKQEAgLTIxOSwxMCArMjE1LDE5IEBAIGNsYXNzIERlY29kZXI7CiBjbGFz
cyBGb3JtRGF0YVJlZmVyZW5jZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKK09CSkNfQ0xBU1MgTlNN
ZW51OworT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CitPQkpDX0NMQVNTIE5TVmlldzsK
IE9CSkNfQ0xBU1MgV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb247CitPQkpDX0NMQVNTIFdLV2Vi
VmlldzsKK09CSkNfQ0xBU1MgX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnk7CisjZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNz
IENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEN1cnNvcjsKQEAgLTI5NCw2ICsyOTksNyBAQCBlbnVt
IGNsYXNzIERhdGFPd25lclR5cGUgOiB1aW50OF90OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xh
c3MgUmVjdEVkZ2VzOwogdXNpbmcgRmxvYXRCb3hFeHRlbnQgPSBSZWN0RWRnZXM8ZmxvYXQ+Owor
CiB9CiAKICNpZiBQTEFURk9STShHVEspCkBAIC0zMTMsNyArMzE5LDcgQEAgdHlwZWRlZiBIV05E
IFBsYXRmb3JtVmlld1dpZGdldDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXN0cnVj
dCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YTsKKwogY2xhc3MgQXVkaW9TZXNzaW9uUm91
dGluZ0FyYml0cmF0b3JQcm94eTsKIGNsYXNzIERyYXdpbmdBcmVhUHJveHk7CiBjbGFzcyBHYW1l
cGFkRGF0YTsKQEAgLTM1OSw3ICszNjUsNyBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50OwogY2xhc3Mg
V2ViV2hlZWxFdmVudENvYWxlc2NlcjsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKLXN0cnVj
dCBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHM7CitzdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVz
dGluZ0RhdGE7CiBzdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBzdHJ1Y3QgRGF0YURldGVjdGlvblJl
c3VsdDsKIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0OwpAQCAtMzgwLDEzICszODYsMTQg
QEAgc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YTsKIHN0cnVjdCBQcmludEluZm87CiBzdHJ1
Y3QgUERGQ29udGV4dE1lbnU7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKK3N0cnVjdCBVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVyczsKK3N0cnVjdCBVc2VyTWVzc2FnZTsKIHN0cnVjdCBXZWJBdXRv
Y29ycmVjdGlvbkRhdGE7CitzdHJ1Y3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzOwogc3RydWN0
IFdlYkhpdFRlc3RSZXN1bHREYXRhOwogc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiBz
dHJ1Y3QgV2ViUG9wdXBJdGVtOwogc3RydWN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOwotc3Ry
dWN0IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOwotc3RydWN0IFVzZXJNZXNzYWdlOwogCiBlbnVt
IGNsYXNzIE5lZ290aWF0ZWRMZWdhY3lUTFMgOiBib29sOwogZW51bSBjbGFzcyBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9vbDsKQEAgLTQxNCw3ICs0MjEsNyBAQCBjbGFzcyBXZWJE
YXRlVGltZVBpY2tlcjsKIAogdXNpbmcgU3BlbGxEb2N1bWVudFRhZyA9IGludDY0X3Q7CiAKLWNs
YXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OlBhZ2U+CitjbGFzcyBXZWJQYWdlUHJveHkgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQogICAgICwgcHVibGljIFdlYkNvbG9yUGlja2VyOjpDbGllbnQKICNlbmRpZgpAQCAtMTM1OCw3
ICsxMzY1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBXZWJQb3B1cE1lbnVQcm94eTo6
Q2xpZW50Ci0gICAgTmF0aXZlV2ViTW91c2VFdmVudCogY3VycmVudGx5UHJvY2Vzc2VkTW91c2VE
b3duRXZlbnQoKSBvdmVycmlkZTsKKyAgICBOYXRpdmVXZWJNb3VzZUV2ZW50KiBjdXJyZW50bHlQ
cm9jZXNzZWRNb3VzZURvd25FdmVudCgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRTdXBwcmVzc1Zp
c2liaWxpdHlVcGRhdGVzKGJvb2wgZmxhZyk7CiAgICAgYm9vbCBzdXBwcmVzc1Zpc2liaWxpdHlV
cGRhdGVzKCkgeyByZXR1cm4gbV9zdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOyB9CkBAIC0xNjQ0
LDggKzE2NTEsOCBAQCBwdWJsaWM6CiAjaWYgSEFWRShRVUlDS0xPT0tfVEhVTUJOQUlMSU5HKQog
ICAgIHZvaWQgdXBkYXRlQXR0YWNobWVudEljb24oY29uc3QgU3RyaW5nJiwgY29uc3QgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4mKTsKICAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoUGF0aChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxX
aXRoRmlsZVdyYXBwZXIoTlNGaWxlV3JhcHBlciosIGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQg
cmVxdWVzdFRodW1ibmFpbFdpdGhPcGVyYXRpb24oV0tRTFRodW1ibmFpbExvYWRPcGVyYXRpb24q
KTsKKyAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoRmlsZVdyYXBwZXIoTlNGaWxlV3JhcHBl
ciAqLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlcXVlc3RUaHVtYm5haWxXaXRoT3BlcmF0
aW9uKFdLUUxUaHVtYm5haWxMb2FkT3BlcmF0aW9uICopOwogI2VuZGlmCiAgICAgZW51bSBjbGFz
cyBTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyA6IGJvb2wgeyBObywgWWVzIH07CiAg
ICAgU2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMgd2lsbFVwZGF0ZUF0dGFjaG1lbnRB
dHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYpOwpAQCAtMTczNiw4ICsxNzQzLDggQEAg
cHVibGljOgogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICAvLyBJbXBsZW1lbnRl
ZCBpbiBnZW5lcmF0ZWQgV2ViUGFnZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAotICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OworICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlU3BhY2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRP
cmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVj
dGVkVXNhZ2UsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogCkBA
IC0xODA2LDggKzE4MTMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgZ3JhbnRBY2Nlc3NUb0N1cnJl
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgog
Ci0jaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCisjaWYgUExBVEZPUk0oTUFDKQogICAgIE5TTWVu
dSAqcGxhdGZvcm1BY3RpdmVDb250ZXh0TWVudSgpIGNvbnN0OworI2VuZGlmCisKKyNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKICAgICB2b2lkIHBsYXRmb3JtRGlkU2VsZWN0SXRlbUZyb21BY3Rp
dmVDb250ZXh0TWVudShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CiAjZW5kaWYKIApA
QCAtMTg3OSwxMSArMTg4OSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgYXBw
Qm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcEJvdW5k
TmF2aWdhdGlvblRlc3RpbmdEYXRhJik+JiYpOwogICAgIHZvaWQgY2xlYXJBcHBCb3VuZE5hdmln
YXRpb25EYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0jZW5kaWYKIAotI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIE5TRGljdGlvbmFyeSAqY29udGVudHNPZlVzZXJJbnRlcmZhY2VJ
dGVtKE5TU3RyaW5nICp1c2VySW50ZXJmYWNlSXRlbSk7Ci0jZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpCisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBjb2NvYVZpZXcoKTsKKyAgICB2b2lkIHNl
dENvY29hVmlldyhXS1dlYlZpZXcgKik7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1
cmF0aW9uPiYmKTsKQEAgLTE5MTMsMTUgKzE5MjQsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dFVzZXJBZ2VudChTdHJpbmcmJik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKLSAgICBi
b29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6
OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
UEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgb3ZlcnJpZGU7Ci0gICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHVpbnQ2
NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpT
ZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOworICAgIElQQzo6Q29ubmVjdGlvbiog
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gV2ViUG9wdXBN
ZW51UHJveHk6OkNsaWVudAotICAgIHZvaWQgdmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBv
cHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKLSAgICB2
b2lkIHNldFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMy
X3QgaW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgdmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdl
YlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KSBmaW5hbDsKKyAgICB2
b2lkIHNldFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMy
X3QgaW5kZXgpIGZpbmFsOwogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIGZhaWxlZFRvU2hv
d1BvcHVwTWVudSgpIG92ZXJyaWRlOworICAgIHZvaWQgZmFpbGVkVG9TaG93UG9wdXBNZW51KCkg
ZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCkBAIC0yMDg3LDggKzIw
OTgsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgdm9p
ZCBzaG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4mJik7Ci0gICAgdm9p
ZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkRW5kQ29sb3JQaWNrZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENob29zZUNvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgZmluYWw7CisgICAgdm9pZCBkaWRFbmRDb2xvclBpY2tl
cigpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKQEAgLTIz
ODksMTMgKzI0MDAsMTMgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNQRUVDSF9T
WU5USEVTSVMpCi0gICAgdm9pZCBkaWRTdGFydFNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRGaW5pc2hTcGVh
a2luZyhXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUGF1c2VTcGVha2luZyhXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSBvdmVycmlkZTsKLSAgICB2
b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgYm91bmRhcnlFdmVudE9jY3VycmVkKFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiwgV2ViQ29yZTo6U3BlZWNo
Qm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2b2ljZXNE
aWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoV2ViQ29yZTo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZp
bmlzaFNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikg
ZmluYWw7CisgICAgdm9pZCBkaWRQYXVzZVNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZXN1bWVTcGVha2luZyhX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpIGZpbmFsOworICAgIHZv
aWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlJikgZmluYWw7CisgICAgdm9pZCBib3VuZGFyeUV2ZW50T2NjdXJyZWQoV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCBXZWJDb3JlOjpTcGVlY2hCb3Vu
ZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSBmaW5hbDsKKyAgICB2b2lkIHZvaWNlc0RpZENoYW5n
ZSgpIGZpbmFsOwogCiAgICAgc3RydWN0IFNwZWVjaFN5bnRoZXNpc0RhdGE7CiAgICAgU3BlZWNo
U3ludGhlc2lzRGF0YSYgc3BlZWNoU3ludGhlc2lzRGF0YSgpOwpAQCAtMjQ3NCw2ICsyNDg1LDEw
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViSW5zcGVjdG9yUHJveHk+IG1faW5zcGVjdG9y
OwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBtX2Nv
Y29hVmlldzsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5PiBtX2Z1bGxTY3JlZW5NYW5hZ2Vy
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZ1bGxzY3JlZW5DbGllbnQ+IG1fZnVsbHNjcmVl
bkNsaWVudDsKQEAgLTI5NDUsNCArMjk2MCwxOCBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCisj
aWZkZWYgX19PQkpDX18KKworaW5saW5lIFJldGFpblB0cjxXS1dlYlZpZXc+IFdlYlBhZ2VQcm94
eTo6Y29jb2FWaWV3KCkKK3sKKyAgICByZXR1cm4gbV9jb2NvYVZpZXcuZ2V0KCk7Cit9CisKK2lu
bGluZSB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29jb2FWaWV3KFdLV2ViVmlldyAqdmlldykKK3sK
KyAgICBtX2NvY29hVmlldyA9IHZpZXc7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5k
ZXggMWU3YzExMWM3MTI3NDAwMTQwNTRhYjU3MmYwZGU2Mjg2ZmUwZWZhYS4uOGVlY2M5MzM5NDYz
NWYwNGQzNzFmMWY3MjVlMTEzMzBkNDIwNjMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgYXV0byBXZWJVUkxTY2hl
bWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnMKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKG1fc3Rv
cHBlZCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OlRhc2tBbHJlYWR5U3RvcHBlZDsK
KyAgICAgICAgcmV0dXJuIG1fc2hvdWxkU3VwcHJlc3NUYXNrU3RvcHBlZEV4Y2VwdGlvbnMgPyBF
eGNlcHRpb25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQgOiBFeGNlcHRpb25UeXBlOjpOb25lOwog
ICAgIAogICAgIGlmIChtX2NvbXBsZXRlZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6
OkNvbXBsZXRlQWxyZWFkeUNhbGxlZDsKQEAgLTk0LDcgKzk0LDcgQEAgYXV0byBXZWJVUkxTY2hl
bWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpIC0+IEUKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKG1fc3Rv
cHBlZCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OlRhc2tBbHJlYWR5U3RvcHBlZDsK
KyAgICAgICAgcmV0dXJuIG1fc2hvdWxkU3VwcHJlc3NUYXNrU3RvcHBlZEV4Y2VwdGlvbnMgPyBF
eGNlcHRpb25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQgOiBFeGNlcHRpb25UeXBlOjpOb25lOwog
CiAgICAgaWYgKG1fY29tcGxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Q29t
cGxldGVBbHJlYWR5Q2FsbGVkOwpAQCAtMTE4LDcgKzExOCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2Vw
dGlvblR5CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChtX3N0b3Bw
ZWQpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQ7Cisg
ICAgICAgIHJldHVybiBtX3Nob3VsZFN1cHByZXNzVGFza1N0b3BwZWRFeGNlcHRpb25zID8gRXhj
ZXB0aW9uVHlwZTo6VGFza0FscmVhZHlTdG9wcGVkIDogRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIAog
ICAgIGlmIChtX2NvbXBsZXRlZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OkNvbXBs
ZXRlQWxyZWFkeUNhbGxlZDsKQEAgLTE0NSw3ICsxNDUsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRh
c2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25U
eXBlCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChtX3N0b3BwZWQp
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQ7CisgICAg
ICAgIHJldHVybiBtX3Nob3VsZFN1cHByZXNzVGFza1N0b3BwZWRFeGNlcHRpb25zID8gRXhjZXB0
aW9uVHlwZTo6VGFza0FscmVhZHlTdG9wcGVkIDogRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIAogICAg
IGlmIChtX2NvbXBsZXRlZCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OkNvbXBsZXRl
QWxyZWFkeUNhbGxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aAppbmRleCA4MjVjZDAyNjg4YTI2ODIxOTQxZmY3YTQxOGY0ZGY1YTk3NWJhMTdjLi40YjA3YmEx
YTBkYjE1YjQ3MWVjN2IxMDJjNDQ1YmZjNzc2YWFmODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN0b3AoKTsKICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKIAorICAgIHZvaWQgc3VwcHJl
c3NUYXNrU3RvcHBlZEV4Y2VwdGlvbnMoKSB7IG1fc2hvdWxkU3VwcHJlc3NUYXNrU3RvcHBlZEV4
Y2VwdGlvbnMgPSB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgV2ViVVJMU2NoZW1lVGFzayhXZWJV
UkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYsIFN5bmNMb2FkQ29t
cGxldGlvbkhhbmRsZXImJik7CiAKQEAgLTEwMyw3ICsxMDUsOCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9yZXNwb25zZVNlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kYXRhU2VudCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2NvbXBsZXRlZCB7IGZhbHNlIH07Ci0gICAgCisgICAgYm9vbCBtX3No
b3VsZFN1cHByZXNzVGFza1N0b3BwZWRFeGNlcHRpb25zIHsgZmFsc2UgfTsKKwogICAgIFN5bmNM
b2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzNiYWJkMDE0ZWJkYjZmYWQ1MjBkNTJmMzBkZmM4
NDcwY2FkNWM2YS4uMWFiOTM5MDE0Nzk2ZTc4YzI0NDg5NjUxZWM1ZDNlNDM3ZGQ2ZmMxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04
NzcsNyArODc3LDYgQEAKIAkJMzdBNzA5QTcxRTNFQTBGRDAwQ0E1OTY5IC8qIFdLRGF0YURldGVj
dG9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3QTcwOUE2MUUzRUEwRkQwMENBNTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkzN0E3MDlBOTFFM0VB
NDBDMDBDQTU5NjkgLyogV0tEYXRhRGV0ZWN0b3JUeXBlc0ludGVybmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0E3MDlBODFFM0VBNDBDMDBDQTU5
NjkgLyogV0tEYXRhRGV0ZWN0b3JUeXBlc0ludGVybmFsLmggKi87IH07CiAJCTM3QjBEMTg0MUMx
RTQ5OUEwMEQ0MEQ2NCAvKiBQbHVnaW5Qcm9jZXNzU2hpbS5keWxpYiBpbiBDb3B5IFNoaW1zICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQzI1RkIwMTJBNDhFQTcwMEJEMjY3
MSAvKiBQbHVnaW5Qcm9jZXNzU2hpbS5keWxpYiAqLzsgfTsKLQkJMzdCNDdFMkQxRDY0REI3NjAw
NUY0RUZGIC8qIG9iamNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3QjQ3RTJDMUQ2NERCNzYwMDVGNEVGRiAvKiBvYmpjU1BJLmggKi87IH07CiAJ
CTM3QjUwNDUyMTlFRUYzMTMwMENFMkNGOCAvKiBXS0Vycm9yUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdCNTA0NTExOUVFRjMxMzAwQ0Uy
Q0Y4IC8qIFdLRXJyb3JQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMzdCRUM0REQxOTQ4RkM2QTAwOEI0Mjg2IC8qIFdlYkNvcmUuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFBMUM3OUExMDBFN0ZDNTAwNzhERUJDIC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9OwogCQkz
N0JFQzRFMTE5NDkxNDg2MDA4QjQyODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdCRUM0REYx
OTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCAqLzsgfTsK
QEAgLTM2MTAsNyArMzYwOSw2IEBACiAJCTM3QTY0RTU2MThGMzhGNDYwMEVCMzBGMSAvKiBfV0tG
b3JtSW5wdXRTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Zv
cm1JbnB1dFNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdBNzA5QTYx
RTNFQTBGRDAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tEYXRhRGV0ZWN0b3JUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzN0E3MDlBODFFM0VBNDBDMDBDQTU5NjkgLyogV0tEYXRhRGV0ZWN0b3JU
eXBlc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRGF0YURl
dGVjdG9yVHlwZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzN0I0
N0UyQzFENjREQjc2MDA1RjRFRkYgLyogb2JqY1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBvYmpjU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QjUw
NDUxMTlFRUYzMTMwMENFMkNGOCAvKiBXS0Vycm9yUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS0Vycm9yUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzN0JFQzRERTE5NDkxNDg2MDA4QjQyODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTM3QkVDNERGMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3NzAsNyArNzc2OCw2
IEBACiAJCQkJNTc0MjE3OTEyNDAwRTA5ODAwMkIzMDNEIC8qIExvY2FsQXV0aGVudGljYXRpb25T
UEkuaCAqLywKIAkJCQk1N0I4MjY0MDIzMDRFQjNFMDBCNzJFQjAgLyogTmVhckZpZWxkU1BJLmgg
Ki8sCiAJCQkJMzc1NEQ1NDQxQjNBMjlGRDAwM0E0QzdGIC8qIE5TSW52b2NhdGlvblNQSS5oICov
LAotCQkJCTM3QjQ3RTJDMUQ2NERCNzYwMDVGNEVGRiAvKiBvYmpjU1BJLmggKi8sCiAJCQkJMEU5
N0Q3NEMyMDBFOEZGMzAwQkY2NjQzIC8qIFNhZmVCcm93c2luZ1NQSS5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBDb2NvYTsKQEAgLTExOTM0LDcgKzExOTMxLDYgQEAKIAkJCQkxQzIxODQwMjIyMzM4
NzI4MDBCQUM3MDAgLyogTlNBdHRyaWJ1dGVkU3RyaW5nUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzc1NEQ1NDUxQjNBMjlGRDAwM0E0QzdGIC8qIE5TSW52b2NhdGlvblNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM4QUNBMTMxNjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFw
aC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzdCNDdFMkQxRDY0REI3NjAwNUY0RUZGIC8qIG9iamNT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRjQ3RkZCMTcyNzVDNTcwMDhBQ0I5MSAvKiBQYWdl
QmFubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzZFREFBNjExMTI3MUM2MDBFNzY3OEIgLyog
UGFnZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNDYxOEJCRTA0NDAwMEZDRkM5
IC8qIFBhZ2VDbGllbnRJbXBsSU9TLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MGE1NmU1YjZlMzdjOTIxNGRhNTk0
MjU4ZGM3OWY1YTE4MWI4OWRjLi5iNDMyOGFmYWE4MjIyYzc4YjAxMTcyMmMxNzJkMmE2OGM3YjBl
Zjk1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjEtMDMtMTkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gTWFrZSBpdCBwb3NzaWJsZSB0byByZWxlYXNlIGEgV0tXZWJW
aWV3IG9uIGEgbm9uLW1haW4gdGhyZWFkIHdpdGhvdXQgYSBjcmFzaCBkdWUgdG8gV0tTY3JpcHRN
ZXNzYWdlIHJhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjMzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXIt
MS5tbToKKyAgICAgICAgVXNlIF9jbG9zZSBpbnN0ZWFkIG9mIFdLV2ViVmlldyBkZWFsbG9jYXRp
b24gdG8gdHJpZ2dlciBhIGNhbGwgdG8gc3RvcFVSTFNjaGVtZVRhc2ssCisgICAgICAgIHNpbmNl
IHN1Y2ggZGVsZWdhdGUgbWV0aG9kcyB3aWxsIGludGVudGlvbmFsbHkgbm8gbG9uZ2VyIGJlIGRl
bGl2ZXJlZCBpZiB0cmlnZ2VyZWQgYnkgZGVhbGxvY2F0aW9uLgorCiAyMDIxLTAzLTE5ICBCSiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBmaWx0ZXItYnVpbGQtd2Vi
a2l0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
VVJMU2NoZW1lSGFuZGxlci0xLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQppbmRleCBkNDRiYjg3N2YzNDA3NGVkNWVhNmNh
MGJhYzAwZTM3M2VmNjZhMjY2Li5hNzhhYjM2OGNmZjAxM2U0NDA3NGM5OTMwNmEyZGVhYjJjYWJj
ZGJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
VVJMU2NoZW1lSGFuZGxlci0xLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KQEAgLTU1OCw3ICs1NTgsNyBAQCBURVNU
KFVSTFNjaGVtZUhhbmRsZXIsIFN5bmNYSFIpCiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmc3RhcnRlZFhIUik7CiAgICAgICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwogCi0g
ICAgICAgIHdlYlZpZXcgPSBuaWw7CisgICAgICAgIFt3ZWJWaWV3IF9jbG9zZV07CiAgICAgfQog
ICAgIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTdG9wKTsK
</data>
<flag name="review"
          id="443279"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>