<?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>201085</bug_id>
          
          <creation_ts>2019-08-23 12:23:48 -0700</creation_ts>
          <short_desc>[iOS] [WebKit2] Tapping on the “I’m” text suggestion after typing “i’” does nothing</short_desc>
          <delta_ts>2019-08-23 19:57:56 -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>HTML Editing</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1564561</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-08-23 12:23:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/53056118&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564568</commentid>
    <comment_count>1</comment_count>
      <attachid>377151</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-08-23 13:01:02 -0700</bug_when>
    <thetext>Created attachment 377151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564577</commentid>
    <comment_count>2</comment_count>
      <attachid>377151</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-23 13:43:50 -0700</bug_when>
    <thetext>Comment on attachment 377151
Patch

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

&gt; Source/WebCore/editing/TextIterator.h:57
&gt; +WEBCORE_EXPORT String foldQuoteMarks(String);

Seems a little peculiar to have the argument the be &quot;String&quot; rather than &quot;const String&amp;&quot;. Also, I am a little concerned using this outside the context of ICU’s usearch. The folding here was specifically to work around what usearch does and does not do. This folding alone without all the other folding that usearch does is a sort of peculiar subset. Finally, it’s not great to have this in this header since it’s not really an &quot;iteration&quot; thing. Just because the file-local version was here doesn’t mean this is a good logical home for the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564579</commentid>
    <comment_count>3</comment_count>
      <attachid>377151</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-23 13:46:27 -0700</bug_when>
    <thetext>Comment on attachment 377151
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2342
&gt;          textForRange = plainTextReplacingNoBreakSpace(range.get());

Might be cleaner to integrate the quote mark folding into a replacement for the &quot;plainTextReplacingNoBreakSpace&quot; function instead of doing it as a separate step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564580</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-08-23 13:48:37 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 377151 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377151&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2342
&gt; &gt;          textForRange = plainTextReplacingNoBreakSpace(range.get());
&gt; 
&gt; Might be cleaner to integrate the quote mark folding into a replacement for
&gt; the &quot;plainTextReplacingNoBreakSpace&quot; function instead of doing it as a
&gt; separate step.

This was my first thought, but then I realized that we’d still need a way to fold quote marks for the original text passed into applyAutocorrectionInternal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564581</commentid>
    <comment_count>5</comment_count>
      <attachid>377151</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-23 13:50:28 -0700</bug_when>
    <thetext>Comment on attachment 377151
Patch

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

&gt;&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2342
&gt;&gt;&gt;          textForRange = plainTextReplacingNoBreakSpace(range.get());
&gt;&gt; 
&gt;&gt; Might be cleaner to integrate the quote mark folding into a replacement for the &quot;plainTextReplacingNoBreakSpace&quot; function instead of doing it as a separate step.
&gt; 
&gt; This was my first thought, but then I realized that we’d still need a way to fold quote marks for the original text passed into applyAutocorrectionInternal.

Does that text perhaps also ultimately come from a call to plainTextReplacingNoBreakSpace?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564583</commentid>
    <comment_count>6</comment_count>
      <attachid>377151</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-08-23 13:58:04 -0700</bug_when>
    <thetext>Comment on attachment 377151
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:2342
&gt;&gt;&gt;&gt;          textForRange = plainTextReplacingNoBreakSpace(range.get());
&gt;&gt;&gt; 
&gt;&gt;&gt; Might be cleaner to integrate the quote mark folding into a replacement for the &quot;plainTextReplacingNoBreakSpace&quot; function instead of doing it as a separate step.
&gt;&gt; 
&gt;&gt; This was my first thought, but then I realized that we’d still need a way to fold quote marks for the original text passed into applyAutocorrectionInternal.
&gt; 
&gt; Does that text perhaps also ultimately come from a call to plainTextReplacingNoBreakSpace?

It comes from UIKit (which, in turn, gets it from kbd).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564589</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-08-23 14:07:09 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 377151 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377151&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/TextIterator.h:57
&gt; &gt; +WEBCORE_EXPORT String foldQuoteMarks(String);
&gt; 
&gt; Seems a little peculiar to have the argument the be &quot;String&quot; rather than
&gt; &quot;const String&amp;”.

Agreed. On closer inspection, we should be able to make this const String&amp; (the only call site that depends on this is one of the SearchBuffer constructors that could be tweaked). I’ll post a v2 that does this.

&gt; Also, I am a little concerned using this outside the
&gt; context of ICU’s usearch. The folding here was specifically to work around
&gt; what usearch does and does not do. This folding alone without all the other
&gt; folding that usearch does is a sort of peculiar subset.

I see. Perhaps the function could be renamed in such a way that makes this clear?

&gt; Finally, it’s not
&gt; great to have this in this header since it’s not really an &quot;iteration&quot;
&gt; thing. Just because the file-local version was here doesn’t mean this is a
&gt; good logical home for the function.

Yeah, I had considered moving this (either to WTFString.h as an instance method of WTF::String, or a standalone function in that file, or just a function in StringCommon.h, or even a new header in WebCore) but decided to leave it out of this patch to make this change simpler.

One thing to note is that wherever we decide to move it, we should probably keep foldQuoteMarks and foldQuoteMark in the same place.

Would it be okay to do this in a followup patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564601</commentid>
    <comment_count>8</comment_count>
      <attachid>377154</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-08-23 14:22:59 -0700</bug_when>
    <thetext>Created attachment 377154
Make foldQuoteMarks take a const String&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564632</commentid>
    <comment_count>9</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-08-23 15:17:18 -0700</bug_when>
    <thetext>&gt; One thing to note is that wherever we decide to move it, we should probably
&gt; keep foldQuoteMarks and foldQuoteMark in the same place.
&gt; 
&gt; Would it be okay to do this in a followup patch?

I filed &lt;https://bugs.webkit.org/show_bug.cgi?id=201092&gt; for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564659</commentid>
    <comment_count>10</comment_count>
      <attachid>377154</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-23 16:00:45 -0700</bug_when>
    <thetext>Comment on attachment 377154
Make foldQuoteMarks take a const String&amp;

Clearing flags on attachment: 377154

Committed r249074: &lt;https://trac.webkit.org/changeset/249074&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564660</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-23 16:00:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564687</commentid>
    <comment_count>12</comment_count>
      <attachid>377154</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-23 16:37:25 -0700</bug_when>
    <thetext>Comment on attachment 377154
Make foldQuoteMarks take a const String&amp;

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

&gt; Source/WebCore/editing/TextIterator.cpp:-2422
&gt; -    foldQuoteMarks(m_target);

What you did here seems to be fixing a serious bug! This was calling a function and ignoring its result so it wasn’t folding the quote marks. Glad you fixed it, but not at all happy that we didn’t have test coverage that showed us what was happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564701</commentid>
    <comment_count>13</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-08-23 16:59:35 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 377154 [details]
