<?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>235269</bug_id>
          
          <creation_ts>2022-01-15 12:17:39 -0800</creation_ts>
          <short_desc>Canvas functions that take colors as strings don&apos;t support all the syntax that CSS supports</short_desc>
          <delta_ts>2022-01-18 12:02:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1831228</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-15 12:17:39 -0800</bug_when>
    <thetext>Canvas functions that take colors as strings don&apos;t support all the syntax that CSS supports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831232</commentid>
    <comment_count>1</comment_count>
      <attachid>449264</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-15 12:30:11 -0800</bug_when>
    <thetext>Created attachment 449264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831256</commentid>
    <comment_count>2</comment_count>
      <attachid>449264</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-15 14:20:08 -0800</bug_when>
    <thetext>Comment on attachment 449264
Patch

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

r=me assuming you resolve the failing tests

&gt; Source/WebCore/css/parser/CSSParser.cpp:97
&gt; +Color CSSParser::parseColor(const String&amp; string, const CSSParserContext&amp; context)

Not new, but occurs to me I should ask: Is it valuable to have this take const String&amp; rather than StringView? Could be helpful if:

1) it has to call functions that take String or AtomicString
2) it needs to store a copy of the string
3) it needs to compute the hash of the string

But logically it would be better to take StringView.

&gt; Source/WebCore/html/canvas/CanvasStyle.cpp:65
&gt; +    Color color;
&gt; +    if (is&lt;HTMLCanvasElement&gt;(canvasBase))
&gt; +        color = CSSParser::parseColor(colorString, CSSParserContext { downcast&lt;HTMLCanvasElement&gt;(canvasBase).document() });
&gt; +    else
&gt; +        color = CSSParser::parseColor(colorString);

This makes me think parseColor should take a std::optional&lt;CSSParserContext&gt;. That would let us encapsulate the rule that helps us find the appropriate context in a function instead of writing out an if here interspersed with the parseColor function call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831287</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-15 19:59:37 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 449264 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=449264&amp;action=review
&gt; 
&gt; r=me assuming you resolve the failing tests
&gt; 
&gt; &gt; Source/WebCore/css/parser/CSSParser.cpp:97
&gt; &gt; +Color CSSParser::parseColor(const String&amp; string, const CSSParserContext&amp; context)
&gt; 
&gt; Not new, but occurs to me I should ask: Is it valuable to have this take
&gt; const String&amp; rather than StringView? Could be helpful if:
&gt; 
&gt; 1) it has to call functions that take String or AtomicString
&gt; 2) it needs to store a copy of the string
&gt; 3) it needs to compute the hash of the string
&gt; 
&gt; But logically it would be better to take StringView.

I had the same thought, in this case it is #1. parseSingleValue() takes a const String&amp;, and it takes one because the CSSTokenizer constructor takes one. I would hope we could figure out a way to remove the requirement that the CSSTokenizer take one (it does some string mutation shenanigans on a copy) but I didn&apos;t really go any farther than this.
 

&gt; 
&gt; &gt; Source/WebCore/html/canvas/CanvasStyle.cpp:65
&gt; &gt; +    Color color;
&gt; &gt; +    if (is&lt;HTMLCanvasElement&gt;(canvasBase))
&gt; &gt; +        color = CSSParser::parseColor(colorString, CSSParserContext { downcast&lt;HTMLCanvasElement&gt;(canvasBase).document() });
&gt; &gt; +    else
&gt; &gt; +        color = CSSParser::parseColor(colorString);
&gt; 
&gt; This makes me think parseColor should take a
&gt; std::optional&lt;CSSParserContext&gt;. That would let us encapsulate the rule that
&gt; helps us find the appropriate context in a function instead of writing out
&gt; an if here interspersed with the parseColor function call.

I don&apos;t think we should ever call the one without a context, and was considering renaming it to something like deprecatedParseColor() to make it clear (and to help find the call sites).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831311</commentid>
    <comment_count>4</comment_count>
      <attachid>449284</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-16 11:18:08 -0800</bug_when>
    <thetext>Created attachment 449284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831315</commentid>
    <comment_count>5</comment_count>
      <attachid>449284</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-16 11:44:25 -0800</bug_when>
    <thetext>Comment on attachment 449284
Patch

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

&gt; Source/WebCore/css/parser/CSSParser.h:92
&gt; +    // FIXME: All callers are not getting the right Settings for parsing due to lack of CSSParserContext and should switch to the function above.

Does it make the patch too big to rename the function below deprecatedParseColor or parseColorWithoutContext at the same time as we introduce the new function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831511</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-17 09:49:14 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 449284 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=449284&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/parser/CSSParser.h:92
&gt; &gt; +    // FIXME: All callers are not getting the right Settings for parsing due to lack of CSSParserContext and should switch to the function above.
&gt; 
&gt; Does it make the patch too big to rename the function below
&gt; deprecatedParseColor or parseColorWithoutContext at the same time as we
&gt; introduce the new function?

Nah, not too big. That seems like a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831606</commentid>
    <comment_count>7</comment_count>
      <attachid>449361</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2022-01-17 18:57:00 -0800</bug_when>
    <thetext>Created attachment 449361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831759</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-18 12:01:03 -0800</bug_when>
    <thetext>Committed r288134 (246141@main): &lt;https://commits.webkit.org/246141@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449361.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831761</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-18 12:02:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/87727545&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449264</attachid>
            <date>2022-01-15 12:30:11 -0800</date>
            <delta_ts>2022-01-16 11:18:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>canvasColor.diff</filename>
            <type>text/plain</type>
            <size>7984</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4ODA2MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDIyLTAxLTE1ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDYW52YXMgZnVuY3Rpb25zIHRoYXQg
