<?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>180398</bug_id>
          
          <creation_ts>2017-12-05 01:53:42 -0800</creation_ts>
          <short_desc>WebDriver: implement maximize, minimize and fullscreen window commands</short_desc>
          <delta_ts>2018-05-24 01:55:22 -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>WebDriver</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>
          <dependson>182837</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1378121</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-12-05 01:53:42 -0800</bug_when>
    <thetext>https://w3c.github.io/webdriver/webdriver-spec.html#maximize-window
https://w3c.github.io/webdriver/webdriver-spec.html#minimize-window
https://w3c.github.io/webdriver/webdriver-spec.html#fullscreen-window</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424677</commentid>
    <comment_count>1</comment_count>
      <attachid>340572</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-05-17 04:44:20 -0700</bug_when>
    <thetext>Created attachment 340572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424679</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-17 04:46:39 -0700</bug_when>
    <thetext>Attachment 340572 did not pass style-queue:


ERROR: Source/WebDriver/Session.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.h:94:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.h:95:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/WebDriverService.cpp:974:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/WebDriverService.cpp:982:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/WebDriverService.cpp:990:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/WebDriverService.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/WebDriverService.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/WebDriverService.h:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:777:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:802:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:827:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 12 in 19 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>1424687</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-05-17 05:30:45 -0700</bug_when>
    <thetext>EWS failure seems to be an icecc issue.

ICECC[11888] 04:48:37: flush_writebuf() failed Broken pipe
ICECC[11888] 04:48:37: no server found behind given hostname 127.0.0.1:0
ICECC[11888] 04:48:37: got exception Error 2 - no server found at 127.0.0.1 (127.0.0.1) 
[4727/5056] Building CXX object Source/WebKit/CMakeFiles/WebKit.dir/UIProcess/API/glib/WebKitWebContext.cpp.o
ICECC[11820] 04:48:36: got exception Error 14 - error reading message from remote (192.168.10.107) 
ninja: build stopped: subcommand failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426049</commentid>
    <comment_count>4</comment_count>
      <attachid>340956</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-05-21 22:49:59 -0700</bug_when>
    <thetext>Created attachment 340956
Try to fix iOS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426050</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-21 22:51:56 -0700</bug_when>
    <thetext>Attachment 340956 did not pass style-queue:


ERROR: Source/WebDriver/Session.h:93:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.h:94:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.h:95:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/WebDriverService.cpp:974:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/WebDriverService.cpp:982:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/WebDriverService.cpp:990:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/WebDriverService.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/WebDriverService.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/WebDriverService.h:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:777:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:802:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebDriver/Session.cpp:827:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 12 in 19 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>1426259</commentid>
    <comment_count>6</comment_count>
      <attachid>340956</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-05-22 13:18:52 -0700</bug_when>
    <thetext>Comment on attachment 340956
Try to fix iOS builds

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

r=me except GObject parts in WebKitWebViewGTK.cpp, which I do not understand.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:118
&gt; +        completeTimer.startOneShot(1_s);

Seems like a good idea, though I&apos;ve never had it flake out on macOS yet.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:190
&gt; +#if ENABLE(DEVELOPER_MODE)

Why is this part guarded?

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:196
&gt; +            gtk_window_move(window, screenRect.x(), screenRect.y());

Should this be (0,0), or are the coordinates flipped somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426550</commentid>
    <comment_count>7</comment_count>
      <attachid>340956</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-05-23 06:31:51 -0700</bug_when>
    <thetext>Comment on attachment 340956
Try to fix iOS builds

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

&gt;&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:118
&gt;&gt; +        completeTimer.startOneShot(1_s);
&gt; 
&gt; Seems like a good idea, though I&apos;ve never had it flake out on macOS yet.

I think it&apos;s in the spec, but it doesn&apos;t say how long the timer should be, IIRC

&gt;&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:190
&gt;&gt; +#if ENABLE(DEVELOPER_MODE)
&gt; 
&gt; Why is this part guarded?

Because this code is only for the tests, it&apos;s a workaround for Xvfb, and tests are only built when developer mode is enabled.

&gt;&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:196
&gt;&gt; +            gtk_window_move(window, screenRect.x(), screenRect.y());
&gt; 
&gt; Should this be (0,0), or are the coordinates flipped somehow?

screenAvailableRect takes into account if there&apos;s a top panel at 0,0 for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426586</commentid>
    <comment_count>8</comment_count>
      <attachid>340956</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-05-23 08:10:28 -0700</bug_when>
    <thetext>Comment on attachment 340956
Try to fix iOS builds

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

The bottom portions of webkitWebViewMaximizeWindow and webkitWebViewRestoreWindow feel pretty crowded, I would add some more blank lines in there.

&gt; Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp:117
&gt; +    void requestMaximizeWindowOfPage(WebAutomationSession&amp;, WebPageProxy&amp; page, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler) override
&gt; +    {
&gt; +        auto* webView = webkitWebContextGetWebViewForPage(m_session-&gt;priv-&gt;webContext, &amp;page);
&gt; +        if (!webView)
&gt; +            completionHandler();
&gt; +        webkitWebViewMaximizeWindow(webView, WTFMove(completionHandler));
&gt; +    }
&gt; +
&gt; +    void requestHideWindowOfPage(WebAutomationSession&amp;, WebPageProxy&amp; page, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler) override
&gt; +    {
&gt; +        auto* webView = webkitWebContextGetWebViewForPage(m_session-&gt;priv-&gt;webContext, &amp;page);
&gt; +        if (!webView)
&gt; +            completionHandler();
&gt; +        webkitWebViewMinimizeWindow(webView, WTFMove(completionHandler));
&gt; +    }
&gt; +
&gt; +    void requestRestoreWindowOfPage(WebAutomationSession&amp;, WebPageProxy&amp; page, CompletionHandler&lt;void()&gt;&amp;&amp; completionHandler) override
&gt; +    {
&gt; +        auto* webView = webkitWebContextGetWebViewForPage(m_session-&gt;priv-&gt;webContext, &amp;page);
&gt; +        if (!webView)
&gt; +            completionHandler();
&gt; +        webkitWebViewRestoreWindow(webView, WTFMove(completionHandler));
&gt; +    }

These all look wrong to me, shouldn&apos;t it be something like:

if (auto* webView = webkitWebContextGetWebViewForPage(m_session-&gt;priv-&gt;webContext, &amp;page))
    webkitWebViewMaximizeWindow(webView, WTFMove(completionHandler));
else
    completionHandler();

Otherwise you&apos;re calling WebKitWebView methods with a NULL webview, and the completion handler could be called twice.

r=me on the rest of the GTK bits.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:117
&gt; +        // Complete the event if not done after 1 second.

Nit: &quot;one second.&quot;

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:134
&gt; +    Type type;
&gt; +    CompletionHandler&lt;void()&gt; completionHandler;
&gt; +    RunLoop::Timer&lt;WindowStateEvent&gt; completeTimer;

How about some m_ for these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426592</commentid>
    <comment_count>9</comment_count>
      <attachid>340956</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-05-23 08:21:57 -0700</bug_when>
    <thetext>Comment on attachment 340956
Try to fix iOS builds

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

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitAutomationSession.cpp:117
&gt;&gt; +    }
&gt; 
&gt; These all look wrong to me, shouldn&apos;t it be something like:
&gt; 
&gt; if (auto* webView = webkitWebContextGetWebViewForPage(m_session-&gt;priv-&gt;webContext, &amp;page))
&gt;     webkitWebViewMaximizeWindow(webView, WTFMove(completionHandler));
&gt; else
&gt;     completionHandler();
&gt; 
&gt; Otherwise you&apos;re calling WebKitWebView methods with a NULL webview, and the completion handler could be called twice.
&gt; 
&gt; r=me on the rest of the GTK bits.

Oops, you are right, there&apos;s a missing return in all those cases after completionHandler(); I&apos;ll better use your proposal

&gt;&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:134
&gt;&gt; +    RunLoop::Timer&lt;WindowStateEvent&gt; completeTimer;
&gt; 
&gt; How about some m_ for these?

This is a struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426892</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-05-24 01:54:46 -0700</bug_when>
    <thetext>Committed r232150: &lt;https://trac.webkit.org/changeset/232150&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426893</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-24 01:55:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/40514627&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340572</attachid>
            <date>2018-05-17 04:44:20 -0700</date>
            <delta_ts>2018-05-21 22:49:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wd-window-commands.diff</filename>
            <type>text/plain</type>
            <size>36219</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NNYWtlTGlzdHMudHh0CmluZGV4IDhiYjEwNzc3ODhjLi4wNzY4YWU5ZGMxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NNYWtlTGlzdHMudHh0CkBAIC0yMiw2ICsyMiw3IEBAIHNldChXZWJEcml2ZXJfTElC
