<?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>177943</bug_id>
          
          <creation_ts>2017-10-05 07:32:14 -0700</creation_ts>
          <short_desc>[GTK][WPE] Add API to configure and enable resource load statistics</short_desc>
          <delta_ts>2020-06-16 02:31:21 -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=168171</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>210184</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>buildbot</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1357021</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-10-05 07:32:14 -0700</bug_when>
    <thetext>To WebKitWebsiteDataManager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357024</commentid>
    <comment_count>1</comment_count>
      <attachid>322837</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-10-05 07:37:49 -0700</bug_when>
    <thetext>Created attachment 322837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357025</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-05 07:39:04 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357046</commentid>
    <comment_count>3</comment_count>
      <attachid>322837</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-05 09:20:13 -0700</bug_when>
    <thetext>Comment on attachment 322837
Patch

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

You&apos;ll add an Ephy preference too?

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:313
&gt; +    configuration.resourceLoadStatisticsDirectory = processPoolconfigurarion.resourceLoadStatisticsDirectory();

You should rename it to processPoolConfiguration in a follow-up.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:336
&gt; +        configuration.setResourceLoadStatisticsDirectory(WebCore::stringFromFileSystemRepresentation(webkit_website_data_manager_get_resource_load_stats_directory(priv-&gt;websiteDataManager.get())));

I know I approved this earlier, and you probably won&apos;t like me taking it back, but seeing it written out, it just doesn&apos;t feel as nice as and professional as webkit_website_data_manager_get_resource_load_statistics_directory(). I don&apos;t think it&apos;s a problem that the function name is a bit long.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp:87
&gt; +    PROP_RESOURCE_LOAD_STATS_DIRECTORY,

...so I&apos;d prefer to write it out as STATISTICS everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357505</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-10-06 00:47:10 -0700</bug_when>
    <thetext>Committed r222967: &lt;http://trac.webkit.org/changeset/222967&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425590</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-05-21 00:14:12 -0700</bug_when>
    <thetext>Committed r232010: &lt;https://trac.webkit.org/changeset/232010&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425591</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-05-21 00:15:01 -0700</bug_when>
    <thetext>Rolled out in r232010: &lt;https://trac.webkit.org/changeset/232010&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640844</commentid>
    <comment_count>7</comment_count>
      <attachid>396270</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-13 07:04:58 -0700</bug_when>
    <thetext>Created attachment 396270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640868</commentid>
    <comment_count>8</comment_count>
      <attachid>396270</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-13 08:05:26 -0700</bug_when>
    <thetext>Comment on attachment 396270
Patch

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

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp:735
&gt; + * webkit_website_data_manager_set_resource_load_statistics_enabled:

I&apos;m OK with this, but it&apos;s important to understand that the WebsiteDataStore-level API is a bit misnamed. It controls all of ITP, not just resource load statistics. E.g. this will probably cause third-party cookies to be blocked regardless of the WebKitCookieAcceptPolicy(?). It will certainly cause Referer headers to be stripped. Etc. A less-misleading name might be: webkit_website_data_manager_set_intelligent_tracking_prevention_enabled(). But then it would feel more at home on the WebKitWebContext, rather than WebKitWebsiteDataManager. But that would be the wrong place, because internally it really is a property of the WebsiteDataStore, not the WebProcessPool.

Conclusion: *shrug*. Maybe we could keep the current name but document that it has additional effects in addition to enabling statistics tracking? I don&apos;t know, just something to think about.

I would investigate the impact on cookie policy regardless. We might want to use a g_warning() if the WebKitCookiePolicy is inconsistent with ITP?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641261</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-13 22:43:43 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #8)
&gt; Comment on attachment 396270 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=396270&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/glib/WebKitWebsiteDataManager.cpp:735
&gt; &gt; + * webkit_website_data_manager_set_resource_load_statistics_enabled:
&gt; 
&gt; I&apos;m OK with this, but it&apos;s important to understand that the
&gt; WebsiteDataStore-level API is a bit misnamed. It controls all of ITP, not
&gt; just resource load statistics.

That&apos;s a good point. We could move this to the WebKitCookieManager if it makes more sense. I also wonder about other public API in WebsiteDataStore like isPrevalentResource, setPrevalentResource, clearPrevalentResource, setUseITPDatabase, etc. Are those only for testing? If we are going to expose more API than just enable/disable ITP we might consider adding an ITP manager.

&gt; E.g. this will probably cause third-party
&gt; cookies to be blocked regardless of the WebKitCookieAcceptPolicy(?). It will
&gt; certainly cause Referer headers to be stripped. Etc. A less-misleading name
&gt; might be:
&gt; webkit_website_data_manager_set_intelligent_tracking_prevention_enabled().
&gt; But then it would feel more at home on the WebKitWebContext, rather than
&gt; WebKitWebsiteDataManager. But that would be the wrong place, because
&gt; internally it really is a property of the WebsiteDataStore, not the
&gt; WebProcessPool.

I don&apos;t know much about ITP, to be honest.

&gt; Conclusion: *shrug*. Maybe we could keep the current name but document that
&gt; it has additional effects in addition to enabling statistics tracking? I
&gt; don&apos;t know, just something to think about.
&gt; 
&gt; I would investigate the impact on cookie policy regardless. We might want to
&gt; use a g_warning() if the WebKitCookiePolicy is inconsistent with ITP?

I don&apos;t even know how to test it apart from running layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641380</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-14 08:29:12 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #9) 
&gt; That&apos;s a good point. We could move this to the WebKitCookieManager if it
&gt; makes more sense. I also wonder about other public API in WebsiteDataStore
&gt; like isPrevalentResource, setPrevalentResource, clearPrevalentResource,
&gt; setUseITPDatabase, etc. Are those only for testing? If we are going to
&gt; expose more API than just enable/disable ITP we might consider adding an ITP
&gt; manager.

ITP is more than just cookies, though. Besides stripping Referers and overriding the cookie policy, it will also wipe localstorage and IndexedDB after a certain number of days (one week?) when the domain is &quot;prevalent.&quot; So WebKitCookieManager doesn&apos;t seem to be the right place either. I guess WebKitWebsiteDataManager is probably best, but we could give it a different name, e.g. webkit_website_data_manager_set_intelligent_tracking_prevention_enabled(). And then just document that this function can enable cookie policy that is more restrictive than that set by webkit_cookie_manager_set_accept_policy().

I would not expose [is,set,clear]PrevalentResource or setUseITPDatabase. We can always expose more in the future if an application ever wants to use them.
 
&gt; &gt; Conclusion: *shrug*. Maybe we could keep the current name but document that
&gt; &gt; it has additional effects in addition to enabling statistics tracking? I
&gt; &gt; don&apos;t know, just something to think about.
&gt; &gt; 
&gt; &gt; I would investigate the impact on cookie policy regardless. We might want to
&gt; &gt; use a g_warning() if the WebKitCookiePolicy is inconsistent with ITP?
&gt; 
&gt; I don&apos;t even know how to test it apart from running layout tests.

I could check with my bank&apos;s bill pay website... I don&apos;t use it because it breaks with third-party cookies disabled. So if ITP is enabled and cookie policy is set to always accept cookies, the always accept cookies should effectively be overridden.

I also found https://github.com/speedarius/third-party-cookie-tester, but that looks like some effort to get set up.

I wonder how we would expose this in Epiphany&apos;s preferences dialog. Currently we have a simple tri-state policy: always accept, block third party (default), never accept. I guess we could change it to a boolean enable ITP or disable ITP setting. Probably Epiphany is not the right browser to use if you&apos;re interested in disabling cookies entirely, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641406</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-14 09:30:41 -0700</bug_when>
    <thetext>FWIW, I intend to rename ResourceLoadStatistics to IntelligentTrackingPrevention or maybe just ITP for brevity. Just haven&apos;t gotten around to it. I also hope to get rid of all or most of the compile-time stuff.

As for the effects of turning on ITP, several of the things you mention Michael, are Cocoa-implementations which need a non-Cocoa counterpart to work. Cookie blocking and referrer downgrades are such examples.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641454</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-14 11:05:51 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #11)
&gt; FWIW, I intend to rename ResourceLoadStatistics to
&gt; IntelligentTrackingPrevention or maybe just ITP for brevity. Just haven&apos;t
&gt; gotten around to it. I also hope to get rid of all or most of the
&gt; compile-time stuff.

In that case, maybe webkit_website_data_manager_set_intelligent_tracking_prevention_enabled() should be OK. What about the directory on disk, is &quot;resourceloadstatistics&quot; still a good name for the directory? Maybe &quot;itp&quot; would be a better name, in case it stores other stuff there in the future?
 
&gt; As for the effects of turning on ITP, several of the things you mention
&gt; Michael, are Cocoa-implementations which need a non-Cocoa counterpart to
&gt; work. Cookie blocking and referrer downgrades are such examples.

Hm, if we know what needs implemented for soup ports, then we can implement. But we can&apos;t implement what we don&apos;t know needs implemented. :) So if you know of anything else besides these that you think we should look into, it would be great to know.

That said, I assume Referer stripping and cookie blocking are both probably already implemented by Carlos&apos;s patches, because there should be layout tests that would fail otherwise, yes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641459</commentid>
    <comment_count>13</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-04-14 11:18:48 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #12)
&gt; (In reply to John Wilander from comment #11)
&gt; &gt; FWIW, I intend to rename ResourceLoadStatistics to
&gt; &gt; IntelligentTrackingPrevention or maybe just ITP for brevity. Just haven&apos;t
&gt; &gt; gotten around to it. I also hope to get rid of all or most of the
&gt; &gt; compile-time stuff.
&gt; 
&gt; In that case, maybe
&gt; webkit_website_data_manager_set_intelligent_tracking_prevention_enabled()
&gt; should be OK. What about the directory on disk, is &quot;resourceloadstatistics&quot;
&gt; still a good name for the directory? Maybe &quot;itp&quot; would be a better name, in
&gt; case it stores other stuff there in the future?
&gt;  
&gt; &gt; As for the effects of turning on ITP, several of the things you mention
&gt; &gt; Michael, are Cocoa-implementations which need a non-Cocoa counterpart to
&gt; &gt; work. Cookie blocking and referrer downgrades are such examples.
&gt; 
&gt; Hm, if we know what needs implemented for soup ports, then we can implement.
&gt; But we can&apos;t implement what we don&apos;t know needs implemented. :) So if you
&gt; know of anything else besides these that you think we should look into, it
&gt; would be great to know.

Except for HSTS (as explained above), it should all be covered by tests. Pass those and you should have all the platform-specific bits.