&gt; Make foldQuoteMarks take a const String&amp;
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377154&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/TextIterator.cpp:-2422
&gt; &gt; -    foldQuoteMarks(m_target);
&gt; 
&gt; What you did here seems to be fixing a serious bug! This was calling a
&gt; function and ignoring its result so it wasn’t folding the quote marks. Glad
&gt; you fixed it, but not at all happy that we didn’t have test coverage that
&gt; showed us what was happening.

Indeed!

One thing to note here is that this codepath is only compiled if UCONFIG_NO_COLLATION, which might explain the lack of test coverage (at least, on macOS and iOS bots).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564754</commentid>
    <comment_count>14</comment_count>
      <attachid>377154</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2019-08-23 19:57:56 -0700</bug_when>
    <thetext>Comment on attachment 377154
Make foldQuoteMarks take a const String&amp;

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

&gt;&gt;&gt; Source/WebCore/editing/TextIterator.cpp:-2422
&gt;&gt;&gt; -    foldQuoteMarks(m_target);
&gt;&gt; 
&gt;&gt; What you did here seems to be fixing a serious bug! This was calling a function and ignoring its result so it wasn’t folding the quote marks. Glad you fixed it, but not at all happy that we didn’t have test coverage that showed us what was happening.
&gt; 
&gt; Indeed!
&gt; 
&gt; One thing to note here is that this codepath is only compiled if UCONFIG_NO_COLLATION, which might explain the lack of test coverage (at least, on macOS and iOS bots).

Aha, yes, that makes sense. And I think that means this does not affect any Cocoa platforms.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377151</attachid>
            <date>2019-08-23 13:01:02 -0700</date>
            <delta_ts>2019-08-23 14:22:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201085-20190823130101.patch</filename>
            <type>text/plain</type>
            <size>10274</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODk4Yjc3MGZjOWM5YmE2
