<?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>210208</bug_id>
          
          <creation_ts>2020-04-08 11:55:41 -0700</creation_ts>
          <short_desc>Fix handling non-linearized PDFs when incremental PDF loading is enabled</short_desc>
          <delta_ts>2020-04-08 15:15:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>ggaren</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1639197</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-08 11:55:41 -0700</bug_when>
    <thetext>Fix handling non-linearized PDFs when incremental PDF loading is enabled

&lt;rdar://problem/60619506&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639218</commentid>
    <comment_count>1</comment_count>
      <attachid>395852</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-08 12:16:39 -0700</bug_when>
    <thetext>Created attachment 395852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639221</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-08 12:24:07 -0700</bug_when>
    <thetext>/Volumes/Data/worker/macOS-Mojave-Debug-Build-EWS/build/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:1536:5: error: use of undeclared identifier &apos;pdfLog&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639226</commentid>
    <comment_count>3</comment_count>
      <attachid>395852</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-08 12:27:45 -0700</bug_when>
    <thetext>Comment on attachment 395852
Patch

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

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:142
&gt; +static const int32_t maximumRangeRequestPosition = std::numeric_limits&lt;int32_t&gt;::max();

INT32_MAX is a reasonable maximum? Seems ... big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639234</commentid>
    <comment_count>4</comment_count>
      <attachid>395852</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-08 12:46:42 -0700</bug_when>
    <thetext>Comment on attachment 395852
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        When we try to load a non-linearized PDF with PDFKit, it makes an outlandishly large range request
&gt; +        to try to verify the PDF file size.

Are we working around a bug in PDFKit here? If so, let&apos;s cite the Radar for that bug.

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:142
&gt; +static const int32_t maximumRangeRequestPosition = std::numeric_limits&lt;int32_t&gt;::max();

Should this be off_t, since the position argument passed to dataProviderGetBytesAtPositionCallback is off_t?

What is the actual request we get from PDFKit in practice? Maybe we can bump this number up, and do a direct comparison instead of a &gt; comparison. This limit would prohibit streaming of any &gt; 4GB PDF resource. While 4GB is very big, it doesn&apos;t strike me as impossibly big, and refusing to stream something because it was big would be a sad paradox.

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:701
&gt; +void PDFPlugin::receivedInvalidRangeRequest()

I think this code would be clearer if we named and/or commented it according to the behavior we are working around / modeling. Maybe something like

    maximumRangeRequestPosition =&gt; nonLinearizedPDFSentinel
    receivedInvalidRangeRequest =&gt; receivedNonLinearizedPDFSentinel

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:741
&gt; +    Ref&lt;PDFPlugin&gt; plugin = *((PDFPlugin*)info);

Let&apos;s put this at the top of the function so we can remove the casting above.

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:744
&gt; +    // It&apos;s possible we previously encountered an invalid range and therefore disabled incremental loading,
&gt; +    // but PDFDocument is still trying to read data using a different strategy.

Does this happen?

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:750
&gt; +    auto debugPluginRef = plugin.copyRef();

I think you can just use plugin here.

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:859
&gt; +        // The main thread dispatch below removes the last reference to the PDF thread.
&gt; +        // It must be the last code executed in this function.
&gt; +        callOnMainThread([protectedPlugin = WTFMove(protectedPlugin)] { });

callOnMainThread can execute its function concurrently at any time; so, this is a suspicious lifetime idiom, and probably not fully correct. What are we trying to accomplish here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639236</commentid>
    <comment_count>5</comment_count>
      <attachid>395852</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-08 12:47:20 -0700</bug_when>
    <thetext>Comment on attachment 395852
Patch

I accidentally overwrote thorton&apos;s r+, but now it&apos;s on purpose cuz EWS is angry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639250</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-08 13:04:09 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; Comment on attachment 395852 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395852&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:9
&gt; &gt; +        When we try to load a non-linearized PDF with PDFKit, it makes an outlandishly large range request
&gt; &gt; +        to try to verify the PDF file size.
&gt; 
&gt; Are we working around a bug in PDFKit here? If so, let&apos;s cite the Radar for
&gt; that bug.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:142
&gt; &gt; +static const int32_t maximumRangeRequestPosition = std::numeric_limits&lt;int32_t&gt;::max();
&gt; 
&gt; Should this be off_t, since the position argument passed to
&gt; dataProviderGetBytesAtPositionCallback is off_t?
&gt; 
&gt; What is the actual request we get from PDFKit in practice? Maybe we can bump
&gt; this number up, and do a direct comparison instead of a &gt; comparison. 

It&apos;s not constant, and it&apos;s closer to int64_t max.

&gt; This limit would prohibit streaming of any &gt; 4GB PDF resource. While 4GB is very
&gt; big, it doesn&apos;t strike me as impossibly big, and refusing to stream
&gt; something because it was big would be a sad paradox.

I can make it &quot;bigger than 4gb&quot;

&gt; 
&gt; &gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:701
&gt; &gt; +void PDFPlugin::receivedInvalidRangeRequest()
&gt; 
&gt; I think this code would be clearer if we named and/or commented it according
&gt; to the behavior we are working around / modeling. Maybe something like
&gt; 
&gt;     maximumRangeRequestPosition =&gt; nonLinearizedPDFSentinel
&gt;     receivedInvalidRangeRequest =&gt; receivedNonLinearizedPDFSentinel

I&apos;m fine with these

&gt; 
&gt; &gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:741
&gt; &gt; +    Ref&lt;PDFPlugin&gt; plugin = *((PDFPlugin*)info);
&gt; 
&gt; Let&apos;s put this at the top of the function so we can remove the casting above.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:744
&gt; &gt; +    // It&apos;s possible we previously encountered an invalid range and therefore disabled incremental loading,
&gt; &gt; +    // but PDFDocument is still trying to read data using a different strategy.
&gt; 
&gt; Does this happen?

Yes.

&gt; &gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:750
&gt; &gt; +    auto debugPluginRef = plugin.copyRef();
&gt; 
&gt; I think you can just use plugin here.

Need a non-moved copy of plugin down at the bottom of the function for logging.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:859
&gt; &gt; +        // The main thread dispatch below removes the last reference to the PDF thread.
&gt; &gt; +        // It must be the last code executed in this function.
&gt; &gt; +        callOnMainThread([protectedPlugin = WTFMove(protectedPlugin)] { });
&gt; 
&gt; callOnMainThread can execute its function concurrently at any time; so, this
&gt; is a suspicious lifetime idiom, and probably not fully correct. What are we
&gt; trying to accomplish here?

It&apos;s a scope exit - It only runs the functor as the enclosing scope (e.g. ::threadEntry()) finishes up.

This is just moving the final &quot;callOnMainThread&quot; to a scope exit because there&apos;s now multiple return paths from this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639268</commentid>
    <comment_count>7</comment_count>
      <attachid>395861</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-08 13:40:49 -0700</bug_when>
    <thetext>Created attachment 395861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639270</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-08 13:44:09 -0700</bug_when>
    <thetext>&gt; &gt; callOnMainThread can execute its function concurrently at any time; so, this
&gt; &gt; is a suspicious lifetime idiom, and probably not fully correct. What are we
&gt; &gt; trying to accomplish here?
&gt; 
&gt; It&apos;s a scope exit - It only runs the functor as the enclosing scope (e.g.
&gt; ::threadEntry()) finishes up.
&gt; 
&gt; This is just moving the final &quot;callOnMainThread&quot; to a scope exit because
&gt; there&apos;s now multiple return paths from this function.

How about changing the comment to &quot;Keep PDFPlugin alive until the end of this function and the end of the last main thread task submitted by this function&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639273</commentid>
    <comment_count>9</comment_count>
      <attachid>395863</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-04-08 13:49:36 -0700</bug_when>
    <thetext>Created attachment 395863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639309</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-08 15:15:22 -0700</bug_when>
    <thetext>Committed r259760: &lt;https://trac.webkit.org/changeset/259760&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395863.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395852</attachid>
            <date>2020-04-08 12:16:39 -0700</date>
            <delta_ts>2020-04-08 13:40:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210208-20200408121643.patch</filename>
            <type>text/plain</type>
            <size>8026</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJkNDZjMmJjZDRlZTA0NWUy