UkFSSUVTCiBzZXQoV2ViRHJpdmVyX1NDUklQVFMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL2F0b21zL0VsZW1lbnRBdHRyaWJ1dGUuanMKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2F0b21zL0VsZW1lbnREaXNwbGF5ZWQuanMKKyAgICAke1dF
QktJVF9ESVJ9L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2F0b21zL0VudGVyRnVsbHNjcmVlbi5qcwog
ICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0F1dG9tYXRpb24vYXRvbXMvRmluZE5vZGVzLmpz
CiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQXV0b21hdGlvbi9hdG9tcy9Gb3JtRWxlbWVu
dENsZWFyLmpzCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQXV0b21hdGlvbi9hdG9tcy9G
b3JtU3VibWl0LmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IDllNWUwYTAxZDIwLi4xYmZiNTMxODgwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRy
aXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wNS0xNyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgV2ViRHJpdmVyOiBpbXBs
ZW1lbnQgbWF4aW1pemUsIG1pbmltaXplIGFuZCBmdWxsc2NyZWVuIHdpbmRvdyBjb21tYW5kcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzk4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDogQWRkIEVudGVyRnVsbHNjcmVlbi5qcyB0byB0aGUgYnVpbGQuCisgICAgICAgICog
U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246Om1heGltaXplV2luZG93
KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6bWluaW1pemVXaW5kb3cpOgorICAgICAg
ICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpmdWxsc2NyZWVuV2luZG93KToKKyAgICAgICAgKiBTZXNz
aW9uLmg6CisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5jcHA6CisgICAgICAgIChXZWJEcml2
ZXI6OldlYkRyaXZlclNlcnZpY2U6Om1heGltaXplV2luZG93KToKKyAgICAgICAgKFdlYkRyaXZl
cjo6V2ViRHJpdmVyU2VydmljZTo6bWluaW1pemVXaW5kb3cpOgorICAgICAgICAoV2ViRHJpdmVy
OjpXZWJEcml2ZXJTZXJ2aWNlOjpmdWxsc2NyZWVuV2luZG93KToKKyAgICAgICAgKiBXZWJEcml2
ZXJTZXJ2aWNlLmg6CisKIDIwMTgtMDUtMDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYkRyaXZlcjogaW1wbGVtZW50IGFkdmFuY2UgdXNl
ciBpbnRlcmFjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDNkOTVhYjQyMDhlLi41MzM1Njk2
NWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCkBAIC03NzQsNiArNzc0LDk2IEBAIHZvaWQgU2Vzc2lv
bjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHksIHN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgU2Vzc2lvbjo6bWF4aW1pemVXaW5kb3co
RnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAoIW1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6Ok5v
U3VjaFdpbmRvdykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaGFuZGxlVXNlclBy
b21wdHMoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAocmVzdWx0
LmlzRXJyb3IoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1
bHQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxK
U09OOjpPYmplY3Q+IHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgICAg
ICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJoYW5kbGUiKSwgbV90b3BsZXZl
bEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRv
QmFja2VuZChBU0NJSUxpdGVyYWwoIm1heGltaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHQiKSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Np
b25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAocmVzcG9uc2UuaXNFcnJvcikgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBn
ZXRUb3BsZXZlbEJyb3dzaW5nQ29udGV4dFJlY3QoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTZXNzaW9uOjptaW5pbWl6ZVdpbmRv
dyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmICghbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dCkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6
Tm9TdWNoV2luZG93KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBoYW5kbGVVc2Vy
UHJvbXB0cyhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXN1
bHQuaXNFcnJvcigpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRy
PEpTT046Ok9iamVjdD4gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAg
ICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImhhbmRsZSIpLCBtX3RvcGxl
dmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5k
VG9CYWNrZW5kKEFTQ0lJTGl0ZXJhbCgiaGlkZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0IiksIFdU
Rk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9u
SG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ2V0
VG9wbGV2ZWxCcm93c2luZ0NvbnRleHRSZWN0KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2Vzc2lvbjo6ZnVsbHNjcmVlbldpbmRv
dyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmICghbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dCkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6
Tm9TdWNoV2luZG93KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBoYW5kbGVVc2Vy
UHJvbXB0cyhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXN1
bHQuaXNFcnJvcigpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRy
PEpTT046Ok9iamVjdD4gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAg
ICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImJyb3dzaW5nQ29udGV4dEhh
bmRsZSIpLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOworICAgICAgICBwYXJh
bWV0ZXJzLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJmdW5jdGlvbiIpLCBFbnRlckZ1bGxzY3Jl
ZW5KYXZhU2NyaXB0KTsKKyAgICAgICAgcGFyYW1ldGVycy0+c2V0QXJyYXkoQVNDSUlMaXRlcmFs
KCJhcmd1bWVudHMiKSwgSlNPTjo6QXJyYXk6OmNyZWF0ZSgpKTsKKyAgICAgICAgcGFyYW1ldGVy
cy0+c2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwoImV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1l
bnQiKSwgdHJ1ZSk7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoQVNDSUlM
aXRlcmFsKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiIpLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3Bv
bnNlJiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJy
b3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNl
T2JqZWN0KSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgU3RyaW5nIHZhbHVlU3RyaW5nOworICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5y
ZXNwb25zZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicmVzdWx0IiksIHZhbHVlU3Ry
aW5nKSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6
OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSZWZQdHI8SlNPTjo6
VmFsdWU+IHJlc3VsdFZhbHVlOworICAgICAgICAgICAgaWYgKCFKU09OOjpWYWx1ZTo6cGFyc2VK
U09OKHZhbHVlU3RyaW5nLCByZXN1bHRWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6
VW5rbm93bkVycm9yKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBnZXRUb3BsZXZlbEJyb3dzaW5nQ29udGV4dFJlY3QoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogUmVmUHRyPEpTT046
Ok9iamVjdD4gU2Vzc2lvbjo6Y3JlYXRlRWxlbWVudChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgdmFs
dWUpCiB7CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVPYmplY3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5o
CmluZGV4IGVjNjQzMGE2ZDhkLi43MmFiMDdkYmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmgKQEAgLTkwLDYg
KzkwLDkgQEAgcHVibGljOgogICAgIHZvaWQgc3dpdGNoVG9QYXJlbnRGcmFtZShGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIGdldFdpbmRvd1JlY3QoRnVuY3Rp
b248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBzZXRXaW5kb3dSZWN0KHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB4LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVpZ2h0LCBGdW5jdGlv
bjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKKyAgICB2b2lkIG1heGltaXplV2luZG93KEZ1
bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOworICAgIHZvaWQgbWluaW1pemVXaW5k
b3coRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CisgICAgdm9pZCBmdWxsc2Ny
ZWVuV2luZG93KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwogICAgIHZvaWQg
ZmluZEVsZW1lbnRzKGNvbnN0IFN0cmluZyYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgc2VsZWN0
b3IsIEZpbmRFbGVtZW50c01vZGUsIGNvbnN0IFN0cmluZyYgcm9vdEVsZW1lbnRJRCwgRnVuY3Rp
b248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBnZXRBY3RpdmVFbGVtZW50
KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwogICAgIHZvaWQgaXNFbGVtZW50
U2VsZWN0ZWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRS
ZXN1bHQmJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2
aWNlLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKaW5kZXggZWUz
ZmM2ZTI1ODkuLjM4ZDE5ZTRmODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5j
cHAKQEAgLTEyMiw2ICsxMjIsOSBAQCBjb25zdCBXZWJEcml2ZXJTZXJ2aWNlOjpDb21tYW5kIFdl
YkRyaXZlclNlcnZpY2U6OnNfY29tbWFuZHNbXSA9IHsKICAgICB7IEhUVFBNZXRob2Q6OlBvc3Qs
ICIvc2Vzc2lvbi8kc2Vzc2lvbklkL2ZyYW1lL3BhcmVudCIsICZXZWJEcml2ZXJTZXJ2aWNlOjpz
d2l0Y2hUb1BhcmVudEZyYW1lIH0sCiAgICAgeyBIVFRQTWV0aG9kOjpHZXQsICIvc2Vzc2lvbi8k
c2Vzc2lvbklkL3dpbmRvdy9yZWN0IiwgJldlYkRyaXZlclNlcnZpY2U6OmdldFdpbmRvd1JlY3Qg
fSwKICAgICB7IEhUVFBNZXRob2Q6OlBvc3QsICIvc2Vzc2lvbi8kc2Vzc2lvbklkL3dpbmRvdy9y
ZWN0IiwgJldlYkRyaXZlclNlcnZpY2U6OnNldFdpbmRvd1JlY3QgfSwKKyAgICB7IEhUVFBNZXRo
b2Q6OlBvc3QsICIvc2Vzc2lvbi8kc2Vzc2lvbklkL3dpbmRvdy9tYXhpbWl6ZSIsICZXZWJEcml2
ZXJTZXJ2aWNlOjptYXhpbWl6ZVdpbmRvdyB9LAorICAgIHsgSFRUUE1ldGhvZDo6UG9zdCwgIi9z
ZXNzaW9uLyRzZXNzaW9uSWQvd2luZG93L21pbmltaXplIiwgJldlYkRyaXZlclNlcnZpY2U6Om1p
bmltaXplV2luZG93IH0sCisgICAgeyBIVFRQTWV0aG9kOjpQb3N0LCAiL3Nlc3Npb24vJHNlc3Np
b25JZC93aW5kb3cvZnVsbHNjcmVlbiIsICZXZWJEcml2ZXJTZXJ2aWNlOjpmdWxsc2NyZWVuV2lu
ZG93IH0sCiAKICAgICB7IEhUVFBNZXRob2Q6OlBvc3QsICIvc2Vzc2lvbi8kc2Vzc2lvbklkL2Vs
ZW1lbnQiLCAmV2ViRHJpdmVyU2VydmljZTo6ZmluZEVsZW1lbnQgfSwKICAgICB7IEhUVFBNZXRo
b2Q6OlBvc3QsICIvc2Vzc2lvbi8kc2Vzc2lvbklkL2VsZW1lbnRzIiwgJldlYkRyaXZlclNlcnZp
Y2U6OmZpbmRFbGVtZW50cyB9LApAQCAtOTY4LDYgKzk3MSwzMCBAQCB2b2lkIFdlYkRyaXZlclNl
cnZpY2U6OnNldFdpbmRvd1JlY3QoUmVmUHRyPEpTT046Ok9iamVjdD4mJiBwYXJhbWV0ZXJzLCBG
dW5jdGlvbgogICAgICAgICBtX3Nlc3Npb24tPnNldFdpbmRvd1JlY3QoeCwgeSwgd2lkdGgsIGhl
aWdodCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFdlYkRyaXZlclNl
cnZpY2U6Om1heGltaXplV2luZG93KFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgcGFyYW1ldGVycywg
RnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICAvLyDCpzEwLjcuMyBNYXhpbWl6ZSBXaW5kb3cKKyAgICAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vd2ViZHJpdmVyLyNtYXhpbWl6ZS13aW5kb3cKKyAgICBpZiAoZmluZFNlc3Npb25PckNv
bXBsZXRlV2l0aEVycm9yKCpwYXJhbWV0ZXJzLCBjb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAg
IG1fc2Vzc2lvbi0+bWF4aW1pemVXaW5kb3coV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCit2b2lkIFdlYkRyaXZlclNlcnZpY2U6Om1pbmltaXplV2luZG93KFJlZlB0cjxKU09OOjpP
YmplY3Q+JiYgcGFyYW1ldGVycywgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyDCpzEwLjcuNCBNaW5pbWl6ZSBXaW5kb3cKKyAg
ICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViZHJpdmVyLyNtaW5pbWl6ZS13aW5kb3cKKyAg
ICBpZiAoZmluZFNlc3Npb25PckNvbXBsZXRlV2l0aEVycm9yKCpwYXJhbWV0ZXJzLCBjb21wbGV0
aW9uSGFuZGxlcikpCisgICAgICAgIG1fc2Vzc2lvbi0+bWluaW1pemVXaW5kb3coV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmZ1bGxzY3Jl
ZW5XaW5kb3coUmVmUHRyPEpTT046Ok9iamVjdD4mJiBwYXJhbWV0ZXJzLCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIMKnMTAu
Ny41IEZ1bGxzY3JlZW4gV2luZG93CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRy
aXZlci8jZnVsbHNjcmVlbi13aW5kb3cKKyAgICBpZiAoZmluZFNlc3Npb25PckNvbXBsZXRlV2l0
aEVycm9yKCpwYXJhbWV0ZXJzLCBjb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIG1fc2Vzc2lv
bi0+ZnVsbHNjcmVlbldpbmRvdyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZv
aWQgV2ViRHJpdmVyU2VydmljZTo6Y2xvc2VXaW5kb3coUmVmUHRyPEpTT046Ok9iamVjdD4mJiBw
YXJhbWV0ZXJzLCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIC8vIMKnMTAuMiBDbG9zZSBXaW5kb3cuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuaCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJp
dmVyU2VydmljZS5oCmluZGV4IDdlYTQ1YmRjYzU0Li40ZDY4NzhlZjQ1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmgKKysrIGIvU291cmNlL1dlYkRyaXZl
ci9XZWJEcml2ZXJTZXJ2aWNlLmgKQEAgLTc5LDYgKzc5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHN3aXRjaFRvUGFyZW50RnJhbWUoUmVmUHRyPEpTT046Ok9iamVjdD4mJiwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBnZXRXaW5kb3dSZWN0KFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwogICAg
IHZvaWQgc2V0V2luZG93UmVjdChSZWZQdHI8SlNPTjo6T2JqZWN0PiYmLCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUmVzdWx0JiYpPiYmKTsKKyAgICB2b2lkIG1heGltaXplV2luZG93KFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOworICAg
IHZvaWQgbWluaW1pemVXaW5kb3coUmVmUHRyPEpTT046Ok9iamVjdD4mJiwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CisgICAgdm9pZCBmdWxsc2NyZWVuV2luZG93KFJlZlB0
cjxKU09OOjpPYmplY3Q+JiYsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwog
ICAgIHZvaWQgZmluZEVsZW1lbnQoUmVmUHRyPEpTT046Ok9iamVjdD4mJiwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBmaW5kRWxlbWVudHMoUmVmUHRyPEpT
T046Ok9iamVjdD4mJiwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAg
dm9pZCBmaW5kRWxlbWVudEZyb21FbGVtZW50KFJlZlB0cjxKU09OOjpPYmplY3Q+JiYsIEZ1bmN0
aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzN2UwYTcyY2Q0NS4u
YTcwYjRhZWQwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTgtMDUtMTcgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFdlYkRyaXZl
cjogaW1wbGVtZW50IG1heGltaXplLCBtaW5pbWl6ZSBhbmQgZnVsbHNjcmVlbiB3aW5kb3cgY29t
bWFuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oOgorICAgICAgICAoQVBJ
OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6cmVxdWVzdE1heGltaXplV2luZG93T2ZQYWdlKTog
QWRkZWQgdG8gYWxsb3cgY2xpZW50cyBtYXhpbWl6ZSB0aGUgd2luZG93LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHA6CisgICAgICAgIChXaW5kb3dTdGF0
ZUV2ZW50OjpXaW5kb3dTdGF0ZUV2ZW50KTogU3RydWN0IHRvIGhhbmRsZSB3aW5kb3cgc3RhdGUg
ZXZlbnRzLgorICAgICAgICAoV2luZG93U3RhdGVFdmVudDo6fldpbmRvd1N0YXRlRXZlbnQpOiBD
b21wbGV0ZSB0aGUgZXZlbnQuCisgICAgICAgIChXaW5kb3dTdGF0ZUV2ZW50Ojpjb21wbGV0ZSk6
IENhbGwgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBpcyBub3QgY2FsbGVkIGFscmVhZHkuCisgICAg
ICAgICh3aW5kb3dTdGF0ZUV2ZW50Q2FsbGJhY2spOiBIYW5kbGUgd2luZG93IHN0YXRlIGV2ZW50
IGNoYW5nZXMuCisgICAgICAgICh3ZWJraXRXZWJWaWV3TWF4aW1pemVXaW5kb3cpOiBUcnkgdG8g
bWF4aW1pemUgdGhlIHdpbmRvdyBhbmQgd2FpdCBmb3IgdGhlIGV2ZW50LgorICAgICAgICAod2Vi
a2l0V2ViVmlld01pbmltaXplV2luZG93KTogVHJ5IHRvIG1pbmltaXplIHRoZSB3aW5kb3cgYW5k
IHdhaXQgZm9yIHRoZSBldmVudC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSZXN0b3JlV2luZG93
KTogVHJ5IHRvIHVubWF4aW1pemUgb3IgdW5taW5pbWl6ZSB0aGUgd2luZG93IGFuZCB3YWl0IGZv
ciB0aGUgZXZlbnQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQ
RS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TWF4aW1pemVXaW5kb3cpOgorICAgICAgICAo
d2Via2l0V2ViVmlld01pbmltaXplV2luZG93KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSZXN0
b3JlV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpz
b246CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bWF4aW1pemVXaW5k
b3dPZkJyb3dzaW5nQ29udGV4dCk6IEV4aXQgZnVsbHNjcmVlbiwgcmVzdG9yZSB0aGUgd2luZG93
IGFuZCB0aGVuCisgICAgICAgIG1heGltaXplIGl0LgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6bWF4aW1pemVXaW5kb3dGb3JQYWdlKTogQXNrIHRoZSBjbGllbnQgdG8g
bWF4aW1pemUgdGhlIHdpbmRvdyBvZiBwYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vYXRvbXMvRW50ZXJGdWxsc2NyZWVuLmpzOgorICAgICAgICAoZW50ZXJGdWxsc2NyZWVuKTog
UmV0dXJuIGVhcmx5IGlmIGZ1bGxzY3JlZW4gaXMgZGlzYWJsZWQgb3IgaWYgd2luZG93IGlzIGFs
cmVhZHkgaW4gZnVsbHNjcmVlbi4KKwogMjAxOC0wNS0xNiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMjkwOTMpW21hY09TXSBBbGxv
dyBuZXR3b3JrLW91dGJvdW5kIGZvciBzeXNsb2cgdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4IDgw
NzZlNDQ0NGQ3Li5iZmM1ZWUzMzgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKQEAgLTU0LDYgKzU0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHNlc3Npb25JZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzY29ubmVjdEZyb21S
ZW1vdGUoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0TmV3UGFnZVdpdGhPcHRpb25zKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24m
LCBBdXRvbWF0aW9uU2Vzc2lvbkJyb3dzaW5nQ29udGV4dE9wdGlvbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViS2l0OjpXZWJQYWdlUHJveHkqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBj
b21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TWF4
aW1pemVXaW5kb3dPZlBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEhp
ZGVXaW5kb3dPZlBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFJlc3Rv
cmVXaW5kb3dPZlBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN3aXRj
aFRvUGFnZShXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGRhZTI5ZTE0
ZTA5Li45NmNlMDNkMGMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtOTIsNiArOTIs
MzAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCZ3ZWJraXRXZWJW
aWV3R2V0UGFnZSh3ZWJWaWV3KSk7CiAgICAgfQogCisgICAgdm9pZCByZXF1ZXN0TWF4aW1pemVX
aW5kb3dPZlBhZ2UoV2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJQYWdlUHJveHkmIHBhZ2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIGF1dG8qIHdlYlZpZXcgPSB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0Zv
clBhZ2UobV9zZXNzaW9uLT5wcml2LT53ZWJDb250ZXh0LCAmcGFnZSk7CisgICAgICAgIGlmICgh
d2ViVmlldykKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHdlYmtp
dFdlYlZpZXdNYXhpbWl6ZVdpbmRvdyh3ZWJWaWV3LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgfQorCisgICAgdm9pZCByZXF1ZXN0SGlkZVdpbmRvd09mUGFnZShXZWJBdXRvbWF0
aW9uU2Vzc2lvbiYsIFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byogd2Vi
VmlldyA9IHdlYmtpdFdlYkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShtX3Nlc3Npb24tPnByaXYt
PndlYkNvbnRleHQsICZwYWdlKTsKKyAgICAgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgd2Via2l0V2ViVmlld01pbmltaXplV2luZG93
KHdlYlZpZXcsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9CisKKyAgICB2b2lk
IHJlcXVlc3RSZXN0b3JlV2luZG93T2ZQYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFn
ZVByb3h5JiBwYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICBhdXRvKiB3ZWJWaWV3ID0gd2Via2l0V2ViQ29u
dGV4dEdldFdlYlZpZXdGb3JQYWdlKG1fc2Vzc2lvbi0+cHJpdi0+d2ViQ29udGV4dCwgJnBhZ2Up
OworICAgICAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgICAgICB3ZWJraXRXZWJWaWV3UmVzdG9yZVdpbmRvdyh3ZWJWaWV3LCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgfQorCiAgICAgYm9vbCBpc1Nob3dpbmdKYXZhU2NyaXB0
RGlhbG9nT25QYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFnZVByb3h5JiBwYWdlKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgYXV0byogd2ViVmlldyA9IHdlYmtpdFdlYkNvbnRleHRH
ZXRXZWJWaWV3Rm9yUGFnZShtX3Nlc3Npb24tPnByaXYtPndlYkNvbnRleHQsICZwYWdlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oCmluZGV4IDM2MDVhOTE1ZWQ1Li41MWVlM2IwYjJjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MaW5rSWNvbi5oPgorI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdm9pZCB3ZWJraXRXZWJWaWV3Q3JlYXRlUGFnZShXZWJLaXRXZWJWaWV3KiwgUmVmPEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwpAQCAtNzQsNiArNzUsOSBAQCBXZWJLaXRXZWJSZXNv
dXJjZSogd2Via2l0V2ViVmlld0dldExvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3Kiwg
dWludDY0X3Qgcgogdm9pZCB3ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBzaG90KFdlYktpdFdl
YlZpZXcqLCB1aW50NjRfdCBjYWxsYmFja0lELCBXZWJLaXQ6OldlYkltYWdlKik7CiAjZW5kaWYK
IHZvaWQgd2Via2l0V2ViVmlld1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZShXZWJLaXRXZWJWaWV3
KiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKK3ZvaWQgd2Via2l0V2ViVmlld01heGlt
aXplV2luZG93KFdlYktpdFdlYlZpZXcqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
dm9pZCB3ZWJraXRXZWJWaWV3TWluaW1pemVXaW5kb3coV2ViS2l0V2ViVmlldyosIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Cit2b2lkIHdlYmtpdFdlYlZpZXdSZXN0b3JlV2luZG93KFdl
YktpdFdlYlZpZXcqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogdm9pZCB3ZWJraXRX
ZWJWaWV3RW50ZXJGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmll
d0V4aXRGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld1BvcHVs
YXRlQ29udGV4dE1lbnUoV2ViS2l0V2ViVmlldyosIGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYkNv
bnRleHRNZW51SXRlbURhdGE+JiBwcm9wb3NlZE1lbnUsIGNvbnN0IFdlYktpdDo6V2ViSGl0VGVz
dFJlc3VsdERhdGEmLCBHVmFyaWFudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKaW5kZXggYzEyZWRhMGQ3NmMuLjJmNTQ4
MGJkNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0d0ay5jcHAKQEAgLTI1LDYgKzI1LDggQEAKICNpbmNsdWRlICJXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bURpc3BsYXkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVk
ZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAKQEAgLTEwNCw2ICsx
MDYsMTU0IEBAIGdib29sZWFuIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlcihXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBXZWJLaXRGaWxlQ2hvb3NlclJlCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAK
K3N0cnVjdCBXaW5kb3dTdGF0ZUV2ZW50IHsKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBNYXhpbWl6
ZSwgTWluaW1pemUsIFJlc3RvcmUgfTsKKworICAgIFdpbmRvd1N0YXRlRXZlbnQoVHlwZSB0eXBl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAg
IDogdHlwZSh0eXBlKQorICAgICAgICAsIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQorICAgICAgICAsIGNvbXBsZXRlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0
aGlzLCAmV2luZG93U3RhdGVFdmVudDo6Y29tcGxldGUpCisgICAgeworICAgICAgICAvLyBDb21w
bGV0ZSB0aGUgZXZlbnQgaWYgbm90IGRvbmUgYWZ0ZXIgMSBzZWNvbmQuCisgICAgICAgIGNvbXBs
ZXRlVGltZXIuc3RhcnRPbmVTaG90KDFfcyk7CisgICAgfQorCisgICAgfldpbmRvd1N0YXRlRXZl
bnQoKQorICAgIHsKKyAgICAgICAgY29tcGxldGUoKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBs
ZXRlKCkKKyAgICB7CisgICAgICAgIGlmIChhdXRvIGhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGNv
bXBsZXRpb25IYW5kbGVyLCBudWxscHRyKSkKKyAgICAgICAgICAgIGhhbmRsZXIoKTsKKyAgICB9
CisKKyAgICBUeXBlIHR5cGU7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBjb21wbGV0
aW9uSGFuZGxlcjsKKyAgICBSdW5Mb29wOjpUaW1lcjxXaW5kb3dTdGF0ZUV2ZW50PiBjb21wbGV0
ZVRpbWVyOworfTsKKworc3RhdGljIGNvbnN0IGNoYXIqIGdXaW5kb3dTdGF0ZUV2ZW50SUQgPSAi
d2std2luZG93LXN0YXRlLWV2ZW50IjsKKworc3RhdGljIGdib29sZWFuIHdpbmRvd1N0YXRlRXZl
bnRDYWxsYmFjayhHdGtXaWRnZXQqIHdpbmRvdywgR2RrRXZlbnRXaW5kb3dTdGF0ZSogZXZlbnQs
IFdlYktpdFdlYlZpZXcqIHZpZXcpCit7CisgICAgYXV0byogc3RhdGUgPSBzdGF0aWNfY2FzdDxX
aW5kb3dTdGF0ZUV2ZW50Kj4oZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QodmlldyksIGdXaW5k
b3dTdGF0ZUV2ZW50SUQpKTsKKyAgICBpZiAoIXN0YXRlKSB7CisgICAgICAgIGdfc2lnbmFsX2hh
bmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3aW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50
ZXI+KHdpbmRvd1N0YXRlRXZlbnRDYWxsYmFjayksIHZpZXcpOworICAgICAgICByZXR1cm4gRkFM
U0U7CisgICAgfQorCisgICAgYm9vbCBldmVudENvbXBsZXRlZCA9IGZhbHNlOworICAgIHN3aXRj
aCAoc3RhdGUtPnR5cGUpIHsKKyAgICBjYXNlIFdpbmRvd1N0YXRlRXZlbnQ6OlR5cGU6Ok1heGlt
aXplOgorICAgICAgICBpZiAoZXZlbnQtPm5ld193aW5kb3dfc3RhdGUgJiBHREtfV0lORE9XX1NU
QVRFX01BWElNSVpFRCkKKyAgICAgICAgICAgIGV2ZW50Q29tcGxldGVkID0gdHJ1ZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXaW5kb3dTdGF0ZUV2ZW50OjpUeXBlOjpNaW5pbWl6ZToKKyAg
ICAgICAgaWYgKChldmVudC0+bmV3X3dpbmRvd19zdGF0ZSAmIEdES19XSU5ET1dfU1RBVEVfSUNP
TklGSUVEKSB8fCAhZ3RrX3dpZGdldF9nZXRfbWFwcGVkKHdpbmRvdykpCisgICAgICAgICAgICBl
dmVudENvbXBsZXRlZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2luZG93U3Rh
dGVFdmVudDo6VHlwZTo6UmVzdG9yZToKKyAgICAgICAgaWYgKCEoZXZlbnQtPm5ld193aW5kb3df
c3RhdGUgJiBHREtfV0lORE9XX1NUQVRFX01BWElNSVpFRCkgJiYgIShldmVudC0+bmV3X3dpbmRv
d19zdGF0ZSAmIEdES19XSU5ET1dfU1RBVEVfSUNPTklGSUVEKSkKKyAgICAgICAgICAgIGV2ZW50
Q29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGV2ZW50
Q29tcGxldGVkKSB7CisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVu
Yyh3aW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8Z3BvaW50ZXI+KHdpbmRvd1N0YXRlRXZlbnRDYWxs
YmFjayksIHZpZXcpOworICAgICAgICBnX29iamVjdF9zZXRfZGF0YShHX09CSkVDVCh2aWV3KSwg
Z1dpbmRvd1N0YXRlRXZlbnRJRCwgbnVsbHB0cik7CisgICAgfQorCisgICAgcmV0dXJuIEZBTFNF
OworfQorCit2b2lkIHdlYmtpdFdlYlZpZXdNYXhpbWl6ZVdpbmRvdyhXZWJLaXRXZWJWaWV3KiB2
aWV3LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgYXV0byogdG9wTGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHZp
ZXcpKTsKKyAgICBpZiAoIWd0a193aWRnZXRfaXNfdG9wbGV2ZWwodG9wTGV2ZWwpKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvKiB3aW5kb3cgPSBHVEtfV0lORE9XKHRvcExldmVsKTsKKyAgICBpZiAoZ3RrX3dpbmRvd19p
c19tYXhpbWl6ZWQod2luZG93KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChHX09CSkVD
VCh2aWV3KSwgZ1dpbmRvd1N0YXRlRXZlbnRJRCwgbmV3IFdpbmRvd1N0YXRlRXZlbnQoV2luZG93
U3RhdGVFdmVudDo6VHlwZTo6TWF4aW1pemUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSwg
W10oZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFdpbmRv
d1N0YXRlRXZlbnQqPih1c2VyRGF0YSk7CisgICAgfSk7CisgICAgZ19zaWduYWxfY29ubmVjdF9v
YmplY3Qod2luZG93LCAid2luZG93LXN0YXRlLWV2ZW50IiwgR19DQUxMQkFDSyh3aW5kb3dTdGF0
ZUV2ZW50Q2FsbGJhY2spLCB2aWV3LCBHX0NPTk5FQ1RfQUZURVIpOworICAgIGd0a193aW5kb3df
bWF4aW1pemUod2luZG93KTsKKyNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCisgICAgLy8gWHZm
YiBkb2Vzbid0IHN1cHBvcnQgbWF4aW1pemUsIHNvIHdlIHJlc2l6ZSB0aGUgd2luZG93IHRvIHRo
ZSBzY3JlZW4gc2l6ZS4KKyAgICBpZiAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWRE
aXNwbGF5KCkudHlwZSgpID09IFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKSB7
CisgICAgICAgIGNvbnN0IGNoYXIqIHVuZGVyWHZmYiA9IGdfZ2V0ZW52KCJVTkRFUl9YVkZCIik7
CisgICAgICAgIGlmICghZ19zdHJjbXAwKHVuZGVyWHZmYiwgInllcyIpKSB7CisgICAgICAgICAg
ICBhdXRvIHNjcmVlblJlY3QgPSBXZWJDb3JlOjpzY3JlZW5BdmFpbGFibGVSZWN0KG51bGxwdHIp
OworICAgICAgICAgICAgZ3RrX3dpbmRvd19tb3ZlKHdpbmRvdywgc2NyZWVuUmVjdC54KCksIHNj
cmVlblJlY3QueSgpKTsKKyAgICAgICAgICAgIGd0a193aW5kb3dfcmVzaXplKHdpbmRvdywgc2Ny
ZWVuUmVjdC53aWR0aCgpLCBzY3JlZW5SZWN0LmhlaWdodCgpKTsKKyAgICAgICAgfQorICAgIH0K
KyNlbmRpZgorICAgIGd0a193aWRnZXRfc2hvdyh0b3BMZXZlbCk7Cit9CisKK3ZvaWQgd2Via2l0
V2ViVmlld01pbmltaXplV2luZG93KFdlYktpdFdlYlZpZXcqIHZpZXcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiB0b3BMZXZlbCA9
IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQodmlldykpOworICAgIGlmICghZ3Rr
X3dpZGdldF9pc190b3BsZXZlbCh0b3BMZXZlbCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIHdpbmRvdyA9IEdUS19X
SU5ET1codG9wTGV2ZWwpOworICAgIGdfb2JqZWN0X3NldF9kYXRhX2Z1bGwoR19PQkpFQ1Qodmll
dyksIGdXaW5kb3dTdGF0ZUV2ZW50SUQsIG5ldyBXaW5kb3dTdGF0ZUV2ZW50KFdpbmRvd1N0YXRl
RXZlbnQ6OlR5cGU6Ok1pbmltaXplLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSksIFtdKGdw
b2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxXaW5kb3dTdGF0
ZUV2ZW50Kj4odXNlckRhdGEpOworICAgIH0pOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0
KHdpbmRvdywgIndpbmRvdy1zdGF0ZS1ldmVudCIsIEdfQ0FMTEJBQ0sod2luZG93U3RhdGVFdmVu
dENhbGxiYWNrKSwgdmlldywgR19DT05ORUNUX0FGVEVSKTsKKyAgICBndGtfd2luZG93X2ljb25p
Znkod2luZG93KTsKKyAgICBndGtfd2lkZ2V0X2hpZGUodG9wTGV2ZWwpOworfQorCit2b2lkIHdl
YmtpdFdlYlZpZXdSZXN0b3JlV2luZG93KFdlYktpdFdlYlZpZXcqIHZpZXcsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiB0b3BMZXZl
bCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQodmlldykpOworICAgIGlmICgh
Z3RrX3dpZGdldF9pc190b3BsZXZlbCh0b3BMZXZlbCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIHdpbmRvdyA9IEdU
S19XSU5ET1codG9wTGV2ZWwpOworICAgIGlmIChndGtfd2lkZ2V0X2dldF9tYXBwZWQodG9wTGV2
ZWwpICYmICFndGtfd2luZG93X2lzX21heGltaXplZCh3aW5kb3cpKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnX29iamVjdF9z
ZXRfZGF0YV9mdWxsKEdfT0JKRUNUKHZpZXcpLCBnV2luZG93U3RhdGVFdmVudElELCBuZXcgV2lu
ZG93U3RhdGVFdmVudChXaW5kb3dTdGF0ZUV2ZW50OjpUeXBlOjpSZXN0b3JlLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAgIGRlbGV0
ZSBzdGF0aWNfY2FzdDxXaW5kb3dTdGF0ZUV2ZW50Kj4odXNlckRhdGEpOworICAgIH0pOworICAg
IGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KHdpbmRvdywgIndpbmRvdy1zdGF0ZS1ldmVudCIsIEdf
Q0FMTEJBQ0sod2luZG93U3RhdGVFdmVudENhbGxiYWNrKSwgdmlldywgR19DT05ORUNUX0FGVEVS
KTsKKyAgICBpZiAoZ3RrX3dpbmRvd19pc19tYXhpbWl6ZWQod2luZG93KSkKKyAgICAgICAgZ3Rr
X3dpbmRvd191bm1heGltaXplKHdpbmRvdyk7CisgICAgaWYgKCFndGtfd2lkZ2V0X2dldF9tYXBw
ZWQodG9wTGV2ZWwpKQorICAgICAgICBndGtfd2luZG93X2RlaWNvbmlmeSh3aW5kb3cpOworI2lm
IEVOQUJMRShERVZFTE9QRVJfTU9ERSkKKyAgICAvLyBYdmZiIGRvZXNuJ3Qgc3VwcG9ydCBtYXhp
bWl6ZSwgc28gd2UgcmVzaXplIHRoZSB3aW5kb3cgdG8gdGhlIGRlZmF1bHQgc2l6ZS4KKyAgICBp
ZiAoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFdl
YkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKSB7CisgICAgICAgIGNvbnN0IGNoYXIq
IHVuZGVyWHZmYiA9IGdfZ2V0ZW52KCJVTkRFUl9YVkZCIik7CisgICAgICAgIGlmICghZ19zdHJj
bXAwKHVuZGVyWHZmYiwgInllcyIpKSB7CisgICAgICAgICAgICBpbnQgeCwgeTsKKyAgICAgICAg
ICAgIGd0a193aW5kb3dfZ2V0X2RlZmF1bHRfc2l6ZSh3aW5kb3csICZ4LCAmeSk7CisgICAgICAg
ICAgICBndGtfd2luZG93X3Jlc2l6ZSh3aW5kb3csIHgsIHkpOworICAgICAgICB9CisgICAgfQor
I2VuZGlmCisgICAgZ3RrX3dpZGdldF9zaG93KHRvcExldmVsKTsKK30KKwogLyoqCiAgKiB3ZWJr
aXRfd2ViX3ZpZXdfbmV3OgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwCmluZGV4IDQ5NThlN2IxMTIzLi5hMzQ5NWU4NTJl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJW
aWV3V1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdl
YlZpZXdXUEUuY3BwCkBAIC0zNyw2ICszNywyMSBAQCBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3UnVu
RmlsZUNob29zZXIoV2ViS2l0V2ViVmlldyosIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCopCiAg
ICAgcmV0dXJuIEZBTFNFOwogfQogCit2b2lkIHdlYmtpdFdlYlZpZXdNYXhpbWl6ZVdpbmRvdyhX
ZWJLaXRXZWJWaWV3KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgd2Via2l0V2ViVmll
d01pbmltaXplV2luZG93KFdlYktpdFdlYlZpZXcqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwor
dm9pZCB3ZWJraXRXZWJWaWV3UmVzdG9yZVdpbmRvdyhXZWJLaXRXZWJWaWV3KiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Cit9CisKIC8qKgogICogd2Via2l0X3dlYl92aWV3X25ldzoKICAqIEBiYWNrZW5k
OiAodHJhbnNmZXIgZnVsbCk6IGEgI1dlYktpdFdlYlZpZXdCYWNrZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCmluZGV4IDQyNTU2
YjVjMjBiLi43OGVlMmFjOTFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24KQEAgLTM1Niw2ICszNTYsMTQgQEAKICAgICAgICAg
ICAgIF0sCiAgICAgICAgICAgICAiYXN5bmMiOiB0cnVlCiAgICAgICAgIH0sCisgICAgICAgIHsK
KyAgICAgICAgICAgICJuYW1lIjogIm1heGltaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHQiLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNhdXNlcyB0aGUgd2luZG93IG9mIHRoZSBzcGVj
aWZpZWQgYnJvd3NpbmcgY29udGV4dCB0byBiZSBtYXhpbWl6ZWQuIFRoaXMgY29tbWFuZCBpbXBs
aWNpdGx5IGV4aXRzIGZ1bGxzY3JlZW4gbW9kZS4iLAorICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoYW5kbGUiLCAiJHJlZiI6ICJCcm93c2lu
Z0NvbnRleHRIYW5kbGUiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGhhbmRsZSBmb3IgdGhlIGJyb3dz
aW5nIGNvbnRleHQgd2hvc2Ugd2luZG93IHNob3VsZCBiZSBtYXhpbWl6ZWQuIiB9CisgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQorICAgICAgICB9LAogICAgICAgICB7
CiAgICAgICAgICAgICAibmFtZSI6ICJoaWRlV2luZG93T2ZCcm93c2luZ0NvbnRleHQiLAogICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNhdXNlcyB0aGUgd2luZG93IG9mIHRoZSBzcGVjaWZp
ZWQgYnJvd3NpbmcgY29udGV4dCB0byBiZSBoaWRkZW4vbWluaW1pemVkL2ljb25pZmllZC4gVGhp
cyBjb21tYW5kIGltcGxpY2l0bHkgZXhpdHMgZnVsbHNjcmVlbiBtb2RlLiIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uY3BwCmluZGV4IGI5YjRkZGM3ZTkxLi4zYjI2NzdkNjU3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAKQEAgLTUyNSw2ICs1MjUsMjIgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
bG9hZFRpbWVyRmlyZWQoKQogICAgIHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxi
YWNrc1dpdGhUaW1lb3V0KG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0
Q2FsbGJhY2tzUGVyUGFnZSk7CiB9CiAKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om1heGlt
aXplV2luZG93T2ZCcm93c2luZ0NvbnRleHQoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRI
YW5kbGUsIFJlZjxNYXhpbWl6ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2Fs
bGJhY2spCit7CisgICAgYXV0byogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2lu
Z0NvbnRleHRIYW5kbGUpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOworCisgICAgZXhpdEZ1bGxzY3JlZW5X
aW5kb3dGb3JQYWdlKCpwYWdlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gbWFrZVJlZlB0cihwYWdlKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYgd2ViUGFnZSA9ICpwYWdlOworICAgICAgICByZXN0
b3JlV2luZG93Rm9yUGFnZSh3ZWJQYWdlLCBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgcGFnZSA9IFdURk1vdmUocGFnZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtYXhp
bWl6ZVdpbmRvd0ZvclBhZ2UoKnBhZ2UsIFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2Vzcygp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpoaWRlV2luZG93T2ZCcm93c2luZ0NvbnRleHQoY29uc3QgU3RyaW5n
JiBicm93c2luZ0NvbnRleHRIYW5kbGUsIFJlZjxIaWRlV2luZG93T2ZCcm93c2luZ0NvbnRleHRD
YWxsYmFjaz4mJiBjYWxsYmFjaykKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdl
UHJveHlGb3JIYW5kbGUoYnJvd3NpbmdDb250ZXh0SGFuZGxlKTsKQEAgLTU2OCw2ICs1ODQsMTEg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzdG9yZVdpbmRvd0ZvclBhZ2UoV2ViUGFn
ZVByb3h5JiBwYWdlLCBXVEY6OkNvbXBsZXQKICAgICBtX2NsaWVudC0+cmVxdWVzdFJlc3RvcmVX
aW5kb3dPZlBhZ2UoKnRoaXMsIHBhZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bWF4aW1pemVXaW5kb3dGb3JQYWdlKFdlYlBh
Z2VQcm94eSYgcGFnZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgbV9jbGllbnQtPnJlcXVlc3RNYXhpbWl6ZVdpbmRvd09mUGFnZSgq
dGhpcywgcGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpoaWRlV2luZG93Rm9yUGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IG1fY2xpZW50LT5yZXF1ZXN0SGlkZVdpbmRvd09mUGFnZSgqdGhpcywgcGFnZSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDNmZmUzYjMxNmE3Li4x
MmI3MzM1Yjg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMTUxLDYgKzE1MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsb3NlQnJvd3NpbmdDb250ZXh0KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHN3aXRjaFRvQnJvd3NpbmdDb250ZXh0
KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcqIG9wdGlv
bmFsRnJhbWVIYW5kbGUsIFJlZjxTd2l0Y2hUb0Jyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKSBm
aW5hbDsKICAgICB2b2lkIHNldFdpbmRvd0ZyYW1lT2ZCcm93c2luZ0NvbnRleHQoY29uc3QgU3Ry
aW5nJiBoYW5kbGUsIGNvbnN0IEpTT046Ok9iamVjdCogb3JpZ2luLCBjb25zdCBKU09OOjpPYmpl
Y3QqIHNpemUsIFJlZjxTZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYp
IGZpbmFsOworICAgIHZvaWQgbWF4aW1pemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChjb25zdCBT
dHJpbmcmIGhhbmRsZSwgUmVmPE1heGltaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHRDYWxsYmFj
az4mJikgZmluYWw7CiAgICAgdm9pZCBoaWRlV2luZG93T2ZCcm93c2luZ0NvbnRleHQoY29uc3Qg
U3RyaW5nJiBoYW5kbGUsIFJlZjxIaWRlV2luZG93T2ZCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4m
JikgZmluYWw7CiAgICAgdm9pZCBuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcm
IGhhbmRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxQYWdlTG9h
ZFN0cmF0ZWd5U3RyaW5nLCBjb25zdCBpbnQqIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBSZWY8
TmF2aWdhdGVCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
b0JhY2tJbkJyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcqIG9wdGlv
bmFsUGFnZUxvYWRTdHJhdGVneVN0cmluZywgY29uc3QgaW50KiBvcHRpb25hbFBhZ2VMb2FkVGlt
ZW91dCwgUmVmPEdvQmFja0luQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpIG92ZXJyaWRlOwpA
QCAtMjEzLDYgKzIxNCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuV2lu
ZG93Rm9yUGFnZShXZWJQYWdlUHJveHkmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCByZXN0b3JlV2luZG93Rm9yUGFnZShXZWJQYWdlUHJveHkmLCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBtYXhpbWl6ZVdpbmRvd0ZvclBh
Z2UoV2ViUGFnZVByb3h5JiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgaGlkZVdpbmRvd0ZvclBhZ2UoV2ViUGFnZVByb3h5JiwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkF1
dG9tYXRpb25TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vYXRvbXMvRW50ZXJGdWxsc2NyZWVuLmpzIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9hdG9tcy9FbnRlckZ1bGxzY3JlZW4uanMK
aW5kZXggMGU5NDZlNmJlZmQuLjU3NDUxYzYzNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2F0b21zL0VudGVyRnVsbHNjcmVlbi5qcworKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2F0b21zL0VudGVyRnVsbHNjcmVlbi5qcwpA
QCAtMjYsOCArMjYsMTUgQEAKIGZ1bmN0aW9uIGVudGVyRnVsbHNjcmVlbigpIHsKIAogICAgIGxl
dCBjYWxsYmFjayA9IGFyZ3VtZW50c1swXTsKLSAgICBpZiAoIWRvY3VtZW50LndlYmtpdEZ1bGxz
Y3JlZW5FbmFibGVkKQorICAgIGlmICghZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVuYWJsZWQp
IHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGRvY3VtZW50LndlYmtpdElzRnVsbFNjcmVlbikgeworICAgICAgICBjYWxsYmFjayh0
cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGxldCBmdWxsc2NyZWVuQ2hhbmdl
TGlzdGVuZXIsIGZ1bGxzY3JlZW5FcnJvckxpc3RlbmVyOwogICAgIGZ1bGxzY3JlZW5DaGFuZ2VM
aXN0ZW5lciA9IChlKSA9PiB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggODY3YjcyYTc0NjAuLjA0NTM4NTk0YzVkIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgt
MDUtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFdlYkRyaXZlcjogaW1wbGVtZW50IG1heGltaXplLCBtaW5pbWl6ZSBhbmQgZnVsbHNjcmVl
biB3aW5kb3cgY29tbWFuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MDM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3h2ZmJkcml2ZXIucHk6CisgICAgICAg
IChYdmZiRHJpdmVyLl9zZXR1cF9lbnZpcm9uX2Zvcl90ZXN0KTogU2V0IFVOREVSX1hWRkIgZW52
aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBydW5uaW5nIHVuZGVyIFh2ZmIuCisKIDIwMTgtMDUtMTYg
IExlbyBCYWx0ZXIgIDxsZW9uYXJkby5iYWx0ZXJAZ21haWwuY29tPgogCiAgICAgICAgIFRlc3Qy
NjItUnVubmVyOiBBZGRzIGEgLS10aW1lb3V0IG9wdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3h2ZmJkcml2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQveHZmYmRyaXZlci5weQppbmRleCBhYjMzZDNhMjdjNC4uOTkxMjFkMDQ0ZDkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC94dmZiZHJpdmVyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC94dmZiZHJpdmVyLnB5CkBAIC05OCw2ICs5OCw3IEBA
IGNsYXNzIFh2ZmJEcml2ZXIoRHJpdmVyKToKIAogICAgICAgICAjIFdlIG11c3QgZG8gdGhpcyBo
ZXJlIGJlY2F1c2UgdGhlIERJU1BMQVkgbnVtYmVyIGRlcGVuZHMgb24gX3dvcmtlcl9udW1iZXIK
ICAgICAgICAgZW52aXJvbm1lbnRbJ0RJU1BMQVknXSA9ICI6JWQiICUgZGlzcGxheV9pZAorICAg
ICAgICBlbnZpcm9ubWVudFsnVU5ERVJfWFZGQiddID0gJ3llcycKICAgICAgICAgZW52aXJvbm1l
bnRbJ0dES19CQUNLRU5EJ10gPSAneDExJwogICAgICAgICBlbnZpcm9ubWVudFsnTE9DQUxfUkVT
T1VSQ0VfUk9PVCddID0gc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKICAgICAgICAgaWYg
c2VsZi5fZHJpdmVyX3RlbXBkaXIgaXMgbm90IE5vbmU6CmRpZmYgLS1naXQgYS9XZWJEcml2ZXJU
ZXN0cy9DaGFuZ2VMb2cgYi9XZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmUzYjM1NTE1
Y2YuLjE1ZDNlNTU0NWFiIDEwMDY0NAotLS0gYS9XZWJEcml2ZXJUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvV2ViRHJpdmVyVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMDUtMTcg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFdl
YkRyaXZlcjogaW1wbGVtZW50IG1heGltaXplLCBtaW5pbWl6ZSBhbmQgZnVsbHNjcmVlbiB3aW5k
b3cgY29tbWFuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSBleHBlY3RhdGlvbnMgZm9yIHRlc3RzIHRoYXQgYXJlIHBhc3Npbmcgbm93Lgor
CisgICAgICAgICogVGVzdEV4cGVjdGF0aW9ucy5qc29uOgorCiAyMDE4LTA1LTE2ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LiBSZW1vdmUgVzNDIGRlbGV0ZWQgZmlsZXMgYWZ0ZXIgcjIzMTcyNy4KZGlmZiAtLWdpdCBhL1dl
YkRyaXZlclRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMuanNvbiBiL1dlYkRyaXZlclRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMuanNvbgppbmRleCBiZTE0OWQ0N2E3Yi4uZjU5YzQyZTdkZDAgMTAwNjQ0Ci0t
LSBhL1dlYkRyaXZlclRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMuanNvbgorKysgYi9XZWJEcml2ZXJU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zLmpzb24KQEAgLTE5MywxOSArMTkzLDYgQEAKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0sCi0gICAgImltcG9ydGVkL3NlbGVuaXVtL3B5L3Rlc3Qv
c2VsZW5pdW0vd2ViZHJpdmVyL2NvbW1vbi93aW5kb3dfdGVzdHMucHkiOiB7Ci0gICAgICAgICJz
dWJ0ZXN0cyI6IHsKLSAgICAgICAgICAgICJ0ZXN0U2hvdWxkTWF4aW1pemVUaGVXaW5kb3ciOiB7
Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJd
LCAiYnVnIjogIndlYmtpdC5vcmcvYi8xODAzOTgifX0KLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAidGVzdF9zaG91bGRfZnVsbHNjcmVlbl90aGVfY3VycmVudF93aW5kb3ciOiB7Ci0gICAg
ICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVn
IjogIndlYmtpdC5vcmcvYi8xODAzOTgifX0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAi
dGVzdF9zaG91bGRfbWluaW1pemVfdGhlX2N1cnJlbnRfd2luZG93IjogewotICAgICAgICAgICAg
ICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJr
aXQub3JnL2IvMTgwMzk4In19Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAogICAg
ICJpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3RzL2FjdGlvbnMva2V5LnB5IjogewogICAgICAg
ICAic3VidGVzdHMiOiB7CiAgICAgICAgICAgICAidGVzdF9zaW5nbGVfcHJpbnRhYmxlX2tleV9z
ZW5kc19jb3JyZWN0X2V2ZW50c1tcXHhlMC1dIjogewpAQCAtNTAzLDE5ICs0OTAsNiBAQAogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSwKLSAgICAiaW1wb3J0ZWQvdzNjL3dlYmRyaXZl
ci90ZXN0cy9tYXhpbWl6ZV93aW5kb3cvbWF4aW1pemUucHkiOiB7Ci0gICAgICAgICJleHBlY3Rl
ZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMTgw
Mzk4In19Ci0gICAgfSwKLSAgICAiaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90ZXN0cy9tYXhpbWl6
ZV93aW5kb3cvdXNlcl9wcm9tcHRzLnB5IjogewotICAgICAgICAic3VidGVzdHMiOiB7Ci0gICAg
ICAgICAgICAidGVzdF9oYW5kbGVfcHJvbXB0X2FjY2VwdCI6IHsKLSAgICAgICAgICAgICAgICAi
ZXhwZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9y
Zy9iLzE4MDM5OCJ9fQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJ0ZXN0X2hhbmRsZV9w
cm9tcHRfbWlzc2luZ192YWx1ZSI6IHsKLSAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7ImFs
bCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4MDM5OCJ9fQot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKICAgICAiaW1wb3J0ZWQvdzNjL3dlYmRy
aXZlci90ZXN0cy9leGVjdXRlX3NjcmlwdC9qc29uX3NlcmlhbGl6ZV93aW5kb3dwcm94eS5weSI6
IHsKICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVn
IjogIndlYmtpdC5vcmcvYi8xODAzOTcifX0KICAgICB9LApAQCAtODgzLDQ3ICs4NTcsOCBAQAog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSwKLSAgICAiaW1wb3J0ZWQvdzNjL3dlYmRy
aXZlci90ZXN0cy9mdWxsc2NyZWVuX3dpbmRvdy9mdWxsc2NyZWVuLnB5IjogewotICAgICAgICAi
ZXhwZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9y
Zy9iLzE4MDM5OCJ9fQotICAgIH0sCi0gICAgImltcG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMv
ZnVsbHNjcmVlbl93aW5kb3cvdXNlcl9wcm9tcHRzLnB5IjogewotICAgICAgICAiZXhwZWN0ZWQi
OiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4MDM5
OCJ9fSwKLSAgICAgICAgInN1YnRlc3RzIjogewotICAgICAgICAgICAgInRlc3RfaGFuZGxlX3By
b21wdF9kaXNtaXNzX2FuZF9ub3RpZnkiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjog
eyJhbGwiOiB7InN0YXR1cyI6IFsiUEFTUyJdfX0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAidGVzdF9oYW5kbGVfcHJvbXB0X2FjY2VwdF9hbmRfbm90aWZ5IjogewotICAgICAgICAgICAg
ICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIlBBU1MiXX19Ci0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgInRlc3RfaGFuZGxlX3Byb21wdF9pZ25vcmUiOiB7Ci0gICAgICAg
ICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiUEFTUyJdfX0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0sCi0gICAgImltcG9ydGVkL3czYy93ZWJkcml2ZXIv
dGVzdHMvbWluaW1pemVfd2luZG93L21pbmltaXplLnB5IjogewotICAgICAgICAiZXhwZWN0ZWQi
OiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4MDM5
OCJ9fQotICAgIH0sCi0gICAgImltcG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMvbWluaW1pemVf
d2luZG93L3VzZXJfcHJvbXB0cy5weSI6IHsKLSAgICAgICAgInN1YnRlc3RzIjogewotICAgICAg
ICAgICAgInRlc3RfaGFuZGxlX3Byb21wdF9hY2NlcHQiOiB7Ci0gICAgICAgICAgICAgICAgImV4
cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcv
Yi8xODAzOTgifX0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAidGVzdF9oYW5kbGVfcHJv
bXB0X21pc3NpbmdfdmFsdWUiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwi
OiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xODAzOTgifX0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0sCiAgICAgImltcG9ydGVkL3czYy93ZWJkcml2
ZXIvdGVzdHMvc2V0X3dpbmRvd19yZWN0L3NldC5weSI6IHsKICAgICAgICAgInN1YnRlc3RzIjog
ewotICAgICAgICAgICAgInRlc3RfZnVsbHlfZXhpdF9mdWxsc2NyZWVuIjogewotICAgICAgICAg
ICAgICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3
ZWJraXQub3JnL2IvMTgwMzk4In19Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInRlc3Rf
cmVzdG9yZV9mcm9tX21pbmltaXplZCI6IHsKLSAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7
ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4MDM5OCJ9
fQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJ0ZXN0X3Jlc3RvcmVfZnJvbV9tYXhpbWl6
ZWQiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsi
RkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xODAzOTgifX0KLSAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICAidGVzdF9uZWdhdGl2ZV94X3kiOiB7CiAgICAgICAgICAgICAgICAgImV4cGVj
dGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8x
ODA0MTgifX0KICAgICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340956</attachid>
            <date>2018-05-21 22:49:59 -0700</date>
            <delta_ts>2018-05-22 13:18:52 -0700</delta_ts>
            <desc>Try to fix iOS builds</desc>
            <filename>wd-fullscreen.diff</filename>
            <type>text/plain</type>
            <size>36213</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NNYWtlTGlzdHMudHh0CmluZGV4IDhiYjEwNzc3ODhjLi4wNzY4YWU5ZGMxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NNYWtlTGlzdHMudHh0CkBAIC0yMiw2ICsyMiw3IEBAIHNldChXZWJEcml2ZXJfTElC
