<?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>213318</bug_id>
          
          <creation_ts>2020-06-17 15:13:30 -0700</creation_ts>
          <short_desc>Text manipulation does not observe manipulated text after update</short_desc>
          <delta_ts>2020-07-13 10:36:27 -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>
          <dependson>213333</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1663683</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-17 15:13:30 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663684</commentid>
    <comment_count>1</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-17 15:14:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/63766703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663686</commentid>
    <comment_count>2</comment_count>
      <attachid>402159</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-17 15:18:39 -0700</bug_when>
    <thetext>Created attachment 402159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663687</commentid>
    <comment_count>3</comment_count>
      <attachid>402160</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-17 15:20:36 -0700</bug_when>
    <thetext>Created attachment 402160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666555</commentid>
    <comment_count>4</comment_count>
      <attachid>402887</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-26 12:46:54 -0700</bug_when>
    <thetext>Created attachment 402887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666558</commentid>
    <comment_count>5</comment_count>
      <attachid>402887</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-26 12:49:32 -0700</bug_when>
    <thetext>Comment on attachment 402887
Patch

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

&gt; Source/WebCore/dom/CharacterData.cpp:70
&gt; +    if (is&lt;Text&gt;(*this) &amp;&amp; !m_data.contains(oldData)) {

This contains check seems peculiar. The new data might happen to contain the old data by coincidence; not sure if it’s a meaningful check.

Also, the is&lt;Text&gt; check seems peculiar. Normally this would be done by making the setData function virtual rather than adding a derived class check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666586</commentid>
    <comment_count>6</comment_count>
      <attachid>402887</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-06-26 13:50:41 -0700</bug_when>
    <thetext>Comment on attachment 402887
Patch

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

&gt;&gt; Source/WebCore/dom/CharacterData.cpp:70
&gt;&gt; +    if (is&lt;Text&gt;(*this) &amp;&amp; !m_data.contains(oldData)) {
&gt; 
&gt; This contains check seems peculiar. The new data might happen to contain the old data by coincidence; not sure if it’s a meaningful check.
&gt; 
&gt; Also, the is&lt;Text&gt; check seems peculiar. Normally this would be done by making the setData function virtual rather than adding a derived class check.

I believe `!m_data.contains(oldData)` is just a translation-specific heuristic in this case, since the translation framework does not handle text that has already been partially translated to the target language. For instance, if we have a text node like &quot;one two&quot; that is translated to &quot;一 二&quot;, and then the page&apos;s script later sets this text to &quot;three four&quot;, we&apos;d want to re-mark it for translation so that it can be translated to &quot;三 四&quot;. However, if the web page appends new text in the source language — for example, &quot;一 二 three four&quot; — it is better to avoid re-translating this text.

That said, it does sound expensive to check for `contains` every time here; maybe we should just omit the `contains` check, or only do it if the text manipulation controller exists?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666587</commentid>
    <comment_count>7</comment_count>
      <attachid>402887</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-26 13:51:30 -0700</bug_when>
    <thetext>Comment on attachment 402887
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/CharacterData.cpp:70
&gt;&gt;&gt; +    if (is&lt;Text&gt;(*this) &amp;&amp; !m_data.contains(oldData)) {
&gt;&gt; 
&gt;&gt; This contains check seems peculiar. The new data might happen to contain the old data by coincidence; not sure if it’s a meaningful check.
&gt;&gt; 
&gt;&gt; Also, the is&lt;Text&gt; check seems peculiar. Normally this would be done by making the setData function virtual rather than adding a derived class check.
&gt; 
&gt; I believe `!m_data.contains(oldData)` is just a translation-specific heuristic in this case, since the translation framework does not handle text that has already been partially translated to the target language. For instance, if we have a text node like &quot;one two&quot; that is translated to &quot;一 二&quot;, and then the page&apos;s script later sets this text to &quot;three four&quot;, we&apos;d want to re-mark it for translation so that it can be translated to &quot;三 四&quot;. However, if the web page appends new text in the source language — for example, &quot;一 二 three four&quot; — it is better to avoid re-translating this text.
&gt; 
&gt; That said, it does sound expensive to check for `contains` every time here; maybe we should just omit the `contains` check, or only do it if the text manipulation controller exists?

Can contains be a coincidence?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666594</commentid>
    <comment_count>8</comment_count>
      <attachid>402887</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-06-26 13:59:09 -0700</bug_when>
    <thetext>Comment on attachment 402887
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/CharacterData.cpp:70
&gt;&gt;&gt;&gt; +    if (is&lt;Text&gt;(*this) &amp;&amp; !m_data.contains(oldData)) {
&gt;&gt;&gt; 
&gt;&gt;&gt; This contains check seems peculiar. The new data might happen to contain the old data by coincidence; not sure if it’s a meaningful check.
&gt;&gt;&gt; 
&gt;&gt;&gt; Also, the is&lt;Text&gt; check seems peculiar. Normally this would be done by making the setData function virtual rather than adding a derived class check.
&gt;&gt; 
&gt;&gt; I believe `!m_data.contains(oldData)` is just a translation-specific heuristic in this case, since the translation framework does not handle text that has already been partially translated to the target language. For instance, if we have a text node like &quot;one two&quot; that is translated to &quot;一 二&quot;, and then the page&apos;s script later sets this text to &quot;three four&quot;, we&apos;d want to re-mark it for translation so that it can be translated to &quot;三 四&quot;. However, if the web page appends new text in the source language — for example, &quot;一 二 three four&quot; — it is better to avoid re-translating this text.
&gt;&gt; 
&gt;&gt; That said, it does sound expensive to check for `contains` every time here; maybe we should just omit the `contains` check, or only do it if the text manipulation controller exists?
&gt; 
&gt; Can contains be a coincidence?

Indeed — it could very well be a coincidence. For instance, maybe the original text was just a single space or symbol...

My understanding is that this is just a heuristic that tends to work well in practice. @Sihui — were there any websites where this `contains` check is necessary for compat? If not, perhaps we could simplify this a bit by calling didUpdateContentForText if the text changed at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666598</commentid>
    <comment_count>9</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-26 14:08:18 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #8)
&gt; Comment on attachment 402887 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=402887&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/dom/CharacterData.cpp:70
&gt; &gt;&gt;&gt;&gt; +    if (is&lt;Text&gt;(*this) &amp;&amp; !m_data.contains(oldData)) {
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; This contains check seems peculiar. The new data might happen to contain the old data by coincidence; not sure if it’s a meaningful check.
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Also, the is&lt;Text&gt; check seems peculiar. Normally this would be done by making the setData function virtual rather than adding a derived class check.
&gt; &gt;&gt; 
&gt; &gt;&gt; I believe `!m_data.contains(oldData)` is just a translation-specific heuristic in this case, since the translation framework does not handle text that has already been partially translated to the target language. For instance, if we have a text node like &quot;one two&quot; that is translated to &quot;一 二&quot;, and then the page&apos;s script later sets this text to &quot;three four&quot;, we&apos;d want to re-mark it for translation so that it can be translated to &quot;三 四&quot;. However, if the web page appends new text in the source language — for example, &quot;一 二 three four&quot; — it is better to avoid re-translating this text.
&gt; &gt;&gt; 
&gt; &gt;&gt; That said, it does sound expensive to check for `contains` every time here; maybe we should just omit the `contains` check, or only do it if the text manipulation controller exists?
&gt; &gt; 
&gt; &gt; Can contains be a coincidence?
&gt; 
&gt; Indeed — it could very well be a coincidence. For instance, maybe the
&gt; original text was just a single space or symbol...
&gt; 
&gt; My understanding is that this is just a heuristic that tends to work well in
&gt; practice. @Sihui — were there any websites where this `contains` check is
&gt; necessary for compat? If not, perhaps we could simplify this a bit by
&gt; calling didUpdateContentForText if the text changed at all.

This check is not necessary for the radar. I will remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666624</commentid>
    <comment_count>10</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-26 14:52:12 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 402887 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=402887&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/CharacterData.cpp:70
&gt; &gt; +    if (is&lt;Text&gt;(*this) &amp;&amp; !m_data.contains(oldData)) {
&gt; 
&gt; This contains check seems peculiar. The new data might happen to contain the
&gt; old data by coincidence; not sure if it’s a meaningful check.
&gt; 
&gt; Also, the is&lt;Text&gt; check seems peculiar. Normally this would be done by
&gt; making the setData function virtual rather than adding a derived class check.

I found setData is called in multiple places: CharacterData::setNodeValue, replaceChildrenWithFragment, Text::replaceWholeText, etc, so I just added a general check. I can add didUpdateContentForText to each of them if it&apos;s preferred.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666642</commentid>
    <comment_count>11</comment_count>
      <attachid>402912</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-26 15:21:46 -0700</bug_when>
    <thetext>Created attachment 402912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666650</commentid>
    <comment_count>12</comment_count>
      <attachid>402912</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-26 15:38:37 -0700</bug_when>
    <thetext>Comment on attachment 402912
Patch

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

&gt; Source/WebCore/dom/CharacterData.cpp:190
&gt; +    if (is&lt;Text&gt;(*this)) {

Can we make the setNodeValue function be virtual and overridden in the Text class, instead of doing if here? That’s the pattern for C++ programming. Or is that poorer for performance?

And/or why isn’t this in the setData function? Are there calls to setData that must not do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666670</commentid>
    <comment_count>13</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-26 16:25:14 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Comment on attachment 402912 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=402912&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/CharacterData.cpp:190
&gt; &gt; +    if (is&lt;Text&gt;(*this)) {
&gt; 
&gt; Can we make the setNodeValue function be virtual and overridden in the Text
&gt; class, instead of doing if here? That’s the pattern for C++ programming. Or
&gt; is that poorer for performance?
&gt; 

Sure, will update the patch by overriding setData in Text.

&gt; And/or why isn’t this in the setData function? Are there calls to setData
&gt; that must not do this?

No, I just misunderstood your previous comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666671</commentid>
    <comment_count>14</comment_count>
      <attachid>402922</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-26 16:25:54 -0700</bug_when>
    <thetext>Created attachment 402922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666897</commentid>
    <comment_count>15</comment_count>
      <attachid>402922</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-28 12:50:48 -0700</bug_when>
    <thetext>Comment on attachment 402922
Patch

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

&gt; Source/WebCore/dom/CharacterData.h:35
&gt; +    WEBCORE_EXPORT virtual void setData(const String&amp;);

Looking even more closely, it seems like the real bottleneck is CharacterData::setDataAndUpdate, called in various cases where setData is not called.

So maybe it would be even better to put the new code there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667158</commentid>
    <comment_count>16</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-29 09:57:08 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #15)
&gt; Comment on attachment 402922 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=402922&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/CharacterData.h:35
&gt; &gt; +    WEBCORE_EXPORT virtual void setData(const String&amp;);
&gt; 
&gt; Looking even more closely, it seems like the real bottleneck is
&gt; CharacterData::setDataAndUpdate, called in various cases where setData is
&gt; not called.
&gt; 
&gt; So maybe it would be even better to put the new code there.

Sure, that should work too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667160</commentid>
    <comment_count>17</comment_count>
      <attachid>403077</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-29 09:58:52 -0700</bug_when>
    <thetext>Created attachment 403077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670624</commentid>
    <comment_count>18</comment_count>
      <attachid>403077</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-10 15:52:00 -0700</bug_when>
    <thetext>Comment on attachment 403077
Patch

r=me

Looks like all comments have been addressed and incorporated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671060</commentid>
    <comment_count>19</comment_count>
      <attachid>404153</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-07-13 10:01:48 -0700</bug_when>
    <thetext>Created attachment 404153
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671073</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-13 10:36:26 -0700</bug_when>
    <thetext>Committed r264305: &lt;https://trac.webkit.org/changeset/264305&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404153.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402159</attachid>
            <date>2020-06-17 15:18:39 -0700</date>
            <delta_ts>2020-06-17 15:20:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213318-20200617151838.patch</filename>
            <type>text/plain</type>
            <size>10173</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRiYmY2NGNhNmY2ZmU1
ZWMwYjMyNTFhMTFjMDQ1NGJhYmJjNTAyYi4uZmZlNGE2OTkwMDk1YTI4NGZjM2I3Njk1OThkYTdm
OTgyMDFjOTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA2LTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFRleHQgbWFuaXB1bGF0aW9u
IGRvZXMgbm90IG9ic2VydmUgbWFuaXB1bGF0ZWQgdGV4dCBhZnRlciB1cGRhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzMxOAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjM3NjY3MDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm90aWZ5IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyIGFib3V0
IHRoZSBjb250ZW50IHVwZGF0ZSBvZiBtYW5pcHVsYXRlZCBUZXh0IG5vZGVzLgorCisgICAgICAg
IFRlc3Q6IFRleHRNYW5pcHVsYXRpb24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9yVXBkYXRl
ZE1hbmlwdWxhdGVkVGV4dAorCisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6c2V0RGF0YSk6CisgICAgICAgICogZG9tL1Rl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OnNldElzTWFuaXB1bGF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dDo6aXNNYW5pcHVsYXRlZCBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlkVXBkYXRlTWFuaXB1bGF0ZWRUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpyZXBsYWNlKToKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmg6CisKIDIwMjAtMDYtMTYg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dCBt
YW5pcHVsYXRpb24gc2hvdWxkIGhhbmRsZSBuZXN0ZWQgaXRlbSBib3VuZGFyeSBlbGVtZW50cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDEzMTM5YTJhNjJkMTBhODRlNWU0
OTkwYWVhZGM1ZDk1ZWU0YjZhOTMuLjNkMzc2Y2M3OWM1YjVkYjdhZmJjZmMxNmU5NDYwODdkYmJl
ZGM0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJSZW5kZXJU
ZXh0LmgiCiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgiCisjaW5jbHVkZSAiVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTY0
LDYgKzY1LDEyIEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIGRh
dGEpCiAKICAgICBzZXREYXRhQW5kVXBkYXRlKG5vbk51bGxEYXRhLCAwLCBvbGRMZW5ndGgsIG5v
bk51bGxEYXRhLmxlbmd0aCgpKTsKICAgICBkb2N1bWVudCgpLnRleHRSZW1vdmVkKCp0aGlzLCAw
LCBvbGRMZW5ndGgpOworCisgICAgaWYgKGlzPFRleHQ+KCp0aGlzKSAmJiBkb3duY2FzdDxUZXh0
PigqdGhpcykuaXNNYW5pcHVsYXRlZCgpKSB7CisgICAgICAgIGF1dG8qIHRleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyID0gZG9jdW1lbnQoKS50ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcklmRXhp
c3RzKCk7CisgICAgICAgIGlmIChVTkxJS0VMWSh0ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcikp
CisgICAgICAgICAgICB0ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci0+ZGlkVXBkYXRlTWFuaXB1
bGF0ZWRUZXh0KGRvd25jYXN0PFRleHQ+KCp0aGlzKSk7CisgICAgfQogfQogCiBFeGNlcHRpb25P
cjxTdHJpbmc+IENoYXJhY3RlckRhdGE6OnN1YnN0cmluZ0RhdGEodW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCmluZGV4IDVmZjVlNzc3YmViNmQ3NDhkNjVjZDgwNGY2
ZmIxMDBmZTdiMzBkOTguLjhhODNjNDk4YzM2OTAxMjUwNmFiOTdkNjQxNzdiNTU5ZGM4ODMwNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RleHQuaApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZGVi
dWdEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBzZXRJc01hbmlwdWxhdGVk
KGJvb2wgaXNNYW5pcHVsYXRlZCkgeyBtX2lzTWFuaXB1bGF0ZWQgPSBpc01hbmlwdWxhdGVkOyB9
CisgICAgYm9vbCBpc01hbmlwdWxhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01hbmlwdWxhdGVk
OyB9CisKIHByb3RlY3RlZDoKICAgICBUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBkYXRhLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgICAgIDogQ2hhcmFjdGVyRGF0
YShkb2N1bWVudCwgZGF0YSwgdHlwZSkKQEAgLTc0LDYgKzc3LDggQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAgICAgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBi
dWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKKworICAgIGJv
b2wgbV9pc01hbmlwdWxhdGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlci5jcHAKaW5kZXggNWZhNGFhMTE0MzBiNDc4NGViNGQ2MTdiZWRhNjNmZTA3Zjk2Zjkw
Ni4uOTJkODNlMDU5N2RmNzI0NDQ1NTM2M2UzNDc2NWE4NDk5YWM2NjQxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTQ5MSw2ICs0OTEsMjkgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlk
Q3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIG1fZWxl
bWVudHNXaXRoTmV3UmVuZGVyZXIuYWRkKGVsZW1lbnQpOwogfQogCit2b2lkIFRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpkaWRVcGRhdGVNYW5pcHVsYXRlZFRleHQoVGV4dCYgdGV4dCkKK3sK
KyAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdGV4dHNXaXRo
VXBkYXRlLmFkZCgmdGV4dCk7CisgICAgbV9kb2N1bWVudC0+ZXZlbnRMb29wKCkucXVldWVUYXNr
KFRhc2tTb3VyY2U6OkludGVybmFsQXN5bmNUYXNrLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldIHsKKyAgICAgICAgYXV0byogY29udHJvbGxlciA9IHdlYWtUaGlzLmdldCgpOworICAg
ICAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9y
IChhdXRvJiB0ZXh0IDogY29udHJvbGxlci0+bV90ZXh0c1dpdGhVcGRhdGUpIHsKKyAgICAgICAg
ICAgIGlmICghdGV4dC0+aXNDb25uZWN0ZWQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgYXV0byBzdGFydCA9IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSh0
ZXh0LmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gbGFzdFBvc2l0aW9uSW5PckFmdGVy
Tm9kZSh0ZXh0LmdldCgpKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPm9ic2VydmVQYXJhZ3Jh
cGhzKHN0YXJ0LCBlbmQpOworICAgICAgICB9CisgICAgICAgIGNvbnRyb2xsZXItPmZsdXNoUGVu
ZGluZ0l0ZW1zRm9yQ2FsbGJhY2soKTsKKyAgICB9KTsKK30KKwogdXNpbmcgUG9zaXRpb25UdXBs
ZSA9IHN0ZDo6dHVwbGU8UmVmUHRyPE5vZGU+LCB1bnNpZ25lZCwgdW5zaWduZWQ+Owogc3RhdGlj
IGNvbnN0IFBvc2l0aW9uVHVwbGUgbWFrZVBvc2l0aW9uVHVwbGUoY29uc3QgUG9zaXRpb24mIHBv
c2l0aW9uKQogewpAQCAtODAwLDYgKzgyMyw4IEBAIGF1dG8gVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXI6OnJlcGxhY2UoY29uc3QgTWFuaXB1bGF0aW9uSXRlbURhdGEmIGl0ZW0sIGNvbnN0CiAg
ICAgICAgICAgICBpbnNlcnRpb24ucGFyZW50SWZEaWZmZXJlbnRGcm9tQ29tbW9uQW5jZXN0b3It
PmFwcGVuZENoaWxkKGluc2VydGlvbi5jaGlsZCk7CiAgICAgICAgIGlmIChpczxFbGVtZW50Pihp
bnNlcnRpb24uY2hpbGQuZ2V0KCkpICYmIGluc2VydGlvbi5pc0NoaWxkTWFuaXB1bGF0ZWQgPT0g
SXNOb2RlTWFuaXB1bGF0ZWQ6OlllcykKICAgICAgICAgICAgIG1fbWFuaXB1bGF0ZWRFbGVtZW50
cy5hZGQoZG93bmNhc3Q8RWxlbWVudD4oaW5zZXJ0aW9uLmNoaWxkLmdldCgpKSk7CisgICAgICAg
IGlmIChpczxUZXh0PihpbnNlcnRpb24uY2hpbGQuZ2V0KCkpKQorICAgICAgICAgICAgZG93bmNh
c3Q8VGV4dD4oaW5zZXJ0aW9uLmNoaWxkLmdldCgpKS5zZXRJc01hbmlwdWxhdGVkKHRydWUpOwog
ICAgIH0KIAogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKaW5kZXggZDZhY2QzYzFlNDc0
NjlkODc3NTZlYWY4MDE4YjczYTY2NGI5OWU5OS4uZjA2NDFmYTU4OTBiZTM3MzIyNDk2ZjYzZTYz
MjExM2NkZTQ5NjczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5nUGFyYWdyYXBocyhNYW5pcHVsYXRpb25J
dGVtQ2FsbGJhY2smJiwgVmVjdG9yPEV4Y2x1c2lvblJ1bGU+JiYgPSB7IH0pOwogCiAgICAgdm9p
ZCBkaWRDcmVhdGVSZW5kZXJlckZvckVsZW1lbnQoRWxlbWVudCYpOworICAgIHZvaWQgZGlkVXBk
YXRlTWFuaXB1bGF0ZWRUZXh0KFRleHQmKTsKIAogICAgIGVudW0gY2xhc3MgTWFuaXB1bGF0aW9u
RmFpbHVyZVR5cGUgOiB1aW50OF90IHsKICAgICAgICAgQ29udGVudENoYW5nZWQsCkBAIC0xNzcs
NiArMTc4LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50Owog
ICAgIFdlYWtIYXNoU2V0PEVsZW1lbnQ+IG1fZWxlbWVudHNXaXRoTmV3UmVuZGVyZXI7CiAgICAg
V2Vha0hhc2hTZXQ8RWxlbWVudD4gbV9tYW5pcHVsYXRlZEVsZW1lbnRzOworICAgIEhhc2hTZXQ8
UmVmUHRyPFRleHQ+PiBtX3RleHRzV2l0aFVwZGF0ZTsKIAogICAgIE1hbmlwdWxhdGlvbkl0ZW1D
YWxsYmFjayBtX2NhbGxiYWNrOwogICAgIFZlY3RvcjxNYW5pcHVsYXRpb25JdGVtPiBtX3BlbmRp
bmdJdGVtc0ZvckNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDkyNTViMTEzNDM4ZjY1MDhjMDAzOTFiYzczMmNhYzhmMmUyYzU5YmUu
LjI2NDM0ZGQ5MWI5N2Q4YjE0NWRhMjAyYjI4OWFhNDU0NTE5MGIzZjQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAy
MC0wNi0xNyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0
IG1hbmlwdWxhdGlvbiBkb2VzIG5vdCBvYnNlcnZlIG1hbmlwdWxhdGVkIHRleHQgYWZ0ZXIgdXBk
YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMz
MTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzNzY2NzAzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisKKzIwMjAtMDYtMTcgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUkVHUkVTU0lPTiAocjI2MzA0NCk6IFttYWNPU10gVGVzdFdlYktpdEFQSS5UZXh0TWFu
aXB1bGF0aW9uLkluc2VydGluZ0NvbnRlbnRJbnRvQWxyZWFkeU1hbmlwdWxhdGVkQ29udGVudENy
ZWF0ZXNUZXh0TWFuaXB1bGF0aW9uSXRlbSBpcyBhIGZsYWt5IGZhaWx1cmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzMxMQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjQ0NTY0MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGV4dE1hbmlwdWxhdGlvbi5JbnNlcnRpbmdDb250ZW50SW50b0FscmVh
ZHlNYW5pcHVsYXRlZENvbnRlbnRDcmVhdGVzVGV4dE1hbmlwdWxhdGlvbkl0ZW0gZG9lcyBub3Qg
d2FpdCBsb25nIAorICAgICAgICBlbm91Z2ggdG8gbWFrZSBzdXJlIFRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyIGdldHMgbm90aWZpZWQgYWJvdXQgdGhlIGluc2VydGlvbiBhbmQgc3RhcnRzIG9i
c2VydmluZy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4
dE1hbmlwdWxhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIw
LTA2LTE2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IFRleHQgbWFuaXB1bGF0aW9uIHNob3VsZCBoYW5kbGUgbmVzdGVkIGl0ZW0gYm91bmRhcnkgZWxl
bWVudHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VGV4dE1hbmlwdWxhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvVGV4dE1hbmlwdWxhdGlvbi5tbQppbmRleCA0ZmI1YzU2YzM1OGRkZGRmYThhYjY0MDM3ZWI3
YjU1ZDQ5ODA0OWM0Li5mNmVmNTdjMzllM2FkYzAwZDZlMjk0NTliNTJiYWI3NjI0OGI3MDg3IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5p
cHVsYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9U
ZXh0TWFuaXB1bGF0aW9uLm1tCkBAIC0yNTgyLDYgKzI1ODIsNTcgQEAgVEVTVChUZXh0TWFuaXB1
bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JOZXdseURpc3BsYXllZFBhcmFncmFw
aCkKICAgICBFWFBFQ1RfV0tfU1RSRVEoIjxiPldlYktpdCE8L2I+PHNwYW4+SGVsbG8gV29ybGQ8
aT5CeWU8L2k+PC9zcGFuPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYnKS5pbm5lckhUTUwiXSk7CiB9CiAKK1RFU1Qo
VGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9yVXBkYXRlZE1hbmlw
dWxhdGVkVGV4dCkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRNYW5pcHVs
YXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAw
LCA0MDApXSk7CisgICAgW3dlYlZpZXcgX3NldFRleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
QCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48c3Bhbj5oZWxsbyB3b3JsZDwvc3Bhbj48L2Jv
ZHk+PC9odG1sPiJdOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdGFydFRl
eHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb246XnsKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKKworICAgIGF1dG8gKml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKKyAgICBFWFBFQ1Rf
RVEoaXRlbXMuY291bnQsIDFVTCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3Vu
dCwgMVVMKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvIHdvcmxkIiwgaXRlbXNbMF0udG9r
ZW5zWzBdLmNvbnRlbnQpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9jb21w
bGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAWworICAgICAgICBjcmVhdGVJdGVtKGl0ZW1z
WzBdLmlkZW50aWZpZXIsIHt7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAIkhlbGxv
IFdvcmxkIiB9fSkuZ2V0KCksCisgICAgXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+
ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKKyAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoIjxzcGFuPkhlbGxvIFdvcmxkPC9zcGFuPiIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJd
KTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5pdGVtQ2FsbGJhY2sg
PSBeKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICppdGVtKSB7CisgICAgICAgIGRvbmUgPSB0cnVl
OworICAgIH07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKS5pbm5lckhUTUw9J2hlbGxvIHdlYmtpdCc7Il07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIEVYUEVDVF9FUShp
dGVtcy5jb3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfRVEoaXRlbXNbMV0udG9rZW5zLmNvdW50LCAx
VUwpOworICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8gd2Via2l0IiwgaXRlbXNbMV0udG9rZW5z
WzBdLmNvbnRlbnQpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9jb21wbGV0
ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAWworICAgICAgICBjcmVhdGVJdGVtKGl0ZW1zWzFd
LmlkZW50aWZpZXIsIHt7IGl0ZW1zWzFdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAIkhlbGxvIFdl
YktpdCIgfX0pLmdldCgpLAorICAgIF0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAq
ZXJyb3JzKSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMsIG5pbCk7CisgICAgICAgIGRvbmUg
PSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCI8c3Bhbj5IZWxsbyBXZWJLaXQ8L3NwYW4+IiwgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0p
OworfQorCiBURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25Ub2tlbkRlYnVn
RGVzY3JpcHRpb24pCiB7CiAgICAgYXV0byB0b2tlbiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1
bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402160</attachid>
            <date>2020-06-17 15:20:36 -0700</date>
            <delta_ts>2020-06-26 12:46:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213318-20200617152035.patch</filename>
            <type>text/plain</type>
            <size>10211</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRiYmY2NGNhNmY2ZmU1
ZWMwYjMyNTFhMTFjMDQ1NGJhYmJjNTAyYi4uZmZlNGE2OTkwMDk1YTI4NGZjM2I3Njk1OThkYTdm
OTgyMDFjOTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA2LTE3ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFRleHQgbWFuaXB1bGF0aW9u
IGRvZXMgbm90IG9ic2VydmUgbWFuaXB1bGF0ZWQgdGV4dCBhZnRlciB1cGRhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzMxOAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjM3NjY3MDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm90aWZ5IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyIGFib3V0
IHRoZSBjb250ZW50IHVwZGF0ZSBvZiBtYW5pcHVsYXRlZCBUZXh0IG5vZGVzLgorCisgICAgICAg
IFRlc3Q6IFRleHRNYW5pcHVsYXRpb24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9yVXBkYXRl
ZE1hbmlwdWxhdGVkVGV4dAorCisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6c2V0RGF0YSk6CisgICAgICAgICogZG9tL1Rl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OnNldElzTWFuaXB1bGF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dDo6aXNNYW5pcHVsYXRlZCBjb25zdCk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlkVXBkYXRlTWFuaXB1bGF0ZWRUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpyZXBsYWNlKToKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmg6CisKIDIwMjAtMDYtMTYg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dCBt
YW5pcHVsYXRpb24gc2hvdWxkIGhhbmRsZSBuZXN0ZWQgaXRlbSBib3VuZGFyeSBlbGVtZW50cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDEzMTM5YTJhNjJkMTBhODRlNWU0
OTkwYWVhZGM1ZDk1ZWU0YjZhOTMuLjNkMzc2Y2M3OWM1YjVkYjdhZmJjZmMxNmU5NDYwODdkYmJl
ZGM0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJSZW5kZXJU
ZXh0LmgiCiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgiCisjaW5jbHVkZSAiVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDx1bmljb2RlL3VicmsuaD4KICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTY0
LDYgKzY1LDEyIEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIGRh
dGEpCiAKICAgICBzZXREYXRhQW5kVXBkYXRlKG5vbk51bGxEYXRhLCAwLCBvbGRMZW5ndGgsIG5v
bk51bGxEYXRhLmxlbmd0aCgpKTsKICAgICBkb2N1bWVudCgpLnRleHRSZW1vdmVkKCp0aGlzLCAw
LCBvbGRMZW5ndGgpOworCisgICAgaWYgKGlzPFRleHQ+KCp0aGlzKSAmJiBkb3duY2FzdDxUZXh0
PigqdGhpcykuaXNNYW5pcHVsYXRlZCgpKSB7CisgICAgICAgIGF1dG8qIHRleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyID0gZG9jdW1lbnQoKS50ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcklmRXhp
c3RzKCk7CisgICAgICAgIGlmIChVTkxJS0VMWSh0ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcikp
CisgICAgICAgICAgICB0ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci0+ZGlkVXBkYXRlTWFuaXB1
bGF0ZWRUZXh0KGRvd25jYXN0PFRleHQ+KCp0aGlzKSk7CisgICAgfQogfQogCiBFeGNlcHRpb25P
cjxTdHJpbmc+IENoYXJhY3RlckRhdGE6OnN1YnN0cmluZ0RhdGEodW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBjb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCmluZGV4IDVmZjVlNzc3YmViNmQ3NDhkNjVjZDgwNGY2
ZmIxMDBmZTdiMzBkOTguLjhhODNjNDk4YzM2OTAxMjUwNmFiOTdkNjQxNzdiNTU5ZGM4ODMwNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RleHQuaApAQCAtNTcsNiArNTcsOSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZGVi
dWdEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBzZXRJc01hbmlwdWxhdGVk
KGJvb2wgaXNNYW5pcHVsYXRlZCkgeyBtX2lzTWFuaXB1bGF0ZWQgPSBpc01hbmlwdWxhdGVkOyB9
CisgICAgYm9vbCBpc01hbmlwdWxhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01hbmlwdWxhdGVk
OyB9CisKIHByb3RlY3RlZDoKICAgICBUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBkYXRhLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgICAgIDogQ2hhcmFjdGVyRGF0
YShkb2N1bWVudCwgZGF0YSwgdHlwZSkKQEAgLTc0LDYgKzc3LDggQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAgICAgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBi
dWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKKworICAgIGJv
b2wgbV9pc01hbmlwdWxhdGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlci5jcHAKaW5kZXggNWZhNGFhMTE0MzBiNDc4NGViNGQ2MTdiZWRhNjNmZTA3Zjk2Zjkw
Ni4uZmNhYzk0YjI5MDU4YTkzNDNlNTc1M2YxYmNkMzNhNjdlMjFjOGM4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTQ5MSw2ICs0OTEsMzEgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlk
Q3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIG1fZWxl
bWVudHNXaXRoTmV3UmVuZGVyZXIuYWRkKGVsZW1lbnQpOwogfQogCit2b2lkIFRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpkaWRVcGRhdGVNYW5pcHVsYXRlZFRleHQoVGV4dCYgdGV4dCkKK3sK
KyAgICBpZiAoIW1fZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fdGV4dHNXaXRo
VXBkYXRlLmFkZCgmdGV4dCk7CisgICAgbV9kb2N1bWVudC0+ZXZlbnRMb29wKCkucXVldWVUYXNr
KFRhc2tTb3VyY2U6OkludGVybmFsQXN5bmNUYXNrLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldIHsKKyAgICAgICAgYXV0byogY29udHJvbGxlciA9IHdlYWtUaGlzLmdldCgpOworICAg
ICAgICBpZiAoIWNvbnRyb2xsZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9y
IChhdXRvJiB0ZXh0IDogY29udHJvbGxlci0+bV90ZXh0c1dpdGhVcGRhdGUpIHsKKyAgICAgICAg
ICAgIGlmICghdGV4dC0+aXNDb25uZWN0ZWQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgYXV0byBzdGFydCA9IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSh0
ZXh0LmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gbGFzdFBvc2l0aW9uSW5PckFmdGVy
Tm9kZSh0ZXh0LmdldCgpKTsKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPm9ic2VydmVQYXJhZ3Jh
cGhzKHN0YXJ0LCBlbmQpOworICAgICAgICB9CisKKyAgICAgICAgbV90ZXh0c1dpdGhVcGRhdGUu
Y2xlYXIoKTsKKyAgICAgICAgY29udHJvbGxlci0+Zmx1c2hQZW5kaW5nSXRlbXNGb3JDYWxsYmFj
aygpOworICAgIH0pOworfQorCiB1c2luZyBQb3NpdGlvblR1cGxlID0gc3RkOjp0dXBsZTxSZWZQ
dHI8Tm9kZT4sIHVuc2lnbmVkLCB1bnNpZ25lZD47CiBzdGF0aWMgY29uc3QgUG9zaXRpb25UdXBs
ZSBtYWtlUG9zaXRpb25UdXBsZShjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7CkBAIC04MDAs
NiArODI1LDggQEAgYXV0byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25z
dCBNYW5pcHVsYXRpb25JdGVtRGF0YSYgaXRlbSwgY29uc3QKICAgICAgICAgICAgIGluc2VydGlv
bi5wYXJlbnRJZkRpZmZlcmVudEZyb21Db21tb25BbmNlc3Rvci0+YXBwZW5kQ2hpbGQoaW5zZXJ0
aW9uLmNoaWxkKTsKICAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KGluc2VydGlvbi5jaGlsZC5nZXQo
KSkgJiYgaW5zZXJ0aW9uLmlzQ2hpbGRNYW5pcHVsYXRlZCA9PSBJc05vZGVNYW5pcHVsYXRlZDo6
WWVzKQogICAgICAgICAgICAgbV9tYW5pcHVsYXRlZEVsZW1lbnRzLmFkZChkb3duY2FzdDxFbGVt
ZW50PihpbnNlcnRpb24uY2hpbGQuZ2V0KCkpKTsKKyAgICAgICAgaWYgKGlzPFRleHQ+KGluc2Vy
dGlvbi5jaGlsZC5nZXQoKSkpCisgICAgICAgICAgICBkb3duY2FzdDxUZXh0PihpbnNlcnRpb24u
Y2hpbGQuZ2V0KCkpLnNldElzTWFuaXB1bGF0ZWQodHJ1ZSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXIuaAppbmRleCBkNmFjZDNjMWU0NzQ2OWQ4Nzc1NmVhZjgwMThiNzNh
NjY0Yjk5ZTk5Li5mMDY0MWZhNTg5MGJlMzczMjI0OTZmNjNlNjMyMTEzY2RlNDk2NzM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
ci5oCkBAIC0xMTYsNiArMTE2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c3RhcnRPYnNlcnZpbmdQYXJhZ3JhcGhzKE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayYmLCBWZWN0
b3I8RXhjbHVzaW9uUnVsZT4mJiA9IHsgfSk7CiAKICAgICB2b2lkIGRpZENyZWF0ZVJlbmRlcmVy
Rm9yRWxlbWVudChFbGVtZW50Jik7CisgICAgdm9pZCBkaWRVcGRhdGVNYW5pcHVsYXRlZFRleHQo
VGV4dCYpOwogCiAgICAgZW51bSBjbGFzcyBNYW5pcHVsYXRpb25GYWlsdXJlVHlwZSA6IHVpbnQ4
X3QgewogICAgICAgICBDb250ZW50Q2hhbmdlZCwKQEAgLTE3Nyw2ICsxNzgsNyBAQCBwcml2YXRl
OgogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgV2Vha0hhc2hTZXQ8RWxl
bWVudD4gbV9lbGVtZW50c1dpdGhOZXdSZW5kZXJlcjsKICAgICBXZWFrSGFzaFNldDxFbGVtZW50
PiBtX21hbmlwdWxhdGVkRWxlbWVudHM7CisgICAgSGFzaFNldDxSZWZQdHI8VGV4dD4+IG1fdGV4
dHNXaXRoVXBkYXRlOwogCiAgICAgTWFuaXB1bGF0aW9uSXRlbUNhbGxiYWNrIG1fY2FsbGJhY2s7
CiAgICAgVmVjdG9yPE1hbmlwdWxhdGlvbkl0ZW0+IG1fcGVuZGluZ0l0ZW1zRm9yQ2FsbGJhY2s7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTI1
NWIxMTM0MzhmNjUwOGMwMDM5MWJjNzMyY2FjOGYyZTJjNTliZS4uMjY0MzRkZDkxYjk3ZDhiMTQ1
ZGEyMDJiMjg5YWE0NTQ1MTkwYjNmNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA2LTE3ICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFRleHQgbWFuaXB1bGF0aW9uIGRvZXMg
bm90IG9ic2VydmUgbWFuaXB1bGF0ZWQgdGV4dCBhZnRlciB1cGRhdGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzMxOAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjM3NjY3MDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVs
YXRpb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKworMjAyMC0wNi0xNyAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChy
MjYzMDQ0KTogW21hY09TXSBUZXN0V2ViS2l0QVBJLlRleHRNYW5pcHVsYXRpb24uSW5zZXJ0aW5n
Q29udGVudEludG9BbHJlYWR5TWFuaXB1bGF0ZWRDb250ZW50Q3JlYXRlc1RleHRNYW5pcHVsYXRp
b25JdGVtIGlzIGEgZmxha3kgZmFpbHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDQ1NjQx
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXh0
TWFuaXB1bGF0aW9uLkluc2VydGluZ0NvbnRlbnRJbnRvQWxyZWFkeU1hbmlwdWxhdGVkQ29udGVu
dENyZWF0ZXNUZXh0TWFuaXB1bGF0aW9uSXRlbSBkb2VzIG5vdCB3YWl0IGxvbmcgCisgICAgICAg
IGVub3VnaCB0byBtYWtlIHN1cmUgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIgZ2V0cyBub3Rp
ZmllZCBhYm91dCB0aGUgaW5zZXJ0aW9uIGFuZCBzdGFydHMgb2JzZXJ2aW5nLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDYtMTYgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dCBtYW5pcHVsYXRpb24g
c2hvdWxkIGhhbmRsZSBuZXN0ZWQgaXRlbSBib3VuZGFyeSBlbGVtZW50cwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9u
Lm1tCmluZGV4IDRmYjVjNTZjMzU4ZGRkZGZhOGFiNjQwMzdlYjdiNTVkNDk4MDQ5YzQuLmY2ZWY1
N2MzOWUzYWRjMDBkNmUyOTQ1OWI1MmJhYjc2MjQ4YjcwODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0K
QEAgLTI1ODIsNiArMjU4Miw1NyBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4
dE1hbmlwdWxhdGlvbkZvck5ld2x5RGlzcGxheWVkUGFyYWdyYXBoKQogICAgIEVYUEVDVF9XS19T
VFJFUSgiPGI+V2ViS2l0ITwvYj48c3Bhbj5IZWxsbyBXb3JsZDxpPkJ5ZTwvaT48L3NwYW4+Iiwg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ2RpdicpLmlubmVySFRNTCJdKTsKIH0KIAorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBD
b21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JVcGRhdGVkTWFuaXB1bGF0ZWRUZXh0KQoreworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKKyAgICBbd2Vi
VmlldyBfc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjwhRE9DVFlQRSBodG1sPjxo
dG1sPjxib2R5PjxzcGFuPmhlbGxvIHdvcmxkPC9zcGFuPjwvYm9keT48L2h0bWw+Il07CisKKyAg
ICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3N0YXJ0VGV4dE1hbmlwdWxhdGlvbnNXaXRo
Q29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbjpeeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgYXV0byAq
aXRlbXMgPSBbZGVsZWdhdGUgaXRlbXNdOworICAgIEVYUEVDVF9FUShpdGVtcy5jb3VudCwgMVVM
KTsKKyAgICBFWFBFQ1RfRVEoaXRlbXNbMF0udG9rZW5zLmNvdW50LCAxVUwpOworICAgIEVYUEVD
VF9XS19TVFJFUSgiaGVsbG8gd29ybGQiLCBpdGVtc1swXS50b2tlbnNbMF0uY29udGVudCk7CisK
KyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlv
bkZvckl0ZW1zOkBbCisgICAgICAgIGNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwge3sg
aXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiSGVsbG8gV29ybGQiIH19KS5nZXQoKSwK
KyAgICBdIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykgeworICAgICAg
ICBFWFBFQ1RfRVEoZXJyb3JzLCBuaWwpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIEVYUEVDVF9XS19TVFJF
USgiPHNwYW4+SGVsbG8gV29ybGQ8L3NwYW4+IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOworCisgICAgZG9uZSA9IGZh
bHNlOworICAgIGRlbGVnYXRlLmdldCgpLml0ZW1DYWxsYmFjayA9IF4oX1dLVGV4dE1hbmlwdWxh
dGlvbkl0ZW0gKml0ZW0pIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignc3BhbicpLmlubmVySFRNTD0naGVsbG8gd2Via2l0JzsiXTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX0VRKGl0ZW1zLmNvdW50LCAyVUwpOwor
ICAgIEVYUEVDVF9FUShpdGVtc1sxXS50b2tlbnMuY291bnQsIDFVTCk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKCJoZWxsbyB3ZWJraXQiLCBpdGVtc1sxXS50b2tlbnNbMF0uY29udGVudCk7CisKKyAg
ICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZv
ckl0ZW1zOkBbCisgICAgICAgIGNyZWF0ZUl0ZW0oaXRlbXNbMV0uaWRlbnRpZmllciwge3sgaXRl
bXNbMV0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiSGVsbG8gV2ViS2l0IiB9fSkuZ2V0KCksCisg
ICAgXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAg
RVhQRUNUX0VRKGVycm9ycywgbmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
IjxzcGFuPkhlbGxvIFdlYktpdDwvc3Bhbj4iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXSk7Cit9CisKIFRFU1QoVGV4dE1h
bmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvblRva2VuRGVidWdEZXNjcmlwdGlvbikKIHsKICAg
ICBhdXRvIHRva2VuID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10g
aW5pdF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402887</attachid>
            <date>2020-06-26 12:46:54 -0700</date>
            <delta_ts>2020-06-26 15:21:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213318-20200626124653.patch</filename>
            <type>text/plain</type>
            <size>10090</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTIzNmYwM2E0MmI1YWYx
OTRiYWNkYjQzYWQyYTBiYjMxYTJjOTJiZS4uOWQzYmFlOWFlZDQzYjBiNTZmM2ZkNzk4ZGYxYmQ5
YThlNDEzMDA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA2LTI2ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVGV4dCBtYW5pcHVsYXRpb24g
ZG9lcyBub3Qgb2JzZXJ2ZSBtYW5pcHVsYXRlZCB0ZXh0IGFmdGVyIHVwZGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzE4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82Mzc2NjcwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyIGJlIGF3YXJl
IG9mIHVwZGF0ZSBvbiBUZXh0IGFuZCBleHRyYWN0IHRoZSBuZXcgY29udGVudC4KKworICAgICAg
ICBUZXN0OiBUZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvck1hbmlw
dWxhdGVkVGV4dFdpdGhOZXdDb250ZW50CisKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpzZXREYXRhKToKKyAgICAgICAg
KiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpkaWRDcmVhdGVSZW5kZXJlckZvckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmRpZFVw
ZGF0ZUNvbnRlbnRGb3JUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpzY2hlZHVsZU9ic2VydmF0aW9uVXBkYXRlKToKKyAgICAgICAgKiBlZGl0aW5n
L1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmg6CisKIDIwMjAtMDYtMjYgIFNpaHVpIExpdSAg
PHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dCBtYW5pcHVsYXRpb24gc2hvdWxk
IG9ic2VydmUgYWRqYWNlbnQgZWxlbWVudHMgd2l0aCBuZXcgcmVuZGVyZXIgdG9nZXRoZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCAxMzEzOWEyYTYyZDEwYTg0ZTVlNDk5
MGFlYWRjNWQ5NWVlNGI2YTkzLi5iZjZiNmIyMDcxYjJiMjA2YjU4OTJiY2U5OGE2ZmRiMjY5MDAx
NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4
dC5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgorI2luY2x1ZGUgIlRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSA8dW5pY29kZS91YnJrLmg+CiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC02Miw4
ICs2MywxNSBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGEoY29uc3QgU3RyaW5nJiBkYXRh
KQogCiAgICAgUmVmPENoYXJhY3RlckRhdGE+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCisgICAg
YXV0byBvbGREYXRhID0gbV9kYXRhOwogICAgIHNldERhdGFBbmRVcGRhdGUobm9uTnVsbERhdGEs
IDAsIG9sZExlbmd0aCwgbm9uTnVsbERhdGEubGVuZ3RoKCkpOwogICAgIGRvY3VtZW50KCkudGV4
dFJlbW92ZWQoKnRoaXMsIDAsIG9sZExlbmd0aCk7CisKKyAgICBpZiAoaXM8VGV4dD4oKnRoaXMp
ICYmICFtX2RhdGEuY29udGFpbnMob2xkRGF0YSkpIHsKKyAgICAgICAgYXV0byogdGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXIgPSBkb2N1bWVudCgpLnRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
SWZFeGlzdHMoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHRleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyKSkKKyAgICAgICAgICAgIHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLT5kaWRVcGRhdGVD
b250ZW50Rm9yVGV4dChkb3duY2FzdDxUZXh0PigqdGhpcykpOworICAgIH0KIH0KIAogRXhjZXB0
aW9uT3I8U3RyaW5nPiBDaGFyYWN0ZXJEYXRhOjpzdWJzdHJpbmdEYXRhKHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgY291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGUxZjg0NDJlYzE0ZDQ3MDQxZjQ3MGE5
ZjFlNzE4ZDRjYTg0NzZkOWYuLjhkMWNkZGM4ZjA0ZTVhMmYzNzM1MWViZDM1Mzk5YmQzMmMwMDY4
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIuY3BwCkBAIC01MDUsOCArNTA1LDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlcjo6ZGlkQ3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgaWYgKG1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlucygmZWxlbWVudCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmNvbXB1dGVzRW1w
dHkoKSkKLSAgICAgICAgc2NoZWR1bGVPYnNlcnZhdGlvblVwZGF0ZSgpOworICAgIHNjaGVkdWxl
T2JzZXJ2YXRpb25VcGRhdGUoKTsKIAogICAgIGlmIChpczxQc2V1ZG9FbGVtZW50PihlbGVtZW50
KSkgewogICAgICAgICBpZiAoYXV0byogaG9zdCA9IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KGVs
ZW1lbnQpLmhvc3RFbGVtZW50KCkpCkBAIC01MTUsOCArNTE0LDIyIEBAIHZvaWQgVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXI6OmRpZENyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50JiBl
bGVtZW50KQogICAgICAgICBtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmFkZChlbGVtZW50KTsK
IH0KIAordm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlkVXBkYXRlQ29udGVudEZv
clRleHQoVGV4dCYgdGV4dCkKK3sKKyAgICBpZiAoIW1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlu
cygmdGV4dCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNjaGVkdWxlT2JzZXJ2YXRpb25VcGRh
dGUoKTsKKworICAgIG1fbWFuaXB1bGF0ZWRUZXh0c1dpdGhOZXdDb250ZW50LmFkZCgmdGV4dCk7
Cit9CisKIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxlT2JzZXJ2YXRp
b25VcGRhdGUoKQogeworICAgIC8vIEFuIHVwZGF0ZSBpcyBhbHJlYWR5IHNjaGVkdWxlZC4KKyAg
ICBpZiAoIW1fbWFuaXB1bGF0ZWRUZXh0c1dpdGhOZXdDb250ZW50LmlzRW1wdHkoKSB8fCAhbV9l
bGVtZW50c1dpdGhOZXdSZW5kZXJlci5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KwogICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC01MjUsMjMgKzUz
OCwzMCBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpzY2hlZHVsZU9ic2VydmF0
aW9uVXBkYXRlKCkKICAgICAgICAgaWYgKCFjb250cm9sbGVyKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIEhhc2hTZXQ8UmVmPEVsZW1lbnQ+PiBlbGVtZW50c1RvT2JzZXJ2ZTsKKyAg
ICAgICAgSGFzaFNldDxSZWY8Tm9kZT4+IG5vZGVzVG9PYnNlcnZlOwogICAgICAgICBmb3IgKGF1
dG8mIHdlYWtFbGVtZW50IDogY29udHJvbGxlci0+bV9lbGVtZW50c1dpdGhOZXdSZW5kZXJlcikK
LSAgICAgICAgICAgIGVsZW1lbnRzVG9PYnNlcnZlLmFkZCh3ZWFrRWxlbWVudCk7CisgICAgICAg
ICAgICBub2Rlc1RvT2JzZXJ2ZS5hZGQod2Vha0VsZW1lbnQpOwogICAgICAgICBjb250cm9sbGVy
LT5tX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmNsZWFyKCk7CiAKLSAgICAgICAgaWYgKGVsZW1l
bnRzVG9PYnNlcnZlLmlzRW1wdHkoKSkKKyAgICAgICAgZm9yIChhdXRvKiB0ZXh0IDogY29udHJv
bGxlci0+bV9tYW5pcHVsYXRlZFRleHRzV2l0aE5ld0NvbnRlbnQpIHsKKyAgICAgICAgICAgIGlm
ICghY29udHJvbGxlci0+bV9tYW5pcHVsYXRlZE5vZGVzLmNvbnRhaW5zKHRleHQpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29udHJvbGxlci0+bV9tYW5pcHVsYXRl
ZE5vZGVzLnJlbW92ZSh0ZXh0KTsKKyAgICAgICAgICAgIG5vZGVzVG9PYnNlcnZlLmFkZCgqdGV4
dCk7CisgICAgICAgIH0KKyAgICAgICAgY29udHJvbGxlci0+bV9tYW5pcHVsYXRlZFRleHRzV2l0
aE5ld0NvbnRlbnQuY2xlYXIoKTsKKworICAgICAgICBpZiAobm9kZXNUb09ic2VydmUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFJlZlB0cjxOb2RlPiBjb21tb25B
bmNlc3RvcjsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHNUb09ic2VydmUp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXNUb09ic2VydmUpIHsKICAgICAgICAg
ICAgIGlmICghY29tbW9uQW5jZXN0b3IpCi0gICAgICAgICAgICAgICAgY29tbW9uQW5jZXN0b3Ig
PSBtYWtlUmVmUHRyKGVsZW1lbnQuZ2V0KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoIWVsZW1l
bnQtPmlzRGVzY2VuZGFudE9mKGNvbW1vbkFuY2VzdG9yLmdldCgpKSkgewotICAgICAgICAgICAg
ICAgIGNvbW1vbkFuY2VzdG9yID0gY29tbW9uSW5jbHVzaXZlQW5jZXN0b3IoKmNvbW1vbkFuY2Vz
dG9yLCBlbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoY29tbW9uQW5jZXN0
b3IpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9yID0gaXM8
Q29udGFpbmVyTm9kZT4obm9kZS5nZXQoKSkgPyBub2RlLnB0cigpIDogbm9kZS0+cGFyZW50Tm9k
ZSgpOworICAgICAgICAgICAgZWxzZSBpZiAoIW5vZGUtPmlzRGVzY2VuZGFudE9mKGNvbW1vbkFu
Y2VzdG9yLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb21tb25BbmNlc3RvciA9IGNvbW1vbklu
Y2x1c2l2ZUFuY2VzdG9yKCpjb21tb25BbmNlc3Rvciwgbm9kZS5nZXQoKSk7CiAgICAgICAgIH0K
KyAgICAgICAgCiAgICAgICAgIGF1dG8gc3RhcnQgPSBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5v
ZGUoY29tbW9uQW5jZXN0b3IuZ2V0KCkpOwogICAgICAgICBhdXRvIGVuZCA9IGxhc3RQb3NpdGlv
bkluT3JBZnRlck5vZGUoY29tbW9uQW5jZXN0b3IuZ2V0KCkpOwogICAgICAgICBjb250cm9sbGVy
LT5vYnNlcnZlUGFyYWdyYXBocyhzdGFydCwgZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaAppbmRleCA3NjQwNjk4YTU3ZjRi
NTlkNDQwOGQ1MjVhMDg4Yzk0OGRhY2VmNDMwLi45ZGQyZWQxYjMzMjNkMjQwNzU0NDgxMTQ4MTk2
MDM0Y2I5YzBlOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlci5oCkBAIC0xMTYsNiArMTE2LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdQYXJhZ3JhcGhzKE1hbmlwdWxhdGlvbkl0
ZW1DYWxsYmFjayYmLCBWZWN0b3I8RXhjbHVzaW9uUnVsZT4mJiA9IHsgfSk7CiAKICAgICB2b2lk
IGRpZENyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50Jik7CisgICAgdm9pZCBkaWRVcGRh
dGVDb250ZW50Rm9yVGV4dChUZXh0Jik7CiAgICAgdm9pZCByZW1vdmVOb2RlKE5vZGUqKTsKIAog
ICAgIGVudW0gY2xhc3MgTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGUgOiB1aW50OF90IHsKQEAgLTE3
OSw2ICsxODAsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVu
dDsKICAgICBXZWFrSGFzaFNldDxFbGVtZW50PiBtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyOwor
ICAgIEhhc2hTZXQ8VGV4dCo+IG1fbWFuaXB1bGF0ZWRUZXh0c1dpdGhOZXdDb250ZW50OwogICAg
IEhhc2hTZXQ8Tm9kZSo+IG1fbWFuaXB1bGF0ZWROb2RlczsKIAogICAgIEhhc2hNYXA8U3RyaW5n
LCBib29sPiBtX2NhY2hlZEZvbnRGYW1pbHlFeGNsdXNpb25SZXN1bHRzOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGViYjJhNTk1MGRkMTAxZjA0
YzBmOTNmNmY0YzYzMjA2NWEzNDQxNDQuLjc5NmVmZmExNzQzOWQ1ODdhYjNhNDBhZDdmYmYxOGQ2
NzdjNDM4MzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNi0yNiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFw
cGUuY29tPgorCisgICAgICAgIFRleHQgbWFuaXB1bGF0aW9uIGRvZXMgbm90IG9ic2VydmUgbWFu
aXB1bGF0ZWQgdGV4dCBhZnRlciB1cGRhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzMxOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM3NjY3
MDM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0wNi0yNiAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0IG1hbmlwdWxhdGlvbiBzaG91bGQgb2Jz
ZXJ2ZSBhZGphY2VudCBlbGVtZW50cyB3aXRoIG5ldyByZW5kZXJlciB0b2dldGhlcgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1
bGF0aW9uLm1tCmluZGV4IGM4YmU0MjU2OGU1OWVlYTdjMDkyNTJjNzZiZmUxNDM3MTI3MTllZmYu
LjdjY2U5NWJmMDhjNmU1NzE2YjExYzNlZTY2YTJhMWQxYWFmZmVlMDQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRp
b24ubW0KQEAgLTI2MjMsNiArMjYyMyw1NyBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBs
ZXRlVGV4dE1hbmlwdWxhdGlvbkZvck5ld2x5RGlzcGxheWVkUGFyYWdyYXBoKQogICAgIEVYUEVD
VF9XS19TVFJFUSgiPGI+V2ViS2l0ITwvYj48c3Bhbj5IZWxsbyBXb3JsZDxpPkJ5ZTwvaT48L3Nw
YW4+IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ2RpdicpLmlubmVySFRNTCJdKTsKIH0KIAorVEVTVChUZXh0TWFuaXB1bGF0
aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JNYW5pcHVsYXRlZFRleHRXaXRoTmV3Q29u
dGVudCkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRNYW5pcHVsYXRpb25E
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDAp
XSk7CisgICAgW3dlYlZpZXcgX3NldFRleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURP
Q1RZUEUgaHRtbD48aHRtbD48Ym9keT48c3Bhbj5oZWxsbyB3b3JsZDwvc3Bhbj48L2JvZHk+PC9o
dG1sPiJdOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdGFydFRleHRNYW5p
cHVsYXRpb25zV2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb246XnsKKyAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KworICAgIGF1dG8gKml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKKyAgICBFWFBFQ1RfRVEoaXRl
bXMuY291bnQsIDFVTCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgMVVM
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvIHdvcmxkIiwgaXRlbXNbMF0udG9rZW5zWzBd
LmNvbnRlbnQpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRl
eHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAWworICAgICAgICBjcmVhdGVJdGVtKGl0ZW1zWzBdLmlk
ZW50aWZpZXIsIHt7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAIkhlbGxvIFdvcmxk
IiB9fSkuZ2V0KCksCisgICAgXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+ICplcnJv
cnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoIjxzcGFuPkhlbGxvIFdvcmxkPC9zcGFuPiIsIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsKKwor
ICAgIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5pdGVtQ2FsbGJhY2sgPSBeKF9X
S1RleHRNYW5pcHVsYXRpb25JdGVtICppdGVtKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAg
IH07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKS5pbm5lckhUTUw9J2hlbGxvIHdlYmtpdCc7Il07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIEVYUEVDVF9FUShpdGVtcy5j
b3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfRVEoaXRlbXNbMV0udG9rZW5zLmNvdW50LCAxVUwpOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8gd2Via2l0IiwgaXRlbXNbMV0udG9rZW5zWzBdLmNv
bnRlbnQpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRN
YW5pcHVsYXRpb25Gb3JJdGVtczpAWworICAgICAgICBjcmVhdGVJdGVtKGl0ZW1zWzFdLmlkZW50
aWZpZXIsIHt7IGl0ZW1zWzFdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAIkhlbGxvIFdlYktpdCIg
fX0pLmdldCgpLAorICAgIF0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3Jz
KSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMsIG5pbCk7CisgICAgICAgIGRvbmUgPSB0cnVl
OworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCI8c3Bhbj5IZWxsbyBXZWJLaXQ8L3NwYW4+IiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOworfQor
CiBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkF2b2lkRXh0
cmFjdGluZ01hbmlwdWxhdGVkVGV4dEFmdGVyTWFuaXB1bGF0aW9uKQogewogICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402912</attachid>
            <date>2020-06-26 15:21:46 -0700</date>
            <delta_ts>2020-06-26 16:25:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213318-20200626152145.patch</filename>
            <type>text/plain</type>
            <size>12791</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTIzNmYwM2E0MmI1YWYx
OTRiYWNkYjQzYWQyYTBiYjMxYTJjOTJiZS4uMmY4ZjA3YzNlODM4NmEzYjJiMjIwNmFiM2IwYTA5
NjE1NzQwYzE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA2LTI2ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVGV4dCBtYW5pcHVsYXRpb24g
ZG9lcyBub3Qgb2JzZXJ2ZSBtYW5pcHVsYXRlZCB0ZXh0IGFmdGVyIHVwZGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzE4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82Mzc2NjcwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyIGJlIGF3YXJl
IG9mIHVwZGF0ZSBvbiBUZXh0IGFuZCBleHRyYWN0IHRoZSBuZXcgY29udGVudC4KKworICAgICAg
ICBUZXN0OiBUZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvck1hbmlw
dWxhdGVkVGV4dFdpdGhOZXdDb250ZW50CisKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRhOjpzZXROb2RlVmFsdWUpOgorICAg
ICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OnJlcGxhY2VXaG9s
ZVRleHQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmRpZENyZWF0
ZVJlbmRlcmVyRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlcjo6ZGlkVXBkYXRlQ29udGVudEZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxlT2JzZXJ2YXRpb25VcGRhdGUpOgor
ICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlQ2hpbGRyZW5X
aXRoRnJhZ21lbnQpOgorCiAyMDIwLTA2LTI2ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFRleHQgbWFuaXB1bGF0aW9uIHNob3VsZCBvYnNlcnZlIGFkamFjZW50
IGVsZW1lbnRzIHdpdGggbmV3IHJlbmRlcmVyIHRvZ2V0aGVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5jcHAKaW5kZXggMTMxMzlhMmE2MmQxMGE4NGU1ZTQ5OTBhZWFkYzVkOTVlZTRiNmE5
My4uNWZlYmI1YzNmOTUzNzk0NWMzOGE0YjMyM2NkYjE2ZmNlZWZiNGM4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlByb2Nl
c3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJT
dHlsZUluaGVyaXRlZERhdGEuaCIKKyNpbmNsdWRlICJUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtMTg1LDYgKzE4NiwxMyBAQCBTdHJp
bmcgQ2hhcmFjdGVyRGF0YTo6bm9kZVZhbHVlKCkgY29uc3QKIEV4Y2VwdGlvbk9yPHZvaWQ+IENo
YXJhY3RlckRhdGE6OnNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmIG5vZGVWYWx1ZSkKIHsKICAg
ICBzZXREYXRhKG5vZGVWYWx1ZSk7CisKKyAgICBpZiAoaXM8VGV4dD4oKnRoaXMpKSB7CisgICAg
ICAgIGF1dG8qIHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyID0gZG9jdW1lbnQoKS50ZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcklmRXhpc3RzKCk7CisgICAgICAgIGlmIChVTkxJS0VMWSh0ZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcikpCisgICAgICAgICAgICB0ZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlci0+ZGlkVXBkYXRlQ29udGVudEZvclRleHQoZG93bmNhc3Q8VGV4dD4oKnRoaXMpKTsK
KyAgICB9CisKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggMDQ1Yzgx
YTY1ZmIwNzY1ODI0OGZmMGUxYmFhMWVhNGQwYWUzYTc4Yi4uZDFhODNjZGU2M2UzNDllZDA1ZDcx
Mjk4MjQ3Y2NlZjI3MmJjOGM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIu
aCIKICNpbmNsdWRlICJTdHlsZVVwZGF0ZS5oIgorI2luY2x1ZGUgIlRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVGV4dE5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlIDx3
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgpAQCAtMTQ4LDYgKzE0OSwxMSBAQCBSZWZQdHI8VGV4dD4gVGV4dDo6cmVwbGFjZVdob2xlVGV4
dChjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAgICAgfQogCiAgICAgc2V0RGF0YShuZXdUZXh0KTsK
KworICAgIGF1dG8qIHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyID0gZG9jdW1lbnQoKS50ZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcklmRXhpc3RzKCk7CisgICAgaWYgKFVOTElLRUxZKHRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyKSkKKyAgICAgICAgdGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXItPmRpZFVwZGF0ZUNvbnRlbnRGb3JUZXh0KCp0aGlzKTsKKwogICAgIHJldHVybiBwcm90ZWN0
ZWRUaGlzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGUxZjg0NDJlYzE0ZDQ3MDQxZjQ3MGE5ZjFlNzE4
ZDRjYTg0NzZkOWYuLjhkMWNkZGM4ZjA0ZTVhMmYzNzM1MWViZDM1Mzk5YmQzMmMwMDY4ZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwCkBAIC01MDUsOCArNTA1LDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6ZGlkQ3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
aWYgKG1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlucygmZWxlbWVudCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmNvbXB1dGVzRW1wdHkoKSkK
LSAgICAgICAgc2NoZWR1bGVPYnNlcnZhdGlvblVwZGF0ZSgpOworICAgIHNjaGVkdWxlT2JzZXJ2
YXRpb25VcGRhdGUoKTsKIAogICAgIGlmIChpczxQc2V1ZG9FbGVtZW50PihlbGVtZW50KSkgewog
ICAgICAgICBpZiAoYXV0byogaG9zdCA9IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnQp
Lmhvc3RFbGVtZW50KCkpCkBAIC01MTUsOCArNTE0LDIyIEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6OmRpZENyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50
KQogICAgICAgICBtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmFkZChlbGVtZW50KTsKIH0KIAor
dm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlkVXBkYXRlQ29udGVudEZvclRleHQo
VGV4dCYgdGV4dCkKK3sKKyAgICBpZiAoIW1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlucygmdGV4
dCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNjaGVkdWxlT2JzZXJ2YXRpb25VcGRhdGUoKTsK
KworICAgIG1fbWFuaXB1bGF0ZWRUZXh0c1dpdGhOZXdDb250ZW50LmFkZCgmdGV4dCk7Cit9CisK
IHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxlT2JzZXJ2YXRpb25VcGRh
dGUoKQogeworICAgIC8vIEFuIHVwZGF0ZSBpcyBhbHJlYWR5IHNjaGVkdWxlZC4KKyAgICBpZiAo
IW1fbWFuaXB1bGF0ZWRUZXh0c1dpdGhOZXdDb250ZW50LmlzRW1wdHkoKSB8fCAhbV9lbGVtZW50
c1dpdGhOZXdSZW5kZXJlci5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAg
IGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC01MjUsMjMgKzUzOCwzMCBA
QCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpzY2hlZHVsZU9ic2VydmF0aW9uVXBk
YXRlKCkKICAgICAgICAgaWYgKCFjb250cm9sbGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIEhhc2hTZXQ8UmVmPEVsZW1lbnQ+PiBlbGVtZW50c1RvT2JzZXJ2ZTsKKyAgICAgICAg
SGFzaFNldDxSZWY8Tm9kZT4+IG5vZGVzVG9PYnNlcnZlOwogICAgICAgICBmb3IgKGF1dG8mIHdl
YWtFbGVtZW50IDogY29udHJvbGxlci0+bV9lbGVtZW50c1dpdGhOZXdSZW5kZXJlcikKLSAgICAg
ICAgICAgIGVsZW1lbnRzVG9PYnNlcnZlLmFkZCh3ZWFrRWxlbWVudCk7CisgICAgICAgICAgICBu
b2Rlc1RvT2JzZXJ2ZS5hZGQod2Vha0VsZW1lbnQpOwogICAgICAgICBjb250cm9sbGVyLT5tX2Vs
ZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmNsZWFyKCk7CiAKLSAgICAgICAgaWYgKGVsZW1lbnRzVG9P
YnNlcnZlLmlzRW1wdHkoKSkKKyAgICAgICAgZm9yIChhdXRvKiB0ZXh0IDogY29udHJvbGxlci0+
bV9tYW5pcHVsYXRlZFRleHRzV2l0aE5ld0NvbnRlbnQpIHsKKyAgICAgICAgICAgIGlmICghY29u
dHJvbGxlci0+bV9tYW5pcHVsYXRlZE5vZGVzLmNvbnRhaW5zKHRleHQpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29udHJvbGxlci0+bV9tYW5pcHVsYXRlZE5vZGVz
LnJlbW92ZSh0ZXh0KTsKKyAgICAgICAgICAgIG5vZGVzVG9PYnNlcnZlLmFkZCgqdGV4dCk7Cisg
ICAgICAgIH0KKyAgICAgICAgY29udHJvbGxlci0+bV9tYW5pcHVsYXRlZFRleHRzV2l0aE5ld0Nv
bnRlbnQuY2xlYXIoKTsKKworICAgICAgICBpZiAobm9kZXNUb09ic2VydmUuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFJlZlB0cjxOb2RlPiBjb21tb25BbmNlc3Rv
cjsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHNUb09ic2VydmUpIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXNUb09ic2VydmUpIHsKICAgICAgICAgICAgIGlm
ICghY29tbW9uQW5jZXN0b3IpCi0gICAgICAgICAgICAgICAgY29tbW9uQW5jZXN0b3IgPSBtYWtl
UmVmUHRyKGVsZW1lbnQuZ2V0KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoIWVsZW1lbnQtPmlz
RGVzY2VuZGFudE9mKGNvbW1vbkFuY2VzdG9yLmdldCgpKSkgewotICAgICAgICAgICAgICAgIGNv
bW1vbkFuY2VzdG9yID0gY29tbW9uSW5jbHVzaXZlQW5jZXN0b3IoKmNvbW1vbkFuY2VzdG9yLCBl
bGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoY29tbW9uQW5jZXN0b3IpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9yID0gaXM8Q29udGFp
bmVyTm9kZT4obm9kZS5nZXQoKSkgPyBub2RlLnB0cigpIDogbm9kZS0+cGFyZW50Tm9kZSgpOwor
ICAgICAgICAgICAgZWxzZSBpZiAoIW5vZGUtPmlzRGVzY2VuZGFudE9mKGNvbW1vbkFuY2VzdG9y
LmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb21tb25BbmNlc3RvciA9IGNvbW1vbkluY2x1c2l2
ZUFuY2VzdG9yKCpjb21tb25BbmNlc3Rvciwgbm9kZS5nZXQoKSk7CiAgICAgICAgIH0KKyAgICAg
ICAgCiAgICAgICAgIGF1dG8gc3RhcnQgPSBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUoY29t
bW9uQW5jZXN0b3IuZ2V0KCkpOwogICAgICAgICBhdXRvIGVuZCA9IGxhc3RQb3NpdGlvbkluT3JB
ZnRlck5vZGUoY29tbW9uQW5jZXN0b3IuZ2V0KCkpOwogICAgICAgICBjb250cm9sbGVyLT5vYnNl
cnZlUGFyYWdyYXBocyhzdGFydCwgZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaAppbmRleCA3NjQwNjk4YTU3ZjRiNTlkNDQw
OGQ1MjVhMDg4Yzk0OGRhY2VmNDMwLi45ZGQyZWQxYjMzMjNkMjQwNzU0NDgxMTQ4MTk2MDM0Y2I5
YzBlOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlci5oCkBAIC0xMTYsNiArMTE2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdQYXJhZ3JhcGhzKE1hbmlwdWxhdGlvbkl0ZW1DYWxs
YmFjayYmLCBWZWN0b3I8RXhjbHVzaW9uUnVsZT4mJiA9IHsgfSk7CiAKICAgICB2b2lkIGRpZENy
ZWF0ZVJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50Jik7CisgICAgdm9pZCBkaWRVcGRhdGVDb250
ZW50Rm9yVGV4dChUZXh0Jik7CiAgICAgdm9pZCByZW1vdmVOb2RlKE5vZGUqKTsKIAogICAgIGVu
dW0gY2xhc3MgTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGUgOiB1aW50OF90IHsKQEAgLTE3OSw2ICsx
ODAsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAg
ICBXZWFrSGFzaFNldDxFbGVtZW50PiBtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyOworICAgIEhh
c2hTZXQ8VGV4dCo+IG1fbWFuaXB1bGF0ZWRUZXh0c1dpdGhOZXdDb250ZW50OwogICAgIEhhc2hT
ZXQ8Tm9kZSo+IG1fbWFuaXB1bGF0ZWROb2RlczsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBib29s
PiBtX2NhY2hlZEZvbnRGYW1pbHlFeGNsdXNpb25SZXN1bHRzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwCmluZGV4IGJmZmJmZjg3NTFjMzI1OGRlZWI3ZGQ4NzcyOWY5YmVhZDkyNDI4ODguLjFh
M2IyOWRiNjA5NWE3Y2UwMTYzMmFjZTljNDM4NjQzNTg3ZmM0ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKQEAgLTc0LDYgKzc0LDcgQEAKICNpbmNsdWRlICJTb2NrZXRQcm92aWRlci5o
IgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5o
IgorI2luY2x1ZGUgIlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVmlz
aWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTEzNTgsNiArMTM1OSwxMSBAQCBFeGNlcHRpb25Pcjx2b2lk
PiByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBS
ZWY8RG9jdQogICAgICAgICBpZiAoaXM8VGV4dD4oKmNvbnRhaW5lckNoaWxkKSAmJiBoYXNPbmVU
ZXh0Q2hpbGQoZnJhZ21lbnQpICYmIGNhblVzZVNldERhdGFPcHRpbWl6YXRpb24oZG93bmNhc3Q8
VGV4dD4oKmNvbnRhaW5lckNoaWxkKSwgbXV0YXRpb24pKSB7CiAgICAgICAgICAgICBBU1NFUlQo
IWZyYWdtZW50LT5maXJzdENoaWxkKCktPnJlZkNvdW50KCkpOwogICAgICAgICAgICAgZG93bmNh
c3Q8VGV4dD4oKmNvbnRhaW5lckNoaWxkKS5zZXREYXRhKGRvd25jYXN0PFRleHQ+KCpmcmFnbWVu
dC0+Zmlyc3RDaGlsZCgpKS5kYXRhKCkpOworCisgICAgICAgICAgICBhdXRvKiB0ZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlciA9IGNvbnRhaW5lckNoaWxkLT5kb2N1bWVudCgpLnRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVySWZFeGlzdHMoKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWSh0ZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcikpCisgICAgICAgICAgICAgICAgdGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXItPmRpZFVwZGF0ZUNvbnRlbnRGb3JUZXh0KGRvd25jYXN0PFRleHQ+KCpjb250
YWluZXJDaGlsZCkpOworCiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYmIyYTU5
NTBkZDEwMWYwNGMwZjkzZjZmNGM2MzIwNjVhMzQ0MTQ0Li43OTZlZmZhMTc0MzlkNTg3YWIzYTQw
YWQ3ZmJmMThkNjc3YzQzODMxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDYtMjYgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBlLmNvbT4KKworICAgICAgICBUZXh0IG1hbmlwdWxhdGlvbiBkb2VzIG5vdCBv
YnNlcnZlIG1hbmlwdWxhdGVkIHRleHQgYWZ0ZXIgdXBkYXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMzMTgKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzYzNzY2NzAzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9u
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDYtMjYgIFNpaHVp
IExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dCBtYW5pcHVsYXRpb24g
c2hvdWxkIG9ic2VydmUgYWRqYWNlbnQgZWxlbWVudHMgd2l0aCBuZXcgcmVuZGVyZXIgdG9nZXRo
ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4
dE1hbmlwdWxhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VGV4dE1hbmlwdWxhdGlvbi5tbQppbmRleCBjOGJlNDI1NjhlNTllZWE3YzA5MjUyYzc2YmZlMTQz
NzEyNzE5ZWZmLi4yZWM4NWU5MjUzMzRiMGFhZmVlMGM0N2UwODFiYWQyYjE2MGViNzIyIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVs
YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0
TWFuaXB1bGF0aW9uLm1tCkBAIC0yNjIzLDYgKzI2MjMsNjggQEAgVEVTVChUZXh0TWFuaXB1bGF0
aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JOZXdseURpc3BsYXllZFBhcmFncmFwaCkK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoIjxiPldlYktpdCE8L2I+PHNwYW4+SGVsbG8gV29ybGQ8aT5C
eWU8L2k+PC9zcGFuPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaXYnKS5pbm5lckhUTUwiXSk7CiB9CiAKK1RFU1QoVGV4
dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9yTWFuaXB1bGF0ZWRUZXh0
V2l0aE5ld0NvbnRlbnQpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXh0TWFu
aXB1bGF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IF9zZXRUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGU6
ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nOkAiPCFET0NUWVBFIGh0bWw+PGh0bWw+IgorICAgICAgICAiPGJvZHk+IgorICAgICAgICAg
ICAgIjxzcGFuPmhlbGxvIHdvcmxkPC9zcGFuPiIKKyAgICAgICAgICAgICI8cD5oZWxsbyB3ZWJr
aXQ8L3A+IgorICAgICAgICAiPC9ib2R5PjwvaHRtbD4iXTsKKworICAgIGRvbmUgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBfc3RhcnRUZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25maWd1cmF0aW9uOm5p
bCBjb21wbGV0aW9uOl57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBhdXRvICppdGVtcyA9IFtkZWxlZ2F0
ZSBpdGVtc107CisgICAgRVhQRUNUX0VRKGl0ZW1zLmNvdW50LCAyVUwpOworICAgIEVYUEVDVF9F
UShpdGVtc1swXS50b2tlbnMuY291bnQsIDFVTCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxs
byB3b3JsZCIsIGl0ZW1zWzBdLnRva2Vuc1swXS5jb250ZW50KTsKKyAgICBFWFBFQ1RfRVEoaXRl
bXNbMV0udG9rZW5zLmNvdW50LCAxVUwpOworICAgIEVYUEVDVF9XS19TVFJFUSgiaGVsbG8gd2Vi
a2l0IiwgaXRlbXNbMV0udG9rZW5zWzBdLmNvbnRlbnQpOworCisgICAgZG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAWworICAgICAg
ICBjcmVhdGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHt7IGl0ZW1zWzBdLnRva2Vuc1swXS5p
ZGVudGlmaWVyLCBAIkhlbGxvIFdvcmxkIiB9fSkuZ2V0KCksCisgICAgICAgIGNyZWF0ZUl0ZW0o
aXRlbXNbMV0uaWRlbnRpZmllciwge3sgaXRlbXNbMV0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAi
SGVsbG8gV2ViS2l0IiB9fSkuZ2V0KCkKKyAgICBdIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJy
b3IgKj4gKmVycm9ycykgeworICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLCBuaWwpOworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworICAgIEVYUEVDVF9XS19TVFJFUSgiPHNwYW4+SGVsbG8gV29ybGQ8L3NwYW4+PHA+SGVs
bG8gV2ViS2l0PC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxl
Z2F0ZS5nZXQoKS5pdGVtQ2FsbGJhY2sgPSBeKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICppdGVt
KSB7CisgICAgICAgIGlmIChpdGVtcy5jb3VudCA9PSA0KQorICAgICAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3BhbicpLmlubmVySFRNTD0naGVsbG8gd29ybGQgYWdh
aW4nOyJdOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCdwJykuY2hpbGROb2Rlc1swXS5ub2RlVmFsdWU9J2hlbGxvIHdl
YmtpdCBhZ2Fpbic7Il07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIEVYUEVDVF9FUShpdGVtc1syXS50b2tlbnMuY291bnQsIDFVTCk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKCJoZWxsbyB3b3JsZCBhZ2FpbiIsIGl0ZW1zWzJdLnRva2Vuc1swXS5jb250ZW50KTsK
KyAgICBFWFBFQ1RfRVEoaXRlbXNbM10udG9rZW5zLmNvdW50LCAxVUwpOworICAgIEVYUEVDVF9X
S19TVFJFUSgiaGVsbG8gd2Via2l0IGFnYWluIiwgaXRlbXNbM10udG9rZW5zWzBdLmNvbnRlbnQp
OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVs
YXRpb25Gb3JJdGVtczpAWworICAgICAgICBjcmVhdGVJdGVtKGl0ZW1zWzJdLmlkZW50aWZpZXIs
IHt7IGl0ZW1zWzJdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAIkhlbGxvIFdvcmxkIEFnYWluIiB9
fSkuZ2V0KCksCisgICAgICAgIGNyZWF0ZUl0ZW0oaXRlbXNbM10uaWRlbnRpZmllciwge3sgaXRl
bXNbM10udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiSGVsbG8gV2ViS2l0IEFnYWluIiB9fSkuZ2V0
KCkKKyAgICBdIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykgeworICAg
ICAgICBFWFBFQ1RfRVEoZXJyb3JzLCBuaWwpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIEVYUEVDVF9XS19T
VFJFUSgiPHNwYW4+SGVsbG8gV29ybGQgQWdhaW48L3NwYW4+PHA+SGVsbG8gV2ViS2l0IEFnYWlu
PC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5i
b2R5LmlubmVySFRNTCJdKTsKK30KKwogVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRl
eHRNYW5pcHVsYXRpb25Bdm9pZEV4dHJhY3RpbmdNYW5pcHVsYXRlZFRleHRBZnRlck1hbmlwdWxh
dGlvbikKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRNYW5pcHVsYXRpb25E
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402922</attachid>
            <date>2020-06-26 16:25:54 -0700</date>
            <delta_ts>2020-06-29 09:58:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213318-20200626162553.patch</filename>
            <type>text/plain</type>
            <size>12310</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTIzNmYwM2E0MmI1YWYx
OTRiYWNkYjQzYWQyYTBiYjMxYTJjOTJiZS4uZmFlMTUyMzUwM2ZlMGRjM2FlNGIyMmM5MDA5ZGJl
NDcyYjQ4MjdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA2LTI2ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVGV4dCBtYW5pcHVsYXRpb24g
ZG9lcyBub3Qgb2JzZXJ2ZSBtYW5pcHVsYXRlZCB0ZXh0IGFmdGVyIHVwZGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzE4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82Mzc2NjcwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyIGJlIGF3YXJl
IG9mIHVwZGF0ZSBvbiBUZXh0IGFuZCBleHRyYWN0IHRoZSBuZXcgY29udGVudC4KKworICAgICAg
ICBUZXN0OiBUZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvck1hbmlw
dWxhdGVkVGV4dFdpdGhOZXdDb250ZW50CisKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5o
OgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OnNldERh
dGEpOgorICAgICAgICAqIGRvbS9UZXh0Lmg6CisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlcjo6ZGlkQ3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpkaWRVcGRhdGVDb250ZW50Rm9yVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVP
YnNlcnZhdGlvblVwZGF0ZSk6CisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlci5oOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKwogMjAyMC0wNi0yNiAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0IG1hbmlwdWxh
dGlvbiBzaG91bGQgb2JzZXJ2ZSBhZGphY2VudCBlbGVtZW50cyB3aXRoIG5ldyByZW5kZXJlciB0
b2dldGhlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKaW5kZXggZmU2NjAwMzBhNDYwYjQy
NTUzZWRlMjA2ZTM1NmUyNDE3ZTY3NGQyZi4uNTM4OTIxODE5N2U5YTY0OTU5YWJiODE1NjA0YjY2
NmMzYmMwMjM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCkBAIC0zMiw3ICszMiw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGE7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IGRhdGFNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoQ2hhcmFjdGVyRGF0YSwgbV9kYXRhKTsgfQogCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXREYXRhKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBzZXREYXRhKGNvbnN0IFN0cmluZyYpOwogICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5sZW5ndGgoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIEV4
Y2VwdGlvbk9yPFN0cmluZz4gc3Vic3RyaW5nRGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGNvdW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZERhdGEoY29uc3QgU3RyaW5n
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dC5jcHAKaW5kZXggMDQ1YzgxYTY1ZmIwNzY1ODI0OGZmMGUxYmFhMWVhNGQw
YWUzYTc4Yi4uMDYyYjMyMDZiNjY3MTI5OGFkZjgzZTNlOGRjNDk4NmNmNDcwYzQ1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0
YS5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVVwZGF0ZS5o
IgorI2luY2x1ZGUgIlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVGV4
dE5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMjUyLDQgKzI1MywxMyBAQCB2b2lk
IFRleHQ6OmZvcm1hdEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKSBj
b25zdAogfQogI2VuZGlmCiAKK3ZvaWQgVGV4dDo6c2V0RGF0YShjb25zdCBTdHJpbmcmIGRhdGEp
Cit7CisgICAgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YShkYXRhKTsKKworICAgIGF1dG8qIHRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyID0gZG9jdW1lbnQoKS50ZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcklmRXhpc3RzKCk7CisgICAgaWYgKFVOTElLRUxZKHRleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyKSkKKyAgICAgICAgdGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXItPmRpZFVwZGF0ZUNvbnRl
bnRGb3JUZXh0KCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgK
aW5kZXggNWZmNWU3NzdiZWI2ZDc0OGQ2NWNkODA0ZjZmYjEwMGZlN2IzMGQ5OC4uZWUzOWUzOTlh
NWY5NGViZGMyMjQwNzc5NzEzMzU1YWU2YmJhMjNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCkBAIC01Nyw2ICs1
Nyw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QgZmlu
YWw7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoY29uc3QgU3RyaW5nJikgZmlu
YWw7CisKIHByb3RlY3RlZDoKICAgICBUZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBkYXRhLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgICAgIDogQ2hhcmFjdGVyRGF0
YShkb2N1bWVudCwgZGF0YSwgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTFmODQ0MmVjMTRkNDcwNDFm
NDcwYTlmMWU3MThkNGNhODQ3NmQ5Zi4uOGQxY2RkYzhmMDRlNWEyZjM3MzUxZWJkMzUzOTliZDMy
YzAwNjhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTUwNSw4ICs1MDUsNyBAQCB2b2lkIFRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpkaWRDcmVhdGVSZW5kZXJlckZvckVsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCkKICAgICBpZiAobV9tYW5pcHVsYXRlZE5vZGVzLmNvbnRhaW5zKCZlbGVtZW50KSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZWxlbWVudHNXaXRoTmV3UmVuZGVyZXIuY29tcHV0
ZXNFbXB0eSgpKQotICAgICAgICBzY2hlZHVsZU9ic2VydmF0aW9uVXBkYXRlKCk7CisgICAgc2No
ZWR1bGVPYnNlcnZhdGlvblVwZGF0ZSgpOwogCiAgICAgaWYgKGlzPFBzZXVkb0VsZW1lbnQ+KGVs
ZW1lbnQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBob3N0ID0gZG93bmNhc3Q8UHNldWRvRWxlbWVu
dD4oZWxlbWVudCkuaG9zdEVsZW1lbnQoKSkKQEAgLTUxNSw4ICs1MTQsMjIgQEAgdm9pZCBUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlkQ3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgICAgIG1fZWxlbWVudHNXaXRoTmV3UmVuZGVyZXIuYWRkKGVsZW1l
bnQpOwogfQogCit2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpkaWRVcGRhdGVDb250
ZW50Rm9yVGV4dChUZXh0JiB0ZXh0KQoreworICAgIGlmICghbV9tYW5pcHVsYXRlZE5vZGVzLmNv
bnRhaW5zKCZ0ZXh0KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2NoZWR1bGVPYnNlcnZhdGlv
blVwZGF0ZSgpOworCisgICAgbV9tYW5pcHVsYXRlZFRleHRzV2l0aE5ld0NvbnRlbnQuYWRkKCZ0
ZXh0KTsKK30KKwogdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVPYnNl
cnZhdGlvblVwZGF0ZSgpCiB7CisgICAgLy8gQW4gdXBkYXRlIGlzIGFscmVhZHkgc2NoZWR1bGVk
LgorICAgIGlmICghbV9tYW5pcHVsYXRlZFRleHRzV2l0aE5ld0NvbnRlbnQuaXNFbXB0eSgpIHx8
ICFtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmNvbXB1dGVzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgaWYgKCFtX2RvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTUyNSwy
MyArNTM4LDMwIEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxlT2Jz
ZXJ2YXRpb25VcGRhdGUoKQogICAgICAgICBpZiAoIWNvbnRyb2xsZXIpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgSGFzaFNldDxSZWY8RWxlbWVudD4+IGVsZW1lbnRzVG9PYnNlcnZl
OworICAgICAgICBIYXNoU2V0PFJlZjxOb2RlPj4gbm9kZXNUb09ic2VydmU7CiAgICAgICAgIGZv
ciAoYXV0byYgd2Vha0VsZW1lbnQgOiBjb250cm9sbGVyLT5tX2VsZW1lbnRzV2l0aE5ld1JlbmRl
cmVyKQotICAgICAgICAgICAgZWxlbWVudHNUb09ic2VydmUuYWRkKHdlYWtFbGVtZW50KTsKKyAg
ICAgICAgICAgIG5vZGVzVG9PYnNlcnZlLmFkZCh3ZWFrRWxlbWVudCk7CiAgICAgICAgIGNvbnRy
b2xsZXItPm1fZWxlbWVudHNXaXRoTmV3UmVuZGVyZXIuY2xlYXIoKTsKIAotICAgICAgICBpZiAo
ZWxlbWVudHNUb09ic2VydmUuaXNFbXB0eSgpKQorICAgICAgICBmb3IgKGF1dG8qIHRleHQgOiBj
b250cm9sbGVyLT5tX21hbmlwdWxhdGVkVGV4dHNXaXRoTmV3Q29udGVudCkgeworICAgICAgICAg
ICAgaWYgKCFjb250cm9sbGVyLT5tX21hbmlwdWxhdGVkTm9kZXMuY29udGFpbnModGV4dCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjb250cm9sbGVyLT5tX21hbmlw
dWxhdGVkTm9kZXMucmVtb3ZlKHRleHQpOworICAgICAgICAgICAgbm9kZXNUb09ic2VydmUuYWRk
KCp0ZXh0KTsKKyAgICAgICAgfQorICAgICAgICBjb250cm9sbGVyLT5tX21hbmlwdWxhdGVkVGV4
dHNXaXRoTmV3Q29udGVudC5jbGVhcigpOworCisgICAgICAgIGlmIChub2Rlc1RvT2JzZXJ2ZS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgUmVmUHRyPE5vZGU+IGNv
bW1vbkFuY2VzdG9yOwotICAgICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50c1RvT2Jz
ZXJ2ZSkgeworICAgICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2Rlc1RvT2JzZXJ2ZSkgewogICAg
ICAgICAgICAgaWYgKCFjb21tb25BbmNlc3RvcikKLSAgICAgICAgICAgICAgICBjb21tb25BbmNl
c3RvciA9IG1ha2VSZWZQdHIoZWxlbWVudC5nZXQoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmICgh
ZWxlbWVudC0+aXNEZXNjZW5kYW50T2YoY29tbW9uQW5jZXN0b3IuZ2V0KCkpKSB7Ci0gICAgICAg
ICAgICAgICAgY29tbW9uQW5jZXN0b3IgPSBjb21tb25JbmNsdXNpdmVBbmNlc3RvcigqY29tbW9u
QW5jZXN0b3IsIGVsZW1lbnQuZ2V0KCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVChjb21tb25B
bmNlc3Rvcik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29tbW9uQW5jZXN0b3Ig
PSBpczxDb250YWluZXJOb2RlPihub2RlLmdldCgpKSA/IG5vZGUucHRyKCkgOiBub2RlLT5wYXJl
bnROb2RlKCk7CisgICAgICAgICAgICBlbHNlIGlmICghbm9kZS0+aXNEZXNjZW5kYW50T2YoY29t
bW9uQW5jZXN0b3IuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9yID0gY29t
bW9uSW5jbHVzaXZlQW5jZXN0b3IoKmNvbW1vbkFuY2VzdG9yLCBub2RlLmdldCgpKTsKICAgICAg
ICAgfQorICAgICAgICAKICAgICAgICAgYXV0byBzdGFydCA9IGZpcnN0UG9zaXRpb25Jbk9yQmVm
b3JlTm9kZShjb21tb25BbmNlc3Rvci5nZXQoKSk7CiAgICAgICAgIGF1dG8gZW5kID0gbGFzdFBv
c2l0aW9uSW5PckFmdGVyTm9kZShjb21tb25BbmNlc3Rvci5nZXQoKSk7CiAgICAgICAgIGNvbnRy
b2xsZXItPm9ic2VydmVQYXJhZ3JhcGhzKHN0YXJ0LCBlbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCmluZGV4IDc2NDA2OThh
NTdmNGI1OWQ0NDA4ZDUyNWEwODhjOTQ4ZGFjZWY0MzAuLjlkZDJlZDFiMzMyM2QyNDA3NTQ0ODEx
NDgxOTYwMzRjYjljMGU5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydE9ic2VydmluZ1BhcmFncmFwaHMoTWFuaXB1bGF0
aW9uSXRlbUNhbGxiYWNrJiYsIFZlY3RvcjxFeGNsdXNpb25SdWxlPiYmID0geyB9KTsKIAogICAg
IHZvaWQgZGlkQ3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmKTsKKyAgICB2b2lkIGRp
ZFVwZGF0ZUNvbnRlbnRGb3JUZXh0KFRleHQmKTsKICAgICB2b2lkIHJlbW92ZU5vZGUoTm9kZSop
OwogCiAgICAgZW51bSBjbGFzcyBNYW5pcHVsYXRpb25GYWlsdXJlVHlwZSA6IHVpbnQ4X3QgewpA
QCAtMTc5LDYgKzE4MCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWFrUHRyPERvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIFdlYWtIYXNoU2V0PEVsZW1lbnQ+IG1fZWxlbWVudHNXaXRoTmV3UmVuZGVy
ZXI7CisgICAgSGFzaFNldDxUZXh0Kj4gbV9tYW5pcHVsYXRlZFRleHRzV2l0aE5ld0NvbnRlbnQ7
CiAgICAgSGFzaFNldDxOb2RlKj4gbV9tYW5pcHVsYXRlZE5vZGVzOwogCiAgICAgSGFzaE1hcDxT
dHJpbmcsIGJvb2w+IG1fY2FjaGVkRm9udEZhbWlseUV4Y2x1c2lvblJlc3VsdHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggYmZmYmZmODc1MWMzMjU4ZGVlYjdkZDg3NzI5ZjliZWFk
OTI0Mjg4OC4uZDU3NGE0OTc3YTg3YTRiMWQyMWViYzIyODU0NjE0ZjU3YTg5MjdjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzQsNiArNzQsNyBAQAogI2luY2x1ZGUgIlNvY2tl
dFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGViYjJhNTk1MGRkMTAxZjA0YzBmOTNmNmY0YzYzMjA2
NWEzNDQxNDQuLjc5NmVmZmExNzQzOWQ1ODdhYjNhNDBhZDdmYmYxOGQ2NzdjNDM4MzEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMC0wNi0yNiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGUuY29tPgorCisgICAg
ICAgIFRleHQgbWFuaXB1bGF0aW9uIGRvZXMgbm90IG9ic2VydmUgbWFuaXB1bGF0ZWQgdGV4dCBh
ZnRlciB1cGRhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMzMxOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM3NjY3MDM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKwogMjAyMC0wNi0yNiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KIAogICAgICAgICBUZXh0IG1hbmlwdWxhdGlvbiBzaG91bGQgb2JzZXJ2ZSBhZGphY2VudCBl
bGVtZW50cyB3aXRoIG5ldyByZW5kZXJlciB0b2dldGhlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tCmluZGV4
IGM4YmU0MjU2OGU1OWVlYTdjMDkyNTJjNzZiZmUxNDM3MTI3MTllZmYuLjJlYzg1ZTkyNTMzNGIw
YWFmZWUwYzQ3ZTA4MWJhZDJiMTYwZWI3MjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0KQEAgLTI2MjMs
NiArMjYyMyw2OCBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxh
dGlvbkZvck5ld2x5RGlzcGxheWVkUGFyYWdyYXBoKQogICAgIEVYUEVDVF9XS19TVFJFUSgiPGI+
V2ViS2l0ITwvYj48c3Bhbj5IZWxsbyBXb3JsZDxpPkJ5ZTwvaT48L3NwYW4+IiwgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rp
dicpLmlubmVySFRNTCJdKTsKIH0KIAorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRl
eHRNYW5pcHVsYXRpb25Gb3JNYW5pcHVsYXRlZFRleHRXaXRoTmV3Q29udGVudCkKK3sKKyAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZp
ZXcgX3NldFRleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRt
bD4iCisgICAgICAgICI8Ym9keT4iCisgICAgICAgICAgICAiPHNwYW4+aGVsbG8gd29ybGQ8L3Nw
YW4+IgorICAgICAgICAgICAgIjxwPmhlbGxvIHdlYmtpdDwvcD4iCisgICAgICAgICI8L2JvZHk+
PC9odG1sPiJdOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdGFydFRleHRN
YW5pcHVsYXRpb25zV2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb246XnsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKworICAgIGF1dG8gKml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKKyAgICBFWFBFQ1RfRVEo
aXRlbXMuY291bnQsIDJVTCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwg
MVVMKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvIHdvcmxkIiwgaXRlbXNbMF0udG9rZW5z
WzBdLmNvbnRlbnQpOworICAgIEVYUEVDVF9FUShpdGVtc1sxXS50b2tlbnMuY291bnQsIDFVTCk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxsbyB3ZWJraXQiLCBpdGVtc1sxXS50b2tlbnNbMF0u
Y29udGVudCk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4
dE1hbmlwdWxhdGlvbkZvckl0ZW1zOkBbCisgICAgICAgIGNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRl
bnRpZmllciwge3sgaXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiSGVsbG8gV29ybGQi
IH19KS5nZXQoKSwKKyAgICAgICAgY3JlYXRlSXRlbShpdGVtc1sxXS5pZGVudGlmaWVyLCB7eyBp
dGVtc1sxXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJIZWxsbyBXZWJLaXQiIH19KS5nZXQoKQor
ICAgIF0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAg
IEVYUEVDVF9FUShlcnJvcnMsIG5pbCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCI8c3Bhbj5IZWxsbyBXb3JsZDwvc3Bhbj48cD5IZWxsbyBXZWJLaXQ8L3A+IiwgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0p
OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmdldCgpLml0ZW1DYWxsYmFjayA9
IF4oX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKml0ZW0pIHsKKyAgICAgICAgaWYgKGl0ZW1zLmNv
dW50ID09IDQpCisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdz
cGFuJykuaW5uZXJIVE1MPSdoZWxsbyB3b3JsZCBhZ2Fpbic7Il07CisgICAgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3AnKS5j
aGlsZE5vZGVzWzBdLm5vZGVWYWx1ZT0naGVsbG8gd2Via2l0IGFnYWluJzsiXTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX0VRKGl0ZW1zWzJdLnRv
a2Vucy5jb3VudCwgMVVMKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvIHdvcmxkIGFnYWlu
IiwgaXRlbXNbMl0udG9rZW5zWzBdLmNvbnRlbnQpOworICAgIEVYUEVDVF9FUShpdGVtc1szXS50
b2tlbnMuY291bnQsIDFVTCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxsbyB3ZWJraXQgYWdh
aW4iLCBpdGVtc1szXS50b2tlbnNbMF0uY29udGVudCk7CisKKyAgICBkb25lID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOkBbCisgICAgICAg
IGNyZWF0ZUl0ZW0oaXRlbXNbMl0uaWRlbnRpZmllciwge3sgaXRlbXNbMl0udG9rZW5zWzBdLmlk
ZW50aWZpZXIsIEAiSGVsbG8gV29ybGQgQWdhaW4iIH19KS5nZXQoKSwKKyAgICAgICAgY3JlYXRl
SXRlbShpdGVtc1szXS5pZGVudGlmaWVyLCB7eyBpdGVtc1szXS50b2tlbnNbMF0uaWRlbnRpZmll
ciwgQCJIZWxsbyBXZWJLaXQgQWdhaW4iIH19KS5nZXQoKQorICAgIF0gY29tcGxldGlvbjpeKE5T
QXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMsIG5p
bCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCI8c3Bhbj5IZWxsbyBXb3JsZCBB
Z2Fpbjwvc3Bhbj48cD5IZWxsbyBXZWJLaXQgQWdhaW48L3A+IiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOworfQorCiBU
RVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkF2b2lkRXh0cmFj
dGluZ01hbmlwdWxhdGVkVGV4dEFmdGVyTWFuaXB1bGF0aW9uKQogewogICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403077</attachid>
            <date>2020-06-29 09:58:52 -0700</date>
            <delta_ts>2020-07-13 10:01:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213318-20200629095851.patch</filename>
            <type>text/plain</type>
            <size>13045</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZkNjVlYjFjZjg5Yzdh
ZjJlYmE3NzVmNmMyMWZkMmQzY2E0NjAwNy4uNGEyMjI3OTQzNTQ5N2U5MjM0NDViOTNkZWYzZDk2
MWQyZDc0Zjg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA2LTI5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVGV4dCBtYW5pcHVsYXRpb24g
ZG9lcyBub3Qgb2JzZXJ2ZSBtYW5pcHVsYXRlZCB0ZXh0IGFmdGVyIHVwZGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzE4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82Mzc2NjcwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyIGJlIGF3YXJl
IG9mIGNvbnRlbnQgcmVwbGFjZW1lbnQgb24gVGV4dCBhbmQgZXh0cmFjdCB0aGUgbmV3IGNvbnRl
bnQuCisKKyAgICAgICAgVGVzdDogVGV4dE1hbmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5pcHVs
YXRpb25Gb3JNYW5pcHVsYXRlZFRleHRXaXRoTmV3Q29udGVudAorCisgICAgICAgICogZG9tL0No
YXJhY3RlckRhdGEuaDoKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0OjpzZXREYXRhQW5kVXBkYXRlKToKKyAgICAgICAgKiBkb20vVGV4dC5oOgorICAgICAg
ICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmRpZENyZWF0ZVJlbmRlcmVyRm9yRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlk
VXBkYXRlQ29udGVudEZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6OnNjaGVkdWxlT2JzZXJ2YXRpb25VcGRhdGUpOgorICAgICAgICAqIGVkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1
cC5jcHA6CisKIDIwMjAtMDYtMDkgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW2Nzcy1mbGV4Ym94XSBXZWJLaXQgbWlzdGFrZW5seSBsZXRzIHBv
aW50ZXIgZXZlbnRzIChjbGljay9ob3Zlci9ldGMpIHBhc3MgdGhyb3VnaCBmbGV4IGl0ZW1zLCBp
ZiB0aGV5IGhhdmUgbmVnYXRpdmUgbWFyZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hhcmFjdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaApp
bmRleCBmZTY2MDAzMGE0NjBiNDI1NTNlZGUyMDZlMzU2ZTI0MTdlNjc0ZDJmLi5kNDMwNTZkMWYx
Zjc2MTgwMmFmYmY5OGM1YTkxMjRkMDU3MWZmYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2hhcmFjdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJE
YXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBwdHJkaWZmX3QgZGF0
YU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDaGFyYWN0ZXJEYXRhLCBt
X2RhdGEpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCB2b2lkIHNldERhdGFBbmRVcGRhdGUoY29uc3QgU3RyaW5nJiwgdW5z
aWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQg
bmV3TGVuZ3RoKTsKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
bGVuZ3RoKCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxTdHJpbmc+IHN1YnN0
cmluZ0RhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFN0cmluZyYpOwpAQCAtNjMsNyArNjQsNiBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBub2RlVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzZXROb2RlVmFsdWUoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCB2
aXJ0dWFsSXNDaGFyYWN0ZXJEYXRhKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZvaWQgc2V0RGF0YUFuZFVwZGF0ZShjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXRPZlJl
cGxhY2VkRGF0YSwgdW5zaWduZWQgb2xkTGVuZ3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpOwogICAg
IHZvaWQgbm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VT
b3VyY2UpOwogCiAgICAgU3RyaW5nIG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCAwNDVjODFh
NjVmYjA3NjU4MjQ4ZmYwZTFiYWExZWE0ZDBhZTNhNzhiLi4wZjEzYjUxYmMwNjUxNDE5YThkZDM2
MjcxNTUyOTNhZTk3YWRlOTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5o
IgogI2luY2x1ZGUgIlN0eWxlVXBkYXRlLmgiCisjaW5jbHVkZSAiVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJUZXh0Tm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgPHd0
Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CkBAIC0yNTIsNCArMjUzLDE1IEBAIHZvaWQgVGV4dDo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciog
YnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiB9CiAjZW5kaWYKIAordm9pZCBUZXh0Ojpz
ZXREYXRhQW5kVXBkYXRlKGNvbnN0IFN0cmluZyYgbmV3RGF0YSwgdW5zaWduZWQgb2Zmc2V0T2ZS
ZXBsYWNlZERhdGEsIHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQgbmV3TGVuZ3RoKQorewor
ICAgIENoYXJhY3RlckRhdGE6OnNldERhdGFBbmRVcGRhdGUobmV3RGF0YSwgb2Zmc2V0T2ZSZXBs
YWNlZERhdGEsIG9sZExlbmd0aCwgbmV3TGVuZ3RoKTsKKworICAgIGlmICghb2Zmc2V0T2ZSZXBs
YWNlZERhdGEpIHsKKyAgICAgICAgYXV0byogdGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIgPSBk
b2N1bWVudCgpLnRleHRNYW5pcHVsYXRpb25Db250cm9sbGVySWZFeGlzdHMoKTsKKyAgICAgICAg
aWYgKFVOTElLRUxZKHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyKSkKKyAgICAgICAgICAgIHRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyLT5kaWRVcGRhdGVDb250ZW50Rm9yVGV4dCgqdGhpcyk7
CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAppbmRleCA1ZmY1
ZTc3N2JlYjZkNzQ4ZDY1Y2Q4MDRmNmZiMTAwZmU3YjMwZDk4Li5jNTNkZDE2MjhmNWFhZGI2NzYw
Njk4OTc5MjgxYzM5N2VkMDBlMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKQEAgLTU3LDYgKzU3LDggQEAgcHVi
bGljOgogCiAgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKIAorICAg
IHZvaWQgc2V0RGF0YUFuZFVwZGF0ZShjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXRPZlJl
cGxhY2VkRGF0YSwgdW5zaWduZWQgb2xkTGVuZ3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpIGZpbmFs
OworCiBwcm90ZWN0ZWQ6CiAgICAgVGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgICAgICA6IENoYXJhY3RlckRhdGEo
ZG9jdW1lbnQsIGRhdGEsIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGUxZjg0NDJlYzE0ZDQ3MDQxZjQ3
MGE5ZjFlNzE4ZDRjYTg0NzZkOWYuLjhkMWNkZGM4ZjA0ZTVhMmYzNzM1MWViZDM1Mzk5YmQzMmMw
MDY4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuY3BwCkBAIC01MDUsOCArNTA1LDcgQEAgdm9pZCBUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6ZGlkQ3JlYXRlUmVuZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgaWYgKG1fbWFuaXB1bGF0ZWROb2Rlcy5jb250YWlucygmZWxlbWVudCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmNvbXB1dGVz
RW1wdHkoKSkKLSAgICAgICAgc2NoZWR1bGVPYnNlcnZhdGlvblVwZGF0ZSgpOworICAgIHNjaGVk
dWxlT2JzZXJ2YXRpb25VcGRhdGUoKTsKIAogICAgIGlmIChpczxQc2V1ZG9FbGVtZW50PihlbGVt
ZW50KSkgewogICAgICAgICBpZiAoYXV0byogaG9zdCA9IGRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+
KGVsZW1lbnQpLmhvc3RFbGVtZW50KCkpCkBAIC01MTUsOCArNTE0LDIyIEBAIHZvaWQgVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6OmRpZENyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50
JiBlbGVtZW50KQogICAgICAgICBtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmFkZChlbGVtZW50
KTsKIH0KIAordm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlkVXBkYXRlQ29udGVu
dEZvclRleHQoVGV4dCYgdGV4dCkKK3sKKyAgICBpZiAoIW1fbWFuaXB1bGF0ZWROb2Rlcy5jb250
YWlucygmdGV4dCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNjaGVkdWxlT2JzZXJ2YXRpb25V
cGRhdGUoKTsKKworICAgIG1fbWFuaXB1bGF0ZWRUZXh0c1dpdGhOZXdDb250ZW50LmFkZCgmdGV4
dCk7Cit9CisKIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxlT2JzZXJ2
YXRpb25VcGRhdGUoKQogeworICAgIC8vIEFuIHVwZGF0ZSBpcyBhbHJlYWR5IHNjaGVkdWxlZC4K
KyAgICBpZiAoIW1fbWFuaXB1bGF0ZWRUZXh0c1dpdGhOZXdDb250ZW50LmlzRW1wdHkoKSB8fCAh
bV9lbGVtZW50c1dpdGhOZXdSZW5kZXJlci5jb21wdXRlc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKwogICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC01MjUsMjMg
KzUzOCwzMCBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpzY2hlZHVsZU9ic2Vy
dmF0aW9uVXBkYXRlKCkKICAgICAgICAgaWYgKCFjb250cm9sbGVyKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIEhhc2hTZXQ8UmVmPEVsZW1lbnQ+PiBlbGVtZW50c1RvT2JzZXJ2ZTsK
KyAgICAgICAgSGFzaFNldDxSZWY8Tm9kZT4+IG5vZGVzVG9PYnNlcnZlOwogICAgICAgICBmb3Ig
KGF1dG8mIHdlYWtFbGVtZW50IDogY29udHJvbGxlci0+bV9lbGVtZW50c1dpdGhOZXdSZW5kZXJl
cikKLSAgICAgICAgICAgIGVsZW1lbnRzVG9PYnNlcnZlLmFkZCh3ZWFrRWxlbWVudCk7CisgICAg
ICAgICAgICBub2Rlc1RvT2JzZXJ2ZS5hZGQod2Vha0VsZW1lbnQpOwogICAgICAgICBjb250cm9s
bGVyLT5tX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmNsZWFyKCk7CiAKLSAgICAgICAgaWYgKGVs
ZW1lbnRzVG9PYnNlcnZlLmlzRW1wdHkoKSkKKyAgICAgICAgZm9yIChhdXRvKiB0ZXh0IDogY29u
dHJvbGxlci0+bV9tYW5pcHVsYXRlZFRleHRzV2l0aE5ld0NvbnRlbnQpIHsKKyAgICAgICAgICAg
IGlmICghY29udHJvbGxlci0+bV9tYW5pcHVsYXRlZE5vZGVzLmNvbnRhaW5zKHRleHQpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY29udHJvbGxlci0+bV9tYW5pcHVs
YXRlZE5vZGVzLnJlbW92ZSh0ZXh0KTsKKyAgICAgICAgICAgIG5vZGVzVG9PYnNlcnZlLmFkZCgq
dGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgY29udHJvbGxlci0+bV9tYW5pcHVsYXRlZFRleHRz
V2l0aE5ld0NvbnRlbnQuY2xlYXIoKTsKKworICAgICAgICBpZiAobm9kZXNUb09ic2VydmUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFJlZlB0cjxOb2RlPiBjb21t
b25BbmNlc3RvcjsKLSAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHNUb09ic2Vy
dmUpIHsKKyAgICAgICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXNUb09ic2VydmUpIHsKICAgICAg
ICAgICAgIGlmICghY29tbW9uQW5jZXN0b3IpCi0gICAgICAgICAgICAgICAgY29tbW9uQW5jZXN0
b3IgPSBtYWtlUmVmUHRyKGVsZW1lbnQuZ2V0KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoIWVs
ZW1lbnQtPmlzRGVzY2VuZGFudE9mKGNvbW1vbkFuY2VzdG9yLmdldCgpKSkgewotICAgICAgICAg
ICAgICAgIGNvbW1vbkFuY2VzdG9yID0gY29tbW9uSW5jbHVzaXZlQW5jZXN0b3IoKmNvbW1vbkFu
Y2VzdG9yLCBlbGVtZW50LmdldCgpKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoY29tbW9uQW5j
ZXN0b3IpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9yID0g
aXM8Q29udGFpbmVyTm9kZT4obm9kZS5nZXQoKSkgPyBub2RlLnB0cigpIDogbm9kZS0+cGFyZW50
Tm9kZSgpOworICAgICAgICAgICAgZWxzZSBpZiAoIW5vZGUtPmlzRGVzY2VuZGFudE9mKGNvbW1v
bkFuY2VzdG9yLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb21tb25BbmNlc3RvciA9IGNvbW1v
bkluY2x1c2l2ZUFuY2VzdG9yKCpjb21tb25BbmNlc3Rvciwgbm9kZS5nZXQoKSk7CiAgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIGF1dG8gc3RhcnQgPSBmaXJzdFBvc2l0aW9uSW5PckJlZm9y
ZU5vZGUoY29tbW9uQW5jZXN0b3IuZ2V0KCkpOwogICAgICAgICBhdXRvIGVuZCA9IGxhc3RQb3Np
dGlvbkluT3JBZnRlck5vZGUoY29tbW9uQW5jZXN0b3IuZ2V0KCkpOwogICAgICAgICBjb250cm9s
bGVyLT5vYnNlcnZlUGFyYWdyYXBocyhzdGFydCwgZW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaAppbmRleCA3NjQwNjk4YTU3
ZjRiNTlkNDQwOGQ1MjVhMDg4Yzk0OGRhY2VmNDMwLi45ZGQyZWQxYjMzMjNkMjQwNzU0NDgxMTQ4
MTk2MDM0Y2I5YzBlOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCkBAIC0xMTYsNiArMTE2LDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdQYXJhZ3JhcGhzKE1hbmlwdWxhdGlv
bkl0ZW1DYWxsYmFjayYmLCBWZWN0b3I8RXhjbHVzaW9uUnVsZT4mJiA9IHsgfSk7CiAKICAgICB2
b2lkIGRpZENyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50Jik7CisgICAgdm9pZCBkaWRV
cGRhdGVDb250ZW50Rm9yVGV4dChUZXh0Jik7CiAgICAgdm9pZCByZW1vdmVOb2RlKE5vZGUqKTsK
IAogICAgIGVudW0gY2xhc3MgTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGUgOiB1aW50OF90IHsKQEAg
LTE3OSw2ICsxODAsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1
bWVudDsKICAgICBXZWFrSGFzaFNldDxFbGVtZW50PiBtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVy
OworICAgIEhhc2hTZXQ8VGV4dCo+IG1fbWFuaXB1bGF0ZWRUZXh0c1dpdGhOZXdDb250ZW50Owog
ICAgIEhhc2hTZXQ8Tm9kZSo+IG1fbWFuaXB1bGF0ZWROb2RlczsKIAogICAgIEhhc2hNYXA8U3Ry
aW5nLCBib29sPiBtX2NhY2hlZEZvbnRGYW1pbHlFeGNsdXNpb25SZXN1bHRzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCmluZGV4IGJmZmJmZjg3NTFjMzI1OGRlZWI3ZGQ4NzcyOWY5YmVhZDky
NDI4ODguLmQ1NzRhNDk3N2E4N2E0YjFkMjFlYmMyMjg1NDYxNGY1N2E4OTI3Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTc0LDYgKzc0LDcgQEAKICNpbmNsdWRlICJTb2NrZXRQ
cm92aWRlci5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlRleHRJ
dGVyYXRvci5oIgorI2luY2x1ZGUgIlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxODRlYjZlODQyMzNiM2VlMTBiZTNmMmMyMzE5NmRiMDcx
ZTI3OGI4Li5mOWFjM2NhOTM4Njc1OGQ0OGEzZjRjYzZkYjMxNGVjOTE5OGIyYzUwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDYtMjkgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBlLmNvbT4KKworICAgICAg
ICBUZXh0IG1hbmlwdWxhdGlvbiBkb2VzIG5vdCBvYnNlcnZlIG1hbmlwdWxhdGVkIHRleHQgYWZ0
ZXIgdXBkYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTMzMTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzNzY2NzAzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMjAtMDYtMjkgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUu
Y29tPgogCiAgICAgICAgIHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0czogU3VwcG9ydCBBcHBsZSBT
aWxpY29uIHJ1bm5pbmcgeDg2IHByb2Nlc3NlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tCmluZGV4IGM4YmU0
MjU2OGU1OWVlYTdjMDkyNTJjNzZiZmUxNDM3MTI3MTllZmYuLjJlYzg1ZTkyNTMzNGIwYWFmZWUw
YzQ3ZTA4MWJhZDJiMTYwZWI3MjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0KQEAgLTI2MjMsNiArMjYy
Myw2OCBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZv
ck5ld2x5RGlzcGxheWVkUGFyYWdyYXBoKQogICAgIEVYUEVDVF9XS19TVFJFUSgiPGI+V2ViS2l0
ITwvYj48c3Bhbj5IZWxsbyBXb3JsZDxpPkJ5ZTwvaT48L3NwYW4+IiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpLmlu
bmVySFRNTCJdKTsKIH0KIAorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5p
cHVsYXRpb25Gb3JNYW5pcHVsYXRlZFRleHRXaXRoTmV3Q29udGVudCkKK3sKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgX3Nl
dFRleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRtbD4iCisg
ICAgICAgICI8Ym9keT4iCisgICAgICAgICAgICAiPHNwYW4+aGVsbG8gd29ybGQ8L3NwYW4+Igor
ICAgICAgICAgICAgIjxwPmhlbGxvIHdlYmtpdDwvcD4iCisgICAgICAgICI8L2JvZHk+PC9odG1s
PiJdOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdGFydFRleHRNYW5pcHVs
YXRpb25zV2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb246XnsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIGF1dG8gKml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKKyAgICBFWFBFQ1RfRVEoaXRlbXMu
Y291bnQsIDJVTCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgMVVMKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvIHdvcmxkIiwgaXRlbXNbMF0udG9rZW5zWzBdLmNv
bnRlbnQpOworICAgIEVYUEVDVF9FUShpdGVtc1sxXS50b2tlbnMuY291bnQsIDFVTCk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCJoZWxsbyB3ZWJraXQiLCBpdGVtc1sxXS50b2tlbnNbMF0uY29udGVu
dCk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlw
dWxhdGlvbkZvckl0ZW1zOkBbCisgICAgICAgIGNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmll
ciwge3sgaXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiSGVsbG8gV29ybGQiIH19KS5n
ZXQoKSwKKyAgICAgICAgY3JlYXRlSXRlbShpdGVtc1sxXS5pZGVudGlmaWVyLCB7eyBpdGVtc1sx
XS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJIZWxsbyBXZWJLaXQiIH19KS5nZXQoKQorICAgIF0g
Y29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVYUEVD
VF9FUShlcnJvcnMsIG5pbCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCI8c3Bh
bj5IZWxsbyBXb3JsZDwvc3Bhbj48cD5IZWxsbyBXZWJLaXQ8L3A+IiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOworCisg
ICAgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmdldCgpLml0ZW1DYWxsYmFjayA9IF4oX1dL
VGV4dE1hbmlwdWxhdGlvbkl0ZW0gKml0ZW0pIHsKKyAgICAgICAgaWYgKGl0ZW1zLmNvdW50ID09
IDQpCisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzcGFuJyku
aW5uZXJIVE1MPSdoZWxsbyB3b3JsZCBhZ2Fpbic7Il07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3AnKS5jaGlsZE5v
ZGVzWzBdLm5vZGVWYWx1ZT0naGVsbG8gd2Via2l0IGFnYWluJzsiXTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX0VRKGl0ZW1zWzJdLnRva2Vucy5j
b3VudCwgMVVMKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvIHdvcmxkIGFnYWluIiwgaXRl
bXNbMl0udG9rZW5zWzBdLmNvbnRlbnQpOworICAgIEVYUEVDVF9FUShpdGVtc1szXS50b2tlbnMu
Y291bnQsIDFVTCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxsbyB3ZWJraXQgYWdhaW4iLCBp
dGVtc1szXS50b2tlbnNbMF0uY29udGVudCk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOkBbCisgICAgICAgIGNyZWF0
ZUl0ZW0oaXRlbXNbMl0uaWRlbnRpZmllciwge3sgaXRlbXNbMl0udG9rZW5zWzBdLmlkZW50aWZp
ZXIsIEAiSGVsbG8gV29ybGQgQWdhaW4iIH19KS5nZXQoKSwKKyAgICAgICAgY3JlYXRlSXRlbShp
dGVtc1szXS5pZGVudGlmaWVyLCB7eyBpdGVtc1szXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJI
ZWxsbyBXZWJLaXQgQWdhaW4iIH19KS5nZXQoKQorICAgIF0gY29tcGxldGlvbjpeKE5TQXJyYXk8
TlNFcnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMsIG5pbCk7Cisg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCI8c3Bhbj5IZWxsbyBXb3JsZCBBZ2Fpbjwv
c3Bhbj48cD5IZWxsbyBXZWJLaXQgQWdhaW48L3A+IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOworfQorCiBURVNUKFRl
eHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkF2b2lkRXh0cmFjdGluZ01h
bmlwdWxhdGVkVGV4dEFmdGVyTWFuaXB1bGF0aW9uKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404153</attachid>
            <date>2020-07-13 10:01:48 -0700</date>
            <delta_ts>2020-07-13 10:36:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-213318-20200713100147.patch</filename>
            <type>text/plain</type>
            <size>13021</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0MzAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjZjAyZDg0ZGQ3NDIy
MTExNTliZDRiY2E0NzhmNTc5NmIwZWMzYi4uM2QyNzliODkzMDE1ZGRmY2RlYTYyZWNhYjlhZTRj
MTFiYWVlNmYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA3LTEzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgVGV4dCBtYW5pcHVsYXRpb24g
ZG9lcyBub3Qgb2JzZXJ2ZSBtYW5pcHVsYXRlZCB0ZXh0IGFmdGVyIHVwZGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMzE4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82Mzc2NjcwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBH
YXJlbi4KKworICAgICAgICBNYWtlIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyIGJlIGF3YXJl
IG9mIGNvbnRlbnQgcmVwbGFjZW1lbnQgb24gVGV4dCBhbmQgZXh0cmFjdCB0aGUgbmV3IGNvbnRl
bnQuCisKKyAgICAgICAgVGVzdDogVGV4dE1hbmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5pcHVs
YXRpb25Gb3JNYW5pcHVsYXRlZFRleHRXaXRoTmV3Q29udGVudAorCisgICAgICAgICogZG9tL0No
YXJhY3RlckRhdGEuaDoKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0OjpzZXREYXRhQW5kVXBkYXRlKToKKyAgICAgICAgKiBkb20vVGV4dC5oOgorICAgICAg
ICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmRpZENyZWF0ZVJlbmRlcmVyRm9yRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlk
VXBkYXRlQ29udGVudEZvclRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6OnNjaGVkdWxlT2JzZXJ2YXRpb25VcGRhdGUpOgorICAgICAgICAqIGVkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1
cC5jcHA6CisKIDIwMjAtMDctMTMgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtNU0VdW0dTdHJlYW1lcl0gRGlzY2FyZCBQVFMtbGVzcyBzYW1wbGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAppbmRleCBmZTY2MDAzMGE0NjBiNDI1NTNlZGUy
MDZlMzU2ZTI0MTdlNjc0ZDJmLi5kNDMwNTZkMWYxZjc2MTgwMmFmYmY5OGM1YTkxMjRkMDU3MWZm
YmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKQEAgLTMzLDYgKzMzLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBwdHJkaWZmX3QgZGF0YU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihDaGFyYWN0ZXJEYXRhLCBtX2RhdGEpOyB9CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldERhdGEoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHNldERh
dGFBbmRVcGRhdGUoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEs
IHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQgbmV3TGVuZ3RoKTsKICAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubGVuZ3RoKCk7IH0KICAgICBXRUJDT1JFX0VY
UE9SVCBFeGNlcHRpb25PcjxTdHJpbmc+IHN1YnN0cmluZ0RhdGEodW5zaWduZWQgb2Zmc2V0LCB1
bnNpZ25lZCBjb3VudCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmREYXRhKGNvbnN0
IFN0cmluZyYpOwpAQCAtNjMsNyArNjQsNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBub2RlVmFs
dWUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROb2RlVmFsdWUoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCB2aXJ0dWFsSXNDaGFyYWN0ZXJEYXRhKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgc2V0RGF0YUFuZFVwZGF0ZShjb25z
dCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgdW5zaWduZWQgb2xkTGVu
Z3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpOwogICAgIHZvaWQgbm90aWZ5UGFyZW50QWZ0ZXJDaGFu
Z2UoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VTb3VyY2UpOwogCiAgICAgU3RyaW5nIG1fZGF0
YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0LmNwcAppbmRleCAwNDVjODFhNjVmYjA3NjU4MjQ4ZmYwZTFiYWExZWE0ZDBh
ZTNhNzhiLi4xNDAyMDk2OTUzYjgwNzA5NDI4YzI3OGI4MjY0ODkzYmMzYTZjYmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RleHQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRh
LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlVXBkYXRlLmgi
CisjaW5jbHVkZSAiVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUZXh0
Tm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0yNTIsNCArMjUzLDE2IEBAIHZvaWQg
VGV4dDo6Zm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNv
bnN0CiB9CiAjZW5kaWYKIAordm9pZCBUZXh0OjpzZXREYXRhQW5kVXBkYXRlKGNvbnN0IFN0cmlu
ZyYgbmV3RGF0YSwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIHVuc2lnbmVkIG9sZExl
bmd0aCwgdW5zaWduZWQgbmV3TGVuZ3RoKQoreworICAgIGF1dG8gb2xkRGF0YSA9IGRhdGEoKTsK
KyAgICBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhQW5kVXBkYXRlKG5ld0RhdGEsIG9mZnNldE9mUmVw
bGFjZWREYXRhLCBvbGRMZW5ndGgsIG5ld0xlbmd0aCk7CisKKyAgICBpZiAoIW9mZnNldE9mUmVw
bGFjZWREYXRhKSB7CisgICAgICAgIGF1dG8qIHRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyID0g
ZG9jdW1lbnQoKS50ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcklmRXhpc3RzKCk7CisgICAgICAg
IGlmIChVTkxJS0VMWSh0ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlciAmJiBvbGREYXRhICE9IG5l
d0RhdGEpKQorICAgICAgICAgICAgdGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXItPmRpZFVwZGF0
ZUNvbnRlbnRGb3JUZXh0KCp0aGlzKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dC5oCmluZGV4IDVmZjVlNzc3YmViNmQ3NDhkNjVjZDgwNGY2ZmIxMDBmZTdiMzBk
OTguLmM1M2RkMTYyOGY1YWFkYjY3NjA2OTg5NzkyODFjMzk3ZWQwMGUxODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
aApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlv
bigpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBzZXREYXRhQW5kVXBkYXRlKGNvbnN0IFN0cmlu
ZyYsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWREYXRhLCB1bnNpZ25lZCBvbGRMZW5ndGgsIHVu
c2lnbmVkIG5ld0xlbmd0aCkgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICBUZXh0KERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAg
ICAgICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgZGF0YSwgdHlwZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5k
ZXggZDI4NDQ1NTE3MDVlODQ0Y2Y4NDg4MDVlNGQwNTgyNzMxNzNiNjlhZC4uM2FhOWRkN2U3Njhh
NjNhN2E3NmIyY2MyNjllNzY5YzMzNDU2YzUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTUwOCw4ICs1MDgs
NyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpkaWRDcmVhdGVSZW5kZXJlckZv
ckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAobV9tYW5pcHVsYXRlZE5vZGVzLmNv
bnRhaW5zKCZlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZWxlbWVudHNX
aXRoTmV3UmVuZGVyZXIuY29tcHV0ZXNFbXB0eSgpKQotICAgICAgICBzY2hlZHVsZU9ic2VydmF0
aW9uVXBkYXRlKCk7CisgICAgc2NoZWR1bGVPYnNlcnZhdGlvblVwZGF0ZSgpOwogCiAgICAgaWYg
KGlzPFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnQpKSB7CiAgICAgICAgIGlmIChhdXRvKiBob3N0ID0g
ZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oZWxlbWVudCkuaG9zdEVsZW1lbnQoKSkKQEAgLTUxOCw4
ICs1MTcsMjIgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6ZGlkQ3JlYXRlUmVu
ZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIG1fZWxlbWVudHNXaXRo
TmV3UmVuZGVyZXIuYWRkKGVsZW1lbnQpOwogfQogCit2b2lkIFRleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyOjpkaWRVcGRhdGVDb250ZW50Rm9yVGV4dChUZXh0JiB0ZXh0KQoreworICAgIGlmICgh
bV9tYW5pcHVsYXRlZE5vZGVzLmNvbnRhaW5zKCZ0ZXh0KSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc2NoZWR1bGVPYnNlcnZhdGlvblVwZGF0ZSgpOworCisgICAgbV9tYW5pcHVsYXRlZFRleHRz
V2l0aE5ld0NvbnRlbnQuYWRkKCZ0ZXh0KTsKK30KKwogdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6c2NoZWR1bGVPYnNlcnZhdGlvblVwZGF0ZSgpCiB7CisgICAgLy8gQW4gdXBkYXRl
IGlzIGFscmVhZHkgc2NoZWR1bGVkLgorICAgIGlmICghbV9tYW5pcHVsYXRlZFRleHRzV2l0aE5l
d0NvbnRlbnQuaXNFbXB0eSgpIHx8ICFtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyLmNvbXB1dGVz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFtX2RvY3VtZW50KQogICAgICAg
ICByZXR1cm47CiAKQEAgLTUyOCwyMyArNTQxLDMwIEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6OnNjaGVkdWxlT2JzZXJ2YXRpb25VcGRhdGUoKQogICAgICAgICBpZiAoIWNvbnRy
b2xsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgSGFzaFNldDxSZWY8RWxlbWVu
dD4+IGVsZW1lbnRzVG9PYnNlcnZlOworICAgICAgICBIYXNoU2V0PFJlZjxOb2RlPj4gbm9kZXNU
b09ic2VydmU7CiAgICAgICAgIGZvciAoYXV0byYgd2Vha0VsZW1lbnQgOiBjb250cm9sbGVyLT5t
X2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyKQotICAgICAgICAgICAgZWxlbWVudHNUb09ic2VydmUu
YWRkKHdlYWtFbGVtZW50KTsKKyAgICAgICAgICAgIG5vZGVzVG9PYnNlcnZlLmFkZCh3ZWFrRWxl
bWVudCk7CiAgICAgICAgIGNvbnRyb2xsZXItPm1fZWxlbWVudHNXaXRoTmV3UmVuZGVyZXIuY2xl
YXIoKTsKIAotICAgICAgICBpZiAoZWxlbWVudHNUb09ic2VydmUuaXNFbXB0eSgpKQorICAgICAg
ICBmb3IgKGF1dG8qIHRleHQgOiBjb250cm9sbGVyLT5tX21hbmlwdWxhdGVkVGV4dHNXaXRoTmV3
Q29udGVudCkgeworICAgICAgICAgICAgaWYgKCFjb250cm9sbGVyLT5tX21hbmlwdWxhdGVkTm9k
ZXMuY29udGFpbnModGV4dCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBjb250cm9sbGVyLT5tX21hbmlwdWxhdGVkTm9kZXMucmVtb3ZlKHRleHQpOworICAgICAgICAg
ICAgbm9kZXNUb09ic2VydmUuYWRkKCp0ZXh0KTsKKyAgICAgICAgfQorICAgICAgICBjb250cm9s
bGVyLT5tX21hbmlwdWxhdGVkVGV4dHNXaXRoTmV3Q29udGVudC5jbGVhcigpOworCisgICAgICAg
IGlmIChub2Rlc1RvT2JzZXJ2ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgUmVmUHRyPE5vZGU+IGNvbW1vbkFuY2VzdG9yOwotICAgICAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBlbGVtZW50c1RvT2JzZXJ2ZSkgeworICAgICAgICBmb3IgKGF1dG8mIG5vZGUgOiBu
b2Rlc1RvT2JzZXJ2ZSkgewogICAgICAgICAgICAgaWYgKCFjb21tb25BbmNlc3RvcikKLSAgICAg
ICAgICAgICAgICBjb21tb25BbmNlc3RvciA9IG1ha2VSZWZQdHIoZWxlbWVudC5nZXQoKSk7Ci0g
ICAgICAgICAgICBlbHNlIGlmICghZWxlbWVudC0+aXNEZXNjZW5kYW50T2YoY29tbW9uQW5jZXN0
b3IuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgY29tbW9uQW5jZXN0b3IgPSBjb21tb25JbmNs
dXNpdmVBbmNlc3RvcigqY29tbW9uQW5jZXN0b3IsIGVsZW1lbnQuZ2V0KCkpOwotICAgICAgICAg
ICAgICAgIEFTU0VSVChjb21tb25BbmNlc3Rvcik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgY29tbW9uQW5jZXN0b3IgPSBpczxDb250YWluZXJOb2RlPihub2RlLmdldCgpKSA/IG5v
ZGUucHRyKCkgOiBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgICAgICAgICBlbHNlIGlmICghbm9k
ZS0+aXNEZXNjZW5kYW50T2YoY29tbW9uQW5jZXN0b3IuZ2V0KCkpKQorICAgICAgICAgICAgICAg
IGNvbW1vbkFuY2VzdG9yID0gY29tbW9uSW5jbHVzaXZlQW5jZXN0b3IoKmNvbW1vbkFuY2VzdG9y
LCBub2RlLmdldCgpKTsKICAgICAgICAgfQorCiAgICAgICAgIGF1dG8gc3RhcnQgPSBmaXJzdFBv
c2l0aW9uSW5PckJlZm9yZU5vZGUoY29tbW9uQW5jZXN0b3IuZ2V0KCkpOwogICAgICAgICBhdXRv
IGVuZCA9IGxhc3RQb3NpdGlvbkluT3JBZnRlck5vZGUoY29tbW9uQW5jZXN0b3IuZ2V0KCkpOwog
ICAgICAgICBjb250cm9sbGVyLT5vYnNlcnZlUGFyYWdyYXBocyhzdGFydCwgZW5kKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaApp
bmRleCA3NjQwNjk4YTU3ZjRiNTlkNDQwOGQ1MjVhMDg4Yzk0OGRhY2VmNDMwLi45ZGQyZWQxYjMz
MjNkMjQwNzU0NDgxMTQ4MTk2MDM0Y2I5YzBlOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCkBAIC0xMTYsNiArMTE2LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRPYnNlcnZpbmdQYXJhZ3Jh
cGhzKE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayYmLCBWZWN0b3I8RXhjbHVzaW9uUnVsZT4mJiA9
IHsgfSk7CiAKICAgICB2b2lkIGRpZENyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50Jik7
CisgICAgdm9pZCBkaWRVcGRhdGVDb250ZW50Rm9yVGV4dChUZXh0Jik7CiAgICAgdm9pZCByZW1v
dmVOb2RlKE5vZGUqKTsKIAogICAgIGVudW0gY2xhc3MgTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGUg
OiB1aW50OF90IHsKQEAgLTE3OSw2ICsxODAsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vha1B0cjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBXZWFrSGFzaFNldDxFbGVtZW50PiBtX2VsZW1lbnRz
V2l0aE5ld1JlbmRlcmVyOworICAgIEhhc2hTZXQ8VGV4dCo+IG1fbWFuaXB1bGF0ZWRUZXh0c1dp
dGhOZXdDb250ZW50OwogICAgIEhhc2hTZXQ8Tm9kZSo+IG1fbWFuaXB1bGF0ZWROb2RlczsKIAog
ICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBtX2NhY2hlZEZvbnRGYW1pbHlFeGNsdXNpb25SZXN1
bHRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGJmZmJmZjg3NTFjMzI1OGRlZWI3
ZGQ4NzcyOWY5YmVhZDkyNDI4ODguLmQ1NzRhNDk3N2E4N2E0YjFkMjFlYmMyMjg1NDYxNGY1N2E4
OTI3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTc0LDYgKzc0LDcgQEAKICNp
bmNsdWRlICJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgog
I2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlRleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIlZpc2li
bGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZjM5ZmMzNWNlZDI2ZGViYjY2
MWM1NTVjMjBhN2M1NzlmZmUwNGEyLi5iMTNjZWFhZDIyNWMyZjRiMDgzMGNkNzAyMzA2NjQ1MWZk
M2U0NGFmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDctMTMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBl
LmNvbT4KKworICAgICAgICBUZXh0IG1hbmlwdWxhdGlvbiBkb2VzIG5vdCBvYnNlcnZlIG1hbmlw
dWxhdGVkIHRleHQgYWZ0ZXIgdXBkYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTMzMTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzNzY2NzAz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDctMTMgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIFN0aWNrIHRvIGRlZmF1bHQgR2xp
YiBzb3VyY2UgcHJpb3JpdGllcyBpbiBIZWFkbGVzc1ZpZXdCYWNrZW5kLCBXaW5kb3dWaWV3QmFj
a2VuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9U
ZXh0TWFuaXB1bGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9UZXh0TWFuaXB1bGF0aW9uLm1tCmluZGV4IDg3ODY0MWU3ZDEzMDIyYjdhZTYzNzQzZWY2M2Jj
ZWFjNGYxZThjMmMuLjc2MWYzMWE5MTYzOGNjMTE4YjdiNWM3MTI2MzVhMDNkNzVkNmI2NmEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlw
dWxhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rl
eHRNYW5pcHVsYXRpb24ubW0KQEAgLTI3MTMsNiArMjcxMyw2OCBAQCBURVNUKFRleHRNYW5pcHVs
YXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvck5ld2x5RGlzcGxheWVkUGFyYWdyYXBo
KQogICAgIEVYUEVDVF9XS19TVFJFUSgiPGI+V2ViS2l0ITwvYj48c3Bhbj5IZWxsbyBXb3JsZDxp
PkJ5ZTwvaT48L3NwYW4+IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpdicpLmlubmVySFRNTCJdKTsKIH0KIAorVEVTVChU
ZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JNYW5pcHVsYXRlZFRl
eHRXaXRoTmV3Q29udGVudCkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRN
YW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgX3NldFRleHRNYW5pcHVsYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRtbD4iCisgICAgICAgICI8Ym9keT4iCisgICAgICAg
ICAgICAiPHNwYW4+aGVsbG8gd29ybGQ8L3NwYW4+IgorICAgICAgICAgICAgIjxwPmhlbGxvIHdl
YmtpdDwvcD4iCisgICAgICAgICI8L2JvZHk+PC9odG1sPiJdOworCisgICAgZG9uZSA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3VyYXRpb246
bmlsIGNvbXBsZXRpb246XnsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGF1dG8gKml0ZW1zID0gW2RlbGVn
YXRlIGl0ZW1zXTsKKyAgICBFWFBFQ1RfRVEoaXRlbXMuY291bnQsIDJVTCk7CisgICAgRVhQRUNU
X0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgMVVMKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhl
bGxvIHdvcmxkIiwgaXRlbXNbMF0udG9rZW5zWzBdLmNvbnRlbnQpOworICAgIEVYUEVDVF9FUShp
dGVtc1sxXS50b2tlbnMuY291bnQsIDFVTCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxsbyB3
ZWJraXQiLCBpdGVtc1sxXS50b2tlbnNbMF0uY29udGVudCk7CisKKyAgICBkb25lID0gZmFsc2U7
CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOkBbCisgICAg
ICAgIGNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwge3sgaXRlbXNbMF0udG9rZW5zWzBd
LmlkZW50aWZpZXIsIEAiSGVsbG8gV29ybGQiIH19KS5nZXQoKSwKKyAgICAgICAgY3JlYXRlSXRl
bShpdGVtc1sxXS5pZGVudGlmaWVyLCB7eyBpdGVtc1sxXS50b2tlbnNbMF0uaWRlbnRpZmllciwg
QCJIZWxsbyBXZWJLaXQiIH19KS5nZXQoKQorICAgIF0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNF
cnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMsIG5pbCk7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCI8c3Bhbj5IZWxsbyBXb3JsZDwvc3Bhbj48cD5I
ZWxsbyBXZWJLaXQ8L3A+IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGRl
bGVnYXRlLmdldCgpLml0ZW1DYWxsYmFjayA9IF4oX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKml0
ZW0pIHsKKyAgICAgICAgaWYgKGl0ZW1zLmNvdW50ID09IDQpCisgICAgICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9OworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzcGFuJykuaW5uZXJIVE1MPSdoZWxsbyB3b3JsZCBh
Z2Fpbic7Il07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3AnKS5jaGlsZE5vZGVzWzBdLm5vZGVWYWx1ZT0naGVsbG8g
d2Via2l0IGFnYWluJzsiXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
CisgICAgRVhQRUNUX0VRKGl0ZW1zWzJdLnRva2Vucy5jb3VudCwgMVVMKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoImhlbGxvIHdvcmxkIGFnYWluIiwgaXRlbXNbMl0udG9rZW5zWzBdLmNvbnRlbnQp
OworICAgIEVYUEVDVF9FUShpdGVtc1szXS50b2tlbnMuY291bnQsIDFVTCk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJoZWxsbyB3ZWJraXQgYWdhaW4iLCBpdGVtc1szXS50b2tlbnNbMF0uY29udGVu
dCk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlw
dWxhdGlvbkZvckl0ZW1zOkBbCisgICAgICAgIGNyZWF0ZUl0ZW0oaXRlbXNbMl0uaWRlbnRpZmll
ciwge3sgaXRlbXNbMl0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiSGVsbG8gV29ybGQgQWdhaW4i
IH19KS5nZXQoKSwKKyAgICAgICAgY3JlYXRlSXRlbShpdGVtc1szXS5pZGVudGlmaWVyLCB7eyBp
dGVtc1szXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJIZWxsbyBXZWJLaXQgQWdhaW4iIH19KS5n
ZXQoKQorICAgIF0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSB7Cisg
ICAgICAgIEVYUEVDVF9FUShlcnJvcnMsIG5pbCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKCI8c3Bhbj5IZWxsbyBXb3JsZCBBZ2Fpbjwvc3Bhbj48cD5IZWxsbyBXZWJLaXQgQWdh
aW48L3A+IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50
LmJvZHkuaW5uZXJIVE1MIl0pOworfQorCiBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRl
VGV4dE1hbmlwdWxhdGlvbkF2b2lkRXh0cmFjdGluZ01hbmlwdWxhdGVkVGV4dEFmdGVyTWFuaXB1
bGF0aW9uKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGV4dE1hbmlwdWxhdGlv
bkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>