OGE2MTMxZWMwODAzZGRjOGQzYmE2MTM2OC4uZDcwZWFiOWQzOTYzMjc3NWUzZmQxN2M4ZmYzNzUz
YzMyYmUyNGVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA4LTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFtXZWJL
aXQyXSBUYXBwaW5nIG9uIHRoZSDigJxJ4oCZbeKAnSB0ZXh0IHN1Z2dlc3Rpb24gYWZ0ZXIgdHlw
aW5nIOKAnGnigJnigJ0gZG9lcyBub3RoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEwODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzMDU2
MTE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4
cG9zZXMgYW4gZXhpc3RpbmcgcXVvdGUgZm9sZGluZyBmdW5jdGlvbiBhcyBhIGhlbHBlciBvbiBU
ZXh0SXRlcmF0b3IuIFNlZSBXZWJLaXQgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb2xk
UXVvdGVNYXJrcyk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKwogMjAxOS0w
OC0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBU
eXBpbmcgS29yZWFuIGluIHRpdGxlIGZpZWxkIGFmdGVyIHR5cGluZyBpbiB0aGUgYm9keSBpbnNl
cnRzIGV4dHJhbmVvdXMgY2hhcmFjdGVycyBvbiBibG9nLm5hdmVyLmNvbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5
NWUyODdhOTM4Yjk3ODE5MGY1ODhhMDA4ODE1YTcwNGU1YWRiZDQ0Li44ODMyNTMyZDc5OTY2NGJk
ZjM1YWQ4YTE0OGE0NzE4MzBlODkyYmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE5
LTA4LTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1NdIFtXZWJLaXQyXSBUYXBwaW5nIG9uIHRoZSDigJxJ4oCZbeKAnSB0ZXh0IHN1Z2dlc3Rp
b24gYWZ0ZXIgdHlwaW5nIOKAnGnigJnigJ0gZG9lcyBub3RoaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEwODUKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzUzMDU2MTE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEN1cnJlbnRseSwgbG9naWMgaW4gYXBwbHlBdXRvY29ycmVjdGlvbkludGVybmFs
IG9ubHkgc2VsZWN0cyB0aGUgcmFuZ2UgdG8gYXV0b2NvcnJlY3QgaWYgdGhlIHRleHQgb2YgdGhl
IHJhbmdlCisgICAgICAgIG1hdGNoZXMgdGhlIHN0cmluZyB0byByZXBsYWNlIChkZWxpdmVyZWQg
dG8gdXMgZnJvbSBVSUtpdCkuIEluIHRoZSBjYXNlIG9mIGNoYW5naW5nICJJ4oCZIiB0byAiSeKA
mW0iLCB0aGUgc3RyaW5nIHRvCisgICAgICAgIHJlcGxhY2UgaXMgIkknIiAod2l0aCBhIHN0cmFp
Z2h0IHF1b3RlIHJhdGhlciB0aGFuIGFuIGFwb3N0cm9waGUpLCBldmVuIHRob3VnaCB0aGUgRE9N
IGNvbnRhaW5zIGFuIGFwb3N0cm9waGUuCisKKyAgICAgICAgVGhpcyBpcyBiZWNhdXNlIGtiZCBi
ZWxpZXZlcyB0aGF0IHRoZSBkb2N1bWVudCBjb250ZXh0IGNvbnRhaW5zIHN0cmFpZ2h0IHF1b3Rl
cyAocmF0aGVyIHRoYW4gYXBvc3Ryb3BoZXMpLiBGb3IKKyAgICAgICAgbmF0aXZlIHRleHQgdmll
d3MsIHRoaXMgd29ya3Mgb3V0IGJlY2F1c2UgVUlLaXQgdXNlcyByZWxhdGl2ZSBVSVRleHRQb3Np
dGlvbnMgdG8gZGV0ZXJtaW5lIHRoZSByZXBsYWNlbWVudAorICAgICAgICByYW5nZSByYXRoZXIg
dGhhbiBieSBjaGVja2luZyBhZ2FpbnN0IHRoZSBjb250ZW50cyBvZiB0aGUgZG9jdW1lbnQuIEhv
d2V2ZXIsIFdLV2ViVmlldyBkb2VzIG5vdCBoYXZlIHRoZSBhYmlsaXR5CisgICAgICAgIHRvIHN5
bmNocm9ub3VzbHkgY29tcHV0ZSBhbmQgcmVhc29uIGFib3V0IGFyYml0cmFyeSBVSVRleHRQb3Np
dGlvbnMgcmVsYXRpdmUgdG8gdGhlIHNlbGVjdGlvbiwgc28gd2UgaW5zdGVhZAorICAgICAgICBz
ZWFyY2ggZm9yIHRoZSBzdHJpbmcgbmVhciB0aGUgY3VycmVudCBzZWxlY3Rpb24gd2hlbiBhcHBs
eWluZyBhdXRvY29ycmVjdGlvbnMuCisKKyAgICAgICAgT2YgY291cnNlLCB0aGlzIGRvZXNuJ3Qg
d29yayBpbiB0aGlzIHNjZW5hcmlvIGJlY2F1c2UgdGhlIHJlcGxhY2VtZW50IHN0cmluZyBjb250
YWlucyBhIHN0cmFpZ2h0IHF1b3RlLCB5ZXQgdGhlCisgICAgICAgIHRleHQgbm9kZSBjb250YWlu
cyBhbiBhcG9zdHJvcGhlLCBzbyB3ZSBiYWlsIGFuZCBkb24ndCBlbmQgdXAgcmVwbGFjaW5nIGFu
eSB0ZXh0LiBUbyBhZGRyZXNzIHRoaXMsIHdlIHJlcHVycG9zZQorICAgICAgICBUZXh0SXRlcmF0
b3IgaGVscGVycyBjdXJyZW50bHkgdXNlZCB0byBhbGxvdyBmaW5kLWluLXBhZ2UgdG8gbWF0Y2gg
c3RyYWlnaHQgcXVvdGVzIGFnYWluc3QgYXBvc3Ryb3BoZXM7IGluc3RlYWQKKyAgICAgICAgb2Yg
bWF0Y2hpbmcgdGhlIHJlcGxhY2VtZW50IHN0cmluZyBleGFjdGx5LCB3ZSBpbnN0ZWFkIG1hdGNo
IHRoZSBxdW90ZS1mb2xkZWQgdmVyc2lvbnMgb2YgdGhlc2Ugc3RyaW5ncyB3aGVuCisgICAgICAg
IGZpbmRpbmcgdGhlIHJhbmdlIHRvIHJlcGxhY2UuCisKKyAgICAgICAgVGVzdDogZmFzdC9ldmVu
dHMvaW9zL2F1dG9jb3JyZWN0LXdpdGgtYXBvc3Ryb3BoZS5odG1sCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbCk6CisKIDIwMTktMDgtMjIgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVHlwaW5nIEtvcmVhbiBp
biB0aXRsZSBmaWVsZCBhZnRlciB0eXBpbmcgaW4gdGhlIGJvZHkgaW5zZXJ0cyBleHRyYW5lb3Vz
IGNoYXJhY3RlcnMgb24gYmxvZy5uYXZlci5jb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAppbmRleCBiYjBjOWEyMjYxOGUzM2JhOTU4MWRiZGRmMWVhNTJlMjdmYTkzMmEw
Li44MGVlNWVkOGYxMmI4NzExMDQ0MDA4ODA3ZWEwYzgwNDBjNGNlNGQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xNzgyLDcgKzE3ODIsNyBAQCBzdGF0aWMg
aW5saW5lIFVDaGFyIGZvbGRRdW90ZU1hcmsoVUNoYXIgYykKIC8vIEZJWE1FOiBXZSdkIGxpa2Ug
dG8gdGFpbG9yIHRoZSBzZWFyY2hlciB0byBmb2xkIHF1b3RlIG1hcmtzIGZvciB1cyBpbnN0ZWFk
CiAvLyBvZiBkb2luZyBpdCBpbiBhIHNlcGFyYXRlIHJlcGxhY2VtZW50IHBhc3MgaGVyZSwgYnV0
IElDVSBkb2Vzbid0IG9mZmVyIGEgd2F5CiAvLyB0byBhZGQgdGFpbG9yaW5nIG9uIHRvcCBvZiB0
aGUgbG9jYWxlLXNwZWNpZmljIHRhaWxvcmluZyBhcyBvZiB0aGlzIHdyaXRpbmcuCi1zdGF0aWMg
aW5saW5lIFN0cmluZyBmb2xkUXVvdGVNYXJrcyhTdHJpbmcgc3RyaW5nKQorU3RyaW5nIGZvbGRR
dW90ZU1hcmtzKFN0cmluZyBzdHJpbmcpCiB7CiAgICAgc3RyaW5nLnJlcGxhY2UoaGVicmV3UHVu
Y3R1YXRpb25HZXJlc2gsICdcJycpOwogICAgIHN0cmluZy5yZXBsYWNlKGhlYnJld1B1bmN0dWF0
aW9uR2Vyc2hheWltLCAnIicpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5k
ZXggMDhiMWZiMjE4ZjU1MGI4OGFlNTljYWY3ZGFjYTI0NTNmY2Q4YzJiOC4uYWE4ZmJkYWVmYTZh
OTViNTNlYzY4NmJkYzVmYTQzYzYyN2NmOTNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5oCkBAIC01NCw2ICs1NCw3IEBAIFJlZjxSYW5nZT4gZmluZFBsYWluVGV4dChjb25z
dCBSYW5nZSYsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKIFdFQkNPUkVfRVhQT1JUIFJl
ZjxSYW5nZT4gZmluZENsb3Nlc3RQbGFpblRleHQoY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJpbmcm
LCBGaW5kT3B0aW9ucywgdW5zaWduZWQpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNBbnlQbGFp
blRleHQoY29uc3QgUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRl
ZmF1bHRCZWhhdmlvcik7CiBib29sIGZpbmRQbGFpblRleHQoY29uc3QgU3RyaW5nJiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOyAvLyBMZXRzIHVzIHVzZSB0aGUgc2VhcmNo
IGFsZ29yaXRobSBvbiBhIHN0cmluZy4KK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBmb2xkUXVvdGVN
YXJrcyhTdHJpbmcpOwogCiAvLyBGSVhNRTogTW92ZSB0aGlzIHNvbWV3aGVyZSBlbHNlIGluIHRo
ZSBlZGl0aW5nIGRpcmVjdG9yeS4gSXQgZG9lc24ndCBiZWxvbmcgaGVyZS4KIGJvb2wgaXNSZW5k
ZXJlclJlcGxhY2VkRWxlbWVudChSZW5kZXJPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNTUyZWYxYThmZTJk
NTU1NjQzYWU5NWM1NDVhNjA1Y2Y3NWE3YjM1Yy4uMmQ2Y2JjNWRhNTk4M2YwMWIyMGFkZmE3Nzlj
YzA2YTkzNGRkY2VjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTIzMzQsMTIgKzIzMzQsMTMgQEAgYm9vbCBXZWJQYWdl
OjphcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBj
b25zdCBTdHJpbmcKIAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2U7CiAgICAgU3RyaW5nIHRleHRG
b3JSYW5nZTsKKyAgICBhdXRvIG9yaWdpbmFsVGV4dFdpdGhGb2xkZWRRdW90ZU1hcmtzID0gZm9s
ZFF1b3RlTWFya3Mob3JpZ2luYWxUZXh0KTsKIAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5p
c0NhcmV0KCkpIHsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKTsKICAgICAgICAgcmFuZ2UgPSB3b3JkUmFuZ2VG
cm9tUG9zaXRpb24ocG9zaXRpb24pOwogICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRS
ZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0KCkpOwotICAgICAgICBpZiAodGV4dEZvclJh
bmdlICE9IG9yaWdpbmFsVGV4dCkgeworICAgICAgICBpZiAoZm9sZFF1b3RlTWFya3ModGV4dEZv
clJhbmdlKSAhPSBvcmlnaW5hbFRleHRXaXRoRm9sZGVkUXVvdGVNYXJrcykgewogICAgICAgICAg
ICAgLy8gU2VhcmNoIGZvciB0aGUgb3JpZ2luYWwgdGV4dCBiZWZvcmUgdGhlIHNlbGVjdGlvbiBj
YXJldC4KICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3JpZ2luYWxUZXh0Lmxl
bmd0aCgpOyArK2kpCiAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5wcmV2aW91
cygpOwpAQCAtMjM2OSw3ICsyMzcwLDcgQEAgYm9vbCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0
aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcKICAgICAg
ICAgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdl
dCgpKTsKICAgICB9CiAKLSAgICBpZiAodGV4dEZvclJhbmdlICE9IG9yaWdpbmFsVGV4dCkKKyAg
ICBpZiAoZm9sZFF1b3RlTWFya3ModGV4dEZvclJhbmdlKSAhPSBvcmlnaW5hbFRleHRXaXRoRm9s
ZGVkUXVvdGVNYXJrcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIENvcnJl
Y3RseSBkZXRlcm1pbmUgYWZmaW5pdHksIHVzaW5nIGxvZ2ljIGN1cnJlbnRseSBvbmx5IHByZXNl
bnQgaW4gVmlzaWJsZVBvc2l0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmY1ZDQxODg3YmE1ZjA2NTZiMDVkNjA0MTRi
YWUwNzI3ZWNlYzRkMi4uYjljNmFlMmUwMDMzOWE1OTY2YzM3MjY1OTg3NTM3NzY2MmNmZDE3NiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA4LTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFtXZWJLaXQyXSBUYXBwaW5nIG9uIHRo
ZSDigJxJ4oCZbeKAnSB0ZXh0IHN1Z2dlc3Rpb24gYWZ0ZXIgdHlwaW5nIOKAnGnigJnigJ0gZG9l
cyBub3RoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDEwODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzMDU2MTE4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBsYXlvdXQgdGVz
dCB0byB2ZXJpZnkgdGhhdCAiSeKAmSIgY2FuIGJlIGF1dG9jb3JyZWN0ZWQgdG8gIknigJltIi4K
KworICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9hdXRvY29ycmVjdC13aXRoLWFwb3N0cm9waGUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3MvYXV0b2NvcnJl
Y3Qtd2l0aC1hcG9zdHJvcGhlLmh0bWw6IEFkZGVkLgorCiAyMDE5LTA4LTIyICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFR5cGluZyBLb3JlYW4gaW4g
dGl0bGUgZmllbGQgYWZ0ZXIgdHlwaW5nIGluIHRoZSBib2R5IGluc2VydHMgZXh0cmFuZW91cyBj
aGFyYWN0ZXJzIG9uIGJsb2cubmF2ZXIuY29tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9pb3MvYXV0b2NvcnJlY3Qtd2l0aC1hcG9zdHJvcGhlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9hdXRvY29ycmVjdC13aXRoLWFwb3N0cm9waGUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5MTdmMGI4YmQyNzgzMThmYjRlZDM5MzU1MjNiMWMxODA1
ODI5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvYXV0
b2NvcnJlY3Qtd2l0aC1hcG9zdHJvcGhlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACisK
K1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0ICJJJyIgY2FuIGJlIGF1dG9jb3JyZWN0ZWQgdG8gIkni
gJltIi4gVG8gbWFudWFsbHkgcnVuIHRoZSB0ZXN0LCBmb2N1cyB0aGUgdGV4dCBhcmVhLCBwbGFj
ZSB0aGUgY2FyZXQgYXQgdGhlIGVuZCBvZiB0aGUgYXBvc3Ryb3BoZSwgYW5kIHNlbGVjdCB0aGUg
IknigJltIiB0ZXh0IGNhbmRpZGF0ZSBhYm92ZSB0aGUga2V5Ym9hcmQuIENoZWNrIHRoYXQgdGhl
IHRleHQgY2FuZGlkYXRlIGlzIGluc2VydGVkIGFzIGV4cGVjdGVkLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK1BBU1MgT2JzZXJ2ZWQgaW5wdXQgZXZlbnQgb2YgaW5wdXRUeXBlIGlu
c2VydFJlcGxhY2VtZW50VGV4dAorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlzIGVkaXRv
cgorUEFTUyBlZGl0b3IudmFsdWUgaXMgIknigJltIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2lvcy9hdXRvY29ycmVjdC13aXRoLWFwb3N0cm9waGUuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2lvcy9hdXRvY29ycmVjdC13aXRoLWFwb3N0cm9waGUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44N2ViYzlhNTBjMjllZWI4OTlhYzI1MjhhNjk2NjFjN2RiNWE1YzVjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2F1dG9jb3JyZWN0LXdpdGgtYXBv
c3Ryb3BoZS5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8
aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGY4Ij4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9y
dCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9bm8sIHdpZHRoPWRl
dmljZS13aWR0aCI+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAgICAgICB0ZXh0YXJlYSB7CisgICAg
ICAgICAgICBmb250LXNpemU6IDE4cHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxz
Y3JpcHQ+CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIGFkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAgICAgICAgICBkZXNjcmlwdGlvbihg
VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgIkknIiBjYW4gYmUgYXV0b2NvcnJlY3RlZCB0byAiSeKA
mW0iLiBUbyBtYW51YWxseSBydW4gdGhlIHRlc3QsIGZvY3VzIHRoZSB0ZXh0IGFyZWEsIHBsYWNl
IHRoZSBjYXJldCBhdCB0aGUgZW5kIG9mIHRoZSBhcG9zdHJvcGhlLCBhbmQgc2VsZWN0IHRoZSAi
SeKAmW0iIHRleHQgY2FuZGlkYXRlIGFib3ZlIHRoZSBrZXlib2FyZC4gQ2hlY2sgdGhhdCB0aGUg
dGV4dCBjYW5kaWRhdGUgaXMgaW5zZXJ0ZWQgYXMgZXhwZWN0ZWQuYCk7CisKKyAgICAgICAgICAg
IGFkZEV2ZW50TGlzdGVuZXIoImlucHV0IiwgZXZlbnQgPT4gdGVzdFBhc3NlZChgT2JzZXJ2ZWQg
aW5wdXQgZXZlbnQgb2YgaW5wdXRUeXBlICR7ZXZlbnQuaW5wdXRUeXBlfWApKTsKKworICAgICAg
ICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGVkaXRvciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJlZGl0b3IiKTsKKyAgICAgICAgICAgIGF3YWl0IFVJSGVscGVyLmFj
dGl2YXRlRWxlbWVudEFuZFdhaXRGb3JJbnB1dFNlc3Npb24oZWRpdG9yKTsKKyAgICAgICAgICAg
IGF3YWl0IFVJSGVscGVyLmFwcGx5QXV0b2NvcnJlY3Rpb24oIknigJltIiwgIkknIik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiZG9jdW1lbnQuYWN0aXZlRWxlbWVudCIsICJlZGl0b3IiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZWRpdG9yLnZhbHVlIiwgIknigJltIik7
CisgICAgICAgICAgICBlZGl0b3IuYmx1cigpOworICAgICAgICAgICAgYXdhaXQgVUlIZWxwZXIu
d2FpdEZvcktleWJvYXJkVG9IaWRlKCk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dGV4dGFyZWEg
Y29udGVudGVkaXRhYmxlIGlkPSJlZGl0b3IiPknigJk8L3RleHRhcmVhPgorICAgIDxkaXYgaWQ9
ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9k
eT4KKworPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377154</attachid>
            <date>2019-08-23 14:22:59 -0700</date>
            <delta_ts>2019-08-23 16:00:45 -0700</delta_ts>
            <desc>Make foldQuoteMarks take a const String&amp;</desc>
            <filename>bug-201085-20190823142258.patch</filename>
            <type>text/plain</type>
            <size>11937</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODk4Yjc3MGZjOWM5YmE2