dGFrZSBjb2xvcnMgYXMgc3RyaW5ncyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgc3ludGF4IHRoYXQg
Q1NTIHN1cHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzUyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jb2xvci1zZXR0aW5ncy5odG1sCisKKyAgICAgICAgQWRk
IGEgdmFyaWFudCBvZiBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoKSB0aGF0IHRha2VzIGEgQ1NTUGFy
c2VyQ29udGV4dAorICAgICAgICBhbmQgdXNlIGl0IChhbmQgcGFyc2VyIGNvbnRleHQgY3JlYXRl
ZCBmcm9tIGEgZG9jdW1lbnQpIHRvIGdldCB0aGUgcGFyc2VyCisgICAgICAgIHRvIHJlc3BlY3Qg
dGhlIHNldHRpbmdzLgorCisgICAgICAgIE9mZnNjcmVlbiBjYW52YXMgYW5kIGN1c3RvbSBwYWlu
dCBjYW52YXMgYXJlIHVzaW5nIHRoZSBvbGQgcGF0aCB3aXRoIGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzIzNTI3MAorICAgICAgICB0cmFja2luZyBmaW5kaW5nIGEgc29sdXRpb24gZm9yIHRoZW0uCisK
KyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlQ29sb3IpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VDb2xvcik6CisKIDIwMjItMDEtMTUgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3JlbmRlcmluZy9kaW1lbnNp
b24tYXR0cmlidXRlcy5odG1sIGlzIGZhaWxpbmcgd2hlbiB0YWJsZSB3aWR0aCBpcyBzZXQgdG8g
MHB4CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCShyZXZpc2lv
biAyODgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDIwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVN1cHBv
cnRzQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYgYwogICAgIHJldHVybiBDU1NTdXBwb3J0c1BhcnNl
cjo6c3VwcG9ydHNDb25kaXRpb24ocGFyc2VyLnRva2VuaXplcigpLT50b2tlblJhbmdlKCksIHBh
cnNlciwgQ1NTU3VwcG9ydHNQYXJzZXI6OkZvcldpbmRvd0NTUykgPT0gQ1NTU3VwcG9ydHNQYXJz
ZXI6OlN1cHBvcnRlZDsKIH0KIAorQ29sb3IgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQoreworICAgIGJv
b2wgc3RyaWN0ID0gIWlzUXVpcmtzTW9kZUJlaGF2aW9yKGNvbnRleHQubW9kZSk7CisgICAgaWYg
KGF1dG8gY29sb3IgPSBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlU2ltcGxlQ29sb3Ioc3RyaW5n
LCBzdHJpY3QpKQorICAgICAgICByZXR1cm4gKmNvbG9yOworICAgIGF1dG8gdmFsdWUgPSBwYXJz
ZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5Q29sb3IsIHN0cmluZywgY29udGV4dCk7CisgICAgaWYg
KCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQorICAgICAgICByZXR1cm4geyB9OworICAg
IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1
ZSk7CisgICAgaWYgKCFwcmltaXRpdmVWYWx1ZS5pc1JHQkNvbG9yKCkpCisgICAgICAgIHJldHVy
biB7IH07CisgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLmNvbG9yKCk7Cit9CisKIENvbG9yIENT
U1BhcnNlcjo6cGFyc2VDb2xvcihjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdHJpY3QpCiB7
CiAgICAgaWYgKGF1dG8gY29sb3IgPSBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlU2ltcGxlQ29s
b3Ioc3RyaW5nLCBzdHJpY3QpKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ci5oCShyZXZpc2lvbiAyODgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw4IEBAIGNsYXNzIENTU1BhcnNlciB7
IChwdWJsaWMpCiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlVmFsdWVXaXRoVmFyaWFibGVS
ZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1ZhbHVlJiwgU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29u
c3QgU3RyaW5nJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOworICAgIC8vIEZJWE1FOiBBbGwg
Y2FsbGVycyBhcmUgbm90IGdldHRpbmcgdGhlIHJpZ2h0IFNldHRpbmdzIGZvciBwYXJzaW5nIGR1
ZSB0byBsYWNrIG9mIENTU1BhcnNlckNvbnRleHQgYW5kIHNob3VsZCBzd2l0Y2ggdG8gdGhlIGZ1
bmN0aW9uIGFib3ZlLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDb2xvciBwYXJzZUNvbG9y
KGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0gZmFsc2UpOwogICAgIHN0YXRpYyBDb2xvciBw
YXJzZVN5c3RlbUNvbG9yKFN0cmluZ1ZpZXcpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNS
R0JBPHVpbnQ4X3Q+PiBwYXJzZU5hbWVkQ29sb3IoU3RyaW5nVmlldyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCShyZXZpc2lvbiAyODgwMTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDEwICs0NCw2IEBACiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCiAjZW5k
aWYKIAotI2lmIFVTRShDRykKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb250ZXh0Lmg+Ci0j
ZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIGlzQ3VycmVudENvbG9yU3RyaW5n
KGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCkBAIC01OCwxMiArNTQsMTYgQEAgYm9vbCBpc0N1
cnJlbnRDb2xvclN0cmluZyhjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nKQogQ29sb3IgcGFyc2VD
b2xvcihjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBDYW52YXNCYXNlJiBjYW52YXNCYXNlKQog
ewogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQotICAgIGlmIChjYW52YXNCYXNlLmlzT2Zm
c2NyZWVuQ2FudmFzKCkpCisgICAgaWYgKGlzPE9mZnNjcmVlbkNhbnZhcz4oY2FudmFzQmFzZSkp
CiAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmU6OnBhcnNlQ29sb3Io
Y29sb3JTdHJpbmcpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2FudmFzQmFzZSk7CiAjZW5k
aWYKLSAgICBDb2xvciBjb2xvciA9IENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xvclN0cmluZyk7
CisKKyAgICBDb2xvciBjb2xvcjsKKyAgICBpZiAoaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZh
c0Jhc2UpKQorICAgICAgICBjb2xvciA9IENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xvclN0cmlu
ZywgQ1NTUGFyc2VyQ29udGV4dCB7IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNC
YXNlKS5kb2N1bWVudCgpIH0pOworICAgIGVsc2UKKyAgICAgICAgY29sb3IgPSBDU1NQYXJzZXI6
OnBhcnNlQ29sb3IoY29sb3JTdHJpbmcpOworCiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuIGNvbG9yOwogICAgIHJldHVybiBDU1NQYXJzZXI6OnBhcnNlU3lzdGVtQ29s
b3IoY29sb3JTdHJpbmcpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4MDYxKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMTUg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIENhbnZhcyBmdW5jdGlv
bnMgdGhhdCB0YWtlIGNvbG9ycyBhcyBzdHJpbmdzIGRvbid0IHN1cHBvcnQgYWxsIHRoZSBzeW50
YXggdGhhdCBDU1Mgc3VwcG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCB0ZXN0IHRoYXQgY2hlY2tzIHRoYXQgdmFyaW91cyBjb2xvciBwYXJz
aW5nIGZlYXR1cmVzIHdvcmsgd2hlbiB0aGVpciBzZXR0aW5ncworICAgICAgICBhcmUgZW5hYmxl
ZCBhbmQgYXJlIGRpc2FibGVkIHdoZW4gdGhlaXIgc2V0dGluZ3MgYXJlIGRpc2FibGVkLgorCisg
ICAgICAgICogZmFzdC9jYW52YXMvY29sb3Itc2V0dGluZ3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2NhbnZhcy9jb2xvci1zZXR0aW5ncy5odG1sOiBBZGRlZC4KKwogMjAy
Mi0wMS0xNSAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFY
OiBGaXggZGlzYWJsZWQtY29udHJvbHMtbm90LWZvY3VzYWJsZS5odG1sIGluIGlzb2xhdGVkIHRy
ZWUgbW9kZSBieSB1cGRhdGluZyBBWFByb3BlcnR5TmFtZTo6Q2FuU2V0Rm9jdXNBdHRyaWJ1dGUg
d2hlbiB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIGNoYW5nZXMKSW5kZXg6IExheW91dFRlc3RzL2Nz
czMvY29sb3IvZ3JhZGllbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvY3NzMy9j
b2xvci9ncmFkaWVudHMuaHRtbAkocmV2aXNpb24gMjg4MDE4KQorKysgTGF5b3V0VGVzdHMvY3Nz
My9jb2xvci9ncmFkaWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksMTIgKzE5LDEyIEBA
IGJvZHkgewogCiA8YnI+CiAKLTxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IGxp
bmVhci1ncmFkaWVudChjb2xvcihzcmdiIDEgMCAwKSwgYmx1ZSk7Ij48L2Rpdj4KKzxkaXYgY2xh
c3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChpbiBzcmdiLCBjb2xv
cihzcmdiIDEgMCAwKSwgYmx1ZSk7Ij48L2Rpdj4KIDwhLS0gRmxvYXRpbmcgcG9pbnQgcm91bmRp
bmcgbWVhbnMgd2UgY2FuJ3QgdXNlIHRoaXMgaW4gYSByZWYgdGVzdCB3aXRob3V0IHNvbWUgdG9s
ZXJhbmNlIC0tPgotPCEtLSA8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kOiBsaW5l
YXItZ3JhZGllbnQocmVkLCBjb2xvcihzcmdiIDAgMCAxIC8gMC41KSk7Ij48L2Rpdj4gLS0+Ci08
ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQocmVkLCBj
b2xvcihzcmdiIDAgMCAxKSwgZ3JlZW4sIGNvbG9yKHNyZ2IgMCAxIDEpKTsiPjwvZGl2PgotPGRp
diBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRv
bSByaWdodCwgY29sb3Ioc3JnYiAxIDAgMCksIGNvbG9yKHNyZ2IgMCAwIDEpKTsiPjwvZGl2Pgot
PGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJv
dHRvbSBsZWZ0LCBjb2xvcihzcmdiIDEgMCAwIC8gMC42KSwgY29sb3Ioc3JnYiAwIDAgMSAvIDAu
NikpOyI+PC9kaXY+Cis8IS0tIDxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IGxp
bmVhci1ncmFkaWVudChpbiBzcmdiLCByZWQsIGNvbG9yKHNyZ2IgMCAwIDEgLyAwLjUpKTsiPjwv
ZGl2PiAtLT4KKzxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFk
aWVudChpbiBzcmdiLCByZWQsIGNvbG9yKHNyZ2IgMCAwIDEpLCBncmVlbiwgY29sb3Ioc3JnYiAw
IDEgMSkpOyI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kOiBsaW5l
YXItZ3JhZGllbnQoaW4gc3JnYiB0byBib3R0b20gcmlnaHQsIGNvbG9yKHNyZ2IgMSAwIDApLCBj
b2xvcihzcmdiIDAgMCAxKSk7Ij48L2Rpdj4KKzxkaXYgY2xhc3M9ImJveCIgc3R5bGU9ImJhY2tn
cm91bmQ6IGxpbmVhci1ncmFkaWVudChpbiBzcmdiIHRvIGJvdHRvbSBsZWZ0LCBjb2xvcihzcmdi
IDEgMCAwIC8gMC42KSwgY29sb3Ioc3JnYiAwIDAgMSAvIDAuNikpOyI+PC9kaXY+CiAKIDxicj4K
IApAQCAtMzgsOSArMzgsOSBAQCBib2R5IHsKIAogPGJyPgogCi08ZGl2IGNsYXNzPSJib3giIHN0
eWxlPSJiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY29sb3Ioc3JnYiAwIDAuNSAwKSwgY29s
b3Ioc3JnYiAxIDEgMCkpOyI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJib3giIHN0eWxlPSJiYWNrZ3Jv
dW5kOiByYWRpYWwtZ3JhZGllbnQoaW4gc3JnYiwgY29sb3Ioc3JnYiAwIDAuNSAwKSwgY29sb3Io
c3JnYiAxIDEgMCkpOyI+PC9kaXY+CiA8IS0tIEZsb2F0aW5nIHBvaW50IHJvdW5kaW5nIG1lYW5z
IHdlIGNhbid0IHVzZSB0aGlzIGluIGEgcmVmIHRlc3Qgd2l0aG91dCBzb21lIHRvbGVyYW5jZSAt
LT4KLTwhLS0gPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZDogcmFkaWFsLWdyYWRp
ZW50KG9yYW5nZSwgY29sb3Ioc3JnYiAwIDAgMSAvIDAuNSkpOyI+PC9kaXY+IC0tPgotPGRpdiBj
bGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KHJlZCwgY29sb3Io
c3JnYiAwIDAgMSksIGdyZWVuLCBjb2xvcihzcmdiIDAgMSAxKSk7Ij48L2Rpdj4KKzwhLS0gPGRp
diBjbGFzcz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGluIHNyZ2Is
IG9yYW5nZSwgY29sb3Ioc3JnYiAwIDAgMSAvIDAuNSkpOyI+PC9kaXY+IC0tPgorPGRpdiBjbGFz
cz0iYm94IiBzdHlsZT0iYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGluIHNyZ2IsIHJlZCwg
Y29sb3Ioc3JnYiAwIDAgMSksIGdyZWVuLCBjb2xvcihzcmdiIDAgMSAxKSk7Ij48L2Rpdj4KIDwh
LS0gRmxvYXRpbmcgcG9pbnQgcm91bmRpbmcgbWVhbnMgd2UgY2FuJ3QgdXNlIHRoaXMgaW4gYSBy
ZWYgdGVzdCB3aXRob3V0IHNvbWUgdG9sZXJhbmNlIC0tPgotPCEtLSA8ZGl2IGNsYXNzPSJib3gi
IHN0eWxlPSJiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IHRvcCByaWdodCwg
b3JhbmdlLCBjb2xvcihzcmdiIDAuNSAwIDAuNSkpOyI+PC9kaXY+IC0tPgorPCEtLSA8ZGl2IGNs
YXNzPSJib3giIHN0eWxlPSJiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoaW4gc3JnYiBjaXJj
bGUgYXQgdG9wIHJpZ2h0LCBvcmFuZ2UsIGNvbG9yKHNyZ2IgMC41IDAgMC41KSk7Ij48L2Rpdj4g
LS0+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449284</attachid>
            <date>2022-01-16 11:18:08 -0800</date>
            <delta_ts>2022-01-17 18:56:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235269-20220116111808.patch</filename>
            <type>text/plain</type>
            <size>7467</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4ODA3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAxLTE2ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDYW52YXMgZnVuY3Rpb25zIHRoYXQg