YjNiZjcxY2M5NjcxMmExZGM3M2E5MWYuLjgyNWYzNTc5NWQ3M2Q0YjE0ZDBmNTY4Mzg0ZTQ2OTll
Mjk3NzNmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMDQtMDggIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBoYW5kbGluZyBub24tbGlu
ZWFyaXplZCBQREZzIHdoZW4gaW5jcmVtZW50YWwgUERGIGxvYWRpbmcgaXMgZW5hYmxlZC4KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwNjE5NTA2PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDIwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdoZW4gd2UgdHJ5IHRvIGxvYWQgYSBub24tbGluZWFyaXplZCBQ
REYgd2l0aCBQREZLaXQsIGl0IG1ha2VzIGFuIG91dGxhbmRpc2hseSBsYXJnZSByYW5nZSByZXF1
ZXN0CisgICAgICAgIHRvIHRyeSB0byB2ZXJpZnkgdGhlIFBERiBmaWxlIHNpemUuCisgICAgICAg
IAorICAgICAgICBXZSBuZWVkIHRvIGRldGVjdCB0aGF0IGFuZCBmYWxsYmFjayB0byBub24taW5j
cmVtZW50YWwgUERGIGxvYWRpbmcuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnJlY2VpdmVkSW52YWxpZFJhbmdlUmVx
dWVzdCk6CisgICAgICAgIChXZWJLaXQ6OmRhdGFQcm92aWRlckdldEJ5dGVzQXRQb3NpdGlvbkNh
bGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp0aHJlYWRFbnRyeSk6CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aW5zdGFsbFBERkRvY3VtZW50KToKKwogMjAyMC0wNC0w
NiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBD
cmVhdGUgYSB3YXkgdG8gc2lnbmFsIGlmIHRoZSBXS0FwcEJvdW5kRG9tYWlucyBsaXN0IGlzIGVt
cHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
LmgKaW5kZXggYjY4ODNiNzA1OTAyNmFiODZjZmQ2MTZmODY3MTVkZWQxNmE0NGFjZi4uYWMyM2Ex
MmJkMjVlYmU5ZTIzOWY5MjBiMzI4NzQwOGI4ZjQ3YjY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMTM1LDYgKzEzNSw4IEBA
IHB1YmxpYzoKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQogICAgIHZvaWQgZ2V0UmVz
b3VyY2VCeXRlc0F0UG9zaXRpb24oc2l6ZV90IGNvdW50LCBvZmZfdCBwb3NpdGlvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90IGNvdW50KT4mJik7CiAgICAg
c2l6ZV90IGdldFJlc291cmNlQnl0ZXNBdFBvc2l0aW9uTWFpblRocmVhZCh2b2lkKiBidWZmZXIs
IG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpOworICAgIHZvaWQgcmVjZWl2ZWRJbnZhbGlk
UmFuZ2VSZXF1ZXN0KCk7CisgICAgYm9vbCBpbmNyZW1lbnRhbFBERkxvYWRpbmdFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmNyZW1lbnRhbFBERkxvYWRpbmdFbmFibGVkOyB9CiAjaWZuZGVm
IE5ERUJVRwogICAgIHZvaWQgcGRmTG9nKGNvbnN0IFN0cmluZyYgZXZlbnQpOwogICAgIHNpemVf
dCBpbmNyZW1lbnRUaHJlYWRzV2FpdGluZ09uQ2FsbGJhY2soKSB7IHJldHVybiArK21fdGhyZWFk
c1dhaXRpbmdPbkNhbGxiYWNrOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAxMDE5NWZhY2IxNzMzODJhZjljZTM4YjQ3ZWJh
ZDIwYzc5ZWQxNTcwLi4yNjI4ODMxZGJjNmM3MTYxNWNhN2M1MzMzZjIzZjY2OWNiZWQ2YmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KQEAgLTkwLDYgKzkwLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJ
Lmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU01lbnVTUEkuaD4KICNpbXBvcnQgPHd0Zi9IZXhO
dW1iZXIuaD4KKyNpbXBvcnQgPHd0Zi9TY29wZS5oPgogI2ltcG9ydCA8d3RmL1VVSUQuaD4KICNp
bXBvcnQgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbXBvcnQgPHd0Zi9Xb3JrUXVldWUuaD4KQEAg
LTEzNiw2ICsxMzcsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGFubm90YXRpb25TdHlsZSA9CiAv
LyB3aWxsIGp1bXAgdG8gdGhlIG5leHQgb3IgcHJldmlvdXMgcGFnZSwgdG8gbWF0Y2ggUERGS2l0
IGJlaGF2aW9yLgogc3RhdGljIGNvbnN0IGludCBkZWZhdWx0U2Nyb2xsTWFnbml0dWRlVGhyZXNo
b2xkRm9yUGFnZUZsaXAgPSAyMDsKIAorLy8gV2UgY3VycmVudGx5IGhvbGQgdGhlIGVudGlyZSBQ
REYgcmVzb3VyY2UgaW4gbWVtb3J5LAorLy8gc28gd2UgYWxzbyBuZWVkIGEgc2Vuc2libGUgbWF4
aW11bSByYW5nZSByZXF1ZXN0IHBvc2l0aW9uLgorc3RhdGljIGNvbnN0IGludDMyX3QgbWF4aW11
bVJhbmdlUmVxdWVzdFBvc2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4
KCk7CisKIEBpbnRlcmZhY2UgV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IDogTlNPYmpl
Y3QgewogICAgIFBERkxheWVyQ29udHJvbGxlciAqX3BkZkxheWVyQ29udHJvbGxlcjsKICAgICBf
X3Vuc2FmZV91bnJldGFpbmVkIE5TT2JqZWN0ICpfcGFyZW50OwpAQCAtNjkzLDYgKzY5OCwzNyBA
QCB2b2lkIFBERlBsdWdpbjo6dmVyYm9zZUxvZygpCiB9CiAjZW5kaWYgLy8gIUxPR19ESVNBQkxF
RAogCit2b2lkIFBERlBsdWdpbjo6cmVjZWl2ZWRJbnZhbGlkUmFuZ2VSZXF1ZXN0KCkKK3sKKyAg
ICBtX2luY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQgPSBmYWxzZTsKKworICAgIGlmICghaXNN
YWluVGhyZWFkKCkpIHsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgICAgIHBkZkxvZygiRGlzYWJs
aW5nIGluY3JlbWVudGFsIFBERiBsb2FkaW5nIG9uIGJhY2tncm91bmQgdGhyZWFkIik7CisjZW5k
aWYKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSB7CisgICAgICAgICAgICByZWNlaXZlZEludmFsaWRSYW5nZVJlcXVlc3QoKTsK
KyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiAhTE9HX0RJU0FCTEVE
CisgICAgcGRmTG9nKG1ha2VTdHJpbmcoIkNhbmNlbGxpbmcgYWxsICIsIG1fc3RyZWFtTG9hZGVy
TWFwLnNpemUoKSwgIiByYW5nZSByZXF1ZXN0IGxvYWRlcnMiKSk7CisjZW5kaWYKKworICAgIGZv
ciAoYXV0byBpdGVyYXRvciA9IG1fc3RyZWFtTG9hZGVyTWFwLmJlZ2luKCk7IGl0ZXJhdG9yICE9
IG1fc3RyZWFtTG9hZGVyTWFwLmVuZCgpOyBpdGVyYXRvciA9IG1fc3RyZWFtTG9hZGVyTWFwLmJl
Z2luKCkpIHsKKyAgICAgICAgbV9vdXRzdGFuZGluZ0J5dGVSYW5nZVJlcXVlc3RzLnJlbW92ZShp
dGVyYXRvci0+dmFsdWUpOworICAgICAgICBjYW5jZWxBbmRGb3JnZXRMb2FkZXIoKml0ZXJhdG9y
LT5rZXkpOworICAgIH0KKworICAgIGlmICghbV9kb2N1bWVudEZpbmlzaGVkTG9hZGluZyB8fCBt
X3BkZkRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BkZkRvY3VtZW50ID0gYWRv
cHROUyhbW3BkZkRvY3VtZW50Q2xhc3MoKSBhbGxvY10gaW5pdFdpdGhEYXRhOnJhd0RhdGEoKV0p
OworICAgIGluc3RhbGxQREZEb2N1bWVudCgpOworICAgIHRyeVJ1blNjcmlwdHNJblBERkRvY3Vt
ZW50KCk7Cit9CisKIHN0YXRpYyBzaXplX3QgZGF0YVByb3ZpZGVyR2V0Qnl0ZXNBdFBvc2l0aW9u
Q2FsbGJhY2sodm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90
IGNvdW50KQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkgewpAQCAtNzAyLDEzICs3MzgsMjgg
QEAgc3RhdGljIHNpemVfdCBkYXRhUHJvdmlkZXJHZXRCeXRlc0F0UG9zaXRpb25DYWxsYmFjayh2
b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG8KICAgICAgICAgcmV0dXJuICgoUERGUGx1Z2luKilp
bmZvKS0+Z2V0UmVzb3VyY2VCeXRlc0F0UG9zaXRpb25NYWluVGhyZWFkKGJ1ZmZlciwgcG9zaXRp
b24sIGNvdW50KTsKICAgICB9CiAKKyAgICBSZWY8UERGUGx1Z2luPiBwbHVnaW4gPSAqKChQREZQ
bHVnaW4qKWluZm8pOworCisgICAgLy8gSXQncyBwb3NzaWJsZSB3ZSBwcmV2aW91c2x5IGVuY291
bnRlcmVkIGFuIGludmFsaWQgcmFuZ2UgYW5kIHRoZXJlZm9yZSBkaXNhYmxlZCBpbmNyZW1lbnRh
bCBsb2FkaW5nLAorICAgIC8vIGJ1dCBQREZEb2N1bWVudCBpcyBzdGlsbCB0cnlpbmcgdG8gcmVh
ZCBkYXRhIHVzaW5nIGEgZGlmZmVyZW50IHN0cmF0ZWd5LgorICAgIC8vIEFsd2F5cyBpZ25vcmUg
c3VjaCByZXF1ZXN0cy4KKyAgICBpZiAoIXBsdWdpbi0+aW5jcmVtZW50YWxQREZMb2FkaW5nRW5h
YmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKwogI2lmICFMT0dfRElTQUJMRUQKLSAgICBSZWY8
UERGUGx1Z2luPiBkZWJ1Z1BsdWdpblJlZiA9ICooKFBERlBsdWdpbiopaW5mbyk7CisgICAgYXV0
byBkZWJ1Z1BsdWdpblJlZiA9IHBsdWdpbi5jb3B5UmVmKCk7CiAgICAgZGVidWdQbHVnaW5SZWYt
PmluY3JlbWVudFRocmVhZHNXYWl0aW5nT25DYWxsYmFjaygpOwogICAgIGRlYnVnUGx1Z2luUmVm
LT5wZGZMb2cobWFrZVN0cmluZygiUERGIGRhdGEgcHJvdmlkZXIgcmVxdWVzdGluZyAiLCBjb3Vu
dCwgIiBieXRlcyBhdCBwb3NpdGlvbiAiLCBwb3NpdGlvbikpOwogI2VuZGlmCiAKLSAgICBSZWY8
UERGUGx1Z2luPiBwbHVnaW4gPSAqKChQREZQbHVnaW4qKWluZm8pOworICAgIGlmIChwb3NpdGlv
biA+IG1heGltdW1SYW5nZVJlcXVlc3RQb3NpdGlvbikgeworI2lmICFMT0dfRElTQUJMRUQKKyAg
ICAgICAgcGx1Z2luLT5wZGZMb2cobWFrZVN0cmluZygiUmVjZWl2ZWQgaW52YWxpZCByYW5nZSBy
ZXF1ZXN0IGZvciAiLCBjb3VudCwgIiBieXRlcyBhdCBwb3NpdGlvbiAiLCBwb3NpdGlvbiwgIi4g
RmFsbGluZyBiYWNrIHRvIG5vbi1pbmNyZW1lbnRhbCBsb2FkaW5nLiIpKTsKKyNlbmRpZgorICAg
ICAgICBwbHVnaW4tPnJlY2VpdmVkSW52YWxpZFJhbmdlUmVxdWVzdCgpOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisKICAgICBXVEY6OlNlbWFwaG9yZSBkYXRhU2VtYXBob3JlIHsgMCB9Owog
ICAgIHNpemVfdCBieXRlc1Byb3ZpZGVkID0gMDsKIApAQCAtODAyLDYgKzg1MywxMiBAQCB2b2lk
IFBERlBsdWdpbjo6dGhyZWFkRW50cnkoUmVmPFBERlBsdWdpbj4mJiBwcm90ZWN0ZWRQbHVnaW4p
CiAgICAgICAgIGRhdGFQcm92aWRlclJlbGVhc2VJbmZvQ2FsbGJhY2ssCiAgICAgfTsKIAorICAg
IGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNjb3BlRXhpdChbcHJvdGVjdGVkUGx1Z2luID0gV1RGTW92
ZShwcm90ZWN0ZWRQbHVnaW4pXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgLy8gVGhlIG1haW4gdGhy
ZWFkIGRpc3BhdGNoIGJlbG93IHJlbW92ZXMgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBQREYg
dGhyZWFkLgorICAgICAgICAvLyBJdCBtdXN0IGJlIHRoZSBsYXN0IGNvZGUgZXhlY3V0ZWQgaW4g
dGhpcyBmdW5jdGlvbi4KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkUGx1Z2lu
ID0gV1RGTW92ZShwcm90ZWN0ZWRQbHVnaW4pXSB7IH0pOworICAgIH0pOworCiAgICAgLy8gQmFs
YW5jZWQgYnkgYSBkZXJlZiBpbnNpZGUgb2YgdGhlIGRhdGFQcm92aWRlclJlbGVhc2VJbmZvQ2Fs
bGJhY2sKICAgICByZWYoKTsKIApAQCAtODA5LDEzICs4NjYsMjIgQEAgdm9pZCBQREZQbHVnaW46
OnRocmVhZEVudHJ5KFJlZjxQREZQbHVnaW4+JiYgcHJvdGVjdGVkUGx1Z2luKQogICAgIENHRGF0
YVByb3ZpZGVyU2V0UHJvcGVydHkoZGF0YVByb3ZpZGVyLmdldCgpLCBrQ0dEYXRhUHJvdmlkZXJI
YXNIaWdoTGF0ZW5jeSwga0NGQm9vbGVhblRydWUpOwogICAgIG1fYmFja2dyb3VuZFRocmVhZERv
Y3VtZW50ID0gYWRvcHROUyhbW3BkZkRvY3VtZW50Q2xhc3MoKSBhbGxvY10gaW5pdFdpdGhQcm92
aWRlcjpkYXRhUHJvdmlkZXIuZ2V0KCldKTsKIAorICAgIGlmICghbV9pbmNyZW1lbnRhbFBERkxv
YWRpbmdFbmFibGVkKSB7CisgICAgICAgIG1fYmFja2dyb3VuZFRocmVhZERvY3VtZW50ID0gbmls
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgV1RGOjpTZW1hcGhvcmUgZmlyc3RQYWdl
U2VtYXBob3JlIHsgMCB9OwogICAgIGF1dG8gZmlyc3RQYWdlUXVldWUgPSBXb3JrUXVldWU6OmNy
ZWF0ZSgiUERGIGZpcnN0IHBhZ2Ugd29yayBxdWV1ZSIpOwogCiAgICAgW21fYmFja2dyb3VuZFRo
cmVhZERvY3VtZW50IHByZWxvYWREYXRhT2ZQYWdlc0luUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMSkg
b25RdWV1ZTpmaXJzdFBhZ2VRdWV1ZS0+ZGlzcGF0Y2hRdWV1ZSgpIGNvbXBsZXRpb246WyZmaXJz
dFBhZ2VTZW1hcGhvcmUsIHRoaXNdIChOU0luZGV4U2V0ICopIG11dGFibGUgewotICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzXSB7Ci0gICAgICAgICAgICBhZG9wdEJhY2tncm91bmRUaHJl
YWREb2N1bWVudCgpOwotICAgICAgICB9KTsKKyAgICAgICAgaWYgKG1faW5jcmVtZW50YWxQREZM
b2FkaW5nRW5hYmxlZCkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpc10gewor
ICAgICAgICAgICAgICAgIGFkb3B0QmFja2dyb3VuZFRocmVhZERvY3VtZW50KCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2JhY2tncm91bmRUaHJlYWRE
b2N1bWVudCA9IG5pbDsKKwogICAgICAgICBmaXJzdFBhZ2VTZW1hcGhvcmUuc2lnbmFsKCk7CiAg
ICAgfV07CiAKQEAgLTgyNCwxMCArODkwLDYgQEAgdm9pZCBQREZQbHVnaW46OnRocmVhZEVudHJ5
KFJlZjxQREZQbHVnaW4+JiYgcHJvdGVjdGVkUGx1Z2luKQogI2lmICFMT0dfRElTQUJMRUQKICAg
ICBwZGZMb2coIkZpbmlzaGVkIHByZWxvYWRpbmcgZmlyc3QgcGFnZSIpOwogI2VuZGlmCi0KLSAg
ICAvLyBUaGUgbWFpbiB0aHJlYWQgZGlzcGF0Y2ggYmVsb3cgcmVtb3ZlcyB0aGUgbGFzdCByZWZl
cmVuY2UgdG8gdGhlIFBERiB0aHJlYWQuCi0gICAgLy8gSXQgbXVzdCBiZSB0aGUgbGFzdCBjb2Rl
IGV4ZWN1dGVkIGluIHRoaXMgZnVuY3Rpb24uCi0gICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkUGx1Z2luID0gV1RGTW92ZShwcm90ZWN0ZWRQbHVnaW4pXSB7IH0pOwogfQogCiB2b2lkIFBE
RlBsdWdpbjo6dW5jb25kaXRpb25hbENvbXBsZXRlT3V0c3RhbmRpbmdSYW5nZVJlcXVlc3RzKCkK
QEAgLTE0NzAsNiArMTUzMiwxMCBAQCB2b2lkIFBERlBsdWdpbjo6aW5zdGFsbFBERkRvY3VtZW50
KCkKICAgICBBU1NFUlQobV9wZGZEb2N1bWVudCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAorI2lmICFMT0dfRElTQUJMRUQKKyAgICBwZGZMb2coIkluc3RhbGxpbmcgUERGIGRvY3Vt
ZW50Iik7CisjZW5kaWYKKwogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiAgICAgbWF5
YmVDbGVhckhpZ2hMYXRlbmN5RGF0YVByb3ZpZGVyRmxhZygpOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395861</attachid>
            <date>2020-04-08 13:40:49 -0700</date>
            <delta_ts>2020-04-08 13:49:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210208-20200408134054.patch</filename>
            <type>text/plain</type>
            <size>8579</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJkNDZjMmJjZDRlZTA0NWUy
