<?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>176568</bug_id>
          
          <creation_ts>2017-09-07 15:58:21 -0700</creation_ts>
          <short_desc>Clean up API::UIClient</short_desc>
          <delta_ts>2018-01-25 15:15:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mitz</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1346613</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 15:58:21 -0700</bug_when>
    <thetext>Clean up API::UIClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346615</commentid>
    <comment_count>1</comment_count>
      <attachid>320197</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 15:59:12 -0700</bug_when>
    <thetext>Created attachment 320197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346617</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 16:01:56 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346618</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-07 16:02:12 -0700</bug_when>
    <thetext>Attachment 320197 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp:49:  The parameter name &quot;resourceRequest&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp:49:  The parameter name &quot;windowFeatures&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp:49:  The parameter name &quot;navigationActionData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346624</commentid>
    <comment_count>4</comment_count>
      <attachid>320200</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 16:10:29 -0700</bug_when>
    <thetext>Created attachment 320200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346631</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-07 16:18:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/r221771</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346807</commentid>
    <comment_count>6</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-09-08 08:46:18 -0700</bug_when>
    <thetext>This change caused the following API tests to crash:
  WebKit.OpenAndCloseWindowAsync
  WebKit.OpenAsyncWithNil

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebKit              	0x000000010e5597d9 WebKit::UIDelegate::UIClient::createNewPage(WebKit::WebPageProxy&amp;, WTF::Ref&lt;API::FrameInfo&gt;&amp;&amp;, WebCore::ResourceRequest&amp;&amp;, WebCore::WindowFeatures&amp;&amp;, WebKit::NavigationActionData&amp;&amp;, WTF::Function&lt;void (WTF::RefPtr&lt;WebKit::WebPageProxy&gt;&amp;&amp;)&gt;&amp;&amp;) + 993 (UIDelegate.mm:232)
1   com.apple.WebKit              	0x000000010e63b33f WebKit::WebPageProxy::createNewPage(WebKit::FrameInfoData const&amp;, unsigned long long, WebCore::ResourceRequest&amp;&amp;, WebCore::WindowFeatures&amp;&amp;, WebKit::NavigationActionData&amp;&amp;, WTF::Ref&lt;Messages::WebPageProxy::CreateNewPage::DelayedReply&gt;&amp;&amp;) + 929 (WebPageProxy.cpp:3874)
2   com.apple.WebKit              	0x000000010e659454 void IPC::handleMessageDelayed&lt;Messages::WebPageProxy::CreateNewPage, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(WebKit::FrameInfoData const&amp;, unsigned long long, WebCore::ResourceRequest&amp;&amp;, WebCore::WindowFeatures&amp;&amp;, WebKit::NavigationActionData&amp;&amp;, WTF::Ref&lt;Messages::WebPageProxy::CreateNewPage::DelayedReply&gt;&amp;&amp;)&gt;(IPC::Connection&amp;, IPC::Decoder&amp;, std::__1::unique_ptr&lt;IPC::Encoder, std::__1::default_delete&lt;IPC::Encoder&gt; &gt;&amp;, WebKit::WebPageProxy*, void (WebKit::WebPageProxy::*)(WebKit::FrameInfoData const&amp;, unsigned long long, WebCore::ResourceRequest&amp;&amp;, WebCore::WindowFeatures&amp;&amp;, WebKit::NavigationActionData&amp;&amp;, WTF::Ref&lt;Messages::WebPageProxy::CreateNewPage::DelayedReply&gt;&amp;&amp;)) + 499 (HandleMessage.h:179)
3   com.apple.WebKit              	0x000000010e4599d3 IPC::MessageReceiverMap::dispatchSyncMessage(IPC::Connection&amp;, IPC::Decoder&amp;, std::__1::unique_ptr&lt;IPC::Encoder, std::__1::default_delete&lt;IPC::Encoder&gt; &gt;&amp;) + 143 (MessageReceiverMap.cpp:140)
4   com.apple.WebKit              	0x000000010e6a848e WebKit::WebProcessProxy::didReceiveSyncMessage(IPC::Connection&amp;, IPC::Decoder&amp;, std::__1::unique_ptr&lt;IPC::Encoder, std::__1::default_delete&lt;IPC::Encoder&gt; &gt;&amp;) + 28 (WebProcessProxy.cpp:606)
5   com.apple.WebKit              	0x000000010e422304 IPC::Connection::dispatchSyncMessage(IPC::Decoder&amp;) + 202 (Connection.cpp:865)
6   com.apple.WebKit              	0x000000010e41f8b2 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;) + 104 (Connection.cpp:926)
7   com.apple.WebKit              	0x000000010e422529 IPC::Connection::dispatchOneMessage() + 175 (Connection.cpp:959)
8   com.apple.JavaScriptCore      	0x000000010dc76ed4 WTF::RunLoop::performWork() + 164 (RunLoop.cpp:107)
9   com.apple.JavaScriptCore      	0x000000010dc770f2 WTF::RunLoop::performWork(void*) + 34 (RunLoopCF.cpp:39)
10  com.apple.CoreFoundation      	0x00007fffac7123e1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
11  com.apple.CoreFoundation      	0x00007fffac6f365c __CFRunLoopDoSources0 + 556
12  com.apple.CoreFoundation      	0x00007fffac6f2b46 __CFRunLoopRun + 934
13  com.apple.CoreFoundation      	0x00007fffac6f2544 CFRunLoopRunSpecific + 420
14  com.apple.Foundation          	0x00007fffae1234e2 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 277
15  TestWebKitAPI                 	0x000000010cce386f TestWebKitAPI::Util::run(bool*) + 119 (UtilitiesCocoa.mm:34)
16  TestWebKitAPI                 	0x000000010cc481e7 WebKit_OpenAsyncWithNil_Test::TestBody() + 407 (OpenAndCloseWindow.mm:177)
17  TestWebKitAPI                 	0x000000010cd4b768 testing::Test::Run() + 92
18  TestWebKitAPI                 	0x000000010cd4bf40 testing::internal::TestInfoImpl::Run() + 178
19  TestWebKitAPI                 	0x000000010cd4c334 testing::TestCase::Run() + 188
20  TestWebKitAPI                 	0x000000010cd4f819 testing::internal::UnitTestImpl::RunAllTests() + 583
21  TestWebKitAPI                 	0x000000010cc92a1f TestWebKitAPI::TestsController::run(int, char**) + 131 (TestsController.cpp:84)
22  TestWebKitAPI                 	0x000000010cd27eda main + 344 (mainMac.mm:52)
23  libdyld.dylib                 	0x00007fffc242a235 start + 1

