<?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>208975</bug_id>
          
          <creation_ts>2020-03-11 22:07:10 -0700</creation_ts>
          <short_desc>Add a very verbose logging mode for incremental PDF loading</short_desc>
          <delta_ts>2020-03-13 09:58:38 -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>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1629046</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-11 22:07:10 -0700</bug_when>
    <thetext>Add a very verbose logging mode for incremental PDF loading

Helps to diagnose specific types of behavior we see from the data provider callbacks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629049</commentid>
    <comment_count>1</comment_count>
      <attachid>393340</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-11 22:13:14 -0700</bug_when>
    <thetext>Created attachment 393340
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629053</commentid>
    <comment_count>2</comment_count>
      <attachid>393340</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-11 22:21:05 -0700</bug_when>
    <thetext>Comment on attachment 393340
Patch v1

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

&gt; Source/WebKit/Platform/Logging.h:60
&gt; +    M(IncrementalPDFVerbose) \

Just call it IncrementalPDF?

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h:133
&gt; +#ifndef NDEBUG

#if !LOG_DISABLED

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h:135
&gt; +    size_t addDataCallbackThread() { return ++m_dataCallbackThreadCount; }

Is this adding a thread? Or just increasing the callback count? Should it be incrementPendingCallbackCount or something?

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h:385
&gt; +#ifndef NDEBUG

#if !LOG_DISABLED

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:636
&gt; +#ifndef NDEBUG

#if !LOG_DISABLED

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:646
&gt; +    LOG(PDF, &quot;%s&quot;, message.utf8().data());

LOG_WITH_STREAM(PDF, stream &lt;&lt; message);

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:648
&gt; +    LOG(IncrementalPDFVerbose, &quot;%s&quot;, message.utf8().data());

LOG_WITH_STREAM(IncrementalPDF, stream &lt;&lt; message);

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:690
&gt; +    LOG(IncrementalPDFVerbose, &quot;%s&quot;, stream.release().utf8().data());

LOG_WITH_STREAM all the pieces at once?

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:698
&gt; +#ifndef NDEBUG

#if !LOG_DISABLED

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

It&apos;s a bit nasty of logging changes behavior, like changing object lifetimes.

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:719
&gt; +#ifndef NDEBUG

#if !LOG_DISABLED everywhere.

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:742
&gt; +    debugPluginRef-&gt;pdfLog(stream.release());

LOG_WITH_STREAM directly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629057</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-11 22:44:33 -0700</bug_when>
    <thetext>Making most of these changes.

Unfortunately with LOG_WITH_STREAM, you (I think?) have to use the TextStream that the macro creates for you, so complicated streams I build up beforehand are a nonstarter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629058</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-11 22:48:30 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #3)
&gt; Making most of these changes.
&gt; 
&gt; Unfortunately with LOG_WITH_STREAM, you (I think?) have to use the
&gt; TextStream that the macro creates for you, so complicated streams I build up
&gt; beforehand are a nonstarter.

(Note, the reason ::logPDF exists is to log the message to (2) different logging channels, so if somebody builds up a text stream to call into it, LOG_WITH_STREAM  won&apos;t work and stream.release() is necessary)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629060</commentid>
    <comment_count>5</comment_count>
      <attachid>393342</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-11 22:56:36 -0700</bug_when>
    <thetext>Created attachment 393342
PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629225</commentid>
    <comment_count>6</comment_count>
      <attachid>393385</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-12 09:39:36 -0700</bug_when>
    <thetext>Created attachment 393385
PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629481</commentid>
    <comment_count>7</comment_count>
      <attachid>393450</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-12 20:56:02 -0700</bug_when>
    <thetext>Created attachment 393450
PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629505</commentid>
    <comment_count>8</comment_count>
      <attachid>393450</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-12 22:56:04 -0700</bug_when>
    <thetext>Comment on attachment 393450
PFL

Clearing flags on attachment: 393450

Committed r258384: &lt;https://trac.webkit.org/changeset/258384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629506</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-12 22:56:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629507</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-12 22:57:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/60405343&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629541</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-13 02:48:02 -0700</bug_when>
    <thetext>Release build fixed in https://trac.webkit.org/changeset/258389.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629659</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-13 09:58:13 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #11)
&gt; Release build fixed in https://trac.webkit.org/changeset/258389.