YjNiZjcxY2M5NjcxMmExZGM3M2E5MWYuLjQ1OTExNTgxM2Q4YWRjNzM1OGMzYmJlMWMwZDQ1ZDBk
YzZjZDE2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDQtMDggIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBoYW5kbGluZyBub24tbGlu
ZWFyaXplZCBQREZzIHdoZW4gaW5jcmVtZW50YWwgUERGIGxvYWRpbmcgaXMgZW5hYmxlZC4KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwNjE5NTA2PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDIwOAorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24gKGFuZCBJIHRoaW5rIEdlb2ZmIEdhcmVuLCBwcm9iYWJseS4gSXQncyBjb25mdXNpbmcuKQor
CisgICAgICAgIFdoZW4gd2UgdHJ5IHRvIGxvYWQgYSBub24tbGluZWFyaXplZCBQREYgd2l0aCBQ
REZLaXQsIGl0IG1ha2VzIGFuIG91dGxhbmRpc2hseSBsYXJnZSByYW5nZSByZXF1ZXN0CisgICAg
ICAgIHRvIHRyeSB0byB2ZXJpZnkgdGhlIFBERiBmaWxlIHNpemUuCisgICAgICAgIAorICAgICAg
ICBUaGF0J3MgY292ZXJlZCBieSA8cmRhcjovL3Byb2JsZW0vNjE0NzMzNzg+CisgICAgICAgIAor
ICAgICAgICBNZWFud2hpbGUgd2UgbmVlZCB0byBkZXRlY3QgdGhhdCBhbmQgZmFsbGJhY2sgdG8g
bm9uLWluY3JlbWVudGFsIFBERiBsb2FkaW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpyZWNlaXZlZEludmFsaWRS
YW5nZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpkYXRhUHJvdmlkZXJHZXRCeXRlc0F0UG9z
aXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dGhyZWFkRW50cnkp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Omluc3RhbGxQREZEb2N1bWVudCk6CisKIDIw
MjAtMDQtMDYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ3JlYXRlIGEgd2F5IHRvIHNpZ25hbCBpZiB0aGUgV0tBcHBCb3VuZERvbWFpbnMgbGlz
dCBpcyBlbXB0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oCmluZGV4IGI2ODgzYjcwNTkwMjZhYjg2Y2ZkNjE2Zjg2NzE1ZGVkMTZhNDRhY2Yu
LjFjMWZjODYwMjBlYjE5MmEzZGEzYThjYzg3NTY0YTQyYWE3YzhmZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTEzNSw2ICsx
MzUsOCBAQCBwdWJsaWM6CiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKICAgICB2b2lk
IGdldFJlc291cmNlQnl0ZXNBdFBvc2l0aW9uKHNpemVfdCBjb3VudCwgb2ZmX3QgcG9zaXRpb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCBjb3VudCk+JiYp
OwogICAgIHNpemVfdCBnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbk1haW5UaHJlYWQodm9pZCog
YnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KTsKKyAgICB2b2lkIHJlY2VpdmVk
Tm9uTGluZWFyaXplZFBERlNlbnRpbmVsKCk7CisgICAgYm9vbCBpbmNyZW1lbnRhbFBERkxvYWRp
bmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pbmNyZW1lbnRhbFBERkxvYWRpbmdFbmFibGVk
OyB9CiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgcGRmTG9nKGNvbnN0IFN0cmluZyYgZXZlbnQp
OwogICAgIHNpemVfdCBpbmNyZW1lbnRUaHJlYWRzV2FpdGluZ09uQ2FsbGJhY2soKSB7IHJldHVy
biArK21fdGhyZWFkc1dhaXRpbmdPbkNhbGxiYWNrOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAxMDE5NWZhY2IxNzMzODJh
ZjljZTM4YjQ3ZWJhZDIwYzc5ZWQxNTcwLi44NjdjNWU2N2QyNTM5ZDkzN2ViM2RhYWMxMDFjYTkx
NDMxYzU5MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KQEAgLTkwLDYgKzkwLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29y
ZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU01lbnVTUEkuaD4KICNpbXBv
cnQgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbXBvcnQgPHd0Zi9TY29wZS5oPgogI2ltcG9ydCA8d3Rm
L1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbXBvcnQgPHd0Zi9Xb3Jr
UXVldWUuaD4KQEAgLTEzNiw2ICsxMzcsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGFubm90YXRp
b25TdHlsZSA9CiAvLyB3aWxsIGp1bXAgdG8gdGhlIG5leHQgb3IgcHJldmlvdXMgcGFnZSwgdG8g
bWF0Y2ggUERGS2l0IGJlaGF2aW9yLgogc3RhdGljIGNvbnN0IGludCBkZWZhdWx0U2Nyb2xsTWFn
bml0dWRlVGhyZXNob2xkRm9yUGFnZUZsaXAgPSAyMDsKIAorLy8gPHJkYXI6Ly9wcm9ibGVtLzYx
NDczMzc4PiAtIFBERktpdCBhc2tzIGZvciBhICJ3YXkgdG9vIGxhcmdlIiByYW5nZSB3aGVuIHRo
ZSBQREYgaXQgaXMgbG9hZGluZworLy8gaW5jcmVtZW50YWxseSB0dXJucyBvdXQgdG8gYmUgbm9u
LWxpbmVhcml6ZWQuCisvLyBXZSdsbCBhc3N1bWUgYW55IHNpemUgb3ZlciA0Z2IgaXMgUERGS2l0
IG5vdGljaW5nIG5vbi1saW5lYXJpemVkIGRhdGEuCitzdGF0aWMgY29uc3QgdWludDMyX3Qgbm9u
TGluZWFyaXplZFBERlNlbnRpbmVsID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpOworCiBAaW50ZXJmYWNlIFdLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdCA6IE5TT2Jq
ZWN0IHsKICAgICBQREZMYXllckNvbnRyb2xsZXIgKl9wZGZMYXllckNvbnRyb2xsZXI7CiAgICAg
X191bnNhZmVfdW5yZXRhaW5lZCBOU09iamVjdCAqX3BhcmVudDsKQEAgLTY5MywyMiArNjk5LDY4
IEBAIHZvaWQgUERGUGx1Z2luOjp2ZXJib3NlTG9nKCkKIH0KICNlbmRpZiAvLyAhTE9HX0RJU0FC
TEVECiAKK3ZvaWQgUERGUGx1Z2luOjpyZWNlaXZlZE5vbkxpbmVhcml6ZWRQREZTZW50aW5lbCgp
Cit7CisgICAgbV9pbmNyZW1lbnRhbFBERkxvYWRpbmdFbmFibGVkID0gZmFsc2U7CisKKyAgICBp
ZiAoIWlzTWFpblRocmVhZCgpKSB7CisjaWYgIUxPR19ESVNBQkxFRAorICAgICAgICBwZGZMb2co
IkRpc2FibGluZyBpbmNyZW1lbnRhbCBQREYgbG9hZGluZyBvbiBiYWNrZ3JvdW5kIHRocmVhZCIp
OworI2VuZGlmCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICAgICAgcmVjZWl2ZWROb25MaW5lYXJpemVkUERG
U2VudGluZWwoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiAh
TE9HX0RJU0FCTEVECisgICAgcGRmTG9nKG1ha2VTdHJpbmcoIkNhbmNlbGxpbmcgYWxsICIsIG1f
c3RyZWFtTG9hZGVyTWFwLnNpemUoKSwgIiByYW5nZSByZXF1ZXN0IGxvYWRlcnMiKSk7CisjZW5k
aWYKKworICAgIGZvciAoYXV0byBpdGVyYXRvciA9IG1fc3RyZWFtTG9hZGVyTWFwLmJlZ2luKCk7
IGl0ZXJhdG9yICE9IG1fc3RyZWFtTG9hZGVyTWFwLmVuZCgpOyBpdGVyYXRvciA9IG1fc3RyZWFt
TG9hZGVyTWFwLmJlZ2luKCkpIHsKKyAgICAgICAgbV9vdXRzdGFuZGluZ0J5dGVSYW5nZVJlcXVl
c3RzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUpOworICAgICAgICBjYW5jZWxBbmRGb3JnZXRMb2Fk
ZXIoKml0ZXJhdG9yLT5rZXkpOworICAgIH0KKworICAgIGlmICghbV9kb2N1bWVudEZpbmlzaGVk
TG9hZGluZyB8fCBtX3BkZkRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BkZkRv
Y3VtZW50ID0gYWRvcHROUyhbW3BkZkRvY3VtZW50Q2xhc3MoKSBhbGxvY10gaW5pdFdpdGhEYXRh
OnJhd0RhdGEoKV0pOworICAgIGluc3RhbGxQREZEb2N1bWVudCgpOworICAgIHRyeVJ1blNjcmlw
dHNJblBERkRvY3VtZW50KCk7Cit9CisKIHN0YXRpYyBzaXplX3QgZGF0YVByb3ZpZGVyR2V0Qnl0
ZXNBdFBvc2l0aW9uQ2FsbGJhY2sodm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3Np
dGlvbiwgc2l6ZV90IGNvdW50KQogeworICAgIFJlZjxQREZQbHVnaW4+IHBsdWdpbiA9ICooKFBE
RlBsdWdpbiopaW5mbyk7CisKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKICNpZiAhTE9HX0RJ
U0FCTEVECi0gICAgICAgICgoUERGUGx1Z2luKilpbmZvKS0+cGRmTG9nKG1ha2VTdHJpbmcoIkhh
bmRsaW5nIHJlcXVlc3QgZm9yICIsIGNvdW50LCAiIGJ5dGVzIGF0IHBvc2l0aW9uICIsIHBvc2l0
aW9uLCAiIHN5bmNocm9ub3VzbHkgb24gdGhlIG1haW4gdGhyZWFkIikpOworICAgICAgICBwbHVn
aW4tPnBkZkxvZyhtYWtlU3RyaW5nKCJIYW5kbGluZyByZXF1ZXN0IGZvciAiLCBjb3VudCwgIiBi
eXRlcyBhdCBwb3NpdGlvbiAiLCBwb3NpdGlvbiwgIiBzeW5jaHJvbm91c2x5IG9uIHRoZSBtYWlu
IHRocmVhZCIpKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gKChQREZQbHVnaW4qKWluZm8pLT5n
ZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbk1haW5UaHJlYWQoYnVmZmVyLCBwb3NpdGlvbiwgY291
bnQpOworICAgICAgICByZXR1cm4gcGx1Z2luLT5nZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbk1h
aW5UaHJlYWQoYnVmZmVyLCBwb3NpdGlvbiwgY291bnQpOwogICAgIH0KIAorICAgIC8vIEl0J3Mg
cG9zc2libGUgd2UgcHJldmlvdXNseSBlbmNvdW50ZXJlZCBhbiBpbnZhbGlkIHJhbmdlIGFuZCB0
aGVyZWZvcmUgZGlzYWJsZWQgaW5jcmVtZW50YWwgbG9hZGluZywKKyAgICAvLyBidXQgUERGRG9j
dW1lbnQgaXMgc3RpbGwgdHJ5aW5nIHRvIHJlYWQgZGF0YSB1c2luZyBhIGRpZmZlcmVudCBzdHJh
dGVneS4KKyAgICAvLyBBbHdheXMgaWdub3JlIHN1Y2ggcmVxdWVzdHMuCisgICAgaWYgKCFwbHVn
aW4tPmluY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
ICNpZiAhTE9HX0RJU0FCTEVECi0gICAgUmVmPFBERlBsdWdpbj4gZGVidWdQbHVnaW5SZWYgPSAq
KChQREZQbHVnaW4qKWluZm8pOworICAgIGF1dG8gZGVidWdQbHVnaW5SZWYgPSBwbHVnaW4uY29w
eVJlZigpOwogICAgIGRlYnVnUGx1Z2luUmVmLT5pbmNyZW1lbnRUaHJlYWRzV2FpdGluZ09uQ2Fs
bGJhY2soKTsKICAgICBkZWJ1Z1BsdWdpblJlZi0+cGRmTG9nKG1ha2VTdHJpbmcoIlBERiBkYXRh
IHByb3ZpZGVyIHJlcXVlc3RpbmcgIiwgY291bnQsICIgYnl0ZXMgYXQgcG9zaXRpb24gIiwgcG9z
aXRpb24pKTsKICNlbmRpZgogCi0gICAgUmVmPFBERlBsdWdpbj4gcGx1Z2luID0gKigoUERGUGx1
Z2luKilpbmZvKTsKKyAgICBpZiAocG9zaXRpb24gPiBub25MaW5lYXJpemVkUERGU2VudGluZWwp
IHsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgICAgIHBsdWdpbi0+cGRmTG9nKG1ha2VTdHJpbmco
IlJlY2VpdmVkIGludmFsaWQgcmFuZ2UgcmVxdWVzdCBmb3IgIiwgY291bnQsICIgYnl0ZXMgYXQg
cG9zaXRpb24gIiwgcG9zaXRpb24sICIuIFBERiBpcyBwcm9iYWJseSBub3QgbGluZWFyaXplZC4g
RmFsbGluZyBiYWNrIHRvIG5vbi1pbmNyZW1lbnRhbCBsb2FkaW5nLiIpKTsKKyNlbmRpZgorICAg
ICAgICBwbHVnaW4tPnJlY2VpdmVkTm9uTGluZWFyaXplZFBERlNlbnRpbmVsKCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKwogICAgIFdURjo6U2VtYXBob3JlIGRhdGFTZW1hcGhvcmUgeyAw
IH07CiAgICAgc2l6ZV90IGJ5dGVzUHJvdmlkZWQgPSAwOwogCkBAIC04MDIsNiArODU0LDEyIEBA
IHZvaWQgUERGUGx1Z2luOjp0aHJlYWRFbnRyeShSZWY8UERGUGx1Z2luPiYmIHByb3RlY3RlZFBs
dWdpbikKICAgICAgICAgZGF0YVByb3ZpZGVyUmVsZWFzZUluZm9DYWxsYmFjaywKICAgICB9Owog
CisgICAgYXV0byBzY29wZUV4aXQgPSBtYWtlU2NvcGVFeGl0KFtwcm90ZWN0ZWRQbHVnaW4gPSBX
VEZNb3ZlKHByb3RlY3RlZFBsdWdpbildICgpIG11dGFibGUgeworICAgICAgICAvLyBUaGUgbWFp
biB0aHJlYWQgZGlzcGF0Y2ggYmVsb3cgcmVtb3ZlcyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhl
IFBERiB0aHJlYWQuCisgICAgICAgIC8vIEl0IG11c3QgYmUgdGhlIGxhc3QgY29kZSBleGVjdXRl
ZCBpbiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRQ
bHVnaW4gPSBXVEZNb3ZlKHByb3RlY3RlZFBsdWdpbildIHsgfSk7CisgICAgfSk7CisKICAgICAv
LyBCYWxhbmNlZCBieSBhIGRlcmVmIGluc2lkZSBvZiB0aGUgZGF0YVByb3ZpZGVyUmVsZWFzZUlu
Zm9DYWxsYmFjawogICAgIHJlZigpOwogCkBAIC04MDksMTMgKzg2NywyMiBAQCB2b2lkIFBERlBs
dWdpbjo6dGhyZWFkRW50cnkoUmVmPFBERlBsdWdpbj4mJiBwcm90ZWN0ZWRQbHVnaW4pCiAgICAg
Q0dEYXRhUHJvdmlkZXJTZXRQcm9wZXJ0eShkYXRhUHJvdmlkZXIuZ2V0KCksIGtDR0RhdGFQcm92
aWRlckhhc0hpZ2hMYXRlbmN5LCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgbV9iYWNrZ3JvdW5kVGhy
ZWFkRG9jdW1lbnQgPSBhZG9wdE5TKFtbcGRmRG9jdW1lbnRDbGFzcygpIGFsbG9jXSBpbml0V2l0
aFByb3ZpZGVyOmRhdGFQcm92aWRlci5nZXQoKV0pOwogCisgICAgaWYgKCFtX2luY3JlbWVudGFs
UERGTG9hZGluZ0VuYWJsZWQpIHsKKyAgICAgICAgbV9iYWNrZ3JvdW5kVGhyZWFkRG9jdW1lbnQg
PSBuaWw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBXVEY6OlNlbWFwaG9yZSBmaXJz
dFBhZ2VTZW1hcGhvcmUgeyAwIH07CiAgICAgYXV0byBmaXJzdFBhZ2VRdWV1ZSA9IFdvcmtRdWV1
ZTo6Y3JlYXRlKCJQREYgZmlyc3QgcGFnZSB3b3JrIHF1ZXVlIik7CiAKICAgICBbbV9iYWNrZ3Jv
dW5kVGhyZWFkRG9jdW1lbnQgcHJlbG9hZERhdGFPZlBhZ2VzSW5SYW5nZTpOU01ha2VSYW5nZSgw
LCAxKSBvblF1ZXVlOmZpcnN0UGFnZVF1ZXVlLT5kaXNwYXRjaFF1ZXVlKCkgY29tcGxldGlvbjpb
JmZpcnN0UGFnZVNlbWFwaG9yZSwgdGhpc10gKE5TSW5kZXhTZXQgKikgbXV0YWJsZSB7Ci0gICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKLSAgICAgICAgICAgIGFkb3B0QmFja2dyb3Vu
ZFRocmVhZERvY3VtZW50KCk7Ci0gICAgICAgIH0pOworICAgICAgICBpZiAobV9pbmNyZW1lbnRh
bFBERkxvYWRpbmdFbmFibGVkKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
XSB7CisgICAgICAgICAgICAgICAgYWRvcHRCYWNrZ3JvdW5kVGhyZWFkRG9jdW1lbnQoKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fYmFja2dyb3VuZFRo
cmVhZERvY3VtZW50ID0gbmlsOworCiAgICAgICAgIGZpcnN0UGFnZVNlbWFwaG9yZS5zaWduYWwo
KTsKICAgICB9XTsKIApAQCAtODI0LDEwICs4OTEsNiBAQCB2b2lkIFBERlBsdWdpbjo6dGhyZWFk
RW50cnkoUmVmPFBERlBsdWdpbj4mJiBwcm90ZWN0ZWRQbHVnaW4pCiAjaWYgIUxPR19ESVNBQkxF
RAogICAgIHBkZkxvZygiRmluaXNoZWQgcHJlbG9hZGluZyBmaXJzdCBwYWdlIik7CiAjZW5kaWYK
LQotICAgIC8vIFRoZSBtYWluIHRocmVhZCBkaXNwYXRjaCBiZWxvdyByZW1vdmVzIHRoZSBsYXN0
IHJlZmVyZW5jZSB0byB0aGUgUERGIHRocmVhZC4KLSAgICAvLyBJdCBtdXN0IGJlIHRoZSBsYXN0
IGNvZGUgZXhlY3V0ZWQgaW4gdGhpcyBmdW5jdGlvbi4KLSAgICBjYWxsT25NYWluVGhyZWFkKFtw
cm90ZWN0ZWRQbHVnaW4gPSBXVEZNb3ZlKHByb3RlY3RlZFBsdWdpbildIHsgfSk7CiB9CiAKIHZv
aWQgUERGUGx1Z2luOjp1bmNvbmRpdGlvbmFsQ29tcGxldGVPdXRzdGFuZGluZ1JhbmdlUmVxdWVz
dHMoKQpAQCAtMTQ2OSw2ICsxNTMyLDcgQEAgdm9pZCBQREZQbHVnaW46Omluc3RhbGxQREZEb2N1
bWVudCgpCiB7CiAgICAgQVNTRVJUKG1fcGRmRG9jdW1lbnQpOwogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgTE9HKEluY3JlbWVudGFsUERGLCAiSW5zdGFsbGluZyBQREYgZG9jdW1l
bnQiKTsKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiAgICAgbWF5YmVDbGVhckhp
Z2hMYXRlbmN5RGF0YVByb3ZpZGVyRmxhZygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395863</attachid>
            <date>2020-04-08 13:49:36 -0700</date>
            <delta_ts>2020-04-08 15:15:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210208-20200408134941.patch</filename>
            <type>text/plain</type>
            <size>8575</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJkNDZjMmJjZDRlZTA0NWUy
