<?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>224196</bug_id>
          
          <creation_ts>2021-04-05 12:20:00 -0700</creation_ts>
          <short_desc>Reduce crash inside getAuditToken</short_desc>
          <delta_ts>2021-04-06 10:28:24 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1747051</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-05 12:20:00 -0700</bug_when>
    <thetext>Reduce crash inside getAuditToken</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747062</commentid>
    <comment_count>1</comment_count>
      <attachid>425189</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-05 12:50:53 -0700</bug_when>
    <thetext>Created attachment 425189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747063</commentid>
    <comment_count>2</comment_count>
      <attachid>425190</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-05 12:51:35 -0700</bug_when>
    <thetext>Created attachment 425190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747064</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-05 12:53:42 -0700</bug_when>
    <thetext>rdar://74536285</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747066</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-05 12:53:53 -0700</bug_when>
    <thetext>(this requires an internal change too)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747070</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-05 13:02:27 -0700</bug_when>
    <thetext>Should also fix rdar://76098821</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747073</commentid>
    <comment_count>6</comment_count>
      <attachid>425190</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-05 13:08:08 -0700</bug_when>
    <thetext>Comment on attachment 425190
Patch

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

r=me with additional logging added as requested.  Other changes are optional (but recommended).

&gt; Source/WebKit/Shared/Cocoa/DefaultWebBrowserChecks.mm:175
&gt; +        auto auditToken = auxiliaryProcess.parentProcessConnection()-&gt;getAuditToken();
&gt; +        if (!auditToken) {
&gt; +            ASSERT_NOT_REACHED();

We should log here if this happens, as it&apos;s never supposed to happen according to deleted code above:

    RELEASE_ASSERT(parentAuditToken); // This should be impossible.

&gt; Source/WebKit/Shared/Cocoa/DefaultWebBrowserChecks.mm:235
&gt; +        RefPtr&lt;IPC::Connection&gt; connection = auxiliaryProcess.parentProcessConnection();
&gt; +        if (!connection) {
&gt; +            ASSERT_NOT_REACHED();

We should log here if this happens.

&gt; Source/WebKit/Shared/Cocoa/DefaultWebBrowserChecks.mm:241
&gt; +        auto auditToken = connection-&gt;getAuditToken();
&gt; +        if (!auditToken) {
&gt; +            ASSERT_NOT_REACHED();

We should log here if this happens, as it&apos;s never supposed to happen according to deleted code above:

    RELEASE_ASSERT(parentAuditToken); // This should be impossible.

&gt; Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:56
&gt;  static bool isWebBrowser()
&gt;  {
&gt; -    if (auto* connection = WebProcess::singleton().parentProcessConnection())
&gt; -        return isParentProcessAFullWebBrowser(connection-&gt;getAuditToken());
&gt; -    return false;
&gt; +    return isParentProcessAFullWebBrowser(WebProcess::singleton());
&gt;  }

We should inline this within the source file.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3832
&gt;  bool WebPage::isParentProcessAWebBrowser() const
&gt;  {
&gt;  #if HAVE(AUDIT_TOKEN)
&gt; -    if (auto* connection = WebProcess::singleton().parentProcessConnection())
&gt; -        return isParentProcessAFullWebBrowser(connection-&gt;getAuditToken());
&gt; +    return isParentProcessAFullWebBrowser(WebProcess::singleton());
&gt;  #endif
&gt;      return false;
&gt;  }

We should move this implementation to the header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747077</commentid>
    <comment_count>7</comment_count>
      <attachid>425190</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-05 13:15:28 -0700</bug_when>
    <thetext>Comment on attachment 425190
Patch

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

&gt;&gt; Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:56
&gt;&gt;  }
&gt; 
&gt; We should inline this within the source file.

Or just change it to an inline local function (non-static).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747079</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-05 13:19:18 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #6)
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3832
&gt; &gt;  bool WebPage::isParentProcessAWebBrowser() const
&gt; &gt;  {
&gt; &gt;  #if HAVE(AUDIT_TOKEN)
&gt; &gt; -    if (auto* connection = WebProcess::singleton().parentProcessConnection())
&gt; &gt; -        return isParentProcessAFullWebBrowser(connection-&gt;getAuditToken());
&gt; &gt; +    return isParentProcessAFullWebBrowser(WebProcess::singleton());
&gt; &gt;  #endif
&gt; &gt;      return false;
&gt; &gt;  }
&gt; 
&gt; We should move this implementation to the header.

I disagree because then we would need to include the definitions of isParentProcessAFullWebBrowser and WebProcess::singleton everywhere we include WebPage.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747083</commentid>
    <comment_count>9</comment_count>
      <attachid>425197</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-05 13:23:22 -0700</bug_when>
    <thetext>Created attachment 425197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747085</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-05 13:25:12 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #6)
&gt; Comment on attachment 425190 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425190&amp;action=review
&gt; 
&gt; r=me with additional logging added as requested.  Other changes are optional
&gt; (but recommended).
&gt; 
&gt; &gt; Source/WebKit/Shared/Cocoa/DefaultWebBrowserChecks.mm:175
&gt; &gt; +        auto auditToken = auxiliaryProcess.parentProcessConnection()-&gt;getAuditToken();
&gt; &gt; +        if (!auditToken) {
&gt; &gt; +            ASSERT_NOT_REACHED();
&gt; 
&gt; We should log here if this happens, as it&apos;s never supposed to happen
&gt; according to deleted code above:
&gt; 
&gt;     RELEASE_ASSERT(parentAuditToken); // This should be impossible.
&gt; 
&gt; &gt; Source/WebKit/Shared/Cocoa/DefaultWebBrowserChecks.mm:235
&gt; &gt; +        RefPtr&lt;IPC::Connection&gt; connection = auxiliaryProcess.parentProcessConnection();
&gt; &gt; +        if (!connection) {
&gt; &gt; +            ASSERT_NOT_REACHED();
&gt; 
&gt; We should log here if this happens.
&gt; 
&gt; &gt; Source/WebKit/Shared/Cocoa/DefaultWebBrowserChecks.mm:241
&gt; &gt; +        auto auditToken = connection-&gt;getAuditToken();
&gt; &gt; +        if (!auditToken) {
&gt; &gt; +            ASSERT_NOT_REACHED();
&gt; 
&gt; We should log here if this happens, as it&apos;s never supposed to happen
&gt; according to deleted code above:
&gt; 
&gt;     RELEASE_ASSERT(parentAuditToken); // This should be impossible.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:56
&gt; &gt;  static bool isWebBrowser()
&gt; &gt;  {
&gt; &gt; -    if (auto* connection = WebProcess::singleton().parentProcessConnection())
&gt; &gt; -        return isParentProcessAFullWebBrowser(connection-&gt;getAuditToken());
&gt; &gt; -    return false;
&gt; &gt; +    return isParentProcessAFullWebBrowser(WebProcess::singleton());
&gt; &gt;  }
&gt; 
&gt; We should inline this within the source file.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3832
&gt; &gt;  bool WebPage::isParentProcessAWebBrowser() const
&gt; &gt;  {
&gt; &gt;  #if HAVE(AUDIT_TOKEN)
&gt; &gt; -    if (auto* connection = WebProcess::singleton().parentProcessConnection())
&gt; &gt; -        return isParentProcessAFullWebBrowser(connection-&gt;getAuditToken());
&gt; &gt; +    return isParentProcessAFullWebBrowser(WebProcess::singleton());
&gt; &gt;  #endif
&gt; &gt;      return false;
&gt; &gt;  }
&gt; 
&gt; We should move this implementation to the header.

I don&apos;t really understand all the comments about inlining here. This does not obviously look like perf-sensitive code to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747087</commentid>
    <comment_count>11</comment_count>
      <attachid>425198</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-05 13:31:38 -0700</bug_when>
    <thetext>Created attachment 425198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747088</commentid>
    <comment_count>12</comment_count>
      <attachid>425198</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-05 13:32:09 -0700</bug_when>
    <thetext>Comment on attachment 425198
Patch

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

&gt; Source/WebKit/Shared/Cocoa/DefaultWebBrowserChecks.h:49
&gt; +#define WEBKIT_PARENT_PROCESS_FULL_WEB_BROWSER_PARAMETER_AUXILIARY_PROCESS 1

I added this temporarily so I don&apos;t have to break the internal build when landing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747091</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-05 13:35:00 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #8)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #6)
&gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3832
&gt; &gt; &gt;  bool WebPage::isParentProcessAWebBrowser() const
&gt; &gt; &gt;  {
&gt; &gt; &gt;  #if HAVE(AUDIT_TOKEN)
&gt; &gt; &gt; -    if (auto* connection = WebProcess::singleton().parentProcessConnection())
&gt; &gt; &gt; -        return isParentProcessAFullWebBrowser(connection-&gt;getAuditToken());
&gt; &gt; &gt; +    return isParentProcessAFullWebBrowser(WebProcess::singleton());
&gt; &gt; &gt;  #endif
&gt; &gt; &gt;      return false;
&gt; &gt; &gt;  }
&gt; &gt; 
&gt; &gt; We should move this implementation to the header.
&gt; 
&gt; I disagree because then we would need to include the definitions of
&gt; isParentProcessAFullWebBrowser and WebProcess::singleton everywhere we
&gt; include WebPage.h

Okay.  As noted earlier, it was optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747094</commentid>
    <comment_count>14</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-05 13:49:17 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #6)
&gt; &gt; Comment on attachment 425190 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=425190&amp;action=review
&gt; &gt; 
&gt; &gt; r=me with additional logging added as requested.  Other changes are optional
&gt; &gt; (but recommended).
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:56
&gt; &gt; &gt;  static bool isWebBrowser()
&gt; &gt; &gt;  {
&gt; &gt; &gt; -    if (auto* connection = WebProcess::singleton().parentProcessConnection())
&gt; &gt; &gt; -        return isParentProcessAFullWebBrowser(connection-&gt;getAuditToken());
&gt; &gt; &gt; -    return false;
&gt; &gt; &gt; +    return isParentProcessAFullWebBrowser(WebProcess::singleton());
&gt; &gt; &gt;  }
&gt; &gt; 
&gt; I don&apos;t really understand all the comments about inlining here. This does
&gt; not obviously look like perf-sensitive code to me.

Alex had a good point in Comment #8 (which I had not considered) about not inlining WebPage::isParentProcessAWebBrowser() because it would require including more headers.

Inlining isWebBrowser() was not motivated by performance.

Unless it impacts readability (or there are a LOT of calls to this function), it seems kind of silly to have a one-line static function with a name that is arguably restating what the full method describes.  I think it made more sense to have a separate static function when it contained more logic.

Let me ask a different way--if there was a WebKit patch that extracted a one-line static function like this and it didn&apos;t obviously impact performance and readability improvement was a wash, would you r+ it?

+static bool isWebBrowser()
+{
+    return isParentProcessAFullWebBrowser(WebProcess::singleton());
+}


BTW, all three uses of isWebBrowser() are for early returns like this:

    if (!isWebBrowser())
        return;

I guess that&apos;s slightly more readable than this?

    if (! isParentProcessAFullWebBrowser(WebProcess::singleton()))
        return;

But again, I don&apos;t think a patch to extract all calls to isParentProcessAFullWebBrowser(WebProcess::singleton()) would even be necessary if isWebBrowser() didn&apos;t already exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747100</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-04-05 13:55:47 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #14)
&gt; (In reply to Chris Dumez from comment #10)
&gt; &gt; (In reply to David Kilzer (:ddkilzer) from comment #6)
&gt; &gt; &gt; Comment on attachment 425190 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=425190&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; r=me with additional logging added as requested.  Other changes are optional
&gt; &gt; &gt; (but recommended).
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:56
&gt; &gt; &gt; &gt;  static bool isWebBrowser()
&gt; &gt; &gt; &gt;  {
&gt; &gt; &gt; &gt; -    if (auto* connection = WebProcess::singleton().parentProcessConnection())
&gt; &gt; &gt; &gt; -        return isParentProcessAFullWebBrowser(connection-&gt;getAuditToken());
&gt; &gt; &gt; &gt; -    return false;
&gt; &gt; &gt; &gt; +    return isParentProcessAFullWebBrowser(WebProcess::singleton());
&gt; &gt; &gt; &gt;  }
&gt; &gt; &gt; 
&gt; &gt; I don&apos;t really understand all the comments about inlining here. This does
&gt; &gt; not obviously look like perf-sensitive code to me.
&gt; 
&gt; Alex had a good point in Comment #8 (which I had not considered) about not
&gt; inlining WebPage::isParentProcessAWebBrowser() because it would require
&gt; including more headers.
&gt; 
&gt; Inlining isWebBrowser() was not motivated by performance.
&gt; 
&gt; Unless it impacts readability (or there are a LOT of calls to this
&gt; function), it seems kind of silly to have a one-line static function with a
&gt; name that is arguably restating what the full method describes.  I think it
&gt; made more sense to have a separate static function when it contained more
&gt; logic.
&gt; 
&gt; Let me ask a different way--if there was a WebKit patch that extracted a
&gt; one-line static function like this and it didn&apos;t obviously impact
&gt; performance and readability improvement was a wash, would you r+ it?
&gt; 
&gt; +static bool isWebBrowser()
&gt; +{
&gt; +    return isParentProcessAFullWebBrowser(WebProcess::singleton());
&gt; +}
&gt; 
&gt; 
&gt; BTW, all three uses of isWebBrowser() are for early returns like this:
&gt; 
&gt;     if (!isWebBrowser())
&gt;         return;
&gt; 
&gt; I guess that&apos;s slightly more readable than this?
&gt; 
&gt;     if (! isParentProcessAFullWebBrowser(WebProcess::singleton()))
&gt;         return;

Ugh, paste added a space.

&gt; But again, I don&apos;t think a patch to extract all calls to
&gt; isParentProcessAFullWebBrowser(WebProcess::singleton()) would even be
&gt; necessary if isWebBrowser() didn&apos;t already exist.

I suppose there is a small amount of space savings by doing this, though, which I hadn&apos;t considered.

Should we go through WebKit and find source files with N &gt;= 3? (5?) calls to the same method, and move them into static functions?  I&apos;m sure we could start saving a few bytes by doing this.  Or would it be better to look at other strategies to save space?  (Serious question as I hadn&apos;t considered this, but maybe others have.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747260</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-05 20:29:09 -0700</bug_when>
    <thetext>Internal change 2250c632d2c2dc873210dd261eabea361fdf600d makes this not break the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747265</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-05 21:02:45 -0700</bug_when>
    <thetext>Committed r275486: &lt;https://commits.webkit.org/r275486&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425198.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747267</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-05 21:04:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/76250706&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747456</commentid>
    <comment_count>19</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-06 09:07:02 -0700</bug_when>
    <thetext>r275522</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747508</commentid>
    <comment_count>20</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-06 10:28:24 -0700</bug_when>
    <thetext>r275531</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425189</attachid>
            <date>2021-04-05 12:50:53 -0700</date>
            <delta_ts>2021-04-05 12:51:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224196-20210405125052.patch</filename>
            <type>text/plain</type>
            <size>10104</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY1ZDY3NTE3ZmYyMGM3NWM4
NzBlNjJlMDE4OWFhMmI5ZDllNGI1ODEuLjE3ODdkNjg2MWQyMzlkMmE3NzY3MzEwZjZmZTRiOWFk
NzEwOGFlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMDQtMDUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgY3Jh
c2ggaW5zaWRlIGdldEF1ZGl0VG9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNvbWV0aGluZyBpcyBjcmFzaGluZyBpbnNpZGUgdGhlIGNhbGwgdG8g
Z2V0QXVkaXRUb2tlbiwgYW5kIEkgYmVsaWV2ZSBpdCBpcyBoYXBwZW5pbmcgZHVyaW5nIHRlYXJk
b3duIG9mIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisgICAgICAgIEFmdGVyIG1hbnkgZGF5cyBvZiBo
ZWFkIHNjcmF0Y2hpbmcgYW5kIG1hbnkgcHJldmlvdXMgYXR0ZW1wdHMgYXQgZml4aW5nIHRoaXMg
cHJvYmxlbSwgaXQgcGVyc2lzdHMuCisgICAgICAgIFNpbmNlIGRpcmVjdCBzdHJhdGVnaWVzIGF0
IGZpeGluZyB0aGlzIHByb2JsZW0gaGF2ZSBmYWlsZWQsIEkgbm93IHRyeSBzb21ldGhpbmcgZGlm
ZmVyZW50LgorICAgICAgICBJbnN0ZWFkIG9mIGNhbGxpbmcgZ2V0QXVkaXRUb2tlbiBhdCB0aGUg
YmVnaW5uaW5nIG9mIGV2ZXJ5IHJlc291cmNlIGxvYWQgdG8gYXNrIGlmIHRoZSBwYXJlbnQgcHJv
Y2VzcyBoYXMgYW4gZW50aXRsZW1lbnQsCisgICAgICAgIEkgbm93IGNhbGwgaXQgb25seSBvbmNl
IHBlciBwcm9jZXNzLiAgVGhhdCBzaG91bGQgbWFrZSB0aGluZ3MgZmFzdGVyIGFuZCBsZXNzIGNy
YXNoeS4gIE90aGVyd2lzZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjphY3RpdmF0ZVNlc3Npb25DbGVhbnVwKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Np
b25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
RGVmYXVsdFdlYkJyb3dzZXJDaGVja3MuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVs
dFdlYkJyb3dzZXJDaGVja3MubW06CisgICAgICAgIChXZWJLaXQ6OmRvZXNQYXJlbnRQcm9jZXNz
SGF2ZUlUUEVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0Ojppc1BhcmVudFByb2Nlc3NBRnVsbFdl
YkJyb3dzZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29yZTo6aXNX
ZWJCcm93c2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzUGFyZW50UHJvY2Vzc0FXZWJCcm93c2VyIGNvbnN0
KToKKwogMjAyMS0wNC0wMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbR1BVUF0gUG93ZXIgcmVncmVzc2lvbjogYXVkaW8gaGFyZHdhcmUgaXMgY29uZmlndXJl
ZCBmb3IgMTI4IGZyYW1lIHByZWZlcnJlZCBidWZmZXIgc2l6ZSBkdXJpbmcgVmlkZW9BdWRpbyBw
bGF5YmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDIwNTcxMjY5OTgyMGZiZmY3NjYxYjUwMjdk
Yjg1MDJhM2M2MTU5ZjEuLjg2YWU4ZGRiOTE5MjdlYTAzNjJmMzk1YzdmZGFlMGFhOGRiMmU2NDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTExNDUsMTAgKzExNDUsNyBAQCBzdGF0aWMgdm9pZCBh
Y3RpdmF0ZVNlc3Npb25DbGVhbnVwKE5ldHdvcmtTZXNzaW9uQ29jb2EmIHNlc3Npb24sIGNvbnN0
IE5ldHdvcmtTZQogICAgICAgICByZXR1cm47CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9T
SU1VTEFUT1IpCi0gICAgYXV0byBwYXJlbnRBdWRpdFRva2VuID0gc2Vzc2lvbi5uZXR3b3JrUHJv
Y2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKTsKLSAgICBS
RUxFQVNFX0FTU0VSVChwYXJlbnRBdWRpdFRva2VuKTsgLy8gVGhpcyBzaG91bGQgYmUgaW1wb3Nz
aWJsZS4KLQotICAgIGJvb2wgaXRwRW5hYmxlZCA9IGRvZXNQYXJlbnRQcm9jZXNzSGF2ZUlUUEVu
YWJsZWQocGFyZW50QXVkaXRUb2tlbiwgcGFyYW1ldGVycy5hcHBIYXNSZXF1ZXN0ZWRDcm9zc1dl
YnNpdGVUcmFja2luZ1Blcm1pc3Npb24pOworICAgIGJvb2wgaXRwRW5hYmxlZCA9IGRvZXNQYXJl
bnRQcm9jZXNzSGF2ZUlUUEVuYWJsZWQoc2Vzc2lvbi5uZXR3b3JrUHJvY2VzcygpLCBwYXJhbWV0
ZXJzLmFwcEhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbik7CiAgICAg
Ym9vbCBwYXNzZWRFbmFibGVkU3RhdGUgPSBzZXNzaW9uLmlzUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoKTsKIAogICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIGxvZyBhIGRpc2NyZXBhbmN5
IGJldHdlZW4gc3RhdGVzIGZvciBXZWJLaXRUZXN0UnVubmVyIG9yIFRlc3RXZWJLaXRBUEkuCkBA
IC0xMzUwLDEwICsxMzQ3LDggQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6
OlNlc3Npb25TZXQ6OmluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXMKIFNlc3Npb25XcmFw
cGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2soV2ViUGFnZVBy
b3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgYXV0byBzaG91bGRCZUNvbnNpZGVyZWRB
cHBCb3VuZCA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPyAqaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiA6IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXM7Ci0gICAgaWYg
KFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBuZXR3b3JrUHJvY2VzcygpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCkpIHsKLSAgICAgICAgaWYgKGlzUGFyZW50UHJvY2Vzc0FG
dWxsV2ViQnJvd3Nlcihjb25uZWN0aW9uLT5nZXRBdWRpdFRva2VuKCkpKQotICAgICAgICAgICAg
c2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQgPSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6
Tm87Ci0gICAgfQorICAgIGlmIChpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIobmV0d29y
a1Byb2Nlc3MoKSkpCisgICAgICAgIHNob3VsZEJlQ29uc2lkZXJlZEFwcEJvdW5kID0gTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW46Ok5vOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCkpIHsKICAgICAgICAgYXV0byBmaXJzdFBhcnR5ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4ocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5oCmluZGV4IDQ4YmZk
NjE5MDJkNjE4NGU2OGQwZmJmNDE4YjIzOTZhY2QwMTcxODkuLjlhYzA1MTJkMGQ0ZTdlOWM0ZmZl
NzkxMDQ0OTU0ZjVkYjgxY2UxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MuaApAQCAtMzQsMTQgKzM0LDE2IEBAIGNsYXNz
IFJlZ2lzdHJhYmxlRG9tYWluOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgQXV4aWxp
YXJ5UHJvY2VzczsKKwogYm9vbCBoYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1p
c3Npb24oKTsKIGJvb2wgaGFzUHJvaGliaXRlZFVzYWdlU3RyaW5ncygpOwogT3B0aW9uYWw8VmVj
dG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBwQm91bmREb21haW5zVGVzdGlu
Zyhjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNSdW5uaW5nVGVzdChjb25zdCBTdHJpbmcmIGJ1bmRs
ZUlEKTsKIHZvaWQgZGV0ZXJtaW5lSVRQU3RhdGUoKTsKIGJvb2wgZG9lc0FwcEhhdmVJVFBFbmFi
bGVkKCk7Ci1ib29sIGRvZXNQYXJlbnRQcm9jZXNzSGF2ZUlUUEVuYWJsZWQoT3B0aW9uYWw8YXVk
aXRfdG9rZW5fdD4sIGJvb2wpOworYm9vbCBkb2VzUGFyZW50UHJvY2Vzc0hhdmVJVFBFbmFibGVk
KEF1eGlsaWFyeVByb2Nlc3MmLCBib29sIGhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5n
UGVybWlzc2lvbik7CiBib29sIGlzRnVsbFdlYkJyb3dzZXIoKTsKLWJvb2wgaXNQYXJlbnRQcm9j
ZXNzQUZ1bGxXZWJCcm93c2VyKE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+KTsKK2Jvb2wgaXNQYXJl
bnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKEF1eGlsaWFyeVByb2Nlc3MmKTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZh
dWx0V2ViQnJvd3NlckNoZWNrcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1
bHRXZWJCcm93c2VyQ2hlY2tzLm1tCmluZGV4IDlhNGQ3ODA5ZTYzZTQ4NTI0MjVmMjA1N2M4NjAx
MzJhNThhNWE1OWIuLjc2M2FlYjhmNDc0ODY1MDhlM2ZjY2QyZDZjNTJjNjA3YTRhYmVkMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hl
Y2tzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2Vy
Q2hlY2tzLm1tCkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IkRlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmgiCiAKKyNpbXBvcnQgIkF1eGlsaWFyeVByb2Nlc3Mu
aCIKKyNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIlRDQ1NQSS5oIgogI2ltcG9ydCA8
V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaD4KQEAgLTE1NSwyMCArMTU3LDI5IEBAIGJvb2wgZG9lc0FwcEhhdmVJ
VFBFbmFibGVkKCkKICAgICByZXR1cm4gY3VycmVudElUUFN0YXRlID09IElUUFN0YXRlOjpFbmFi
bGVkOwogfQogCi1ib29sIGRvZXNQYXJlbnRQcm9jZXNzSGF2ZUlUUEVuYWJsZWQoT3B0aW9uYWw8
YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgYm9vbCBoYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVU
cmFja2luZ1Blcm1pc3Npb25WYWx1ZSkKK2Jvb2wgZG9lc1BhcmVudFByb2Nlc3NIYXZlSVRQRW5h
YmxlZChBdXhpbGlhcnlQcm9jZXNzJiBhdXhpbGlhcnlQcm9jZXNzLCBib29sIGhhc1JlcXVlc3Rl
ZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbikKIHsKICAgICBBU1NFUlQoaXNJbldlYktp
dENoaWxkUHJvY2VzcygpKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAg
aWYgKCFpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoYXVkaXRUb2tlbikgJiYgIWhhc1Jl
cXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvblZhbHVlKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBzdGF0aWMgYm9vbCBpdHBFbmFibGVkIHsgdHJ1ZSB9OworICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBeeworICAg
ICAgICBpZiAoIWlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcihhdXhpbGlhcnlQcm9jZXNz
KSAmJiAhaGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNzaW9uKQorICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0IHJlc3VsdCA9IGtU
Q0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQ7CisgICAgICAgIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3Vs
dCByZXN1bHQgPSBrVENDQWNjZXNzUHJlZmxpZ2h0RGVuaWVkOwogI2lmIChQTEFURk9STShJT1Mp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0g
ICAgaWYgKGF1ZGl0VG9rZW4pCisgICAgICAgIGF1dG8gYXVkaXRUb2tlbiA9IGF1eGlsaWFyeVBy
b2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOworICAgICAg
ICBpZiAoIWF1ZGl0VG9rZW4pIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IFRDQ0FjY2Vz
c1ByZWZsaWdodFdpdGhBdWRpdFRva2VuKGdldGtUQ0NTZXJ2aWNlV2ViS2l0SW50ZWxsaWdlbnRU
cmFja2luZ1ByZXZlbnRpb24oKSwgYXVkaXRUb2tlbi52YWx1ZSgpLCBudWxscHRyKTsKICNlbmRp
ZgotICAgIHJldHVybiByZXN1bHQgIT0ga1RDQ0FjY2Vzc1ByZWZsaWdodERlbmllZDsKKyAgICAg
ICAgaXRwRW5hYmxlZCA9IHJlc3VsdCAhPSBrVENDQWNjZXNzUHJlZmxpZ2h0RGVuaWVkOworICAg
IH0pOworICAgIHJldHVybiBpdHBFbmFibGVkOwogfQogCiBzdGF0aWMgc3RkOjphdG9taWM8Ym9v
bD4gaGFzQ2hlY2tlZFVzYWdlU3RyaW5ncyA9IGZhbHNlOwpAQCAtMjA3LDIwICsyMTgsMzQgQEAg
Ym9vbCBoYXNQcm9oaWJpdGVkVXNhZ2VTdHJpbmdzKCkKICAgICByZXR1cm4gaGFzUHJvaGliaXRl
ZFVzYWdlU3RyaW5nczsKIH0KIAotYm9vbCBpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIo
T3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbikKK2Jvb2wgaXNQYXJlbnRQcm9jZXNz
QUZ1bGxXZWJCcm93c2VyKEF1eGlsaWFyeVByb2Nlc3MmIGF1eGlsaWFyeVByb2Nlc3MpCiB7CiAg
ICAgQVNTRVJUKGlzSW5XZWJLaXRDaGlsZFByb2Nlc3MoKSk7Ci0gICAgaWYgKCFhdWRpdFRva2Vu
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGF0aWMgYm9vbCBmdWxsV2ViQnJvd3Nl
cjsKIAorICAgIHN0YXRpYyBib29sIGZ1bGxXZWJCcm93c2VyIHsgZmFsc2UgfTsKICAgICBzdGF0
aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKLSAg
ICAgICAgZnVsbFdlYkJyb3dzZXIgPSBXVEY6Omhhc0VudGl0bGVtZW50KGF1ZGl0VG9rZW4udmFs
dWUoKSwgImNvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXIiKTsKKyAgICAgICAgaWYgKGlz
UnVubmluZ1Rlc3QoV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkpKSB7Cisg
ICAgICAgICAgICBmdWxsV2ViQnJvd3NlciA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0g
YXV4aWxpYXJ5UHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpOworICAgICAgICBpZiAo
IWNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBhdWRpdFRva2VuID0gY29u
bmVjdGlvbi0+Z2V0QXVkaXRUb2tlbigpOworICAgICAgICBpZiAoIWF1ZGl0VG9rZW4pIHsKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgZnVsbFdlYkJyb3dzZXIgPSBXVEY6Omhhc0VudGl0bGVtZW50KCph
dWRpdFRva2VuLCAiY29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3NlciIpOwogICAgIH0pOwog
Ci0gICAgcmV0dXJuIGZ1bGxXZWJCcm93c2VyIHx8IGlzUnVubmluZ1Rlc3QoV2ViQ29yZTo6YXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkpOworICAgIHJldHVybiBmdWxsV2ViQnJvd3NlcjsK
IH0KIAogc3RhdGljIGJvb2wgaXNGdWxsV2ViQnJvd3Nlcihjb25zdCBTdHJpbmcmIGJ1bmRsZUlk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
Y3BwCmluZGV4IGYyNDY3NjkzMjk4MDJmMGI3NzAxYTM1OWFiNDgzYWFlMTM3MTUwNTkuLjFmOWI0
Y2UxYzcyODYwYTA0ZjA0ODBjYjEzMWYxN2I0NDZjYWMzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBAIC01Miw5ICs1Miw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIHsKIHN0YXRpYyBib29sIGlzV2ViQnJvd3Nl
cigpCiB7Ci0gICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQotICAgICAgICByZXR1cm4gaXNQYXJlbnRQcm9j
ZXNzQUZ1bGxXZWJCcm93c2VyKGNvbm5lY3Rpb24tPmdldEF1ZGl0VG9rZW4oKSk7Ci0gICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkpOwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGVmMjA4YmZlYWQwMWQ0NjA2ZjJkYTc3NzM4YWVh
ODMwYTljYzQ1OTguLjFiZDE4YjZiOTE2ZWNhZjg0YWZmMzM0NWJjMmQxNTM0NzJmYWM2YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODI2
LDggKzM4MjYsNyBAQCB2b2lkIFdlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogYm9vbCBXZWJQYWdlOjppc1BhcmVudFByb2Nlc3NB
V2ViQnJvd3NlcigpIGNvbnN0CiB7CiAjaWYgSEFWRShBVURJVF9UT0tFTikKLSAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIo
Y29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tlbigpKTsKKyAgICByZXR1cm4gaXNQYXJlbnRQcm9jZXNz
QUZ1bGxXZWJCcm93c2VyKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpKTsKICNlbmRpZgogICAgIHJl
dHVybiBmYWxzZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425190</attachid>
            <date>2021-04-05 12:51:35 -0700</date>
            <delta_ts>2021-04-05 13:23:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224196-20210405125134.patch</filename>
            <type>text/plain</type>
            <size>10131</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY1ZDY3NTE3ZmYyMGM3NWM4
NzBlNjJlMDE4OWFhMmI5ZDllNGI1ODEuLjU3ODBmNGNkOWQ1MDViYWZmNjdjMGEwM2M3ZDE0NThl
OGU3ZTZhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDQtMDUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgY3Jh
c2ggaW5zaWRlIGdldEF1ZGl0VG9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDE5NgorICAgICAgICA8cmRhcjovLzc0NTM2Mjg1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWV0aGluZyBpcyBj
cmFzaGluZyBpbnNpZGUgdGhlIGNhbGwgdG8gZ2V0QXVkaXRUb2tlbiwgYW5kIEkgYmVsaWV2ZSBp
dCBpcyBoYXBwZW5pbmcgZHVyaW5nIHRlYXJkb3duIG9mIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisg
ICAgICAgIEFmdGVyIG1hbnkgZGF5cyBvZiBoZWFkIHNjcmF0Y2hpbmcgYW5kIG1hbnkgcHJldmlv
dXMgYXR0ZW1wdHMgYXQgZml4aW5nIHRoaXMgcHJvYmxlbSwgaXQgcGVyc2lzdHMuCisgICAgICAg
IFNpbmNlIGRpcmVjdCBzdHJhdGVnaWVzIGF0IGZpeGluZyB0aGlzIHByb2JsZW0gaGF2ZSBmYWls
ZWQsIEkgbm93IHRyeSBzb21ldGhpbmcgZGlmZmVyZW50LgorICAgICAgICBJbnN0ZWFkIG9mIGNh
bGxpbmcgZ2V0QXVkaXRUb2tlbiBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IHJlc291cmNlIGxv
YWQgdG8gYXNrIGlmIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgYW4gZW50aXRsZW1lbnQsCisgICAg
ICAgIEkgbm93IGNhbGwgaXQgb25seSBvbmNlIHBlciBwcm9jZXNzLiAgVGhhdCBzaG91bGQgbWFr
ZSB0aGluZ3MgZmFzdGVyIGFuZCBsZXNzIGNyYXNoeS4gIE90aGVyd2lzZSBubyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjphY3RpdmF0ZVNlc3Npb25DbGVhbnVwKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNr
KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW06CisgICAgICAg
IChXZWJLaXQ6OmRvZXNQYXJlbnRQcm9jZXNzSGF2ZUlUUEVuYWJsZWQpOgorICAgICAgICAoV2Vi
S2l0Ojppc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29yZTo6aXNXZWJCcm93c2VyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmlzUGFy
ZW50UHJvY2Vzc0FXZWJCcm93c2VyIGNvbnN0KToKKwogMjAyMS0wNC0wMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0gUG93ZXIgcmVncmVzc2lvbjog
YXVkaW8gaGFyZHdhcmUgaXMgY29uZmlndXJlZCBmb3IgMTI4IGZyYW1lIHByZWZlcnJlZCBidWZm
ZXIgc2l6ZSBkdXJpbmcgVmlkZW9BdWRpbyBwbGF5YmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4
IDIwNTcxMjY5OTgyMGZiZmY3NjYxYjUwMjdkYjg1MDJhM2M2MTU5ZjEuLjg2YWU4ZGRiOTE5Mjdl
YTAzNjJmMzk1YzdmZGFlMGFhOGRiMmU2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTExNDUs
MTAgKzExNDUsNyBAQCBzdGF0aWMgdm9pZCBhY3RpdmF0ZVNlc3Npb25DbGVhbnVwKE5ldHdvcmtT
ZXNzaW9uQ29jb2EmIHNlc3Npb24sIGNvbnN0IE5ldHdvcmtTZQogICAgICAgICByZXR1cm47CiAK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0gICAgYXV0byBwYXJlbnRBdWRp
dFRva2VuID0gc2Vzc2lvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPmdldEF1ZGl0VG9rZW4oKTsKLSAgICBSRUxFQVNFX0FTU0VSVChwYXJlbnRBdWRpdFRva2Vu
KTsgLy8gVGhpcyBzaG91bGQgYmUgaW1wb3NzaWJsZS4KLQotICAgIGJvb2wgaXRwRW5hYmxlZCA9
IGRvZXNQYXJlbnRQcm9jZXNzSGF2ZUlUUEVuYWJsZWQocGFyZW50QXVkaXRUb2tlbiwgcGFyYW1l
dGVycy5hcHBIYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb24pOworICAg
IGJvb2wgaXRwRW5hYmxlZCA9IGRvZXNQYXJlbnRQcm9jZXNzSGF2ZUlUUEVuYWJsZWQoc2Vzc2lv
bi5uZXR3b3JrUHJvY2VzcygpLCBwYXJhbWV0ZXJzLmFwcEhhc1JlcXVlc3RlZENyb3NzV2Vic2l0
ZVRyYWNraW5nUGVybWlzc2lvbik7CiAgICAgYm9vbCBwYXNzZWRFbmFibGVkU3RhdGUgPSBzZXNz
aW9uLmlzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKIAogICAgIC8vIFdlIGRvIG5v
dCBuZWVkIHRvIGxvZyBhIGRpc2NyZXBhbmN5IGJldHdlZW4gc3RhdGVzIGZvciBXZWJLaXRUZXN0
UnVubmVyIG9yIFRlc3RXZWJLaXRBUEkuCkBAIC0xMzUwLDEwICsxMzQ3LDggQEAgU2Vzc2lvbldy
YXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OlNlc3Npb25TZXQ6OmluaXRpYWxpemVFcGhlbWVy
YWxTdGF0ZWxlc3NTZXMKIFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNz
aW9uV3JhcHBlckZvclRhc2soV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAg
ICAgYXV0byBzaG91bGRCZUNvbnNpZGVyZWRBcHBCb3VuZCA9IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gPyAqaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA6IE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluOjpZZXM7Ci0gICAgaWYgKFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5l
Y3Rpb24gPSBuZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkpIHsKLSAg
ICAgICAgaWYgKGlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3Nlcihjb25uZWN0aW9uLT5nZXRB
dWRpdFRva2VuKCkpKQotICAgICAgICAgICAgc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQgPSBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm87Ci0gICAgfQorICAgIGlmIChpc1BhcmVudFBy
b2Nlc3NBRnVsbFdlYkJyb3dzZXIobmV0d29ya1Byb2Nlc3MoKSkpCisgICAgICAgIHNob3VsZEJl
Q29uc2lkZXJlZEFwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VT
ZXNzaW9uID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAgYXV0byBmaXJzdFBh
cnR5ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29v
a2llcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRX
ZWJCcm93c2VyQ2hlY2tzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2Vi
QnJvd3NlckNoZWNrcy5oCmluZGV4IDQ4YmZkNjE5MDJkNjE4NGU2OGQwZmJmNDE4YjIzOTZhY2Qw
MTcxODkuLjlhYzA1MTJkMGQ0ZTdlOWM0ZmZlNzkxMDQ0OTU0ZjVkYjgxY2UxNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3Mu
aApAQCAtMzQsMTQgKzM0LDE2IEBAIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorY2xhc3MgQXV4aWxpYXJ5UHJvY2VzczsKKwogYm9vbCBoYXNSZXF1ZXN0
ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb24oKTsKIGJvb2wgaGFzUHJvaGliaXRlZFVz
YWdlU3RyaW5ncygpOwogT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Pj4gZ2V0QXBwQm91bmREb21haW5zVGVzdGluZyhjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNSdW5u
aW5nVGVzdChjb25zdCBTdHJpbmcmIGJ1bmRsZUlEKTsKIHZvaWQgZGV0ZXJtaW5lSVRQU3RhdGUo
KTsKIGJvb2wgZG9lc0FwcEhhdmVJVFBFbmFibGVkKCk7Ci1ib29sIGRvZXNQYXJlbnRQcm9jZXNz
SGF2ZUlUUEVuYWJsZWQoT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIGJvb2wpOworYm9vbCBkb2Vz
UGFyZW50UHJvY2Vzc0hhdmVJVFBFbmFibGVkKEF1eGlsaWFyeVByb2Nlc3MmLCBib29sIGhhc1Jl
cXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbik7CiBib29sIGlzRnVsbFdlYkJy
b3dzZXIoKTsKLWJvb2wgaXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKE9wdGlvbmFsPGF1
ZGl0X3Rva2VuX3Q+KTsKK2Jvb2wgaXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKEF1eGls
aWFyeVByb2Nlc3MmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCmluZGV4IDlh
NGQ3ODA5ZTYzZTQ4NTI0MjVmMjA1N2M4NjAxMzJhNThhNWE1OWIuLjc2M2FlYjhmNDc0ODY1MDhl
M2ZjY2QyZDZjNTJjNjA3YTRhYmVkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCkBAIC0yNiw2ICsyNiw4IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmgiCiAK
KyNpbXBvcnQgIkF1eGlsaWFyeVByb2Nlc3MuaCIKKyNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKICNp
bXBvcnQgIlRDQ1NQSS5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KQEAgLTE1NSwyMCAr
MTU3LDI5IEBAIGJvb2wgZG9lc0FwcEhhdmVJVFBFbmFibGVkKCkKICAgICByZXR1cm4gY3VycmVu
dElUUFN0YXRlID09IElUUFN0YXRlOjpFbmFibGVkOwogfQogCi1ib29sIGRvZXNQYXJlbnRQcm9j
ZXNzSGF2ZUlUUEVuYWJsZWQoT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgYm9v
bCBoYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb25WYWx1ZSkKK2Jvb2wg
ZG9lc1BhcmVudFByb2Nlc3NIYXZlSVRQRW5hYmxlZChBdXhpbGlhcnlQcm9jZXNzJiBhdXhpbGlh
cnlQcm9jZXNzLCBib29sIGhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lv
bikKIHsKICAgICBBU1NFUlQoaXNJbldlYktpdENoaWxkUHJvY2VzcygpKTsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKCFpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJy
b3dzZXIoYXVkaXRUb2tlbikgJiYgIWhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVy
bWlzc2lvblZhbHVlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBzdGF0aWMgYm9vbCBpdHBF
bmFibGVkIHsgdHJ1ZSB9OworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKKyAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlLCBeeworICAgICAgICBpZiAoIWlzUGFyZW50UHJvY2Vzc0FGdWxs
V2ViQnJvd3NlcihhdXhpbGlhcnlQcm9jZXNzKSAmJiAhaGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRl
VHJhY2tpbmdQZXJtaXNzaW9uKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgVENDQWNjZXNz
UHJlZmxpZ2h0UmVzdWx0IHJlc3VsdCA9IGtUQ0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQ7CisgICAg
ICAgIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCByZXN1bHQgPSBrVENDQWNjZXNzUHJlZmxpZ2h0
RGVuaWVkOwogI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDE0MDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDApCi0gICAgaWYgKGF1ZGl0VG9rZW4pCisgICAgICAgIGF1
dG8gYXVkaXRUb2tlbiA9IGF1eGlsaWFyeVByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+Z2V0QXVkaXRUb2tlbigpOworICAgICAgICBpZiAoIWF1ZGl0VG9rZW4pIHsKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CiAgICAgICAgIHJlc3VsdCA9IFRDQ0FjY2Vzc1ByZWZsaWdodFdpdGhBdWRpdFRva2VuKGdldGtU
Q0NTZXJ2aWNlV2ViS2l0SW50ZWxsaWdlbnRUcmFja2luZ1ByZXZlbnRpb24oKSwgYXVkaXRUb2tl
bi52YWx1ZSgpLCBudWxscHRyKTsKICNlbmRpZgotICAgIHJldHVybiByZXN1bHQgIT0ga1RDQ0Fj
Y2Vzc1ByZWZsaWdodERlbmllZDsKKyAgICAgICAgaXRwRW5hYmxlZCA9IHJlc3VsdCAhPSBrVEND
QWNjZXNzUHJlZmxpZ2h0RGVuaWVkOworICAgIH0pOworICAgIHJldHVybiBpdHBFbmFibGVkOwog
fQogCiBzdGF0aWMgc3RkOjphdG9taWM8Ym9vbD4gaGFzQ2hlY2tlZFVzYWdlU3RyaW5ncyA9IGZh
bHNlOwpAQCAtMjA3LDIwICsyMTgsMzQgQEAgYm9vbCBoYXNQcm9oaWJpdGVkVXNhZ2VTdHJpbmdz
KCkKICAgICByZXR1cm4gaGFzUHJvaGliaXRlZFVzYWdlU3RyaW5nczsKIH0KIAotYm9vbCBpc1Bh
cmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRU
b2tlbikKK2Jvb2wgaXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKEF1eGlsaWFyeVByb2Nl
c3MmIGF1eGlsaWFyeVByb2Nlc3MpCiB7CiAgICAgQVNTRVJUKGlzSW5XZWJLaXRDaGlsZFByb2Nl
c3MoKSk7Ci0gICAgaWYgKCFhdWRpdFRva2VuKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBzdGF0aWMgYm9vbCBmdWxsV2ViQnJvd3NlcjsKIAorICAgIHN0YXRpYyBib29sIGZ1bGxXZWJC
cm93c2VyIHsgZmFsc2UgfTsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7CiAgICAg
ZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKLSAgICAgICAgZnVsbFdlYkJyb3dzZXIgPSBXVEY6Omhh
c0VudGl0bGVtZW50KGF1ZGl0VG9rZW4udmFsdWUoKSwgImNvbS5hcHBsZS5kZXZlbG9wZXIud2Vi
LWJyb3dzZXIiKTsKKyAgICAgICAgaWYgKGlzUnVubmluZ1Rlc3QoV2ViQ29yZTo6YXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCkpKSB7CisgICAgICAgICAgICBmdWxsV2ViQnJvd3NlciA9IHRy
dWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8SVBD
OjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gYXV4aWxpYXJ5UHJvY2Vzcy5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpOworICAgICAgICBpZiAoIWNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgYXV0byBhdWRpdFRva2VuID0gY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tlbigpOworICAg
ICAgICBpZiAoIWF1ZGl0VG9rZW4pIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZnVsbFdlYkJyb3dz
ZXIgPSBXVEY6Omhhc0VudGl0bGVtZW50KCphdWRpdFRva2VuLCAiY29tLmFwcGxlLmRldmVsb3Bl
ci53ZWItYnJvd3NlciIpOwogICAgIH0pOwogCi0gICAgcmV0dXJuIGZ1bGxXZWJCcm93c2VyIHx8
IGlzUnVubmluZ1Rlc3QoV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkpOwor
ICAgIHJldHVybiBmdWxsV2ViQnJvd3NlcjsKIH0KIAogc3RhdGljIGJvb2wgaXNGdWxsV2ViQnJv
d3Nlcihjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9X
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IGYyNDY3NjkzMjk4MDJmMGI3NzAx
YTM1OWFiNDgzYWFlMTM3MTUwNTkuLjFmOWI0Y2UxYzcyODYwYTA0ZjA0ODBjYjEzMWYxN2I0NDZj
YWMzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
Y3BwCkBAIC01Miw5ICs1Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNl
IHsKIHN0YXRpYyBib29sIGlzV2ViQnJvd3NlcigpCiB7Ci0gICAgaWYgKGF1dG8qIGNvbm5lY3Rp
b24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQot
ICAgICAgICByZXR1cm4gaXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKGNvbm5lY3Rpb24t
PmdldEF1ZGl0VG9rZW4oKSk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc1BhcmVu
dFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkpOwogfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGVm
MjA4YmZlYWQwMWQ0NjA2ZjJkYTc3NzM4YWVhODMwYTljYzQ1OTguLjFiZDE4YjZiOTE2ZWNhZjg0
YWZmMzM0NWJjMmQxNTM0NzJmYWM2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODI2LDggKzM4MjYsNyBAQCB2b2lkIFdlYlBhZ2U6OnBy
ZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogYm9v
bCBXZWJQYWdlOjppc1BhcmVudFByb2Nlc3NBV2ViQnJvd3NlcigpIGNvbnN0CiB7CiAjaWYgSEFW
RShBVURJVF9UT0tFTikKLSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBpc1Bh
cmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tlbigpKTsK
KyAgICByZXR1cm4gaXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpKTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425197</attachid>
            <date>2021-04-05 13:23:22 -0700</date>
            <delta_ts>2021-04-05 13:31:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224196-20210405132321.patch</filename>
            <type>text/plain</type>
            <size>10678</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY1ZDY3NTE3ZmYyMGM3NWM4
NzBlNjJlMDE4OWFhMmI5ZDllNGI1ODEuLjBkYTUzZjJmOWI0YjdkOGU1MGRmMWQyYTg5YTRjYThj
YTFhOTUyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDQtMDUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgY3Jh
c2ggaW5zaWRlIGdldEF1ZGl0VG9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDE5NgorICAgICAgICA8cmRhcjovLzc0NTM2Mjg1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4KKworICAgICAgICBTb21ldGhpbmcgaXMgY3Jh
c2hpbmcgaW5zaWRlIHRoZSBjYWxsIHRvIGdldEF1ZGl0VG9rZW4sIGFuZCBJIGJlbGlldmUgaXQg
aXMgaGFwcGVuaW5nIGR1cmluZyB0ZWFyZG93biBvZiB0aGUgbmV0d29yayBwcm9jZXNzLgorICAg
ICAgICBBZnRlciBtYW55IGRheXMgb2YgaGVhZCBzY3JhdGNoaW5nIGFuZCBtYW55IHByZXZpb3Vz
IGF0dGVtcHRzIGF0IGZpeGluZyB0aGlzIHByb2JsZW0sIGl0IHBlcnNpc3RzLgorICAgICAgICBT
aW5jZSBkaXJlY3Qgc3RyYXRlZ2llcyBhdCBmaXhpbmcgdGhpcyBwcm9ibGVtIGhhdmUgZmFpbGVk
LCBJIG5vdyB0cnkgc29tZXRoaW5nIGRpZmZlcmVudC4KKyAgICAgICAgSW5zdGVhZCBvZiBjYWxs
aW5nIGdldEF1ZGl0VG9rZW4gYXQgdGhlIGJlZ2lubmluZyBvZiBldmVyeSByZXNvdXJjZSBsb2Fk
IHRvIGFzayBpZiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIGFuIGVudGl0bGVtZW50LAorICAgICAg
ICBJIG5vdyBjYWxsIGl0IG9ubHkgb25jZSBwZXIgcHJvY2Vzcy4gIFRoYXQgc2hvdWxkIG1ha2Ug
dGhpbmdzIGZhc3RlciBhbmQgbGVzcyBjcmFzaHkuICBPdGhlcndpc2Ugbm8gY2hhbmdlIGluIGJl
aGF2aW9yLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6YWN0aXZhdGVTZXNzaW9uQ2xlYW51cCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayk6
CisgICAgICAgICogU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmg6CisgICAg
ICAgICogU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tOgorICAgICAgICAo
V2ViS2l0Ojpkb2VzUGFyZW50UHJvY2Vzc0hhdmVJVFBFbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6aXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvcmU6OmlzV2ViQnJvd3Nlcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc1BhcmVu
dFByb2Nlc3NBV2ViQnJvd3NlciBjb25zdCk6CisKIDIwMjEtMDQtMDIgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBdIFBvd2VyIHJlZ3Jlc3Npb246IGF1
ZGlvIGhhcmR3YXJlIGlzIGNvbmZpZ3VyZWQgZm9yIDEyOCBmcmFtZSBwcmVmZXJyZWQgYnVmZmVy
IHNpemUgZHVyaW5nIFZpZGVvQXVkaW8gcGxheWJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCAy
MDU3MTI2OTk4MjBmYmZmNzY2MWI1MDI3ZGI4NTAyYTNjNjE1OWYxLi44NmFlOGRkYjkxOTI3ZWEw
MzYyZjM5NWM3ZmRhZTBhYThkYjJlNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMTQ1LDEw
ICsxMTQ1LDcgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGVTZXNzaW9uQ2xlYW51cChOZXR3b3JrU2Vz
c2lvbkNvY29hJiBzZXNzaW9uLCBjb25zdCBOZXR3b3JrU2UKICAgICAgICAgcmV0dXJuOwogCiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotICAgIGF1dG8gcGFyZW50QXVkaXRU
b2tlbiA9IHNlc3Npb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5nZXRBdWRpdFRva2VuKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQocGFyZW50QXVkaXRUb2tlbik7
IC8vIFRoaXMgc2hvdWxkIGJlIGltcG9zc2libGUuCi0KLSAgICBib29sIGl0cEVuYWJsZWQgPSBk
b2VzUGFyZW50UHJvY2Vzc0hhdmVJVFBFbmFibGVkKHBhcmVudEF1ZGl0VG9rZW4sIHBhcmFtZXRl
cnMuYXBwSGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNzaW9uKTsKKyAgICBi
b29sIGl0cEVuYWJsZWQgPSBkb2VzUGFyZW50UHJvY2Vzc0hhdmVJVFBFbmFibGVkKHNlc3Npb24u
bmV0d29ya1Byb2Nlc3MoKSwgcGFyYW1ldGVycy5hcHBIYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVU
cmFja2luZ1Blcm1pc3Npb24pOwogICAgIGJvb2wgcGFzc2VkRW5hYmxlZFN0YXRlID0gc2Vzc2lv
bi5pc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CiAKICAgICAvLyBXZSBkbyBub3Qg
bmVlZCB0byBsb2cgYSBkaXNjcmVwYW5jeSBiZXR3ZWVuIHN0YXRlcyBmb3IgV2ViS2l0VGVzdFJ1
bm5lciBvciBUZXN0V2ViS2l0QVBJLgpAQCAtMTM1MCwxMCArMTM0Nyw4IEBAIFNlc3Npb25XcmFw
cGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpTZXNzaW9uU2V0Ojppbml0aWFsaXplRXBoZW1lcmFs
U3RhdGVsZXNzU2VzCiBTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lv
bldyYXBwZXJGb3JUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewogICAg
IGF1dG8gc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQgPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluID8gKmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gOiBOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjo6WWVzOwotICAgIGlmIChSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0
aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKSB7Ci0gICAg
ICAgIGlmIChpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoY29ubmVjdGlvbi0+Z2V0QXVk
aXRUb2tlbigpKSkKLSAgICAgICAgICAgIHNob3VsZEJlQ29uc2lkZXJlZEFwcEJvdW5kID0gTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwotICAgIH0KKyAgICBpZiAoaXNQYXJlbnRQcm9j
ZXNzQUZ1bGxXZWJCcm93c2VyKG5ldHdvcmtQcm9jZXNzKCkpKQorICAgICAgICBzaG91bGRCZUNv
bnNpZGVyZWRBcHBCb3VuZCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vz
c2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIGF1dG8gZmlyc3RQYXJ0
eSA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2Vi
QnJvd3NlckNoZWNrcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJy
b3dzZXJDaGVja3MuaAppbmRleCA0OGJmZDYxOTAyZDYxODRlNjhkMGZiZjQxOGIyMzk2YWNkMDE3
MTg5Li45YWMwNTEyZDBkNGU3ZTljNGZmZTc5MTA0NDk1NGY1ZGI4MWNlMTQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmgK
QEAgLTM0LDE0ICszNCwxNiBAQCBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2NsYXNzIEF1eGlsaWFyeVByb2Nlc3M7CisKIGJvb2wgaGFzUmVxdWVzdGVk
Q3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNzaW9uKCk7CiBib29sIGhhc1Byb2hpYml0ZWRVc2Fn
ZVN0cmluZ3MoKTsKIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+
IGdldEFwcEJvdW5kRG9tYWluc1Rlc3RpbmcoY29uc3QgU3RyaW5nJik7CiBib29sIGlzUnVubmlu
Z1Rlc3QoY29uc3QgU3RyaW5nJiBidW5kbGVJRCk7CiB2b2lkIGRldGVybWluZUlUUFN0YXRlKCk7
CiBib29sIGRvZXNBcHBIYXZlSVRQRW5hYmxlZCgpOwotYm9vbCBkb2VzUGFyZW50UHJvY2Vzc0hh
dmVJVFBFbmFibGVkKE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBib29sKTsKK2Jvb2wgZG9lc1Bh
cmVudFByb2Nlc3NIYXZlSVRQRW5hYmxlZChBdXhpbGlhcnlQcm9jZXNzJiwgYm9vbCBoYXNSZXF1
ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb24pOwogYm9vbCBpc0Z1bGxXZWJCcm93
c2VyKCk7Ci1ib29sIGlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcihPcHRpb25hbDxhdWRp
dF90b2tlbl90Pik7Citib29sIGlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcihBdXhpbGlh
cnlQcm9jZXNzJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQppbmRleCA5YTRk
NzgwOWU2M2U0ODUyNDI1ZjIwNTdjODYwMTMyYTU4YTVhNTliLi4yNmQ3Njc3ODIwYTk2YzgzZmY2
MGU1MjNiY2E1YzQ2OTkwOTBmZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQpAQCAtMjYsNiArMjYsOSBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5oIgogCisj
aW1wb3J0ICJBdXhpbGlhcnlQcm9jZXNzLmgiCisjaW1wb3J0ICJDb25uZWN0aW9uLmgiCisjaW1w
b3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJUQ0NTUEkuaCIKICNpbXBvcnQgPFdlYkNvcmUvUmVn
aXN0cmFibGVEb21haW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzLmg+CkBAIC0xNTUsMjAgKzE1OCwzNyBAQCBib29sIGRvZXNBcHBIYXZlSVRQRW5hYmxlZCgp
CiAgICAgcmV0dXJuIGN1cnJlbnRJVFBTdGF0ZSA9PSBJVFBTdGF0ZTo6RW5hYmxlZDsKIH0KIAot
Ym9vbCBkb2VzUGFyZW50UHJvY2Vzc0hhdmVJVFBFbmFibGVkKE9wdGlvbmFsPGF1ZGl0X3Rva2Vu
X3Q+IGF1ZGl0VG9rZW4sIGJvb2wgaGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJt
aXNzaW9uVmFsdWUpCitib29sIGRvZXNQYXJlbnRQcm9jZXNzSGF2ZUlUUEVuYWJsZWQoQXV4aWxp
YXJ5UHJvY2VzcyYgYXV4aWxpYXJ5UHJvY2VzcywgYm9vbCBoYXNSZXF1ZXN0ZWRDcm9zc1dlYnNp
dGVUcmFja2luZ1Blcm1pc3Npb24pCiB7CiAgICAgQVNTRVJUKGlzSW5XZWJLaXRDaGlsZFByb2Nl
c3MoKSk7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlmICghaXNQYXJl
bnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKGF1ZGl0VG9rZW4pICYmICFoYXNSZXF1ZXN0ZWRDcm9z
c1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb25WYWx1ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgc3RhdGljIGJvb2wgaXRwRW5hYmxlZCB7IHRydWUgfTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hf
b25jZV90IG9uY2U7CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsKKyAgICAgICAgaWYgKCFp
c1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoYXV4aWxpYXJ5UHJvY2VzcykgJiYgIWhhc1Jl
cXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbikKKyAgICAgICAgICAgIHJldHVy
bjsKIAotICAgIFRDQ0FjY2Vzc1ByZWZsaWdodFJlc3VsdCByZXN1bHQgPSBrVENDQWNjZXNzUHJl
ZmxpZ2h0RGVuaWVkOworICAgICAgICBUQ0NBY2Nlc3NQcmVmbGlnaHRSZXN1bHQgcmVzdWx0ID0g
a1RDQ0FjY2Vzc1ByZWZsaWdodERlbmllZDsKICNpZiAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9O
RV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApIHx8IChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQotICAgIGlmIChhdWRp
dFRva2VuKQorICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gYXV4
aWxpYXJ5UHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpOworICAgICAgICBpZiAoIWNv
bm5lY3Rpb24pIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoSVBDLCAiVW5hYmxlIHRvIGdldCBwYXJlbnQgcHJvY2VzcyBj
b25uZWN0aW9uIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBh
dXRvIGF1ZGl0VG9rZW4gPSBjb25uZWN0aW9uLT5nZXRBdWRpdFRva2VuKCk7CisgICAgICAgIGlm
ICghYXVkaXRUb2tlbikgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJVbmFibGUgdG8gZ2V0IHBhcmVudCBwcm9j
ZXNzIGF1ZGl0IHRva2VuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAg
ICAgcmVzdWx0ID0gVENDQWNjZXNzUHJlZmxpZ2h0V2l0aEF1ZGl0VG9rZW4oZ2V0a1RDQ1NlcnZp
Y2VXZWJLaXRJbnRlbGxpZ2VudFRyYWNraW5nUHJldmVudGlvbigpLCBhdWRpdFRva2VuLnZhbHVl
KCksIG51bGxwdHIpOwogI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdCAhPSBrVENDQWNjZXNzUHJl
ZmxpZ2h0RGVuaWVkOworICAgICAgICBpdHBFbmFibGVkID0gcmVzdWx0ICE9IGtUQ0NBY2Nlc3NQ
cmVmbGlnaHREZW5pZWQ7CisgICAgfSk7CisgICAgcmV0dXJuIGl0cEVuYWJsZWQ7CiB9CiAKIHN0
YXRpYyBzdGQ6OmF0b21pYzxib29sPiBoYXNDaGVja2VkVXNhZ2VTdHJpbmdzID0gZmFsc2U7CkBA
IC0yMDcsMjAgKzIyNywzNiBAQCBib29sIGhhc1Byb2hpYml0ZWRVc2FnZVN0cmluZ3MoKQogICAg
IHJldHVybiBoYXNQcm9oaWJpdGVkVXNhZ2VTdHJpbmdzOwogfQogCi1ib29sIGlzUGFyZW50UHJv
Y2Vzc0FGdWxsV2ViQnJvd3NlcihPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKQor
Ym9vbCBpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoQXV4aWxpYXJ5UHJvY2VzcyYgYXV4
aWxpYXJ5UHJvY2VzcykKIHsKICAgICBBU1NFUlQoaXNJbldlYktpdENoaWxkUHJvY2VzcygpKTsK
LSAgICBpZiAoIWF1ZGl0VG9rZW4pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN0YXRp
YyBib29sIGZ1bGxXZWJCcm93c2VyOwogCisgICAgc3RhdGljIGJvb2wgZnVsbFdlYkJyb3dzZXIg
eyBmYWxzZSB9OwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKICAgICBkaXNwYXRj
aF9vbmNlKCZvbmNlLCBeewotICAgICAgICBmdWxsV2ViQnJvd3NlciA9IFdURjo6aGFzRW50aXRs
ZW1lbnQoYXVkaXRUb2tlbi52YWx1ZSgpLCAiY29tLmFwcGxlLmRldmVsb3Blci53ZWItYnJvd3Nl
ciIpOworICAgICAgICBpZiAoaXNSdW5uaW5nVGVzdChXZWJDb3JlOjphcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgICAgIGZ1bGxXZWJCcm93c2VyID0gdHJ1ZTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxJUEM6OkNvbm5l
Y3Rpb24+IGNvbm5lY3Rpb24gPSBhdXhpbGlhcnlQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCk7CisgICAgICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJVbmFibGUg
dG8gZ2V0IHBhcmVudCBwcm9jZXNzIGNvbm5lY3Rpb24iKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGF1dG8gYXVkaXRUb2tlbiA9IGNvbm5lY3Rpb24tPmdldEF1
ZGl0VG9rZW4oKTsKKyAgICAgICAgaWYgKCFhdWRpdFRva2VuKSB7CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIlVu
YWJsZSB0byBnZXQgcGFyZW50IHByb2Nlc3MgYXVkaXQgdG9rZW4iKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bGxXZWJCcm93c2VyID0gV1RGOjpoYXNFbnRp
dGxlbWVudCgqYXVkaXRUb2tlbiwgImNvbS5hcHBsZS5kZXZlbG9wZXIud2ViLWJyb3dzZXIiKTsK
ICAgICB9KTsKIAotICAgIHJldHVybiBmdWxsV2ViQnJvd3NlciB8fCBpc1J1bm5pbmdUZXN0KFdl
YkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gZnVsbFdl
YkJyb3dzZXI7CiB9CiAKIHN0YXRpYyBib29sIGlzRnVsbFdlYkJyb3dzZXIoY29uc3QgU3RyaW5n
JiBidW5kbGVJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmNwcAppbmRleCBmMjQ2NzY5MzI5ODAyZjBiNzcwMWEzNTlhYjQ4M2FhZTEzNzE1
MDU5Li5jNDIzY2Y2ZWYxMDU3NDdjNTZkZGQ0YzgyOGVjZjM3NDVjOThmNWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtNTAsMTEgKzUw
LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIHsKLXN0YXRpYyBib29sIGlzV2ViQnJvd3NlcigpCitpbmxpbmUgYm9vbCBpc1dlYkJy
b3dzZXIoKQogewotICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGlzUGFyZW50
UHJvY2Vzc0FGdWxsV2ViQnJvd3Nlcihjb25uZWN0aW9uLT5nZXRBdWRpdFRva2VuKCkpOwotICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2Vy
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpKTsKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBlZjIwOGJmZWFkMDFkNDYwNmYyZGE3Nzcz
OGFlYTgzMGE5Y2M0NTk4Li4xYmQxOGI2YjkxNmVjYWY4NGFmZjMzNDViYzJkMTUzNDcyZmFjNmI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
MzgyNiw4ICszODI2LDcgQEAgdm9pZCBXZWJQYWdlOjpwcmVmZXJlbmNlc0RpZENoYW5nZShjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIGJvb2wgV2ViUGFnZTo6aXNQYXJlbnRQcm9j
ZXNzQVdlYkJyb3dzZXIoKSBjb25zdAogewogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgaWYg
KGF1dG8qIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpKQotICAgICAgICByZXR1cm4gaXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93
c2VyKGNvbm5lY3Rpb24tPmdldEF1ZGl0VG9rZW4oKSk7CisgICAgcmV0dXJuIGlzUGFyZW50UHJv
Y2Vzc0FGdWxsV2ViQnJvd3NlcihXZWJQcm9jZXNzOjpzaW5nbGV0b24oKSk7CiAjZW5kaWYKICAg
ICByZXR1cm4gZmFsc2U7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425198</attachid>
            <date>2021-04-05 13:31:38 -0700</date>
            <delta_ts>2021-04-05 21:02:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224196-20210405133137.patch</filename>
            <type>text/plain</type>
            <size>10758</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY1ZDY3NTE3ZmYyMGM3NWM4
NzBlNjJlMDE4OWFhMmI5ZDllNGI1ODEuLjBkYTUzZjJmOWI0YjdkOGU1MGRmMWQyYTg5YTRjYThj
YTFhOTUyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjEtMDQtMDUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgY3Jh
c2ggaW5zaWRlIGdldEF1ZGl0VG9rZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNDE5NgorICAgICAgICA8cmRhcjovLzc0NTM2Mjg1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4KKworICAgICAgICBTb21ldGhpbmcgaXMgY3Jh
c2hpbmcgaW5zaWRlIHRoZSBjYWxsIHRvIGdldEF1ZGl0VG9rZW4sIGFuZCBJIGJlbGlldmUgaXQg
aXMgaGFwcGVuaW5nIGR1cmluZyB0ZWFyZG93biBvZiB0aGUgbmV0d29yayBwcm9jZXNzLgorICAg
ICAgICBBZnRlciBtYW55IGRheXMgb2YgaGVhZCBzY3JhdGNoaW5nIGFuZCBtYW55IHByZXZpb3Vz
IGF0dGVtcHRzIGF0IGZpeGluZyB0aGlzIHByb2JsZW0sIGl0IHBlcnNpc3RzLgorICAgICAgICBT
aW5jZSBkaXJlY3Qgc3RyYXRlZ2llcyBhdCBmaXhpbmcgdGhpcyBwcm9ibGVtIGhhdmUgZmFpbGVk
LCBJIG5vdyB0cnkgc29tZXRoaW5nIGRpZmZlcmVudC4KKyAgICAgICAgSW5zdGVhZCBvZiBjYWxs
aW5nIGdldEF1ZGl0VG9rZW4gYXQgdGhlIGJlZ2lubmluZyBvZiBldmVyeSByZXNvdXJjZSBsb2Fk
IHRvIGFzayBpZiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIGFuIGVudGl0bGVtZW50LAorICAgICAg
ICBJIG5vdyBjYWxsIGl0IG9ubHkgb25jZSBwZXIgcHJvY2Vzcy4gIFRoYXQgc2hvdWxkIG1ha2Ug
dGhpbmdzIGZhc3RlciBhbmQgbGVzcyBjcmFzaHkuICBPdGhlcndpc2Ugbm8gY2hhbmdlIGluIGJl
aGF2aW9yLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6YWN0aXZhdGVTZXNzaW9uQ2xlYW51cCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayk6
CisgICAgICAgICogU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmg6CisgICAg
ICAgICogU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tOgorICAgICAgICAo
V2ViS2l0Ojpkb2VzUGFyZW50UHJvY2Vzc0hhdmVJVFBFbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6aXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvcmU6OmlzV2ViQnJvd3Nlcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc1BhcmVu
dFByb2Nlc3NBV2ViQnJvd3NlciBjb25zdCk6CisKIDIwMjEtMDQtMDIgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBdIFBvd2VyIHJlZ3Jlc3Npb246IGF1
ZGlvIGhhcmR3YXJlIGlzIGNvbmZpZ3VyZWQgZm9yIDEyOCBmcmFtZSBwcmVmZXJyZWQgYnVmZmVy
IHNpemUgZHVyaW5nIFZpZGVvQXVkaW8gcGxheWJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCAy
MDU3MTI2OTk4MjBmYmZmNzY2MWI1MDI3ZGI4NTAyYTNjNjE1OWYxLi44NmFlOGRkYjkxOTI3ZWEw
MzYyZjM5NWM3ZmRhZTBhYThkYjJlNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMTQ1LDEw
ICsxMTQ1LDcgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGVTZXNzaW9uQ2xlYW51cChOZXR3b3JrU2Vz
c2lvbkNvY29hJiBzZXNzaW9uLCBjb25zdCBOZXR3b3JrU2UKICAgICAgICAgcmV0dXJuOwogCiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotICAgIGF1dG8gcGFyZW50QXVkaXRU
b2tlbiA9IHNlc3Npb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5nZXRBdWRpdFRva2VuKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQocGFyZW50QXVkaXRUb2tlbik7
IC8vIFRoaXMgc2hvdWxkIGJlIGltcG9zc2libGUuCi0KLSAgICBib29sIGl0cEVuYWJsZWQgPSBk
b2VzUGFyZW50UHJvY2Vzc0hhdmVJVFBFbmFibGVkKHBhcmVudEF1ZGl0VG9rZW4sIHBhcmFtZXRl
cnMuYXBwSGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNzaW9uKTsKKyAgICBi
b29sIGl0cEVuYWJsZWQgPSBkb2VzUGFyZW50UHJvY2Vzc0hhdmVJVFBFbmFibGVkKHNlc3Npb24u
bmV0d29ya1Byb2Nlc3MoKSwgcGFyYW1ldGVycy5hcHBIYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVU
cmFja2luZ1Blcm1pc3Npb24pOwogICAgIGJvb2wgcGFzc2VkRW5hYmxlZFN0YXRlID0gc2Vzc2lv
bi5pc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CiAKICAgICAvLyBXZSBkbyBub3Qg
bmVlZCB0byBsb2cgYSBkaXNjcmVwYW5jeSBiZXR3ZWVuIHN0YXRlcyBmb3IgV2ViS2l0VGVzdFJ1
bm5lciBvciBUZXN0V2ViS2l0QVBJLgpAQCAtMTM1MCwxMCArMTM0Nyw4IEBAIFNlc3Npb25XcmFw
cGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpTZXNzaW9uU2V0Ojppbml0aWFsaXplRXBoZW1lcmFs
U3RhdGVsZXNzU2VzCiBTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lv
bldyYXBwZXJGb3JUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewogICAg
IGF1dG8gc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQgPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluID8gKmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gOiBOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjo6WWVzOwotICAgIGlmIChSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0
aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKSB7Ci0gICAg
ICAgIGlmIChpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoY29ubmVjdGlvbi0+Z2V0QXVk
aXRUb2tlbigpKSkKLSAgICAgICAgICAgIHNob3VsZEJlQ29uc2lkZXJlZEFwcEJvdW5kID0gTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwotICAgIH0KKyAgICBpZiAoaXNQYXJlbnRQcm9j
ZXNzQUZ1bGxXZWJCcm93c2VyKG5ldHdvcmtQcm9jZXNzKCkpKQorICAgICAgICBzaG91bGRCZUNv
bnNpZGVyZWRBcHBCb3VuZCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vz
c2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIGF1dG8gZmlyc3RQYXJ0
eSA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2Vi
QnJvd3NlckNoZWNrcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJy
b3dzZXJDaGVja3MuaAppbmRleCA0OGJmZDYxOTAyZDYxODRlNjhkMGZiZjQxOGIyMzk2YWNkMDE3
MTg5Li5jMzQzZGMwZDRmM2QyZjJiZDdkMmE3OTI2N2JjMTM2ZTMyZTdhMjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLmgK
QEAgLTM0LDE0ICszNCwxOCBAQCBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2NsYXNzIEF1eGlsaWFyeVByb2Nlc3M7CisKIGJvb2wgaGFzUmVxdWVzdGVk
Q3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNzaW9uKCk7CiBib29sIGhhc1Byb2hpYml0ZWRVc2Fn
ZVN0cmluZ3MoKTsKIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+
IGdldEFwcEJvdW5kRG9tYWluc1Rlc3RpbmcoY29uc3QgU3RyaW5nJik7CiBib29sIGlzUnVubmlu
Z1Rlc3QoY29uc3QgU3RyaW5nJiBidW5kbGVJRCk7CiB2b2lkIGRldGVybWluZUlUUFN0YXRlKCk7
CiBib29sIGRvZXNBcHBIYXZlSVRQRW5hYmxlZCgpOwotYm9vbCBkb2VzUGFyZW50UHJvY2Vzc0hh
dmVJVFBFbmFibGVkKE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBib29sKTsKK2Jvb2wgZG9lc1Bh
cmVudFByb2Nlc3NIYXZlSVRQRW5hYmxlZChBdXhpbGlhcnlQcm9jZXNzJiwgYm9vbCBoYXNSZXF1
ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb24pOwogYm9vbCBpc0Z1bGxXZWJCcm93
c2VyKCk7Ci1ib29sIGlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcihPcHRpb25hbDxhdWRp
dF90b2tlbl90Pik7Citib29sIGlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcihBdXhpbGlh
cnlQcm9jZXNzJik7CisKKyNkZWZpbmUgV0VCS0lUX1BBUkVOVF9QUk9DRVNTX0ZVTExfV0VCX0JS
T1dTRVJfUEFSQU1FVEVSX0FVWElMSUFSWV9QUk9DRVNTIDEKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJv
d3NlckNoZWNrcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93
c2VyQ2hlY2tzLm1tCmluZGV4IDlhNGQ3ODA5ZTYzZTQ4NTI0MjVmMjA1N2M4NjAxMzJhNThhNWE1
OWIuLjI2ZDc2Nzc4MjBhOTZjODNmZjYwZTUyM2JjYTVjNDY5OTA5MGZmZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1t
CkBAIC0yNiw2ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRlZmF1bHRX
ZWJCcm93c2VyQ2hlY2tzLmgiCiAKKyNpbXBvcnQgIkF1eGlsaWFyeVByb2Nlc3MuaCIKKyNpbXBv
cnQgIkNvbm5lY3Rpb24uaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlRDQ1NQSS5o
IgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KQEAgLTE1NSwyMCArMTU4LDM3IEBAIGJvb2wg
ZG9lc0FwcEhhdmVJVFBFbmFibGVkKCkKICAgICByZXR1cm4gY3VycmVudElUUFN0YXRlID09IElU
UFN0YXRlOjpFbmFibGVkOwogfQogCi1ib29sIGRvZXNQYXJlbnRQcm9jZXNzSGF2ZUlUUEVuYWJs
ZWQoT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgYm9vbCBoYXNSZXF1ZXN0ZWRD
cm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb25WYWx1ZSkKK2Jvb2wgZG9lc1BhcmVudFByb2Nl
c3NIYXZlSVRQRW5hYmxlZChBdXhpbGlhcnlQcm9jZXNzJiBhdXhpbGlhcnlQcm9jZXNzLCBib29s
IGhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbikKIHsKICAgICBBU1NF
UlQoaXNJbldlYktpdENoaWxkUHJvY2VzcygpKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgaWYgKCFpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoYXVkaXRUb2tl
bikgJiYgIWhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvblZhbHVlKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBzdGF0aWMgYm9vbCBpdHBFbmFibGVkIHsgdHJ1ZSB9
OworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKKyAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlLCBeeworICAgICAgICBpZiAoIWlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcihhdXhp
bGlhcnlQcm9jZXNzKSAmJiAhaGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNz
aW9uKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgVENDQWNjZXNzUHJlZmxpZ2h0UmVzdWx0
IHJlc3VsdCA9IGtUQ0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQ7CisgICAgICAgIFRDQ0FjY2Vzc1By
ZWZsaWdodFJlc3VsdCByZXN1bHQgPSBrVENDQWNjZXNzUHJlZmxpZ2h0RGVuaWVkOwogI2lmIChQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAw
MCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMTAwMDApCi0gICAgaWYgKGF1ZGl0VG9rZW4pCisgICAgICAgIFJlZlB0cjxJUEM6OkNvbm5l
Y3Rpb24+IGNvbm5lY3Rpb24gPSBhdXhpbGlhcnlQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCk7CisgICAgICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihJUEMsICJVbmFibGUg
dG8gZ2V0IHBhcmVudCBwcm9jZXNzIGNvbm5lY3Rpb24iKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGF1dG8gYXVkaXRUb2tlbiA9IGNvbm5lY3Rpb24tPmdldEF1
ZGl0VG9rZW4oKTsKKyAgICAgICAgaWYgKCFhdWRpdFRva2VuKSB7CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKElQQywgIlVu
YWJsZSB0byBnZXQgcGFyZW50IHByb2Nlc3MgYXVkaXQgdG9rZW4iKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQgPSBUQ0NBY2Nlc3NQcmVmbGlnaHRXaXRo
QXVkaXRUb2tlbihnZXRrVENDU2VydmljZVdlYktpdEludGVsbGlnZW50VHJhY2tpbmdQcmV2ZW50
aW9uKCksIGF1ZGl0VG9rZW4udmFsdWUoKSwgbnVsbHB0cik7CiAjZW5kaWYKLSAgICByZXR1cm4g
cmVzdWx0ICE9IGtUQ0NBY2Nlc3NQcmVmbGlnaHREZW5pZWQ7CisgICAgICAgIGl0cEVuYWJsZWQg
PSByZXN1bHQgIT0ga1RDQ0FjY2Vzc1ByZWZsaWdodERlbmllZDsKKyAgICB9KTsKKyAgICByZXR1
cm4gaXRwRW5hYmxlZDsKIH0KIAogc3RhdGljIHN0ZDo6YXRvbWljPGJvb2w+IGhhc0NoZWNrZWRV
c2FnZVN0cmluZ3MgPSBmYWxzZTsKQEAgLTIwNywyMCArMjI3LDM2IEBAIGJvb2wgaGFzUHJvaGli
aXRlZFVzYWdlU3RyaW5ncygpCiAgICAgcmV0dXJuIGhhc1Byb2hpYml0ZWRVc2FnZVN0cmluZ3M7
CiB9CiAKLWJvb2wgaXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKE9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+IGF1ZGl0VG9rZW4pCitib29sIGlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3Nl
cihBdXhpbGlhcnlQcm9jZXNzJiBhdXhpbGlhcnlQcm9jZXNzKQogewogICAgIEFTU0VSVChpc0lu
V2ViS2l0Q2hpbGRQcm9jZXNzKCkpOwotICAgIGlmICghYXVkaXRUb2tlbikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgc3RhdGljIGJvb2wgZnVsbFdlYkJyb3dzZXI7CiAKKyAgICBzdGF0
aWMgYm9vbCBmdWxsV2ViQnJvd3NlciB7IGZhbHNlIH07CiAgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57Ci0gICAgICAgIGZ1bGxXZWJC
cm93c2VyID0gV1RGOjpoYXNFbnRpdGxlbWVudChhdWRpdFRva2VuLnZhbHVlKCksICJjb20uYXBw
bGUuZGV2ZWxvcGVyLndlYi1icm93c2VyIik7CisgICAgICAgIGlmIChpc1J1bm5pbmdUZXN0KFdl
YkNvcmU6OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpKSkgeworICAgICAgICAgICAgZnVs
bFdlYkJyb3dzZXIgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGF1eGlsaWFyeVByb2Nl
c3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICAgICAgaWYgKCFjb25uZWN0aW9uKSB7
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKElQQywgIlVuYWJsZSB0byBnZXQgcGFyZW50IHByb2Nlc3MgY29ubmVjdGlvbiIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBhdWRpdFRv
a2VuID0gY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tlbigpOworICAgICAgICBpZiAoIWF1ZGl0VG9r
ZW4pIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoSVBDLCAiVW5hYmxlIHRvIGdldCBwYXJlbnQgcHJvY2VzcyBhdWRpdCB0
b2tlbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZnVsbFdl
YkJyb3dzZXIgPSBXVEY6Omhhc0VudGl0bGVtZW50KCphdWRpdFRva2VuLCAiY29tLmFwcGxlLmRl
dmVsb3Blci53ZWItYnJvd3NlciIpOwogICAgIH0pOwogCi0gICAgcmV0dXJuIGZ1bGxXZWJCcm93
c2VyIHx8IGlzUnVubmluZ1Rlc3QoV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KCkpOworICAgIHJldHVybiBmdWxsV2ViQnJvd3NlcjsKIH0KIAogc3RhdGljIGJvb2wgaXNGdWxs
V2ViQnJvd3Nlcihjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRv
ckNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCmluZGV4IGYyNDY3NjkzMjk4MDJm
MGI3NzAxYTM1OWFiNDgzYWFlMTM3MTUwNTkuLmM0MjNjZjZlZjEwNTc0N2M1NmRkZDRjODI4ZWNm
Mzc0NWM5OGY1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRp
bmF0b3IuY3BwCkBAIC01MCwxMSArNTAsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ugewotc3RhdGljIGJvb2wgaXNXZWJCcm93c2Vy
KCkKK2lubGluZSBib29sIGlzV2ViQnJvd3NlcigpCiB7Ci0gICAgaWYgKGF1dG8qIGNvbm5lY3Rp
b24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpKQot
ICAgICAgICByZXR1cm4gaXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKGNvbm5lY3Rpb24t
PmdldEF1ZGl0VG9rZW4oKSk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc1BhcmVu
dFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkpOwogfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGVm
MjA4YmZlYWQwMWQ0NjA2ZjJkYTc3NzM4YWVhODMwYTljYzQ1OTguLjFiZDE4YjZiOTE2ZWNhZjg0
YWZmMzM0NWJjMmQxNTM0NzJmYWM2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODI2LDggKzM4MjYsNyBAQCB2b2lkIFdlYlBhZ2U6OnBy
ZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogYm9v
bCBXZWJQYWdlOjppc1BhcmVudFByb2Nlc3NBV2ViQnJvd3NlcigpIGNvbnN0CiB7CiAjaWYgSEFW
RShBVURJVF9UT0tFTikKLSAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiBpc1Bh
cmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIoY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tlbigpKTsK
KyAgICByZXR1cm4gaXNQYXJlbnRQcm9jZXNzQUZ1bGxXZWJCcm93c2VyKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpKTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>