<?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>227902</bug_id>
          
          <creation_ts>2021-07-13 05:04:17 -0700</creation_ts>
          <short_desc>[GLib] Expose API to access/modify capture devices states</short_desc>
          <delta_ts>2021-07-22 03:54:31 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=210926</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>210926</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1776596</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-13 05:04:17 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776598</commentid>
    <comment_count>1</comment_count>
      <attachid>433401</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-13 05:42:35 -0700</bug_when>
    <thetext>Created attachment 433401
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776599</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-07-13 05:43:27 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776613</commentid>
    <comment_count>3</comment_count>
      <attachid>433401</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-07-13 06:23:47 -0700</bug_when>
    <thetext>Comment on attachment 433401
Patch

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

API approval 1 of 2

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:400
&gt; +

Remove this extra blank line

&gt; Tools/ChangeLog:9
&gt; +        new API tests was adding, checking support for getDisplayMedia(). As this requires user

added

&gt; Tools/glib/api_test_runner.py:175
&gt; +        env = self._test_env.copy()
&gt; +        if os.path.basename(test_program) in self.TESTS_REQUIRING_INTERNAL_INJECTED_BUNDLE:
&gt; +            env[&quot;TEST_WEBKIT_API_WEBKIT2_INJECTED_BUNDLE_FILENAME&quot;] = &quot;libTestWebKitAPIInternalInjectedBundle.so&quot;

Hmmmm, this is unfortunate as the test is really not going to work without the test runner, is it? Could this be set by the code itself?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776615</commentid>
    <comment_count>4</comment_count>
      <attachid>433401</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-13 06:39:04 -0700</bug_when>
    <thetext>Comment on attachment 433401
Patch

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

&gt;&gt; Tools/glib/api_test_runner.py:175
&gt;&gt; +            env[&quot;TEST_WEBKIT_API_WEBKIT2_INJECTED_BUNDLE_FILENAME&quot;] = &quot;libTestWebKitAPIInternalInjectedBundle.so&quot;
&gt; 
&gt; Hmmmm, this is unfortunate as the test is really not going to work without the test runner, is it? Could this be set by the code itself?

Which code?
The UIClient API test requires this because the getDisplayMedia() call cannot work without user interaction, which we fake thanks to the internals.withUserGesture() thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776617</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-13 06:41:44 -0700</bug_when>
    <thetext>The changes I did in the MiniBrowser are not very good TBH. Using the URI entry was perhaps not a great idea.

For the displayMedia indicator Chomium uses a custom overlay widget. Something similar would be nice but I don&apos;t know how to achieve that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776618</commentid>
    <comment_count>6</comment_count>
      <attachid>433401</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-07-13 06:52:54 -0700</bug_when>
    <thetext>Comment on attachment 433401
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1381
&gt; +     * @WEBKIT_MEDIA_CAPTURE_STATE_NONE or @WEBKIT_MEDIA_CAPTURE_STATE_MUTED.

Something that is not clear to me reading the API documentation: What happens
if a media request permission is accepted, then the capture-state is set to
WEBKIT_MEDIA_CAPTURE_STATE_NONE, and then a web page uses getUserMedia() again?

Will there be a new permission request, or does one need to use the setter with
WEBKIT_MEDIA_CAPTURE_STATE_ACTIVE before capture works again?

I feel that this deserves clarification. The same question applies to the three
introduced properties, as I suppose internally WebKit handles them in the same way.

&gt; Source/WebKit/UIProcess/API/gtk/WebKitWebView.h:620
&gt; +webkit_web_view_get_camera_capture_state (WebKitWebView* web_view);

Indentation in public headers should follow the GLib/GTK convention of left-aligning
the opening parenthesis of function parameters — I know, it can get annoying, but
it&apos;s what we do ¯\_(ツ)_/¯

&gt; Source/WebKit/UIProcess/API/wpe/WebKitWebView.h:597
&gt; +webkit_web_view_get_camera_capture_state             (WebKitWebView             *web_view);

…and here it&apos;s perfectly indented :)

&gt;&gt;&gt; Tools/glib/api_test_runner.py:175
&gt;&gt;&gt; +            env[&quot;TEST_WEBKIT_API_WEBKIT2_INJECTED_BUNDLE_FILENAME&quot;] = &quot;libTestWebKitAPIInternalInjectedBundle.so&quot;
&gt;&gt; 
&gt;&gt; Hmmmm, this is unfortunate as the test is really not going to work without the test runner, is it? Could this be set by the code itself?
&gt; 
&gt; Which code?
&gt; The UIClient API test requires this because the getDisplayMedia() call cannot work without user interaction, which we fake thanks to the internals.withUserGesture() thing.

As a matter of fact, I think there are tests which we are currently skipping
which needs this :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776619</commentid>
    <comment_count>7</comment_count>
      <attachid>433401</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-13 07:13:18 -0700</bug_when>
    <thetext>Comment on attachment 433401
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1381
&gt;&gt; +     * @WEBKIT_MEDIA_CAPTURE_STATE_NONE or @WEBKIT_MEDIA_CAPTURE_STATE_MUTED.
&gt; 
&gt; Something that is not clear to me reading the API documentation: What happens
&gt; if a media request permission is accepted, then the capture-state is set to
&gt; WEBKIT_MEDIA_CAPTURE_STATE_NONE, and then a web page uses getUserMedia() again?
&gt; 
&gt; Will there be a new permission request, or does one need to use the setter with
&gt; WEBKIT_MEDIA_CAPTURE_STATE_ACTIVE before capture works again?
&gt; 
&gt; I feel that this deserves clarification. The same question applies to the three
&gt; introduced properties, as I suppose internally WebKit handles them in the same way.

Permission requests persistency support is left to the app, iirc. But I&apos;ll check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776758</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-07-13 14:28:47 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #4)
&gt; Which code?
&gt; The UIClient API test requires this because the getDisplayMedia() call
&gt; cannot work without user interaction, which we fake thanks to the
&gt; internals.withUserGesture() thing.

I think it could be set by the API test itself, rather than the test script?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777175</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-15 04:58:10 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #8)
&gt; (In reply to Philippe Normand from comment #4)
&gt; &gt; Which code?
&gt; &gt; The UIClient API test requires this because the getDisplayMedia() call
&gt; &gt; cannot work without user interaction, which we fake thanks to the
&gt; &gt; internals.withUserGesture() thing.
&gt; 
&gt; I think it could be set by the API test itself, rather than the test script?

I don&apos;t think we expose public API to set the injected bundle path within the WebContext?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777188</commentid>
    <comment_count>10</comment_count>
      <attachid>433581</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-15 06:24:06 -0700</bug_when>
    <thetext>Created attachment 433581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777191</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-07-15 07:22:29 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #9)
&gt; I don&apos;t think we expose public API to set the injected bundle path within
&gt; the WebContext?

No, I mean you should do the setenv() in the API test itself (at the very top of main to avoid threadsafety issues) rather than relying on the test runner to do it. That way, it will work when the test is run directly without the test runner. Otherwise, if the test ever breaks in the future (it will), or if we need to run it manually for development, we will have trouble debugging it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777196</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-15 07:33:20 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #11)
&gt; (In reply to Philippe Normand from comment #9)
&gt; &gt; I don&apos;t think we expose public API to set the injected bundle path within
&gt; &gt; the WebContext?
&gt; 
&gt; No, I mean you should do the setenv() in the API test itself (at the very
&gt; top of main to avoid threadsafety issues) rather than relying on the test
&gt; runner to do it. That way, it will work when the test is run directly
&gt; without the test runner. Otherwise, if the test ever breaks in the future
&gt; (it will), or if we need to run it manually for development, we will have
&gt; trouble debugging it.

Ah OK, sorry I misunderstood :) Yeah this might work. I&apos;ll check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777213</commentid>
    <comment_count>13</comment_count>
      <attachid>433587</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-15 09:05:50 -0700</bug_when>
    <thetext>Created attachment 433587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777240</commentid>
    <comment_count>14</comment_count>
      <attachid>433587</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-07-15 10:22:29 -0700</bug_when>
    <thetext>Comment on attachment 433587
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:1368
&gt; +    g_setenv(&quot;TEST_WEBKIT_API_WEBKIT2_INJECTED_BUNDLE_FILENAME&quot;, &quot;libTestWebKitAPIInternalInjectedBundle.so&quot;, TRUE);

I would do this at the very top of main(), where there&apos;s no doubt you&apos;ve done so before threads are initialized. I don&apos;t know for sure, but I would expects threads to exist by this point. If so, it&apos;s not safe.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:1412
&gt; +    g_unsetenv(&quot;TEST_WEBKIT_API_WEBKIT2_INJECTED_BUNDLE_FILENAME&quot;);

This will randomly crash, because some other thread will inevitably try calling getenv() at the same time. It&apos;s not needed anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777241</commentid>
    <comment_count>15</comment_count>
      <attachid>433587</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-15 10:25:43 -0700</bug_when>
    <thetext>Comment on attachment 433587
Patch

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

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:1368
&gt;&gt; +    g_setenv(&quot;TEST_WEBKIT_API_WEBKIT2_INJECTED_BUNDLE_FILENAME&quot;, &quot;libTestWebKitAPIInternalInjectedBundle.so&quot;, TRUE);
&gt; 
&gt; I would do this at the very top of main(), where there&apos;s no doubt you&apos;ve done so before threads are initialized. I don&apos;t know for sure, but I would expects threads to exist by this point. If so, it&apos;s not safe.

Which main() are you talking about?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777252</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-07-15 10:57:39 -0700</bug_when>
    <thetext>I assumed it was in the test file itself, TestUIClient.cpp, but I was wrong... it&apos;s in TestMain.cpp.

Hm, is it safe to use libTestWebKitAPIInternalInjectedBundle.so for all tests?

Since main calls startDBusServer() before it calls beforeAll(), we can be certain that beforeAll() is too late to safely modify the environment. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777256</commentid>
    <comment_count>17</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-15 11:03:15 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #16)
&gt; I assumed it was in the test file itself, TestUIClient.cpp, but I was
&gt; wrong... it&apos;s in TestMain.cpp.
&gt; 
&gt; Hm, is it safe to use libTestWebKitAPIInternalInjectedBundle.so for all
&gt; tests?
&gt; 

No. That&apos;s why in the original patch I was using it only for TestUIClient.

&gt; Since main calls startDBusServer() before it calls beforeAll(), we can be
&gt; certain that beforeAll() is too late to safely modify the environment. :/

Well, I did test here and it works. Also works on the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777257</commentid>
    <comment_count>18</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-15 11:03:24 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #16)
&gt; I assumed it was in the test file itself, TestUIClient.cpp, but I was
&gt; wrong... it&apos;s in TestMain.cpp.
&gt; 
&gt; Hm, is it safe to use libTestWebKitAPIInternalInjectedBundle.so for all
&gt; tests?
&gt; 

No. That&apos;s why in the original patch I was using it only for TestUIClient.

&gt; Since main calls startDBusServer() before it calls beforeAll(), we can be
&gt; certain that beforeAll() is too late to safely modify the environment. :/

Well, I did test here and it works. Also works on the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777262</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-07-15 11:18:16 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #18)
&gt; Well, I did test here and it works. Also works on the EWS.

Yeah, but if you get sufficiently unlucky it will crash. This has happened in practice https://blogs.gnome.org/mcatanzaro/2018/02/28/on-setenv-and-explosions/ so we shouldn&apos;t do it.

Well drat, it&apos;s not so easy to avoid setting the environment variable from the test runner after all, then. :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777475</commentid>
    <comment_count>20</comment_count>
      <attachid>433581</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-16 02:24:16 -0700</bug_when>
    <thetext>Comment on attachment 433581
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:896
&gt; +    case PROP_CAMERA_CAPTURE_STATE:
&gt; +        webkit_web_view_set_camera_capture_state(webView, static_cast&lt;WebKitMediaCaptureState&gt;(g_value_get_enum(value)));
&gt; +        break;
&gt; +    case PROP_MICROPHONE_CAPTURE_STATE:
&gt; +        webkit_web_view_set_microphone_capture_state(webView, static_cast&lt;WebKitMediaCaptureState&gt;(g_value_get_enum(value)));
&gt; +        break;
&gt; +    case PROP_DISPLAY_CAPTURE_STATE:
&gt; +        webkit_web_view_set_display_capture_state(webView, static_cast&lt;WebKitMediaCaptureState&gt;(g_value_get_enum(value)));

Why don&apos;t we expose a single media capture state?

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4882
&gt; +        case WebCore::MediaProducer::MediaCaptureKind::AudioVideo:
&gt; +            return;

Can this happen?

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:1073
&gt; +        &quot;    window.internals.withUserGesture(() =&gt; {&quot;

I think in other tests we emulate user gesture by sending a key press or something like that.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:1100
&gt; +    webkit_settings_set_enable_media_stream(settings, enabled);
&gt; +    webkit_settings_set_enable_mock_capture_devices(settings, FALSE);
&gt; +    webkitSettingsSetMediaCaptureRequiresSecureConnection(settings, TRUE);

So, we are only testing the permission request API, but not the new properties added to the web view?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777481</commentid>
    <comment_count>21</comment_count>
      <attachid>433581</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-16 03:28:57 -0700</bug_when>
    <thetext>Comment on attachment 433581
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:896
&gt;&gt; +        webkit_web_view_set_display_capture_state(webView, static_cast&lt;WebKitMediaCaptureState&gt;(g_value_get_enum(value)));
&gt; 
&gt; Why don&apos;t we expose a single media capture state?

A single prop for all 3 device types?

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4882
&gt;&gt; +            return;
&gt; 
&gt; Can this happen?

No, this value is used only in the page API for stopping capture of both audio and video, AFAICS.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:1100
&gt;&gt; +    webkitSettingsSetMediaCaptureRequiresSecureConnection(settings, TRUE);
&gt; 
&gt; So, we are only testing the permission request API, but not the new properties added to the web view?

I can add some.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777491</commentid>
    <comment_count>22</comment_count>
      <attachid>433581</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-16 04:12:33 -0700</bug_when>
    <thetext>Comment on attachment 433581
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:896
&gt;&gt;&gt; +        webkit_web_view_set_display_capture_state(webView, static_cast&lt;WebKitMediaCaptureState&gt;(g_value_get_enum(value)));
&gt;&gt; 
&gt;&gt; Why don&apos;t we expose a single media capture state?
&gt; 
&gt; A single prop for all 3 device types?

Nevermind, I realized that didn&apos;t make sense after reading the entire patch, but forgot to remove this question.

&gt;&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4882
&gt;&gt;&gt; +            return;
&gt;&gt; 
&gt;&gt; Can this happen?
&gt; 
&gt; No, this value is used only in the page API for stopping capture of both audio and video, AFAICS.

Use ASSERT_NOT_REACHED() then to make it clearer.

&gt;&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:1100
&gt;&gt;&gt; +    webkitSettingsSetMediaCaptureRequiresSecureConnection(settings, TRUE);
&gt;&gt; 
&gt;&gt; So, we are only testing the permission request API, but not the new properties added to the web view?
&gt; 
&gt; I can add some.

Yes please, and check we really need the injected bundle, I think we managed to emulate user gesture without it. In any case, we already have a web extension for tests, you can use WebExtensionTest.cpp to expose any js you need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777759</commentid>
    <comment_count>23</comment_count>
      <attachid>433752</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-18 10:25:33 -0700</bug_when>
    <thetext>Created attachment 433752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777779</commentid>
    <comment_count>24</comment_count>
      <attachid>433752</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-18 14:08:57 -0700</bug_when>
    <thetext>Comment on attachment 433752
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9431
&gt; +    if (m_isClosed)
&gt; +        return;

Seems like this is breaking mac API tests, I&apos;ll have to check it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777822</commentid>
    <comment_count>25</comment_count>
      <attachid>433752</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-19 01:16:56 -0700</bug_when>
    <thetext>Comment on attachment 433752
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9431
&gt;&gt; +        return;
&gt; 
&gt; Seems like this is breaking mac API tests, I&apos;ll have to check it...

I made this change to prevent a UIProcess crash triggered by GObject properties notifications during disposal of the WebView:

(gdb) bt
#0  g_type_check_instance_cast (type_instance=0xda6490, iface_type=0xd9d000 [GtkEntry/GtkWidget/GInitiallyUnowned]) at ../gobject/gtype.c:4115
#1  0x000000000041c1ce in webViewMediaCaptureStateChanged (webView=0xfbe130 [WebKitWebView], paramSpec=0xfa1e30 [GParamEnum], window=0xdb8490 [BrowserWindow]) at ../../Tools/MiniBrowser/gtk/BrowserWindow.c:657
#5  0x00007ff7aebd0ad3 in &lt;emit signal notify:camera-capture-state on instance 0xfbe130 [WebKitWebView]&gt; (instance=instance@entry=0xfbe130, signal_id=&lt;optimized out&gt;, detail=&lt;optimized out&gt;)
    at ../gobject/gsignal.c:3553
    #2  0x00007ff7aebb6fcf in g_closure_invoke
    (closure=0xf8a6f0, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7ffedc3d6fb0, invocation_hint=invocation_hint@entry=0x7ffedc3d6f30) at ../gobject/gclosure.c:810
    #3  0x00007ff7aebc9e5b in signal_emit_unlocked_R
    (node=node@entry=0x9ce960, detail=detail@entry=1535, instance=instance@entry=0xfbe130, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffedc3d6fb0)
    at ../gobject/gsignal.c:3741
    #4  0x00007ff7aebd0971 in g_signal_emit_valist (instance=&lt;optimized out&gt;, signal_id=&lt;optimized out&gt;, detail=&lt;optimized out&gt;, var_args=var_args@entry=0x7ffedc3d7150) at ../gobject/gsignal.c:3497
#6  0x00007ff7aebbbbe4 in g_object_dispatch_properties_changed (object=0xfbe130 [WebKitWebView], n_pspecs=&lt;optimized out&gt;, pspecs=&lt;optimized out&gt;) at ../gobject/gobject.c:1206
#7  0x00007ff7aebbdd9a in g_object_notify_by_spec_internal (pspec=&lt;optimized out&gt;, object=0xfbe130 [WebKitWebView]) at ../gobject/gobject.c:1299
#8  g_object_notify_by_pspec (object=0xfbe130 [WebKitWebView], pspec=&lt;optimized out&gt;) at ../gobject/gobject.c:1409
#9  0x00007ff7b7f16c15 in webkitWebViewMediaCaptureStateDidChange(_WebKitWebView*, WTF::OptionSet&lt;WebCore::MediaProducer::MediaState&gt;) (webView=0xfbe130 [WebKitWebView], mediaStateFlags=...)
    at ../../Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:362
#10 0x00007ff7b7eec205 in UIClient::mediaCaptureStateDidChange(WTF::OptionSet&lt;WebCore::MediaProducer::MediaState&gt;) (this=0x7ff7ac5f6558, mediaStateFlags=...)
    at ../../Source/WebKit/UIProcess/API/glib/WebKitUIClient.cpp:357
#11 0x00007ff7b7c40690 in WebKit::WebPageProxy::updateReportedMediaCaptureState() (this=0x7ff74c0fcc00) at ../../Source/WebKit/UIProcess/WebPageProxy.cpp:9457
#12 0x00007ff7b7c47db8 in WebKit::WebPageProxy::updatePlayingMediaDidChange(WTF::OptionSet&lt;WebCore::MediaProducer::MediaState&gt;, WebKit::WebPageProxy::CanDelayNotification)
    (this=0x7ff74c0fcc00, newState=..., canDelayNotification=WebKit::WebPageProxy::CanDelayNotification::No) at ../../Source/WebKit/UIProcess/WebPageProxy.cpp:9407
#13 0x00007ff7b7c479ef in WebKit::WebPageProxy::resetState(WebKit::WebPageProxy::ResetStateReason) (this=0x7ff74c0fcc00, resetStateReason=WebKit::WebPageProxy::ResetStateReason::PageInvalidated)
    at ../../Source/WebKit/UIProcess/WebPageProxy.cpp:7823
#14 0x00007ff7b7c42623 in WebKit::WebPageProxy::close() (this=0x7ff74c0fcc00) at ../../Source/WebKit/UIProcess/WebPageProxy.cpp:1168
#15 0x00007ff7b7f7669e in webkitWebViewBaseDispose(_GObject*) (gobject=0xfbe130 [WebKitWebView]) at ../../Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp:734
#16 0x00007ff7b7f2324f in webkitWebViewDispose(_GObject*) (object=0xfbe130 [WebKitWebView]) at ../../Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1021
#17 0x00007ff7aebbd9f1 in g_object_run_dispose (object=0xfbe130 [WebKitWebView]) at ../gobject/gobject.c:1226
#18 0x00007ff7b5dd6850 in gtk_overlay_forall (overlay=0xf1a9d0 [GtkOverlay], include_internals=&lt;optimized out&gt;, callback=0x7ff7b5f09050 &lt;gtk_widget_destroy&gt;, callback_data=0x0) at ../gtk/gtkoverlay.c:628
#19 0x00007ff7b5cb414b in gtk_container_destroy (widget=0xf1a9d0 [GtkOverlay]) at ../gtk/gtkcontainer.c:1701
#23 0x00007ff7aebd0ad3 in &lt;emit signal ??? on instance 0xf1a9d0 [GtkOverlay]&gt; (instance=instance@entry=0xf1a9d0, signal_id=&lt;optimized out&gt;, detail=detail@entry=0) at ../gobject/gsignal.c:3553
    #20 0x00007ff7aebb6f0c in g_closure_invoke
    (closure=closure@entry=0xa18840, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7ffedc3d7b50, invocation_hint=invocation_hint@entry=0x7ffedc3d7ad0)
    at ../gobject/gclosure.c:810
    #21 0x00007ff7aebc9df5 in signal_emit_unlocked_R
    (node=node@entry=0xa2ba50, detail=detail@entry=0, instance=instance@entry=0xf1a9d0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffedc3d7b50)
    at ../gobject/gsignal.c:3859
    #22 0x00007ff7aebd0971 in g_signal_emit_valist (instance=&lt;optimized out&gt;, signal_id=&lt;optimized out&gt;, detail=&lt;optimized out&gt;, var_args=var_args@entry=0x7ffedc3d7cd0) at ../gobject/gsignal.c:3497
#24 0x00007ff7b5f128af in gtk_widget_dispose (object=0xf1a9d0 [GtkOverlay]) at ../gtk/gtkwidget.c:12162
#25 0x00007ff7aebbd9f1 in g_object_run_dispose (object=0xf1a9d0 [GtkOverlay]) at ../gobject/gobject.c:1226
#26 0x00007ff7b5c5f5a8 in gtk_box_forall (container=&lt;optimized out&gt;, include_internals=&lt;optimized out&gt;, callback=0x7ff7b5f09050 &lt;gtk_widget_destroy&gt;, callback_data=0x0) at ../gtk/gtkbox.c:2675
#27 0x00007ff7b5cb414b in gtk_container_destroy (widget=0xf6a170 [BrowserTab]) at ../gtk/gtkcontainer.c:1701
#31 0x00007ff7aebd0ad3 in &lt;emit signal ??? on instance 0xf6a170 [BrowserTab]&gt; (instance=instance@entry=0xf6a170, signal_id=&lt;optimized out&gt;, detail=detail@entry=0) at ../gobject/gsignal.c:3553
    #28 0x00007ff7aebb6f0c in g_closure_invoke
    (closure=closure@entry=0xa18840, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7ffedc3d7fd0, invocation_hint=invocation_hint@entry=0x7ffedc3d7f50)
    at ../gobject/gclosure.c:810
    #29 0x00007ff7aebc9df5 in signal_emit_unlocked_R
    (node=node@entry=0xa2ba50, detail=detail@entry=0, instance=instance@entry=0xf6a170, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffedc3d7fd0)
    at ../gobject/gsignal.c:3859
    #30 0x00007ff7aebd0971 in g_signal_emit_valist (instance=&lt;optimized out&gt;, signal_id=&lt;optimized out&gt;, detail=&lt;optimized out&gt;, var_args=var_args@entry=0x7ffedc3d8150) at ../gobject/gsignal.c:3497
#32 0x00007ff7b5f128af in gtk_widget_dispose (object=0xf6a170 [BrowserTab]) at ../gtk/gtkwidget.c:12162
#33 0x00007ff7aebbd9f1 in g_object_run_dispose (object=0xf6a170 [BrowserTab]) at ../gobject/gobject.c:1226
#34 0x00007ff7b5dce456 in gtk_notebook_forall (container=&lt;optimized out&gt;, include_internals=0, callback=0x7ff7b5f09050 &lt;gtk_widget_destroy&gt;, callback_data=0x0) at ../gtk/gtknotebook.c:4607
#35 0x00007ff7b5cb414b in gtk_container_destroy (widget=0xe22500 [GtkNotebook]) at ../gtk/gtkcontainer.c:1701
#39 0x00007ff7aebd0ad3 in &lt;emit signal ??? on instance 0xe22500 [GtkNotebook]&gt; (instance=instance@entry=0xe22500, signal_id=&lt;optimized out&gt;, detail=detail@entry=0) at ../gobject/gsignal.c:3553
--Type &lt;RET&gt; for more, q to quit, c to continue without paging--
    #36 0x00007ff7aebb6f0c in g_closure_invoke
    (closure=closure@entry=0xa18840, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7ffedc3d8460, invocation_hint=invocation_hint@entry=0x7ffedc3d83e0)
    at ../gobject/gclosure.c:810
    #37 0x00007ff7aebc9df5 in signal_emit_unlocked_R
    (node=node@entry=0xa2ba50, detail=detail@entry=0, instance=instance@entry=0xe22500, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffedc3d8460)
    at ../gobject/gsignal.c:3859
    #38 0x00007ff7aebd0971 in g_signal_emit_valist (instance=&lt;optimized out&gt;, signal_id=&lt;optimized out&gt;, detail=&lt;optimized out&gt;, var_args=var_args@entry=0x7ffedc3d85e0) at ../gobject/gsignal.c:3497
#40 0x00007ff7b5f128af in gtk_widget_dispose (object=0xe22500 [GtkNotebook]) at ../gtk/gtkwidget.c:12162
#41 0x00007ff7aebbd9f1 in g_object_run_dispose (object=0xe22500 [GtkNotebook]) at ../gobject/gobject.c:1226
#42 0x00007ff7b5c5f5a8 in gtk_box_forall (container=&lt;optimized out&gt;, include_internals=&lt;optimized out&gt;, callback=0x7ff7b5f09050 &lt;gtk_widget_destroy&gt;, callback_data=0x0) at ../gtk/gtkbox.c:2675
#43 0x00007ff7b5cb414b in gtk_container_destroy (widget=0xe30c70 [GtkBox]) at ../gtk/gtkcontainer.c:1701
#47 0x00007ff7aebd0ad3 in &lt;emit signal ??? on instance 0xe30c70 [GtkBox]&gt; (instance=instance@entry=0xe30c70, signal_id=&lt;optimized out&gt;, detail=detail@entry=0) at ../gobject/gsignal.c:3553
    #44 0x00007ff7aebb6f0c in g_closure_invoke
    (closure=closure@entry=0xa18840, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7ffedc3d88e0, invocation_hint=invocation_hint@entry=0x7ffedc3d8860)
    at ../gobject/gclosure.c:810
    #45 0x00007ff7aebc9df5 in signal_emit_unlocked_R
    (node=node@entry=0xa2ba50, detail=detail@entry=0, instance=instance@entry=0xe30c70, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffedc3d88e0)
    at ../gobject/gsignal.c:3859
    #46 0x00007ff7aebd0971 in g_signal_emit_valist (instance=&lt;optimized out&gt;, signal_id=&lt;optimized out&gt;, detail=&lt;optimized out&gt;, var_args=var_args@entry=0x7ffedc3d8a60) at ../gobject/gsignal.c:3497
#48 0x00007ff7b5f128af in gtk_widget_dispose (object=0xe30c70 [GtkBox]) at ../gtk/gtkwidget.c:12162
#49 0x00007ff7aebbd9f1 in g_object_run_dispose (object=0xe30c70 [GtkBox]) at ../gobject/gobject.c:1226
#50 0x00007ff7b5f249b9 in gtk_window_forall (container=0xdb8490 [BrowserWindow], include_internals=0, callback=0x7ff7b5f09050 &lt;gtk_widget_destroy&gt;, callback_data=0x0) at ../gtk/gtkwindow.c:8596
#51 0x00007ff7b5cb414b in gtk_container_destroy (widget=0xdb8490 [BrowserWindow]) at ../gtk/gtkcontainer.c:1701
#55 0x00007ff7aebd0ad3 in &lt;emit signal ??? on instance 0xdb8490 [BrowserWindow]&gt; (instance=instance@entry=0xdb8490, signal_id=&lt;optimized out&gt;, detail=detail@entry=0) at ../gobject/gsignal.c:3553
    #52 0x00007ff7aebb6fcf in g_closure_invoke
    (closure=closure@entry=0xa18840, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7ffedc3d8d70, invocation_hint=invocation_hint@entry=0x7ffedc3d8cf0)
    at ../gobject/gclosure.c:810
    #53 0x00007ff7aebc9df5 in signal_emit_unlocked_R
    (node=node@entry=0xa2ba50, detail=detail@entry=0, instance=instance@entry=0xdb8490, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffedc3d8d70)
    at ../gobject/gsignal.c:3859
    #54 0x00007ff7aebd0971 in g_signal_emit_valist (instance=&lt;optimized out&gt;, signal_id=&lt;optimized out&gt;, detail=&lt;optimized out&gt;, var_args=var_args@entry=0x7ffedc3d8ef0) at ../gobject/gsignal.c:3497
#56 0x00007ff7b5f128af in gtk_widget_dispose (object=0xdb8490 [BrowserWindow]) at ../gtk/gtkwidget.c:12162
#57 0x00007ff7b5f27e20 in gtk_window_dispose (object=0xdb8490 [BrowserWindow]) at ../gtk/gtkwindow.c:3166
#58 0x00007ff7b5c50456 in gtk_application_window_dispose (object=0xdb8490 [BrowserWindow]) at ../gtk/gtkapplicationwindow.c:804
#59 0x0000000000418ee6 in browserWindowDispose (gObject=0xdb8490 [BrowserWindow]) at ../../Tools/MiniBrowser/gtk/BrowserWindow.c:993
#60 0x00007ff7aebbd9f1 in g_object_run_dispose (object=0xdb8490 [BrowserWindow]) at ../gobject/gobject.c:1226
#61 0x0000000000417c06 in webViewClose (webView=0xfbe130 [WebKitWebView], window=0xdb8490 [BrowserWindow]) at ../../Tools/MiniBrowser/gtk/BrowserWindow.c:404
#65 0x00007ff7aebd0ad3 in &lt;emit signal ??? on instance 0xfbe130 [WebKitWebView]&gt; (instance=&lt;optimized out&gt;, signal_id=&lt;optimized out&gt;, detail=&lt;optimized out&gt;) at ../gobject/gsignal.c:3553
    #62 0x00007ff7aebb6fcf in g_closure_invoke
    (closure=0xf67c60, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7ffedc3d9270, invocation_hint=invocation_hint@entry=0x7ffedc3d91f0) at ../gobject/gclosure.c:810
    #63 0x00007ff7aebc9e5b in signal_emit_unlocked_R
    (node=node@entry=0xf99060, detail=detail@entry=0, instance=instance@entry=0xfbe130, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffedc3d9270)
    at ../gobject/gsignal.c:3741
    #64 0x00007ff7aebd0971 in g_signal_emit_valist (instance=&lt;optimized out&gt;, signal_id=&lt;optimized out&gt;, detail=&lt;optimized out&gt;, var_args=var_args@entry=0x7ffedc3d93f0) at ../gobject/gsignal.c:3497
#66 0x00007ff7b7f17a48 in webkitWebViewClosePage(_WebKitWebView*) (webView=0xfbe130 [WebKitWebView]) at ../../Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:2506
#67 0x00007ff7b7f19984 in webkit_web_view_try_close(WebKitWebView*) (webView=0xfbe130 [WebKitWebView]) at ../../Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:3060
#68 0x00000000004191c3 in browserWindowTryClose (action=0x0, parameter=0x0, userData=0xdb8490) at ../../Tools/MiniBrowser/gtk/BrowserWindow.c:389
#69 0x00000000004190ab in browserWindowDeleteEvent (widget=0xdb8490 [BrowserWindow], event=0xe978a0) at ../../Tools/MiniBrowser/gtk/BrowserWindow.c:1443
#70 0x00007ff7b5c20b18 in _gtk_marshal_BOOLEAN__BOXEDv
    (closure=0xa3ef20, return_value=0x7ffedc3d9740, instance=&lt;optimized out&gt;, args=&lt;optimized out&gt;, marshal_data=&lt;optimized out&gt;, n_params=&lt;optimized out&gt;, param_types=0xa3d530) at gtk/gtkmarshalers.c:130
#71 0x00007ff7aebb7209 in _g_closure_invoke_va
    (closure=closure@entry=0xa3ef20, return_value=return_value@entry=0x7ffedc3d9740, instance=instance@entry=0xdb8490, args=args@entry=0x7ffedc3d9810, n_params=1, param_types=0xa3d530)
    at ../gobject/gclosure.c:873
--Type &lt;RET&gt; for more, q to quit, c to continue without paging--
#72 0x00007ff7aebcfc34 in g_signal_emit_valist (instance=0xdb8490, signal_id=&lt;optimized out&gt;, detail=&lt;optimized out&gt;, var_args=var_args@entry=0x7ffedc3d9810) at ../gobject/gsignal.c:3406
#73 0x00007ff7aebd0ad3 in g_signal_emit (instance=instance@entry=0xdb8490, signal_id=&lt;optimized out&gt;, detail=detail@entry=0) at ../gobject/gsignal.c:3553
#74 0x00007ff7b5f07ab4 in gtk_widget_event_internal (widget=0xdb8490 [BrowserWindow], event=0xe978a0) at ../gtk/gtkwidget.c:7808
#75 0x00007ff7b5f0a892 in gtk_widget_event_internal (event=&lt;optimized out&gt;, widget=&lt;optimized out&gt;) at ../gtk/gtkwidget.c:7687
#76 gtk_widget_event (widget=&lt;optimized out&gt;, event=&lt;optimized out&gt;) at ../gtk/gtkwidget.c:7378
#77 0x0000000000000001 in  ()
#78 0x0000000000e978a0 in  ()
#79 0x0000000000eaf790 in  ()
#80 0x0000000000000000 in  ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777836</commentid>
    <comment_count>26</comment_count>
      <attachid>433752</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-19 02:12:06 -0700</bug_when>
    <thetext>Comment on attachment 433752
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1383
&gt; +     * true})`) this property will be set to @WEBKIT_MEDIA_CAPTURE_STATE_ACTIVE.

@WEBKIT_MEDIA_CAPTURE_STATE_ACTIVE -&gt; %WEBKIT_MEDIA_CAPTURE_STATE_ACTIVE

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1387
&gt; +     * @WEBKIT_MEDIA_CAPTURE_STATE_NONE or @WEBKIT_MEDIA_CAPTURE_STATE_MUTED.

% here too

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1389
&gt; +     * If the capture state of the device is set to @WEBKIT_MEDIA_CAPTURE_STATE_NONE the web-page

And here.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:1408
&gt; +     * true})`) this property will be set to @WEBKIT_MEDIA_CAPTURE_STATE_ACTIVE.

Ok, everywhere :-)

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4881
&gt; +                g_object_notify_by_pspec(G_OBJECT(webView), sObjProperties[PROP_MICROPHONE_CAPTURE_STATE]);

This doesn&apos;t cause a mediaCaptureStateDidChange?

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4884
&gt; +                g_object_notify_by_pspec(G_OBJECT(webView), sObjProperties[PROP_CAMERA_CAPTURE_STATE]);

Ditto

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4935
&gt; + * Returns: The #WebKitMediaCaptureState of the camera device. If WebKitSettings:enable-mediastream

#WebKitSettings:enable-mediastream

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4936
&gt; + * is FALSE, this method will return %WEBKIT_MEDIA_CAPTURE_STATE_NONE.

%FALSE

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4957
&gt; + * If WebKitSettings:enable-mediastream is FALSE, this method will have no visible effect. Once the

#WebKitSettings:enable-mediastream %FALSE

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4978
&gt; + * Returns: The #WebKitMediaCaptureState of the microphone device. If WebKitSettings:enable-mediastream
&gt; + * is FALSE, this method will return %WEBKIT_MEDIA_CAPTURE_STATE_NONE.

Same here and I guess the other ones.

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:1251
&gt; +    g_signal_connect(webView, &quot;notify::camera-capture-state&quot;, G_CALLBACK(webViewMediaCaptureStateChanged), window);
&gt; +    g_signal_connect(webView, &quot;notify::microphone-capture-state&quot;, G_CALLBACK(webViewMediaCaptureStateChanged), window);
&gt; +    g_signal_connect(webView, &quot;notify::display-capture-state&quot;, G_CALLBACK(webViewMediaCaptureStateChanged), window);

Try to use g_signal_connect_object or disconnect these signals in Dispose to see if that fixes the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777876</commentid>
    <comment_count>27</comment_count>
      <attachid>433752</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-19 09:00:43 -0700</bug_when>
    <thetext>Comment on attachment 433752
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4881
&gt;&gt; +                g_object_notify_by_pspec(G_OBJECT(webView), sObjProperties[PROP_MICROPHONE_CAPTURE_STATE]);
&gt; 
&gt; This doesn&apos;t cause a mediaCaptureStateDidChange?

No.

&gt;&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:1251
&gt;&gt; +    g_signal_connect(webView, &quot;notify::display-capture-state&quot;, G_CALLBACK(webViewMediaCaptureStateChanged), window);
&gt; 
&gt; Try to use g_signal_connect_object or disconnect these signals in Dispose to see if that fixes the crash.

The former is not thread-safe though? The latter doesn&apos;t work, in Dispose I can&apos;t get the active webView, seems like it&apos;s gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778110</commentid>
    <comment_count>28</comment_count>
      <attachid>433752</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-20 01:07:48 -0700</bug_when>
    <thetext>Comment on attachment 433752
Patch

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

&gt;&gt;&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:1251
&gt;&gt;&gt; +    g_signal_connect(webView, &quot;notify::display-capture-state&quot;, G_CALLBACK(webViewMediaCaptureStateChanged), window);
&gt;&gt; 
&gt;&gt; Try to use g_signal_connect_object or disconnect these signals in Dispose to see if that fixes the crash.
&gt; 
&gt; The former is not thread-safe though? The latter doesn&apos;t work, in Dispose I can&apos;t get the active webView, seems like it&apos;s gone.

It is thread-safe nowadays, but even if not, it wouldn&apos;t matter here, the web view isn&apos;t used from multiple threads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778139</commentid>
    <comment_count>29</comment_count>
      <attachid>433867</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-20 04:03:07 -0700</bug_when>
    <thetext>Created attachment 433867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778163</commentid>
    <comment_count>30</comment_count>
      <attachid>433871</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-20 06:32:06 -0700</bug_when>
    <thetext>Created attachment 433871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778165</commentid>
    <comment_count>31</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-07-20 06:50:02 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #28)
&gt; It is thread-safe nowadays

The documentation of g_signal_connect_object() says it is not threadsafe, so I hope you don&apos;t rely on that assumption anywhere.

&gt; but even if not, it wouldn&apos;t matter here, the
&gt; web view isn&apos;t used from multiple threads

GTK is itself not threadsafe anyway, so there&apos;s no way to make a GtkWidget threadsafe even if we wanted to do so for some reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778167</commentid>
    <comment_count>32</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-20 07:00:52 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #31)
&gt; (In reply to Carlos Garcia Campos from comment #28)
&gt; &gt; It is thread-safe nowadays
&gt; 
&gt; The documentation of g_signal_connect_object() says it is not threadsafe, so
&gt; I hope you don&apos;t rely on that assumption anywhere.

You are right, I got confused with the old bug that was documented and already fixed (https://bugzilla.gnome.org/show_bug.cgi?id=118536)

&gt; &gt; but even if not, it wouldn&apos;t matter here, the
&gt; &gt; web view isn&apos;t used from multiple threads
&gt; 
&gt; GTK is itself not threadsafe anyway, so there&apos;s no way to make a GtkWidget
&gt; threadsafe even if we wanted to do so for some reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778394</commentid>
    <comment_count>33</comment_count>
      <attachid>433871</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-07-21 05:04:55 -0700</bug_when>
    <thetext>Comment on attachment 433871
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitUserMediaPermissionRequest.cpp:149
&gt; +    g_return_val_if_fail(request-&gt;priv-&gt;request, FALSE);

I don&apos;t understand this. I know we are doing the same in the other methods, but I didn&apos;t know it. The request is set after object is constructed and we take a ref, so it can&apos;t be nullptr, but even in that case, it wouldn&apos;t be a programmer error, so g_return macros are not a good way to check that. I think this should just check the request passed to the function with g_return_val_if_fail(WEBKIT_IS_USER_MEDIA_PERMISSION_REQUEST(request), FALSE); And the same for the other functions.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4957
&gt; + * If WebKitSettings:enable-mediastream is %FALSE, this method will have no visible effect. Once the

#WebKitSettings:enable-mediastream

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:4999
&gt; + * If WebKitSettings:enable-mediastream is %FALSE, this method will have no visible effect. Once the

#WebKitSettings:enable-mediastream

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:5041
&gt; + * If WebKitSettings:enable-mediastream is %FALSE, this method will have no visible effect. Once the

#WebKitSettings:enable-mediastream

&gt; Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:67
&gt; +    void waitUntilCameraCaptureStateChangedTo(WebKitMediaCaptureState);
&gt; +    void waitUntilDisplayCaptureStateChangedTo(WebKitMediaCaptureState);
&gt; +    void waitUntilMicrophoneCaptureStateChangedTo(WebKitMediaCaptureState);

Since this is only used by UIClient test, I think we could move it there instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778685</commentid>
    <comment_count>34</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-07-22 03:54:31 -0700</bug_when>
    <thetext>Committed r280172 (239867@main): &lt;https://commits.webkit.org/239867@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433401</attachid>
            <date>2021-07-13 05:42:35 -0700</date>
            <delta_ts>2021-07-15 06:23:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227902-20210713054233.patch</filename>
            <type>text/plain</type>
            <size>51209</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGZkMTllYzk4OTIyZGFiZDky
YzQ1MDY4ZDY1MmFkMmQ1MjhmYTM5ZjkuLmE5N2ZkOWYxYzU0MWNhZjJmNmFhZGIwMGI1NzgzNmE4
NjJmYzVhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDctMTEgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBFeHBvc2Ug
QVBJIHRvIGFjY2Vzcy9tb2RpZnkgY2FwdHVyZSBkZXZpY2VzIHN0YXRlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3OTAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBHTGliIEFQ
SSAoYW5kIGNvcnJlc3BvbmRpbmcgR09iamVjdCBwcm9wZXJ0aWVzKToKKworICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlCisgICAgICAgIHdlYmtpdF93ZWJf
dmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlCisgICAgICAgIHdlYmtpdF93ZWJfdmll
d19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dldF9kaXNw
bGF5X2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2Nh
cHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3Jf
ZGlzcGxheV9kZXZpY2UKKworICAgICAgICBUaGlzIGNhbiBiZSB1c2VmdWwgaW4gV2ViIGJyb3dz
ZXJzIHdpbGxpbmcgdG8gaW5kaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUgY2FwdHVyZSBkZXZpY2Vz
CisgICAgICAgIGN1cnJlbnRseSBpbiB1c2UgYnkgdGhlIFdlYlZpZXcuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6CisgICAgICAg
ICh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAg
ICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TWVkaWFDYXB0
dXJlU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAod2Via2l0V2ViVmlld1NldFByb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uZmlndXJlTWVkaWFD
YXB0dXJlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3Rh
dGUpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dDoKKwogMjAyMS0w
Ny0xMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCB0aGUgQXBwbGUgSW50ZXJuYWwgaU9TIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggMGFmZDk3YmU0NjRj
ZWI2MDlmMWM0M2FhNzIwZjNiNGMyOTc3NzhiZC4uODM2N2IyMzhmMjJjZjhhNDU0N2Y4ZWY3ZWM3
NjdiZWJiMGE3YjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMzUyLDYgKzM1MiwxMSBAQCBwcml2YXRlOgogICAg
ICAgICB3ZWJraXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKG1fd2ViVmlldyk7CiAgICAg
fQogCisgICAgdm9pZCBtZWRpYUNhcHR1cmVTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0ZUZsYWdzKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgd2Via2l0V2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlKG1fd2ViVmlldywg
bWVkaWFTdGF0ZUZsYWdzKTsKKyAgICB9CisKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAg
IHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrKFdlYlBhZ2VQcm94eSogcGFnZSkgZmluYWwKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKaW5kZXggZjA4YmZjMTEw
ZjhhMDg3MTYxZmUyYWY5MjE4MTBkMTk4MWI4NGU1NS4uM2Q5OTdhMzJmOGVjYzNlZjA4OTZiNzdk
NGE4M2JhYThmMDU4YTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
LmNwcApAQCAtMTM2LDYgKzEzNiwyMCBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJt
aXNzaW9uX2lzX2Zvcl92aWRlb19kZXZpY2UoV2ViS2l0VXNlck1lZGlhUGVybWlzcwogICAgIHJl
dHVybiByZXF1ZXN0LT5wcml2LT5yZXF1ZXN0LT5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpOwogfQog
CisvKioKKyAqIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2
aWNlOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Cisg
KgorICogUmV0dXJuczogJVRSVUUgaWYgYWNjZXNzIHRvIGEgZGlzcGxheSBkZXZpY2Ugd2FzIHJl
cXVlc3RlZC4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCitnYm9vbGVhbiB3ZWJraXRfdXNlcl9t
ZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZShXZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1
ZXN0LT5wcml2LT5yZXF1ZXN0LCBGQUxTRSk7CisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnJl
cXVlc3QtPnJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKTsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQogewogICAg
IFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VTRVJf
TUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDZkZDlmMjBl
NGZmMmJkYTAxODRkMDY0NTMwMWNlZjIyZTQ3ZGNmMTUuLjMyZWM5MTRkNzY3OTlmOTQ1ZGRjNjk5
YzYxM2UzMWNhMTY0MTYxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0zODUsMTMgKzM4NSwyMSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogewog
ICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfY29udGV4dF9wYXJlbnRfY2xhc3MpLT5jb25z
dHJ1Y3RlZChvYmplY3QpOwogCi0gICAgR1VuaXF1ZVB0cjxjaGFyPiBidW5kbGVGaWxlbmFtZShn
X2J1aWxkX2ZpbGVuYW1lKGluamVjdGVkQnVuZGxlRGlyZWN0b3J5KCksIElOSkVDVEVEX0JVTkRM
RV9GSUxFTkFNRSwgbnVsbHB0cikpOworICAgIGNvbnN0IGNoYXIqIGJ1bmRsZUZpbGVuYW1lID0g
SU5KRUNURURfQlVORExFX0ZJTEVOQU1FOworI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKKyAg
ICBjb25zdCBjaGFyKiBvdmVycmlkZGVuQnVuZGxlRmlsZW5hbWUgPSBnZXRlbnYoIlRFU1RfV0VC
S0lUX0FQSV9XRUJLSVQyX0lOSkVDVEVEX0JVTkRMRV9GSUxFTkFNRSIpOworICAgIGlmIChvdmVy
cmlkZGVuQnVuZGxlRmlsZW5hbWUpCisgICAgICAgIGJ1bmRsZUZpbGVuYW1lID0gb3ZlcnJpZGRl
bkJ1bmRsZUZpbGVuYW1lOworI2VuZGlmCisKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1bmRsZUFi
c29sdXRlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShpbmplY3RlZEJ1bmRsZURpcmVjdG9yeSgp
LCBidW5kbGVGaWxlbmFtZSwgbnVsbHB0cikpOwogCiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2Vi
Q29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVYVChvYmplY3QpOwogICAgIFdlYktpdFdlYkNvbnRl
eHRQcml2YXRlKiBwcml2ID0gd2ViQ29udGV4dC0+cHJpdjsKIAorCiAgICAgQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKLSAgICBjb25maWd1cmF0aW9uLnNldElu
amVjdGVkQnVuZGxlUGF0aChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGJ1bmRsZUZpbGVuYW1lLmdldCgpKSk7CisgICAgY29uZmlndXJhdGlvbi5zZXRJbmpl
Y3RlZEJ1bmRsZVBhdGgoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihidW5kbGVBYnNvbHV0ZUZpbGVuYW1lLmdldCgpKSk7CiAgICAgY29uZmlndXJhdGlvbi5z
ZXRVc2VzV2ViUHJvY2Vzc0NhY2hlKHRydWUpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjb25m
aWd1cmF0aW9uLnNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbihwcml2LT5wc29uRW5hYmxlZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwCmluZGV4IGQ5M2VhYjkzYTc5YmJlMzAwNWE1MTAyMjQ3OThmZjk5NTZjOWFlMTkuLmZlOTQy
YTMwNjRhZTMxMDg3MmJjMjgzYWU3NGZiZGU1M2RlNTA1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMDcsNiArMjA3
LDEwIEBAIGVudW0gewogICAgIFBST1BfV0VCU0lURV9QT0xJQ0lFUywKICAgICBQUk9QX0lTX1dF
Ql9QUk9DRVNTX1JFU1BPTlNJVkUsCiAKKyAgICBQUk9QX0NBTUVSQV9DQVBUVVJFX1NUQVRFLAor
ICAgIFBST1BfTUlDUk9QSE9ORV9DQVBUVVJFX1NUQVRFLAorICAgIFBST1BfRElTUExBWV9DQVBU
VVJFX1NUQVRFLAorCiAgICAgTl9QUk9QRVJUSUVTLAogfTsKIApAQCAtMzUyLDYgKzM1NiwxNiBA
QCB2b2lkIHdlYmtpdFdlYlZpZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKICAgICBnX29iamVjdF9ub3RpZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmlldyks
IHNPYmpQcm9wZXJ0aWVzW1BST1BfSVNfUExBWUlOR19BVURJT10pOwogfQogCit2b2lkIHdlYmtp
dFdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZURpZENoYW5nZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0ZUZsYWdz
KQoreworICAgIGlmIChtZWRpYVN0YXRlRmxhZ3MuY29udGFpbnNBbnkoV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6QXVkaW9DYXB0dXJlTWFzaykpCisgICAgICAgIGdfb2JqZWN0X25vdGlmeV9ieV9w
c3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNbUFJPUF9NSUNST1BIT05FX0NB
UFRVUkVfU1RBVEVdKTsKKyAgICBpZiAobWVkaWFTdGF0ZUZsYWdzLmNvbnRhaW5zQW55KFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6OlZpZGVvQ2FwdHVyZU1hc2spKQorICAgICAgICBnX29iamVjdF9u
b3RpZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BST1BfQ0FN
RVJBX0NBUFRVUkVfU1RBVEVdKTsKKyAgICBpZiAobWVkaWFTdGF0ZUZsYWdzLmNvbnRhaW5zQW55
KFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OkRpc3BsYXlDYXB0dXJlTWFzaykpCisgICAgICAgIGdf
b2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNb
UFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEVdKTsKK30KKwogY2xhc3MgUGFnZUxvYWRTdGF0ZU9i
c2VydmVyIGZpbmFsIDogcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTg3Miw2ICs4ODYsMTUgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBjb25zdCBHVmFsdWUKICAgICBjYXNlIFBST1BfV0VCU0lURV9QT0xJQ0lFUzoKICAgICAg
ICAgd2ViVmlldy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vi
c2l0ZVBvbGljaWVzKj4oZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKSk7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9DQU1FUkFfQ0FQVFVSRV9TVEFURToKKyAgICAgICAgd2Via2l0X3dl
Yl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3LCBzdGF0aWNfY2FzdDxXZWJL
aXRNZWRpYUNhcHR1cmVTdGF0ZT4oZ192YWx1ZV9nZXRfZW51bSh2YWx1ZSkpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX01JQ1JPUEhPTkVfQ0FQVFVSRV9TVEFURToKKyAgICAgICAg
d2Via2l0X3dlYl92aWV3X3NldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUod2ViVmlldywgc3Rh
dGljX2Nhc3Q8V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUp
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEU6
CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZp
ZXcsIHN0YXRpY19jYXN0PFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlPihnX3ZhbHVlX2dldF9lbnVt
KHZhbHVlKSkpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAg
ICAgfQpAQCAtOTQzLDYgKzk2NiwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAgIGNh
c2UgUFJPUF9JU19XRUJfUFJPQ0VTU19SRVNQT05TSVZFOgogICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNp
dmUod2ViVmlldykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQ0FNRVJBX0NBUFRV
UkVfU1RBVEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJfdmll
d19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUod2ViVmlldykpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfTUlDUk9QSE9ORV9DQVBUVVJFX1NUQVRFOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9lbnVtKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0
ZSh3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ESVNQTEFZX0NBUFRV
UkVfU1RBVEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJfdmll
d19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTEzMzcsNiArMTM2OSw2OSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3Mq
IHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFRSVUUsCiAgICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBREFCTEUpOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzpjYW1lcmEtY2Fw
dHVyZS1zdGF0ZToKKyAgICAgKgorICAgICAqIENhcHR1cmUgc3RhdGUgb2YgdGhlIGNhbWVyYSBk
ZXZpY2UuIFdoZW5ldmVyIHRoZSB1c2VyIGdyYW50cyBhIG1lZGlhLXJlcXVlc3Qgc2VudCBieSB0
aGUgd2ViCisgICAgICogcGFnZSwgcmVxdWVzdGluZyB2aWRlbyBjYXB0dXJlIGNhcGFiaWxpdGll
cyAoYG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzoKKyAgICAgKiB0
cnVlfSlgKSB0aGlzIHByb3BlcnR5IHdpbGwgYmUgc2V0IHRvIEBXRUJLSVRfTUVESUFfQ0FQVFVS
RV9TVEFURV9BQ1RJVkUuCisgICAgICoKKyAgICAgKiBUaGUgYXBwbGljYXRpb24gY2FuIG1vbml0
b3IgdGhpcyBwcm9wZXJ0eSBhbmQgcHJvdmlkZSBhIHZpc3VhbCBpbmRpY2F0b3IgYWxsb3dpbmcg
b3B0aW9uYWxseQorICAgICAqIHRvIGRlYWN0aXZhdGUgb3IgbXV0ZSB0aGUgY2FwdHVyZSBkZXZp
Y2UgYnkgc2V0dGluZyB0aGlzIHByb3BlcnR5IHJlc3BlY3RpdmVseSB0bworICAgICAqIEBXRUJL
SVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIG9yIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9NVVRFRC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjM0CisgICAgICovCisgICAgc09ialBy
b3BlcnRpZXNbUFJPUF9DQU1FUkFfQ0FQVFVSRV9TVEFURV0gPSBnX3BhcmFtX3NwZWNfZW51bSgK
KyAgICAgICAgImNhbWVyYS1jYXB0dXJlLXN0YXRlIiwKKyAgICAgICAgIkNhbWVyYSBDYXB0dXJl
IFN0YXRlIiwKKyAgICAgICAgXygiVGhlIGNhcHR1cmUgc3RhdGUgb2YgdGhlIGNhbWVyYSBkZXZp
Y2UiKSwKKyAgICAgICAgV0VCS0lUX1RZUEVfTUVESUFfQ0FQVFVSRV9TVEFURSwKKyAgICAgICAg
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSwKKyAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURXUklURSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Om1pY3JvcGhvbmUtY2Fw
dHVyZS1zdGF0ZToKKyAgICAgKgorICAgICAqIENhcHR1cmUgc3RhdGUgb2YgdGhlIG1pY3JvcGhv
bmUgZGV2aWNlLiBXaGVuZXZlciB0aGUgdXNlciBncmFudHMgYSBtZWRpYS1yZXF1ZXN0IHNlbnQg
YnkgdGhlIHdlYgorICAgICAqIHBhZ2UsIHJlcXVlc3RpbmcgYXVkaW8gY2FwdHVyZSBjYXBhYmls
aXRpZXMgKGBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86CisgICAg
ICogdHJ1ZX0pYCkgdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHNldCB0byBAV0VCS0lUX01FRElBX0NB
UFRVUkVfU1RBVEVfQUNUSVZFLgorICAgICAqCisgICAgICogVGhlIGFwcGxpY2F0aW9uIGNhbiBt
b25pdG9yIHRoaXMgcHJvcGVydHkgYW5kIHByb3ZpZGUgYSB2aXN1YWwgaW5kaWNhdG9yIGFsbG93
aW5nIG9wdGlvbmFsbHkKKyAgICAgKiB0byBkZWFjdGl2YXRlIG9yIG11dGUgdGhlIGNhcHR1cmUg
ZGV2aWNlIGJ5IHNldHRpbmcgdGhpcyBwcm9wZXJ0eSByZXNwZWN0aXZlbHkgdG8KKyAgICAgKiBA
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSBvciBAV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfTVVURUQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zNAorICAgICAqLworICAgIHNP
YmpQcm9wZXJ0aWVzW1BST1BfTUlDUk9QSE9ORV9DQVBUVVJFX1NUQVRFXSA9IGdfcGFyYW1fc3Bl
Y19lbnVtKAorICAgICAgICAibWljcm9waG9uZS1jYXB0dXJlLXN0YXRlIiwKKyAgICAgICAgIk1p
Y3JvcGhvbmUgQ2FwdHVyZSBTdGF0ZSIsCisgICAgICAgIF8oIlRoZSBjYXB0dXJlIHN0YXRlIG9m
IHRoZSBtaWNyb3Bob25lIGRldmljZSIpLAorICAgICAgICBXRUJLSVRfVFlQRV9NRURJQV9DQVBU
VVJFX1NUQVRFLAorICAgICAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLAorICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdl
YlZpZXc6ZGlzcGxheS1jYXB0dXJlLXN0YXRlOgorICAgICAqCisgICAgICogQ2FwdHVyZSBzdGF0
ZSBvZiB0aGUgZGlzcGxheSBkZXZpY2UuIFdoZW5ldmVyIHRoZSB1c2VyIGdyYW50cyBhIG1lZGlh
LXJlcXVlc3Qgc2VudCBieSB0aGUgd2ViCisgICAgICogcGFnZSwgcmVxdWVzdGluZyBzY3JlZW5j
YXN0aW5nIGNhcGFiaWxpdGllcyAoYG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1l
ZGlhKCkgdGhpcworICAgICAqIHByb3BlcnR5IHdpbGwgYmUgc2V0IHRvIEBXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9BQ1RJVkUuCisgICAgICoKKyAgICAgKiBUaGUgYXBwbGljYXRpb24gY2Fu
IG1vbml0b3IgdGhpcyBwcm9wZXJ0eSBhbmQgcHJvdmlkZSBhIHZpc3VhbCBpbmRpY2F0b3IgYWxs
b3dpbmcgb3B0aW9uYWxseQorICAgICAqIHRvIGRlYWN0aXZhdGUgb3IgbXV0ZSB0aGUgY2FwdHVy
ZSBkZXZpY2UgYnkgc2V0dGluZyB0aGlzIHByb3BlcnR5IHJlc3BlY3RpdmVseSB0bworICAgICAq
IEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIG9yIEBXRUJLSVRfTUVESUFfQ0FQVFVS
RV9TVEFURV9NVVRFRC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjM0CisgICAgICovCisgICAg
c09ialByb3BlcnRpZXNbUFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEVdID0gZ19wYXJhbV9zcGVj
X2VudW0oCisgICAgICAgICJkaXNwbGF5LWNhcHR1cmUtc3RhdGUiLAorICAgICAgICAiRGlzcGxh
eSBDYXB0dXJlIFN0YXRlIiwKKyAgICAgICAgXygiVGhlIGNhcHR1cmUgc3RhdGUgb2YgdGhlIGRp
c3BsYXkgZGV2aWNlIiksCisgICAgICAgIFdFQktJVF9UWVBFX01FRElBX0NBUFRVUkVfU1RBVEUs
CisgICAgICAgIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUsCisgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUpOworCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
aWVzKGdPYmplY3RDbGFzcywgTl9QUk9QRVJUSUVTLCBzT2JqUHJvcGVydGllcyk7CiAKICAgICAv
KioKQEAgLTQ3NTQsMyArNDg0OSwxNzQgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2NvcnNf
YWxsb3dsaXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBjb24KIAogICAg
IGdldFBhZ2Uod2ViVmlldykuc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFdURk1vdmUoYWxsb3dM
aXN0VmVjdG9yKSk7CiB9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25maWd1cmVNZWRp
YUNhcHR1cmUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6
TWVkaWFDYXB0dXJlS2luZCBjYXB0dXJlS2luZCwgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgY2Fw
dHVyZVN0YXRlLCBib29sIGlzRnJvbURpc3BsYXlDYXB0dXJlID0gZmFsc2UpCit7CisgICAgYXV0
byYgcGFnZSA9IGdldFBhZ2Uod2ViVmlldyk7CisgICAgYXV0byBtdXRlZFN0YXRlID0gcGFnZS5t
dXRlZFN0YXRlRmxhZ3MoKTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRp
b25IYW5kbGVyID0gW3dlYlZpZXcsIGNhcHR1cmVLaW5kLCBpc0Zyb21EaXNwbGF5Q2FwdHVyZV0g
eworICAgICAgICBpZiAoaXNGcm9tRGlzcGxheUNhcHR1cmUpIHsKKyAgICAgICAgICAgIGdfb2Jq
ZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNbUFJP
UF9ESVNQTEFZX0NBUFRVUkVfU1RBVEVdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBzd2l0Y2ggKGNhcHR1cmVLaW5kKSB7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6QXVkaW86CisgICAgICAgICAgICBnX29i
amVjdF9ub3RpZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BS
T1BfTUlDUk9QSE9ORV9DQVBUVVJFX1NUQVRFXSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpWaWRlbzoK
KyAgICAgICAgICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwg
c09ialByb3BlcnRpZXNbUFJPUF9DQU1FUkFfQ0FQVFVSRV9TVEFURV0pOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJl
S2luZDo6QXVkaW9WaWRlbzoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH07
CisKKyAgICBzd2l0Y2ggKGNhcHR1cmVTdGF0ZSkgeworICAgIGNhc2UgV0VCS0lUX01FRElBX0NB
UFRVUkVfU1RBVEVfTk9ORToKKyAgICAgICAgcGFnZS5zdG9wTWVkaWFDYXB0dXJlKGNhcHR1cmVL
aW5kLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOgorICAgICAgICBzd2l0Y2ggKGNh
cHR1cmVLaW5kKSB7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFD
YXB0dXJlS2luZDo6QXVkaW86CisgICAgICAgICAgICBtdXRlZFN0YXRlLnJlbW92ZShXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpBdWRpb0NhcHR1cmVJc011dGVkKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlh
Q2FwdHVyZUtpbmQ6OlZpZGVvOgorICAgICAgICAgICAgaWYgKGlzRnJvbURpc3BsYXlDYXB0dXJl
KQorICAgICAgICAgICAgICAgIG11dGVkU3RhdGUucmVtb3ZlKFdlYkNvcmU6Ok1lZGlhUHJvZHVj
ZXI6Ok11dGVkU3RhdGU6OlNjcmVlbkNhcHR1cmVJc011dGVkKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBtdXRlZFN0YXRlLnJlbW92ZShXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpNdXRlZFN0YXRlOjpWaWRlb0NhcHR1cmVJc011dGVkKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1
ZGlvVmlkZW86CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcGFnZS5z
ZXRNdXRlZChtdXRlZFN0YXRlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQ6CisgICAg
ICAgIHN3aXRjaCAoY2FwdHVyZUtpbmQpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpbzoKKyAgICAgICAgICAgIG11dGVkU3RhdGUu
YWRkKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGU6OkF1ZGlvQ2FwdHVyZUlzTXV0
ZWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6VmlkZW86CisgICAgICAgICAgICBpZiAoaXNGcm9tRGlz
cGxheUNhcHR1cmUpCisgICAgICAgICAgICAgICAgbXV0ZWRTdGF0ZS5hZGQoV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6U2NyZWVuQ2FwdHVyZUlzTXV0ZWQpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG11dGVkU3RhdGUuYWRkKFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok11dGVkU3RhdGU6OlZpZGVvQ2FwdHVyZUlzTXV0ZWQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2lu
ZDo6QXVkaW9WaWRlbzoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBw
YWdlLnNldE11dGVkKG11dGVkU3RhdGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfY2Ft
ZXJhX2NhcHR1cmVfc3RhdGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisg
KiBHZXQgdGhlIGNhbWVyYSBjYXB0dXJlIHN0YXRlIG9mIGEgI1dlYktpdFdlYlZpZXcuCisgKgor
ICogUmV0dXJuczogVGhlICNXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBvZiB0aGUgY2FtZXJhIGRl
dmljZS4gSWYgV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLW1lZGlhc3RyZWFtCisgKiBpcyBGQUxTRSwg
dGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gJVdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUu
CisgKgorICogU2luY2U6IDIuMzQKKyAqLworV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgd2Via2l0
X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQoreworICAgIGF1dG8gc3RhdGUgPSBnZXRQYWdlKHdlYlZpZXcpLnJlcG9ydGVkTWVkaWFTdGF0
ZSgpOworICAgIGlmIChzdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6
Okhhc0FjdGl2ZVZpZGVvQ2FwdHVyZURldmljZSkKKyAgICAgICAgcmV0dXJuIFdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX0FDVElWRTsKKyAgICBpZiAoc3RhdGUgJiBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYVN0YXRlOjpIYXNNdXRlZFZpZGVvQ2FwdHVyZURldmljZSkKKyAgICAgICAg
cmV0dXJuIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEOworICAgIHJldHVybiBXRUJL
SVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmll
d19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqIEBzdGF0ZTogYSAjV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKKyAqCisgKiBTZXQgdGhl
IGNhbWVyYSBjYXB0dXJlIHN0YXRlIG9mIGEgI1dlYktpdFdlYlZpZXcuCisgKgorICogSWYgV2Vi
S2l0U2V0dGluZ3M6ZW5hYmxlLW1lZGlhc3RyZWFtIGlzIEZBTFNFLCB0aGlzIG1ldGhvZCB3aWxs
IGhhdmUgbm8gdmlzaWJsZSBlZmZlY3QuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwordm9pZCB3
ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIHN0YXRlKQoreworICAgIHdlYmtpdFdlYlZp
ZXdDb25maWd1cmVNZWRpYUNhcHR1cmUod2ViVmlldywgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6
TWVkaWFDYXB0dXJlS2luZDo6VmlkZW8sIHN0YXRlKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzogYSAjV2Vi
S2l0V2ViVmlldworICoKKyAqIEdldCB0aGUgbWljcm9waG9uZSBjYXB0dXJlIHN0YXRlIG9mIGEg
I1dlYktpdFdlYlZpZXcuCisgKgorICogUmV0dXJuczogVGhlICNXZWJLaXRNZWRpYUNhcHR1cmVT
dGF0ZSBvZiB0aGUgbWljcm9waG9uZSBkZXZpY2UuIElmIFdlYktpdFNldHRpbmdzOmVuYWJsZS1t
ZWRpYXN0cmVhbQorICogaXMgRkFMU0UsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuICVXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK1dlYktp
dE1lZGlhQ2FwdHVyZVN0YXRlIHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJl
X3N0YXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgYXV0byBzdGF0ZSA9IGdldFBh
Z2Uod2ViVmlldykucmVwb3J0ZWRNZWRpYVN0YXRlKCk7CisgICAgaWYgKHN0YXRlICYgV2ViQ29y
ZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZTo6SGFzQWN0aXZlQXVkaW9DYXB0dXJlRGV2aWNl
KQorICAgICAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOworICAg
IGlmIChzdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6Okhhc011dGVk
QXVkaW9DYXB0dXJlRGV2aWNlKQorICAgICAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfTVVURUQ7CisgICAgcmV0dXJuIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU7
Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF9taWNyb3Bob25lX2NhcHR1cmVfc3Rh
dGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBzdGF0ZTogYSAjV2ViS2l0
TWVkaWFDYXB0dXJlU3RhdGUKKyAqCisgKiBTZXQgdGhlIG1pY3JvcGhvbmUgY2FwdHVyZSBzdGF0
ZSBvZiBhICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIElmIFdlYktpdFNldHRpbmdzOmVuYWJsZS1t
ZWRpYXN0cmVhbSBpcyBGQUxTRSwgdGhpcyBtZXRob2Qgd2lsbCBoYXZlIG5vIHZpc2libGUgZWZm
ZWN0LgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TWVk
aWFDYXB0dXJlU3RhdGUgc3RhdGUpCit7CisgICAgd2Via2l0V2ViVmlld0NvbmZpZ3VyZU1lZGlh
Q2FwdHVyZSh3ZWJWaWV3LCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5k
OjpBdWRpbywgc3RhdGUpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfZGlzcGxh
eV9jYXB0dXJlX3N0YXRlOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICog
R2V0IHRoZSBkaXNwbGF5IGNhcHR1cmUgc3RhdGUgb2YgYSAjV2ViS2l0V2ViVmlldy4KKyAqCisg
KiBSZXR1cm5zOiBUaGUgI1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIG9mIHRoZSBkaXNwbGF5IGRl
dmljZS4gSWYgV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLW1lZGlhc3RyZWFtCisgKiBpcyBGQUxTRSwg
dGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gJVdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUu
CisgKgorICogU2luY2U6IDIuMzQKKyAqLworV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgd2Via2l0
X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUoV2ViS2l0V2ViVmlldyogd2ViVmll
dykKK3sKKyAgICBhdXRvIHN0YXRlID0gZ2V0UGFnZSh3ZWJWaWV3KS5yZXBvcnRlZE1lZGlhU3Rh
dGUoKTsKKyAgICBpZiAoc3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
OjpIYXNBY3RpdmVEaXNwbGF5Q2FwdHVyZURldmljZSkKKyAgICAgICAgcmV0dXJuIFdFQktJVF9N
RURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRTsKKyAgICBpZiAoc3RhdGUgJiBXZWJDb3JlOjpNZWRp
YVByb2R1Y2VyOjpNZWRpYVN0YXRlOjpIYXNNdXRlZERpc3BsYXlDYXB0dXJlRGV2aWNlKQorICAg
ICAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQ7CisgICAgcmV0dXJu
IFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktp
dFdlYlZpZXcKKyAqIEBzdGF0ZTogYSAjV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKKyAqCisgKiBT
ZXQgdGhlIGRpc3BsYXkgY2FwdHVyZSBzdGF0ZSBvZiBhICNXZWJLaXRXZWJWaWV3LgorICoKKyAq
IElmIFdlYktpdFNldHRpbmdzOmVuYWJsZS1tZWRpYXN0cmVhbSBpcyBGQUxTRSwgdGhpcyBtZXRo
b2Qgd2lsbCBoYXZlIG5vIHZpc2libGUgZWZmZWN0LgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8K
K3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgc3RhdGUpCit7CisgICAgd2Vi
a2l0V2ViVmlld0NvbmZpZ3VyZU1lZGlhQ2FwdHVyZSh3ZWJWaWV3LCBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpWaWRlbywgc3RhdGUsIHRydWUpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2
YXRlLmgKaW5kZXggZDdhNDMyMDRiZTY5M2YyYTdlZjg2MjQwZWFmNTY3ZmU3MDA1MmEyYy4uZmJh
YjFhZmU5Y2EwOWY1ZTZhNjc5M2Y1MDY1ZjA4ZmM3NmJmZWRhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBA
IC05MSw2ICs5MSw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0luc2VjdXJlQ29udGVudERldGVjdGVk
KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFCiBib29sIHdlYmtpdFdlYlZp
ZXdFbWl0U2hvd05vdGlmaWNhdGlvbihXZWJLaXRXZWJWaWV3KiwgV2ViS2l0Tm90aWZpY2F0aW9u
Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdXZWJQcm9jZXNzVGVybWluYXRlZChXZWJLaXRXZWJWaWV3
KiwgV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uKTsKIHZvaWQgd2Via2l0V2ViVmll
d0lzUGxheWluZ0F1ZGlvQ2hhbmdlZChXZWJLaXRXZWJWaWV3Kik7Cit2b2lkIHdlYmtpdFdlYlZp
ZXdNZWRpYUNhcHR1cmVTdGF0ZURpZENoYW5nZShXZWJLaXRXZWJWaWV3KiwgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKIHZvaWQgd2Via2l0V2ViVmlld1NlbGVjdGlv
bkRpZENoYW5nZShXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdFdlYlZpZXdSZXF1ZXN0SW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnMoV2ViS2l0V2ViVmlldyosIFdlYktpdDo6SW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCYpOwogV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyKiB3ZWJraXRXZWJWaWV3R2V0V2Vic2l0ZURhdGFNYW5hZ2VyKFdlYktpdFdlYlZpZXcq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAppbmRleCBhZDM4MmIxYmE0ZGYz
OTQ4NjA5ZGEyYjJmZmU4ZjRhYzUyZTBjOGZkLi4zZjhjZTBjMDA1ZmI2ZWVjMTE3YTk5ODJhYWIy
YmM5ZGY5MTVhNjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC02
NCw2ICs2NCw5IEBAIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2F1ZGlvX2Rl
dmljZSAoV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlCiBXRUJLSVRfQVBJIGdib29sZWFu
CiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl92aWRlb19kZXZpY2UgKFdlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKIAorV0VCS0lUX0FQSSBnYm9v
bGVhbgord2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlzcGxheV9kZXZpY2Ug
KFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKKwogR19FTkRfREVD
TFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oCmluZGV4IDhiNDIwOGVmY2Q3NjE1MDI2NzBjM2NjZWNmM2EwZjg4YTExNDkzNjQu
LmE5ZmZlMzY5MTIyNzA5ZGE4ZTM3ZDk4ZTliNmNiYjc2M2Y5M2U3MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCkBAIC0yMDUsNiArMjA1
LDIyIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX1dFQl9QUk9DRVNTX1RFUk1JTkFURURf
QllfQVBJCiB9IFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjsKIAorLyoqCisgKiBX
ZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZToKKyAqIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9O
T05FOiBNZWRpYSBjYXB0dXJlIGlzIGRpc2FibGVkLgorICogQFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX0FDVElWRTogTWVkaWEgY2FwdHVyZSBpcyBhY3RpdmUuCisgKiBAV0VCS0lUX01FRElB
X0NBUFRVUkVfU1RBVEVfTVVURUQ6IE1lZGlhIGNhcHR1cmUgaXMgbXV0ZWQuCisgKgorICogRW51
bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBjYXB0dXJlIHN0YXRlIG9mIGEgbWVkaWEgZGV2
aWNlLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lU
X01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSwKKyAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9BQ1RJVkUsCisgICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQsCit9IFdlYktp
dE1lZGlhQ2FwdHVyZVN0YXRlOworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIFdlYktp
dFdlYlZpZXdCYXNlIHBhcmVudDsKIApAQCAtNjAwLDYgKzYxNiwyNCBAQCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNpdmUgICAgICAgIChXZWJLaXRXZWJWaWV3CiBX
RUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJfdmlld190ZXJtaW5hdGVfd2ViX3Byb2Nlc3MgICAg
ICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKIAorV0VC
S0lUX0FQSSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9jYW1l
cmFfY2FwdHVyZV9zdGF0ZSAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUoV2ViS2l0V2Vi
Vmlldyogd2ViX3ZpZXcsIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIHN0YXRlKTsKKworV0VCS0lU
X0FQSSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bo
b25lX2NhcHR1cmVfc3RhdGUoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKFdlYktp
dFdlYlZpZXcqIHdlYl92aWV3LCBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBzdGF0ZSk7CisKK1dF
QktJVF9BUEkgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfZGlz
cGxheV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKworV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZShXZWJLaXRX
ZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgc3RhdGUpOworCiBHX0VO
RF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IGYx
MDZiMGRmOGFkOTFkZGQxMGI5ZGZjZGZiOTlkNTY0MjUwMWRmN2EuLmNiOTczNjJiMTZlZWNhNTkx
MGJjZjVkZmMwMDhmYTY1NTliOTRkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4
dApAQCAtMTk5LDYgKzE5OSw3IEBAIFdlYktpdFNuYXBzaG90T3B0aW9ucwogV2ViS2l0U25hcHNo
b3RSZWdpb24KIFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbgogV2ViS2l0QXV0b3Bs
YXlQb2xpY3kKK1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCiAKIDxTVUJTRUNUSU9OIEVkaXRpbmcg
Q29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApAQCAtMjkzLDYgKzI5NCwxMiBA
QCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMKIHdlYmtpdF93ZWJfdmlld19n
ZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZQogd2Via2l0X3dlYl92aWV3X3Rlcm1pbmF0ZV93
ZWJfcHJvY2Vzcwogd2Via2l0X3dlYl92aWV3X3NldF9jb3JzX2FsbG93bGlzdAord2Via2l0X3dl
Yl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9taWNy
b3Bob25lX2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19zZXRfY2FtZXJhX2NhcHR1cmVf
c3RhdGUKK3dlYmtpdF93ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlCit3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X3Nl
dF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKQEAgLTc5Miw2ICs3OTksNyBAQCB3ZWJraXRf
bmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3R5cGUKIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0CiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UKIHdl
YmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZQord2Via2l0X3Vz
ZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlzcGxheV9kZXZpY2UKIAogPFNVQlNFQ1RJT04g
U3RhbmRhcmQ+CiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKaW5kZXggYmUxNGQzNjM3OThmMGQyNGU1YTk0YWU3
MGMxNDcwOTUwMjJjOTAyNy4uMjNlOTYyOWE5Yjk5ZGYzYjZiZTk3YzNkYzA1ZjQ2NDU1Y2FhODQ4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaApAQCAtNjQsNiArNjQsOSBA
QCB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UgKFdlYktp
dFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZQogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3Vz
ZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlIChXZWJLaXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtp
dF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlIChXZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApp
bmRleCA0M2FmY2EwMzBkOTNkNTgxYTFmYzMzNDU5NTRhM2QxZTBkOTk5ZDkxLi43MDhhY2MyZjRj
NDE1OGNmMTFmNGEyNDA3YTU4OGIyYzM5MWEwZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAtMTg2LDYgKzE4NiwyMiBAQCB0eXBl
ZGVmIGVudW0gewogdHlwZWRlZiB2b2lkICgqIFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2sp
IChXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgdXNlcl9kYXRhKTsKIAorLyoqCisgKiBX
ZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZToKKyAqIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9O
T05FOiBNZWRpYSBjYXB0dXJlIGlzIGRpc2FibGVkLgorICogQFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX0FDVElWRTogTWVkaWEgY2FwdHVyZSBpcyBhY3RpdmUuCisgKiBAV0VCS0lUX01FRElB
X0NBUFRVUkVfU1RBVEVfTVVURUQ6IE1lZGlhIGNhcHR1cmUgaXMgbXV0ZWQuCisgKgorICogRW51
bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBjYXB0dXJlIHN0YXRlIG9mIGEgbWVkaWEgZGV2
aWNlLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lU
X01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSwKKyAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9BQ1RJVkUsCisgICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQsCit9IFdlYktp
dE1lZGlhQ2FwdHVyZVN0YXRlOworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIEdPYmpl
Y3QgcGFyZW50OwogCkBAIC01NzcsNiArNTkzLDI3IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0
X3dlYl92aWV3X3NldF9jb3JzX2FsbG93bGlzdCAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIGNvbnN0ICAgICAgICphbGxv
d2xpc3QpOwogCitXRUJLSVRfQVBJIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCit3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3
ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92
aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAg
ICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSAgICBzdGF0ZSk7CisK
K1dFQktJVF9BUEkgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRf
bWljcm9waG9uZV9jYXB0dXJlX3N0YXRlICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAg
ICAgKndlYl92aWV3KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X21p
Y3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlICAgIHN0YXRlKTsKKworV0VCS0lUX0FQ
SSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2Nh
cHR1cmVfc3RhdGUgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3Zp
ZXcpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0
dXJlX3N0YXRlICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgICAgc3RhdGUpOworCiBHX0VORF9ERUNMUwogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUt
MS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCA4Y2Y5ZDRmZjM4MzgyYjNkMzQ4YTczMmQ2OWQwMGU3
NzIwNTc2Nzc3Li5lNDBjN2EzNzcxMDRmOTA1ZjhiZmQ1NzgyYTAwZjIyNWE3NjNjZGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0
aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0x
LjAtc2VjdGlvbnMudHh0CkBAIC0xNzMsNiArMTczLDcgQEAgV2ViS2l0SW5zZWN1cmVDb250ZW50
RXZlbnQKIFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbgogV2ViS2l0RnJhbWVEaXNw
bGF5ZWRDYWxsYmFjawogV2ViS2l0QXV0b3BsYXlQb2xpY3kKK1dlYktpdE1lZGlhQ2FwdHVyZVN0
YXRlCiAKIDxTVUJTRUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01N
QU5EX0NVVApAQCAtMjY1LDYgKzI2NiwxMiBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVf
cG9saWNpZXMKIHdlYmtpdF93ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZQog
d2Via2l0X3dlYl92aWV3X3Rlcm1pbmF0ZV93ZWJfcHJvY2Vzcwogd2Via2l0X3dlYl92aWV3X3Nl
dF9jb3JzX2FsbG93bGlzdAord2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0
ZQord2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93
ZWJfdmlld19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19zZXRfbWlj
cm9waG9uZV9jYXB0dXJlX3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVy
ZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUKIAogPFNV
QlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQK
QEAgLTc5Niw2ICs4MDMsNyBAQCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3R5cGUKIFdl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNz
aW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UKIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNf
Zm9yX3ZpZGVvX2RldmljZQord2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlz
cGxheV9kZXZpY2UKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdENsYXNzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZWJiZWM2Zjk5OTY4NzM2ZjlmNWViMjUyNmIzYTViM2I1NDQ2NTY2Mi4u
NzY2ZGQ5ZDM5ZGMxMDIxYmU1NGE2OWE0MGNhYzkxYTk5NDk3MGZjZCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIx
LTA3LTExICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR0xpYl0gRXhwb3NlIEFQSSB0byBhY2Nlc3MvbW9kaWZ5IGNhcHR1cmUgZGV2aWNlcyBzdGF0
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzkw
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBH
VEsgTWluaUJyb3dzZXIgaXMgbm93IGFibGUgdG8gc2hvdyBtZWRpYSBjYXB0dXJlIGluZGljYXRv
cnMsIHRocm91Z2ggdGhlIFVSSSBlbnRyeS4gQQorICAgICAgICBuZXcgQVBJIHRlc3RzIHdhcyBh
ZGRpbmcsIGNoZWNraW5nIHN1cHBvcnQgZm9yIGdldERpc3BsYXlNZWRpYSgpLiBBcyB0aGlzIHJl
cXVpcmVzIHVzZXIKKyAgICAgICAgZ2VzdHVyZSBzdXBwb3J0LCBhIG5ldyBtaW5pbWFsIGluamVj
dGVkIGJ1bmRsZSB3YXMgaW1wbGVtZW50ZWQsIGluamVjdGluZyBgd2luZG93LmludGVybmFsc2AK
KyAgICAgICAgaW4gdGhlIHRlc3QgcGFnZS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9C
cm93c2VyVGFiLmM6CisgICAgICAgIChwZXJtaXNzaW9uUmVxdWVzdERhdGFOZXcpOgorICAgICAg
ICAocGVybWlzc2lvblJlcXVlc3REYXRhRnJlZSk6CisgICAgICAgIChkZWNpZGVQZXJtaXNzaW9u
UmVxdWVzdCk6CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAg
ICAgICAgKHdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAod2ViVmll
d1VyaUVudHJ5SWNvblByZXNzZWQpOgorICAgICAgICAoYnJvd3NlcldpbmRvd1N3aXRjaFRhYik6
CisgICAgICAgICogU2NyaXB0cy9ydW4tZ3RrLXRlc3RzOgorICAgICAgICAoR3RrVGVzdFJ1bm5l
cik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcDoKKyAgICAgICAg
KHRlc3RXZWJWaWV3VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKToKKyAgICAgICAgKHRlc3RX
ZWJWaWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKToKKyAgICAgICAgKHRl
c3RXZWJWaWV3RGlzcGxheVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgIChi
ZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAodGVzdFdlYnNpdGVEYXRhRGV2aWNlSWRIYXNoU2Fs
dCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL0luamVjdGVkQnVuZGxlQ29udHJvbGxl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250
cm9sbGVyOjpzaW5nbGV0b24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5k
bGVDb250cm9sbGVyOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkQ3JlYXRlUGFnZSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OndpbGxE
ZXN0cm95UGFnZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRy
b2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVj
dGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkdW1wVGVzdE5hbWVzKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6aW5pdGlh
bGl6ZVRlc3ROYW1lZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNv
bnRyb2xsZXI6OnJlZ2lzdGVyQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24pOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpwbGF0Zm9ybUlu
aXRpYWxpemUpOgorICAgICAgICAqIGZsYXRwYWsvZmxhdHBha3V0aWxzLnB5OgorICAgICAgICAo
V2Via2l0RmxhdHBhay5ydW5faW5fc2FuZGJveCk6CisgICAgICAgICogZ2xpYi9hcGlfdGVzdF9y
dW5uZXIucHk6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKFRlc3RSdW5uZXIuX3J1
bl90ZXN0X2dsaWIpOgorCiAyMDIxLTA3LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+IGFuZCBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgTmV3
IG1hbGxvYyBhbGdvcml0aG0KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyVGFiLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jCmluZGV4IGFiNzVh
NjlmNjRhYWRlZTJiMjJlMGQ4ZDExNDkzMmRiNTVhYWEwMDAuLjA2NmQxMWYxMzBmODNhMWFmNmZi
YzQyNTI0ZTcwZGMzMTRmNWU1N2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyVGFiLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYwpAQCAt
MzA3LDE2ICszMDcsMjAgQEAgc3RhdGljIGdib29sZWFuIGRlY2lkZVBlcm1pc3Npb25SZXF1ZXN0
KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdFBlcm1pc3Npb24KICAgICAgICAgdGV4dCA9
IGdfc3RyZHVwKCJBbGxvdyBub3RpZmljYXRpb25zIHJlcXVlc3Q/Iik7CiAgICAgfSBlbHNlIGlm
IChXRUJLSVRfSVNfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKICAg
ICAgICAgdGl0bGUgPSAiVXNlck1lZGlhIHJlcXVlc3QiOwotICAgICAgICBnYm9vbGVhbiBpc19m
b3JfYXVkaW9fZGV2aWNlID0gd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfYXVk
aW9fZGV2aWNlKFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7
Ci0gICAgICAgIGdib29sZWFuIGlzX2Zvcl92aWRlb19kZXZpY2UgPSB3ZWJraXRfdXNlcl9tZWRp
YV9wZXJtaXNzaW9uX2lzX2Zvcl92aWRlb19kZXZpY2UoV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlT
U0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICAgICAgZ2Jvb2xlYW4gaXNGb3JBdWRpb0Rldmlj
ZSA9IHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2F1ZGlvX2RldmljZShXRUJL
SVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworICAgICAgICBnYm9v
bGVhbiBpc0ZvclZpZGVvRGV2aWNlID0gd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19m
b3JfdmlkZW9fZGV2aWNlKFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1
ZXN0KSk7CisgICAgICAgIGdib29sZWFuIGlzRm9yRGlzcGxheURldmljZSA9IHdlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlKFdFQktJVF9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisKICAgICAgICAgY29uc3QgY2hhciAqbWVk
aWFUeXBlID0gTlVMTDsKLSAgICAgICAgaWYgKGlzX2Zvcl9hdWRpb19kZXZpY2UpIHsKLSAgICAg
ICAgICAgIGlmIChpc19mb3JfdmlkZW9fZGV2aWNlKQorICAgICAgICBpZiAoaXNGb3JBdWRpb0Rl
dmljZSkgeworICAgICAgICAgICAgaWYgKGlzRm9yVmlkZW9EZXZpY2UpCiAgICAgICAgICAgICAg
ICAgbWVkaWFUeXBlID0gImF1ZGlvL3ZpZGVvIjsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBtZWRpYVR5cGUgPSAiYXVkaW8iOwotICAgICAgICB9IGVsc2UgaWYgKGlzX2Zvcl92
aWRlb19kZXZpY2UpCisgICAgICAgIH0gZWxzZSBpZiAoaXNGb3JWaWRlb0RldmljZSkKICAgICAg
ICAgICAgIG1lZGlhVHlwZSA9ICJ2aWRlbyI7CisgICAgICAgIGVsc2UgaWYgKGlzRm9yRGlzcGxh
eURldmljZSkKKyAgICAgICAgICAgIG1lZGlhVHlwZSA9ICJkaXNwbGF5IjsKICAgICAgICAgdGV4
dCA9IGdfc3RyZHVwX3ByaW50ZigiQWxsb3cgYWNjZXNzIHRvICVzIGRldmljZT8iLCBtZWRpYVR5
cGUpOwogICAgIH0gZWxzZSBpZiAoV0VCS0lUX0lTX0lOU1RBTExfTUlTU0lOR19NRURJQV9QTFVH
SU5TX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkgewogICAgICAgICB0aXRsZSA9ICJNZWRp
YSBwbHVnaW4gbWlzc2luZyByZXF1ZXN0IjsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRv
dy5jCmluZGV4IDA2M2U5NDU2ODQ5MGNjNzIxOTMyMjI5ODdiODA1ZTdkZmZmOTRmZWEuLjExOGNj
MjAwMjE1YjIyZGNmMDc5ZjI2NjNjMjA5OGI5YzQwZmQzNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJXaW5kb3cuYwpAQCAtNjQ5LDYgKzY0OSw3MiBAQCBzdGF0aWMgdm9pZCBmYXZpY29u
Q2hhbmdlZChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBHUGFyYW1TcGVjICpwYXJhbVNwZWMsIEJy
b3dzZQogICAgIHVwZGF0ZVVyaUVudHJ5SWNvbih3aW5kb3cpOwogfQogCitzdGF0aWMgdm9pZCB3
ZWJWaWV3TWVkaWFDYXB0dXJlU3RhdGVDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQ
YXJhbVNwZWMqIHBhcmFtU3BlYywgQnJvd3NlcldpbmRvdyogd2luZG93KQoreworICAgIGNvbnN0
IGdjaGFyKiBuYW1lID0gZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBhcmFtU3BlYyk7CisgICAgLy8g
RklYTUU6IHRoZSBVUkkgZW50cnkgaXMgbm90IGdyZWF0IHN0b3JhZ2UgaW4gY2FzZSBtb3JlIHRo
YW4gb25lIGNhcHR1cmUgZGV2aWNlIGlzIGluIHVzZSwKKyAgICAvLyBiZWNhdXNlIGl0IGNhbiBz
dG9yZSBvbmx5IG9uZSBzZWNvbmRhcnkgaWNvbi4KKyAgICBHdGtFbnRyeSAqZW50cnkgPSBHVEtf
RU5UUlkod2luZG93LT51cmlFbnRyeSk7CisKKyAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChuYW1l
LCAibWljcm9waG9uZSIpKSB7CisgICAgICAgIHN3aXRjaCAod2Via2l0X3dlYl92aWV3X2dldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUod2ViVmlldykpIHsKKyAgICAgICAgY2FzZSBXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9OT05FOgorICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF9pY29u
X2Zyb21faWNvbl9uYW1lKGVudHJ5LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlksIE5VTEwpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RB
VEVfTVVURUQ6CisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9pY29uX25hbWUo
ZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgIm1pY3JvcGhvbmUtc2Vuc2l2aXR5LW11
dGVzLXN5bWJvbGljIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkU6CisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2lj
b25fZnJvbV9pY29uX25hbWUoZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgImF1ZGlv
LWlucHV0LW1pY3JvcGhvbmUtc3ltYm9saWMiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KG5hbWUsICJjYW1lcmEiKSkgewor
ICAgICAgICBzd2l0Y2ggKHdlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUo
d2ViVmlldykpIHsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05F
OgorICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21faWNvbl9uYW1lKGVudHJ5LCBH
VEtfRU5UUllfSUNPTl9TRUNPTkRBUlksIE5VTEwpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQ6CisgICAgICAgICAgICBn
dGtfZW50cnlfc2V0X2ljb25fZnJvbV9pY29uX25hbWUoZW50cnksIEdUS19FTlRSWV9JQ09OX1NF
Q09OREFSWSwgImNhbWVyYS1kaXNhYmxlZC1zeW1ib2xpYyIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOgorICAgICAg
ICAgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21faWNvbl9uYW1lKGVudHJ5LCBHVEtfRU5UUllf
SUNPTl9TRUNPTkRBUlksICJjYW1lcmEtd2ViLXN5bWJvbGljIik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChuYW1lLCAiZGlz
cGxheSIpKSB7CisgICAgICAgIHN3aXRjaCAod2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2Nh
cHR1cmVfc3RhdGUod2ViVmlldykpIHsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVS
RV9TVEFURV9OT05FOgorICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21faWNvbl9u
YW1lKGVudHJ5LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlksIE5VTEwpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQ6Cisg
ICAgICAgICAgICAvLyBGSVhNRTogSSBmb3VuZCBubyBzdWl0YWJsZSBpY29uIGZvciB0aGlzLgor
ICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21faWNvbl9uYW1lKGVudHJ5LCBHVEtf
RU5UUllfSUNPTl9TRUNPTkRBUlksICJtZWRpYS1wbGF5YmFjay1zdG9wLXN5bWJvbGljIik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9BQ1RJVkU6CisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9pY29uX25hbWUo
ZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgInZpZGVvLWRpc3BsYXktc3ltYm9saWMi
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9p
ZCB3ZWJWaWV3VXJpRW50cnlJY29uUHJlc3NlZChHdGtFbnRyeSogZW50cnksIEd0a0VudHJ5SWNv
blBvc2l0aW9uIHBvc2l0aW9uLCBHZGtFdmVudCogZXZlbnQsIEJyb3dzZXJXaW5kb3cqIHdpbmRv
dykKK3sKKyAgICBpZiAocG9zaXRpb24gIT0gR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogV2hhdCBhYm91dCBhdWRpby92aWRlbz8KKyAg
ICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0gYnJvd3Nlcl90YWJfZ2V0X3dlYl92aWV3KHdpbmRv
dy0+YWN0aXZlVGFiKTsKKyAgICBzd2l0Y2ggKHdlYmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9j
YXB0dXJlX3N0YXRlKHdlYlZpZXcpKSB7CisgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9T
VEFURV9OT05FOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX01VVEVEOgorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVy
ZV9zdGF0ZSh3ZWJWaWV3LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRToK
KyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUod2ViVmll
dywgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQpOworICAgICAgICBicmVhazsKKyAg
ICB9Cit9CisKIHN0YXRpYyB2b2lkIHdlYlZpZXdJc0xvYWRpbmdDaGFuZ2VkKFdlYktpdFdlYlZp
ZXcgKndlYlZpZXcsIEdQYXJhbVNwZWMgKnBhcmFtU3BlYywgQnJvd3NlcldpbmRvdyAqd2luZG93
KQogewogICAgIGdib29sZWFuIGlzTG9hZGluZyA9IHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5n
KHdlYlZpZXcpOwpAQCAtMTE4MCw2ICsxMjQ2LDEyIEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5k
b3dTd2l0Y2hUYWIoR3RrTm90ZWJvb2sgKm5vdGVib29rLCBCcm93c2VyVGFiICp0YWIsIGd1aW50
CiAjaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2ViVmlldywgInNjcm9sbC1ldmVudCIsIEdfQ0FMTEJBQ0soc2Nyb2xsRXZlbnRDYWxsYmFjayks
IHdpbmRvdyk7CiAjZW5kaWYKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJub3RpZnk6
OmNhbWVyYS1jYXB0dXJlLXN0YXRlIiwgR19DQUxMQkFDSyh3ZWJWaWV3TWVkaWFDYXB0dXJlU3Rh
dGVDaGFuZ2VkKSwgd2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJub3Rp
Znk6Om1pY3JvcGhvbmUtY2FwdHVyZS1zdGF0ZSIsIEdfQ0FMTEJBQ0sod2ViVmlld01lZGlhQ2Fw
dHVyZVN0YXRlQ2hhbmdlZCksIHdpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3
LCAibm90aWZ5OjpkaXNwbGF5LWNhcHR1cmUtc3RhdGUiLCBHX0NBTExCQUNLKHdlYlZpZXdNZWRp
YUNhcHR1cmVTdGF0ZUNoYW5nZWQpLCB3aW5kb3cpOworCisgICAgZ19vYmplY3Rfc2V0KHdpbmRv
dy0+dXJpRW50cnksICJzZWNvbmRhcnktaWNvbi1hY3RpdmF0YWJsZSIsIFRSVUUsIE5VTEwpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LT51cmlFbnRyeSwgImljb24tcHJlc3MiLCBHX0NB
TExCQUNLKHdlYlZpZXdVcmlFbnRyeUljb25QcmVzc2VkKSwgd2luZG93KTsKIAogICAgIFdlYktp
dEJhY2tGb3J3YXJkTGlzdCAqYmFja0ZvcndhcmRsaXN0ID0gd2Via2l0X3dlYl92aWV3X2dldF9i
YWNrX2ZvcndhcmRfbGlzdCh3ZWJWaWV3KTsKICAgICBicm93c2VyV2luZG93VXBkYXRlTmF2aWdh
dGlvbk1lbnUod2luZG93LCBiYWNrRm9yd2FyZGxpc3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy9ydW4tZ3RrLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCmluZGV4IGUy
MzQ3YWZlZTI2YWM4Mzk1YmRjMTg5NzNmNjljOGY2Y2ZjYjNlNzkuLjNmOTFhNjJkNjZlMzgzMWI3
ZmY2OTQ3NDA0YWEwZDkxYWVlZDVmYmQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWd0
ay10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKQEAgLTM0LDcgKzM0LDgg
QEAgaW1wb3J0IGZsYXRwYWt1dGlscwogZnJvbSBhcGlfdGVzdF9ydW5uZXIgaW1wb3J0IFRlc3RS
dW5uZXIsIGFkZF9vcHRpb25zCiAKIGNsYXNzIEd0a1Rlc3RSdW5uZXIoVGVzdFJ1bm5lcik6Ci0g
ICAgVGVzdFJ1bm5lci5URVNUX1RBUkdFVFMgPSBbICJXZWJLaXQyR3RrIiwgIlRlc3RXZWJLaXQi
LCAiVGVzdEpTQyIsICJUZXN0V1RGIiwgIlRlc3RXZWJDb3JlIiwgIlRlc3RKYXZhU2NyaXB0Q29y
ZSIgXQorICAgIFRFU1RfVEFSR0VUUyA9IFsgIldlYktpdDJHdGsiLCAiVGVzdFdlYktpdCIsICJU
ZXN0SlNDIiwgIlRlc3RXVEYiLCAiVGVzdFdlYkNvcmUiLCAiVGVzdEphdmFTY3JpcHRDb3JlIiBd
CisgICAgVEVTVFNfUkVRVUlSSU5HX0lOVEVSTkFMX0lOSkVDVEVEX0JVTkRMRSA9IFsgIlRlc3RV
SUNsaWVudCIgXQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMsIHRlc3RzPVtdKToK
ICAgICAgICAgc3VwZXIoR3RrVGVzdFJ1bm5lciwgc2VsZikuX19pbml0X18oImd0ayIsIG9wdGlv
bnMsIHRlc3RzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4
dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggNjg1ZDVlZTA2YTVl
MWUwNzk1OWEwYmExOGVlMDVlZDAwMmYxOTViNi4uN2NiYjc3NjZmYTcwMDQwOGVjMDg2ZDIyZmEy
ODhlZDk0M2E0NGM2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC0zNzAsNiAr
MzcwLDI2IEBAIGlmIChFTkFCTEVfV0VCS0lUKQogICAgICAgICAgICAgbWFjL1BsYXRmb3JtVXRp
bGl0aWVzTWFjLm1tCiAgICAgICAgICkKICAgICBlbmRpZiAoKQorCisgICAgaWYgKFBPUlQgU1RS
RVFVQUwgIkdUSyIgT1IgUE9SVCBTVFJFUVVBTCAiV1BFIikKKyAgICAgICAgc2V0KFRlc3RXZWJL
aXRBUElJbnRlcm5hbEluamVjdGVkQnVuZGxlX1NPVVJDRVMKKyAgICAgICAgICAgIEluamVjdGVk
QnVuZGxlTWFpbi5jcHAKKworICAgICAgICAgICAgZ2xpYi9JbmplY3RlZEJ1bmRsZUNvbnRyb2xs
ZXIuY3BwCisgICAgICAgICkKKyAgICAgICAgYWRkX2xpYnJhcnkoVGVzdFdlYktpdEFQSUludGVy
bmFsSW5qZWN0ZWRCdW5kbGUgU0hBUkVEICR7VGVzdFdlYktpdEFQSUludGVybmFsSW5qZWN0ZWRC
dW5kbGVfU09VUkNFU30pCisgICAgICAgIHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zKFRlc3RX
ZWJLaXRBUElJbnRlcm5hbEluamVjdGVkQnVuZGxlIFBSSVZBVEUgQlVJTERJTkdfVGVzdFdlYktp
dCkKKyAgICAgICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoVGVzdFdlYktpdEFQSUludGVy
bmFsSW5qZWN0ZWRCdW5kbGUgUFJJVkFURSAke1Rlc3RXZWJLaXRfUFJJVkFURV9JTkNMVURFX0RJ
UkVDVE9SSUVTfSkKKyAgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKFRlc3RXZWJLaXRBUElJ
bnRlcm5hbEluamVjdGVkQnVuZGxlIFBSSVZBVEUgV2ViS2l0OjpXZWJLaXQgV2ViS2l0OjpndGVz
dCBXZWJLaXQ6OldlYkNvcmVUZXN0U3VwcG9ydCkKKworICAgICAgICBpZiAoQ09NUElMRVJfSVNf
R0NDX09SX0NMQU5HKQorICAgICAgICAgICAgV0VCS0lUX0FERF9UQVJHRVRfQ1hYX0ZMQUdTKFRl
c3RXZWJLaXRBUElJbnRlcm5hbEluamVjdGVkQnVuZGxlIC1Xbm8tZGFuZ2xpbmctZWxzZQorICAg
ICAgICAgICAgICAtV25vLXNpZ24tY29tcGFyZQorICAgICAgICAgICAgICAtV25vLXVuZGVmCisg
ICAgICAgICAgICAgIC1Xbm8tdW51c2VkLXBhcmFtZXRlcikKKyAgICAgICAgZW5kaWYgKCkKKyAg
ICBlbmRpZiAoKQorCiAgICAgYWRkX2xpYnJhcnkoVGVzdFdlYktpdEFQSUluamVjdGVkQnVuZGxl
IFNIQVJFRCAke1Rlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTfSkKIAogICAgIHRh
cmdldF9jb21waWxlX2RlZmluaXRpb25zKFRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZSBQUklW
QVRFIEJVSUxESU5HX1Rlc3RXZWJLaXQpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCmluZGV4IGFiYTMyMWM5Y2FlNjJhN2Uw
MGYwMzMyMWU0NGNlMGM3NWNlMmRmODguLjY0YzI4NDcwNTZhOGI0MjA1ZWJjNmQ2MjE4MWEwMWZh
ZjgyZTJjNTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0VUlDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0VUlDbGllbnQuY3BwCkBAIC0yNDAsNiArMjQwLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHVzZXJNZWRpYVJlcXVlc3Qg
PSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCk7CiAgICAgICAg
ICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2F1
ZGlvX2RldmljZSh1c2VyTWVkaWFSZXF1ZXN0KSA9PSB0ZXN0LT5tX2V4cGVjdGVkQXVkaW9NZWRp
YSk7CiAgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Np
b25faXNfZm9yX3ZpZGVvX2RldmljZSh1c2VyTWVkaWFSZXF1ZXN0KSA9PSB0ZXN0LT5tX2V4cGVj
dGVkVmlkZW9NZWRpYSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF91c2VyX21l
ZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlKHVzZXJNZWRpYVJlcXVlc3QpID09
IHRlc3QtPm1fZXhwZWN0ZWREaXNwbGF5TWVkaWEpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMpCkBAIC0yNjMsNiArMjY0LDcgQEAgcHVi
bGljOgogICAgICAgICAsIG1fdmVyaWZ5TWVkaWFUeXBlcyhmYWxzZSkKICAgICAgICAgLCBtX2V4
cGVjdGVkQXVkaW9NZWRpYShmYWxzZSkKICAgICAgICAgLCBtX2V4cGVjdGVkVmlkZW9NZWRpYShm
YWxzZSkKKyAgICAgICAgLCBtX2V4cGVjdGVkRGlzcGxheU1lZGlhKGZhbHNlKQogICAgICAgICAs
IG1fbW91c2VUYXJnZXRNb2RpZmllcnMoMCkKICAgICB7CiAgICAgICAgIHdlYmtpdF9zZXR0aW5n
c19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkod2Via2l0X3dl
Yl92aWV3X2dldF9zZXR0aW5ncyhtX3dlYlZpZXcpLCBUUlVFKTsKQEAgLTQxNSw2ICs0MTcsNyBA
QCBwdWJsaWM6CiAgICAgZ2Jvb2xlYW4gbV92ZXJpZnlNZWRpYVR5cGVzOwogICAgIGdib29sZWFu
IG1fZXhwZWN0ZWRBdWRpb01lZGlhOwogICAgIGdib29sZWFuIG1fZXhwZWN0ZWRWaWRlb01lZGlh
OworICAgIGdib29sZWFuIG1fZXhwZWN0ZWREaXNwbGF5TWVkaWE7CiAgICAgV2luZG93UHJvcGVy
dGllcyBtX3dpbmRvd1Byb3BlcnRpZXM7CiAgICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV93aW5k
b3dQcm9wZXJ0aWVzQ2hhbmdlZDsKICAgICBHUmVmUHRyPFdlYktpdEhpdFRlc3RSZXN1bHQ+IG1f
bW91c2VUYXJnZXRIaXRUZXN0UmVzdWx0OwpAQCAtMTAwMSw2ICsxMDA0LDcgQEAgc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0
ZXN0LCBnY29uc3Rwb2kKICAgICB0ZXN0LT5tX3ZlcmlmeU1lZGlhVHlwZXMgPSBUUlVFOwogICAg
IHRlc3QtPm1fZXhwZWN0ZWRBdWRpb01lZGlhID0gVFJVRTsKICAgICB0ZXN0LT5tX2V4cGVjdGVk
VmlkZW9NZWRpYSA9IFRSVUU7CisgICAgdGVzdC0+bV9leHBlY3RlZERpc3BsYXlNZWRpYSA9IEZB
TFNFOwogCiAgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgogICAgIHRl
c3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxzZTsKQEAgLTEwNDEsNiArMTA0NSw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwKICAgICB0ZXN0LT5tX3ZlcmlmeU1lZGlhVHlwZXMg
PSBUUlVFOwogICAgIHRlc3QtPm1fZXhwZWN0ZWRBdWRpb01lZGlhID0gVFJVRTsKICAgICB0ZXN0
LT5tX2V4cGVjdGVkVmlkZW9NZWRpYSA9IEZBTFNFOworICAgIHRlc3QtPm1fZXhwZWN0ZWREaXNw
bGF5TWVkaWEgPSBGQUxTRTsKIAogICAgIC8vIFRlc3QgZGVueWluZyBhIHBlcm1pc3Npb24gcmVx
dWVzdC4KICAgICB0ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0gZmFsc2U7CkBAIC0x
MDUxLDYgKzEwNTYsNDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LAogICAgIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX21vY2tfY2FwdHVyZV9kZXZpY2VzKHNldHRpbmdzLCBGQUxTRSk7CiAg
ICAgd2Via2l0U2V0dGluZ3NTZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24o
c2V0dGluZ3MsIFRSVUUpOwogfQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Rpc3BsYXlVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQoreworICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRf
c2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiBlbmFibGVkID0gd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzKTsKKyAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MsIFRSVUUpOworICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21vY2tfY2FwdHVyZV9kZXZpY2VzKHNldHRpbmdzLCBU
UlVFKTsKKyAgICB3ZWJraXRTZXR0aW5nc1NldE1lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29u
bmVjdGlvbihzZXR0aW5ncywgRkFMU0UpOworCisgICAgdGVzdC0+c2hvd0luV2luZG93KCk7Cisg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGRpc3BsYXlNZWRpYVJlcXVlc3RIVE1MID0gIjxodG1sPiIK
KyAgICAgICAgIiAgPHNjcmlwdD4iCisgICAgICAgICIgIGZ1bmN0aW9uIHJ1blRlc3QoKSIKKyAg
ICAgICAgIiAgeyIKKyAgICAgICAgIiAgICB3aW5kb3cuaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVy
ZSgoKSA9PiB7IgorICAgICAgICAiICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXREaXNw
bGF5TWVkaWEoKSIKKyAgICAgICAgIiAgICAgICAgLnRoZW4oKHN0cmVhbSkgPT4geyBkb2N1bWVu
dC50aXRsZSA9IFwiT0tcIjsgfSkiCisgICAgICAgICIgICAgICAgIC5jYXRjaCgoZSkgPT4geyBk
b2N1bWVudC50aXRsZSA9IGUubmFtZTsgfSk7IgorICAgICAgICAiICAgIH0pOyIKKyAgICAgICAg
IiAgfSIKKyAgICAgICAgIiAgPC9zY3JpcHQ+IgorICAgICAgICAiICA8Ym9keSBvbmxvYWQ9J3J1
blRlc3QoKTsnPjwvYm9keT4iCisgICAgICAgICI8L2h0bWw+IjsKKworICAgIHRlc3QtPm1fdmVy
aWZ5TWVkaWFUeXBlcyA9IFRSVUU7CisgICAgdGVzdC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEgPSBG
QUxTRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkVmlkZW9NZWRpYSA9IEZBTFNFOworICAgIHRlc3Qt
Pm1fZXhwZWN0ZWREaXNwbGF5TWVkaWEgPSBUUlVFOworCisgICAgLy8gVGVzdCBkZW55aW5nIGEg
cGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMg
PSBmYWxzZTsKKyAgICB0ZXN0LT5sb2FkSHRtbChkaXNwbGF5TWVkaWFSZXF1ZXN0SFRNTCwgbnVs
bHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIk5vdEFsbG93ZWRFcnJv
ciIpOworCisgICAgLy8gVGVzdCBhbGxvd2luZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAgICB0
ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2FkSHRt
bChkaXNwbGF5TWVkaWFSZXF1ZXN0SFRNTCwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGls
VGl0bGVDaGFuZ2VkVG8oIk9LIik7CisKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9t
ZWRpYV9zdHJlYW0oc2V0dGluZ3MsIGVuYWJsZWQpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRf
ZW5hYmxlX21vY2tfY2FwdHVyZV9kZXZpY2VzKHNldHRpbmdzLCBGQUxTRSk7CisgICAgd2Via2l0
U2V0dGluZ3NTZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24oc2V0dGluZ3Ms
IFRSVUUpOworfQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQpAQCAtMTM0Myw2ICsxMzkxLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAg
IFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInVzZXJtZWRpYS1lbnVtZXJhdGVk
ZXZpY2VzLXBlcm1pc3Npb24tY2hlY2siLCB0ZXN0V2ViVmlld1VzZXJNZWRpYUVudW1lcmF0ZURl
dmljZXNQZXJtaXNzaW9uQ2hlY2spOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgInVzZXJtZWRpYS1wZXJtaXNzaW9uLXJlcXVlc3RzIiwgdGVzdFdlYlZpZXdVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdHMpOwogICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgImF1ZGlvLXVzZXJtZWRpYS1wZXJtaXNzaW9uLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0F1
ZGlvT25seVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk7CisgICAgVUlDbGllbnRUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAiZGlzcGxheS11c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0
IiwgdGVzdFdlYlZpZXdEaXNwbGF5VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKICNlbmRp
ZgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbW91c2UgY2xpY2sgaW4gV1BFLgogI2lmIFBMQVRG
T1JNKEdUSykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9JbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0luamVjdGVkQnVu
ZGxlQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc5MGVjYjAwOWQ5NGZhOTFlZTJiZmI4MmE5
ZmRjMmJmNmE0OTgwOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xp
Yi9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBXS19IQVZFX0NfU1BJCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVDb250cm9s
bGVyLmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wdGlvbnMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlVGVzdFN1cHBvcnQvV2ViQ29yZVRlc3RTdXBwb3J0Lmg+CisjaW5jbHVk
ZSA8V2ViS2l0L1dLQnVuZGxlRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdl
Lmg+CisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyJiBJbmplY3Rl
ZEJ1bmRsZUNvbnRyb2xsZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIEluamVjdGVkQnVu
ZGxlQ29udHJvbGxlciYgc2hhcmVkID0gKm5ldyBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI7Cisg
ICAgcmV0dXJuIHNoYXJlZDsKK30KKworSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpJbmplY3Rl
ZEJ1bmRsZUNvbnRyb2xsZXIoKQoreworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxl
cjo6aW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJlZiBpbml0aWFsaXphdGlv
blVzZXJEYXRhKQoreworICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworICAgIG1fYnVuZGxlID0g
YnVuZGxlOworCisgICAgV0tCdW5kbGVDbGllbnRWMSBjbGllbnQgPSB7CisgICAgICAgIHsgMCwg
dGhpcyB9LAorICAgICAgICBkaWRDcmVhdGVQYWdlLAorICAgICAgICB3aWxsRGVzdHJveVBhZ2Us
CisgICAgICAgIG51bGxwdHIsCisgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlLAorICAgICAgICBk
aWRSZWNlaXZlTWVzc2FnZVRvUGFnZQorICAgIH07CisgICAgV0tCdW5kbGVTZXRDbGllbnQobV9i
dW5kbGUuZ2V0KCksICZjbGllbnQuYmFzZSk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250
cm9sbGVyOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgSW5qZWN0ZWRCdW5kbGVDb250
cm9sbGVyKiBzZWxmID0gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworCisgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50VjAgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2Yo
bG9hZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAg
ICBsb2FkZXJDbGllbnQuYmFzZS5jbGllbnRJbmZvID0gc2VsZjsKKyAgICBsb2FkZXJDbGllbnQu
ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSA9IFtdKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCwgY29uc3Qgdm9p
ZCopIHsKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1l
R2V0SmF2YVNjcmlwdENvbnRleHRGb3JXb3JsZChmcmFtZSwgd29ybGQpOworICAgICAgICBXZWJD
b3JlVGVzdFN1cHBvcnQ6OmluamVjdEludGVybmFsc09iamVjdChjb250ZXh0KTsKKyAgICB9Owor
CisgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50
LmJhc2UpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6d2lsbERlc3Ryb3lQ
YWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqKQoreworfQorCit2
b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVS
ZWYsIFdLU3RyaW5nUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworfQorCit2b2lkIElu
amVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVS
ZWYsIFdLQnVuZGxlUGFnZVJlZiwgV0tTdHJpbmdSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCop
Cit7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkdW1wVGVzdE5hbWVzKCkK
K3sKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmluaXRpYWxpemVUZXN0TmFt
ZWQoV0tCdW5kbGVSZWYsIGNvbnN0IHN0ZDo6c3RyaW5nJiwgV0tUeXBlUmVmKQoreworfQorCit2
b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6cmVnaXN0ZXJDcmVhdGVJbmplY3RlZEJ1bmRs
ZVRlc3RGdW5jdGlvbihjb25zdCBzdGQ6OnN0cmluZyYsIENyZWF0ZUluamVjdGVkQnVuZGxlVGVz
dEZ1bmN0aW9uKQoreworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6cGxhdGZv
cm1Jbml0aWFsaXplKCkKK3sKKyAgICBKU0M6OkNvbmZpZzo6Y29uZmlndXJlRm9yVGVzdGluZygp
OworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkgYi9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1
dGlscy5weQppbmRleCAxY2IyOTgyZWNiYTBlMjM5ZWIyMGNhYTQzNDQ4ZDI3ZGFlYTVjZWIwLi5i
NGQxOWYwOTA3ZTEyMjg2NDI1MWEwNGNhM2JmNmIzYWZiZDE5MTExIDEwMDY0NAotLS0gYS9Ub29s
cy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weQorKysgYi9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGls
cy5weQpAQCAtODAxLDggKzgwMSwxMCBAQCBjbGFzcyBXZWJraXRGbGF0cGFrOgogICAgICAgICAg
ICAgIkpTQyIsCiAgICAgICAgICAgICAiTUVTQSIsCiAgICAgICAgICAgICAiTElCR0wiLAorICAg
ICAgICAgICAgIlBJUEVXSVJFIiwKICAgICAgICAgICAgICJSVVNUIiwKICAgICAgICAgICAgICJT
Q0NBQ0hFIiwKKyAgICAgICAgICAgICJTUEEiLAogICAgICAgICAgICAgIldBWUxBTkQiLAogICAg
ICAgICAgICAgIldFQktJVCIsCiAgICAgICAgICAgICAiV0VCS0lUMiIsCmRpZmYgLS1naXQgYS9U
b29scy9nbGliL2FwaV90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL2dsaWIvYXBpX3Rlc3RfcnVubmVy
LnB5CmluZGV4IDQ5M2JlYWQ1MjYwNjQxNGQxZDdmMDE0NzNkMDFjZTEwZTQ1MDg5MTguLmY1MjFj
MmYyN2NhNDliZjY2YmRiNThjYmM5ZjRlOWI1NTkxZjA2ZTAgMTAwNzU1Ci0tLSBhL1Rvb2xzL2ds
aWIvYXBpX3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL2dsaWIvYXBpX3Rlc3RfcnVubmVyLnB5
CkBAIC00Miw2ICs0Miw3IEBAIGVsc2U6CiAKIGNsYXNzIFRlc3RSdW5uZXIob2JqZWN0KToKICAg
ICBURVNUX1RBUkdFVFMgPSBbXQorICAgIFRFU1RTX1JFUVVJUklOR19JTlRFUk5BTF9JTkpFQ1RF
RF9CVU5ETEUgPSBbXQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMsIHRl
c3RzPVtdKToKICAgICAgICAgaWYgbGVuKG9wdGlvbnMuc3VidGVzdHMpID4gMCBhbmQgbGVuKHRl
c3RzKSAhPSAxOgpAQCAtMTY4LDcgKzE2OSwxMiBAQCBjbGFzcyBUZXN0UnVubmVyKG9iamVjdCk6
CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25zLmlzX3Nsb3codGVzdCwgc3Vi
dGVzdCkKIAogICAgICAgICBydW5uZXIgPSBHTGliVGVzdFJ1bm5lcih0ZXN0X3Byb2dyYW0sIHRp
bWVvdXQsIGlzX3Nsb3dfdGVzdCwgdGltZW91dCAqIDEwKQotICAgICAgICByZXR1cm4gcnVubmVy
LnJ1bihzdWJ0ZXN0cz1zdWJ0ZXN0cywgc2tpcHBlZD1za2lwcGVkX3Rlc3RfY2FzZXMsIGVudj1z
ZWxmLl90ZXN0X2VudikKKworICAgICAgICBlbnYgPSBzZWxmLl90ZXN0X2Vudi5jb3B5KCkKKyAg
ICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZSh0ZXN0X3Byb2dyYW0pIGluIHNlbGYuVEVTVFNfUkVR
VUlSSU5HX0lOVEVSTkFMX0lOSkVDVEVEX0JVTkRMRToKKyAgICAgICAgICAgIGVudlsiVEVTVF9X
RUJLSVRfQVBJX1dFQktJVDJfSU5KRUNURURfQlVORExFX0ZJTEVOQU1FIl0gPSAibGliVGVzdFdl
YktpdEFQSUludGVybmFsSW5qZWN0ZWRCdW5kbGUuc28iCisKKyAgICAgICAgcmV0dXJuIHJ1bm5l
ci5ydW4oc3VidGVzdHM9c3VidGVzdHMsIHNraXBwZWQ9c2tpcHBlZF90ZXN0X2Nhc2VzLCBlbnY9
ZW52KQogCiAgICAgZGVmIF9ydW5fdGVzdF9xdChzZWxmLCB0ZXN0X3Byb2dyYW0pOgogICAgICAg
ICBlbnYgPSBzZWxmLl90ZXN0X2Vudgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433581</attachid>
            <date>2021-07-15 06:24:06 -0700</date>
            <delta_ts>2021-07-18 10:25:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227902-20210715062404.patch</filename>
            <type>text/plain</type>
            <size>52243</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVmNjllNTU5OGNmMjVmM2U3
ODU2NWRhNGU2OTlkMjM1N2MwMTZmODIuLjMxODBjOWEzNTQ5YzdkZmQyNTMxNzkzMzU4NTQyMzFi
YTZlNTI1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDctMTEgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBFeHBvc2Ug
QVBJIHRvIGFjY2Vzcy9tb2RpZnkgY2FwdHVyZSBkZXZpY2VzIHN0YXRlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3OTAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBHTGliIEFQ
SSAoYW5kIGNvcnJlc3BvbmRpbmcgR09iamVjdCBwcm9wZXJ0aWVzKToKKworICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlCisgICAgICAgIHdlYmtpdF93ZWJf
dmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlCisgICAgICAgIHdlYmtpdF93ZWJfdmll
d19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dldF9kaXNw
bGF5X2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2Nh
cHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3Jf
ZGlzcGxheV9kZXZpY2UKKworICAgICAgICBUaGlzIGNhbiBiZSB1c2VmdWwgaW4gV2ViIGJyb3dz
ZXJzIHdpbGxpbmcgdG8gaW5kaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUgY2FwdHVyZSBkZXZpY2Vz
CisgICAgICAgIGN1cnJlbnRseSBpbiB1c2UgYnkgdGhlIFdlYlZpZXcuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6CisgICAgICAg
ICh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAg
ICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TWVkaWFDYXB0
dXJlU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAod2Via2l0V2ViVmlld1NldFByb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uZmlndXJlTWVkaWFD
YXB0dXJlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3Rh
dGUpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dDoKKwogMjAyMS0w
Ny0xNSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBtaWQtSnVseSAyMDIxIGVkaXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcApp
bmRleCAwYWZkOTdiZTQ2NGNlYjYwOWYxYzQzYWE3MjBmM2I0YzI5Nzc3OGJkLi44MzY3YjIzOGYy
MmNmOGE0NTQ3ZjhlZjdlYzc2N2JlYmIwYTdiMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0zNTIsNiArMzUyLDEx
IEBAIHByaXZhdGU6CiAgICAgICAgIHdlYmtpdFdlYlZpZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQo
bV93ZWJWaWV3KTsKICAgICB9CiAKKyAgICB2b2lkIG1lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdl
KFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlRmxhZ3Mp
IGZpbmFsCisgICAgeworICAgICAgICB3ZWJraXRXZWJWaWV3TWVkaWFDYXB0dXJlU3RhdGVEaWRD
aGFuZ2UobV93ZWJWaWV3LCBtZWRpYVN0YXRlRmxhZ3MpOworICAgIH0KKwogI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCiAgICAgdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soV2ViUGFnZVByb3h5KiBw
YWdlKSBmaW5hbAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNw
cAppbmRleCBmMDhiZmMxMTBmOGEwODcxNjFmZTJhZjkyMTgxMGQxOTgxYjg0ZTU1Li4zZDk5N2Ez
MmY4ZWNjM2VmMDg5NmI3N2Q0YTgzYmFhOGYwNThhNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0xMzYsNiArMTM2LDIwIEBAIGdib29sZWFuIHdlYmtp
dF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZShXZWJLaXRVc2VyTWVk
aWFQZXJtaXNzCiAgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnJlcXVlc3QtPnJlcXVpcmVzVmlk
ZW9DYXB0dXJlKCk7CiB9CiAKKy8qKgorICogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9p
c19mb3JfZGlzcGxheV9kZXZpY2U6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3QKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiBhY2Nlc3MgdG8gYSBkaXNw
bGF5IGRldmljZSB3YXMgcmVxdWVzdGVkLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK2dib29s
ZWFuIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlKFdl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHJlcXVlc3QtPnByaXYtPnJlcXVlc3QsIEZBTFNFKTsKKyAgICByZXR1cm4g
cmVxdWVzdC0+cHJpdi0+cmVxdWVzdC0+cmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpOworfQorCiBz
dGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEdldFByb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBw
YXJhbVNwZWMpCiB7CiAgICAgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHJlcXVl
c3QgPSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1Qob2JqZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5j
cHAKaW5kZXggNmRkOWYyMGU0ZmYyYmRhMDE4NGQwNjQ1MzAxY2VmMjJlNDdkY2YxNS4uMzJlYzkx
NGQ3Njc5OWY5NDVkZGM2OTljNjEzZTMxY2ExNjQxNjExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM4NSwx
MyArMzg1LDIxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2Jq
ZWN0KiBvYmplY3QpCiB7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9jb250ZXh0X3Bh
cmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7CiAKLSAgICBHVW5pcXVlUHRyPGNoYXI+
IGJ1bmRsZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0ZWRCdW5kbGVEaXJlY3Rvcnko
KSwgSU5KRUNURURfQlVORExFX0ZJTEVOQU1FLCBudWxscHRyKSk7CisgICAgY29uc3QgY2hhciog
YnVuZGxlRmlsZW5hbWUgPSBJTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUU7CisjaWYgRU5BQkxFKERF
VkVMT1BFUl9NT0RFKQorICAgIGNvbnN0IGNoYXIqIG92ZXJyaWRkZW5CdW5kbGVGaWxlbmFtZSA9
IGdldGVudigiVEVTVF9XRUJLSVRfQVBJX1dFQktJVDJfSU5KRUNURURfQlVORExFX0ZJTEVOQU1F
Iik7CisgICAgaWYgKG92ZXJyaWRkZW5CdW5kbGVGaWxlbmFtZSkKKyAgICAgICAgYnVuZGxlRmls
ZW5hbWUgPSBvdmVycmlkZGVuQnVuZGxlRmlsZW5hbWU7CisjZW5kaWYKKworICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gYnVuZGxlQWJzb2x1dGVGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKGluamVjdGVk
QnVuZGxlRGlyZWN0b3J5KCksIGJ1bmRsZUZpbGVuYW1lLCBudWxscHRyKSk7CiAKICAgICBXZWJL
aXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dFQl9DT05URVhUKG9iamVjdCk7CiAg
ICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3ZWJDb250ZXh0LT5wcml2OwogCisK
ICAgICBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotICAgIGNv
bmZpZ3VyYXRpb24uc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBjb25m
aWd1cmF0aW9uLnNldEluamVjdGVkQnVuZGxlUGF0aChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJ1bmRsZUFic29sdXRlRmlsZW5hbWUuZ2V0KCkpKTsKICAg
ICBjb25maWd1cmF0aW9uLnNldFVzZXNXZWJQcm9jZXNzQ2FjaGUodHJ1ZSk7CiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIGNvbmZpZ3VyYXRpb24uc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKHBy
aXYtPnBzb25FbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDkzZWFiOTNhNzliYmUzMDA1YTUxMDIyNDc5OGZm
OTk1NmM5YWUxOS4uODZlMjA2NzA1ZWQxYTY0MzIwM2YzZTBjNTMzNjc1ZDMzNGMyMzVkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAKQEAgLTIwNyw2ICsyMDcsMTAgQEAgZW51bSB7CiAgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVT
LAogICAgIFBST1BfSVNfV0VCX1BST0NFU1NfUkVTUE9OU0lWRSwKIAorICAgIFBST1BfQ0FNRVJB
X0NBUFRVUkVfU1RBVEUsCisgICAgUFJPUF9NSUNST1BIT05FX0NBUFRVUkVfU1RBVEUsCisgICAg
UFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEUsCisKICAgICBOX1BST1BFUlRJRVMsCiB9OwogCkBA
IC0zNTIsNiArMzU2LDE2IEBAIHZvaWQgd2Via2l0V2ViVmlld0lzUGxheWluZ0F1ZGlvQ2hhbmdl
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyhH
X09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNbUFJPUF9JU19QTEFZSU5HX0FVRElPXSk7
CiB9CiAKK3ZvaWQgd2Via2l0V2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFn
cyBtZWRpYVN0YXRlRmxhZ3MpCit7CisgICAgaWYgKG1lZGlhU3RhdGVGbGFncy5jb250YWluc0Fu
eShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpBdWRpb0NhcHR1cmVNYXNrKSkKKyAgICAgICAgZ19v
YmplY3Rfbm90aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJvcGVydGllc1tQ
Uk9QX01JQ1JPUEhPTkVfQ0FQVFVSRV9TVEFURV0pOworICAgIGlmIChtZWRpYVN0YXRlRmxhZ3Mu
Y29udGFpbnNBbnkoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6VmlkZW9DYXB0dXJlTWFzaykpCisg
ICAgICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialBy
b3BlcnRpZXNbUFJPUF9DQU1FUkFfQ0FQVFVSRV9TVEFURV0pOworICAgIGlmIChtZWRpYVN0YXRl
RmxhZ3MuY29udGFpbnNBbnkoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6RGlzcGxheUNhcHR1cmVN
YXNrKSkKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcp
LCBzT2JqUHJvcGVydGllc1tQUk9QX0RJU1BMQVlfQ0FQVFVSRV9TVEFURV0pOworfQorCiBjbGFz
cyBQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2Jz
ZXJ2ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtODcyLDYg
Kzg4NiwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZQogICAgIGNhc2UgUFJPUF9XRUJTSVRF
X1BPTElDSUVTOgogICAgICAgICB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9saWNpZXMgPSBzdGF0
aWNfY2FzdDxXZWJLaXRXZWJzaXRlUG9saWNpZXMqPihnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NBTUVSQV9DQVBUVVJFX1NUQVRFOgor
ICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcs
IHN0YXRpY19jYXN0PFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlPihnX3ZhbHVlX2dldF9lbnVtKHZh
bHVlKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUlDUk9QSE9ORV9DQVBUVVJF
X1NUQVRFOgorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9z
dGF0ZSh3ZWJWaWV3LCBzdGF0aWNfY2FzdDxXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZT4oZ192YWx1
ZV9nZXRfZW51bSh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RJU1BM
QVlfQ0FQVFVSRV9TVEFURToKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2Nh
cHR1cmVfc3RhdGUod2ViVmlldywgc3RhdGljX2Nhc3Q8V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU+
KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUpKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJ
ZCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC05NDMsNiArOTY2LDE1IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1Zh
bHVlKiB2YWx1CiAgICAgY2FzZSBQUk9QX0lTX1dFQl9QUk9DRVNTX1JFU1BPTlNJVkU6CiAgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfaXNfd2Vi
X3Byb2Nlc3NfcmVzcG9uc2l2ZSh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9DQU1FUkFfQ0FQVFVSRV9TVEFURToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1
ZSwgd2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NSUNST1BIT05FX0NBUFRVUkVfU1RBVEU6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9w
aG9uZV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX0RJU1BMQVlfQ0FQVFVSRV9TVEFURToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1
ZSwgd2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUod2ViVmlldykpOwor
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFM
SURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtMTMz
Nyw2ICsxMzY5LDgxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdl
YktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgVFJVRSwKICAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRX
ZWJWaWV3OmNhbWVyYS1jYXB0dXJlLXN0YXRlOgorICAgICAqCisgICAgICogQ2FwdHVyZSBzdGF0
ZSBvZiB0aGUgY2FtZXJhIGRldmljZS4gV2hlbmV2ZXIgdGhlIHVzZXIgZ3JhbnRzIGEgbWVkaWEt
cmVxdWVzdCBzZW50IGJ5IHRoZSB3ZWIKKyAgICAgKiBwYWdlLCByZXF1ZXN0aW5nIHZpZGVvIGNh
cHR1cmUgY2FwYWJpbGl0aWVzIChgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e3ZpZGVvOgorICAgICAqIHRydWV9KWApIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBzZXQgdG8gQFdF
QktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRS4KKyAgICAgKgorICAgICAqIFRoZSBhcHBs
aWNhdGlvbiBjYW4gbW9uaXRvciB0aGlzIHByb3BlcnR5IGFuZCBwcm92aWRlIGEgdmlzdWFsIGlu
ZGljYXRvciBhbGxvd2luZyB0byBvcHRpb25hbGx5CisgICAgICogZGVhY3RpdmF0ZSBvciBtdXRl
IHRoZSBjYXB0dXJlIGRldmljZSBieSBzZXR0aW5nIHRoaXMgcHJvcGVydHkgcmVzcGVjdGl2ZWx5
IHRvCisgICAgICogQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUgb3IgQFdFQktJVF9N
RURJQV9DQVBUVVJFX1NUQVRFX01VVEVELgorICAgICAqCisgICAgICogSWYgdGhlIGNhcHR1cmUg
c3RhdGUgb2YgdGhlIGRldmljZSBpcyBzZXQgdG8gQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRF
X05PTkUgdGhlIHdlYi1wYWdlCisgICAgICogY2FuIHN0aWxsIHJlLXJlcXVlc3QgdGhlIHBlcm1p
c3Npb24gdG8gdGhlIHVzZXIuIFBlcm1pc3Npb24gZGVzaXNpb24gY2FjaGluZyBpcyBsZWZ0IHRv
IHRoZQorICAgICAqIGFwcGxpY2F0aW9uLgorICAgICAqCisgICAgICogU2luY2U6IDIuMzQKKyAg
ICAgKi8KKyAgICBzT2JqUHJvcGVydGllc1tQUk9QX0NBTUVSQV9DQVBUVVJFX1NUQVRFXSA9IGdf
cGFyYW1fc3BlY19lbnVtKAorICAgICAgICAiY2FtZXJhLWNhcHR1cmUtc3RhdGUiLAorICAgICAg
ICAiQ2FtZXJhIENhcHR1cmUgU3RhdGUiLAorICAgICAgICBfKCJUaGUgY2FwdHVyZSBzdGF0ZSBv
ZiB0aGUgY2FtZXJhIGRldmljZSIpLAorICAgICAgICBXRUJLSVRfVFlQRV9NRURJQV9DQVBUVVJF
X1NUQVRFLAorICAgICAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLAorICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZp
ZXc6bWljcm9waG9uZS1jYXB0dXJlLXN0YXRlOgorICAgICAqCisgICAgICogQ2FwdHVyZSBzdGF0
ZSBvZiB0aGUgbWljcm9waG9uZSBkZXZpY2UuIFdoZW5ldmVyIHRoZSB1c2VyIGdyYW50cyBhIG1l
ZGlhLXJlcXVlc3Qgc2VudCBieSB0aGUgd2ViCisgICAgICogcGFnZSwgcmVxdWVzdGluZyBhdWRp
byBjYXB0dXJlIGNhcGFiaWxpdGllcyAoYG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1l
ZGlhKHthdWRpbzoKKyAgICAgKiB0cnVlfSlgKSB0aGlzIHByb3BlcnR5IHdpbGwgYmUgc2V0IHRv
IEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUuCisgICAgICoKKyAgICAgKiBUaGUg
YXBwbGljYXRpb24gY2FuIG1vbml0b3IgdGhpcyBwcm9wZXJ0eSBhbmQgcHJvdmlkZSBhIHZpc3Vh
bCBpbmRpY2F0b3IgYWxsb3dpbmcgdG8KKyAgICAgKiBvcHRpb25hbGx5IGRlYWN0aXZhdGUgb3Ig
bXV0ZSB0aGUgY2FwdHVyZSBkZXZpY2UgYnkgc2V0dGluZyB0aGlzIHByb3BlcnR5IHJlc3BlY3Rp
dmVseSB0bworICAgICAqIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIG9yIEBXRUJL
SVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRC4KKyAgICAgKgorICAgICAqIElmIHRoZSBjYXB0
dXJlIHN0YXRlIG9mIHRoZSBkZXZpY2UgaXMgc2V0IHRvIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9T
VEFURV9OT05FIHRoZSB3ZWItcGFnZQorICAgICAqIGNhbiBzdGlsbCByZS1yZXF1ZXN0IHRoZSBw
ZXJtaXNzaW9uIHRvIHRoZSB1c2VyLiBQZXJtaXNzaW9uIGRlc2lzaW9uIGNhY2hpbmcgaXMgbGVm
dCB0byB0aGUKKyAgICAgKiBhcHBsaWNhdGlvbi4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjM0
CisgICAgICovCisgICAgc09ialByb3BlcnRpZXNbUFJPUF9NSUNST1BIT05FX0NBUFRVUkVfU1RB
VEVdID0gZ19wYXJhbV9zcGVjX2VudW0oCisgICAgICAgICJtaWNyb3Bob25lLWNhcHR1cmUtc3Rh
dGUiLAorICAgICAgICAiTWljcm9waG9uZSBDYXB0dXJlIFN0YXRlIiwKKyAgICAgICAgXygiVGhl
IGNhcHR1cmUgc3RhdGUgb2YgdGhlIG1pY3JvcGhvbmUgZGV2aWNlIiksCisgICAgICAgIFdFQktJ
VF9UWVBFX01FRElBX0NBUFRVUkVfU1RBVEUsCisgICAgICAgIFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX05PTkUsCisgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpOworCisgICAgLyoq
CisgICAgICogV2ViS2l0V2ViVmlldzpkaXNwbGF5LWNhcHR1cmUtc3RhdGU6CisgICAgICoKKyAg
ICAgKiBDYXB0dXJlIHN0YXRlIG9mIHRoZSBkaXNwbGF5IGRldmljZS4gV2hlbmV2ZXIgdGhlIHVz
ZXIgZ3JhbnRzIGEgbWVkaWEtcmVxdWVzdCBzZW50IGJ5IHRoZSB3ZWIKKyAgICAgKiBwYWdlLCBy
ZXF1ZXN0aW5nIHNjcmVlbmNhc3RpbmcgY2FwYWJpbGl0aWVzIChgbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXREaXNwbGF5TWVkaWEoKSB0aGlzCisgICAgICogcHJvcGVydHkgd2lsbCBiZSBzZXQg
dG8gQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRS4KKyAgICAgKgorICAgICAqIFRo
ZSBhcHBsaWNhdGlvbiBjYW4gbW9uaXRvciB0aGlzIHByb3BlcnR5IGFuZCBwcm92aWRlIGEgdmlz
dWFsIGluZGljYXRvciBhbGxvd2luZyB0bworICAgICAqIG9wdGlvbmFsbHkgZGVhY3RpdmF0ZSBv
ciBtdXRlIHRoZSBjYXB0dXJlIGRldmljZSBieSBzZXR0aW5nIHRoaXMgcHJvcGVydHkgcmVzcGVj
dGl2ZWx5IHRvCisgICAgICogQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUgb3IgQFdF
QktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVELgorICAgICAqCisgICAgICogSWYgdGhlIGNh
cHR1cmUgc3RhdGUgb2YgdGhlIGRldmljZSBpcyBzZXQgdG8gQFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX05PTkUgdGhlIHdlYi1wYWdlCisgICAgICogY2FuIHN0aWxsIHJlLXJlcXVlc3QgdGhl
IHBlcm1pc3Npb24gdG8gdGhlIHVzZXIuIFBlcm1pc3Npb24gZGVzaXNpb24gY2FjaGluZyBpcyBs
ZWZ0IHRvIHRoZQorICAgICAqIGFwcGxpY2F0aW9uLgorICAgICAqCisgICAgICogU2luY2U6IDIu
MzQKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVydGllc1tQUk9QX0RJU1BMQVlfQ0FQVFVSRV9TVEFU
RV0gPSBnX3BhcmFtX3NwZWNfZW51bSgKKyAgICAgICAgImRpc3BsYXktY2FwdHVyZS1zdGF0ZSIs
CisgICAgICAgICJEaXNwbGF5IENhcHR1cmUgU3RhdGUiLAorICAgICAgICBfKCJUaGUgY2FwdHVy
ZSBzdGF0ZSBvZiB0aGUgZGlzcGxheSBkZXZpY2UiKSwKKyAgICAgICAgV0VCS0lUX1RZUEVfTUVE
SUFfQ0FQVFVSRV9TVEFURSwKKyAgICAgICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9O
RSwKKyAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSk7CisKICAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnRpZXMoZ09iamVjdENsYXNzLCBOX1BST1BFUlRJRVMsIHNPYmpQcm9w
ZXJ0aWVzKTsKIAogICAgIC8qKgpAQCAtNDc1NCwzICs0ODYxLDE3NCBAQCB2b2lkIHdlYmtpdF93
ZWJfdmlld19zZXRfY29yc19hbGxvd2xpc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3Qg
Z2NoYXIqIGNvbgogCiAgICAgZ2V0UGFnZSh3ZWJWaWV3KS5zZXRDT1JTRGlzYWJsaW5nUGF0dGVy
bnMoV1RGTW92ZShhbGxvd0xpc3RWZWN0b3IpKTsKIH0KKworc3RhdGljIHZvaWQgd2Via2l0V2Vi
Vmlld0NvbmZpZ3VyZU1lZGlhQ2FwdHVyZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kIGNhcHR1cmVLaW5kLCBXZWJLaXRNZWRp
YUNhcHR1cmVTdGF0ZSBjYXB0dXJlU3RhdGUsIGJvb2wgaXNGcm9tRGlzcGxheUNhcHR1cmUgPSBm
YWxzZSkKK3sKKyAgICBhdXRvJiBwYWdlID0gZ2V0UGFnZSh3ZWJWaWV3KTsKKyAgICBhdXRvIG11
dGVkU3RhdGUgPSBwYWdlLm11dGVkU3RhdGVGbGFncygpOworICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIgPSBbd2ViVmlldywgY2FwdHVyZUtpbmQsIGlzRnJv
bURpc3BsYXlDYXB0dXJlXSB7CisgICAgICAgIGlmIChpc0Zyb21EaXNwbGF5Q2FwdHVyZSkgewor
ICAgICAgICAgICAgZ19vYmplY3Rfbm90aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBz
T2JqUHJvcGVydGllc1tQUk9QX0RJU1BMQVlfQ0FQVFVSRV9TVEFURV0pOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoY2FwdHVyZUtpbmQpIHsKKyAgICAg
ICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpbzoK
KyAgICAgICAgICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwg
c09ialByb3BlcnRpZXNbUFJPUF9NSUNST1BIT05FX0NBUFRVUkVfU1RBVEVdKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2Fw
dHVyZUtpbmQ6OlZpZGVvOgorICAgICAgICAgICAgZ19vYmplY3Rfbm90aWZ5X2J5X3BzcGVjKEdf
T0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJvcGVydGllc1tQUk9QX0NBTUVSQV9DQVBUVVJFX1NUQVRF
XSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1
Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpb1ZpZGVvOgorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfTsKKworICAgIHN3aXRjaCAoY2FwdHVyZVN0YXRlKSB7CisgICAgY2Fz
ZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FOgorICAgICAgICBwYWdlLnN0b3BNZWRp
YUNhcHR1cmUoY2FwdHVyZUtpbmQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkU6Cisg
ICAgICAgIHN3aXRjaCAoY2FwdHVyZUtpbmQpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRp
YVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpbzoKKyAgICAgICAgICAgIG11dGVkU3Rh
dGUucmVtb3ZlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGU6OkF1ZGlvQ2FwdHVy
ZUlzTXV0ZWQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6VmlkZW86CisgICAgICAgICAgICBpZiAoaXNG
cm9tRGlzcGxheUNhcHR1cmUpCisgICAgICAgICAgICAgICAgbXV0ZWRTdGF0ZS5yZW1vdmUoV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6U2NyZWVuQ2FwdHVyZUlzTXV0ZWQpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG11dGVkU3RhdGUucmVtb3ZlKFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGU6OlZpZGVvQ2FwdHVyZUlzTXV0ZWQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFDYXB0dXJlS2luZDo6QXVkaW9WaWRlbzoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBwYWdlLnNldE11dGVkKG11dGVkU3RhdGUsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9T
VEFURV9NVVRFRDoKKyAgICAgICAgc3dpdGNoIChjYXB0dXJlS2luZCkgeworICAgICAgICBjYXNl
IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1ZGlvOgorICAgICAg
ICAgICAgbXV0ZWRTdGF0ZS5hZGQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6
QXVkaW9DYXB0dXJlSXNNdXRlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBX
ZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpWaWRlbzoKKyAgICAgICAg
ICAgIGlmIChpc0Zyb21EaXNwbGF5Q2FwdHVyZSkKKyAgICAgICAgICAgICAgICBtdXRlZFN0YXRl
LmFkZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpTY3JlZW5DYXB0dXJlSXNN
dXRlZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbXV0ZWRTdGF0ZS5hZGQo
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6VmlkZW9DYXB0dXJlSXNNdXRlZCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpb1ZpZGVvOgorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIHBhZ2Uuc2V0TXV0ZWQobXV0ZWRTdGF0ZSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzogYSAjV2Vi
S2l0V2ViVmlldworICoKKyAqIEdldCB0aGUgY2FtZXJhIGNhcHR1cmUgc3RhdGUgb2YgYSAjV2Vi
S2l0V2ViVmlldy4KKyAqCisgKiBSZXR1cm5zOiBUaGUgI1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRl
IG9mIHRoZSBjYW1lcmEgZGV2aWNlLiBJZiBXZWJLaXRTZXR0aW5nczplbmFibGUtbWVkaWFzdHJl
YW0KKyAqIGlzIEZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiAlV0VCS0lUX01FRElBX0NB
UFRVUkVfU1RBVEVfTk9ORS4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCitXZWJLaXRNZWRpYUNh
cHR1cmVTdGF0ZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgYXV0byBzdGF0ZSA9IGdldFBhZ2Uod2ViVmlldyku
cmVwb3J0ZWRNZWRpYVN0YXRlKCk7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZTo6SGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNlKQorICAgICAgICBy
ZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOworICAgIGlmIChzdGF0ZSAm
IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6Okhhc011dGVkVmlkZW9DYXB0dXJl
RGV2aWNlKQorICAgICAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQ7
CisgICAgcmV0dXJuIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU7Cit9CisKKy8qKgor
ICogd2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmll
dzogYSAjV2ViS2l0V2ViVmlldworICogQHN0YXRlOiBhICNXZWJLaXRNZWRpYUNhcHR1cmVTdGF0
ZQorICoKKyAqIFNldCB0aGUgY2FtZXJhIGNhcHR1cmUgc3RhdGUgb2YgYSAjV2ViS2l0V2ViVmll
dy4KKyAqCisgKiBJZiBXZWJLaXRTZXR0aW5nczplbmFibGUtbWVkaWFzdHJlYW0gaXMgRkFMU0Us
IHRoaXMgbWV0aG9kIHdpbGwgaGF2ZSBubyB2aXNpYmxlIGVmZmVjdC4KKyAqCisgKiBTaW5jZTog
Mi4zNAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgc3RhdGUpCit7
CisgICAgd2Via2l0V2ViVmlld0NvbmZpZ3VyZU1lZGlhQ2FwdHVyZSh3ZWJWaWV3LCBXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpWaWRlbywgc3RhdGUpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlOgorICog
QHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0IHRoZSBtaWNyb3Bob25lIGNh
cHR1cmUgc3RhdGUgb2YgYSAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBSZXR1cm5zOiBUaGUgI1dl
YktpdE1lZGlhQ2FwdHVyZVN0YXRlIG9mIHRoZSBtaWNyb3Bob25lIGRldmljZS4gSWYgV2ViS2l0
U2V0dGluZ3M6ZW5hYmxlLW1lZGlhc3RyZWFtCisgKiBpcyBGQUxTRSwgdGhpcyBtZXRob2Qgd2ls
bCByZXR1cm4gJVdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUuCisgKgorICogU2luY2U6
IDIuMzQKKyAqLworV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgd2Via2l0X3dlYl92aWV3X2dldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBh
dXRvIHN0YXRlID0gZ2V0UGFnZSh3ZWJWaWV3KS5yZXBvcnRlZE1lZGlhU3RhdGUoKTsKKyAgICBp
ZiAoc3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlOjpIYXNBY3RpdmVB
dWRpb0NhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfTUVESUFfQ0FQVFVSRV9T
VEFURV9BQ1RJVkU7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZTo6SGFzTXV0ZWRBdWRpb0NhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJL
SVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDsKKyAgICByZXR1cm4gV0VCS0lUX01FRElBX0NB
UFRVUkVfU1RBVEVfTk9ORTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3Jv
cGhvbmVfY2FwdHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICog
QHN0YXRlOiBhICNXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQorICoKKyAqIFNldCB0aGUgbWljcm9w
aG9uZSBjYXB0dXJlIHN0YXRlIG9mIGEgI1dlYktpdFdlYlZpZXcuCisgKgorICogSWYgV2ViS2l0
U2V0dGluZ3M6ZW5hYmxlLW1lZGlhc3RyZWFtIGlzIEZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIGhh
dmUgbm8gdmlzaWJsZSBlZmZlY3QuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwordm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZShXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBzdGF0ZSkKK3sKKyAgICB3ZWJraXRXZWJW
aWV3Q29uZmlndXJlTWVkaWFDYXB0dXJlKHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1ZGlvLCBzdGF0ZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktp
dFdlYlZpZXcKKyAqCisgKiBHZXQgdGhlIGRpc3BsYXkgY2FwdHVyZSBzdGF0ZSBvZiBhICNXZWJL
aXRXZWJWaWV3LgorICoKKyAqIFJldHVybnM6IFRoZSAjV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUg
b2YgdGhlIGRpc3BsYXkgZGV2aWNlLiBJZiBXZWJLaXRTZXR0aW5nczplbmFibGUtbWVkaWFzdHJl
YW0KKyAqIGlzIEZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiAlV0VCS0lUX01FRElBX0NB
UFRVUkVfU1RBVEVfTk9ORS4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCitXZWJLaXRNZWRpYUNh
cHR1cmVTdGF0ZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZShXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGF1dG8gc3RhdGUgPSBnZXRQYWdlKHdlYlZpZXcp
LnJlcG9ydGVkTWVkaWFTdGF0ZSgpOworICAgIGlmIChzdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok1lZGlhU3RhdGU6Okhhc0FjdGl2ZURpc3BsYXlDYXB0dXJlRGV2aWNlKQorICAgICAg
ICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOworICAgIGlmIChzdGF0
ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6Okhhc011dGVkRGlzcGxheUNh
cHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9N
VVRFRDsKKyAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORTsKK30KKwor
LyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZToKKyAqIEB3
ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHN0YXRlOiBhICNXZWJLaXRNZWRpYUNhcHR1
cmVTdGF0ZQorICoKKyAqIFNldCB0aGUgZGlzcGxheSBjYXB0dXJlIHN0YXRlIG9mIGEgI1dlYktp
dFdlYlZpZXcuCisgKgorICogSWYgV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLW1lZGlhc3RyZWFtIGlz
IEZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIGhhdmUgbm8gdmlzaWJsZSBlZmZlY3QuCisgKgorICog
U2luY2U6IDIuMzQKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVy
ZV9zdGF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBz
dGF0ZSkKK3sKKyAgICB3ZWJraXRXZWJWaWV3Q29uZmlndXJlTWVkaWFDYXB0dXJlKHdlYlZpZXcs
IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OlZpZGVvLCBzdGF0ZSwg
dHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlld1ByaXZhdGUuaAppbmRleCBkN2E0MzIwNGJlNjkzZjJhN2VmODYyNDBlYWY1
NjdmZTcwMDUyYTJjLi5mYmFiMWFmZTljYTA5ZjVlNmE2NzkzZjUwNjVmMDhmYzc2YmZlZGFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YlZpZXdQcml2YXRlLmgKQEAgLTkxLDYgKzkxLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3SW5zZWN1
cmVDb250ZW50RGV0ZWN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdEluc2VjdXJlQ29udGVudEUK
IGJvb2wgd2Via2l0V2ViVmlld0VtaXRTaG93Tm90aWZpY2F0aW9uKFdlYktpdFdlYlZpZXcqLCBX
ZWJLaXROb3RpZmljYXRpb24qKTsKIHZvaWQgd2Via2l0V2ViVmlld1dlYlByb2Nlc3NUZXJtaW5h
dGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24pOwog
dm9pZCB3ZWJraXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcqKTsK
K3ZvaWQgd2Via2l0V2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlKFdlYktpdFdlYlZp
ZXcqLCBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwogdm9pZCB3ZWJr
aXRXZWJWaWV3U2VsZWN0aW9uRGlkQ2hhbmdlKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0
V2ViVmlld1JlcXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhXZWJLaXRXZWJWaWV3Kiwg
V2ViS2l0OjpJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Jik7CiBX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIHdlYmtpdFdlYlZpZXdHZXRXZWJzaXRlRGF0YU1hbmFn
ZXIoV2ViS2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCmlu
ZGV4IGFkMzgyYjFiYTRkZjM5NDg2MDlkYTJiMmZmZThmNGFjNTJlMGM4ZmQuLjNmOGNlMGMwMDVm
YjZlZWMxMTdhOTk4MmFhYjJiYzlkZjkxNWE2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LmgKQEAgLTY0LDYgKzY0LDkgQEAgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lv
bl9pc19mb3JfYXVkaW9fZGV2aWNlIChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWUKIFdF
QktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3Zp
ZGVvX2RldmljZSAoV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOwog
CitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zv
cl9kaXNwbGF5X2RldmljZSAoV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgKnJlcXVl
c3QpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggOGI0MjA4ZWZjZDc2MTUwMjY3MGMzY2Nl
Y2YzYTBmODhhMTE0OTM2NC4uOTg1NDk1ZDg4NjE3MjlmZWQ5ODUxZjY1Y2VjM2EyNWFlMjhjNTE0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmgKQEAgLTIwNSw2ICsyMDUsMjIgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfV0VCX1BS
T0NFU1NfVEVSTUlOQVRFRF9CWV9BUEkKIH0gV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVh
c29uOwogCisvKioKKyAqIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlOgorICogQFdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX05PTkU6IE1lZGlhIGNhcHR1cmUgaXMgZGlzYWJsZWQuCisgKiBAV0VC
S0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOiBNZWRpYSBjYXB0dXJlIGlzIGFjdGl2ZS4K
KyAqIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDogTWVkaWEgY2FwdHVyZSBpcyBt
dXRlZC4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNhcHR1cmUgc3Rh
dGUgb2YgYSBtZWRpYSBkZXZpY2UuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwordHlwZWRlZiBl
bnVtIHsKKyAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLAorICAgIFdFQktJVF9N
RURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRSwKKyAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9NVVRFRCwKK30gV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU7CisKIHN0cnVjdCBfV2ViS2l0V2Vi
VmlldyB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UgcGFyZW50OwogCkBAIC02MDAsNiArNjE2LDI3
IEBAIHdlYmtpdF93ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZSAgICAgICAg
KFdlYktpdFdlYlZpZXcKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3Rlcm1pbmF0
ZV93ZWJfcHJvY2VzcyAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAq
d2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCit3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dl
Yl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSAgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSAgICBzdGF0ZSk7
CisKK1dFQktJVF9BUEkgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJfdmlld19n
ZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAg
ICAgICAgKndlYl92aWV3KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0
X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAg
ICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlICAgIHN0YXRlKTsKKworV0VCS0lU
X0FQSSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5
X2NhcHR1cmVfc3RhdGUgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9j
YXB0dXJlX3N0YXRlICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92
aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgICAgc3RhdGUpOworCiBHX0VORF9ERUNMUwogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IGI1ZjNlN2Q2MGQyMDJl
MGM2NWI5Nzc4M2VkZTc0ZTA5ZjdhZTc4YjkuLjM2ZDU0MjgxNzQ4N2QyOGUwYjExNWMxMDY4ZTZm
ZTQ1ZmE0MjIyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTk5LDYg
KzE5OSw3IEBAIFdlYktpdFNuYXBzaG90T3B0aW9ucwogV2ViS2l0U25hcHNob3RSZWdpb24KIFdl
YktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbgogV2ViS2l0QXV0b3BsYXlQb2xpY3kKK1dl
YktpdE1lZGlhQ2FwdHVyZVN0YXRlCiAKIDxTVUJTRUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBX
RUJLSVRfRURJVElOR19DT01NQU5EX0NVVApAQCAtMjkzLDYgKzI5NCwxMiBAQCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMKIHdlYmtpdF93ZWJfdmlld19nZXRfaXNfd2ViX3By
b2Nlc3NfcmVzcG9uc2l2ZQogd2Via2l0X3dlYl92aWV3X3Rlcm1pbmF0ZV93ZWJfcHJvY2Vzcwog
d2Via2l0X3dlYl92aWV3X3NldF9jb3JzX2FsbG93bGlzdAord2Via2l0X3dlYl92aWV3X2dldF9j
YW1lcmFfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1
cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKK3dlYmtp
dF93ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2Nh
cHR1cmVfc3RhdGUKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktp
dEphdmFzY3JpcHRSZXN1bHQKQEAgLTc5Niw2ICs4MDMsNyBAQCB3ZWJraXRfbmF2aWdhdGlvbl9h
Y3Rpb25fZ2V0X3R5cGUKIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiB3ZWJraXRf
dXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UKIHdlYmtpdF91c2VyX21l
ZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZQord2Via2l0X3VzZXJfbWVkaWFfcGVy
bWlzc2lvbl9pc19mb3JfZGlzcGxheV9kZXZpY2UKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0LmgKaW5kZXggYmUxNGQzNjM3OThmMGQyNGU1YTk0YWU3MGMxNDcwOTUwMjJj
OTAyNy4uMjNlOTYyOWE5Yjk5ZGYzYjZiZTk3YzNkYzA1ZjQ2NDU1Y2FhODQ4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaApAQCAtNjQsNiArNjQsOSBAQCB3ZWJraXRfdXNl
cl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UgKFdlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZQogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3VzZXJfbWVkaWFfcGVy
bWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlIChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdCAqcmVxdWVzdCk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF91c2VyX21lZGlh
X3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlIChXZWJLaXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdCAqcmVxdWVzdCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCA0M2FmY2Ew
MzBkOTNkNTgxYTFmYzMzNDU5NTRhM2QxZTBkOTk5ZDkxLi43MDhhY2MyZjRjNDE1OGNmMTFmNGEy
NDA3YTU4OGIyYzM5MWEwZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdFdlYlZpZXcuaApAQCAtMTg2LDYgKzE4NiwyMiBAQCB0eXBlZGVmIGVudW0gewog
dHlwZWRlZiB2b2lkICgqIFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2spIChXZWJLaXRXZWJW
aWV3ICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3BvaW50ZXIgICAgICAgdXNlcl9kYXRhKTsKIAorLyoqCisgKiBXZWJLaXRNZWRpYUNh
cHR1cmVTdGF0ZToKKyAqIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FOiBNZWRpYSBj
YXB0dXJlIGlzIGRpc2FibGVkLgorICogQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElW
RTogTWVkaWEgY2FwdHVyZSBpcyBhY3RpdmUuCisgKiBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RB
VEVfTVVURUQ6IE1lZGlhIGNhcHR1cmUgaXMgbXV0ZWQuCisgKgorICogRW51bSB2YWx1ZXMgdXNl
ZCB0byBzcGVjaWZ5IHRoZSBjYXB0dXJlIHN0YXRlIG9mIGEgbWVkaWEgZGV2aWNlLgorICoKKyAq
IFNpbmNlOiAyLjM0CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX01FRElBX0NBUFRV
UkVfU1RBVEVfTk9ORSwKKyAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUsCisg
ICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQsCit9IFdlYktpdE1lZGlhQ2FwdHVy
ZVN0YXRlOworCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIEdPYmplY3QgcGFyZW50Owog
CkBAIC01NzcsNiArNTkzLDI3IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3Nl
dF9jb3JzX2FsbG93bGlzdCAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIGNvbnN0ICAgICAgICphbGxvd2xpc3QpOwogCitX
RUJLSVRfQVBJIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Nh
bWVyYV9jYXB0dXJlX3N0YXRlICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAg
ICp3ZWJfdmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF9jYW1l
cmFfY2FwdHVyZV9zdGF0ZSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAq
d2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSAgICBzdGF0ZSk7CisKK1dFQktJVF9BUEkg
V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9j
YXB0dXJlX3N0YXRlICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3
KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2Fw
dHVyZV9zdGF0ZSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YktpdE1lZGlhQ2FwdHVyZVN0YXRlICAgIHN0YXRlKTsKKworV0VCS0lUX0FQSSBXZWJLaXRNZWRp
YUNhcHR1cmVTdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCitXRUJL
SVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlICAg
ICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TWVkaWFD
YXB0dXJlU3RhdGUgICAgc3RhdGUpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25z
LnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rp
b25zLnR4dAppbmRleCA0YjY2YmI5NWYxMzI2YmQ4MzgzMmI2OGY0MjljMjFlZjY4ODA4ZjM4Li5j
YmRiOGE1NmUyMmQ0ZmFhNjQwZTFhNzA4YzMwMDMxMWJiMTQ4OTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMu
dHh0CkBAIC0xNzMsNiArMTczLDcgQEAgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQKIFdlYktp
dFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbgogV2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFj
awogV2ViS2l0QXV0b3BsYXlQb2xpY3kKK1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCiAKIDxTVUJT
RUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApAQCAt
MjY1LDYgKzI2NiwxMiBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMKIHdl
YmtpdF93ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZQogd2Via2l0X3dlYl92
aWV3X3Rlcm1pbmF0ZV93ZWJfcHJvY2Vzcwogd2Via2l0X3dlYl92aWV3X3NldF9jb3JzX2FsbG93
bGlzdAord2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dl
Yl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19zZXRf
Y2FtZXJhX2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0
dXJlX3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZQord2Vi
a2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUKIAogPFNVQlNFQ1RJT04gV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKQEAgLTgwMCw2ICs4
MDcsNyBAQCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3R5cGUKIFdlYktpdFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0CiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9h
dWRpb19kZXZpY2UKIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2Rl
dmljZQord2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlzcGxheV9kZXZpY2UK
IAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dENsYXNzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNzZhZDRiZTA0YTIyN2QyNmFjOWYxMzdjZjgzYjlmYzkwYTc2MzBhOC4uYjQzZDRmNTk0YTlj
NjM3ZDdjYmRmYTM4MDM3ZWQxNDY2M2Y3YWE0NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTA3LTExICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xpYl0gRXhw
b3NlIEFQSSB0byBhY2Nlc3MvbW9kaWZ5IGNhcHR1cmUgZGV2aWNlcyBzdGF0ZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzkwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBHVEsgTWluaUJyb3dz
ZXIgaXMgbm93IGFibGUgdG8gc2hvdyBtZWRpYSBjYXB0dXJlIGluZGljYXRvcnMsIHRocm91Z2gg
dGhlIFVSSSBlbnRyeS4gQQorICAgICAgICBuZXcgQVBJIHRlc3Qgd2FzIGFkZGVkLCBjaGVja2lu
ZyBzdXBwb3J0IGZvciBnZXREaXNwbGF5TWVkaWEoKS4gQXMgdGhpcyByZXF1aXJlcyB1c2VyCisg
ICAgICAgIGdlc3R1cmUgc3VwcG9ydCwgYSBuZXcgbWluaW1hbCBpbmplY3RlZCBidW5kbGUgd2Fz
IGltcGxlbWVudGVkLCBpbmplY3RpbmcgYHdpbmRvdy5pbnRlcm5hbHNgCisgICAgICAgIGluIHRo
ZSB0ZXN0IHBhZ2UuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jOgor
ICAgICAgICAocGVybWlzc2lvblJlcXVlc3REYXRhTmV3KToKKyAgICAgICAgKHBlcm1pc3Npb25S
ZXF1ZXN0RGF0YUZyZWUpOgorICAgICAgICAoZGVjaWRlUGVybWlzc2lvblJlcXVlc3QpOgorICAg
ICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgICh3ZWJWaWV3
TWVkaWFDYXB0dXJlU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKHdlYlZpZXdVcmlFbnRyeUljb25Q
cmVzc2VkKToKKyAgICAgICAgKGJyb3dzZXJXaW5kb3dTd2l0Y2hUYWIpOgorICAgICAgICAqIFNj
cmlwdHMvcnVuLWd0ay10ZXN0czoKKyAgICAgICAgKEd0a1Rlc3RSdW5uZXIpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgICh0ZXN0V2ViVmlld0F1ZGlvT25s
eVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgICh0ZXN0V2ViVmlld0Rpc3Bs
YXlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNw
cDoKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0YURldmljZUlkSGFzaFNhbHQpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvZ2xpYi9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6
SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVj
dGVkQnVuZGxlQ29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjp3aWxsRGVzdHJveVBhZ2UpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRSZWNl
aXZlTWVzc2FnZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRy
b2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZHVtcFRlc3ROYW1lcyk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmluaXRpYWxpemVUZXN0TmFtZWQp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpyZWdp
c3RlckNyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAg
ICAgICAgKiBmbGF0cGFrL2ZsYXRwYWt1dGlscy5weToKKyAgICAgICAgKFdlYmtpdEZsYXRwYWsu
cnVuX2luX3NhbmRib3gpOgorICAgICAgICAqIGdsaWIvYXBpX3Rlc3RfcnVubmVyLnB5OgorICAg
ICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgIChUZXN0UnVubmVyLl9ydW5fdGVzdF9nbGliKToK
KwogMjAyMS0wNy0xNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TICYgTWFjIEJpZyBTdXIgUmVsZWFzZV0gVHdvIFNPQXV0aG9yaXphdGlvblN1YkZy
YW1lIEFQSSB0ZXN0cyBhcmUgZmFpbGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0Jyb3dzZXJUYWIuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFiLmMKaW5k
ZXggOWIzNjYyYjIyNGE2Njc0YWMyYzI1YmQyOWZlYWE5ODYxMDc4MWU4Mi4uMWM4NGYzMGIyZWE5
NmRkMGMxNjg5MThmOWQ2Mzc3M2I4ZTI1NDhhMyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL0Jyb3dzZXJUYWIuYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclRh
Yi5jCkBAIC0zMDcsMTYgKzMwNywyMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gZGVjaWRlUGVybWlzc2lv
blJlcXVlc3QoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UGVybWlzc2lvbgogICAgICAg
ICB0ZXh0ID0gZ19zdHJkdXAoIkFsbG93IG5vdGlmaWNhdGlvbnMgcmVxdWVzdD8iKTsKICAgICB9
IGVsc2UgaWYgKFdFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0
KSkgewogICAgICAgICB0aXRsZSA9ICJVc2VyTWVkaWEgcmVxdWVzdCI7Ci0gICAgICAgIGdib29s
ZWFuIGlzX2Zvcl9hdWRpb19kZXZpY2UgPSB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lz
X2Zvcl9hdWRpb19kZXZpY2UoV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJl
cXVlc3QpKTsKLSAgICAgICAgZ2Jvb2xlYW4gaXNfZm9yX3ZpZGVvX2RldmljZSA9IHdlYmtpdF91
c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZShXRUJLSVRfVVNFUl9NRURJ
QV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworICAgICAgICBnYm9vbGVhbiBpc0ZvckF1
ZGlvRGV2aWNlID0gd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfYXVkaW9fZGV2
aWNlKFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisgICAg
ICAgIGdib29sZWFuIGlzRm9yVmlkZW9EZXZpY2UgPSB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNz
aW9uX2lzX2Zvcl92aWRlb19kZXZpY2UoV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFV
RVNUKHJlcXVlc3QpKTsKKyAgICAgICAgZ2Jvb2xlYW4gaXNGb3JEaXNwbGF5RGV2aWNlID0gd2Vi
a2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlzcGxheV9kZXZpY2UoV0VCS0lUX1VT
RVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKwogICAgICAgICBjb25zdCBj
aGFyICptZWRpYVR5cGUgPSBOVUxMOwotICAgICAgICBpZiAoaXNfZm9yX2F1ZGlvX2RldmljZSkg
ewotICAgICAgICAgICAgaWYgKGlzX2Zvcl92aWRlb19kZXZpY2UpCisgICAgICAgIGlmIChpc0Zv
ckF1ZGlvRGV2aWNlKSB7CisgICAgICAgICAgICBpZiAoaXNGb3JWaWRlb0RldmljZSkKICAgICAg
ICAgICAgICAgICBtZWRpYVR5cGUgPSAiYXVkaW8vdmlkZW8iOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIG1lZGlhVHlwZSA9ICJhdWRpbyI7Ci0gICAgICAgIH0gZWxzZSBpZiAo
aXNfZm9yX3ZpZGVvX2RldmljZSkKKyAgICAgICAgfSBlbHNlIGlmIChpc0ZvclZpZGVvRGV2aWNl
KQogICAgICAgICAgICAgbWVkaWFUeXBlID0gInZpZGVvIjsKKyAgICAgICAgZWxzZSBpZiAoaXNG
b3JEaXNwbGF5RGV2aWNlKQorICAgICAgICAgICAgbWVkaWFUeXBlID0gImRpc3BsYXkiOwogICAg
ICAgICB0ZXh0ID0gZ19zdHJkdXBfcHJpbnRmKCJBbGxvdyBhY2Nlc3MgdG8gJXMgZGV2aWNlPyIs
IG1lZGlhVHlwZSk7CiAgICAgfSBlbHNlIGlmIChXRUJLSVRfSVNfSU5TVEFMTF9NSVNTSU5HX01F
RElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKSB7CiAgICAgICAgIHRpdGxl
ID0gIk1lZGlhIHBsdWdpbiBtaXNzaW5nIHJlcXVlc3QiOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyV2luZG93LmMKaW5kZXggMDYzZTk0NTY4NDkwY2M3MjE5MzIyMjk4N2I4MDVlN2RmZmY5NGZl
YS4uMTE4Y2MyMDAyMTViMjJkY2YwNzlmMjY2M2MyMDk4YjljNDBmZDM1ZiAxMDA2NDQKLS0tIGEv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC02NDksNiArNjQ5LDcyIEBAIHN0YXRpYyB2b2lk
IGZhdmljb25DaGFuZ2VkKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEdQYXJhbVNwZWMgKnBhcmFt
U3BlYywgQnJvd3NlCiAgICAgdXBkYXRlVXJpRW50cnlJY29uKHdpbmRvdyk7CiB9CiAKK3N0YXRp
YyB2b2lkIHdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZUNoYW5nZWQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgR1BhcmFtU3BlYyogcGFyYW1TcGVjLCBCcm93c2VyV2luZG93KiB3aW5kb3cpCit7Cisg
ICAgY29uc3QgZ2NoYXIqIG5hbWUgPSBnX3BhcmFtX3NwZWNfZ2V0X25hbWUocGFyYW1TcGVjKTsK
KyAgICAvLyBGSVhNRTogdGhlIFVSSSBlbnRyeSBpcyBub3QgZ3JlYXQgc3RvcmFnZSBpbiBjYXNl
IG1vcmUgdGhhbiBvbmUgY2FwdHVyZSBkZXZpY2UgaXMgaW4gdXNlLAorICAgIC8vIGJlY2F1c2Ug
aXQgY2FuIHN0b3JlIG9ubHkgb25lIHNlY29uZGFyeSBpY29uLgorICAgIEd0a0VudHJ5ICplbnRy
eSA9IEdUS19FTlRSWSh3aW5kb3ctPnVyaUVudHJ5KTsKKworICAgIGlmIChnX3N0cl9oYXNfcHJl
Zml4KG5hbWUsICJtaWNyb3Bob25lIikpIHsKKyAgICAgICAgc3dpdGNoICh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSkgeworICAgICAgICBjYXNl
IFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU6CisgICAgICAgICAgICBndGtfZW50cnlf
c2V0X2ljb25fZnJvbV9pY29uX25hbWUoZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwg
TlVMTCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQ
VFVSRV9TVEFURV9NVVRFRDoKKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2lj
b25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCAibWljcm9waG9uZS1zZW5z
aXZpdHktbXV0ZXMtc3ltYm9saWMiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRToKKyAgICAgICAgICAgIGd0a19lbnRy
eV9zZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZ
LCAiYXVkaW8taW5wdXQtbWljcm9waG9uZS1zeW1ib2xpYyIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgobmFtZSwgImNhbWVy
YSIpKSB7CisgICAgICAgIHN3aXRjaCAod2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVy
ZV9zdGF0ZSh3ZWJWaWV3KSkgeworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NU
QVRFX05PTkU6CisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9pY29uX25hbWUo
ZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgTlVMTCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDoKKyAgICAg
ICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZ
X0lDT05fU0VDT05EQVJZLCAiY2FtZXJhLWRpc2FibGVkLXN5bWJvbGljIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkU6
CisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9pY29uX25hbWUoZW50cnksIEdU
S19FTlRSWV9JQ09OX1NFQ09OREFSWSwgImNhbWVyYS13ZWItc3ltYm9saWMiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KG5h
bWUsICJkaXNwbGF5IikpIHsKKyAgICAgICAgc3dpdGNoICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rp
c3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSkgeworICAgICAgICBjYXNlIFdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX05PTkU6CisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJv
bV9pY29uX25hbWUoZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgTlVMTCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9N
VVRFRDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJIGZvdW5kIG5vIHN1aXRhYmxlIGljb24gZm9y
IHRoaXMuCisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9pY29uX25hbWUoZW50
cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgIm1lZGlhLXBsYXliYWNrLXN0b3Atc3ltYm9s
aWMiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBU
VVJFX1NUQVRFX0FDVElWRToKKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2lj
b25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCAidmlkZW8tZGlzcGxheS1z
eW1ib2xpYyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0
YXRpYyB2b2lkIHdlYlZpZXdVcmlFbnRyeUljb25QcmVzc2VkKEd0a0VudHJ5KiBlbnRyeSwgR3Rr
RW50cnlJY29uUG9zaXRpb24gcG9zaXRpb24sIEdka0V2ZW50KiBldmVudCwgQnJvd3NlcldpbmRv
dyogd2luZG93KQoreworICAgIGlmIChwb3NpdGlvbiAhPSBHVEtfRU5UUllfSUNPTl9TRUNPTkRB
UlkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBXaGF0IGFib3V0IGF1ZGlvL3Zp
ZGVvPworICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBicm93c2VyX3RhYl9nZXRfd2ViX3Zp
ZXcod2luZG93LT5hY3RpdmVUYWIpOworICAgIHN3aXRjaCAod2Via2l0X3dlYl92aWV3X2dldF9k
aXNwbGF5X2NhcHR1cmVfc3RhdGUod2ViVmlldykpIHsKKyAgICBjYXNlIFdFQktJVF9NRURJQV9D
QVBUVVJFX1NUQVRFX05PTkU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX01FRElB
X0NBUFRVUkVfU1RBVEVfTVVURUQ6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxh
eV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElW
RSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVf
QUNUSVZFOgorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0
ZSh3ZWJWaWV3LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKwogc3RhdGljIHZvaWQgd2ViVmlld0lzTG9hZGluZ0NoYW5nZWQoV2Vi
S2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcGFyYW1TcGVjLCBCcm93c2VyV2luZG93
ICp3aW5kb3cpCiB7CiAgICAgZ2Jvb2xlYW4gaXNMb2FkaW5nID0gd2Via2l0X3dlYl92aWV3X2lz
X2xvYWRpbmcod2ViVmlldyk7CkBAIC0xMTgwLDYgKzEyNDYsMTIgQEAgc3RhdGljIHZvaWQgYnJv
d3NlcldpbmRvd1N3aXRjaFRhYihHdGtOb3RlYm9vayAqbm90ZWJvb2ssIEJyb3dzZXJUYWIgKnRh
YiwgZ3VpbnQKICNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiAgICAgZ19zaWduYWxf
Y29ubmVjdCh3ZWJWaWV3LCAic2Nyb2xsLWV2ZW50IiwgR19DQUxMQkFDSyhzY3JvbGxFdmVudENh
bGxiYWNrKSwgd2luZG93KTsKICNlbmRpZgorICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywg
Im5vdGlmeTo6Y2FtZXJhLWNhcHR1cmUtc3RhdGUiLCBHX0NBTExCQUNLKHdlYlZpZXdNZWRpYUNh
cHR1cmVTdGF0ZUNoYW5nZWQpLCB3aW5kb3cpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmll
dywgIm5vdGlmeTo6bWljcm9waG9uZS1jYXB0dXJlLXN0YXRlIiwgR19DQUxMQkFDSyh3ZWJWaWV3
TWVkaWFDYXB0dXJlU3RhdGVDaGFuZ2VkKSwgd2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHdlYlZpZXcsICJub3RpZnk6OmRpc3BsYXktY2FwdHVyZS1zdGF0ZSIsIEdfQ0FMTEJBQ0sod2Vi
Vmlld01lZGlhQ2FwdHVyZVN0YXRlQ2hhbmdlZCksIHdpbmRvdyk7CisKKyAgICBnX29iamVjdF9z
ZXQod2luZG93LT51cmlFbnRyeSwgInNlY29uZGFyeS1pY29uLWFjdGl2YXRhYmxlIiwgVFJVRSwg
TlVMTCk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPnVyaUVudHJ5LCAiaWNvbi1wcmVz
cyIsIEdfQ0FMTEJBQ0sod2ViVmlld1VyaUVudHJ5SWNvblByZXNzZWQpLCB3aW5kb3cpOwogCiAg
ICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0ICpiYWNrRm9yd2FyZGxpc3QgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0KHdlYlZpZXcpOwogICAgIGJyb3dzZXJXaW5kb3dVcGRh
dGVOYXZpZ2F0aW9uTWVudSh3aW5kb3csIGJhY2tGb3J3YXJkbGlzdCk7CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMgYi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMK
aW5kZXggZTIzNDdhZmVlMjZhYzgzOTViZGMxODk3M2Y2OWM4ZjZjZmNiM2U3OS4uM2Y5MWE2MmQ2
NmUzODMxYjdmZjY5NDc0MDRhYTBkOTFhZWVkNWZiZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9ydW4tZ3RrLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwpAQCAtMzQs
NyArMzQsOCBAQCBpbXBvcnQgZmxhdHBha3V0aWxzCiBmcm9tIGFwaV90ZXN0X3J1bm5lciBpbXBv
cnQgVGVzdFJ1bm5lciwgYWRkX29wdGlvbnMKIAogY2xhc3MgR3RrVGVzdFJ1bm5lcihUZXN0UnVu
bmVyKToKLSAgICBUZXN0UnVubmVyLlRFU1RfVEFSR0VUUyA9IFsgIldlYktpdDJHdGsiLCAiVGVz
dFdlYktpdCIsICJUZXN0SlNDIiwgIlRlc3RXVEYiLCAiVGVzdFdlYkNvcmUiLCAiVGVzdEphdmFT
Y3JpcHRDb3JlIiBdCisgICAgVEVTVF9UQVJHRVRTID0gWyAiV2ViS2l0Mkd0ayIsICJUZXN0V2Vi
S2l0IiwgIlRlc3RKU0MiLCAiVGVzdFdURiIsICJUZXN0V2ViQ29yZSIsICJUZXN0SmF2YVNjcmlw
dENvcmUiIF0KKyAgICBURVNUU19SRVFVSVJJTkdfSU5URVJOQUxfSU5KRUNURURfQlVORExFID0g
WyAiVGVzdFVJQ2xpZW50IiBdCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgdGVz
dHM9W10pOgogICAgICAgICBzdXBlcihHdGtUZXN0UnVubmVyLCBzZWxmKS5fX2luaXRfXygiZ3Rr
Iiwgb3B0aW9ucywgdGVzdHMpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCA2ODVk
NWVlMDZhNWUxZTA3OTU5YTBiYTE4ZWUwNWVkMDAyZjE5NWI2Li43Y2JiNzc2NmZhNzAwNDA4ZWMw
ODZkMjJmYTI4OGVkOTQzYTQ0YzZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAg
LTM3MCw2ICszNzAsMjYgQEAgaWYgKEVOQUJMRV9XRUJLSVQpCiAgICAgICAgICAgICBtYWMvUGxh
dGZvcm1VdGlsaXRpZXNNYWMubW0KICAgICAgICAgKQogICAgIGVuZGlmICgpCisKKyAgICBpZiAo
UE9SVCBTVFJFUVVBTCAiR1RLIiBPUiBQT1JUIFNUUkVRVUFMICJXUEUiKQorICAgICAgICBzZXQo
VGVzdFdlYktpdEFQSUludGVybmFsSW5qZWN0ZWRCdW5kbGVfU09VUkNFUworICAgICAgICAgICAg
SW5qZWN0ZWRCdW5kbGVNYWluLmNwcAorCisgICAgICAgICAgICBnbGliL0luamVjdGVkQnVuZGxl
Q29udHJvbGxlci5jcHAKKyAgICAgICAgKQorICAgICAgICBhZGRfbGlicmFyeShUZXN0V2ViS2l0
QVBJSW50ZXJuYWxJbmplY3RlZEJ1bmRsZSBTSEFSRUQgJHtUZXN0V2ViS2l0QVBJSW50ZXJuYWxJ
bmplY3RlZEJ1bmRsZV9TT1VSQ0VTfSkKKyAgICAgICAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlv
bnMoVGVzdFdlYktpdEFQSUludGVybmFsSW5qZWN0ZWRCdW5kbGUgUFJJVkFURSBCVUlMRElOR19U
ZXN0V2ViS2l0KQorICAgICAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhUZXN0V2ViS2l0
QVBJSW50ZXJuYWxJbmplY3RlZEJ1bmRsZSBQUklWQVRFICR7VGVzdFdlYktpdF9QUklWQVRFX0lO
Q0xVREVfRElSRUNUT1JJRVN9KQorICAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoVGVzdFdl
YktpdEFQSUludGVybmFsSW5qZWN0ZWRCdW5kbGUgUFJJVkFURSBXZWJLaXQ6OldlYktpdCBXZWJL
aXQ6Omd0ZXN0IFdlYktpdDo6V2ViQ29yZVRlc3RTdXBwb3J0KQorCisgICAgICAgIGlmIChDT01Q
SUxFUl9JU19HQ0NfT1JfQ0xBTkcpCisgICAgICAgICAgICBXRUJLSVRfQUREX1RBUkdFVF9DWFhf
RkxBR1MoVGVzdFdlYktpdEFQSUludGVybmFsSW5qZWN0ZWRCdW5kbGUgLVduby1kYW5nbGluZy1l
bHNlCisgICAgICAgICAgICAgIC1Xbm8tc2lnbi1jb21wYXJlCisgICAgICAgICAgICAgIC1Xbm8t
dW5kZWYKKyAgICAgICAgICAgICAgLVduby11bnVzZWQtcGFyYW1ldGVyKQorICAgICAgICBlbmRp
ZiAoKQorICAgIGVuZGlmICgpCisKICAgICBhZGRfbGlicmFyeShUZXN0V2ViS2l0QVBJSW5qZWN0
ZWRCdW5kbGUgU0hBUkVEICR7VGVzdFdlYktpdEFQSUluamVjdGVkQnVuZGxlX1NPVVJDRVN9KQog
CiAgICAgdGFyZ2V0X2NvbXBpbGVfZGVmaW5pdGlvbnMoVGVzdFdlYktpdEFQSUluamVjdGVkQnVu
ZGxlIFBSSVZBVEUgQlVJTERJTkdfVGVzdFdlYktpdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHAKaW5kZXggYWJhMzIxYzlj
YWU2MmE3ZTAwZjAzMzIxZTQ0Y2UwYzc1Y2UyZGY4OC4uNjRjMjg0NzA1NmE4YjQyMDVlYmM2ZDYy
MTgxYTAxZmFmODJlMmM1MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHAKQEAgLTI0MCw2ICsyNDAsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCogdXNlck1lZGlh
UmVxdWVzdCA9IFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KTsK
ICAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9p
c19mb3JfYXVkaW9fZGV2aWNlKHVzZXJNZWRpYVJlcXVlc3QpID09IHRlc3QtPm1fZXhwZWN0ZWRB
dWRpb01lZGlhKTsKICAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3VzZXJfbWVkaWFf
cGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlKHVzZXJNZWRpYVJlcXVlc3QpID09IHRlc3Qt
Pm1fZXhwZWN0ZWRWaWRlb01lZGlhKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0
X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlzcGxheV9kZXZpY2UodXNlck1lZGlhUmVx
dWVzdCkgPT0gdGVzdC0+bV9leHBlY3RlZERpc3BsYXlNZWRpYSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAodGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cykKQEAgLTI2Myw2ICsyNjQs
NyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV92ZXJpZnlNZWRpYVR5cGVzKGZhbHNlKQogICAgICAg
ICAsIG1fZXhwZWN0ZWRBdWRpb01lZGlhKGZhbHNlKQogICAgICAgICAsIG1fZXhwZWN0ZWRWaWRl
b01lZGlhKGZhbHNlKQorICAgICAgICAsIG1fZXhwZWN0ZWREaXNwbGF5TWVkaWEoZmFsc2UpCiAg
ICAgICAgICwgbV9tb3VzZVRhcmdldE1vZGlmaWVycygwKQogICAgIHsKICAgICAgICAgd2Via2l0
X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1fd2ViVmlldyksIFRSVUUpOwpAQCAtNDE1LDYg
KzQxNyw3IEBAIHB1YmxpYzoKICAgICBnYm9vbGVhbiBtX3ZlcmlmeU1lZGlhVHlwZXM7CiAgICAg
Z2Jvb2xlYW4gbV9leHBlY3RlZEF1ZGlvTWVkaWE7CiAgICAgZ2Jvb2xlYW4gbV9leHBlY3RlZFZp
ZGVvTWVkaWE7CisgICAgZ2Jvb2xlYW4gbV9leHBlY3RlZERpc3BsYXlNZWRpYTsKICAgICBXaW5k
b3dQcm9wZXJ0aWVzIG1fd2luZG93UHJvcGVydGllczsKICAgICBIYXNoU2V0PFdURjo6U3RyaW5n
PiBtX3dpbmRvd1Byb3BlcnRpZXNDaGFuZ2VkOwogICAgIEdSZWZQdHI8V2ViS2l0SGl0VGVzdFJl
c3VsdD4gbV9tb3VzZVRhcmdldEhpdFRlc3RSZXN1bHQ7CkBAIC0xMDAxLDYgKzEwMDQsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVu
dFRlc3QqIHRlc3QsIGdjb25zdHBvaQogICAgIHRlc3QtPm1fdmVyaWZ5TWVkaWFUeXBlcyA9IFRS
VUU7CiAgICAgdGVzdC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEgPSBUUlVFOwogICAgIHRlc3QtPm1f
ZXhwZWN0ZWRWaWRlb01lZGlhID0gVFJVRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkRGlzcGxheU1l
ZGlhID0gRkFMU0U7CiAKICAgICAvLyBUZXN0IGRlbnlpbmcgYSBwZXJtaXNzaW9uIHJlcXVlc3Qu
CiAgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9IGZhbHNlOwpAQCAtMTA0MSw2
ICsxMDQ1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LAogICAgIHRlc3QtPm1fdmVyaWZ5TWVk
aWFUeXBlcyA9IFRSVUU7CiAgICAgdGVzdC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEgPSBUUlVFOwog
ICAgIHRlc3QtPm1fZXhwZWN0ZWRWaWRlb01lZGlhID0gRkFMU0U7CisgICAgdGVzdC0+bV9leHBl
Y3RlZERpc3BsYXlNZWRpYSA9IEZBTFNFOwogCiAgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlz
c2lvbiByZXF1ZXN0LgogICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxz
ZTsKQEAgLTEwNTEsNiArMTA1Niw0OSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1ZGlvT25s
eVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsCiAgICAgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfbW9ja19jYXB0dXJlX2RldmljZXMoc2V0dGluZ3MsIEZB
TFNFKTsKICAgICB3ZWJraXRTZXR0aW5nc1NldE1lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29u
bmVjdGlvbihzZXR0aW5ncywgVFJVRSk7CiB9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RGlz
cGxheVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92
aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIGdib29sZWFuIGVuYWJsZWQg
PSB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MpOworICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgVFJVRSk7
CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbW9ja19jYXB0dXJlX2RldmljZXMoc2V0
dGluZ3MsIFRSVUUpOworICAgIHdlYmtpdFNldHRpbmdzU2V0TWVkaWFDYXB0dXJlUmVxdWlyZXNT
ZWN1cmVDb25uZWN0aW9uKHNldHRpbmdzLCBGQUxTRSk7CisKKyAgICB0ZXN0LT5zaG93SW5XaW5k
b3coKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGlzcGxheU1lZGlhUmVxdWVzdEhUTUwgPSAi
PGh0bWw+IgorICAgICAgICAiICA8c2NyaXB0PiIKKyAgICAgICAgIiAgZnVuY3Rpb24gcnVuVGVz
dCgpIgorICAgICAgICAiICB7IgorICAgICAgICAiICAgIHdpbmRvdy5pbnRlcm5hbHMud2l0aFVz
ZXJHZXN0dXJlKCgpID0+IHsiCisgICAgICAgICIgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldERpc3BsYXlNZWRpYSgpIgorICAgICAgICAiICAgICAgICAudGhlbigoc3RyZWFtKSA9PiB7
IGRvY3VtZW50LnRpdGxlID0gXCJPS1wiOyB9KSIKKyAgICAgICAgIiAgICAgICAgLmNhdGNoKChl
KSA9PiB7IGRvY3VtZW50LnRpdGxlID0gZS5uYW1lOyB9KTsiCisgICAgICAgICIgICAgfSk7Igor
ICAgICAgICAiICB9IgorICAgICAgICAiICA8L3NjcmlwdD4iCisgICAgICAgICIgIDxib2R5IG9u
bG9hZD0ncnVuVGVzdCgpOyc+PC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4iOworCisgICAgdGVz
dC0+bV92ZXJpZnlNZWRpYVR5cGVzID0gVFJVRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkQXVkaW9N
ZWRpYSA9IEZBTFNFOworICAgIHRlc3QtPm1fZXhwZWN0ZWRWaWRlb01lZGlhID0gRkFMU0U7Cisg
ICAgdGVzdC0+bV9leHBlY3RlZERpc3BsYXlNZWRpYSA9IFRSVUU7CisKKyAgICAvLyBUZXN0IGRl
bnlpbmcgYSBwZXJtaXNzaW9uIHJlcXVlc3QuCisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25S
ZXF1ZXN0cyA9IGZhbHNlOworICAgIHRlc3QtPmxvYWRIdG1sKGRpc3BsYXlNZWRpYVJlcXVlc3RI
VE1MLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiTm90QWxs
b3dlZEVycm9yIik7CisKKyAgICAvLyBUZXN0IGFsbG93aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0
LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSB0cnVlOworICAgIHRlc3Qt
PmxvYWRIdG1sKGRpc3BsYXlNZWRpYVJlcXVlc3RIVE1MLCBudWxscHRyKTsKKyAgICB0ZXN0LT53
YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiT0siKTsKKworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRf
ZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgZW5hYmxlZCk7CisgICAgd2Via2l0X3NldHRp
bmdzX3NldF9lbmFibGVfbW9ja19jYXB0dXJlX2RldmljZXMoc2V0dGluZ3MsIEZBTFNFKTsKKyAg
ICB3ZWJraXRTZXR0aW5nc1NldE1lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbihz
ZXR0aW5ncywgVFJVRSk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2lm
IEVOQUJMRShQT0lOVEVSX0xPQ0spCkBAIC0xMzQzLDYgKzEzOTEsNyBAQCB2b2lkIGJlZm9yZUFs
bCgpCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAidXNlcm1lZGlhLWVu
dW1lcmF0ZWRldmljZXMtcGVybWlzc2lvbi1jaGVjayIsIHRlc3RXZWJWaWV3VXNlck1lZGlhRW51
bWVyYXRlRGV2aWNlc1Blcm1pc3Npb25DaGVjayk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAidXNlcm1lZGlhLXBlcm1pc3Npb24tcmVxdWVzdHMiLCB0ZXN0V2ViVmll
d1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAiYXVkaW8tdXNlcm1lZGlhLXBlcm1pc3Npb24tcmVxdWVzdCIsIHRlc3RX
ZWJWaWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKKyAgICBVSUNsaWVu
dFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkaXNwbGF5LXVzZXJtZWRpYS1wZXJtaXNzaW9u
LXJlcXVlc3QiLCB0ZXN0V2ViVmlld0Rpc3BsYXlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMp
OwogI2VuZGlmCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBtb3VzZSBjbGljayBpbiBXUEUuCiAj
aWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0lu
amVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvSW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzkwZWNiMDA5ZDk0ZmE5MWVl
MmJmYjgyYTlmZGMyYmY2YTQ5ODA5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIxIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIFdLX0hBVkVfQ19TUEkKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZUNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3B0aW9u
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmVUZXN0U3VwcG9ydC9XZWJDb3JlVGVzdFN1cHBvcnQuaD4K
KyNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVGcmFtZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0J1
bmRsZVBhZ2UuaD4KKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxhc3NlcnQuaD4K
KworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIm
IEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgSW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyJiBzaGFyZWQgPSAqbmV3IEluamVjdGVkQnVuZGxlQ29udHJv
bGxlcjsKKyAgICByZXR1cm4gc2hhcmVkOworfQorCitJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6
OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcigpCit7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVD
b250cm9sbGVyOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRp
YWxpemF0aW9uVXNlckRhdGEpCit7CisgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CisgICAgbV9i
dW5kbGUgPSBidW5kbGU7CisKKyAgICBXS0J1bmRsZUNsaWVudFYxIGNsaWVudCA9IHsKKyAgICAg
ICAgeyAwLCB0aGlzIH0sCisgICAgICAgIGRpZENyZWF0ZVBhZ2UsCisgICAgICAgIHdpbGxEZXN0
cm95UGFnZSwKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2UsCisg
ICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlCisgICAgfTsKKyAgICBXS0J1bmRsZVNldENs
aWVudChtX2J1bmRsZS5nZXQoKSwgJmNsaWVudC5iYXNlKTsKK30KKwordm9pZCBJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXI6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xs
ZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisKKyAgICBXS0J1bmRsZVBhZ2VM
b2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7CisgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAs
IHNpemVvZihsb2FkZXJDbGllbnQpKTsKKworICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24g
PSAwOworICAgIGxvYWRlckNsaWVudC5iYXNlLmNsaWVudEluZm8gPSBzZWxmOworICAgIGxvYWRl
ckNsaWVudC5kaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lID0gW10oV0tCdW5kbGVQYWdlUmVm
LCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkLCBj
b25zdCB2b2lkKikgeworICAgICAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IFdLQnVu
ZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dEZvcldvcmxkKGZyYW1lLCB3b3JsZCk7CisgICAg
ICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6aW5qZWN0SW50ZXJuYWxzT2JqZWN0KGNvbnRleHQpOwor
ICAgIH07CisKKyAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2Fk
ZXJDbGllbnQuYmFzZSk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjp3aWxs
RGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZiwgY29uc3Qgdm9pZCopCit7
Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZShX
S0J1bmRsZVJlZiwgV0tTdHJpbmdSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7Cit9CisK
K3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShX
S0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiwgV0tUeXBlUmVmLCBjb25z
dCB2b2lkKikKK3sKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmR1bXBUZXN0
TmFtZXMoKQoreworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6aW5pdGlhbGl6
ZVRlc3ROYW1lZChXS0J1bmRsZVJlZiwgY29uc3Qgc3RkOjpzdHJpbmcmLCBXS1R5cGVSZWYpCit7
Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpyZWdpc3RlckNyZWF0ZUluamVj
dGVkQnVuZGxlVGVzdEZ1bmN0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiwgQ3JlYXRlSW5qZWN0ZWRC
dW5kbGVUZXN0RnVuY3Rpb24pCit7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVy
OjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworICAgIEpTQzo6Q29uZmlnOjpjb25maWd1cmVGb3JU
ZXN0aW5nKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weSBiL1Rvb2xzL2ZsYXRwYWsv
ZmxhdHBha3V0aWxzLnB5CmluZGV4IDFjYjI5ODJlY2JhMGUyMzllYjIwY2FhNDM0NDhkMjdkYWVh
NWNlYjAuLmI0ZDE5ZjA5MDdlMTIyODY0MjUxYTA0Y2EzYmY2YjNhZmJkMTkxMTEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CisrKyBiL1Rvb2xzL2ZsYXRwYWsvZmxh
dHBha3V0aWxzLnB5CkBAIC04MDEsOCArODAxLDEwIEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAg
ICAgICAgICAgICAiSlNDIiwKICAgICAgICAgICAgICJNRVNBIiwKICAgICAgICAgICAgICJMSUJH
TCIsCisgICAgICAgICAgICAiUElQRVdJUkUiLAogICAgICAgICAgICAgIlJVU1QiLAogICAgICAg
ICAgICAgIlNDQ0FDSEUiLAorICAgICAgICAgICAgIlNQQSIsCiAgICAgICAgICAgICAiV0FZTEFO
RCIsCiAgICAgICAgICAgICAiV0VCS0lUIiwKICAgICAgICAgICAgICJXRUJLSVQyIiwKZGlmZiAt
LWdpdCBhL1Rvb2xzL2dsaWIvYXBpX3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvZ2xpYi9hcGlfdGVz
dF9ydW5uZXIucHkKaW5kZXggNDkzYmVhZDUyNjA2NDE0ZDFkN2YwMTQ3M2QwMWNlMTBlNDUwODkx
OC4uZjUyMWMyZjI3Y2E0OWJmNjZiZGI1OGNiYzlmNGU5YjU1OTFmMDZlMCAxMDA3NTUKLS0tIGEv
VG9vbHMvZ2xpYi9hcGlfdGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvZ2xpYi9hcGlfdGVzdF9y
dW5uZXIucHkKQEAgLTQyLDYgKzQyLDcgQEAgZWxzZToKIAogY2xhc3MgVGVzdFJ1bm5lcihvYmpl
Y3QpOgogICAgIFRFU1RfVEFSR0VUUyA9IFtdCisgICAgVEVTVFNfUkVRVUlSSU5HX0lOVEVSTkFM
X0lOSkVDVEVEX0JVTkRMRSA9IFtdCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0
aW9ucywgdGVzdHM9W10pOgogICAgICAgICBpZiBsZW4ob3B0aW9ucy5zdWJ0ZXN0cykgPiAwIGFu
ZCBsZW4odGVzdHMpICE9IDE6CkBAIC0xNjgsNyArMTY5LDEyIEBAIGNsYXNzIFRlc3RSdW5uZXIo
b2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlvbnMuaXNfc2xvdyh0
ZXN0LCBzdWJ0ZXN0KQogCiAgICAgICAgIHJ1bm5lciA9IEdMaWJUZXN0UnVubmVyKHRlc3RfcHJv
Z3JhbSwgdGltZW91dCwgaXNfc2xvd190ZXN0LCB0aW1lb3V0ICogMTApCi0gICAgICAgIHJldHVy
biBydW5uZXIucnVuKHN1YnRlc3RzPXN1YnRlc3RzLCBza2lwcGVkPXNraXBwZWRfdGVzdF9jYXNl
cywgZW52PXNlbGYuX3Rlc3RfZW52KQorCisgICAgICAgIGVudiA9IHNlbGYuX3Rlc3RfZW52LmNv
cHkoKQorICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHRlc3RfcHJvZ3JhbSkgaW4gc2VsZi5U
RVNUU19SRVFVSVJJTkdfSU5URVJOQUxfSU5KRUNURURfQlVORExFOgorICAgICAgICAgICAgZW52
WyJURVNUX1dFQktJVF9BUElfV0VCS0lUMl9JTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUiXSA9ICJs
aWJUZXN0V2ViS2l0QVBJSW50ZXJuYWxJbmplY3RlZEJ1bmRsZS5zbyIKKworICAgICAgICByZXR1
cm4gcnVubmVyLnJ1bihzdWJ0ZXN0cz1zdWJ0ZXN0cywgc2tpcHBlZD1za2lwcGVkX3Rlc3RfY2Fz
ZXMsIGVudj1lbnYpCiAKICAgICBkZWYgX3J1bl90ZXN0X3F0KHNlbGYsIHRlc3RfcHJvZ3JhbSk6
CiAgICAgICAgIGVudiA9IHNlbGYuX3Rlc3RfZW52Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433587</attachid>
            <date>2021-07-15 09:05:50 -0700</date>
            <delta_ts>2021-07-15 11:52:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227902-20210715090548.patch</filename>
            <type>text/plain</type>
            <size>50827</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzMTE2NzUyZDAzMjE2YTdm
NTJkODQxYzNmYTdlNDM3NzkyOTQ2MDUuLjZjNTgxOGMwNDQ1MTI1OGNmYWM1NmNlYjM3YmJkMTdj
ZTdhMDBiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDctMTEgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBFeHBvc2Ug
QVBJIHRvIGFjY2Vzcy9tb2RpZnkgY2FwdHVyZSBkZXZpY2VzIHN0YXRlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3OTAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBHTGliIEFQ
SSAoYW5kIGNvcnJlc3BvbmRpbmcgR09iamVjdCBwcm9wZXJ0aWVzKToKKworICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlCisgICAgICAgIHdlYmtpdF93ZWJf
dmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlCisgICAgICAgIHdlYmtpdF93ZWJfdmll
d19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dldF9kaXNw
bGF5X2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2Nh
cHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3Jf
ZGlzcGxheV9kZXZpY2UKKworICAgICAgICBUaGlzIGNhbiBiZSB1c2VmdWwgaW4gV2ViIGJyb3dz
ZXJzIHdpbGxpbmcgdG8gaW5kaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUgY2FwdHVyZSBkZXZpY2Vz
CisgICAgICAgIGN1cnJlbnRseSBpbiB1c2UgYnkgdGhlIFdlYlZpZXcuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6CisgICAgICAg
ICh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAg
ICAod2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TWVkaWFDYXB0
dXJlU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAod2Via2l0V2ViVmlld1NldFByb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q29uZmlndXJlTWVkaWFD
YXB0dXJlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3Rh
dGUpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3Qu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dDoKKwogMjAyMS0w
Ny0xNSAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxleG1AZ25vbWUub3JnPgogCiAgICAgICAg
IFtHVEtdIENhbid0IGNsaWNrIGxpbmtzIHdpdGggdG91Y2hzY3JlZW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCAwYWZk
OTdiZTQ2NGNlYjYwOWYxYzQzYWE3MjBmM2I0YzI5Nzc3OGJkLi44MzY3YjIzOGYyMmNmOGE0NTQ3
ZjhlZjdlYzc2N2JlYmIwYTdiMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0zNTIsNiArMzUyLDExIEBAIHByaXZh
dGU6CiAgICAgICAgIHdlYmtpdFdlYlZpZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQobV93ZWJWaWV3
KTsKICAgICB9CiAKKyAgICB2b2lkIG1lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlRmxhZ3MpIGZpbmFsCisg
ICAgeworICAgICAgICB3ZWJraXRXZWJWaWV3TWVkaWFDYXB0dXJlU3RhdGVEaWRDaGFuZ2UobV93
ZWJWaWV3LCBtZWRpYVN0YXRlRmxhZ3MpOworICAgIH0KKwogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCiAgICAgdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soV2ViUGFnZVByb3h5KiBwYWdlKSBmaW5h
bAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAppbmRleCBm
MDhiZmMxMTBmOGEwODcxNjFmZTJhZjkyMTgxMGQxOTgxYjg0ZTU1Li4zZDk5N2EzMmY4ZWNjM2Vm
MDg5NmI3N2Q0YTgzYmFhOGYwNThhNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QuY3BwCkBAIC0xMzYsNiArMTM2LDIwIEBAIGdib29sZWFuIHdlYmtpdF91c2VyX21l
ZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZShXZWJLaXRVc2VyTWVkaWFQZXJtaXNz
CiAgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnJlcXVlc3QtPnJlcXVpcmVzVmlkZW9DYXB0dXJl
KCk7CiB9CiAKKy8qKgorICogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlz
cGxheV9kZXZpY2U6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiBhY2Nlc3MgdG8gYSBkaXNwbGF5IGRldmlj
ZSB3YXMgcmVxdWVzdGVkLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK2dib29sZWFuIHdlYmtp
dF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlKFdlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHJlcXVlc3QtPnByaXYtPnJlcXVlc3QsIEZBTFNFKTsKKyAgICByZXR1cm4gcmVxdWVzdC0+
cHJpdi0+cmVxdWVzdC0+cmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpOworfQorCiBzdGF0aWMgdm9p
ZCB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEdldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMp
CiB7CiAgICAgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QgPSBXRUJL
SVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1Qob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXgg
NmRkOWYyMGU0ZmYyYmRhMDE4NGQwNjQ1MzAxY2VmMjJlNDdkY2YxNS4uMzJlYzkxNGQ3Njc5OWY5
NDVkZGM2OTljNjEzZTMxY2ExNjQxNjExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM4NSwxMyArMzg1LDIx
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmpl
Y3QpCiB7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9jb250ZXh0X3BhcmVudF9jbGFz
cyktPmNvbnN0cnVjdGVkKG9iamVjdCk7CiAKLSAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1bmRsZUZp
bGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0ZWRCdW5kbGVEaXJlY3RvcnkoKSwgSU5KRUNU
RURfQlVORExFX0ZJTEVOQU1FLCBudWxscHRyKSk7CisgICAgY29uc3QgY2hhciogYnVuZGxlRmls
ZW5hbWUgPSBJTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUU7CisjaWYgRU5BQkxFKERFVkVMT1BFUl9N
T0RFKQorICAgIGNvbnN0IGNoYXIqIG92ZXJyaWRkZW5CdW5kbGVGaWxlbmFtZSA9IGdldGVudigi
VEVTVF9XRUJLSVRfQVBJX1dFQktJVDJfSU5KRUNURURfQlVORExFX0ZJTEVOQU1FIik7CisgICAg
aWYgKG92ZXJyaWRkZW5CdW5kbGVGaWxlbmFtZSkKKyAgICAgICAgYnVuZGxlRmlsZW5hbWUgPSBv
dmVycmlkZGVuQnVuZGxlRmlsZW5hbWU7CisjZW5kaWYKKworICAgIEdVbmlxdWVQdHI8Y2hhcj4g
YnVuZGxlQWJzb2x1dGVGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKGluamVjdGVkQnVuZGxlRGly
ZWN0b3J5KCksIGJ1bmRsZUZpbGVuYW1lLCBudWxscHRyKSk7CiAKICAgICBXZWJLaXRXZWJDb250
ZXh0KiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dFQl9DT05URVhUKG9iamVjdCk7CiAgICAgV2ViS2l0
V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3ZWJDb250ZXh0LT5wcml2OwogCisKICAgICBBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotICAgIGNvbmZpZ3VyYXRp
b24uc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBjb25maWd1cmF0aW9u
LnNldEluamVjdGVkQnVuZGxlUGF0aChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGJ1bmRsZUFic29sdXRlRmlsZW5hbWUuZ2V0KCkpKTsKICAgICBjb25maWd1
cmF0aW9uLnNldFVzZXNXZWJQcm9jZXNzQ2FjaGUodHJ1ZSk7CiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgIGNvbmZpZ3VyYXRpb24uc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKHByaXYtPnBzb25F
bmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2ViVmlldy5jcHAKaW5kZXggZDkzZWFiOTNhNzliYmUzMDA1YTUxMDIyNDc5OGZmOTk1NmM5YWUx
OS4uODZlMjA2NzA1ZWQxYTY0MzIwM2YzZTBjNTMzNjc1ZDMzNGMyMzVkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIw
Nyw2ICsyMDcsMTAgQEAgZW51bSB7CiAgICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTLAogICAgIFBS
T1BfSVNfV0VCX1BST0NFU1NfUkVTUE9OU0lWRSwKIAorICAgIFBST1BfQ0FNRVJBX0NBUFRVUkVf
U1RBVEUsCisgICAgUFJPUF9NSUNST1BIT05FX0NBUFRVUkVfU1RBVEUsCisgICAgUFJPUF9ESVNQ
TEFZX0NBUFRVUkVfU1RBVEUsCisKICAgICBOX1BST1BFUlRJRVMsCiB9OwogCkBAIC0zNTIsNiAr
MzU2LDE2IEBAIHZvaWQgd2Via2l0V2ViVmlld0lzUGxheWluZ0F1ZGlvQ2hhbmdlZChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3
ZWJWaWV3KSwgc09ialByb3BlcnRpZXNbUFJPUF9JU19QTEFZSU5HX0FVRElPXSk7CiB9CiAKK3Zv
aWQgd2Via2l0V2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0
YXRlRmxhZ3MpCit7CisgICAgaWYgKG1lZGlhU3RhdGVGbGFncy5jb250YWluc0FueShXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpBdWRpb0NhcHR1cmVNYXNrKSkKKyAgICAgICAgZ19vYmplY3Rfbm90
aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJvcGVydGllc1tQUk9QX01JQ1JP
UEhPTkVfQ0FQVFVSRV9TVEFURV0pOworICAgIGlmIChtZWRpYVN0YXRlRmxhZ3MuY29udGFpbnNB
bnkoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6VmlkZW9DYXB0dXJlTWFzaykpCisgICAgICAgIGdf
b2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNb
UFJPUF9DQU1FUkFfQ0FQVFVSRV9TVEFURV0pOworICAgIGlmIChtZWRpYVN0YXRlRmxhZ3MuY29u
dGFpbnNBbnkoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6RGlzcGxheUNhcHR1cmVNYXNrKSkKKyAg
ICAgICAgZ19vYmplY3Rfbm90aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJv
cGVydGllc1tQUk9QX0RJU1BMQVlfQ0FQVFVSRV9TVEFURV0pOworfQorCiBjbGFzcyBQYWdlTG9h
ZFN0YXRlT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtODcyLDYgKzg4NiwxNSBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZQogICAgIGNhc2UgUFJPUF9XRUJTSVRFX1BPTElDSUVT
OgogICAgICAgICB3ZWJWaWV3LT5wcml2LT53ZWJzaXRlUG9saWNpZXMgPSBzdGF0aWNfY2FzdDxX
ZWJLaXRXZWJzaXRlUG9saWNpZXMqPihnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NBTUVSQV9DQVBUVVJFX1NUQVRFOgorICAgICAgICB3
ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcsIHN0YXRpY19j
YXN0PFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlPihnX3ZhbHVlX2dldF9lbnVtKHZhbHVlKSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUlDUk9QSE9ORV9DQVBUVVJFX1NUQVRFOgor
ICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSh3ZWJW
aWV3LCBzdGF0aWNfY2FzdDxXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZT4oZ192YWx1ZV9nZXRfZW51
bSh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RJU1BMQVlfQ0FQVFVS
RV9TVEFURToKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3Rh
dGUod2ViVmlldywgc3RhdGljX2Nhc3Q8V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU+KGdfdmFsdWVf
Z2V0X2VudW0odmFsdWUpKSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1T
cGVjKTsKICAgICB9CkBAIC05NDMsNiArOTY2LDE1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1
CiAgICAgY2FzZSBQUk9QX0lTX1dFQl9QUk9DRVNTX1JFU1BPTlNJVkU6CiAgICAgICAgIGdfdmFs
dWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3Nf
cmVzcG9uc2l2ZSh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9DQU1F
UkFfQ0FQVFVSRV9TVEFURToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1ZSwgd2Via2l0
X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9NSUNST1BIT05FX0NBUFRVUkVfU1RBVEU6CisgICAgICAgIGdf
dmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0
dXJlX3N0YXRlKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RJU1BM
QVlfQ0FQVFVSRV9TVEFURToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1ZSwgd2Via2l0
X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUod2ViVmlldykpOworICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtMTMzNyw2ICsxMzY5
LDgxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZp
ZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgVFJVRSwKICAgICAgICAgICAgIFdF
QktJVF9QQVJBTV9SRUFEQUJMRSk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OmNh
bWVyYS1jYXB0dXJlLXN0YXRlOgorICAgICAqCisgICAgICogQ2FwdHVyZSBzdGF0ZSBvZiB0aGUg
Y2FtZXJhIGRldmljZS4gV2hlbmV2ZXIgdGhlIHVzZXIgZ3JhbnRzIGEgbWVkaWEtcmVxdWVzdCBz
ZW50IGJ5IHRoZSB3ZWIKKyAgICAgKiBwYWdlLCByZXF1ZXN0aW5nIHZpZGVvIGNhcHR1cmUgY2Fw
YWJpbGl0aWVzIChgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVvOgor
ICAgICAqIHRydWV9KWApIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBzZXQgdG8gQFdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX0FDVElWRS4KKyAgICAgKgorICAgICAqIFRoZSBhcHBsaWNhdGlvbiBj
YW4gbW9uaXRvciB0aGlzIHByb3BlcnR5IGFuZCBwcm92aWRlIGEgdmlzdWFsIGluZGljYXRvciBh
bGxvd2luZyB0byBvcHRpb25hbGx5CisgICAgICogZGVhY3RpdmF0ZSBvciBtdXRlIHRoZSBjYXB0
dXJlIGRldmljZSBieSBzZXR0aW5nIHRoaXMgcHJvcGVydHkgcmVzcGVjdGl2ZWx5IHRvCisgICAg
ICogQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUgb3IgQFdFQktJVF9NRURJQV9DQVBU
VVJFX1NUQVRFX01VVEVELgorICAgICAqCisgICAgICogSWYgdGhlIGNhcHR1cmUgc3RhdGUgb2Yg
dGhlIGRldmljZSBpcyBzZXQgdG8gQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUgdGhl
IHdlYi1wYWdlCisgICAgICogY2FuIHN0aWxsIHJlLXJlcXVlc3QgdGhlIHBlcm1pc3Npb24gdG8g
dGhlIHVzZXIuIFBlcm1pc3Npb24gZGVzaXNpb24gY2FjaGluZyBpcyBsZWZ0IHRvIHRoZQorICAg
ICAqIGFwcGxpY2F0aW9uLgorICAgICAqCisgICAgICogU2luY2U6IDIuMzQKKyAgICAgKi8KKyAg
ICBzT2JqUHJvcGVydGllc1tQUk9QX0NBTUVSQV9DQVBUVVJFX1NUQVRFXSA9IGdfcGFyYW1fc3Bl
Y19lbnVtKAorICAgICAgICAiY2FtZXJhLWNhcHR1cmUtc3RhdGUiLAorICAgICAgICAiQ2FtZXJh
IENhcHR1cmUgU3RhdGUiLAorICAgICAgICBfKCJUaGUgY2FwdHVyZSBzdGF0ZSBvZiB0aGUgY2Ft
ZXJhIGRldmljZSIpLAorICAgICAgICBXRUJLSVRfVFlQRV9NRURJQV9DQVBUVVJFX1NUQVRFLAor
ICAgICAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLAorICAgICAgICBXRUJLSVRf
UEFSQU1fUkVBRFdSSVRFKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6bWljcm9w
aG9uZS1jYXB0dXJlLXN0YXRlOgorICAgICAqCisgICAgICogQ2FwdHVyZSBzdGF0ZSBvZiB0aGUg
bWljcm9waG9uZSBkZXZpY2UuIFdoZW5ldmVyIHRoZSB1c2VyIGdyYW50cyBhIG1lZGlhLXJlcXVl
c3Qgc2VudCBieSB0aGUgd2ViCisgICAgICogcGFnZSwgcmVxdWVzdGluZyBhdWRpbyBjYXB0dXJl
IGNhcGFiaWxpdGllcyAoYG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRp
bzoKKyAgICAgKiB0cnVlfSlgKSB0aGlzIHByb3BlcnR5IHdpbGwgYmUgc2V0IHRvIEBXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUuCisgICAgICoKKyAgICAgKiBUaGUgYXBwbGljYXRp
b24gY2FuIG1vbml0b3IgdGhpcyBwcm9wZXJ0eSBhbmQgcHJvdmlkZSBhIHZpc3VhbCBpbmRpY2F0
b3IgYWxsb3dpbmcgdG8KKyAgICAgKiBvcHRpb25hbGx5IGRlYWN0aXZhdGUgb3IgbXV0ZSB0aGUg
Y2FwdHVyZSBkZXZpY2UgYnkgc2V0dGluZyB0aGlzIHByb3BlcnR5IHJlc3BlY3RpdmVseSB0bwor
ICAgICAqIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIG9yIEBXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9NVVRFRC4KKyAgICAgKgorICAgICAqIElmIHRoZSBjYXB0dXJlIHN0YXRl
IG9mIHRoZSBkZXZpY2UgaXMgc2V0IHRvIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05F
IHRoZSB3ZWItcGFnZQorICAgICAqIGNhbiBzdGlsbCByZS1yZXF1ZXN0IHRoZSBwZXJtaXNzaW9u
IHRvIHRoZSB1c2VyLiBQZXJtaXNzaW9uIGRlc2lzaW9uIGNhY2hpbmcgaXMgbGVmdCB0byB0aGUK
KyAgICAgKiBhcHBsaWNhdGlvbi4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjM0CisgICAgICov
CisgICAgc09ialByb3BlcnRpZXNbUFJPUF9NSUNST1BIT05FX0NBUFRVUkVfU1RBVEVdID0gZ19w
YXJhbV9zcGVjX2VudW0oCisgICAgICAgICJtaWNyb3Bob25lLWNhcHR1cmUtc3RhdGUiLAorICAg
ICAgICAiTWljcm9waG9uZSBDYXB0dXJlIFN0YXRlIiwKKyAgICAgICAgXygiVGhlIGNhcHR1cmUg
c3RhdGUgb2YgdGhlIG1pY3JvcGhvbmUgZGV2aWNlIiksCisgICAgICAgIFdFQktJVF9UWVBFX01F
RElBX0NBUFRVUkVfU1RBVEUsCisgICAgICAgIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05P
TkUsCisgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpOworCisgICAgLyoqCisgICAgICog
V2ViS2l0V2ViVmlldzpkaXNwbGF5LWNhcHR1cmUtc3RhdGU6CisgICAgICoKKyAgICAgKiBDYXB0
dXJlIHN0YXRlIG9mIHRoZSBkaXNwbGF5IGRldmljZS4gV2hlbmV2ZXIgdGhlIHVzZXIgZ3JhbnRz
IGEgbWVkaWEtcmVxdWVzdCBzZW50IGJ5IHRoZSB3ZWIKKyAgICAgKiBwYWdlLCByZXF1ZXN0aW5n
IHNjcmVlbmNhc3RpbmcgY2FwYWJpbGl0aWVzIChgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRE
aXNwbGF5TWVkaWEoKSB0aGlzCisgICAgICogcHJvcGVydHkgd2lsbCBiZSBzZXQgdG8gQFdFQktJ
VF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRS4KKyAgICAgKgorICAgICAqIFRoZSBhcHBsaWNh
dGlvbiBjYW4gbW9uaXRvciB0aGlzIHByb3BlcnR5IGFuZCBwcm92aWRlIGEgdmlzdWFsIGluZGlj
YXRvciBhbGxvd2luZyB0bworICAgICAqIG9wdGlvbmFsbHkgZGVhY3RpdmF0ZSBvciBtdXRlIHRo
ZSBjYXB0dXJlIGRldmljZSBieSBzZXR0aW5nIHRoaXMgcHJvcGVydHkgcmVzcGVjdGl2ZWx5IHRv
CisgICAgICogQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUgb3IgQFdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX01VVEVELgorICAgICAqCisgICAgICogSWYgdGhlIGNhcHR1cmUgc3Rh
dGUgb2YgdGhlIGRldmljZSBpcyBzZXQgdG8gQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05P
TkUgdGhlIHdlYi1wYWdlCisgICAgICogY2FuIHN0aWxsIHJlLXJlcXVlc3QgdGhlIHBlcm1pc3Np
b24gdG8gdGhlIHVzZXIuIFBlcm1pc3Npb24gZGVzaXNpb24gY2FjaGluZyBpcyBsZWZ0IHRvIHRo
ZQorICAgICAqIGFwcGxpY2F0aW9uLgorICAgICAqCisgICAgICogU2luY2U6IDIuMzQKKyAgICAg
Ki8KKyAgICBzT2JqUHJvcGVydGllc1tQUk9QX0RJU1BMQVlfQ0FQVFVSRV9TVEFURV0gPSBnX3Bh
cmFtX3NwZWNfZW51bSgKKyAgICAgICAgImRpc3BsYXktY2FwdHVyZS1zdGF0ZSIsCisgICAgICAg
ICJEaXNwbGF5IENhcHR1cmUgU3RhdGUiLAorICAgICAgICBfKCJUaGUgY2FwdHVyZSBzdGF0ZSBv
ZiB0aGUgZGlzcGxheSBkZXZpY2UiKSwKKyAgICAgICAgV0VCS0lUX1RZUEVfTUVESUFfQ0FQVFVS
RV9TVEFURSwKKyAgICAgICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSwKKyAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSk7CisKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnRpZXMoZ09iamVjdENsYXNzLCBOX1BST1BFUlRJRVMsIHNPYmpQcm9wZXJ0aWVzKTsK
IAogICAgIC8qKgpAQCAtNDc1NCwzICs0ODYxLDE3NCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19z
ZXRfY29yc19hbGxvd2xpc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIGNv
bgogCiAgICAgZ2V0UGFnZSh3ZWJWaWV3KS5zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92
ZShhbGxvd0xpc3RWZWN0b3IpKTsKIH0KKworc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NvbmZp
Z3VyZU1lZGlhQ2FwdHVyZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kIGNhcHR1cmVLaW5kLCBXZWJLaXRNZWRpYUNhcHR1cmVT
dGF0ZSBjYXB0dXJlU3RhdGUsIGJvb2wgaXNGcm9tRGlzcGxheUNhcHR1cmUgPSBmYWxzZSkKK3sK
KyAgICBhdXRvJiBwYWdlID0gZ2V0UGFnZSh3ZWJWaWV3KTsKKyAgICBhdXRvIG11dGVkU3RhdGUg
PSBwYWdlLm11dGVkU3RhdGVGbGFncygpOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4g
Y29tcGxldGlvbkhhbmRsZXIgPSBbd2ViVmlldywgY2FwdHVyZUtpbmQsIGlzRnJvbURpc3BsYXlD
YXB0dXJlXSB7CisgICAgICAgIGlmIChpc0Zyb21EaXNwbGF5Q2FwdHVyZSkgeworICAgICAgICAg
ICAgZ19vYmplY3Rfbm90aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJvcGVy
dGllc1tQUk9QX0RJU1BMQVlfQ0FQVFVSRV9TVEFURV0pOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoY2FwdHVyZUtpbmQpIHsKKyAgICAgICAgY2FzZSBX
ZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpbzoKKyAgICAgICAg
ICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3Bl
cnRpZXNbUFJPUF9NSUNST1BIT05FX0NBUFRVUkVfU1RBVEVdKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6
OlZpZGVvOgorICAgICAgICAgICAgZ19vYmplY3Rfbm90aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdl
YlZpZXcpLCBzT2JqUHJvcGVydGllc1tQUk9QX0NBTUVSQV9DQVBUVVJFX1NUQVRFXSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRp
YUNhcHR1cmVLaW5kOjpBdWRpb1ZpZGVvOgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfTsKKworICAgIHN3aXRjaCAoY2FwdHVyZVN0YXRlKSB7CisgICAgY2FzZSBXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9OT05FOgorICAgICAgICBwYWdlLnN0b3BNZWRpYUNhcHR1cmUo
Y2FwdHVyZUtpbmQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkU6CisgICAgICAgIHN3
aXRjaCAoY2FwdHVyZUtpbmQpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpbzoKKyAgICAgICAgICAgIG11dGVkU3RhdGUucmVtb3Zl
KFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGU6OkF1ZGlvQ2FwdHVyZUlzTXV0ZWQp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6TWVkaWFDYXB0dXJlS2luZDo6VmlkZW86CisgICAgICAgICAgICBpZiAoaXNGcm9tRGlzcGxh
eUNhcHR1cmUpCisgICAgICAgICAgICAgICAgbXV0ZWRTdGF0ZS5yZW1vdmUoV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6U2NyZWVuQ2FwdHVyZUlzTXV0ZWQpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG11dGVkU3RhdGUucmVtb3ZlKFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Ok11dGVkU3RhdGU6OlZpZGVvQ2FwdHVyZUlzTXV0ZWQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJl
S2luZDo6QXVkaW9WaWRlbzoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBwYWdlLnNldE11dGVkKG11dGVkU3RhdGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRF
RDoKKyAgICAgICAgc3dpdGNoIChjYXB0dXJlS2luZCkgeworICAgICAgICBjYXNlIFdlYkNvcmU6
Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1ZGlvOgorICAgICAgICAgICAgbXV0
ZWRTdGF0ZS5hZGQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6QXVkaW9DYXB0
dXJlSXNNdXRlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpWaWRlbzoKKyAgICAgICAgICAgIGlmIChp
c0Zyb21EaXNwbGF5Q2FwdHVyZSkKKyAgICAgICAgICAgICAgICBtdXRlZFN0YXRlLmFkZChXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpTY3JlZW5DYXB0dXJlSXNNdXRlZCk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbXV0ZWRTdGF0ZS5hZGQoV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6VmlkZW9DYXB0dXJlSXNNdXRlZCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNh
cHR1cmVLaW5kOjpBdWRpb1ZpZGVvOgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHBhZ2Uuc2V0TXV0ZWQobXV0ZWRTdGF0ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3
X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmll
dworICoKKyAqIEdldCB0aGUgY2FtZXJhIGNhcHR1cmUgc3RhdGUgb2YgYSAjV2ViS2l0V2ViVmll
dy4KKyAqCisgKiBSZXR1cm5zOiBUaGUgI1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIG9mIHRoZSBj
YW1lcmEgZGV2aWNlLiBJZiBXZWJLaXRTZXR0aW5nczplbmFibGUtbWVkaWFzdHJlYW0KKyAqIGlz
IEZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiAlV0VCS0lUX01FRElBX0NBUFRVUkVfU1RB
VEVfTk9ORS4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCitXZWJLaXRNZWRpYUNhcHR1cmVTdGF0
ZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCit7CisgICAgYXV0byBzdGF0ZSA9IGdldFBhZ2Uod2ViVmlldykucmVwb3J0ZWRN
ZWRpYVN0YXRlKCk7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZTo6SGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2aWNlKQorICAgICAgICByZXR1cm4gV0VC
S0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOworICAgIGlmIChzdGF0ZSAmIFdlYkNvcmU6
Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6Okhhc011dGVkVmlkZW9DYXB0dXJlRGV2aWNlKQor
ICAgICAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQ7CisgICAgcmV0
dXJuIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU7Cit9CisKKy8qKgorICogd2Via2l0
X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzogYSAjV2Vi
S2l0V2ViVmlldworICogQHN0YXRlOiBhICNXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQorICoKKyAq
IFNldCB0aGUgY2FtZXJhIGNhcHR1cmUgc3RhdGUgb2YgYSAjV2ViS2l0V2ViVmlldy4KKyAqCisg
KiBJZiBXZWJLaXRTZXR0aW5nczplbmFibGUtbWVkaWFzdHJlYW0gaXMgRkFMU0UsIHRoaXMgbWV0
aG9kIHdpbGwgaGF2ZSBubyB2aXNpYmxlIGVmZmVjdC4KKyAqCisgKiBTaW5jZTogMi4zNAorICov
Cit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgc3RhdGUpCit7CisgICAgd2Vi
a2l0V2ViVmlld0NvbmZpZ3VyZU1lZGlhQ2FwdHVyZSh3ZWJWaWV3LCBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpWaWRlbywgc3RhdGUpOworfQorCisvKioKKyAqIHdl
YmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlOgorICogQHdlYl92aWV3
OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0IHRoZSBtaWNyb3Bob25lIGNhcHR1cmUgc3Rh
dGUgb2YgYSAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBSZXR1cm5zOiBUaGUgI1dlYktpdE1lZGlh
Q2FwdHVyZVN0YXRlIG9mIHRoZSBtaWNyb3Bob25lIGRldmljZS4gSWYgV2ViS2l0U2V0dGluZ3M6
ZW5hYmxlLW1lZGlhc3RyZWFtCisgKiBpcyBGQUxTRSwgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4g
JVdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUuCisgKgorICogU2luY2U6IDIuMzQKKyAq
LworV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgd2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25l
X2NhcHR1cmVfc3RhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBhdXRvIHN0YXRl
ID0gZ2V0UGFnZSh3ZWJWaWV3KS5yZXBvcnRlZE1lZGlhU3RhdGUoKTsKKyAgICBpZiAoc3RhdGUg
JiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlOjpIYXNBY3RpdmVBdWRpb0NhcHR1
cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJ
VkU7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZTo6
SGFzTXV0ZWRBdWRpb0NhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9NVVRFRDsKKyAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RB
VEVfTk9ORTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2Fw
dHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHN0YXRlOiBh
ICNXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQorICoKKyAqIFNldCB0aGUgbWljcm9waG9uZSBjYXB0
dXJlIHN0YXRlIG9mIGEgI1dlYktpdFdlYlZpZXcuCisgKgorICogSWYgV2ViS2l0U2V0dGluZ3M6
ZW5hYmxlLW1lZGlhc3RyZWFtIGlzIEZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIGhhdmUgbm8gdmlz
aWJsZSBlZmZlY3QuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwordm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBX
ZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBzdGF0ZSkKK3sKKyAgICB3ZWJraXRXZWJWaWV3Q29uZmln
dXJlTWVkaWFDYXB0dXJlKHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2Fw
dHVyZUtpbmQ6OkF1ZGlvLCBzdGF0ZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dl
dF9kaXNwbGF5X2NhcHR1cmVfc3RhdGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcK
KyAqCisgKiBHZXQgdGhlIGRpc3BsYXkgY2FwdHVyZSBzdGF0ZSBvZiBhICNXZWJLaXRXZWJWaWV3
LgorICoKKyAqIFJldHVybnM6IFRoZSAjV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgb2YgdGhlIGRp
c3BsYXkgZGV2aWNlLiBJZiBXZWJLaXRTZXR0aW5nczplbmFibGUtbWVkaWFzdHJlYW0KKyAqIGlz
IEZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiAlV0VCS0lUX01FRElBX0NBUFRVUkVfU1RB
VEVfTk9ORS4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCitXZWJLaXRNZWRpYUNhcHR1cmVTdGF0
ZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQoreworICAgIGF1dG8gc3RhdGUgPSBnZXRQYWdlKHdlYlZpZXcpLnJlcG9ydGVk
TWVkaWFTdGF0ZSgpOworICAgIGlmIChzdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1l
ZGlhU3RhdGU6Okhhc0FjdGl2ZURpc3BsYXlDYXB0dXJlRGV2aWNlKQorICAgICAgICByZXR1cm4g
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOworICAgIGlmIChzdGF0ZSAmIFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6Okhhc011dGVkRGlzcGxheUNhcHR1cmVEZXZp
Y2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDsKKyAg
ICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORTsKK30KKworLyoqCisgKiB3
ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzog
YSAjV2ViS2l0V2ViVmlldworICogQHN0YXRlOiBhICNXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQor
ICoKKyAqIFNldCB0aGUgZGlzcGxheSBjYXB0dXJlIHN0YXRlIG9mIGEgI1dlYktpdFdlYlZpZXcu
CisgKgorICogSWYgV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLW1lZGlhc3RyZWFtIGlzIEZBTFNFLCB0
aGlzIG1ldGhvZCB3aWxsIGhhdmUgbm8gdmlzaWJsZSBlZmZlY3QuCisgKgorICogU2luY2U6IDIu
MzQKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZShX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBzdGF0ZSkKK3sK
KyAgICB3ZWJraXRXZWJWaWV3Q29uZmlndXJlTWVkaWFDYXB0dXJlKHdlYlZpZXcsIFdlYkNvcmU6
Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OlZpZGVvLCBzdGF0ZSwgdHJ1ZSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlld1ByaXZhdGUuaAppbmRleCBkN2E0MzIwNGJlNjkzZjJhN2VmODYyNDBlYWY1NjdmZTcwMDUy
YTJjLi5mYmFiMWFmZTljYTA5ZjVlNmE2NzkzZjUwNjVmMDhmYzc2YmZlZGFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2
YXRlLmgKQEAgLTkxLDYgKzkxLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3SW5zZWN1cmVDb250ZW50
RGV0ZWN0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdEluc2VjdXJlQ29udGVudEUKIGJvb2wgd2Vi
a2l0V2ViVmlld0VtaXRTaG93Tm90aWZpY2F0aW9uKFdlYktpdFdlYlZpZXcqLCBXZWJLaXROb3Rp
ZmljYXRpb24qKTsKIHZvaWQgd2Via2l0V2ViVmlld1dlYlByb2Nlc3NUZXJtaW5hdGVkKFdlYktp
dFdlYlZpZXcqLCBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24pOwogdm9pZCB3ZWJr
aXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcqKTsKK3ZvaWQgd2Vi
a2l0V2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlKFdlYktpdFdlYlZpZXcqLCBXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwogdm9pZCB3ZWJraXRXZWJWaWV3
U2VsZWN0aW9uRGlkQ2hhbmdlKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld1Jl
cXVlc3RJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Jik7CiBXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIqIHdlYmtpdFdlYlZpZXdHZXRXZWJzaXRlRGF0YU1hbmFnZXIoV2ViS2l0
V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCmluZGV4IGFkMzgy
YjFiYTRkZjM5NDg2MDlkYTJiMmZmZThmNGFjNTJlMGM4ZmQuLjNmOGNlMGMwMDVmYjZlZWMxMTdh
OTk4MmFhYjJiYzlkZjkxNWE2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
LmgKQEAgLTY0LDYgKzY0LDkgQEAgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3Jf
YXVkaW9fZGV2aWNlIChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWUKIFdFQktJVF9BUEkg
Z2Jvb2xlYW4KIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2Rldmlj
ZSAoV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOwogCitXRUJLSVRf
QVBJIGdib29sZWFuCit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5
X2RldmljZSAoV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOworCiBH
X0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggOGI0MjA4ZWZjZDc2MTUwMjY3MGMzY2NlY2YzYTBmODhh
MTE0OTM2NC4uOTg1NDk1ZDg4NjE3MjlmZWQ5ODUxZjY1Y2VjM2EyNWFlMjhjNTE0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTIw
NSw2ICsyMDUsMjIgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfV0VCX1BST0NFU1NfVEVS
TUlOQVRFRF9CWV9BUEkKIH0gV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOwogCisv
KioKKyAqIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlOgorICogQFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX05PTkU6IE1lZGlhIGNhcHR1cmUgaXMgZGlzYWJsZWQuCisgKiBAV0VCS0lUX01FRElB
X0NBUFRVUkVfU1RBVEVfQUNUSVZFOiBNZWRpYSBjYXB0dXJlIGlzIGFjdGl2ZS4KKyAqIEBXRUJL
SVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDogTWVkaWEgY2FwdHVyZSBpcyBtdXRlZC4KKyAq
CisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNhcHR1cmUgc3RhdGUgb2YgYSBt
ZWRpYSBkZXZpY2UuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAg
ICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLAorICAgIFdFQktJVF9NRURJQV9DQVBU
VVJFX1NUQVRFX0FDVElWRSwKKyAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRCwK
K30gV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAg
ICAgV2ViS2l0V2ViVmlld0Jhc2UgcGFyZW50OwogCkBAIC02MDAsNiArNjE2LDI3IEBAIHdlYmtp
dF93ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZSAgICAgICAgKFdlYktpdFdl
YlZpZXcKIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3Rlcm1pbmF0ZV93ZWJfcHJv
Y2VzcyAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OwogCitXRUJLSVRfQVBJIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCit3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICp3ZWJfdmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3Nl
dF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSAgICBzdGF0ZSk7CisKK1dFQktJ
VF9BUEkgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfbWljcm9w
aG9uZV9jYXB0dXJlX3N0YXRlICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndl
Yl92aWV3KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhv
bmVfY2FwdHVyZV9zdGF0ZSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJf
dmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlICAgIHN0YXRlKTsKKworV0VCS0lUX0FQSSBXZWJL
aXRNZWRpYUNhcHR1cmVTdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVf
c3RhdGUgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwor
CitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0
YXRlICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
TWVkaWFDYXB0dXJlU3RhdGUgICAgc3RhdGUpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IGI1ZjNlN2Q2MGQyMDJlMGM2NWI5Nzc4
M2VkZTc0ZTA5ZjdhZTc4YjkuLjM2ZDU0MjgxNzQ4N2QyOGUwYjExNWMxMDY4ZTZmZTQ1ZmE0MjIy
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJr
aXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTk5LDYgKzE5OSw3IEBA
IFdlYktpdFNuYXBzaG90T3B0aW9ucwogV2ViS2l0U25hcHNob3RSZWdpb24KIFdlYktpdFdlYlBy
b2Nlc3NUZXJtaW5hdGlvblJlYXNvbgogV2ViS2l0QXV0b3BsYXlQb2xpY3kKK1dlYktpdE1lZGlh
Q2FwdHVyZVN0YXRlCiAKIDxTVUJTRUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJ
VElOR19DT01NQU5EX0NVVApAQCAtMjkzLDYgKzI5NCwxMiBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3dlYnNpdGVfcG9saWNpZXMKIHdlYmtpdF93ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVz
cG9uc2l2ZQogd2Via2l0X3dlYl92aWV3X3Rlcm1pbmF0ZV93ZWJfcHJvY2Vzcwogd2Via2l0X3dl
Yl92aWV3X3NldF9jb3JzX2FsbG93bGlzdAord2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2Fw
dHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUK
K3dlYmtpdF93ZWJfdmlld19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmll
d19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3Bs
YXlfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3Rh
dGUKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQKQEAgLTc5Niw2ICs4MDMsNyBAQCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0
X3R5cGUKIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiB3ZWJraXRfdXNlcl9tZWRp
YV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UKIHdlYmtpdF91c2VyX21lZGlhX3Blcm1p
c3Npb25faXNfZm9yX3ZpZGVvX2RldmljZQord2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9p
c19mb3JfZGlzcGxheV9kZXZpY2UKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0LmgKaW5kZXggYmUxNGQzNjM3OThmMGQyNGU1YTk0YWU3MGMxNDcwOTUwMjJjOTAyNy4uMjNl
OTYyOWE5Yjk5ZGYzYjZiZTk3YzNkYzA1ZjQ2NDU1Y2FhODQ4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuaApAQCAtNjQsNiArNjQsOSBAQCB3ZWJraXRfdXNlcl9tZWRpYV9w
ZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UgKFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZQogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9p
c19mb3JfdmlkZW9fZGV2aWNlIChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAqcmVx
dWVzdCk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Np
b25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlIChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dCAqcmVxdWVzdCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCA0M2FmY2EwMzBkOTNkNTgx
YTFmYzMzNDU5NTRhM2QxZTBkOTk5ZDkxLi43MDhhY2MyZjRjNDE1OGNmMTFmNGEyNDA3YTU4OGIy
YzM5MWEwZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFdlYlZpZXcuaApAQCAtMTg2LDYgKzE4NiwyMiBAQCB0eXBlZGVmIGVudW0gewogdHlwZWRlZiB2
b2lkICgqIFdlYktpdEZyYW1lRGlzcGxheWVkQ2FsbGJhY2spIChXZWJLaXRXZWJWaWV3ICp3ZWJf
dmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Bv
aW50ZXIgICAgICAgdXNlcl9kYXRhKTsKIAorLyoqCisgKiBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0
ZToKKyAqIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FOiBNZWRpYSBjYXB0dXJlIGlz
IGRpc2FibGVkLgorICogQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRTogTWVkaWEg
Y2FwdHVyZSBpcyBhY3RpdmUuCisgKiBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQ6
IE1lZGlhIGNhcHR1cmUgaXMgbXV0ZWQuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVj
aWZ5IHRoZSBjYXB0dXJlIHN0YXRlIG9mIGEgbWVkaWEgZGV2aWNlLgorICoKKyAqIFNpbmNlOiAy
LjM0CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVf
Tk9ORSwKKyAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUsCisgICAgV0VCS0lU
X01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQsCit9IFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlOwor
CiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewogICAgIEdPYmplY3QgcGFyZW50OwogCkBAIC01Nzcs
NiArNTkzLDI3IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3NldF9jb3JzX2Fs
bG93bGlzdCAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2Vi
X3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnY2hhciAqIGNvbnN0ICAgICAgICphbGxvd2xpc3QpOwogCitXRUJLSVRfQVBJ
IFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0
dXJlX3N0YXRlICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmll
dyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVy
ZV9zdGF0ZSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSAgICBzdGF0ZSk7CisKK1dFQktJVF9BUEkgV2ViS2l0TWVk
aWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0
YXRlICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0
ZSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE1lZGlh
Q2FwdHVyZVN0YXRlICAgIHN0YXRlKTsKKworV0VCS0lUX0FQSSBXZWJLaXRNZWRpYUNhcHR1cmVT
dGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TWVkaWFDYXB0dXJlU3Rh
dGUgICAgc3RhdGUpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dApp
bmRleCA0YjY2YmI5NWYxMzI2YmQ4MzgzMmI2OGY0MjljMjFlZjY4ODA4ZjM4Li5jYmRiOGE1NmUy
MmQ0ZmFhNjQwZTFhNzA4YzMwMDMxMWJiMTQ4OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0x
NzMsNiArMTczLDcgQEAgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQKIFdlYktpdFdlYlByb2Nl
c3NUZXJtaW5hdGlvblJlYXNvbgogV2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFjawogV2ViS2l0
QXV0b3BsYXlQb2xpY3kKK1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCiAKIDxTVUJTRUNUSU9OIEVk
aXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApAQCAtMjY1LDYgKzI2
NiwxMiBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMKIHdlYmtpdF93ZWJf
dmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZQogd2Via2l0X3dlYl92aWV3X3Rlcm1p
bmF0ZV93ZWJfcHJvY2Vzcwogd2Via2l0X3dlYl92aWV3X3NldF9jb3JzX2FsbG93bGlzdAord2Vi
a2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X2dl
dF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19zZXRfY2FtZXJhX2Nh
cHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRl
Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92
aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKQEAgLTgwMCw2ICs4MDcsNyBAQCB3
ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3R5cGUKIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0CiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZp
Y2UKIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZQord2Vi
a2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlzcGxheV9kZXZpY2UKIAogPFNVQlNF
Q1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDIxNWQ0
NDZjYzYwZGE0Y2U3ZjAyMzdkYjMyMjVjMWU4MTZjY2UxMS4uYmQ2OTQxOTAzOGExMDI2MzQ2NjQx
MDI2NmNkZGY0MzliMzYyOWRmZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTA3LTExICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xpYl0gRXhwb3NlIEFQSSB0
byBhY2Nlc3MvbW9kaWZ5IGNhcHR1cmUgZGV2aWNlcyBzdGF0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzkwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBHVEsgTWluaUJyb3dzZXIgaXMgbm93
IGFibGUgdG8gc2hvdyBtZWRpYSBjYXB0dXJlIGluZGljYXRvcnMsIHRocm91Z2ggdGhlIFVSSSBl
bnRyeS4gQQorICAgICAgICBuZXcgQVBJIHRlc3Qgd2FzIGFkZGVkLCBjaGVja2luZyBzdXBwb3J0
IGZvciBnZXREaXNwbGF5TWVkaWEoKS4gQXMgdGhpcyByZXF1aXJlcyB1c2VyCisgICAgICAgIGdl
c3R1cmUgc3VwcG9ydCwgYSBuZXcgbWluaW1hbCBpbmplY3RlZCBidW5kbGUgd2FzIGltcGxlbWVu
dGVkLCBpbmplY3RpbmcgYHdpbmRvdy5pbnRlcm5hbHNgCisgICAgICAgIGluIHRoZSB0ZXN0IHBh
Z2UuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jOgorICAgICAgICAo
cGVybWlzc2lvblJlcXVlc3REYXRhTmV3KToKKyAgICAgICAgKHBlcm1pc3Npb25SZXF1ZXN0RGF0
YUZyZWUpOgorICAgICAgICAoZGVjaWRlUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAqIE1p
bmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgICh3ZWJWaWV3TWVkaWFDYXB0
dXJlU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKHdlYlZpZXdVcmlFbnRyeUljb25QcmVzc2VkKToK
KyAgICAgICAgKGJyb3dzZXJXaW5kb3dTd2l0Y2hUYWIpOgorICAgICAgICAqIFNjcmlwdHMvcnVu
LWd0ay10ZXN0czoKKyAgICAgICAgKEd0a1Rlc3RSdW5uZXIpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RVSUNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgICh0ZXN0V2ViVmlld0F1ZGlvT25seVVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgICh0ZXN0V2ViVmlld0Rpc3BsYXlVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcDoKKyAgICAg
ICAgKHRlc3RXZWJzaXRlRGF0YURldmljZUlkSGFzaFNhbHQpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvZ2xpYi9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2luZ2xldG9uKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6SW5qZWN0ZWRC
dW5kbGVDb250cm9sbGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVkQnVuZGxl
Q29udHJvbGxlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3Rl
ZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjp3aWxsRGVzdHJveVBhZ2UpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVk
QnVuZGxlQ29udHJvbGxlcjo6ZHVtcFRlc3ROYW1lcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmluaXRpYWxpemVUZXN0TmFtZWQpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpyZWdpc3RlckNyZWF0
ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Oklu
amVjdGVkQnVuZGxlQ29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBm
bGF0cGFrL2ZsYXRwYWt1dGlscy5weToKKyAgICAgICAgKFdlYmtpdEZsYXRwYWsucnVuX2luX3Nh
bmRib3gpOgorICAgICAgICAqIGdsaWIvYXBpX3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAoVGVz
dFJ1bm5lcik6CisgICAgICAgIChUZXN0UnVubmVyLl9ydW5fdGVzdF9nbGliKToKKwogMjAyMS0w
Ny0xNSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U11UZXN0V2ViS2l0QVBJLkluQXBwQnJvd3NlclByaXZhY3kuQXBwQm91bmREb21haW5BbGxvd3NT
ZXJ2aWNlV29ya2VycyBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvQnJvd3NlclRhYi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYwppbmRl
eCA5YjM2NjJiMjI0YTY2NzRhYzJjMjViZDI5ZmVhYTk4NjEwNzgxZTgyLi4xYzg0ZjMwYjJlYTk2
ZGQwYzE2ODkxOGY5ZDYzNzczYjhlMjU0OGEzIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlclRhYi5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFi
LmMKQEAgLTMwNywxNiArMzA3LDIwIEBAIHN0YXRpYyBnYm9vbGVhbiBkZWNpZGVQZXJtaXNzaW9u
UmVxdWVzdChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQZXJtaXNzaW9uCiAgICAgICAg
IHRleHQgPSBnX3N0cmR1cCgiQWxsb3cgbm90aWZpY2F0aW9ucyByZXF1ZXN0PyIpOwogICAgIH0g
ZWxzZSBpZiAoV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3Qp
KSB7CiAgICAgICAgIHRpdGxlID0gIlVzZXJNZWRpYSByZXF1ZXN0IjsKLSAgICAgICAgZ2Jvb2xl
YW4gaXNfZm9yX2F1ZGlvX2RldmljZSA9IHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNf
Zm9yX2F1ZGlvX2RldmljZShXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVx
dWVzdCkpOwotICAgICAgICBnYm9vbGVhbiBpc19mb3JfdmlkZW9fZGV2aWNlID0gd2Via2l0X3Vz
ZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlKFdFQktJVF9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgICAgIGdib29sZWFuIGlzRm9yQXVk
aW9EZXZpY2UgPSB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZp
Y2UoV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICAg
ICAgZ2Jvb2xlYW4gaXNGb3JWaWRlb0RldmljZSA9IHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Np
b25faXNfZm9yX3ZpZGVvX2RldmljZShXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVF
U1QocmVxdWVzdCkpOworICAgICAgICBnYm9vbGVhbiBpc0ZvckRpc3BsYXlEZXZpY2UgPSB3ZWJr
aXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZShXRUJLSVRfVVNF
Ul9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworCiAgICAgICAgIGNvbnN0IGNo
YXIgKm1lZGlhVHlwZSA9IE5VTEw7Ci0gICAgICAgIGlmIChpc19mb3JfYXVkaW9fZGV2aWNlKSB7
Ci0gICAgICAgICAgICBpZiAoaXNfZm9yX3ZpZGVvX2RldmljZSkKKyAgICAgICAgaWYgKGlzRm9y
QXVkaW9EZXZpY2UpIHsKKyAgICAgICAgICAgIGlmIChpc0ZvclZpZGVvRGV2aWNlKQogICAgICAg
ICAgICAgICAgIG1lZGlhVHlwZSA9ICJhdWRpby92aWRlbyI7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgbWVkaWFUeXBlID0gImF1ZGlvIjsKLSAgICAgICAgfSBlbHNlIGlmIChp
c19mb3JfdmlkZW9fZGV2aWNlKQorICAgICAgICB9IGVsc2UgaWYgKGlzRm9yVmlkZW9EZXZpY2Up
CiAgICAgICAgICAgICBtZWRpYVR5cGUgPSAidmlkZW8iOworICAgICAgICBlbHNlIGlmIChpc0Zv
ckRpc3BsYXlEZXZpY2UpCisgICAgICAgICAgICBtZWRpYVR5cGUgPSAiZGlzcGxheSI7CiAgICAg
ICAgIHRleHQgPSBnX3N0cmR1cF9wcmludGYoIkFsbG93IGFjY2VzcyB0byAlcyBkZXZpY2U/Iiwg
bWVkaWFUeXBlKTsKICAgICB9IGVsc2UgaWYgKFdFQktJVF9JU19JTlNUQUxMX01JU1NJTkdfTUVE
SUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKICAgICAgICAgdGl0bGUg
PSAiTWVkaWEgcGx1Z2luIG1pc3NpbmcgcmVxdWVzdCI7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJXaW5kb3cuYwppbmRleCAwNjNlOTQ1Njg0OTBjYzcyMTkzMjIyOTg3YjgwNWU3ZGZmZjk0ZmVh
Li4xMThjYzIwMDIxNWIyMmRjZjA3OWYyNjYzYzIwOThiOWM0MGZkMzVmIDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKQEAgLTY0OSw2ICs2NDksNzIgQEAgc3RhdGljIHZvaWQg
ZmF2aWNvbkNoYW5nZWQoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcGFyYW1T
cGVjLCBCcm93c2UKICAgICB1cGRhdGVVcmlFbnRyeUljb24od2luZG93KTsKIH0KIAorc3RhdGlj
IHZvaWQgd2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMsIEJyb3dzZXJXaW5kb3cqIHdpbmRvdykKK3sKKyAg
ICBjb25zdCBnY2hhciogbmFtZSA9IGdfcGFyYW1fc3BlY19nZXRfbmFtZShwYXJhbVNwZWMpOwor
ICAgIC8vIEZJWE1FOiB0aGUgVVJJIGVudHJ5IGlzIG5vdCBncmVhdCBzdG9yYWdlIGluIGNhc2Ug
bW9yZSB0aGFuIG9uZSBjYXB0dXJlIGRldmljZSBpcyBpbiB1c2UsCisgICAgLy8gYmVjYXVzZSBp
dCBjYW4gc3RvcmUgb25seSBvbmUgc2Vjb25kYXJ5IGljb24uCisgICAgR3RrRW50cnkgKmVudHJ5
ID0gR1RLX0VOVFJZKHdpbmRvdy0+dXJpRW50cnkpOworCisgICAgaWYgKGdfc3RyX2hhc19wcmVm
aXgobmFtZSwgIm1pY3JvcGhvbmUiKSkgeworICAgICAgICBzd2l0Y2ggKHdlYmtpdF93ZWJfdmll
d19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKSB7CisgICAgICAgIGNhc2Ug
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORToKKyAgICAgICAgICAgIGd0a19lbnRyeV9z
ZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCBO
VUxMKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBU
VVJFX1NUQVRFX01VVEVEOgorICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21faWNv
bl9uYW1lKGVudHJ5LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlksICJtaWNyb3Bob25lLXNlbnNp
dml0eS1tdXRlcy1zeW1ib2xpYyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOgorICAgICAgICAgICAgZ3RrX2VudHJ5
X3NldF9pY29uX2Zyb21faWNvbl9uYW1lKGVudHJ5LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlks
ICJhdWRpby1pbnB1dC1taWNyb3Bob25lLXN5bWJvbGljIik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChuYW1lLCAiY2FtZXJh
IikpIHsKKyAgICAgICAgc3dpdGNoICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJl
X3N0YXRlKHdlYlZpZXcpKSB7CisgICAgICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RB
VEVfTk9ORToKKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25fbmFtZShl
bnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCBOVUxMKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEOgorICAgICAg
ICAgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21faWNvbl9uYW1lKGVudHJ5LCBHVEtfRU5UUllf
SUNPTl9TRUNPTkRBUlksICJjYW1lcmEtZGlzYWJsZWQtc3ltYm9saWMiKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRToK
KyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RL
X0VOVFJZX0lDT05fU0VDT05EQVJZLCAiY2FtZXJhLXdlYi1zeW1ib2xpYyIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgobmFt
ZSwgImRpc3BsYXkiKSkgeworICAgICAgICBzd2l0Y2ggKHdlYmtpdF93ZWJfdmlld19nZXRfZGlz
cGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKSB7CisgICAgICAgIGNhc2UgV0VCS0lUX01FRElB
X0NBUFRVUkVfU1RBVEVfTk9ORToKKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9t
X2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCBOVUxMKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01V
VEVEOgorICAgICAgICAgICAgLy8gRklYTUU6IEkgZm91bmQgbm8gc3VpdGFibGUgaWNvbiBmb3Ig
dGhpcy4KKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRy
eSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCAibWVkaWEtcGxheWJhY2stc3RvcC1zeW1ib2xp
YyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRV
UkVfU1RBVEVfQUNUSVZFOgorICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21faWNv
bl9uYW1lKGVudHJ5LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlksICJ2aWRlby1kaXNwbGF5LXN5
bWJvbGljIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworc3Rh
dGljIHZvaWQgd2ViVmlld1VyaUVudHJ5SWNvblByZXNzZWQoR3RrRW50cnkqIGVudHJ5LCBHdGtF
bnRyeUljb25Qb3NpdGlvbiBwb3NpdGlvbiwgR2RrRXZlbnQqIGV2ZW50LCBCcm93c2VyV2luZG93
KiB3aW5kb3cpCit7CisgICAgaWYgKHBvc2l0aW9uICE9IEdUS19FTlRSWV9JQ09OX1NFQ09OREFS
WSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFdoYXQgYWJvdXQgYXVkaW8vdmlk
ZW8/CisgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGJyb3dzZXJfdGFiX2dldF93ZWJfdmll
dyh3aW5kb3ctPmFjdGl2ZVRhYik7CisgICAgc3dpdGNoICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rp
c3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSkgeworICAgIGNhc2UgV0VCS0lUX01FRElBX0NB
UFRVUkVfU1RBVEVfTk9ORToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9NVVRFRDoKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5
X2NhcHR1cmVfc3RhdGUod2ViVmlldywgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZF
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9B
Q1RJVkU6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRl
KHdlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCB3ZWJWaWV3SXNMb2FkaW5nQ2hhbmdlZChXZWJL
aXRXZWJWaWV3ICp3ZWJWaWV3LCBHUGFyYW1TcGVjICpwYXJhbVNwZWMsIEJyb3dzZXJXaW5kb3cg
KndpbmRvdykKIHsKICAgICBnYm9vbGVhbiBpc0xvYWRpbmcgPSB3ZWJraXRfd2ViX3ZpZXdfaXNf
bG9hZGluZyh3ZWJWaWV3KTsKQEAgLTExODAsNiArMTI0NiwxMiBAQCBzdGF0aWMgdm9pZCBicm93
c2VyV2luZG93U3dpdGNoVGFiKEd0a05vdGVib29rICpub3RlYm9vaywgQnJvd3NlclRhYiAqdGFi
LCBndWludAogI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKICAgICBnX3NpZ25hbF9j
b25uZWN0KHdlYlZpZXcsICJzY3JvbGwtZXZlbnQiLCBHX0NBTExCQUNLKHNjcm9sbEV2ZW50Q2Fs
bGJhY2spLCB3aW5kb3cpOwogI2VuZGlmCisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAi
bm90aWZ5OjpjYW1lcmEtY2FwdHVyZS1zdGF0ZSIsIEdfQ0FMTEJBQ0sod2ViVmlld01lZGlhQ2Fw
dHVyZVN0YXRlQ2hhbmdlZCksIHdpbmRvdyk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3
LCAibm90aWZ5OjptaWNyb3Bob25lLWNhcHR1cmUtc3RhdGUiLCBHX0NBTExCQUNLKHdlYlZpZXdN
ZWRpYUNhcHR1cmVTdGF0ZUNoYW5nZWQpLCB3aW5kb3cpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2ViVmlldywgIm5vdGlmeTo6ZGlzcGxheS1jYXB0dXJlLXN0YXRlIiwgR19DQUxMQkFDSyh3ZWJW
aWV3TWVkaWFDYXB0dXJlU3RhdGVDaGFuZ2VkKSwgd2luZG93KTsKKworICAgIGdfb2JqZWN0X3Nl
dCh3aW5kb3ctPnVyaUVudHJ5LCAic2Vjb25kYXJ5LWljb24tYWN0aXZhdGFibGUiLCBUUlVFLCBO
VUxMKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+dXJpRW50cnksICJpY29uLXByZXNz
IiwgR19DQUxMQkFDSyh3ZWJWaWV3VXJpRW50cnlJY29uUHJlc3NlZCksIHdpbmRvdyk7CiAKICAg
ICBXZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YXJkbGlzdCA9IHdlYmtpdF93ZWJfdmll
d19nZXRfYmFja19mb3J3YXJkX2xpc3Qod2ViVmlldyk7CiAgICAgYnJvd3NlcldpbmRvd1VwZGF0
ZU5hdmlnYXRpb25NZW51KHdpbmRvdywgYmFja0ZvcndhcmRsaXN0KTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0CmluZGV4IDY4NWQ1ZWUwNmE1ZTFlMDc5NTlhMGJhMThlZTA1ZWQwMDJmMTk1
YjYuLjdjYmI3NzY2ZmE3MDA0MDhlYzA4NmQyMmZhMjg4ZWQ5NDNhNDRjNmQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMzcwLDYgKzM3MCwyNiBAQCBpZiAoRU5BQkxFX1dFQktJ
VCkKICAgICAgICAgICAgIG1hYy9QbGF0Zm9ybVV0aWxpdGllc01hYy5tbQogICAgICAgICApCiAg
ICAgZW5kaWYgKCkKKworICAgIGlmIChQT1JUIFNUUkVRVUFMICJHVEsiIE9SIFBPUlQgU1RSRVFV
QUwgIldQRSIpCisgICAgICAgIHNldChUZXN0V2ViS2l0QVBJSW50ZXJuYWxJbmplY3RlZEJ1bmRs
ZV9TT1VSQ0VTCisgICAgICAgICAgICBJbmplY3RlZEJ1bmRsZU1haW4uY3BwCisKKyAgICAgICAg
ICAgIGdsaWIvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcAorICAgICAgICApCisgICAgICAg
IGFkZF9saWJyYXJ5KFRlc3RXZWJLaXRBUElJbnRlcm5hbEluamVjdGVkQnVuZGxlIFNIQVJFRCAk
e1Rlc3RXZWJLaXRBUElJbnRlcm5hbEluamVjdGVkQnVuZGxlX1NPVVJDRVN9KQorICAgICAgICB0
YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhUZXN0V2ViS2l0QVBJSW50ZXJuYWxJbmplY3RlZEJ1
bmRsZSBQUklWQVRFIEJVSUxESU5HX1Rlc3RXZWJLaXQpCisgICAgICAgIHRhcmdldF9pbmNsdWRl
X2RpcmVjdG9yaWVzKFRlc3RXZWJLaXRBUElJbnRlcm5hbEluamVjdGVkQnVuZGxlIFBSSVZBVEUg
JHtUZXN0V2ViS2l0X1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFU30pCisgICAgICAgIHRhcmdl
dF9saW5rX2xpYnJhcmllcyhUZXN0V2ViS2l0QVBJSW50ZXJuYWxJbmplY3RlZEJ1bmRsZSBQUklW
QVRFIFdlYktpdDo6V2ViS2l0IFdlYktpdDo6Z3Rlc3QgV2ViS2l0OjpXZWJDb3JlVGVzdFN1cHBv
cnQpCisKKyAgICAgICAgaWYgKENPTVBJTEVSX0lTX0dDQ19PUl9DTEFORykKKyAgICAgICAgICAg
IFdFQktJVF9BRERfVEFSR0VUX0NYWF9GTEFHUyhUZXN0V2ViS2l0QVBJSW50ZXJuYWxJbmplY3Rl
ZEJ1bmRsZSAtV25vLWRhbmdsaW5nLWVsc2UKKyAgICAgICAgICAgICAgLVduby1zaWduLWNvbXBh
cmUKKyAgICAgICAgICAgICAgLVduby11bmRlZgorICAgICAgICAgICAgICAtV25vLXVudXNlZC1w
YXJhbWV0ZXIpCisgICAgICAgIGVuZGlmICgpCisgICAgZW5kaWYgKCkKKwogICAgIGFkZF9saWJy
YXJ5KFRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZSBTSEFSRUQgJHtUZXN0V2ViS2l0QVBJSW5q
ZWN0ZWRCdW5kbGVfU09VUkNFU30pCiAKICAgICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhU
ZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5kbGUgUFJJVkFURSBCVUlMRElOR19UZXN0V2ViS2l0KQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNs
aWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xp
ZW50LmNwcAppbmRleCBhYmEzMjFjOWNhZTYyYTdlMDBmMDMzMjFlNDRjZTBjNzVjZTJkZjg4Li5l
YzA3N2Y1MzQ1YzY2MTM0YjJmYjYyMzI1OTZiOTdhNjdkOWRiY2I4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcApAQCAt
MjQwLDYgKzI0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFdlYktpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0KiB1c2VyTWVkaWFSZXF1ZXN0ID0gV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlT
U0lPTl9SRVFVRVNUKHJlcXVlc3QpOwogICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRf
dXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UodXNlck1lZGlhUmVxdWVz
dCkgPT0gdGVzdC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEpOwogICAgICAgICAgICAgZ19hc3NlcnRf
dHJ1ZSh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl92aWRlb19kZXZpY2UodXNl
ck1lZGlhUmVxdWVzdCkgPT0gdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEpOworICAgICAgICAg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNw
bGF5X2RldmljZSh1c2VyTWVkaWFSZXF1ZXN0KSA9PSB0ZXN0LT5tX2V4cGVjdGVkRGlzcGxheU1l
ZGlhKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0ZXN0LT5tX2FsbG93UGVybWlzc2lvblJl
cXVlc3RzKQpAQCAtMjYzLDYgKzI2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3ZlcmlmeU1l
ZGlhVHlwZXMoZmFsc2UpCiAgICAgICAgICwgbV9leHBlY3RlZEF1ZGlvTWVkaWEoZmFsc2UpCiAg
ICAgICAgICwgbV9leHBlY3RlZFZpZGVvTWVkaWEoZmFsc2UpCisgICAgICAgICwgbV9leHBlY3Rl
ZERpc3BsYXlNZWRpYShmYWxzZSkKICAgICAgICAgLCBtX21vdXNlVGFyZ2V0TW9kaWZpZXJzKDAp
CiAgICAgewogICAgICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5f
d2luZG93c19hdXRvbWF0aWNhbGx5KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MobV93ZWJW
aWV3KSwgVFJVRSk7CkBAIC00MTUsNiArNDE3LDcgQEAgcHVibGljOgogICAgIGdib29sZWFuIG1f
dmVyaWZ5TWVkaWFUeXBlczsKICAgICBnYm9vbGVhbiBtX2V4cGVjdGVkQXVkaW9NZWRpYTsKICAg
ICBnYm9vbGVhbiBtX2V4cGVjdGVkVmlkZW9NZWRpYTsKKyAgICBnYm9vbGVhbiBtX2V4cGVjdGVk
RGlzcGxheU1lZGlhOwogICAgIFdpbmRvd1Byb3BlcnRpZXMgbV93aW5kb3dQcm9wZXJ0aWVzOwog
ICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+IG1fd2luZG93UHJvcGVydGllc0NoYW5nZWQ7CiAgICAg
R1JlZlB0cjxXZWJLaXRIaXRUZXN0UmVzdWx0PiBtX21vdXNlVGFyZ2V0SGl0VGVzdFJlc3VsdDsK
QEAgLTEwMDEsNiArMTAwNCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgdGVzdC0+
bV92ZXJpZnlNZWRpYVR5cGVzID0gVFJVRTsKICAgICB0ZXN0LT5tX2V4cGVjdGVkQXVkaW9NZWRp
YSA9IFRSVUU7CiAgICAgdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEgPSBUUlVFOworICAgIHRl
c3QtPm1fZXhwZWN0ZWREaXNwbGF5TWVkaWEgPSBGQUxTRTsKIAogICAgIC8vIFRlc3QgZGVueWlu
ZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KICAgICB0ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVl
c3RzID0gZmFsc2U7CkBAIC0xMDQxLDYgKzEwNDUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d0F1ZGlvT25seVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3Qs
CiAgICAgdGVzdC0+bV92ZXJpZnlNZWRpYVR5cGVzID0gVFJVRTsKICAgICB0ZXN0LT5tX2V4cGVj
dGVkQXVkaW9NZWRpYSA9IFRSVUU7CiAgICAgdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEgPSBG
QUxTRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkRGlzcGxheU1lZGlhID0gRkFMU0U7CiAKICAgICAv
LyBUZXN0IGRlbnlpbmcgYSBwZXJtaXNzaW9uIHJlcXVlc3QuCiAgICAgdGVzdC0+bV9hbGxvd1Bl
cm1pc3Npb25SZXF1ZXN0cyA9IGZhbHNlOwpAQCAtMTA1MSw2ICsxMDU2LDQ5IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xp
ZW50VGVzdCogdGVzdCwKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tb2NrX2NhcHR1
cmVfZGV2aWNlcyhzZXR0aW5ncywgRkFMU0UpOwogICAgIHdlYmtpdFNldHRpbmdzU2V0TWVkaWFD
YXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uKHNldHRpbmdzLCBUUlVFKTsKIH0KKworc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdEaXNwbGF5VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKFVJ
Q2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBXZWJLaXRTZXR0aW5ncyog
c2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldyk7
CisgICAgZ2Jvb2xlYW4gZW5hYmxlZCA9IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlh
X3N0cmVhbShzZXR0aW5ncyk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFf
c3RyZWFtKHNldHRpbmdzLCBUUlVFKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9t
b2NrX2NhcHR1cmVfZGV2aWNlcyhzZXR0aW5ncywgVFJVRSk7CisgICAgd2Via2l0U2V0dGluZ3NT
ZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24oc2V0dGluZ3MsIEZBTFNFKTsK
KworICAgIHRlc3QtPnNob3dJbldpbmRvdygpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkaXNw
bGF5TWVkaWFSZXF1ZXN0SFRNTCA9ICI8aHRtbD4iCisgICAgICAgICIgIDxzY3JpcHQ+IgorICAg
ICAgICAiICBmdW5jdGlvbiBydW5UZXN0KCkiCisgICAgICAgICIgIHsiCisgICAgICAgICIgICAg
d2luZG93LmludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geyIKKyAgICAgICAgIiAgICAg
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhKCkiCisgICAgICAgICIgICAg
ICAgIC50aGVuKChzdHJlYW0pID0+IHsgZG9jdW1lbnQudGl0bGUgPSBcIk9LXCI7IH0pIgorICAg
ICAgICAiICAgICAgICAuY2F0Y2goKGUpID0+IHsgZG9jdW1lbnQudGl0bGUgPSBlLm5hbWU7IH0p
OyIKKyAgICAgICAgIiAgICB9KTsiCisgICAgICAgICIgIH0iCisgICAgICAgICIgIDwvc2NyaXB0
PiIKKyAgICAgICAgIiAgPGJvZHkgb25sb2FkPSdydW5UZXN0KCk7Jz48L2JvZHk+IgorICAgICAg
ICAiPC9odG1sPiI7CisKKyAgICB0ZXN0LT5tX3ZlcmlmeU1lZGlhVHlwZXMgPSBUUlVFOworICAg
IHRlc3QtPm1fZXhwZWN0ZWRBdWRpb01lZGlhID0gRkFMU0U7CisgICAgdGVzdC0+bV9leHBlY3Rl
ZFZpZGVvTWVkaWEgPSBGQUxTRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkRGlzcGxheU1lZGlhID0g
VFJVRTsKKworICAgIC8vIFRlc3QgZGVueWluZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAgICB0
ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0gZmFsc2U7CisgICAgdGVzdC0+bG9hZEh0
bWwoZGlzcGxheU1lZGlhUmVxdWVzdEhUTUwsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRp
bFRpdGxlQ2hhbmdlZFRvKCJOb3RBbGxvd2VkRXJyb3IiKTsKKworICAgIC8vIFRlc3QgYWxsb3dp
bmcgYSBwZXJtaXNzaW9uIHJlcXVlc3QuCisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1
ZXN0cyA9IHRydWU7CisgICAgdGVzdC0+bG9hZEh0bWwoZGlzcGxheU1lZGlhUmVxdWVzdEhUTUws
IG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJPSyIpOworCisg
ICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBlbmFi
bGVkKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tb2NrX2NhcHR1cmVfZGV2aWNl
cyhzZXR0aW5ncywgRkFMU0UpOworICAgIHdlYmtpdFNldHRpbmdzU2V0TWVkaWFDYXB0dXJlUmVx
dWlyZXNTZWN1cmVDb25uZWN0aW9uKHNldHRpbmdzLCBUUlVFKTsKK30KICNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKQEAgLTEzMTcsNiAr
MTM2NSw4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q29sb3JDaG9vc2VyUmVxdWVzdChDb2xv
ckNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAKIHZvaWQgYmVmb3JlQWxsKCkKIHsK
KyAgICBnX3NldGVudigiVEVTVF9XRUJLSVRfQVBJX1dFQktJVDJfSU5KRUNURURfQlVORExFX0ZJ
TEVOQU1FIiwgImxpYlRlc3RXZWJLaXRBUElJbnRlcm5hbEluamVjdGVkQnVuZGxlLnNvIiwgVFJV
RSk7CisKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjcmVhdGUtcmVh
ZHktY2xvc2UiLCB0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5Q2xvc2UpOwogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgbW91c2UgY2xpY2tzIGluIFdQRS4KICNpZiBQTEFURk9STShHVEspCkBAIC0xMzQz
LDYgKzEzOTMsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAidXNlcm1lZGlhLWVudW1lcmF0ZWRldmljZXMtcGVybWlzc2lvbi1jaGVj
ayIsIHRlc3RXZWJWaWV3VXNlck1lZGlhRW51bWVyYXRlRGV2aWNlc1Blcm1pc3Npb25DaGVjayk7
CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAidXNlcm1lZGlhLXBlcm1p
c3Npb24tcmVxdWVzdHMiLCB0ZXN0V2ViVmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk7
CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiYXVkaW8tdXNlcm1lZGlh
LXBlcm1pc3Npb24tcmVxdWVzdCIsIHRlc3RXZWJWaWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RzKTsKKyAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJk
aXNwbGF5LXVzZXJtZWRpYS1wZXJtaXNzaW9uLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0Rpc3BsYXlV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOwogI2VuZGlmCiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBtb3VzZSBjbGljayBpbiBXUEUuCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtMTM1OCw0ICsx
NDA5LDUgQEAgdm9pZCBiZWZvcmVBbGwoKQogCiB2b2lkIGFmdGVyQWxsKCkKIHsKKyAgICBnX3Vu
c2V0ZW52KCJURVNUX1dFQktJVF9BUElfV0VCS0lUMl9JTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUi
KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9JbmplY3RlZEJ1bmRs
ZUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL0luamVjdGVkQnVuZGxl
Q29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc5MGVjYjAwOWQ5NGZhOTFlZTJiZmI4MmE5ZmRj
MmJmNmE0OTgwOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9J
bmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBXS19IQVZFX0NfU1BJCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVy
LmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wdGlvbnMuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlVGVzdFN1cHBvcnQvV2ViQ29yZVRlc3RTdXBwb3J0Lmg+CisjaW5jbHVkZSA8
V2ViS2l0L1dLQnVuZGxlRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdlLmg+
CisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyJiBJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIEluamVjdGVkQnVuZGxl
Q29udHJvbGxlciYgc2hhcmVkID0gKm5ldyBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI7CisgICAg
cmV0dXJuIHNoYXJlZDsKK30KKworSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXIoKQoreworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6
aW5pdGlhbGl6ZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLVHlwZVJlZiBpbml0aWFsaXphdGlvblVz
ZXJEYXRhKQoreworICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOworICAgIG1fYnVuZGxlID0gYnVu
ZGxlOworCisgICAgV0tCdW5kbGVDbGllbnRWMSBjbGllbnQgPSB7CisgICAgICAgIHsgMCwgdGhp
cyB9LAorICAgICAgICBkaWRDcmVhdGVQYWdlLAorICAgICAgICB3aWxsRGVzdHJveVBhZ2UsCisg
ICAgICAgIG51bGxwdHIsCisgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlLAorICAgICAgICBkaWRS
ZWNlaXZlTWVzc2FnZVRvUGFnZQorICAgIH07CisgICAgV0tCdW5kbGVTZXRDbGllbnQobV9idW5k
bGUuZ2V0KCksICZjbGllbnQuYmFzZSk7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9s
bGVyOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgSW5qZWN0ZWRCdW5kbGVDb250cm9s
bGVyKiBzZWxmID0gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKj4oY29uc3Rf
Y2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworCisgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
VjAgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9h
ZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBs
b2FkZXJDbGllbnQuYmFzZS5jbGllbnRJbmZvID0gc2VsZjsKKyAgICBsb2FkZXJDbGllbnQuZGlk
Q2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSA9IFtdKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCwgY29uc3Qgdm9pZCop
IHsKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0
SmF2YVNjcmlwdENvbnRleHRGb3JXb3JsZChmcmFtZSwgd29ybGQpOworICAgICAgICBXZWJDb3Jl
VGVzdFN1cHBvcnQ6OmluamVjdEludGVybmFsc09iamVjdChjb250ZXh0KTsKKyAgICB9OworCisg
ICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50LmJh
c2UpOworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6d2lsbERlc3Ryb3lQYWdl
KFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqKQoreworfQorCit2b2lk
IEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYs
IFdLU3RyaW5nUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworfQorCit2b2lkIEluamVj
dGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVSZWYs
IFdLQnVuZGxlUGFnZVJlZiwgV0tTdHJpbmdSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCit7
Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkdW1wVGVzdE5hbWVzKCkKK3sK
K30KKwordm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmluaXRpYWxpemVUZXN0TmFtZWQo
V0tCdW5kbGVSZWYsIGNvbnN0IHN0ZDo6c3RyaW5nJiwgV0tUeXBlUmVmKQoreworfQorCit2b2lk
IEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6cmVnaXN0ZXJDcmVhdGVJbmplY3RlZEJ1bmRsZVRl
c3RGdW5jdGlvbihjb25zdCBzdGQ6OnN0cmluZyYsIENyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1
bmN0aW9uKQoreworfQorCit2b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6cGxhdGZvcm1J
bml0aWFsaXplKCkKK3sKKyAgICBKU0M6OkNvbmZpZzo6Y29uZmlndXJlRm9yVGVzdGluZygpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
VG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkgYi9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGls
cy5weQppbmRleCAxY2IyOTgyZWNiYTBlMjM5ZWIyMGNhYTQzNDQ4ZDI3ZGFlYTVjZWIwLi5iNGQx
OWYwOTA3ZTEyMjg2NDI1MWEwNGNhM2JmNmIzYWZiZDE5MTExIDEwMDY0NAotLS0gYS9Ub29scy9m
bGF0cGFrL2ZsYXRwYWt1dGlscy5weQorKysgYi9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5w
eQpAQCAtODAxLDggKzgwMSwxMCBAQCBjbGFzcyBXZWJraXRGbGF0cGFrOgogICAgICAgICAgICAg
IkpTQyIsCiAgICAgICAgICAgICAiTUVTQSIsCiAgICAgICAgICAgICAiTElCR0wiLAorICAgICAg
ICAgICAgIlBJUEVXSVJFIiwKICAgICAgICAgICAgICJSVVNUIiwKICAgICAgICAgICAgICJTQ0NB
Q0hFIiwKKyAgICAgICAgICAgICJTUEEiLAogICAgICAgICAgICAgIldBWUxBTkQiLAogICAgICAg
ICAgICAgIldFQktJVCIsCiAgICAgICAgICAgICAiV0VCS0lUMiIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433752</attachid>
            <date>2021-07-18 10:25:33 -0700</date>
            <delta_ts>2021-07-20 04:03:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227902-20210718102531.patch</filename>
            <type>text/plain</type>
            <size>52786</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY2NWVmZGYxNTkxMzg5MTA0
NzFjMzJlOTYzOWYwMTM4ZGMxYjI1MmUuLjZkMmMxNWU1MGI1ZmFkY2VlYzZiMWU1NGFiOGM0MjJm
NjIyMjc5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDctMTggIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBFeHBvc2Ug
QVBJIHRvIGFjY2Vzcy9tb2RpZnkgY2FwdHVyZSBkZXZpY2VzIHN0YXRlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3OTAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBHTGliIEFQ
SSAoYW5kIGNvcnJlc3BvbmRpbmcgR09iamVjdCBwcm9wZXJ0aWVzKToKKworICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlCisgICAgICAgIHdlYmtpdF93ZWJf
dmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlCisgICAgICAgIHdlYmtpdF93ZWJfdmll
d19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dldF9kaXNw
bGF5X2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2Nh
cHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3Jf
ZGlzcGxheV9kZXZpY2UKKworICAgICAgICBUaGlzIGNhbiBiZSB1c2VmdWwgaW4gV2ViIGJyb3dz
ZXJzIHdpbGxpbmcgdG8gaW5kaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUgY2FwdHVyZSBkZXZpY2Vz
CisgICAgICAgIGN1cnJlbnRseSBpbiB1c2UgYnkgdGhlIFdlYlZpZXcuCisKKyAgICAgICAgQ292
ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VUlDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXNlcl9tZWRpYV9wZXJt
aXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld01lZGlhQ2FwdHVy
ZVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbmZpZ3VyZU1lZGlhQ2Fw
dHVyZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRl
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUpOgorICAg
ICAgICAod2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisKIDIwMjEtMDct
MTYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAg
V0tXZWJWaWV3IGphdmFzY3JpcHQgaW5qZWN0aW9uIGRvZXNuJ3Qgd29yayBpZiBhcHAgaW5jbHVk
ZXMgV0tBcHBCb3VuZERvbWFpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCAwYWZkOTdiZTQ2NGNlYjYwOWYxYzQzYWE3
MjBmM2I0YzI5Nzc3OGJkLi44MzY3YjIzOGYyMmNmOGE0NTQ3ZjhlZjdlYzc2N2JlYmIwYTdiMjA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VUlD
bGllbnQuY3BwCkBAIC0zNTIsNiArMzUyLDExIEBAIHByaXZhdGU6CiAgICAgICAgIHdlYmtpdFdl
YlZpZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQobV93ZWJWaWV3KTsKICAgICB9CiAKKyAgICB2b2lk
IG1lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlh
U3RhdGVGbGFncyBtZWRpYVN0YXRlRmxhZ3MpIGZpbmFsCisgICAgeworICAgICAgICB3ZWJraXRX
ZWJWaWV3TWVkaWFDYXB0dXJlU3RhdGVEaWRDaGFuZ2UobV93ZWJWaWV3LCBtZWRpYVN0YXRlRmxh
Z3MpOworICAgIH0KKwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgdm9pZCByZXF1ZXN0
UG9pbnRlckxvY2soV2ViUGFnZVByb3h5KiBwYWdlKSBmaW5hbAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAppbmRleCBmMDhiZmMxMTBmOGEwODcxNjFmZTJh
ZjkyMTgxMGQxOTgxYjg0ZTU1Li4zZDk5N2EzMmY4ZWNjM2VmMDg5NmI3N2Q0YTgzYmFhOGYwNThh
NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0xMzYs
NiArMTM2LDIwIEBAIGdib29sZWFuIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9y
X3ZpZGVvX2RldmljZShXZWJLaXRVc2VyTWVkaWFQZXJtaXNzCiAgICAgcmV0dXJuIHJlcXVlc3Qt
PnByaXYtPnJlcXVlc3QtPnJlcXVpcmVzVmlkZW9DYXB0dXJlKCk7CiB9CiAKKy8qKgorICogd2Vi
a2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlzcGxheV9kZXZpY2U6CisgKiBAcmVx
dWVzdDogYSAjV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKKyAqCisgKiBSZXR1cm5z
OiAlVFJVRSBpZiBhY2Nlc3MgdG8gYSBkaXNwbGF5IGRldmljZSB3YXMgcmVxdWVzdGVkLgorICoK
KyAqIFNpbmNlOiAyLjM0CisgKi8KK2dib29sZWFuIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Np
b25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlKFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QtPnByaXYtPnJl
cXVlc3QsIEZBTFNFKTsKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+cmVxdWVzdC0+cmVxdWly
ZXNEaXNwbGF5Q2FwdHVyZSgpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdEdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBH
VmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCiB7CiAgICAgV2ViS2l0VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNT
SU9OX1JFUVVFU1Qob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDkzZWFiOTNhNzliYmUzMDA1YTUxMDIyNDc5
OGZmOTk1NmM5YWUxOS4uNmY4OTNlMzkxZWE0N2EwOWNkOGZhNjIzM2Y0ODMyMWM4MTEyODM3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAKQEAgLTIwNyw2ICsyMDcsMTAgQEAgZW51bSB7CiAgICAgUFJPUF9XRUJTSVRFX1BPTElD
SUVTLAogICAgIFBST1BfSVNfV0VCX1BST0NFU1NfUkVTUE9OU0lWRSwKIAorICAgIFBST1BfQ0FN
RVJBX0NBUFRVUkVfU1RBVEUsCisgICAgUFJPUF9NSUNST1BIT05FX0NBUFRVUkVfU1RBVEUsCisg
ICAgUFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEUsCisKICAgICBOX1BST1BFUlRJRVMsCiB9Owog
CkBAIC0zNTIsNiArMzU2LDIyIEBAIHZvaWQgd2Via2l0V2ViVmlld0lzUGxheWluZ0F1ZGlvQ2hh
bmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3Bl
YyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNbUFJPUF9JU19QTEFZSU5HX0FVRElP
XSk7CiB9CiAKK3ZvaWQgd2Via2l0V2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBtZWRpYVN0YXRlRmxhZ3MpCit7CisgICAgaWYgKG1lZGlhU3RhdGVGbGFncy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcp
LCBzT2JqUHJvcGVydGllc1tQUk9QX0NBTUVSQV9DQVBUVVJFX1NUQVRFXSk7CisgICAgICAgIGdf
b2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNb
UFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEVdKTsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5X2J5
X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJvcGVydGllc1tQUk9QX01JQ1JPUEhPTkVf
Q0FQVFVSRV9TVEFURV0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtZWRpYVN0
YXRlRmxhZ3MuY29udGFpbnNBbnkoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6QXVkaW9DYXB0dXJl
TWFzaykpCisgICAgICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3
KSwgc09ialByb3BlcnRpZXNbUFJPUF9NSUNST1BIT05FX0NBUFRVUkVfU1RBVEVdKTsKKyAgICBp
ZiAobWVkaWFTdGF0ZUZsYWdzLmNvbnRhaW5zQW55KFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OlZp
ZGVvQ2FwdHVyZU1hc2spKQorICAgICAgICBnX29iamVjdF9ub3RpZnlfYnlfcHNwZWMoR19PQkpF
Q1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BST1BfQ0FNRVJBX0NBUFRVUkVfU1RBVEVdKTsK
KyAgICBpZiAobWVkaWFTdGF0ZUZsYWdzLmNvbnRhaW5zQW55KFdlYkNvcmU6Ok1lZGlhUHJvZHVj
ZXI6OkRpc3BsYXlDYXB0dXJlTWFzaykpCisgICAgICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3Bl
YyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNbUFJPUF9ESVNQTEFZX0NBUFRVUkVf
U1RBVEVdKTsKK30KKwogY2xhc3MgUGFnZUxvYWRTdGF0ZU9ic2VydmVyIGZpbmFsIDogcHVibGlj
IFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKQEAgLTg3Miw2ICs4OTIsMTUgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1Nl
dFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUKICAg
ICBjYXNlIFBST1BfV0VCU0lURV9QT0xJQ0lFUzoKICAgICAgICAgd2ViVmlldy0+cHJpdi0+d2Vi
c2l0ZVBvbGljaWVzID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZVBvbGljaWVzKj4oZ192YWx1
ZV9nZXRfb2JqZWN0KHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9DQU1F
UkFfQ0FQVFVSRV9TVEFURToKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2Fw
dHVyZV9zdGF0ZSh3ZWJWaWV3LCBzdGF0aWNfY2FzdDxXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZT4o
Z192YWx1ZV9nZXRfZW51bSh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X01JQ1JPUEhPTkVfQ0FQVFVSRV9TVEFURToKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUod2ViVmlldywgc3RhdGljX2Nhc3Q8V2ViS2l0TWVkaWFD
YXB0dXJlU3RhdGU+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUpKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEU6CisgICAgICAgIHdlYmtpdF93ZWJf
dmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcsIHN0YXRpY19jYXN0PFdlYktp
dE1lZGlhQ2FwdHVyZVN0YXRlPihnX3ZhbHVlX2dldF9lbnVtKHZhbHVlKSkpOworICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtOTQzLDYgKzk3Miwx
NSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAgIGNhc2UgUFJPUF9JU19XRUJfUFJPQ0VT
U19SRVNQT05TSVZFOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNpdmUod2ViVmlldykpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfQ0FNRVJBX0NBUFRVUkVfU1RBVEU6CisgICAgICAgIGdf
dmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVf
c3RhdGUod2ViVmlldykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUlDUk9QSE9O
RV9DQVBUVVJFX1NUQVRFOgorICAgICAgICBnX3ZhbHVlX3NldF9lbnVtKHZhbHVlLCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEU6CisgICAgICAgIGdf
dmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJl
X3N0YXRlKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
R19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNw
ZWMpOwogICAgIH0KQEAgLTEzMzcsNiArMTM3NSw4MSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICAg
ICAgICAgIFRSVUUsCiAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpOwogCisgICAg
LyoqCisgICAgICogV2ViS2l0V2ViVmlldzpjYW1lcmEtY2FwdHVyZS1zdGF0ZToKKyAgICAgKgor
ICAgICAqIENhcHR1cmUgc3RhdGUgb2YgdGhlIGNhbWVyYSBkZXZpY2UuIFdoZW5ldmVyIHRoZSB1
c2VyIGdyYW50cyBhIG1lZGlhLXJlcXVlc3Qgc2VudCBieSB0aGUgd2ViCisgICAgICogcGFnZSwg
cmVxdWVzdGluZyB2aWRlbyBjYXB0dXJlIGNhcGFiaWxpdGllcyAoYG5hdmlnYXRvci5tZWRpYURl
dmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzoKKyAgICAgKiB0cnVlfSlgKSB0aGlzIHByb3BlcnR5
IHdpbGwgYmUgc2V0IHRvIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUuCisgICAg
ICoKKyAgICAgKiBUaGUgYXBwbGljYXRpb24gY2FuIG1vbml0b3IgdGhpcyBwcm9wZXJ0eSBhbmQg
cHJvdmlkZSBhIHZpc3VhbCBpbmRpY2F0b3IgYWxsb3dpbmcgdG8gb3B0aW9uYWxseQorICAgICAq
IGRlYWN0aXZhdGUgb3IgbXV0ZSB0aGUgY2FwdHVyZSBkZXZpY2UgYnkgc2V0dGluZyB0aGlzIHBy
b3BlcnR5IHJlc3BlY3RpdmVseSB0bworICAgICAqIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9OT05FIG9yIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRC4KKyAgICAgKgorICAg
ICAqIElmIHRoZSBjYXB0dXJlIHN0YXRlIG9mIHRoZSBkZXZpY2UgaXMgc2V0IHRvIEBXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIHRoZSB3ZWItcGFnZQorICAgICAqIGNhbiBzdGlsbCBy
ZS1yZXF1ZXN0IHRoZSBwZXJtaXNzaW9uIHRvIHRoZSB1c2VyLiBQZXJtaXNzaW9uIGRlc2lzaW9u
IGNhY2hpbmcgaXMgbGVmdCB0byB0aGUKKyAgICAgKiBhcHBsaWNhdGlvbi4KKyAgICAgKgorICAg
ICAqIFNpbmNlOiAyLjM0CisgICAgICovCisgICAgc09ialByb3BlcnRpZXNbUFJPUF9DQU1FUkFf
Q0FQVFVSRV9TVEFURV0gPSBnX3BhcmFtX3NwZWNfZW51bSgKKyAgICAgICAgImNhbWVyYS1jYXB0
dXJlLXN0YXRlIiwKKyAgICAgICAgIkNhbWVyYSBDYXB0dXJlIFN0YXRlIiwKKyAgICAgICAgXygi
VGhlIGNhcHR1cmUgc3RhdGUgb2YgdGhlIGNhbWVyYSBkZXZpY2UiKSwKKyAgICAgICAgV0VCS0lU
X1RZUEVfTUVESUFfQ0FQVFVSRV9TVEFURSwKKyAgICAgICAgV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfTk9ORSwKKyAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSk7CisKKyAgICAvKioK
KyAgICAgKiBXZWJLaXRXZWJWaWV3Om1pY3JvcGhvbmUtY2FwdHVyZS1zdGF0ZToKKyAgICAgKgor
ICAgICAqIENhcHR1cmUgc3RhdGUgb2YgdGhlIG1pY3JvcGhvbmUgZGV2aWNlLiBXaGVuZXZlciB0
aGUgdXNlciBncmFudHMgYSBtZWRpYS1yZXF1ZXN0IHNlbnQgYnkgdGhlIHdlYgorICAgICAqIHBh
Z2UsIHJlcXVlc3RpbmcgYXVkaW8gY2FwdHVyZSBjYXBhYmlsaXRpZXMgKGBuYXZpZ2F0b3IubWVk
aWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86CisgICAgICogdHJ1ZX0pYCkgdGhpcyBwcm9w
ZXJ0eSB3aWxsIGJlIHNldCB0byBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFLgor
ICAgICAqCisgICAgICogVGhlIGFwcGxpY2F0aW9uIGNhbiBtb25pdG9yIHRoaXMgcHJvcGVydHkg
YW5kIHByb3ZpZGUgYSB2aXN1YWwgaW5kaWNhdG9yIGFsbG93aW5nIHRvCisgICAgICogb3B0aW9u
YWxseSBkZWFjdGl2YXRlIG9yIG11dGUgdGhlIGNhcHR1cmUgZGV2aWNlIGJ5IHNldHRpbmcgdGhp
cyBwcm9wZXJ0eSByZXNwZWN0aXZlbHkgdG8KKyAgICAgKiBAV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfTk9ORSBvciBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQuCisgICAgICoK
KyAgICAgKiBJZiB0aGUgY2FwdHVyZSBzdGF0ZSBvZiB0aGUgZGV2aWNlIGlzIHNldCB0byBAV0VC
S0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSB0aGUgd2ViLXBhZ2UKKyAgICAgKiBjYW4gc3Rp
bGwgcmUtcmVxdWVzdCB0aGUgcGVybWlzc2lvbiB0byB0aGUgdXNlci4gUGVybWlzc2lvbiBkZXNp
c2lvbiBjYWNoaW5nIGlzIGxlZnQgdG8gdGhlCisgICAgICogYXBwbGljYXRpb24uCisgICAgICoK
KyAgICAgKiBTaW5jZTogMi4zNAorICAgICAqLworICAgIHNPYmpQcm9wZXJ0aWVzW1BST1BfTUlD
Uk9QSE9ORV9DQVBUVVJFX1NUQVRFXSA9IGdfcGFyYW1fc3BlY19lbnVtKAorICAgICAgICAibWlj
cm9waG9uZS1jYXB0dXJlLXN0YXRlIiwKKyAgICAgICAgIk1pY3JvcGhvbmUgQ2FwdHVyZSBTdGF0
ZSIsCisgICAgICAgIF8oIlRoZSBjYXB0dXJlIHN0YXRlIG9mIHRoZSBtaWNyb3Bob25lIGRldmlj
ZSIpLAorICAgICAgICBXRUJLSVRfVFlQRV9NRURJQV9DQVBUVVJFX1NUQVRFLAorICAgICAgICBX
RUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLAorICAgICAgICBXRUJLSVRfUEFSQU1fUkVB
RFdSSVRFKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6ZGlzcGxheS1jYXB0dXJl
LXN0YXRlOgorICAgICAqCisgICAgICogQ2FwdHVyZSBzdGF0ZSBvZiB0aGUgZGlzcGxheSBkZXZp
Y2UuIFdoZW5ldmVyIHRoZSB1c2VyIGdyYW50cyBhIG1lZGlhLXJlcXVlc3Qgc2VudCBieSB0aGUg
d2ViCisgICAgICogcGFnZSwgcmVxdWVzdGluZyBzY3JlZW5jYXN0aW5nIGNhcGFiaWxpdGllcyAo
YG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhKCkgdGhpcworICAgICAqIHBy
b3BlcnR5IHdpbGwgYmUgc2V0IHRvIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUu
CisgICAgICoKKyAgICAgKiBUaGUgYXBwbGljYXRpb24gY2FuIG1vbml0b3IgdGhpcyBwcm9wZXJ0
eSBhbmQgcHJvdmlkZSBhIHZpc3VhbCBpbmRpY2F0b3IgYWxsb3dpbmcgdG8KKyAgICAgKiBvcHRp
b25hbGx5IGRlYWN0aXZhdGUgb3IgbXV0ZSB0aGUgY2FwdHVyZSBkZXZpY2UgYnkgc2V0dGluZyB0
aGlzIHByb3BlcnR5IHJlc3BlY3RpdmVseSB0bworICAgICAqIEBXRUJLSVRfTUVESUFfQ0FQVFVS
RV9TVEFURV9OT05FIG9yIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRC4KKyAgICAg
KgorICAgICAqIElmIHRoZSBjYXB0dXJlIHN0YXRlIG9mIHRoZSBkZXZpY2UgaXMgc2V0IHRvIEBX
RUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIHRoZSB3ZWItcGFnZQorICAgICAqIGNhbiBz
dGlsbCByZS1yZXF1ZXN0IHRoZSBwZXJtaXNzaW9uIHRvIHRoZSB1c2VyLiBQZXJtaXNzaW9uIGRl
c2lzaW9uIGNhY2hpbmcgaXMgbGVmdCB0byB0aGUKKyAgICAgKiBhcHBsaWNhdGlvbi4KKyAgICAg
KgorICAgICAqIFNpbmNlOiAyLjM0CisgICAgICovCisgICAgc09ialByb3BlcnRpZXNbUFJPUF9E
SVNQTEFZX0NBUFRVUkVfU1RBVEVdID0gZ19wYXJhbV9zcGVjX2VudW0oCisgICAgICAgICJkaXNw
bGF5LWNhcHR1cmUtc3RhdGUiLAorICAgICAgICAiRGlzcGxheSBDYXB0dXJlIFN0YXRlIiwKKyAg
ICAgICAgXygiVGhlIGNhcHR1cmUgc3RhdGUgb2YgdGhlIGRpc3BsYXkgZGV2aWNlIiksCisgICAg
ICAgIFdFQktJVF9UWVBFX01FRElBX0NBUFRVUkVfU1RBVEUsCisgICAgICAgIFdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX05PTkUsCisgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpOwor
CiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0aWVzKGdPYmplY3RDbGFzcywgTl9Q
Uk9QRVJUSUVTLCBzT2JqUHJvcGVydGllcyk7CiAKICAgICAvKioKQEAgLTQ3NTQsMyArNDg2Nywx
ODcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2NvcnNfYWxsb3dsaXN0KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBjb24KIAogICAgIGdldFBhZ2Uod2ViVmlldykuc2V0
Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFdURk1vdmUoYWxsb3dMaXN0VmVjdG9yKSk7CiB9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25maWd1cmVNZWRpYUNhcHR1cmUoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZCBjYXB0
dXJlS2luZCwgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgY2FwdHVyZVN0YXRlLCBib29sIGlzRnJv
bURpc3BsYXlDYXB0dXJlID0gZmFsc2UpCit7CisgICAgYXV0byYgcGFnZSA9IGdldFBhZ2Uod2Vi
Vmlldyk7CisgICAgYXV0byBtdXRlZFN0YXRlID0gcGFnZS5tdXRlZFN0YXRlRmxhZ3MoKTsKKwor
ICAgIHN3aXRjaCAoY2FwdHVyZVN0YXRlKSB7CisgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVS
RV9TVEFURV9OT05FOgorICAgICAgICBwYWdlLnN0b3BNZWRpYUNhcHR1cmUoY2FwdHVyZUtpbmQs
IFt3ZWJWaWV3LCBjYXB0dXJlS2luZF0geworICAgICAgICAgICAgc3dpdGNoIChjYXB0dXJlS2lu
ZCkgeworICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1
cmVLaW5kOjpBdWRpbzoKKyAgICAgICAgICAgICAgICBnX29iamVjdF9ub3RpZnlfYnlfcHNwZWMo
R19PQkpFQ1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BST1BfTUlDUk9QSE9ORV9DQVBUVVJF
X1NUQVRFXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OlZpZGVvOgorICAgICAgICAgICAg
ICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3Bl
cnRpZXNbUFJPUF9DQU1FUkFfQ0FQVFVSRV9TVEFURV0pOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVL
aW5kOjpBdWRpb1ZpZGVvOgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOgor
ICAgICAgICBzd2l0Y2ggKGNhcHR1cmVLaW5kKSB7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6QXVkaW86CisgICAgICAgICAgICBtdXRlZFN0
YXRlLnJlbW92ZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpBdWRpb0NhcHR1
cmVJc011dGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkNvcmU6Ok1l
ZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OlZpZGVvOgorICAgICAgICAgICAgaWYgKGlz
RnJvbURpc3BsYXlDYXB0dXJlKQorICAgICAgICAgICAgICAgIG11dGVkU3RhdGUucmVtb3ZlKFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGU6OlNjcmVlbkNhcHR1cmVJc011dGVkKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtdXRlZFN0YXRlLnJlbW92ZShXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpWaWRlb0NhcHR1cmVJc011dGVkKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1l
ZGlhQ2FwdHVyZUtpbmQ6OkF1ZGlvVmlkZW86CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBwYWdlLnNldE11
dGVkKG11dGVkU3RhdGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9NRURJQV9D
QVBUVVJFX1NUQVRFX01VVEVEOgorICAgICAgICBzd2l0Y2ggKGNhcHR1cmVLaW5kKSB7CisgICAg
ICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6QXVkaW86
CisgICAgICAgICAgICBtdXRlZFN0YXRlLmFkZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRl
ZFN0YXRlOjpBdWRpb0NhcHR1cmVJc011dGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OlZpZGVvOgor
ICAgICAgICAgICAgaWYgKGlzRnJvbURpc3BsYXlDYXB0dXJlKQorICAgICAgICAgICAgICAgIG11
dGVkU3RhdGUuYWRkKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGU6OlNjcmVlbkNh
cHR1cmVJc011dGVkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtdXRlZFN0
YXRlLmFkZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpWaWRlb0NhcHR1cmVJ
c011dGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1ZGlvVmlkZW86CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBwYWdlLnNldE11dGVkKG11dGVkU3RhdGUpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisK
Ky8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZToKKyAqIEB3
ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldCB0aGUgY2FtZXJhIGNhcHR1cmUg
c3RhdGUgb2YgYSAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBSZXR1cm5zOiBUaGUgI1dlYktpdE1l
ZGlhQ2FwdHVyZVN0YXRlIG9mIHRoZSBjYW1lcmEgZGV2aWNlLiBJZiBXZWJLaXRTZXR0aW5nczpl
bmFibGUtbWVkaWFzdHJlYW0KKyAqIGlzIEZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiAl
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORS4KKyAqCisgKiBTaW5jZTogMi4zNAorICov
CitXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0
dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgYXV0byBzdGF0ZSA9IGdl
dFBhZ2Uod2ViVmlldykucmVwb3J0ZWRNZWRpYVN0YXRlKCk7CisgICAgaWYgKHN0YXRlICYgV2Vi
Q29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZTo6SGFzQWN0aXZlVmlkZW9DYXB0dXJlRGV2
aWNlKQorICAgICAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOwor
ICAgIGlmIChzdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6Okhhc011
dGVkVmlkZW9DYXB0dXJlRGV2aWNlKQorICAgICAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRV
UkVfU1RBVEVfTVVURUQ7CisgICAgcmV0dXJuIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05P
TkU7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0
ZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHN0YXRlOiBhICNXZWJLaXRN
ZWRpYUNhcHR1cmVTdGF0ZQorICoKKyAqIFNldCB0aGUgY2FtZXJhIGNhcHR1cmUgc3RhdGUgb2Yg
YSAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBJZiBXZWJLaXRTZXR0aW5nczplbmFibGUtbWVkaWFz
dHJlYW0gaXMgRkFMU0UsIHRoaXMgbWV0aG9kIHdpbGwgaGF2ZSBubyB2aXNpYmxlIGVmZmVjdC4g
T25jZSB0aGUKKyAqIHN0YXRlIG9mIHRoZSBkZXZpY2UgaGFzIGJlZW4gc2V0IHRvICVXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIGl0IGNhbm5vdCBiZSBjaGFuZ2VkCisgKiBhbnltb3Jl
LiBUaGUgcGFnZSBjYW4gaG93ZXZlciByZXF1ZXN0IGNhcHR1cmUgYWdhaW4gdXNpbmcgdGhlIG1l
ZGlhRGV2aWNlcyBBUEkuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwordm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdE1lZGlhQ2FwdHVyZVN0YXRlIHN0YXRlKQoreworICAgIGlmICh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpID09IFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX05PTkUpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdFdlYlZpZXdDb25maWd1
cmVNZWRpYUNhcHR1cmUod2ViVmlldywgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0
dXJlS2luZDo6VmlkZW8sIHN0YXRlKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmll
dworICoKKyAqIEdldCB0aGUgbWljcm9waG9uZSBjYXB0dXJlIHN0YXRlIG9mIGEgI1dlYktpdFdl
YlZpZXcuCisgKgorICogUmV0dXJuczogVGhlICNXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBvZiB0
aGUgbWljcm9waG9uZSBkZXZpY2UuIElmIFdlYktpdFNldHRpbmdzOmVuYWJsZS1tZWRpYXN0cmVh
bQorICogaXMgRkFMU0UsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuICVXRUJLSVRfTUVESUFfQ0FQ
VFVSRV9TVEFURV9OT05FLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK1dlYktpdE1lZGlhQ2Fw
dHVyZVN0YXRlIHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgYXV0byBzdGF0ZSA9IGdldFBhZ2Uod2ViVmll
dykucmVwb3J0ZWRNZWRpYVN0YXRlKCk7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZTo6SGFzQWN0aXZlQXVkaW9DYXB0dXJlRGV2aWNlKQorICAgICAg
ICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOworICAgIGlmIChzdGF0
ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6Okhhc011dGVkQXVkaW9DYXB0
dXJlRGV2aWNlKQorICAgICAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVU
RUQ7CisgICAgcmV0dXJuIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYl92aWV3X3NldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGU6CisgKiBA
d2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBzdGF0ZTogYSAjV2ViS2l0TWVkaWFDYXB0
dXJlU3RhdGUKKyAqCisgKiBTZXQgdGhlIG1pY3JvcGhvbmUgY2FwdHVyZSBzdGF0ZSBvZiBhICNX
ZWJLaXRXZWJWaWV3LgorICoKKyAqIElmIFdlYktpdFNldHRpbmdzOmVuYWJsZS1tZWRpYXN0cmVh
bSBpcyBGQUxTRSwgdGhpcyBtZXRob2Qgd2lsbCBoYXZlIG5vIHZpc2libGUgZWZmZWN0LiBPbmNl
IHRoZQorICogc3RhdGUgb2YgdGhlIGRldmljZSBoYXMgYmVlbiBzZXQgdG8gJVdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX05PTkUgaXQgY2Fubm90IGJlIGNoYW5nZWQKKyAqIGFueW1vcmUuIFRo
ZSBwYWdlIGNhbiBob3dldmVyIHJlcXVlc3QgY2FwdHVyZSBhZ2FpbiB1c2luZyB0aGUgbWVkaWFE
ZXZpY2VzIEFQSS4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCit2b2lkIHdlYmtpdF93ZWJfdmll
d19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdl
YktpdE1lZGlhQ2FwdHVyZVN0YXRlIHN0YXRlKQoreworICAgIGlmICh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSA9PSBXRUJLSVRfTUVESUFfQ0FQ
VFVSRV9TVEFURV9OT05FKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJraXRXZWJWaWV3Q29u
ZmlndXJlTWVkaWFDYXB0dXJlKHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlh
Q2FwdHVyZUtpbmQ6OkF1ZGlvLCBzdGF0ZSk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3
X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqCisgKiBHZXQgdGhlIGRpc3BsYXkgY2FwdHVyZSBzdGF0ZSBvZiBhICNXZWJLaXRXZWJW
aWV3LgorICoKKyAqIFJldHVybnM6IFRoZSAjV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgb2YgdGhl
IGRpc3BsYXkgZGV2aWNlLiBJZiBXZWJLaXRTZXR0aW5nczplbmFibGUtbWVkaWFzdHJlYW0KKyAq
IGlzIEZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiAlV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfTk9ORS4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCitXZWJLaXRNZWRpYUNhcHR1cmVT
dGF0ZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZShXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQoreworICAgIGF1dG8gc3RhdGUgPSBnZXRQYWdlKHdlYlZpZXcpLnJlcG9y
dGVkTWVkaWFTdGF0ZSgpOworICAgIGlmIChzdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGU6Okhhc0FjdGl2ZURpc3BsYXlDYXB0dXJlRGV2aWNlKQorICAgICAgICByZXR1
cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOworICAgIGlmIChzdGF0ZSAmIFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6Okhhc011dGVkRGlzcGxheUNhcHR1cmVE
ZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDsK
KyAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORTsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmll
dzogYSAjV2ViS2l0V2ViVmlldworICogQHN0YXRlOiBhICNXZWJLaXRNZWRpYUNhcHR1cmVTdGF0
ZQorICoKKyAqIFNldCB0aGUgZGlzcGxheSBjYXB0dXJlIHN0YXRlIG9mIGEgI1dlYktpdFdlYlZp
ZXcuCisgKgorICogSWYgV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLW1lZGlhc3RyZWFtIGlzIEZBTFNF
LCB0aGlzIG1ldGhvZCB3aWxsIGhhdmUgbm8gdmlzaWJsZSBlZmZlY3QuIE9uY2UgdGhlCisgKiBz
dGF0ZSBvZiB0aGUgZGV2aWNlIGhhcyBiZWVuIHNldCB0byAlV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfTk9ORSBpdCBjYW5ub3QgYmUgY2hhbmdlZAorICogYW55bW9yZS4gVGhlIHBhZ2UgY2Fu
IGhvd2V2ZXIgcmVxdWVzdCBjYXB0dXJlIGFnYWluIHVzaW5nIHRoZSBtZWRpYURldmljZXMgQVBJ
LgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9kaXNw
bGF5X2NhcHR1cmVfc3RhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TWVkaWFDYXB0
dXJlU3RhdGUgc3RhdGUpCit7CisgICAgaWYgKHdlYmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9j
YXB0dXJlX3N0YXRlKHdlYlZpZXcpID09IFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUp
CisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdFdlYlZpZXdDb25maWd1cmVNZWRpYUNhcHR1
cmUod2ViVmlldywgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6Vmlk
ZW8sIHN0YXRlLCB0cnVlKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGQ3YTQzMjA0YmU2OTNmMmE3
ZWY4NjI0MGVhZjU2N2ZlNzAwNTJhMmMuLmZiYWIxYWZlOWNhMDlmNWU2YTY3OTNmNTA2NWYwOGZj
NzZiZmVkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApAQCAtOTEsNiArOTEsNyBAQCB2b2lkIHdlYmtpdFdl
YlZpZXdJbnNlY3VyZUNvbnRlbnREZXRlY3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0SW5zZWN1
cmVDb250ZW50RQogYm9vbCB3ZWJraXRXZWJWaWV3RW1pdFNob3dOb3RpZmljYXRpb24oV2ViS2l0
V2ViVmlldyosIFdlYktpdE5vdGlmaWNhdGlvbiopOwogdm9pZCB3ZWJraXRXZWJWaWV3V2ViUHJv
Y2Vzc1Rlcm1pbmF0ZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbik7CiB2b2lkIHdlYmtpdFdlYlZpZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQoV2ViS2l0
V2ViVmlldyopOwordm9pZCB3ZWJraXRXZWJWaWV3TWVkaWFDYXB0dXJlU3RhdGVEaWRDaGFuZ2Uo
V2ViS2l0V2ViVmlldyosIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7
CiB2b2lkIHdlYmtpdFdlYlZpZXdTZWxlY3Rpb25EaWRDaGFuZ2UoV2ViS2l0V2ViVmlldyopOwog
dm9pZCB3ZWJraXRXZWJWaWV3UmVxdWVzdEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKFdlYktp
dFdlYlZpZXcqLCBXZWJLaXQ6Okluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3QmKTsKIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogd2Via2l0V2ViVmlld0dldFdlYnNp
dGVEYXRhTWFuYWdlcihXZWJLaXRXZWJWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0LmgKaW5kZXggYWQzODJiMWJhNGRmMzk0ODYwOWRhMmIyZmZlOGY0YWM1MmUwYzhmZC4u
M2Y4Y2UwYzAwNWZiNmVlYzExN2E5OTgyYWFiMmJjOWRmOTE1YTY3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QuaApAQCAtNjQsNiArNjQsOSBAQCB3ZWJraXRfdXNlcl9tZWRp
YV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UgKFdlYktpdFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZQogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lv
bl9pc19mb3JfdmlkZW9fZGV2aWNlIChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAq
cmVxdWVzdCk7CiAKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF91c2VyX21lZGlhX3Blcm1p
c3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlIChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdCAqcmVxdWVzdCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAppbmRleCA4YjQyMDhlZmNkNzYx
NTAyNjcwYzNjY2VjZjNhMGY4OGExMTQ5MzY0Li45ODU0OTVkODg2MTcyOWZlZDk4NTFmNjVjZWMz
YTI1YWUyOGM1MTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaApAQCAtMjA1LDYgKzIwNSwyMiBAQCB0eXBlZGVmIGVudW0gewogICAgIFdF
QktJVF9XRUJfUFJPQ0VTU19URVJNSU5BVEVEX0JZX0FQSQogfSBXZWJLaXRXZWJQcm9jZXNzVGVy
bWluYXRpb25SZWFzb247CiAKKy8qKgorICogV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU6CisgKiBA
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORTogTWVkaWEgY2FwdHVyZSBpcyBkaXNhYmxl
ZC4KKyAqIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkU6IE1lZGlhIGNhcHR1cmUg
aXMgYWN0aXZlLgorICogQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEOiBNZWRpYSBj
YXB0dXJlIGlzIG11dGVkLgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lmeSB0aGUg
Y2FwdHVyZSBzdGF0ZSBvZiBhIG1lZGlhIGRldmljZS4KKyAqCisgKiBTaW5jZTogMi4zNAorICov
Cit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUsCisg
ICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFLAorICAgIFdFQktJVF9NRURJQV9D
QVBUVVJFX1NUQVRFX01VVEVELAorfSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZTsKKwogc3RydWN0
IF9XZWJLaXRXZWJWaWV3IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZSBwYXJlbnQ7CiAKQEAgLTYw
MCw2ICs2MTYsMjcgQEAgd2Via2l0X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25z
aXZlICAgICAgICAoV2ViS2l0V2ViVmlldwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3Zp
ZXdfdGVybWluYXRlX3dlYl9wcm9jZXNzICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgV2ViS2l0TWVkaWFDYXB0dXJlU3Rh
dGUKK3dlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKworV0VCS0lUX0FQSSB2b2lk
Cit3ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRl
ICAgIHN0YXRlKTsKKworV0VCS0lUX0FQSSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQord2Via2l0
X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93
ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgICAgc3RhdGUp
OworCitXRUJLSVRfQVBJIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCit3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAg
ICAgICAgICp3ZWJfdmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3Nl
dF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
ICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSAgICBzdGF0ZSk7CisKIEdfRU5E
X0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggYjVm
M2U3ZDYwZDIwMmUwYzY1Yjk3NzgzZWRlNzRlMDlmN2FlNzhiOS4uMzZkNTQyODE3NDg3ZDI4ZTBi
MTE1YzEwNjhlNmZlNDVmYTQyMjI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0
CkBAIC0xOTksNiArMTk5LDcgQEAgV2ViS2l0U25hcHNob3RPcHRpb25zCiBXZWJLaXRTbmFwc2hv
dFJlZ2lvbgogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uCiBXZWJLaXRBdXRvcGxh
eVBvbGljeQorV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKIAogPFNVQlNFQ1RJT04gRWRpdGluZyBD
b21tYW5kcz4KIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUCkBAIC0yOTMsNiArMjk0LDEyIEBA
IHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcwogd2Via2l0X3dlYl92aWV3X2dl
dF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlCiB3ZWJraXRfd2ViX3ZpZXdfdGVybWluYXRlX3dl
Yl9wcm9jZXNzCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2NvcnNfYWxsb3dsaXN0Cit3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3Jv
cGhvbmVfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9z
dGF0ZQord2Via2l0X3dlYl92aWV3X3NldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKK3dlYmtp
dF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdfc2V0
X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZQogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApAQCAtNzk2LDYgKzgwMyw3IEBAIHdlYmtpdF9u
YXZpZ2F0aW9uX2FjdGlvbl9nZXRfdHlwZQogV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QKIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2F1ZGlvX2RldmljZQogd2Vi
a2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlCit3ZWJraXRfdXNl
cl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZQogCiA8U1VCU0VDVElPTiBT
dGFuZGFyZD4KIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAppbmRleCBiZTE0ZDM2Mzc5OGYwZDI0ZTVhOTRhZTcw
YzE0NzA5NTAyMmM5MDI3Li4yM2U5NjI5YTliOTlkZjNiNmJlOTdjM2RjMDVmNDY0NTVjYWE4NDgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCkBAIC02NCw2ICs2NCw5IEBA
IHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2F1ZGlvX2RldmljZSAoV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlCiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfdXNl
cl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl92aWRlb19kZXZpY2UgKFdlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKIAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0
X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlzcGxheV9kZXZpY2UgKFdlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmlu
ZGV4IDQzYWZjYTAzMGQ5M2Q1ODFhMWZjMzM0NTk1NGEzZDFlMGQ5OTlkOTEuLjcwOGFjYzJmNGM0
MTU4Y2YxMWY0YTI0MDdhNTg4YjJjMzkxYTBlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCkBAIC0xODYsNiArMTg2LDIyIEBAIHR5cGVk
ZWYgZW51bSB7CiB0eXBlZGVmIHZvaWQgKCogV2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFjaykg
KFdlYktpdFdlYlZpZXcgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICB1c2VyX2RhdGEpOwogCisvKioKKyAqIFdl
YktpdE1lZGlhQ2FwdHVyZVN0YXRlOgorICogQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05P
TkU6IE1lZGlhIGNhcHR1cmUgaXMgZGlzYWJsZWQuCisgKiBAV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfQUNUSVZFOiBNZWRpYSBjYXB0dXJlIGlzIGFjdGl2ZS4KKyAqIEBXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9NVVRFRDogTWVkaWEgY2FwdHVyZSBpcyBtdXRlZC4KKyAqCisgKiBFbnVt
IHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNhcHR1cmUgc3RhdGUgb2YgYSBtZWRpYSBkZXZp
Y2UuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLAorICAgIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRF
X0FDVElWRSwKKyAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRCwKK30gV2ViS2l0
TWVkaWFDYXB0dXJlU3RhdGU7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAgR09iamVj
dCBwYXJlbnQ7CiAKQEAgLTU3Nyw2ICs1OTMsMjcgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRf
d2ViX3ZpZXdfc2V0X2NvcnNfYWxsb3dsaXN0ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJW
aWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogY29uc3QgICAgICAgKmFsbG93
bGlzdCk7CiAKK1dFQktJVF9BUEkgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJf
dmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgKndlYl92aWV3KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAg
ICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlICAgIHN0YXRlKTsKKwor
V0VCS0lUX0FQSSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAg
ICAqd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfbWlj
cm9waG9uZV9jYXB0dXJlX3N0YXRlICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgICAgc3RhdGUpOworCitXRUJLSVRfQVBJ
IFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2Fw
dHVyZV9zdGF0ZSAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmll
dyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1
cmVfc3RhdGUgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSAgICBzdGF0ZSk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0x
LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS0xLjAtc2VjdGlvbnMudHh0CmluZGV4IDRiNjZiYjk1ZjEzMjZiZDgzODMyYjY4ZjQyOWMyMWVm
Njg4MDhmMzguLmNiZGI4YTU2ZTIyZDRmYWE2NDBlMWE3MDhjMzAwMzExYmIxNDg5MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rp
b25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEu
MC1zZWN0aW9ucy50eHQKQEAgLTE3Myw2ICsxNzMsNyBAQCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRF
dmVudAogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uCiBXZWJLaXRGcmFtZURpc3Bs
YXllZENhbGxiYWNrCiBXZWJLaXRBdXRvcGxheVBvbGljeQorV2ViS2l0TWVkaWFDYXB0dXJlU3Rh
dGUKIAogPFNVQlNFQ1RJT04gRWRpdGluZyBDb21tYW5kcz4KIFdFQktJVF9FRElUSU5HX0NPTU1B
TkRfQ1VUCkBAIC0yNjUsNiArMjY2LDEyIEBAIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9w
b2xpY2llcwogd2Via2l0X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlCiB3
ZWJraXRfd2ViX3ZpZXdfdGVybWluYXRlX3dlYl9wcm9jZXNzCiB3ZWJraXRfd2ViX3ZpZXdfc2V0
X2NvcnNfYWxsb3dsaXN0Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRl
Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dl
Yl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X3NldF9taWNy
b3Bob25lX2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJl
X3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZQogCiA8U1VC
U0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApA
QCAtODAwLDYgKzgwNyw3IEBAIHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfdHlwZQogV2Vi
S2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Np
b25faXNfZm9yX2F1ZGlvX2RldmljZQogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19m
b3JfdmlkZW9fZGV2aWNlCit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNw
bGF5X2RldmljZQogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0Q2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGY2MmNlNjg0MGZhNDM0NzhlZTliODQxMDM1MzcyZDk4NGU4ZjNlZDcuLjM0YmUxNzQz
OTM0MDJmM2I3MWY2NzhiMmUwMTQ4OTdhOGU5ZDU4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTQyNyw2ICs5NDI3LDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnVwZGF0ZVBsYXlpbmdNZWRpYURpZENoYW5nZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MgbmUKIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVJlcG9ydGVkTWVkaWFDYXB0dXJl
U3RhdGUoKQogeworICAgIGlmIChtX2lzQ2xvc2VkKQorICAgICAgICByZXR1cm47CisKICAgICBh
dXRvIGFjdGl2ZUNhcHR1cmVTdGF0ZSA9IG1fbWVkaWFTdGF0ZSAmIE1lZGlhUHJvZHVjZXI6Ok1l
ZGlhQ2FwdHVyZU1hc2s7CiAgICAgaWYgKG1fcmVwb3J0ZWRNZWRpYUNhcHR1cmVTdGF0ZSA9PSBh
Y3RpdmVDYXB0dXJlU3RhdGUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NjBjY2ZjYzIyNzdjMDE3YWUzMmFkN2Q1
YzEzNDhmM2I2NzNhNDA0Li40ZjYwZDBlOWU0ZDNmMGU4Njg0YWY5OTdmYjNlNzc5NGNiZTNmZmE4
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzUgQEAKKzIwMjEtMDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHTGliXSBFeHBvc2UgQVBJIHRvIGFjY2Vzcy9tb2RpZnkgY2Fw
dHVyZSBkZXZpY2VzIHN0YXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI3OTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIEdUSyBNaW5pQnJvd3NlciBpcyBub3cgYWJsZSB0byBzaG93IG1lZGlh
IGNhcHR1cmUgaW5kaWNhdG9ycywgdGhyb3VnaCB0aGUgVVJJIGVudHJ5LiBBCisgICAgICAgIG5l
dyBBUEkgdGVzdCB3YXMgYWRkZWQsIGNoZWNraW5nIHN1cHBvcnQgZm9yIGdldERpc3BsYXlNZWRp
YSgpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYzoKKyAgICAgICAg
KGRlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJv
d3NlcldpbmRvdy5jOgorICAgICAgICAod2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlQ2hhbmdlZCk6
CisgICAgICAgICh3ZWJWaWV3VXJpRW50cnlJY29uUHJlc3NlZCk6CisgICAgICAgIChicm93c2Vy
V2luZG93U3dpdGNoVGFiKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RzKToKKyAgICAgICAgKHRlc3RXZWJWaWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RzKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RGlzcGxheVVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAgKGRpc3Bs
YXlDYXB0dXJlQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6d2FpdFVudGlsRGlzcGxh
eUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyk6CisgICAgICAgIChtaWNyb3Bob25lQ2FwdHVyZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OndhaXRVbnRpbE1pY3JvcGhvbmVDYXB0dXJlU3Rh
dGVDaGFuZ2VkVG8pOgorICAgICAgICAoY2FtZXJhQ2FwdHVyZUNoYW5nZWQpOgorICAgICAgICAo
V2ViVmlld1Rlc3Q6OndhaXRVbnRpbENhbWVyYUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaDoKKyAgICAg
ICAgKiBmbGF0cGFrL2ZsYXRwYWt1dGlscy5weToKKyAgICAgICAgKFdlYmtpdEZsYXRwYWsucnVu
X2luX3NhbmRib3gpOgorCiAyMDIxLTA3LTE2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVu
ZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFdLV2ViVmlldyBqYXZhc2NyaXB0IGluamVjdGlvbiBk
b2Vzbid0IHdvcmsgaWYgYXBwIGluY2x1ZGVzIFdLQXBwQm91bmREb21haW5zCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jIGIvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0Jyb3dzZXJUYWIuYwppbmRleCA5YjM2NjJiMjI0YTY2NzRhYzJjMjViZDI5ZmVhYTk4NjEw
NzgxZTgyLi4xYzg0ZjMwYjJlYTk2ZGQwYzE2ODkxOGY5ZDYzNzczYjhlMjU0OGEzIDEwMDY0NAot
LS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9Ccm93c2VyVGFiLmMKQEAgLTMwNywxNiArMzA3LDIwIEBAIHN0YXRpYyBnYm9v
bGVhbiBkZWNpZGVQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJL
aXRQZXJtaXNzaW9uCiAgICAgICAgIHRleHQgPSBnX3N0cmR1cCgiQWxsb3cgbm90aWZpY2F0aW9u
cyByZXF1ZXN0PyIpOwogICAgIH0gZWxzZSBpZiAoV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlT
U0lPTl9SRVFVRVNUKHJlcXVlc3QpKSB7CiAgICAgICAgIHRpdGxlID0gIlVzZXJNZWRpYSByZXF1
ZXN0IjsKLSAgICAgICAgZ2Jvb2xlYW4gaXNfZm9yX2F1ZGlvX2RldmljZSA9IHdlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2F1ZGlvX2RldmljZShXRUJLSVRfVVNFUl9NRURJQV9Q
RVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOwotICAgICAgICBnYm9vbGVhbiBpc19mb3Jfdmlk
ZW9fZGV2aWNlID0gd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2
aWNlKFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisgICAg
ICAgIGdib29sZWFuIGlzRm9yQXVkaW9EZXZpY2UgPSB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNz
aW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UoV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFV
RVNUKHJlcXVlc3QpKTsKKyAgICAgICAgZ2Jvb2xlYW4gaXNGb3JWaWRlb0RldmljZSA9IHdlYmtp
dF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZShXRUJLSVRfVVNFUl9N
RURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworICAgICAgICBnYm9vbGVhbiBpc0Zv
ckRpc3BsYXlEZXZpY2UgPSB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNw
bGF5X2RldmljZShXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkp
OworCiAgICAgICAgIGNvbnN0IGNoYXIgKm1lZGlhVHlwZSA9IE5VTEw7Ci0gICAgICAgIGlmIChp
c19mb3JfYXVkaW9fZGV2aWNlKSB7Ci0gICAgICAgICAgICBpZiAoaXNfZm9yX3ZpZGVvX2Rldmlj
ZSkKKyAgICAgICAgaWYgKGlzRm9yQXVkaW9EZXZpY2UpIHsKKyAgICAgICAgICAgIGlmIChpc0Zv
clZpZGVvRGV2aWNlKQogICAgICAgICAgICAgICAgIG1lZGlhVHlwZSA9ICJhdWRpby92aWRlbyI7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbWVkaWFUeXBlID0gImF1ZGlvIjsK
LSAgICAgICAgfSBlbHNlIGlmIChpc19mb3JfdmlkZW9fZGV2aWNlKQorICAgICAgICB9IGVsc2Ug
aWYgKGlzRm9yVmlkZW9EZXZpY2UpCiAgICAgICAgICAgICBtZWRpYVR5cGUgPSAidmlkZW8iOwor
ICAgICAgICBlbHNlIGlmIChpc0ZvckRpc3BsYXlEZXZpY2UpCisgICAgICAgICAgICBtZWRpYVR5
cGUgPSAiZGlzcGxheSI7CiAgICAgICAgIHRleHQgPSBnX3N0cmR1cF9wcmludGYoIkFsbG93IGFj
Y2VzcyB0byAlcyBkZXZpY2U/IiwgbWVkaWFUeXBlKTsKICAgICB9IGVsc2UgaWYgKFdFQktJVF9J
U19JTlNUQUxMX01JU1NJTkdfTUVESUFfUExVR0lOU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVz
dCkpIHsKICAgICAgICAgdGl0bGUgPSAiTWVkaWEgcGx1Z2luIG1pc3NpbmcgcmVxdWVzdCI7CmRp
ZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jIGIvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwppbmRleCAwNjNlOTQ1Njg0OTBjYzcyMTkz
MjIyOTg3YjgwNWU3ZGZmZjk0ZmVhLi4xMThjYzIwMDIxNWIyMmRjZjA3OWYyNjYzYzIwOThiOWM0
MGZkMzVmIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5j
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKQEAgLTY0OSw2ICs2
NDksNzIgQEAgc3RhdGljIHZvaWQgZmF2aWNvbkNoYW5nZWQoV2ViS2l0V2ViVmlldyAqd2ViVmll
dywgR1BhcmFtU3BlYyAqcGFyYW1TcGVjLCBCcm93c2UKICAgICB1cGRhdGVVcmlFbnRyeUljb24o
d2luZG93KTsKIH0KIAorc3RhdGljIHZvaWQgd2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlQ2hhbmdl
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMsIEJyb3dzZXJX
aW5kb3cqIHdpbmRvdykKK3sKKyAgICBjb25zdCBnY2hhciogbmFtZSA9IGdfcGFyYW1fc3BlY19n
ZXRfbmFtZShwYXJhbVNwZWMpOworICAgIC8vIEZJWE1FOiB0aGUgVVJJIGVudHJ5IGlzIG5vdCBn
cmVhdCBzdG9yYWdlIGluIGNhc2UgbW9yZSB0aGFuIG9uZSBjYXB0dXJlIGRldmljZSBpcyBpbiB1
c2UsCisgICAgLy8gYmVjYXVzZSBpdCBjYW4gc3RvcmUgb25seSBvbmUgc2Vjb25kYXJ5IGljb24u
CisgICAgR3RrRW50cnkgKmVudHJ5ID0gR1RLX0VOVFJZKHdpbmRvdy0+dXJpRW50cnkpOworCisg
ICAgaWYgKGdfc3RyX2hhc19wcmVmaXgobmFtZSwgIm1pY3JvcGhvbmUiKSkgeworICAgICAgICBz
d2l0Y2ggKHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKHdlYlZp
ZXcpKSB7CisgICAgICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORToKKyAg
ICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VO
VFJZX0lDT05fU0VDT05EQVJZLCBOVUxMKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEOgorICAgICAgICAgICAgZ3RrX2Vu
dHJ5X3NldF9pY29uX2Zyb21faWNvbl9uYW1lKGVudHJ5LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRB
UlksICJtaWNyb3Bob25lLXNlbnNpdml0eS1tdXRlcy1zeW1ib2xpYyIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOgor
ICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21faWNvbl9uYW1lKGVudHJ5LCBHVEtf
RU5UUllfSUNPTl9TRUNPTkRBUlksICJhdWRpby1pbnB1dC1taWNyb3Bob25lLXN5bWJvbGljIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFz
X3ByZWZpeChuYW1lLCAiY2FtZXJhIikpIHsKKyAgICAgICAgc3dpdGNoICh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKSB7CisgICAgICAgIGNhc2UgV0VC
S0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORToKKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRf
aWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCBOVUxM
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX01VVEVEOgorICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21faWNvbl9u
YW1lKGVudHJ5LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlksICJjYW1lcmEtZGlzYWJsZWQtc3lt
Ym9saWMiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9D
QVBUVVJFX1NUQVRFX0FDVElWRToKKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9t
X2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCAiY2FtZXJhLXdlYi1z
eW1ib2xpYyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYg
KGdfc3RyX2hhc19wcmVmaXgobmFtZSwgImRpc3BsYXkiKSkgeworICAgICAgICBzd2l0Y2ggKHdl
YmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKSB7CisgICAg
ICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORToKKyAgICAgICAgICAgIGd0
a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VD
T05EQVJZLCBOVUxMKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9N
RURJQV9DQVBUVVJFX1NUQVRFX01VVEVEOgorICAgICAgICAgICAgLy8gRklYTUU6IEkgZm91bmQg
bm8gc3VpdGFibGUgaWNvbiBmb3IgdGhpcy4KKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNv
bl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCAibWVkaWEt
cGxheWJhY2stc3RvcC1zeW1ib2xpYyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOgorICAgICAgICAgICAgZ3RrX2Vu
dHJ5X3NldF9pY29uX2Zyb21faWNvbl9uYW1lKGVudHJ5LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRB
UlksICJ2aWRlby1kaXNwbGF5LXN5bWJvbGljIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgd2ViVmlld1VyaUVudHJ5SWNvblByZXNzZWQo
R3RrRW50cnkqIGVudHJ5LCBHdGtFbnRyeUljb25Qb3NpdGlvbiBwb3NpdGlvbiwgR2RrRXZlbnQq
IGV2ZW50LCBCcm93c2VyV2luZG93KiB3aW5kb3cpCit7CisgICAgaWYgKHBvc2l0aW9uICE9IEdU
S19FTlRSWV9JQ09OX1NFQ09OREFSWSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6
IFdoYXQgYWJvdXQgYXVkaW8vdmlkZW8/CisgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9IGJy
b3dzZXJfdGFiX2dldF93ZWJfdmlldyh3aW5kb3ctPmFjdGl2ZVRhYik7CisgICAgc3dpdGNoICh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSkgeworICAg
IGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORToKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDoKKyAgICAgICAgd2Via2l0
X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUod2ViVmlldywgV0VCS0lUX01FRElB
X0NBUFRVUkVfU1RBVEVfQUNUSVZFKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkU6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRf
ZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRF
X01VVEVEKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCB3ZWJWaWV3
SXNMb2FkaW5nQ2hhbmdlZChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBHUGFyYW1TcGVjICpwYXJh
bVNwZWMsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBnYm9vbGVhbiBpc0xvYWRpbmcg
PSB3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KTsKQEAgLTExODAsNiArMTI0Niwx
MiBAQCBzdGF0aWMgdm9pZCBicm93c2VyV2luZG93U3dpdGNoVGFiKEd0a05vdGVib29rICpub3Rl
Ym9vaywgQnJvd3NlclRhYiAqdGFiLCBndWludAogI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5
OCwgMCkKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcsICJzY3JvbGwtZXZlbnQiLCBHX0NB
TExCQUNLKHNjcm9sbEV2ZW50Q2FsbGJhY2spLCB3aW5kb3cpOwogI2VuZGlmCisgICAgZ19zaWdu
YWxfY29ubmVjdCh3ZWJWaWV3LCAibm90aWZ5OjpjYW1lcmEtY2FwdHVyZS1zdGF0ZSIsIEdfQ0FM
TEJBQ0sod2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlQ2hhbmdlZCksIHdpbmRvdyk7CisgICAgZ19z
aWduYWxfY29ubmVjdCh3ZWJWaWV3LCAibm90aWZ5OjptaWNyb3Bob25lLWNhcHR1cmUtc3RhdGUi
LCBHX0NBTExCQUNLKHdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZUNoYW5nZWQpLCB3aW5kb3cpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywgIm5vdGlmeTo6ZGlzcGxheS1jYXB0dXJlLXN0
YXRlIiwgR19DQUxMQkFDSyh3ZWJWaWV3TWVkaWFDYXB0dXJlU3RhdGVDaGFuZ2VkKSwgd2luZG93
KTsKKworICAgIGdfb2JqZWN0X3NldCh3aW5kb3ctPnVyaUVudHJ5LCAic2Vjb25kYXJ5LWljb24t
YWN0aXZhdGFibGUiLCBUUlVFLCBOVUxMKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+
dXJpRW50cnksICJpY29uLXByZXNzIiwgR19DQUxMQkFDSyh3ZWJWaWV3VXJpRW50cnlJY29uUHJl
c3NlZCksIHdpbmRvdyk7CiAKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YXJk
bGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qod2ViVmlldyk7CiAg
ICAgYnJvd3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRpb25NZW51KHdpbmRvdywgYmFja0ZvcndhcmRs
aXN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0VUlDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RVSUNsaWVudC5jcHAKaW5kZXggYWJhMzIxYzljYWU2MmE3ZTAwZjAzMzIxZTQ0Y2UwYzc1Y2Uy
ZGY4OC4uMDBmZTkyZDk4ZWZmNTAzMTUxZWZkMjI2OGEzMDZkNWYxZGZiYmI1NSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5j
cHAKQEAgLTI0MCw2ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBXZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdCogdXNlck1lZGlhUmVxdWVzdCA9IFdFQktJVF9VU0VSX01FRElB
X1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KTsKICAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUo
d2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfYXVkaW9fZGV2aWNlKHVzZXJNZWRp
YVJlcXVlc3QpID09IHRlc3QtPm1fZXhwZWN0ZWRBdWRpb01lZGlhKTsKICAgICAgICAgICAgIGdf
YXNzZXJ0X3RydWUod2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2
aWNlKHVzZXJNZWRpYVJlcXVlc3QpID09IHRlc3QtPm1fZXhwZWN0ZWRWaWRlb01lZGlhKTsKKyAg
ICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19m
b3JfZGlzcGxheV9kZXZpY2UodXNlck1lZGlhUmVxdWVzdCkgPT0gdGVzdC0+bV9leHBlY3RlZERp
c3BsYXlNZWRpYSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGVzdC0+bV9hbGxvd1Blcm1p
c3Npb25SZXF1ZXN0cykKQEAgLTI2Myw2ICsyNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV92
ZXJpZnlNZWRpYVR5cGVzKGZhbHNlKQogICAgICAgICAsIG1fZXhwZWN0ZWRBdWRpb01lZGlhKGZh
bHNlKQogICAgICAgICAsIG1fZXhwZWN0ZWRWaWRlb01lZGlhKGZhbHNlKQorICAgICAgICAsIG1f
ZXhwZWN0ZWREaXNwbGF5TWVkaWEoZmFsc2UpCiAgICAgICAgICwgbV9tb3VzZVRhcmdldE1vZGlm
aWVycygwKQogICAgIHsKICAgICAgICAgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nh
bl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdz
KG1fd2ViVmlldyksIFRSVUUpOwpAQCAtNDE1LDYgKzQxNyw3IEBAIHB1YmxpYzoKICAgICBnYm9v
bGVhbiBtX3ZlcmlmeU1lZGlhVHlwZXM7CiAgICAgZ2Jvb2xlYW4gbV9leHBlY3RlZEF1ZGlvTWVk
aWE7CiAgICAgZ2Jvb2xlYW4gbV9leHBlY3RlZFZpZGVvTWVkaWE7CisgICAgZ2Jvb2xlYW4gbV9l
eHBlY3RlZERpc3BsYXlNZWRpYTsKICAgICBXaW5kb3dQcm9wZXJ0aWVzIG1fd2luZG93UHJvcGVy
dGllczsKICAgICBIYXNoU2V0PFdURjo6U3RyaW5nPiBtX3dpbmRvd1Byb3BlcnRpZXNDaGFuZ2Vk
OwogICAgIEdSZWZQdHI8V2ViS2l0SGl0VGVzdFJlc3VsdD4gbV9tb3VzZVRhcmdldEhpdFRlc3RS
ZXN1bHQ7CkBAIC0xMDAxLDE2ICsxMDA0LDQ0IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAg
ICAgdGVzdC0+bV92ZXJpZnlNZWRpYVR5cGVzID0gVFJVRTsKICAgICB0ZXN0LT5tX2V4cGVjdGVk
QXVkaW9NZWRpYSA9IFRSVUU7CiAgICAgdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEgPSBUUlVF
OworICAgIHRlc3QtPm1fZXhwZWN0ZWREaXNwbGF5TWVkaWEgPSBGQUxTRTsKIAogICAgIC8vIFRl
c3QgZGVueWluZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KICAgICB0ZXN0LT5tX2FsbG93UGVybWlz
c2lvblJlcXVlc3RzID0gZmFsc2U7CiAgICAgdGVzdC0+bG9hZEh0bWwodXNlck1lZGlhUmVxdWVz
dEhUTUwsIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJOb3RB
bGxvd2VkRXJyb3IiKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfdmlld19nZXRf
ZGlzcGxheV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmlldyksID09LCBXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9OT05FKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfdmll
d19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmlldyksID09LCBXRUJL
SVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtp
dF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3KSwgPT0s
IFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUpOwogCiAgICAgLy8gVGVzdCBhbGxvd2lu
ZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KICAgICB0ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVl
c3RzID0gdHJ1ZTsKICAgICB0ZXN0LT5sb2FkSHRtbCh1c2VyTWVkaWFSZXF1ZXN0SFRNTCwgbnVs
bHB0cik7CiAgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIk9LIik7CisgICAgZ19h
c3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh0
ZXN0LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7Cisg
ICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVy
ZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVf
QUNUSVZFKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJh
X2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX0FDVElWRSk7CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2Fw
dHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01V
VEVEKTsKKyAgICB0ZXN0LT53YWl0VW50aWxNaWNyb3Bob25lQ2FwdHVyZVN0YXRlQ2hhbmdlZFRv
KFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEKTsKKworICAgIHdlYmtpdF93ZWJfdmll
d19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmlldywgV0VCS0lUX01F
RElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFKTsKKyAgICB0ZXN0LT53YWl0VW50aWxNaWNyb3Bob25l
Q2FwdHVyZVN0YXRlQ2hhbmdlZFRvKFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRSk7
CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1f
d2ViVmlldywgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQpOworICAgIHRlc3QtPndh
aXRVbnRpbENhbWVyYUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyhXRUJLSVRfTUVESUFfQ0FQVFVSRV9T
VEFURV9NVVRFRCk7CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0
YXRlKHRlc3QtPm1fd2ViVmlldywgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFKTsK
KyAgICB0ZXN0LT53YWl0VW50aWxDYW1lcmFDYXB0dXJlU3RhdGVDaGFuZ2VkVG8oV0VCS0lUX01F
RElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFKTsKKworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfY2Ft
ZXJhX2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9T
VEFURV9OT05FKTsKKyAgICB0ZXN0LT53YWl0VW50aWxDYW1lcmFDYXB0dXJlU3RhdGVDaGFuZ2Vk
VG8oV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CisKKyAgICAvLyBBIGRlLWFjdGl2
YXRlZCBjYXB0dXJlIGRldmljZSBjYW5ub3QgYmUgcmUtYWN0aXZhdGVkLgorICAgIHdlYmtpdF93
ZWJfdmlld19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3LCBXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0
X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwg
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CisKKyAgICBnX2Fzc2VydF9jbXB1aW50
KHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2Vi
VmlldyksID09LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUpOwogCiAgICAgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBlbmFibGVkKTsK
ICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tb2NrX2NhcHR1cmVfZGV2aWNlcyhzZXR0
aW5ncywgRkFMU0UpOwpAQCAtMTA0MSwxMSArMTA3Miw4MSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Vmlld0F1ZGlvT25seVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRl
c3QsCiAgICAgdGVzdC0+bV92ZXJpZnlNZWRpYVR5cGVzID0gVFJVRTsKICAgICB0ZXN0LT5tX2V4
cGVjdGVkQXVkaW9NZWRpYSA9IFRSVUU7CiAgICAgdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEg
PSBGQUxTRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkRGlzcGxheU1lZGlhID0gRkFMU0U7CiAKICAg
ICAvLyBUZXN0IGRlbnlpbmcgYSBwZXJtaXNzaW9uIHJlcXVlc3QuCiAgICAgdGVzdC0+bV9hbGxv
d1Blcm1pc3Npb25SZXF1ZXN0cyA9IGZhbHNlOwogICAgIHRlc3QtPmxvYWRIdG1sKHVzZXJNZWRp
YVJlcXVlc3RIVE1MLCBudWxscHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxUaXRsZUNoYW5nZWRU
bygiTm90QWxsb3dlZEVycm9yIik7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lU
X01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9
PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmll
dyksID09LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FKTsKKworICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgZW5hYmxlZCk7CisgICAg
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbW9ja19jYXB0dXJlX2RldmljZXMoc2V0dGluZ3Ms
IEZBTFNFKTsKKyAgICB3ZWJraXRTZXR0aW5nc1NldE1lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJl
Q29ubmVjdGlvbihzZXR0aW5ncywgVFJVRSk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
RGlzcGxheVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCit7CisgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dl
Yl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIGdib29sZWFuIGVuYWJs
ZWQgPSB3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MpOwor
ICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgVFJV
RSk7CisgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbW9ja19jYXB0dXJlX2RldmljZXMo
c2V0dGluZ3MsIFRSVUUpOworICAgIHdlYmtpdFNldHRpbmdzU2V0TWVkaWFDYXB0dXJlUmVxdWly
ZXNTZWN1cmVDb25uZWN0aW9uKHNldHRpbmdzLCBGQUxTRSk7CisKKyAgICB0ZXN0LT5zaG93SW5X
aW5kb3coKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGlzcGxheU1lZGlhUmVxdWVzdEhUTUwg
PSAiPGh0bWw+IgorICAgICAgICAiICA8c2NyaXB0PiIKKyAgICAgICAgIiAgZnVuY3Rpb24gcnVu
VGVzdCgpIgorICAgICAgICAiICB7IgorICAgICAgICAiICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXREaXNwbGF5TWVkaWEoKSIKKyAgICAgICAgIiAgICAgICAgLnRoZW4oKHN0cmVhbSkg
PT4geyBkb2N1bWVudC50aXRsZSA9IFwiT0tcIjsgfSkiCisgICAgICAgICIgICAgICAgIC5jYXRj
aCgoZSkgPT4geyBkb2N1bWVudC50aXRsZSA9IGUubmFtZTsgfSk7IgorICAgICAgICAiICB9Igor
ICAgICAgICAiICA8L3NjcmlwdD4iCisgICAgICAgICIgIDxib2R5PiIKKyAgICAgICAgIiAgPGlu
cHV0IHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MDsgdG9wOjA7IG1hcmdpbjowOyBw
YWRkaW5nOjBcIiB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCJjbGljayBtZVwiIG9uY2xpY2s9XCJy
dW5UZXN0KCk7XCIvPiIKKyAgICAgICAgIiAgPC9ib2R5PiIKKyAgICAgICAgIjwvaHRtbD4iOwor
CisgICAgdGVzdC0+bV92ZXJpZnlNZWRpYVR5cGVzID0gVFJVRTsKKyAgICB0ZXN0LT5tX2V4cGVj
dGVkQXVkaW9NZWRpYSA9IEZBTFNFOworICAgIHRlc3QtPm1fZXhwZWN0ZWRWaWRlb01lZGlhID0g
RkFMU0U7CisgICAgdGVzdC0+bV9leHBlY3RlZERpc3BsYXlNZWRpYSA9IFRSVUU7CisKKyAgICAv
LyBUZXN0IGRlbnlpbmcgYSBwZXJtaXNzaW9uIHJlcXVlc3QuCisgICAgdGVzdC0+bV9hbGxvd1Bl
cm1pc3Npb25SZXF1ZXN0cyA9IGZhbHNlOworICAgIHRlc3QtPmxvYWRIdG1sKGRpc3BsYXlNZWRp
YVJlcXVlc3RIVE1MLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKKyAgICB0ZXN0LT5jbGlja01vdXNlQnV0dG9uKDUsIDUpOworICAgIHRlc3QtPndhaXRVbnRp
bFRpdGxlQ2hhbmdlZFRvKCJOb3RBbGxvd2VkRXJyb3IiKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50
KHdlYmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmll
dyksID09LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FKTsKKyAgICBnX2Fzc2VydF9j
bXB1aW50KHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKHRlc3Qt
Pm1fd2ViVmlldyksID09LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FKTsKKyAgICBn
X2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUo
dGVzdC0+bV93ZWJWaWV3KSwgPT0sIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUpOwor
CisgICAgLy8gVGVzdCBhbGxvd2luZyBhIHBlcm1pc3Npb24gcmVxdWVzdC4KKyAgICB0ZXN0LT5t
X2FsbG93UGVybWlzc2lvblJlcXVlc3RzID0gdHJ1ZTsKKyAgICB0ZXN0LT5sb2FkSHRtbChkaXNw
bGF5TWVkaWFSZXF1ZXN0SFRNTCwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CisgICAgdGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbig1LCA1KTsKKyAgICB0ZXN0LT53
YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiT0siKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtp
dF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmlldyksID09
LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUpOworICAgIGdfYXNzZXJ0X2NtcHVp
bnQod2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUodGVzdC0+bV93
ZWJWaWV3KSwgPT0sIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUpOworICAgIGdfYXNz
ZXJ0X2NtcHVpbnQod2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSh0ZXN0
LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CisKKyAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZp
ZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEKTsKKyAgICB0ZXN0LT53YWl0VW50
aWxEaXNwbGF5Q2FwdHVyZVN0YXRlQ2hhbmdlZFRvKFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRF
X01VVEVEKTsKKworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRl
KHRlc3QtPm1fd2ViVmlldywgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxEaXNwbGF5Q2FwdHVyZVN0YXRlQ2hhbmdlZFRvKFdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX0FDVElWRSk7CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3Bs
YXlfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NU
QVRFX05PTkUpOworICAgIHRlc3QtPndhaXRVbnRpbERpc3BsYXlDYXB0dXJlU3RhdGVDaGFuZ2Vk
VG8oV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CisKKyAgICAvLyBBIGRlLWFjdGl2
YXRlZCBjYXB0dXJlIGRldmljZSBjYW5ub3QgYmUgcmUtYWN0aXZhdGVkLgorICAgIHdlYmtpdF93
ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmlldywgV0VCS0lU
X01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtp
dF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmlldyksID09
LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FKTsKIAogICAgIHdlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgZW5hYmxlZCk7CiAgICAgd2Via2l0
X3NldHRpbmdzX3NldF9lbmFibGVfbW9ja19jYXB0dXJlX2RldmljZXMoc2V0dGluZ3MsIEZBTFNF
KTsKQEAgLTEzNDMsNiArMTQ0NCw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ1c2VybWVkaWEtZW51bWVyYXRlZGV2aWNlcy1wZXJt
aXNzaW9uLWNoZWNrIiwgdGVzdFdlYlZpZXdVc2VyTWVkaWFFbnVtZXJhdGVEZXZpY2VzUGVybWlz
c2lvbkNoZWNrKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ1c2Vy
bWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0cyIsIHRlc3RXZWJWaWV3VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdWRp
by11c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0IiwgdGVzdFdlYlZpZXdBdWRpb09ubHlVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOworICAgIFVJQ2xpZW50VGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImRpc3BsYXktdXNlcm1lZGlhLXBlcm1pc3Npb24tcmVxdWVzdCIsIHRlc3RXZWJW
aWV3RGlzcGxheVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk7CiAjZW5kaWYKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IG1vdXNlIGNsaWNrIGluIFdQRS4KICNpZiBQTEFURk9STShHVEspCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVz
dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5j
cHAKaW5kZXggODI2NGViYWFkNTU3ZmQwZjlhMWMxYWE3NWQ5MjRhYzJjYTI5MGIxZC4uZDMyM2M4
MDY3YWZkMTEyMzRlNTYyNGY3N2E2MTljYzQ1ZDI3MjNhOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMjUwLDYgKzI1
MCw2MCBAQCB2b2lkIFdlYlZpZXdUZXN0OjpzZXRFZGl0YWJsZShib29sIGVkaXRhYmxlKQogICAg
IHdlYmtpdF93ZWJfdmlld19zZXRfZWRpdGFibGUobV93ZWJWaWV3LCBlZGl0YWJsZSk7CiB9CiAK
K3N0YXRpYyB2b2lkIGRpc3BsYXlDYXB0dXJlQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBHUGFyYW1TcGVjKiwgV2ViVmlld1Rlc3QqIHRlc3QpCit7CisgICAgaWYgKHRlc3QtPm1fZXhw
ZWN0ZWREaXNwbGF5Q2FwdHVyZVN0YXRlICYmICp0ZXN0LT5tX2V4cGVjdGVkRGlzcGxheUNhcHR1
cmVTdGF0ZSAhPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJW
aWV3KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9ieV9mdW5jKHdlYlZpZXcsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGRpc3BsYXlDYXB0dXJl
Q2hhbmdlZCksIHRlc3QpOworICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7
Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OndhaXRVbnRpbERpc3BsYXlDYXB0dXJlU3RhdGVDaGFu
Z2VkVG8oV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgZXhwZWN0ZWRDYXB0dXJlU3RhdGUpCit7Cisg
ICAgKm1fZXhwZWN0ZWREaXNwbGF5Q2FwdHVyZVN0YXRlID0gZXhwZWN0ZWRDYXB0dXJlU3RhdGU7
CisgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJub3RpZnk6OmRpc3BsYXktY2FwdHVy
ZS1zdGF0ZSIsIEdfQ0FMTEJBQ0soZGlzcGxheUNhcHR1cmVDaGFuZ2VkKSwgdGhpcyk7CisgICAg
Z19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0
X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUobV93ZWJWaWV3KSwgPT0sIGV4cGVj
dGVkQ2FwdHVyZVN0YXRlKTsKKyAgICBtX2V4cGVjdGVkRGlzcGxheUNhcHR1cmVTdGF0ZS5yZXNl
dCgpOworfQorCitzdGF0aWMgdm9pZCBtaWNyb3Bob25lQ2FwdHVyZUNoYW5nZWQoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgR1BhcmFtU3BlYyosIFdlYlZpZXdUZXN0KiB0ZXN0KQoreworICAgIGlm
ICh0ZXN0LT5tX2V4cGVjdGVkTWljcm9waG9uZUNhcHR1cmVTdGF0ZSAmJiAqdGVzdC0+bV9leHBl
Y3RlZE1pY3JvcGhvbmVDYXB0dXJlU3RhdGUgIT0gd2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bo
b25lX2NhcHR1cmVfc3RhdGUod2ViVmlldykpCisgICAgICAgIHJldHVybjsKKworICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3ZWJWaWV3LCByZWludGVycHJldF9jYXN0
PHZvaWQqPihtaWNyb3Bob25lQ2FwdHVyZUNoYW5nZWQpLCB0ZXN0KTsKKyAgICBnX21haW5fbG9v
cF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworfQorCit2b2lkIFdlYlZpZXdUZXN0Ojp3YWl0VW50
aWxNaWNyb3Bob25lQ2FwdHVyZVN0YXRlQ2hhbmdlZFRvKFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRl
IGV4cGVjdGVkQ2FwdHVyZVN0YXRlKQoreworICAgICptX2V4cGVjdGVkTWljcm9waG9uZUNhcHR1
cmVTdGF0ZSA9IGV4cGVjdGVkQ2FwdHVyZVN0YXRlOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93
ZWJWaWV3LCAibm90aWZ5OjptaWNyb3Bob25lLWNhcHR1cmUtc3RhdGUiLCBHX0NBTExCQUNLKG1p
Y3JvcGhvbmVDYXB0dXJlQ2hhbmdlZCksIHRoaXMpOworICAgIGdfbWFpbl9sb29wX3J1bihtX21h
aW5Mb29wKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9w
aG9uZV9jYXB0dXJlX3N0YXRlKG1fd2ViVmlldyksID09LCBleHBlY3RlZENhcHR1cmVTdGF0ZSk7
CisgICAgbV9leHBlY3RlZE1pY3JvcGhvbmVDYXB0dXJlU3RhdGUucmVzZXQoKTsKK30KKworc3Rh
dGljIHZvaWQgY2FtZXJhQ2FwdHVyZUNoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1Bh
cmFtU3BlYyosIFdlYlZpZXdUZXN0KiB0ZXN0KQoreworICAgIGlmICh0ZXN0LT5tX2V4cGVjdGVk
Q2FtZXJhQ2FwdHVyZVN0YXRlICYmICp0ZXN0LT5tX2V4cGVjdGVkQ2FtZXJhQ2FwdHVyZVN0YXRl
ICE9IHdlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUod2ViVmlldykpCisg
ICAgICAgIHJldHVybjsKKworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVu
Yyh3ZWJWaWV3LCByZWludGVycHJldF9jYXN0PHZvaWQqPihjYW1lcmFDYXB0dXJlQ2hhbmdlZCks
IHRlc3QpOworICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7Cit9CisKK3Zv
aWQgV2ViVmlld1Rlc3Q6OndhaXRVbnRpbENhbWVyYUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyhXZWJL
aXRNZWRpYUNhcHR1cmVTdGF0ZSBleHBlY3RlZENhcHR1cmVTdGF0ZSkKK3sKKyAgICAqbV9leHBl
Y3RlZENhbWVyYUNhcHR1cmVTdGF0ZSA9IGV4cGVjdGVkQ2FwdHVyZVN0YXRlOworICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibm90aWZ5OjpjYW1lcmEtY2FwdHVyZS1zdGF0ZSIsIEdf
Q0FMTEJBQ0soY2FtZXJhQ2FwdHVyZUNoYW5nZWQpLCB0aGlzKTsKKyAgICBnX21haW5fbG9vcF9y
dW4obV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2NhbWVyYV9jYXB0dXJlX3N0YXRlKG1fd2ViVmlldyksID09LCBleHBlY3RlZENhcHR1cmVTdGF0
ZSk7CisgICAgbV9leHBlY3RlZENhbWVyYUNhcHR1cmVTdGF0ZS5yZXNldCgpOworfQorCiBzdGF0
aWMgdm9pZCBkaXJlY3RvcnlDaGFuZ2VkQ2FsbGJhY2soR0ZpbGVNb25pdG9yKiwgR0ZpbGUqIGZp
bGUsIEdGaWxlKiwgR0ZpbGVNb25pdG9yRXZlbnQgZXZlbnQsIFdlYlZpZXdUZXN0KiB0ZXN0KQog
ewogICAgIGlmIChldmVudCA9PSB0ZXN0LT5tX2V4cGVjdGVkRmlsZUNoYW5nZUV2ZW50ICYmIGdf
ZmlsZV9lcXVhbChmaWxlLCB0ZXN0LT5tX21vbml0b3JlZEZpbGUuZ2V0KCkpKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKaW5kZXggNWJm
ZTc4M2QyMjk1NTU5YjEyNzQzMzhiZmQ1MTZjODlkNGFkZTIzYi4uNjM3M2YzNDAzZjE2YTllN2Nm
ZmYwMTBhNjAzNzQ3YzBkM2Q0NWNjNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCkBAIC02Miw2ICs2MiwxMCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0VkaXRhYmxlKCk7CiAgICAgdm9pZCBzZXRFZGl0YWJsZShib29sKTsKIAorICAg
IHZvaWQgd2FpdFVudGlsQ2FtZXJhQ2FwdHVyZVN0YXRlQ2hhbmdlZFRvKFdlYktpdE1lZGlhQ2Fw
dHVyZVN0YXRlKTsKKyAgICB2b2lkIHdhaXRVbnRpbERpc3BsYXlDYXB0dXJlU3RhdGVDaGFuZ2Vk
VG8oV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUpOworICAgIHZvaWQgd2FpdFVudGlsTWljcm9waG9u
ZUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyhXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSk7CisKICAgICB2
b2lkIG1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSwgdW5zaWduZWQgbW91c2VNb2RpZmllcnMgPSAw
KTsKICAgICB2b2lkIGNsaWNrTW91c2VCdXR0b24oaW50IHgsIGludCB5LCB1bnNpZ25lZCBidXR0
b24gPSAxLCB1bnNpZ25lZCBtb3VzZU1vZGlmaWVycyA9IDApOwogICAgIHZvaWQga2V5U3Ryb2tl
KHVuc2lnbmVkIGtleVZhbCwgdW5zaWduZWQga2V5TW9kaWZpZXJzID0gMCk7CkBAIC0xMTIsNiAr
MTE2LDEwIEBAIHB1YmxpYzoKICAgICBHUmVmUHRyPEdGaWxlPiBtX21vbml0b3JlZEZpbGU7CiAg
ICAgR0ZpbGVNb25pdG9yRXZlbnQgbV9leHBlY3RlZEZpbGVDaGFuZ2VFdmVudDsKIAorICAgIHN0
ZDo6b3B0aW9uYWw8V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU+IG1fZXhwZWN0ZWRDYW1lcmFDYXB0
dXJlU3RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZT4gbV9l
eHBlY3RlZERpc3BsYXlDYXB0dXJlU3RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxXZWJLaXRNZWRp
YUNhcHR1cmVTdGF0ZT4gbV9leHBlY3RlZE1pY3JvcGhvbmVDYXB0dXJlU3RhdGU7CisKICNpZiBQ
TEFURk9STShHVEspCiAgICAgR3RrV2lkZ2V0KiBtX3BhcmVudFdpbmRvdyB7IG51bGxwdHIgfTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkgYi9Ub29s
cy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weQppbmRleCAxY2IyOTgyZWNiYTBlMjM5ZWIyMGNhYTQz
NDQ4ZDI3ZGFlYTVjZWIwLi5iNGQxOWYwOTA3ZTEyMjg2NDI1MWEwNGNhM2JmNmIzYWZiZDE5MTEx
IDEwMDY0NAotLS0gYS9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weQorKysgYi9Ub29scy9m
bGF0cGFrL2ZsYXRwYWt1dGlscy5weQpAQCAtODAxLDggKzgwMSwxMCBAQCBjbGFzcyBXZWJraXRG
bGF0cGFrOgogICAgICAgICAgICAgIkpTQyIsCiAgICAgICAgICAgICAiTUVTQSIsCiAgICAgICAg
ICAgICAiTElCR0wiLAorICAgICAgICAgICAgIlBJUEVXSVJFIiwKICAgICAgICAgICAgICJSVVNU
IiwKICAgICAgICAgICAgICJTQ0NBQ0hFIiwKKyAgICAgICAgICAgICJTUEEiLAogICAgICAgICAg
ICAgIldBWUxBTkQiLAogICAgICAgICAgICAgIldFQktJVCIsCiAgICAgICAgICAgICAiV0VCS0lU
MiIsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433867</attachid>
            <date>2021-07-20 04:03:07 -0700</date>
            <delta_ts>2021-07-20 06:32:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227902-20210720040306.patch</filename>
            <type>text/plain</type>
            <size>53762</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDczMDQ1ZmViMWMxYjZlMDE2
ZTAwZjhlMWI5M2VlZDliYTk1YTAyYjguLmM2OWNiMjRlNDdlNjNmNmQwZTMxM2U5YzMxMjFhMmE3
YmQyMDE2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDctMTggIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBFeHBvc2Ug
QVBJIHRvIGFjY2Vzcy9tb2RpZnkgY2FwdHVyZSBkZXZpY2VzIHN0YXRlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3OTAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBHTGliIEFQ
SSAoYW5kIGNvcnJlc3BvbmRpbmcgR09iamVjdCBwcm9wZXJ0aWVzKToKKworICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlCisgICAgICAgIHdlYmtpdF93ZWJf
dmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlCisgICAgICAgIHdlYmtpdF93ZWJfdmll
d19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dldF9kaXNw
bGF5X2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2Nh
cHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3Jf
ZGlzcGxheV9kZXZpY2UKKworICAgICAgICBUaGlzIGNhbiBiZSB1c2VmdWwgaW4gV2ViIGJyb3dz
ZXJzIHdpbGxpbmcgdG8gaW5kaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUgY2FwdHVyZSBkZXZpY2Vz
CisgICAgICAgIGN1cnJlbnRseSBpbiB1c2UgYnkgdGhlIFdlYlZpZXcuCisKKyAgICAgICAgQ292
ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VUlDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXNlcl9tZWRpYV9wZXJt
aXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld01lZGlhQ2FwdHVy
ZVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbmZpZ3VyZU1lZGlhQ2Fw
dHVyZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRl
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUpOgorICAg
ICAgICAod2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisKIDIwMjEtMDct
MTggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gW0FYXSBLZXlib2FyZCB0ZXh0IGNhbmRpZGF0ZXMgZG9uJ3QgdXBkYXRlIHdoZW4gY2hhbmdp
bmcgc2VsZWN0aW9uIHVzaW5nIFN3aXRjaCBDb250cm9sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggMGFmZDk3YmU0NjRj
ZWI2MDlmMWM0M2FhNzIwZjNiNGMyOTc3NzhiZC4uODM2N2IyMzhmMjJjZjhhNDU0N2Y4ZWY3ZWM3
NjdiZWJiMGE3YjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMzUyLDYgKzM1MiwxMSBAQCBwcml2YXRlOgogICAg
ICAgICB3ZWJraXRXZWJWaWV3SXNQbGF5aW5nQXVkaW9DaGFuZ2VkKG1fd2ViVmlldyk7CiAgICAg
fQogCisgICAgdm9pZCBtZWRpYUNhcHR1cmVTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0ZUZsYWdzKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgd2Via2l0V2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlKG1fd2ViVmlldywg
bWVkaWFTdGF0ZUZsYWdzKTsKKyAgICB9CisKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAg
IHZvaWQgcmVxdWVzdFBvaW50ZXJMb2NrKFdlYlBhZ2VQcm94eSogcGFnZSkgZmluYWwKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKaW5kZXggZjA4YmZjMTEw
ZjhhMDg3MTYxZmUyYWY5MjE4MTBkMTk4MWI4NGU1NS4uM2Q5OTdhMzJmOGVjYzNlZjA4OTZiNzdk
NGE4M2JhYThmMDU4YTZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
LmNwcApAQCAtMTM2LDYgKzEzNiwyMCBAQCBnYm9vbGVhbiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJt
aXNzaW9uX2lzX2Zvcl92aWRlb19kZXZpY2UoV2ViS2l0VXNlck1lZGlhUGVybWlzcwogICAgIHJl
dHVybiByZXF1ZXN0LT5wcml2LT5yZXF1ZXN0LT5yZXF1aXJlc1ZpZGVvQ2FwdHVyZSgpOwogfQog
CisvKioKKyAqIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2
aWNlOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Cisg
KgorICogUmV0dXJuczogJVRSVUUgaWYgYWNjZXNzIHRvIGEgZGlzcGxheSBkZXZpY2Ugd2FzIHJl
cXVlc3RlZC4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCitnYm9vbGVhbiB3ZWJraXRfdXNlcl9t
ZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZShXZWJLaXRVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1
ZXN0LT5wcml2LT5yZXF1ZXN0LCBGQUxTRSk7CisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnJl
cXVlc3QtPnJlcXVpcmVzRGlzcGxheUNhcHR1cmUoKTsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQogewogICAg
IFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VTRVJf
TUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGQ5M2VhYjkzYTc5YmJl
MzAwNWE1MTAyMjQ3OThmZjk5NTZjOWFlMTkuLjZmYzAxNjljOTU2MjEyMDY0MWFjNzA2MTE1MTNk
MjhiYTY4ZWZkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMDcsNiArMjA3LDEwIEBAIGVudW0gewogICAgIFBST1Bf
V0VCU0lURV9QT0xJQ0lFUywKICAgICBQUk9QX0lTX1dFQl9QUk9DRVNTX1JFU1BPTlNJVkUsCiAK
KyAgICBQUk9QX0NBTUVSQV9DQVBUVVJFX1NUQVRFLAorICAgIFBST1BfTUlDUk9QSE9ORV9DQVBU
VVJFX1NUQVRFLAorICAgIFBST1BfRElTUExBWV9DQVBUVVJFX1NUQVRFLAorCiAgICAgTl9QUk9Q
RVJUSUVTLAogfTsKIApAQCAtMzUyLDYgKzM1NiwyMiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdJc1Bs
YXlpbmdBdWRpb0NoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBnX29iamVjdF9u
b3RpZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BST1BfSVNf
UExBWUlOR19BVURJT10pOwogfQogCit2b2lkIHdlYmtpdFdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0
ZURpZENoYW5nZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJDb3JlOjpNZWRpYVByb2R1Y2Vy
OjpNZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0ZUZsYWdzKQoreworICAgIGlmIChtZWRpYVN0YXRl
RmxhZ3MuaXNFbXB0eSgpKSB7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09C
SkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNbUFJPUF9DQU1FUkFfQ0FQVFVSRV9TVEFURV0p
OworICAgICAgICBnX29iamVjdF9ub3RpZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmlldyksIHNP
YmpQcm9wZXJ0aWVzW1BST1BfRElTUExBWV9DQVBUVVJFX1NUQVRFXSk7CisgICAgICAgIGdfb2Jq
ZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNbUFJP
UF9NSUNST1BIT05FX0NBUFRVUkVfU1RBVEVdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAobWVkaWFTdGF0ZUZsYWdzLmNvbnRhaW5zQW55KFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
OkF1ZGlvQ2FwdHVyZU1hc2spKQorICAgICAgICBnX29iamVjdF9ub3RpZnlfYnlfcHNwZWMoR19P
QkpFQ1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BST1BfTUlDUk9QSE9ORV9DQVBUVVJFX1NU
QVRFXSk7CisgICAgaWYgKG1lZGlhU3RhdGVGbGFncy5jb250YWluc0FueShXZWJDb3JlOjpNZWRp
YVByb2R1Y2VyOjpWaWRlb0NhcHR1cmVNYXNrKSkKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5X2J5
X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJvcGVydGllc1tQUk9QX0NBTUVSQV9DQVBU
VVJFX1NUQVRFXSk7CisgICAgaWYgKG1lZGlhU3RhdGVGbGFncy5jb250YWluc0FueShXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpEaXNwbGF5Q2FwdHVyZU1hc2spKQorICAgICAgICBnX29iamVjdF9u
b3RpZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BST1BfRElT
UExBWV9DQVBUVVJFX1NUQVRFXSk7Cit9CisKIGNsYXNzIFBhZ2VMb2FkU3RhdGVPYnNlcnZlciBm
aW5hbCA6IHB1YmxpYyBQYWdlTG9hZFN0YXRlOjpPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC04NzIsNiArODkyLDE1IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29u
c3QgR1ZhbHVlCiAgICAgY2FzZSBQUk9QX1dFQlNJVEVfUE9MSUNJRVM6CiAgICAgICAgIHdlYlZp
ZXctPnByaXYtPndlYnNpdGVQb2xpY2llcyA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVQb2xp
Y2llcyo+KGdfdmFsdWVfZ2V0X29iamVjdCh2YWx1ZSkpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIFBST1BfQ0FNRVJBX0NBUFRVUkVfU1RBVEU6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19z
ZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUod2ViVmlldywgc3RhdGljX2Nhc3Q8V2ViS2l0TWVkaWFD
YXB0dXJlU3RhdGU+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUpKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9NSUNST1BIT05FX0NBUFRVUkVfU1RBVEU6CisgICAgICAgIHdlYmtpdF93
ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcsIHN0YXRpY19jYXN0
PFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlPihnX3ZhbHVlX2dldF9lbnVtKHZhbHVlKSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRElTUExBWV9DQVBUVVJFX1NUQVRFOgorICAgICAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3LCBzdGF0
aWNfY2FzdDxXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZT4oZ192YWx1ZV9nZXRfZW51bSh2YWx1ZSkp
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9J
TlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwogICAgIH0KQEAg
LTk0Myw2ICs5NzIsMTUgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0dldFByb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHUKICAgICBjYXNlIFBST1Bf
SVNfV0VCX1BST0NFU1NfUkVTUE9OU0lWRToKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2
YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlKHdlYlZp
ZXcpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NBTUVSQV9DQVBUVVJFX1NUQVRF
OgorICAgICAgICBnX3ZhbHVlX3NldF9lbnVtKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Nh
bWVyYV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX01JQ1JPUEhPTkVfQ0FQVFVSRV9TVEFURToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2
YWx1ZSwgd2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUod2ViVmll
dykpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRElTUExBWV9DQVBUVVJFX1NUQVRF
OgorICAgICAgICBnX3ZhbHVlX3NldF9lbnVtKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rp
c3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHBy
b3BJZCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0xMzM3LDYgKzEzNzUsODEgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3
Q2xhc3MpCiAgICAgICAgICAgICBUUlVFLAogICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURB
QkxFKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6Y2FtZXJhLWNhcHR1cmUtc3Rh
dGU6CisgICAgICoKKyAgICAgKiBDYXB0dXJlIHN0YXRlIG9mIHRoZSBjYW1lcmEgZGV2aWNlLiBX
aGVuZXZlciB0aGUgdXNlciBncmFudHMgYSBtZWRpYS1yZXF1ZXN0IHNlbnQgYnkgdGhlIHdlYgor
ICAgICAqIHBhZ2UsIHJlcXVlc3RpbmcgdmlkZW8gY2FwdHVyZSBjYXBhYmlsaXRpZXMgKGBuYXZp
Z2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86CisgICAgICogdHJ1ZX0pYCkg
dGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHNldCB0byAlV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVf
QUNUSVZFLgorICAgICAqCisgICAgICogVGhlIGFwcGxpY2F0aW9uIGNhbiBtb25pdG9yIHRoaXMg
cHJvcGVydHkgYW5kIHByb3ZpZGUgYSB2aXN1YWwgaW5kaWNhdG9yIGFsbG93aW5nIHRvIG9wdGlv
bmFsbHkKKyAgICAgKiBkZWFjdGl2YXRlIG9yIG11dGUgdGhlIGNhcHR1cmUgZGV2aWNlIGJ5IHNl
dHRpbmcgdGhpcyBwcm9wZXJ0eSByZXNwZWN0aXZlbHkgdG8KKyAgICAgKiAlV0VCS0lUX01FRElB
X0NBUFRVUkVfU1RBVEVfTk9ORSBvciAlV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQu
CisgICAgICoKKyAgICAgKiBJZiB0aGUgY2FwdHVyZSBzdGF0ZSBvZiB0aGUgZGV2aWNlIGlzIHNl
dCB0byAlV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSB0aGUgd2ViLXBhZ2UKKyAgICAg
KiBjYW4gc3RpbGwgcmUtcmVxdWVzdCB0aGUgcGVybWlzc2lvbiB0byB0aGUgdXNlci4gUGVybWlz
c2lvbiBkZXNpc2lvbiBjYWNoaW5nIGlzIGxlZnQgdG8gdGhlCisgICAgICogYXBwbGljYXRpb24u
CisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zNAorICAgICAqLworICAgIHNPYmpQcm9wZXJ0aWVz
W1BST1BfQ0FNRVJBX0NBUFRVUkVfU1RBVEVdID0gZ19wYXJhbV9zcGVjX2VudW0oCisgICAgICAg
ICJjYW1lcmEtY2FwdHVyZS1zdGF0ZSIsCisgICAgICAgICJDYW1lcmEgQ2FwdHVyZSBTdGF0ZSIs
CisgICAgICAgIF8oIlRoZSBjYXB0dXJlIHN0YXRlIG9mIHRoZSBjYW1lcmEgZGV2aWNlIiksCisg
ICAgICAgIFdFQktJVF9UWVBFX01FRElBX0NBUFRVUkVfU1RBVEUsCisgICAgICAgIFdFQktJVF9N
RURJQV9DQVBUVVJFX1NUQVRFX05PTkUsCisgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUp
OworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzptaWNyb3Bob25lLWNhcHR1cmUtc3Rh
dGU6CisgICAgICoKKyAgICAgKiBDYXB0dXJlIHN0YXRlIG9mIHRoZSBtaWNyb3Bob25lIGRldmlj
ZS4gV2hlbmV2ZXIgdGhlIHVzZXIgZ3JhbnRzIGEgbWVkaWEtcmVxdWVzdCBzZW50IGJ5IHRoZSB3
ZWIKKyAgICAgKiBwYWdlLCByZXF1ZXN0aW5nIGF1ZGlvIGNhcHR1cmUgY2FwYWJpbGl0aWVzIChg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOgorICAgICAqIHRydWV9
KWApIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBzZXQgdG8gJVdFQktJVF9NRURJQV9DQVBUVVJFX1NU
QVRFX0FDVElWRS4KKyAgICAgKgorICAgICAqIFRoZSBhcHBsaWNhdGlvbiBjYW4gbW9uaXRvciB0
aGlzIHByb3BlcnR5IGFuZCBwcm92aWRlIGEgdmlzdWFsIGluZGljYXRvciBhbGxvd2luZyB0bwor
ICAgICAqIG9wdGlvbmFsbHkgZGVhY3RpdmF0ZSBvciBtdXRlIHRoZSBjYXB0dXJlIGRldmljZSBi
eSBzZXR0aW5nIHRoaXMgcHJvcGVydHkgcmVzcGVjdGl2ZWx5IHRvCisgICAgICogJVdFQktJVF9N
RURJQV9DQVBUVVJFX1NUQVRFX05PTkUgb3IgJVdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01V
VEVELgorICAgICAqCisgICAgICogSWYgdGhlIGNhcHR1cmUgc3RhdGUgb2YgdGhlIGRldmljZSBp
cyBzZXQgdG8gJVdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUgdGhlIHdlYi1wYWdlCisg
ICAgICogY2FuIHN0aWxsIHJlLXJlcXVlc3QgdGhlIHBlcm1pc3Npb24gdG8gdGhlIHVzZXIuIFBl
cm1pc3Npb24gZGVzaXNpb24gY2FjaGluZyBpcyBsZWZ0IHRvIHRoZQorICAgICAqIGFwcGxpY2F0
aW9uLgorICAgICAqCisgICAgICogU2luY2U6IDIuMzQKKyAgICAgKi8KKyAgICBzT2JqUHJvcGVy
dGllc1tQUk9QX01JQ1JPUEhPTkVfQ0FQVFVSRV9TVEFURV0gPSBnX3BhcmFtX3NwZWNfZW51bSgK
KyAgICAgICAgIm1pY3JvcGhvbmUtY2FwdHVyZS1zdGF0ZSIsCisgICAgICAgICJNaWNyb3Bob25l
IENhcHR1cmUgU3RhdGUiLAorICAgICAgICBfKCJUaGUgY2FwdHVyZSBzdGF0ZSBvZiB0aGUgbWlj
cm9waG9uZSBkZXZpY2UiKSwKKyAgICAgICAgV0VCS0lUX1RZUEVfTUVESUFfQ0FQVFVSRV9TVEFU
RSwKKyAgICAgICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSwKKyAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURXUklURSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3OmRp
c3BsYXktY2FwdHVyZS1zdGF0ZToKKyAgICAgKgorICAgICAqIENhcHR1cmUgc3RhdGUgb2YgdGhl
IGRpc3BsYXkgZGV2aWNlLiBXaGVuZXZlciB0aGUgdXNlciBncmFudHMgYSBtZWRpYS1yZXF1ZXN0
IHNlbnQgYnkgdGhlIHdlYgorICAgICAqIHBhZ2UsIHJlcXVlc3Rpbmcgc2NyZWVuY2FzdGluZyBj
YXBhYmlsaXRpZXMgKGBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldERpc3BsYXlNZWRpYSgpIHRo
aXMKKyAgICAgKiBwcm9wZXJ0eSB3aWxsIGJlIHNldCB0byAlV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfQUNUSVZFLgorICAgICAqCisgICAgICogVGhlIGFwcGxpY2F0aW9uIGNhbiBtb25pdG9y
IHRoaXMgcHJvcGVydHkgYW5kIHByb3ZpZGUgYSB2aXN1YWwgaW5kaWNhdG9yIGFsbG93aW5nIHRv
CisgICAgICogb3B0aW9uYWxseSBkZWFjdGl2YXRlIG9yIG11dGUgdGhlIGNhcHR1cmUgZGV2aWNl
IGJ5IHNldHRpbmcgdGhpcyBwcm9wZXJ0eSByZXNwZWN0aXZlbHkgdG8KKyAgICAgKiAlV0VCS0lU
X01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSBvciAlV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVf
TVVURUQuCisgICAgICoKKyAgICAgKiBJZiB0aGUgY2FwdHVyZSBzdGF0ZSBvZiB0aGUgZGV2aWNl
IGlzIHNldCB0byAlV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSB0aGUgd2ViLXBhZ2UK
KyAgICAgKiBjYW4gc3RpbGwgcmUtcmVxdWVzdCB0aGUgcGVybWlzc2lvbiB0byB0aGUgdXNlci4g
UGVybWlzc2lvbiBkZXNpc2lvbiBjYWNoaW5nIGlzIGxlZnQgdG8gdGhlCisgICAgICogYXBwbGlj
YXRpb24uCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zNAorICAgICAqLworICAgIHNPYmpQcm9w
ZXJ0aWVzW1BST1BfRElTUExBWV9DQVBUVVJFX1NUQVRFXSA9IGdfcGFyYW1fc3BlY19lbnVtKAor
ICAgICAgICAiZGlzcGxheS1jYXB0dXJlLXN0YXRlIiwKKyAgICAgICAgIkRpc3BsYXkgQ2FwdHVy
ZSBTdGF0ZSIsCisgICAgICAgIF8oIlRoZSBjYXB0dXJlIHN0YXRlIG9mIHRoZSBkaXNwbGF5IGRl
dmljZSIpLAorICAgICAgICBXRUJLSVRfVFlQRV9NRURJQV9DQVBUVVJFX1NUQVRFLAorICAgICAg
ICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLAorICAgICAgICBXRUJLSVRfUEFSQU1f
UkVBRFdSSVRFKTsKKwogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydGllcyhnT2Jq
ZWN0Q2xhc3MsIE5fUFJPUEVSVElFUywgc09ialByb3BlcnRpZXMpOwogCiAgICAgLyoqCkBAIC00
MjMwLDEwICs0MzQzLDEwIEBAIFdlYktpdERvd25sb2FkKiB3ZWJraXRfd2ViX3ZpZXdfZG93bmxv
YWRfdXJpKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqCiAgKiB3aGVuIGl0J3Mg
ZW1pdHRlZCB3aXRoICVXRUJLSVRfTE9BRF9DT01NSVRURUQgZXZlbnQuCiAgKgogICogTm90ZSB0
aGF0IHRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgbm8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlY3Vy
aXR5IG9mIHRoZSB3ZWIKLSAqIHBhZ2UgaWYgdGhlIGN1cnJlbnQgI1dlYktpdFRMU0Vycm9yc1Bv
bGljeSBpcyBAV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRSwKKyAqIHBhZ2UgaWYgdGhl
IGN1cnJlbnQgI1dlYktpdFRMU0Vycm9yc1BvbGljeSBpcyAlV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0lHTk9SRSwKICAqIGFzIHN1YnJlc291cmNlcyBvZiB0aGUgcGFnZSBtYXkgYmUgY29udHJv
bGxlZCBieSBhbiBhdHRhY2tlci4gVGhpcyBmdW5jdGlvbgogICogbWF5IHNhZmVseSBiZSB1c2Vk
IHRvIGRldGVybWluZSB0aGUgc2VjdXJpdHkgc3RhdHVzIG9mIHRoZSBjdXJyZW50IHBhZ2Ugb25s
eQotICogaWYgdGhlIGN1cnJlbnQgI1dlYktpdFRMU0Vycm9yc1BvbGljeSBpcyBAV0VCS0lUX1RM
U19FUlJPUlNfUE9MSUNZX0ZBSUwsIGluCisgKiBpZiB0aGUgY3VycmVudCAjV2ViS2l0VExTRXJy
b3JzUG9saWN5IGlzICVXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTCwgaW4KICAqIHdoaWNo
IGNhc2Ugc3VicmVzb3VyY2VzIHRoYXQgZmFpbCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gd2ls
bCBiZSBibG9ja2VkLgogICoKICAqIFJldHVybnM6ICVUUlVFIGlmIHRoZSBAd2ViX3ZpZXcgY29u
bmVjdGlvbiB1c2VzIEhUVFBTIGFuZCBhIHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkCkBAIC00
NzU0LDMgKzQ4NjcsMTg3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9jb3JzX2FsbG93bGlz
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogY29uCiAKICAgICBnZXRQYWdl
KHdlYlZpZXcpLnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXVEZNb3ZlKGFsbG93TGlzdFZlY3Rv
cikpOwogfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3Q29uZmlndXJlTWVkaWFDYXB0dXJl
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2Fw
dHVyZUtpbmQgY2FwdHVyZUtpbmQsIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIGNhcHR1cmVTdGF0
ZSwgYm9vbCBpc0Zyb21EaXNwbGF5Q2FwdHVyZSA9IGZhbHNlKQoreworICAgIGF1dG8mIHBhZ2Ug
PSBnZXRQYWdlKHdlYlZpZXcpOworICAgIGF1dG8gbXV0ZWRTdGF0ZSA9IHBhZ2UubXV0ZWRTdGF0
ZUZsYWdzKCk7CisKKyAgICBzd2l0Y2ggKGNhcHR1cmVTdGF0ZSkgeworICAgIGNhc2UgV0VCS0lU
X01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORToKKyAgICAgICAgcGFnZS5zdG9wTWVkaWFDYXB0dXJl
KGNhcHR1cmVLaW5kLCBbd2ViVmlldywgY2FwdHVyZUtpbmRdIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoY2FwdHVyZUtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6TWVkaWFDYXB0dXJlS2luZDo6QXVkaW86CisgICAgICAgICAgICAgICAgZ19vYmplY3Rfbm90
aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJvcGVydGllc1tQUk9QX01JQ1JP
UEhPTkVfQ0FQVFVSRV9TVEFURV0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpWaWRlbzoK
KyAgICAgICAgICAgICAgICBnX29iamVjdF9ub3RpZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmll
dyksIHNPYmpQcm9wZXJ0aWVzW1BST1BfQ0FNRVJBX0NBUFRVUkVfU1RBVEVdKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6
TWVkaWFDYXB0dXJlS2luZDo6QXVkaW9WaWRlbzoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NU
QVRFX0FDVElWRToKKyAgICAgICAgc3dpdGNoIChjYXB0dXJlS2luZCkgeworICAgICAgICBjYXNl
IFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1ZGlvOgorICAgICAg
ICAgICAgbXV0ZWRTdGF0ZS5yZW1vdmUoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0
ZTo6QXVkaW9DYXB0dXJlSXNNdXRlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpWaWRlbzoKKyAgICAg
ICAgICAgIGlmIChpc0Zyb21EaXNwbGF5Q2FwdHVyZSkKKyAgICAgICAgICAgICAgICBtdXRlZFN0
YXRlLnJlbW92ZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpTY3JlZW5DYXB0
dXJlSXNNdXRlZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbXV0ZWRTdGF0
ZS5yZW1vdmUoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6VmlkZW9DYXB0dXJl
SXNNdXRlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRp
YVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpb1ZpZGVvOgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgcGFnZS5zZXRNdXRlZChtdXRlZFN0YXRlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
RUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDoKKyAgICAgICAgc3dpdGNoIChjYXB0dXJl
S2luZCkgeworICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVy
ZUtpbmQ6OkF1ZGlvOgorICAgICAgICAgICAgbXV0ZWRTdGF0ZS5hZGQoV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6TXV0ZWRTdGF0ZTo6QXVkaW9DYXB0dXJlSXNNdXRlZCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVL
aW5kOjpWaWRlbzoKKyAgICAgICAgICAgIGlmIChpc0Zyb21EaXNwbGF5Q2FwdHVyZSkKKyAgICAg
ICAgICAgICAgICBtdXRlZFN0YXRlLmFkZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0
YXRlOjpTY3JlZW5DYXB0dXJlSXNNdXRlZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgbXV0ZWRTdGF0ZS5hZGQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZTo6
VmlkZW9DYXB0dXJlSXNNdXRlZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBX
ZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpb1ZpZGVvOgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgcGFnZS5zZXRNdXRlZChtdXRlZFN0YXRlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVf
c3RhdGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXQgdGhlIGNh
bWVyYSBjYXB0dXJlIHN0YXRlIG9mIGEgI1dlYktpdFdlYlZpZXcuCisgKgorICogUmV0dXJuczog
VGhlICNXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBvZiB0aGUgY2FtZXJhIGRldmljZS4gSWYgI1dl
YktpdFNldHRpbmdzOmVuYWJsZS1tZWRpYXN0cmVhbQorICogaXMgJUZBTFNFLCB0aGlzIG1ldGhv
ZCB3aWxsIHJldHVybiAlV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORS4KKyAqCisgKiBT
aW5jZTogMi4zNAorICovCitXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAg
YXV0byBzdGF0ZSA9IGdldFBhZ2Uod2ViVmlldykucmVwb3J0ZWRNZWRpYVN0YXRlKCk7CisgICAg
aWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZTo6SGFzQWN0aXZl
VmlkZW9DYXB0dXJlRGV2aWNlKQorICAgICAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfQUNUSVZFOworICAgIGlmIChzdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1l
ZGlhU3RhdGU6Okhhc011dGVkVmlkZW9DYXB0dXJlRGV2aWNlKQorICAgICAgICByZXR1cm4gV0VC
S0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQ7CisgICAgcmV0dXJuIFdFQktJVF9NRURJQV9D
QVBUVVJFX1NUQVRFX05PTkU7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF9jYW1l
cmFfY2FwdHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHN0
YXRlOiBhICNXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQorICoKKyAqIFNldCB0aGUgY2FtZXJhIGNh
cHR1cmUgc3RhdGUgb2YgYSAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBJZiBXZWJLaXRTZXR0aW5n
czplbmFibGUtbWVkaWFzdHJlYW0gaXMgJUZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIGhhdmUgbm8g
dmlzaWJsZSBlZmZlY3QuIE9uY2UgdGhlCisgKiBzdGF0ZSBvZiB0aGUgZGV2aWNlIGhhcyBiZWVu
IHNldCB0byAlV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSBpdCBjYW5ub3QgYmUgY2hh
bmdlZAorICogYW55bW9yZS4gVGhlIHBhZ2UgY2FuIGhvd2V2ZXIgcmVxdWVzdCBjYXB0dXJlIGFn
YWluIHVzaW5nIHRoZSBtZWRpYURldmljZXMgQVBJLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8K
K3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZShXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBzdGF0ZSkKK3sKKyAgICBpZiAo
d2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSA9PSBXRUJL
SVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJr
aXRXZWJWaWV3Q29uZmlndXJlTWVkaWFDYXB0dXJlKHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OlZpZGVvLCBzdGF0ZSk7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGU6CisgKiBAd2ViX3ZpZXc6
IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXQgdGhlIG1pY3JvcGhvbmUgY2FwdHVyZSBzdGF0
ZSBvZiBhICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIFJldHVybnM6IFRoZSAjV2ViS2l0TWVkaWFD
YXB0dXJlU3RhdGUgb2YgdGhlIG1pY3JvcGhvbmUgZGV2aWNlLiBJZiAjV2ViS2l0U2V0dGluZ3M6
ZW5hYmxlLW1lZGlhc3RyZWFtCisgKiBpcyAlRkFMU0UsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJu
ICVXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLgorICoKKyAqIFNpbmNlOiAyLjM0Cisg
Ki8KK1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9u
ZV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgYXV0byBzdGF0
ZSA9IGdldFBhZ2Uod2ViVmlldykucmVwb3J0ZWRNZWRpYVN0YXRlKCk7CisgICAgaWYgKHN0YXRl
ICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZTo6SGFzQWN0aXZlQXVkaW9DYXB0
dXJlRGV2aWNlKQorICAgICAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNU
SVZFOworICAgIGlmIChzdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6
Okhhc011dGVkQXVkaW9DYXB0dXJlRGV2aWNlKQorICAgICAgICByZXR1cm4gV0VCS0lUX01FRElB
X0NBUFRVUkVfU1RBVEVfTVVURUQ7CisgICAgcmV0dXJuIFdFQktJVF9NRURJQV9DQVBUVVJFX1NU
QVRFX05PTkU7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF9taWNyb3Bob25lX2Nh
cHR1cmVfc3RhdGU6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqIEBzdGF0ZTog
YSAjV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKKyAqCisgKiBTZXQgdGhlIG1pY3JvcGhvbmUgY2Fw
dHVyZSBzdGF0ZSBvZiBhICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIElmIFdlYktpdFNldHRpbmdz
OmVuYWJsZS1tZWRpYXN0cmVhbSBpcyAlRkFMU0UsIHRoaXMgbWV0aG9kIHdpbGwgaGF2ZSBubyB2
aXNpYmxlIGVmZmVjdC4gT25jZSB0aGUKKyAqIHN0YXRlIG9mIHRoZSBkZXZpY2UgaGFzIGJlZW4g
c2V0IHRvICVXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIGl0IGNhbm5vdCBiZSBjaGFu
Z2VkCisgKiBhbnltb3JlLiBUaGUgcGFnZSBjYW4gaG93ZXZlciByZXF1ZXN0IGNhcHR1cmUgYWdh
aW4gdXNpbmcgdGhlIG1lZGlhRGV2aWNlcyBBUEkuCisgKgorICogU2luY2U6IDIuMzQKKyAqLwor
dm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZShXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBzdGF0ZSkKK3sKKyAgICBp
ZiAod2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUod2ViVmlldykg
PT0gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgd2Via2l0V2ViVmlld0NvbmZpZ3VyZU1lZGlhQ2FwdHVyZSh3ZWJWaWV3LCBXZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpbywgc3RhdGUpOworfQorCisvKioK
KyAqIHdlYmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlOgorICogQHdlYl92
aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKgorICogR2V0IHRoZSBkaXNwbGF5IGNhcHR1cmUgc3Rh
dGUgb2YgYSAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBSZXR1cm5zOiBUaGUgI1dlYktpdE1lZGlh
Q2FwdHVyZVN0YXRlIG9mIHRoZSBkaXNwbGF5IGRldmljZS4gSWYgI1dlYktpdFNldHRpbmdzOmVu
YWJsZS1tZWRpYXN0cmVhbQorICogaXMgJUZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiAl
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORS4KKyAqCisgKiBTaW5jZTogMi4zNAorICov
CitXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2Fw
dHVyZV9zdGF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGF1dG8gc3RhdGUgPSBn
ZXRQYWdlKHdlYlZpZXcpLnJlcG9ydGVkTWVkaWFTdGF0ZSgpOworICAgIGlmIChzdGF0ZSAmIFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6Okhhc0FjdGl2ZURpc3BsYXlDYXB0dXJl
RGV2aWNlKQorICAgICAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZF
OworICAgIGlmIChzdGF0ZSAmIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGU6Okhh
c011dGVkRGlzcGxheUNhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9NVVRFRDsKKyAgICByZXR1cm4gV0VCS0lUX01FRElBX0NBUFRVUkVfU1RB
VEVfTk9ORTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVy
ZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHN0YXRlOiBhICNX
ZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQorICoKKyAqIFNldCB0aGUgZGlzcGxheSBjYXB0dXJlIHN0
YXRlIG9mIGEgI1dlYktpdFdlYlZpZXcuCisgKgorICogSWYgV2ViS2l0U2V0dGluZ3M6ZW5hYmxl
LW1lZGlhc3RyZWFtIGlzICVGQUxTRSwgdGhpcyBtZXRob2Qgd2lsbCBoYXZlIG5vIHZpc2libGUg
ZWZmZWN0LiBPbmNlIHRoZQorICogc3RhdGUgb2YgdGhlIGRldmljZSBoYXMgYmVlbiBzZXQgdG8g
JVdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUgaXQgY2Fubm90IGJlIGNoYW5nZWQKKyAq
IGFueW1vcmUuIFRoZSBwYWdlIGNhbiBob3dldmVyIHJlcXVlc3QgY2FwdHVyZSBhZ2FpbiB1c2lu
ZyB0aGUgbWVkaWFEZXZpY2VzIEFQSS4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCit2b2lkIHdl
YmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIHN0YXRlKQoreworICAgIGlmICh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSA9PSBXRUJLSVRfTUVE
SUFfQ0FQVFVSRV9TVEFURV9OT05FKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJraXRXZWJW
aWV3Q29uZmlndXJlTWVkaWFDYXB0dXJlKHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok1lZGlhQ2FwdHVyZUtpbmQ6OlZpZGVvLCBzdGF0ZSwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApp
bmRleCBkN2E0MzIwNGJlNjkzZjJhN2VmODYyNDBlYWY1NjdmZTcwMDUyYTJjLi5mYmFiMWFmZTlj
YTA5ZjVlNmE2NzkzZjUwNjVmMDhmYzc2YmZlZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTkxLDYg
KzkxLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3SW5zZWN1cmVDb250ZW50RGV0ZWN0ZWQoV2ViS2l0
V2ViVmlldyosIFdlYktpdEluc2VjdXJlQ29udGVudEUKIGJvb2wgd2Via2l0V2ViVmlld0VtaXRT
aG93Tm90aWZpY2F0aW9uKFdlYktpdFdlYlZpZXcqLCBXZWJLaXROb3RpZmljYXRpb24qKTsKIHZv
aWQgd2Via2l0V2ViVmlld1dlYlByb2Nlc3NUZXJtaW5hdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJL
aXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb24pOwogdm9pZCB3ZWJraXRXZWJWaWV3SXNQbGF5
aW5nQXVkaW9DaGFuZ2VkKFdlYktpdFdlYlZpZXcqKTsKK3ZvaWQgd2Via2l0V2ViVmlld01lZGlh
Q2FwdHVyZVN0YXRlRGlkQ2hhbmdlKFdlYktpdFdlYlZpZXcqLCBXZWJDb3JlOjpNZWRpYVByb2R1
Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwogdm9pZCB3ZWJraXRXZWJWaWV3U2VsZWN0aW9uRGlkQ2hh
bmdlKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0V2ViVmlld1JlcXVlc3RJbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2lucyhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0OjpJbnN0YWxsTWlzc2luZ01l
ZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Jik7CiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIq
IHdlYmtpdFdlYlZpZXdHZXRXZWJzaXRlRGF0YU1hbmFnZXIoV2ViS2l0V2ViVmlldyopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCmluZGV4IGFkMzgyYjFiYTRkZjM5NDg2MDlk
YTJiMmZmZThmNGFjNTJlMGM4ZmQuLjNmOGNlMGMwMDVmYjZlZWMxMTdhOTk4MmFhYjJiYzlkZjkx
NWE2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKQEAgLTY0LDYgKzY0
LDkgQEAgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfYXVkaW9fZGV2aWNlIChX
ZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWUKIFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtp
dF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZSAoV2ViS2l0VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOwogCitXRUJLSVRfQVBJIGdib29sZWFuCit3
ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZSAoV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QpOworCiBHX0VORF9ERUNMUwogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
LmgKaW5kZXggOGI0MjA4ZWZjZDc2MTUwMjY3MGMzY2NlY2YzYTBmODhhMTE0OTM2NC4uOTg1NDk1
ZDg4NjE3MjlmZWQ5ODUxZjY1Y2VjM2EyNWFlMjhjNTE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmgKQEAgLTIwNSw2ICsyMDUsMjIgQEAg
dHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRfV0VCX1BST0NFU1NfVEVSTUlOQVRFRF9CWV9BUEkK
IH0gV2ViS2l0V2ViUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOwogCisvKioKKyAqIFdlYktpdE1l
ZGlhQ2FwdHVyZVN0YXRlOgorICogQFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU6IE1l
ZGlhIGNhcHR1cmUgaXMgZGlzYWJsZWQuCisgKiBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVf
QUNUSVZFOiBNZWRpYSBjYXB0dXJlIGlzIGFjdGl2ZS4KKyAqIEBXRUJLSVRfTUVESUFfQ0FQVFVS
RV9TVEFURV9NVVRFRDogTWVkaWEgY2FwdHVyZSBpcyBtdXRlZC4KKyAqCisgKiBFbnVtIHZhbHVl
cyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNhcHR1cmUgc3RhdGUgb2YgYSBtZWRpYSBkZXZpY2UuCisg
KgorICogU2luY2U6IDIuMzQKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9OT05FLAorICAgIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElW
RSwKKyAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRCwKK30gV2ViS2l0TWVkaWFD
YXB0dXJlU3RhdGU7CisKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7CiAgICAgV2ViS2l0V2ViVmll
d0Jhc2UgcGFyZW50OwogCkBAIC02MDAsNiArNjE2LDI3IEBAIHdlYmtpdF93ZWJfdmlld19nZXRf
aXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZSAgICAgICAgKFdlYktpdFdlYlZpZXcKIFdFQktJVF9B
UEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3Rlcm1pbmF0ZV93ZWJfcHJvY2VzcyAgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOwogCitXRUJLSVRfQVBJ
IFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0
dXJlX3N0YXRlICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmll
dyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVy
ZV9zdGF0ZSAgICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSAgICBzdGF0ZSk7CisKK1dFQktJVF9BUEkgV2ViS2l0TWVk
aWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0
YXRlICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKworV0VC
S0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0
ZSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE1lZGlh
Q2FwdHVyZVN0YXRlICAgIHN0YXRlKTsKKworV0VCS0lUX0FQSSBXZWJLaXRNZWRpYUNhcHR1cmVT
dGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUgICAgICAgICAg
ICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TWVkaWFDYXB0dXJlU3Rh
dGUgICAgc3RhdGUpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAt
c2VjdGlvbnMudHh0CmluZGV4IGI1ZjNlN2Q2MGQyMDJlMGM2NWI5Nzc4M2VkZTc0ZTA5ZjdhZTc4
YjkuLjM2ZDU0MjgxNzQ4N2QyOGUwYjExNWMxMDY4ZTZmZTQ1ZmE0MjIyNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0
aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTk5LDYgKzE5OSw3IEBAIFdlYktpdFNuYXBzaG90
T3B0aW9ucwogV2ViS2l0U25hcHNob3RSZWdpb24KIFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbgogV2ViS2l0QXV0b3BsYXlQb2xpY3kKK1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCiAK
IDxTVUJTRUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NV
VApAQCAtMjkzLDYgKzI5NCwxMiBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNp
ZXMKIHdlYmtpdF93ZWJfdmlld19nZXRfaXNfd2ViX3Byb2Nlc3NfcmVzcG9uc2l2ZQogd2Via2l0
X3dlYl92aWV3X3Rlcm1pbmF0ZV93ZWJfcHJvY2Vzcwogd2Via2l0X3dlYl92aWV3X3NldF9jb3Jz
X2FsbG93bGlzdAord2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZQord2Vi
a2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmll
d19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19zZXRfbWljcm9waG9u
ZV9jYXB0dXJlX3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0
ZQord2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUKIAogPFNVQlNFQ1RJ
T04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdlYktpdEphdmFzY3JpcHRSZXN1bHQKQEAgLTc5
Niw2ICs4MDMsNyBAQCB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3R5cGUKIFdlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lz
X2Zvcl9hdWRpb19kZXZpY2UKIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3Zp
ZGVvX2RldmljZQord2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlzcGxheV9k
ZXZpY2UKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdENsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKaW5kZXggYmUx
NGQzNjM3OThmMGQyNGU1YTk0YWU3MGMxNDcwOTUwMjJjOTAyNy4uMjNlOTYyOWE5Yjk5ZGYzYjZi
ZTk3YzNkYzA1ZjQ2NDU1Y2FhODQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuaApAQCAtNjQsNiArNjQsOSBAQCB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zv
cl9hdWRpb19kZXZpY2UgKFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZQogV0VCS0lUX0FQ
SSBnYm9vbGVhbgogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2
aWNlIChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CiAKK1dFQktJ
VF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3Bs
YXlfZGV2aWNlIChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CisK
IEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdFdlYlZpZXcuaAppbmRleCA0M2FmY2EwMzBkOTNkNTgxYTFmYzMzNDU5NTRhM2Qx
ZTBkOTk5ZDkxLi43MDhhY2MyZjRjNDE1OGNmMTFmNGEyNDA3YTU4OGIyYzM5MWEwZTAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaApAQCAt
MTg2LDYgKzE4NiwyMiBAQCB0eXBlZGVmIGVudW0gewogdHlwZWRlZiB2b2lkICgqIFdlYktpdEZy
YW1lRGlzcGxheWVkQ2FsbGJhY2spIChXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgdXNl
cl9kYXRhKTsKIAorLyoqCisgKiBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZToKKyAqIEBXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9OT05FOiBNZWRpYSBjYXB0dXJlIGlzIGRpc2FibGVkLgorICog
QFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRTogTWVkaWEgY2FwdHVyZSBpcyBhY3Rp
dmUuCisgKiBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQ6IE1lZGlhIGNhcHR1cmUg
aXMgbXV0ZWQuCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBjYXB0dXJl
IHN0YXRlIG9mIGEgbWVkaWEgZGV2aWNlLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK3R5cGVk
ZWYgZW51bSB7CisgICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSwKKyAgICBXRUJL
SVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUsCisgICAgV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfTVVURUQsCit9IFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlOworCiBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXcgewogICAgIEdPYmplY3QgcGFyZW50OwogCkBAIC01NzcsNiArNTkzLDI3IEBAIFdF
QktJVF9BUEkgdm9pZAogd2Via2l0X3dlYl92aWV3X3NldF9jb3JzX2FsbG93bGlzdCAgICAgICAg
ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAqIGNvbnN0ICAgICAgICphbGxvd2xpc3QpOwogCitXRUJLSVRfQVBJIFdlYktpdE1lZGlhQ2Fw
dHVyZVN0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlICAgICAg
ICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSAgICAgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRNZWRpYUNhcHR1
cmVTdGF0ZSAgICBzdGF0ZSk7CisKK1dFQktJVF9BUEkgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUK
K3dlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlICAgICAgICAgKFdl
YktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlICAg
IHN0YXRlKTsKKworV0VCS0lUX0FQSSBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQord2Via2l0X3dl
Yl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUgICAgICAgICAgICAoV2ViS2l0V2ViVmll
dyAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJf
dmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcg
ICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgICAgc3RhdGUpOwor
CiBHX0VORF9ERUNMUwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCA0YjY2YmI5NWYx
MzI2YmQ4MzgzMmI2OGY0MjljMjFlZjY4ODA4ZjM4Li5jYmRiOGE1NmUyMmQ0ZmFhNjQwZTFhNzA4
YzMwMDMxMWJiMTQ4OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0xNzMsNiArMTczLDcgQEAg
V2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQKIFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJl
YXNvbgogV2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFjawogV2ViS2l0QXV0b3BsYXlQb2xpY3kK
K1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCiAKIDxTVUJTRUNUSU9OIEVkaXRpbmcgQ29tbWFuZHM+
CiBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVApAQCAtMjY1LDYgKzI2NiwxMiBAQCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3dlYnNpdGVfcG9saWNpZXMKIHdlYmtpdF93ZWJfdmlld19nZXRfaXNfd2Vi
X3Byb2Nlc3NfcmVzcG9uc2l2ZQogd2Via2l0X3dlYl92aWV3X3Rlcm1pbmF0ZV93ZWJfcHJvY2Vz
cwogd2Via2l0X3dlYl92aWV3X3NldF9jb3JzX2FsbG93bGlzdAord2Via2l0X3dlYl92aWV3X2dl
dF9jYW1lcmFfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2Nh
cHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKK3dl
YmtpdF93ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlCit3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5
X2NhcHR1cmVfc3RhdGUKIAogPFNVQlNFQ1RJT04gV2ViS2l0SmF2YXNjcmlwdFJlc3VsdD4KIFdl
YktpdEphdmFzY3JpcHRSZXN1bHQKQEAgLTgwMCw2ICs4MDcsNyBAQCB3ZWJraXRfbmF2aWdhdGlv
bl9hY3Rpb25fZ2V0X3R5cGUKIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0CiB3ZWJr
aXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UKIHdlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZQord2Via2l0X3VzZXJfbWVkaWFf
cGVybWlzc2lvbl9pc19mb3JfZGlzcGxheV9kZXZpY2UKIAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+
CiBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENsYXNzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmNjJjZTY4NDBmYTQzNDc4ZWU5Yjg0MTAzNTM3
MmQ5ODRlOGYzZWQ3Li4zNGJlMTc0MzkzNDAyZjNiNzFmNjc4YjJlMDE0ODk3YThlOWQ1ODQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTk0MjcsNiArOTQy
Nyw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoTWVk
aWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG5lCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRh
dGVSZXBvcnRlZE1lZGlhQ2FwdHVyZVN0YXRlKCkKIHsKKyAgICBpZiAobV9pc0Nsb3NlZCkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgYXV0byBhY3RpdmVDYXB0dXJlU3RhdGUgPSBtX21lZGlhU3Rh
dGUgJiBNZWRpYVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVNYXNrOwogICAgIGlmIChtX3JlcG9ydGVk
TWVkaWFDYXB0dXJlU3RhdGUgPT0gYWN0aXZlQ2FwdHVyZVN0YXRlKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjMx
ZTAyMWU0MmE4YTBiMTg2ODQ0ODhiZjY1M2E5MGM2MTFiNmViNS4uNTZmNTRhZWRmMDdkNDhlZGEx
MzZhNTZjMGMwMDBhMWM4MGJlZjY5NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTA3LTE4ICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xpYl0gRXhwb3NlIEFQ
SSB0byBhY2Nlc3MvbW9kaWZ5IGNhcHR1cmUgZGV2aWNlcyBzdGF0ZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzkwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBHVEsgTWluaUJyb3dzZXIgaXMg
bm93IGFibGUgdG8gc2hvdyBtZWRpYSBjYXB0dXJlIGluZGljYXRvcnMsIHRocm91Z2ggdGhlIFVS
SSBlbnRyeS4gQQorICAgICAgICBuZXcgQVBJIHRlc3Qgd2FzIGFkZGVkLCBjaGVja2luZyBzdXBw
b3J0IGZvciBnZXREaXNwbGF5TWVkaWEoKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9C
cm93c2VyVGFiLmM6CisgICAgICAgIChkZWNpZGVQZXJtaXNzaW9uUmVxdWVzdCk6CisgICAgICAg
ICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKHdlYlZpZXdNZWRp
YUNhcHR1cmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAod2ViVmlld1VyaUVudHJ5SWNvblByZXNz
ZWQpOgorICAgICAgICAoYnJvd3NlcldpbmRvd1N3aXRjaFRhYik6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0
V2ViVmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgICh0ZXN0V2ViVmll
d0F1ZGlvT25seVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgICh0ZXN0V2Vi
Vmlld0Rpc3BsYXlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAoYmVmb3Jl
QWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVz
dC5jcHA6CisgICAgICAgIChkaXNwbGF5Q2FwdHVyZUNoYW5nZWQpOgorICAgICAgICAoV2ViVmll
d1Rlc3Q6OndhaXRVbnRpbERpc3BsYXlDYXB0dXJlU3RhdGVDaGFuZ2VkVG8pOgorICAgICAgICAo
bWljcm9waG9uZUNhcHR1cmVDaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojp3YWl0VW50
aWxNaWNyb3Bob25lQ2FwdHVyZVN0YXRlQ2hhbmdlZFRvKToKKyAgICAgICAgKGNhbWVyYUNhcHR1
cmVDaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojp3YWl0VW50aWxDYW1lcmFDYXB0dXJl
U3RhdGVDaGFuZ2VkVG8pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYlZpZXdUZXN0Lmg6CisgICAgICAgICogZmxhdHBhay9mbGF0cGFrdXRpbHMucHk6CisgICAg
ICAgIChXZWJraXRGbGF0cGFrLnJ1bl9pbl9zYW5kYm94KToKKwogMjAyMS0wNy0xOCAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIElnbm9yZSB3ZWFrIGV4dGVy
bmFsIHN5bWJvbHMgaW4gY2xhbmcgY292ZXJhZ2UgYnVpbGRzIHVzaW5nIGNoZWNrLWZvci13ZWFr
LXZ0YWJsZXMtYW5kLWV4dGVybmFscwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJUYWIuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFiLmMKaW5kZXgg
OWIzNjYyYjIyNGE2Njc0YWMyYzI1YmQyOWZlYWE5ODYxMDc4MWU4Mi4uMWM4NGYzMGIyZWE5NmRk
MGMxNjg5MThmOWQ2Mzc3M2I4ZTI1NDhhMyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0Jyb3dzZXJUYWIuYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5j
CkBAIC0zMDcsMTYgKzMwNywyMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gZGVjaWRlUGVybWlzc2lvblJl
cXVlc3QoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0UGVybWlzc2lvbgogICAgICAgICB0
ZXh0ID0gZ19zdHJkdXAoIkFsbG93IG5vdGlmaWNhdGlvbnMgcmVxdWVzdD8iKTsKICAgICB9IGVs
c2UgaWYgKFdFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkg
ewogICAgICAgICB0aXRsZSA9ICJVc2VyTWVkaWEgcmVxdWVzdCI7Ci0gICAgICAgIGdib29sZWFu
IGlzX2Zvcl9hdWRpb19kZXZpY2UgPSB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zv
cl9hdWRpb19kZXZpY2UoV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVl
c3QpKTsKLSAgICAgICAgZ2Jvb2xlYW4gaXNfZm9yX3ZpZGVvX2RldmljZSA9IHdlYmtpdF91c2Vy
X21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZShXRUJLSVRfVVNFUl9NRURJQV9Q
RVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworICAgICAgICBnYm9vbGVhbiBpc0ZvckF1ZGlv
RGV2aWNlID0gd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfYXVkaW9fZGV2aWNl
KFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisgICAgICAg
IGdib29sZWFuIGlzRm9yVmlkZW9EZXZpY2UgPSB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9u
X2lzX2Zvcl92aWRlb19kZXZpY2UoV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNU
KHJlcXVlc3QpKTsKKyAgICAgICAgZ2Jvb2xlYW4gaXNGb3JEaXNwbGF5RGV2aWNlID0gd2Via2l0
X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlzcGxheV9kZXZpY2UoV0VCS0lUX1VTRVJf
TUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKwogICAgICAgICBjb25zdCBjaGFy
ICptZWRpYVR5cGUgPSBOVUxMOwotICAgICAgICBpZiAoaXNfZm9yX2F1ZGlvX2RldmljZSkgewot
ICAgICAgICAgICAgaWYgKGlzX2Zvcl92aWRlb19kZXZpY2UpCisgICAgICAgIGlmIChpc0ZvckF1
ZGlvRGV2aWNlKSB7CisgICAgICAgICAgICBpZiAoaXNGb3JWaWRlb0RldmljZSkKICAgICAgICAg
ICAgICAgICBtZWRpYVR5cGUgPSAiYXVkaW8vdmlkZW8iOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIG1lZGlhVHlwZSA9ICJhdWRpbyI7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNf
Zm9yX3ZpZGVvX2RldmljZSkKKyAgICAgICAgfSBlbHNlIGlmIChpc0ZvclZpZGVvRGV2aWNlKQog
ICAgICAgICAgICAgbWVkaWFUeXBlID0gInZpZGVvIjsKKyAgICAgICAgZWxzZSBpZiAoaXNGb3JE
aXNwbGF5RGV2aWNlKQorICAgICAgICAgICAgbWVkaWFUeXBlID0gImRpc3BsYXkiOwogICAgICAg
ICB0ZXh0ID0gZ19zdHJkdXBfcHJpbnRmKCJBbGxvdyBhY2Nlc3MgdG8gJXMgZGV2aWNlPyIsIG1l
ZGlhVHlwZSk7CiAgICAgfSBlbHNlIGlmIChXRUJLSVRfSVNfSU5TVEFMTF9NSVNTSU5HX01FRElB
X1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKSB7CiAgICAgICAgIHRpdGxlID0g
Ik1lZGlhIHBsdWdpbiBtaXNzaW5nIHJlcXVlc3QiOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
V2luZG93LmMKaW5kZXggMDYzZTk0NTY4NDkwY2M3MjE5MzIyMjk4N2I4MDVlN2RmZmY5NGZlYS4u
MjlhMDlkZGFmZTRkYmQ1MGY4YTJjNDYxYTkxYzYzZmJlZWRlMDAzYSAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC02NDksNiArNjQ5LDcyIEBAIHN0YXRpYyB2b2lkIGZh
dmljb25DaGFuZ2VkKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEdQYXJhbVNwZWMgKnBhcmFtU3Bl
YywgQnJvd3NlCiAgICAgdXBkYXRlVXJpRW50cnlJY29uKHdpbmRvdyk7CiB9CiAKK3N0YXRpYyB2
b2lkIHdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZUNoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmll
dywgR1BhcmFtU3BlYyogcGFyYW1TcGVjLCBCcm93c2VyV2luZG93KiB3aW5kb3cpCit7CisgICAg
Y29uc3QgZ2NoYXIqIG5hbWUgPSBnX3BhcmFtX3NwZWNfZ2V0X25hbWUocGFyYW1TcGVjKTsKKyAg
ICAvLyBGSVhNRTogdGhlIFVSSSBlbnRyeSBpcyBub3QgZ3JlYXQgc3RvcmFnZSBpbiBjYXNlIG1v
cmUgdGhhbiBvbmUgY2FwdHVyZSBkZXZpY2UgaXMgaW4gdXNlLAorICAgIC8vIGJlY2F1c2UgaXQg
Y2FuIHN0b3JlIG9ubHkgb25lIHNlY29uZGFyeSBpY29uLgorICAgIEd0a0VudHJ5ICplbnRyeSA9
IEdUS19FTlRSWSh3aW5kb3ctPnVyaUVudHJ5KTsKKworICAgIGlmIChnX3N0cl9oYXNfcHJlZml4
KG5hbWUsICJtaWNyb3Bob25lIikpIHsKKyAgICAgICAgc3dpdGNoICh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSkgeworICAgICAgICBjYXNlIFdF
QktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU6CisgICAgICAgICAgICBndGtfZW50cnlfc2V0
X2ljb25fZnJvbV9pY29uX25hbWUoZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgTlVM
TCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVS
RV9TVEFURV9NVVRFRDoKKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25f
bmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCAibWljcm9waG9uZS1zZW5zaXZp
dHktbXV0ZXMtc3ltYm9saWMiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdF
QktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRToKKyAgICAgICAgICAgIGd0a19lbnRyeV9z
ZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCAi
YXVkaW8taW5wdXQtbWljcm9waG9uZS1zeW1ib2xpYyIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgobmFtZSwgImNhbWVyYSIp
KSB7CisgICAgICAgIHN3aXRjaCAod2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9z
dGF0ZSh3ZWJWaWV3KSkgeworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRF
X05PTkU6CisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9pY29uX25hbWUoZW50
cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgTlVMTCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDoKKyAgICAgICAg
ICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lD
T05fU0VDT05EQVJZLCAiY2FtZXJhLWRpc2FibGVkLXN5bWJvbGljIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkU6Cisg
ICAgICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9pY29uX25hbWUoZW50cnksIEdUS19F
TlRSWV9JQ09OX1NFQ09OREFSWSwgImNhbWVyYS13ZWItc3ltYm9saWMiKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KG5hbWUs
ICJkaXNwbGF5IikpIHsKKyAgICAgICAgc3dpdGNoICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3Bs
YXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSkgeworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9D
QVBUVVJFX1NUQVRFX05PTkU6CisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9p
Y29uX25hbWUoZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgTlVMTCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRF
RDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJIGZvdW5kIG5vIHN1aXRhYmxlIGljb24gZm9yIHRo
aXMuCisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9pY29uX25hbWUoZW50cnks
IEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgIm1lZGlhLXBsYXliYWNrLXN0b3Atc3ltYm9saWMi
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX0FDVElWRToKKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25f
bmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCAidmlkZW8tZGlzcGxheS1zeW1i
b2xpYyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRp
YyB2b2lkIHdlYlZpZXdVcmlFbnRyeUljb25QcmVzc2VkKEd0a0VudHJ5KiBlbnRyeSwgR3RrRW50
cnlJY29uUG9zaXRpb24gcG9zaXRpb24sIEdka0V2ZW50KiBldmVudCwgQnJvd3NlcldpbmRvdyog
d2luZG93KQoreworICAgIGlmIChwb3NpdGlvbiAhPSBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBXaGF0IGFib3V0IGF1ZGlvL3ZpZGVv
PworICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBicm93c2VyX3RhYl9nZXRfd2ViX3ZpZXco
d2luZG93LT5hY3RpdmVUYWIpOworICAgIHN3aXRjaCAod2Via2l0X3dlYl92aWV3X2dldF9kaXNw
bGF5X2NhcHR1cmVfc3RhdGUod2ViVmlldykpIHsKKyAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBU
VVJFX1NUQVRFX05PTkU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX01FRElBX0NB
UFRVUkVfU1RBVEVfTVVURUQ6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9j
YXB0dXJlX3N0YXRlKHdlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNU
SVZFOgorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh3
ZWJWaWV3LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKwogc3RhdGljIHZvaWQgd2ViVmlld0lzTG9hZGluZ0NoYW5nZWQoV2ViS2l0
V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcGFyYW1TcGVjLCBCcm93c2VyV2luZG93ICp3
aW5kb3cpCiB7CiAgICAgZ2Jvb2xlYW4gaXNMb2FkaW5nID0gd2Via2l0X3dlYl92aWV3X2lzX2xv
YWRpbmcod2ViVmlldyk7CkBAIC0xMTgwLDYgKzEyNDYsMTIgQEAgc3RhdGljIHZvaWQgYnJvd3Nl
cldpbmRvd1N3aXRjaFRhYihHdGtOb3RlYm9vayAqbm90ZWJvb2ssIEJyb3dzZXJUYWIgKnRhYiwg
Z3VpbnQKICNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiAgICAgZ19zaWduYWxfY29u
bmVjdCh3ZWJWaWV3LCAic2Nyb2xsLWV2ZW50IiwgR19DQUxMQkFDSyhzY3JvbGxFdmVudENhbGxi
YWNrKSwgd2luZG93KTsKICNlbmRpZgorICAgIGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KHdlYlZp
ZXcsICJub3RpZnk6OmNhbWVyYS1jYXB0dXJlLXN0YXRlIiwgR19DQUxMQkFDSyh3ZWJWaWV3TWVk
aWFDYXB0dXJlU3RhdGVDaGFuZ2VkKSwgd2luZG93LCAwKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
X29iamVjdCh3ZWJWaWV3LCAibm90aWZ5OjptaWNyb3Bob25lLWNhcHR1cmUtc3RhdGUiLCBHX0NB
TExCQUNLKHdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZUNoYW5nZWQpLCB3aW5kb3csIDApOworICAg
IGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KHdlYlZpZXcsICJub3RpZnk6OmRpc3BsYXktY2FwdHVy
ZS1zdGF0ZSIsIEdfQ0FMTEJBQ0sod2ViVmlld01lZGlhQ2FwdHVyZVN0YXRlQ2hhbmdlZCksIHdp
bmRvdywgMCk7CisKKyAgICBnX29iamVjdF9zZXQod2luZG93LT51cmlFbnRyeSwgInNlY29uZGFy
eS1pY29uLWFjdGl2YXRhYmxlIiwgVFJVRSwgTlVMTCk7CisgICAgZ19zaWduYWxfY29ubmVjdCh3
aW5kb3ctPnVyaUVudHJ5LCAiaWNvbi1wcmVzcyIsIEdfQ0FMTEJBQ0sod2ViVmlld1VyaUVudHJ5
SWNvblByZXNzZWQpLCB3aW5kb3cpOwogCiAgICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0ICpiYWNr
Rm9yd2FyZGxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0KHdlYlZp
ZXcpOwogICAgIGJyb3dzZXJXaW5kb3dVcGRhdGVOYXZpZ2F0aW9uTWVudSh3aW5kb3csIGJhY2tG
b3J3YXJkbGlzdCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0VUlDbGllbnQuY3BwCmluZGV4IGFiYTMyMWM5Y2FlNjJhN2UwMGYwMzMyMWU0NGNl
MGM3NWNlMmRmODguLjAwZmU5MmQ5OGVmZjUwMzE1MWVmZDIyNjhhMzA2ZDVmMWRmYmJiNTUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGll
bnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlD
bGllbnQuY3BwCkBAIC0yNDAsNiArMjQwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgV2ViS2l0
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHVzZXJNZWRpYVJlcXVlc3QgPSBXRUJLSVRfVVNF
Ul9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCk7CiAgICAgICAgICAgICBnX2Fzc2Vy
dF90cnVlKHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2F1ZGlvX2RldmljZSh1
c2VyTWVkaWFSZXF1ZXN0KSA9PSB0ZXN0LT5tX2V4cGVjdGVkQXVkaW9NZWRpYSk7CiAgICAgICAg
ICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3Zp
ZGVvX2RldmljZSh1c2VyTWVkaWFSZXF1ZXN0KSA9PSB0ZXN0LT5tX2V4cGVjdGVkVmlkZW9NZWRp
YSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Np
b25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlKHVzZXJNZWRpYVJlcXVlc3QpID09IHRlc3QtPm1fZXhw
ZWN0ZWREaXNwbGF5TWVkaWEpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRlc3QtPm1fYWxs
b3dQZXJtaXNzaW9uUmVxdWVzdHMpCkBAIC0yNjMsNiArMjY0LDcgQEAgcHVibGljOgogICAgICAg
ICAsIG1fdmVyaWZ5TWVkaWFUeXBlcyhmYWxzZSkKICAgICAgICAgLCBtX2V4cGVjdGVkQXVkaW9N
ZWRpYShmYWxzZSkKICAgICAgICAgLCBtX2V4cGVjdGVkVmlkZW9NZWRpYShmYWxzZSkKKyAgICAg
ICAgLCBtX2V4cGVjdGVkRGlzcGxheU1lZGlhKGZhbHNlKQogICAgICAgICAsIG1fbW91c2VUYXJn
ZXRNb2RpZmllcnMoMCkKICAgICB7CiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNj
cmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkod2Via2l0X3dlYl92aWV3X2dldF9z
ZXR0aW5ncyhtX3dlYlZpZXcpLCBUUlVFKTsKQEAgLTQxNSw2ICs0MTcsNyBAQCBwdWJsaWM6CiAg
ICAgZ2Jvb2xlYW4gbV92ZXJpZnlNZWRpYVR5cGVzOwogICAgIGdib29sZWFuIG1fZXhwZWN0ZWRB
dWRpb01lZGlhOwogICAgIGdib29sZWFuIG1fZXhwZWN0ZWRWaWRlb01lZGlhOworICAgIGdib29s
ZWFuIG1fZXhwZWN0ZWREaXNwbGF5TWVkaWE7CiAgICAgV2luZG93UHJvcGVydGllcyBtX3dpbmRv
d1Byb3BlcnRpZXM7CiAgICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV93aW5kb3dQcm9wZXJ0aWVz
Q2hhbmdlZDsKICAgICBHUmVmUHRyPFdlYktpdEhpdFRlc3RSZXN1bHQ+IG1fbW91c2VUYXJnZXRI
aXRUZXN0UmVzdWx0OwpAQCAtMTAwMSwxNiArMTAwNCw0NCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Vmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25z
dHBvaQogICAgIHRlc3QtPm1fdmVyaWZ5TWVkaWFUeXBlcyA9IFRSVUU7CiAgICAgdGVzdC0+bV9l
eHBlY3RlZEF1ZGlvTWVkaWEgPSBUUlVFOwogICAgIHRlc3QtPm1fZXhwZWN0ZWRWaWRlb01lZGlh
ID0gVFJVRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkRGlzcGxheU1lZGlhID0gRkFMU0U7CiAKICAg
ICAvLyBUZXN0IGRlbnlpbmcgYSBwZXJtaXNzaW9uIHJlcXVlc3QuCiAgICAgdGVzdC0+bV9hbGxv
d1Blcm1pc3Npb25SZXF1ZXN0cyA9IGZhbHNlOwogICAgIHRlc3QtPmxvYWRIdG1sKHVzZXJNZWRp
YVJlcXVlc3RIVE1MLCBudWxscHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxUaXRsZUNoYW5nZWRU
bygiTm90QWxsb3dlZEVycm9yIik7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lU
X01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9
PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmll
dyksID09LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FKTsKIAogICAgIC8vIFRlc3Qg
YWxsb3dpbmcgYSBwZXJtaXNzaW9uIHJlcXVlc3QuCiAgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Np
b25SZXF1ZXN0cyA9IHRydWU7CiAgICAgdGVzdC0+bG9hZEh0bWwodXNlck1lZGlhUmVxdWVzdEhU
TUwsIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJPSyIpOwor
ICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVf
c3RhdGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05P
TkUpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25l
X2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX0FDVElWRSk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmlldyksID09LCBXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9BQ1RJVkUpOworCisgICAgd2Via2l0X3dlYl92aWV3X3NldF9taWNyb3Bo
b25lX2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9T
VEFURV9NVVRFRCk7CisgICAgdGVzdC0+d2FpdFVudGlsTWljcm9waG9uZUNhcHR1cmVTdGF0ZUNo
YW5nZWRUbyhXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRCk7CisKKyAgICB3ZWJraXRf
d2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcsIFdF
QktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRSk7CisgICAgdGVzdC0+d2FpdFVudGlsTWlj
cm9waG9uZUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyhXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9B
Q1RJVkUpOworCisgICAgd2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSh0
ZXN0LT5tX3dlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEKTsKKyAgICB0
ZXN0LT53YWl0VW50aWxDYW1lcmFDYXB0dXJlU3RhdGVDaGFuZ2VkVG8oV0VCS0lUX01FRElBX0NB
UFRVUkVfU1RBVEVfTVVURUQpOworCisgICAgd2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2Fw
dHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FD
VElWRSk7CisgICAgdGVzdC0+d2FpdFVudGlsQ2FtZXJhQ2FwdHVyZVN0YXRlQ2hhbmdlZFRvKFdF
QktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRSk7CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdf
c2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmlldywgV0VCS0lUX01FRElBX0NB
UFRVUkVfU1RBVEVfTk9ORSk7CisgICAgdGVzdC0+d2FpdFVudGlsQ2FtZXJhQ2FwdHVyZVN0YXRl
Q2hhbmdlZFRvKFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUpOworCisgICAgLy8gQSBk
ZS1hY3RpdmF0ZWQgY2FwdHVyZSBkZXZpY2UgY2Fubm90IGJlIHJlLWFjdGl2YXRlZC4KKyAgICB3
ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmlldywg
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50
KHdlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3
KSwgPT0sIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUpOworCisgICAgZ19hc3NlcnRf
Y21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSh0ZXN0
LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFKTsKIAog
ICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgZW5h
YmxlZCk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbW9ja19jYXB0dXJlX2Rldmlj
ZXMoc2V0dGluZ3MsIEZBTFNFKTsKQEAgLTEwNDEsMTEgKzEwNzIsODEgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRU
ZXN0KiB0ZXN0LAogICAgIHRlc3QtPm1fdmVyaWZ5TWVkaWFUeXBlcyA9IFRSVUU7CiAgICAgdGVz
dC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEgPSBUUlVFOwogICAgIHRlc3QtPm1fZXhwZWN0ZWRWaWRl
b01lZGlhID0gRkFMU0U7CisgICAgdGVzdC0+bV9leHBlY3RlZERpc3BsYXlNZWRpYSA9IEZBTFNF
OwogCiAgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgogICAgIHRlc3Qt
Pm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxzZTsKICAgICB0ZXN0LT5sb2FkSHRtbCh1
c2VyTWVkaWFSZXF1ZXN0SFRNTCwgbnVsbHB0cik7CiAgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVD
aGFuZ2VkVG8oIk5vdEFsbG93ZWRFcnJvciIpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0
X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3KSwgPT0s
IFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQo
d2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJW
aWV3KSwgPT0sIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUpOworICAgIGdfYXNzZXJ0
X2NtcHVpbnQod2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5t
X3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CisKKyAgICB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MsIGVuYWJsZWQp
OworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21vY2tfY2FwdHVyZV9kZXZpY2VzKHNl
dHRpbmdzLCBGQUxTRSk7CisgICAgd2Via2l0U2V0dGluZ3NTZXRNZWRpYUNhcHR1cmVSZXF1aXJl
c1NlY3VyZUNvbm5lY3Rpb24oc2V0dGluZ3MsIFRSVUUpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0Rpc3BsYXlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncyA9IHdl
YmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3KTsKKyAgICBnYm9vbGVh
biBlbmFibGVkID0gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRp
bmdzKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGlu
Z3MsIFRSVUUpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21vY2tfY2FwdHVyZV9k
ZXZpY2VzKHNldHRpbmdzLCBUUlVFKTsKKyAgICB3ZWJraXRTZXR0aW5nc1NldE1lZGlhQ2FwdHVy
ZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbihzZXR0aW5ncywgRkFMU0UpOworCisgICAgdGVzdC0+
c2hvd0luV2luZG93KCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRpc3BsYXlNZWRpYVJlcXVl
c3RIVE1MID0gIjxodG1sPiIKKyAgICAgICAgIiAgPHNjcmlwdD4iCisgICAgICAgICIgIGZ1bmN0
aW9uIHJ1blRlc3QoKSIKKyAgICAgICAgIiAgeyIKKyAgICAgICAgIiAgICAgIG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhKCkiCisgICAgICAgICIgICAgICAgIC50aGVuKChz
dHJlYW0pID0+IHsgZG9jdW1lbnQudGl0bGUgPSBcIk9LXCI7IH0pIgorICAgICAgICAiICAgICAg
ICAuY2F0Y2goKGUpID0+IHsgZG9jdW1lbnQudGl0bGUgPSBlLm5hbWU7IH0pOyIKKyAgICAgICAg
IiAgfSIKKyAgICAgICAgIiAgPC9zY3JpcHQ+IgorICAgICAgICAiICA8Ym9keT4iCisgICAgICAg
ICIgIDxpbnB1dCBzdHlsZT1cInBvc2l0aW9uOmFic29sdXRlOyBsZWZ0OjA7IHRvcDowOyBtYXJn
aW46MDsgcGFkZGluZzowXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiY2xpY2sgbWVcIiBvbmNs
aWNrPVwicnVuVGVzdCgpO1wiLz4iCisgICAgICAgICIgIDwvYm9keT4iCisgICAgICAgICI8L2h0
bWw+IjsKKworICAgIHRlc3QtPm1fdmVyaWZ5TWVkaWFUeXBlcyA9IFRSVUU7CisgICAgdGVzdC0+
bV9leHBlY3RlZEF1ZGlvTWVkaWEgPSBGQUxTRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkVmlkZW9N
ZWRpYSA9IEZBTFNFOworICAgIHRlc3QtPm1fZXhwZWN0ZWREaXNwbGF5TWVkaWEgPSBUUlVFOwor
CisgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlzc2lvbiByZXF1ZXN0LgorICAgIHRlc3QtPm1f
YWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxzZTsKKyAgICB0ZXN0LT5sb2FkSHRtbChkaXNw
bGF5TWVkaWFSZXF1ZXN0SFRNTCwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CisgICAgdGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbig1LCA1KTsKKyAgICB0ZXN0LT53
YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiTm90QWxsb3dlZEVycm9yIik7CisgICAgZ19hc3NlcnRf
Y21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5t
X3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CisgICAgZ19h
c3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0
ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7
CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJl
X3N0YXRlKHRlc3QtPm1fd2ViVmlldyksID09LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9O
T05FKTsKKworICAgIC8vIFRlc3QgYWxsb3dpbmcgYSBwZXJtaXNzaW9uIHJlcXVlc3QuCisgICAg
dGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9IHRydWU7CisgICAgdGVzdC0+bG9hZEh0
bWwoZGlzcGxheU1lZGlhUmVxdWVzdEhUTUwsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmNsaWNrTW91c2VCdXR0b24oNSwgNSk7CisgICAg
dGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIk9LIik7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZp
ZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFKTsKKyAgICBnX2Fzc2Vy
dF9jbXB1aW50KHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKHRl
c3QtPm1fd2ViVmlldyksID09LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FKTsKKyAg
ICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3Rh
dGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUp
OworCisgICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUodGVzdC0+
bV93ZWJWaWV3LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRCk7CisgICAgdGVzdC0+
d2FpdFVudGlsRGlzcGxheUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyhXRUJLSVRfTUVESUFfQ0FQVFVS
RV9TVEFURV9NVVRFRCk7CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVy
ZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElW
RSk7CisgICAgdGVzdC0+d2FpdFVudGlsRGlzcGxheUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyhXRUJL
SVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUpOworCisgICAgd2Via2l0X3dlYl92aWV3X3Nl
dF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3LCBXRUJLSVRfTUVESUFfQ0FQ
VFVSRV9TVEFURV9OT05FKTsKKyAgICB0ZXN0LT53YWl0VW50aWxEaXNwbGF5Q2FwdHVyZVN0YXRl
Q2hhbmdlZFRvKFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUpOworCisgICAgLy8gQSBk
ZS1hY3RpdmF0ZWQgY2FwdHVyZSBkZXZpY2UgY2Fubm90IGJlIHJlLWFjdGl2YXRlZC4KKyAgICB3
ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcs
IFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRSk7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZp
ZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CiAKICAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MsIGVuYWJsZWQpOwogICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21vY2tfY2FwdHVyZV9kZXZpY2VzKHNldHRpbmdz
LCBGQUxTRSk7CkBAIC0xMzQzLDYgKzE0NDQsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgVUlD
bGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAidXNlcm1lZGlhLWVudW1lcmF0ZWRldmlj
ZXMtcGVybWlzc2lvbi1jaGVjayIsIHRlc3RXZWJWaWV3VXNlck1lZGlhRW51bWVyYXRlRGV2aWNl
c1Blcm1pc3Npb25DaGVjayk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAidXNlcm1lZGlhLXBlcm1pc3Npb24tcmVxdWVzdHMiLCB0ZXN0V2ViVmlld1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0cyk7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAiYXVkaW8tdXNlcm1lZGlhLXBlcm1pc3Npb24tcmVxdWVzdCIsIHRlc3RXZWJWaWV3QXVkaW9P
bmx5VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKKyAgICBVSUNsaWVudFRlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJkaXNwbGF5LXVzZXJtZWRpYS1wZXJtaXNzaW9uLXJlcXVlc3QiLCB0
ZXN0V2ViVmlld0Rpc3BsYXlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOwogI2VuZGlmCiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBtb3VzZSBjbGljayBpbiBXUEUuCiAjaWYgUExBVEZPUk0o
R1RLKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2Vi
Vmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmll
d1Rlc3QuY3BwCmluZGV4IDgyNjRlYmFhZDU1N2ZkMGY5YTFjMWFhNzVkOTI0YWMyY2EyOTBiMWQu
LmQzMjNjODA2N2FmZDExMjM0ZTU2MjRmNzdhNjE5Y2M0NWQyNzIzYTkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKQEAgLTI1
MCw2ICsyNTAsNjAgQEAgdm9pZCBXZWJWaWV3VGVzdDo6c2V0RWRpdGFibGUoYm9vbCBlZGl0YWJs
ZSkKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2VkaXRhYmxlKG1fd2ViVmlldywgZWRpdGFibGUp
OwogfQogCitzdGF0aWMgdm9pZCBkaXNwbGF5Q2FwdHVyZUNoYW5nZWQoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgR1BhcmFtU3BlYyosIFdlYlZpZXdUZXN0KiB0ZXN0KQoreworICAgIGlmICh0ZXN0
LT5tX2V4cGVjdGVkRGlzcGxheUNhcHR1cmVTdGF0ZSAmJiAqdGVzdC0+bV9leHBlY3RlZERpc3Bs
YXlDYXB0dXJlU3RhdGUgIT0gd2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3Rh
dGUod2ViVmlldykpCisgICAgICAgIHJldHVybjsKKworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rp
c2Nvbm5lY3RfYnlfZnVuYyh3ZWJWaWV3LCByZWludGVycHJldF9jYXN0PHZvaWQqPihkaXNwbGF5
Q2FwdHVyZUNoYW5nZWQpLCB0ZXN0KTsKKyAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFp
bkxvb3ApOworfQorCit2b2lkIFdlYlZpZXdUZXN0Ojp3YWl0VW50aWxEaXNwbGF5Q2FwdHVyZVN0
YXRlQ2hhbmdlZFRvKFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIGV4cGVjdGVkQ2FwdHVyZVN0YXRl
KQoreworICAgICptX2V4cGVjdGVkRGlzcGxheUNhcHR1cmVTdGF0ZSA9IGV4cGVjdGVkQ2FwdHVy
ZVN0YXRlOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibm90aWZ5OjpkaXNwbGF5
LWNhcHR1cmUtc3RhdGUiLCBHX0NBTExCQUNLKGRpc3BsYXlDYXB0dXJlQ2hhbmdlZCksIHRoaXMp
OworICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50
KHdlYmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKG1fd2ViVmlldyksID09
LCBleHBlY3RlZENhcHR1cmVTdGF0ZSk7CisgICAgbV9leHBlY3RlZERpc3BsYXlDYXB0dXJlU3Rh
dGUucmVzZXQoKTsKK30KKworc3RhdGljIHZvaWQgbWljcm9waG9uZUNhcHR1cmVDaGFuZ2VkKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqLCBXZWJWaWV3VGVzdCogdGVzdCkKK3sK
KyAgICBpZiAodGVzdC0+bV9leHBlY3RlZE1pY3JvcGhvbmVDYXB0dXJlU3RhdGUgJiYgKnRlc3Qt
Pm1fZXhwZWN0ZWRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlICE9IHdlYmtpdF93ZWJfdmlld19nZXRf
bWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4obWljcm9waG9uZUNhcHR1cmVDaGFuZ2VkKSwgdGVzdCk7CisgICAgZ19t
YWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKK30KKwordm9pZCBXZWJWaWV3VGVzdDo6
d2FpdFVudGlsTWljcm9waG9uZUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyhXZWJLaXRNZWRpYUNhcHR1
cmVTdGF0ZSBleHBlY3RlZENhcHR1cmVTdGF0ZSkKK3sKKyAgICAqbV9leHBlY3RlZE1pY3JvcGhv
bmVDYXB0dXJlU3RhdGUgPSBleHBlY3RlZENhcHR1cmVTdGF0ZTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KG1fd2ViVmlldywgIm5vdGlmeTo6bWljcm9waG9uZS1jYXB0dXJlLXN0YXRlIiwgR19DQUxM
QkFDSyhtaWNyb3Bob25lQ2FwdHVyZUNoYW5nZWQpLCB0aGlzKTsKKyAgICBnX21haW5fbG9vcF9y
dW4obV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0
X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZShtX3dlYlZpZXcpLCA9PSwgZXhwZWN0ZWRDYXB0dXJl
U3RhdGUpOworICAgIG1fZXhwZWN0ZWRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlLnJlc2V0KCk7Cit9
CisKK3N0YXRpYyB2b2lkIGNhbWVyYUNhcHR1cmVDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIEdQYXJhbVNwZWMqLCBXZWJWaWV3VGVzdCogdGVzdCkKK3sKKyAgICBpZiAodGVzdC0+bV9l
eHBlY3RlZENhbWVyYUNhcHR1cmVTdGF0ZSAmJiAqdGVzdC0+bV9leHBlY3RlZENhbWVyYUNhcHR1
cmVTdGF0ZSAhPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHdlYlZp
ZXcpKQorICAgICAgICByZXR1cm47CisKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0
X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY2FtZXJhQ2FwdHVyZUNo
YW5nZWQpLCB0ZXN0KTsKKyAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwor
fQorCit2b2lkIFdlYlZpZXdUZXN0Ojp3YWl0VW50aWxDYW1lcmFDYXB0dXJlU3RhdGVDaGFuZ2Vk
VG8oV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgZXhwZWN0ZWRDYXB0dXJlU3RhdGUpCit7CisgICAg
Km1fZXhwZWN0ZWRDYW1lcmFDYXB0dXJlU3RhdGUgPSBleHBlY3RlZENhcHR1cmVTdGF0ZTsKKyAg
ICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgIm5vdGlmeTo6Y2FtZXJhLWNhcHR1cmUtc3Rh
dGUiLCBHX0NBTExCQUNLKGNhbWVyYUNhcHR1cmVDaGFuZ2VkKSwgdGhpcyk7CisgICAgZ19tYWlu
X2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYl92
aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZShtX3dlYlZpZXcpLCA9PSwgZXhwZWN0ZWRDYXB0
dXJlU3RhdGUpOworICAgIG1fZXhwZWN0ZWRDYW1lcmFDYXB0dXJlU3RhdGUucmVzZXQoKTsKK30K
Kwogc3RhdGljIHZvaWQgZGlyZWN0b3J5Q2hhbmdlZENhbGxiYWNrKEdGaWxlTW9uaXRvciosIEdG
aWxlKiBmaWxlLCBHRmlsZSosIEdGaWxlTW9uaXRvckV2ZW50IGV2ZW50LCBXZWJWaWV3VGVzdCog
dGVzdCkKIHsKICAgICBpZiAoZXZlbnQgPT0gdGVzdC0+bV9leHBlY3RlZEZpbGVDaGFuZ2VFdmVu
dCAmJiBnX2ZpbGVfZXF1YWwoZmlsZSwgdGVzdC0+bV9tb25pdG9yZWRGaWxlLmdldCgpKSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCmlu
ZGV4IDViZmU3ODNkMjI5NTU1OWIxMjc0MzM4YmZkNTE2Yzg5ZDRhZGUyM2IuLjYzNzNmMzQwM2Yx
NmE5ZTdjZmZmMDEwYTYwMzc0N2MwZDNkNDVjYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApAQCAtNjIsNiArNjIsMTAgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNFZGl0YWJsZSgpOwogICAgIHZvaWQgc2V0RWRpdGFibGUoYm9vbCk7
CiAKKyAgICB2b2lkIHdhaXRVbnRpbENhbWVyYUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyhXZWJLaXRN
ZWRpYUNhcHR1cmVTdGF0ZSk7CisgICAgdm9pZCB3YWl0VW50aWxEaXNwbGF5Q2FwdHVyZVN0YXRl
Q2hhbmdlZFRvKFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlKTsKKyAgICB2b2lkIHdhaXRVbnRpbE1p
Y3JvcGhvbmVDYXB0dXJlU3RhdGVDaGFuZ2VkVG8oV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUpOwor
CiAgICAgdm9pZCBtb3VzZU1vdmVUbyhpbnQgeCwgaW50IHksIHVuc2lnbmVkIG1vdXNlTW9kaWZp
ZXJzID0gMCk7CiAgICAgdm9pZCBjbGlja01vdXNlQnV0dG9uKGludCB4LCBpbnQgeSwgdW5zaWdu
ZWQgYnV0dG9uID0gMSwgdW5zaWduZWQgbW91c2VNb2RpZmllcnMgPSAwKTsKICAgICB2b2lkIGtl
eVN0cm9rZSh1bnNpZ25lZCBrZXlWYWwsIHVuc2lnbmVkIGtleU1vZGlmaWVycyA9IDApOwpAQCAt
MTEyLDYgKzExNiwxMCBAQCBwdWJsaWM6CiAgICAgR1JlZlB0cjxHRmlsZT4gbV9tb25pdG9yZWRG
aWxlOwogICAgIEdGaWxlTW9uaXRvckV2ZW50IG1fZXhwZWN0ZWRGaWxlQ2hhbmdlRXZlbnQ7CiAK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlPiBtX2V4cGVjdGVkQ2Ft
ZXJhQ2FwdHVyZVN0YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0TWVkaWFDYXB0dXJlU3Rh
dGU+IG1fZXhwZWN0ZWREaXNwbGF5Q2FwdHVyZVN0YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0TWVkaWFDYXB0dXJlU3RhdGU+IG1fZXhwZWN0ZWRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlOwor
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEd0a1dpZGdldCogbV9wYXJlbnRXaW5kb3cgeyBudWxs
cHRyIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5
IGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKaW5kZXggMWNiMjk4MmVjYmEwZTIzOWVi
MjBjYWE0MzQ0OGQyN2RhZWE1Y2ViMC4uYjRkMTlmMDkwN2UxMjI4NjQyNTFhMDRjYTNiZjZiM2Fm
YmQxOTExMSAxMDA2NDQKLS0tIGEvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKKysrIGIv
VG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKQEAgLTgwMSw4ICs4MDEsMTAgQEAgY2xhc3Mg
V2Via2l0RmxhdHBhazoKICAgICAgICAgICAgICJKU0MiLAogICAgICAgICAgICAgIk1FU0EiLAog
ICAgICAgICAgICAgIkxJQkdMIiwKKyAgICAgICAgICAgICJQSVBFV0lSRSIsCiAgICAgICAgICAg
ICAiUlVTVCIsCiAgICAgICAgICAgICAiU0NDQUNIRSIsCisgICAgICAgICAgICAiU1BBIiwKICAg
ICAgICAgICAgICJXQVlMQU5EIiwKICAgICAgICAgICAgICJXRUJLSVQiLAogICAgICAgICAgICAg
IldFQktJVDIiLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433871</attachid>
            <date>2021-07-20 06:32:06 -0700</date>
            <delta_ts>2021-07-21 05:04:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227902-20210720063204.patch</filename>
            <type>text/plain</type>
            <size>53042</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRmNzRmYjFjZDllNTFlMDM2
MDc0MTIwMzc1NThmMzVhN2FkMTNkMzEuLmI1ZTE3NmYyNjVlOTYwZGJhODU4YzdlNGMwMTI0ZGZj
NTZmODhkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDctMTggIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBFeHBvc2Ug
QVBJIHRvIGFjY2Vzcy9tb2RpZnkgY2FwdHVyZSBkZXZpY2VzIHN0YXRlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3OTAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBHTGliIEFQ
SSAoYW5kIGNvcnJlc3BvbmRpbmcgR09iamVjdCBwcm9wZXJ0aWVzKToKKworICAgICAgICB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlCisgICAgICAgIHdlYmtpdF93ZWJf
dmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlCisgICAgICAgIHdlYmtpdF93ZWJfdmll
d19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X2dldF9kaXNw
bGF5X2NhcHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2Nh
cHR1cmVfc3RhdGUKKyAgICAgICAgd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3Jf
ZGlzcGxheV9kZXZpY2UKKworICAgICAgICBUaGlzIGNhbiBiZSB1c2VmdWwgaW4gV2ViIGJyb3dz
ZXJzIHdpbGxpbmcgdG8gaW5kaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUgY2FwdHVyZSBkZXZpY2Vz
CisgICAgICAgIGN1cnJlbnRseSBpbiB1c2UgYnkgdGhlIFdlYlZpZXcuCisKKyAgICAgICAgQ292
ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VUlDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXNlcl9tZWRpYV9wZXJt
aXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld01lZGlhQ2FwdHVy
ZVN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdTZXRQcm9wZXJ0eSk6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3R2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0V2ViVmlld0NvbmZpZ3VyZU1lZGlhQ2Fw
dHVyZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRl
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUpOgor
ICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUpOgorICAg
ICAgICAod2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisKIDIwMjEtMDct
MjAgIEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4KIAogICAgICAgICBb
R1RLXSBQcm9wYWdhdGUgR3RrU2V0dGluZ3MgdG8gd2ViIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVJQ2xpZW50LmNwcAppbmRleCAwYWZk
OTdiZTQ2NGNlYjYwOWYxYzQzYWE3MjBmM2I0YzI5Nzc3OGJkLi44MzY3YjIzOGYyMmNmOGE0NTQ3
ZjhlZjdlYzc2N2JlYmIwYTdiMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0zNTIsNiArMzUyLDExIEBAIHByaXZh
dGU6CiAgICAgICAgIHdlYmtpdFdlYlZpZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQobV93ZWJWaWV3
KTsKICAgICB9CiAKKyAgICB2b2lkIG1lZGlhQ2FwdHVyZVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlRmxhZ3MpIGZpbmFsCisg
ICAgeworICAgICAgICB3ZWJraXRXZWJWaWV3TWVkaWFDYXB0dXJlU3RhdGVEaWRDaGFuZ2UobV93
ZWJWaWV3LCBtZWRpYVN0YXRlRmxhZ3MpOworICAgIH0KKwogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCiAgICAgdm9pZCByZXF1ZXN0UG9pbnRlckxvY2soV2ViUGFnZVByb3h5KiBwYWdlKSBmaW5h
bAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmNwcAppbmRleCBm
MDhiZmMxMTBmOGEwODcxNjFmZTJhZjkyMTgxMGQxOTgxYjg0ZTU1Li4zZDk5N2EzMmY4ZWNjM2Vm
MDg5NmI3N2Q0YTgzYmFhOGYwNThhNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QuY3BwCkBAIC0xMzYsNiArMTM2LDIwIEBAIGdib29sZWFuIHdlYmtpdF91c2VyX21l
ZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZShXZWJLaXRVc2VyTWVkaWFQZXJtaXNz
CiAgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnJlcXVlc3QtPnJlcXVpcmVzVmlkZW9DYXB0dXJl
KCk7CiB9CiAKKy8qKgorICogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlz
cGxheV9kZXZpY2U6CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiBhY2Nlc3MgdG8gYSBkaXNwbGF5IGRldmlj
ZSB3YXMgcmVxdWVzdGVkLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK2dib29sZWFuIHdlYmtp
dF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlKFdlYktpdFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHJlcXVlc3QtPnByaXYtPnJlcXVlc3QsIEZBTFNFKTsKKyAgICByZXR1cm4gcmVxdWVzdC0+
cHJpdi0+cmVxdWVzdC0+cmVxdWlyZXNEaXNwbGF5Q2FwdHVyZSgpOworfQorCiBzdGF0aWMgdm9p
ZCB3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdEdldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMp
CiB7CiAgICAgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QgPSBXRUJL
SVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1Qob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDkzZWFi
OTNhNzliYmUzMDA1YTUxMDIyNDc5OGZmOTk1NmM5YWUxOS4uNmZjMDE2OWM5NTYyMTIwNjQxYWM3
MDYxMTUxM2QyOGJhNjhlZmRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTIwNyw2ICsyMDcsMTAgQEAgZW51bSB7CiAg
ICAgUFJPUF9XRUJTSVRFX1BPTElDSUVTLAogICAgIFBST1BfSVNfV0VCX1BST0NFU1NfUkVTUE9O
U0lWRSwKIAorICAgIFBST1BfQ0FNRVJBX0NBUFRVUkVfU1RBVEUsCisgICAgUFJPUF9NSUNST1BI
T05FX0NBUFRVUkVfU1RBVEUsCisgICAgUFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEUsCisKICAg
ICBOX1BST1BFUlRJRVMsCiB9OwogCkBAIC0zNTIsNiArMzU2LDIyIEBAIHZvaWQgd2Via2l0V2Vi
Vmlld0lzUGxheWluZ0F1ZGlvQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdf
b2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNb
UFJPUF9JU19QTEFZSU5HX0FVRElPXSk7CiB9CiAKK3ZvaWQgd2Via2l0V2ViVmlld01lZGlhQ2Fw
dHVyZVN0YXRlRGlkQ2hhbmdlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlRmxhZ3MpCit7CisgICAgaWYgKG1l
ZGlhU3RhdGVGbGFncy5pc0VtcHR5KCkpIHsKKyAgICAgICAgZ19vYmplY3Rfbm90aWZ5X2J5X3Bz
cGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJvcGVydGllc1tQUk9QX0NBTUVSQV9DQVBUVVJF
X1NUQVRFXSk7CisgICAgICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJW
aWV3KSwgc09ialByb3BlcnRpZXNbUFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEVdKTsKKyAgICAg
ICAgZ19vYmplY3Rfbm90aWZ5X2J5X3BzcGVjKEdfT0JKRUNUKHdlYlZpZXcpLCBzT2JqUHJvcGVy
dGllc1tQUk9QX01JQ1JPUEhPTkVfQ0FQVFVSRV9TVEFURV0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChtZWRpYVN0YXRlRmxhZ3MuY29udGFpbnNBbnkoV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6QXVkaW9DYXB0dXJlTWFzaykpCisgICAgICAgIGdfb2JqZWN0X25vdGlmeV9ieV9w
c3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNbUFJPUF9NSUNST1BIT05FX0NB
UFRVUkVfU1RBVEVdKTsKKyAgICBpZiAobWVkaWFTdGF0ZUZsYWdzLmNvbnRhaW5zQW55KFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6OlZpZGVvQ2FwdHVyZU1hc2spKQorICAgICAgICBnX29iamVjdF9u
b3RpZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BST1BfQ0FN
RVJBX0NBUFRVUkVfU1RBVEVdKTsKKyAgICBpZiAobWVkaWFTdGF0ZUZsYWdzLmNvbnRhaW5zQW55
KFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6OkRpc3BsYXlDYXB0dXJlTWFzaykpCisgICAgICAgIGdf
b2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVDVCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNb
UFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEVdKTsKK30KKwogY2xhc3MgUGFnZUxvYWRTdGF0ZU9i
c2VydmVyIGZpbmFsIDogcHVibGljIFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTg3Miw2ICs4OTIsMTUgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld1NldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElkLCBjb25zdCBHVmFsdWUKICAgICBjYXNlIFBST1BfV0VCU0lURV9QT0xJQ0lFUzoKICAgICAg
ICAgd2ViVmlldy0+cHJpdi0+d2Vic2l0ZVBvbGljaWVzID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vi
c2l0ZVBvbGljaWVzKj4oZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKSk7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUFJPUF9DQU1FUkFfQ0FQVFVSRV9TVEFURToKKyAgICAgICAgd2Via2l0X3dl
Yl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3LCBzdGF0aWNfY2FzdDxXZWJL
aXRNZWRpYUNhcHR1cmVTdGF0ZT4oZ192YWx1ZV9nZXRfZW51bSh2YWx1ZSkpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQUk9QX01JQ1JPUEhPTkVfQ0FQVFVSRV9TVEFURToKKyAgICAgICAg
d2Via2l0X3dlYl92aWV3X3NldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUod2ViVmlldywgc3Rh
dGljX2Nhc3Q8V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUp
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEU6
CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZp
ZXcsIHN0YXRpY19jYXN0PFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlPihnX3ZhbHVlX2dldF9lbnVt
KHZhbHVlKSkpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CiAg
ICAgfQpAQCAtOTQzLDYgKzk3MiwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3R2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdQogICAgIGNh
c2UgUFJPUF9JU19XRUJfUFJPQ0VTU19SRVNQT05TSVZFOgogICAgICAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2lzX3dlYl9wcm9jZXNzX3Jlc3BvbnNp
dmUod2ViVmlldykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQ0FNRVJBX0NBUFRV
UkVfU1RBVEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJfdmll
d19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUod2ViVmlldykpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfTUlDUk9QSE9ORV9DQVBUVVJFX1NUQVRFOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9lbnVtKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0
ZSh3ZWJWaWV3KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ESVNQTEFZX0NBUFRV
UkVfU1RBVEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF93ZWJfdmll
d19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9i
amVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOwogICAgIH0KQEAgLTEzMzcsNiArMTM3NSw4MSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3Mq
IHdlYlZpZXdDbGFzcykKICAgICAgICAgICAgIFRSVUUsCiAgICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBREFCTEUpOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzpjYW1lcmEtY2Fw
dHVyZS1zdGF0ZToKKyAgICAgKgorICAgICAqIENhcHR1cmUgc3RhdGUgb2YgdGhlIGNhbWVyYSBk
ZXZpY2UuIFdoZW5ldmVyIHRoZSB1c2VyIGdyYW50cyBhIG1lZGlhLXJlcXVlc3Qgc2VudCBieSB0
aGUgd2ViCisgICAgICogcGFnZSwgcmVxdWVzdGluZyB2aWRlbyBjYXB0dXJlIGNhcGFiaWxpdGll
cyAoYG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzoKKyAgICAgKiB0
cnVlfSlgKSB0aGlzIHByb3BlcnR5IHdpbGwgYmUgc2V0IHRvICVXRUJLSVRfTUVESUFfQ0FQVFVS
RV9TVEFURV9BQ1RJVkUuCisgICAgICoKKyAgICAgKiBUaGUgYXBwbGljYXRpb24gY2FuIG1vbml0
b3IgdGhpcyBwcm9wZXJ0eSBhbmQgcHJvdmlkZSBhIHZpc3VhbCBpbmRpY2F0b3IgYWxsb3dpbmcg
dG8gb3B0aW9uYWxseQorICAgICAqIGRlYWN0aXZhdGUgb3IgbXV0ZSB0aGUgY2FwdHVyZSBkZXZp
Y2UgYnkgc2V0dGluZyB0aGlzIHByb3BlcnR5IHJlc3BlY3RpdmVseSB0bworICAgICAqICVXRUJL
SVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIG9yICVXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9NVVRFRC4KKyAgICAgKgorICAgICAqIElmIHRoZSBjYXB0dXJlIHN0YXRlIG9mIHRoZSBkZXZp
Y2UgaXMgc2V0IHRvICVXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIHRoZSB3ZWItcGFn
ZQorICAgICAqIGNhbiBzdGlsbCByZS1yZXF1ZXN0IHRoZSBwZXJtaXNzaW9uIHRvIHRoZSB1c2Vy
LiBQZXJtaXNzaW9uIGRlc2lzaW9uIGNhY2hpbmcgaXMgbGVmdCB0byB0aGUKKyAgICAgKiBhcHBs
aWNhdGlvbi4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjM0CisgICAgICovCisgICAgc09ialBy
b3BlcnRpZXNbUFJPUF9DQU1FUkFfQ0FQVFVSRV9TVEFURV0gPSBnX3BhcmFtX3NwZWNfZW51bSgK
KyAgICAgICAgImNhbWVyYS1jYXB0dXJlLXN0YXRlIiwKKyAgICAgICAgIkNhbWVyYSBDYXB0dXJl
IFN0YXRlIiwKKyAgICAgICAgXygiVGhlIGNhcHR1cmUgc3RhdGUgb2YgdGhlIGNhbWVyYSBkZXZp
Y2UiKSwKKyAgICAgICAgV0VCS0lUX1RZUEVfTUVESUFfQ0FQVFVSRV9TVEFURSwKKyAgICAgICAg
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSwKKyAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURXUklURSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJWaWV3Om1pY3JvcGhvbmUtY2Fw
dHVyZS1zdGF0ZToKKyAgICAgKgorICAgICAqIENhcHR1cmUgc3RhdGUgb2YgdGhlIG1pY3JvcGhv
bmUgZGV2aWNlLiBXaGVuZXZlciB0aGUgdXNlciBncmFudHMgYSBtZWRpYS1yZXF1ZXN0IHNlbnQg
YnkgdGhlIHdlYgorICAgICAqIHBhZ2UsIHJlcXVlc3RpbmcgYXVkaW8gY2FwdHVyZSBjYXBhYmls
aXRpZXMgKGBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86CisgICAg
ICogdHJ1ZX0pYCkgdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHNldCB0byAlV0VCS0lUX01FRElBX0NB
UFRVUkVfU1RBVEVfQUNUSVZFLgorICAgICAqCisgICAgICogVGhlIGFwcGxpY2F0aW9uIGNhbiBt
b25pdG9yIHRoaXMgcHJvcGVydHkgYW5kIHByb3ZpZGUgYSB2aXN1YWwgaW5kaWNhdG9yIGFsbG93
aW5nIHRvCisgICAgICogb3B0aW9uYWxseSBkZWFjdGl2YXRlIG9yIG11dGUgdGhlIGNhcHR1cmUg
ZGV2aWNlIGJ5IHNldHRpbmcgdGhpcyBwcm9wZXJ0eSByZXNwZWN0aXZlbHkgdG8KKyAgICAgKiAl
V0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSBvciAlV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfTVVURUQuCisgICAgICoKKyAgICAgKiBJZiB0aGUgY2FwdHVyZSBzdGF0ZSBvZiB0aGUg
ZGV2aWNlIGlzIHNldCB0byAlV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSB0aGUgd2Vi
LXBhZ2UKKyAgICAgKiBjYW4gc3RpbGwgcmUtcmVxdWVzdCB0aGUgcGVybWlzc2lvbiB0byB0aGUg
dXNlci4gUGVybWlzc2lvbiBkZXNpc2lvbiBjYWNoaW5nIGlzIGxlZnQgdG8gdGhlCisgICAgICog
YXBwbGljYXRpb24uCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zNAorICAgICAqLworICAgIHNP
YmpQcm9wZXJ0aWVzW1BST1BfTUlDUk9QSE9ORV9DQVBUVVJFX1NUQVRFXSA9IGdfcGFyYW1fc3Bl
Y19lbnVtKAorICAgICAgICAibWljcm9waG9uZS1jYXB0dXJlLXN0YXRlIiwKKyAgICAgICAgIk1p
Y3JvcGhvbmUgQ2FwdHVyZSBTdGF0ZSIsCisgICAgICAgIF8oIlRoZSBjYXB0dXJlIHN0YXRlIG9m
IHRoZSBtaWNyb3Bob25lIGRldmljZSIpLAorICAgICAgICBXRUJLSVRfVFlQRV9NRURJQV9DQVBU
VVJFX1NUQVRFLAorICAgICAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLAorICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdl
YlZpZXc6ZGlzcGxheS1jYXB0dXJlLXN0YXRlOgorICAgICAqCisgICAgICogQ2FwdHVyZSBzdGF0
ZSBvZiB0aGUgZGlzcGxheSBkZXZpY2UuIFdoZW5ldmVyIHRoZSB1c2VyIGdyYW50cyBhIG1lZGlh
LXJlcXVlc3Qgc2VudCBieSB0aGUgd2ViCisgICAgICogcGFnZSwgcmVxdWVzdGluZyBzY3JlZW5j
YXN0aW5nIGNhcGFiaWxpdGllcyAoYG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1l
ZGlhKCkgdGhpcworICAgICAqIHByb3BlcnR5IHdpbGwgYmUgc2V0IHRvICVXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9BQ1RJVkUuCisgICAgICoKKyAgICAgKiBUaGUgYXBwbGljYXRpb24gY2Fu
IG1vbml0b3IgdGhpcyBwcm9wZXJ0eSBhbmQgcHJvdmlkZSBhIHZpc3VhbCBpbmRpY2F0b3IgYWxs
b3dpbmcgdG8KKyAgICAgKiBvcHRpb25hbGx5IGRlYWN0aXZhdGUgb3IgbXV0ZSB0aGUgY2FwdHVy
ZSBkZXZpY2UgYnkgc2V0dGluZyB0aGlzIHByb3BlcnR5IHJlc3BlY3RpdmVseSB0bworICAgICAq
ICVXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIG9yICVXRUJLSVRfTUVESUFfQ0FQVFVS
RV9TVEFURV9NVVRFRC4KKyAgICAgKgorICAgICAqIElmIHRoZSBjYXB0dXJlIHN0YXRlIG9mIHRo
ZSBkZXZpY2UgaXMgc2V0IHRvICVXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIHRoZSB3
ZWItcGFnZQorICAgICAqIGNhbiBzdGlsbCByZS1yZXF1ZXN0IHRoZSBwZXJtaXNzaW9uIHRvIHRo
ZSB1c2VyLiBQZXJtaXNzaW9uIGRlc2lzaW9uIGNhY2hpbmcgaXMgbGVmdCB0byB0aGUKKyAgICAg
KiBhcHBsaWNhdGlvbi4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjM0CisgICAgICovCisgICAg
c09ialByb3BlcnRpZXNbUFJPUF9ESVNQTEFZX0NBUFRVUkVfU1RBVEVdID0gZ19wYXJhbV9zcGVj
X2VudW0oCisgICAgICAgICJkaXNwbGF5LWNhcHR1cmUtc3RhdGUiLAorICAgICAgICAiRGlzcGxh
eSBDYXB0dXJlIFN0YXRlIiwKKyAgICAgICAgXygiVGhlIGNhcHR1cmUgc3RhdGUgb2YgdGhlIGRp
c3BsYXkgZGV2aWNlIiksCisgICAgICAgIFdFQktJVF9UWVBFX01FRElBX0NBUFRVUkVfU1RBVEUs
CisgICAgICAgIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUsCisgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUpOworCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
aWVzKGdPYmplY3RDbGFzcywgTl9QUk9QRVJUSUVTLCBzT2JqUHJvcGVydGllcyk7CiAKICAgICAv
KioKQEAgLTQyMzAsMTAgKzQzNDMsMTAgQEAgV2ViS2l0RG93bmxvYWQqIHdlYmtpdF93ZWJfdmll
d19kb3dubG9hZF91cmkoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhcioKICAqIHdo
ZW4gaXQncyBlbWl0dGVkIHdpdGggJVdFQktJVF9MT0FEX0NPTU1JVFRFRCBldmVudC4KICAqCiAg
KiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyBubyBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgc2VjdXJpdHkgb2YgdGhlIHdlYgotICogcGFnZSBpZiB0aGUgY3VycmVudCAjV2ViS2l0VExT
RXJyb3JzUG9saWN5IGlzIEBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFLAorICogcGFn
ZSBpZiB0aGUgY3VycmVudCAjV2ViS2l0VExTRXJyb3JzUG9saWN5IGlzICVXRUJLSVRfVExTX0VS
Uk9SU19QT0xJQ1lfSUdOT1JFLAogICogYXMgc3VicmVzb3VyY2VzIG9mIHRoZSBwYWdlIG1heSBi
ZSBjb250cm9sbGVkIGJ5IGFuIGF0dGFja2VyLiBUaGlzIGZ1bmN0aW9uCiAgKiBtYXkgc2FmZWx5
IGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzZWN1cml0eSBzdGF0dXMgb2YgdGhlIGN1cnJlbnQg
cGFnZSBvbmx5Ci0gKiBpZiB0aGUgY3VycmVudCAjV2ViS2l0VExTRXJyb3JzUG9saWN5IGlzIEBX
RUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfRkFJTCwgaW4KKyAqIGlmIHRoZSBjdXJyZW50ICNXZWJL
aXRUTFNFcnJvcnNQb2xpY3kgaXMgJVdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMLCBpbgog
ICogd2hpY2ggY2FzZSBzdWJyZXNvdXJjZXMgdGhhdCBmYWlsIGNlcnRpZmljYXRlIHZlcmlmaWNh
dGlvbiB3aWxsIGJlIGJsb2NrZWQuCiAgKgogICogUmV0dXJuczogJVRSVUUgaWYgdGhlIEB3ZWJf
dmlldyBjb25uZWN0aW9uIHVzZXMgSFRUUFMgYW5kIGEgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2
ZWQKQEAgLTQ3NTQsMyArNDg2NywxODcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2NvcnNf
YWxsb3dsaXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBjb24KIAogICAg
IGdldFBhZ2Uod2ViVmlldykuc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFdURk1vdmUoYWxsb3dM
aXN0VmVjdG9yKSk7CiB9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdDb25maWd1cmVNZWRp
YUNhcHR1cmUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6
TWVkaWFDYXB0dXJlS2luZCBjYXB0dXJlS2luZCwgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgY2Fw
dHVyZVN0YXRlLCBib29sIGlzRnJvbURpc3BsYXlDYXB0dXJlID0gZmFsc2UpCit7CisgICAgYXV0
byYgcGFnZSA9IGdldFBhZ2Uod2ViVmlldyk7CisgICAgYXV0byBtdXRlZFN0YXRlID0gcGFnZS5t
dXRlZFN0YXRlRmxhZ3MoKTsKKworICAgIHN3aXRjaCAoY2FwdHVyZVN0YXRlKSB7CisgICAgY2Fz
ZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FOgorICAgICAgICBwYWdlLnN0b3BNZWRp
YUNhcHR1cmUoY2FwdHVyZUtpbmQsIFt3ZWJWaWV3LCBjYXB0dXJlS2luZF0geworICAgICAgICAg
ICAgc3dpdGNoIChjYXB0dXJlS2luZCkgeworICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRp
YVByb2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpbzoKKyAgICAgICAgICAgICAgICBnX29i
amVjdF9ub3RpZnlfYnlfcHNwZWMoR19PQkpFQ1Qod2ViVmlldyksIHNPYmpQcm9wZXJ0aWVzW1BS
T1BfTUlDUk9QSE9ORV9DQVBUVVJFX1NUQVRFXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6
OlZpZGVvOgorICAgICAgICAgICAgICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyhHX09CSkVD
VCh3ZWJWaWV3KSwgc09ialByb3BlcnRpZXNbUFJPUF9DQU1FUkFfQ0FQVFVSRV9TVEFURV0pOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXZWJDb3JlOjpNZWRpYVBy
b2R1Y2VyOjpNZWRpYUNhcHR1cmVLaW5kOjpBdWRpb1ZpZGVvOgorICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX01FRElBX0NB
UFRVUkVfU1RBVEVfQUNUSVZFOgorICAgICAgICBzd2l0Y2ggKGNhcHR1cmVLaW5kKSB7CisgICAg
ICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6QXVkaW86
CisgICAgICAgICAgICBtdXRlZFN0YXRlLnJlbW92ZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpN
dXRlZFN0YXRlOjpBdWRpb0NhcHR1cmVJc011dGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OlZpZGVv
OgorICAgICAgICAgICAgaWYgKGlzRnJvbURpc3BsYXlDYXB0dXJlKQorICAgICAgICAgICAgICAg
IG11dGVkU3RhdGUucmVtb3ZlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGU6OlNj
cmVlbkNhcHR1cmVJc011dGVkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBt
dXRlZFN0YXRlLnJlbW92ZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpWaWRl
b0NhcHR1cmVJc011dGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkNv
cmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1ZGlvVmlkZW86CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBwYWdlLnNldE11dGVkKG11dGVkU3RhdGUpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEOgorICAgICAgICBzd2l0Y2gg
KGNhcHR1cmVLaW5kKSB7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFDYXB0dXJlS2luZDo6QXVkaW86CisgICAgICAgICAgICBtdXRlZFN0YXRlLmFkZChXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlOjpBdWRpb0NhcHR1cmVJc011dGVkKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlh
Q2FwdHVyZUtpbmQ6OlZpZGVvOgorICAgICAgICAgICAgaWYgKGlzRnJvbURpc3BsYXlDYXB0dXJl
KQorICAgICAgICAgICAgICAgIG11dGVkU3RhdGUuYWRkKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok11dGVkU3RhdGU6OlNjcmVlbkNhcHR1cmVJc011dGVkKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBtdXRlZFN0YXRlLmFkZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRl
ZFN0YXRlOjpWaWRlb0NhcHR1cmVJc011dGVkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1ZGlvVmlk
ZW86CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBwYWdlLnNldE11dGVkKG11dGVkU3RhdGUpOworICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFf
Y2FwdHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdl
dCB0aGUgY2FtZXJhIGNhcHR1cmUgc3RhdGUgb2YgYSAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBS
ZXR1cm5zOiBUaGUgI1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIG9mIHRoZSBjYW1lcmEgZGV2aWNl
LiBJZiAjV2ViS2l0U2V0dGluZ3M6ZW5hYmxlLW1lZGlhc3RyZWFtCisgKiBpcyAlRkFMU0UsIHRo
aXMgbWV0aG9kIHdpbGwgcmV0dXJuICVXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLgor
ICoKKyAqIFNpbmNlOiAyLjM0CisgKi8KK1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIHdlYmtpdF93
ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
K3sKKyAgICBhdXRvIHN0YXRlID0gZ2V0UGFnZSh3ZWJWaWV3KS5yZXBvcnRlZE1lZGlhU3RhdGUo
KTsKKyAgICBpZiAoc3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlOjpI
YXNBY3RpdmVWaWRlb0NhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9BQ1RJVkU7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZTo6SGFzTXV0ZWRWaWRlb0NhcHR1cmVEZXZpY2UpCisgICAgICAgIHJl
dHVybiBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDsKKyAgICByZXR1cm4gV0VCS0lU
X01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdf
c2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3
CisgKiBAc3RhdGU6IGEgI1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCisgKgorICogU2V0IHRoZSBj
YW1lcmEgY2FwdHVyZSBzdGF0ZSBvZiBhICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIElmIFdlYktp
dFNldHRpbmdzOmVuYWJsZS1tZWRpYXN0cmVhbSBpcyAlRkFMU0UsIHRoaXMgbWV0aG9kIHdpbGwg
aGF2ZSBubyB2aXNpYmxlIGVmZmVjdC4gT25jZSB0aGUKKyAqIHN0YXRlIG9mIHRoZSBkZXZpY2Ug
aGFzIGJlZW4gc2V0IHRvICVXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FIGl0IGNhbm5v
dCBiZSBjaGFuZ2VkCisgKiBhbnltb3JlLiBUaGUgcGFnZSBjYW4gaG93ZXZlciByZXF1ZXN0IGNh
cHR1cmUgYWdhaW4gdXNpbmcgdGhlIG1lZGlhRGV2aWNlcyBBUEkuCisgKgorICogU2luY2U6IDIu
MzQKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIHN0YXRlKQorewor
ICAgIGlmICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcp
ID09IFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHdlYmtpdFdlYlZpZXdDb25maWd1cmVNZWRpYUNhcHR1cmUod2ViVmlldywgV2ViQ29yZTo6
TWVkaWFQcm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6VmlkZW8sIHN0YXRlKTsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZToKKyAqIEB3
ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIEdldCB0aGUgbWljcm9waG9uZSBjYXB0
dXJlIHN0YXRlIG9mIGEgI1dlYktpdFdlYlZpZXcuCisgKgorICogUmV0dXJuczogVGhlICNXZWJL
aXRNZWRpYUNhcHR1cmVTdGF0ZSBvZiB0aGUgbWljcm9waG9uZSBkZXZpY2UuIElmICNXZWJLaXRT
ZXR0aW5nczplbmFibGUtbWVkaWFzdHJlYW0KKyAqIGlzICVGQUxTRSwgdGhpcyBtZXRob2Qgd2ls
bCByZXR1cm4gJVdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUuCisgKgorICogU2luY2U6
IDIuMzQKKyAqLworV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgd2Via2l0X3dlYl92aWV3X2dldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBh
dXRvIHN0YXRlID0gZ2V0UGFnZSh3ZWJWaWV3KS5yZXBvcnRlZE1lZGlhU3RhdGUoKTsKKyAgICBp
ZiAoc3RhdGUgJiBXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlOjpIYXNBY3RpdmVB
dWRpb0NhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfTUVESUFfQ0FQVFVSRV9T
VEFURV9BQ1RJVkU7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZTo6SGFzTXV0ZWRBdWRpb0NhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJL
SVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDsKKyAgICByZXR1cm4gV0VCS0lUX01FRElBX0NB
UFRVUkVfU1RBVEVfTk9ORTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3Jv
cGhvbmVfY2FwdHVyZV9zdGF0ZToKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICog
QHN0YXRlOiBhICNXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQorICoKKyAqIFNldCB0aGUgbWljcm9w
aG9uZSBjYXB0dXJlIHN0YXRlIG9mIGEgI1dlYktpdFdlYlZpZXcuCisgKgorICogSWYgV2ViS2l0
U2V0dGluZ3M6ZW5hYmxlLW1lZGlhc3RyZWFtIGlzICVGQUxTRSwgdGhpcyBtZXRob2Qgd2lsbCBo
YXZlIG5vIHZpc2libGUgZWZmZWN0LiBPbmNlIHRoZQorICogc3RhdGUgb2YgdGhlIGRldmljZSBo
YXMgYmVlbiBzZXQgdG8gJVdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUgaXQgY2Fubm90
IGJlIGNoYW5nZWQKKyAqIGFueW1vcmUuIFRoZSBwYWdlIGNhbiBob3dldmVyIHJlcXVlc3QgY2Fw
dHVyZSBhZ2FpbiB1c2luZyB0aGUgbWVkaWFEZXZpY2VzIEFQSS4KKyAqCisgKiBTaW5jZTogMi4z
NAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRl
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIHN0YXRlKQor
eworICAgIGlmICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSh3
ZWJWaWV3KSA9PSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FKQorICAgICAgICByZXR1
cm47CisKKyAgICB3ZWJraXRXZWJWaWV3Q29uZmlndXJlTWVkaWFDYXB0dXJlKHdlYlZpZXcsIFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1lZGlhQ2FwdHVyZUtpbmQ6OkF1ZGlvLCBzdGF0ZSk7Cit9
CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGU6Cisg
KiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBHZXQgdGhlIGRpc3BsYXkgY2Fw
dHVyZSBzdGF0ZSBvZiBhICNXZWJLaXRXZWJWaWV3LgorICoKKyAqIFJldHVybnM6IFRoZSAjV2Vi
S2l0TWVkaWFDYXB0dXJlU3RhdGUgb2YgdGhlIGRpc3BsYXkgZGV2aWNlLiBJZiAjV2ViS2l0U2V0
dGluZ3M6ZW5hYmxlLW1lZGlhc3RyZWFtCisgKiBpcyAlRkFMU0UsIHRoaXMgbWV0aG9kIHdpbGwg
cmV0dXJuICVXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLgorICoKKyAqIFNpbmNlOiAy
LjM0CisgKi8KK1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlIHdlYmtpdF93ZWJfdmlld19nZXRfZGlz
cGxheV9jYXB0dXJlX3N0YXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgYXV0byBz
dGF0ZSA9IGdldFBhZ2Uod2ViVmlldykucmVwb3J0ZWRNZWRpYVN0YXRlKCk7CisgICAgaWYgKHN0
YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZTo6SGFzQWN0aXZlRGlzcGxh
eUNhcHR1cmVEZXZpY2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9BQ1RJVkU7CisgICAgaWYgKHN0YXRlICYgV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TWVkaWFT
dGF0ZTo6SGFzTXV0ZWREaXNwbGF5Q2FwdHVyZURldmljZSkKKyAgICAgICAgcmV0dXJuIFdFQktJ
VF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVEOworICAgIHJldHVybiBXRUJLSVRfTUVESUFfQ0FQ
VFVSRV9TVEFURV9OT05FOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19zZXRfZGlzcGxh
eV9jYXB0dXJlX3N0YXRlOgorICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAc3Rh
dGU6IGEgI1dlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCisgKgorICogU2V0IHRoZSBkaXNwbGF5IGNh
cHR1cmUgc3RhdGUgb2YgYSAjV2ViS2l0V2ViVmlldy4KKyAqCisgKiBJZiBXZWJLaXRTZXR0aW5n
czplbmFibGUtbWVkaWFzdHJlYW0gaXMgJUZBTFNFLCB0aGlzIG1ldGhvZCB3aWxsIGhhdmUgbm8g
dmlzaWJsZSBlZmZlY3QuIE9uY2UgdGhlCisgKiBzdGF0ZSBvZiB0aGUgZGV2aWNlIGhhcyBiZWVu
IHNldCB0byAlV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSBpdCBjYW5ub3QgYmUgY2hh
bmdlZAorICogYW55bW9yZS4gVGhlIHBhZ2UgY2FuIGhvd2V2ZXIgcmVxdWVzdCBjYXB0dXJlIGFn
YWluIHVzaW5nIHRoZSBtZWRpYURldmljZXMgQVBJLgorICoKKyAqIFNpbmNlOiAyLjM0CisgKi8K
K3ZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgc3RhdGUpCit7CisgICAgaWYg
KHdlYmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpID09IFdF
QktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUpCisgICAgICAgIHJldHVybjsKKworICAgIHdl
YmtpdFdlYlZpZXdDb25maWd1cmVNZWRpYUNhcHR1cmUod2ViVmlldywgV2ViQ29yZTo6TWVkaWFQ
cm9kdWNlcjo6TWVkaWFDYXB0dXJlS2luZDo6VmlkZW8sIHN0YXRlLCB0cnVlKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IGQ3YTQzMjA0YmU2OTNmMmE3ZWY4NjI0MGVhZjU2N2ZlNzAwNTJhMmMuLmZi
YWIxYWZlOWNhMDlmNWU2YTY3OTNmNTA2NWYwOGZjNzZiZmVkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1ByaXZhdGUuaApA
QCAtOTEsNiArOTEsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdJbnNlY3VyZUNvbnRlbnREZXRlY3Rl
ZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0SW5zZWN1cmVDb250ZW50RQogYm9vbCB3ZWJraXRXZWJW
aWV3RW1pdFNob3dOb3RpZmljYXRpb24oV2ViS2l0V2ViVmlldyosIFdlYktpdE5vdGlmaWNhdGlv
biopOwogdm9pZCB3ZWJraXRXZWJWaWV3V2ViUHJvY2Vzc1Rlcm1pbmF0ZWQoV2ViS2l0V2ViVmll
dyosIFdlYktpdFdlYlByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbik7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdJc1BsYXlpbmdBdWRpb0NoYW5nZWQoV2ViS2l0V2ViVmlldyopOwordm9pZCB3ZWJraXRXZWJW
aWV3TWVkaWFDYXB0dXJlU3RhdGVEaWRDaGFuZ2UoV2ViS2l0V2ViVmlldyosIFdlYkNvcmU6Ok1l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyk7CiB2b2lkIHdlYmtpdFdlYlZpZXdTZWxlY3Rp
b25EaWRDaGFuZ2UoV2ViS2l0V2ViVmlldyopOwogdm9pZCB3ZWJraXRXZWJWaWV3UmVxdWVzdElu
c3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6Okluc3RhbGxN
aXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QmKTsKIFdlYktpdFdlYnNpdGVEYXRh
TWFuYWdlciogd2Via2l0V2ViVmlld0dldFdlYnNpdGVEYXRhTWFuYWdlcihXZWJLaXRXZWJWaWV3
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKaW5kZXggYWQzODJiMWJhNGRm
Mzk0ODYwOWRhMmIyZmZlOGY0YWM1MmUwYzhmZC4uM2Y4Y2UwYzAwNWZiNmVlYzExN2E5OTgyYWFi
MmJjOWRmOTE1YTY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaApAQCAt
NjQsNiArNjQsOSBAQCB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19k
ZXZpY2UgKFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZQogV0VCS0lUX0FQSSBnYm9vbGVh
bgogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlIChXZWJL
aXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CiAKK1dFQktJVF9BUEkgZ2Jv
b2xlYW4KK3dlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNl
IChXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCAqcmVxdWVzdCk7CisKIEdfRU5EX0RF
Q0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXcuaAppbmRleCA4YjQyMDhlZmNkNzYxNTAyNjcwYzNjY2VjZjNhMGY4OGExMTQ5MzY0
Li45ODU0OTVkODg2MTcyOWZlZDk4NTFmNjVjZWMzYTI1YWUyOGM1MTRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtMjA1LDYgKzIw
NSwyMiBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJfUFJPQ0VTU19URVJNSU5BVEVE
X0JZX0FQSQogfSBXZWJLaXRXZWJQcm9jZXNzVGVybWluYXRpb25SZWFzb247CiAKKy8qKgorICog
V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU6CisgKiBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVf
Tk9ORTogTWVkaWEgY2FwdHVyZSBpcyBkaXNhYmxlZC4KKyAqIEBXRUJLSVRfTUVESUFfQ0FQVFVS
RV9TVEFURV9BQ1RJVkU6IE1lZGlhIGNhcHR1cmUgaXMgYWN0aXZlLgorICogQFdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX01VVEVEOiBNZWRpYSBjYXB0dXJlIGlzIG11dGVkLgorICoKKyAqIEVu
dW0gdmFsdWVzIHVzZWQgdG8gc3BlY2lmeSB0aGUgY2FwdHVyZSBzdGF0ZSBvZiBhIG1lZGlhIGRl
dmljZS4KKyAqCisgKiBTaW5jZTogMi4zNAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJ
VF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUsCisgICAgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RB
VEVfQUNUSVZFLAorICAgIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX01VVEVELAorfSBXZWJL
aXRNZWRpYUNhcHR1cmVTdGF0ZTsKKwogc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKICAgICBXZWJL
aXRXZWJWaWV3QmFzZSBwYXJlbnQ7CiAKQEAgLTYwMCw2ICs2MTYsMjcgQEAgd2Via2l0X3dlYl92
aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlICAgICAgICAoV2ViS2l0V2ViVmlldwog
V0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfdGVybWluYXRlX3dlYl9wcm9jZXNzICAg
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAKK1dF
QktJVF9BUEkgV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfY2Ft
ZXJhX2NhcHR1cmVfc3RhdGUgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAg
KndlYl92aWV3KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVy
YV9jYXB0dXJlX3N0YXRlICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3
ZWJfdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlICAgIHN0YXRlKTsKKworV0VCS0lUX0FQSSBX
ZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2Nh
cHR1cmVfc3RhdGUgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcp
OworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0
dXJlX3N0YXRlICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0TWVkaWFDYXB0dXJlU3RhdGUgICAgc3RhdGUpOworCitXRUJLSVRfQVBJIFdlYktpdE1lZGlh
Q2FwdHVyZVN0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSAg
ICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUgICAg
ICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRNZWRpYUNh
cHR1cmVTdGF0ZSAgICBzdGF0ZSk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNl
Y3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQy
Z3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggYjVmM2U3ZDYwZDIwMmUwYzY1Yjk3NzgzZWRlNzRl
MDlmN2FlNzhiOS4uMzZkNTQyODE3NDg3ZDI4ZTBiMTE1YzEwNjhlNmZlNDVmYTQyMjI0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBAIC0xOTksNiArMTk5LDcgQEAgV2ViS2l0
U25hcHNob3RPcHRpb25zCiBXZWJLaXRTbmFwc2hvdFJlZ2lvbgogV2ViS2l0V2ViUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uCiBXZWJLaXRBdXRvcGxheVBvbGljeQorV2ViS2l0TWVkaWFDYXB0dXJl
U3RhdGUKIAogPFNVQlNFQ1RJT04gRWRpdGluZyBDb21tYW5kcz4KIFdFQktJVF9FRElUSU5HX0NP
TU1BTkRfQ1VUCkBAIC0yOTMsNiArMjk0LDEyIEBAIHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0
ZV9wb2xpY2llcwogd2Via2l0X3dlYl92aWV3X2dldF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZl
CiB3ZWJraXRfd2ViX3ZpZXdfdGVybWluYXRlX3dlYl9wcm9jZXNzCiB3ZWJraXRfd2ViX3ZpZXdf
c2V0X2NvcnNfYWxsb3dsaXN0Cit3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0
YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZQord2Via2l0
X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X3NldF9t
aWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0
dXJlX3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZQogCiA8
U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dApAQCAtNzk2LDYgKzgwMyw3IEBAIHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfdHlwZQog
V2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QKIHdlYmtpdF91c2VyX21lZGlhX3Blcm1p
c3Npb25faXNfZm9yX2F1ZGlvX2RldmljZQogd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9p
c19mb3JfdmlkZW9fZGV2aWNlCit3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9k
aXNwbGF5X2RldmljZQogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIFdlYktpdFVzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0Q2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaApp
bmRleCBiZTE0ZDM2Mzc5OGYwZDI0ZTVhOTRhZTcwYzE0NzA5NTAyMmM5MDI3Li4yM2U5NjI5YTli
OTlkZjNiNmJlOTdjM2RjMDVmNDY0NTVjYWE4NDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdC5oCkBAIC02NCw2ICs2NCw5IEBAIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Np
b25faXNfZm9yX2F1ZGlvX2RldmljZSAoV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlCiBX
RUJLSVRfQVBJIGdib29sZWFuCiB3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl92
aWRlb19kZXZpY2UgKFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0KTsK
IAorV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19m
b3JfZGlzcGxheV9kZXZpY2UgKFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1
ZXN0KTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlldy5oCmluZGV4IDQzYWZjYTAzMGQ5M2Q1ODFhMWZjMzM0
NTk1NGEzZDFlMGQ5OTlkOTEuLjcwOGFjYzJmNGM0MTU4Y2YxMWY0YTI0MDdhNTg4YjJjMzkxYTBl
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmll
dy5oCkBAIC0xODYsNiArMTg2LDIyIEBAIHR5cGVkZWYgZW51bSB7CiB0eXBlZGVmIHZvaWQgKCog
V2ViS2l0RnJhbWVEaXNwbGF5ZWRDYWxsYmFjaykgKFdlYktpdFdlYlZpZXcgKndlYl92aWV3LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAg
ICAgICB1c2VyX2RhdGEpOwogCisvKioKKyAqIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlOgorICog
QFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU6IE1lZGlhIGNhcHR1cmUgaXMgZGlzYWJs
ZWQuCisgKiBAV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOiBNZWRpYSBjYXB0dXJl
IGlzIGFjdGl2ZS4KKyAqIEBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDogTWVkaWEg
Y2FwdHVyZSBpcyBtdXRlZC4KKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIHNwZWNpZnkgdGhl
IGNhcHR1cmUgc3RhdGUgb2YgYSBtZWRpYSBkZXZpY2UuCisgKgorICogU2luY2U6IDIuMzQKKyAq
LwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FLAor
ICAgIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRSwKKyAgICBXRUJLSVRfTUVESUFf
Q0FQVFVSRV9TVEFURV9NVVRFRCwKK30gV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU7CisKIHN0cnVj
dCBfV2ViS2l0V2ViVmlldyB7CiAgICAgR09iamVjdCBwYXJlbnQ7CiAKQEAgLTU3Nyw2ICs1OTMs
MjcgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2NvcnNfYWxsb3dsaXN0
ICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICogY29uc3QgICAgICAgKmFsbG93bGlzdCk7CiAKK1dFQktJVF9BUEkgV2ViS2l0
TWVkaWFDYXB0dXJlU3RhdGUKK3dlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVfc3Rh
dGUgICAgICAgICAgICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3KTsKKwor
V0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRl
ICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE1l
ZGlhQ2FwdHVyZVN0YXRlICAgIHN0YXRlKTsKKworV0VCS0lUX0FQSSBXZWJLaXRNZWRpYUNhcHR1
cmVTdGF0ZQord2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUgICAg
ICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcpOworCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF93ZWJfdmlld19zZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlICAgICAg
ICAgKFdlYktpdFdlYlZpZXcgICAgICAgICAgICAgKndlYl92aWV3LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TWVkaWFDYXB0dXJl
U3RhdGUgICAgc3RhdGUpOworCitXRUJLSVRfQVBJIFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlCit3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSAgICAgICAgICAgIChXZWJL
aXRXZWJWaWV3ICAgICAgICAgICAgICp3ZWJfdmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUgICAgICAgICAgICAoV2ViS2l0
V2ViVmlldyAgICAgICAgICAgICAqd2ViX3ZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSAgICBz
dGF0ZSk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CmluZGV4IDRi
NjZiYjk1ZjEzMjZiZDgzODMyYjY4ZjQyOWMyMWVmNjg4MDhmMzguLmNiZGI4YTU2ZTIyZDRmYWE2
NDBlMWE3MDhjMzAwMzExYmIxNDg5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKQEAgLTE3Myw2ICsx
NzMsNyBAQCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudAogV2ViS2l0V2ViUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uCiBXZWJLaXRGcmFtZURpc3BsYXllZENhbGxiYWNrCiBXZWJLaXRBdXRvcGxh
eVBvbGljeQorV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUKIAogPFNVQlNFQ1RJT04gRWRpdGluZyBD
b21tYW5kcz4KIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUCkBAIC0yNjUsNiArMjY2LDEyIEBA
IHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9wb2xpY2llcwogd2Via2l0X3dlYl92aWV3X2dl
dF9pc193ZWJfcHJvY2Vzc19yZXNwb25zaXZlCiB3ZWJraXRfd2ViX3ZpZXdfdGVybWluYXRlX3dl
Yl9wcm9jZXNzCiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2NvcnNfYWxsb3dsaXN0Cit3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3Jv
cGhvbmVfY2FwdHVyZV9zdGF0ZQord2Via2l0X3dlYl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9z
dGF0ZQord2Via2l0X3dlYl92aWV3X3NldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUKK3dlYmtp
dF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlCit3ZWJraXRfd2ViX3ZpZXdfc2V0
X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZQogCiA8U1VCU0VDVElPTiBXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0PgogV2ViS2l0SmF2YXNjcmlwdFJlc3VsdApAQCAtODAwLDYgKzgwNyw3IEBAIHdlYmtpdF9u
YXZpZ2F0aW9uX2FjdGlvbl9nZXRfdHlwZQogV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QKIHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2F1ZGlvX2RldmljZQogd2Vi
a2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlCit3ZWJraXRfdXNl
cl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9kaXNwbGF5X2RldmljZQogCiA8U1VCU0VDVElPTiBT
dGFuZGFyZD4KIFdlYktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0Q2xhc3MKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzOTRhZDJmN2U5MjUz
ZjNmZGZjODU3YmVmZjI2Zjc3MWJmZjlmZWJmLi45ZjJmMzMxZDE5YTQzMTlhNGE0OTAzYzA3MWYz
MzNlMjlkOTIzY2QxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMDctMTggIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHTGliXSBFeHBvc2UgQVBJIHRvIGFjY2Vz
cy9tb2RpZnkgY2FwdHVyZSBkZXZpY2VzIHN0YXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3OTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIEdUSyBNaW5pQnJvd3NlciBpcyBub3cgYWJsZSB0
byBzaG93IG1lZGlhIGNhcHR1cmUgaW5kaWNhdG9ycywgdGhyb3VnaCB0aGUgVVJJIGVudHJ5LiBB
CisgICAgICAgIG5ldyBBUEkgdGVzdCB3YXMgYWRkZWQsIGNoZWNraW5nIHN1cHBvcnQgZm9yIGdl
dERpc3BsYXlNZWRpYSgpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIu
YzoKKyAgICAgICAgKGRlY2lkZVBlcm1pc3Npb25SZXF1ZXN0KToKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jOgorICAgICAgICAod2ViVmlld01lZGlhQ2FwdHVyZVN0
YXRlQ2hhbmdlZCk6CisgICAgICAgICh3ZWJWaWV3VXJpRW50cnlJY29uUHJlc3NlZCk6CisgICAg
ICAgIChicm93c2VyV2luZG93U3dpdGNoVGFiKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKToKKyAgICAgICAgKHRlc3RXZWJWaWV3QXVkaW9Pbmx5
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RGlzcGxh
eVVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcDoKKyAg
ICAgICAgKGRpc3BsYXlDYXB0dXJlQ2hhbmdlZCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6d2Fp
dFVudGlsRGlzcGxheUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyk6CisgICAgICAgIChtaWNyb3Bob25l
Q2FwdHVyZUNoYW5nZWQpOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OndhaXRVbnRpbE1pY3JvcGhv
bmVDYXB0dXJlU3RhdGVDaGFuZ2VkVG8pOgorICAgICAgICAoY2FtZXJhQ2FwdHVyZUNoYW5nZWQp
OgorICAgICAgICAoV2ViVmlld1Rlc3Q6OndhaXRVbnRpbENhbWVyYUNhcHR1cmVTdGF0ZUNoYW5n
ZWRUbyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rl
c3QuaDoKKyAgICAgICAgKiBmbGF0cGFrL2ZsYXRwYWt1dGlscy5weToKKyAgICAgICAgKFdlYmtp
dEZsYXRwYWsucnVuX2luX3NhbmRib3gpOgorCiAyMDIxLTA3LTIwICBBYWthc2ggSmFpbiAgPGFh
a2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBFV1Mgc2hvdWxkIHNlbmQgZW1haWwgbm90
aWZpY2F0aW9uIHdoZW4gYSBib3QgZ29lcyBvdXQgb2YgZGlzayBzcGFjZQpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyVGFiLmMKaW5kZXggOWIzNjYyYjIyNGE2Njc0YWMyYzI1YmQyOWZlYWE5ODYxMDc4
MWU4Mi4uMWM4NGYzMGIyZWE5NmRkMGMxNjg5MThmOWQ2Mzc3M2I4ZTI1NDhhMyAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYworKysgYi9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlclRhYi5jCkBAIC0zMDcsMTYgKzMwNywyMCBAQCBzdGF0aWMgZ2Jvb2xl
YW4gZGVjaWRlUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0
UGVybWlzc2lvbgogICAgICAgICB0ZXh0ID0gZ19zdHJkdXAoIkFsbG93IG5vdGlmaWNhdGlvbnMg
cmVxdWVzdD8iKTsKICAgICB9IGVsc2UgaWYgKFdFQktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJ
T05fUkVRVUVTVChyZXF1ZXN0KSkgewogICAgICAgICB0aXRsZSA9ICJVc2VyTWVkaWEgcmVxdWVz
dCI7Ci0gICAgICAgIGdib29sZWFuIGlzX2Zvcl9hdWRpb19kZXZpY2UgPSB3ZWJraXRfdXNlcl9t
ZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UoV0VCS0lUX1VTRVJfTUVESUFfUEVS
TUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKLSAgICAgICAgZ2Jvb2xlYW4gaXNfZm9yX3ZpZGVv
X2RldmljZSA9IHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2Rldmlj
ZShXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworICAgICAg
ICBnYm9vbGVhbiBpc0ZvckF1ZGlvRGV2aWNlID0gd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lv
bl9pc19mb3JfYXVkaW9fZGV2aWNlKFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVT
VChyZXF1ZXN0KSk7CisgICAgICAgIGdib29sZWFuIGlzRm9yVmlkZW9EZXZpY2UgPSB3ZWJraXRf
dXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl92aWRlb19kZXZpY2UoV0VCS0lUX1VTRVJfTUVE
SUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICAgICAgZ2Jvb2xlYW4gaXNGb3JE
aXNwbGF5RGV2aWNlID0gd2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3JfZGlzcGxh
eV9kZXZpY2UoV0VCS0lUX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsK
KwogICAgICAgICBjb25zdCBjaGFyICptZWRpYVR5cGUgPSBOVUxMOwotICAgICAgICBpZiAoaXNf
Zm9yX2F1ZGlvX2RldmljZSkgewotICAgICAgICAgICAgaWYgKGlzX2Zvcl92aWRlb19kZXZpY2Up
CisgICAgICAgIGlmIChpc0ZvckF1ZGlvRGV2aWNlKSB7CisgICAgICAgICAgICBpZiAoaXNGb3JW
aWRlb0RldmljZSkKICAgICAgICAgICAgICAgICBtZWRpYVR5cGUgPSAiYXVkaW8vdmlkZW8iOwog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1lZGlhVHlwZSA9ICJhdWRpbyI7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoaXNfZm9yX3ZpZGVvX2RldmljZSkKKyAgICAgICAgfSBlbHNlIGlm
IChpc0ZvclZpZGVvRGV2aWNlKQogICAgICAgICAgICAgbWVkaWFUeXBlID0gInZpZGVvIjsKKyAg
ICAgICAgZWxzZSBpZiAoaXNGb3JEaXNwbGF5RGV2aWNlKQorICAgICAgICAgICAgbWVkaWFUeXBl
ID0gImRpc3BsYXkiOwogICAgICAgICB0ZXh0ID0gZ19zdHJkdXBfcHJpbnRmKCJBbGxvdyBhY2Nl
c3MgdG8gJXMgZGV2aWNlPyIsIG1lZGlhVHlwZSk7CiAgICAgfSBlbHNlIGlmIChXRUJLSVRfSVNf
SU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3Qp
KSB7CiAgICAgICAgIHRpdGxlID0gIk1lZGlhIHBsdWdpbiBtaXNzaW5nIHJlcXVlc3QiOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKaW5kZXggMDYzZTk0NTY4NDkwY2M3MjE5MzIy
Mjk4N2I4MDVlN2RmZmY5NGZlYS4uMjlhMDlkZGFmZTRkYmQ1MGY4YTJjNDYxYTkxYzYzZmJlZWRl
MDAzYSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCkBAIC02NDksNiArNjQ5
LDcyIEBAIHN0YXRpYyB2b2lkIGZhdmljb25DaGFuZ2VkKFdlYktpdFdlYlZpZXcgKndlYlZpZXcs
IEdQYXJhbVNwZWMgKnBhcmFtU3BlYywgQnJvd3NlCiAgICAgdXBkYXRlVXJpRW50cnlJY29uKHdp
bmRvdyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZUNoYW5nZWQo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFtU3BlYyogcGFyYW1TcGVjLCBCcm93c2VyV2lu
ZG93KiB3aW5kb3cpCit7CisgICAgY29uc3QgZ2NoYXIqIG5hbWUgPSBnX3BhcmFtX3NwZWNfZ2V0
X25hbWUocGFyYW1TcGVjKTsKKyAgICAvLyBGSVhNRTogdGhlIFVSSSBlbnRyeSBpcyBub3QgZ3Jl
YXQgc3RvcmFnZSBpbiBjYXNlIG1vcmUgdGhhbiBvbmUgY2FwdHVyZSBkZXZpY2UgaXMgaW4gdXNl
LAorICAgIC8vIGJlY2F1c2UgaXQgY2FuIHN0b3JlIG9ubHkgb25lIHNlY29uZGFyeSBpY29uLgor
ICAgIEd0a0VudHJ5ICplbnRyeSA9IEdUS19FTlRSWSh3aW5kb3ctPnVyaUVudHJ5KTsKKworICAg
IGlmIChnX3N0cl9oYXNfcHJlZml4KG5hbWUsICJtaWNyb3Bob25lIikpIHsKKyAgICAgICAgc3dp
dGNoICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3
KSkgeworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU6CisgICAg
ICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9pY29uX25hbWUoZW50cnksIEdUS19FTlRS
WV9JQ09OX1NFQ09OREFSWSwgTlVMTCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRDoKKyAgICAgICAgICAgIGd0a19lbnRy
eV9zZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZ
LCAibWljcm9waG9uZS1zZW5zaXZpdHktbXV0ZXMtc3ltYm9saWMiKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRToKKyAg
ICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VO
VFJZX0lDT05fU0VDT05EQVJZLCAiYXVkaW8taW5wdXQtbWljcm9waG9uZS1zeW1ib2xpYyIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19w
cmVmaXgobmFtZSwgImNhbWVyYSIpKSB7CisgICAgICAgIHN3aXRjaCAod2Via2l0X3dlYl92aWV3
X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSkgeworICAgICAgICBjYXNlIFdFQktJ
VF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU6CisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2lj
b25fZnJvbV9pY29uX25hbWUoZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgTlVMTCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQVFVSRV9T
VEFURV9NVVRFRDoKKyAgICAgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX2ljb25fbmFt
ZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCAiY2FtZXJhLWRpc2FibGVkLXN5bWJv
bGljIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVESUFfQ0FQ
VFVSRV9TVEFURV9BQ1RJVkU6CisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9p
Y29uX25hbWUoZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgImNhbWVyYS13ZWItc3lt
Ym9saWMiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChn
X3N0cl9oYXNfcHJlZml4KG5hbWUsICJkaXNwbGF5IikpIHsKKyAgICAgICAgc3dpdGNoICh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3KSkgeworICAgICAg
ICBjYXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU6CisgICAgICAgICAgICBndGtf
ZW50cnlfc2V0X2ljb25fZnJvbV9pY29uX25hbWUoZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09O
REFSWSwgTlVMTCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfTUVE
SUFfQ0FQVFVSRV9TVEFURV9NVVRFRDoKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJIGZvdW5kIG5v
IHN1aXRhYmxlIGljb24gZm9yIHRoaXMuCisgICAgICAgICAgICBndGtfZW50cnlfc2V0X2ljb25f
ZnJvbV9pY29uX25hbWUoZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgIm1lZGlhLXBs
YXliYWNrLXN0b3Atc3ltYm9saWMiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRToKKyAgICAgICAgICAgIGd0a19lbnRy
eV9zZXRfaWNvbl9mcm9tX2ljb25fbmFtZShlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZ
LCAidmlkZW8tZGlzcGxheS1zeW1ib2xpYyIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYlZpZXdVcmlFbnRyeUljb25QcmVzc2VkKEd0
a0VudHJ5KiBlbnRyeSwgR3RrRW50cnlJY29uUG9zaXRpb24gcG9zaXRpb24sIEdka0V2ZW50KiBl
dmVudCwgQnJvd3NlcldpbmRvdyogd2luZG93KQoreworICAgIGlmIChwb3NpdGlvbiAhPSBHVEtf
RU5UUllfSUNPTl9TRUNPTkRBUlkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBX
aGF0IGFib3V0IGF1ZGlvL3ZpZGVvPworICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBicm93
c2VyX3RhYl9nZXRfd2ViX3ZpZXcod2luZG93LT5hY3RpdmVUYWIpOworICAgIHN3aXRjaCAod2Vi
a2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUod2ViVmlldykpIHsKKyAgICBj
YXNlIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkU6CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQ6CisgICAgICAgIHdlYmtpdF93
ZWJfdmlld19zZXRfZGlzcGxheV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcsIFdFQktJVF9NRURJQV9D
QVBUVVJFX1NUQVRFX0FDVElWRSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0VCS0lUX01F
RElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFOgorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rp
c3BsYXlfY2FwdHVyZV9zdGF0ZSh3ZWJWaWV3LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9N
VVRFRCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogc3RhdGljIHZvaWQgd2ViVmlld0lz
TG9hZGluZ0NoYW5nZWQoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcGFyYW1T
cGVjLCBCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7CiAgICAgZ2Jvb2xlYW4gaXNMb2FkaW5nID0g
d2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldyk7CkBAIC0xMTgwLDYgKzEyNDYsMTIg
QEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1N3aXRjaFRhYihHdGtOb3RlYm9vayAqbm90ZWJv
b2ssIEJyb3dzZXJUYWIgKnRhYiwgZ3VpbnQKICNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgs
IDApCiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAic2Nyb2xsLWV2ZW50IiwgR19DQUxM
QkFDSyhzY3JvbGxFdmVudENhbGxiYWNrKSwgd2luZG93KTsKICNlbmRpZgorICAgIGdfc2lnbmFs
X2Nvbm5lY3Rfb2JqZWN0KHdlYlZpZXcsICJub3RpZnk6OmNhbWVyYS1jYXB0dXJlLXN0YXRlIiwg
R19DQUxMQkFDSyh3ZWJWaWV3TWVkaWFDYXB0dXJlU3RhdGVDaGFuZ2VkKSwgd2luZG93LCAwKTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0X29iamVjdCh3ZWJWaWV3LCAibm90aWZ5OjptaWNyb3Bob25l
LWNhcHR1cmUtc3RhdGUiLCBHX0NBTExCQUNLKHdlYlZpZXdNZWRpYUNhcHR1cmVTdGF0ZUNoYW5n
ZWQpLCB3aW5kb3csIDApOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KHdlYlZpZXcsICJu
b3RpZnk6OmRpc3BsYXktY2FwdHVyZS1zdGF0ZSIsIEdfQ0FMTEJBQ0sod2ViVmlld01lZGlhQ2Fw
dHVyZVN0YXRlQ2hhbmdlZCksIHdpbmRvdywgMCk7CisKKyAgICBnX29iamVjdF9zZXQod2luZG93
LT51cmlFbnRyeSwgInNlY29uZGFyeS1pY29uLWFjdGl2YXRhYmxlIiwgVFJVRSwgTlVMTCk7Cisg
ICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPnVyaUVudHJ5LCAiaWNvbi1wcmVzcyIsIEdfQ0FM
TEJBQ0sod2ViVmlld1VyaUVudHJ5SWNvblByZXNzZWQpLCB3aW5kb3cpOwogCiAgICAgV2ViS2l0
QmFja0ZvcndhcmRMaXN0ICpiYWNrRm9yd2FyZGxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Jh
Y2tfZm9yd2FyZF9saXN0KHdlYlZpZXcpOwogICAgIGJyb3dzZXJXaW5kb3dVcGRhdGVOYXZpZ2F0
aW9uTWVudSh3aW5kb3csIGJhY2tGb3J3YXJkbGlzdCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCmluZGV4IGFiYTMyMWM5
Y2FlNjJhN2UwMGYwMzMyMWU0NGNlMGM3NWNlMmRmODguLjAwZmU5MmQ5OGVmZjUwMzE1MWVmZDIy
NjhhMzA2ZDVmMWRmYmJiNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCkBAIC0yNDAsNiArMjQwLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHVzZXJNZWRp
YVJlcXVlc3QgPSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCk7
CiAgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF91c2VyX21lZGlhX3Blcm1pc3Npb25f
aXNfZm9yX2F1ZGlvX2RldmljZSh1c2VyTWVkaWFSZXF1ZXN0KSA9PSB0ZXN0LT5tX2V4cGVjdGVk
QXVkaW9NZWRpYSk7CiAgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF91c2VyX21lZGlh
X3Blcm1pc3Npb25faXNfZm9yX3ZpZGVvX2RldmljZSh1c2VyTWVkaWFSZXF1ZXN0KSA9PSB0ZXN0
LT5tX2V4cGVjdGVkVmlkZW9NZWRpYSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dF91c2VyX21lZGlhX3Blcm1pc3Npb25faXNfZm9yX2Rpc3BsYXlfZGV2aWNlKHVzZXJNZWRpYVJl
cXVlc3QpID09IHRlc3QtPm1fZXhwZWN0ZWREaXNwbGF5TWVkaWEpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMpCkBAIC0yNjMsNiArMjY0
LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fdmVyaWZ5TWVkaWFUeXBlcyhmYWxzZSkKICAgICAg
ICAgLCBtX2V4cGVjdGVkQXVkaW9NZWRpYShmYWxzZSkKICAgICAgICAgLCBtX2V4cGVjdGVkVmlk
ZW9NZWRpYShmYWxzZSkKKyAgICAgICAgLCBtX2V4cGVjdGVkRGlzcGxheU1lZGlhKGZhbHNlKQog
ICAgICAgICAsIG1fbW91c2VUYXJnZXRNb2RpZmllcnMoMCkKICAgICB7CiAgICAgICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHko
d2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhtX3dlYlZpZXcpLCBUUlVFKTsKQEAgLTQxNSw2
ICs0MTcsNyBAQCBwdWJsaWM6CiAgICAgZ2Jvb2xlYW4gbV92ZXJpZnlNZWRpYVR5cGVzOwogICAg
IGdib29sZWFuIG1fZXhwZWN0ZWRBdWRpb01lZGlhOwogICAgIGdib29sZWFuIG1fZXhwZWN0ZWRW
aWRlb01lZGlhOworICAgIGdib29sZWFuIG1fZXhwZWN0ZWREaXNwbGF5TWVkaWE7CiAgICAgV2lu
ZG93UHJvcGVydGllcyBtX3dpbmRvd1Byb3BlcnRpZXM7CiAgICAgSGFzaFNldDxXVEY6OlN0cmlu
Zz4gbV93aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZDsKICAgICBHUmVmUHRyPFdlYktpdEhpdFRlc3RS
ZXN1bHQ+IG1fbW91c2VUYXJnZXRIaXRUZXN0UmVzdWx0OwpAQCAtMTAwMSwxNiArMTAwNCw0NCBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyhVSUNs
aWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaQogICAgIHRlc3QtPm1fdmVyaWZ5TWVkaWFUeXBlcyA9
IFRSVUU7CiAgICAgdGVzdC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEgPSBUUlVFOwogICAgIHRlc3Qt
Pm1fZXhwZWN0ZWRWaWRlb01lZGlhID0gVFJVRTsKKyAgICB0ZXN0LT5tX2V4cGVjdGVkRGlzcGxh
eU1lZGlhID0gRkFMU0U7CiAKICAgICAvLyBUZXN0IGRlbnlpbmcgYSBwZXJtaXNzaW9uIHJlcXVl
c3QuCiAgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9IGZhbHNlOwogICAgIHRl
c3QtPmxvYWRIdG1sKHVzZXJNZWRpYVJlcXVlc3RIVE1MLCBudWxscHRyKTsKICAgICB0ZXN0LT53
YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiTm90QWxsb3dlZEVycm9yIik7CisgICAgZ19hc3NlcnRf
Y21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5t
X3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CisgICAgZ19h
c3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0
ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7
CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJl
X3N0YXRlKHRlc3QtPm1fd2ViVmlldyksID09LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9O
T05FKTsKIAogICAgIC8vIFRlc3QgYWxsb3dpbmcgYSBwZXJtaXNzaW9uIHJlcXVlc3QuCiAgICAg
dGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9IHRydWU7CiAgICAgdGVzdC0+bG9hZEh0
bWwodXNlck1lZGlhUmVxdWVzdEhUTUwsIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbFRp
dGxlQ2hhbmdlZFRvKCJPSyIpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYl92aWV3
X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFdFQktJVF9N
RURJQV9DQVBUVVJFX1NUQVRFX05PTkUpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dl
Yl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3KSwgPT0s
IFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRSk7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmll
dyksID09LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUpOworCisgICAgd2Via2l0
X3dlYl92aWV3X3NldF9taWNyb3Bob25lX2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3LCBX
RUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRCk7CisgICAgdGVzdC0+d2FpdFVudGlsTWlj
cm9waG9uZUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyhXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9N
VVRFRCk7CisKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0
ZSh0ZXN0LT5tX3dlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRSk7Cisg
ICAgdGVzdC0+d2FpdFVudGlsTWljcm9waG9uZUNhcHR1cmVTdGF0ZUNoYW5nZWRUbyhXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUpOworCisgICAgd2Via2l0X3dlYl92aWV3X3NldF9j
YW1lcmFfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJF
X1NUQVRFX01VVEVEKTsKKyAgICB0ZXN0LT53YWl0VW50aWxDYW1lcmFDYXB0dXJlU3RhdGVDaGFu
Z2VkVG8oV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTVVURUQpOworCisgICAgd2Via2l0X3dl
Yl92aWV3X3NldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcsIFdFQktJVF9N
RURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRSk7CisgICAgdGVzdC0+d2FpdFVudGlsQ2FtZXJhQ2Fw
dHVyZVN0YXRlQ2hhbmdlZFRvKFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRSk7CisK
KyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2Vi
VmlldywgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfTk9ORSk7CisgICAgdGVzdC0+d2FpdFVu
dGlsQ2FtZXJhQ2FwdHVyZVN0YXRlQ2hhbmdlZFRvKFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRF
X05PTkUpOworCisgICAgLy8gQSBkZS1hY3RpdmF0ZWQgY2FwdHVyZSBkZXZpY2UgY2Fubm90IGJl
IHJlLWFjdGl2YXRlZC4KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2NhbWVyYV9jYXB0dXJlX3N0
YXRlKHRlc3QtPm1fd2ViVmlldywgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVfQUNUSVZFKTsK
KyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfdmlld19nZXRfY2FtZXJhX2NhcHR1cmVf
c3RhdGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05P
TkUpOworCisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhv
bmVfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRV
UkVfU1RBVEVfQUNUSVZFKTsKIAogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlh
X3N0cmVhbShzZXR0aW5ncywgZW5hYmxlZCk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFi
bGVfbW9ja19jYXB0dXJlX2RldmljZXMoc2V0dGluZ3MsIEZBTFNFKTsKQEAgLTEwNDEsMTEgKzEw
NzIsODEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LAogICAgIHRlc3QtPm1fdmVyaWZ5TWVkaWFU
eXBlcyA9IFRSVUU7CiAgICAgdGVzdC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEgPSBUUlVFOwogICAg
IHRlc3QtPm1fZXhwZWN0ZWRWaWRlb01lZGlhID0gRkFMU0U7CisgICAgdGVzdC0+bV9leHBlY3Rl
ZERpc3BsYXlNZWRpYSA9IEZBTFNFOwogCiAgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlzc2lv
biByZXF1ZXN0LgogICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxzZTsK
ICAgICB0ZXN0LT5sb2FkSHRtbCh1c2VyTWVkaWFSZXF1ZXN0SFRNTCwgbnVsbHB0cik7CiAgICAg
dGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIk5vdEFsbG93ZWRFcnJvciIpOworICAgIGdf
YXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYl92aWV3X2dldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUo
dGVzdC0+bV93ZWJWaWV3KSwgPT0sIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX05PTkUpOwor
ICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYl92aWV3X2dldF9taWNyb3Bob25lX2NhcHR1
cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRF
X05PTkUpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFf
Y2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfTk9ORSk7CisKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJl
YW0oc2V0dGluZ3MsIGVuYWJsZWQpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21v
Y2tfY2FwdHVyZV9kZXZpY2VzKHNldHRpbmdzLCBGQUxTRSk7CisgICAgd2Via2l0U2V0dGluZ3NT
ZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24oc2V0dGluZ3MsIFRSVUUpOwor
fQorCitzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Rpc3BsYXlVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIFdlYktpdFNl
dHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+bV93
ZWJWaWV3KTsKKyAgICBnYm9vbGVhbiBlbmFibGVkID0gd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzKTsKKyAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MsIFRSVUUpOworICAgIHdlYmtpdF9zZXR0aW5nc19zZXRf
ZW5hYmxlX21vY2tfY2FwdHVyZV9kZXZpY2VzKHNldHRpbmdzLCBUUlVFKTsKKyAgICB3ZWJraXRT
ZXR0aW5nc1NldE1lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbihzZXR0aW5ncywg
RkFMU0UpOworCisgICAgdGVzdC0+c2hvd0luV2luZG93KCk7CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGRpc3BsYXlNZWRpYVJlcXVlc3RIVE1MID0gIjxodG1sPiIKKyAgICAgICAgIiAgPHNjcmlw
dD4iCisgICAgICAgICIgIGZ1bmN0aW9uIHJ1blRlc3QoKSIKKyAgICAgICAgIiAgeyIKKyAgICAg
ICAgIiAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhKCkiCisgICAg
ICAgICIgICAgICAgIC50aGVuKChzdHJlYW0pID0+IHsgZG9jdW1lbnQudGl0bGUgPSBcIk9LXCI7
IH0pIgorICAgICAgICAiICAgICAgICAuY2F0Y2goKGUpID0+IHsgZG9jdW1lbnQudGl0bGUgPSBl
Lm5hbWU7IH0pOyIKKyAgICAgICAgIiAgfSIKKyAgICAgICAgIiAgPC9zY3JpcHQ+IgorICAgICAg
ICAiICA8Ym9keT4iCisgICAgICAgICIgIDxpbnB1dCBzdHlsZT1cInBvc2l0aW9uOmFic29sdXRl
OyBsZWZ0OjA7IHRvcDowOyBtYXJnaW46MDsgcGFkZGluZzowXCIgdHlwZT1cImJ1dHRvblwiIHZh
bHVlPVwiY2xpY2sgbWVcIiBvbmNsaWNrPVwicnVuVGVzdCgpO1wiLz4iCisgICAgICAgICIgIDwv
Ym9keT4iCisgICAgICAgICI8L2h0bWw+IjsKKworICAgIHRlc3QtPm1fdmVyaWZ5TWVkaWFUeXBl
cyA9IFRSVUU7CisgICAgdGVzdC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEgPSBGQUxTRTsKKyAgICB0
ZXN0LT5tX2V4cGVjdGVkVmlkZW9NZWRpYSA9IEZBTFNFOworICAgIHRlc3QtPm1fZXhwZWN0ZWRE
aXNwbGF5TWVkaWEgPSBUUlVFOworCisgICAgLy8gVGVzdCBkZW55aW5nIGEgcGVybWlzc2lvbiBy
ZXF1ZXN0LgorICAgIHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMgPSBmYWxzZTsKKyAg
ICB0ZXN0LT5sb2FkSHRtbChkaXNwbGF5TWVkaWFSZXF1ZXN0SFRNTCwgbnVsbHB0cik7CisgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Y2xpY2tNb3VzZUJ1dHRv
big1LCA1KTsKKyAgICB0ZXN0LT53YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiTm90QWxsb3dlZEVy
cm9yIik7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlf
Y2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVf
U1RBVEVfTk9ORSk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21p
Y3JvcGhvbmVfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElB
X0NBUFRVUkVfU1RBVEVfTk9ORSk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2NhbWVyYV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmlldyksID09LCBXRUJLSVRf
TUVESUFfQ0FQVFVSRV9TVEFURV9OT05FKTsKKworICAgIC8vIFRlc3QgYWxsb3dpbmcgYSBwZXJt
aXNzaW9uIHJlcXVlc3QuCisgICAgdGVzdC0+bV9hbGxvd1Blcm1pc3Npb25SZXF1ZXN0cyA9IHRy
dWU7CisgICAgdGVzdC0+bG9hZEh0bWwoZGlzcGxheU1lZGlhUmVxdWVzdEhUTUwsIG51bGxwdHIp
OworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmNsaWNrTW91
c2VCdXR0b24oNSwgNSk7CisgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIk9LIik7
CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVy
ZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVf
QUNUSVZFKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9w
aG9uZV9jYXB0dXJlX3N0YXRlKHRlc3QtPm1fd2ViVmlldyksID09LCBXRUJLSVRfTUVESUFfQ0FQ
VFVSRV9TVEFURV9OT05FKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfdmlld19n
ZXRfY2FtZXJhX2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3KSwgPT0sIFdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX05PTkUpOworCisgICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5
X2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJWaWV3LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFU
RV9NVVRFRCk7CisgICAgdGVzdC0+d2FpdFVudGlsRGlzcGxheUNhcHR1cmVTdGF0ZUNoYW5nZWRU
byhXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9NVVRFRCk7CisKKyAgICB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcsIFdFQktJVF9NRURJ
QV9DQVBUVVJFX1NUQVRFX0FDVElWRSk7CisgICAgdGVzdC0+d2FpdFVudGlsRGlzcGxheUNhcHR1
cmVTdGF0ZUNoYW5nZWRUbyhXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9BQ1RJVkUpOworCisg
ICAgd2Via2l0X3dlYl92aWV3X3NldF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUodGVzdC0+bV93ZWJW
aWV3LCBXRUJLSVRfTUVESUFfQ0FQVFVSRV9TVEFURV9OT05FKTsKKyAgICB0ZXN0LT53YWl0VW50
aWxEaXNwbGF5Q2FwdHVyZVN0YXRlQ2hhbmdlZFRvKFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRF
X05PTkUpOworCisgICAgLy8gQSBkZS1hY3RpdmF0ZWQgY2FwdHVyZSBkZXZpY2UgY2Fubm90IGJl
IHJlLWFjdGl2YXRlZC4KKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Rpc3BsYXlfY2FwdHVyZV9z
dGF0ZSh0ZXN0LT5tX3dlYlZpZXcsIFdFQktJVF9NRURJQV9DQVBUVVJFX1NUQVRFX0FDVElWRSk7
CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Rpc3BsYXlfY2FwdHVy
ZV9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgV0VCS0lUX01FRElBX0NBUFRVUkVfU1RBVEVf
Tk9ORSk7CiAKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0
dGluZ3MsIGVuYWJsZWQpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21vY2tfY2Fw
dHVyZV9kZXZpY2VzKHNldHRpbmdzLCBGQUxTRSk7CkBAIC0xMzQzLDYgKzE0NDQsNyBAQCB2b2lk
IGJlZm9yZUFsbCgpCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAidXNl
cm1lZGlhLWVudW1lcmF0ZWRldmljZXMtcGVybWlzc2lvbi1jaGVjayIsIHRlc3RXZWJWaWV3VXNl
ck1lZGlhRW51bWVyYXRlRGV2aWNlc1Blcm1pc3Npb25DaGVjayk7CiAgICAgVUlDbGllbnRUZXN0
OjphZGQoIldlYktpdFdlYlZpZXciLCAidXNlcm1lZGlhLXBlcm1pc3Npb24tcmVxdWVzdHMiLCB0
ZXN0V2ViVmlld1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0cyk7CiAgICAgVUlDbGllbnRUZXN0
OjphZGQoIldlYktpdFdlYlZpZXciLCAiYXVkaW8tdXNlcm1lZGlhLXBlcm1pc3Npb24tcmVxdWVz
dCIsIHRlc3RXZWJWaWV3QXVkaW9Pbmx5VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKKyAg
ICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkaXNwbGF5LXVzZXJtZWRpYS1w
ZXJtaXNzaW9uLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0Rpc3BsYXlVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdHMpOwogI2VuZGlmCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBtb3VzZSBjbGljayBp
biBXUEUuCiAjaWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCmluZGV4IDgyNjRlYmFhZDU1N2ZkMGY5YTFj
MWFhNzVkOTI0YWMyY2EyOTBiMWQuLmQzMjNjODA2N2FmZDExMjM0ZTU2MjRmNzdhNjE5Y2M0NWQy
NzIzYTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dl
YlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9X
ZWJWaWV3VGVzdC5jcHAKQEAgLTI1MCw2ICsyNTAsNjAgQEAgdm9pZCBXZWJWaWV3VGVzdDo6c2V0
RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2VkaXRhYmxl
KG1fd2ViVmlldywgZWRpdGFibGUpOwogfQogCitzdGF0aWMgdm9pZCBkaXNwbGF5Q2FwdHVyZUNo
YW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR1BhcmFtU3BlYyosIFdlYlZpZXdUZXN0KiB0
ZXN0KQoreworICAgIGlmICh0ZXN0LT5tX2V4cGVjdGVkRGlzcGxheUNhcHR1cmVTdGF0ZSAmJiAq
dGVzdC0+bV9leHBlY3RlZERpc3BsYXlDYXB0dXJlU3RhdGUgIT0gd2Via2l0X3dlYl92aWV3X2dl
dF9kaXNwbGF5X2NhcHR1cmVfc3RhdGUod2ViVmlldykpCisgICAgICAgIHJldHVybjsKKworICAg
IGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3ZWJWaWV3LCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihkaXNwbGF5Q2FwdHVyZUNoYW5nZWQpLCB0ZXN0KTsKKyAgICBnX21haW5f
bG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworfQorCit2b2lkIFdlYlZpZXdUZXN0Ojp3YWl0
VW50aWxEaXNwbGF5Q2FwdHVyZVN0YXRlQ2hhbmdlZFRvKFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRl
IGV4cGVjdGVkQ2FwdHVyZVN0YXRlKQoreworICAgICptX2V4cGVjdGVkRGlzcGxheUNhcHR1cmVT
dGF0ZSA9IGV4cGVjdGVkQ2FwdHVyZVN0YXRlOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJW
aWV3LCAibm90aWZ5OjpkaXNwbGF5LWNhcHR1cmUtc3RhdGUiLCBHX0NBTExCQUNLKGRpc3BsYXlD
YXB0dXJlQ2hhbmdlZCksIHRoaXMpOworICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsK
KyAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfdmlld19nZXRfZGlzcGxheV9jYXB0dXJl
X3N0YXRlKG1fd2ViVmlldyksID09LCBleHBlY3RlZENhcHR1cmVTdGF0ZSk7CisgICAgbV9leHBl
Y3RlZERpc3BsYXlDYXB0dXJlU3RhdGUucmVzZXQoKTsKK30KKworc3RhdGljIHZvaWQgbWljcm9w
aG9uZUNhcHR1cmVDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqLCBX
ZWJWaWV3VGVzdCogdGVzdCkKK3sKKyAgICBpZiAodGVzdC0+bV9leHBlY3RlZE1pY3JvcGhvbmVD
YXB0dXJlU3RhdGUgJiYgKnRlc3QtPm1fZXhwZWN0ZWRNaWNyb3Bob25lQ2FwdHVyZVN0YXRlICE9
IHdlYmtpdF93ZWJfdmlld19nZXRfbWljcm9waG9uZV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1
bmMod2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWljcm9waG9uZUNhcHR1cmVDaGFu
Z2VkKSwgdGVzdCk7CisgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKK30K
Kwordm9pZCBXZWJWaWV3VGVzdDo6d2FpdFVudGlsTWljcm9waG9uZUNhcHR1cmVTdGF0ZUNoYW5n
ZWRUbyhXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSBleHBlY3RlZENhcHR1cmVTdGF0ZSkKK3sKKyAg
ICAqbV9leHBlY3RlZE1pY3JvcGhvbmVDYXB0dXJlU3RhdGUgPSBleHBlY3RlZENhcHR1cmVTdGF0
ZTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgIm5vdGlmeTo6bWljcm9waG9uZS1j
YXB0dXJlLXN0YXRlIiwgR19DQUxMQkFDSyhtaWNyb3Bob25lQ2FwdHVyZUNoYW5nZWQpLCB0aGlz
KTsKKyAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21pY3JvcGhvbmVfY2FwdHVyZV9zdGF0ZShtX3dlYlZpZXcp
LCA9PSwgZXhwZWN0ZWRDYXB0dXJlU3RhdGUpOworICAgIG1fZXhwZWN0ZWRNaWNyb3Bob25lQ2Fw
dHVyZVN0YXRlLnJlc2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIGNhbWVyYUNhcHR1cmVDaGFuZ2Vk
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqLCBXZWJWaWV3VGVzdCogdGVzdCkK
K3sKKyAgICBpZiAodGVzdC0+bV9leHBlY3RlZENhbWVyYUNhcHR1cmVTdGF0ZSAmJiAqdGVzdC0+
bV9leHBlY3RlZENhbWVyYUNhcHR1cmVTdGF0ZSAhPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NhbWVy
YV9jYXB0dXJlX3N0YXRlKHdlYlZpZXcpKQorICAgICAgICByZXR1cm47CisKKyAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2ViVmlldywgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oY2FtZXJhQ2FwdHVyZUNoYW5nZWQpLCB0ZXN0KTsKKyAgICBnX21haW5fbG9vcF9xdWl0
KHRlc3QtPm1fbWFpbkxvb3ApOworfQorCit2b2lkIFdlYlZpZXdUZXN0Ojp3YWl0VW50aWxDYW1l
cmFDYXB0dXJlU3RhdGVDaGFuZ2VkVG8oV2ViS2l0TWVkaWFDYXB0dXJlU3RhdGUgZXhwZWN0ZWRD
YXB0dXJlU3RhdGUpCit7CisgICAgKm1fZXhwZWN0ZWRDYW1lcmFDYXB0dXJlU3RhdGUgPSBleHBl
Y3RlZENhcHR1cmVTdGF0ZTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgIm5vdGlm
eTo6Y2FtZXJhLWNhcHR1cmUtc3RhdGUiLCBHX0NBTExCQUNLKGNhbWVyYUNhcHR1cmVDaGFuZ2Vk
KSwgdGhpcyk7CisgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIGdfYXNzZXJ0
X2NtcHVpbnQod2Via2l0X3dlYl92aWV3X2dldF9jYW1lcmFfY2FwdHVyZV9zdGF0ZShtX3dlYlZp
ZXcpLCA9PSwgZXhwZWN0ZWRDYXB0dXJlU3RhdGUpOworICAgIG1fZXhwZWN0ZWRDYW1lcmFDYXB0
dXJlU3RhdGUucmVzZXQoKTsKK30KKwogc3RhdGljIHZvaWQgZGlyZWN0b3J5Q2hhbmdlZENhbGxi
YWNrKEdGaWxlTW9uaXRvciosIEdGaWxlKiBmaWxlLCBHRmlsZSosIEdGaWxlTW9uaXRvckV2ZW50
IGV2ZW50LCBXZWJWaWV3VGVzdCogdGVzdCkKIHsKICAgICBpZiAoZXZlbnQgPT0gdGVzdC0+bV9l
eHBlY3RlZEZpbGVDaGFuZ2VFdmVudCAmJiBnX2ZpbGVfZXF1YWwoZmlsZSwgdGVzdC0+bV9tb25p
dG9yZWRGaWxlLmdldCgpKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1dlYlZpZXdUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9XZWJWaWV3VGVzdC5oCmluZGV4IDViZmU3ODNkMjI5NTU1OWIxMjc0MzM4YmZkNTE2Yzg5
ZDRhZGUyM2IuLjYzNzNmMzQwM2YxNmE5ZTdjZmZmMDEwYTYwMzc0N2MwZDNkNDVjYzQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApA
QCAtNjIsNiArNjIsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNFZGl0YWJsZSgpOwogICAgIHZv
aWQgc2V0RWRpdGFibGUoYm9vbCk7CiAKKyAgICB2b2lkIHdhaXRVbnRpbENhbWVyYUNhcHR1cmVT
dGF0ZUNoYW5nZWRUbyhXZWJLaXRNZWRpYUNhcHR1cmVTdGF0ZSk7CisgICAgdm9pZCB3YWl0VW50
aWxEaXNwbGF5Q2FwdHVyZVN0YXRlQ2hhbmdlZFRvKFdlYktpdE1lZGlhQ2FwdHVyZVN0YXRlKTsK
KyAgICB2b2lkIHdhaXRVbnRpbE1pY3JvcGhvbmVDYXB0dXJlU3RhdGVDaGFuZ2VkVG8oV2ViS2l0
TWVkaWFDYXB0dXJlU3RhdGUpOworCiAgICAgdm9pZCBtb3VzZU1vdmVUbyhpbnQgeCwgaW50IHks
IHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzID0gMCk7CiAgICAgdm9pZCBjbGlja01vdXNlQnV0dG9u
KGludCB4LCBpbnQgeSwgdW5zaWduZWQgYnV0dG9uID0gMSwgdW5zaWduZWQgbW91c2VNb2RpZmll
cnMgPSAwKTsKICAgICB2b2lkIGtleVN0cm9rZSh1bnNpZ25lZCBrZXlWYWwsIHVuc2lnbmVkIGtl
eU1vZGlmaWVycyA9IDApOwpAQCAtMTEyLDYgKzExNiwxMCBAQCBwdWJsaWM6CiAgICAgR1JlZlB0
cjxHRmlsZT4gbV9tb25pdG9yZWRGaWxlOwogICAgIEdGaWxlTW9uaXRvckV2ZW50IG1fZXhwZWN0
ZWRGaWxlQ2hhbmdlRXZlbnQ7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYktpdE1lZGlhQ2FwdHVy
ZVN0YXRlPiBtX2V4cGVjdGVkQ2FtZXJhQ2FwdHVyZVN0YXRlOworICAgIHN0ZDo6b3B0aW9uYWw8
V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU+IG1fZXhwZWN0ZWREaXNwbGF5Q2FwdHVyZVN0YXRlOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0TWVkaWFDYXB0dXJlU3RhdGU+IG1fZXhwZWN0ZWRNaWNy
b3Bob25lQ2FwdHVyZVN0YXRlOworCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEd0a1dpZGdldCog
bV9wYXJlbnRXaW5kb3cgeyBudWxscHRyIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL2Zs
YXRwYWsvZmxhdHBha3V0aWxzLnB5IGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKaW5k
ZXggMWNiMjk4MmVjYmEwZTIzOWViMjBjYWE0MzQ0OGQyN2RhZWE1Y2ViMC4uYjRkMTlmMDkwN2Ux
MjI4NjQyNTFhMDRjYTNiZjZiM2FmYmQxOTExMSAxMDA2NDQKLS0tIGEvVG9vbHMvZmxhdHBhay9m
bGF0cGFrdXRpbHMucHkKKysrIGIvVG9vbHMvZmxhdHBhay9mbGF0cGFrdXRpbHMucHkKQEAgLTgw
MSw4ICs4MDEsMTAgQEAgY2xhc3MgV2Via2l0RmxhdHBhazoKICAgICAgICAgICAgICJKU0MiLAog
ICAgICAgICAgICAgIk1FU0EiLAogICAgICAgICAgICAgIkxJQkdMIiwKKyAgICAgICAgICAgICJQ
SVBFV0lSRSIsCiAgICAgICAgICAgICAiUlVTVCIsCiAgICAgICAgICAgICAiU0NDQUNIRSIsCisg
ICAgICAgICAgICAiU1BBIiwKICAgICAgICAgICAgICJXQVlMQU5EIiwKICAgICAgICAgICAgICJX
RUJLSVQiLAogICAgICAgICAgICAgIldFQktJVDIiLAo=
</data>
<flag name="review"
          id="456238"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="456295"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>