YjNiZjcxY2M5NjcxMmExZGM3M2E5MWYuLjQ1OTExNTgxM2Q4YWRjNzM1OGMzYmJlMWMwZDQ1ZDBk
YzZjZDE2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDQtMDggIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBoYW5kbGluZyBub24tbGlu
ZWFyaXplZCBQREZzIHdoZW4gaW5jcmVtZW50YWwgUERGIGxvYWRpbmcgaXMgZW5hYmxlZC4KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwNjE5NTA2PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDIwOAorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24gKGFuZCBJIHRoaW5rIEdlb2ZmIEdhcmVuLCBwcm9iYWJseS4gSXQncyBjb25mdXNpbmcuKQor
CisgICAgICAgIFdoZW4gd2UgdHJ5IHRvIGxvYWQgYSBub24tbGluZWFyaXplZCBQREYgd2l0aCBQ
REZLaXQsIGl0IG1ha2VzIGFuIG91dGxhbmRpc2hseSBsYXJnZSByYW5nZSByZXF1ZXN0CisgICAg
ICAgIHRvIHRyeSB0byB2ZXJpZnkgdGhlIFBERiBmaWxlIHNpemUuCisgICAgICAgIAorICAgICAg
ICBUaGF0J3MgY292ZXJlZCBieSA8cmRhcjovL3Byb2JsZW0vNjE0NzMzNzg+CisgICAgICAgIAor
ICAgICAgICBNZWFud2hpbGUgd2UgbmVlZCB0byBkZXRlY3QgdGhhdCBhbmQgZmFsbGJhY2sgdG8g
bm9uLWluY3JlbWVudGFsIFBERiBsb2FkaW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpyZWNlaXZlZEludmFsaWRS
YW5nZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpkYXRhUHJvdmlkZXJHZXRCeXRlc0F0UG9z
aXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dGhyZWFkRW50cnkp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Omluc3RhbGxQREZEb2N1bWVudCk6CisKIDIw
MjAtMDQtMDYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ3JlYXRlIGEgd2F5IHRvIHNpZ25hbCBpZiB0aGUgV0tBcHBCb3VuZERvbWFpbnMgbGlz
dCBpcyBlbXB0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oCmluZGV4IGI2ODgzYjcwNTkwMjZhYjg2Y2ZkNjE2Zjg2NzE1ZGVkMTZhNDRhY2Yu
LjFjMWZjODYwMjBlYjE5MmEzZGEzYThjYzg3NTY0YTQyYWE3YzhmZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTEzNSw2ICsx
MzUsOCBAQCBwdWJsaWM6CiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKICAgICB2b2lk
IGdldFJlc291cmNlQnl0ZXNBdFBvc2l0aW9uKHNpemVfdCBjb3VudCwgb2ZmX3QgcG9zaXRpb24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCBjb3VudCk+JiYp
OwogICAgIHNpemVfdCBnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbk1haW5UaHJlYWQodm9pZCog
YnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KTsKKyAgICB2b2lkIHJlY2VpdmVk
Tm9uTGluZWFyaXplZFBERlNlbnRpbmVsKCk7CisgICAgYm9vbCBpbmNyZW1lbnRhbFBERkxvYWRp
bmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pbmNyZW1lbnRhbFBERkxvYWRpbmdFbmFibGVk
OyB9CiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgcGRmTG9nKGNvbnN0IFN0cmluZyYgZXZlbnQp
OwogICAgIHNpemVfdCBpbmNyZW1lbnRUaHJlYWRzV2FpdGluZ09uQ2FsbGJhY2soKSB7IHJldHVy
biArK21fdGhyZWFkc1dhaXRpbmdPbkNhbGxiYWNrOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCAxMDE5NWZhY2IxNzMzODJh
ZjljZTM4YjQ3ZWJhZDIwYzc5ZWQxNTcwLi5iYjc3MGEzN2Q3OTM4OGJiYTU2ZTAzODRkNDAzOWI0
NGQ1MzQ3NGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KQEAgLTkwLDYgKzkwLDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY2cvQ29y
ZUdyYXBoaWNzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU01lbnVTUEkuaD4KICNpbXBv
cnQgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbXBvcnQgPHd0Zi9TY29wZS5oPgogI2ltcG9ydCA8d3Rm
L1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbXBvcnQgPHd0Zi9Xb3Jr
UXVldWUuaD4KQEAgLTEzNiw2ICsxMzcsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGFubm90YXRp
b25TdHlsZSA9CiAvLyB3aWxsIGp1bXAgdG8gdGhlIG5leHQgb3IgcHJldmlvdXMgcGFnZSwgdG8g
bWF0Y2ggUERGS2l0IGJlaGF2aW9yLgogc3RhdGljIGNvbnN0IGludCBkZWZhdWx0U2Nyb2xsTWFn
bml0dWRlVGhyZXNob2xkRm9yUGFnZUZsaXAgPSAyMDsKIAorLy8gPHJkYXI6Ly9wcm9ibGVtLzYx
NDczMzc4PiAtIFBERktpdCBhc2tzIGZvciBhICJ3YXkgdG9vIGxhcmdlIiByYW5nZSB3aGVuIHRo
ZSBQREYgaXQgaXMgbG9hZGluZworLy8gaW5jcmVtZW50YWxseSB0dXJucyBvdXQgdG8gYmUgbm9u
LWxpbmVhcml6ZWQuCisvLyBXZSdsbCBhc3N1bWUgYW55IHNpemUgb3ZlciA0Z2IgaXMgUERGS2l0
IG5vdGljaW5nIG5vbi1saW5lYXJpemVkIGRhdGEuCitzdGF0aWMgY29uc3QgdWludDMyX3Qgbm9u
TGluZWFyaXplZFBERlNlbnRpbmVsID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpOworCiBAaW50ZXJmYWNlIFdLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdCA6IE5TT2Jq
ZWN0IHsKICAgICBQREZMYXllckNvbnRyb2xsZXIgKl9wZGZMYXllckNvbnRyb2xsZXI7CiAgICAg
X191bnNhZmVfdW5yZXRhaW5lZCBOU09iamVjdCAqX3BhcmVudDsKQEAgLTY5MywyMiArNjk5LDY4
IEBAIHZvaWQgUERGUGx1Z2luOjp2ZXJib3NlTG9nKCkKIH0KICNlbmRpZiAvLyAhTE9HX0RJU0FC
TEVECiAKK3ZvaWQgUERGUGx1Z2luOjpyZWNlaXZlZE5vbkxpbmVhcml6ZWRQREZTZW50aW5lbCgp
Cit7CisgICAgbV9pbmNyZW1lbnRhbFBERkxvYWRpbmdFbmFibGVkID0gZmFsc2U7CisKKyAgICBp
ZiAoIWlzTWFpblRocmVhZCgpKSB7CisjaWYgIUxPR19ESVNBQkxFRAorICAgICAgICBwZGZMb2co
IkRpc2FibGluZyBpbmNyZW1lbnRhbCBQREYgbG9hZGluZyBvbiBiYWNrZ3JvdW5kIHRocmVhZCIp
OworI2VuZGlmCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICAgICAgcmVjZWl2ZWROb25MaW5lYXJpemVkUERG
U2VudGluZWwoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiAh
TE9HX0RJU0FCTEVECisgICAgcGRmTG9nKG1ha2VTdHJpbmcoIkNhbmNlbGxpbmcgYWxsICIsIG1f
c3RyZWFtTG9hZGVyTWFwLnNpemUoKSwgIiByYW5nZSByZXF1ZXN0IGxvYWRlcnMiKSk7CisjZW5k
aWYKKworICAgIGZvciAoYXV0byBpdGVyYXRvciA9IG1fc3RyZWFtTG9hZGVyTWFwLmJlZ2luKCk7
IGl0ZXJhdG9yICE9IG1fc3RyZWFtTG9hZGVyTWFwLmVuZCgpOyBpdGVyYXRvciA9IG1fc3RyZWFt
TG9hZGVyTWFwLmJlZ2luKCkpIHsKKyAgICAgICAgbV9vdXRzdGFuZGluZ0J5dGVSYW5nZVJlcXVl
c3RzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUpOworICAgICAgICBjYW5jZWxBbmRGb3JnZXRMb2Fk
ZXIoKml0ZXJhdG9yLT5rZXkpOworICAgIH0KKworICAgIGlmICghbV9kb2N1bWVudEZpbmlzaGVk
TG9hZGluZyB8fCBtX3BkZkRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BkZkRv
Y3VtZW50ID0gYWRvcHROUyhbW3BkZkRvY3VtZW50Q2xhc3MoKSBhbGxvY10gaW5pdFdpdGhEYXRh
OnJhd0RhdGEoKV0pOworICAgIGluc3RhbGxQREZEb2N1bWVudCgpOworICAgIHRyeVJ1blNjcmlw
dHNJblBERkRvY3VtZW50KCk7Cit9CisKIHN0YXRpYyBzaXplX3QgZGF0YVByb3ZpZGVyR2V0Qnl0
ZXNBdFBvc2l0aW9uQ2FsbGJhY2sodm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3Np
dGlvbiwgc2l6ZV90IGNvdW50KQogeworICAgIFJlZjxQREZQbHVnaW4+IHBsdWdpbiA9ICooKFBE
RlBsdWdpbiopaW5mbyk7CisKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKICNpZiAhTE9HX0RJ
U0FCTEVECi0gICAgICAgICgoUERGUGx1Z2luKilpbmZvKS0+cGRmTG9nKG1ha2VTdHJpbmcoIkhh
bmRsaW5nIHJlcXVlc3QgZm9yICIsIGNvdW50LCAiIGJ5dGVzIGF0IHBvc2l0aW9uICIsIHBvc2l0
aW9uLCAiIHN5bmNocm9ub3VzbHkgb24gdGhlIG1haW4gdGhyZWFkIikpOworICAgICAgICBwbHVn
aW4tPnBkZkxvZyhtYWtlU3RyaW5nKCJIYW5kbGluZyByZXF1ZXN0IGZvciAiLCBjb3VudCwgIiBi
eXRlcyBhdCBwb3NpdGlvbiAiLCBwb3NpdGlvbiwgIiBzeW5jaHJvbm91c2x5IG9uIHRoZSBtYWlu
IHRocmVhZCIpKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gKChQREZQbHVnaW4qKWluZm8pLT5n
ZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbk1haW5UaHJlYWQoYnVmZmVyLCBwb3NpdGlvbiwgY291
bnQpOworICAgICAgICByZXR1cm4gcGx1Z2luLT5nZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbk1h
aW5UaHJlYWQoYnVmZmVyLCBwb3NpdGlvbiwgY291bnQpOwogICAgIH0KIAorICAgIC8vIEl0J3Mg
cG9zc2libGUgd2UgcHJldmlvdXNseSBlbmNvdW50ZXJlZCBhbiBpbnZhbGlkIHJhbmdlIGFuZCB0
aGVyZWZvcmUgZGlzYWJsZWQgaW5jcmVtZW50YWwgbG9hZGluZywKKyAgICAvLyBidXQgUERGRG9j
dW1lbnQgaXMgc3RpbGwgdHJ5aW5nIHRvIHJlYWQgZGF0YSB1c2luZyBhIGRpZmZlcmVudCBzdHJh
dGVneS4KKyAgICAvLyBBbHdheXMgaWdub3JlIHN1Y2ggcmVxdWVzdHMuCisgICAgaWYgKCFwbHVn
aW4tPmluY3JlbWVudGFsUERGTG9hZGluZ0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
ICNpZiAhTE9HX0RJU0FCTEVECi0gICAgUmVmPFBERlBsdWdpbj4gZGVidWdQbHVnaW5SZWYgPSAq
KChQREZQbHVnaW4qKWluZm8pOworICAgIGF1dG8gZGVidWdQbHVnaW5SZWYgPSBwbHVnaW4uY29w
eVJlZigpOwogICAgIGRlYnVnUGx1Z2luUmVmLT5pbmNyZW1lbnRUaHJlYWRzV2FpdGluZ09uQ2Fs
bGJhY2soKTsKICAgICBkZWJ1Z1BsdWdpblJlZi0+cGRmTG9nKG1ha2VTdHJpbmcoIlBERiBkYXRh
IHByb3ZpZGVyIHJlcXVlc3RpbmcgIiwgY291bnQsICIgYnl0ZXMgYXQgcG9zaXRpb24gIiwgcG9z
aXRpb24pKTsKICNlbmRpZgogCi0gICAgUmVmPFBERlBsdWdpbj4gcGx1Z2luID0gKigoUERGUGx1
Z2luKilpbmZvKTsKKyAgICBpZiAocG9zaXRpb24gPiBub25MaW5lYXJpemVkUERGU2VudGluZWwp
IHsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgICAgIHBsdWdpbi0+cGRmTG9nKG1ha2VTdHJpbmco
IlJlY2VpdmVkIGludmFsaWQgcmFuZ2UgcmVxdWVzdCBmb3IgIiwgY291bnQsICIgYnl0ZXMgYXQg
cG9zaXRpb24gIiwgcG9zaXRpb24sICIuIFBERiBpcyBwcm9iYWJseSBub3QgbGluZWFyaXplZC4g
RmFsbGluZyBiYWNrIHRvIG5vbi1pbmNyZW1lbnRhbCBsb2FkaW5nLiIpKTsKKyNlbmRpZgorICAg
ICAgICBwbHVnaW4tPnJlY2VpdmVkTm9uTGluZWFyaXplZFBERlNlbnRpbmVsKCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKwogICAgIFdURjo6U2VtYXBob3JlIGRhdGFTZW1hcGhvcmUgeyAw
IH07CiAgICAgc2l6ZV90IGJ5dGVzUHJvdmlkZWQgPSAwOwogCkBAIC04MDIsNiArODU0LDEyIEBA
IHZvaWQgUERGUGx1Z2luOjp0aHJlYWRFbnRyeShSZWY8UERGUGx1Z2luPiYmIHByb3RlY3RlZFBs
dWdpbikKICAgICAgICAgZGF0YVByb3ZpZGVyUmVsZWFzZUluZm9DYWxsYmFjaywKICAgICB9Owog
CisgICAgYXV0byBzY29wZUV4aXQgPSBtYWtlU2NvcGVFeGl0KFtwcm90ZWN0ZWRQbHVnaW4gPSBX
VEZNb3ZlKHByb3RlY3RlZFBsdWdpbildICgpIG11dGFibGUgeworICAgICAgICAvLyBLZWVwIHRo
ZSBQREZQbHVnaW4gYWxpdmUgdW50aWwgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUg
ZW5kCisgICAgICAgIC8vIG9mIHRoZSBsYXN0IG1haW4gdGhyZWFkIHRhc2sgc3VibWl0dGVkIGJ5
IHRoaXMgZnVuY3Rpb24uCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFBsdWdp
biA9IFdURk1vdmUocHJvdGVjdGVkUGx1Z2luKV0geyB9KTsKKyAgICB9KTsKKwogICAgIC8vIEJh
bGFuY2VkIGJ5IGEgZGVyZWYgaW5zaWRlIG9mIHRoZSBkYXRhUHJvdmlkZXJSZWxlYXNlSW5mb0Nh
bGxiYWNrCiAgICAgcmVmKCk7CiAKQEAgLTgwOSwxMyArODY3LDIyIEBAIHZvaWQgUERGUGx1Z2lu
Ojp0aHJlYWRFbnRyeShSZWY8UERGUGx1Z2luPiYmIHByb3RlY3RlZFBsdWdpbikKICAgICBDR0Rh
dGFQcm92aWRlclNldFByb3BlcnR5KGRhdGFQcm92aWRlci5nZXQoKSwga0NHRGF0YVByb3ZpZGVy
SGFzSGlnaExhdGVuY3ksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBtX2JhY2tncm91bmRUaHJlYWRE
b2N1bWVudCA9IGFkb3B0TlMoW1twZGZEb2N1bWVudENsYXNzKCkgYWxsb2NdIGluaXRXaXRoUHJv
dmlkZXI6ZGF0YVByb3ZpZGVyLmdldCgpXSk7CiAKKyAgICBpZiAoIW1faW5jcmVtZW50YWxQREZM
b2FkaW5nRW5hYmxlZCkgeworICAgICAgICBtX2JhY2tncm91bmRUaHJlYWREb2N1bWVudCA9IG5p
bDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFdURjo6U2VtYXBob3JlIGZpcnN0UGFn
ZVNlbWFwaG9yZSB7IDAgfTsKICAgICBhdXRvIGZpcnN0UGFnZVF1ZXVlID0gV29ya1F1ZXVlOjpj
cmVhdGUoIlBERiBmaXJzdCBwYWdlIHdvcmsgcXVldWUiKTsKIAogICAgIFttX2JhY2tncm91bmRU
aHJlYWREb2N1bWVudCBwcmVsb2FkRGF0YU9mUGFnZXNJblJhbmdlOk5TTWFrZVJhbmdlKDAsIDEp
IG9uUXVldWU6Zmlyc3RQYWdlUXVldWUtPmRpc3BhdGNoUXVldWUoKSBjb21wbGV0aW9uOlsmZmly
c3RQYWdlU2VtYXBob3JlLCB0aGlzXSAoTlNJbmRleFNldCAqKSBtdXRhYmxlIHsKLSAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpc10gewotICAgICAgICAgICAgYWRvcHRCYWNrZ3JvdW5kVGhy
ZWFkRG9jdW1lbnQoKTsKLSAgICAgICAgfSk7CisgICAgICAgIGlmIChtX2luY3JlbWVudGFsUERG
TG9hZGluZ0VuYWJsZWQpIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsK
KyAgICAgICAgICAgICAgICBhZG9wdEJhY2tncm91bmRUaHJlYWREb2N1bWVudCgpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9iYWNrZ3JvdW5kVGhyZWFk
RG9jdW1lbnQgPSBuaWw7CisKICAgICAgICAgZmlyc3RQYWdlU2VtYXBob3JlLnNpZ25hbCgpOwog
ICAgIH1dOwogCkBAIC04MjQsMTAgKzg5MSw2IEBAIHZvaWQgUERGUGx1Z2luOjp0aHJlYWRFbnRy
eShSZWY8UERGUGx1Z2luPiYmIHByb3RlY3RlZFBsdWdpbikKICNpZiAhTE9HX0RJU0FCTEVECiAg
ICAgcGRmTG9nKCJGaW5pc2hlZCBwcmVsb2FkaW5nIGZpcnN0IHBhZ2UiKTsKICNlbmRpZgotCi0g
ICAgLy8gVGhlIG1haW4gdGhyZWFkIGRpc3BhdGNoIGJlbG93IHJlbW92ZXMgdGhlIGxhc3QgcmVm
ZXJlbmNlIHRvIHRoZSBQREYgdGhyZWFkLgotICAgIC8vIEl0IG11c3QgYmUgdGhlIGxhc3QgY29k
ZSBleGVjdXRlZCBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFBsdWdpbiA9IFdURk1vdmUocHJvdGVjdGVkUGx1Z2luKV0geyB9KTsKIH0KIAogdm9pZCBQ
REZQbHVnaW46OnVuY29uZGl0aW9uYWxDb21wbGV0ZU91dHN0YW5kaW5nUmFuZ2VSZXF1ZXN0cygp
CkBAIC0xNDY5LDYgKzE1MzIsNyBAQCB2b2lkIFBERlBsdWdpbjo6aW5zdGFsbFBERkRvY3VtZW50
KCkKIHsKICAgICBBU1NFUlQobV9wZGZEb2N1bWVudCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBMT0coSW5jcmVtZW50YWxQREYsICJJbnN0YWxsaW5nIFBERiBkb2N1bWVudCIp
OwogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKICAgICBtYXliZUNsZWFySGlnaExh
dGVuY3lEYXRhUHJvdmlkZXJGbGFnKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>