&gt; That said, I assume Referer stripping and cookie blocking are both probably
&gt; already implemented by Carlos&apos;s patches, because there should be layout
&gt; tests that would fail otherwise, yes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641719</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-15 01:41:15 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #10)
&gt; (In reply to Carlos Garcia Campos from comment #9) 
&gt; &gt; That&apos;s a good point. We could move this to the WebKitCookieManager if it
&gt; &gt; makes more sense. I also wonder about other public API in WebsiteDataStore
&gt; &gt; like isPrevalentResource, setPrevalentResource, clearPrevalentResource,
&gt; &gt; setUseITPDatabase, etc. Are those only for testing? If we are going to
&gt; &gt; expose more API than just enable/disable ITP we might consider adding an ITP
&gt; &gt; manager.
&gt; 
&gt; ITP is more than just cookies, though. Besides stripping Referers and
&gt; overriding the cookie policy, it will also wipe localstorage and IndexedDB
&gt; after a certain number of days (one week?) when the domain is &quot;prevalent.&quot;
&gt; So WebKitCookieManager doesn&apos;t seem to be the right place either. I guess
&gt; WebKitWebsiteDataManager is probably best, but we could give it a different
&gt; name, e.g.
&gt; webkit_website_data_manager_set_intelligent_tracking_prevention_enabled().
&gt; And then just document that this function can enable cookie policy that is
&gt; more restrictive than that set by webkit_cookie_manager_set_accept_policy().

webkit_website_data_manager_set_intelligent_tracking_prevention_enabled() sounds good to me.

&gt; I would not expose [is,set,clear]PrevalentResource or setUseITPDatabase. We
&gt; can always expose more in the future if an application ever wants to use
&gt; them.

Those were just examples, there are a lot of public methods in WebsitedataStore related to ITP and I have no idea what they are for or if they are just there for testing.
 
&gt; &gt; &gt; Conclusion: *shrug*. Maybe we could keep the current name but document that
&gt; &gt; &gt; it has additional effects in addition to enabling statistics tracking? I
&gt; &gt; &gt; don&apos;t know, just something to think about.
&gt; &gt; &gt; 
&gt; &gt; &gt; I would investigate the impact on cookie policy regardless. We might want to
&gt; &gt; &gt; use a g_warning() if the WebKitCookiePolicy is inconsistent with ITP?
&gt; &gt; 
&gt; &gt; I don&apos;t even know how to test it apart from running layout tests.
&gt; 
&gt; I could check with my bank&apos;s bill pay website... I don&apos;t use it because it
&gt; breaks with third-party cookies disabled. So if ITP is enabled and cookie
&gt; policy is set to always accept cookies, the always accept cookies should
&gt; effectively be overridden.
&gt; 
&gt; I also found https://github.com/speedarius/third-party-cookie-tester, but
&gt; that looks like some effort to get set up.
&gt; 
&gt; I wonder how we would expose this in Epiphany&apos;s preferences dialog.
&gt; Currently we have a simple tri-state policy: always accept, block third
&gt; party (default), never accept. I guess we could change it to a boolean
&gt; enable ITP or disable ITP setting. Probably Epiphany is not the right
&gt; browser to use if you&apos;re interested in disabling cookies entirely, right?

Shouldn&apos;t we just enable it unconditionally?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641720</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-15 01:43:46 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #13)
&gt; (In reply to Michael Catanzaro from comment #12)
&gt; &gt; (In reply to John Wilander from comment #11)
&gt; &gt; &gt; FWIW, I intend to rename ResourceLoadStatistics to
&gt; &gt; &gt; IntelligentTrackingPrevention or maybe just ITP for brevity. Just haven&apos;t
&gt; &gt; &gt; gotten around to it. I also hope to get rid of all or most of the
&gt; &gt; &gt; compile-time stuff.
&gt; &gt; 
&gt; &gt; In that case, maybe
&gt; &gt; webkit_website_data_manager_set_intelligent_tracking_prevention_enabled()
&gt; &gt; should be OK. What about the directory on disk, is &quot;resourceloadstatistics&quot;
&gt; &gt; still a good name for the directory? Maybe &quot;itp&quot; would be a better name, in
&gt; &gt; case it stores other stuff there in the future?
&gt; &gt;  
&gt; &gt; &gt; As for the effects of turning on ITP, several of the things you mention
&gt; &gt; &gt; Michael, are Cocoa-implementations which need a non-Cocoa counterpart to
&gt; &gt; &gt; work. Cookie blocking and referrer downgrades are such examples.
&gt; &gt; 
&gt; &gt; Hm, if we know what needs implemented for soup ports, then we can implement.
&gt; &gt; But we can&apos;t implement what we don&apos;t know needs implemented. :) So if you
&gt; &gt; know of anything else besides these that you think we should look into, it
&gt; &gt; would be great to know.
&gt; 
&gt; Except for HSTS (as explained above), it should all be covered by tests.
&gt; Pass those and you should have all the platform-specific bits.

Yes, I think I implemented everything except isolated sessions in bug #210184 and the only tests failing are:

http/tests/resourceLoadStatistics/switch-session-on-navigation-to-prevalent-with-interaction-database.php
http/tests/resourceLoadStatistics/switch-session-on-navigation-to-prevalent-with-interaction.php

&gt; &gt; That said, I assume Referer stripping and cookie blocking are both probably
&gt; &gt; already implemented by Carlos&apos;s patches, because there should be layout
&gt; &gt; tests that would fail otherwise, yes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641772</commentid>
    <comment_count>16</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-04-15 06:57:43 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #14)
&gt; (In reply to Michael Catanzaro from comment #10)
&gt; &gt; (In reply to Carlos Garcia Campos from comment #9) 
&gt; &gt; &gt; That&apos;s a good point. We could move this to the WebKitCookieManager if it
&gt; &gt; &gt; makes more sense. I also wonder about other public API in WebsiteDataStore
&gt; &gt; &gt; like isPrevalentResource, setPrevalentResource, clearPrevalentResource,
&gt; &gt; &gt; setUseITPDatabase, etc. Are those only for testing? If we are going to
&gt; &gt; &gt; expose more API than just enable/disable ITP we might consider adding an ITP
&gt; &gt; &gt; manager.
&gt; &gt; 
&gt; &gt; ITP is more than just cookies, though. Besides stripping Referers and
&gt; &gt; overriding the cookie policy, it will also wipe localstorage and IndexedDB
&gt; &gt; after a certain number of days (one week?) when the domain is &quot;prevalent.&quot;
&gt; &gt; So WebKitCookieManager doesn&apos;t seem to be the right place either. I guess
&gt; &gt; WebKitWebsiteDataManager is probably best, but we could give it a different
&gt; &gt; name, e.g.
&gt; &gt; webkit_website_data_manager_set_intelligent_tracking_prevention_enabled().
&gt; &gt; And then just document that this function can enable cookie policy that is
&gt; &gt; more restrictive than that set by webkit_cookie_manager_set_accept_policy().
&gt; 
&gt; webkit_website_data_manager_set_intelligent_tracking_prevention_enabled()
&gt; sounds good to me.

Wow, this is a mouthful! If nobody is against it, I would prefer to use
“webkit_website_data_manager_set_itp_enabled()”—and that still remains
pretty long =)
 
&gt; &gt; I would not expose [is,set,clear]PrevalentResource or setUseITPDatabase. We
&gt; &gt; can always expose more in the future if an application ever wants to use
&gt; &gt; them.
&gt; 
&gt; Those were just examples, there are a lot of public methods in
&gt; WebsitedataStore related to ITP and I have no idea what they are for or if
&gt; they are just there for testing.
&gt;  
&gt; &gt; &gt; &gt; Conclusion: *shrug*. Maybe we could keep the current name but document that
&gt; &gt; &gt; &gt; it has additional effects in addition to enabling statistics tracking? I
&gt; &gt; &gt; &gt; don&apos;t know, just something to think about.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I would investigate the impact on cookie policy regardless. We might want to
&gt; &gt; &gt; &gt; use a g_warning() if the WebKitCookiePolicy is inconsistent with ITP?
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t even know how to test it apart from running layout tests.
&gt; &gt; 
&gt; &gt; I could check with my bank&apos;s bill pay website... I don&apos;t use it because it
&gt; &gt; breaks with third-party cookies disabled. So if ITP is enabled and cookie
&gt; &gt; policy is set to always accept cookies, the always accept cookies should
&gt; &gt; effectively be overridden.
&gt; &gt; 
&gt; &gt; I also found https://github.com/speedarius/third-party-cookie-tester, but
&gt; &gt; that looks like some effort to get set up.
&gt; &gt; 
&gt; &gt; I wonder how we would expose this in Epiphany&apos;s preferences dialog.
&gt; &gt; Currently we have a simple tri-state policy: always accept, block third
&gt; &gt; party (default), never accept. I guess we could change it to a boolean
&gt; &gt; enable ITP or disable ITP setting. Probably Epiphany is not the right
&gt; &gt; browser to use if you&apos;re interested in disabling cookies entirely, right?
&gt; 
&gt; Shouldn&apos;t we just enable it unconditionally?

Do you mean in WebKit{GTK,WPE} or in Epiphany? I would have it enabled by
default on both. For WebKit, as long as ITP can be disabled using the API,
having it enabled by default sounds good to me—it&apos;s good to make defaults
lean towards the more secure or privacy-respecting settings, so developers
embedding a WebKitWebView in an application get the “best” settings without
needing additional work. Dunno if Epiphany can have the setting always-on,
but we could have a setting without checkbox in the preferences window and
try it out for a while before taking a final decision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641773</commentid>
    <comment_count>17</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-04-15 06:58:14 -0700</bug_when>
    <thetext>By the way, great work getting ITP to work for GTK/WPE \o/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641779</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-04-15 07:10:41 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #16)
&gt; (In reply to Carlos Garcia Campos from comment #14)
&gt; &gt; (In reply to Michael Catanzaro from comment #10)
&gt; &gt; &gt; (In reply to Carlos Garcia Campos from comment #9) 
&gt; &gt; &gt; &gt; That&apos;s a good point. We could move this to the WebKitCookieManager if it
&gt; &gt; &gt; &gt; makes more sense. I also wonder about other public API in WebsiteDataStore
&gt; &gt; &gt; &gt; like isPrevalentResource, setPrevalentResource, clearPrevalentResource,
&gt; &gt; &gt; &gt; setUseITPDatabase, etc. Are those only for testing? If we are going to
&gt; &gt; &gt; &gt; expose more API than just enable/disable ITP we might consider adding an ITP
&gt; &gt; &gt; &gt; manager.
&gt; &gt; &gt; 
&gt; &gt; &gt; ITP is more than just cookies, though. Besides stripping Referers and
&gt; &gt; &gt; overriding the cookie policy, it will also wipe localstorage and IndexedDB
&gt; &gt; &gt; after a certain number of days (one week?) when the domain is &quot;prevalent.&quot;
&gt; &gt; &gt; So WebKitCookieManager doesn&apos;t seem to be the right place either. I guess
&gt; &gt; &gt; WebKitWebsiteDataManager is probably best, but we could give it a different
&gt; &gt; &gt; name, e.g.
&gt; &gt; &gt; webkit_website_data_manager_set_intelligent_tracking_prevention_enabled().
&gt; &gt; &gt; And then just document that this function can enable cookie policy that is
&gt; &gt; &gt; more restrictive than that set by webkit_cookie_manager_set_accept_policy().
&gt; &gt; 
&gt; &gt; webkit_website_data_manager_set_intelligent_tracking_prevention_enabled()
&gt; &gt; sounds good to me.
&gt; 
&gt; Wow, this is a mouthful! If nobody is against it, I would prefer to use
&gt; “webkit_website_data_manager_set_itp_enabled()”—and that still remains
&gt; pretty long =)

I&apos;m fine with using itp in this case.

&gt; &gt; &gt; I would not expose [is,set,clear]PrevalentResource or setUseITPDatabase. We
&gt; &gt; &gt; can always expose more in the future if an application ever wants to use
&gt; &gt; &gt; them.
&gt; &gt; 
&gt; &gt; Those were just examples, there are a lot of public methods in
&gt; &gt; WebsitedataStore related to ITP and I have no idea what they are for or if
&gt; &gt; they are just there for testing.
&gt; &gt;  
&gt; &gt; &gt; &gt; &gt; Conclusion: *shrug*. Maybe we could keep the current name but document that
&gt; &gt; &gt; &gt; &gt; it has additional effects in addition to enabling statistics tracking? I
&gt; &gt; &gt; &gt; &gt; don&apos;t know, just something to think about.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; I would investigate the impact on cookie policy regardless. We might want to
&gt; &gt; &gt; &gt; &gt; use a g_warning() if the WebKitCookiePolicy is inconsistent with ITP?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I don&apos;t even know how to test it apart from running layout tests.
&gt; &gt; &gt; 
&gt; &gt; &gt; I could check with my bank&apos;s bill pay website... I don&apos;t use it because it
&gt; &gt; &gt; breaks with third-party cookies disabled. So if ITP is enabled and cookie
&gt; &gt; &gt; policy is set to always accept cookies, the always accept cookies should
&gt; &gt; &gt; effectively be overridden.
&gt; &gt; &gt; 
&gt; &gt; &gt; I also found https://github.com/speedarius/third-party-cookie-tester, but
&gt; &gt; &gt; that looks like some effort to get set up.
&gt; &gt; &gt; 
&gt; &gt; &gt; I wonder how we would expose this in Epiphany&apos;s preferences dialog.
&gt; &gt; &gt; Currently we have a simple tri-state policy: always accept, block third
&gt; &gt; &gt; party (default), never accept. I guess we could change it to a boolean
&gt; &gt; &gt; enable ITP or disable ITP setting. Probably Epiphany is not the right
&gt; &gt; &gt; browser to use if you&apos;re interested in disabling cookies entirely, right?
&gt; &gt; 
&gt; &gt; Shouldn&apos;t we just enable it unconditionally?
&gt; 
&gt; Do you mean in WebKit{GTK,WPE} or in Epiphany? I would have it enabled by
&gt; default on both. For WebKit, as long as ITP can be disabled using the API,
&gt; having it enabled by default sounds good to me—it&apos;s good to make defaults
&gt; lean towards the more secure or privacy-respecting settings, so developers
&gt; embedding a WebKitWebView in an application get the “best” settings without
&gt; needing additional work. Dunno if Epiphany can have the setting always-on,
&gt; but we could have a setting without checkbox in the preferences window and
&gt; try it out for a while before taking a final decision.

I meant epiphany, in WebKit it&apos;s probably better to keep it disabled by default to ensure backwards compatibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641813</commentid>
    <comment_count>19</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-04-15 08:42:35 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #18)
&gt; (In reply to Adrian Perez from comment #16)
&gt; &gt; (In reply to Carlos Garcia Campos from comment #14)
&gt; &gt; &gt; (In reply to Michael Catanzaro from comment #10)
&gt; &gt; &gt; &gt; (In reply to Carlos Garcia Campos from comment #9) 
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; &gt; […]
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; I wonder how we would expose this in Epiphany&apos;s preferences dialog.
&gt; &gt; &gt; &gt; Currently we have a simple tri-state policy: always accept, block third
&gt; &gt; &gt; &gt; party (default), never accept. I guess we could change it to a boolean
&gt; &gt; &gt; &gt; enable ITP or disable ITP setting. Probably Epiphany is not the right
&gt; &gt; &gt; &gt; browser to use if you&apos;re interested in disabling cookies entirely, right?
&gt; &gt; &gt; 
&gt; &gt; &gt; Shouldn&apos;t we just enable it unconditionally?
&gt; &gt; 
&gt; &gt; Do you mean in WebKit{GTK,WPE} or in Epiphany? I would have it enabled by
&gt; &gt; default on both. For WebKit, as long as ITP can be disabled using the API,
&gt; &gt; having it enabled by default sounds good to me—it&apos;s good to make defaults
&gt; &gt; lean towards the more secure or privacy-respecting settings, so developers
&gt; &gt; embedding a WebKitWebView in an application get the “best” settings without
&gt; &gt; needing additional work. Dunno if Epiphany can have the setting always-on,
&gt; &gt; but we could have a setting without checkbox in the preferences window and
&gt; &gt; try it out for a while before taking a final decision.
&gt; 
&gt; I meant epiphany, in WebKit it&apos;s probably better to keep it disabled by
&gt; default to ensure backwards compatibility.

Right, that&apos;s true, we should keep ITP disabled for API 4.0 (GTK3); but maybe
we can make it enabled by default on the next API break 😉️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641838</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-15 09:45:16 -0700</bug_when>
    <thetext>&gt; Those were just examples, there are a lot of public methods in
&gt; WebsitedataStore related to ITP and I have no idea what they are for or if
&gt; they are just there for testing.

Many of them are only intended for testing. Others might be useful for building an ITP debugger feature, but for now I think it&apos;s safest to not expose any of them.
&gt; Shouldn&apos;t we just enable it unconditionally?

Well we could, but it probably makes sense to allow users to disable it in case it breaks websites. That&apos;s why we have the cookie policy setting, after all. If users would complain about third-party cookie blocking breaking websites, they&apos;ll definitely complain about ITP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641845</commentid>
    <comment_count>21</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-04-15 09:58:17 -0700</bug_when>
    <thetext>I wouldn&apos;t enable it by default in WebKit ever. But we&apos;ll enable by default in Epiphany, of course, to match what Safari does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662617</commentid>
    <comment_count>22</comment_count>
      <attachid>401892</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-15 06:09:25 -0700</bug_when>
    <thetext>Created attachment 401892
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662618</commentid>
    <comment_count>23</comment_count>
      <attachid>401893</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-15 06:20:44 -0700</bug_when>
    <thetext>Created attachment 401893
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662620</commentid>
    <comment_count>24</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-15 07:04:30 -0700</bug_when>
    <thetext>I&apos;ve started to work on the ephy side using this new API (and the storage access permission).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663029</commentid>
    <comment_count>25</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-16 02:31:21 -0700</bug_when>
    <thetext>Committed r263085: &lt;https://trac.webkit.org/changeset/263085&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322837</attachid>
            <date>2017-10-05 07:37:49 -0700</date>
            <delta_ts>2020-04-13 07:04:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-gtk-itp-api.diff</filename>
            <type>text/plain</type>
            <size>34217</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNTJlYzNiZTZhOGQuLmUxMmYwY2I2ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM2IEBACisyMDE3LTEwLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gY29uZmlndXJlIGFuZCBlbmFi
bGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc5NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciBjb25z
dHJ1Y3Qgb25seSBwcm9wZXJ0eSB0byBzZXQgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgcGVyc2lz
dGVudCBzdGF0cyBhcmUKKyAgICAgICAgc3RvcmVkLCBhbmQgbWV0aG9kcyB0byBlbmFibGUgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzIGFuZCBxdWVyeSB3aGV0aGVyIGl0J3MgY3VycmVudGx5IGVu
YWJsZWQuIEFsc28gYWRkIGEgbmV3CisgICAgICAgIFdlYnNpdGUgZGF0YSB0eXBlIHRvIGJlIGFi
bGUgdG8gcmVtb3ZlIHRoZSBwZXJzaXN0ZW50IHN0YXRzIHVzaW5nIFdlYktpdFdlYnNpdGVEYXRh
TWFuYWdlciBleGlzdGluZyBBUEkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bkZvcldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6CisgICAgICAgICh3ZWJraXRXZWJDb250
ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJz
aXRlRGF0YS5jcHA6CisgICAgICAgIChyZWNvcmRDb250YWluc1N1cHBvcnRlZERhdGFUeXBlcyk6
CisgICAgICAgICh0b1dlYktpdFdlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0
V2Vic2l0ZURhdGFNYW5hZ2VyR2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2Vic2l0ZURh
dGFNYW5hZ2VyU2V0UHJvcGVydHkpOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsYXNz
X2luaXQpOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKToK
KyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9z
dGF0c19kaXJlY3RvcnkpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3Nl
dF9yZXNvdXJjZV9sb2FkX3N0YXRzX2VuYWJsZWQpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRzX2VuYWJsZWQpOgorICAgICAgICAo
dG9XZWJzaXRlRGF0YVR5cGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJzaXRlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdl
YnNpdGVEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyLmg6CisKIDIwMTctMTAtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gQWxsIHJlc291cmNlIGxvYWQgc3Rh
dGlzdGljcyB0ZXN0cyBhZGRlZCBpbiByMjEyMTgzIGNyYXNoIGluIEdUSyBib3RzLCB0aW1lb3V0
IGluIEdUSyBhbmQgV1BFIGJvdHMgc2luY2UgcjIxOTA0OQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA3MzAxMzQx
ZTAxMy4uZDU2MTYxMTZmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0zMTAsNiArMzEwLDcgQEAgc3RhdGlj
IGlubGluZSBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uRm9yV2UKICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7
CiAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbGNv
bmZpZ3VyYXJpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xjb25maWd1cmFyaW9uLm1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbGNvbmZpZ3VyYXJpb24ucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSgpOwogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCkBA
IC0zMzIsNiArMzMzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVk
KEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hl
X2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CiAgICAgICAgIGNv
bmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29yZTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkp
OwogICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYkNv
cmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5n
ZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRzX2RpcmVjdG9y
eShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIGlmICghcHJp
di0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgpKQogICAgICAgICBjb25maWd1cmF0aW9u
LnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCkpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURh
dGEuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURh
dGEuY3BwCmluZGV4IGJkN2Q0MTI3MDVjLi4xOTU0YTNjZDdlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhLmNwcApAQCAt
NzMsNiArNzMsNyBAQCBzdGF0aWMgYm9vbCByZWNvcmRDb250YWluc1N1cHBvcnRlZERhdGFUeXBl
cyhjb25zdCBXZWJzaXRlRGF0YVJlY29yZCYgcmVjb3JkKQogICAgICAgICBXZWJzaXRlRGF0YVR5
cGU6OkxvY2FsU3RvcmFnZSwKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpXZWJTUUxEYXRhYmFz
ZXMsCiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzLAorICAgICAg
ICBXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MsCiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YSwK
ICNlbmRpZgpAQCAtOTgsNiArOTksOCBAQCBzdGF0aWMgV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyB0
b1dlYktpdFdlYnNpdGVEYXRhVHlwZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZQogICAgICAg
ICByZXR1cm5WYWx1ZSB8PSBXRUJLSVRfV0VCU0lURV9EQVRBX1dFQlNRTF9EQVRBQkFTRVM7CiAg
ICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2Vz
KSkKICAgICAgICAgcmV0dXJuVmFsdWUgfD0gV0VCS0lUX1dFQlNJVEVfREFUQV9JTkRFWEVEREJf
REFUQUJBU0VTOworICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3MpKQorICAgICAgICByZXR1cm5WYWx1ZSB8PSBXRUJLSVRfV0VCU0lU
RV9EQVRBX1JFU09VUkNFX0xPQURfU1RBVFM7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YSkp
CiAgICAgICAgIHJldHVyblZhbHVlIHw9IFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAppbmRleCA3ODViZDcxNjIyNy4uMThkZmVmNDkxZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNp
dGVEYXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcApAQCAtODQsNiArODQsNyBAQCBlbnVtIHsKICAg
ICBQUk9QX0FQUExJQ0FUSU9OX0NBQ0hFX0RJUkVDVE9SWSwKICAgICBQUk9QX0lOREVYRUREQl9E
SVJFQ1RPUlksCiAgICAgUFJPUF9XRUJTUUxfRElSRUNUT1JZLAorICAgIFBST1BfUkVTT1VSQ0Vf
TE9BRF9TVEFUU19ESVJFQ1RPUlksCiAgICAgUFJPUF9JU19FUEhFTUVSQUwKIH07CiAKQEAgLTEw
MSw2ICsxMDIsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUgewog
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBHVW5p
cXVlUHRyPGNoYXI+IGluZGV4ZWREQkRpcmVjdG9yeTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHdl
YlNRTERpcmVjdG9yeTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlTG9hZFN0YXRzRGly
ZWN0b3J5OwogCiAgICAgR1JlZlB0cjxXZWJLaXRDb29raWVNYW5hZ2VyPiBjb29raWVNYW5hZ2Vy
OwogICAgIFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+IHByb2Nlc3NQb29sczsKQEAgLTEzNCw2ICsx
MzYsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9wZXJ0eShH
T2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgRwogICAgIGNhc2UgUFJPUF9XRUJTUUxfRElS
RUNUT1JZOgogICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShtYW5hZ2VyKSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9SRVNPVVJDRV9MT0FEX1NUQVRTX0RJUkVDVE9SWToKKyAgICAg
ICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X3Jlc291cmNlX2xvYWRfc3RhdHNfZGlyZWN0b3J5KG1hbmFnZXIpKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5h
Z2VyKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTY4LDYgKzE3Myw5IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYnNpdGVEYXRhTWFuYWdlclNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcElELCBjCiAgICAgY2FzZSBQUk9QX1dFQlNRTF9ESVJFQ1RPUlk6CiAgICAgICAgIG1hbmFn
ZXItPnByaXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1JFU09VUkNFX0xPQURfU1RBVFNfRElS
RUNUT1JZOgorICAgICAgICBtYW5hZ2VyLT5wcml2LT5yZXNvdXJjZUxvYWRTdGF0c0RpcmVjdG9y
eS5yZXNldChnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBQUk9QX0lTX0VQSEVNRVJBTDoKICAgICAgICAgaWYgKGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
dmFsdWUpKQogICAgICAgICAgICAgbWFuYWdlci0+cHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVudERhdGFTdG9yZSgpOwpAQCAt
MTg5LDYgKzE5Nyw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckNvbnN0
cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgICAgIHByaXYtPmluZGV4ZWREQkRpcmVj
dG9yeS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKHByaXYtPmJhc2VEYXRhRGlyZWN0b3J5LmdldCgp
LCAiZGF0YWJhc2VzIiwgImluZGV4ZWRkYiIsIG51bGxwdHIpKTsKICAgICAgICAgaWYgKCFwcml2
LT53ZWJTUUxEaXJlY3RvcnkpCiAgICAgICAgICAgICBwcml2LT53ZWJTUUxEaXJlY3RvcnkucmVz
ZXQoZ19idWlsZF9maWxlbmFtZShwcml2LT5iYXNlRGF0YURpcmVjdG9yeS5nZXQoKSwgImRhdGFi
YXNlcyIsIG51bGxwdHIpKTsKKyAgICAgICAgaWYgKCFwcml2LT5yZXNvdXJjZUxvYWRTdGF0c0Rp
cmVjdG9yeSkKKyAgICAgICAgICAgIHByaXYtPnJlc291cmNlTG9hZFN0YXRzRGlyZWN0b3J5LnJl
c2V0KGdfYnVpbGRfZmlsZW5hbWUocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0KCksICJyZXNv
dXJjZWxvYWRzdGF0cyIsIG51bGxwdHIpKTsKICAgICB9CiAKICAgICBpZiAocHJpdi0+YmFzZUNh
Y2hlRGlyZWN0b3J5KSB7CkBAIC0zMjgsNiArMzM4LDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGFzc19pbml0KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlckNs
YXNzCiAgICAgICAgICAgICBudWxscHRyLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R1BhcmFt
RmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSkp
OwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOnJlc291cmNlLWxv
YWQtc3RhdHMtZGlyZWN0b3J5OgorICAgICAqCisgICAgICogVGhlIGRpcmVjdG9yeSB3aGVyZSBy
ZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mgd2lsbCBiZSBzdG9yZWQuCisgICAgICoKKyAgICAgKiBT
aW5jZTogMi4yMAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
CisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9SRVNPVVJDRV9MT0FEX1NUQVRT
X0RJUkVDVE9SWSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKKyAgICAgICAgICAgICJy
ZXNvdXJjZS1sb2FkLXN0YXRzLWRpcmVjdG9yeSIsCisgICAgICAgICAgICBfKCJSZXNvdXJjZSBM
b2FkIFN0YXRzIERpcmVjb3J5IiksCisgICAgICAgICAgICBfKCJUaGUgZGlyZWN0b3J5IHdoZXJl
IHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyB3aWxsIGJlIHN0b3JlZCIpLAorICAgICAgICAgICAg
bnVsbHB0ciwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFS
QU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKwogICAgIC8qKgogICAg
ICAqIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjppcy1lcGhlbWVyYWw6CiAgICAgICoKQEAgLTM3
MCw2ICszOTcsOCBAQCBBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbgogICAgICAgICAgICAgQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogV2Vi
Q29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LmdldCgpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSA9ICFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwogICAgICAgICAgICAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdl
YkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGly
ZWN0b3J5LmdldCgpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5ID0gIXByaXYtPnJlc291cmNlTG9hZFN0YXRzRGlyZWN0b3J5ID8KKyAgICAg
ICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocHJpdi0+cmVzb3VyY2VMb2FkU3RhdHNEaXJlY3RvcnkuZ2V0KCkpOwogICAgICAgICBjb25m
aWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgICAgIHByaXYtPndl
YnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICB9CkBAIC02MDYsNiArNjM1LDI5IEBAIGNvbnN0IGdj
aGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkoV2Vi
S2l0V2Vic2l0ZURhdGFNCiAgICAgcmV0dXJuIHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKTsK
IH0KIAorLyoqCisgKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xv
YWRfc3RhdHNfZGlyZWN0b3J5OgorICogQG1hbmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRhTWFu
YWdlcgorICoKKyAqIEdldCB0aGUgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcjpyZXNvdXJjZS1s
b2FkLXN0YXRzLWRpcmVjdG9yeSBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAoYWxsb3ctbm9u
ZSk6IHRoZSBkaXJlY3Rvcnkgd2hlcmUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIGFyZSBzdG9y
ZWQgb3IgJU5VTEwgaWYgQG1hbmFnZXIgaXMgZXBoZW1lcmFsLgorICoKKyAqIFNpbmNlOiAyLjIw
CisgKi8KK2NvbnN0IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291
cmNlX2xvYWRfc3RhdHNfZGlyZWN0b3J5KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdl
cikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01B
TkFHRVIobWFuYWdlciksIG51bGxwdHIpOworCisgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
UHJpdmF0ZSogcHJpdiA9IG1hbmFnZXItPnByaXY7CisgICAgaWYgKHByaXYtPndlYnNpdGVEYXRh
U3RvcmUgJiYgIXByaXYtPndlYnNpdGVEYXRhU3RvcmUtPmlzUGVyc2lzdGVudCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICghcHJpdi0+cmVzb3VyY2VMb2FkU3RhdHNEaXJl
Y3RvcnkpCisgICAgICAgIHByaXYtPnJlc291cmNlTG9hZFN0YXRzRGlyZWN0b3J5LnJlc2V0KGdf
c3RyZHVwKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgcmV0dXJuIHByaXYtPnJlc291cmNl
TG9hZFN0YXRzRGlyZWN0b3J5LmdldCgpOworfQorCiAvKioKICAqIHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfY29va2llX21hbmFnZXI6CiAgKiBAbWFuYWdlcjogYSAjV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyCkBAIC02MjYsNiArNjc4LDM5IEBAIFdlYktpdENvb2tpZU1hbmFnZXIq
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfY29va2llX21hbmFnZXIoV2ViS2l0V2Vi
c2l0CiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPmNvb2tpZU1hbmFnZXIuZ2V0KCk7CiB9CiAK
Ky8qKgorICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9yZXNvdXJjZV9sb2FkX3N0
YXRzX2VuYWJsZWQ6CisgKiBAbWFuYWdlcjogYSAjV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyCisg
KiBAZW5hYmxlZDogdmFsdWUgdG8gc2V0CisgKgorICogRW5hYmxlIGNvbGxlY3Rpb24gb2YgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzIGZvciBpbnRlbGxpZ2VudCB0cmFja2luZyBwcmV2ZW50aW9u
LgorICoKKyAqIFNpbmNlOiAyLjIwCisgKi8KK3ZvaWQgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX3NldF9yZXNvdXJjZV9sb2FkX3N0YXRzX2VuYWJsZWQoV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyKiBtYW5hZ2VyLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKKworICAgIG1hbmFnZXIt
PnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGVuYWJsZWQpOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
cmVzb3VyY2VfbG9hZF9zdGF0c19lbmFibGVkOgorICogQG1hbmFnZXI6IGEgI1dlYktpdFdlYnNp
dGVEYXRhTWFuYWdlcgorICoKKyAqIEdldCB3aGV0aGVyIGNvbGxlY3Rpb24gb2YgcmVzb3VyY2Ug
bG9hZCBzdGF0aXN0aWNzIGZvciBpbnRlbGxpZ2VudCB0cmFja2luZyBwcmV2ZW50aW9uIGlzIGVu
YWJsZWQgb3Igbm90LgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIGNvbGxlY3Rpb24gb2YgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzIGlzIGVuYWJsZWQsIG9yICVGQUxTRSBvdGhlcndpc2UuCisg
KgorICogU2luY2U6IDIuMjAKKyAqLworZ2Jvb2xlYW4gd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRzX2VuYWJsZWQoV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyKiBtYW5hZ2VyKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJT
SVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgRkFMU0UpOworCisgICAgcmV0dXJuIG1hbmFnZXIt
PnByaXYtPndlYnNpdGVEYXRhU3RvcmUtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7
Cit9CisKIHN0YXRpYyBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlw
ZXMoV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyB0eXBlcykKIHsKICAgICBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiByZXR1cm5WYWx1ZTsKQEAgLTY0Myw2ICs3MjgsOCBAQCBzdGF0aWMgT3B0aW9u
U2V0PFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGVzKFdlYktpdFdlYnNpdGVEYXRh
VHlwZXMgdHlwZQogICAgICAgICByZXR1cm5WYWx1ZSB8PSBXZWJzaXRlRGF0YVR5cGU6OldlYlNR
TERhdGFiYXNlczsKICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0lOREVYRURE
Ql9EQVRBQkFTRVMpCiAgICAgICAgIHJldHVyblZhbHVlIHw9IFdlYnNpdGVEYXRhVHlwZTo6SW5k
ZXhlZERCRGF0YWJhc2VzOworICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RBVEFfUkVT
T1VSQ0VfTE9BRF9TVEFUUykKKyAgICAgICAgcmV0dXJuVmFsdWUgfD0gV2Vic2l0ZURhdGFUeXBl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEpCiAgICAg
ICAgIHJldHVyblZhbHVlIHw9IFdlYnNpdGVEYXRhVHlwZTo6UGx1Z0luRGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaAppbmRl
eCAwNjUwNDdmZTE3Yy4uNGE0NTI2Yjg1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgdHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhIFdlYktpdFdlYnNpdGVEYXRhOwogICogQFdF
QktJVF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUzogSW5kZXhlZERCIGRhdGFiYXNl
cy4KICAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX1BMVUdJTl9EQVRBOiBQbHVnaW5zIGRhdGEuCiAg
KiBAV0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTOiBDb29raWVzLgorICogQFdFQktJVF9XRUJT
SVRFX0RBVEFfUkVTT1VSQ0VfTE9BRF9TVEFUUzogUmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzLiBT
aW5jZSAyLjIwLgogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMOiBBbGwgdHlwZXMuCiAgKgog
ICogRW51bSB2YWx1ZXMgd2l0aCBmbGFncyByZXByZXNlbnRpbmcgdHlwZXMgb2YgV2Vic2l0ZSBk
YXRhLgpAQCAtNjAsNyArNjEsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJTSVRF
X0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUyAgICAgICA9IDEgPDwgNiwKICAgICBXRUJLSVRfV0VC
U0lURV9EQVRBX1BMVUdJTl9EQVRBICAgICAgICAgICAgICAgPSAxIDw8IDcsCiAgICAgV0VCS0lU
X1dFQlNJVEVfREFUQV9DT09LSUVTICAgICAgICAgICAgICAgICAgID0gMSA8PCA4LAotICAgIFdF
QktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAgICAgICAgICAgICAgICAgICA9ICgxIDw8IDkpIC0g
MQorICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfUkVTT1VSQ0VfTE9BRF9TVEFUUyAgICAgICA9IDEg
PDwgOSwKKyAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0FMTCAgICAgICAgICAgICAgICAgICAgICAg
PSAoMSA8PCAxMCkgLSAxCiB9IFdlYktpdFdlYnNpdGVEYXRhVHlwZXM7CiAKIFdFQktJVF9BUEkg
R1R5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCmluZGV4IGNjNjJhZDNkNDI1Li42ZGE4YzgwYWRiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYnNpdGVEYXRhTWFuYWdlci5oCkBAIC05MCw5ICs5MCwxOSBAQCB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgKFdl
YktpdFdlYgogV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CiAKK1dFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgor
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRzX2RpcmVj
dG9yeSAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOworCiBXRUJL
SVRfQVBJIFdlYktpdENvb2tpZU1hbmFnZXIgKgogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2dldF9jb29raWVfbWFuYWdlciAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIgKm1hbmFnZXIpOwogCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9zZXRfcmVzb3VyY2VfbG9hZF9zdGF0c19lbmFibGVkICAgICAgICAgICAo
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVh
biAgICAgICAgICAgICAgICAgIGVuYWJsZWQpOworCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3RhdHNfZW5hYmxlZCAg
ICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CisKIFdFQktJVF9B
UEkgdm9pZAogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgICAgdHlwZXMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAt
c2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCA1ZGI3OGM5NzlmOC4uNDAxOTJmYTdjY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3Rr
LTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTMwMCw3ICsxMzAwLDEwIEBAIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkKIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJl
Y3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9y
eQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5Cit3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3RhdHNfZGlyZWN0b3J5
CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyCit3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X3Jlc291cmNlX2xvYWRfc3RhdHNfZW5hYmxlZAord2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRzX2VuYWJsZWQK
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRjaAogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2ZldGNoX2ZpbmlzaAogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3JlbW92ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRl
RGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0
YS5oCmluZGV4IDNhNDYyYWFmZjliLi5kODc3Y2NiZGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGEuaApAQCAtNDQsNiArNDQs
NyBAQCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURhdGEgV2ViS2l0V2Vic2l0ZURhdGE7
CiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9JTkRFWEVEREJfREFUQUJBU0VTOiBJbmRleGVkREIg
ZGF0YWJhc2VzLgogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEE6IFBsdWdpbnMg
ZGF0YS4KICAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVM6IENvb2tpZXMuCisgKiBAV0VC
S0lUX1dFQlNJVEVfREFUQV9SRVNPVVJDRV9MT0FEX1NUQVRTOiBSZXNvdXJjZSBsb2FkIHN0YXRp
c3RpY3MuIFNpbmNlIDIuMjAuCiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9BTEw6IEFsbCB0eXBl
cy4KICAqCiAgKiBFbnVtIHZhbHVlcyB3aXRoIGZsYWdzIHJlcHJlc2VudGluZyB0eXBlcyBvZiBX
ZWJzaXRlIGRhdGEuCkBAIC02MCw3ICs2MSw4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lU
X1dFQlNJVEVfREFUQV9JTkRFWEVEREJfREFUQUJBU0VTICAgICAgID0gMSA8PCA2LAogICAgIFdF
QktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEgICAgICAgICAgICAgICA9IDEgPDwgNywKICAg
ICBXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVMgICAgICAgICAgICAgICAgICAgPSAxIDw8IDgs
Ci0gICAgV0VCS0lUX1dFQlNJVEVfREFUQV9BTEwgICAgICAgICAgICAgICAgICAgICAgID0gKDEg
PDwgOSkgLSAxCisgICAgV0VCS0lUX1dFQlNJVEVfREFUQV9SRVNPVVJDRV9MT0FEX1NUQVRTICAg
ICAgID0gMSA8PCA5LAorICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAgICAgICAgICAg
ICAgICAgICA9ICgxIDw8IDEwKSAtIDEKIH0gV2ViS2l0V2Vic2l0ZURhdGFUeXBlczsKIAogV0VC
S0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKaW5kZXggMTY1NWQ1MzZhM2QuLjE5Njlk
MDgzNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFdlYnNpdGVEYXRhTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKQEAgLTkwLDkgKzkwLDE5IEBAIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeSAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2ViCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAo
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKIAorV0VCS0lUX0FQSSBjb25zdCBn
Y2hhciAqCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3Rh
dHNfZGlyZWN0b3J5ICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7
CisKIFdFQktJVF9BUEkgV2ViS2l0Q29va2llTWFuYWdlciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9yZXNvdXJjZV9sb2FkX3N0YXRzX2VuYWJsZWQgICAg
ICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdib29sZWFuICAgICAgICAgICAgICAgICAgZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xl
YW4KK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9zdGF0c19l
bmFibGVkICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKKwog
V0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2ggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAq
bWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyAgICB0eXBlcywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNzdk
YmEyZWVjNi4uMGIyNDgwYTYxNzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0xMC0wNSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQg
QVBJIHRvIGNvbmZpZ3VyZSBhbmQgZW5hYmxlIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3OTQzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgY29tbWFu
ZCBsaW5lIG9wdGlvbiB0byBlbmFibGUgaW50ZWxsaWdlbnQgdHJhY2tpbmcgcHJldmVudGlvbiB0
byBNaW5pQnJvd3NlciBhbmQgdGVzdHMgY2FzZXMgdG8gY2hlY2sgdGhlCisgICAgICAgIG5ldyBB
UEkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAobWFpbik6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0
YS5jcHA6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICh0ZXN0V2Vic2l0ZURh
dGFDb25maWd1cmF0aW9uKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0YUVwaGVtZXJhbCk6Cisg
ICAgICAgICh0ZXN0V2Vic2l0ZURhdGFSZXNvdXJjZUxvYWRTdGF0cyk6CisgICAgICAgIChiZWZv
cmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWlu
Lmg6CisgICAgICAgIChUZXN0OjpUZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHA6CisgICAgICAgIChkaXJlY3RvcnlDaGFuZ2VkQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OndhaXRVbnRpbEZpbGVFeGlzdHMpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0Lmg6CisKIDIw
MTctMTAtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1dQRV0gQWxsIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyB0ZXN0cyBhZGRl
ZCBpbiByMjEyMTgzIGNyYXNoIGluIEdUSyBib3RzLCB0aW1lb3V0IGluIEdUSyBhbmQgV1BFIGJv
dHMgc2luY2UgcjIxOTA0OQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4u
YyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKaW5kZXggZWMwOTM0YmMyZDkuLjg4MzI0
OTA5ZGE3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTQ0LDYgKzQ0LDcgQEAgc3RhdGljIGNoYXIg
Kmdlb21ldHJ5Owogc3RhdGljIGdib29sZWFuIHByaXZhdGVNb2RlOwogc3RhdGljIGdib29sZWFu
IGF1dG9tYXRpb25Nb2RlOwogc3RhdGljIGdib29sZWFuIGZ1bGxTY3JlZW47CitzdGF0aWMgZ2Jv
b2xlYW4gZW5hYmxlSW50ZWxsaWdlbnRUcmFja2luZ1ByZXZlbnRpb247CiAKIHR5cGVkZWYgZW51
bSB7CiAgICAgTUlOSV9CUk9XU0VSX0VSUk9SX0lOVkFMSURfQUJPVVRfUEFUSApAQCAtMTAwLDYg
KzEwMSw3IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10g
PQogICAgIHsgImZ1bGwtc2NyZWVuIiwgJ2YnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmZ1bGxT
Y3JlZW4sICJTZXQgdGhlIHdpbmRvdyB0byBmdWxsLXNjcmVlbiBtb2RlIiwgTlVMTCB9LAogICAg
IHsgInByaXZhdGUiLCAncCcsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpdmF0ZU1vZGUsICJS
dW4gaW4gcHJpdmF0ZSBicm93c2luZyBtb2RlIiwgTlVMTCB9LAogICAgIHsgImF1dG9tYXRpb24i
LCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmF1dG9tYXRpb25Nb2RlLCAiUnVuIGluIGF1dG9t
YXRpb24gbW9kZSIsIE5VTEwgfSwKKyAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05f
QVJHX05PTkUsICZlbmFibGVJbnRlbGxpZ2VudFRyYWNraW5nUHJldmVudGlvbiwgIkVuYWJsZSBp
bnRlbGxpZ2VudCB0cmFja2luZyBwcmV2ZW50aW9uIiwgTlVMTCB9LAogICAgIHsgR19PUFRJT05f
UkVNQUlOSU5HLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVu
dHMsIDAsICJbVVJM4oCmXSIgfSwKICAgICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAgfQogfTsKQEAg
LTUwNSw2ICs1MDcsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIC8v
IEVuYWJsZSB0aGUgZmF2aWNvbiBkYXRhYmFzZSwgYnkgc3BlY2lmeWluZyB0aGUgZGVmYXVsdCBk
aXJlY3RvcnkuCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2Rp
cmVjdG9yeSh3ZWJDb250ZXh0LCBOVUxMKTsKIAorICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ciAqbWFuYWdlciA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIo
d2ViQ29udGV4dCk7CisgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9yZXNvdXJj
ZV9sb2FkX3N0YXRzX2VuYWJsZWQobWFuYWdlciwgZW5hYmxlSW50ZWxsaWdlbnRUcmFja2luZ1By
ZXZlbnRpb24pOworCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUo
d2ViQ29udGV4dCwgQlJPV1NFUl9BQk9VVF9TQ0hFTUUsIChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
Q2FsbGJhY2spYWJvdXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2ssIHdlYkNvbnRleHQsIE5VTEwp
OwogCiAgICAgV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyICp1c2VyQ29udGVudE1hbmFnZXIgPSB3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfbmV3KCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCmluZGV4IDg4
N2RmY2ZhYWNmLi4zN2FkOWY2ZDlmNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKQEAgLTIxLDYgKzIxLDcg
QEAKIAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVz
dC5oIgorI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAKIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVy
KiBrU2VydmVyOwogCkBAIC0zMSw3ICszMiwxMiBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFj
ayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvZW1w
dHkiKSkgeworICAgIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiLyIpKSB7CisgICAgICAgIGNvbnN0
IGNoYXIqIGh0bWwgPSAiPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iOworICAgICAgICBzb3Vw
X21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllf
U1RBVElDLCBodG1sLCBzdHJsZW4oaHRtbCkpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9j
b21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKKyAgICAgICAgc291cF9tZXNzYWdlX3Nl
dF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOworICAgIH0gZWxzZSBpZiAoZ19zdHJf
ZXF1YWwocGF0aCwgIi9lbXB0eSIpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGVtcHR5SFRNTCA9
ICI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiI7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFk
ZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUiLCAiZm9v
PWJhcjsgTWF4LUFnZT02MCIpOwogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVz
c2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBlbXB0eUhUTUwsIHN0cmxl
bihlbXB0eUhUTUwpKTsKQEAgLTE2MSw5ICsxNjcsMTIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNp
dGVEYXRhQ29uZmlndXJhdGlvbihXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAgICAgZ19hc3NlcnRfY21wc3RyKGRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSwgPT0sIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkodGVzdC0+bV9t
YW5hZ2VyKSk7CiAgICAgZ19hc3NlcnQoZ19maWxlX3Rlc3QoZGlza0NhY2hlRGlyZWN0b3J5Lmdl
dCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKIAorICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3Vy
Y2VMb2FkU3RhdHNEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShUZXN0OjpkYXRhRGlyZWN0b3J5
KCksICJyZXNvdXJjZS1sb2FkLXN0YXRzIiwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0
cihyZXNvdXJjZUxvYWRTdGF0c0RpcmVjdG9yeS5nZXQoKSwgPT0sIHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9zdGF0c19kaXJlY3RvcnkodGVzdC0+bV9tYW5h
Z2VyKSk7CisKICAgICAvLyBDbGVhciBhbGwgcGVyc2lzdGVudCBjYWNoZXMsIHNpbmNlIHRoZSBk
YXRhIGRpciBpcyBjb21tb24gdG8gYWxsIHRlc3QgY2FzZXMuCiAgICAgc3RhdGljIGNvbnN0IFdl
YktpdFdlYnNpdGVEYXRhVHlwZXMgcGVyc2lzdGVudENhY2hlcyA9IHN0YXRpY19jYXN0PFdlYktp
dFdlYnNpdGVEYXRhVHlwZXM+KFdFQktJVF9XRUJTSVRFX0RBVEFfRElTS19DQUNIRSB8IFdFQktJ
VF9XRUJTSVRFX0RBVEFfTE9DQUxfU1RPUkFHRQotICAgICAgICB8IFdFQktJVF9XRUJTSVRFX0RB
VEFfV0VCU1FMX0RBVEFCQVNFUyB8IFdFQktJVF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFC
QVNFUyB8IFdFQktJVF9XRUJTSVRFX0RBVEFfT0ZGTElORV9BUFBMSUNBVElPTl9DQUNIRSk7Cisg
ICAgICAgIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9XRUJTUUxfREFUQUJBU0VTIHwgV0VCS0lUX1dF
QlNJVEVfREFUQV9JTkRFWEVEREJfREFUQUJBU0VTIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZM
SU5FX0FQUExJQ0FUSU9OX0NBQ0hFIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9SRVNPVVJDRV9MT0FE
X1NUQVRTKTsKICAgICB0ZXN0LT5jbGVhcihwZXJzaXN0ZW50Q2FjaGVzLCAwKTsKICAgICBnX2Fz
c2VydCghdGVzdC0+ZmV0Y2gocGVyc2lzdGVudENhY2hlcykpOwogCkBAIC0xOTMsNiArMjAyLDkg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbihXZWJzaXRlRGF0YVRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2ViU1FMRGlyZWN0b3J5LnJlc2V0KGdfYnVp
bGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAiZGF0YWJhc2VzIiwgbnVsbHB0cikp
OwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dl
YnNxbF9kaXJlY3RvcnkoYmFzZURhdGFNYW5hZ2VyLmdldCgpKSwgPT0sIHdlYlNRTERpcmVjdG9y
eS5nZXQoKSk7CiAKKyAgICByZXNvdXJjZUxvYWRTdGF0c0RpcmVjdG9yeS5yZXNldChnX2J1aWxk
X2ZpbGVuYW1lKFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgInJlc291cmNlbG9hZHN0YXRzIiwgbnVs
bHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X3Jlc291cmNlX2xvYWRfc3RhdHNfZGlyZWN0b3J5KGJhc2VEYXRhTWFuYWdlci5nZXQoKSks
ID09LCByZXNvdXJjZUxvYWRTdGF0c0RpcmVjdG9yeS5nZXQoKSk7CisKICAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9y
eShiYXNlRGF0YU1hbmFnZXIuZ2V0KCkpLCA9PSwgVGVzdDo6ZGF0YURpcmVjdG9yeSgpKTsKIAog
ICAgIC8vIEFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHByb3ZpZGVkIHRha2VzIHByZWNlZGVu
Y2Ugb3ZlciBiYXNlIGRpcnMuCkBAIC0yMDUsNiArMjE3LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YnNpdGVEYXRhQ29uZmlndXJhdGlvbihXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgLy8gVGhlIHJlc3VsdCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgcHJldmlvdXMgbWFu
YWdlci4KICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShiYXNlRGF0YU1hbmFnZXIuZ2V0KCkpLCA9PSwgbG9j
YWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KGJhc2VEYXRhTWFuYWdlci5n
ZXQoKSksID09LCB3ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcHN0cih3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3RhdHNfZGlyZWN0
b3J5KGJhc2VEYXRhTWFuYWdlci5nZXQoKSksID09LCByZXNvdXJjZUxvYWRTdGF0c0RpcmVjdG9y
eS5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoYmFzZURhdGFNYW5hZ2VyLmdldCgpKSwgPT0sIFRl
c3Q6OmRhdGFEaXJlY3RvcnkoKSk7CiB9CiAKQEAgLTIyNywxMSArMjQwLDE0IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJzaXRlRGF0YUVwaGVtZXJhbChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKICAgICBnX2Fzc2VydCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZs
aW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CiAgICAgZ19h
c3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9y
eShtYW5hZ2VyLmdldCgpKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnQo
IXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9zdGF0c19kaXJl
Y3RvcnkobWFuYWdlci5nZXQoKSkpOwogCiAgICAgLy8gQ29uZmlndXJhdGlvbiBpcyBpZ25vcmVk
IHdoZW4gaXMtZXBoZW1lcmFsIGlzIHVzZWQuCiAgICAgbWFuYWdlciA9IGFkb3B0R1JlZihXRUJL
SVRfV0VCU0lURV9EQVRBX01BTkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQlNJVEVf
REFUQV9NQU5BR0VSLCAiYmFzZS1kYXRhLWRpcmVjdG9yeSIsIFRlc3Q6OmRhdGFEaXJlY3Rvcnko
KSwgImlzLWVwaGVtZXJhbCIsIFRSVUUsIG51bGxwdHIpKSk7CiAgICAgZ19hc3NlcnQod2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyLmdldCgpKSk7CiAgICAg
Z19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9kYXRhX2RpcmVj
dG9yeShtYW5hZ2VyLmdldCgpKSk7CisgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3Nl
dF9yZXNvdXJjZV9sb2FkX3N0YXRzX2VuYWJsZWQobWFuYWdlci5nZXQoKSwgVFJVRSk7CisgICAg
Z19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0
YXRzX2VuYWJsZWQobWFuYWdlci5nZXQoKSkpOwogCiAgICAgLy8gTm9uIHBlcnNpc3RlbnQgZGF0
YSBjYW4gYmUgcXVlcmllZCBpbiBhbiBlcGhlbWVyYWwgbWFuYWdlci4KICAgICBHUmVmUHRyPFdl
YktpdFdlYkNvbnRleHQ+IHdlYkNvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0X3dlYl9jb250ZXh0
X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKG1hbmFnZXIuZ2V0KCkpKTsKQEAgLTI0NCw2
ICsyNjAsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFFcGhlbWVyYWwoV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHdl
YlZpZXcuZ2V0KCksIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9lbXB0eSIpLmRhdGEoKSk7CiAg
ICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOwogCisgICAgR1VuaXF1ZVB0cjxj
aGFyPiByZXNvdXJjZUxvYWRTdGF0c0RpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmRh
dGFEaXJlY3RvcnkoKSwgInJlc291cmNlLWxvYWQtc3RhdHMiLCBudWxscHRyKSk7CisgICAgZ19h
c3NlcnQoIWdfZmlsZV90ZXN0KHJlc291cmNlTG9hZFN0YXRzRGlyZWN0b3J5LmdldCgpLCBHX0ZJ
TEVfVEVTVF9JU19ESVIpKTsKKwogICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRj
aChtYW5hZ2VyLmdldCgpLCBXRUJLSVRfV0VCU0lURV9EQVRBX01FTU9SWV9DQUNIRSwgbnVsbHB0
ciwgW10oR09iamVjdCogbWFuYWdlciwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVz
ZXJEYXRhKSB7CiAgICAgICAgIGF1dG8qIHRlc3QgPSBzdGF0aWNfY2FzdDxXZWJWaWV3VGVzdCo+
KHVzZXJEYXRhKTsKICAgICAgICAgR0xpc3QqIGRhdGFMaXN0ID0gd2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2ZldGNoX2ZpbmlzaChXRUJLSVRfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdl
ciksIHJlc3VsdCwgbnVsbHB0cik7CkBAIC0yNTgsNiArMjc3LDggQEAgc3RhdGljIHZvaWQgdGVz
dFdlYnNpdGVEYXRhRXBoZW1lcmFsKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKICAgICB9LCB0ZXN0KTsKICAgICBnX21haW5f
bG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CisKKyAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfc2V0X3Jlc291cmNlX2xvYWRfc3RhdHNfZW5hYmxlZChtYW5hZ2VyLmdldCgpLCBGQUxT
RSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUNhY2hlKFdlYnNpdGVEYXRhVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTUxNyw2ICs1MzgsNDQgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYnNpdGVEYXRhQ29va2llcyhXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFdlYnNp
dGVEYXRhUmVzb3VyY2VMb2FkU3RhdHMoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQoreworICAgIGNvbnN0IGNoYXIqIHJlc291cmNlTG9hZFN0YXRzRGlyZWN0b3J5ID0gd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRzX2RpcmVjdG9y
eSh0ZXN0LT5tX21hbmFnZXIpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VMb2FkU3Rh
dHNMb2dGaWxlKGdfYnVpbGRfZmlsZW5hbWUocmVzb3VyY2VMb2FkU3RhdHNEaXJlY3RvcnksICJm
dWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3QiLCBudWxscHRyKSk7CisKKyAg
ICAvLyBEZWxldGUgYW55IHByZXZpb3VzIGRhdGEuCisgICAgZ191bmxpbmsocmVzb3VyY2VMb2Fk
U3RhdHNMb2dGaWxlLmdldCgpKTsKKyAgICBnX3JtZGlyKHJlc291cmNlTG9hZFN0YXRzRGlyZWN0
b3J5KTsKKworICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jl
c291cmNlX2xvYWRfc3RhdHNfZW5hYmxlZCh0ZXN0LT5tX21hbmFnZXIpKTsKKyAgICB0ZXN0LT5s
b2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOworICAgIHRlc3QtPndh
aXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X3NldF9yZXNvdXJjZV9sb2FkX3N0YXRzX2VuYWJsZWQodGVzdC0+bV9tYW5hZ2VyLCBUUlVFKTsK
KyAgICBnX2Fzc2VydCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xv
YWRfc3RhdHNfZW5hYmxlZCh0ZXN0LT5tX21hbmFnZXIpKTsKKyAgICBnX2Fzc2VydCghZ19maWxl
X3Rlc3QocmVzb3VyY2VMb2FkU3RhdHNEaXJlY3RvcnksIEdfRklMRV9URVNUX0lTX0RJUikpOwor
ICAgIGdfYXNzZXJ0KCFnX2ZpbGVfdGVzdChyZXNvdXJjZUxvYWRTdGF0c0xvZ0ZpbGUuZ2V0KCks
IEdfRklMRV9URVNUX0lTX1JFR1VMQVIpKTsKKworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+
Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CisKKyAgICB0ZXN0LT53YWl0VW50aWxGaWxlRXhpc3RzKHJlc291cmNlTG9hZFN0YXRz
TG9nRmlsZS5nZXQoKSk7CisKKyAgICBnX2Fzc2VydChnX2ZpbGVfdGVzdChyZXNvdXJjZUxvYWRT
dGF0c0RpcmVjdG9yeSwgR19GSUxFX1RFU1RfSVNfRElSKSk7CisgICAgZ19hc3NlcnQoZ19maWxl
X3Rlc3QocmVzb3VyY2VMb2FkU3RhdHNMb2dGaWxlLmdldCgpLCBHX0ZJTEVfVEVTVF9JU19SRUdV
TEFSKSk7CisKKyAgICAvLyBDbGVhciBhbGwuCisgICAgc3RhdGljIGNvbnN0IFdlYktpdFdlYnNp
dGVEYXRhVHlwZXMgY2FjaGVBbmRSZXNvdXJjZUxvYWRTdGF0cyA9IHN0YXRpY19jYXN0PFdlYktp
dFdlYnNpdGVEYXRhVHlwZXM+KFdFQktJVF9XRUJTSVRFX0RBVEFfUkVTT1VSQ0VfTE9BRF9TVEFU
UyB8IFdFQktJVF9XRUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hFIHwgV0VCS0lUX1dFQlNJVEVfREFU
QV9ESVNLX0NBQ0hFKTsKKyAgICB0ZXN0LT5jbGVhcihjYWNoZUFuZFJlc291cmNlTG9hZFN0YXRz
LCAwKTsKKyAgICBnX2Fzc2VydChnX2ZpbGVfdGVzdChyZXNvdXJjZUxvYWRTdGF0c0RpcmVjdG9y
eSwgR19GSUxFX1RFU1RfSVNfRElSKSk7CisgICAgZ19hc3NlcnQoIWdfZmlsZV90ZXN0KHJlc291
cmNlTG9hZFN0YXRzTG9nRmlsZS5nZXQoKSwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUikpOworCisg
ICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9yZXNvdXJjZV9sb2FkX3N0YXRzX2Vu
YWJsZWQodGVzdC0+bV9tYW5hZ2VyLCBGQUxTRSk7CisgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9zdGF0c19lbmFibGVkKHRlc3QtPm1f
bWFuYWdlcikpOworCisgICAgZ19ybWRpcihyZXNvdXJjZUxvYWRTdGF0c0RpcmVjdG9yeSk7Cit9
CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2
ZXIoKTsKQEAgLTUyOSw2ICs1ODgsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgV2Vic2l0ZURh
dGFUZXN0OjphZGQoIldlYktpdFdlYnNpdGVEYXRhIiwgImRhdGFiYXNlcyIsIHRlc3RXZWJzaXRl
RGF0YURhdGFiYXNlcyk7CiAgICAgV2Vic2l0ZURhdGFUZXN0OjphZGQoIldlYktpdFdlYnNpdGVE
YXRhIiwgImFwcGNhY2hlIiwgdGVzdFdlYnNpdGVEYXRhQXBwY2FjaGUpOwogICAgIFdlYnNpdGVE
YXRhVGVzdDo6YWRkKCJXZWJLaXRXZWJzaXRlRGF0YSIsICJjb29raWVzIiwgdGVzdFdlYnNpdGVE
YXRhQ29va2llcyk7CisgICAgV2Vic2l0ZURhdGFUZXN0OjphZGQoIldlYktpdFdlYnNpdGVEYXRh
IiwgInJlc291cmNlLWxvYWQtc3RhdHMiLCB0ZXN0V2Vic2l0ZURhdGFSZXNvdXJjZUxvYWRTdGF0
cyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1Rlc3RNYWluLmgKaW5kZXggNzE2NDNjNWQxZWQuLjAxYzNiZDYyNDlmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKQEAgLTEx
MSwxMCArMTExLDExIEBAIHB1YmxpYzoKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXNrQ2Fj
aGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShkYXRhRGlyZWN0b3J5KCksICJkaXNrLWNhY2hl
IiwgbnVsbHB0cikpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShkYXRhRGlyZWN0b3J5KCksICJhcHBjYWNoZSIsIG51
bGxwdHIpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB3ZWJTUUxEaXJlY3RvcnkoZ19idWls
ZF9maWxlbmFtZShkYXRhRGlyZWN0b3J5KCksICJ3ZWJzcWwiLCBudWxscHRyKSk7CisgICAgICAg
IEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VMb2FkU3RhdHNEaXJlY3RvcnkoZ19idWlsZF9maWxl
bmFtZShkYXRhRGlyZWN0b3J5KCksICJyZXNvdXJjZS1sb2FkLXN0YXRzIiwgbnVsbHB0cikpOwog
ICAgICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5h
Z2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXcoCiAgICAgICAg
ICAgICAibG9jYWwtc3RvcmFnZS1kaXJlY3RvcnkiLCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0
KCksICJpbmRleGVkZGItZGlyZWN0b3J5IiwgaW5kZXhlZERCRGlyZWN0b3J5LmdldCgpLAogICAg
ICAgICAgICAgImRpc2stY2FjaGUtZGlyZWN0b3J5IiwgZGlza0NhY2hlRGlyZWN0b3J5LmdldCgp
LCAib2ZmbGluZS1hcHBsaWNhdGlvbi1jYWNoZS1kaXJlY3RvcnkiLCBhcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5LmdldCgpLAotICAgICAgICAgICAgIndlYnNxbC1kaXJlY3RvcnkiLCB3ZWJTUUxE
aXJlY3RvcnkuZ2V0KCksIG51bGxwdHIpKTsKKyAgICAgICAgICAgICJ3ZWJzcWwtZGlyZWN0b3J5
Iiwgd2ViU1FMRGlyZWN0b3J5LmdldCgpLCAicmVzb3VyY2UtbG9hZC1zdGF0cy1kaXJlY3Rvcnki
LCByZXNvdXJjZUxvYWRTdGF0c0RpcmVjdG9yeS5nZXQoKSwgbnVsbHB0cikpOwogCiAgICAgICAg
IG1fd2ViQ29udGV4dCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dpdGhfd2Vi
c2l0ZV9kYXRhX21hbmFnZXIod2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSk7CiAgICAgICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV93ZWJDb250ZXh0LmdldCgpLCAiaW5pdGlhbGl6ZS13ZWItZXh0ZW5z
aW9ucyIsIEdfQ0FMTEJBQ0soaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNDYWxsYmFjayksIHRoaXMp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmll
d1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rl
c3QuY3BwCmluZGV4IGM4YmNkOGZiOTA0Li41Zjk4OGNmZTQ5MyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMjExLDYg
KzIxMSwyMyBAQCB2b2lkIFdlYlZpZXdUZXN0Ojp3YWl0VW50aWxUaXRsZUNoYW5nZWQoKQogICAg
IHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKDApOwogfQogCitzdGF0aWMgdm9pZCBkaXJlY3RvcnlD
aGFuZ2VkQ2FsbGJhY2soR0ZpbGVNb25pdG9yKiwgR0ZpbGUqIGZpbGUsIEdGaWxlKiwgR0ZpbGVN
b25pdG9yRXZlbnQgZXZlbnQsIFdlYlZpZXdUZXN0KiB0ZXN0KQoreworICAgIGlmIChldmVudCA9
PSBHX0ZJTEVfTU9OSVRPUl9FVkVOVF9DUkVBVEVEICYmIGdfZmlsZV9lcXVhbChmaWxlLCB0ZXN0
LT5tX21vbml0b3JlZEZpbGUuZ2V0KCkpKQorICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsK
K30KKwordm9pZCBXZWJWaWV3VGVzdDo6d2FpdFVudGlsRmlsZUV4aXN0cyhjb25zdCBjaGFyKiBm
aWxlbmFtZSkKK3sKKyAgICBtX21vbml0b3JlZEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19m
b3JfcGF0aChmaWxlbmFtZSkpOworICAgIEdSZWZQdHI8R0ZpbGU+IGRpcmVjdG9yeSA9IGFkb3B0
R1JlZihnX2ZpbGVfZ2V0X3BhcmVudChtX21vbml0b3JlZEZpbGUuZ2V0KCkpKTsKKyAgICBHUmVm
UHRyPEdGaWxlTW9uaXRvcj4gbW9uaXRvciA9IGFkb3B0R1JlZihnX2ZpbGVfbW9uaXRvcl9kaXJl
Y3RvcnkoZGlyZWN0b3J5LmdldCgpLCBHX0ZJTEVfTU9OSVRPUl9OT05FLCBudWxscHRyLCBudWxs
cHRyKSk7CisgICAgZ19hc3NlcnQobW9uaXRvci5nZXQoKSk7CisgICAgZ19zaWduYWxfY29ubmVj
dChtb25pdG9yLmdldCgpLCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soZGlyZWN0b3J5Q2hhbmdlZENh
bGxiYWNrKSwgdGhpcyk7CisgICAgaWYgKCFnX2ZpbGVfcXVlcnlfZXhpc3RzKG1fbW9uaXRvcmVk
RmlsZS5nZXQoKSwgbnVsbHB0cikpCisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29w
KTsKK30KKwogdm9pZCBXZWJWaWV3VGVzdDo6c2VsZWN0QWxsKCkKIHsKICAgICB3ZWJraXRfd2Vi
X3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQobV93ZWJWaWV3LCAiU2VsZWN0QWxsIik7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVz
dC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApp
bmRleCAzMjZhNGFiZDNkMC4uZTczMjlmOGU5NDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICB2b2lkIHdhaXRVbnRp
bFRpdGxlQ2hhbmdlZFRvKGNvbnN0IGNoYXIqIGV4cGVjdGVkVGl0bGUpOwogICAgIHZvaWQgd2Fp
dFVudGlsVGl0bGVDaGFuZ2VkKCk7CisgICAgdm9pZCB3YWl0VW50aWxGaWxlRXhpc3RzKGNvbnN0
IGNoYXIqKTsKICAgICB2b2lkIHJlc2l6ZVZpZXcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAg
ICB2b2lkIGhpZGVWaWV3KCk7CiAgICAgdm9pZCBzZWxlY3RBbGwoKTsKQEAgLTEwMCw2ICsxMDEs
NyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG1fcmVzb3VyY2VEYXRhU2l6ZSB7IDAgfTsKICAgICBj
YWlyb19zdXJmYWNlX3QqIG1fc3VyZmFjZSB7IG51bGxwdHIgfTsKICAgICBib29sIG1fZXhwZWN0
ZWRXZWJQcm9jZXNzQ3Jhc2ggeyBmYWxzZSB9OworICAgIEdSZWZQdHI8R0ZpbGU+IG1fbW9uaXRv
cmVkRmlsZTsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBHdGtXaWRnZXQqIG1fcGFyZW50V2lu
ZG93IHsgbnVsbHB0ciB9Owo=
</data>
<flag name="review"
          id="342662"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396270</attachid>
            <date>2020-04-13 07:04:58 -0700</date>
            <delta_ts>2020-06-15 06:09:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-itp-api.diff</filename>
            <type>text/plain</type>
            <size>37759</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYzI4ZDA3Zjc0N2QxLi4xMjY4NjU5NTlkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMjAtMDQtMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIEFQSSB0byBjb25maWd1cmUgYW5kIGVu
YWJsZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Nzk0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVE
YXRhLmNwcDoKKyAgICAgICAgKHJlY29yZENvbnRhaW5zU3VwcG9ydGVkRGF0YVR5cGVzKToKKyAg
ICAgICAgKHRvV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRXZWJz
aXRlRGF0YU1hbmFnZXJHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1h
bmFnZXJTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJDb25z
dHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3NfaW5p
dCk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUpOgorICAg
ICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRp
c3RpY3NfZGlyZWN0b3J5KToKKyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9z
ZXRfcmVzb3VyY2VfbG9hZF9zdGF0aXN0aWNzX2VuYWJsZWQpOgorICAgICAgICAod2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3NfZW5hYmxlZCk6
CisgICAgICAgICh0b1dlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYnNpdGVEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLWRvY3Muc2dtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRXZWJzaXRlRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktp
dFdlYnNpdGVEYXRhTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mv
d3BlLTEuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93
cGUtZG9jcy5zZ21sOgorCiAyMDIwLTA0LTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggc29tZSBzdHJhbmdlIHVzZXMgb2Ygc3RhcnQvZW5kT2ZEb2N1bWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGEuY3BwCmluZGV4IGRkOGZjZGY5OWZlYS4uMGEyY2Y1ZTkzZTJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGEu
Y3BwCkBAIC03OCw3ICs3OCw4IEBAIHN0YXRpYyBib29sIHJlY29yZENvbnRhaW5zU3VwcG9ydGVk
RGF0YVR5cGVzKGNvbnN0IFdlYnNpdGVEYXRhUmVjb3JkJiByZWNvcmQpCiAgICAgICAgIFdlYnNp
dGVEYXRhVHlwZTo6UGx1Z0luRGF0YSwKICNlbmRpZgogICAgICAgICBXZWJzaXRlRGF0YVR5cGU6
OkNvb2tpZXMsCi0gICAgICAgIFdlYnNpdGVEYXRhVHlwZTo6RGV2aWNlSWRIYXNoU2FsdAorICAg
ICAgICBXZWJzaXRlRGF0YVR5cGU6OkRldmljZUlkSGFzaFNhbHQsCisgICAgICAgIFdlYnNpdGVE
YXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcwogICAgIH0pOwogfQogCkBAIC0xMDksNiAr
MTEwLDggQEAgc3RhdGljIFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgdG9XZWJLaXRXZWJzaXRlRGF0
YVR5cGVzKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGUKICAgICAgICAgcmV0dXJuVmFsdWUgfD0g
V0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTOwogICAgIGlmICh0eXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRldmljZUlkSGFzaFNhbHQpKQogICAgICAgICByZXR1cm5WYWx1ZSB8PSBX
RUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQ7CisgICAgaWYgKHR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykpCisgICAgICAg
IHJldHVyblZhbHVlIHw9IFdFQktJVF9XRUJTSVRFX0RBVEFfUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YVR5cGVzPihyZXR1
cm5WYWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCmluZGV4IDk4OWM0MzM5ZmJj
Yi4uZTQwMGE5MjE5NWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKQEAgLTg2LDYgKzg2
LDcgQEAgZW51bSB7CiAgICAgUFJPUF9JTkRFWEVEREJfRElSRUNUT1JZLAogICAgIFBST1BfV0VC
U1FMX0RJUkVDVE9SWSwKICAgICBQUk9QX0hTVFNfQ0FDSEVfRElSRUNUT1JZLAorICAgIFBST1Bf
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTX0RJUkVDVE9SWSwKICAgICBQUk9QX0lTX0VQSEVNRVJB
TAogfTsKIApAQCAtMTA0LDYgKzEwNSw3IEBAIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyUHJpdmF0ZSB7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbmRleGVkREJEaXJlY3Rvcnk7CiAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiB3ZWJTUUxEaXJlY3Rvcnk7CiAgICAgR1VuaXF1ZVB0cjxjaGFy
PiBoc3RzQ2FjaGVEaXJlY3Rvcnk7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5OwogCiAgICAgR1JlZlB0cjxXZWJLaXRDb29raWVNYW5hZ2VyPiBj
b29raWVNYW5hZ2VyOwogICAgIFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+IHByb2Nlc3NQb29sczsK
QEAgLTE0Miw2ICsxNDQsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJH
ZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgRwogICAgIGNhc2UgUFJP
UF9IU1RTX0NBQ0hFX0RJUkVDVE9SWToKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVl
LCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KG1h
bmFnZXIpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1JFU09VUkNFX0xPQURfU1RB
VElTVElDU19ESVJFQ1RPUlk6CisgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3NfZGly
ZWN0b3J5KG1hbmFnZXIpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0lTX0VQSEVN
RVJBTDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTc5LDYgKzE4NCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlclNldFBy
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjCiAgICAgY2FzZSBQUk9QX0hT
VFNfQ0FDSEVfRElSRUNUT1JZOgogICAgICAgICBtYW5hZ2VyLT5wcml2LT5oc3RzQ2FjaGVEaXJl
Y3RvcnkucmVzZXQoZ192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9SRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1NfRElSRUNUT1JZOgorICAgICAg
ICBtYW5hZ2VyLT5wcml2LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LnJlc2V0KGdf
dmFsdWVfZHVwX3N0cmluZyh2YWx1ZSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1Bf
SVNfRVBIRU1FUkFMOgogICAgICAgICBpZiAoZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSkpCiAg
ICAgICAgICAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpjcmVhdGVOb25QZXJzaXN0ZW50KCk7CkBAIC0yMDAsNiArMjA4LDggQEAg
c3RhdGljIHZvaWQgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ29uc3RydWN0ZWQoR09iamVjdCog
b2JqZWN0KQogICAgICAgICAgICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0KGdfYnVp
bGRfZmlsZW5hbWUocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0KCksICJkYXRhYmFzZXMiLCAi
aW5kZXhlZGRiIiwgbnVsbHB0cikpOwogICAgICAgICBpZiAoIXByaXYtPndlYlNRTERpcmVjdG9y
eSkKICAgICAgICAgICAgIHByaXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChnX2J1aWxkX2ZpbGVu
YW1lKHByaXYtPmJhc2VEYXRhRGlyZWN0b3J5LmdldCgpLCAiZGF0YWJhc2VzIiwgbnVsbHB0cikp
OworICAgICAgICBpZiAoIXByaXYtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCisg
ICAgICAgICAgICBwcml2LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LnJlc2V0KGdf
YnVpbGRfZmlsZW5hbWUocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0KCksICJyZXNvdXJjZWxv
YWRzdGF0aXN0aWNzIiwgbnVsbHB0cikpOwogICAgIH0KIAogICAgIGlmIChwcml2LT5iYXNlQ2Fj
aGVEaXJlY3RvcnkpIHsKQEAgLTM2MCw2ICszNzAsMjMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2NsYXNzX2luaXQoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ2xh
c3MKICAgICAgICAgICAgIG51bGxwdHIsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1G
bGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7
CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI6cmVzb3VyY2UtbG9h
ZC1zdGF0aXN0aWNzLWRpcmVjdG9yeToKKyAgICAgKgorICAgICAqIFRoZSBkaXJlY3Rvcnkgd2hl
cmUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIHdpbGwgYmUgc3RvcmVkLgorICAgICAqCisgICAg
ICogU2luY2U6IDIuMzAKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTX0RJUkVDVE9SWSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKKyAgICAg
ICAgICAgICJyZXNvdXJjZS1sb2FkLXN0YXRpc3RpY3MtZGlyZWN0b3J5IiwKKyAgICAgICAgICAg
IF8oIlJlc291cmNlIExvYWQgU3RhdGlzdGljcyBEaXJlY29yeSIpLAorICAgICAgICAgICAgXygi
VGhlIGRpcmVjdG9yeSB3aGVyZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mgd2lsbCBiZSBzdG9y
ZWQiKSwKKyAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFy
YW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkp
KSk7CisKICAgICAvKioKICAgICAgKiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI6aXMtZXBoZW1l
cmFsOgogICAgICAqCkBAIC0zOTgsNiArNDI1LDggQEAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
JiB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGEK
ICAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkgOiBGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSkpOwogICAgICAgICBjb25maWd1cmF0
aW9uLT5zZXRIU1RTU3RvcmFnZURpcmVjdG9yeSghcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5ID8K
ICAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEhTVFNEaXJlY3Rv
cnkoKSA6IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJp
di0+aHN0c0NhY2hlRGlyZWN0b3J5LmdldCgpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoIXByaXYtPnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPworICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpKTsKICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiks
IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIH0KQEAgLTY1OSw2ICs2
ODgsMjkgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0
c19jYWNoZV9kaXJlY3RvcnkoV2ViS2l0V2Vic2l0ZUQKICAgICByZXR1cm4gcHJpdi0+aHN0c0Nh
Y2hlRGlyZWN0b3J5LmdldCgpOwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9zdGF0aXN0aWNzX2RpcmVjdG9yeToKKyAqIEBtYW5hZ2Vy
OiBhICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKKyAqCisgKiBHZXQgdGhlICNXZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXI6cmVzb3VyY2UtbG9hZC1zdGF0aXN0aWNzLWRpcmVjdG9yeSBwcm9wZXJ0
eS4KKyAqCisgKiBSZXR1cm5zOiAoYWxsb3ctbm9uZSk6IHRoZSBkaXJlY3Rvcnkgd2hlcmUgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzIGFyZSBzdG9yZWQgb3IgJU5VTEwgaWYgQG1hbmFnZXIgaXMg
ZXBoZW1lcmFsLgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK2NvbnN0IGdjaGFyKiB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3RhdGlzdGljc19kaXJlY3Rv
cnkoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgbnVsbHB0
cik7CisKKyAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJQcml2YXRlKiBwcml2ID0gbWFuYWdl
ci0+cHJpdjsKKyAgICBpZiAocHJpdi0+d2Vic2l0ZURhdGFTdG9yZSAmJiAhcHJpdi0+d2Vic2l0
ZURhdGFTdG9yZS0+aXNQZXJzaXN0ZW50KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgaWYgKCFwcml2LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQorICAgICAgICBw
cml2LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgcmV0dXJuIHByaXYtPnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkuZ2V0KCk7Cit9CisKIC8qKgogICogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9jb29raWVfbWFuYWdlcjoKICAqIEBtYW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRl
RGF0YU1hbmFnZXIKQEAgLTY3OSw2ICs3MzEsMzkgQEAgV2ViS2l0Q29va2llTWFuYWdlciogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVfbWFuYWdlcihXZWJLaXRXZWJzaXQK
ICAgICByZXR1cm4gbWFuYWdlci0+cHJpdi0+Y29va2llTWFuYWdlci5nZXQoKTsKIH0KIAorLyoq
CisgKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X3Jlc291cmNlX2xvYWRfc3RhdGlz
dGljc19lbmFibGVkOgorICogQG1hbmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgor
ICogQGVuYWJsZWQ6IHZhbHVlIHRvIHNldAorICoKKyAqIEVuYWJsZSBjb2xsZWN0aW9uIG9mIHJl
c291cmNlIGxvYWQgc3RhdGlzdGljcyBmb3IgaW50ZWxsaWdlbnQgdHJhY2tpbmcgcHJldmVudGlv
bi4KKyAqCisgKiBTaW5jZTogMi4zMAorICovCit2b2lkIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9zZXRfcmVzb3VyY2VfbG9hZF9zdGF0aXN0aWNzX2VuYWJsZWQoV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyKiBtYW5hZ2VyLCBnYm9vbGVhbiBlbmFibGVkKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKKworICAgIHdl
YmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShtYW5hZ2VyKS5zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3RhdGlzdGljc19lbmFibGVkOgorICog
QG1hbmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgorICoKKyAqIEdldCB3aGV0aGVy
IGNvbGxlY3Rpb24gb2YgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIGZvciBpbnRlbGxpZ2VudCB0
cmFja2luZyBwcmV2ZW50aW9uIGlzIGVuYWJsZWQgb3Igbm90LgorICoKKyAqIFJldHVybnM6ICVU
UlVFIGlmIGNvbGxlY3Rpb24gb2YgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIGlzIGVuYWJsZWQs
IG9yICVGQUxTRSBvdGhlcndpc2UuCisgKgorICogU2luY2U6IDIuMzAKKyAqLworZ2Jvb2xlYW4g
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3Nf
ZW5hYmxlZChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpLCBG
QUxTRSk7CisKKyAgICByZXR1cm4gd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3Jl
KG1hbmFnZXIpLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Cit9CisKIHN0YXRpYyBP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZXMoV2ViS2l0V2Vic2l0
ZURhdGFUeXBlcyB0eXBlcykKIHsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiByZXR1
cm5WYWx1ZTsKQEAgLTcwNiw2ICs3OTEsOCBAQCBzdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gdG9XZWJzaXRlRGF0YVR5cGVzKFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgdHlwZQogICAg
ICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpDb29raWVzKTsKICAgICBpZiAo
dHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQpCiAgICAgICAg
IHJldHVyblZhbHVlLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRldmljZUlkSGFzaFNhbHQpOworICAg
IGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RBVEFfUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQorICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKTsKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaAppbmRleCA5YzRk
ODE0NTg0ZjkuLjAyMTAwNTg4OWIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaApAQCAtNDYsNiArNDYsNyBAQCB0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURhdGEgV2ViS2l0V2Vic2l0ZURhdGE7CiAgKiBAV0VCS0lU
X1dFQlNJVEVfREFUQV9DT09LSUVTOiBDb29raWVzLgogICogQFdFQktJVF9XRUJTSVRFX0RBVEFf
REVWSUNFX0lEX0hBU0hfU0FMVDogSGFzaCBzYWx0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGRldmlj
ZSBpZHMgdXNlZCBieSB3ZWJwYWdlcy4gU2luY2UgMi4yNAogICogQFdFQktJVF9XRUJTSVRFX0RB
VEFfSFNUU19DQUNIRTogSFNUUyBjYWNoZS4gU2luY2UgMi4yNgorICogQFdFQktJVF9XRUJTSVRF
X0RBVEFfUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTOiBSZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mu
IFNpbmNlIDIuMzAuCiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9BTEw6IEFsbCB0eXBlcy4KICAq
CiAgKiBFbnVtIHZhbHVlcyB3aXRoIGZsYWdzIHJlcHJlc2VudGluZyB0eXBlcyBvZiBXZWJzaXRl
IGRhdGEuCkBAIC02NCw3ICs2NSw4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0VCS0lUX1dFQlNJ
VEVfREFUQV9DT09LSUVTICAgICAgICAgICAgICAgICAgID0gMSA8PCA4LAogICAgIFdFQktJVF9X
RUJTSVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVCAgICAgICA9IDEgPDwgOSwKICAgICBXRUJL
SVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUgICAgICAgICAgICAgICAgPSAxIDw8IDEwLAotICAg
IFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAgICAgICAgICAgICAgICAgICA9ICgxIDw8IDEx
KSAtIDEKKyAgICBXRUJLSVRfV0VCU0lURV9EQVRBX1JFU09VUkNFX0xPQURfU1RBVElTVElDUyAg
PSAxIDw8IDExLAorICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAgICAgICAgICAgICAg
ICAgICA9ICgxIDw8IDEyKSAtIDEKIH0gV2ViS2l0V2Vic2l0ZURhdGFUeXBlczsKIAogV0VCS0lU
X0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKaW5kZXggZDI0Y2QwYjdiODVmLi4zYzVlMDA5
ZThiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaApAQCAtOTMsOSArOTMsMTkgQEAgd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5ICAgICAgICAgICAgICAgICAg
ICAgIChXZWJLaXRXZWIKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgogd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgIChX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOwogCitXRUJLSVRfQVBJIGNvbnN0IGdj
aGFyICoKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9zdGF0
aXN0aWNzX2RpcmVjdG9yeSAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsK
KwogV0VCS0lUX0FQSSBXZWJLaXRDb29raWVNYW5hZ2VyICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfY29va2llX21hbmFnZXIgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKIAorV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X3Jlc291cmNlX2xvYWRfc3RhdGlzdGljc19lbmFibGVk
ICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2Jvb2xlYW4gICAgICAgICAgICAgICAgICBlbmFibGVkKTsKKworV0VCS0lUX0FQSSBnYm9vbGVh
bgord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3Rp
Y3NfZW5hYmxlZCAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOworCiBX
RUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRjaCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICpt
YW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJzaXRlRGF0YVR5cGVzICAgIHR5cGVzLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJn
dGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXggM2Q3Njk5MGZjODY5Li5kYmYzNzhj
OGRkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApAQCAtMTQzMSw3ICsxNDMx
LDEwIEBAIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlv
bl9jYWNoZV9kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhl
ZGRiX2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGly
ZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0
b3J5Cit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3RhdGlz
dGljc19kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfY29va2llX21h
bmFnZXIKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfcmVzb3VyY2VfbG9hZF9zdGF0
aXN0aWNzX2VuYWJsZWQKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVzb3VyY2Vf
bG9hZF9zdGF0aXN0aWNzX2VuYWJsZWQKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRj
aAogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoX2ZpbmlzaAogd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX3JlbW92ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCmluZGV4IGFiODRkMWY4ZjVk
MC4uODY5MmNjNTUxOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstZG9jcy5zZ21sCkBAIC0xNjMsNSArMTYzLDEwIEBA
CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2FwaS1pbmRleC0yLjI4LnhtbCI+PHhpOmZhbGxi
YWNrIC8+PC94aTppbmNsdWRlPgogICA8L2luZGV4PgogCisgIDxpbmRleCBpZD0iYXBpLWluZGV4
LTItMzAiIHJvbGU9IjIuMzAiPgorICAgIDx0aXRsZT5JbmRleCBvZiBuZXcgc3ltYm9scyBpbiAy
LjMwPC90aXRsZT4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LTIuMzAueG1s
Ij48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CisgIDwvaW5kZXg+CisKICAgPHhpOmluY2x1
ZGUgaHJlZj0ieG1sL2Fubm90YXRpb24tZ2xvc3NhcnkueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hp
OmluY2x1ZGU+CiA8L2Jvb2s+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdFdlYnNpdGVEYXRhLmgKaW5kZXggOTczYTU1MDU2MGZlLi42NWNiZjNkMWI1YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNp
dGVEYXRhLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYnNpdGVE
YXRhIFdlYktpdFdlYnNpdGVEYXRhOwogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfQ09PS0lFUzog
Q29va2llcy4KICAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQ6IEhh
c2ggc2FsdCB1c2VkIHRvIGdlbmVyYXRlIHRoZSBkZXZpY2UgaWRzIHVzZWQgYnkgd2VicGFnZXMu
IFNpbmNlIDIuMjQKICAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEU6IEhTVFMgY2Fj
aGUuIFNpbmNlIDIuMjYKKyAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX1JFU09VUkNFX0xPQURfU1RB
VElTVElDUzogUmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzLiBTaW5jZSAyLjMwLgogICogQFdFQktJ
VF9XRUJTSVRFX0RBVEFfQUxMOiBBbGwgdHlwZXMuCiAgKgogICogRW51bSB2YWx1ZXMgd2l0aCBm
bGFncyByZXByZXNlbnRpbmcgdHlwZXMgb2YgV2Vic2l0ZSBkYXRhLgpAQCAtNjQsNyArNjUsOCBA
QCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQ09PS0lFUyAgICAgICAg
ICAgICAgICAgICA9IDEgPDwgOCwKICAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9I
QVNIX1NBTFQgICAgICAgPSAxIDw8IDksCiAgICAgV0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NB
Q0hFICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKLSAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0FM
TCAgICAgICAgICAgICAgICAgICAgICAgPSAoMSA8PCAxMSkgLSAxCisgICAgV0VCS0lUX1dFQlNJ
VEVfREFUQV9SRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MgID0gMSA8PCAxMSwKKyAgICBXRUJLSVRf
V0VCU0lURV9EQVRBX0FMTCAgICAgICAgICAgICAgICAgICAgICAgPSAoMSA8PCAxMikgLSAxCiB9
IFdlYktpdFdlYnNpdGVEYXRhVHlwZXM7CiAKIFdFQktJVF9BUEkgR1R5cGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhTWFu
YWdlci5oCmluZGV4IGU5OTE1MzI4MjgwMS4uMGYzNDlhMTVjNTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGFNYW5h
Z2VyLmgKQEAgLTkzLDkgKzkzLDE5IEBAIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
d2Vic3FsX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2ViCiBXRUJLSVRf
QVBJIGNvbnN0IGdjaGFyICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19j
YWNoZV9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
ICptYW5hZ2VyKTsKIAorV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3RhdGlzdGljc19kaXJlY3RvcnkgICAgKFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CisKIFdFQktJVF9BUEkgV2ViS2l0Q29v
a2llTWFuYWdlciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5h
Z2VyICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFu
YWdlcik7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3Nl
dF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3NfZW5hYmxlZCAgICAgIChXZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAg
ICAgZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9zdGF0aXN0aWNzX2VuYWJsZWQgICAgICAoV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKKwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0V2Vic2l0ZURhdGFUeXBlcyAgICB0eXBlcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dAppbmRleCAw
YzJkYzY1MTVjNjYuLjAxZTBkMjM2NGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4dApAQCAtMTM2Nyw3
ICsxMzY3LDEwIEBAIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBs
aWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
aW5kZXhlZGRiX2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJz
cWxfZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVf
ZGlyZWN0b3J5Cit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRf
c3RhdGlzdGljc19kaXJlY3RvcnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfY29v
a2llX21hbmFnZXIKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfcmVzb3VyY2VfbG9h
ZF9zdGF0aXN0aWNzX2VuYWJsZWQKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVz
b3VyY2VfbG9hZF9zdGF0aXN0aWNzX2VuYWJsZWQKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9mZXRjaAogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoX2ZpbmlzaAogd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3JlbW92ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS1kb2NzLnNnbWwgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLWRvY3Muc2dtbAppbmRleCAyZWY4MDBmZmVkNGQuLjM5NWUy
MTE4M2Q2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2Nz
L3dwZS1kb2NzLnNnbWwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2Nz
L3dwZS1kb2NzLnNnbWwKQEAgLTEwMSw1ICsxMDEsMTAgQEAKICAgICA8eGk6aW5jbHVkZSBocmVm
PSJ4bWwvYXBpLWluZGV4LTIuMjgueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+CiAg
IDwvaW5kZXg+CiAKKyAgPGluZGV4IGlkPSJhcGktaW5kZXgtMi0zMCIgcm9sZT0iMi4zMCI+Cisg
ICAgPHRpdGxlPkluZGV4IG9mIG5ldyBzeW1ib2xzIGluIDIuMzA8L3RpdGxlPgorICAgIDx4aTpp
bmNsdWRlIGhyZWY9InhtbC9hcGktaW5kZXgtMi4zMC54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6
aW5jbHVkZT4KKyAgPC9pbmRleD4KKwogICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYW5ub3RhdGlv
bi1nbG9zc2FyeS54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KIDwvYm9vaz4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2YzNjMzJj
MmViM2MuLjVlMzY4N2FiNjNlMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTEzICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBB
UEkgdG8gY29uZmlndXJlIGFuZCBlbmFibGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc5NDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgLS1lbmFibGUt
aXRwIGNvbW1hbmQgbGluZSB2ZXJzaW9uIHRvIE1pbmlCcm93c2VyIGFuZCB1bml0IHRlc3RzIHRv
IGNoZWNrIHRoZSBuZXcgQVBJLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL21haW4uYzoK
KyAgICAgICAgKGdvdFdlYnNpdGVEYXRhQ2FsbGJhY2spOgorICAgICAgICAobWFpbik6CisgICAg
ICAgICogTWluaUJyb3dzZXIvd3BlL21haW4uY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHA6Cisg
ICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICh0ZXN0V2Vic2l0ZURhdGFDb25maWd1
cmF0aW9uKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0YUVwaGVtZXJhbCk6CisgICAgICAgICh0
ZXN0V2Vic2l0ZURhdGFSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKToKKyAgICAgICAgKGJlZm9yZUFs
bCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaDoK
KyAgICAgICAgKFRlc3Q6OlRlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAgKGRpcmVjdG9yeUNoYW5nZWRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6d2FpdFVudGlsRmlsZUNoYW5nZWQpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0Lmg6CisKIDIwMjAt
MDQtMTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
W21hY09TXSBbV0sxXSBUb3VjaCBCYXIgZmxhc2hlcyB3aGVuIHR5cGluZyBpbiBWaWV0bmFtZXNl
IGluIE1haWwKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCmluZGV4IDRjNTE0N2RjZDM4YS4uMTJhYjE5YmJiMzY5
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCisrKyBiL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTUzLDYgKzUzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIg
KmNvb2tpZXNGaWxlOwogc3RhdGljIGNvbnN0IGNoYXIgKmNvb2tpZXNQb2xpY3k7CiBzdGF0aWMg
Y29uc3QgY2hhciAqcHJveHk7CiBzdGF0aWMgZ2Jvb2xlYW4gZGFya01vZGU7CitzdGF0aWMgZ2Jv
b2xlYW4gZW5hYmxlSW50ZWxsaWdlbnRUcmFja2luZ1ByZXZlbnRpb247CiBzdGF0aWMgZ2Jvb2xl
YW4gcHJpbnRWZXJzaW9uOwogCiB0eXBlZGVmIGVudW0gewpAQCAtMTIwLDYgKzEyMSw3IEBAIHN0
YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10gPQogICAgIHsgImln
bm9yZS1ob3N0IiwgMCwgMCwgR19PUFRJT05fQVJHX1NUUklOR19BUlJBWSwgJmlnbm9yZUhvc3Rz
LCAiU2V0IHByb3h5IGlnbm9yZSBob3N0cyIsICJIT1NUUyIgfSwKICAgICB7ICJpZ25vcmUtdGxz
LWVycm9ycyIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaWdub3JlVExTRXJyb3JzLCAiSWdu
b3JlIFRMUyBlcnJvcnMiLCBOVUxMIH0sCiAgICAgeyAiY29udGVudC1maWx0ZXIiLCAwLCAwLCBH
X09QVElPTl9BUkdfRklMRU5BTUUsICZjb250ZW50RmlsdGVyLCAiSlNPTiB3aXRoIGNvbnRlbnQg
ZmlsdGVyaW5nIHJ1bGVzIiwgIkZJTEUiIH0sCisgICAgeyAiZW5hYmxlLWl0cCIsIDAsIDAsIEdf
T1BUSU9OX0FSR19OT05FLCAmZW5hYmxlSW50ZWxsaWdlbnRUcmFja2luZ1ByZXZlbnRpb24sICJF
bmFibGUgaW50ZWxsaWdlbnQgdHJhY2tpbmcgcHJldmVudGlvbiIsIE5VTEwgfSwKICAgICB7ICJ2
ZXJzaW9uIiwgJ3YnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaW50VmVyc2lvbiwgIlByaW50
IHRoZSBXZWJLaXRHVEsgdmVyc2lvbiIsIE5VTEwgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklO
RywgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCAwLCAi
W1VSTOKApl0iIH0sCiAgICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwIH0KQEAgLTQyMiw2ICs0MjQs
NyBAQCBzdGF0aWMgdm9pZCBnb3RXZWJzaXRlRGF0YUNhbGxiYWNrKFdlYktpdFdlYnNpdGVEYXRh
TWFuYWdlciAqbWFuYWdlciwgR0FzeW5jUmVzdQogICAgIGFib3V0RGF0YUZpbGxUYWJsZShyZXN1
bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIlBsdWdpbnMgRGF0YSIsIFdFQktJVF9XRUJTSVRF
X0RBVEFfUExVR0lOX0RBVEEsIE5VTEwsIHBhZ2VJRCk7CiAgICAgYWJvdXREYXRhRmlsbFRhYmxl
KHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiT2ZmbGluZSBXZWIgQXBwbGljYXRpb25z
IENhY2hlIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZMSU5FX0FQUExJQ0FUSU9OX0NBQ0hFLCB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVf
ZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwogICAgIGFib3V0RGF0YUZpbGxUYWJsZShyZXN1
bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIkhTVFMgQ2FjaGUiLCBXRUJLSVRfV0VCU0lURV9E
QVRBX0hTVFNfQ0FDSEUsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNo
ZV9kaXJlY3RvcnkobWFuYWdlciksIHBhZ2VJRCk7CisgICAgYWJvdXREYXRhRmlsbFRhYmxlKHJl
c3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIiwg
V0VCS0lUX1dFQlNJVEVfREFUQV9SRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MsIHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9zdGF0aXN0aWNzX2RpcmVjdG9yeSht
YW5hZ2VyKSwgcGFnZUlEKTsKIAogICAgIHJlc3VsdCA9IGdfc3RyaW5nX2FwcGVuZChyZXN1bHQs
ICI8L2JvZHk+PC9odG1sPiIpOwogICAgIGdzaXplIHN0cmVhbUxlbmd0aCA9IHJlc3VsdC0+bGVu
OwpAQCAtNTQyLDYgKzU0NSw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAg
ICAgfQogCiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyID0gKHByaXZhdGVN
b2RlIHx8IGF1dG9tYXRpb25Nb2RlKSA/IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXdf
ZXBoZW1lcmFsKCkgOiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KE5VTEwpOworICAg
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfcmVzb3VyY2VfbG9hZF9zdGF0aXN0aWNz
X2VuYWJsZWQobWFuYWdlciwgZW5hYmxlSW50ZWxsaWdlbnRUcmFja2luZ1ByZXZlbnRpb24pOwor
CiAgICAgV2ViS2l0V2ViQ29udGV4dCAqd2ViQ29udGV4dCA9IGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfQ09OVEVYVCwgIndlYnNpdGUtZGF0YS1tYW5hZ2VyIiwgbWFuYWdlciwgInByb2Nl
c3Mtc3dhcC1vbi1jcm9zcy1zaXRlLW5hdmlnYXRpb24tZW5hYmxlZCIsIFRSVUUsIE5VTEwpOwog
ICAgIGdfb2JqZWN0X3VucmVmKG1hbmFnZXIpOwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci93cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKaW5kZXgg
YThjY2NiNmMxZDU2Li42ODY1ZDEyOGEzNDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L3dwZS9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKQEAgLTQ4
LDYgKzQ4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNGaWxlOwogc3RhdGljIGNvbnN0
IGNoYXIqIGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciogcHJveHk7CiBjb25zdCBj
aGFyKiBiZ0NvbG9yOworc3RhdGljIGdib29sZWFuIGVuYWJsZUludGVsbGlnZW50VHJhY2tpbmdQ
cmV2ZW50aW9uOwogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIHN0YXRpYyBHSGFzaFRh
YmxlKiBvcGVuVmlld3M7CiAKQEAgLTYzLDYgKzY0LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25F
bnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiaWdub3JlLXRscy1lcnJvcnMiLCAw
LCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmlnbm9yZVRMU0Vycm9ycywgIklnbm9yZSBUTFMgZXJy
b3JzIiwgbnVsbHB0ciB9LAogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19PUFRJT05f
QVJHX0ZJTEVOQU1FLCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZpbHRlcmlu
ZyBydWxlcyIsICJGSUxFIiB9LAogICAgIHsgImJnLWNvbG9yIiwgMCwgMCwgR19PUFRJT05fQVJH
X1NUUklORywgJmJnQ29sb3IsICJXaW5kb3cgYmFja2dyb3VuZCBjb2xvci4gRGVmYXVsdDogd2hp
dGUiLCAiQ09MT1IiIH0sCisgICAgeyAiZW5hYmxlLWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FSR19O
T05FLCAmZW5hYmxlSW50ZWxsaWdlbnRUcmFja2luZ1ByZXZlbnRpb24sICJFbmFibGUgaW50ZWxs
aWdlbnQgdHJhY2tpbmcgcHJldmVudGlvbiIsIG51bGxwdHIgfSwKICAgICB7ICJ2ZXJzaW9uIiwg
J3YnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnByaW50VmVyc2lvbiwgIlByaW50IHRoZSBXUEUg
dmVyc2lvbiIsIG51bGxwdHIgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19P
UFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCBudWxscHRyLCAiW1VSTF0i
IH0sCiAgICAgeyBudWxscHRyLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciB9CkBAIC0yMTksNyArMjIxLDEwIEBAIGludCBtYWluKGludCBhcmdjLCBj
aGFyICphcmd2W10pCiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIGF1dG8qIHdlYkNv
bnRleHQgPSAocHJpdmF0ZU1vZGUgfHwgYXV0b21hdGlvbk1vZGUpID8gd2Via2l0X3dlYl9jb250
ZXh0X25ld19lcGhlbWVyYWwoKSA6IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpOwor
ICAgIGF1dG8qIG1hbmFnZXIgPSAocHJpdmF0ZU1vZGUgfHwgYXV0b21hdGlvbk1vZGUpID8gd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX25ld19lcGhlbWVyYWwoKSA6IHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9uZXcobnVsbHB0cik7CisgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX3NldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3NfZW5hYmxlZChtYW5hZ2VyLCBlbmFibGVJ
bnRlbGxpZ2VudFRyYWNraW5nUHJldmVudGlvbik7CisgICAgYXV0byogd2ViQ29udGV4dCA9IHdl
YmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdlcihtYW5hZ2VyKTsK
KyAgICBnX29iamVjdF91bnJlZihtYW5hZ2VyKTsKIAogICAgIGlmIChjb29raWVzUG9saWN5KSB7
CiAgICAgICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Nv
b2tpZV9tYW5hZ2VyKHdlYkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcAppbmRleCBkZWQ0YWE0ODcx
OTQuLjcwMDIxZmQzNzczZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKQEAgLTMzLDcgKzMzLDEyIEBAIHN0
YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2Uq
IG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
Z19zdHJfZXF1YWwocGF0aCwgIi9lbXB0eSIpKSB7CisgICAgaWYgKGdfc3RyX2VxdWFsKHBhdGgs
ICIvIikpIHsKKyAgICAgICAgY29uc3QgY2hhciogaHRtbCA9ICI8aHRtbD48Ym9keT48L2JvZHk+
PC9odG1sPiI7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNw
b25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGh0bWwsIHN0cmxlbihodG1sKSk7CisgICAg
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwor
ICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7
CisgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2VtcHR5IikpIHsKICAgICAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGVtcHR5SFRNTCA9ICI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1s
PiI7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9u
c2VfaGVhZGVycywgIlNldC1Db29raWUiLCAiZm9vPWJhcjsgTWF4LUFnZT02MCIpOwogICAgICAg
ICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMs
ICJTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5IiwgIm1heC1hZ2U9MzYwMCIpOwpAQCAtMTY4LDEw
ICsxNzMsMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbihXZWJz
aXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3RyKGhz
dHNDYWNoZURpcmVjdG9yeS5nZXQoKSwgPT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7CiAgICAgZ19hc3NlcnRf
dHJ1ZShnX2ZpbGVfdGVzdChoc3RzQ2FjaGVEaXJlY3RvcnkuZ2V0KCksIEdfRklMRV9URVNUX0lT
X0RJUikpOwogCisgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAicmVzb3VyY2Ut
bG9hZC1zdGF0aXN0aWNzIiwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X2NtcHN0cihyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmdldCgpLCA9PSwgd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3NfZGlyZWN0b3J5KHRlc3QtPm1fbWFu
YWdlcikpOworCiAgICAgLy8gQ2xlYXIgYWxsIHBlcnNpc3RlbnQgY2FjaGVzLCBzaW5jZSB0aGUg
ZGF0YSBkaXIgaXMgY29tbW9uIHRvIGFsbCB0ZXN0IGNhc2VzLiBOb3RlOiBub3QgY2xlYW5pbmcg
dGhlIEhTVFMgY2FjaGUgaGVyZSBhcyBpdHMgZGF0YQogICAgIC8vIGlzIG5lZWRlZCBmb3IgdGhl
IEhTVFMgdGVzdHMsIHdoZXJlIGRhdGEgY2xlYW5pbmcgd2lsbCBiZSB0ZXN0ZWQuCiAgICAgc3Rh
dGljIGNvbnN0IFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgcGVyc2lzdGVudENhY2hlcyA9IHN0YXRp
Y19jYXN0PFdlYktpdFdlYnNpdGVEYXRhVHlwZXM+KFdFQktJVF9XRUJTSVRFX0RBVEFfRElTS19D
QUNIRSB8IFdFQktJVF9XRUJTSVRFX0RBVEFfTE9DQUxfU1RPUkFHRQotICAgICAgICB8IFdFQktJ
VF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUyB8IFdFQktJVF9XRUJTSVRFX0RBVEFf
T0ZGTElORV9BUFBMSUNBVElPTl9DQUNIRSB8IFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lE
X0hBU0hfU0FMVCk7CisgICAgICAgIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9JTkRFWEVEREJfREFU
QUJBU0VTIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZMSU5FX0FQUExJQ0FUSU9OX0NBQ0hFIHwg
V0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUIHwgV0VCS0lUX1dFQlNJVEVf
REFUQV9SRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpOwogICAgIHRlc3QtPmNsZWFyKHBlcnNpc3Rl
bnRDYWNoZXMsIDApOwogICAgIGdfYXNzZXJ0X251bGwodGVzdC0+ZmV0Y2gocGVyc2lzdGVudENh
Y2hlcykpOwogCkBAIC0xOTgsNiArMjA2LDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRh
Q29uZmlndXJhdGlvbihXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmRh
dGFEaXJlY3RvcnkoKSwgImFwcGxpY2F0aW9ucyIsIG51bGxwdHIpKTsKICAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9u
X2NhY2hlX2RpcmVjdG9yeShiYXNlRGF0YU1hbmFnZXIuZ2V0KCkpLCA9PSwgYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeS5nZXQoKSk7CiAKKyAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5LnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAicmVzb3Vy
Y2Vsb2Fkc3RhdGlzdGljcyIsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3NfZGlyZWN0
b3J5KGJhc2VEYXRhTWFuYWdlci5nZXQoKSksID09LCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LmdldCgpKTsKKwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KGJhc2VEYXRhTWFuYWdlci5nZXQoKSks
ID09LCBUZXN0OjpkYXRhRGlyZWN0b3J5KCkpOwogCiAgICAgLy8gQW55IHNwZWNpZmljIGNvbmZp
Z3VyYXRpb24gcHJvdmlkZWQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGJhc2UgZGlycy4KQEAgLTIw
OSw2ICsyMjAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDb25maWd1cmF0aW9uKFdl
YnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIo
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hl
X2RpcmVjdG9yeShiYXNlRGF0YU1hbmFnZXIuZ2V0KCkpLCA9PSwgYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeS5nZXQoKSk7CiAgICAgLy8gVGhlIHJlc3VsdCBzaG91bGQgYmUgdGhlIHNhbWUgYXMg
cHJldmlvdXMgbWFuYWdlci4KICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShiYXNlRGF0YU1hbmFnZXIuZ2V0
KCkpLCA9PSwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3Rp
Y3NfZGlyZWN0b3J5KGJhc2VEYXRhTWFuYWdlci5nZXQoKSksID09LCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5LmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShiYXNlRGF0YU1hbmFnZXIu
Z2V0KCkpLCA9PSwgVGVzdDo6ZGF0YURpcmVjdG9yeSgpKTsKIH0KIApAQCAtMjMxLDEyICsyNDMs
MTYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFsKFdlYlZpZXdUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShtYW5hZ2Vy
LmdldCgpKSk7CiAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkobWFuYWdlci5nZXQoKSkpOwogICAgIGdfYXNzZXJ0X251
bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeSht
YW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3RhdGlzdGljc19kaXJlY3RvcnkobWFuYWdlci5nZXQo
KSkpOwogCiAgICAgLy8gQ29uZmlndXJhdGlvbiBpcyBpZ25vcmVkIHdoZW4gaXMtZXBoZW1lcmFs
IGlzIHVzZWQuCiAgICAgbWFuYWdlciA9IGFkb3B0R1JlZihXRUJLSVRfV0VCU0lURV9EQVRBX01B
TkFHRVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQlNJVEVfREFUQV9NQU5BR0VSLCAiYmFz
ZS1kYXRhLWRpcmVjdG9yeSIsIFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgImlzLWVwaGVtZXJhbCIs
IFRSVUUsIG51bGxwdHIpKSk7CiAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIuZ2V0KCkpKTsKICAgICBnX2Fzc2VydF9udWxs
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9kYXRhX2RpcmVjdG9yeShtYW5h
Z2VyLmdldCgpKSk7CiAKKyAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X3Jlc291
cmNlX2xvYWRfc3RhdGlzdGljc19lbmFibGVkKG1hbmFnZXIuZ2V0KCksIFRSVUUpOworICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9zdGF0
aXN0aWNzX2VuYWJsZWQobWFuYWdlci5nZXQoKSkpOworCiAgICAgLy8gTm9uIHBlcnNpc3RlbnQg
ZGF0YSBjYW4gYmUgcXVlcmllZCBpbiBhbiBlcGhlbWVyYWwgbWFuYWdlci4KICAgICBHUmVmUHRy
PFdlYktpdFdlYkNvbnRleHQ+IHdlYkNvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0X3dlYl9jb250
ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKG1hbmFnZXIuZ2V0KCkpKTsKICAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwod2ViQ29udGV4dC5n
ZXQoKSkpOwpAQCAtMjQ4LDYgKzI2NCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUVw
aGVtZXJhbChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF91cmkod2ViVmlldy5nZXQoKSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2Vt
cHR5IikuZGF0YSgpKTsKICAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CiAK
KyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoZ19i
dWlsZF9maWxlbmFtZShUZXN0OjpkYXRhRGlyZWN0b3J5KCksICJyZXNvdXJjZS1sb2FkLXN0YXRp
c3RpY3MiLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnQoIWdfZmlsZV90ZXN0KHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkuZ2V0KCksIEdfRklMRV9URVNUX0lTX0RJUikpOworCiAgICAg
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoKG1hbmFnZXIuZ2V0KCksIFdFQktJVF9X
RUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hFLCBudWxscHRyLCBbXShHT2JqZWN0KiBtYW5hZ2VyLCBH
QXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgYXV0byog
dGVzdCA9IHN0YXRpY19jYXN0PFdlYlZpZXdUZXN0Kj4odXNlckRhdGEpOwogICAgICAgICBHTGlz
dCogZGF0YUxpc3QgPSB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2hfZmluaXNoKFdF
QktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgcmVzdWx0LCBudWxscHRyKTsKQEAg
LTI2Miw2ICsyODEsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFFcGhlbWVyYWwoV2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9v
cCgpOwogICAgIH0sIHRlc3QpOwogICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29w
KTsKKworICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfcmVzb3VyY2VfbG9hZF9z
dGF0aXN0aWNzX2VuYWJsZWQobWFuYWdlci5nZXQoKSwgRkFMU0UpOwogfQogCiBzdGF0aWMgdm9p
ZCB0ZXN0V2Vic2l0ZURhdGFDYWNoZShXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCkBAIC02MTYsNiArNjM3LDQzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YURldmlj
ZUlkSGFzaFNhbHQoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgd2Vi
a2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBlbmFibGVkKTsK
IH0KIAorc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhX
ZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgY29uc3QgY2hhciog
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9zdGF0aXN0aWNzX2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFn
ZXIpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ0ZpbGUo
Z19idWlsZF9maWxlbmFtZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCAiZnVsbF9i
cm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0IiwgbnVsbHB0cikpOworCisgICAgLy8g
RGVsZXRlIGFueSBwcmV2aW91cyBkYXRhLgorICAgIGdfdW5saW5rKHJlc291cmNlTG9hZFN0YXRp
c3RpY3NMb2dGaWxlLmdldCgpKTsKKyAgICBnX3JtZGlyKHJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpOworCisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3NfZW5hYmxlZCh0ZXN0LT5tX21hbmFnZXIp
KTsKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkp
OworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX3NldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3NfZW5hYmxlZCh0ZXN0
LT5tX21hbmFnZXIsIFRSVUUpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3NfZW5hYmxlZCh0ZXN0LT5tX21h
bmFnZXIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZShnX2ZpbGVfdGVzdChyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5LCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZShnX2ZpbGVfdGVzdChyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nRmlsZS5nZXQoKSwgR19GSUxF
X1RFU1RfSVNfUkVHVUxBUikpOworCisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklG
b3JQYXRoKCIvIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
KworICAgIHRlc3QtPndhaXRVbnRpbEZpbGVDaGFuZ2VkKHJlc291cmNlTG9hZFN0YXRpc3RpY3NM
b2dGaWxlLmdldCgpLCBHX0ZJTEVfTU9OSVRPUl9FVkVOVF9DUkVBVEVEKTsKKworICAgIGdfYXNz
ZXJ0X3RydWUoZ19maWxlX3Rlc3QocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgR19G
SUxFX1RFU1RfSVNfRElSKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfdGVzdChyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTG9nRmlsZS5nZXQoKSwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUikpOwor
CisgICAgLy8gQ2xlYXIgYWxsLgorICAgIHN0YXRpYyBjb25zdCBXZWJLaXRXZWJzaXRlRGF0YVR5
cGVzIGNhY2hlQW5kUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHN0YXRpY19jYXN0PFdlYktpdFdl
YnNpdGVEYXRhVHlwZXM+KFdFQktJVF9XRUJTSVRFX0RBVEFfUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9NRU1PUllfQ0FDSEUgfCBXRUJLSVRfV0VCU0lURV9E
QVRBX0RJU0tfQ0FDSEUpOworICAgIHRlc3QtPmNsZWFyKGNhY2hlQW5kUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcywgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsRmlsZUNoYW5nZWQocmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0xvZ0ZpbGUuZ2V0KCksIEdfRklMRV9NT05JVE9SX0VWRU5UX0RFTEVURUQpOwor
CisgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9yZXNvdXJjZV9sb2FkX3N0YXRp
c3RpY3NfZW5hYmxlZCh0ZXN0LT5tX21hbmFnZXIsIEZBTFNFKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3RhdGlzdGlj
c19lbmFibGVkKHRlc3QtPm1fbWFuYWdlcikpOworCisgICAgZ19ybWRpcihyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KTsKK30KKwogdm9pZCBiZWZvcmVBbGwoKQogewogICAgIGtTZXJ2
ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwpAQCAtNjM2LDYgKzY5NCw3IEBAIHZvaWQgYmVm
b3JlQWxsKCkKICAgICBXZWJzaXRlRGF0YVRlc3Q6OmFkZCgiV2ViS2l0V2Vic2l0ZURhdGEiLCAi
aHN0cyIsIHRlc3RXZWJzaXRlRGF0YUhzdHMpOwogI2VuZGlmCiAgICAgV2Vic2l0ZURhdGFUZXN0
OjphZGQoIldlYktpdFdlYnNpdGVEYXRhIiwgImRldmljZWlkaGFzaHNhbHQiLCB0ZXN0V2Vic2l0
ZURhdGFEZXZpY2VJZEhhc2hTYWx0KTsKKyAgICBXZWJzaXRlRGF0YVRlc3Q6OmFkZCgiV2ViS2l0
V2Vic2l0ZURhdGEiLCAicmVzb3VyY2UtbG9hZC1zdGF0aXN0aWNzIiwgdGVzdFdlYnNpdGVEYXRh
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKaW5kZXggZjBkODgwZWZj
ZDBkLi42OGQyZGI3ZTk0M2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1Rlc3RNYWluLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvVGVzdE1haW4uaApAQCAtMTI0LDEwICsxMjQsMTIgQEAgcHVibGljOgogICAgICAgICBH
VW5pcXVlUHRyPGNoYXI+IGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFt
ZShkYXRhRGlyZWN0b3J5KCksICJhcHBjYWNoZSIsIG51bGxwdHIpKTsKICAgICAgICAgR1VuaXF1
ZVB0cjxjaGFyPiB3ZWJTUUxEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShkYXRhRGlyZWN0b3J5
KCksICJ3ZWJzcWwiLCBudWxscHRyKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gaHN0c0Rp
cmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGRhdGFEaXJlY3RvcnkoKSwgImhzdHMiLCBudWxscHRy
KSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeShnX2J1aWxkX2ZpbGVuYW1lKGRhdGFEaXJlY3RvcnkoKSwgInJlc291cmNlLWxvYWQtc3Rh
dGlzdGljcyIsIG51bGxwdHIpKTsKICAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXI+IHdlYnNpdGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfbmV3KAogICAgICAgICAgICAgImxvY2FsLXN0b3JhZ2UtZGlyZWN0b3J5IiwgbG9j
YWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpLCAiaW5kZXhlZGRiLWRpcmVjdG9yeSIsIGluZGV4ZWRE
QkRpcmVjdG9yeS5nZXQoKSwKICAgICAgICAgICAgICJkaXNrLWNhY2hlLWRpcmVjdG9yeSIsIGRp
c2tDYWNoZURpcmVjdG9yeS5nZXQoKSwgIm9mZmxpbmUtYXBwbGljYXRpb24tY2FjaGUtZGlyZWN0
b3J5IiwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSwKLSAgICAgICAgICAgICJ3ZWJz
cWwtZGlyZWN0b3J5Iiwgd2ViU1FMRGlyZWN0b3J5LmdldCgpLCAiaHN0cy1jYWNoZS1kaXJlY3Rv
cnkiLCBoc3RzRGlyZWN0b3J5LmdldCgpLCBudWxscHRyKSk7CisgICAgICAgICAgICAid2Vic3Fs
LWRpcmVjdG9yeSIsIHdlYlNRTERpcmVjdG9yeS5nZXQoKSwgImhzdHMtY2FjaGUtZGlyZWN0b3J5
IiwgaHN0c0RpcmVjdG9yeS5nZXQoKSwKKyAgICAgICAgICAgICJyZXNvdXJjZS1sb2FkLXN0YXRp
c3RpY3MtZGlyZWN0b3J5IiwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5nZXQoKSwg
bnVsbHB0cikpOwogCiAgICAgICAgIG1fd2ViQ29udGV4dCA9IGFkb3B0R1JlZihXRUJLSVRfV0VC
X0NPTlRFWFQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9DT05URVhULAogICAgICAgICAg
ICAgIndlYnNpdGUtZGF0YS1tYW5hZ2VyIiwgd2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3Bw
CmluZGV4IDhlM2YzNDhkOGFiNS4uMDIxNWJhZTExMjcxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCkBAIC0yMzYsNiArMjM2
LDI0IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OnNldEVkaXRhYmxlKGJvb2wgZWRpdGFibGUpCiAgICAg
d2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZShtX3dlYlZpZXcsIGVkaXRhYmxlKTsKIH0KIAor
c3RhdGljIHZvaWQgZGlyZWN0b3J5Q2hhbmdlZENhbGxiYWNrKEdGaWxlTW9uaXRvciosIEdGaWxl
KiBmaWxlLCBHRmlsZSosIEdGaWxlTW9uaXRvckV2ZW50IGV2ZW50LCBXZWJWaWV3VGVzdCogdGVz
dCkKK3sKKyAgICBpZiAoZXZlbnQgPT0gdGVzdC0+bV9leHBlY3RlZEZpbGVDaGFuZ2VFdmVudCAm
JiBnX2ZpbGVfZXF1YWwoZmlsZSwgdGVzdC0+bV9tb25pdG9yZWRGaWxlLmdldCgpKSkKKyAgICAg
ICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OndhaXRVbnRp
bEZpbGVDaGFuZ2VkKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBHRmlsZU1vbml0b3JFdmVudCBldmVu
dCkKK3sKKyAgICBtX21vbml0b3JlZEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChmaWxlbmFtZSkpOworICAgIG1fZXhwZWN0ZWRGaWxlQ2hhbmdlRXZlbnQgPSBldmVudDsKKyAg
ICBHUmVmUHRyPEdGaWxlPiBkaXJlY3RvcnkgPSBhZG9wdEdSZWYoZ19maWxlX2dldF9wYXJlbnQo
bV9tb25pdG9yZWRGaWxlLmdldCgpKSk7CisgICAgR1JlZlB0cjxHRmlsZU1vbml0b3I+IG1vbml0
b3IgPSBhZG9wdEdSZWYoZ19maWxlX21vbml0b3JfZGlyZWN0b3J5KGRpcmVjdG9yeS5nZXQoKSwg
R19GSUxFX01PTklUT1JfTk9ORSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0KG1v
bml0b3IuZ2V0KCkpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobW9uaXRvci5nZXQoKSwgImNoYW5n
ZWQiLCBHX0NBTExCQUNLKGRpcmVjdG9yeUNoYW5nZWRDYWxsYmFjayksIHRoaXMpOworICAgIGlm
ICghZ19maWxlX3F1ZXJ5X2V4aXN0cyhtX21vbml0b3JlZEZpbGUuZ2V0KCksIG51bGxwdHIpKQor
ICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7Cit9CisKIHN0YXRpYyB2b2lkIHJl
c291cmNlR2V0RGF0YUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIGdwb2ludGVyIHVzZXJEYXRhKQogewogICAgIHNpemVfdCBkYXRhU2l6ZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCmluZGV4IGMz
ZmRkOTgyNTg5MS4uNjBjMzNlZWRiOTU2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgdm9pZCB3YWl0VW50aWxUaXRs
ZUNoYW5nZWRUbyhjb25zdCBjaGFyKiBleHBlY3RlZFRpdGxlKTsKICAgICB2b2lkIHdhaXRVbnRp
bFRpdGxlQ2hhbmdlZCgpOworICAgIHZvaWQgd2FpdFVudGlsRmlsZUNoYW5nZWQoY29uc3QgY2hh
ciosIEdGaWxlTW9uaXRvckV2ZW50KTsKICAgICB2b2lkIHJlc2l6ZVZpZXcoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KTsKICAgICB2b2lkIGhpZGVWaWV3KCk7CiAgICAgdm9pZCBzZWxlY3RBbGwoKTsK
QEAgLTExMSw2ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG1fcmVzb3VyY2VEYXRhU2l6
ZSB7IDAgfTsKICAgICBjYWlyb19zdXJmYWNlX3QqIG1fc3VyZmFjZSB7IG51bGxwdHIgfTsKICAg
ICBib29sIG1fZXhwZWN0ZWRXZWJQcm9jZXNzQ3Jhc2ggeyBmYWxzZSB9OworICAgIEdSZWZQdHI8
R0ZpbGU+IG1fbW9uaXRvcmVkRmlsZTsKKyAgICBHRmlsZU1vbml0b3JFdmVudCBtX2V4cGVjdGVk
RmlsZUNoYW5nZUV2ZW50OwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEd0a1dpZGdldCogbV9w
YXJlbnRXaW5kb3cgeyBudWxscHRyIH07Cg==
</data>
<flag name="review"
          id="411682"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401892</attachid>
            <date>2020-06-15 06:09:25 -0700</date>
            <delta_ts>2020-06-15 06:20:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk2-itp.diff</filename>
            <type>text/plain</type>
            <size>36518</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZWJlYmJkMzM3NTMzLi4yMjBlNzVjMzE0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMjAtMDYtMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIEFQSSB0byBjb25maWd1cmUgYW5kIGVu
YWJsZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Nzk0MworCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hh
ZWwgQ2F0YW56YXJvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNp
dGVEYXRhLmNwcDoKKyAgICAgICAgKHJlY29yZENvbnRhaW5zU3VwcG9ydGVkRGF0YVR5cGVzKToK
KyAgICAgICAgKHRvV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRX
ZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0
YU1hbmFnZXJTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJD
b25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3Nf
aW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUpOgor
ICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZGlyZWN0b3J5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfaXRwX2VuYWJsZWQpOgor
ICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxlZCk6Cisg
ICAgICAgICh0b1dlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYnNpdGVEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0V2Vic2l0ZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS0xLjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorCiAyMDIwLTA2LTE1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVd
IEFkZCBBUEkgdG8gZXhwb3NlIFVJQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNp
dGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNp
dGVEYXRhLmNwcAppbmRleCBkZDhmY2RmOTlmZWEuLmZjMGZmOWMyODNiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhLmNw
cApAQCAtNzgsNyArNzgsOCBAQCBzdGF0aWMgYm9vbCByZWNvcmRDb250YWluc1N1cHBvcnRlZERh
dGFUeXBlcyhjb25zdCBXZWJzaXRlRGF0YVJlY29yZCYgcmVjb3JkKQogICAgICAgICBXZWJzaXRl
RGF0YVR5cGU6OlBsdWdJbkRhdGEsCiAjZW5kaWYKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpD
b29raWVzLAotICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OkRldmljZUlkSGFzaFNhbHQKKyAgICAg
ICAgV2Vic2l0ZURhdGFUeXBlOjpEZXZpY2VJZEhhc2hTYWx0LAorICAgICAgICBXZWJzaXRlRGF0
YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MKICAgICB9KTsKIH0KIApAQCAtMTA5LDYgKzEx
MCw4IEBAIHN0YXRpYyBXZWJLaXRXZWJzaXRlRGF0YVR5cGVzIHRvV2ViS2l0V2Vic2l0ZURhdGFU
eXBlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlCiAgICAgICAgIHJldHVyblZhbHVlIHw9IFdF
QktJVF9XRUJTSVRFX0RBVEFfQ09PS0lFUzsKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpEZXZpY2VJZEhhc2hTYWx0KSkKICAgICAgICAgcmV0dXJuVmFsdWUgfD0gV0VC
S0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUOworICAgIGlmICh0eXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpKQorICAgICAgICBy
ZXR1cm5WYWx1ZSB8PSBXRUJLSVRfV0VCU0lURV9EQVRBX0lUUDsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGFUeXBlcz4ocmV0dXJuVmFsdWUpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmNwcAppbmRleCA5ODljNDMzOWZiY2IuLjBiNjlkNmU4OWUyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIuY3BwCkBAIC04Niw2ICs4Niw3IEBAIGVudW0gewogICAgIFBST1Bf
SU5ERVhFRERCX0RJUkVDVE9SWSwKICAgICBQUk9QX1dFQlNRTF9ESVJFQ1RPUlksCiAgICAgUFJP
UF9IU1RTX0NBQ0hFX0RJUkVDVE9SWSwKKyAgICBQUk9QX0lUUF9ESVJFQ1RPUlksCiAgICAgUFJP
UF9JU19FUEhFTUVSQUwKIH07CiAKQEAgLTEwNCw2ICsxMDUsNyBAQCBzdHJ1Y3QgX1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlclByaXZhdGUgewogICAgIEdVbmlxdWVQdHI8Y2hhcj4gaW5kZXhlZERC
RGlyZWN0b3J5OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gd2ViU1FMRGlyZWN0b3J5OwogICAgIEdV
bmlxdWVQdHI8Y2hhcj4gaHN0c0NhY2hlRGlyZWN0b3J5OworICAgIEdVbmlxdWVQdHI8Y2hhcj4g
aXRwRGlyZWN0b3J5OwogCiAgICAgR1JlZlB0cjxXZWJLaXRDb29raWVNYW5hZ2VyPiBjb29raWVN
YW5hZ2VyOwogICAgIFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+IHByb2Nlc3NQb29sczsKQEAgLTE0
Miw2ICsxNDQsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgRwogICAgIGNhc2UgUFJPUF9IU1RT
X0NBQ0hFX0RJUkVDVE9SWToKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0lUUF9ESVJFQ1RPUlk6CisgICAgICAg
IGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9pdHBfZGlyZWN0b3J5KG1hbmFnZXIpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9Q
X0lTX0VQSEVNRVJBTDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTc5LDYgKzE4NCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlclNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjCiAgICAgY2Fz
ZSBQUk9QX0hTVFNfQ0FDSEVfRElSRUNUT1JZOgogICAgICAgICBtYW5hZ2VyLT5wcml2LT5oc3Rz
Q2FjaGVEaXJlY3RvcnkucmVzZXQoZ192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9JVFBfRElSRUNUT1JZOgorICAgICAgICBtYW5hZ2VyLT5w
cml2LT5pdHBEaXJlY3RvcnkucmVzZXQoZ192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKSk7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9JU19FUEhFTUVSQUw6CiAgICAgICAgIGlmIChnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKSkKICAgICAgICAgICAgIG1hbmFnZXItPnByaXYtPndlYnNp
dGVEYXRhU3RvcmUgPSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3Rl
bnQoKTsKQEAgLTIwMCw2ICsyMDgsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1h
bmFnZXJDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgICAgICAgICBwcml2LT5pbmRl
eGVkREJEaXJlY3RvcnkucmVzZXQoZ19idWlsZF9maWxlbmFtZShwcml2LT5iYXNlRGF0YURpcmVj
dG9yeS5nZXQoKSwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIiLCBudWxscHRyKSk7CiAgICAgICAg
IGlmICghcHJpdi0+d2ViU1FMRGlyZWN0b3J5KQogICAgICAgICAgICAgcHJpdi0+d2ViU1FMRGly
ZWN0b3J5LnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0
KCksICJkYXRhYmFzZXMiLCBudWxscHRyKSk7CisgICAgICAgIGlmICghcHJpdi0+aXRwRGlyZWN0
b3J5KQorICAgICAgICAgICAgcHJpdi0+aXRwRGlyZWN0b3J5LnJlc2V0KGdfYnVpbGRfZmlsZW5h
bWUocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0KCksICJpdHAiLCBudWxscHRyKSk7CiAgICAg
fQogCiAgICAgaWYgKHByaXYtPmJhc2VDYWNoZURpcmVjdG9yeSkgewpAQCAtMzYwLDYgKzM3MCwy
MyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3NfaW5pdChX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJDbGFzcwogICAgICAgICAgICAgbnVsbHB0ciwKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwg
R19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYnNp
dGVEYXRhTWFuYWdlcjppdHAtZGlyZWN0b3J5OgorICAgICAqCisgICAgICogVGhlIGRpcmVjdG9y
eSB3aGVyZSBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIChJVFApIGRhdGEgd2lsbCBi
ZSBzdG9yZWQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAgICAqLworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAg
ICAgUFJPUF9JVFBfRElSRUNUT1JZLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAorICAg
ICAgICAgICAgIml0cC1kaXJlY3RvcnkiLAorICAgICAgICAgICAgXygiSVRQIERpcmVjb3J5Iiks
CisgICAgICAgICAgICBfKCJUaGUgZGlyZWN0b3J5IHdoZXJlIEludGVsbGlnZW50IFRyYWNraW5n
IFByZXZlbnRpb24gZGF0YSB3aWxsIGJlIHN0b3JlZCIpLAorICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdS
SVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKwogICAgIC8qKgogICAgICAqIFdlYktp
dFdlYnNpdGVEYXRhTWFuYWdlcjppcy1lcGhlbWVyYWw6CiAgICAgICoKQEAgLTM5OCw2ICs0MjUs
OCBAQCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdl
dERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YQogICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5
LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5
KCFwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkgPwogICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkuZ2V0KCkp
KTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSghcHJpdi0+aXRwRGlyZWN0b3J5ID8KKyAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSA6IEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aXRwRGlyZWN0
b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSgpKTsKICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIH0KQEAgLTY1OSw2ICs2ODgsMjkgQEAg
Y29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNoZV9k
aXJlY3RvcnkoV2ViS2l0V2Vic2l0ZUQKICAgICByZXR1cm4gcHJpdi0+aHN0c0NhY2hlRGlyZWN0
b3J5LmdldCgpOwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
aXRwX2RpcmVjdG9yeToKKyAqIEBtYW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIK
KyAqCisgKiBHZXQgdGhlICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI6aXRwLWRpcmVjdG9yeSBw
cm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAoYWxsb3ctbm9uZSk6IHRoZSBkaXJlY3Rvcnkgd2hl
cmUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiBkYXRhIGlzIHN0b3JlZCBvciAlTlVM
TCBpZiBAbWFuYWdlciBpcyBlcGhlbWVyYWwuCisgKgorICogU2luY2U6IDIuMzAKKyAqLworY29u
c3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2RpcmVjdG9yeShX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpLCBudWxscHRyKTsK
KworICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2VyLT5w
cml2OworICAgIGlmIChwcml2LT53ZWJzaXRlRGF0YVN0b3JlICYmICFwcml2LT53ZWJzaXRlRGF0
YVN0b3JlLT5pc1BlcnNpc3RlbnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBp
ZiAoIXByaXYtPml0cERpcmVjdG9yeSkKKyAgICAgICAgcHJpdi0+aXRwRGlyZWN0b3J5LnJlc2V0
KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgcmV0dXJuIHByaXYtPml0
cERpcmVjdG9yeS5nZXQoKTsKK30KKwogLyoqCiAgKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyOgogICogQG1hbmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlcgpAQCAtNjc5LDYgKzczMSw0MiBAQCBXZWJLaXRDb29raWVNYW5hZ2VyKiB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyKFdlYktpdFdlYnNpdAogICAg
IHJldHVybiBtYW5hZ2VyLT5wcml2LT5jb29raWVNYW5hZ2VyLmdldCgpOwogfQogCisvKioKKyAq
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfaXRwX2VuYWJsZWQ6CisgKiBAbWFuYWdl
cjogYSAjV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyCisgKiBAZW5hYmxlZDogdmFsdWUgdG8gc2V0
CisgKgorICogRW5hYmxlIG9yIGRpc2FibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlv
biAoSVRQKS4gV2hlbiBJVFAgaXMgZW5hYmxlZCByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAq
IGFyZSBjb2xsZWN0ZWQgYW5kIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIgdG8gYWxsb3cgb3IgYmxv
Y2sgdGhpcmQtcGFydHkgY29va2llcyBhbmQgcHJldmVudCB1c2VyIHRyYWNraW5nLgorICogTm90
ZSB0aGF0IHdoZW4gSVRQIGlzIGVuYWJsZWQgdGhlIHJlc291cmNlcyBmb3Igd2hpY2ggY29va2ll
cyBhcmUgYWxsb3dlZCB3aWxsIGZvbGxvdyB0aGUgYWNjZXB0IHBvbGljeQorICogc2V0IHdpdGgg
d2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRfcG9saWN5KCkuCisgKgorICogU2luY2U6
IDIuMzAKKyAqLwordm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9lbmFi
bGVkKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciwgZ2Jvb2xlYW4gZW5hYmxlZCkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUiht
YW5hZ2VyKSk7CisKKyAgICB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUobWFu
YWdlcikuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxlZDoKKyAqIEBt
YW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKKyAqCisgKiBHZXQgd2hldGhlciBJ
bnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIChJVFApIGlzIGVuYWJsZWQgb3Igbm90Lgor
ICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIElUUCBpcyBlbmFibGVkLCBvciAlRkFMU0Ugb3RoZXJ3
aXNlLgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfaXRwX2VuYWJsZWQoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5h
Z2VyKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX0RBVEFf
TUFOQUdFUihtYW5hZ2VyKSwgRkFMU0UpOworCisgICAgcmV0dXJuIHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckdldERhdGFTdG9yZShtYW5hZ2VyKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCgpOworfQorCiBzdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0
YVR5cGVzKFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgdHlwZXMpCiB7CiAgICAgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gcmV0dXJuVmFsdWU7CkBAIC03MDYsNiArNzk0LDggQEAgc3RhdGljIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlcyhXZWJLaXRXZWJzaXRl
RGF0YVR5cGVzIHR5cGUKICAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6
Q29va2llcyk7CiAgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURf
SEFTSF9TQUxUKQogICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEZXZp
Y2VJZEhhc2hTYWx0KTsKKyAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0lUUCkK
KyAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhLmgKaW5kZXggOWM0ZDgx
NDU4NGY5Li5iMWUwZTM5NjQyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhIFdlYktpdFdlYnNpdGVEYXRhOwogICogQFdFQktJVF9X
RUJTSVRFX0RBVEFfQ09PS0lFUzogQ29va2llcy4KICAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX0RF
VklDRV9JRF9IQVNIX1NBTFQ6IEhhc2ggc2FsdCB1c2VkIHRvIGdlbmVyYXRlIHRoZSBkZXZpY2Ug
aWRzIHVzZWQgYnkgd2VicGFnZXMuIFNpbmNlIDIuMjQKICAqIEBXRUJLSVRfV0VCU0lURV9EQVRB
X0hTVFNfQ0FDSEU6IEhTVFMgY2FjaGUuIFNpbmNlIDIuMjYKKyAqIEBXRUJLSVRfV0VCU0lURV9E
QVRBX0lUUDogSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiBkYXRhLiBTaW5jZSAyLjMw
LgogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMOiBBbGwgdHlwZXMuCiAgKgogICogRW51bSB2
YWx1ZXMgd2l0aCBmbGFncyByZXByZXNlbnRpbmcgdHlwZXMgb2YgV2Vic2l0ZSBkYXRhLgpAQCAt
NjQsNyArNjUsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQ09P
S0lFUyAgICAgICAgICAgICAgICAgICA9IDEgPDwgOCwKICAgICBXRUJLSVRfV0VCU0lURV9EQVRB
X0RFVklDRV9JRF9IQVNIX1NBTFQgICAgICAgPSAxIDw8IDksCiAgICAgV0VCS0lUX1dFQlNJVEVf
REFUQV9IU1RTX0NBQ0hFICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKLSAgICBXRUJLSVRfV0VC
U0lURV9EQVRBX0FMTCAgICAgICAgICAgICAgICAgICAgICAgPSAoMSA8PCAxMSkgLSAxCisgICAg
V0VCS0lUX1dFQlNJVEVfREFUQV9JVFAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxMSwK
KyAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0FMTCAgICAgICAgICAgICAgICAgICAgICAgPSAoMSA8
PCAxMikgLSAxCiB9IFdlYktpdFdlYnNpdGVEYXRhVHlwZXM7CiAKIFdFQktJVF9BUEkgR1R5cGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5oCmluZGV4IGQyNGNkMGI3Yjg1Zi4uMTZmMDQ3MzE2NzU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLmgKQEAgLTkzLDkgKzkzLDE5IEBAIHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKIAorV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2l0cF9kaXJlY3RvcnkgICAgICAgICAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CisKIFdFQktJVF9B
UEkgV2ViS2l0Q29va2llTWFuYWdlciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X2Nvb2tpZV9tYW5hZ2VyICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRh
TWFuYWdlciAqbWFuYWdlcik7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX3NldF9pdHBfZW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAg
ICAgICAgICAgICAgICAgZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2VuYWJsZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKKwogV0VCS0lUX0FQSSB2
b2lkCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2ggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyAgICB0eXBlcywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0
aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IGMwMDU1NDZmMDBjOS4uOTdmYmU5ZDJkNzZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTE0NTgsNyArMTQ1OCwxMCBAQCB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGly
ZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3Rv
cnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeQogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeQord2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfc2V0X2l0cF9lbmFibGVkCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2l0cF9l
bmFibGVkCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2gKIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9mZXRjaF9maW5pc2gKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9y
ZW1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
V2Vic2l0ZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
c2l0ZURhdGEuaAppbmRleCA5NzNhNTUwNTYwZmUuLmNkN2IzZWUyNzgzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGEuaApAQCAt
NDYsNiArNDYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURhdGEgV2ViS2l0V2Vi
c2l0ZURhdGE7CiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTOiBDb29raWVzLgogICog
QFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVDogSGFzaCBzYWx0IHVzZWQg
dG8gZ2VuZXJhdGUgdGhlIGRldmljZSBpZHMgdXNlZCBieSB3ZWJwYWdlcy4gU2luY2UgMi4yNAog
ICogQFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRTogSFNUUyBjYWNoZS4gU2luY2UgMi4y
NgorICogQFdFQktJVF9XRUJTSVRFX0RBVEFfSVRQOiBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2
ZW50aW9uIGRhdGEuIFNpbmNlIDIuMzAuCiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9BTEw6IEFs
bCB0eXBlcy4KICAqCiAgKiBFbnVtIHZhbHVlcyB3aXRoIGZsYWdzIHJlcHJlc2VudGluZyB0eXBl
cyBvZiBXZWJzaXRlIGRhdGEuCkBAIC02NCw3ICs2NSw4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAg
V0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTICAgICAgICAgICAgICAgICAgID0gMSA8PCA4LAog
ICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVCAgICAgICA9IDEgPDwg
OSwKICAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUgICAgICAgICAgICAgICAgPSAx
IDw8IDEwLAotICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAgICAgICAgICAgICAgICAg
ICA9ICgxIDw8IDExKSAtIDEKKyAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0lUUCAgICAgICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAg
ICAgICAgICAgICAgICAgICA9ICgxIDw8IDEyKSAtIDEKIH0gV2ViS2l0V2Vic2l0ZURhdGFUeXBl
czsKIAogV0VCS0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKaW5kZXggZTk5MTUzMjgy
ODAxLi40YTZjZTRiNzM2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaApAQCAtOTMsOSArOTMsMTkg
QEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5ICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWIKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeSAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOwogCitXRUJLSVRf
QVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2Rp
cmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
ICptYW5hZ2VyKTsKKwogV0VCS0lUX0FQSSBXZWJLaXRDb29raWVNYW5hZ2VyICoKIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfY29va2llX21hbmFnZXIgICAgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKIAorV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9lbmFibGVkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICBlbmFibGVkKTsKKworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1h
bmFnZXIpOworCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9m
ZXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyICptYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJzaXRlRGF0YVR5cGVz
ICAgIHR5cGVzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9k
b2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CmluZGV4IGI5NDI5YmI2NWQwMC4uMWRkMzVjNzVl
OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3Bl
LTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9k
b2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0xMzkyLDcgKzEzOTIsMTAgQEAgd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9y
eQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5CiB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkKIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkKK3dlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9jb29raWVfbWFuYWdlcgord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3Nl
dF9pdHBfZW5hYmxlZAord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxl
ZAogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoCiB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZmV0Y2hfZmluaXNoCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfcmVtb3Zl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9y
ZUdMaWIuY3BwCmluZGV4IDhlYThlYTJmMzFmOS4uOTM0OWFmNTAyOTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcApA
QCAtOTEsNyArOTEsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNU
U0RpcmVjdG9yeSgpCiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQ
QVJBVE9SX1MgInJlc291cmNlbG9hZHN0YXRpc3RpY3MiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJf
U0VQQVJBVE9SX1MgIml0cCIpOwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYg
ZGlyZWN0b3J5TmFtZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBiNjRmOWNlMmI0MmIuLmVmZWExYTA0ZjYzNyAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA2
LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gY29uZmlndXJlIGFuZCBlbmFibGUgcmVzb3VyY2UgbG9h
ZCBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5NDMKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIENhdGFuemFyby4KKwor
ICAgICAgICBBZGQgLS1lbmFibGUtaXRwIGNvbW1hbmQgbGluZSB2ZXJzaW9uIHRvIE1pbmlCcm93
c2VyIGFuZCB1bml0IHRlc3RzIHRvIGNoZWNrIHRoZSBuZXcgQVBJLgorCisgICAgICAgICogTWlu
aUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKGdvdFdlYnNpdGVEYXRhQ2FsbGJhY2spOgor
ICAgICAgICAoYWN0aXZhdGUpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dwZS9tYWluLmNwcDoK
KyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAg
ICAodGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbik6CisgICAgICAgICh0ZXN0V2Vic2l0ZURh
dGFFcGhlbWVyYWwpOgorICAgICAgICAodGVzdFdlYnNpdGVEYXRhSVRQKToKKyAgICAgICAgKGJl
Zm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMu
anNvbjoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5o
OgorICAgICAgICAoVGVzdDo6VGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAoZGlyZWN0b3J5Q2hhbmdlZENhbGxi
YWNrKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojp3YWl0VW50aWxGaWxlQ2hhbmdlZCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaDoKKwogMjAy
MC0wNi0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIGV4cG9zZSBVSUNsaWVudDo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NDb25maXJtCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5j
IGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCAwYjIzNjYyMGQ5YzcuLmRjZTg1
MDEwZTE5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC01Myw2ICs1Myw3IEBAIHN0YXRpYyBjb25z
dCBjaGFyICpjb29raWVzRmlsZTsKIHN0YXRpYyBjb25zdCBjaGFyICpjb29raWVzUG9saWN5Owog
c3RhdGljIGNvbnN0IGNoYXIgKnByb3h5Owogc3RhdGljIGdib29sZWFuIGRhcmtNb2RlOworc3Rh
dGljIGdib29sZWFuIGVuYWJsZUlUUDsKIHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247CiAK
IHR5cGVkZWYgZW51bSB7CkBAIC0xMjAsNiArMTIxLDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25F
bnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiaWdub3JlLWhvc3QiLCAwLCAwLCBH
X09QVElPTl9BUkdfU1RSSU5HX0FSUkFZLCAmaWdub3JlSG9zdHMsICJTZXQgcHJveHkgaWdub3Jl
IGhvc3RzIiwgIkhPU1RTIiB9LAogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19P
UFRJT05fQVJHX05PTkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIE5V
TEwgfSwKICAgICB7ICJjb250ZW50LWZpbHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFN
RSwgJmNvbnRlbnRGaWx0ZXIsICJKU09OIHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAi
RklMRSIgfSwKKyAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZl
bmFibGVJVFAsICJFbmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiAoSVRQKSIs
IE5VTEwgfSwKICAgICB7ICJ2ZXJzaW9uIiwgJ3YnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnBy
aW50VmVyc2lvbiwgIlByaW50IHRoZSBXZWJLaXRHVEsgdmVyc2lvbiIsIE5VTEwgfSwKICAgICB7
IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAm
dXJpQXJndW1lbnRzLCAwLCAiW1VSTOKApl0iIH0sCiAgICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAw
IH0KQEAgLTQyMiw2ICs0MjQsNyBAQCBzdGF0aWMgdm9pZCBnb3RXZWJzaXRlRGF0YUNhbGxiYWNr
KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwgR0FzeW5jUmVzdQogICAgIGFib3V0
RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIlBsdWdpbnMgRGF0
YSIsIFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEsIE5VTEwsIHBhZ2VJRCk7CiAgICAg
YWJvdXREYXRhRmlsbFRhYmxlKHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiT2ZmbGlu
ZSBXZWIgQXBwbGljYXRpb25zIENhY2hlIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZMSU5FX0FQ
UExJQ0FUSU9OX0NBQ0hFLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVf
YXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwogICAgIGFib3V0
RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIkhTVFMgQ2FjaGUi
LCBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkobWFuYWdlciksIHBhZ2VJRCk7CisgICAgYWJv
dXREYXRhRmlsbFRhYmxlKHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiSVRQIGRhdGEi
LCBXRUJLSVRfV0VCU0lURV9EQVRBX0lUUCwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9pdHBfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwogCiAgICAgcmVzdWx0ID0gZ19zdHJp
bmdfYXBwZW5kKHJlc3VsdCwgIjwvYm9keT48L2h0bWw+Iik7CiAgICAgZ3NpemUgc3RyZWFtTGVu
Z3RoID0gcmVzdWx0LT5sZW47CkBAIC01MzEsNiArNTM0LDcgQEAgc3RhdGljIHZvaWQgc3RhcnR1
cChHQXBwbGljYXRpb24gKmFwcGxpY2F0aW9uKQogc3RhdGljIHZvaWQgYWN0aXZhdGUoR0FwcGxp
Y2F0aW9uICphcHBsaWNhdGlvbiwgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzKQogewog
ICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciA9IChwcml2YXRlTW9kZSB8fCBh
dXRvbWF0aW9uTW9kZSkgPyB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3X2VwaGVtZXJh
bCgpIDogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX25ldyhOVUxMKTsKKyAgICB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9lbmFibGVkKG1hbmFnZXIsIGVuYWJsZUlUUCk7
CiAgICAgV2ViS2l0V2ViQ29udGV4dCAqd2ViQ29udGV4dCA9IGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfQ09OVEVYVCwgIndlYnNpdGUtZGF0YS1tYW5hZ2VyIiwgbWFuYWdlciwgInByb2Nl
c3Mtc3dhcC1vbi1jcm9zcy1zaXRlLW5hdmlnYXRpb24tZW5hYmxlZCIsIFRSVUUsCiAjaWYgIUdU
S19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQogICAgICAgICAidXNlLXN5c3RlbS1hcHBlYXJhbmNl
LWZvci1zY3JvbGxiYXJzIiwgRkFMU0UsCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93
cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKaW5kZXggZmRlMjRh
N2NjOGNlLi5lZjYyYThjMWNiNTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9t
YWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKQEAgLTQ4LDYgKzQ4
LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNGaWxlOwogc3RhdGljIGNvbnN0IGNoYXIq
IGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciogcHJveHk7CiBjb25zdCBjaGFyKiBi
Z0NvbG9yOworc3RhdGljIGdib29sZWFuIGVuYWJsZUludGVsbGlnZW50VHJhY2tpbmdQcmV2ZW50
aW9uOwogc3RhdGljIGdib29sZWFuIHByaW50VmVyc2lvbjsKIHN0YXRpYyBHSGFzaFRhYmxlKiBv
cGVuVmlld3M7CiAKQEAgLTYzLDYgKzY0LDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBj
b21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiaWdub3JlLXRscy1lcnJvcnMiLCAwLCAwLCBH
X09QVElPTl9BUkdfTk9ORSwgJmlnbm9yZVRMU0Vycm9ycywgIklnbm9yZSBUTFMgZXJyb3JzIiwg
bnVsbHB0ciB9LAogICAgIHsgImNvbnRlbnQtZmlsdGVyIiwgMCwgMCwgR19PUFRJT05fQVJHX0ZJ
TEVOQU1FLCAmY29udGVudEZpbHRlciwgIkpTT04gd2l0aCBjb250ZW50IGZpbHRlcmluZyBydWxl
cyIsICJGSUxFIiB9LAogICAgIHsgImJnLWNvbG9yIiwgMCwgMCwgR19PUFRJT05fQVJHX1NUUklO
RywgJmJnQ29sb3IsICJXaW5kb3cgYmFja2dyb3VuZCBjb2xvci4gRGVmYXVsdDogd2hpdGUiLCAi
Q09MT1IiIH0sCisgICAgeyAiZW5hYmxlLWl0cCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAm
ZW5hYmxlSW50ZWxsaWdlbnRUcmFja2luZ1ByZXZlbnRpb24sICJFbmFibGUgaW50ZWxsaWdlbnQg
dHJhY2tpbmcgcHJldmVudGlvbiIsIG51bGxwdHIgfSwKICAgICB7ICJ2ZXJzaW9uIiwgJ3YnLCAw
LCBHX09QVElPTl9BUkdfTk9ORSwgJnByaW50VmVyc2lvbiwgIlByaW50IHRoZSBXUEUgdmVyc2lv
biIsIG51bGxwdHIgfSwKICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05f
QVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCBudWxscHRyLCAiW1VSTF0iIH0sCiAg
ICAgeyBudWxscHRyLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciB9CkBAIC0yMjAsNyArMjIyLDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICph
cmd2W10pCiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIGF1dG8qIHdlYkNvbnRleHQg
PSAocHJpdmF0ZU1vZGUgfHwgYXV0b21hdGlvbk1vZGUpID8gd2Via2l0X3dlYl9jb250ZXh0X25l
d19lcGhlbWVyYWwoKSA6IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpOworICAgIGF1
dG8qIG1hbmFnZXIgPSAocHJpdmF0ZU1vZGUgfHwgYXV0b21hdGlvbk1vZGUpID8gd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX25ld19lcGhlbWVyYWwoKSA6IHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9uZXcobnVsbHB0cik7CisgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3Nl
dF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3NfZW5hYmxlZChtYW5hZ2VyLCBlbmFibGVJbnRlbGxp
Z2VudFRyYWNraW5nUHJldmVudGlvbik7CisgICAgYXV0byogd2ViQ29udGV4dCA9IHdlYmtpdF93
ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdlcihtYW5hZ2VyKTsKKyAgICBn
X29iamVjdF91bnJlZihtYW5hZ2VyKTsKIAogICAgIGlmIChjb29raWVzUG9saWN5KSB7CiAgICAg
ICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2Nvb2tpZV9t
YW5hZ2VyKHdlYkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcAppbmRleCBkZWQ0YWE0ODcxOTQuLjVi
NDQwMmJmYTY5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKQEAgLTMzLDcgKzMzLDEyIEBAIHN0YXRpYyB2
b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3Nh
Z2UsIGNvbnN0IGNoYXIqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoZ19zdHJf
ZXF1YWwocGF0aCwgIi9lbXB0eSIpKSB7CisgICAgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvIikp
IHsKKyAgICAgICAgY29uc3QgY2hhciogaHRtbCA9ICI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1s
PiI7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9i
b2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGh0bWwsIHN0cmxlbihodG1sKSk7CisgICAgICAgIHNv
dXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworICAgICAg
ICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAg
fSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2VtcHR5IikpIHsKICAgICAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGVtcHR5SFRNTCA9ICI8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiI7CiAg
ICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVh
ZGVycywgIlNldC1Db29raWUiLCAiZm9vPWJhcjsgTWF4LUFnZT02MCIpOwogICAgICAgICBzb3Vw
X21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJTdHJp
Y3QtVHJhbnNwb3J0LVNlY3VyaXR5IiwgIm1heC1hZ2U9MzYwMCIpOwpAQCAtMTY4LDEwICsxNzMs
MTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbihXZWJzaXRlRGF0
YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3RyKGhzdHNDYWNo
ZURpcmVjdG9yeS5nZXQoKSwgPT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0
c19jYWNoZV9kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7CiAgICAgZ19hc3NlcnRfdHJ1ZShn
X2ZpbGVfdGVzdChoc3RzQ2FjaGVEaXJlY3RvcnkuZ2V0KCksIEdfRklMRV9URVNUX0lTX0RJUikp
OwogCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBpdHBEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShU
ZXN0OjpkYXRhRGlyZWN0b3J5KCksICJpdHAiLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfY21w
c3RyKGl0cERpcmVjdG9yeS5nZXQoKSwgPT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfaXRwX2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFnZXIpKTsKKwogICAgIC8vIENsZWFyIGFsbCBw
ZXJzaXN0ZW50IGNhY2hlcywgc2luY2UgdGhlIGRhdGEgZGlyIGlzIGNvbW1vbiB0byBhbGwgdGVz
dCBjYXNlcy4gTm90ZTogbm90IGNsZWFuaW5nIHRoZSBIU1RTIGNhY2hlIGhlcmUgYXMgaXRzIGRh
dGEKICAgICAvLyBpcyBuZWVkZWQgZm9yIHRoZSBIU1RTIHRlc3RzLCB3aGVyZSBkYXRhIGNsZWFu
aW5nIHdpbGwgYmUgdGVzdGVkLgogICAgIHN0YXRpYyBjb25zdCBXZWJLaXRXZWJzaXRlRGF0YVR5
cGVzIHBlcnNpc3RlbnRDYWNoZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YVR5cGVz
PihXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUgfCBXRUJLSVRfV0VCU0lURV9EQVRBX0xP
Q0FMX1NUT1JBR0UKLSAgICAgICAgfCBXRUJLSVRfV0VCU0lURV9EQVRBX0lOREVYRUREQl9EQVRB
QkFTRVMgfCBXRUJLSVRfV0VCU0lURV9EQVRBX09GRkxJTkVfQVBQTElDQVRJT05fQ0FDSEUgfCBX
RUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQpOworICAgICAgICB8IFdFQktJ
VF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUyB8IFdFQktJVF9XRUJTSVRFX0RBVEFf
T0ZGTElORV9BUFBMSUNBVElPTl9DQUNIRSB8IFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lE
X0hBU0hfU0FMVCB8IFdFQktJVF9XRUJTSVRFX0RBVEFfSVRQKTsKICAgICB0ZXN0LT5jbGVhcihw
ZXJzaXN0ZW50Q2FjaGVzLCAwKTsKICAgICBnX2Fzc2VydF9udWxsKHRlc3QtPmZldGNoKHBlcnNp
c3RlbnRDYWNoZXMpKTsKIApAQCAtMTk4LDYgKzIwNiw4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJz
aXRlRGF0YUNvbmZpZ3VyYXRpb24oV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19idWlsZF9maWxlbmFtZShU
ZXN0OjpkYXRhRGlyZWN0b3J5KCksICJhcHBsaWNhdGlvbnMiLCBudWxscHRyKSk7CiAgICAgZ19h
c3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBs
aWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkoYmFzZURhdGFNYW5hZ2VyLmdldCgpKSwgPT0sIGFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogCisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2RpcmVjdG9yeShiYXNlRGF0YU1hbmFnZXIu
Z2V0KCkpLCA9PSwgaXRwRGlyZWN0b3J5LmdldCgpKTsKKwogICAgIGdfYXNzZXJ0X2NtcHN0cih3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KGJhc2VE
YXRhTWFuYWdlci5nZXQoKSksID09LCBUZXN0OjpkYXRhRGlyZWN0b3J5KCkpOwogCiAgICAgLy8g
QW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQgdGFrZXMgcHJlY2VkZW5jZSBvdmVy
IGJhc2UgZGlycy4KQEAgLTIwOSw2ICsyMTksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURh
dGFDb25maWd1cmF0aW9uKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5l
X2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShiYXNlRGF0YU1hbmFnZXIuZ2V0KCkpLCA9PSwg
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSk7CiAgICAgLy8gVGhlIHJlc3VsdCBzaG91
bGQgYmUgdGhlIHNhbWUgYXMgcHJldmlvdXMgbWFuYWdlci4KICAgICBnX2Fzc2VydF9jbXBzdHIo
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShi
YXNlRGF0YU1hbmFnZXIuZ2V0KCkpLCA9PSwgbG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBf
ZGlyZWN0b3J5KGJhc2VEYXRhTWFuYWdlci5nZXQoKSksID09LCBpdHBEaXJlY3RvcnkuZ2V0KCkp
OwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rp
c2tfY2FjaGVfZGlyZWN0b3J5KGJhc2VEYXRhTWFuYWdlci5nZXQoKSksID09LCBUZXN0OjpkYXRh
RGlyZWN0b3J5KCkpOwogfQogCkBAIC0yMzEsMTIgKzI0MiwxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2Vic2l0ZURhdGFFcGhlbWVyYWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAg
ICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVf
YXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKICAgICBnX2Fzc2Vy
dF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9y
eShtYW5hZ2VyLmdldCgpKSk7CiAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKKyAgICBn
X2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2RpcmVjdG9y
eShtYW5hZ2VyLmdldCgpKSk7CiAKICAgICAvLyBDb25maWd1cmF0aW9uIGlzIGlnbm9yZWQgd2hl
biBpcy1lcGhlbWVyYWwgaXMgdXNlZC4KICAgICBtYW5hZ2VyID0gYWRvcHRHUmVmKFdFQktJVF9X
RUJTSVRFX0RBVEFfTUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCU0lURV9EQVRB
X01BTkFHRVIsICJiYXNlLWRhdGEtZGlyZWN0b3J5IiwgVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAi
aXMtZXBoZW1lcmFsIiwgVFJVRSwgbnVsbHB0cikpKTsKICAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwobWFuYWdlci5nZXQoKSkpOwogICAg
IGdfYXNzZXJ0X251bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9iYXNlX2RhdGFf
ZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKIAorICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9zZXRfaXRwX2VuYWJsZWQobWFuYWdlci5nZXQoKSwgVFJVRSk7CisgICAgZ19hc3NlcnQo
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxlZChtYW5hZ2VyLmdldCgp
KSk7CisKICAgICAvLyBOb24gcGVyc2lzdGVudCBkYXRhIGNhbiBiZSBxdWVyaWVkIGluIGFuIGVw
aGVtZXJhbCBtYW5hZ2VyLgogICAgIEdSZWZQdHI8V2ViS2l0V2ViQ29udGV4dD4gd2ViQ29udGV4
dCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dpdGhfd2Vic2l0ZV9kYXRhX21h
bmFnZXIobWFuYWdlci5nZXQoKSkpOwogICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9jb250
ZXh0X2lzX2VwaGVtZXJhbCh3ZWJDb250ZXh0LmdldCgpKSk7CkBAIC0yNDgsNiArMjYzLDkgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFsKFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSh3ZWJWaWV3LmdldCgp
LCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZW1wdHkiKS5kYXRhKCkpOwogICAgIGdfbWFpbl9s
b29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKIAorICAgIEdVbmlxdWVQdHI8Y2hhcj4gaXRwRGly
ZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAiaXRwIiwgbnVs
bHB0cikpOworICAgIGdfYXNzZXJ0KCFnX2ZpbGVfdGVzdChpdHBEaXJlY3RvcnkuZ2V0KCksIEdf
RklMRV9URVNUX0lTX0RJUikpOworCiAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2Zl
dGNoKG1hbmFnZXIuZ2V0KCksIFdFQktJVF9XRUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hFLCBudWxs
cHRyLCBbXShHT2JqZWN0KiBtYW5hZ2VyLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIg
dXNlckRhdGEpIHsKICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0PFdlYlZpZXdUZXN0
Kj4odXNlckRhdGEpOwogICAgICAgICBHTGlzdCogZGF0YUxpc3QgPSB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZmV0Y2hfZmluaXNoKFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5h
Z2VyKSwgcmVzdWx0LCBudWxscHRyKTsKQEAgLTI2Miw2ICsyODAsOCBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2Vic2l0ZURhdGFFcGhlbWVyYWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwogICAgIH0sIHRlc3QpOwogICAgIGdfbWFp
bl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKworICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9zZXRfaXRwX2VuYWJsZWQobWFuYWdlci5nZXQoKSwgRkFMU0UpOwogfQogCiBzdGF0
aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDYWNoZShXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCkBAIC02MTYsNiArNjM2LDQzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0
YURldmljZUlkSGFzaFNhbHQoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAg
ICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBlbmFi
bGVkKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhSVRQKFdlYnNpdGVEYXRhVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBjb25zdCBjaGFyKiBpdHBEaXJlY3Rvcnkg
PSB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2l0cF9kaXJlY3RvcnkodGVzdC0+bV9t
YW5hZ2VyKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGl0cExvZ0ZpbGUoZ19idWlsZF9maWxlbmFt
ZShpdHBEaXJlY3RvcnksICJmdWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3Qi
LCBudWxscHRyKSk7CisKKyAgICAvLyBEZWxldGUgYW55IHByZXZpb3VzIGRhdGEuCisgICAgZ191
bmxpbmsoaXRwTG9nRmlsZS5nZXQoKSk7CisgICAgZ19ybWRpcihpdHBEaXJlY3RvcnkpOworCisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZW5h
YmxlZCh0ZXN0LT5tX21hbmFnZXIpKTsKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi8iKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OworCisgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9pdHBfZW5hYmxlZCh0ZXN0
LT5tX21hbmFnZXIsIFRSVUUpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxlZCh0ZXN0LT5tX21hbmFnZXIpKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZShnX2ZpbGVfdGVzdChpdHBEaXJlY3RvcnksIEdfRklMRV9URVNUX0lTX0RJUikpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKGdfZmlsZV90ZXN0KGl0cExvZ0ZpbGUuZ2V0KCksIEdfRklMRV9U
RVNUX0lTX1JFR1VMQVIpKTsKKworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9y
UGF0aCgiLyIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisK
KyAgICB0ZXN0LT53YWl0VW50aWxGaWxlQ2hhbmdlZChpdHBMb2dGaWxlLmdldCgpLCBHX0ZJTEVf
TU9OSVRPUl9FVkVOVF9DUkVBVEVEKTsKKworICAgIGdfYXNzZXJ0X3RydWUoZ19maWxlX3Rlc3Qo
aXRwRGlyZWN0b3J5LCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKKyAgICBnX2Fzc2VydF90cnVlKGdf
ZmlsZV90ZXN0KGl0cExvZ0ZpbGUuZ2V0KCksIEdfRklMRV9URVNUX0lTX1JFR1VMQVIpKTsKKwor
ICAgIC8vIENsZWFyIGFsbC4KKyAgICBzdGF0aWMgY29uc3QgV2ViS2l0V2Vic2l0ZURhdGFUeXBl
cyBjYWNoZUFuZElUUCA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhVHlwZXM+KFdFQktJ
VF9XRUJTSVRFX0RBVEFfSVRQIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9NRU1PUllfQ0FDSEUgfCBX
RUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUpOworICAgIHRlc3QtPmNsZWFyKGNhY2hlQW5k
SVRQLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxGaWxlQ2hhbmdlZChpdHBMb2dGaWxlLmdldCgp
LCBHX0ZJTEVfTU9OSVRPUl9FVkVOVF9ERUxFVEVEKTsKKworICAgIHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9zZXRfaXRwX2VuYWJsZWQodGVzdC0+bV9tYW5hZ2VyLCBGQUxTRSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxl
ZCh0ZXN0LT5tX21hbmFnZXIpKTsKKworICAgIGdfcm1kaXIoaXRwRGlyZWN0b3J5KTsKK30KKwog
dm9pZCBiZWZvcmVBbGwoKQogewogICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigp
OwpAQCAtNjM2LDYgKzY5Myw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJzaXRlRGF0YVRl
c3Q6OmFkZCgiV2ViS2l0V2Vic2l0ZURhdGEiLCAiaHN0cyIsIHRlc3RXZWJzaXRlRGF0YUhzdHMp
OwogI2VuZGlmCiAgICAgV2Vic2l0ZURhdGFUZXN0OjphZGQoIldlYktpdFdlYnNpdGVEYXRhIiwg
ImRldmljZWlkaGFzaHNhbHQiLCB0ZXN0V2Vic2l0ZURhdGFEZXZpY2VJZEhhc2hTYWx0KTsKKyAg
ICBXZWJzaXRlRGF0YVRlc3Q6OmFkZCgiV2ViS2l0V2Vic2l0ZURhdGEiLCAiaXRwIiwgdGVzdFdl
YnNpdGVEYXRhSVRQKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvVGVzdEV4cGVjdGF0aW9ucy5qc29uIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMuanNvbgppbmRleCAwMTU2OTZhZjA3YWEuLjNhMWEy
ZDVhYzY4YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1Rlc3RFeHBlY3Rh
dGlvbnMuanNvbgorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvVGVzdEV4cGVjdGF0aW9u
cy5qc29uCkBAIC01Nyw5ICs1Nyw2IEBACiAgICAgICAgICAgICAiL3dlYmtpdC9XZWJLaXRXZWJz
aXRlRGF0YS9zdG9yYWdlIjogewogICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHsid3BlIjog
eyJzdGF0dXMiOiBbIlBBU1MiLCAiRkFJTCJdfX0KICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAiL3dlYmtpdC9XZWJLaXRXZWJzaXRlRGF0YS9yZXNvdXJjZS1sb2FkLXN0YXRpc3RpY3MiOiB7
Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJ3cGUiOiB7InN0YXR1cyI6IFsiUEFTUyIs
ICJGQUlMIl19fQotICAgICAgICAgICAgfSwKICAgICAgICAgICAgICIvd2Via2l0L1dlYktpdFdl
YnNpdGVEYXRhL2NvbmZpZ3VyYXRpb24iOiB7CiAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjog
eyJndGsiOiB7InN0YXR1cyI6IFsiUEFTUyIsICJGQUlMIl0sICJidWciOiAid2Via2l0Lm9yZy9i
LzIwNTQ0MSJ9fQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1Rlc3RNYWluLmgKaW5kZXggYjg3MDQ4OWQ2YzI4Li5lZTRmNzEzZWVlOGQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaApAQCAt
MTI0LDEwICsxMjQsMTIgQEAgcHVibGljOgogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShkYXRhRGlyZWN0b3J5KCksICJh
cHBjYWNoZSIsIG51bGxwdHIpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB3ZWJTUUxEaXJl
Y3RvcnkoZ19idWlsZF9maWxlbmFtZShkYXRhRGlyZWN0b3J5KCksICJ3ZWJzcWwiLCBudWxscHRy
KSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gaHN0c0RpcmVjdG9yeShnX2J1aWxkX2ZpbGVu
YW1lKGRhdGFEaXJlY3RvcnkoKSwgImhzdHMiLCBudWxscHRyKSk7CisgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gaXRwRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZGF0YURpcmVjdG9yeSgpLCAi
aXRwIiwgbnVsbHB0cikpOwogICAgICAgICBHUmVmUHRyPFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
cj4gd2Vic2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9uZXcoCiAgICAgICAgICAgICAibG9jYWwtc3RvcmFnZS1kaXJlY3RvcnkiLCBsb2NhbFN0
b3JhZ2VEaXJlY3RvcnkuZ2V0KCksICJpbmRleGVkZGItZGlyZWN0b3J5IiwgaW5kZXhlZERCRGly
ZWN0b3J5LmdldCgpLAogICAgICAgICAgICAgImRpc2stY2FjaGUtZGlyZWN0b3J5IiwgZGlza0Nh
Y2hlRGlyZWN0b3J5LmdldCgpLCAib2ZmbGluZS1hcHBsaWNhdGlvbi1jYWNoZS1kaXJlY3Rvcnki
LCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpLAotICAgICAgICAgICAgIndlYnNxbC1k
aXJlY3RvcnkiLCB3ZWJTUUxEaXJlY3RvcnkuZ2V0KCksICJoc3RzLWNhY2hlLWRpcmVjdG9yeSIs
IGhzdHNEaXJlY3RvcnkuZ2V0KCksIG51bGxwdHIpKTsKKyAgICAgICAgICAgICJ3ZWJzcWwtZGly
ZWN0b3J5Iiwgd2ViU1FMRGlyZWN0b3J5LmdldCgpLCAiaHN0cy1jYWNoZS1kaXJlY3RvcnkiLCBo
c3RzRGlyZWN0b3J5LmdldCgpLAorICAgICAgICAgICAgIml0cC1kaXJlY3RvcnkiLCBpdHBEaXJl
Y3RvcnkuZ2V0KCksIG51bGxwdHIpKTsKIAogICAgICAgICBtX3dlYkNvbnRleHQgPSBhZG9wdEdS
ZWYoV0VCS0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVY
VCwKICAgICAgICAgICAgICJ3ZWJzaXRlLWRhdGEtbWFuYWdlciIsIHdlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dl
YlZpZXdUZXN0LmNwcAppbmRleCA4ZTNmMzQ4ZDhhYjUuLjAyMTViYWUxMTI3MSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApA
QCAtMjM2LDYgKzIzNiwyNCBAQCB2b2lkIFdlYlZpZXdUZXN0OjpzZXRFZGl0YWJsZShib29sIGVk
aXRhYmxlKQogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfZWRpdGFibGUobV93ZWJWaWV3LCBlZGl0
YWJsZSk7CiB9CiAKK3N0YXRpYyB2b2lkIGRpcmVjdG9yeUNoYW5nZWRDYWxsYmFjayhHRmlsZU1v
bml0b3IqLCBHRmlsZSogZmlsZSwgR0ZpbGUqLCBHRmlsZU1vbml0b3JFdmVudCBldmVudCwgV2Vi
Vmlld1Rlc3QqIHRlc3QpCit7CisgICAgaWYgKGV2ZW50ID09IHRlc3QtPm1fZXhwZWN0ZWRGaWxl
Q2hhbmdlRXZlbnQgJiYgZ19maWxlX2VxdWFsKGZpbGUsIHRlc3QtPm1fbW9uaXRvcmVkRmlsZS5n
ZXQoKSkpCisgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworfQorCit2b2lkIFdlYlZpZXdU
ZXN0Ojp3YWl0VW50aWxGaWxlQ2hhbmdlZChjb25zdCBjaGFyKiBmaWxlbmFtZSwgR0ZpbGVNb25p
dG9yRXZlbnQgZXZlbnQpCit7CisgICAgbV9tb25pdG9yZWRGaWxlID0gYWRvcHRHUmVmKGdfZmls
ZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUpKTsKKyAgICBtX2V4cGVjdGVkRmlsZUNoYW5nZUV2ZW50
ID0gZXZlbnQ7CisgICAgR1JlZlB0cjxHRmlsZT4gZGlyZWN0b3J5ID0gYWRvcHRHUmVmKGdfZmls
ZV9nZXRfcGFyZW50KG1fbW9uaXRvcmVkRmlsZS5nZXQoKSkpOworICAgIEdSZWZQdHI8R0ZpbGVN
b25pdG9yPiBtb25pdG9yID0gYWRvcHRHUmVmKGdfZmlsZV9tb25pdG9yX2RpcmVjdG9yeShkaXJl
Y3RvcnkuZ2V0KCksIEdfRklMRV9NT05JVE9SX05PTkUsIG51bGxwdHIsIG51bGxwdHIpKTsKKyAg
ICBnX2Fzc2VydChtb25pdG9yLmdldCgpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1vbml0b3Iu
Z2V0KCksICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhkaXJlY3RvcnlDaGFuZ2VkQ2FsbGJhY2spLCB0
aGlzKTsKKyAgICBpZiAoIWdfZmlsZV9xdWVyeV9leGlzdHMobV9tb25pdG9yZWRGaWxlLmdldCgp
LCBudWxscHRyKSkKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworfQorCiBz
dGF0aWMgdm9pZCByZXNvdXJjZUdldERhdGFDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3lu
Y1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkKIHsKICAgICBzaXplX3QgZGF0YVNp
emU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJW
aWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rl
c3QuaAppbmRleCBjM2ZkZDk4MjU4OTEuLjYwYzMzZWVkYjk1NiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oCkBAIC01Miw2ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIHZvaWQg
d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oY29uc3QgY2hhciogZXhwZWN0ZWRUaXRsZSk7CiAgICAg
dm9pZCB3YWl0VW50aWxUaXRsZUNoYW5nZWQoKTsKKyAgICB2b2lkIHdhaXRVbnRpbEZpbGVDaGFu
Z2VkKGNvbnN0IGNoYXIqLCBHRmlsZU1vbml0b3JFdmVudCk7CiAgICAgdm9pZCByZXNpemVWaWV3
KGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgICAgdm9pZCBoaWRlVmlldygpOwogICAgIHZvaWQg
c2VsZWN0QWxsKCk7CkBAIC0xMTEsNiArMTEyLDggQEAgcHVibGljOgogICAgIHNpemVfdCBtX3Jl
c291cmNlRGF0YVNpemUgeyAwIH07CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBtX3N1cmZhY2UgeyBu
dWxscHRyIH07CiAgICAgYm9vbCBtX2V4cGVjdGVkV2ViUHJvY2Vzc0NyYXNoIHsgZmFsc2UgfTsK
KyAgICBHUmVmUHRyPEdGaWxlPiBtX21vbml0b3JlZEZpbGU7CisgICAgR0ZpbGVNb25pdG9yRXZl
bnQgbV9leHBlY3RlZEZpbGVDaGFuZ2VFdmVudDsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBH
dGtXaWRnZXQqIG1fcGFyZW50V2luZG93IHsgbnVsbHB0ciB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401893</attachid>
            <date>2020-06-15 06:20:44 -0700</date>
            <delta_ts>2020-06-15 06:20:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk2-itp.diff</filename>
            <type>text/plain</type>
            <size>36425</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZWJlYmJkMzM3NTMzLi4yMjBlNzVjMzE0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMjAtMDYtMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIEFQSSB0byBjb25maWd1cmUgYW5kIGVu
YWJsZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Nzk0MworCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hh
ZWwgQ2F0YW56YXJvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNp
dGVEYXRhLmNwcDoKKyAgICAgICAgKHJlY29yZENvbnRhaW5zU3VwcG9ydGVkRGF0YVR5cGVzKToK
KyAgICAgICAgKHRvV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRX
ZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0
YU1hbmFnZXJTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJD
b25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3Nf
aW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUpOgor
ICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZGlyZWN0b3J5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfaXRwX2VuYWJsZWQpOgor
ICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxlZCk6Cisg
ICAgICAgICh0b1dlYnNpdGVEYXRhVHlwZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYnNpdGVEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93
ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0V2Vic2l0ZURhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dw
ZS0xLjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOgorCiAyMDIwLTA2LTE1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVd
IEFkZCBBUEkgdG8gZXhwb3NlIFVJQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNp
dGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNp
dGVEYXRhLmNwcAppbmRleCBkZDhmY2RmOTlmZWEuLmZjMGZmOWMyODNiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhLmNw
cApAQCAtNzgsNyArNzgsOCBAQCBzdGF0aWMgYm9vbCByZWNvcmRDb250YWluc1N1cHBvcnRlZERh
dGFUeXBlcyhjb25zdCBXZWJzaXRlRGF0YVJlY29yZCYgcmVjb3JkKQogICAgICAgICBXZWJzaXRl
RGF0YVR5cGU6OlBsdWdJbkRhdGEsCiAjZW5kaWYKICAgICAgICAgV2Vic2l0ZURhdGFUeXBlOjpD
b29raWVzLAotICAgICAgICBXZWJzaXRlRGF0YVR5cGU6OkRldmljZUlkSGFzaFNhbHQKKyAgICAg
ICAgV2Vic2l0ZURhdGFUeXBlOjpEZXZpY2VJZEhhc2hTYWx0LAorICAgICAgICBXZWJzaXRlRGF0
YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MKICAgICB9KTsKIH0KIApAQCAtMTA5LDYgKzEx
MCw4IEBAIHN0YXRpYyBXZWJLaXRXZWJzaXRlRGF0YVR5cGVzIHRvV2ViS2l0V2Vic2l0ZURhdGFU
eXBlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlCiAgICAgICAgIHJldHVyblZhbHVlIHw9IFdF
QktJVF9XRUJTSVRFX0RBVEFfQ09PS0lFUzsKICAgICBpZiAodHlwZXMuY29udGFpbnMoV2Vic2l0
ZURhdGFUeXBlOjpEZXZpY2VJZEhhc2hTYWx0KSkKICAgICAgICAgcmV0dXJuVmFsdWUgfD0gV0VC
S0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUOworICAgIGlmICh0eXBlcy5jb250
YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpKQorICAgICAgICBy
ZXR1cm5WYWx1ZSB8PSBXRUJLSVRfV0VCU0lURV9EQVRBX0lUUDsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGFUeXBlcz4ocmV0dXJuVmFsdWUpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmNwcAppbmRleCA5ODljNDMzOWZiY2IuLjBiNjlkNmU4OWUyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJzaXRlRGF0YU1hbmFnZXIuY3BwCkBAIC04Niw2ICs4Niw3IEBAIGVudW0gewogICAgIFBST1Bf
SU5ERVhFRERCX0RJUkVDVE9SWSwKICAgICBQUk9QX1dFQlNRTF9ESVJFQ1RPUlksCiAgICAgUFJP
UF9IU1RTX0NBQ0hFX0RJUkVDVE9SWSwKKyAgICBQUk9QX0lUUF9ESVJFQ1RPUlksCiAgICAgUFJP
UF9JU19FUEhFTUVSQUwKIH07CiAKQEAgLTEwNCw2ICsxMDUsNyBAQCBzdHJ1Y3QgX1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlclByaXZhdGUgewogICAgIEdVbmlxdWVQdHI8Y2hhcj4gaW5kZXhlZERC
RGlyZWN0b3J5OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gd2ViU1FMRGlyZWN0b3J5OwogICAgIEdV
bmlxdWVQdHI8Y2hhcj4gaHN0c0NhY2hlRGlyZWN0b3J5OworICAgIEdVbmlxdWVQdHI8Y2hhcj4g
aXRwRGlyZWN0b3J5OwogCiAgICAgR1JlZlB0cjxXZWJLaXRDb29raWVNYW5hZ2VyPiBjb29raWVN
YW5hZ2VyOwogICAgIFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+IHByb2Nlc3NQb29sczsKQEAgLTE0
Miw2ICsxNDQsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgRwogICAgIGNhc2UgUFJPUF9IU1RT
X0NBQ0hFX0RJUkVDVE9SWToKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0lUUF9ESVJFQ1RPUlk6CisgICAgICAg
IGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9pdHBfZGlyZWN0b3J5KG1hbmFnZXIpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9Q
X0lTX0VQSEVNRVJBTDoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTc5LDYgKzE4NCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlclNldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElELCBjCiAgICAgY2Fz
ZSBQUk9QX0hTVFNfQ0FDSEVfRElSRUNUT1JZOgogICAgICAgICBtYW5hZ2VyLT5wcml2LT5oc3Rz
Q2FjaGVEaXJlY3RvcnkucmVzZXQoZ192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9JVFBfRElSRUNUT1JZOgorICAgICAgICBtYW5hZ2VyLT5w
cml2LT5pdHBEaXJlY3RvcnkucmVzZXQoZ192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKSk7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9JU19FUEhFTUVSQUw6CiAgICAgICAgIGlmIChnX3Zh
bHVlX2dldF9ib29sZWFuKHZhbHVlKSkKICAgICAgICAgICAgIG1hbmFnZXItPnByaXYtPndlYnNp
dGVEYXRhU3RvcmUgPSBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3Rl
bnQoKTsKQEAgLTIwMCw2ICsyMDgsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJzaXRlRGF0YU1h
bmFnZXJDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgICAgICAgICBwcml2LT5pbmRl
eGVkREJEaXJlY3RvcnkucmVzZXQoZ19idWlsZF9maWxlbmFtZShwcml2LT5iYXNlRGF0YURpcmVj
dG9yeS5nZXQoKSwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIiLCBudWxscHRyKSk7CiAgICAgICAg
IGlmICghcHJpdi0+d2ViU1FMRGlyZWN0b3J5KQogICAgICAgICAgICAgcHJpdi0+d2ViU1FMRGly
ZWN0b3J5LnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0
KCksICJkYXRhYmFzZXMiLCBudWxscHRyKSk7CisgICAgICAgIGlmICghcHJpdi0+aXRwRGlyZWN0
b3J5KQorICAgICAgICAgICAgcHJpdi0+aXRwRGlyZWN0b3J5LnJlc2V0KGdfYnVpbGRfZmlsZW5h
bWUocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0KCksICJpdHAiLCBudWxscHRyKSk7CiAgICAg
fQogCiAgICAgaWYgKHByaXYtPmJhc2VDYWNoZURpcmVjdG9yeSkgewpAQCAtMzYwLDYgKzM3MCwy
MyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xhc3NfaW5pdChX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXJDbGFzcwogICAgICAgICAgICAgbnVsbHB0ciwKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwg
R19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYnNp
dGVEYXRhTWFuYWdlcjppdHAtZGlyZWN0b3J5OgorICAgICAqCisgICAgICogVGhlIGRpcmVjdG9y
eSB3aGVyZSBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIChJVFApIGRhdGEgd2lsbCBi
ZSBzdG9yZWQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4zMAorICAgICAqLworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAg
ICAgUFJPUF9JVFBfRElSRUNUT1JZLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAorICAg
ICAgICAgICAgIml0cC1kaXJlY3RvcnkiLAorICAgICAgICAgICAgXygiSVRQIERpcmVjb3J5Iiks
CisgICAgICAgICAgICBfKCJUaGUgZGlyZWN0b3J5IHdoZXJlIEludGVsbGlnZW50IFRyYWNraW5n
IFByZXZlbnRpb24gZGF0YSB3aWxsIGJlIHN0b3JlZCIpLAorICAgICAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdS
SVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKwogICAgIC8qKgogICAgICAqIFdlYktp
dFdlYnNpdGVEYXRhTWFuYWdlcjppcy1lcGhlbWVyYWw6CiAgICAgICoKQEAgLTM5OCw2ICs0MjUs
OCBAQCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdl
dERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YQogICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5
LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5
KCFwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkgPwogICAgICAgICAgICAgV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0SFNUU0RpcmVjdG9yeSgpIDogRmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkuZ2V0KCkp
KTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSghcHJpdi0+aXRwRGlyZWN0b3J5ID8KKyAgICAgICAgICAgIFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSA6IEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aXRwRGlyZWN0
b3J5LmdldCgpKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSgpKTsKICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbiksIFBBTDo6U2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogICAgIH0KQEAgLTY1OSw2ICs2ODgsMjkgQEAg
Y29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNoZV9k
aXJlY3RvcnkoV2ViS2l0V2Vic2l0ZUQKICAgICByZXR1cm4gcHJpdi0+aHN0c0NhY2hlRGlyZWN0
b3J5LmdldCgpOwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
aXRwX2RpcmVjdG9yeToKKyAqIEBtYW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIK
KyAqCisgKiBHZXQgdGhlICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI6aXRwLWRpcmVjdG9yeSBw
cm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiAoYWxsb3ctbm9uZSk6IHRoZSBkaXJlY3Rvcnkgd2hl
cmUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiBkYXRhIGlzIHN0b3JlZCBvciAlTlVM
TCBpZiBAbWFuYWdlciBpcyBlcGhlbWVyYWwuCisgKgorICogU2luY2U6IDIuMzAKKyAqLworY29u
c3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2RpcmVjdG9yeShX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpLCBudWxscHRyKTsK
KworICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlclByaXZhdGUqIHByaXYgPSBtYW5hZ2VyLT5w
cml2OworICAgIGlmIChwcml2LT53ZWJzaXRlRGF0YVN0b3JlICYmICFwcml2LT53ZWJzaXRlRGF0
YVN0b3JlLT5pc1BlcnNpc3RlbnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBp
ZiAoIXByaXYtPml0cERpcmVjdG9yeSkKKyAgICAgICAgcHJpdi0+aXRwRGlyZWN0b3J5LnJlc2V0
KGdfc3RyZHVwKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgcmV0dXJuIHByaXYtPml0
cERpcmVjdG9yeS5nZXQoKTsKK30KKwogLyoqCiAgKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyOgogICogQG1hbmFnZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlcgpAQCAtNjc5LDYgKzczMSw0MiBAQCBXZWJLaXRDb29raWVNYW5hZ2VyKiB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyKFdlYktpdFdlYnNpdAogICAg
IHJldHVybiBtYW5hZ2VyLT5wcml2LT5jb29raWVNYW5hZ2VyLmdldCgpOwogfQogCisvKioKKyAq
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfaXRwX2VuYWJsZWQ6CisgKiBAbWFuYWdl
cjogYSAjV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyCisgKiBAZW5hYmxlZDogdmFsdWUgdG8gc2V0
CisgKgorICogRW5hYmxlIG9yIGRpc2FibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlv
biAoSVRQKS4gV2hlbiBJVFAgaXMgZW5hYmxlZCByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAq
IGFyZSBjb2xsZWN0ZWQgYW5kIHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIgdG8gYWxsb3cgb3IgYmxv
Y2sgdGhpcmQtcGFydHkgY29va2llcyBhbmQgcHJldmVudCB1c2VyIHRyYWNraW5nLgorICogTm90
ZSB0aGF0IHdoZW4gSVRQIGlzIGVuYWJsZWQgdGhlIHJlc291cmNlcyBmb3Igd2hpY2ggY29va2ll
cyBhcmUgYWxsb3dlZCB3aWxsIGZvbGxvdyB0aGUgYWNjZXB0IHBvbGljeQorICogc2V0IHdpdGgg
d2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRfcG9saWN5KCkuCisgKgorICogU2luY2U6
IDIuMzAKKyAqLwordm9pZCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9lbmFi
bGVkKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciwgZ2Jvb2xlYW4gZW5hYmxlZCkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUiht
YW5hZ2VyKSk7CisKKyAgICB3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUobWFu
YWdlcikuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKKy8q
KgorICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxlZDoKKyAqIEBt
YW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKKyAqCisgKiBHZXQgd2hldGhlciBJ
bnRlbGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIChJVFApIGlzIGVuYWJsZWQgb3Igbm90Lgor
ICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIElUUCBpcyBlbmFibGVkLCBvciAlRkFMU0Ugb3RoZXJ3
aXNlLgorICoKKyAqIFNpbmNlOiAyLjMwCisgKi8KK2dib29sZWFuIHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfaXRwX2VuYWJsZWQoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBtYW5h
Z2VyKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJTSVRFX0RBVEFf
TUFOQUdFUihtYW5hZ2VyKSwgRkFMU0UpOworCisgICAgcmV0dXJuIHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckdldERhdGFTdG9yZShtYW5hZ2VyKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCgpOworfQorCiBzdGF0aWMgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0
YVR5cGVzKFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgdHlwZXMpCiB7CiAgICAgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gcmV0dXJuVmFsdWU7CkBAIC03MDYsNiArNzk0LDggQEAgc3RhdGljIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlcyhXZWJLaXRXZWJzaXRl
RGF0YVR5cGVzIHR5cGUKICAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6
Q29va2llcyk7CiAgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURf
SEFTSF9TQUxUKQogICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEZXZp
Y2VJZEhhc2hTYWx0KTsKKyAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0lUUCkK
KyAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyk7CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhLmgKaW5kZXggOWM0ZDgx
NDU4NGY5Li5iMWUwZTM5NjQyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdFdlYnNpdGVEYXRhIFdlYktpdFdlYnNpdGVEYXRhOwogICogQFdFQktJVF9X
RUJTSVRFX0RBVEFfQ09PS0lFUzogQ29va2llcy4KICAqIEBXRUJLSVRfV0VCU0lURV9EQVRBX0RF
VklDRV9JRF9IQVNIX1NBTFQ6IEhhc2ggc2FsdCB1c2VkIHRvIGdlbmVyYXRlIHRoZSBkZXZpY2Ug
aWRzIHVzZWQgYnkgd2VicGFnZXMuIFNpbmNlIDIuMjQKICAqIEBXRUJLSVRfV0VCU0lURV9EQVRB
X0hTVFNfQ0FDSEU6IEhTVFMgY2FjaGUuIFNpbmNlIDIuMjYKKyAqIEBXRUJLSVRfV0VCU0lURV9E
QVRBX0lUUDogSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiBkYXRhLiBTaW5jZSAyLjMw
LgogICogQFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMOiBBbGwgdHlwZXMuCiAgKgogICogRW51bSB2
YWx1ZXMgd2l0aCBmbGFncyByZXByZXNlbnRpbmcgdHlwZXMgb2YgV2Vic2l0ZSBkYXRhLgpAQCAt
NjQsNyArNjUsOCBAQCB0eXBlZGVmIGVudW0gewogICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQ09P
S0lFUyAgICAgICAgICAgICAgICAgICA9IDEgPDwgOCwKICAgICBXRUJLSVRfV0VCU0lURV9EQVRB
X0RFVklDRV9JRF9IQVNIX1NBTFQgICAgICAgPSAxIDw8IDksCiAgICAgV0VCS0lUX1dFQlNJVEVf
REFUQV9IU1RTX0NBQ0hFICAgICAgICAgICAgICAgID0gMSA8PCAxMCwKLSAgICBXRUJLSVRfV0VC
U0lURV9EQVRBX0FMTCAgICAgICAgICAgICAgICAgICAgICAgPSAoMSA8PCAxMSkgLSAxCisgICAg
V0VCS0lUX1dFQlNJVEVfREFUQV9JVFAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxMSwK
KyAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0FMTCAgICAgICAgICAgICAgICAgICAgICAgPSAoMSA8
PCAxMikgLSAxCiB9IFdlYktpdFdlYnNpdGVEYXRhVHlwZXM7CiAKIFdFQktJVF9BUEkgR1R5cGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5oCmluZGV4IGQyNGNkMGI3Yjg1Zi4uMTZmMDQ3MzE2NzU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRh
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLmgKQEAgLTkzLDkgKzkzLDE5IEBAIHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0
V2ViCiBXRUJLSVRfQVBJIGNvbnN0IGdjaGFyICoKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKIAorV0VCS0lUX0FQSSBjb25zdCBnY2hhciAqCit3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2l0cF9kaXJlY3RvcnkgICAgICAgICAgICAgICAg
ICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlcik7CisKIFdFQktJVF9B
UEkgV2ViS2l0Q29va2llTWFuYWdlciAqCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X2Nvb2tpZV9tYW5hZ2VyICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRh
TWFuYWdlciAqbWFuYWdlcik7CiAKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX3NldF9pdHBfZW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAg
ICAgICAgICAgICAgICAgZW5hYmxlZCk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2VuYWJsZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKKwogV0VCS0lUX0FQSSB2
b2lkCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2ggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyAgICB0eXBlcywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0
aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IGMwMDU1NDZmMDBjOS4uOTdmYmU5ZDJkNzZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKQEAgLTE0NTgsNyArMTQ1OCwxMCBAQCB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGly
ZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3Rv
cnkKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeQogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeQord2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZGlyZWN0b3J5CiB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfc2V0X2l0cF9lbmFibGVkCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2l0cF9l
bmFibGVkCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2gKIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9mZXRjaF9maW5pc2gKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9y
ZW1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
V2Vic2l0ZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
c2l0ZURhdGEuaAppbmRleCA5NzNhNTUwNTYwZmUuLmNkN2IzZWUyNzgzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGEuaApAQCAt
NDYsNiArNDYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2Vic2l0ZURhdGEgV2ViS2l0V2Vi
c2l0ZURhdGE7CiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTOiBDb29raWVzLgogICog
QFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVDogSGFzaCBzYWx0IHVzZWQg
dG8gZ2VuZXJhdGUgdGhlIGRldmljZSBpZHMgdXNlZCBieSB3ZWJwYWdlcy4gU2luY2UgMi4yNAog
ICogQFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRTogSFNUUyBjYWNoZS4gU2luY2UgMi4y
NgorICogQFdFQktJVF9XRUJTSVRFX0RBVEFfSVRQOiBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2
ZW50aW9uIGRhdGEuIFNpbmNlIDIuMzAuCiAgKiBAV0VCS0lUX1dFQlNJVEVfREFUQV9BTEw6IEFs
bCB0eXBlcy4KICAqCiAgKiBFbnVtIHZhbHVlcyB3aXRoIGZsYWdzIHJlcHJlc2VudGluZyB0eXBl
cyBvZiBXZWJzaXRlIGRhdGEuCkBAIC02NCw3ICs2NSw4IEBAIHR5cGVkZWYgZW51bSB7CiAgICAg
V0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTICAgICAgICAgICAgICAgICAgID0gMSA8PCA4LAog
ICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVCAgICAgICA9IDEgPDwg
OSwKICAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUgICAgICAgICAgICAgICAgPSAx
IDw8IDEwLAotICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAgICAgICAgICAgICAgICAg
ICA9ICgxIDw8IDExKSAtIDEKKyAgICBXRUJLSVRfV0VCU0lURV9EQVRBX0lUUCAgICAgICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMICAgICAg
ICAgICAgICAgICAgICAgICA9ICgxIDw8IDEyKSAtIDEKIH0gV2ViS2l0V2Vic2l0ZURhdGFUeXBl
czsKIAogV0VCS0lUX0FQSSBHVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKaW5kZXggZTk5MTUzMjgy
ODAxLi40YTZjZTRiNzM2YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuaApAQCAtOTMsOSArOTMsMTkg
QEAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5ICAgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWIKIFdFQktJVF9BUEkgY29uc3QgZ2NoYXIgKgogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeSAgICAgICAg
ICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIpOwogCitXRUJLSVRf
QVBJIGNvbnN0IGdjaGFyICoKK3dlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2Rp
cmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
ICptYW5hZ2VyKTsKKwogV0VCS0lUX0FQSSBXZWJLaXRDb29raWVNYW5hZ2VyICoKIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfY29va2llX21hbmFnZXIgICAgICAgICAgICAgICAgICAg
ICAgICAoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyKTsKIAorV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9lbmFibGVkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICBlbmFibGVkKTsKKworV0VCS0lU
X0FQSSBnYm9vbGVhbgord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1h
bmFnZXIpOworCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9m
ZXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyICptYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRXZWJzaXRlRGF0YVR5cGVz
ICAgIHR5cGVzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9k
b2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CmluZGV4IGI5NDI5YmI2NWQwMC4uMWRkMzVjNzVl
OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3Bl
LTEuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9k
b2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0xMzkyLDcgKzEzOTIsMTAgQEAgd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9y
eQogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5CiB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkKIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkKK3dlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2RpcmVjdG9yeQogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9jb29raWVfbWFuYWdlcgord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3Nl
dF9pdHBfZW5hYmxlZAord2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxl
ZAogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoCiB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZmV0Y2hfZmluaXNoCiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfcmVtb3Zl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9y
ZUdMaWIuY3BwCmluZGV4IDhlYThlYTJmMzFmOS4uOTM0OWFmNTAyOTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcApA
QCAtOTEsNyArOTEsNyBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SFNU
U0RpcmVjdG9yeSgpCiAKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gd2Vic2l0ZURhdGFE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJfU0VQ
QVJBVE9SX1MgInJlc291cmNlbG9hZHN0YXRpc3RpY3MiKTsKKyAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oQkFTRV9ESVJFQ1RPUlkgR19ESVJf
U0VQQVJBVE9SX1MgIml0cCIpOwogfQogCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYg
ZGlyZWN0b3J5TmFtZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBiNjRmOWNlMmI0MmIuLmVmZWExYTA0ZjYzNyAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA2
LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gY29uZmlndXJlIGFuZCBlbmFibGUgcmVzb3VyY2UgbG9h
ZCBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzc5NDMKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIENhdGFuemFyby4KKwor
ICAgICAgICBBZGQgLS1lbmFibGUtaXRwIGNvbW1hbmQgbGluZSB2ZXJzaW9uIHRvIE1pbmlCcm93
c2VyIGFuZCB1bml0IHRlc3RzIHRvIGNoZWNrIHRoZSBuZXcgQVBJLgorCisgICAgICAgICogTWlu
aUJyb3dzZXIvZ3RrL21haW4uYzoKKyAgICAgICAgKGdvdFdlYnNpdGVEYXRhQ2FsbGJhY2spOgor
ICAgICAgICAoYWN0aXZhdGUpOgorICAgICAgICAqIE1pbmlCcm93c2VyL3dwZS9tYWluLmNwcDoK
KyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2Vic2l0ZURhdGEuY3BwOgorICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAg
ICAodGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbik6CisgICAgICAgICh0ZXN0V2Vic2l0ZURh
dGFFcGhlbWVyYWwpOgorICAgICAgICAodGVzdFdlYnNpdGVEYXRhSVRQKToKKyAgICAgICAgKGJl
Zm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMu
anNvbjoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5o
OgorICAgICAgICAoVGVzdDo6VGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAoZGlyZWN0b3J5Q2hhbmdlZENhbGxi
YWNrKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojp3YWl0VW50aWxGaWxlQ2hhbmdlZCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaDoKKwogMjAy
MC0wNi0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIGV4cG9zZSBVSUNsaWVudDo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NDb25maXJtCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5j
IGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwppbmRleCAwYjIzNjYyMGQ5YzcuLmRjZTg1
MDEwZTE5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYworKysgYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC01Myw2ICs1Myw3IEBAIHN0YXRpYyBjb25z
dCBjaGFyICpjb29raWVzRmlsZTsKIHN0YXRpYyBjb25zdCBjaGFyICpjb29raWVzUG9saWN5Owog
c3RhdGljIGNvbnN0IGNoYXIgKnByb3h5Owogc3RhdGljIGdib29sZWFuIGRhcmtNb2RlOworc3Rh
dGljIGdib29sZWFuIGVuYWJsZUlUUDsKIHN0YXRpYyBnYm9vbGVhbiBwcmludFZlcnNpb247CiAK
IHR5cGVkZWYgZW51bSB7CkBAIC0xMjAsNiArMTIxLDcgQEAgc3RhdGljIGNvbnN0IEdPcHRpb25F
bnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9CiAgICAgeyAiaWdub3JlLWhvc3QiLCAwLCAwLCBH
X09QVElPTl9BUkdfU1RSSU5HX0FSUkFZLCAmaWdub3JlSG9zdHMsICJTZXQgcHJveHkgaWdub3Jl
IGhvc3RzIiwgIkhPU1RTIiB9LAogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19P
UFRJT05fQVJHX05PTkUsICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIE5V
TEwgfSwKICAgICB7ICJjb250ZW50LWZpbHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFN
RSwgJmNvbnRlbnRGaWx0ZXIsICJKU09OIHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAi
RklMRSIgfSwKKyAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZl
bmFibGVJVFAsICJFbmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiAoSVRQKSIs
IE5VTEwgfSwKICAgICB7ICJ2ZXJzaW9uIiwgJ3YnLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJnBy
aW50VmVyc2lvbiwgIlByaW50IHRoZSBXZWJLaXRHVEsgdmVyc2lvbiIsIE5VTEwgfSwKICAgICB7
IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAm
dXJpQXJndW1lbnRzLCAwLCAiW1VSTOKApl0iIH0sCiAgICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAw
IH0KQEAgLTQyMiw2ICs0MjQsNyBAQCBzdGF0aWMgdm9pZCBnb3RXZWJzaXRlRGF0YUNhbGxiYWNr
KFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciwgR0FzeW5jUmVzdQogICAgIGFib3V0
RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIlBsdWdpbnMgRGF0
YSIsIFdFQktJVF9XRUJTSVRFX0RBVEFfUExVR0lOX0RBVEEsIE5VTEwsIHBhZ2VJRCk7CiAgICAg
YWJvdXREYXRhRmlsbFRhYmxlKHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiT2ZmbGlu
ZSBXZWIgQXBwbGljYXRpb25zIENhY2hlIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZMSU5FX0FQ
UExJQ0FUSU9OX0NBQ0hFLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVf
YXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwogICAgIGFib3V0
RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIkhTVFMgQ2FjaGUi
LCBXRUJLSVRfV0VCU0lURV9EQVRBX0hTVFNfQ0FDSEUsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkobWFuYWdlciksIHBhZ2VJRCk7CisgICAgYWJv
dXREYXRhRmlsbFRhYmxlKHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiSVRQIGRhdGEi
LCBXRUJLSVRfV0VCU0lURV9EQVRBX0lUUCwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9pdHBfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwogCiAgICAgcmVzdWx0ID0gZ19zdHJp
bmdfYXBwZW5kKHJlc3VsdCwgIjwvYm9keT48L2h0bWw+Iik7CiAgICAgZ3NpemUgc3RyZWFtTGVu
Z3RoID0gcmVzdWx0LT5sZW47CkBAIC01MzEsNiArNTM0LDcgQEAgc3RhdGljIHZvaWQgc3RhcnR1
cChHQXBwbGljYXRpb24gKmFwcGxpY2F0aW9uKQogc3RhdGljIHZvaWQgYWN0aXZhdGUoR0FwcGxp
Y2F0aW9uICphcHBsaWNhdGlvbiwgV2ViS2l0U2V0dGluZ3MgKndlYmtpdFNldHRpbmdzKQogewog
ICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciA9IChwcml2YXRlTW9kZSB8fCBh
dXRvbWF0aW9uTW9kZSkgPyB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3X2VwaGVtZXJh
bCgpIDogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX25ldyhOVUxMKTsKKyAgICB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9lbmFibGVkKG1hbmFnZXIsIGVuYWJsZUlUUCk7
CiAgICAgV2ViS2l0V2ViQ29udGV4dCAqd2ViQ29udGV4dCA9IGdfb2JqZWN0X25ldyhXRUJLSVRf
VFlQRV9XRUJfQ09OVEVYVCwgIndlYnNpdGUtZGF0YS1tYW5hZ2VyIiwgbWFuYWdlciwgInByb2Nl
c3Mtc3dhcC1vbi1jcm9zcy1zaXRlLW5hdmlnYXRpb24tZW5hYmxlZCIsIFRSVUUsCiAjaWYgIUdU
S19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQogICAgICAgICAidXNlLXN5c3RlbS1hcHBlYXJhbmNl
LWZvci1zY3JvbGxiYXJzIiwgRkFMU0UsCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93
cGUvbWFpbi5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKaW5kZXggZmRlMjRh
N2NjOGNlLi5kNmMxNjRmYmE4ZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dwZS9t
YWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93cGUvbWFpbi5jcHAKQEAgLTQ4LDYgKzQ4
LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNvb2tpZXNGaWxlOwogc3RhdGljIGNvbnN0IGNoYXIq
IGNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29uc3QgY2hhciogcHJveHk7CiBjb25zdCBjaGFyKiBi
Z0NvbG9yOworc3RhdGljIGdib29sZWFuIGVuYWJsZUlUUDsKIHN0YXRpYyBnYm9vbGVhbiBwcmlu
dFZlcnNpb247CiBzdGF0aWMgR0hhc2hUYWJsZSogb3BlblZpZXdzOwogCkBAIC02Myw2ICs2NCw3
IEBAIHN0YXRpYyBjb25zdCBHT3B0aW9uRW50cnkgY29tbWFuZExpbmVPcHRpb25zW10gPQogICAg
IHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZpZ25vcmVU
TFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIG51bGxwdHIgfSwKICAgICB7ICJjb250ZW50
LWZpbHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNvbnRlbnRGaWx0ZXIsICJK
U09OIHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIgfSwKICAgICB7ICJiZy1j
b2xvciIsIDAsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZiZ0NvbG9yLCAiV2luZG93IGJhY2tn
cm91bmQgY29sb3IuIERlZmF1bHQ6IHdoaXRlIiwgIkNPTE9SIiB9LAorICAgIHsgImVuYWJsZS1p
dHAiLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmVuYWJsZUlUUCwgIkVuYWJsZSBJbnRlbGxp
Z2VudCBUcmFja2luZyBQcmV2ZW50aW9uIChJVFApIiwgbnVsbHB0ciB9LAogICAgIHsgInZlcnNp
b24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJpbnQgdGhl
IFdQRSB2ZXJzaW9uIiwgbnVsbHB0ciB9LAogICAgIHsgR19PUFRJT05fUkVNQUlOSU5HLCAwLCAw
LCBHX09QVElPTl9BUkdfRklMRU5BTUVfQVJSQVksICZ1cmlBcmd1bWVudHMsIG51bGxwdHIsICJb
VVJMXSIgfSwKICAgICB7IG51bGxwdHIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyIH0KQEAgLTIyMCw3ICsyMjIsMTAgQEAgaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgYXV0byog
d2ViQ29udGV4dCA9IChwcml2YXRlTW9kZSB8fCBhdXRvbWF0aW9uTW9kZSkgPyB3ZWJraXRfd2Vi
X2NvbnRleHRfbmV3X2VwaGVtZXJhbCgpIDogd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0
KCk7CisgICAgYXV0byogbWFuYWdlciA9IChwcml2YXRlTW9kZSB8fCBhdXRvbWF0aW9uTW9kZSkg
PyB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3X2VwaGVtZXJhbCgpIDogd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX25ldyhudWxscHRyKTsKKyAgICB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfc2V0X2l0cF9lbmFibGVkKG1hbmFnZXIsIGVuYWJsZUlUUCk7CisgICAgYXV0byog
d2ViQ29udGV4dCA9IHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFu
YWdlcihtYW5hZ2VyKTsKKyAgICBnX29iamVjdF91bnJlZihtYW5hZ2VyKTsKIAogICAgIGlmIChj
b29raWVzUG9saWN5KSB7CiAgICAgICAgIGF1dG8qIGNvb2tpZU1hbmFnZXIgPSB3ZWJraXRfd2Vi
X2NvbnRleHRfZ2V0X2Nvb2tpZV9tYW5hZ2VyKHdlYkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcApp
bmRleCBkZWQ0YWE0ODcxOTQuLjViNDQwMmJmYTY5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKQEAgLTMz
LDcgKzMzLDEyIEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZl
ciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9lbXB0eSIpKSB7CisgICAgaWYgKGdf
c3RyX2VxdWFsKHBhdGgsICIvIikpIHsKKyAgICAgICAgY29uc3QgY2hhciogaHRtbCA9ICI8aHRt
bD48Ym9keT48L2JvZHk+PC9odG1sPiI7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVu
ZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGh0bWwsIHN0cmxl
bihodG1sKSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJl
c3BvbnNlX2JvZHkpOworICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBT
T1VQX1NUQVRVU19PSyk7CisgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2VtcHR5
IikpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGVtcHR5SFRNTCA9ICI8aHRtbD48Ym9k
eT48L2JvZHk+PC9odG1sPiI7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2Uo
bWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUiLCAiZm9vPWJhcjsgTWF4LUFn
ZT02MCIpOwogICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3NhZ2UtPnJl
c3BvbnNlX2hlYWRlcnMsICJTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5IiwgIm1heC1hZ2U9MzYw
MCIpOwpAQCAtMTY4LDEwICsxNzMsMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ29u
ZmlndXJhdGlvbihXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19h
c3NlcnRfY21wc3RyKGhzdHNDYWNoZURpcmVjdG9yeS5nZXQoKSwgPT0sIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfaHN0c19jYWNoZV9kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7
CiAgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfdGVzdChoc3RzQ2FjaGVEaXJlY3RvcnkuZ2V0KCks
IEdfRklMRV9URVNUX0lTX0RJUikpOwogCisgICAgR1VuaXF1ZVB0cjxjaGFyPiBpdHBEaXJlY3Rv
cnkoZ19idWlsZF9maWxlbmFtZShUZXN0OjpkYXRhRGlyZWN0b3J5KCksICJpdHAiLCBudWxscHRy
KSk7CisgICAgZ19hc3NlcnRfY21wc3RyKGl0cERpcmVjdG9yeS5nZXQoKSwgPT0sIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFnZXIpKTsK
KwogICAgIC8vIENsZWFyIGFsbCBwZXJzaXN0ZW50IGNhY2hlcywgc2luY2UgdGhlIGRhdGEgZGly
IGlzIGNvbW1vbiB0byBhbGwgdGVzdCBjYXNlcy4gTm90ZTogbm90IGNsZWFuaW5nIHRoZSBIU1RT
IGNhY2hlIGhlcmUgYXMgaXRzIGRhdGEKICAgICAvLyBpcyBuZWVkZWQgZm9yIHRoZSBIU1RTIHRl
c3RzLCB3aGVyZSBkYXRhIGNsZWFuaW5nIHdpbGwgYmUgdGVzdGVkLgogICAgIHN0YXRpYyBjb25z
dCBXZWJLaXRXZWJzaXRlRGF0YVR5cGVzIHBlcnNpc3RlbnRDYWNoZXMgPSBzdGF0aWNfY2FzdDxX
ZWJLaXRXZWJzaXRlRGF0YVR5cGVzPihXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUgfCBX
RUJLSVRfV0VCU0lURV9EQVRBX0xPQ0FMX1NUT1JBR0UKLSAgICAgICAgfCBXRUJLSVRfV0VCU0lU
RV9EQVRBX0lOREVYRUREQl9EQVRBQkFTRVMgfCBXRUJLSVRfV0VCU0lURV9EQVRBX09GRkxJTkVf
QVBQTElDQVRJT05fQ0FDSEUgfCBXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNIX1NB
TFQpOworICAgICAgICB8IFdFQktJVF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUyB8
IFdFQktJVF9XRUJTSVRFX0RBVEFfT0ZGTElORV9BUFBMSUNBVElPTl9DQUNIRSB8IFdFQktJVF9X
RUJTSVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVCB8IFdFQktJVF9XRUJTSVRFX0RBVEFfSVRQ
KTsKICAgICB0ZXN0LT5jbGVhcihwZXJzaXN0ZW50Q2FjaGVzLCAwKTsKICAgICBnX2Fzc2VydF9u
dWxsKHRlc3QtPmZldGNoKHBlcnNpc3RlbnRDYWNoZXMpKTsKIApAQCAtMTk4LDYgKzIwNiw4IEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUNvbmZpZ3VyYXRpb24oV2Vic2l0ZURhdGFUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkucmVz
ZXQoZ19idWlsZF9maWxlbmFtZShUZXN0OjpkYXRhRGlyZWN0b3J5KCksICJhcHBsaWNhdGlvbnMi
LCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkoYmFzZURhdGFNYW5h
Z2VyLmdldCgpKSwgPT0sIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogCisgICAg
Z19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2RpcmVj
dG9yeShiYXNlRGF0YU1hbmFnZXIuZ2V0KCkpLCA9PSwgaXRwRGlyZWN0b3J5LmdldCgpKTsKKwog
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tf
Y2FjaGVfZGlyZWN0b3J5KGJhc2VEYXRhTWFuYWdlci5nZXQoKSksID09LCBUZXN0OjpkYXRhRGly
ZWN0b3J5KCkpOwogCiAgICAgLy8gQW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQg
dGFrZXMgcHJlY2VkZW5jZSBvdmVyIGJhc2UgZGlycy4KQEAgLTIwOSw2ICsyMTksNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDb25maWd1cmF0aW9uKFdlYnNpdGVEYXRhVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShiYXNlRGF0
YU1hbmFnZXIuZ2V0KCkpLCA9PSwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSk7CiAg
ICAgLy8gVGhlIHJlc3VsdCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgcHJldmlvdXMgbWFuYWdlci4K
ICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2Nh
bF9zdG9yYWdlX2RpcmVjdG9yeShiYXNlRGF0YU1hbmFnZXIuZ2V0KCkpLCA9PSwgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF9pdHBfZGlyZWN0b3J5KGJhc2VEYXRhTWFuYWdlci5nZXQoKSksID09
LCBpdHBEaXJlY3RvcnkuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KGJhc2VEYXRhTWFuYWdlci5n
ZXQoKSksID09LCBUZXN0OjpkYXRhRGlyZWN0b3J5KCkpOwogfQogCkBAIC0yMzEsMTIgKzI0Miwx
NiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFFcGhlbWVyYWwoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIu
Z2V0KCkpKTsKICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CiAgICAgZ19hc3NlcnRfbnVs
bCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KG1h
bmFnZXIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfaXRwX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CiAKICAgICAvLyBDb25maWd1
cmF0aW9uIGlzIGlnbm9yZWQgd2hlbiBpcy1lcGhlbWVyYWwgaXMgdXNlZC4KICAgICBtYW5hZ2Vy
ID0gYWRvcHRHUmVmKFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsICJiYXNlLWRhdGEtZGlyZWN0b3J5IiwgVGVz
dDo6ZGF0YURpcmVjdG9yeSgpLCAiaXMtZXBoZW1lcmFsIiwgVFJVRSwgbnVsbHB0cikpKTsKICAg
ICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwo
bWFuYWdlci5nZXQoKSkpOwogICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9iYXNlX2RhdGFfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKIAorICAgIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfaXRwX2VuYWJsZWQobWFuYWdlci5nZXQoKSwg
VFJVRSk7CisgICAgZ19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBf
ZW5hYmxlZChtYW5hZ2VyLmdldCgpKSk7CisKICAgICAvLyBOb24gcGVyc2lzdGVudCBkYXRhIGNh
biBiZSBxdWVyaWVkIGluIGFuIGVwaGVtZXJhbCBtYW5hZ2VyLgogICAgIEdSZWZQdHI8V2ViS2l0
V2ViQ29udGV4dD4gd2ViQ29udGV4dCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2NvbnRleHRfbmV3
X3dpdGhfd2Vic2l0ZV9kYXRhX21hbmFnZXIobWFuYWdlci5nZXQoKSkpOwogICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbCh3ZWJDb250ZXh0LmdldCgpKSk7
CkBAIC0yNDgsNiArMjYzLDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFs
KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHdlYmtpdF93ZWJfdmlld19s
b2FkX3VyaSh3ZWJWaWV3LmdldCgpLCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZW1wdHkiKS5k
YXRhKCkpOwogICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKIAorICAgIEdV
bmlxdWVQdHI8Y2hhcj4gaXRwRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURp
cmVjdG9yeSgpLCAiaXRwIiwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0KCFnX2ZpbGVfdGVzdChp
dHBEaXJlY3RvcnkuZ2V0KCksIEdfRklMRV9URVNUX0lTX0RJUikpOworCiAgICAgd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoKG1hbmFnZXIuZ2V0KCksIFdFQktJVF9XRUJTSVRFX0RB
VEFfTUVNT1JZX0NBQ0hFLCBudWxscHRyLCBbXShHT2JqZWN0KiBtYW5hZ2VyLCBHQXN5bmNSZXN1
bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgYXV0byogdGVzdCA9IHN0
YXRpY19jYXN0PFdlYlZpZXdUZXN0Kj4odXNlckRhdGEpOwogICAgICAgICBHTGlzdCogZGF0YUxp
c3QgPSB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2hfZmluaXNoKFdFQktJVF9XRUJT
SVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgcmVzdWx0LCBudWxscHRyKTsKQEAgLTI2Miw2ICsy
ODAsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFFcGhlbWVyYWwoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwogICAg
IH0sIHRlc3QpOwogICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKworICAg
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfaXRwX2VuYWJsZWQobWFuYWdlci5nZXQo
KSwgRkFMU0UpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDYWNoZShXZWJzaXRl
RGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC02MTYsNiArNjM2LDQzIEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJzaXRlRGF0YURldmljZUlkSGFzaFNhbHQoV2Vic2l0ZURhdGFUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFf
c3RyZWFtKHNldHRpbmdzLCBlbmFibGVkKTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVE
YXRhSVRQKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBjb25z
dCBjaGFyKiBpdHBEaXJlY3RvcnkgPSB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2l0
cF9kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGl0cExv
Z0ZpbGUoZ19idWlsZF9maWxlbmFtZShpdHBEaXJlY3RvcnksICJmdWxsX2Jyb3dzaW5nX3Nlc3Np
b25fcmVzb3VyY2VMb2cucGxpc3QiLCBudWxscHRyKSk7CisKKyAgICAvLyBEZWxldGUgYW55IHBy
ZXZpb3VzIGRhdGEuCisgICAgZ191bmxpbmsoaXRwTG9nRmlsZS5nZXQoKSk7CisgICAgZ19ybWRp
cihpdHBEaXJlY3RvcnkpOworCisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxlZCh0ZXN0LT5tX21hbmFnZXIpKTsKKyAgICB0ZXN0LT5s
b2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOworICAgIHRlc3QtPndh
aXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X3NldF9pdHBfZW5hYmxlZCh0ZXN0LT5tX21hbmFnZXIsIFRSVUUpOworICAgIGdfYXNzZXJ0X3Ry
dWUod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZW5hYmxlZCh0ZXN0LT5tX21h
bmFnZXIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZShnX2ZpbGVfdGVzdChpdHBEaXJlY3RvcnksIEdf
RklMRV9URVNUX0lTX0RJUikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGdfZmlsZV90ZXN0KGl0cExv
Z0ZpbGUuZ2V0KCksIEdfRklMRV9URVNUX0lTX1JFR1VMQVIpKTsKKworICAgIHRlc3QtPmxvYWRV
Ukkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICB0ZXN0LT53YWl0VW50aWxGaWxlQ2hhbmdlZChpdHBM
b2dGaWxlLmdldCgpLCBHX0ZJTEVfTU9OSVRPUl9FVkVOVF9DUkVBVEVEKTsKKworICAgIGdfYXNz
ZXJ0X3RydWUoZ19maWxlX3Rlc3QoaXRwRGlyZWN0b3J5LCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsK
KyAgICBnX2Fzc2VydF90cnVlKGdfZmlsZV90ZXN0KGl0cExvZ0ZpbGUuZ2V0KCksIEdfRklMRV9U
RVNUX0lTX1JFR1VMQVIpKTsKKworICAgIC8vIENsZWFyIGFsbC4KKyAgICBzdGF0aWMgY29uc3Qg
V2ViS2l0V2Vic2l0ZURhdGFUeXBlcyBjYWNoZUFuZElUUCA9IHN0YXRpY19jYXN0PFdlYktpdFdl
YnNpdGVEYXRhVHlwZXM+KFdFQktJVF9XRUJTSVRFX0RBVEFfSVRQIHwgV0VCS0lUX1dFQlNJVEVf
REFUQV9NRU1PUllfQ0FDSEUgfCBXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUpOworICAg
IHRlc3QtPmNsZWFyKGNhY2hlQW5kSVRQLCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxGaWxlQ2hh
bmdlZChpdHBMb2dGaWxlLmdldCgpLCBHX0ZJTEVfTU9OSVRPUl9FVkVOVF9ERUxFVEVEKTsKKwor
ICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfaXRwX2VuYWJsZWQodGVzdC0+bV9t
YW5hZ2VyLCBGQUxTRSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9pdHBfZW5hYmxlZCh0ZXN0LT5tX21hbmFnZXIpKTsKKworICAgIGdfcm1kaXIo
aXRwRGlyZWN0b3J5KTsKK30KKwogdm9pZCBiZWZvcmVBbGwoKQogewogICAgIGtTZXJ2ZXIgPSBu
ZXcgV2ViS2l0VGVzdFNlcnZlcigpOwpAQCAtNjM2LDYgKzY5Myw3IEBAIHZvaWQgYmVmb3JlQWxs
KCkKICAgICBXZWJzaXRlRGF0YVRlc3Q6OmFkZCgiV2ViS2l0V2Vic2l0ZURhdGEiLCAiaHN0cyIs
IHRlc3RXZWJzaXRlRGF0YUhzdHMpOwogI2VuZGlmCiAgICAgV2Vic2l0ZURhdGFUZXN0OjphZGQo
IldlYktpdFdlYnNpdGVEYXRhIiwgImRldmljZWlkaGFzaHNhbHQiLCB0ZXN0V2Vic2l0ZURhdGFE
ZXZpY2VJZEhhc2hTYWx0KTsKKyAgICBXZWJzaXRlRGF0YVRlc3Q6OmFkZCgiV2ViS2l0V2Vic2l0
ZURhdGEiLCAiaXRwIiwgdGVzdFdlYnNpdGVEYXRhSVRQKTsKIH0KIAogdm9pZCBhZnRlckFsbCgp
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvVGVzdEV4cGVjdGF0aW9ucy5q
c29uIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMuanNvbgppbmRl
eCAwMTU2OTZhZjA3YWEuLjNhMWEyZDVhYzY4YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMuanNvbgorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2dsaWIvVGVzdEV4cGVjdGF0aW9ucy5qc29uCkBAIC01Nyw5ICs1Nyw2IEBACiAgICAgICAgICAg
ICAiL3dlYmtpdC9XZWJLaXRXZWJzaXRlRGF0YS9zdG9yYWdlIjogewogICAgICAgICAgICAgICAg
ICJleHBlY3RlZCI6IHsid3BlIjogeyJzdGF0dXMiOiBbIlBBU1MiLCAiRkFJTCJdfX0KICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAiL3dlYmtpdC9XZWJLaXRXZWJzaXRlRGF0YS9yZXNvdXJj
ZS1sb2FkLXN0YXRpc3RpY3MiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogeyJ3cGUi
OiB7InN0YXR1cyI6IFsiUEFTUyIsICJGQUlMIl19fQotICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgICIvd2Via2l0L1dlYktpdFdlYnNpdGVEYXRhL2NvbmZpZ3VyYXRpb24iOiB7CiAgICAgICAg
ICAgICAgICAgImV4cGVjdGVkIjogeyJndGsiOiB7InN0YXR1cyI6IFsiUEFTUyIsICJGQUlMIl0s
ICJidWciOiAid2Via2l0Lm9yZy9iLzIwNTQ0MSJ9fQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKaW5kZXggYjg3MDQ4OWQ2
YzI4Li5lZTRmNzEzZWVlOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1Rlc3RNYWluLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvVGVzdE1haW4uaApAQCAtMTI0LDEwICsxMjQsMTIgQEAgcHVibGljOgogICAgICAgICBH
VW5pcXVlUHRyPGNoYXI+IGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFt
ZShkYXRhRGlyZWN0b3J5KCksICJhcHBjYWNoZSIsIG51bGxwdHIpKTsKICAgICAgICAgR1VuaXF1
ZVB0cjxjaGFyPiB3ZWJTUUxEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShkYXRhRGlyZWN0b3J5
KCksICJ3ZWJzcWwiLCBudWxscHRyKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gaHN0c0Rp
cmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGRhdGFEaXJlY3RvcnkoKSwgImhzdHMiLCBudWxscHRy
KSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gaXRwRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZGF0YURpcmVjdG9yeSgpLCAiaXRwIiwgbnVsbHB0cikpOwogICAgICAgICBHUmVmUHRyPFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gd2Vic2l0ZURhdGFNYW5hZ2VyID0gYWRvcHRHUmVmKHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXcoCiAgICAgICAgICAgICAibG9jYWwtc3RvcmFn
ZS1kaXJlY3RvcnkiLCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCksICJpbmRleGVkZGItZGly
ZWN0b3J5IiwgaW5kZXhlZERCRGlyZWN0b3J5LmdldCgpLAogICAgICAgICAgICAgImRpc2stY2Fj
aGUtZGlyZWN0b3J5IiwgZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpLCAib2ZmbGluZS1hcHBsaWNh
dGlvbi1jYWNoZS1kaXJlY3RvcnkiLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpLAot
ICAgICAgICAgICAgIndlYnNxbC1kaXJlY3RvcnkiLCB3ZWJTUUxEaXJlY3RvcnkuZ2V0KCksICJo
c3RzLWNhY2hlLWRpcmVjdG9yeSIsIGhzdHNEaXJlY3RvcnkuZ2V0KCksIG51bGxwdHIpKTsKKyAg
ICAgICAgICAgICJ3ZWJzcWwtZGlyZWN0b3J5Iiwgd2ViU1FMRGlyZWN0b3J5LmdldCgpLCAiaHN0
cy1jYWNoZS1kaXJlY3RvcnkiLCBoc3RzRGlyZWN0b3J5LmdldCgpLAorICAgICAgICAgICAgIml0
cC1kaXJlY3RvcnkiLCBpdHBEaXJlY3RvcnkuZ2V0KCksIG51bGxwdHIpKTsKIAogICAgICAgICBt
X3dlYkNvbnRleHQgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9DT05URVhUKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwKICAgICAgICAgICAgICJ3ZWJzaXRlLWRhdGEtbWFuYWdl
ciIsIHdlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAppbmRleCA4ZTNmMzQ4ZDhhYjUuLjAy
MTViYWUxMTI3MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViVmlld1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYlZpZXdUZXN0LmNwcApAQCAtMjM2LDYgKzIzNiwyNCBAQCB2b2lkIFdlYlZpZXdUZXN0
OjpzZXRFZGl0YWJsZShib29sIGVkaXRhYmxlKQogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfZWRp
dGFibGUobV93ZWJWaWV3LCBlZGl0YWJsZSk7CiB9CiAKK3N0YXRpYyB2b2lkIGRpcmVjdG9yeUNo
YW5nZWRDYWxsYmFjayhHRmlsZU1vbml0b3IqLCBHRmlsZSogZmlsZSwgR0ZpbGUqLCBHRmlsZU1v
bml0b3JFdmVudCBldmVudCwgV2ViVmlld1Rlc3QqIHRlc3QpCit7CisgICAgaWYgKGV2ZW50ID09
IHRlc3QtPm1fZXhwZWN0ZWRGaWxlQ2hhbmdlRXZlbnQgJiYgZ19maWxlX2VxdWFsKGZpbGUsIHRl
c3QtPm1fbW9uaXRvcmVkRmlsZS5nZXQoKSkpCisgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgp
OworfQorCit2b2lkIFdlYlZpZXdUZXN0Ojp3YWl0VW50aWxGaWxlQ2hhbmdlZChjb25zdCBjaGFy
KiBmaWxlbmFtZSwgR0ZpbGVNb25pdG9yRXZlbnQgZXZlbnQpCit7CisgICAgbV9tb25pdG9yZWRG
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZmlsZW5hbWUpKTsKKyAgICBtX2V4
cGVjdGVkRmlsZUNoYW5nZUV2ZW50ID0gZXZlbnQ7CisgICAgR1JlZlB0cjxHRmlsZT4gZGlyZWN0
b3J5ID0gYWRvcHRHUmVmKGdfZmlsZV9nZXRfcGFyZW50KG1fbW9uaXRvcmVkRmlsZS5nZXQoKSkp
OworICAgIEdSZWZQdHI8R0ZpbGVNb25pdG9yPiBtb25pdG9yID0gYWRvcHRHUmVmKGdfZmlsZV9t
b25pdG9yX2RpcmVjdG9yeShkaXJlY3RvcnkuZ2V0KCksIEdfRklMRV9NT05JVE9SX05PTkUsIG51
bGxwdHIsIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydChtb25pdG9yLmdldCgpKTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0KG1vbml0b3IuZ2V0KCksICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhkaXJlY3Rv
cnlDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBpZiAoIWdfZmlsZV9xdWVyeV9leGlzdHMo
bV9tb25pdG9yZWRGaWxlLmdldCgpLCBudWxscHRyKSkKKyAgICAgICAgZ19tYWluX2xvb3BfcnVu
KG1fbWFpbkxvb3ApOworfQorCiBzdGF0aWMgdm9pZCByZXNvdXJjZUdldERhdGFDYWxsYmFjayhH
T2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkK
IHsKICAgICBzaXplX3QgZGF0YVNpemU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAppbmRleCBjM2ZkZDk4MjU4OTEuLjYwYzMzZWVkYjk1
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmll
d1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3
VGVzdC5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwogICAgIHZvaWQgd2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oY29uc3QgY2hhciog
ZXhwZWN0ZWRUaXRsZSk7CiAgICAgdm9pZCB3YWl0VW50aWxUaXRsZUNoYW5nZWQoKTsKKyAgICB2
b2lkIHdhaXRVbnRpbEZpbGVDaGFuZ2VkKGNvbnN0IGNoYXIqLCBHRmlsZU1vbml0b3JFdmVudCk7
CiAgICAgdm9pZCByZXNpemVWaWV3KGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgICAgdm9pZCBo
aWRlVmlldygpOwogICAgIHZvaWQgc2VsZWN0QWxsKCk7CkBAIC0xMTEsNiArMTEyLDggQEAgcHVi
bGljOgogICAgIHNpemVfdCBtX3Jlc291cmNlRGF0YVNpemUgeyAwIH07CiAgICAgY2Fpcm9fc3Vy
ZmFjZV90KiBtX3N1cmZhY2UgeyBudWxscHRyIH07CiAgICAgYm9vbCBtX2V4cGVjdGVkV2ViUHJv
Y2Vzc0NyYXNoIHsgZmFsc2UgfTsKKyAgICBHUmVmUHRyPEdGaWxlPiBtX21vbml0b3JlZEZpbGU7
CisgICAgR0ZpbGVNb25pdG9yRXZlbnQgbV9leHBlY3RlZEZpbGVDaGFuZ2VFdmVudDsKIAogI2lm
IFBMQVRGT1JNKEdUSykKICAgICBHdGtXaWRnZXQqIG1fcGFyZW50V2luZG93IHsgbnVsbHB0ciB9
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>