dGFrZSBjb2xvcnMgYXMgc3RyaW5ncyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgc3ludGF4IHRoYXQg
Q1NTIHN1cHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzUyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBBZGQgYSB2YXJpYW50IG9mIENTU1BhcnNlcjo6cGFyc2VDb2xvcigpIHRoYXQgdGFrZXMgYSBD
U1NQYXJzZXJDb250ZXh0CisgICAgICAgIGFuZCB1c2UgaXQgKGFuZCBwYXJzZXIgY29udGV4dCBj
cmVhdGVkIGZyb20gYSBkb2N1bWVudCkgdG8gZ2V0IHRoZSBwYXJzZXIKKyAgICAgICAgdG8gcmVz
cGVjdCB0aGUgc2V0dGluZ3MuCisKKyAgICAgICAgT2Zmc2NyZWVuIGNhbnZhcyBhbmQgY3VzdG9t
IHBhaW50IGNhbnZhcyBhcmUgdXNpbmcgdGhlIG9sZCBwYXRoIHdpdGggaHR0cHM6Ly93ZWJraXQu
b3JnL2IvMjM1MjcwCisgICAgICAgIHRyYWNraW5nIGZpbmRpbmcgYSBzb2x1dGlvbiBmb3IgdGhl
bS4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJz
ZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwYXJzZUNvbG9yKToKKwogMjAyMi0wMS0xNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQ1NTIEdyYWRpZW50czogaW50ZXJwb2xhdGlvbiBtb2RlIHNo
b3VsZCBkZWZhdWx0IHRvIE9LTGFiIGlmIGFueSBub24tbGVnYWN5IGNvbG9yIHN5bnRheCBjb2xv
cnMgYXJlIHVzZWQgaW4gdGhlIHN0b3BzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXIuY3BwCShyZXZpc2lvbiAyODgwNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDIwIEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVN1cHBvcnRzQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYgYwogICAgIHJl
dHVybiBDU1NTdXBwb3J0c1BhcnNlcjo6c3VwcG9ydHNDb25kaXRpb24ocGFyc2VyLnRva2VuaXpl
cigpLT50b2tlblJhbmdlKCksIHBhcnNlciwgQ1NTU3VwcG9ydHNQYXJzZXI6OkZvcldpbmRvd0NT
UykgPT0gQ1NTU3VwcG9ydHNQYXJzZXI6OlN1cHBvcnRlZDsKIH0KIAorQ29sb3IgQ1NTUGFyc2Vy
OjpwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0KQoreworICAgIGJvb2wgc3RyaWN0ID0gIWlzUXVpcmtzTW9kZUJlaGF2aW9yKGNv
bnRleHQubW9kZSk7CisgICAgaWYgKGF1dG8gY29sb3IgPSBDU1NQYXJzZXJGYXN0UGF0aHM6OnBh
cnNlU2ltcGxlQ29sb3Ioc3RyaW5nLCBzdHJpY3QpKQorICAgICAgICByZXR1cm4gKmNvbG9yOwor
ICAgIGF1dG8gdmFsdWUgPSBwYXJzZVNpbmdsZVZhbHVlKENTU1Byb3BlcnR5Q29sb3IsIHN0cmlu
ZywgY29udGV4dCk7CisgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQorICAg
ICAgICByZXR1cm4geyB9OworICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSk7CisgICAgaWYgKCFwcmltaXRpdmVWYWx1ZS5pc1JHQkNv
bG9yKCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLmNv
bG9yKCk7Cit9CisKIENvbG9yIENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb25zdCBTdHJpbmcmIHN0
cmluZywgYm9vbCBzdHJpY3QpCiB7CiAgICAgaWYgKGF1dG8gY29sb3IgPSBDU1NQYXJzZXJGYXN0
UGF0aHM6OnBhcnNlU2ltcGxlQ29sb3Ioc3RyaW5nLCBzdHJpY3QpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCShyZXZpc2lvbiAyODgwNzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw4
IEBAIGNsYXNzIENTU1BhcnNlciB7IChwdWJsaWMpCiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBh
cnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1Zh
bHVlJiwgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IENvbG9yIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYp
OworICAgIC8vIEZJWE1FOiBBbGwgY2FsbGVycyBhcmUgbm90IGdldHRpbmcgdGhlIHJpZ2h0IFNl
dHRpbmdzIGZvciBwYXJzaW5nIGR1ZSB0byBsYWNrIG9mIENTU1BhcnNlckNvbnRleHQgYW5kIHNo
b3VsZCBzd2l0Y2ggdG8gdGhlIGZ1bmN0aW9uIGFib3ZlLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBDb2xvciBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0gZmFsc2Up
OwogICAgIHN0YXRpYyBDb2xvciBwYXJzZVN5c3RlbUNvbG9yKFN0cmluZ1ZpZXcpOwogICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZU5hbWVkQ29sb3IoU3RyaW5n
Vmlldyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3Bw
CShyZXZpc2lvbiAyODgwNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNT
dHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDEwICs0NCw2IEBACiAjaW5jbHVkZSAiT2Zm
c2NyZWVuQ2FudmFzLmgiCiAjZW5kaWYKIAotI2lmIFVTRShDRykKLSNpbmNsdWRlIDxDb3JlR3Jh
cGhpY3MvQ0dDb250ZXh0Lmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29s
IGlzQ3VycmVudENvbG9yU3RyaW5nKGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCkBAIC01OCwx
MiArNTQsMTYgQEAgYm9vbCBpc0N1cnJlbnRDb2xvclN0cmluZyhjb25zdCBTdHJpbmcmIGNvbG9y
U3RyaW5nKQogQ29sb3IgcGFyc2VDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBDYW52
YXNCYXNlJiBjYW52YXNCYXNlKQogewogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQotICAg
IGlmIChjYW52YXNCYXNlLmlzT2Zmc2NyZWVuQ2FudmFzKCkpCisgICAgaWYgKGlzPE9mZnNjcmVl
bkNhbnZhcz4oY2FudmFzQmFzZSkpCiAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eVBhcnNlcldv
cmtlclNhZmU6OnBhcnNlQ29sb3IoY29sb3JTdHJpbmcpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oY2FudmFzQmFzZSk7CiAjZW5kaWYKLSAgICBDb2xvciBjb2xvciA9IENTU1BhcnNlcjo6cGFy
c2VDb2xvcihjb2xvclN0cmluZyk7CisKKyAgICBDb2xvciBjb2xvcjsKKyAgICBpZiAoaXM8SFRN
TENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UpKQorICAgICAgICBjb2xvciA9IENTU1BhcnNlcjo6
cGFyc2VDb2xvcihjb2xvclN0cmluZywgQ1NTUGFyc2VyQ29udGV4dCB7IGRvd25jYXN0PEhUTUxD
YW52YXNFbGVtZW50PihjYW52YXNCYXNlKS5kb2N1bWVudCgpIH0pOworICAgIGVsc2UKKyAgICAg
ICAgY29sb3IgPSBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29sb3JTdHJpbmcpOworCiAgICAgaWYg
KGNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGNvbG9yOwogICAgIHJldHVybiBDU1NQ
YXJzZXI6OnBhcnNlU3lzdGVtQ29sb3IoY29sb3JTdHJpbmcpOwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
Mjg4MDcyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMjItMDEtMTYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisg
ICAgICAgIENhbnZhcyBmdW5jdGlvbnMgdGhhdCB0YWtlIGNvbG9ycyBhcyBzdHJpbmdzIGRvbid0
IHN1cHBvcnQgYWxsIHRoZSBzeW50YXggdGhhdCBDU1Mgc3VwcG9ydHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTI2OQorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogZmFzdC9jYW52YXMvY2FudmFzLWNvbG9y
LXNlcmlhbGl6YXRpb24uaHRtbDoKKyAgICAgICAgVXBkYXRlIGRvY3R5cGUgdG8gc2V0IHRoZSBj
b3JyZWN0IENTUyBwYXJzaW5nIG1vZGUgd2hpY2ggbm93IG5lZWRzIHRvIGJlIHNldCBjb3JyZWN0
bHkgZm9yIGNhbnZhcyBjb2xvciBzZXR0aW5nIGZ1bmN0aW9ucy4KKwogMjAyMi0wMS0xNSAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ1NTIEdyYWRpZW50czogaW50
ZXJwb2xhdGlvbiBtb2RlIHNob3VsZCBkZWZhdWx0IHRvIE9LTGFiIGlmIGFueSBub24tbGVnYWN5
IGNvbG9yIHN5bnRheCBjb2xvcnMgYXJlIHVzZWQgaW4gdGhlIHN0b3BzCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2VyaWFsaXphdGlvbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9u
Lmh0bWwJKHJldmlzaW9uIDI4ODA3MikKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZh
cy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBA
Ci08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8IURPQ1RZ
UEUgSFRNTD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjg4MDcyKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAxLTE2ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDYW52YXMgZnVuY3Rpb25zIHRoYXQgdGFr
ZSBjb2xvcnMgYXMgc3RyaW5ncyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgc3ludGF4IHRoYXQgQ1NT
IHN1cHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzUyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBV
cGRhdGUgZXhwZWN0ZWQgcmVzdWx0cyBub3cgdGhhdCB0aGUgdGVzdCBpcyBwYXNzaW5nLgorCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQt
c3Ryb2tlLXN0eWxlcy8yZC5maWxsU3R5bGUudG9TdHJpbmdGdW5jdGlvbkNhbGxiYWNrLWV4cGVj
dGVkLnR4dDoKKwogMjAyMi0wMS0xNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgQ1NTIEdyYWRpZW50czogaW50ZXJwb2xhdGlvbiBtb2RlIHNob3VsZCBkZWZhdWx0
IHRvIE9LTGFiIGlmIGFueSBub24tbGVnYWN5IGNvbG9yIHN5bnRheCBjb2xvcnMgYXJlIHVzZWQg
aW4gdGhlIHN0b3BzCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5maWxs
U3R5bGUudG9TdHJpbmdGdW5jdGlvbkNhbGxiYWNrLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5maWxsU3R5bGUudG9TdHJpbmdGdW5j
dGlvbkNhbGxiYWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjg4MDcyKQorKysgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2Zp
bGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQuZmlsbFN0eWxlLnRvU3RyaW5nRnVuY3Rpb25DYWxsYmFj
ay1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNSArMiw1IEBACiBQYXNzaW5nIGEg
ZnVuY3Rpb24gaW4gdG8gY3R4LmZpbGxTdHlsZSBvciBjdHguc3Ryb2tlU3R5bGUgd2l0aCBhIHRv
U3RyaW5nIGNhbGxiYWNrIHdvcmtzIGFzIHNwZWNpZmllZAogQWN0dWFsIG91dHB1dDoKIAotRkFJ
TCBQYXNzaW5nIGEgZnVuY3Rpb24gaW4gdG8gY3R4LmZpbGxTdHlsZSBvciBjdHguc3Ryb2tlU3R5
bGUgd2l0aCBhIHRvU3RyaW5nIGNhbGxiYWNrIHdvcmtzIGFzIHNwZWNpZmllZCBhc3NlcnRfZXF1
YWxzOiBjdHguZmlsbFN0eWxlID09PSAiIzAwODAwMCIgKGdvdCAjODAwMDAwW3N0cmluZ10sIGV4
cGVjdGVkICMwMDgwMDBbc3RyaW5nXSkgZXhwZWN0ZWQgIiMwMDgwMDAiIGJ1dCBnb3QgIiM4MDAw
MDAiCitQQVNTIFBhc3NpbmcgYSBmdW5jdGlvbiBpbiB0byBjdHguZmlsbFN0eWxlIG9yIGN0eC5z
dHJva2VTdHlsZSB3aXRoIGEgdG9TdHJpbmcgY2FsbGJhY2sgd29ya3MgYXMgc3BlY2lmaWVkCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449361</attachid>
            <date>2022-01-17 18:57:00 -0800</date>
            <delta_ts>2022-01-18 12:01:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235269-20220117185659.patch</filename>
            <type>text/plain</type>
            <size>16839</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4ODEwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDIyLTAxLTE3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDYW52YXMgZnVuY3Rpb25zIHRoYXQg