https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK2%20%28Tests%29/builds/4156</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346820</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-09-08 09:19:28 -0700</bug_when>
    <thetext>Reverted r221771 for reason:

This change caused two API tests to crash.

Committed r221787: &lt;http://trac.webkit.org/changeset/221787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346859</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-08 10:34:38 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #7)
&gt; Reverted r221771 for reason:
&gt; 
&gt; This change caused two API tests to crash.
&gt; 
&gt; Committed r221787: &lt;http://trac.webkit.org/changeset/221787&gt;

I&apos;m not sure it actually landed. You&apos;ll want to check when SVN is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346861</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-09-08 10:46:21 -0700</bug_when>
    <thetext>SVN is actually the one thing that works. Git mirrors and Trac are broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347771</commentid>
    <comment_count>10</comment_count>
      <attachid>320200</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-11 19:04:59 -0700</bug_when>
    <thetext>Comment on attachment 320200
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:-227
&gt; -        return nullptr;

Aha! I still need an early return here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347773</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-11 19:05:33 -0700</bug_when>
    <thetext>http://trac.webkit.org/r221899</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347780</commentid>
    <comment_count>12</comment_count>
      <attachid>320200</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-11 19:52:19 -0700</bug_when>
    <thetext>Comment on attachment 320200
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitUIClient.h:20
&gt; -#ifndef WebKitUIClient_h
&gt; -#define WebKitUIClient_h
&gt; +#pragma once

Doesn&apos;t we normally not use pragma once in API headers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347781</commentid>
    <comment_count>13</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-09-11 19:53:14 -0700</bug_when>
    <thetext>&gt; Doesn&apos;t we normally not use pragma once in API headers?

There are already plenty of files in the same directory with `#pragma once` so it seems fine here. I was just asking in general.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347782</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-09-11 20:08:23 -0700</bug_when>
    <thetext>We indeed don&apos;t use #pragma once in our public API headers, but that&apos;s actually an implementation header that&apos;s not installed. I guess it might not be obvious, but the easiest way to tell it&apos;s not installed is that it contains C++ code and follows WebKit coding style. The public headers are C and follow GNOME style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353594</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:41:07 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693747&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393318</commentid>
    <comment_count>16</comment_count>
    <who name="">mitz</who>
    <bug_when>2018-01-25 15:15:33 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #11)
&gt; http://trac.webkit.org/r221899

This caused bug 182152.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320197</attachid>
            <date>2017-09-07 15:59:12 -0700</date>
            <delta_ts>2017-09-07 16:10:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176568-20170907155911.patch</filename>
            <type>text/plain</type>
            <size>19414</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE3NjYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA5LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgQVBJ
OjpVSUNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc2NTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgZG9uJ3QgbmVlZCBjcmVhdGVOZXdQYWdlIGFuZCBjcmVhdGVOZXdQYWdlQXN5bmMuCisg
ICAgICAgIEFuIGFzeW5jIHZlcnNpb24gY2FuIHN1cHBvcnQgc3luY2hyb25vdXMgZGVsZWdhdGUg
Y2FsbHMgYnkganVzdCBjYWxsaW5nIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgc3luY2hyb25vdXNs
eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQ
STo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6Y3Jl
YXRlTmV3UGFnZUFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmNhbkNy
ZWF0ZU5ld1BhZ2VBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVJQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZUNvbW1vbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5DcmVh
dGVOZXdQYWdlQXN5bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpV
SUNsaWVudDo6Y3JlYXRlTmV3UGFnZUFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVh
dGVOZXdQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKIDIwMTct
MDktMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBB
ZGQgQyBBUEkgdG8gcmV0cmlldmUgdGhlIG9yaWdpbmF0aW5nIHBhZ2Ugb2YgYSBXS0Rvd25sb2Fk
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9u
IDIyMTc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4NjQsMTQgKzM4NjQsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFVwZGF0ZUhpc3RvcnlUaXRsZQogCiAvLyBVSUNsaWVudAogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpD
cmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6
Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRl
TmV3UGFnZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9w
cm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwogICAg
IGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdp
bmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlE
KSk7CiAKICAgICBhdXRvIG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1lLT51cmwoKTsKIAotICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxX
ZWJQYWdlUHJveHk+KHRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92
ZShyZXBseSldKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIHsKKyAgICBtX3VpQ2xpZW50
LT5jcmVhdGVOZXdQYWdlKCp0aGlzLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwgV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZSh3aW5kb3dGZWF0dXJlcyksIFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbkRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxXZWJQYWdlUHJveHk+
KHRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldKFJl
ZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIHsKICAgICAgICAgaWYgKCFuZXdQYWdlKSB7CiAg
ICAgICAgICAgICByZXBseS0+c2VuZCgwLCB7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
Mzg4MSwxOCArMzg4MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0
IEYKIAogICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKCp0aGlzLCAq
bmV3UGFnZSk7CiAgICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4
dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGhvc3RzQXJlRXF1YWwoVVJMKFBhcnNlZFVSTFN0
cmluZywgbWFpbkZyYW1lVVJMKSwgcmVxdWVzdC51cmwoKSk7Ci0KLSAgICB9OwotCi0gICAgaWYg
KG1fdWlDbGllbnQtPmNhbkNyZWF0ZU5ld1BhZ2VBc3luYygpKSB7Ci0gICAgICAgIG1fdWlDbGll
bnQtPmNyZWF0ZU5ld1BhZ2VBc3luYyh0aGlzLCBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgV1RGTW92
ZShyZXF1ZXN0KSwgd2luZG93RmVhdHVyZXMsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEp
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUmVmUHRy
PFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bmV3UGFnZSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVm
UHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSA9IG1fdWlDbGllbnQtPmNyZWF0ZU5ld1BhZ2UodGhp
cywgb3JpZ2luYXRpbmdGcmFtZUluZm8sIFdURk1vdmUocmVxdWVzdCksIHdpbmRvd0ZlYXR1cmVz
LCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShuZXdQYWdlKSk7CisgICAgfSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2hvd1BhZ2UoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYg
dXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIC8vIFVJIGNsaWVudAotICAgIHZvaWQgY3Jl
YXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgY3JlYXRlTmV3UGFn
ZShjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFn
ZTo6RGVsYXllZFJlcGx5PiYmKTsKICAgICB2b2lkIHNob3dQYWdlKCk7CiAgICAgdm9pZCBydW5K
YXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1
bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5PiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3Jp
cHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIGNvbnN0IFN0cmluZyYsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZh
U2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5PiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCShyZXZpc2lvbiAyMjE3NjQpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsOSAr
NzEsNyBAQCBjbGFzcyBVSUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VUlDbGllbnQo
KSB7IH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBjcmVhdGVO
ZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgRnJhbWVJbmZvJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGNyZWF0ZU5ld1BhZ2VBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSosIEZyYW1lSW5mbyYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYs
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0
cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgfQotICAg
IHZpcnR1YWwgYm9vbCBjYW5DcmVhdGVOZXdQYWdlQXN5bmMoKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVOZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgUmVm
PEZyYW1lSW5mbz4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRv
d0ZlYXR1cmVzJiYsIFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgV1RGOjpGdW5jdGlv
bjx2b2lkKFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJik+JiYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBzaG93UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFdlYktpdDo6V2ViUGFnZVBy
b3h5KikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJ
KHJldmlzaW9uIDIyMTc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjUsMTkgKzE1NjUsMTkgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSog
cGFnZSwgQVBJOjpGcmFtZUluZm8mIHNvdXJjZUZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEpIGZpbmFsCisgICAgICAg
IHZvaWQgY3JlYXRlTmV3UGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxBUEk6OkZyYW1lSW5m
bz4mJiBzb3VyY2VGcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlc291cmNl
UmVxdWVzdCwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV1RGOjpGdW5jdGlvbjx2b2lk
KFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQuY3JlYXRlTmV3UGFnZSkgewotICAgICAg
ICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHBhZ2UtPmNvbmZpZ3VyYXRpb24oKS5jb3B5
KCk7Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0UmVsYXRlZFBhZ2UocGFnZSk7
CisgICAgICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gcGFnZS5jb25maWd1cmF0aW9u
KCkuY29weSgpOworICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdl
KCZwYWdlKTsKIAotICAgICAgICAgICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0g
cGFnZS0+cHJvY2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAgYm9vbCBzaG91
bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3VyY2VGcmFtZUluZm8ucmVxdWVzdCgp
LnVybCgpLCByZXNvdXJjZVJlcXVlc3QudXJsKCkpOwotICAgICAgICAgICAgICAgIGF1dG8gYXBp
TmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUo
bmF2aWdhdGlvbkFjdGlvbkRhdGEpLCAmc291cmNlRnJhbWVJbmZvLCBudWxscHRyLCBXVEZNb3Zl
KHJlc291cmNlUmVxdWVzdCksIFdlYkNvcmU6OlVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdU
Rk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CisgICAgICAgICAgICAgICAgYXV0byB1c2Vy
SW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHko
bmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOworICAgICAg
ICAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoc291cmNl
RnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlc291cmNlUmVxdWVzdC51cmwoKSk7CisgICAg
ICAgICAgICAgICAgYXV0byBhcGlOYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0
aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5m
by5wdHIoKSwgbnVsbHB0ciwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBXZWJDb3JlOjpVUkwo
KSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwog
CiAgICAgICAgICAgICAgICAgYXV0byBhcGlXaW5kb3dGZWF0dXJlcyA9IEFQSTo6V2luZG93RmVh
dHVyZXM6OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcyk7CiAKLSAgICAgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2UodG9BUEkocGFnZSksIHRvQVBJ
KGNvbmZpZ3VyYXRpb24ucHRyKCkpLCB0b0FQSShhcGlOYXZpZ2F0aW9uQWN0aW9uLnB0cigpKSwg
dG9BUEkoYXBpV2luZG93RmVhdHVyZXMucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRv
SW1wbChtX2NsaWVudC5jcmVhdGVOZXdQYWdlKHRvQVBJKCZwYWdlKSwgdG9BUEkoY29uZmlndXJh
dGlvbi5wdHIoKSksIHRvQVBJKGFwaU5hdmlnYXRpb25BY3Rpb24ucHRyKCkpLCB0b0FQSShhcGlX
aW5kb3dGZWF0dXJlcy5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1Bh
Z2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB8fCBtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjApIHsKQEAgLTE2MDIsMTQgKzE2MDIsMTQgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogCiAgICAgICAgICAgICAgICAgaWYgKG1fY2xp
ZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSkgewogICAgICAgICAgICAg
ICAgICAgICBSZWY8QVBJOjpVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gQVBJOjpVUkxSZXF1ZXN0Ojpj
cmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEo
dG9BUEkocGFnZSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShmZWF0dXJlc01hcC5wdHIo
KSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRp
b25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYWRvcHRSZWYodG9J
bXBsKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSh0b0FQSSgm
cGFnZSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShmZWF0dXJlc01hcC5wdHIoKSksIHRv
QVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rp
b25EYXRhLm1vdXNlQnV0dG9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICAgICAgQVNTRVJUKG1fY2xpZW50LmNyZWF0
ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAodG9BUEkocGFnZSksIHRvQVBJKGZlYXR1cmVzTWFwLnB0cigpKSwgdG9BUEkobmF2aWdh
dGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW91
c2VCdXR0b24pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVO
ZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQSShmZWF0dXJl
c01hcC5wdHIoKSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJ
KG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKSkpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5KiBwYWdlKSBmaW5hbApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAko
cmV2aXNpb24gMjIxNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0VUlDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYsMTEgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQ
YWdlKFdlYlBhZ2VQcm94eSosIEFQSTo6RnJhbWVJbmZvJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgd2lu
ZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEp
IG92ZXJyaWRlCisgICAgdm9pZCBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYsIFJlZjxBUEk6
OkZyYW1lSW5mbz4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0
LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRy
PFdlYlBhZ2VQcm94eT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwogICAgIHsKICAg
ICAgICAgR1JlZlB0cjxXZWJLaXRVUklSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtp
dFVSSVJlcXVlc3RDcmVhdGVGb3JSZXNvdXJjZVJlcXVlc3QocmVzb3VyY2VSZXF1ZXN0KSk7CiAg
ICAgICAgIFdlYktpdE5hdmlnYXRpb25BY3Rpb24gbmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0Lmdl
dCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSk7Ci0gICAgICAgIHJldHVybiB3ZWJraXRXZWJWaWV3
Q3JlYXRlTmV3UGFnZShtX3dlYlZpZXcsIHdpbmRvd0ZlYXR1cmVzLCAmbmF2aWdhdGlvbkFjdGlv
bik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdl
KG1fd2ViVmlldywgd2luZG93RmVhdHVyZXMsICZuYXZpZ2F0aW9uQWN0aW9uKSk7CiAgICAgfQog
CiAgICAgdm9pZCBzaG93UGFnZShXZWJQYWdlUHJveHkqKSBvdmVycmlkZQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5oCShyZXZp
c2lvbiAyMjE3MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRV
SUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNywxMSArMTcsOCBAQAogICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBXZWJLaXRVSUNsaWVudF9oCi0jZGVm
aW5lIFdlYktpdFVJQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlldy5oIgogCiB2b2lkIGF0dGFjaFVJQ2xpZW50VG9WaWV3KFdlYktpdFdlYlZpZXcqKTsKLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5o
CShyZXZpc2lvbiAyMjE3MTQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURl
bGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDExICs3OSw3IEBAIHByaXZhdGU6CiAKICAg
ICBwcml2YXRlOgogICAgICAgICAvLyBBUEk6OlVJQ2xpZW50Ci0gICAgICAgIFJlZlB0cjxXZWJQ
YWdlUHJveHk+IGNyZWF0ZU5ld1BhZ2UoV2ViUGFnZVByb3h5KiwgQVBJOjpGcmFtZUluZm8mLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMm
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBjcmVhdGVOZXdQ
YWdlQXN5bmMoV2ViUGFnZVByb3h5KiwgQVBJOjpGcmFtZUluZm8mLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGZpbmFsOwotICAgICAgICBib29sIGNhbkNyZWF0ZU5ld1BhZ2VB
c3luYygpIGZpbmFsOwotICAgICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQYWdl
Q29tbW9uKFdlYlBhZ2VQcm94eSosIEFQSTo6RnJhbWVJbmZvJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKTsKLQorICAgICAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoV2ViUGFnZVBy
b3h5JiwgUmVmPEFQSTo6RnJhbWVJbmZvPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmKSBmaW5hbDsKICAgICAgICAg
dm9pZCBjbG9zZShXZWJQYWdlUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBmdWxsc2NyZWVu
TWF5UmV0dXJuVG9JbmxpbmUoV2ViUGFnZVByb3h5KikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlk
RW50ZXJGdWxsc2NyZWVuKFdlYlBhZ2VQcm94eSopIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMjE3MTQpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTEsNyArMTkxLDcgQEAgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6On5VSUNsaWVudCgpCiB7
CiB9CiAKLVJlZlB0cjxXZWJQYWdlUHJveHk+IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVO
ZXdQYWdlQ29tbW9uKFdlYlBhZ2VQcm94eSogcGFnZSwgQVBJOjpGcmFtZUluZm8mIHNvdXJjZUZy
YW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29y
ZTo6V2luZG93RmVhdHVyZXMmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYlBhZ2VQ
cm94eT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPEFQSTo6RnJhbWVJbmZvPiYm
IHNvdXJjZUZyYW1lSW5mbywgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJQ
YWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gZGVsZWdhdGUg
PSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKICAgICBBU1NFUlQoZGVsZWdhdGUpOwpA
QCAtMTk5LDEzICsxOTksMTMgQEAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gVUlEZWxlZ2F0ZTo6VUlD
bGllbgogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW21fdWlEZWxlZ2F0ZS5tX3dl
YlZpZXctPl9jb25maWd1cmF0aW9uIGNvcHldKTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0UmVs
YXRlZFdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlld107CiAKLSAgICBhdXRvIHVzZXJJbml0
aWF0ZWRBY3Rpdml0eSA9IHBhZ2UtPnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2
aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwotICAgIGJvb2wg
c2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoc291cmNlRnJhbWVJbmZvLnJlcXVl
c3QoKS51cmwoKSwgcmVxdWVzdC51cmwoKSk7Ci0gICAgYXV0byBhcGlOYXZpZ2F0aW9uQWN0aW9u
ID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
RGF0YSksICZzb3VyY2VGcmFtZUluZm8sIG51bGxwdHIsIFdURk1vdmUocmVxdWVzdCksIFdlYkNv
cmU6OlVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2
aXR5KSk7CisgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51
c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tl
bklkZW50aWZpZXIpOworICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1
YWwoc291cmNlRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlcXVlc3QudXJsKCkpOworICAg
IGF1dG8gYXBpTmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRl
KFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8ucHRyKCksIG51
bGxwdHIsIFdURk1vdmUocmVxdWVzdCksIFdlYkNvcmU6OlVSTCgpLCBzaG91bGRPcGVuQXBwTGlu
a3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKICAgICBhdXRvIGFwaVdpbmRv
d0ZlYXR1cmVzID0gQVBJOjpXaW5kb3dGZWF0dXJlczo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzKTsK
IAotICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikgeworICAgIGlmIChtX3VpRGVsZWdhdGUubV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbkZvck5h
dmlnYXRpb25BY3Rpb25XaW5kb3dGZWF0dXJlc0FzeW5jKSB7CiAgICAgICAgIFJlZlB0cjxDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6Y3JlYXRl
V2ViVmlld1dpdGhDb25maWd1cmF0aW9uOmZvck5hdmlnYXRpb25BY3Rpb246d2luZG93RmVhdHVy
ZXM6Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAKICAgICAgICAgWyhpZCA8V0tVSURlbGVnYXRlUHJp
dmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBjcmVhdGVXZWJW
aWV3V2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBmb3JOYXZpZ2F0aW9uQWN0
aW9uOndyYXBwZXIoYXBpTmF2aWdhdGlvbkFjdGlvbikgd2luZG93RmVhdHVyZXM6d3JhcHBlcihh
cGlXaW5kb3dGZWF0dXJlcykgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZCAoV0tXZWJW
aWV3ICopPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwgcmVsYXRlZFdlYlZpZXcg
PSBSZXRhaW5QdHI8V0tXZWJWaWV3PihtX3VpRGVsZWdhdGUubV93ZWJWaWV3KV0oV0tXZWJWaWV3
ICp3ZWJWaWV3KSB7CkBAIC0yMjMsNDggKzIyMywxNyBAQCBSZWZQdHI8V2ViUGFnZVByb3h5PiBV
SURlbGVnYXRlOjpVSUNsaWVuCiAKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYlZp
ZXctPl9wYWdlLmdldCgpKTsKICAgICAgICAgfSkuZ2V0KCldOwotCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3Q3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbldp
bmRvd0ZlYXR1cmVzKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7
CiAKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gW2RlbGVnYXRlIHdlYlZpZXc6
bV91aURlbGVnYXRlLm1fd2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKSBmb3JOYXZpZ2F0aW9uQWN0aW9uOndyYXBwZXIoYXBpTmF2aWdhdGlv
bkFjdGlvbikgd2luZG93RmVhdHVyZXM6d3JhcHBlcihhcGlXaW5kb3dGZWF0dXJlcyldOwotCiAg
ICAgaWYgKCF3ZWJWaWV3KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogCiAgICAgaWYgKFt3ZWJWaWV3LT5fY29uZmln
dXJhdGlvbiBfcmVsYXRlZFdlYlZpZXddICE9IG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcpCiAgICAg
ICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBm
b3JtYXQ6QCJSZXR1cm5lZCBXS1dlYlZpZXcgd2FzIG5vdCBjcmVhdGVkIHdpdGggdGhlIGdpdmVu
IGNvbmZpZ3VyYXRpb24uIl07Ci0KLSAgICByZXR1cm4gd2ViVmlldy0+X3BhZ2UuZ2V0KCk7Ci19
Ci0KLVJlZlB0cjxXZWJQYWdlUHJveHk+IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQ
YWdlKFdlYlBhZ2VQcm94eSogcGFnZSwgQVBJOjpGcmFtZUluZm8mIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpX
aW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEpCi17Ci0gICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld0NyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbkZvck5hdmlnYXRpb25B
Y3Rpb25XaW5kb3dGZWF0dXJlcykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRv
IGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxl
Z2F0ZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gY3JlYXRlTmV3UGFn
ZUNvbW1vbihwYWdlLCBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgV1RGTW92ZShyZXF1ZXN0KSwgd2lu
ZG93RmVhdHVyZXMsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBudWxscHRyKTsKLX0K
LQotYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y2FuQ3JlYXRlTmV3UGFnZUFzeW5jKCkKLXsK
LSAgICByZXR1cm4gbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdDcmVhdGVX
ZWJWaWV3V2l0aENvbmZpZ3VyYXRpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uV2luZG93RmVhdHVyZXNB
c3luYwotICAgICAgICAmJiBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKLX0KLQotdm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZUFzeW5jKFdlYlBhZ2VQcm94eSog
cGFnZSwgQVBJOjpGcmFtZUluZm8mIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgd2lu
ZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IFdURjo6RnVuY3Rpb248dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKLXsKLSAgICBBU1NFUlQoY2FuQ3JlYXRlTmV3UGFnZUFzeW5jKCkpOwotICAgIEFT
U0VSVChtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NyZWF0ZVdlYlZpZXdX
aXRoQ29uZmlndXJhdGlvbkZvck5hdmlnYXRpb25BY3Rpb25XaW5kb3dGZWF0dXJlc0FzeW5jKTsK
LQotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKLSAg
ICBBU1NFUlQoZGVsZWdhdGUpOwotCi0gICAgY3JlYXRlTmV3UGFnZUNvbW1vbihwYWdlLCBvcmln
aW5hdGluZ0ZyYW1lSW5mbywgV1RGTW92ZShyZXF1ZXN0KSwgd2luZG93RmVhdHVyZXMsIFdURk1v
dmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIod2ViVmlldy0+X3BhZ2UuZ2V0KCkpOwogfQogCiB2b2lkIFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5KiwgY29u
c3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBGdW5j
dGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320200</attachid>
            <date>2017-09-07 16:10:29 -0700</date>
            <delta_ts>2017-09-07 16:13:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176568-20170907161028.patch</filename>
            <type>text/plain</type>
            <size>19407</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE3NjYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA5LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2xlYW4gdXAgQVBJ
OjpVSUNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc2NTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2UgZG9uJ3QgbmVlZCBjcmVhdGVOZXdQYWdlIGFuZCBjcmVhdGVOZXdQYWdlQXN5bmMuCisg
ICAgICAgIEFuIGFzeW5jIHZlcnNpb24gY2FuIHN1cHBvcnQgc3luY2hyb25vdXMgZGVsZWdhdGUg
Y2FsbHMgYnkganVzdCBjYWxsaW5nIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgc3luY2hyb25vdXNs
eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQ
STo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6Y3Jl
YXRlTmV3UGFnZUFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmNhbkNy
ZWF0ZU5ld1BhZ2VBc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlVUlDbGllbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVJQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAg
ICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZUNvbW1vbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5DcmVh
dGVOZXdQYWdlQXN5bmMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpV
SUNsaWVudDo6Y3JlYXRlTmV3UGFnZUFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVh
dGVOZXdQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKIDIwMTct
MDktMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBB
ZGQgQyBBUEkgdG8gcmV0cmlldmUgdGhlIG9yaWdpbmF0aW5nIHBhZ2Ugb2YgYSBXS0Rvd25sb2Fk
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9u
IDIyMTc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4NjQsMTQgKzM4NjQsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFVwZGF0ZUhpc3RvcnlUaXRsZQogCiAvLyBVSUNsaWVudAogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpD
cmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6
Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRl
TmV3UGFnZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9w
cm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwogICAg
IGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdp
bmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlE
KSk7CiAKICAgICBhdXRvIG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1lLT51cmwoKTsKIAotICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxX
ZWJQYWdlUHJveHk+KHRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92
ZShyZXBseSldKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIHsKKyAgICBtX3VpQ2xpZW50
LT5jcmVhdGVOZXdQYWdlKCp0aGlzLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwgV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZSh3aW5kb3dGZWF0dXJlcyksIFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbkRhdGEpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZlB0cjxXZWJQYWdlUHJveHk+
KHRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldKFJl
ZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIHsKICAgICAgICAgaWYgKCFuZXdQYWdlKSB7CiAg
ICAgICAgICAgICByZXBseS0+c2VuZCgwLCB7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
Mzg4MSwxOCArMzg4MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0
IEYKIAogICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKCp0aGlzLCAq
bmV3UGFnZSk7CiAgICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4
dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGhvc3RzQXJlRXF1YWwoVVJMKFBhcnNlZFVSTFN0
cmluZywgbWFpbkZyYW1lVVJMKSwgcmVxdWVzdC51cmwoKSk7Ci0KLSAgICB9OwotCi0gICAgaWYg
KG1fdWlDbGllbnQtPmNhbkNyZWF0ZU5ld1BhZ2VBc3luYygpKSB7Ci0gICAgICAgIG1fdWlDbGll
bnQtPmNyZWF0ZU5ld1BhZ2VBc3luYyh0aGlzLCBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgV1RGTW92
ZShyZXF1ZXN0KSwgd2luZG93RmVhdHVyZXMsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEp
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oUmVmUHRy
PFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bmV3UGFnZSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVm
UHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSA9IG1fdWlDbGllbnQtPmNyZWF0ZU5ld1BhZ2UodGhp
cywgb3JpZ2luYXRpbmdGcmFtZUluZm8sIFdURk1vdmUocmVxdWVzdCksIHdpbmRvd0ZlYXR1cmVz
LCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShuZXdQYWdlKSk7CisgICAgfSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2hvd1BhZ2UoKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDIyMTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYg
dXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIC8vIFVJIGNsaWVudAotICAgIHZvaWQgY3Jl
YXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgY3JlYXRlTmV3UGFn
ZShjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFn
ZTo6RGVsYXllZFJlcGx5PiYmKTsKICAgICB2b2lkIHNob3dQYWdlKCk7CiAgICAgdm9pZCBydW5K
YXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1
bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5PiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3Jp
cHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIGNvbnN0IFN0cmluZyYsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZh
U2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5PiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCShyZXZpc2lvbiAyMjE3NjQpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsOSAr
NzEsNyBAQCBjbGFzcyBVSUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VUlDbGllbnQo
KSB7IH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBjcmVhdGVO
ZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgRnJhbWVJbmZvJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGNyZWF0ZU5ld1BhZ2VBc3luYyhXZWJLaXQ6OldlYlBhZ2VQcm94eSosIEZyYW1lSW5mbyYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYs
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0
cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgfQotICAg
IHZpcnR1YWwgYm9vbCBjYW5DcmVhdGVOZXdQYWdlQXN5bmMoKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVOZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgUmVm
PEZyYW1lSW5mbz4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRv
d0ZlYXR1cmVzJiYsIFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgV1RGOjpGdW5jdGlv
bjx2b2lkKFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4mJik+JiYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBzaG93UGFnZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRW50ZXJGdWxsc2NyZWVuKFdlYktpdDo6V2ViUGFnZVBy
b3h5KikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJ
KHJldmlzaW9uIDIyMTc2NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NjUsMTkgKzE1NjUsMTkgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSog
cGFnZSwgQVBJOjpGcmFtZUluZm8mIHNvdXJjZUZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEpIGZpbmFsCisgICAgICAg
IHZvaWQgY3JlYXRlTmV3UGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxBUEk6OkZyYW1lSW5m
bz4mJiBzb3VyY2VGcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlc291cmNl
UmVxdWVzdCwgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV1RGOjpGdW5jdGlvbjx2b2lk
KFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQuY3JlYXRlTmV3UGFnZSkgewotICAgICAg
ICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHBhZ2UtPmNvbmZpZ3VyYXRpb24oKS5jb3B5
KCk7Ci0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0UmVsYXRlZFBhZ2UocGFnZSk7
CisgICAgICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gcGFnZS5jb25maWd1cmF0aW9u
KCkuY29weSgpOworICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlbGF0ZWRQYWdl
KCZwYWdlKTsKIAotICAgICAgICAgICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0g
cGFnZS0+cHJvY2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAgYm9vbCBzaG91
bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3VyY2VGcmFtZUluZm8ucmVxdWVzdCgp
LnVybCgpLCByZXNvdXJjZVJlcXVlc3QudXJsKCkpOwotICAgICAgICAgICAgICAgIGF1dG8gYXBp
TmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUo
bmF2aWdhdGlvbkFjdGlvbkRhdGEpLCAmc291cmNlRnJhbWVJbmZvLCBudWxscHRyLCBXVEZNb3Zl
KHJlc291cmNlUmVxdWVzdCksIFdlYkNvcmU6OlVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdU
Rk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CisgICAgICAgICAgICAgICAgYXV0byB1c2Vy
SW5pdGlhdGVkQWN0aXZpdHkgPSBwYWdlLnByb2Nlc3MoKS51c2VySW5pdGlhdGVkQWN0aXZpdHko
bmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOworICAgICAg
ICAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIWhvc3RzQXJlRXF1YWwoc291cmNl
RnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCksIHJlc291cmNlUmVxdWVzdC51cmwoKSk7CisgICAg
ICAgICAgICAgICAgYXV0byBhcGlOYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0
aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5m
by5wdHIoKSwgbnVsbHB0ciwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBXZWJDb3JlOjpVUkwo
KSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwog
CiAgICAgICAgICAgICAgICAgYXV0byBhcGlXaW5kb3dGZWF0dXJlcyA9IEFQSTo6V2luZG93RmVh
dHVyZXM6OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcyk7CiAKLSAgICAgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2UodG9BUEkocGFnZSksIHRvQVBJ
KGNvbmZpZ3VyYXRpb24ucHRyKCkpLCB0b0FQSShhcGlOYXZpZ2F0aW9uQWN0aW9uLnB0cigpKSwg
dG9BUEkoYXBpV2luZG93RmVhdHVyZXMucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRv
SW1wbChtX2NsaWVudC5jcmVhdGVOZXdQYWdlKHRvQVBJKCZwYWdlKSwgdG9BUEkoY29uZmlndXJh
dGlvbi5wdHIoKSksIHRvQVBJKGFwaU5hdmlnYXRpb25BY3Rpb24ucHRyKCkpLCB0b0FQSShhcGlX
aW5kb3dGZWF0dXJlcy5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1Bh
Z2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSB8fCBtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjApIHsKQEAgLTE2MDIsMTQgKzE2MDIsMTQgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZwogCiAgICAgICAgICAgICAgICAgaWYgKG1fY2xp
ZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSkgewogICAgICAgICAgICAg
ICAgICAgICBSZWY8QVBJOjpVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gQVBJOjpVUkxSZXF1ZXN0Ojpj
cmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEo
dG9BUEkocGFnZSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShmZWF0dXJlc01hcC5wdHIo
KSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRp
b25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYWRvcHRSZWYodG9J
bXBsKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSh0b0FQSSgm
cGFnZSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShmZWF0dXJlc01hcC5wdHIoKSksIHRv
QVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rp
b25EYXRhLm1vdXNlQnV0dG9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICAgICAgQVNTRVJUKG1fY2xpZW50LmNyZWF0
ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAodG9BUEkocGFnZSksIHRvQVBJKGZlYXR1cmVzTWFwLnB0cigpKSwgdG9BUEkobmF2aWdh
dGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW91
c2VCdXR0b24pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVO
ZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQSShmZWF0dXJl
c01hcC5wdHIoKSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJ
KG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKSkpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHZvaWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5KiBwYWdlKSBmaW5hbApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAko
cmV2aXNpb24gMjIxNzY0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0VUlDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYsMTEgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQ
YWdlKFdlYlBhZ2VQcm94eSosIEFQSTo6RnJhbWVJbmZvJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYgd2lu
ZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEp
IG92ZXJyaWRlCisgICAgdm9pZCBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSYsIFJlZjxBUEk6
OkZyYW1lSW5mbz4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0
LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRy
PFdlYlBhZ2VQcm94eT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAgICAgICBH
UmVmUHRyPFdlYktpdFVSSVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0VVJJUmVx
dWVzdENyZWF0ZUZvclJlc291cmNlUmVxdWVzdChyZXNvdXJjZVJlcXVlc3QpKTsKICAgICAgICAg
V2ViS2l0TmF2aWdhdGlvbkFjdGlvbiBuYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QuZ2V0KCksIG5h
dmlnYXRpb25BY3Rpb25EYXRhKTsKLSAgICAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdDcmVhdGVO
ZXdQYWdlKG1fd2ViVmlldywgd2luZG93RmVhdHVyZXMsICZuYXZpZ2F0aW9uQWN0aW9uKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIod2Via2l0V2ViVmlld0NyZWF0ZU5ld1BhZ2UobV93ZWJW
aWV3LCB3aW5kb3dGZWF0dXJlcywgJm5hdmlnYXRpb25BY3Rpb24pKTsKICAgICB9CiAKICAgICB2
b2lkIHNob3dQYWdlKFdlYlBhZ2VQcm94eSopIG92ZXJyaWRlCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmgJKHJldmlzaW9uIDIy
MTcwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3LDExICsxNyw4IEBACiAgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFdlYktpdFVJQ2xpZW50X2gKLSNkZWZpbmUgV2Vi
S2l0VUlDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3Lmgi
CiAKIHZvaWQgYXR0YWNoVUlDbGllbnRUb1ZpZXcoV2ViS2l0V2ViVmlldyopOwotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgJKHJldmlz
aW9uIDIyMTcxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNzksMTEgKzc5LDcgQEAgcHJpdmF0ZToKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIC8vIEFQSTo6VUlDbGllbnQKLSAgICAgICAgUmVmUHRyPFdlYlBhZ2VQcm94
eT4gY3JlYXRlTmV3UGFnZShXZWJQYWdlUHJveHkqLCBBUEk6OkZyYW1lSW5mbyYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYpIGZpbmFsOwotICAgICAgICB2b2lkIGNyZWF0ZU5ld1BhZ2VBc3lu
YyhXZWJQYWdlUHJveHkqLCBBUEk6OkZyYW1lSW5mbyYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIFdURjo6RnVuY3Rpb248dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgZmluYWw7Ci0gICAgICAgIGJvb2wgY2FuQ3JlYXRlTmV3UGFnZUFzeW5jKCkg
ZmluYWw7Ci0gICAgICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZU5ld1BhZ2VDb21tb24o
V2ViUGFnZVByb3h5KiwgQVBJOjpGcmFtZUluZm8mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpOwotCisgICAgICAgIHZvaWQgY3JlYXRlTmV3UGFnZShXZWJQYWdlUHJveHkmLCBS
ZWY8QVBJOjpGcmFtZUluZm8+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94eT4mJik+JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGNs
b3NlKFdlYlBhZ2VQcm94eSopIGZpbmFsOwogICAgICAgICB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1
cm5Ub0lubGluZShXZWJQYWdlUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRFbnRlckZ1
bGxzY3JlZW4oV2ViUGFnZVByb3h5KikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDIyMTcxNCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5
MSw3ICsxOTEsNyBAQCBVSURlbGVnYXRlOjpVSUNsaWVudDo6flVJQ2xpZW50KCkKIHsKIH0KIAot
UmVmUHRyPFdlYlBhZ2VQcm94eT4gVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2VD
b21tb24oV2ViUGFnZVByb3h5KiBwYWdlLCBBUEk6OkZyYW1lSW5mbyYgc291cmNlRnJhbWVJbmZv
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpXaW5k
b3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIFdURjo6RnVuY3Rpb248dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0
ZU5ld1BhZ2UoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8QVBJOjpGcmFtZUluZm8+JiYgc291cmNl
RnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpX
aW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94
eT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlE
ZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOwogICAgIEFTU0VSVChkZWxlZ2F0ZSk7CkBAIC0xOTks
MTMgKzE5OSwxMyBAQCBSZWZQdHI8V2ViUGFnZVByb3h5PiBVSURlbGVnYXRlOjpVSUNsaWVuCiAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbbV91aURlbGVnYXRlLm1fd2ViVmlldy0+
X2NvbmZpZ3VyYXRpb24gY29weV0pOwogICAgIFtjb25maWd1cmF0aW9uIF9zZXRSZWxhdGVkV2Vi
VmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsKIAotICAgIGF1dG8gdXNlckluaXRpYXRlZEFj
dGl2aXR5ID0gcGFnZS0+cHJvY2VzcygpLnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9u
QWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAgYm9vbCBzaG91bGRP
cGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3VyY2VGcmFtZUluZm8ucmVxdWVzdCgpLnVy
bCgpLCByZXF1ZXN0LnVybCgpKTsKLSAgICBhdXRvIGFwaU5hdmlnYXRpb25BY3Rpb24gPSBBUEk6
Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwg
JnNvdXJjZUZyYW1lSW5mbywgbnVsbHB0ciwgV1RGTW92ZShyZXF1ZXN0KSwgV2ViQ29yZTo6VVJM
KCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsK
KyAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHBhZ2UucHJvY2VzcygpLnVzZXJJbml0
aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRp
Zmllcik7CisgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhaG9zdHNBcmVFcXVhbChzb3Vy
Y2VGcmFtZUluZm8tPnJlcXVlc3QoKS51cmwoKSwgcmVxdWVzdC51cmwoKSk7CisgICAgYXV0byBh
cGlOYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92
ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwg
V1RGTW92ZShyZXF1ZXN0KSwgV2ViQ29yZTo6VVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RG
TW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKIAogICAgIGF1dG8gYXBpV2luZG93RmVhdHVy
ZXMgPSBBUEk6OldpbmRvd0ZlYXR1cmVzOjpjcmVhdGUod2luZG93RmVhdHVyZXMpOwogCi0gICAg
aWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgaWYgKG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3Q3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uRm9yTmF2aWdhdGlv
bkFjdGlvbldpbmRvd0ZlYXR1cmVzQXN5bmMpIHsKICAgICAgICAgUmVmUHRyPENvbXBsZXRpb25I
YW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
OjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzpjcmVhdGVXZWJWaWV3
V2l0aENvbmZpZ3VyYXRpb246Zm9yTmF2aWdhdGlvbkFjdGlvbjp3aW5kb3dGZWF0dXJlczpjb21w
bGV0aW9uSGFuZGxlcjopKTsKIAogICAgICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilk
ZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRo
Q29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGZvck5hdmlnYXRpb25BY3Rpb246d3Jh
cHBlcihhcGlOYXZpZ2F0aW9uQWN0aW9uKSB3aW5kb3dGZWF0dXJlczp3cmFwcGVyKGFwaVdpbmRv
d0ZlYXR1cmVzKSBjb21wbGV0aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkIChXS1dlYlZpZXcgKik+
Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpLCByZWxhdGVkV2ViVmlldyA9IFJldGFp
blB0cjxXS1dlYlZpZXc+KG1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcpXShXS1dlYlZpZXcgKndlYlZp
ZXcpIHsKQEAgLTIyMyw0OCArMjIzLDE3IEBAIFJlZlB0cjxXZWJQYWdlUHJveHk+IFVJRGVsZWdh
dGU6OlVJQ2xpZW4KIAogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2ViVmlldy0+X3Bh
Z2UuZ2V0KCkpOwogICAgICAgICB9KS5nZXQoKV07Ci0KLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQorICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdD
cmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uV2luZG93RmVh
dHVyZXMpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKIAogICAg
IFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVs
ZWdhdGUubV93ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpIGZvck5hdmlnYXRpb25BY3Rpb246d3JhcHBlcihhcGlOYXZpZ2F0aW9uQWN0aW9u
KSB3aW5kb3dGZWF0dXJlczp3cmFwcGVyKGFwaVdpbmRvd0ZlYXR1cmVzKV07Ci0KICAgICBpZiAo
IXdlYlZpZXcpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7CiAKICAgICBpZiAoW3dlYlZpZXctPl9jb25maWd1cmF0aW9u
IF9yZWxhdGVkV2ViVmlld10gIT0gbV91aURlbGVnYXRlLm1fd2ViVmlldykKICAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1hdDpA
IlJldHVybmVkIFdLV2ViVmlldyB3YXMgbm90IGNyZWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY29uZmln
dXJhdGlvbi4iXTsKLQotICAgIHJldHVybiB3ZWJWaWV3LT5fcGFnZS5nZXQoKTsKLX0KLQotUmVm
UHRyPFdlYlBhZ2VQcm94eT4gVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNyZWF0ZU5ld1BhZ2UoV2Vi
UGFnZVByb3h5KiBwYWdlLCBBUEk6OkZyYW1lSW5mbyYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSkKLXsKLSAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3Q3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbldp
bmRvd0ZlYXR1cmVzKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gZGVsZWdh
dGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAoIWRlbGVnYXRlKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBjcmVhdGVOZXdQYWdlQ29tbW9u
KHBhZ2UsIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBXVEZNb3ZlKHJlcXVlc3QpLCB3aW5kb3dGZWF0
dXJlcywgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG51bGxwdHIpOwotfQotCi1ib29s
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjYW5DcmVhdGVOZXdQYWdlQXN5bmMoKQotewotICAgIHJl
dHVybiBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NyZWF0ZVdlYlZpZXdX
aXRoQ29uZmlndXJhdGlvbkZvck5hdmlnYXRpb25BY3Rpb25XaW5kb3dGZWF0dXJlc0FzeW5jCi0g
ICAgICAgICYmIG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOwotfQotCi12b2lkIFVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlQXN5bmMoV2ViUGFnZVByb3h5KiBwYWdlLCBB
UEk6OkZyYW1lSW5mbyYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0
dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV1RGOjpG
dW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJQYWdlUHJveHk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQotewotICAgIEFTU0VSVChjYW5DcmVhdGVOZXdQYWdlQXN5bmMoKSk7Ci0gICAgQVNTRVJUKG1f
dWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q3JlYXRlV2ViVmlld1dpdGhDb25m
aWd1cmF0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbldpbmRvd0ZlYXR1cmVzQXN5bmMpOwotCi0gICAg
YXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOwotICAgIEFTU0VS
VChkZWxlZ2F0ZSk7Ci0KLSAgICBjcmVhdGVOZXdQYWdlQ29tbW9uKHBhZ2UsIG9yaWdpbmF0aW5n
RnJhbWVJbmZvLCBXVEZNb3ZlKHJlcXVlc3QpLCB3aW5kb3dGZWF0dXJlcywgV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcih3ZWJWaWV3LT5fcGFnZS5nZXQoKSk7CiB9CiAKIHZvaWQgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6
OlN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
</data>
<flag name="review"
          id="340344"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>