Wonder why the EWS release builders didn&apos;t hit that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1629660</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-13 09:58:38 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #12)
&gt; (In reply to Ryosuke Niwa from comment #11)
&gt; &gt; Release build fixed in https://trac.webkit.org/changeset/258389.
&gt; 
&gt; Wonder why the EWS release builders didn&apos;t hit that

(And thanks for the fix!)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393340</attachid>
            <date>2020-03-11 22:13:14 -0700</date>
            <delta_ts>2020-03-11 22:56:36 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>11873</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggOTQxNmQxNGViMmMuLjQ0OTk4NDBiOWM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDIwLTAzLTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSB2ZXJ5IHZlcmJvc2UgbG9nZ2luZyBtb2RlIGZvciBpbmNyZW1lbnRhbCBQ
REYgbG9hZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4OTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkcyBhIHZlcmJvc2UgbG9nZ2luZyBjaGFubmVsIHRoYXQgaW5jbHVkZXMgYSBmdWxsIGR1
bXAgb2YgdGhlIFBERlBsdWdpbidzIGxvYWRpbmcgc3RhdHVzCisgICAgICAgIGZvciBlYWNoIGxv
Z2dpbmcgbWVzc2FnZS4KKyAgICAgICAgCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5oOgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjpwZGZMb2cpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmxvZ1N0cmVh
bUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dmVyYm9zZUxvZyk6CisgICAg
ICAgIChXZWJLaXQ6OmRhdGFQcm92aWRlckdldEJ5dGVzQXRQb3NpdGlvbkNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6ZGF0YVByb3ZpZGVyR2V0Qnl0ZVJhbmdlc0NhbGxiYWNrKToKKyAgICAg
ICAgKFdlYktpdDo6UERGUGx1Z2luOjpnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6YWRvcHRCYWNrZ3JvdW5kVGhyZWFkRG9jdW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OkJ5dGVSYW5nZVJlcXVlc3Q6OmNvbXBsZXRlV2l0
aEJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpCeXRlUmFuZ2VSZXF1ZXN0Ojpj
b21wbGV0ZVdpdGhBY2N1bXVsYXRlZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
OmZvcmdldExvYWRlcik6CisKIDIwMjAtMDMtMDggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTgwNjQpOiBBUEkgdGVzdHMgaW50
ZXJtaXR0ZW50bHkgY3Jhc2hpbmcgdW5kZXIgV2ViS2l0OjpyZWdpc3RlckRlZmF1bHRzT3ZlcnJp
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggMmZkNzJlZDM3MTQuLmVjMDZhNjA2MmQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtNTQsMTAgKzU0LDExIEBAIGV4dGVybiAi
QyIgewogICAgIE0oRHJhZ0FuZERyb3ApIFwKICAgICBNKEZ1bGxzY3JlZW4pIFwKICAgICBNKEdh
bWVwYWQpIFwKLSAgICBNKEljb25EYXRhYmFzZSkgXAotICAgIE0oSW5kZXhlZERCKSBcCiAgICAg
TShJUEMpIFwKICAgICBNKElUUERlYnVnKSBcCisgICAgTShJY29uRGF0YWJhc2UpIFwKKyAgICBN
KEluY3JlbWVudGFsUERGVmVyYm9zZSkgXAorICAgIE0oSW5kZXhlZERCKSBcCiAgICAgTShLZXlI
YW5kbGluZykgXAogICAgIE0oTGF5ZXJzKSBcCiAgICAgTShMYXlvdXQpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCAyYzcxZjMy
ZDMyNy4uYjE5NjQyMjhlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTY1LDYgKzY1LDEwIEBAIGNsYXNzIEVsZW1lbnQ7CiBz
dHJ1Y3QgUGx1Z2luSW5mbzsKIH0KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0U3RyZWFt
OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUERGUGx1Z2luQW5ub3RhdGlvbjsK
QEAgLTEyNiw2ICsxMzAsMTEgQEAgcHVibGljOgogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZf
QVBJUykKICAgICB2b2lkIGdldFJlc291cmNlQnl0ZXNBdFBvc2l0aW9uKHNpemVfdCBjb3VudCwg
b2ZmX3QgcG9zaXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgdWludDhfdCosIHNp
emVfdCBjb3VudCk+JiYpOworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIHBkZkxvZyhjb25zdCBT
dHJpbmcmIGV2ZW50KTsKKyAgICBzaXplX3QgYWRkRGF0YUNhbGxiYWNrVGhyZWFkKCkgeyByZXR1
cm4gKyttX2RhdGFDYWxsYmFja1RocmVhZENvdW50OyB9CisgICAgc2l6ZV90IHJlbW92ZURhdGFD
YWxsYmFja1RocmVhZCgpIHsgcmV0dXJuIC0tbV9kYXRhQ2FsbGJhY2tUaHJlYWRDb3VudDsgfQor
I2VuZGlmCiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTM1MSw2ICszNjAsOSBAQCBwcml2YXRlOgog
ICAgICAgICBib29sIG1heWJlQ29tcGxldGUoUERGUGx1Z2luJik7CiAgICAgICAgIHZvaWQgY29t
cGxldGVVbmNvbmRpdGlvbmFsbHkoUERGUGx1Z2luJik7CiAKKyAgICAgICAgdWludDY0X3QgcG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAgICAgIHNpemVfdCBjb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIHVp
bnQ2NF90IG1fcG9zaXRpb24geyAwIH07CiAgICAgICAgIHNpemVfdCBtX2NvdW50IHsgMCB9OwpA
QCAtMzY5LDcgKzM4MSwxNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIEJ5dGVS
YW5nZVJlcXVlc3Q+IG1fb3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1ZXN0czsKICAgICBIYXNoTWFw
PFJlZlB0cjxXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4sIHVpbnQ2NF90PiBt
X3N0cmVhbUxvYWRlck1hcDsKICAgICBib29sIG1faW5jcmVtZW50YWxQREZMb2FkaW5nRW5hYmxl
ZDsKKworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIHZlcmJvc2VMb2coKTsKKyAgICB2b2lkIGxv
Z1N0cmVhbUxvYWRlcihXVEY6OlRleHRTdHJlYW0mLCBXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciYpOworICAgIHN0ZDo6YXRvbWljPHNpemVfdD4gbV9kYXRhQ2FsbGJhY2tUaHJl
YWRDb3VudCB7IDAgfTsKKyAgICBzdGQ6OmF0b21pYzxzaXplX3Q+IG1fY29tcGxldGVkUmFuZ2VS
ZXF1ZXN0cyB7IDAgfTsKKyAgICBzdGQ6OmF0b21pYzxzaXplX3Q+IG1fY29tcGxldGVkTmV0d29y
a1JhbmdlUmVxdWVzdHMgeyAwIH07CiAjZW5kaWYKKworI2VuZGlmIC8vIEhBVkUoSU5DUkVNRU5U
QUxfUERGX0FQSVMpCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDE5MjQzMTRm
N2QwLi42YjEzOTA5YTY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC05Miw2ICs5Miw3IEBACiAjaW1wb3J0IDx3dGYvVVVJ
RC5oPgogI2ltcG9ydCA8d3RmL1dURlNlbWFwaG9yZS5oPgogI2ltcG9ydCA8d3RmL1dvcmtRdWV1
ZS5oPgorI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgSEFWRShJTkNSRU1F
TlRBTF9QREZfQVBJUykKIEBpbnRlcmZhY2UgUERGRG9jdW1lbnQgKCkKQEAgLTYzMiwxMCArNjMz
LDczIEBAIFBERlBsdWdpbjo6flBERlBsdWdpbigpCiB9CiAKICNpZiBIQVZFKElOQ1JFTUVOVEFM
X1BERl9BUElTKQorI2lmbmRlZiBOREVCVUcKK3ZvaWQgUERGUGx1Z2luOjpwZGZMb2coY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBt
ZXNzYWdlID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKV0geworICAgICAgICAgICAgcGRmTG9nKG1l
c3NhZ2UpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExPRyhQ
REYsICIlcyIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgdmVyYm9zZUxvZygpOworICAg
IExPRyhJbmNyZW1lbnRhbFBERlZlcmJvc2UsICIlcyIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7
Cit9CisKK3ZvaWQgUERGUGx1Z2luOjpsb2dTdHJlYW1Mb2FkZXIoV1RGOjpUZXh0U3RyZWFtJiBz
dHJlYW0sIFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyJiBsb2FkZXIpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8qIHJlcXVlc3QgPSBieXRlUmFu
Z2VSZXF1ZXN0Rm9yTG9hZGVyKGxvYWRlcik7CisgICAgc3RyZWFtIDw8ICIoIjsKKyAgICBpZiAo
IXJlcXVlc3QpIHsKKyAgICAgICAgc3RyZWFtIDw8ICJubyByYW5nZSByZXF1ZXN0IGZvdW5kKSAi
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RyZWFtIDw8IHJlcXVlc3QtPnBvc2l0
aW9uKCkgPDwgIi0iIDw8IHJlcXVlc3QtPnBvc2l0aW9uKCkgKyByZXF1ZXN0LT5jb3VudCgpIC0g
MSA8PCAiKSAiOworfQorCit2b2lkIFBERlBsdWdpbjo6dmVyYm9zZUxvZygpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIFRleHRTdHJlYW0gc3RyZWFtOworICAgIHN0cmVh
bSA8PCAiXG4iOworICAgIGlmIChtX3BkZlRocmVhZCkKKyAgICAgICAgc3RyZWFtIDw8ICJJbml0
aWFsIFBERiB0aHJlYWQgaXMgc3RpbGwgaW4gcHJvZ3Jlc3NcbiI7CisgICAgZWxzZQorICAgICAg
ICBzdHJlYW0gPDwgIkluaXRpYWwgUERGIHRocmVhZCBoYXMgY29tcGxldGVkXG4iOworCisgICAg
c3RyZWFtIDw8ICJIYXZlIGNvbXBsZXRlZCAiIDw8IG1fY29tcGxldGVkUmFuZ2VSZXF1ZXN0cyA8
PCAiIHJhbmdlIHJlcXVlc3RzICgiIDw8IG1fY29tcGxldGVkTmV0d29ya1JhbmdlUmVxdWVzdHMg
PDwgIiBmcm9tIHRoZSBuZXR3b3JrKVxuIjsKKyAgICBzdHJlYW0gPDwgIlRoZXJlIGFyZSAiIDw8
IG1fZGF0YUNhbGxiYWNrVGhyZWFkQ291bnQgPDwgIiBkYXRhIHByb3ZpZGVyIHRocmVhZHMgd2Fp
dGluZyBvbiBhIHJlcGx5XG4iOworICAgIHN0cmVhbSA8PCAiVGhlcmUgYXJlICIgPDwgbV9vdXRz
dGFuZGluZ0J5dGVSYW5nZVJlcXVlc3RzLnNpemUoKSA8PCAiIGJ5dGUgcmFuZ2UgcmVxdWVzdHMg
b3V0c3RhbmRpbmdcbiI7CisKKyAgICBzdHJlYW0gPDwgIlRoZXJlIGFyZSAiIDw8IG1fc3RyZWFt
TG9hZGVyTWFwLnNpemUoKSA8PCAiIGFjdGl2ZSBuZXR3b3JrIHN0cmVhbSBsb2FkZXJzOiAiOwor
ICAgIGZvciAoYXV0byYgbG9hZGVyIDogbV9zdHJlYW1Mb2FkZXJNYXAua2V5cygpKQorICAgICAg
ICBsb2dTdHJlYW1Mb2FkZXIoc3RyZWFtLCAqbG9hZGVyKTsKKyAgICBzdHJlYW0gPDwgIlxuIjsK
KworICAgIHN0cmVhbSA8PCAiVGhlIG1haW4gZG9jdW1lbnQgbG9hZGVyIGhhcyBmaW5pc2hlZCBs
b2FkaW5nICIgPDwgbV9zdHJlYW1lZEJ5dGVzIDw8ICIgYnl0ZXMsIGFuZCBpcyI7CisgICAgaWYg
KCFtX2RvY3VtZW50RmluaXNoZWRMb2FkaW5nKQorICAgICAgICBzdHJlYW0gPDwgIiBub3QiOwor
ICAgIHN0cmVhbSA8PCAiIGNvbXBsZXRlIjsKKworICAgIExPRyhJbmNyZW1lbnRhbFBERlZlcmJv
c2UsICIlcyIsIHN0cmVhbS5yZWxlYXNlKCkudXRmOCgpLmRhdGEoKSk7Cit9CisjZW5kaWYgLy8g
TkRFQlVHCisKIHN0YXRpYyBzaXplX3QgZGF0YVByb3ZpZGVyR2V0Qnl0ZXNBdFBvc2l0aW9uQ2Fs
bGJhY2sodm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNv
dW50KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIExPRyhQREYsICJQREYg
ZGF0YSBwcm92aWRlciByZXF1ZXN0aW5nICVsdSBieXRlcyBhdCBwb3NpdGlvbiAlbGx1IiwgY291
bnQsIHBvc2l0aW9uKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBSZWY8UERGUGx1Z2luPiBkZWJ1
Z1BsdWdpblJlZiA9ICooKFBERlBsdWdpbiopaW5mbyk7CisgICAgZGVidWdQbHVnaW5SZWYtPmFk
ZERhdGFDYWxsYmFja1RocmVhZCgpOworICAgIGRlYnVnUGx1Z2luUmVmLT5wZGZMb2cobWFrZVN0
cmluZygiUERGIGRhdGEgcHJvdmlkZXIgcmVxdWVzdGluZyAiLCBjb3VudCwgIiBieXRlcyBhdCBw
b3NpdGlvbiAiLCBwb3NpdGlvbikpOworI2VuZGlmCiAKICAgICBSZWY8UERGUGx1Z2luPiBwbHVn
aW4gPSAqKChQREZQbHVnaW4qKWluZm8pOwogICAgIFdURjo6U2VtYXBob3JlIGRhdGFTZW1hcGhv
cmUgeyAwIH07CkBAIC02NTEsNiArNzE1LDEyIEBAIHN0YXRpYyBzaXplX3QgZGF0YVByb3ZpZGVy
R2V0Qnl0ZXNBdFBvc2l0aW9uQ2FsbGJhY2sodm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvCiAg
ICAgfSk7CiAKICAgICBkYXRhU2VtYXBob3JlLndhaXQoKTsKKworI2lmbmRlZiBOREVCVUcKKyAg
ICBkZWJ1Z1BsdWdpblJlZi0+cmVtb3ZlRGF0YUNhbGxiYWNrVGhyZWFkKCk7CisgICAgZGVidWdQ
bHVnaW5SZWYtPnBkZkxvZyhtYWtlU3RyaW5nKCJQREYgZGF0YSBwcm92aWRlciByZWNlaXZlZCAi
LCBieXRlc1Byb3ZpZGVkLCAiIGJ5dGVzIG9mIHJlcXVlc3RlZCAiLCBjb3VudCkpOworI2VuZGlm
CisKICAgICByZXR1cm4gYnl0ZXNQcm92aWRlZDsKIH0KIApAQCAtNjU5LDYgKzcyOSw4IEBAIHN0
YXRpYyB2b2lkIGRhdGFQcm92aWRlckdldEJ5dGVSYW5nZXNDYWxsYmFjayh2b2lkKiBpbmZvLCBD
Rk11dGFibGVBcnJheVJlZiBidWZmCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICNp
Zm5kZWYgTkRFQlVHCisgICAgUmVmPFBERlBsdWdpbj4gZGVidWdQbHVnaW5SZWYgPSAqKChQREZQ
bHVnaW4qKWluZm8pOworICAgIGRlYnVnUGx1Z2luUmVmLT5hZGREYXRhQ2FsbGJhY2tUaHJlYWQo
KTsKICAgICBUZXh0U3RyZWFtIHN0cmVhbTsKICAgICBzdHJlYW0gPDwgIlBERiBkYXRhIHByb3Zp
ZGVyIHJlcXVlc3RpbmcgIiA8PCBjb3VudCA8PCAiIGJ5dGUgcmFuZ2VzICgiOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpAQCAtNjY3LDcgKzczOSw3IEBAIHN0YXRp
YyB2b2lkIGRhdGFQcm92aWRlckdldEJ5dGVSYW5nZXNDYWxsYmFjayh2b2lkKiBpbmZvLCBDRk11
dGFibGVBcnJheVJlZiBidWZmCiAgICAgICAgICAgICBzdHJlYW0gPDwgIiwgIjsKICAgICB9CiAg
ICAgc3RyZWFtIDw8ICIpIjsKLSAgICBMT0coUERGLCAiJXMiLCBzdHJlYW0ucmVsZWFzZSgpLnV0
ZjgoKS5kYXRhKCkpOworICAgIGRlYnVnUGx1Z2luUmVmLT5wZGZMb2coc3RyZWFtLnJlbGVhc2Uo
KSk7CiAjZW5kaWYKIAogICAgIFJlZjxQREZQbHVnaW4+IHBsdWdpbiA9ICooKFBERlBsdWdpbiop
aW5mbyk7CkBAIC02ODcsNiArNzU5LDExIEBAIHN0YXRpYyB2b2lkIGRhdGFQcm92aWRlckdldEJ5
dGVSYW5nZXNDYWxsYmFjayh2b2lkKiBpbmZvLCBDRk11dGFibGVBcnJheVJlZiBidWZmCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAgICBkYXRhU2VtYXBob3Jl
LndhaXQoKTsKIAorI2lmbmRlZiBOREVCVUcKKyAgICBkZWJ1Z1BsdWdpblJlZi0+cmVtb3ZlRGF0
YUNhbGxiYWNrVGhyZWFkKCk7CisgICAgZGVidWdQbHVnaW5SZWYtPnBkZkxvZyhtYWtlU3RyaW5n
KCJQREYgZGF0YSBwcm92aWRlciBmaW5pc2hlZCByZWNlaXZpbmcgdGhlIHJlcXVlc3RlZCAiLCBj
b3VudCwgIiBieXRlIHJhbmdlcyIpKTsKKyNlbmRpZgorCiAgICAgZm9yIChhdXRvJiByZXN1bHQg
OiBkYXRhUmVzdWx0cykgewogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJlc3Vs
dCA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIDApKTsKQEAg
LTc2OSw3ICs4NDYsOSBAQCB2b2lkIFBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9zaXRp
b24oc2l6ZV90IGNvdW50LCBvZmZfdCBwb3NpdGlvbiwgQ29tcGxldAogICAgIHJlc291cmNlUmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBtYWtlU3RyaW5n
KCJieXRlcz0iX3MsIHBvc2l0aW9uLCAiLSJfcywgcG9zaXRpb24gKyBjb3VudCAtIDEpKTsKICAg
ICByZXNvdXJjZVJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xp
Y3k6OkRvTm90VXNlQW55Q2FjaGUpOwogCi0gICAgTE9HKFBERiwgIlNjaGVkdWxpbmcgYSBzdHJl
YW0gbG9hZGVyIGZvciByZXF1ZXN0ICVsbHUgKCVsdSBieXRlcyBhdCAlbGx1KVxuIiwgaWRlbnRp
ZmllciwgY291bnQsIHBvc2l0aW9uKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgcGRmTG9nKG1ha2VT
dHJpbmcoIlNjaGVkdWxpbmcgYSBzdHJlYW0gbG9hZGVyIGZvciByZXF1ZXN0ICIsIGlkZW50aWZp
ZXIsICIgKCIsIGNvdW50LCAiIGJ5dGVzIGF0ICIsIHBvc2l0aW9uLCAiKSIpKTsKKyNlbmRpZgog
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVs
ZVBsdWdpblN0cmVhbUxvYWQoKmNvcmVGcmFtZSwgKnRoaXMsIFdURk1vdmUocmVzb3VyY2VSZXF1
ZXN0KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllcl0g
KFJlZlB0cjxXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4mJiBsb2FkZXIpIHsK
ICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fb3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1ZXN0cy5m
aW5kKGlkZW50aWZpZXIpOwpAQCAtNzgwLDcgKzg1OSwxMCBAQCB2b2lkIFBERlBsdWdpbjo6Z2V0
UmVzb3VyY2VCeXRlc0F0UG9zaXRpb24oc2l6ZV90IGNvdW50LCBvZmZfdCBwb3NpdGlvbiwgQ29t
cGxldAogCiAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS5zZXRTdHJlYW1Mb2FkZXIobG9hZGVyLmdl
dCgpKTsKICAgICAgICAgbV9zdHJlYW1Mb2FkZXJNYXAuc2V0KFdURk1vdmUobG9hZGVyKSwgaWRl
bnRpZmllcik7Ci0gICAgICAgIExPRyhQREYsICJUaGVyZSBhcmUgbm93ICV1IHN0cmVhbSBsb2Fk
ZXJzIGluIGZsaWdodCIsIG1fc3RyZWFtTG9hZGVyTWFwLnNpemUoKSk7CisKKyNpZm5kZWYgTkRF
QlVHCisgICAgICAgIHBkZkxvZyhtYWtlU3RyaW5nKCJUaGVyZSBhcmUgbm93ICIsIG1fc3RyZWFt
TG9hZGVyTWFwLnNpemUoKSwgIiBzdHJlYW0gbG9hZGVycyBpbiBmbGlnaHQiKSk7CisjZW5kaWYK
ICAgICB9KTsKIH0KIApAQCAtNzkwLDYgKzg3MiwxMCBAQCB2b2lkIFBERlBsdWdpbjo6YWRvcHRC
YWNrZ3JvdW5kVGhyZWFkRG9jdW1lbnQoKQogICAgIEFTU0VSVChtX2JhY2tncm91bmRUaHJlYWRE
b2N1bWVudCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAorI2lmbmRlZiBOREVCVUcK
KyAgICBwZGZMb2coIkFkb3B0aW5nIFBERkRvY3VtZW50IGZyb20gYmFja2dyb3VuZCB0aHJlYWQi
KTsKKyNlbmRpZgorCiAgICAgbV9wZGZEb2N1bWVudCA9IFdURk1vdmUobV9iYWNrZ3JvdW5kVGhy
ZWFkRG9jdW1lbnQpOwogCiAgICAgLy8gSWYgdGhlIHBsdWdpbiB3YXMgbWFudWFsbHkgZGVzdHJv
eWVkLCB0aGUgbV9wZGZUaHJlYWQgbWlnaHQgYWxyZWFkeSBiZSBnb25lLgpAQCAtODE0LDcgKzkw
MCwxMCBAQCB2b2lkIFBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVzdDo6Y2xlYXJTdHJlYW1Mb2Fk
ZXIoKQogCiB2b2lkIFBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVzdDo6Y29tcGxldGVXaXRoQnl0
ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGNvdW50LCBQREZQbHVnaW4mIHBsdWdpbikK
IHsKLSAgICBMT0coUERGLCAiQ29tcGxldGluZyByYW5nZSByZXF1ZXN0ICVsbHUgKCVsdSBieXRl
cyBhdCAlbGx1KSB3aXRoICVsdSBieXRlcyBmcm9tIHRoZSBtYWluIFBERiBidWZmZXIiLCBpZGVu
dGlmaWVyKCksIG1fY291bnQsIG1fcG9zaXRpb24sIGNvdW50KTsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgKytwbHVnaW4ubV9jb21wbGV0ZWRSYW5nZVJlcXVlc3RzOworICAgIHBsdWdpbi5wZGZMb2co
bWFrZVN0cmluZygiQ29tcGxldGluZyByYW5nZSByZXF1ZXN0ICIsIGlkZW50aWZpZXIoKSwiICgi
LCBtX2NvdW50LCIgYnl0ZXMgYXQgIiwgbV9wb3NpdGlvbiwiKSB3aXRoICIsIGNvdW50LCIgYnl0
ZXMgZnJvbSB0aGUgbWFpbiBQREYgYnVmZmVyIikpOworI2VuZGlmCiAgICAgbV9jb21wbGV0aW9u
SGFuZGxlcihkYXRhLCBjb3VudCk7CiAKICAgICBpZiAobV9zdHJlYW1Mb2FkZXIpCkBAIC04MjMs
NyArOTEyLDEyIEBAIHZvaWQgUERGUGx1Z2luOjpCeXRlUmFuZ2VSZXF1ZXN0Ojpjb21wbGV0ZVdp
dGhCeXRlcyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QKIAogdm9pZCBQREZQbHVnaW46OkJ5
dGVSYW5nZVJlcXVlc3Q6OmNvbXBsZXRlV2l0aEFjY3VtdWxhdGVkRGF0YShQREZQbHVnaW4mIHBs
dWdpbikKIHsKLSAgICBMT0coUERGLCAiQ29tcGxldGluZyByYW5nZSByZXF1ZXN0ICVsbHUgKCVs
dSBieXRlcyBhdCAlbGx1KSB3aXRoICVsdSBieXRlcyBmcm9tIHRoZSBuZXR3b3JrIiwgaWRlbnRp
ZmllcigpLCBtX2NvdW50LCBtX3Bvc2l0aW9uLCBtX2FjY3VtdWxhdGVkRGF0YS5zaXplKCkpOwor
I2lmbmRlZiBOREVCVUcKKyAgICArK3BsdWdpbi5tX2NvbXBsZXRlZFJhbmdlUmVxdWVzdHM7Cisg
ICAgKytwbHVnaW4ubV9jb21wbGV0ZWROZXR3b3JrUmFuZ2VSZXF1ZXN0czsKKyAgICBwbHVnaW4u
cGRmTG9nKG1ha2VTdHJpbmcoIkNvbXBsZXRpbmcgcmFuZ2UgcmVxdWVzdCAiLCBpZGVudGlmaWVy
KCksIiAoIiwgbV9jb3VudCwiIGJ5dGVzIGF0ICIsIG1fcG9zaXRpb24sIikgd2l0aCAiLCBtX2Fj
Y3VtdWxhdGVkRGF0YS5zaXplKCksIiBieXRlcyBmcm9tIHRoZSBuZXR3b3JrIikpOworI2VuZGlm
CisKICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKG1fYWNjdW11bGF0ZWREYXRhLmRhdGEoKSwgbV9h
Y2N1bXVsYXRlZERhdGEuc2l6ZSgpKTsKICAgICAKICAgICBpZiAobV9zdHJlYW1Mb2FkZXIpCkBA
IC05NDUsNyArMTAzOSw5IEBAIHZvaWQgUERGUGx1Z2luOjpmb3JnZXRMb2FkZXIoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXImIGxvYWRlcikKIAogICAgIG1fc3RyZWFtTG9hZGVyTWFwLnJlbW92
ZSgmbG9hZGVyKTsKIAotICAgIExPRyhQREYsICJGb3Jnb3Qgc3RyZWFtIGxvYWRlciBmb3IgcmFu
Z2UgcmVxdWVzdCAlbGx1LlxuVGhlcmUgYXJlIG5vdyAldSBzdHJlYW0gbG9hZGVycyByZW1haW5p
bmcuIiwgaWRlbnRpZmllciwgbV9zdHJlYW1Mb2FkZXJNYXAuc2l6ZSgpKTsKKyNpZm5kZWYgTkRF
QlVHCisgICAgcGRmTG9nKG1ha2VTdHJpbmcoIkZvcmdvdCBzdHJlYW0gbG9hZGVyIGZvciByYW5n
ZSByZXF1ZXN0ICIsIGlkZW50aWZpZXIsIi4gVGhlcmUgYXJlIG5vdyAiLCBtX3N0cmVhbUxvYWRl
ck1hcC5zaXplKCksIiBzdHJlYW0gbG9hZGVycyByZW1haW5pbmciKSk7CisjZW5kaWYKIH0KIAog
dm9pZCBQREZQbHVnaW46OmNhbmNlbEFuZEZvcmdldExvYWRlcihOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciYgbG9hZGVyKQo=
</data>
<flag name="review"
          id="408722"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393342</attachid>
            <date>2020-03-11 22:56:36 -0700</date>
            <delta_ts>2020-03-12 09:39:36 -0700</delta_ts>
            <desc>PFL</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>12236</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggOTQxNmQxNGViMmMuLmU4NjI2YmYyMGViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDIwLTAzLTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSB2ZXJ5IHZlcmJvc2UgbG9nZ2luZyBtb2RlIGZvciBpbmNyZW1lbnRhbCBQ
REYgbG9hZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4OTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
IEFkZHMgYSB2ZXJib3NlIGxvZ2dpbmcgY2hhbm5lbCB0aGF0IGluY2x1ZGVzIGEgZnVsbCBkdW1w
IG9mIHRoZSBQREZQbHVnaW4ncyBsb2FkaW5nIHN0YXR1cworICAgICAgICBmb3IgZWFjaCBsb2dn
aW5nIG1lc3NhZ2UuCisgICAgICAgIAorICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6cGRmTG9nKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpsb2dTdHJlYW1M
b2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnZlcmJvc2VMb2cpOgorICAgICAg
ICAoV2ViS2l0OjpkYXRhUHJvdmlkZXJHZXRCeXRlc0F0UG9zaXRpb25DYWxsYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OmRhdGFQcm92aWRlckdldEJ5dGVSYW5nZXNDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9zaXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OmFkb3B0QmFja2dyb3VuZFRocmVhZERvY3VtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpCeXRlUmFuZ2VSZXF1ZXN0Ojpjb21wbGV0ZVdpdGhC
eXRlcyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVzdDo6Y29t
cGxldGVXaXRoQWNjdW11bGF0ZWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpm
b3JnZXRMb2FkZXIpOgorCiAyMDIwLTAzLTA4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjU4MDY0KTogQVBJIHRlc3RzIGludGVy
bWl0dGVudGx5IGNyYXNoaW5nIHVuZGVyIFdlYktpdDo6cmVnaXN0ZXJEZWZhdWx0c092ZXJyaWRl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDJmZDcyZWQzNzE0Li5mZjI2MzI0ZWFlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTU0LDEwICs1NCwxMiBAQCBleHRlcm4gIkMi
IHsKICAgICBNKERyYWdBbmREcm9wKSBcCiAgICAgTShGdWxsc2NyZWVuKSBcCiAgICAgTShHYW1l
cGFkKSBcCi0gICAgTShJY29uRGF0YWJhc2UpIFwKLSAgICBNKEluZGV4ZWREQikgXAogICAgIE0o
SVBDKSBcCiAgICAgTShJVFBEZWJ1ZykgXAorICAgIE0oSWNvbkRhdGFiYXNlKSBcCisgICAgTShJ
bmNyZW1lbnRhbFBERikgXAorICAgIE0oSW5jcmVtZW50YWxQREZWZXJib3NlKSBcCisgICAgTShJ
bmRleGVkREIpIFwKICAgICBNKEtleUhhbmRsaW5nKSBcCiAgICAgTShMYXllcnMpIFwKICAgICBN
KExheW91dCkgXApAQCAtNzEsNyArNzMsNiBAQCBleHRlcm4gIkMiIHsKICAgICBNKE5ldHdvcmtD
YWNoZVN0b3JhZ2UpIFwKICAgICBNKE5ldHdvcmtTY2hlZHVsaW5nKSBcCiAgICAgTShOZXR3b3Jr
U2Vzc2lvbikgXAotICAgIE0oUERGKSBcCiAgICAgTShQZXJmb3JtYW5jZUxvZ2dpbmcpIFwKICAg
ICBNKFBsdWdpbnMpIFwKICAgICBNKFByaW50aW5nKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggMmM3MWYzMmQzMjcuLmE5ZDJh
MTY4OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oCkBAIC02NSw2ICs2NSwxMCBAQCBjbGFzcyBFbGVtZW50Owogc3RydWN0IFBsdWdp
bkluZm87CiB9CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBERlBsdWdpbkFubm90YXRpb247CkBAIC0xMjYsNiAr
MTMwLDExIEBAIHB1YmxpYzoKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiAgICAg
dm9pZCBnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbihzaXplX3QgY291bnQsIG9mZl90IHBvc2l0
aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QgY291bnQp
PiYmKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9pZCBwZGZMb2coY29uc3QgU3RyaW5nJiBldmVu
dCk7CisgICAgc2l6ZV90IGluY3JlbWVudFRocmVhZHNXYWl0aW5nT25DYWxsYmFjaygpIHsgcmV0
dXJuICsrbV90aHJlYWRzV2FpdGluZ09uQ2FsbGJhY2s7IH0KKyAgICBzaXplX3QgZGVjcmVtZW50
VGhyZWFkc1dhaXRpbmdPbkNhbGxiYWNrKCkgeyByZXR1cm4gLS1tX3RocmVhZHNXYWl0aW5nT25D
YWxsYmFjazsgfQorI2VuZGlmCiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTM1MSw2ICszNjAsOSBA
QCBwcml2YXRlOgogICAgICAgICBib29sIG1heWJlQ29tcGxldGUoUERGUGx1Z2luJik7CiAgICAg
ICAgIHZvaWQgY29tcGxldGVVbmNvbmRpdGlvbmFsbHkoUERGUGx1Z2luJik7CiAKKyAgICAgICAg
dWludDY0X3QgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAgICAg
IHNpemVfdCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKwogICAgIHByaXZhdGU6
CiAgICAgICAgIHVpbnQ2NF90IG1fcG9zaXRpb24geyAwIH07CiAgICAgICAgIHNpemVfdCBtX2Nv
dW50IHsgMCB9OwpAQCAtMzY5LDcgKzM4MSwxNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIEJ5dGVSYW5nZVJlcXVlc3Q+IG1fb3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1ZXN0czsK
ICAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4s
IHVpbnQ2NF90PiBtX3N0cmVhbUxvYWRlck1hcDsKICAgICBib29sIG1faW5jcmVtZW50YWxQREZM
b2FkaW5nRW5hYmxlZDsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICB2b2lkIHZlcmJvc2VMb2co
KTsKKyAgICB2b2lkIGxvZ1N0cmVhbUxvYWRlcihXVEY6OlRleHRTdHJlYW0mLCBXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciYpOworICAgIHN0ZDo6YXRvbWljPHNpemVfdD4gbV90
aHJlYWRzV2FpdGluZ09uQ2FsbGJhY2sgeyAwIH07CisgICAgc3RkOjphdG9taWM8c2l6ZV90PiBt
X2NvbXBsZXRlZFJhbmdlUmVxdWVzdHMgeyAwIH07CisgICAgc3RkOjphdG9taWM8c2l6ZV90PiBt
X2NvbXBsZXRlZE5ldHdvcmtSYW5nZVJlcXVlc3RzIHsgMCB9OwogI2VuZGlmCisKKyNlbmRpZiAv
LyBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQppbmRleCAxOTI0MzE0ZjdkMC4uOTAwMDMyYmQxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTIsNiArOTIsNyBAQAog
I2ltcG9ydCA8d3RmL1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbXBv
cnQgPHd0Zi9Xb3JrUXVldWUuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAog
I2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiBAaW50ZXJmYWNlIFBERkRvY3VtZW50ICgp
CkBAIC02MzIsMTAgKzYzMyw3NCBAQCBQREZQbHVnaW46On5QREZQbHVnaW4oKQogfQogCiAjaWYg
SEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKKyNpZiAhTE9HX0RJU0FCTEVECit2b2lkIFBERlBs
dWdpbjo6cGRmTG9nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIWlzTWFpblRo
cmVhZCgpKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIHsKKyAg
ICAgICAgICAgIHBkZkxvZyhtZXNzYWdlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oSW5jcmVtZW50YWxQREYsIHN0cmVhbSA8PCBt
ZXNzYWdlKTsKKyAgICB2ZXJib3NlTG9nKCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKEluY3JlbWVu
dGFsUERGVmVyYm9zZSwgc3RyZWFtIDw8IG1lc3NhZ2UpOworfQorCit2b2lkIFBERlBsdWdpbjo6
bG9nU3RyZWFtTG9hZGVyKFdURjo6VGV4dFN0cmVhbSYgc3RyZWFtLCBXZWJDb3JlOjpOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciYgbG9hZGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBhdXRvKiByZXF1ZXN0ID0gYnl0ZVJhbmdlUmVxdWVzdEZvckxvYWRlcihsb2Fk
ZXIpOworICAgIHN0cmVhbSA8PCAiKCI7CisgICAgaWYgKCFyZXF1ZXN0KSB7CisgICAgICAgIHN0
cmVhbSA8PCAibm8gcmFuZ2UgcmVxdWVzdCBmb3VuZCkgIjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHN0cmVhbSA8PCByZXF1ZXN0LT5wb3NpdGlvbigpIDw8ICItIiA8PCByZXF1ZXN0
LT5wb3NpdGlvbigpICsgcmVxdWVzdC0+Y291bnQoKSAtIDEgPDwgIikgIjsKK30KKwordm9pZCBQ
REZQbHVnaW46OnZlcmJvc2VMb2coKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisK
KyAgICBUZXh0U3RyZWFtIHN0cmVhbTsKKyAgICBzdHJlYW0gPDwgIlxuIjsKKyAgICBpZiAobV9w
ZGZUaHJlYWQpCisgICAgICAgIHN0cmVhbSA8PCAiSW5pdGlhbCBQREYgdGhyZWFkIGlzIHN0aWxs
IGluIHByb2dyZXNzXG4iOworICAgIGVsc2UKKyAgICAgICAgc3RyZWFtIDw8ICJJbml0aWFsIFBE
RiB0aHJlYWQgaGFzIGNvbXBsZXRlZFxuIjsKKworICAgIHN0cmVhbSA8PCAiSGF2ZSBjb21wbGV0
ZWQgIiA8PCBtX2NvbXBsZXRlZFJhbmdlUmVxdWVzdHMgPDwgIiByYW5nZSByZXF1ZXN0cyAoIiA8
PCBtX2NvbXBsZXRlZE5ldHdvcmtSYW5nZVJlcXVlc3RzIDw8ICIgZnJvbSB0aGUgbmV0d29yaylc
biI7CisgICAgc3RyZWFtIDw8ICJUaGVyZSBhcmUgIiA8PCBtX3RocmVhZHNXYWl0aW5nT25DYWxs
YmFjayA8PCAiIGRhdGEgcHJvdmlkZXIgdGhyZWFkcyB3YWl0aW5nIG9uIGEgcmVwbHlcbiI7Cisg
ICAgc3RyZWFtIDw8ICJUaGVyZSBhcmUgIiA8PCBtX291dHN0YW5kaW5nQnl0ZVJhbmdlUmVxdWVz
dHMuc2l6ZSgpIDw8ICIgYnl0ZSByYW5nZSByZXF1ZXN0cyBvdXRzdGFuZGluZ1xuIjsKKworICAg
IHN0cmVhbSA8PCAiVGhlcmUgYXJlICIgPDwgbV9zdHJlYW1Mb2FkZXJNYXAuc2l6ZSgpIDw8ICIg
YWN0aXZlIG5ldHdvcmsgc3RyZWFtIGxvYWRlcnM6ICI7CisgICAgZm9yIChhdXRvJiBsb2FkZXIg
OiBtX3N0cmVhbUxvYWRlck1hcC5rZXlzKCkpCisgICAgICAgIGxvZ1N0cmVhbUxvYWRlcihzdHJl
YW0sICpsb2FkZXIpOworICAgIHN0cmVhbSA8PCAiXG4iOworCisgICAgc3RyZWFtIDw8ICJUaGUg
bWFpbiBkb2N1bWVudCBsb2FkZXIgaGFzIGZpbmlzaGVkIGxvYWRpbmcgIiA8PCBtX3N0cmVhbWVk
Qnl0ZXMgPDwgIiBieXRlcywgYW5kIGlzIjsKKyAgICBpZiAoIW1fZG9jdW1lbnRGaW5pc2hlZExv
YWRpbmcpCisgICAgICAgIHN0cmVhbSA8PCAiIG5vdCI7CisgICAgc3RyZWFtIDw8ICIgY29tcGxl
dGUiOworCisgICAgTE9HKEluY3JlbWVudGFsUERGVmVyYm9zZSwgIiVzIiwgc3RyZWFtLnJlbGVh
c2UoKS51dGY4KCkuZGF0YSgpKTsKK30KKyNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECisKKwogc3Rh
dGljIHNpemVfdCBkYXRhUHJvdmlkZXJHZXRCeXRlc0F0UG9zaXRpb25DYWxsYmFjayh2b2lkKiBp
bmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgTE9HKFBERiwgIlBERiBkYXRhIHByb3ZpZGVy
IHJlcXVlc3RpbmcgJWx1IGJ5dGVzIGF0IHBvc2l0aW9uICVsbHUiLCBjb3VudCwgcG9zaXRpb24p
OworCisjaWYgIUxPR19ESVNBQkxFRAorICAgIFJlZjxQREZQbHVnaW4+IGRlYnVnUGx1Z2luUmVm
ID0gKigoUERGUGx1Z2luKilpbmZvKTsKKyAgICBkZWJ1Z1BsdWdpblJlZi0+aW5jcmVtZW50VGhy
ZWFkc1dhaXRpbmdPbkNhbGxiYWNrKCk7CisgICAgZGVidWdQbHVnaW5SZWYtPnBkZkxvZyhtYWtl
U3RyaW5nKCJQREYgZGF0YSBwcm92aWRlciByZXF1ZXN0aW5nICIsIGNvdW50LCAiIGJ5dGVzIGF0
IHBvc2l0aW9uICIsIHBvc2l0aW9uKSk7CisjZW5kaWYKIAogICAgIFJlZjxQREZQbHVnaW4+IHBs
dWdpbiA9ICooKFBERlBsdWdpbiopaW5mbyk7CiAgICAgV1RGOjpTZW1hcGhvcmUgZGF0YVNlbWFw
aG9yZSB7IDAgfTsKQEAgLTY1MSw2ICs3MTYsMTIgQEAgc3RhdGljIHNpemVfdCBkYXRhUHJvdmlk
ZXJHZXRCeXRlc0F0UG9zaXRpb25DYWxsYmFjayh2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG8K
ICAgICB9KTsKIAogICAgIGRhdGFTZW1hcGhvcmUud2FpdCgpOworCisjaWYgIUxPR19ESVNBQkxF
RAorICAgIGRlYnVnUGx1Z2luUmVmLT5kZWNyZW1lbnRUaHJlYWRzV2FpdGluZ09uQ2FsbGJhY2so
KTsKKyAgICBkZWJ1Z1BsdWdpblJlZi0+cGRmTG9nKG1ha2VTdHJpbmcoIlBERiBkYXRhIHByb3Zp
ZGVyIHJlY2VpdmVkICIsIGJ5dGVzUHJvdmlkZWQsICIgYnl0ZXMgb2YgcmVxdWVzdGVkICIsIGNv
dW50KSk7CisjZW5kaWYKKwogICAgIHJldHVybiBieXRlc1Byb3ZpZGVkOwogfQogCkBAIC02NTgs
NyArNzI5LDkgQEAgc3RhdGljIHZvaWQgZGF0YVByb3ZpZGVyR2V0Qnl0ZVJhbmdlc0NhbGxiYWNr
KHZvaWQqIGluZm8sIENGTXV0YWJsZUFycmF5UmVmIGJ1ZmYKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgUmVm
PFBERlBsdWdpbj4gZGVidWdQbHVnaW5SZWYgPSAqKChQREZQbHVnaW4qKWluZm8pOworICAgIGRl
YnVnUGx1Z2luUmVmLT5pbmNyZW1lbnRUaHJlYWRzV2FpdGluZ09uQ2FsbGJhY2soKTsKICAgICBU
ZXh0U3RyZWFtIHN0cmVhbTsKICAgICBzdHJlYW0gPDwgIlBERiBkYXRhIHByb3ZpZGVyIHJlcXVl
c3RpbmcgIiA8PCBjb3VudCA8PCAiIGJ5dGUgcmFuZ2VzICgiOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY291bnQ7ICsraSkgewpAQCAtNjY3LDcgKzc0MCw3IEBAIHN0YXRpYyB2b2lkIGRh
dGFQcm92aWRlckdldEJ5dGVSYW5nZXNDYWxsYmFjayh2b2lkKiBpbmZvLCBDRk11dGFibGVBcnJh
eVJlZiBidWZmCiAgICAgICAgICAgICBzdHJlYW0gPDwgIiwgIjsKICAgICB9CiAgICAgc3RyZWFt
IDw8ICIpIjsKLSAgICBMT0coUERGLCAiJXMiLCBzdHJlYW0ucmVsZWFzZSgpLnV0ZjgoKS5kYXRh
KCkpOworICAgIGRlYnVnUGx1Z2luUmVmLT5wZGZMb2coc3RyZWFtLnJlbGVhc2UoKSk7CiAjZW5k
aWYKIAogICAgIFJlZjxQREZQbHVnaW4+IHBsdWdpbiA9ICooKFBERlBsdWdpbiopaW5mbyk7CkBA
IC02ODcsNiArNzYwLDExIEBAIHN0YXRpYyB2b2lkIGRhdGFQcm92aWRlckdldEJ5dGVSYW5nZXND
YWxsYmFjayh2b2lkKiBpbmZvLCBDRk11dGFibGVBcnJheVJlZiBidWZmCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAgICBkYXRhU2VtYXBob3JlLndhaXQoKTsK
IAorI2lmICFMT0dfRElTQUJMRUQKKyAgICBkZWJ1Z1BsdWdpblJlZi0+ZGVjcmVtZW50VGhyZWFk
c1dhaXRpbmdPbkNhbGxiYWNrKCk7CisgICAgZGVidWdQbHVnaW5SZWYtPnBkZkxvZyhtYWtlU3Ry
aW5nKCJQREYgZGF0YSBwcm92aWRlciBmaW5pc2hlZCByZWNlaXZpbmcgdGhlIHJlcXVlc3RlZCAi
LCBjb3VudCwgIiBieXRlIHJhbmdlcyIpKTsKKyNlbmRpZgorCiAgICAgZm9yIChhdXRvJiByZXN1
bHQgOiBkYXRhUmVzdWx0cykgewogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJl
c3VsdCA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIDApKTsK
QEAgLTc2OSw3ICs4NDcsOSBAQCB2b2lkIFBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9z
aXRpb24oc2l6ZV90IGNvdW50LCBvZmZfdCBwb3NpdGlvbiwgQ29tcGxldAogICAgIHJlc291cmNl
UmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBtYWtlU3Ry
aW5nKCJieXRlcz0iX3MsIHBvc2l0aW9uLCAiLSJfcywgcG9zaXRpb24gKyBjb3VudCAtIDEpKTsK
ICAgICByZXNvdXJjZVJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQ
b2xpY3k6OkRvTm90VXNlQW55Q2FjaGUpOwogCi0gICAgTE9HKFBERiwgIlNjaGVkdWxpbmcgYSBz
dHJlYW0gbG9hZGVyIGZvciByZXF1ZXN0ICVsbHUgKCVsdSBieXRlcyBhdCAlbGx1KVxuIiwgaWRl
bnRpZmllciwgY291bnQsIHBvc2l0aW9uKTsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgcGRmTG9n
KG1ha2VTdHJpbmcoIlNjaGVkdWxpbmcgYSBzdHJlYW0gbG9hZGVyIGZvciByZXF1ZXN0ICIsIGlk
ZW50aWZpZXIsICIgKCIsIGNvdW50LCAiIGJ5dGVzIGF0ICIsIHBvc2l0aW9uLCAiKSIpKTsKKyNl
bmRpZgogCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5z
Y2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoKmNvcmVGcmFtZSwgKnRoaXMsIFdURk1vdmUocmVzb3Vy
Y2VSZXF1ZXN0KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRp
Zmllcl0gKFJlZlB0cjxXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4mJiBsb2Fk
ZXIpIHsKICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fb3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1
ZXN0cy5maW5kKGlkZW50aWZpZXIpOwpAQCAtNzgwLDcgKzg2MCwxMCBAQCB2b2lkIFBERlBsdWdp
bjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9zaXRpb24oc2l6ZV90IGNvdW50LCBvZmZfdCBwb3NpdGlv
biwgQ29tcGxldAogCiAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS5zZXRTdHJlYW1Mb2FkZXIobG9h
ZGVyLmdldCgpKTsKICAgICAgICAgbV9zdHJlYW1Mb2FkZXJNYXAuc2V0KFdURk1vdmUobG9hZGVy
KSwgaWRlbnRpZmllcik7Ci0gICAgICAgIExPRyhQREYsICJUaGVyZSBhcmUgbm93ICV1IHN0cmVh
bSBsb2FkZXJzIGluIGZsaWdodCIsIG1fc3RyZWFtTG9hZGVyTWFwLnNpemUoKSk7CisKKyNpZiAh
TE9HX0RJU0FCTEVECisgICAgICAgIHBkZkxvZyhtYWtlU3RyaW5nKCJUaGVyZSBhcmUgbm93ICIs
IG1fc3RyZWFtTG9hZGVyTWFwLnNpemUoKSwgIiBzdHJlYW0gbG9hZGVycyBpbiBmbGlnaHQiKSk7
CisjZW5kaWYKICAgICB9KTsKIH0KIApAQCAtNzkwLDYgKzg3MywxMCBAQCB2b2lkIFBERlBsdWdp
bjo6YWRvcHRCYWNrZ3JvdW5kVGhyZWFkRG9jdW1lbnQoKQogICAgIEFTU0VSVChtX2JhY2tncm91
bmRUaHJlYWREb2N1bWVudCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAorI2lmICFM
T0dfRElTQUJMRUQKKyAgICBwZGZMb2coIkFkb3B0aW5nIFBERkRvY3VtZW50IGZyb20gYmFja2dy
b3VuZCB0aHJlYWQiKTsKKyNlbmRpZgorCiAgICAgbV9wZGZEb2N1bWVudCA9IFdURk1vdmUobV9i
YWNrZ3JvdW5kVGhyZWFkRG9jdW1lbnQpOwogCiAgICAgLy8gSWYgdGhlIHBsdWdpbiB3YXMgbWFu
dWFsbHkgZGVzdHJveWVkLCB0aGUgbV9wZGZUaHJlYWQgbWlnaHQgYWxyZWFkeSBiZSBnb25lLgpA
QCAtODE0LDcgKzkwMSwxMCBAQCB2b2lkIFBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVzdDo6Y2xl
YXJTdHJlYW1Mb2FkZXIoKQogCiB2b2lkIFBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVzdDo6Y29t
cGxldGVXaXRoQnl0ZXMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGNvdW50LCBQREZQbHVn
aW4mIHBsdWdpbikKIHsKLSAgICBMT0coUERGLCAiQ29tcGxldGluZyByYW5nZSByZXF1ZXN0ICVs
bHUgKCVsdSBieXRlcyBhdCAlbGx1KSB3aXRoICVsdSBieXRlcyBmcm9tIHRoZSBtYWluIFBERiBi
dWZmZXIiLCBpZGVudGlmaWVyKCksIG1fY291bnQsIG1fcG9zaXRpb24sIGNvdW50KTsKKyNpZiAh
TE9HX0RJU0FCTEVECisgICAgKytwbHVnaW4ubV9jb21wbGV0ZWRSYW5nZVJlcXVlc3RzOworICAg
IHBsdWdpbi5wZGZMb2cobWFrZVN0cmluZygiQ29tcGxldGluZyByYW5nZSByZXF1ZXN0ICIsIGlk
ZW50aWZpZXIoKSwiICgiLCBtX2NvdW50LCIgYnl0ZXMgYXQgIiwgbV9wb3NpdGlvbiwiKSB3aXRo
ICIsIGNvdW50LCIgYnl0ZXMgZnJvbSB0aGUgbWFpbiBQREYgYnVmZmVyIikpOworI2VuZGlmCiAg
ICAgbV9jb21wbGV0aW9uSGFuZGxlcihkYXRhLCBjb3VudCk7CiAKICAgICBpZiAobV9zdHJlYW1M
b2FkZXIpCkBAIC04MjMsNyArOTEzLDEyIEBAIHZvaWQgUERGUGx1Z2luOjpCeXRlUmFuZ2VSZXF1
ZXN0Ojpjb21wbGV0ZVdpdGhCeXRlcyhjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QKIAogdm9p
ZCBQREZQbHVnaW46OkJ5dGVSYW5nZVJlcXVlc3Q6OmNvbXBsZXRlV2l0aEFjY3VtdWxhdGVkRGF0
YShQREZQbHVnaW4mIHBsdWdpbikKIHsKLSAgICBMT0coUERGLCAiQ29tcGxldGluZyByYW5nZSBy
ZXF1ZXN0ICVsbHUgKCVsdSBieXRlcyBhdCAlbGx1KSB3aXRoICVsdSBieXRlcyBmcm9tIHRoZSBu
ZXR3b3JrIiwgaWRlbnRpZmllcigpLCBtX2NvdW50LCBtX3Bvc2l0aW9uLCBtX2FjY3VtdWxhdGVk
RGF0YS5zaXplKCkpOworI2lmICFMT0dfRElTQUJMRUQKKyAgICArK3BsdWdpbi5tX2NvbXBsZXRl
ZFJhbmdlUmVxdWVzdHM7CisgICAgKytwbHVnaW4ubV9jb21wbGV0ZWROZXR3b3JrUmFuZ2VSZXF1
ZXN0czsKKyAgICBwbHVnaW4ucGRmTG9nKG1ha2VTdHJpbmcoIkNvbXBsZXRpbmcgcmFuZ2UgcmVx
dWVzdCAiLCBpZGVudGlmaWVyKCksIiAoIiwgbV9jb3VudCwiIGJ5dGVzIGF0ICIsIG1fcG9zaXRp
b24sIikgd2l0aCAiLCBtX2FjY3VtdWxhdGVkRGF0YS5zaXplKCksIiBieXRlcyBmcm9tIHRoZSBu
ZXR3b3JrIikpOworI2VuZGlmCisKICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKG1fYWNjdW11bGF0
ZWREYXRhLmRhdGEoKSwgbV9hY2N1bXVsYXRlZERhdGEuc2l6ZSgpKTsKICAgICAKICAgICBpZiAo
bV9zdHJlYW1Mb2FkZXIpCkBAIC05NDUsNyArMTA0MCw5IEBAIHZvaWQgUERGUGx1Z2luOjpmb3Jn
ZXRMb2FkZXIoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXImIGxvYWRlcikKIAogICAgIG1fc3Ry
ZWFtTG9hZGVyTWFwLnJlbW92ZSgmbG9hZGVyKTsKIAotICAgIExPRyhQREYsICJGb3Jnb3Qgc3Ry
ZWFtIGxvYWRlciBmb3IgcmFuZ2UgcmVxdWVzdCAlbGx1LlxuVGhlcmUgYXJlIG5vdyAldSBzdHJl
YW0gbG9hZGVycyByZW1haW5pbmcuIiwgaWRlbnRpZmllciwgbV9zdHJlYW1Mb2FkZXJNYXAuc2l6
ZSgpKTsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgcGRmTG9nKG1ha2VTdHJpbmcoIkZvcmdvdCBz
dHJlYW0gbG9hZGVyIGZvciByYW5nZSByZXF1ZXN0ICIsIGlkZW50aWZpZXIsIi4gVGhlcmUgYXJl
IG5vdyAiLCBtX3N0cmVhbUxvYWRlck1hcC5zaXplKCksIiBzdHJlYW0gbG9hZGVycyByZW1haW5p
bmciKSk7CisjZW5kaWYKIH0KIAogdm9pZCBQREZQbHVnaW46OmNhbmNlbEFuZEZvcmdldExvYWRl
cihOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciYgbG9hZGVyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393385</attachid>
            <date>2020-03-12 09:39:36 -0700</date>
            <delta_ts>2020-03-12 20:56:02 -0700</delta_ts>
            <desc>PFL</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13464</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNmU0NmQyMzBkOWEuLjU1ZjViYjI2YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDIwLTAzLTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSB2ZXJ5IHZlcmJvc2UgbG9nZ2luZyBtb2RlIGZvciBpbmNyZW1lbnRhbCBQ
REYgbG9hZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4OTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
IEFkZHMgYSB2ZXJib3NlIGxvZ2dpbmcgY2hhbm5lbCB0aGF0IGluY2x1ZGVzIGEgZnVsbCBkdW1w
IG9mIHRoZSBQREZQbHVnaW4ncyBsb2FkaW5nIHN0YXR1cworICAgICAgICBmb3IgZWFjaCBsb2dn
aW5nIG1lc3NhZ2UuCisgICAgICAgIAorICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6cGRmTG9nKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpsb2dTdHJlYW1M
b2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnZlcmJvc2VMb2cpOgorICAgICAg
ICAoV2ViS2l0OjpkYXRhUHJvdmlkZXJHZXRCeXRlc0F0UG9zaXRpb25DYWxsYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OmRhdGFQcm92aWRlckdldEJ5dGVSYW5nZXNDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9zaXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OmFkb3B0QmFja2dyb3VuZFRocmVhZERvY3VtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpCeXRlUmFuZ2VSZXF1ZXN0Ojpjb21wbGV0ZVdpdGhC
eXRlcyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVzdDo6Y29t
cGxldGVXaXRoQWNjdW11bGF0ZWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpm
b3JnZXRMb2FkZXIpOgorCiAyMDIwLTAzLTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBlbmNvZGVOYXRpdmVJbWFn
ZSgpIHNob3VsZCBwYXNzIGltYWdlU2l6ZSB0byBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJ
bWFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDJmZDcyZWQzNzE0Li5mZjI2MzI0
ZWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTU0LDEwICs1NCwxMiBAQCBleHRl
cm4gIkMiIHsKICAgICBNKERyYWdBbmREcm9wKSBcCiAgICAgTShGdWxsc2NyZWVuKSBcCiAgICAg
TShHYW1lcGFkKSBcCi0gICAgTShJY29uRGF0YWJhc2UpIFwKLSAgICBNKEluZGV4ZWREQikgXAog
ICAgIE0oSVBDKSBcCiAgICAgTShJVFBEZWJ1ZykgXAorICAgIE0oSWNvbkRhdGFiYXNlKSBcCisg
ICAgTShJbmNyZW1lbnRhbFBERikgXAorICAgIE0oSW5jcmVtZW50YWxQREZWZXJib3NlKSBcCisg
ICAgTShJbmRleGVkREIpIFwKICAgICBNKEtleUhhbmRsaW5nKSBcCiAgICAgTShMYXllcnMpIFwK
ICAgICBNKExheW91dCkgXApAQCAtNzEsNyArNzMsNiBAQCBleHRlcm4gIkMiIHsKICAgICBNKE5l
dHdvcmtDYWNoZVN0b3JhZ2UpIFwKICAgICBNKE5ldHdvcmtTY2hlZHVsaW5nKSBcCiAgICAgTShO
ZXR3b3JrU2Vzc2lvbikgXAotICAgIE0oUERGKSBcCiAgICAgTShQZXJmb3JtYW5jZUxvZ2dpbmcp
IFwKICAgICBNKFBsdWdpbnMpIFwKICAgICBNKFByaW50aW5nKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNWYwZDYyNWJiNTYu
LjNlZTUzNGQ3NWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oCkBAIC02Nyw2ICs2NywxMCBAQCBjbGFzcyBFbGVtZW50Owogc3RydWN0
IFBsdWdpbkluZm87CiB9CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30K
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBERlBsdWdpbkFubm90YXRpb247CkBAIC0x
MjgsNiArMTMyLDExIEBAIHB1YmxpYzoKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMp
CiAgICAgdm9pZCBnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbihzaXplX3QgY291bnQsIG9mZl90
IHBvc2l0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qg
Y291bnQpPiYmKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9pZCBwZGZMb2coY29uc3QgU3RyaW5n
JiBldmVudCk7CisgICAgc2l6ZV90IGluY3JlbWVudFRocmVhZHNXYWl0aW5nT25DYWxsYmFjaygp
IHsgcmV0dXJuICsrbV90aHJlYWRzV2FpdGluZ09uQ2FsbGJhY2s7IH0KKyAgICBzaXplX3QgZGVj
cmVtZW50VGhyZWFkc1dhaXRpbmdPbkNhbGxiYWNrKCkgeyByZXR1cm4gLS1tX3RocmVhZHNXYWl0
aW5nT25DYWxsYmFjazsgfQorI2VuZGlmCiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTM1Myw2ICsz
NjIsOSBAQCBwcml2YXRlOgogICAgICAgICBib29sIG1heWJlQ29tcGxldGUoUERGUGx1Z2luJik7
CiAgICAgICAgIHZvaWQgY29tcGxldGVVbmNvbmRpdGlvbmFsbHkoUERGUGx1Z2luJik7CiAKKyAg
ICAgICAgdWludDY0X3QgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9Cisg
ICAgICAgIHNpemVfdCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIHVpbnQ2NF90IG1fcG9zaXRpb24geyAwIH07CiAgICAgICAgIHNpemVf
dCBtX2NvdW50IHsgMCB9OwpAQCAtMzcyLDcgKzM4NCwxNiBAQCBwcml2YXRlOgogICAgIEhhc2hN
YXA8UmVmUHRyPFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiwgdWludDY0X3Q+
IG1fc3RyZWFtTG9hZGVyTWFwOwogICAgIFJhbmdlU2V0PFdURjo6UmFuZ2U8dWludDY0X3Q+PiBt
X2NvbXBsZXRlZFJhbmdlczsKICAgICBib29sIG1faW5jcmVtZW50YWxQREZMb2FkaW5nRW5hYmxl
ZDsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICB2b2lkIHZlcmJvc2VMb2coKTsKKyAgICB2b2lk
IGxvZ1N0cmVhbUxvYWRlcihXVEY6OlRleHRTdHJlYW0mLCBXZWJDb3JlOjpOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciYpOworICAgIHN0ZDo6YXRvbWljPHNpemVfdD4gbV90aHJlYWRzV2FpdGlu
Z09uQ2FsbGJhY2sgeyAwIH07CisgICAgc3RkOjphdG9taWM8c2l6ZV90PiBtX2NvbXBsZXRlZFJh
bmdlUmVxdWVzdHMgeyAwIH07CisgICAgc3RkOjphdG9taWM8c2l6ZV90PiBtX2NvbXBsZXRlZE5l
dHdvcmtSYW5nZVJlcXVlc3RzIHsgMCB9OwogI2VuZGlmCisKKyNlbmRpZiAvLyBIQVZFKElOQ1JF
TUVOVEFMX1BERl9BUElTKQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA2YWVh
YzkwNTYyZC4uMDE4N2Y3Mzc4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTIsNiArOTIsNyBAQAogI2ltcG9ydCA8d3Rm
L1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbXBvcnQgPHd0Zi9Xb3Jr
UXVldWUuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIEhBVkUoSU5D
UkVNRU5UQUxfUERGX0FQSVMpCiBAaW50ZXJmYWNlIFBERkRvY3VtZW50ICgpCkBAIC02MzIsMTAg
KzYzMyw3NCBAQCBQREZQbHVnaW46On5QREZQbHVnaW4oKQogfQogCiAjaWYgSEFWRShJTkNSRU1F
TlRBTF9QREZfQVBJUykKKyNpZiAhTE9HX0RJU0FCTEVECit2b2lkIFBERlBsdWdpbjo6cGRmTG9n
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Cisg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgICAgIHBk
ZkxvZyhtZXNzYWdlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oSW5jcmVtZW50YWxQREYsIHN0cmVhbSA8PCBtZXNzYWdlKTsKKyAg
ICB2ZXJib3NlTG9nKCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKEluY3JlbWVudGFsUERGVmVyYm9z
ZSwgc3RyZWFtIDw8IG1lc3NhZ2UpOworfQorCit2b2lkIFBERlBsdWdpbjo6bG9nU3RyZWFtTG9h
ZGVyKFdURjo6VGV4dFN0cmVhbSYgc3RyZWFtLCBXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciYgbG9hZGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBh
dXRvKiByZXF1ZXN0ID0gYnl0ZVJhbmdlUmVxdWVzdEZvckxvYWRlcihsb2FkZXIpOworICAgIHN0
cmVhbSA8PCAiKCI7CisgICAgaWYgKCFyZXF1ZXN0KSB7CisgICAgICAgIHN0cmVhbSA8PCAibm8g
cmFuZ2UgcmVxdWVzdCBmb3VuZCkgIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0
cmVhbSA8PCByZXF1ZXN0LT5wb3NpdGlvbigpIDw8ICItIiA8PCByZXF1ZXN0LT5wb3NpdGlvbigp
ICsgcmVxdWVzdC0+Y291bnQoKSAtIDEgPDwgIikgIjsKK30KKwordm9pZCBQREZQbHVnaW46OnZl
cmJvc2VMb2coKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBUZXh0U3Ry
ZWFtIHN0cmVhbTsKKyAgICBzdHJlYW0gPDwgIlxuIjsKKyAgICBpZiAobV9wZGZUaHJlYWQpCisg
ICAgICAgIHN0cmVhbSA8PCAiSW5pdGlhbCBQREYgdGhyZWFkIGlzIHN0aWxsIGluIHByb2dyZXNz
XG4iOworICAgIGVsc2UKKyAgICAgICAgc3RyZWFtIDw8ICJJbml0aWFsIFBERiB0aHJlYWQgaGFz
IGNvbXBsZXRlZFxuIjsKKworICAgIHN0cmVhbSA8PCAiSGF2ZSBjb21wbGV0ZWQgIiA8PCBtX2Nv
bXBsZXRlZFJhbmdlUmVxdWVzdHMgPDwgIiByYW5nZSByZXF1ZXN0cyAoIiA8PCBtX2NvbXBsZXRl
ZE5ldHdvcmtSYW5nZVJlcXVlc3RzIDw8ICIgZnJvbSB0aGUgbmV0d29yaylcbiI7CisgICAgc3Ry
ZWFtIDw8ICJUaGVyZSBhcmUgIiA8PCBtX3RocmVhZHNXYWl0aW5nT25DYWxsYmFjayA8PCAiIGRh
dGEgcHJvdmlkZXIgdGhyZWFkcyB3YWl0aW5nIG9uIGEgcmVwbHlcbiI7CisgICAgc3RyZWFtIDw8
ICJUaGVyZSBhcmUgIiA8PCBtX291dHN0YW5kaW5nQnl0ZVJhbmdlUmVxdWVzdHMuc2l6ZSgpIDw8
ICIgYnl0ZSByYW5nZSByZXF1ZXN0cyBvdXRzdGFuZGluZ1xuIjsKKworICAgIHN0cmVhbSA8PCAi
VGhlcmUgYXJlICIgPDwgbV9zdHJlYW1Mb2FkZXJNYXAuc2l6ZSgpIDw8ICIgYWN0aXZlIG5ldHdv
cmsgc3RyZWFtIGxvYWRlcnM6ICI7CisgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBtX3N0cmVhbUxv
YWRlck1hcC5rZXlzKCkpCisgICAgICAgIGxvZ1N0cmVhbUxvYWRlcihzdHJlYW0sICpsb2FkZXIp
OworICAgIHN0cmVhbSA8PCAiXG4iOworCisgICAgc3RyZWFtIDw8ICJUaGUgbWFpbiBkb2N1bWVu
dCBsb2FkZXIgaGFzIGZpbmlzaGVkIGxvYWRpbmcgIiA8PCBtX3N0cmVhbWVkQnl0ZXMgPDwgIiBi
eXRlcywgYW5kIGlzIjsKKyAgICBpZiAoIW1fZG9jdW1lbnRGaW5pc2hlZExvYWRpbmcpCisgICAg
ICAgIHN0cmVhbSA8PCAiIG5vdCI7CisgICAgc3RyZWFtIDw8ICIgY29tcGxldGUiOworCisgICAg
TE9HKEluY3JlbWVudGFsUERGVmVyYm9zZSwgIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCku
ZGF0YSgpKTsKK30KKyNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECisKKwogc3RhdGljIHNpemVfdCBk
YXRhUHJvdmlkZXJHZXRCeXRlc0F0UG9zaXRpb25DYWxsYmFjayh2b2lkKiBpbmZvLCB2b2lkKiBi
dWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7Ci0gICAgTE9HKFBERiwgIlBERiBkYXRhIHByb3ZpZGVyIHJlcXVlc3Rpbmcg
JWx1IGJ5dGVzIGF0IHBvc2l0aW9uICVsbHUiLCBjb3VudCwgcG9zaXRpb24pOworCisjaWYgIUxP
R19ESVNBQkxFRAorICAgIFJlZjxQREZQbHVnaW4+IGRlYnVnUGx1Z2luUmVmID0gKigoUERGUGx1
Z2luKilpbmZvKTsKKyAgICBkZWJ1Z1BsdWdpblJlZi0+aW5jcmVtZW50VGhyZWFkc1dhaXRpbmdP
bkNhbGxiYWNrKCk7CisgICAgZGVidWdQbHVnaW5SZWYtPnBkZkxvZyhtYWtlU3RyaW5nKCJQREYg
ZGF0YSBwcm92aWRlciByZXF1ZXN0aW5nICIsIGNvdW50LCAiIGJ5dGVzIGF0IHBvc2l0aW9uICIs
IHBvc2l0aW9uKSk7CisjZW5kaWYKIAogICAgIFJlZjxQREZQbHVnaW4+IHBsdWdpbiA9ICooKFBE
RlBsdWdpbiopaW5mbyk7CiAgICAgV1RGOjpTZW1hcGhvcmUgZGF0YVNlbWFwaG9yZSB7IDAgfTsK
QEAgLTY1MSw2ICs3MTYsMTIgQEAgc3RhdGljIHNpemVfdCBkYXRhUHJvdmlkZXJHZXRCeXRlc0F0
UG9zaXRpb25DYWxsYmFjayh2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG8KICAgICB9KTsKIAog
ICAgIGRhdGFTZW1hcGhvcmUud2FpdCgpOworCisjaWYgIUxPR19ESVNBQkxFRAorICAgIGRlYnVn
UGx1Z2luUmVmLT5kZWNyZW1lbnRUaHJlYWRzV2FpdGluZ09uQ2FsbGJhY2soKTsKKyAgICBkZWJ1
Z1BsdWdpblJlZi0+cGRmTG9nKG1ha2VTdHJpbmcoIlBERiBkYXRhIHByb3ZpZGVyIHJlY2VpdmVk
ICIsIGJ5dGVzUHJvdmlkZWQsICIgYnl0ZXMgb2YgcmVxdWVzdGVkICIsIGNvdW50KSk7CisjZW5k
aWYKKwogICAgIHJldHVybiBieXRlc1Byb3ZpZGVkOwogfQogCkBAIC02NTgsNyArNzI5LDkgQEAg
c3RhdGljIHZvaWQgZGF0YVByb3ZpZGVyR2V0Qnl0ZVJhbmdlc0NhbGxiYWNrKHZvaWQqIGluZm8s
IENGTXV0YWJsZUFycmF5UmVmIGJ1ZmYKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
IAotI2lmbmRlZiBOREVCVUcKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgUmVmPFBERlBsdWdpbj4g
ZGVidWdQbHVnaW5SZWYgPSAqKChQREZQbHVnaW4qKWluZm8pOworICAgIGRlYnVnUGx1Z2luUmVm
LT5pbmNyZW1lbnRUaHJlYWRzV2FpdGluZ09uQ2FsbGJhY2soKTsKICAgICBUZXh0U3RyZWFtIHN0
cmVhbTsKICAgICBzdHJlYW0gPDwgIlBERiBkYXRhIHByb3ZpZGVyIHJlcXVlc3RpbmcgIiA8PCBj
b3VudCA8PCAiIGJ5dGUgcmFuZ2VzICgiOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewpAQCAtNjY3LDcgKzc0MCw3IEBAIHN0YXRpYyB2b2lkIGRhdGFQcm92aWRlckdl
dEJ5dGVSYW5nZXNDYWxsYmFjayh2b2lkKiBpbmZvLCBDRk11dGFibGVBcnJheVJlZiBidWZmCiAg
ICAgICAgICAgICBzdHJlYW0gPDwgIiwgIjsKICAgICB9CiAgICAgc3RyZWFtIDw8ICIpIjsKLSAg
ICBMT0coUERGLCAiJXMiLCBzdHJlYW0ucmVsZWFzZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIGRl
YnVnUGx1Z2luUmVmLT5wZGZMb2coc3RyZWFtLnJlbGVhc2UoKSk7CiAjZW5kaWYKIAogICAgIFJl
ZjxQREZQbHVnaW4+IHBsdWdpbiA9ICooKFBERlBsdWdpbiopaW5mbyk7CkBAIC02ODcsNiArNzYw
LDExIEBAIHN0YXRpYyB2b2lkIGRhdGFQcm92aWRlckdldEJ5dGVSYW5nZXNDYWxsYmFjayh2b2lk
KiBpbmZvLCBDRk11dGFibGVBcnJheVJlZiBidWZmCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjb3VudDsgKytpKQogICAgICAgICBkYXRhU2VtYXBob3JlLndhaXQoKTsKIAorI2lmICFMT0df
RElTQUJMRUQKKyAgICBkZWJ1Z1BsdWdpblJlZi0+ZGVjcmVtZW50VGhyZWFkc1dhaXRpbmdPbkNh
bGxiYWNrKCk7CisgICAgZGVidWdQbHVnaW5SZWYtPnBkZkxvZyhtYWtlU3RyaW5nKCJQREYgZGF0
YSBwcm92aWRlciBmaW5pc2hlZCByZWNlaXZpbmcgdGhlIHJlcXVlc3RlZCAiLCBjb3VudCwgIiBi
eXRlIHJhbmdlcyIpKTsKKyNlbmRpZgorCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiBkYXRhUmVz
dWx0cykgewogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJlc3VsdCA9IGFkb3B0
Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIDApKTsKQEAgLTcyOCw2ICs4
MDYsOCBAQCB2b2lkIFBERlBsdWdpbjo6dGhyZWFkRW50cnkoUmVmPFBERlBsdWdpbj4mJiBwcm90
ZWN0ZWRQbHVnaW4pCiAKICAgICBmaXJzdFBhZ2VTZW1hcGhvcmUud2FpdCgpOwogCisgICAgcGRm
TG9nKCJGaW5pbmlzaGVkIHByZWxvYWRpbmcgZmlyc3QgcGFnZSIpOworCiAgICAgLy8gVGhlIG1h
aW4gdGhyZWFkIGRpc3BhdGNoIGJlbG93IHJlbW92ZXMgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRo
ZSBQREYgdGhyZWFkLgogICAgIC8vIEl0IG11c3QgYmUgdGhlIGxhc3QgY29kZSBleGVjdXRlZCBp
biB0aGlzIGZ1bmN0aW9uLgogICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFBsdWdpbiA9
IFdURk1vdmUocHJvdGVjdGVkUGx1Z2luKV0geyB9KTsKQEAgLTc2OSw3ICs4NDksOSBAQCB2b2lk
IFBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9zaXRpb24oc2l6ZV90IGNvdW50LCBvZmZf
dCBwb3NpdGlvbiwgQ29tcGxldAogICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBtYWtlU3RyaW5nKCJieXRlcz0iX3MsIHBvc2l0aW9u
LCAiLSJfcywgcG9zaXRpb24gKyBjb3VudCAtIDEpKTsKICAgICByZXNvdXJjZVJlcXVlc3Quc2V0
Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OkRvTm90VXNlQW55Q2FjaGUp
OwogCi0gICAgTE9HKFBERiwgIlNjaGVkdWxpbmcgYSBzdHJlYW0gbG9hZGVyIGZvciByZXF1ZXN0
ICVsbHUgKCVsdSBieXRlcyBhdCAlbGx1KVxuIiwgaWRlbnRpZmllciwgY291bnQsIHBvc2l0aW9u
KTsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgcGRmTG9nKG1ha2VTdHJpbmcoIlNjaGVkdWxpbmcg
YSBzdHJlYW0gbG9hZGVyIGZvciByZXF1ZXN0ICIsIGlkZW50aWZpZXIsICIgKCIsIGNvdW50LCAi
IGJ5dGVzIGF0ICIsIHBvc2l0aW9uLCAiKSIpKTsKKyNlbmRpZgogCiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQo
KmNvcmVGcmFtZSwgKnRoaXMsIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllcl0gKFJlZlB0cjxXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4mJiBsb2FkZXIpIHsKICAgICAgICAgYXV0byBpdGVy
YXRvciA9IG1fb3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1ZXN0cy5maW5kKGlkZW50aWZpZXIpOwpA
QCAtNzgwLDcgKzg2MiwxMCBAQCB2b2lkIFBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9z
aXRpb24oc2l6ZV90IGNvdW50LCBvZmZfdCBwb3NpdGlvbiwgQ29tcGxldAogCiAgICAgICAgIGl0
ZXJhdG9yLT52YWx1ZS5zZXRTdHJlYW1Mb2FkZXIobG9hZGVyLmdldCgpKTsKICAgICAgICAgbV9z
dHJlYW1Mb2FkZXJNYXAuc2V0KFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmllcik7Ci0gICAgICAg
IExPRyhQREYsICJUaGVyZSBhcmUgbm93ICV1IHN0cmVhbSBsb2FkZXJzIGluIGZsaWdodCIsIG1f
c3RyZWFtTG9hZGVyTWFwLnNpemUoKSk7CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgICAgIHBk
ZkxvZyhtYWtlU3RyaW5nKCJUaGVyZSBhcmUgbm93ICIsIG1fc3RyZWFtTG9hZGVyTWFwLnNpemUo
KSwgIiBzdHJlYW0gbG9hZGVycyBpbiBmbGlnaHQiKSk7CisjZW5kaWYKICAgICB9KTsKIH0KIApA
QCAtNzkwLDYgKzg3NSwxMCBAQCB2b2lkIFBERlBsdWdpbjo6YWRvcHRCYWNrZ3JvdW5kVGhyZWFk
RG9jdW1lbnQoKQogICAgIEFTU0VSVChtX2JhY2tncm91bmRUaHJlYWREb2N1bWVudCk7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAorI2lmICFMT0dfRElTQUJMRUQKKyAgICBwZGZMb2co
IkFkb3B0aW5nIFBERkRvY3VtZW50IGZyb20gYmFja2dyb3VuZCB0aHJlYWQiKTsKKyNlbmRpZgor
CiAgICAgbV9wZGZEb2N1bWVudCA9IFdURk1vdmUobV9iYWNrZ3JvdW5kVGhyZWFkRG9jdW1lbnQp
OwogCiAgICAgLy8gSWYgdGhlIHBsdWdpbiB3YXMgbWFudWFsbHkgZGVzdHJveWVkLCB0aGUgbV9w
ZGZUaHJlYWQgbWlnaHQgYWxyZWFkeSBiZSBnb25lLgpAQCAtODE0LDcgKzkwMywxMCBAQCB2b2lk
IFBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVzdDo6Y2xlYXJTdHJlYW1Mb2FkZXIoKQogCiB2b2lk
IFBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVzdDo6Y29tcGxldGVXaXRoQnl0ZXMoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGNvdW50LCBQREZQbHVnaW4mIHBsdWdpbikKIHsKLSAgICBMT0co
UERGLCAiQ29tcGxldGluZyByYW5nZSByZXF1ZXN0ICVsbHUgKCVsdSBieXRlcyBhdCAlbGx1KSB3
aXRoICVsdSBieXRlcyBmcm9tIHRoZSBtYWluIFBERiBidWZmZXIiLCBpZGVudGlmaWVyKCksIG1f
Y291bnQsIG1fcG9zaXRpb24sIGNvdW50KTsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgKytwbHVn
aW4ubV9jb21wbGV0ZWRSYW5nZVJlcXVlc3RzOworICAgIHBsdWdpbi5wZGZMb2cobWFrZVN0cmlu
ZygiQ29tcGxldGluZyByYW5nZSByZXF1ZXN0ICIsIGlkZW50aWZpZXIoKSwiICgiLCBtX2NvdW50
LCIgYnl0ZXMgYXQgIiwgbV9wb3NpdGlvbiwiKSB3aXRoICIsIGNvdW50LCIgYnl0ZXMgZnJvbSB0
aGUgbWFpbiBQREYgYnVmZmVyIikpOworI2VuZGlmCiAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihk
YXRhLCBjb3VudCk7CiAKICAgICBpZiAobV9zdHJlYW1Mb2FkZXIpCkBAIC04MjMsNyArOTE1LDEy
IEBAIHZvaWQgUERGUGx1Z2luOjpCeXRlUmFuZ2VSZXF1ZXN0Ojpjb21wbGV0ZVdpdGhCeXRlcyhj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QKIAogdm9pZCBQREZQbHVnaW46OkJ5dGVSYW5nZVJl
cXVlc3Q6OmNvbXBsZXRlV2l0aEFjY3VtdWxhdGVkRGF0YShQREZQbHVnaW4mIHBsdWdpbikKIHsK
LSAgICBMT0coUERGLCAiQ29tcGxldGluZyByYW5nZSByZXF1ZXN0ICVsbHUgKCVsdSBieXRlcyBh
dCAlbGx1KSB3aXRoICVsdSBieXRlcyBmcm9tIHRoZSBuZXR3b3JrIiwgaWRlbnRpZmllcigpLCBt
X2NvdW50LCBtX3Bvc2l0aW9uLCBtX2FjY3VtdWxhdGVkRGF0YS5zaXplKCkpOworI2lmICFMT0df
RElTQUJMRUQKKyAgICArK3BsdWdpbi5tX2NvbXBsZXRlZFJhbmdlUmVxdWVzdHM7CisgICAgKytw
bHVnaW4ubV9jb21wbGV0ZWROZXR3b3JrUmFuZ2VSZXF1ZXN0czsKKyAgICBwbHVnaW4ucGRmTG9n
KG1ha2VTdHJpbmcoIkNvbXBsZXRpbmcgcmFuZ2UgcmVxdWVzdCAiLCBpZGVudGlmaWVyKCksIiAo
IiwgbV9jb3VudCwiIGJ5dGVzIGF0ICIsIG1fcG9zaXRpb24sIikgd2l0aCAiLCBtX2FjY3VtdWxh
dGVkRGF0YS5zaXplKCksIiBieXRlcyBmcm9tIHRoZSBuZXR3b3JrIikpOworI2VuZGlmCisKICAg
ICBtX2NvbXBsZXRpb25IYW5kbGVyKG1fYWNjdW11bGF0ZWREYXRhLmRhdGEoKSwgbV9hY2N1bXVs
YXRlZERhdGEuc2l6ZSgpKTsKICAgICAKICAgICBpZiAobV9zdHJlYW1Mb2FkZXIpCkBAIC04NTIs
NyArOTQ5LDcgQEAgYm9vbCBQREZQbHVnaW46OkJ5dGVSYW5nZVJlcXVlc3Q6Om1heWJlQ29tcGxl
dGUoUERGUGx1Z2luJiBwbHVnaW4pCiAgICAgfQogCiAgICAgaWYgKHBsdWdpbi5tX2NvbXBsZXRl
ZFJhbmdlcy5jb250YWlucyh7IG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBtX2NvdW50IC0gMSB9
KSkgewotICAgICAgICBMT0coUERGLCAiQ29tcGxldGluZyByZXF1ZXN0ICVsbHUgd2l0aCBhIHBy
ZXZpb3VzbHkgY29tcGxldGVkIHJhbmdlIiwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgcGx1Z2lu
LnBkZkxvZyhtYWtlU3RyaW5nKCJDb21wbGV0aW5nIHJlcXVlc3QgJWxsdSB3aXRoIGEgcHJldmlv
dXNseSBjb21wbGV0ZWQgcmFuZ2UiLCBpZGVudGlmaWVyKCkpKTsKICAgICAgICAgY29tcGxldGVX
aXRoQnl0ZXMoQ0ZEYXRhR2V0Qnl0ZVB0cihwbHVnaW4ubV9kYXRhLmdldCgpKSArIG1fcG9zaXRp
b24sIG1fY291bnQsIHBsdWdpbik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTk2
NSw3ICsxMDYyLDkgQEAgdm9pZCBQREZQbHVnaW46OmZvcmdldExvYWRlcihOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciYgbG9hZGVyKQogCiAgICAgbV9zdHJlYW1Mb2FkZXJNYXAucmVtb3ZlKCZs
b2FkZXIpOwogCi0gICAgTE9HKFBERiwgIkZvcmdvdCBzdHJlYW0gbG9hZGVyIGZvciByYW5nZSBy
ZXF1ZXN0ICVsbHUuXG5UaGVyZSBhcmUgbm93ICV1IHN0cmVhbSBsb2FkZXJzIHJlbWFpbmluZy4i
LCBpZGVudGlmaWVyLCBtX3N0cmVhbUxvYWRlck1hcC5zaXplKCkpOworI2lmICFMT0dfRElTQUJM
RUQKKyAgICBwZGZMb2cobWFrZVN0cmluZygiRm9yZ290IHN0cmVhbSBsb2FkZXIgZm9yIHJhbmdl
IHJlcXVlc3QgIiwgaWRlbnRpZmllciwiLiBUaGVyZSBhcmUgbm93ICIsIG1fc3RyZWFtTG9hZGVy
TWFwLnNpemUoKSwiIHN0cmVhbSBsb2FkZXJzIHJlbWFpbmluZyIpKTsKKyNlbmRpZgogfQogCiB2
b2lkIFBERlBsdWdpbjo6Y2FuY2VsQW5kRm9yZ2V0TG9hZGVyKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyJiBsb2FkZXIpCkBAIC0xMzA3LDcgKzE0MDYsNyBAQCB2b2lkIFBERlBsdWdpbjo6Y29u
dmVydFBvc3RTY3JpcHREYXRhSWZOZWVkZWQoKQogCiB2b2lkIFBERlBsdWdpbjo6cGRmRG9jdW1l
bnREaWRMb2FkKCkKIHsKLSAgICBMT0coUERGLCAiUERGIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRp
bmcgd2l0aCBhIHRvdGFsIG9mICVsbHUgYnl0ZXMiLCBtX3N0cmVhbWVkQnl0ZXMpOworICAgIHBk
ZkxvZyhtYWtlU3RyaW5nKCJQREYgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZyB3aXRoIGEgdG90
YWwgb2YgJWxsdSBieXRlcyIsIG1fc3RyZWFtZWRCeXRlcykpOwogCiAgICAgYWRkQXJjaGl2ZVJl
c291cmNlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393450</attachid>
            <date>2020-03-12 20:56:02 -0700</date>
            <delta_ts>2020-03-12 22:56:04 -0700</delta_ts>
            <desc>PFL</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13794</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNmU0NmQyMzBkOWEuLjU1ZjViYjI2YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDIwLTAzLTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSB2ZXJ5IHZlcmJvc2UgbG9nZ2luZyBtb2RlIGZvciBpbmNyZW1lbnRhbCBQ
REYgbG9hZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4OTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAg
IEFkZHMgYSB2ZXJib3NlIGxvZ2dpbmcgY2hhbm5lbCB0aGF0IGluY2x1ZGVzIGEgZnVsbCBkdW1w
IG9mIHRoZSBQREZQbHVnaW4ncyBsb2FkaW5nIHN0YXR1cworICAgICAgICBmb3IgZWFjaCBsb2dn
aW5nIG1lc3NhZ2UuCisgICAgICAgIAorICAgICAgICAqIFBsYXRmb3JtL0xvZ2dpbmcuaDoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6cGRmTG9nKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpsb2dTdHJlYW1M
b2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnZlcmJvc2VMb2cpOgorICAgICAg
ICAoV2ViS2l0OjpkYXRhUHJvdmlkZXJHZXRCeXRlc0F0UG9zaXRpb25DYWxsYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OmRhdGFQcm92aWRlckdldEJ5dGVSYW5nZXNDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9zaXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OmFkb3B0QmFja2dyb3VuZFRocmVhZERvY3VtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpCeXRlUmFuZ2VSZXF1ZXN0Ojpjb21wbGV0ZVdpdGhC
eXRlcyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVzdDo6Y29t
cGxldGVXaXRoQWNjdW11bGF0ZWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpm
b3JnZXRMb2FkZXIpOgorCiAyMDIwLTAzLTExICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBlbmNvZGVOYXRpdmVJbWFn
ZSgpIHNob3VsZCBwYXNzIGltYWdlU2l6ZSB0byBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJ
bWFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDJmZDcyZWQzNzE0Li5mZjI2MzI0
ZWFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTU0LDEwICs1NCwxMiBAQCBleHRl
cm4gIkMiIHsKICAgICBNKERyYWdBbmREcm9wKSBcCiAgICAgTShGdWxsc2NyZWVuKSBcCiAgICAg
TShHYW1lcGFkKSBcCi0gICAgTShJY29uRGF0YWJhc2UpIFwKLSAgICBNKEluZGV4ZWREQikgXAog
ICAgIE0oSVBDKSBcCiAgICAgTShJVFBEZWJ1ZykgXAorICAgIE0oSWNvbkRhdGFiYXNlKSBcCisg
ICAgTShJbmNyZW1lbnRhbFBERikgXAorICAgIE0oSW5jcmVtZW50YWxQREZWZXJib3NlKSBcCisg
ICAgTShJbmRleGVkREIpIFwKICAgICBNKEtleUhhbmRsaW5nKSBcCiAgICAgTShMYXllcnMpIFwK
ICAgICBNKExheW91dCkgXApAQCAtNzEsNyArNzMsNiBAQCBleHRlcm4gIkMiIHsKICAgICBNKE5l
dHdvcmtDYWNoZVN0b3JhZ2UpIFwKICAgICBNKE5ldHdvcmtTY2hlZHVsaW5nKSBcCiAgICAgTShO
ZXR3b3JrU2Vzc2lvbikgXAotICAgIE0oUERGKSBcCiAgICAgTShQZXJmb3JtYW5jZUxvZ2dpbmcp
IFwKICAgICBNKFBsdWdpbnMpIFwKICAgICBNKFByaW50aW5nKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNWYwZDYyNWJiNTYu
LjNlZTUzNGQ3NWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oCkBAIC02Nyw2ICs2NywxMCBAQCBjbGFzcyBFbGVtZW50Owogc3RydWN0
IFBsdWdpbkluZm87CiB9CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30K
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBERlBsdWdpbkFubm90YXRpb247CkBAIC0x
MjgsNiArMTMyLDExIEBAIHB1YmxpYzoKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMp
CiAgICAgdm9pZCBnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbihzaXplX3QgY291bnQsIG9mZl90
IHBvc2l0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qg
Y291bnQpPiYmKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9pZCBwZGZMb2coY29uc3QgU3RyaW5n
JiBldmVudCk7CisgICAgc2l6ZV90IGluY3JlbWVudFRocmVhZHNXYWl0aW5nT25DYWxsYmFjaygp
IHsgcmV0dXJuICsrbV90aHJlYWRzV2FpdGluZ09uQ2FsbGJhY2s7IH0KKyAgICBzaXplX3QgZGVj
cmVtZW50VGhyZWFkc1dhaXRpbmdPbkNhbGxiYWNrKCkgeyByZXR1cm4gLS1tX3RocmVhZHNXYWl0
aW5nT25DYWxsYmFjazsgfQorI2VuZGlmCiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTM1Myw2ICsz
NjIsOSBAQCBwcml2YXRlOgogICAgICAgICBib29sIG1heWJlQ29tcGxldGUoUERGUGx1Z2luJik7
CiAgICAgICAgIHZvaWQgY29tcGxldGVVbmNvbmRpdGlvbmFsbHkoUERGUGx1Z2luJik7CiAKKyAg
ICAgICAgdWludDY0X3QgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9Cisg
ICAgICAgIHNpemVfdCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQ7IH0KKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIHVpbnQ2NF90IG1fcG9zaXRpb24geyAwIH07CiAgICAgICAgIHNpemVf
dCBtX2NvdW50IHsgMCB9OwpAQCAtMzcyLDcgKzM4NCwxNiBAQCBwcml2YXRlOgogICAgIEhhc2hN
YXA8UmVmUHRyPFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiwgdWludDY0X3Q+
IG1fc3RyZWFtTG9hZGVyTWFwOwogICAgIFJhbmdlU2V0PFdURjo6UmFuZ2U8dWludDY0X3Q+PiBt
X2NvbXBsZXRlZFJhbmdlczsKICAgICBib29sIG1faW5jcmVtZW50YWxQREZMb2FkaW5nRW5hYmxl
ZDsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICB2b2lkIHZlcmJvc2VMb2coKTsKKyAgICB2b2lk
IGxvZ1N0cmVhbUxvYWRlcihXVEY6OlRleHRTdHJlYW0mLCBXZWJDb3JlOjpOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciYpOworICAgIHN0ZDo6YXRvbWljPHNpemVfdD4gbV90aHJlYWRzV2FpdGlu
Z09uQ2FsbGJhY2sgeyAwIH07CisgICAgc3RkOjphdG9taWM8c2l6ZV90PiBtX2NvbXBsZXRlZFJh
bmdlUmVxdWVzdHMgeyAwIH07CisgICAgc3RkOjphdG9taWM8c2l6ZV90PiBtX2NvbXBsZXRlZE5l
dHdvcmtSYW5nZVJlcXVlc3RzIHsgMCB9OwogI2VuZGlmCisKKyNlbmRpZiAvLyBIQVZFKElOQ1JF
TUVOVEFMX1BERl9BUElTKQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA2YWVh
YzkwNTYyZC4uODVlMzg1NGMyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTIsNiArOTIsNyBAQAogI2ltcG9ydCA8d3Rm
L1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9XVEZTZW1hcGhvcmUuaD4KICNpbXBvcnQgPHd0Zi9Xb3Jr
UXVldWUuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIEhBVkUoSU5D
UkVNRU5UQUxfUERGX0FQSVMpCiBAaW50ZXJmYWNlIFBERkRvY3VtZW50ICgpCkBAIC02MzIsMTAg
KzYzMyw3MyBAQCBQREZQbHVnaW46On5QREZQbHVnaW4oKQogfQogCiAjaWYgSEFWRShJTkNSRU1F
TlRBTF9QREZfQVBJUykKKyNpZiAhTE9HX0RJU0FCTEVECit2b2lkIFBERlBsdWdpbjo6cGRmTG9n
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7Cisg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgbWVzc2FnZSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgICAgIHBk
ZkxvZyhtZXNzYWdlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oSW5jcmVtZW50YWxQREYsIHN0cmVhbSA8PCBtZXNzYWdlKTsKKyAg
ICB2ZXJib3NlTG9nKCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKEluY3JlbWVudGFsUERGVmVyYm9z
ZSwgc3RyZWFtIDw8IG1lc3NhZ2UpOworfQorCit2b2lkIFBERlBsdWdpbjo6bG9nU3RyZWFtTG9h
ZGVyKFdURjo6VGV4dFN0cmVhbSYgc3RyZWFtLCBXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciYgbG9hZGVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBh
dXRvKiByZXF1ZXN0ID0gYnl0ZVJhbmdlUmVxdWVzdEZvckxvYWRlcihsb2FkZXIpOworICAgIHN0
cmVhbSA8PCAiKCI7CisgICAgaWYgKCFyZXF1ZXN0KSB7CisgICAgICAgIHN0cmVhbSA8PCAibm8g
cmFuZ2UgcmVxdWVzdCBmb3VuZCkgIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0
cmVhbSA8PCByZXF1ZXN0LT5wb3NpdGlvbigpIDw8ICItIiA8PCByZXF1ZXN0LT5wb3NpdGlvbigp
ICsgcmVxdWVzdC0+Y291bnQoKSAtIDEgPDwgIikgIjsKK30KKwordm9pZCBQREZQbHVnaW46OnZl
cmJvc2VMb2coKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBUZXh0U3Ry
ZWFtIHN0cmVhbTsKKyAgICBzdHJlYW0gPDwgIlxuIjsKKyAgICBpZiAobV9wZGZUaHJlYWQpCisg
ICAgICAgIHN0cmVhbSA8PCAiSW5pdGlhbCBQREYgdGhyZWFkIGlzIHN0aWxsIGluIHByb2dyZXNz
XG4iOworICAgIGVsc2UKKyAgICAgICAgc3RyZWFtIDw8ICJJbml0aWFsIFBERiB0aHJlYWQgaGFz
IGNvbXBsZXRlZFxuIjsKKworICAgIHN0cmVhbSA8PCAiSGF2ZSBjb21wbGV0ZWQgIiA8PCBtX2Nv
bXBsZXRlZFJhbmdlUmVxdWVzdHMgPDwgIiByYW5nZSByZXF1ZXN0cyAoIiA8PCBtX2NvbXBsZXRl
ZE5ldHdvcmtSYW5nZVJlcXVlc3RzIDw8ICIgZnJvbSB0aGUgbmV0d29yaylcbiI7CisgICAgc3Ry
ZWFtIDw8ICJUaGVyZSBhcmUgIiA8PCBtX3RocmVhZHNXYWl0aW5nT25DYWxsYmFjayA8PCAiIGRh
dGEgcHJvdmlkZXIgdGhyZWFkcyB3YWl0aW5nIG9uIGEgcmVwbHlcbiI7CisgICAgc3RyZWFtIDw8
ICJUaGVyZSBhcmUgIiA8PCBtX291dHN0YW5kaW5nQnl0ZVJhbmdlUmVxdWVzdHMuc2l6ZSgpIDw8
ICIgYnl0ZSByYW5nZSByZXF1ZXN0cyBvdXRzdGFuZGluZ1xuIjsKKworICAgIHN0cmVhbSA8PCAi
VGhlcmUgYXJlICIgPDwgbV9zdHJlYW1Mb2FkZXJNYXAuc2l6ZSgpIDw8ICIgYWN0aXZlIG5ldHdv
cmsgc3RyZWFtIGxvYWRlcnM6ICI7CisgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBtX3N0cmVhbUxv
YWRlck1hcC5rZXlzKCkpCisgICAgICAgIGxvZ1N0cmVhbUxvYWRlcihzdHJlYW0sICpsb2FkZXIp
OworICAgIHN0cmVhbSA8PCAiXG4iOworCisgICAgc3RyZWFtIDw8ICJUaGUgbWFpbiBkb2N1bWVu
dCBsb2FkZXIgaGFzIGZpbmlzaGVkIGxvYWRpbmcgIiA8PCBtX3N0cmVhbWVkQnl0ZXMgPDwgIiBi
eXRlcywgYW5kIGlzIjsKKyAgICBpZiAoIW1fZG9jdW1lbnRGaW5pc2hlZExvYWRpbmcpCisgICAg
ICAgIHN0cmVhbSA8PCAiIG5vdCI7CisgICAgc3RyZWFtIDw8ICIgY29tcGxldGUiOworCisgICAg
TE9HKEluY3JlbWVudGFsUERGVmVyYm9zZSwgIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCku
ZGF0YSgpKTsKK30KKyNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECisKIHN0YXRpYyBzaXplX3QgZGF0
YVByb3ZpZGVyR2V0Qnl0ZXNBdFBvc2l0aW9uQ2FsbGJhY2sodm9pZCogaW5mbywgdm9pZCogYnVm
ZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwotICAgIExPRyhQREYsICJQREYgZGF0YSBwcm92aWRlciByZXF1ZXN0aW5nICVs
dSBieXRlcyBhdCBwb3NpdGlvbiAlbGx1IiwgY291bnQsIHBvc2l0aW9uKTsKKworI2lmICFMT0df
RElTQUJMRUQKKyAgICBSZWY8UERGUGx1Z2luPiBkZWJ1Z1BsdWdpblJlZiA9ICooKFBERlBsdWdp
biopaW5mbyk7CisgICAgZGVidWdQbHVnaW5SZWYtPmluY3JlbWVudFRocmVhZHNXYWl0aW5nT25D
YWxsYmFjaygpOworICAgIGRlYnVnUGx1Z2luUmVmLT5wZGZMb2cobWFrZVN0cmluZygiUERGIGRh
dGEgcHJvdmlkZXIgcmVxdWVzdGluZyAiLCBjb3VudCwgIiBieXRlcyBhdCBwb3NpdGlvbiAiLCBw
b3NpdGlvbikpOworI2VuZGlmCiAKICAgICBSZWY8UERGUGx1Z2luPiBwbHVnaW4gPSAqKChQREZQ
bHVnaW4qKWluZm8pOwogICAgIFdURjo6U2VtYXBob3JlIGRhdGFTZW1hcGhvcmUgeyAwIH07CkBA
IC02NTEsNiArNzE1LDEyIEBAIHN0YXRpYyBzaXplX3QgZGF0YVByb3ZpZGVyR2V0Qnl0ZXNBdFBv
c2l0aW9uQ2FsbGJhY2sodm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvCiAgICAgfSk7CiAKICAg
ICBkYXRhU2VtYXBob3JlLndhaXQoKTsKKworI2lmICFMT0dfRElTQUJMRUQKKyAgICBkZWJ1Z1Bs
dWdpblJlZi0+ZGVjcmVtZW50VGhyZWFkc1dhaXRpbmdPbkNhbGxiYWNrKCk7CisgICAgZGVidWdQ
bHVnaW5SZWYtPnBkZkxvZyhtYWtlU3RyaW5nKCJQREYgZGF0YSBwcm92aWRlciByZWNlaXZlZCAi
LCBieXRlc1Byb3ZpZGVkLCAiIGJ5dGVzIG9mIHJlcXVlc3RlZCAiLCBjb3VudCkpOworI2VuZGlm
CisKICAgICByZXR1cm4gYnl0ZXNQcm92aWRlZDsKIH0KIApAQCAtNjU4LDcgKzcyOCw5IEBAIHN0
YXRpYyB2b2lkIGRhdGFQcm92aWRlckdldEJ5dGVSYW5nZXNDYWxsYmFjayh2b2lkKiBpbmZvLCBD
Rk11dGFibGVBcnJheVJlZiBidWZmCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAK
LSNpZm5kZWYgTkRFQlVHCisjaWYgIUxPR19ESVNBQkxFRAorICAgIFJlZjxQREZQbHVnaW4+IGRl
YnVnUGx1Z2luUmVmID0gKigoUERGUGx1Z2luKilpbmZvKTsKKyAgICBkZWJ1Z1BsdWdpblJlZi0+
aW5jcmVtZW50VGhyZWFkc1dhaXRpbmdPbkNhbGxiYWNrKCk7CiAgICAgVGV4dFN0cmVhbSBzdHJl
YW07CiAgICAgc3RyZWFtIDw8ICJQREYgZGF0YSBwcm92aWRlciByZXF1ZXN0aW5nICIgPDwgY291
bnQgPDwgIiBieXRlIHJhbmdlcyAoIjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKQEAgLTY2Nyw3ICs3MzksNyBAQCBzdGF0aWMgdm9pZCBkYXRhUHJvdmlkZXJHZXRC
eXRlUmFuZ2VzQ2FsbGJhY2sodm9pZCogaW5mbywgQ0ZNdXRhYmxlQXJyYXlSZWYgYnVmZgogICAg
ICAgICAgICAgc3RyZWFtIDw8ICIsICI7CiAgICAgfQogICAgIHN0cmVhbSA8PCAiKSI7Ci0gICAg
TE9HKFBERiwgIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBkZWJ1
Z1BsdWdpblJlZi0+cGRmTG9nKHN0cmVhbS5yZWxlYXNlKCkpOwogI2VuZGlmCiAKICAgICBSZWY8
UERGUGx1Z2luPiBwbHVnaW4gPSAqKChQREZQbHVnaW4qKWluZm8pOwpAQCAtNjg3LDYgKzc1OSwx
MSBAQCBzdGF0aWMgdm9pZCBkYXRhUHJvdmlkZXJHZXRCeXRlUmFuZ2VzQ2FsbGJhY2sodm9pZCog
aW5mbywgQ0ZNdXRhYmxlQXJyYXlSZWYgYnVmZgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkKICAgICAgICAgZGF0YVNlbWFwaG9yZS53YWl0KCk7CiAKKyNpZiAhTE9HX0RJ
U0FCTEVECisgICAgZGVidWdQbHVnaW5SZWYtPmRlY3JlbWVudFRocmVhZHNXYWl0aW5nT25DYWxs
YmFjaygpOworICAgIGRlYnVnUGx1Z2luUmVmLT5wZGZMb2cobWFrZVN0cmluZygiUERGIGRhdGEg
cHJvdmlkZXIgZmluaXNoZWQgcmVjZWl2aW5nIHRoZSByZXF1ZXN0ZWQgIiwgY291bnQsICIgYnl0
ZSByYW5nZXMiKSk7CisjZW5kaWYKKwogICAgIGZvciAoYXV0byYgcmVzdWx0IDogZGF0YVJlc3Vs
dHMpIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAwKSk7CkBAIC03MjgsNiArODA1
LDggQEAgdm9pZCBQREZQbHVnaW46OnRocmVhZEVudHJ5KFJlZjxQREZQbHVnaW4+JiYgcHJvdGVj
dGVkUGx1Z2luKQogCiAgICAgZmlyc3RQYWdlU2VtYXBob3JlLndhaXQoKTsKIAorICAgIHBkZkxv
ZygiRmluaW5pc2hlZCBwcmVsb2FkaW5nIGZpcnN0IHBhZ2UiKTsKKwogICAgIC8vIFRoZSBtYWlu
IHRocmVhZCBkaXNwYXRjaCBiZWxvdyByZW1vdmVzIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUg
UERGIHRocmVhZC4KICAgICAvLyBJdCBtdXN0IGJlIHRoZSBsYXN0IGNvZGUgZXhlY3V0ZWQgaW4g
dGhpcyBmdW5jdGlvbi4KICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRQbHVnaW4gPSBX
VEZNb3ZlKHByb3RlY3RlZFBsdWdpbildIHsgfSk7CkBAIC03NjksNyArODQ4LDkgQEAgdm9pZCBQ
REZQbHVnaW46OmdldFJlc291cmNlQnl0ZXNBdFBvc2l0aW9uKHNpemVfdCBjb3VudCwgb2ZmX3Qg
cG9zaXRpb24sIENvbXBsZXQKICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpSYW5nZSwgbWFrZVN0cmluZygiYnl0ZXM9Il9zLCBwb3NpdGlvbiwg
Ii0iX3MsIHBvc2l0aW9uICsgY291bnQgLSAxKSk7CiAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldENh
Y2hlUG9saWN5KFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpEb05vdFVzZUFueUNhY2hlKTsK
IAotICAgIExPRyhQREYsICJTY2hlZHVsaW5nIGEgc3RyZWFtIGxvYWRlciBmb3IgcmVxdWVzdCAl
bGx1ICglbHUgYnl0ZXMgYXQgJWxsdSlcbiIsIGlkZW50aWZpZXIsIGNvdW50LCBwb3NpdGlvbik7
CisjaWYgIUxPR19ESVNBQkxFRAorICAgIHBkZkxvZyhtYWtlU3RyaW5nKCJTY2hlZHVsaW5nIGEg
c3RyZWFtIGxvYWRlciBmb3IgcmVxdWVzdCAiLCBpZGVudGlmaWVyLCAiICgiLCBjb3VudCwgIiBi
eXRlcyBhdCAiLCBwb3NpdGlvbiwgIikiKSk7CisjZW5kaWYKIAogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKCpj
b3JlRnJhbWUsICp0aGlzLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXJdIChSZWZQdHI8V2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+JiYgbG9hZGVyKSB7CiAgICAgICAgIGF1dG8gaXRlcmF0
b3IgPSBtX291dHN0YW5kaW5nQnl0ZVJhbmdlUmVxdWVzdHMuZmluZChpZGVudGlmaWVyKTsKQEAg
LTc4MCw3ICs4NjEsMTAgQEAgdm9pZCBQREZQbHVnaW46OmdldFJlc291cmNlQnl0ZXNBdFBvc2l0
aW9uKHNpemVfdCBjb3VudCwgb2ZmX3QgcG9zaXRpb24sIENvbXBsZXQKIAogICAgICAgICBpdGVy
YXRvci0+dmFsdWUuc2V0U3RyZWFtTG9hZGVyKGxvYWRlci5nZXQoKSk7CiAgICAgICAgIG1fc3Ry
ZWFtTG9hZGVyTWFwLnNldChXVEZNb3ZlKGxvYWRlciksIGlkZW50aWZpZXIpOwotICAgICAgICBM
T0coUERGLCAiVGhlcmUgYXJlIG5vdyAldSBzdHJlYW0gbG9hZGVycyBpbiBmbGlnaHQiLCBtX3N0
cmVhbUxvYWRlck1hcC5zaXplKCkpOworCisjaWYgIUxPR19ESVNBQkxFRAorICAgICAgICBwZGZM
b2cobWFrZVN0cmluZygiVGhlcmUgYXJlIG5vdyAiLCBtX3N0cmVhbUxvYWRlck1hcC5zaXplKCks
ICIgc3RyZWFtIGxvYWRlcnMgaW4gZmxpZ2h0IikpOworI2VuZGlmCiAgICAgfSk7CiB9CiAKQEAg
LTc5MCw2ICs4NzQsMTAgQEAgdm9pZCBQREZQbHVnaW46OmFkb3B0QmFja2dyb3VuZFRocmVhZERv
Y3VtZW50KCkKICAgICBBU1NFUlQobV9iYWNrZ3JvdW5kVGhyZWFkRG9jdW1lbnQpOwogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgcGRmTG9nKCJB
ZG9wdGluZyBQREZEb2N1bWVudCBmcm9tIGJhY2tncm91bmQgdGhyZWFkIik7CisjZW5kaWYKKwog
ICAgIG1fcGRmRG9jdW1lbnQgPSBXVEZNb3ZlKG1fYmFja2dyb3VuZFRocmVhZERvY3VtZW50KTsK
IAogICAgIC8vIElmIHRoZSBwbHVnaW4gd2FzIG1hbnVhbGx5IGRlc3Ryb3llZCwgdGhlIG1fcGRm
VGhyZWFkIG1pZ2h0IGFscmVhZHkgYmUgZ29uZS4KQEAgLTgxNCw3ICs5MDIsMTAgQEAgdm9pZCBQ
REZQbHVnaW46OkJ5dGVSYW5nZVJlcXVlc3Q6OmNsZWFyU3RyZWFtTG9hZGVyKCkKIAogdm9pZCBQ
REZQbHVnaW46OkJ5dGVSYW5nZVJlcXVlc3Q6OmNvbXBsZXRlV2l0aEJ5dGVzKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBjb3VudCwgUERGUGx1Z2luJiBwbHVnaW4pCiB7Ci0gICAgTE9HKFBE
RiwgIkNvbXBsZXRpbmcgcmFuZ2UgcmVxdWVzdCAlbGx1ICglbHUgYnl0ZXMgYXQgJWxsdSkgd2l0
aCAlbHUgYnl0ZXMgZnJvbSB0aGUgbWFpbiBQREYgYnVmZmVyIiwgaWRlbnRpZmllcigpLCBtX2Nv
dW50LCBtX3Bvc2l0aW9uLCBjb3VudCk7CisjaWYgIUxPR19ESVNBQkxFRAorICAgICsrcGx1Z2lu
Lm1fY29tcGxldGVkUmFuZ2VSZXF1ZXN0czsKKyAgICBwbHVnaW4ucGRmTG9nKG1ha2VTdHJpbmco
IkNvbXBsZXRpbmcgcmFuZ2UgcmVxdWVzdCAiLCBpZGVudGlmaWVyKCksIiAoIiwgbV9jb3VudCwi
IGJ5dGVzIGF0ICIsIG1fcG9zaXRpb24sIikgd2l0aCAiLCBjb3VudCwiIGJ5dGVzIGZyb20gdGhl
IG1haW4gUERGIGJ1ZmZlciIpKTsKKyNlbmRpZgogICAgIG1fY29tcGxldGlvbkhhbmRsZXIoZGF0
YSwgY291bnQpOwogCiAgICAgaWYgKG1fc3RyZWFtTG9hZGVyKQpAQCAtODIzLDcgKzkxNCwxMiBA
QCB2b2lkIFBERlBsdWdpbjo6Qnl0ZVJhbmdlUmVxdWVzdDo6Y29tcGxldGVXaXRoQnl0ZXMoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90CiAKIHZvaWQgUERGUGx1Z2luOjpCeXRlUmFuZ2VSZXF1
ZXN0Ojpjb21wbGV0ZVdpdGhBY2N1bXVsYXRlZERhdGEoUERGUGx1Z2luJiBwbHVnaW4pCiB7Ci0g
ICAgTE9HKFBERiwgIkNvbXBsZXRpbmcgcmFuZ2UgcmVxdWVzdCAlbGx1ICglbHUgYnl0ZXMgYXQg
JWxsdSkgd2l0aCAlbHUgYnl0ZXMgZnJvbSB0aGUgbmV0d29yayIsIGlkZW50aWZpZXIoKSwgbV9j
b3VudCwgbV9wb3NpdGlvbiwgbV9hY2N1bXVsYXRlZERhdGEuc2l6ZSgpKTsKKyNpZiAhTE9HX0RJ
U0FCTEVECisgICAgKytwbHVnaW4ubV9jb21wbGV0ZWRSYW5nZVJlcXVlc3RzOworICAgICsrcGx1
Z2luLm1fY29tcGxldGVkTmV0d29ya1JhbmdlUmVxdWVzdHM7CisgICAgcGx1Z2luLnBkZkxvZyht
YWtlU3RyaW5nKCJDb21wbGV0aW5nIHJhbmdlIHJlcXVlc3QgIiwgaWRlbnRpZmllcigpLCIgKCIs
IG1fY291bnQsIiBieXRlcyBhdCAiLCBtX3Bvc2l0aW9uLCIpIHdpdGggIiwgbV9hY2N1bXVsYXRl
ZERhdGEuc2l6ZSgpLCIgYnl0ZXMgZnJvbSB0aGUgbmV0d29yayIpKTsKKyNlbmRpZgorCiAgICAg
bV9jb21wbGV0aW9uSGFuZGxlcihtX2FjY3VtdWxhdGVkRGF0YS5kYXRhKCksIG1fYWNjdW11bGF0
ZWREYXRhLnNpemUoKSk7CiAgICAgCiAgICAgaWYgKG1fc3RyZWFtTG9hZGVyKQpAQCAtODUyLDcg
Kzk0OCw3IEBAIGJvb2wgUERGUGx1Z2luOjpCeXRlUmFuZ2VSZXF1ZXN0OjptYXliZUNvbXBsZXRl
KFBERlBsdWdpbiYgcGx1Z2luKQogICAgIH0KIAogICAgIGlmIChwbHVnaW4ubV9jb21wbGV0ZWRS
YW5nZXMuY29udGFpbnMoeyBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9jb3VudCAtIDEgfSkp
IHsKLSAgICAgICAgTE9HKFBERiwgIkNvbXBsZXRpbmcgcmVxdWVzdCAlbGx1IHdpdGggYSBwcmV2
aW91c2x5IGNvbXBsZXRlZCByYW5nZSIsIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHBsdWdpbi5w
ZGZMb2cobWFrZVN0cmluZygiQ29tcGxldGluZyByZXF1ZXN0ICVsbHUgd2l0aCBhIHByZXZpb3Vz
bHkgY29tcGxldGVkIHJhbmdlIiwgaWRlbnRpZmllcigpKSk7CiAgICAgICAgIGNvbXBsZXRlV2l0
aEJ5dGVzKENGRGF0YUdldEJ5dGVQdHIocGx1Z2luLm1fZGF0YS5nZXQoKSkgKyBtX3Bvc2l0aW9u
LCBtX2NvdW50LCBwbHVnaW4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC05NjUs
NyArMTA2MSw5IEBAIHZvaWQgUERGUGx1Z2luOjpmb3JnZXRMb2FkZXIoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXImIGxvYWRlcikKIAogICAgIG1fc3RyZWFtTG9hZGVyTWFwLnJlbW92ZSgmbG9h
ZGVyKTsKIAotICAgIExPRyhQREYsICJGb3Jnb3Qgc3RyZWFtIGxvYWRlciBmb3IgcmFuZ2UgcmVx
dWVzdCAlbGx1LlxuVGhlcmUgYXJlIG5vdyAldSBzdHJlYW0gbG9hZGVycyByZW1haW5pbmcuIiwg
aWRlbnRpZmllciwgbV9zdHJlYW1Mb2FkZXJNYXAuc2l6ZSgpKTsKKyNpZiAhTE9HX0RJU0FCTEVE
CisgICAgcGRmTG9nKG1ha2VTdHJpbmcoIkZvcmdvdCBzdHJlYW0gbG9hZGVyIGZvciByYW5nZSBy
ZXF1ZXN0ICIsIGlkZW50aWZpZXIsIi4gVGhlcmUgYXJlIG5vdyAiLCBtX3N0cmVhbUxvYWRlck1h
cC5zaXplKCksIiBzdHJlYW0gbG9hZGVycyByZW1haW5pbmciKSk7CisjZW5kaWYKIH0KIAogdm9p
ZCBQREZQbHVnaW46OmNhbmNlbEFuZEZvcmdldExvYWRlcihOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciYgbG9hZGVyKQpAQCAtMTMwNywxMyArMTQwNSwxNCBAQCB2b2lkIFBERlBsdWdpbjo6Y29u
dmVydFBvc3RTY3JpcHREYXRhSWZOZWVkZWQoKQogCiB2b2lkIFBERlBsdWdpbjo6cGRmRG9jdW1l
bnREaWRMb2FkKCkKIHsKLSAgICBMT0coUERGLCAiUERGIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRp
bmcgd2l0aCBhIHRvdGFsIG9mICVsbHUgYnl0ZXMiLCBtX3N0cmVhbWVkQnl0ZXMpOwotCiAgICAg
YWRkQXJjaGl2ZVJlc291cmNlKCk7CiAKICAgICBtX2RvY3VtZW50RmluaXNoZWRMb2FkaW5nID0g
dHJ1ZTsKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCisjaWYgIUxPR19ESVNBQkxF
RAorICAgIHBkZkxvZyhtYWtlU3RyaW5nKCJQREYgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZyB3
aXRoIGEgdG90YWwgb2YgJWxsdSBieXRlcyIsIG1fc3RyZWFtZWRCeXRlcykpOworI2VuZGlmCiAg
ICAgaWYgKG1faW5jcmVtZW50YWxQREZMb2FkaW5nRW5hYmxlZCkgewogICAgICAgICAvLyBBdCB0
aGlzIHBvaW50IHdlIGtub3cgYWxsIGRhdGEgZm9yIHRoZSBkb2N1bWVudCwgYW5kIHRoZXJlZm9y
ZSB3ZSBrbm93IGhvdyB0byBhbnN3ZXIgYW55IG91dHN0YW5kaW5nIHJhbmdlIHJlcXVlc3RzLgog
ICAgICAgICB1bmNvbmRpdGlvbmFsQ29tcGxldGVPdXRzdGFuZGluZ1JhbmdlUmVxdWVzdHMoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>