dGFrZSBjb2xvcnMgYXMgc3RyaW5ncyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgc3ludGF4IHRoYXQg
Q1NTIHN1cHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzUyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBBZGQgYSB2YXJpYW50IG9mIENTU1BhcnNlcjo6cGFyc2VDb2xvcigpIHRoYXQgdGFrZXMgYSBD
U1NQYXJzZXJDb250ZXh0CisgICAgICAgIGFuZCB1c2UgaXQgKGFuZCBwYXJzZXIgY29udGV4dCBj
cmVhdGVkIGZyb20gYSBkb2N1bWVudCkgdG8gZ2V0IHRoZSBwYXJzZXIKKyAgICAgICAgdG8gcmVz
cGVjdCB0aGUgc2V0dGluZ3MuIFJlbmFtZSB0aGUgZXhpc3RpbmcgQ1NTUGFyc2VyOjpwYXJzZUNv
bG9yKCkgdG8gCisgICAgICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KCkg
YW5kIGFkZCBhIGNvbW1lbnQgaW5kaWNhdGluZyBhbGwKKyAgICAgICAgdXNlcyBzaG91bGQgZXZl
bnR1YWxseSBiZSByZW1vdmVkLgorCisgICAgICAgIE9mZnNjcmVlbiBjYW52YXMgYW5kIGN1c3Rv
bSBwYWludCBjYW52YXMgYXJlIHVzaW5nIHRoZSBvbGQgcGF0aCB3aXRoIGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzIzNTI3MAorICAgICAgICB0cmFja2luZyBmaW5kaW5nIGEgc29sdXRpb24gZm9yIHRo
ZW0uCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25N
YW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6cHJvcGVydHlBc0NvbG9yIGNvbnN0
KToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZUNvbG9yV2l0aG91dENvbnRleHQpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2Vy
Lmg6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3NzVmFsdWVUb0NvbG9yKToKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxNZXRhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWV0YUVsZW1lbnQ6OmNvbnRlbnRDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
U3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpjdXJyZW50Q29sb3IpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlv
bkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eVRyYWl0cy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8
Q29sb3I+Ojpmcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRz
PENvbG9yPjo6cGFyc2UpOgorCiAyMDIyLTAxLTE3ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2tA
d2Via2l0Lm9yZz4KIAogICAgICAgICBbR1RLXSBJbXBsZW1lbnQgZm9ybSB2YWxpZGF0aW9uIHdp
dGggZ3RrMyB3aWRnZXRzIGluIHRoZSBVSSBwcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0
L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCShyZXZpc2lvbiAyODgwNzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVz
dFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMCw3ICszMjAsNyBAQCBVUkwgQXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2VTY29wZShjb25zdCBKU09OOjoKIAogQ29sb3IgQXBw
bGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2VDb2xvcihjb25zdCBKU09OOjpPYmplY3QmIG1h
bmlmZXN0LCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQ1NTUGFy
c2VyOjpwYXJzZUNvbG9yKHBhcnNlR2VuZXJpY1N0cmluZyhtYW5pZmVzdCwgcHJvcGVydHlOYW1l
KSk7CisgICAgcmV0dXJuIENTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KHBhcnNl
R2VuZXJpY1N0cmluZyhtYW5pZmVzdCwgcHJvcGVydHlOYW1lKSk7CiB9CiAKIFN0cmluZyBBcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZUdlbmVyaWNTdHJpbmcoY29uc3QgSlNPTjo6T2Jq
ZWN0JiBtYW5pZmVzdCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAkocmV2aXNpb24gMjg4MDcyKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw3
ICszNDcsNyBAQCBzdGQ6Om9wdGlvbmFsPENvbG9yPiBTdHlsZVByb3BlcnRpZXM6OnByb3BlcnR5
QXNDb2xvcigKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHByaW1p
dGl2ZUNvbG9yID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpjb2xvclZhbHVlKTsKLSAg
ICByZXR1cm4gcHJpbWl0aXZlQ29sb3IuaXNSR0JDb2xvcigpID8gcHJpbWl0aXZlQ29sb3IuY29s
b3IoKSA6IENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xvclZhbHVlLT5jc3NUZXh0KCkpOworICAg
IHJldHVybiBwcmltaXRpdmVDb2xvci5pc1JHQkNvbG9yKCkgPyBwcmltaXRpdmVDb2xvci5jb2xv
cigpIDogQ1NTUGFyc2VyOjpwYXJzZUNvbG9yV2l0aG91dENvbnRleHQoY29sb3JWYWx1ZS0+Y3Nz
VGV4dCgpKTsKIH0KIAogQ1NTVmFsdWVJRCBTdHlsZVByb3BlcnRpZXM6OnByb3BlcnR5QXNWYWx1
ZUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiAyODgwNzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDIx
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVN1cHBvcnRzQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYg
YwogICAgIHJldHVybiBDU1NTdXBwb3J0c1BhcnNlcjo6c3VwcG9ydHNDb25kaXRpb24ocGFyc2Vy
LnRva2VuaXplcigpLT50b2tlblJhbmdlKCksIHBhcnNlciwgQ1NTU3VwcG9ydHNQYXJzZXI6OkZv
cldpbmRvd0NTUykgPT0gQ1NTU3VwcG9ydHNQYXJzZXI6OlN1cHBvcnRlZDsKIH0KIAotQ29sb3Ig
Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHN0cmljdCkK
K0NvbG9yIENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBib29sIHN0cmljdCA9ICFpc1F1aXJr
c01vZGVCZWhhdmlvcihjb250ZXh0Lm1vZGUpOworICAgIGlmIChhdXRvIGNvbG9yID0gQ1NTUGFy
c2VyRmFzdFBhdGhzOjpwYXJzZVNpbXBsZUNvbG9yKHN0cmluZywgc3RyaWN0KSkKKyAgICAgICAg
cmV0dXJuICpjb2xvcjsKKyAgICBhdXRvIHZhbHVlID0gcGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9w
ZXJ0eUNvbG9yLCBzdHJpbmcsIGNvbnRleHQpOworICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvJiBwcmltaXRpdmVWYWx1
ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpOworICAgIGlmICghcHJpbWl0
aXZlVmFsdWUuaXNSR0JDb2xvcigpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBw
cmltaXRpdmVWYWx1ZS5jb2xvcigpOworfQorCitDb2xvciBDU1NQYXJzZXI6OnBhcnNlQ29sb3JX
aXRob3V0Q29udGV4dChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzdHJpY3QpCiB7CiAgICAg
aWYgKGF1dG8gY29sb3IgPSBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlU2ltcGxlQ29sb3Ioc3Ry
aW5nLCBzdHJpY3QpKQogICAgICAgICByZXR1cm4gKmNvbG9yOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlci5oCShyZXZpc2lvbiAyODgwNzIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw5IEBA
IGNsYXNzIENTU1BhcnNlciB7IChwdWJsaWMpCiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNl
VmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1ZhbHVl
JiwgU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENv
bG9yIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYpOworICAgIC8vIEZJWE1FOiBBbGwgY2FsbGVycyBhcmUgbm90
IGdldHRpbmcgdGhlIHJpZ2h0IFNldHRpbmdzIGZvciBwYXJzaW5nIGR1ZSB0byBsYWNrIG9mIENT
U1BhcnNlckNvbnRleHQgYW5kIHNob3VsZCBzd2l0Y2ggdG8gdGhlIHBhcnNlQ29sb3IgZnVuY3Rp
b24gYWJvdmUuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENvbG9yIHBhcnNlQ29sb3JXaXRo
b3V0Q29udGV4dChjb25zdCBTdHJpbmcmLCBib29sIHN0cmljdCA9IGZhbHNlKTsKICAgICBzdGF0
aWMgQ29sb3IgcGFyc2VTeXN0ZW1Db2xvcihTdHJpbmdWaWV3KTsKICAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOYW1lZENvbG9yKFN0cmluZ1ZpZXcpOwogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUhleENvbG9yKFN0cmlu
Z1ZpZXcpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkocmV2
aXNpb24gMjg4MDcyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDcgQEAgc3RhdGljIENvbG9yIGNzc1ZhbHVl
VG9Db2xvcihDU1NWYWx1ZSogY29sb3JWYWx1ZSkKICAgICBpZiAocHJpbWl0aXZlQ29sb3IuaXNS
R0JDb2xvcigpKQogICAgICAgICByZXR1cm4gcHJpbWl0aXZlQ29sb3IuY29sb3IoKTsKICAgICAK
LSAgICByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbG9yVmFsdWUtPmNzc1RleHQoKSk7
CisgICAgcmV0dXJuIENTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KGNvbG9yVmFs
dWUtPmNzc1RleHQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyODgwNzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
Myw3ICsxMjMsNyBAQCB2b2lkIEhUTUxCb2R5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmEKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBkb2N1bWVudCgp
LnJlc2V0QWN0aXZlTGlua0NvbG9yKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBD
b2xvciBjb2xvciA9IENTU1BhcnNlcjo6cGFyc2VDb2xvcih2YWx1ZSwgIWRvY3VtZW50KCkuaW5R
dWlya3NNb2RlKCkpOworICAgICAgICAgICAgQ29sb3IgY29sb3IgPSBDU1NQYXJzZXI6OnBhcnNl
Q29sb3JXaXRob3V0Q29udGV4dCh2YWx1ZSwgIWRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCkpOwog
ICAgICAgICAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgICAgIGlmIChu
YW1lID09IGxpbmtBdHRyKQogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLnNldExpbmtD
b2xvcihjb2xvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyODgwNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBIVE1MTWV0YUVsZW1l
bnQ6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcygpCiBjb25zdCBDb2xvciYgSFRNTE1ldGFFbGVtZW50
Ojpjb250ZW50Q29sb3IoKQogewogICAgIGlmICghbV9jb250ZW50Q29sb3IpCi0gICAgICAgIG1f
Y29udGVudENvbG9yID0gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbnRlbnQoKSk7CisgICAgICAg
IG1fY29udGVudENvbG9yID0gQ1NTUGFyc2VyOjpwYXJzZUNvbG9yV2l0aG91dENvbnRleHQoY29u
dGVudCgpKTsKICAgICByZXR1cm4gKm1fY29udGVudENvbG9yOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCShyZXZpc2lvbiAyODgwNzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDEwICs0NCw2IEBACiAjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCiAjZW5k
aWYKIAotI2lmIFVTRShDRykKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb250ZXh0Lmg+Ci0j
ZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIGlzQ3VycmVudENvbG9yU3RyaW5n
KGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcpCkBAIC01OCwxMiArNTQsMTYgQEAgYm9vbCBpc0N1
cnJlbnRDb2xvclN0cmluZyhjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nKQogQ29sb3IgcGFyc2VD
b2xvcihjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBDYW52YXNCYXNlJiBjYW52YXNCYXNlKQog
ewogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQotICAgIGlmIChjYW52YXNCYXNlLmlzT2Zm
c2NyZWVuQ2FudmFzKCkpCisgICAgaWYgKGlzPE9mZnNjcmVlbkNhbnZhcz4oY2FudmFzQmFzZSkp
CiAgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmU6OnBhcnNlQ29sb3Io
Y29sb3JTdHJpbmcpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2FudmFzQmFzZSk7CiAjZW5k
aWYKLSAgICBDb2xvciBjb2xvciA9IENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xvclN0cmluZyk7
CisKKyAgICBDb2xvciBjb2xvcjsKKyAgICBpZiAoaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZh
c0Jhc2UpKQorICAgICAgICBjb2xvciA9IENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xvclN0cmlu
ZywgQ1NTUGFyc2VyQ29udGV4dCB7IGRvd25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNC
YXNlKS5kb2N1bWVudCgpIH0pOworICAgIGVsc2UKKyAgICAgICAgY29sb3IgPSBDU1NQYXJzZXI6
OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChjb2xvclN0cmluZyk7CisKICAgICBpZiAoY29sb3Iu
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gY29sb3I7CiAgICAgcmV0dXJuIENTU1BhcnNlcjo6
cGFyc2VTeXN0ZW1Db2xvcihjb2xvclN0cmluZyk7CkBAIC03Nyw3ICs3Nyw3IEBAIENvbG9yIGN1
cnJlbnRDb2xvcihDYW52YXNCYXNlJiBjYW52YXNCYXNlKQogICAgIGF1dG8mIGNhbnZhcyA9IGRv
d25jYXN0PEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKTsKICAgICBpZiAoIWNhbnZhcy5p
c0Nvbm5lY3RlZCgpIHx8ICFjYW52YXMuaW5saW5lU3R5bGUoKSkKICAgICAgICAgcmV0dXJuIENv
bG9yOjpibGFjazsKLSAgICBDb2xvciBjb2xvciA9IENTU1BhcnNlcjo6cGFyc2VDb2xvcihjYW52
YXMuaW5saW5lU3R5bGUoKS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSk7Cisg
ICAgQ29sb3IgY29sb3IgPSBDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChjYW52
YXMuaW5saW5lU3R5bGUoKS0+Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSk7CiAg
ICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBDb2xvcjo6YmxhY2s7CiAg
ICAgcmV0dXJuIGNvbG9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlv
bkltcGwuaAkocmV2aXNpb24gMjg4MDcyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NiwxMCArOTYsMTAgQEAgY2xhc3MgU1ZHQW5pbWF0aW9uQ29sb3JGdW5jdGlvbiA6IHB1
YmxpYyBTVkdBbmltYXRpb25BCiAKICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVE
aXN0YW5jZShTVkdFbGVtZW50JiwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRv
KSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgQ29sb3IgZnJvbUNvbG9yID0gQ1NTUGFy
c2VyOjpwYXJzZUNvbG9yKGZyb20uc3RyaXBXaGl0ZVNwYWNlKCkpOworICAgICAgICBDb2xvciBm
cm9tQ29sb3IgPSBDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChmcm9tLnN0cmlw
V2hpdGVTcGFjZSgpKTsKICAgICAgICAgaWYgKCFmcm9tQ29sb3IuaXNWYWxpZCgpKQogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgQ29sb3IgdG9Db2xvciA9IENTU1BhcnNlcjo6cGFy
c2VDb2xvcih0by5zdHJpcFdoaXRlU3BhY2UoKSk7CisgICAgICAgIENvbG9yIHRvQ29sb3IgPSBD
U1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dCh0by5zdHJpcFdoaXRlU3BhY2UoKSk7
CiAgICAgICAgIGlmICghdG9Db2xvci5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgJKHJldmlzaW9uIDI4ODA3MikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDEwICs0NSwxMCBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8Ym9vbD4gewogdGVtcGxh
dGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENvbG9yPiB7CiAgICAgc3RhdGljIENvbG9y
IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIENvbG9yKCk7IH0KLSAgICBzdGF0aWMgQ29sb3IgZnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykgeyByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZUNv
bG9yKHN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKSk7IH0KKyAgICBzdGF0aWMgQ29sb3IgZnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykgeyByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZUNvbG9y
V2l0aG91dENvbnRleHQoc3RyaW5nLnN0cmlwV2hpdGVTcGFjZSgpKTsgfQogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPENvbG9yPiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiAgICAgewotICAgICAgICBDb2xvciBjb2xvciA9IENTU1BhcnNlcjo6cGFy
c2VDb2xvcihzdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCkpOworICAgICAgICBDb2xvciBjb2xvciA9
IENTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KHN0cmluZy5zdHJpcFdoaXRlU3Bh
Y2UoKSk7CiAgICAgICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGNvbG9yOwpJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI4ODEwNikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjItMDEtMTcgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29t
PgorCisgICAgICAgIENhbnZhcyBmdW5jdGlvbnMgdGhhdCB0YWtlIGNvbG9ycyBhcyBzdHJpbmdz
IGRvbid0IHN1cHBvcnQgYWxsIHRoZSBzeW50YXggdGhhdCBDU1Mgc3VwcG9ydHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTI2OQorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lIG9m
IENTU1BhcnNlcjo6cGFyc2VDb2xvcigpIHRvIENTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRD
b250ZXh0KCkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5jcHA6
CisgICAgICAgICh3ZWJraXRfY29sb3JfcGFyc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFn
ZVNldENvbXBvc2l0aW9uKToKKwogMjAyMi0wMS0xNyAgQ2hhbmdTZW9rIE9oICA8Y2hhbmdzZW9r
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0dUS10gSW1wbGVtZW50IGZvcm0gdmFsaWRhdGlvbiB3
aXRoIGd0azMgd2lkZ2V0cyBpbiB0aGUgVUkgcHJvY2VzcwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRDb2xvci5jcHAJKHJldmlzaW9uIDI4ODA3MikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X2NvbG9yX3BhcnNl
KFdlYktpdENvbG9yKiBjb2xvciwgY29uc3QgCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29s
b3IsIEZBTFNFKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xvclN0cmluZywgRkFMU0Up
OwogCi0gICAgYXV0byB3ZWJDb3JlQ29sb3IgPSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29s
b3IoeyBjb2xvclN0cmluZyB9KTsKKyAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJpbmcgfSk7CiAgICAg
aWYgKCF3ZWJDb3JlQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiAyODgwNzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgV0tCdW5kbGVQYWdlU2V0
Q29tcG9zaXRpb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZQogICAgICAgICAgICAgaGlnaGxpZ2h0
cy51bmNoZWNrZWRBcHBlbmQoewogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdGFydE9mZnNldCksCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0
YXJ0T2Zmc2V0ICsgc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihkaWN0aW9uYXJ5LT5nZXQoImxl
bmd0aCIpKS0+dmFsdWUoKSksCi0gICAgICAgICAgICAgICAgV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZUNvbG9yKHN0YXRpY19jYXN0PEFQSTo6U3RyaW5nKj4oZGljdGlvbmFyeS0+Z2V0KCJjb2xv
ciIpKS0+c3RyaW5nKCkpCisgICAgICAgICAgICAgICAgV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJz
ZUNvbG9yV2l0aG91dENvbnRleHQoc3RhdGljX2Nhc3Q8QVBJOjpTdHJpbmcqPihkaWN0aW9uYXJ5
LT5nZXQoImNvbG9yIikpLT5zdHJpbmcoKSkKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4MDcyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMTcgIFNhbSBXZWluaWcg
IDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIENhbnZhcyBmdW5jdGlvbnMgdGhhdCB0YWtl
IGNvbG9ycyBhcyBzdHJpbmdzIGRvbid0IHN1cHBvcnQgYWxsIHRoZSBzeW50YXggdGhhdCBDU1Mg
c3VwcG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNTI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICog
ZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLXNlcmlhbGl6YXRpb24uaHRtbDoKKyAgICAgICAgVXBk
YXRlIGRvY3R5cGUgdG8gc2V0IHRoZSBjb3JyZWN0IENTUyBwYXJzaW5nIG1vZGUgd2hpY2ggbm93
IG5lZWRzIHRvIGJlIHNldCBjb3JyZWN0bHkgZm9yIGNhbnZhcyBjb2xvciBzZXR0aW5nIGZ1bmN0
aW9ucy4KKwogMjAyMi0wMS0xNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQ1NTIEdyYWRpZW50czogaW50ZXJwb2xhdGlvbiBtb2RlIHNob3VsZCBkZWZhdWx0IHRv
IE9LTGFiIGlmIGFueSBub24tbGVnYWN5IGNvbG9yIHN5bnRheCBjb2xvcnMgYXJlIHVzZWQgaW4g
dGhlIHN0b3BzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3Itc2Vy
aWFsaXphdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL2Nh
bnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwJKHJldmlzaW9uIDI4ODEwNCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1zZXJpYWxpemF0aW9uLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSw0IEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8IURPQ1RZUEUgSFRNTD4KIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4MDcyKQorKysgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDIyLTAxLTE3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBD
YW52YXMgZnVuY3Rpb25zIHRoYXQgdGFrZSBjb2xvcnMgYXMgc3RyaW5ncyBkb24ndCBzdXBwb3J0
IGFsbCB0aGUgc3ludGF4IHRoYXQgQ1NTIHN1cHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUyNjkKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICBVcGRhdGUgZXhwZWN0ZWQgcmVzdWx0cyBub3cgdGhhdCB0
aGUgdGVzdCBpcyBwYXNzaW5nLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5maWxsU3R5bGUudG9TdHJp
bmdGdW5jdGlvbkNhbGxiYWNrLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wMS0xNSAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ1NTIEdyYWRpZW50czogaW50ZXJwb2xh
dGlvbiBtb2RlIHNob3VsZCBkZWZhdWx0IHRvIE9LTGFiIGlmIGFueSBub24tbGVnYWN5IGNvbG9y
IHN5bnRheCBjb2xvcnMgYXJlIHVzZWQgaW4gdGhlIHN0b3BzCkluZGV4OiBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1h
bmQtc3Ryb2tlLXN0eWxlcy8yZC5maWxsU3R5bGUudG9TdHJpbmdGdW5jdGlvbkNhbGxiYWNrLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8y
ZC5maWxsU3R5bGUudG9TdHJpbmdGdW5jdGlvbkNhbGxiYWNrLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMjg4MDcyKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQuZmlsbFN0eWxl
LnRvU3RyaW5nRnVuY3Rpb25DYWxsYmFjay1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTIsNSArMiw1IEBACiBQYXNzaW5nIGEgZnVuY3Rpb24gaW4gdG8gY3R4LmZpbGxTdHlsZSBvciBj
dHguc3Ryb2tlU3R5bGUgd2l0aCBhIHRvU3RyaW5nIGNhbGxiYWNrIHdvcmtzIGFzIHNwZWNpZmll
ZAogQWN0dWFsIG91dHB1dDoKIAotRkFJTCBQYXNzaW5nIGEgZnVuY3Rpb24gaW4gdG8gY3R4LmZp
bGxTdHlsZSBvciBjdHguc3Ryb2tlU3R5bGUgd2l0aCBhIHRvU3RyaW5nIGNhbGxiYWNrIHdvcmtz
IGFzIHNwZWNpZmllZCBhc3NlcnRfZXF1YWxzOiBjdHguZmlsbFN0eWxlID09PSAiIzAwODAwMCIg
KGdvdCAjODAwMDAwW3N0cmluZ10sIGV4cGVjdGVkICMwMDgwMDBbc3RyaW5nXSkgZXhwZWN0ZWQg
IiMwMDgwMDAiIGJ1dCBnb3QgIiM4MDAwMDAiCitQQVNTIFBhc3NpbmcgYSBmdW5jdGlvbiBpbiB0
byBjdHguZmlsbFN0eWxlIG9yIGN0eC5zdHJva2VTdHlsZSB3aXRoIGEgdG9TdHJpbmcgY2FsbGJh
Y2sgd29ya3MgYXMgc3BlY2lmaWVkCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>