OGE2MTMxZWMwODAzZGRjOGQzYmE2MTM2OC4uOGQ4NWE1MWVkNGRjNmVhMTkzNmE4ZjI1OTA2ZmI3
ZjI5YjE3ZWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5LTA4LTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFtXZWJL
aXQyXSBUYXBwaW5nIG9uIHRoZSDigJxJ4oCZbeKAnSB0ZXh0IHN1Z2dlc3Rpb24gYWZ0ZXIgdHlw
aW5nIOKAnGnigJnigJ0gZG9lcyBub3RoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEwODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzMDU2
MTE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4
cG9zZXMgYW4gZXhpc3RpbmcgcXVvdGUgZm9sZGluZyBmdW5jdGlvbiBhcyBhIGhlbHBlciBvbiBU
ZXh0SXRlcmF0b3IsIGFuZCBhbHNvIGFkanVzdHMgZm9sZFF1b3RlTWFya3MgdG8gdGFrZQorICAg
ICAgICBhIGNvbnN0IFN0cmluZyYgcmF0aGVyIHRoYW4gYSBTdHJpbmcuIFNlZSBXZWJLaXQgQ2hh
bmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb2xkUXVvdGVNYXJrcyk6CisgICAgICAgIChXZWJD
b3JlOjpTZWFyY2hCdWZmZXI6OlNlYXJjaEJ1ZmZlcik6CisgICAgICAgICogZWRpdGluZy9UZXh0
SXRlcmF0b3IuaDoKKwogMjAxOS0wOC0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBUeXBpbmcgS29yZWFuIGluIHRpdGxlIGZpZWxkIGFmdGVyIHR5
cGluZyBpbiB0aGUgYm9keSBpbnNlcnRzIGV4dHJhbmVvdXMgY2hhcmFjdGVycyBvbiBibG9nLm5h
dmVyLmNvbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA5NWUyODdhOTM4Yjk3ODE5MGY1ODhhMDA4ODE1YTcwNGU1YWRi
ZDQ0Li44ODMyNTMyZDc5OTY2NGJkZjM1YWQ4YTE0OGE0NzE4MzBlODkyYmMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMyIEBACisyMDE5LTA4LTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFtXZWJLaXQyXSBUYXBwaW5nIG9uIHRoZSDigJxJ
4oCZbeKAnSB0ZXh0IHN1Z2dlc3Rpb24gYWZ0ZXIgdHlwaW5nIOKAnGnigJnigJ0gZG9lcyBub3Ro
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEw
ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUzMDU2MTE4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgbG9naWMgaW4gYXBwbHlB
dXRvY29ycmVjdGlvbkludGVybmFsIG9ubHkgc2VsZWN0cyB0aGUgcmFuZ2UgdG8gYXV0b2NvcnJl
Y3QgaWYgdGhlIHRleHQgb2YgdGhlIHJhbmdlCisgICAgICAgIG1hdGNoZXMgdGhlIHN0cmluZyB0
byByZXBsYWNlIChkZWxpdmVyZWQgdG8gdXMgZnJvbSBVSUtpdCkuIEluIHRoZSBjYXNlIG9mIGNo
YW5naW5nICJJ4oCZIiB0byAiSeKAmW0iLCB0aGUgc3RyaW5nIHRvCisgICAgICAgIHJlcGxhY2Ug
aXMgIkknIiAod2l0aCBhIHN0cmFpZ2h0IHF1b3RlIHJhdGhlciB0aGFuIGFuIGFwb3N0cm9waGUp
LCBldmVuIHRob3VnaCB0aGUgRE9NIGNvbnRhaW5zIGFuIGFwb3N0cm9waGUuCisKKyAgICAgICAg
VGhpcyBpcyBiZWNhdXNlIGtiZCBiZWxpZXZlcyB0aGF0IHRoZSBkb2N1bWVudCBjb250ZXh0IGNv
bnRhaW5zIHN0cmFpZ2h0IHF1b3RlcyAocmF0aGVyIHRoYW4gYXBvc3Ryb3BoZXMpLiBGb3IKKyAg
ICAgICAgbmF0aXZlIHRleHQgdmlld3MsIHRoaXMgd29ya3Mgb3V0IGJlY2F1c2UgVUlLaXQgdXNl
cyByZWxhdGl2ZSBVSVRleHRQb3NpdGlvbnMgdG8gZGV0ZXJtaW5lIHRoZSByZXBsYWNlbWVudAor
ICAgICAgICByYW5nZSByYXRoZXIgdGhhbiBieSBjaGVja2luZyBhZ2FpbnN0IHRoZSBjb250ZW50
cyBvZiB0aGUgZG9jdW1lbnQuIEhvd2V2ZXIsIFdLV2ViVmlldyBkb2VzIG5vdCBoYXZlIHRoZSBh
YmlsaXR5CisgICAgICAgIHRvIHN5bmNocm9ub3VzbHkgY29tcHV0ZSBhbmQgcmVhc29uIGFib3V0
IGFyYml0cmFyeSBVSVRleHRQb3NpdGlvbnMgcmVsYXRpdmUgdG8gdGhlIHNlbGVjdGlvbiwgc28g
d2UgaW5zdGVhZAorICAgICAgICBzZWFyY2ggZm9yIHRoZSBzdHJpbmcgbmVhciB0aGUgY3VycmVu
dCBzZWxlY3Rpb24gd2hlbiBhcHBseWluZyBhdXRvY29ycmVjdGlvbnMuCisKKyAgICAgICAgT2Yg
Y291cnNlLCB0aGlzIGRvZXNuJ3Qgd29yayBpbiB0aGlzIHNjZW5hcmlvIGJlY2F1c2UgdGhlIHJl
cGxhY2VtZW50IHN0cmluZyBjb250YWlucyBhIHN0cmFpZ2h0IHF1b3RlLCB5ZXQgdGhlCisgICAg
ICAgIHRleHQgbm9kZSBjb250YWlucyBhbiBhcG9zdHJvcGhlLCBzbyB3ZSBiYWlsIGFuZCBkb24n
dCBlbmQgdXAgcmVwbGFjaW5nIGFueSB0ZXh0LiBUbyBhZGRyZXNzIHRoaXMsIHdlIHJlcHVycG9z
ZQorICAgICAgICBUZXh0SXRlcmF0b3IgaGVscGVycyBjdXJyZW50bHkgdXNlZCB0byBhbGxvdyBm
aW5kLWluLXBhZ2UgdG8gbWF0Y2ggc3RyYWlnaHQgcXVvdGVzIGFnYWluc3QgYXBvc3Ryb3BoZXM7
IGluc3RlYWQKKyAgICAgICAgb2YgbWF0Y2hpbmcgdGhlIHJlcGxhY2VtZW50IHN0cmluZyBleGFj
dGx5LCB3ZSBpbnN0ZWFkIG1hdGNoIHRoZSBxdW90ZS1mb2xkZWQgdmVyc2lvbnMgb2YgdGhlc2Ug
c3RyaW5ncyB3aGVuCisgICAgICAgIGZpbmRpbmcgdGhlIHJhbmdlIHRvIHJlcGxhY2UuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9ldmVudHMvaW9zL2F1dG9jb3JyZWN0LXdpdGgtYXBvc3Ryb3BoZS5o
dG1sCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFwcGx5QXV0b2NvcnJlY3Rpb25JbnRlcm5hbCk6CisK
IDIwMTktMDgtMjIgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVHlwaW5nIEtvcmVhbiBpbiB0aXRsZSBmaWVsZCBhZnRlciB0eXBpbmcgaW4gdGhlIGJv
ZHkgaW5zZXJ0cyBleHRyYW5lb3VzIGNoYXJhY3RlcnMgb24gYmxvZy5uYXZlci5jb20KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBiYjBjOWEyMjYxOGUzM2JhOTU4
MWRiZGRmMWVhNTJlMjdmYTkzMmEwLi5hMWEzOTAzZjY3Yjc0MzMyZmU1MjljM2FlYjNjY2I3ZGVk
ZmUwMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xNzgy
LDE4ICsxNzgyLDE5IEBAIHN0YXRpYyBpbmxpbmUgVUNoYXIgZm9sZFF1b3RlTWFyayhVQ2hhciBj
KQogLy8gRklYTUU6IFdlJ2QgbGlrZSB0byB0YWlsb3IgdGhlIHNlYXJjaGVyIHRvIGZvbGQgcXVv
dGUgbWFya3MgZm9yIHVzIGluc3RlYWQKIC8vIG9mIGRvaW5nIGl0IGluIGEgc2VwYXJhdGUgcmVw
bGFjZW1lbnQgcGFzcyBoZXJlLCBidXQgSUNVIGRvZXNuJ3Qgb2ZmZXIgYSB3YXkKIC8vIHRvIGFk
ZCB0YWlsb3Jpbmcgb24gdG9wIG9mIHRoZSBsb2NhbGUtc3BlY2lmaWMgdGFpbG9yaW5nIGFzIG9m
IHRoaXMgd3JpdGluZy4KLXN0YXRpYyBpbmxpbmUgU3RyaW5nIGZvbGRRdW90ZU1hcmtzKFN0cmlu
ZyBzdHJpbmcpCi17Ci0gICAgc3RyaW5nLnJlcGxhY2UoaGVicmV3UHVuY3R1YXRpb25HZXJlc2gs
ICdcJycpOwotICAgIHN0cmluZy5yZXBsYWNlKGhlYnJld1B1bmN0dWF0aW9uR2Vyc2hheWltLCAn
IicpOwotICAgIHN0cmluZy5yZXBsYWNlKGxlZnREb3VibGVRdW90YXRpb25NYXJrLCAnIicpOwot
ICAgIHN0cmluZy5yZXBsYWNlKGxlZnRMb3dEb3VibGVRdW90YXRpb25NYXJrLCAnIicpOwotICAg
IHN0cmluZy5yZXBsYWNlKGxlZnRTaW5nbGVRdW90YXRpb25NYXJrLCAnXCcnKTsKLSAgICBzdHJp
bmcucmVwbGFjZShsZWZ0TG93U2luZ2xlUXVvdGF0aW9uTWFyaywgJ1wnJyk7Ci0gICAgc3RyaW5n
LnJlcGxhY2UocmlnaHREb3VibGVRdW90YXRpb25NYXJrLCAnIicpOwotICAgIHN0cmluZy5yZXBs
YWNlKHJpZ2h0U2luZ2xlUXVvdGF0aW9uTWFyaywgJ1wnJyk7CitTdHJpbmcgZm9sZFF1b3RlTWFy
a3MoY29uc3QgU3RyaW5nJiBzdHJpbmdUb0ZvbGQpCit7CisgICAgU3RyaW5nIHJlc3VsdChzdHJp
bmdUb0ZvbGQpOworICAgIHJlc3VsdC5yZXBsYWNlKGhlYnJld1B1bmN0dWF0aW9uR2VyZXNoLCAn
XCcnKTsKKyAgICByZXN1bHQucmVwbGFjZShoZWJyZXdQdW5jdHVhdGlvbkdlcnNoYXlpbSwgJyIn
KTsKKyAgICByZXN1bHQucmVwbGFjZShsZWZ0RG91YmxlUXVvdGF0aW9uTWFyaywgJyInKTsKKyAg
ICByZXN1bHQucmVwbGFjZShsZWZ0TG93RG91YmxlUXVvdGF0aW9uTWFyaywgJyInKTsKKyAgICBy
ZXN1bHQucmVwbGFjZShsZWZ0U2luZ2xlUXVvdGF0aW9uTWFyaywgJ1wnJyk7CisgICAgcmVzdWx0
LnJlcGxhY2UobGVmdExvd1NpbmdsZVF1b3RhdGlvbk1hcmssICdcJycpOworICAgIHJlc3VsdC5y
ZXBsYWNlKHJpZ2h0RG91YmxlUXVvdGF0aW9uTWFyaywgJyInKTsKKyAgICByZXN1bHQucmVwbGFj
ZShyaWdodFNpbmdsZVF1b3RhdGlvbk1hcmssICdcJycpOwogCi0gICAgcmV0dXJuIHN0cmluZzsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAjaWYgIVVDT05GSUdfTk9fQ09MTEFUSU9OCkBAIC0y
NDEwLDcgKzI0MTEsNyBAQCBuZXh0TWF0Y2g6CiAjZWxzZQogCiBpbmxpbmUgU2VhcmNoQnVmZmVy
OjpTZWFyY2hCdWZmZXIoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMp
Ci0gICAgOiBtX3RhcmdldChvcHRpb25zICYgQ2FzZUluc2Vuc2l0aXZlID8gdGFyZ2V0LmZvbGRD
YXNlKCkgOiB0YXJnZXQpCisgICAgOiBtX3RhcmdldChmb2xkUXVvdGVNYXJrcyhvcHRpb25zICYg
Q2FzZUluc2Vuc2l0aXZlID8gdGFyZ2V0LmZvbGRDYXNlKCkgOiB0YXJnZXQpKQogICAgICwgbV9v
cHRpb25zKG9wdGlvbnMpCiAgICAgLCBtX2J1ZmZlcihtX3RhcmdldC5sZW5ndGgoKSkKICAgICAs
IG1faXNDaGFyYWN0ZXJTdGFydEJ1ZmZlcihtX3RhcmdldC5sZW5ndGgoKSkKQEAgLTI0MTksNyAr
MjQyMCw2IEBAIGlubGluZSBTZWFyY2hCdWZmZXI6OlNlYXJjaEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBBU1NFUlQoIW1fdGFyZ2V0Lmlz
RW1wdHkoKSk7CiAgICAgbV90YXJnZXQucmVwbGFjZShub0JyZWFrU3BhY2UsICcgJyk7Ci0gICAg
Zm9sZFF1b3RlTWFya3MobV90YXJnZXQpOwogfQogCiBpbmxpbmUgU2VhcmNoQnVmZmVyOjp+U2Vh
cmNoQnVmZmVyKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgK
aW5kZXggMDhiMWZiMjE4ZjU1MGI4OGFlNTljYWY3ZGFjYTI0NTNmY2Q4YzJiOC4uMWY0ZmRkZmVm
NzU2MjU2M2VlODU0MjZlMjYwYmRiZmE4NmUyMTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5oCkBAIC01NCw2ICs1NCw3IEBAIFJlZjxSYW5nZT4gZmluZFBsYWluVGV4dChj
b25zdCBSYW5nZSYsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKIFdFQkNPUkVfRVhQT1JU
IFJlZjxSYW5nZT4gZmluZENsb3Nlc3RQbGFpblRleHQoY29uc3QgUmFuZ2UmLCBjb25zdCBTdHJp
bmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNBbnlQ
bGFpblRleHQoY29uc3QgUmFuZ2UmLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRv
ckRlZmF1bHRCZWhhdmlvcik7CiBib29sIGZpbmRQbGFpblRleHQoY29uc3QgU3RyaW5nJiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOyAvLyBMZXRzIHVzIHVzZSB0aGUgc2Vh
cmNoIGFsZ29yaXRobSBvbiBhIHN0cmluZy4KK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBmb2xkUXVv
dGVNYXJrcyhjb25zdCBTdHJpbmcmKTsKIAogLy8gRklYTUU6IE1vdmUgdGhpcyBzb21ld2hlcmUg
ZWxzZSBpbiB0aGUgZWRpdGluZyBkaXJlY3RvcnkuIEl0IGRvZXNuJ3QgYmVsb25nIGhlcmUuCiBi
b29sIGlzUmVuZGVyZXJSZXBsYWNlZEVsZW1lbnQoUmVuZGVyT2JqZWN0Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDU1
MmVmMWE4ZmUyZDU1NTY0M2FlOTVjNTQ1YTYwNWNmNzVhN2IzNWMuLjJkNmNiYzVkYTU5ODNmMDFi
MjBhZGZhNzc5Y2MwNmE5MzRkZGNlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMzM0LDEyICsyMzM0LDEzIEBAIGJv
b2wgV2ViUGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbkludGVybmFsKGNvbnN0IFN0cmluZyYgY29y
cmVjdGlvbiwgY29uc3QgU3RyaW5nCiAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwogICAgIFN0
cmluZyB0ZXh0Rm9yUmFuZ2U7CisgICAgYXV0byBvcmlnaW5hbFRleHRXaXRoRm9sZGVkUXVvdGVN
YXJrcyA9IGZvbGRRdW90ZU1hcmtzKG9yaWdpbmFsVGV4dCk7CiAKICAgICBpZiAoZnJhbWUuc2Vs
ZWN0aW9uKCkuaXNDYXJldCgpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9
IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCk7CiAgICAgICAgIHJhbmdlID0g
d29yZFJhbmdlRnJvbVBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICAgICAgdGV4dEZvclJhbmdlID0g
cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKLSAgICAgICAgaWYg
KHRleHRGb3JSYW5nZSAhPSBvcmlnaW5hbFRleHQpIHsKKyAgICAgICAgaWYgKGZvbGRRdW90ZU1h
cmtzKHRleHRGb3JSYW5nZSkgIT0gb3JpZ2luYWxUZXh0V2l0aEZvbGRlZFF1b3RlTWFya3MpIHsK
ICAgICAgICAgICAgIC8vIFNlYXJjaCBmb3IgdGhlIG9yaWdpbmFsIHRleHQgYmVmb3JlIHRoZSBz
ZWxlY3Rpb24gY2FyZXQuCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdp
bmFsVGV4dC5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRp
b24ucHJldmlvdXMoKTsKQEAgLTIzNjksNyArMjM3MCw3IEBAIGJvb2wgV2ViUGFnZTo6YXBwbHlB
dXRvY29ycmVjdGlvbkludGVybmFsKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3Ry
aW5nCiAgICAgICAgIHRleHRGb3JSYW5nZSA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFj
ZShyYW5nZS5nZXQoKSk7CiAgICAgfQogCi0gICAgaWYgKHRleHRGb3JSYW5nZSAhPSBvcmlnaW5h
bFRleHQpCisgICAgaWYgKGZvbGRRdW90ZU1hcmtzKHRleHRGb3JSYW5nZSkgIT0gb3JpZ2luYWxU
ZXh0V2l0aEZvbGRlZFF1b3RlTWFya3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAg
ICAvLyBDb3JyZWN0bHkgZGV0ZXJtaW5lIGFmZmluaXR5LCB1c2luZyBsb2dpYyBjdXJyZW50bHkg
b25seSBwcmVzZW50IGluIFZpc2libGVQb3NpdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJmNWQ0MTg4N2JhNWYwNjU2
YjA1ZDYwNDE0YmFlMDcyN2VjZWM0ZDIuLmI5YzZhZTJlMDAzMzlhNTk2NmMzNzI2NTk4NzUzNzc2
NjJjZmQxNzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wOC0yMyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBbV2ViS2l0Ml0gVGFw
cGluZyBvbiB0aGUg4oCcSeKAmW3igJ0gdGV4dCBzdWdnZXN0aW9uIGFmdGVyIHR5cGluZyDigJxp
4oCZ4oCdIGRvZXMgbm90aGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAxMDg1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MzA1NjExOD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcg
bGF5b3V0IHRlc3QgdG8gdmVyaWZ5IHRoYXQgIknigJkiIGNhbiBiZSBhdXRvY29ycmVjdGVkIHRv
ICJJ4oCZbSIuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3MvYXV0b2NvcnJlY3Qtd2l0aC1h
cG9zdHJvcGhlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW9z
L2F1dG9jb3JyZWN0LXdpdGgtYXBvc3Ryb3BoZS5odG1sOiBBZGRlZC4KKwogMjAxOS0wOC0yMiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBUeXBpbmcg
S29yZWFuIGluIHRpdGxlIGZpZWxkIGFmdGVyIHR5cGluZyBpbiB0aGUgYm9keSBpbnNlcnRzIGV4
dHJhbmVvdXMgY2hhcmFjdGVycyBvbiBibG9nLm5hdmVyLmNvbQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvaW9zL2F1dG9jb3JyZWN0LXdpdGgtYXBvc3Ryb3BoZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvYXV0b2NvcnJlY3Qtd2l0aC1hcG9z
dHJvcGhlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTE3ZjBiOGJkMjc4MzE4ZmI0ZWQzOTM1
NTIzYjFjMTgwNTgyOTU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvaW9zL2F1dG9jb3JyZWN0LXdpdGgtYXBvc3Ryb3BoZS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMiBAQAorCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCAiSSciIGNhbiBiZSBhdXRvY29ycmVj
dGVkIHRvICJJ4oCZbSIuIFRvIG1hbnVhbGx5IHJ1biB0aGUgdGVzdCwgZm9jdXMgdGhlIHRleHQg
YXJlYSwgcGxhY2UgdGhlIGNhcmV0IGF0IHRoZSBlbmQgb2YgdGhlIGFwb3N0cm9waGUsIGFuZCBz
ZWxlY3QgdGhlICJJ4oCZbSIgdGV4dCBjYW5kaWRhdGUgYWJvdmUgdGhlIGtleWJvYXJkLiBDaGVj
ayB0aGF0IHRoZSB0ZXh0IGNhbmRpZGF0ZSBpcyBpbnNlcnRlZCBhcyBleHBlY3RlZC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIE9ic2VydmVkIGlucHV0IGV2ZW50IG9mIGlu
cHV0VHlwZSBpbnNlcnRSZXBsYWNlbWVudFRleHQKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dCBpcyBlZGl0b3IKK1BBU1MgZWRpdG9yLnZhbHVlIGlzICJJ4oCZbSIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9pb3MvYXV0b2NvcnJlY3Qtd2l0aC1hcG9zdHJvcGhlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvYXV0b2NvcnJlY3Qtd2l0aC1hcG9zdHJvcGhlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODdlYmM5YTUwYzI5ZWViODk5YWMyNTI4YTY5NjYxYzdkYjVhNWM1Ywot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9hdXRvY29ycmVj
dC13aXRoLWFwb3N0cm9waGUuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4g
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4K
KzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmOCI+CisgICAgPG1ldGEgbmFt
ZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wLCB1c2VyLXNjYWxhYmxlPW5v
LCB3aWR0aD1kZXZpY2Utd2lkdGgiPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgdGV4dGFy
ZWEgeworICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4OworICAgICAgICB9CisgICAgPC9zdHls
ZT4KKyAgICA8c2NyaXB0PgorICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4geworICAgICAgICAgICAgZGVz
Y3JpcHRpb24oYFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0ICJJJyIgY2FuIGJlIGF1dG9jb3JyZWN0
ZWQgdG8gIknigJltIi4gVG8gbWFudWFsbHkgcnVuIHRoZSB0ZXN0LCBmb2N1cyB0aGUgdGV4dCBh
cmVhLCBwbGFjZSB0aGUgY2FyZXQgYXQgdGhlIGVuZCBvZiB0aGUgYXBvc3Ryb3BoZSwgYW5kIHNl
bGVjdCB0aGUgIknigJltIiB0ZXh0IGNhbmRpZGF0ZSBhYm92ZSB0aGUga2V5Ym9hcmQuIENoZWNr
IHRoYXQgdGhlIHRleHQgY2FuZGlkYXRlIGlzIGluc2VydGVkIGFzIGV4cGVjdGVkLmApOworCisg
ICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsIGV2ZW50ID0+IHRlc3RQYXNzZWQo
YE9ic2VydmVkIGlucHV0IGV2ZW50IG9mIGlucHV0VHlwZSAke2V2ZW50LmlucHV0VHlwZX1gKSk7
CisKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXRlc3RSdW5uZXIucnVu
VUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBlZGl0b3Ig
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdG9yIik7CisgICAgICAgICAgICBhd2FpdCBV
SUhlbHBlci5hY3RpdmF0ZUVsZW1lbnRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uKGVkaXRvcik7Cisg
ICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5hcHBseUF1dG9jb3JyZWN0aW9uKCJJ4oCZbSIsICJJ
JyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQiLCAiZWRp
dG9yIik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVkaXRvci52YWx1ZSIs
ICJJ4oCZbSIpOworICAgICAgICAgICAgZWRpdG9yLmJsdXIoKTsKKyAgICAgICAgICAgIGF3YWl0
IFVJSGVscGVyLndhaXRGb3JLZXlib2FyZFRvSGlkZSgpOworICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAg
PHRleHRhcmVhIGNvbnRlbnRlZGl0YWJsZSBpZD0iZWRpdG9yIj5J4oCZPC90ZXh0YXJlYT4KKyAg
ICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8L2JvZHk+CisKKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>