UkFSSUVTCiBzZXQoV2ViRHJpdmVyX1NDUklQVFMKICAgICAke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL2F0b21zL0VsZW1lbnRBdHRyaWJ1dGUuanMKICAgICAke1dFQktJVF9ESVJ9
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2F0b21zL0VsZW1lbnREaXNwbGF5ZWQuanMKKyAgICAke1dF
QktJVF9ESVJ9L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2F0b21zL0VudGVyRnVsbHNjcmVlbi5qcwog
ICAgICR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0F1dG9tYXRpb24vYXRvbXMvRmluZE5vZGVzLmpz
CiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQXV0b21hdGlvbi9hdG9tcy9Gb3JtRWxlbWVu
dENsZWFyLmpzCiAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQXV0b21hdGlvbi9hdG9tcy9G
b3JtU3VibWl0LmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IDllNWUwYTAxZDIwLi4xYmZiNTMxODgwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRy
aXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wNS0xNyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgV2ViRHJpdmVyOiBpbXBs
ZW1lbnQgbWF4aW1pemUsIG1pbmltaXplIGFuZCBmdWxsc2NyZWVuIHdpbmRvdyBjb21tYW5kcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzk4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDogQWRkIEVudGVyRnVsbHNjcmVlbi5qcyB0byB0aGUgYnVpbGQuCisgICAgICAgICog
U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246Om1heGltaXplV2luZG93
KToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6bWluaW1pemVXaW5kb3cpOgorICAgICAg
ICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpmdWxsc2NyZWVuV2luZG93KToKKyAgICAgICAgKiBTZXNz
aW9uLmg6CisgICAgICAgICogV2ViRHJpdmVyU2VydmljZS5jcHA6CisgICAgICAgIChXZWJEcml2
ZXI6OldlYkRyaXZlclNlcnZpY2U6Om1heGltaXplV2luZG93KToKKyAgICAgICAgKFdlYkRyaXZl
cjo6V2ViRHJpdmVyU2VydmljZTo6bWluaW1pemVXaW5kb3cpOgorICAgICAgICAoV2ViRHJpdmVy
OjpXZWJEcml2ZXJTZXJ2aWNlOjpmdWxsc2NyZWVuV2luZG93KToKKyAgICAgICAgKiBXZWJEcml2
ZXJTZXJ2aWNlLmg6CisKIDIwMTgtMDUtMDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYkRyaXZlcjogaW1wbGVtZW50IGFkdmFuY2UgdXNl
ciBpbnRlcmFjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDNkOTVhYjQyMDhlLi41MzM1Njk2
NWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCkBAIC03NzQsNiArNzc0LDk2IEBAIHZvaWQgU2Vzc2lv
bjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHksIHN0CiAgICAgfSk7CiB9CiAKK3ZvaWQgU2Vzc2lvbjo6bWF4aW1pemVXaW5kb3co
RnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAoIW1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQpIHsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6Ok5v
U3VjaFdpbmRvdykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaGFuZGxlVXNlclBy
b21wdHMoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAocmVzdWx0
LmlzRXJyb3IoKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1
bHQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxK
U09OOjpPYmplY3Q+IHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgICAg
ICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJoYW5kbGUiKSwgbV90b3BsZXZl
bEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKKyAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRv
QmFja2VuZChBU0NJSUxpdGVyYWwoIm1heGltaXplV2luZG93T2ZCcm93c2luZ0NvbnRleHQiKSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Np
b25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAocmVzcG9uc2UuaXNFcnJvcikgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoV1RGTW92ZShyZXNwb25zZS5yZXNwb25zZU9iamVjdCkp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBn
ZXRUb3BsZXZlbEJyb3dzaW5nQ29udGV4dFJlY3QoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTZXNzaW9uOjptaW5pbWl6ZVdpbmRv
dyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmICghbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dCkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6
Tm9TdWNoV2luZG93KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBoYW5kbGVVc2Vy
UHJvbXB0cyhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXN1
bHQuaXNFcnJvcigpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRy
PEpTT046Ok9iamVjdD4gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAg
ICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImhhbmRsZSIpLCBtX3RvcGxl
dmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOworICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5k
VG9CYWNrZW5kKEFTQ0lJTGl0ZXJhbCgiaGlkZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0IiksIFdU
Rk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9u
SG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKHJlc3BvbnNlLmlzRXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDb21tYW5kUmVzdWx0OjpmYWlsKFdURk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ2V0
VG9wbGV2ZWxCcm93c2luZ0NvbnRleHRSZWN0KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2Vzc2lvbjo6ZnVsbHNjcmVlbldpbmRv
dyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmICghbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dCkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6
Tm9TdWNoV2luZG93KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBoYW5kbGVVc2Vy
UHJvbXB0cyhbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oQ29tbWFuZFJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXN1
bHQuaXNFcnJvcigpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRy
PEpTT046Ok9iamVjdD4gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAg
ICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImJyb3dzaW5nQ29udGV4dEhh
bmRsZSIpLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOworICAgICAgICBwYXJh
bWV0ZXJzLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJmdW5jdGlvbiIpLCBFbnRlckZ1bGxzY3Jl
ZW5KYXZhU2NyaXB0KTsKKyAgICAgICAgcGFyYW1ldGVycy0+c2V0QXJyYXkoQVNDSUlMaXRlcmFs
KCJhcmd1bWVudHMiKSwgSlNPTjo6QXJyYXk6OmNyZWF0ZSgpKTsKKyAgICAgICAgcGFyYW1ldGVy
cy0+c2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwoImV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1l
bnQiKSwgdHJ1ZSk7CisgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoQVNDSUlM
aXRlcmFsKCJldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiIpLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3Bv
bnNlJiYgcmVzcG9uc2UpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmlzRXJy
b3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChXVEZNb3ZlKHJlc3BvbnNlLnJlc3BvbnNl
T2JqZWN0KSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgU3RyaW5nIHZhbHVlU3RyaW5nOworICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5y
ZXNwb25zZU9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicmVzdWx0IiksIHZhbHVlU3Ry
aW5nKSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6
OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSZWZQdHI8SlNPTjo6
VmFsdWU+IHJlc3VsdFZhbHVlOworICAgICAgICAgICAgaWYgKCFKU09OOjpWYWx1ZTo6cGFyc2VK
U09OKHZhbHVlU3RyaW5nLCByZXN1bHRWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6
VW5rbm93bkVycm9yKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBnZXRUb3BsZXZlbEJyb3dzaW5nQ29udGV4dFJlY3QoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogUmVmUHRyPEpTT046
Ok9iamVjdD4gU2Vzc2lvbjo6Y3JlYXRlRWxlbWVudChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgdmFs
dWUpCiB7CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gdmFsdWVPYmplY3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5o
CmluZGV4IGVjNjQzMGE2ZDhkLi43MmFiMDdkYmE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmgKQEAgLTkwLDYg
KzkwLDkgQEAgcHVibGljOgogICAgIHZvaWQgc3dpdGNoVG9QYXJlbnRGcmFtZShGdW5jdGlvbjx2
b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKICAgICB2b2lkIGdldFdpbmRvd1JlY3QoRnVuY3Rp
b248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBzZXRXaW5kb3dSZWN0KHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB4LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geSwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHdpZHRoLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gaGVpZ2h0LCBGdW5jdGlv
bjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmKTsKKyAgICB2b2lkIG1heGltaXplV2luZG93KEZ1
bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOworICAgIHZvaWQgbWluaW1pemVXaW5k
b3coRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CisgICAgdm9pZCBmdWxsc2Ny
ZWVuV2luZG93KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwogICAgIHZvaWQg
ZmluZEVsZW1lbnRzKGNvbnN0IFN0cmluZyYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgc2VsZWN0
b3IsIEZpbmRFbGVtZW50c01vZGUsIGNvbnN0IFN0cmluZyYgcm9vdEVsZW1lbnRJRCwgRnVuY3Rp
b248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBnZXRBY3RpdmVFbGVtZW50
KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwogICAgIHZvaWQgaXNFbGVtZW50
U2VsZWN0ZWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRS
ZXN1bHQmJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2
aWNlLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKaW5kZXggZWUz
ZmM2ZTI1ODkuLjM4ZDE5ZTRmODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5j
cHAKQEAgLTEyMiw2ICsxMjIsOSBAQCBjb25zdCBXZWJEcml2ZXJTZXJ2aWNlOjpDb21tYW5kIFdl
YkRyaXZlclNlcnZpY2U6OnNfY29tbWFuZHNbXSA9IHsKICAgICB7IEhUVFBNZXRob2Q6OlBvc3Qs
ICIvc2Vzc2lvbi8kc2Vzc2lvbklkL2ZyYW1lL3BhcmVudCIsICZXZWJEcml2ZXJTZXJ2aWNlOjpz
d2l0Y2hUb1BhcmVudEZyYW1lIH0sCiAgICAgeyBIVFRQTWV0aG9kOjpHZXQsICIvc2Vzc2lvbi8k
c2Vzc2lvbklkL3dpbmRvdy9yZWN0IiwgJldlYkRyaXZlclNlcnZpY2U6OmdldFdpbmRvd1JlY3Qg
fSwKICAgICB7IEhUVFBNZXRob2Q6OlBvc3QsICIvc2Vzc2lvbi8kc2Vzc2lvbklkL3dpbmRvdy9y
ZWN0IiwgJldlYkRyaXZlclNlcnZpY2U6OnNldFdpbmRvd1JlY3QgfSwKKyAgICB7IEhUVFBNZXRo
b2Q6OlBvc3QsICIvc2Vzc2lvbi8kc2Vzc2lvbklkL3dpbmRvdy9tYXhpbWl6ZSIsICZXZWJEcml2
ZXJTZXJ2aWNlOjptYXhpbWl6ZVdpbmRvdyB9LAorICAgIHsgSFRUUE1ldGhvZDo6UG9zdCwgIi9z
ZXNzaW9uLyRzZXNzaW9uSWQvd2luZG93L21pbmltaXplIiwgJldlYkRyaXZlclNlcnZpY2U6Om1p
bmltaXplV2luZG93IH0sCisgICAgeyBIVFRQTWV0aG9kOjpQb3N0LCAiL3Nlc3Npb24vJHNlc3Np
b25JZC93aW5kb3cvZnVsbHNjcmVlbiIsICZXZWJEcml2ZXJTZXJ2aWNlOjpmdWxsc2NyZWVuV2lu
ZG93IH0sCiAKICAgICB7IEhUVFBNZXRob2Q6OlBvc3QsICIvc2Vzc2lvbi8kc2Vzc2lvbklkL2Vs
ZW1lbnQiLCAmV2ViRHJpdmVyU2VydmljZTo6ZmluZEVsZW1lbnQgfSwKICAgICB7IEhUVFBNZXRo
b2Q6OlBvc3QsICIvc2Vzc2lvbi8kc2Vzc2lvbklkL2VsZW1lbnRzIiwgJldlYkRyaXZlclNlcnZp
Y2U6OmZpbmRFbGVtZW50cyB9LApAQCAtOTY4LDYgKzk3MSwzMCBAQCB2b2lkIFdlYkRyaXZlclNl
cnZpY2U6OnNldFdpbmRvd1JlY3QoUmVmUHRyPEpTT046Ok9iamVjdD4mJiBwYXJhbWV0ZXJzLCBG
dW5jdGlvbgogICAgICAgICBtX3Nlc3Npb24tPnNldFdpbmRvd1JlY3QoeCwgeSwgd2lkdGgsIGhl
aWdodCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFdlYkRyaXZlclNl
cnZpY2U6Om1heGltaXplV2luZG93KFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgcGFyYW1ldGVycywg
RnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICAvLyDCpzEwLjcuMyBNYXhpbWl6ZSBXaW5kb3cKKyAgICAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vd2ViZHJpdmVyLyNtYXhpbWl6ZS13aW5kb3cKKyAgICBpZiAoZmluZFNlc3Npb25PckNv
bXBsZXRlV2l0aEVycm9yKCpwYXJhbWV0ZXJzLCBjb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAg
IG1fc2Vzc2lvbi0+bWF4aW1pemVXaW5kb3coV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCit2b2lkIFdlYkRyaXZlclNlcnZpY2U6Om1pbmltaXplV2luZG93KFJlZlB0cjxKU09OOjpP
YmplY3Q+JiYgcGFyYW1ldGVycywgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICAvLyDCpzEwLjcuNCBNaW5pbWl6ZSBXaW5kb3cKKyAg
ICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViZHJpdmVyLyNtaW5pbWl6ZS13aW5kb3cKKyAg
ICBpZiAoZmluZFNlc3Npb25PckNvbXBsZXRlV2l0aEVycm9yKCpwYXJhbWV0ZXJzLCBjb21wbGV0
aW9uSGFuZGxlcikpCisgICAgICAgIG1fc2Vzc2lvbi0+bWluaW1pemVXaW5kb3coV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmZ1bGxzY3Jl
ZW5XaW5kb3coUmVmUHRyPEpTT046Ok9iamVjdD4mJiBwYXJhbWV0ZXJzLCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIC8vIMKnMTAu
Ny41IEZ1bGxzY3JlZW4gV2luZG93CisgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRy
aXZlci8jZnVsbHNjcmVlbi13aW5kb3cKKyAgICBpZiAoZmluZFNlc3Npb25PckNvbXBsZXRlV2l0
aEVycm9yKCpwYXJhbWV0ZXJzLCBjb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgIG1fc2Vzc2lv
bi0+ZnVsbHNjcmVlbldpbmRvdyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZv
aWQgV2ViRHJpdmVyU2VydmljZTo6Y2xvc2VXaW5kb3coUmVmUHRyPEpTT046Ok9iamVjdD4mJiBw
YXJhbWV0ZXJzLCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIC8vIMKnMTAuMiBDbG9zZSBXaW5kb3cuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuaCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJp
dmVyU2VydmljZS5oCmluZGV4IDdlYTQ1YmRjYzU0Li40ZDY4NzhlZjQ1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmgKKysrIGIvU291cmNlL1dlYkRyaXZl
ci9XZWJEcml2ZXJTZXJ2aWNlLmgKQEAgLTc5LDYgKzc5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHN3aXRjaFRvUGFyZW50RnJhbWUoUmVmUHRyPEpTT046Ok9iamVjdD4mJiwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBnZXRXaW5kb3dSZWN0KFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwogICAg
IHZvaWQgc2V0V2luZG93UmVjdChSZWZQdHI8SlNPTjo6T2JqZWN0PiYmLCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUmVzdWx0JiYpPiYmKTsKKyAgICB2b2lkIG1heGltaXplV2luZG93KFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOworICAg
IHZvaWQgbWluaW1pemVXaW5kb3coUmVmUHRyPEpTT046Ok9iamVjdD4mJiwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CisgICAgdm9pZCBmdWxsc2NyZWVuV2luZG93KFJlZlB0
cjxKU09OOjpPYmplY3Q+JiYsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwog
ICAgIHZvaWQgZmluZEVsZW1lbnQoUmVmUHRyPEpTT046Ok9iamVjdD4mJiwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAgdm9pZCBmaW5kRWxlbWVudHMoUmVmUHRyPEpT
T046Ok9iamVjdD4mJiwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJik7CiAgICAg
dm9pZCBmaW5kRWxlbWVudEZyb21FbGVtZW50KFJlZlB0cjxKU09OOjpPYmplY3Q+JiYsIEZ1bmN0
aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzNWRjOWFhNTc0NC4u
NmUyMDBkMzBiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTgtMDUtMTcgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFdlYkRyaXZl
cjogaW1wbGVtZW50IG1heGltaXplLCBtaW5pbWl6ZSBhbmQgZnVsbHNjcmVlbiB3aW5kb3cgY29t
bWFuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oOgorICAgICAgICAoQVBJ
OjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6cmVxdWVzdE1heGltaXplV2luZG93T2ZQYWdlKTog
QWRkZWQgdG8gYWxsb3cgY2xpZW50cyBtYXhpbWl6ZSB0aGUgd2luZG93LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHA6CisgICAgICAgIChXaW5kb3dTdGF0
ZUV2ZW50OjpXaW5kb3dTdGF0ZUV2ZW50KTogU3RydWN0IHRvIGhhbmRsZSB3aW5kb3cgc3RhdGUg
ZXZlbnRzLgorICAgICAgICAoV2luZG93U3RhdGVFdmVudDo6fldpbmRvd1N0YXRlRXZlbnQpOiBD
b21wbGV0ZSB0aGUgZXZlbnQuCisgICAgICAgIChXaW5kb3dTdGF0ZUV2ZW50Ojpjb21wbGV0ZSk6
IENhbGwgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBpcyBub3QgY2FsbGVkIGFscmVhZHkuCisgICAg
ICAgICh3aW5kb3dTdGF0ZUV2ZW50Q2FsbGJhY2spOiBIYW5kbGUgd2luZG93IHN0YXRlIGV2ZW50
IGNoYW5nZXMuCisgICAgICAgICh3ZWJraXRXZWJWaWV3TWF4aW1pemVXaW5kb3cpOiBUcnkgdG8g
bWF4aW1pemUgdGhlIHdpbmRvdyBhbmQgd2FpdCBmb3IgdGhlIGV2ZW50LgorICAgICAgICAod2Vi
a2l0V2ViVmlld01pbmltaXplV2luZG93KTogVHJ5IHRvIG1pbmltaXplIHRoZSB3aW5kb3cgYW5k
IHdhaXQgZm9yIHRoZSBldmVudC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSZXN0b3JlV2luZG93
KTogVHJ5IHRvIHVubWF4aW1pemUgb3IgdW5taW5pbWl6ZSB0aGUgd2luZG93IGFuZCB3YWl0IGZv
ciB0aGUgZXZlbnQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQ
RS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TWF4aW1pemVXaW5kb3cpOgorICAgICAgICAo
d2Via2l0V2ViVmlld01pbmltaXplV2luZG93KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSZXN0
b3JlV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpz
b246CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bWF4aW1pemVXaW5k
b3dPZkJyb3dzaW5nQ29udGV4dCk6IEV4aXQgZnVsbHNjcmVlbiwgcmVzdG9yZSB0aGUgd2luZG93
IGFuZCB0aGVuCisgICAgICAgIG1heGltaXplIGl0LgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6bWF4aW1pemVXaW5kb3dGb3JQYWdlKTogQXNrIHRoZSBjbGllbnQgdG8g
bWF4aW1pemUgdGhlIHdpbmRvdyBvZiBwYWdlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRp
b24vYXRvbXMvRW50ZXJGdWxsc2NyZWVuLmpzOgorICAgICAgICAoZW50ZXJGdWxsc2NyZWVuKTog
UmV0dXJuIGVhcmx5IGlmIGZ1bGxzY3JlZW4gaXMgZGlzYWJsZWQgb3IgaWYgd2luZG93IGlzIGFs
cmVhZHkgaW4gZnVsbHNjcmVlbi4KKwogMjAxOC0wNS0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVXBkYXRlIE9wdGlv
bnNHVEsuY21ha2UgYW5kIE5FV1MgZm9yIDIuMjEuMiByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApp
bmRleCA4MDc2ZTQ0NDRkNy4uYmZjNWVlMzM4MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC01NCw2
ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzZXNzaW9uSWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc2Nvbm5l
Y3RGcm9tUmVtb3RlKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24mKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdE5ld1BhZ2VXaXRoT3B0aW9ucyhXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uJiwgQXV0b21hdGlvblNlc3Npb25Ccm93c2luZ0NvbnRleHRPcHRpb25zLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViUGFnZVByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdE1heGltaXplV2luZG93T2ZQYWdlKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24mLCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RIaWRlV2luZG93T2ZQYWdlKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RSZXN0b3JlV2luZG93T2ZQYWdlKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigpOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RTd2l0Y2hUb1BhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBk
YWUyOWUxNGUwOS4uOTZjZTAzZDBjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTky
LDYgKzkyLDMwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigmd2Vi
a2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykpOwogICAgIH0KIAorICAgIHZvaWQgcmVxdWVzdE1h
eGltaXplV2luZG93T2ZQYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFnZVByb3h5JiBw
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBhdXRvKiB3ZWJWaWV3ID0gd2Via2l0V2ViQ29udGV4dEdldFdl
YlZpZXdGb3JQYWdlKG1fc2Vzc2lvbi0+cHJpdi0+d2ViQ29udGV4dCwgJnBhZ2UpOworICAgICAg
ICBpZiAoIXdlYlZpZXcpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAg
ICB3ZWJraXRXZWJWaWV3TWF4aW1pemVXaW5kb3cod2ViVmlldywgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIH0KKworICAgIHZvaWQgcmVxdWVzdEhpZGVXaW5kb3dPZlBhZ2UoV2Vi
QXV0b21hdGlvblNlc3Npb24mLCBXZWJQYWdlUHJveHkmIHBhZ2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1
dG8qIHdlYlZpZXcgPSB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UobV9zZXNzaW9u
LT5wcml2LT53ZWJDb250ZXh0LCAmcGFnZSk7CisgICAgICAgIGlmICghd2ViVmlldykKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHdlYmtpdFdlYlZpZXdNaW5pbWl6
ZVdpbmRvdyh3ZWJWaWV3LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfQorCisg
ICAgdm9pZCByZXF1ZXN0UmVzdG9yZVdpbmRvd09mUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYs
IFdlYlBhZ2VQcm94eSYgcGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byogd2ViVmlldyA9IHdlYmtp
dFdlYkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShtX3Nlc3Npb24tPnByaXYtPndlYkNvbnRleHQs
ICZwYWdlKTsKKyAgICAgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICAgICAgd2Via2l0V2ViVmlld1Jlc3RvcmVXaW5kb3cod2ViVmlldywgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0KKwogICAgIGJvb2wgaXNTaG93aW5nSmF2
YVNjcmlwdERpYWxvZ09uUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYlBhZ2VQcm94eSYg
cGFnZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGF1dG8qIHdlYlZpZXcgPSB3ZWJraXRXZWJD
b250ZXh0R2V0V2ViVmlld0ZvclBhZ2UobV9zZXNzaW9uLT5wcml2LT53ZWJDb250ZXh0LCAmcGFn
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViVmlld1ByaXZhdGUuaAppbmRleCAzNjA1YTkxNWVkNS4uNTFlZTNiMGIyYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1By
aXZhdGUuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGlua0ljb24uaD4K
KyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKIHZvaWQgd2Via2l0V2ViVmlld0NyZWF0ZVBhZ2UoV2ViS2l0V2ViVmlldyos
IFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKQEAgLTc0LDYgKzc1LDkgQEAgV2ViS2l0
V2ViUmVzb3VyY2UqIHdlYmtpdFdlYlZpZXdHZXRMb2FkaW5nV2ViUmVzb3VyY2UoV2ViS2l0V2Vi
VmlldyosIHVpbnQ2NF90IHIKIHZvaWQgd2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdChX
ZWJLaXRXZWJWaWV3KiwgdWludDY0X3QgY2FsbGJhY2tJRCwgV2ViS2l0OjpXZWJJbWFnZSopOwog
I2VuZGlmCiB2b2lkIHdlYmtpdFdlYlZpZXdSZW1vdmVMb2FkaW5nV2ViUmVzb3VyY2UoV2ViS2l0
V2ViVmlldyosIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7Cit2b2lkIHdlYmtpdFdlYlZp
ZXdNYXhpbWl6ZVdpbmRvdyhXZWJLaXRXZWJWaWV3KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKK3ZvaWQgd2Via2l0V2ViVmlld01pbmltaXplV2luZG93KFdlYktpdFdlYlZpZXcqLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwordm9pZCB3ZWJraXRXZWJWaWV3UmVzdG9yZVdp
bmRvdyhXZWJLaXRXZWJWaWV3KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIHZvaWQg
d2Via2l0V2ViVmlld0VudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtp
dFdlYlZpZXdFeGl0RnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdQb3B1bGF0ZUNvbnRleHRNZW51KFdlYktpdFdlYlZpZXcqLCBjb25zdCBWZWN0b3I8V2ViS2l0
OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRNZW51LCBjb25zdCBXZWJLaXQ6Oldl
YkhpdFRlc3RSZXN1bHREYXRhJiwgR1ZhcmlhbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCmluZGV4IGMxMmVkYTBkNzZj
Li4yZjU0ODBiZDZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCkBAIC0yNSw2ICsyNSw4IEBACiAjaW5jbHVkZSAiV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1EaXNwbGF5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgog
I2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCkBAIC0x
MDQsNiArMTA2LDE1NCBAQCBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3UnVuRmlsZUNob29zZXIoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0RmlsZUNob29zZXJSZQogICAgIHJldHVybiBUUlVF
OwogfQogCitzdHJ1Y3QgV2luZG93U3RhdGVFdmVudCB7CisgICAgZW51bSBjbGFzcyBUeXBlIHsg
TWF4aW1pemUsIE1pbmltaXplLCBSZXN0b3JlIH07CisKKyAgICBXaW5kb3dTdGF0ZUV2ZW50KFR5
cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgICAgICA6IHR5cGUodHlwZSkKKyAgICAgICAgLCBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgLCBjb21wbGV0ZVRpbWVyKFJ1bkxvb3A6Om1h
aW4oKSwgdGhpcywgJldpbmRvd1N0YXRlRXZlbnQ6OmNvbXBsZXRlKQorICAgIHsKKyAgICAgICAg
Ly8gQ29tcGxldGUgdGhlIGV2ZW50IGlmIG5vdCBkb25lIGFmdGVyIDEgc2Vjb25kLgorICAgICAg
ICBjb21wbGV0ZVRpbWVyLnN0YXJ0T25lU2hvdCgxX3MpOworICAgIH0KKworICAgIH5XaW5kb3dT
dGF0ZUV2ZW50KCkKKyAgICB7CisgICAgICAgIGNvbXBsZXRlKCk7CisgICAgfQorCisgICAgdm9p
ZCBjb21wbGV0ZSgpCisgICAgeworICAgICAgICBpZiAoYXV0byBoYW5kbGVyID0gc3RkOjpleGNo
YW5nZShjb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cikpCisgICAgICAgICAgICBoYW5kbGVyKCk7
CisgICAgfQorCisgICAgVHlwZSB0eXBlOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4g
Y29tcGxldGlvbkhhbmRsZXI7CisgICAgUnVuTG9vcDo6VGltZXI8V2luZG93U3RhdGVFdmVudD4g
Y29tcGxldGVUaW1lcjsKK307CisKK3N0YXRpYyBjb25zdCBjaGFyKiBnV2luZG93U3RhdGVFdmVu
dElEID0gIndrLXdpbmRvdy1zdGF0ZS1ldmVudCI7CisKK3N0YXRpYyBnYm9vbGVhbiB3aW5kb3dT
dGF0ZUV2ZW50Q2FsbGJhY2soR3RrV2lkZ2V0KiB3aW5kb3csIEdka0V2ZW50V2luZG93U3RhdGUq
IGV2ZW50LCBXZWJLaXRXZWJWaWV3KiB2aWV3KQoreworICAgIGF1dG8qIHN0YXRlID0gc3RhdGlj
X2Nhc3Q8V2luZG93U3RhdGVFdmVudCo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHZpZXcp
LCBnV2luZG93U3RhdGVFdmVudElEKSk7CisgICAgaWYgKCFzdGF0ZSkgeworICAgICAgICBnX3Np
Z25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2luZG93LCByZWludGVycHJldF9jYXN0
PGdwb2ludGVyPih3aW5kb3dTdGF0ZUV2ZW50Q2FsbGJhY2spLCB2aWV3KTsKKyAgICAgICAgcmV0
dXJuIEZBTFNFOworICAgIH0KKworICAgIGJvb2wgZXZlbnRDb21wbGV0ZWQgPSBmYWxzZTsKKyAg
ICBzd2l0Y2ggKHN0YXRlLT50eXBlKSB7CisgICAgY2FzZSBXaW5kb3dTdGF0ZUV2ZW50OjpUeXBl
OjpNYXhpbWl6ZToKKyAgICAgICAgaWYgKGV2ZW50LT5uZXdfd2luZG93X3N0YXRlICYgR0RLX1dJ
TkRPV19TVEFURV9NQVhJTUlaRUQpCisgICAgICAgICAgICBldmVudENvbXBsZXRlZCA9IHRydWU7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2luZG93U3RhdGVFdmVudDo6VHlwZTo6TWluaW1p
emU6CisgICAgICAgIGlmICgoZXZlbnQtPm5ld193aW5kb3dfc3RhdGUgJiBHREtfV0lORE9XX1NU
QVRFX0lDT05JRklFRCkgfHwgIWd0a193aWRnZXRfZ2V0X21hcHBlZCh3aW5kb3cpKQorICAgICAg
ICAgICAgZXZlbnRDb21wbGV0ZWQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdp
bmRvd1N0YXRlRXZlbnQ6OlR5cGU6OlJlc3RvcmU6CisgICAgICAgIGlmICghKGV2ZW50LT5uZXdf
d2luZG93X3N0YXRlICYgR0RLX1dJTkRPV19TVEFURV9NQVhJTUlaRUQpICYmICEoZXZlbnQtPm5l
d193aW5kb3dfc3RhdGUgJiBHREtfV0lORE9XX1NUQVRFX0lDT05JRklFRCkpCisgICAgICAgICAg
ICBldmVudENvbXBsZXRlZCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlm
IChldmVudENvbXBsZXRlZCkgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0
X2J5X2Z1bmMod2luZG93LCByZWludGVycHJldF9jYXN0PGdwb2ludGVyPih3aW5kb3dTdGF0ZUV2
ZW50Q2FsbGJhY2spLCB2aWV3KTsKKyAgICAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1Qo
dmlldyksIGdXaW5kb3dTdGF0ZUV2ZW50SUQsIG51bGxwdHIpOworICAgIH0KKworICAgIHJldHVy
biBGQUxTRTsKK30KKwordm9pZCB3ZWJraXRXZWJWaWV3TWF4aW1pemVXaW5kb3coV2ViS2l0V2Vi
VmlldyogdmlldywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGF1dG8qIHRvcExldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJ
REdFVCh2aWV3KSk7CisgICAgaWYgKCFndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHRvcExldmVsKSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byogd2luZG93ID0gR1RLX1dJTkRPVyh0b3BMZXZlbCk7CisgICAgaWYgKGd0a193
aW5kb3dfaXNfbWF4aW1pemVkKHdpbmRvdykpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdfb2JqZWN0X3NldF9kYXRhX2Z1bGwo
R19PQkpFQ1QodmlldyksIGdXaW5kb3dTdGF0ZUV2ZW50SUQsIG5ldyBXaW5kb3dTdGF0ZUV2ZW50
KFdpbmRvd1N0YXRlRXZlbnQ6OlR5cGU6Ok1heGltaXplLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2Fz
dDxXaW5kb3dTdGF0ZUV2ZW50Kj4odXNlckRhdGEpOworICAgIH0pOworICAgIGdfc2lnbmFsX2Nv
bm5lY3Rfb2JqZWN0KHdpbmRvdywgIndpbmRvdy1zdGF0ZS1ldmVudCIsIEdfQ0FMTEJBQ0sod2lu
ZG93U3RhdGVFdmVudENhbGxiYWNrKSwgdmlldywgR19DT05ORUNUX0FGVEVSKTsKKyAgICBndGtf
d2luZG93X21heGltaXplKHdpbmRvdyk7CisjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQorICAg
IC8vIFh2ZmIgZG9lc24ndCBzdXBwb3J0IG1heGltaXplLCBzbyB3ZSByZXNpemUgdGhlIHdpbmRv
dyB0byB0aGUgc2NyZWVuIHNpemUuCisgICAgaWYgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6
c2hhcmVkRGlzcGxheSgpLnR5cGUoKSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6OlR5cGU6
OlgxMSkgeworICAgICAgICBjb25zdCBjaGFyKiB1bmRlclh2ZmIgPSBnX2dldGVudigiVU5ERVJf
WFZGQiIpOworICAgICAgICBpZiAoIWdfc3RyY21wMCh1bmRlclh2ZmIsICJ5ZXMiKSkgeworICAg
ICAgICAgICAgYXV0byBzY3JlZW5SZWN0ID0gV2ViQ29yZTo6c2NyZWVuQXZhaWxhYmxlUmVjdChu
dWxscHRyKTsKKyAgICAgICAgICAgIGd0a193aW5kb3dfbW92ZSh3aW5kb3csIHNjcmVlblJlY3Qu
eCgpLCBzY3JlZW5SZWN0LnkoKSk7CisgICAgICAgICAgICBndGtfd2luZG93X3Jlc2l6ZSh3aW5k
b3csIHNjcmVlblJlY3Qud2lkdGgoKSwgc2NyZWVuUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIH0K
KyAgICB9CisjZW5kaWYKKyAgICBndGtfd2lkZ2V0X3Nob3codG9wTGV2ZWwpOworfQorCit2b2lk
IHdlYmtpdFdlYlZpZXdNaW5pbWl6ZVdpbmRvdyhXZWJLaXRXZWJWaWV3KiB2aWV3LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogdG9w
TGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHZpZXcpKTsKKyAgICBp
ZiAoIWd0a193aWRnZXRfaXNfdG9wbGV2ZWwodG9wTGV2ZWwpKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiB3aW5kb3cg
PSBHVEtfV0lORE9XKHRvcExldmVsKTsKKyAgICBnX29iamVjdF9zZXRfZGF0YV9mdWxsKEdfT0JK
RUNUKHZpZXcpLCBnV2luZG93U3RhdGVFdmVudElELCBuZXcgV2luZG93U3RhdGVFdmVudChXaW5k
b3dTdGF0ZUV2ZW50OjpUeXBlOjpNaW5pbWl6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
LCBbXShncG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8V2lu
ZG93U3RhdGVFdmVudCo+KHVzZXJEYXRhKTsKKyAgICB9KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
X29iamVjdCh3aW5kb3csICJ3aW5kb3ctc3RhdGUtZXZlbnQiLCBHX0NBTExCQUNLKHdpbmRvd1N0
YXRlRXZlbnRDYWxsYmFjayksIHZpZXcsIEdfQ09OTkVDVF9BRlRFUik7CisgICAgZ3RrX3dpbmRv
d19pY29uaWZ5KHdpbmRvdyk7CisgICAgZ3RrX3dpZGdldF9oaWRlKHRvcExldmVsKTsKK30KKwor
dm9pZCB3ZWJraXRXZWJWaWV3UmVzdG9yZVdpbmRvdyhXZWJLaXRXZWJWaWV3KiB2aWV3LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byog
dG9wTGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHZpZXcpKTsKKyAg
ICBpZiAoIWd0a193aWRnZXRfaXNfdG9wbGV2ZWwodG9wTGV2ZWwpKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiB3aW5k
b3cgPSBHVEtfV0lORE9XKHRvcExldmVsKTsKKyAgICBpZiAoZ3RrX3dpZGdldF9nZXRfbWFwcGVk
KHRvcExldmVsKSAmJiAhZ3RrX3dpbmRvd19pc19tYXhpbWl6ZWQod2luZG93KSkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ19v
YmplY3Rfc2V0X2RhdGFfZnVsbChHX09CSkVDVCh2aWV3KSwgZ1dpbmRvd1N0YXRlRXZlbnRJRCwg
bmV3IFdpbmRvd1N0YXRlRXZlbnQoV2luZG93U3RhdGVFdmVudDo6VHlwZTo6UmVzdG9yZSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpLCBbXShncG9pbnRlciB1c2VyRGF0YSkgeworICAgICAg
ICBkZWxldGUgc3RhdGljX2Nhc3Q8V2luZG93U3RhdGVFdmVudCo+KHVzZXJEYXRhKTsKKyAgICB9
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X29iamVjdCh3aW5kb3csICJ3aW5kb3ctc3RhdGUtZXZl
bnQiLCBHX0NBTExCQUNLKHdpbmRvd1N0YXRlRXZlbnRDYWxsYmFjayksIHZpZXcsIEdfQ09OTkVD
VF9BRlRFUik7CisgICAgaWYgKGd0a193aW5kb3dfaXNfbWF4aW1pemVkKHdpbmRvdykpCisgICAg
ICAgIGd0a193aW5kb3dfdW5tYXhpbWl6ZSh3aW5kb3cpOworICAgIGlmICghZ3RrX3dpZGdldF9n
ZXRfbWFwcGVkKHRvcExldmVsKSkKKyAgICAgICAgZ3RrX3dpbmRvd19kZWljb25pZnkod2luZG93
KTsKKyNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCisgICAgLy8gWHZmYiBkb2Vzbid0IHN1cHBv
cnQgbWF4aW1pemUsIHNvIHdlIHJlc2l6ZSB0aGUgd2luZG93IHRvIHRoZSBkZWZhdWx0IHNpemUu
CisgICAgaWYgKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheSgpLnR5cGUo
KSA9PSBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXk6OlR5cGU6OlgxMSkgeworICAgICAgICBjb25z
dCBjaGFyKiB1bmRlclh2ZmIgPSBnX2dldGVudigiVU5ERVJfWFZGQiIpOworICAgICAgICBpZiAo
IWdfc3RyY21wMCh1bmRlclh2ZmIsICJ5ZXMiKSkgeworICAgICAgICAgICAgaW50IHgsIHk7Cisg
ICAgICAgICAgICBndGtfd2luZG93X2dldF9kZWZhdWx0X3NpemUod2luZG93LCAmeCwgJnkpOwor
ICAgICAgICAgICAgZ3RrX3dpbmRvd19yZXNpemUod2luZG93LCB4LCB5KTsKKyAgICAgICAgfQor
ICAgIH0KKyNlbmRpZgorICAgIGd0a193aWRnZXRfc2hvdyh0b3BMZXZlbCk7Cit9CisKIC8qKgog
ICogd2Via2l0X3dlYl92aWV3X25ldzoKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcAppbmRleCA0OTU4ZTdiMTEyMy4uYTM0
OTVlODUyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0V2ViVmlld1dQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRXZWJWaWV3V1BFLmNwcApAQCAtMzcsNiArMzcsMjEgQEAgZ2Jvb2xlYW4gd2Via2l0V2Vi
Vmlld1J1bkZpbGVDaG9vc2VyKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGaWxlQ2hvb3NlclJlcXVl
c3QqKQogICAgIHJldHVybiBGQUxTRTsKIH0KIAordm9pZCB3ZWJraXRXZWJWaWV3TWF4aW1pemVX
aW5kb3coV2ViS2l0V2ViVmlldyosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIHdlYmtp
dFdlYlZpZXdNaW5pbWl6ZVdpbmRvdyhXZWJLaXRXZWJWaWV3KiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
Cit9CisKK3ZvaWQgd2Via2l0V2ViVmlld1Jlc3RvcmVXaW5kb3coV2ViS2l0V2ViVmlldyosIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworfQorCiAvKioKICAqIHdlYmtpdF93ZWJfdmlld19uZXc6CiAgKiBA
YmFja2VuZDogKHRyYW5zZmVyIGZ1bGwpOiBhICNXZWJLaXRXZWJWaWV3QmFja2VuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9BdXRvbWF0aW9uLmpzb24g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL0F1dG9tYXRpb24uanNvbgppbmRl
eCA0MjU1NmI1YzIwYi4uNzhlZTJhYzkxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vQXV0b21hdGlvbi5qc29uCkBAIC0zNTYsNiArMzU2LDE0IEBACiAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgImFzeW5jIjogdHJ1ZQogICAgICAgICB9LAorICAg
ICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJtYXhpbWl6ZVdpbmRvd09mQnJvd3NpbmdDb250
ZXh0IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYXVzZXMgdGhlIHdpbmRvdyBvZiB0
aGUgc3BlY2lmaWVkIGJyb3dzaW5nIGNvbnRleHQgdG8gYmUgbWF4aW1pemVkLiBUaGlzIGNvbW1h
bmQgaW1wbGljaXRseSBleGl0cyBmdWxsc2NyZWVuIG1vZGUuIiwKKyAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGFuZGxlIiwgIiRyZWYiOiAi
QnJvd3NpbmdDb250ZXh0SGFuZGxlIiwgImRlc2NyaXB0aW9uIjogIlRoZSBoYW5kbGUgZm9yIHRo
ZSBicm93c2luZyBjb250ZXh0IHdob3NlIHdpbmRvdyBzaG91bGQgYmUgbWF4aW1pemVkLiIgfQor
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhc3luYyI6IHRydWUKKyAgICAgICAgfSwKICAg
ICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiaGlkZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0
IiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDYXVzZXMgdGhlIHdpbmRvdyBvZiB0aGUg
c3BlY2lmaWVkIGJyb3dzaW5nIGNvbnRleHQgdG8gYmUgaGlkZGVuL21pbmltaXplZC9pY29uaWZp
ZWQuIFRoaXMgY29tbWFuZCBpbXBsaWNpdGx5IGV4aXRzIGZ1bGxzY3JlZW4gbW9kZS4iLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcAppbmRleCBiOWI0ZGRjN2U5MS4uNDU1ZmE0MmFiNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC01MjUsNiArNTI1LDIyIEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OmxvYWRUaW1lckZpcmVkKCkKICAgICByZXNwb25kVG9QZW5kaW5nUGFnZU5hdmlnYXRp
b25DYWxsYmFja3NXaXRoVGltZW91dChtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5n
Q29udGV4dENhbGxiYWNrc1BlclBhZ2UpOwogfQogCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjptYXhpbWl6ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdD
b250ZXh0SGFuZGxlLCBSZWY8TWF4aW1pemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dENhbGxiYWNr
PiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8qIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUo
YnJvd3NpbmdDb250ZXh0SGFuZGxlKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKKworICAgIGV4aXRGdWxs
c2NyZWVuV2luZG93Rm9yUGFnZSgqcGFnZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSA9IG1ha2VSZWZQdHIo
cGFnZSldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8mIHdlYlBhZ2UgPSAqcGFnZTsKKyAgICAg
ICAgcmVzdG9yZVdpbmRvd0ZvclBhZ2Uod2ViUGFnZSwgW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHBhZ2UgPSBXVEZNb3ZlKHBhZ2UpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgbWF4aW1pemVXaW5kb3dGb3JQYWdlKCpwYWdlLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OmhpZGVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcmIGJyb3dz
aW5nQ29udGV4dEhhbmRsZSwgUmVmPEhpZGVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dENhbGxiYWNr
PiYmIGNhbGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZv
ckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwpAQCAtNTY4LDYgKzU4NCwxMSBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXN0b3JlV2luZG93Rm9yUGFnZShXZWJQYWdlUHJveHkm
IHBhZ2UsIFdURjo6Q29tcGxldAogICAgIG1fY2xpZW50LT5yZXF1ZXN0UmVzdG9yZVdpbmRvd09m
UGFnZSgqdGhpcywgcGFnZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjptYXhpbWl6ZVdpbmRvd0ZvclBhZ2UoV2ViUGFnZVByb3h5
JiBwYWdlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBtX2NsaWVudC0+cmVxdWVzdE1heGltaXplV2luZG93T2ZQYWdlKCp0aGlzLCBw
YWdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OmhpZGVXaW5kb3dGb3JQYWdlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jbGll
bnQtPnJlcXVlc3RIaWRlV2luZG93T2ZQYWdlKCp0aGlzLCBwYWdlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggM2ZmZTNiMzE2YTcuLjEyYjczMzVi
ODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0xNTEsNiArMTUxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY2xvc2VCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgc3dpdGNoVG9Ccm93c2luZ0NvbnRleHQoY29uc3Qg
U3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxGcmFt
ZUhhbmRsZSwgUmVmPFN3aXRjaFRvQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYpIGZpbmFsOwog
ICAgIHZvaWQgc2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcmIGhh
bmRsZSwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcmlnaW4sIGNvbnN0IEpTT046Ok9iamVjdCogc2l6
ZSwgUmVmPFNldFdpbmRvd0ZyYW1lT2ZCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJikgZmluYWw7
CisgICAgdm9pZCBtYXhpbWl6ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYg
aGFuZGxlLCBSZWY8TWF4aW1pemVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKSBm
aW5hbDsKICAgICB2b2lkIGhpZGVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChjb25zdCBTdHJpbmcm
IGhhbmRsZSwgUmVmPEhpZGVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKSBmaW5h
bDsKICAgICB2b2lkIG5hdmlnYXRlQnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYgaGFuZGxl
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFBhZ2VMb2FkU3RyYXRl
Z3lTdHJpbmcsIGNvbnN0IGludCogb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQsIFJlZjxOYXZpZ2F0
ZUJyb3dzaW5nQ29udGV4dENhbGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGdvQmFja0lu
QnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxQYWdl
TG9hZFN0cmF0ZWd5U3RyaW5nLCBjb25zdCBpbnQqIG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0LCBS
ZWY8R29CYWNrSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CkBAIC0yMTMs
NiArMjE0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW5XaW5kb3dGb3JQ
YWdlKFdlYlBhZ2VQcm94eSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHJlc3RvcmVXaW5kb3dGb3JQYWdlKFdlYlBhZ2VQcm94eSYsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1heGltaXplV2luZG93Rm9yUGFnZShXZWJQ
YWdlUHJveHkmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBo
aWRlV2luZG93Rm9yUGFnZShXZWJQYWdlUHJveHkmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViQXV0b21hdGlv
blNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9hdG9tcy9FbnRlckZ1bGxzY3JlZW4uanMgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2F0b21zL0VudGVyRnVsbHNjcmVlbi5qcwppbmRleCAw
ZTk0NmU2YmVmZC4uNTc0NTFjNjM2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vYXRvbXMvRW50ZXJGdWxsc2NyZWVuLmpzCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vYXRvbXMvRW50ZXJGdWxsc2NyZWVuLmpzCkBAIC0yNiw4
ICsyNiwxNSBAQAogZnVuY3Rpb24gZW50ZXJGdWxsc2NyZWVuKCkgewogCiAgICAgbGV0IGNhbGxi
YWNrID0gYXJndW1lbnRzWzBdOwotICAgIGlmICghZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVu
YWJsZWQpCisgICAgaWYgKCFkb2N1bWVudC53ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCkgewogICAg
ICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
ZG9jdW1lbnQud2Via2l0SXNGdWxsU2NyZWVuKSB7CisgICAgICAgIGNhbGxiYWNrKHRydWUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbGV0IGZ1bGxzY3JlZW5DaGFuZ2VMaXN0ZW5l
ciwgZnVsbHNjcmVlbkVycm9yTGlzdGVuZXI7CiAgICAgZnVsbHNjcmVlbkNoYW5nZUxpc3RlbmVy
ID0gKGUpID0+IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBlZjZkZTkzY2RlOS4uZDU1MmZkYTE1ZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wNS0xNyAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgV2Vi
RHJpdmVyOiBpbXBsZW1lbnQgbWF4aW1pemUsIG1pbmltaXplIGFuZCBmdWxsc2NyZWVuIHdpbmRv
dyBjb21tYW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwMzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQveHZmYmRyaXZlci5weToKKyAgICAgICAgKFh2ZmJE
cml2ZXIuX3NldHVwX2Vudmlyb25fZm9yX3Rlc3QpOiBTZXQgVU5ERVJfWFZGQiBlbnZpcm9ubWVu
dCB2YXJpYWJsZSB3aGVuIHJ1bm5pbmcgdW5kZXIgWHZmYi4KKwogMjAxOC0wNS0yMSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjIyMjk2Ny4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC94dmZiZHJpdmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3h2ZmJk
cml2ZXIucHkKaW5kZXggYWIzM2QzYTI3YzQuLjk5MTIxZDA0NGQ5IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQveHZmYmRyaXZlci5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQveHZmYmRyaXZlci5weQpAQCAtOTgsNiArOTgsNyBAQCBjbGFzcyBYdmZi
RHJpdmVyKERyaXZlcik6CiAKICAgICAgICAgIyBXZSBtdXN0IGRvIHRoaXMgaGVyZSBiZWNhdXNl
IHRoZSBESVNQTEFZIG51bWJlciBkZXBlbmRzIG9uIF93b3JrZXJfbnVtYmVyCiAgICAgICAgIGVu
dmlyb25tZW50WydESVNQTEFZJ10gPSAiOiVkIiAlIGRpc3BsYXlfaWQKKyAgICAgICAgZW52aXJv
bm1lbnRbJ1VOREVSX1hWRkInXSA9ICd5ZXMnCiAgICAgICAgIGVudmlyb25tZW50WydHREtfQkFD
S0VORCddID0gJ3gxMScKICAgICAgICAgZW52aXJvbm1lbnRbJ0xPQ0FMX1JFU09VUkNFX1JPT1Qn
XSA9IHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpCiAgICAgICAgIGlmIHNlbGYuX2RyaXZl
cl90ZW1wZGlyIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVyVGVzdHMvQ2hhbmdl
TG9nIGIvV2ViRHJpdmVyVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk4ZWNjM2UxNmFhLi5hYWNlNmRl
MGM1MSAxMDA2NDQKLS0tIGEvV2ViRHJpdmVyVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1dlYkRyaXZl
clRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTA1LTE3ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBXZWJEcml2ZXI6IGlt
cGxlbWVudCBtYXhpbWl6ZSwgbWluaW1pemUgYW5kIGZ1bGxzY3JlZW4gd2luZG93IGNvbW1hbmRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzOTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
ZXhwZWN0YXRpb25zIGZvciB0ZXN0cyB0aGF0IGFyZSBwYXNzaW5nIG5vdy4KKworICAgICAgICAq
IFRlc3RFeHBlY3RhdGlvbnMuanNvbjoKKwogMjAxOC0wNS0yMSAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcu
IFVwZGF0ZSBzZXZlcmFsIHRlc3QgZXhwZWN0YXRpb25zLgpkaWZmIC0tZ2l0IGEvV2ViRHJpdmVy
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucy5qc29uIGIvV2ViRHJpdmVyVGVzdHMvVGVzdEV4cGVjdGF0
aW9ucy5qc29uCmluZGV4IGM3MjViMTNmNGY4Li4yNzU3NTg3ZmE0MiAxMDA2NDQKLS0tIGEvV2Vi
RHJpdmVyVGVzdHMvVGVzdEV4cGVjdGF0aW9ucy5qc29uCisrKyBiL1dlYkRyaXZlclRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMuanNvbgpAQCAtMjAzLDE5ICsyMDMsNiBAQAogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSwKLSAgICAiaW1wb3J0ZWQvc2VsZW5pdW0vcHkvdGVzdC9zZWxlbml1
bS93ZWJkcml2ZXIvY29tbW9uL3dpbmRvd190ZXN0cy5weSI6IHsKLSAgICAgICAgInN1YnRlc3Rz
IjogewotICAgICAgICAgICAgInRlc3RTaG91bGRNYXhpbWl6ZVRoZVdpbmRvdyI6IHsKLSAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWci
OiAid2Via2l0Lm9yZy9iLzE4MDM5OCJ9fQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJ0
ZXN0X3Nob3VsZF9mdWxsc2NyZWVuX3RoZV9jdXJyZW50X3dpbmRvdyI6IHsKLSAgICAgICAgICAg
ICAgICAiZXhwZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Vi
a2l0Lm9yZy9iLzE4MDM5OCJ9fQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJ0ZXN0X3No
b3VsZF9taW5pbWl6ZV90aGVfY3VycmVudF93aW5kb3ciOiB7Ci0gICAgICAgICAgICAgICAgImV4
cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcv
Yi8xODAzOTgifX0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0sCiAgICAgImltcG9y
dGVkL3czYy93ZWJkcml2ZXIvdGVzdHMvYWN0aW9ucy9rZXkucHkiOiB7CiAgICAgICAgICJzdWJ0
ZXN0cyI6IHsKICAgICAgICAgICAgICJ0ZXN0X3NpbmdsZV9wcmludGFibGVfa2V5X3NlbmRzX2Nv
cnJlY3RfZXZlbnRzW1xceGUwLV0iOiB7CkBAIC01MTMsMTkgKzUwMCw2IEBACiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9LAotICAgICJpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3Rz
L21heGltaXplX3dpbmRvdy9tYXhpbWl6ZS5weSI6IHsKLSAgICAgICAgImV4cGVjdGVkIjogeyJh
bGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xODAzOTgifX0K
LSAgICB9LAotICAgICJpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rlc3RzL21heGltaXplX3dpbmRv
dy91c2VyX3Byb21wdHMucHkiOiB7Ci0gICAgICAgICJzdWJ0ZXN0cyI6IHsKLSAgICAgICAgICAg
ICJ0ZXN0X2hhbmRsZV9wcm9tcHRfYWNjZXB0IjogewotICAgICAgICAgICAgICAgICJleHBlY3Rl
ZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMTgw
Mzk4In19Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInRlc3RfaGFuZGxlX3Byb21wdF9t
aXNzaW5nX3ZhbHVlIjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsiYWxsIjogeyJz
dGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQub3JnL2IvMTgwMzk4In19Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9LAogICAgICJpbXBvcnRlZC93M2Mvd2ViZHJpdmVyL3Rl
c3RzL2V4ZWN1dGVfc2NyaXB0L2pzb25fc2VyaWFsaXplX3dpbmRvd3Byb3h5LnB5IjogewogICAg
ICAgICAiZXhwZWN0ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Vi
a2l0Lm9yZy9iLzE4MDM5NyJ9fQogICAgIH0sCkBAIC0xMDAzLDQ3ICs5NzcsOCBAQAogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfSwKLSAgICAiaW1wb3J0ZWQvdzNjL3dlYmRyaXZlci90
ZXN0cy9mdWxsc2NyZWVuX3dpbmRvdy9mdWxsc2NyZWVuLnB5IjogewotICAgICAgICAiZXhwZWN0
ZWQiOiB7ImFsbCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4
MDM5OCJ9fQotICAgIH0sCi0gICAgImltcG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMvZnVsbHNj
cmVlbl93aW5kb3cvdXNlcl9wcm9tcHRzLnB5IjogewotICAgICAgICAiZXhwZWN0ZWQiOiB7ImFs
bCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4MDM5OCJ9fSwK
LSAgICAgICAgInN1YnRlc3RzIjogewotICAgICAgICAgICAgInRlc3RfaGFuZGxlX3Byb21wdF9k
aXNtaXNzX2FuZF9ub3RpZnkiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwi
OiB7InN0YXR1cyI6IFsiUEFTUyJdfX0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAidGVz
dF9oYW5kbGVfcHJvbXB0X2FjY2VwdF9hbmRfbm90aWZ5IjogewotICAgICAgICAgICAgICAgICJl
eHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIlBBU1MiXX19Ci0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgInRlc3RfaGFuZGxlX3Byb21wdF9pZ25vcmUiOiB7Ci0gICAgICAgICAgICAg
ICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiUEFTUyJdfX0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0sCi0gICAgImltcG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMv
bWluaW1pemVfd2luZG93L21pbmltaXplLnB5IjogewotICAgICAgICAiZXhwZWN0ZWQiOiB7ImFs
bCI6IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4MDM5OCJ9fQot
ICAgIH0sCi0gICAgImltcG9ydGVkL3czYy93ZWJkcml2ZXIvdGVzdHMvbWluaW1pemVfd2luZG93
L3VzZXJfcHJvbXB0cy5weSI6IHsKLSAgICAgICAgInN1YnRlc3RzIjogewotICAgICAgICAgICAg
InRlc3RfaGFuZGxlX3Byb21wdF9hY2NlcHQiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVk
IjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xODAz
OTgifX0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAidGVzdF9oYW5kbGVfcHJvbXB0X21p
c3NpbmdfdmFsdWUiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0
YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xODAzOTgifX0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0sCiAgICAgImltcG9ydGVkL3czYy93ZWJkcml2ZXIvdGVz
dHMvc2V0X3dpbmRvd19yZWN0L3NldC5weSI6IHsKICAgICAgICAgInN1YnRlc3RzIjogewotICAg
ICAgICAgICAgInRlc3RfZnVsbHlfZXhpdF9mdWxsc2NyZWVuIjogewotICAgICAgICAgICAgICAg
ICJleHBlY3RlZCI6IHsiYWxsIjogeyJzdGF0dXMiOiBbIkZBSUwiXSwgImJ1ZyI6ICJ3ZWJraXQu
b3JnL2IvMTgwMzk4In19Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgInRlc3RfcmVzdG9y
ZV9mcm9tX21pbmltaXplZCI6IHsKLSAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiB7ImFsbCI6
IHsic3RhdHVzIjogWyJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9iLzE4MDM5OCJ9fQotICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICJ0ZXN0X3Jlc3RvcmVfZnJvbV9tYXhpbWl6ZWQiOiB7
Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJd
LCAiYnVnIjogIndlYmtpdC5vcmcvYi8xODAzOTgifX0KLSAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAidGVzdF9uZWdhdGl2ZV94X3kiOiB7CiAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjog
eyJhbGwiOiB7InN0YXR1cyI6IFsiRkFJTCJdLCAiYnVnIjogIndlYmtpdC5vcmcvYi8xODA0MTgi
fX0KICAgICAgICAgICAgIH0K
</data>
<flag name="review"
          id="359159"
          type_id="1"
          status="+"
          setter="bburg"
    />
          </attachment>
      

    </bug>

</bugzilla>