<?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>228890</bug_id>
          
          <creation_ts>2021-08-06 20:54:36 -0700</creation_ts>
          <short_desc>[ARM64] Clean up and fix Pre/Post-Indexed Address Mode to Air for ARM64 (Load Instruction)</short_desc>
          <delta_ts>2021-08-10 00:22:40 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yijia Huang">yijia_huang</reporter>
          <assigned_to name="Yijia Huang">yijia_huang</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1782655</commentid>
    <comment_count>0</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-06 20:54:36 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782667</commentid>
    <comment_count>1</comment_count>
      <attachid>435116</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-06 23:04:15 -0700</bug_when>
    <thetext>Created attachment 435116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782705</commentid>
    <comment_count>2</comment_count>
      <attachid>435116</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-08-07 10:21:09 -0700</bug_when>
    <thetext>Comment on attachment 435116
Patch

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

&gt; Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:142
&gt; +    auto detect = [&amp;] (const HashMap&lt;MemoryValue*, Value*&gt;&amp; candidates, bool isPreIndexCandidiates) {

Typo: /isPreIndexCandidiates/isPreIndexCandidates/

&gt; Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:165
&gt; +                if (!controlEquivalent(memory, address-&gt;child(1)))

Can you put a brief description in the ChangeLog as to why this is needed?

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2585
&gt; +            //     memory = load(base, 0)                MoveWithIncrement (%address, posfix(offset)) %memory

/posfix/postfix/

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:2591
&gt; +                if (m_locked.contains(address) || address-&gt;opcode() != Add || address-&gt;type() != Int64)

Please put a brief description in the ChangeLog as to why this m_locked check is needed.

&gt; Source/JavaScriptCore/b3/air/AirArg.h:1319
&gt; +            return isValidIncrementIndexForm(offset());

You can remove this line too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782739</commentid>
    <comment_count>3</comment_count>
      <attachid>435137</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-07 16:42:01 -0700</bug_when>
    <thetext>Created attachment 435137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782740</commentid>
    <comment_count>4</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-07 16:43:04 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #2)
&gt; Comment on attachment 435116 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435116&amp;action=review
&gt; 

Thanks for reviewing. Updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782743</commentid>
    <comment_count>5</comment_count>
      <attachid>435139</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-07 17:15:17 -0700</bug_when>
    <thetext>Created attachment 435139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782756</commentid>
    <comment_count>6</comment_count>
      <attachid>435142</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-07 20:58:45 -0700</bug_when>
    <thetext>Created attachment 435142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782757</commentid>
    <comment_count>7</comment_count>
      <attachid>435143</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-07 21:01:47 -0700</bug_when>
    <thetext>Created attachment 435143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782765</commentid>
    <comment_count>8</comment_count>
      <attachid>435148</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-08 03:40:40 -0700</bug_when>
    <thetext>Created attachment 435148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782783</commentid>
    <comment_count>9</comment_count>
      <attachid>435156</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-08 14:14:32 -0700</bug_when>
    <thetext>Created attachment 435156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782816</commentid>
    <comment_count>10</comment_count>
      <attachid>435162</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-08 19:10:36 -0700</bug_when>
    <thetext>Created attachment 435162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782819</commentid>
    <comment_count>11</comment_count>
      <attachid>435164</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-08 19:30:23 -0700</bug_when>
    <thetext>Created attachment 435164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782828</commentid>
    <comment_count>12</comment_count>
      <attachid>435168</attachid>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-08 23:18:04 -0700</bug_when>
    <thetext>Created attachment 435168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782997</commentid>
    <comment_count>13</comment_count>
      <attachid>435168</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-08-09 15:33:32 -0700</bug_when>
    <thetext>Comment on attachment 435168
Patch

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

r=me with nit.

&gt; Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:147
&gt; +    auto detect = [&amp;] (const HashMap&lt;MemoryValue*, Value*&gt;&amp; candidates, bool isPreIndexCandidates) {

Nit: I&apos;d change `isPreIndexCandidate` to a lambda which contains the logic to do the canonicalization. I find it to be an anti pattern to pass a bool to a lambda where there is exactly one call with true and false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783026</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-09 16:46:17 -0700</bug_when>
    <thetext>Committed r280808 (240378@main): &lt;https://commits.webkit.org/240378@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435168.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783032</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-09 16:59:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/81719365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783047</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-08-09 18:08:11 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #13)
&gt; Comment on attachment 435168 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435168&amp;action=review
&gt; 
&gt; r=me with nit.
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:147
&gt; &gt; +    auto detect = [&amp;] (const HashMap&lt;MemoryValue*, Value*&gt;&amp; candidates, bool isPreIndexCandidates) {
&gt; 
&gt; Nit: I&apos;d change `isPreIndexCandidate` to a lambda which contains the logic
&gt; to do the canonicalization. I find it to be an anti pattern to pass a bool
&gt; to a lambda where there is exactly one call with true and false.

Why was this not addressed in the landed patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783050</commentid>
    <comment_count>17</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-09 18:28:16 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #16)
&gt; (In reply to Keith Miller from comment #13)
&gt; &gt; Comment on attachment 435168 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=435168&amp;action=review
&gt; &gt; 
&gt; &gt; r=me with nit.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:147
&gt; &gt; &gt; +    auto detect = [&amp;] (const HashMap&lt;MemoryValue*, Value*&gt;&amp; candidates, bool isPreIndexCandidates) {
&gt; &gt; 
&gt; &gt; Nit: I&apos;d change `isPreIndexCandidate` to a lambda which contains the logic
&gt; &gt; to do the canonicalization. I find it to be an anti pattern to pass a bool
&gt; &gt; to a lambda where there is exactly one call with true and false.
&gt; 
&gt; Why was this not addressed in the landed patch?

Sorry, I will update it in the next patch with the store instruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783053</commentid>
    <comment_count>18</comment_count>
      <attachid>435168</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-08-09 18:34:53 -0700</bug_when>
    <thetext>Comment on attachment 435168
Patch

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

&gt; Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:157
&gt; +                // ***                          --&gt;  newMemory = Load(base, offset)
&gt; +                // ***                               ***

Curious: what is the meaning of the &quot;***&quot; here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783058</commentid>
    <comment_count>19</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-09 18:46:11 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #18)
&gt; Comment on attachment 435168 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435168&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:157
&gt; &gt; +                // ***                          --&gt;  newMemory = Load(base, offset)
&gt; &gt; +                // ***                               ***
&gt; 
&gt; Curious: what is the meaning of the &quot;***&quot; here?

I was using the ellipsis (...) to indicate any code between them. But it violates the code style, where the format checker requires only one space after the period.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783078</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-08-09 19:39:19 -0700</bug_when>
    <thetext>(In reply to Yijia Huang from comment #19)
&gt; (In reply to Mark Lam from comment #18)
&gt; &gt; Comment on attachment 435168 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=435168&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:157
&gt; &gt; &gt; +                // ***                          --&gt;  newMemory = Load(base, offset)
&gt; &gt; &gt; +                // ***                               ***
&gt; &gt; 
&gt; &gt; Curious: what is the meaning of the &quot;***&quot; here?
&gt; 
&gt; I was using the ellipsis (...) to indicate any code between them. But it
&gt; violates the code style, where the format checker requires only one space
&gt; after the period.

Oh, in that case, I would just ignore the style checker because you have a valid use case there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783082</commentid>
    <comment_count>21</comment_count>
    <who name="Yijia Huang">yijia_huang</who>
    <bug_when>2021-08-09 19:47:07 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #20)
&gt; (In reply to Yijia Huang from comment #19)
&gt; &gt; (In reply to Mark Lam from comment #18)
&gt; &gt; &gt; Comment on attachment 435168 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=435168&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/b3/B3CanonicalizePrePostIncrements.cpp:157
&gt; &gt; &gt; &gt; +                // ***                          --&gt;  newMemory = Load(base, offset)
&gt; &gt; &gt; &gt; +                // ***                               ***
&gt; &gt; &gt; 
&gt; &gt; &gt; Curious: what is the meaning of the &quot;***&quot; here?
&gt; &gt; 
&gt; &gt; I was using the ellipsis (...) to indicate any code between them. But it
&gt; &gt; violates the code style, where the format checker requires only one space
&gt; &gt; after the period.
&gt; 
&gt; Oh, in that case, I would just ignore the style checker because you have a
&gt; valid use case there.

If I ignore that, would others encounter the checker warning every time they upload a patch because of it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783088</commentid>
    <comment_count>22</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-08-09 20:01:30 -0700</bug_when>
    <thetext>(In reply to Yijia Huang from comment #21)
&gt; If I ignore that, would others encounter the checker warning every time they
&gt; upload a patch because of it?

Only if they touch that line.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435116</attachid>
            <date>2021-08-06 23:04:15 -0700</date>
            <delta_ts>2021-08-07 16:41:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228890-20210807010414.patch</filename>
            <type>text/plain</type>
            <size>10975</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZWE3ZTQyOGZhOTM2NGRlYzNiNDYwNTJhOTQxMDA0ZjA5MzUwMTRlLi5iZjI3N2ZlMDk3YThiNWEw
OTY0ZDg3NTBiZTIzMTkwZDczOWY1Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAyMS0wOC0wNiAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0FSTTY0XSBDbGVhbiB1cCBQcmUvUG9zdC1JbmRleGVkIEFkZHJlc3Mg
TW9kZSB0byBBaXIgZm9yIEFSTTY0IChMb2FkIEluc3RydWN0aW9uKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4ODkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgYW5k
IGRvZXMgbWlub3IgZml4IHRvIHRoZSBwcmV2aW91cyBwYXRjaC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODA0NworCisgICAgICAgICogYjMvQjND
YW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpjYW5v
bmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyk6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNw
cDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFy
Zzo6aXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFy
Zzo6aXNWYWxpZEZvcm0gY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzVmFs
aWRQcmVJbmRleEZvcm0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6Omlz
VmFsaWRQb3N0SW5kZXhGb3JtKTogRGVsZXRlZC4KKyAgICAgICAgKiBiMy9haXIvb3Bjb2RlX2dl
bmVyYXRvci5yYjoKKwogMjAyMS0wOC0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGJ1aWxkIGZpeCBvbiBEZWJ1ZyBidWlsZApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2Fub25pY2FsaXplUHJlUG9zdElu
Y3JlbWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2Fub25pY2FsaXplUHJl
UG9zdEluY3JlbWVudHMuY3BwCmluZGV4IGIzNzQzMWZhYWE3ZDBjNzE0YzM0MWYwZjE0YWI4ZmIw
MTIxMWUyNDAuLmJkYzY3OGRkMDVhNmYwM2EzNDFiZWRmMTYwZWFjNjQzY2RhMjVmZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNy
ZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYW5vbmljYWxpemVQ
cmVQb3N0SW5jcmVtZW50cy5jcHAKQEAgLTcyLDE2ICs3MiwxNiBAQCBib29sIGNhbm9uaWNhbGl6
ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAvLyAgICAgbWVtb3J5ID0g
TG9hZChiYXNlLCAwKQogICAgIC8vICAgICAuLi4KICAgICAvLyAgICAgYWRkcmVzcyA9IEFkZChi
YXNlLCBvZmZzZXQpCi0gICAgYXV0byB0cnlQcmVQb3N0SW5kZXggPSBbJl0gKFZhbHVlKiB2YWx1
ZSkgeworICAgIGF1dG8gdHJ5QWRkUHJlUG9zdEluZGV4Q2FuZGlkYXRlID0gWyZdIChWYWx1ZSog
dmFsdWUpIHsKICAgICAgICAgc3dpdGNoICh2YWx1ZS0+b3Bjb2RlKCkpIHsKICAgICAgICAgY2Fz
ZSBMb2FkOiB7CiAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gdmFsdWUtPmFzPE1l
bW9yeVZhbHVlPigpOwogCi0gICAgICAgICAgICBhdXRvIHRyeVByZVBvc3RJbmRleE1lbW9yeSA9
IFsmXSAoKSB7CisgICAgICAgICAgICBhdXRvIHRyeVVwZGF0ZUNhbmRpZGF0ZXMgPSBbJl0gKCkg
ewogICAgICAgICAgICAgICAgIGlmIChtZW1vcnktPnR5cGUoKSAhPSBJbnQzMiAmJiBtZW1vcnkt
PnR5cGUoKSAhPSBJbnQ2NCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIGlmIChtZW1vcnktPm9mZnNldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgh
QXJnOjppc1ZhbGlkUHJlSW5kZXhGb3JtKG1lbW9yeS0+b2Zmc2V0KCkpKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoIUFyZzo6aXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShtZW1vcnktPm9mZnNl
dCgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAg
ICAgVmFsdWVLZXkgYmFzZU9mZnNldGtleSA9IFZhbHVlS2V5KG1lbW9yeS0+Y2hpbGQoMCksIHN0
YXRpY19jYXN0PGludDY0X3Q+KG1lbW9yeS0+b2Zmc2V0KCkpKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFiYXNlT2Zmc2V0VG9BZGRyZXNzZXMuY29udGFpbnMoYmFzZU9mZnNldGtleSkpCkBA
IC05Myw3ICs5Myw3IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2Vk
dXJlJiBwcm9jKQogICAgICAgICAgICAgICAgIHZhbHVlVG9JbmRleC5hZGQodmFsdWUsIGluZGV4
KTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIHRyeVByZVBvc3RJbmRleE1lbW9yeSgp
OworICAgICAgICAgICAgdHJ5VXBkYXRlQ2FuZGlkYXRlcygpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIApAQCAtMTAxLDEyICsxMDEsMTIgQEAgYm9vbCBjYW5vbmljYWxpemVQcmVQ
b3N0SW5jcmVtZW50cyhQcm9jZWR1cmUmIHByb2MpCiAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9
IHZhbHVlLT5jaGlsZCgwKTsKICAgICAgICAgICAgIFZhbHVlKiByaWdodCA9IHZhbHVlLT5jaGls
ZCgxKTsKIAotICAgICAgICAgICAgYXV0byB0cnlQb3RlbnRpYWxQb3N0SW5kZXhBZGRyZXNzID0g
WyZdICgpIHsKKyAgICAgICAgICAgIGF1dG8gdHJ5VXBkYXRlQ2FuZGlkYXRlcyA9IFsmXSAoKSB7
CiAgICAgICAgICAgICAgICAgaWYgKCFyaWdodC0+aGFzSW50UHRyKCkgfHwgdmFsdWUtPnR5cGUo
KSAhPSBJbnQ2NCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IGludHB0cl90IG9mZnNldCA9IHJpZ2h0LT5hc0ludFB0cigpOwogICAgICAgICAgICAgICAgIFZh
bHVlOjpPZmZzZXRUeXBlIHNtYWxsT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5
cGU+KG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNtYWxsT2Zmc2V0ICE9IG9mZnNldCB8
fCAhQXJnOjppc1ZhbGlkUHJlSW5kZXhGb3JtKHNtYWxsT2Zmc2V0KSkKKyAgICAgICAgICAgICAg
ICBpZiAoc21hbGxPZmZzZXQgIT0gb2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRJbmNyZW1lbnRJbmRl
eEZvcm0oc21hbGxPZmZzZXQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgLy8gc28gZmFyIHRoaXMgQWRkIHZhbHVlIGlzIGEgdmFsaWQgYWRkcmVzcyBjYW5k
aWRhdGUgZm9yIGJvdGggcHJlZml4IGFuZCBwb3N0Zml4IHBhdHRlcm4KICAgICAgICAgICAgICAg
ICBWYWx1ZUtleSBiYXNlT2Zmc2V0a2V5ID0gVmFsdWVLZXkobGVmdCwgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oc21hbGxPZmZzZXQpKTsKQEAgLTExOCw3ICsxMTgsNyBAQCBib29sIGNhbm9uaWNhbGl6
ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgICAgICAgICAg
cG9zdEluZGV4Q2FuZGlkYXRlcy5hZGQobWVtb3J5LCB2YWx1ZSk7CiAgICAgICAgICAgICB9Owog
Ci0gICAgICAgICAgICB0cnlQb3RlbnRpYWxQb3N0SW5kZXhBZGRyZXNzKCk7CisgICAgICAgICAg
ICB0cnlVcGRhdGVDYW5kaWRhdGVzKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
CkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyhQ
cm9jZWR1cmUmIHByb2MpCiAgICAgZm9yIChCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrIDogcHJvYy5i
bG9ja3NJblByZU9yZGVyKCkpIHsKICAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYmFz
aWNCbG9jay0+c2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgICAgICBWYWx1ZSogdmFsdWUgPSBi
YXNpY0Jsb2NrLT5hdChpbmRleCk7Ci0gICAgICAgICAgICB0cnlQcmVQb3N0SW5kZXgodmFsdWUp
OworICAgICAgICAgICAgdHJ5QWRkUHJlUG9zdEluZGV4Q2FuZGlkYXRlKHZhbHVlKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtMTM5LDE0ICsxMzksMTQgQEAgYm9vbCBjYW5vbmljYWxpemVQcmVQ
b3N0SW5jcmVtZW50cyhQcm9jZWR1cmUmIHByb2MpCiAgICAgICAgICAgICB8fCAoZG9taW5hdG9y
cy5kb21pbmF0ZXModjItPm93bmVyLCB2MS0+b3duZXIpICYmIGJhY2t3YXJkc0RvbWluYXRvcnMu
ZG9taW5hdGVzKHYxLT5vd25lciwgdjItPm93bmVyKSk7CiAgICAgfTsKIAotICAgIGF1dG8gZGV0
ZWN0ID0gWyZdIChIYXNoTWFwPE1lbW9yeVZhbHVlKiwgVmFsdWUqPiBjYW5kaWRhdGVzKSB7Ci0g
ICAgICAgIGZvciAoYXV0byBpdHIgPSBjYW5kaWRhdGVzLmJlZ2luKCk7IGl0ciAhPSBjYW5kaWRh
dGVzLmVuZCgpOyArK2l0cikgewotICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGl0
ci0+a2V5OwotICAgICAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBpdHItPnZhbHVlOworICAgIGF1
dG8gZGV0ZWN0ID0gWyZdIChjb25zdCBIYXNoTWFwPE1lbW9yeVZhbHVlKiwgVmFsdWUqPiYgY2Fu
ZGlkYXRlcywgYm9vbCBpc1ByZUluZGV4Q2FuZGlkaWF0ZXMpIHsKKyAgICAgICAgZm9yIChhdXRv
IHBhaXIgOiBjYW5kaWRhdGVzKSB7CisgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0g
cGFpci5rZXk7CisgICAgICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHBhaXIudmFsdWU7CiAgICAg
ICAgICAgICBpZiAoaWdub3JlZFZhbHVlcy5jb250YWlucyhtZW1vcnkpIHx8IGlnbm9yZWRWYWx1
ZXMuY29udGFpbnMoYWRkcmVzcykgfHwgIWNvbnRyb2xFcXVpdmFsZW50KG1lbW9yeSwgYWRkcmVz
cykpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChjYW5kaWRh
dGVzID09IHByZUluZGV4Q2FuZGlkYXRlcykgeworICAgICAgICAgICAgaWYgKGlzUHJlSW5kZXhD
YW5kaWRpYXRlcykgewogICAgICAgICAgICAgICAgIC8vIGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zm
c2V0KSAgICAgICBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkKICAgICAgICAgICAgICAgICAv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPiAgbmV3TWVtb3J5ID0gTG9hZChiYXNl
LCBvZmZzZXQpCiAgICAgICAgICAgICAgICAgLy8gLi4uICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC4uLgpAQCAtMTYyLDYgKzE2Miw4IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdElu
Y3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgICAgIC8vIC4uLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgLS0+ICAuLi4KICAgICAgICAgICAgICAgICAvLyBvZmZzZXQgPSBD
b25zdGFudCAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gSWRlbnRpdHkobmV3T2Zmc2V0KQogICAg
ICAgICAgICAgICAgIC8vIGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0KSAgICAgICBhZGRyZXNz
ID0gSWRlbnRpdHkobmV3QWRkcmVzcykKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2xFcXVp
dmFsZW50KG1lbW9yeSwgYWRkcmVzcy0+Y2hpbGQoMSkpKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZW1vcnlJbmRleCA9IHZhbHVlVG9J
bmRleC5nZXQobWVtb3J5KTsKICAgICAgICAgICAgICAgICBWYWx1ZSogbmV3T2Zmc2V0ID0gaW5z
ZXJ0aW9uU2V0Lmluc2VydDxDb25zdDY0VmFsdWU+KG1lbW9yeUluZGV4LCBtZW1vcnktPm9yaWdp
bigpLCBhZGRyZXNzLT5jaGlsZCgxKS0+YXNJbnQoKSk7CiAgICAgICAgICAgICAgICAgVmFsdWUq
IG5ld0FkZHJlc3MgPSBpbnNlcnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtZW1vcnlJbmRleCwgQWRk
LCBtZW1vcnktPm9yaWdpbigpLCBhZGRyZXNzLT5jaGlsZCgwKSwgbmV3T2Zmc2V0KTsKQEAgLTE3
NSw4ICsxNzcsOCBAQCBib29sIGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVy
ZSYgcHJvYykKICAgICAgICAgfQogICAgIH07CiAKLSAgICBkZXRlY3QocHJlSW5kZXhDYW5kaWRh
dGVzKTsKLSAgICBkZXRlY3QocG9zdEluZGV4Q2FuZGlkYXRlcyk7CisgICAgZGV0ZWN0KHByZUlu
ZGV4Q2FuZGlkYXRlcywgdHJ1ZSk7CisgICAgZGV0ZWN0KHBvc3RJbmRleENhbmRpZGF0ZXMsIGZh
bHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNM
b3dlclRvQWlyLmNwcAppbmRleCAzNTM1YmIxM2JjMTNhY2IyYzQ3Y2M3ZGUzMDEzNmZmZDM3Mjhm
ZDVkLi40MmZhZjFhYTEwOTcyNDE3OGYzODVjMWE5NmFhYzRiZGY5YmMxYWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMjU3OCwyMyArMjU3OCwyMyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBQcmUtSW5kZXggQ2Fu
b25pY2FsIEZvcm06Ci0gICAgICAgICAgICAvLyAgICAgYWRkcmVzcyA9IGFkZChiYXNlLCBvZmZz
ZXQpCi0gICAgICAgICAgICAvLyAgICAgbWVtb3J5ID0gbG9hZChiYXNlLCBvZmZzZXQpCisgICAg
ICAgICAgICAvLyAgICAgYWRkcmVzcyA9IGFkZChiYXNlLCBvZmZzZXQpICAgIC0tLT4gICBNb3Zl
ICViYXNlICVhZGRyZXNzCisgICAgICAgICAgICAvLyAgICAgbWVtb3J5ID0gbG9hZChiYXNlLCBv
ZmZzZXQpICAgICAgICAgICBNb3ZlV2l0aEluY3JlbWVudCAoJWFkZHJlc3MsIHByZWZpeChvZmZz
ZXQpKSAlbWVtb3J5CiAgICAgICAgICAgICAvLyBQb3N0LUluZGV4IENhbm9uaWNhbCBGb3JtOgot
ICAgICAgICAgICAgLy8gICAgIG1lbW9yeSA9IGxvYWQoYmFzZSwgMCkKLSAgICAgICAgICAgIC8v
ICAgICBhZGRyZXNzID0gYWRkKGJhc2UsIG9mZnNldCkKKyAgICAgICAgICAgIC8vICAgICBhZGRy
ZXNzID0gYWRkKGJhc2UsIG9mZnNldCkgICAgLS0tPiAgIE1vdmUgJWJhc2UgJWFkZHJlc3MKKyAg
ICAgICAgICAgIC8vICAgICBtZW1vcnkgPSBsb2FkKGJhc2UsIDApICAgICAgICAgICAgICAgIE1v
dmVXaXRoSW5jcmVtZW50ICglYWRkcmVzcywgcG9zZml4KG9mZnNldCkpICVtZW1vcnkKICAgICAg
ICAgICAgIGF1dG8gdHJ5QXBwZW5kSW5jcmVtZW50QWRkcmVzcyA9IFsmXSAoKSAtPiBib29sIHsK
ICAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKE1v
dmVXaXRoSW5jcmVtZW50MzIsIE1vdmVXaXRoSW5jcmVtZW50NjQsIG1lbW9yeS0+dHlwZSgpKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpQcmVJbmRleCwg
QXJnOjpUbXApIHx8ICFtX2luZGV4KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBtX2Jsb2NrLT5hdChtX2luZGV4IC0g
MSk7Ci0gICAgICAgICAgICAgICAgaWYgKGFkZHJlc3MtPm9wY29kZSgpICE9IEFkZCB8fCBhZGRy
ZXNzLT50eXBlKCkgIT0gSW50NjQpCisgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRh
aW5zKGFkZHJlc3MpIHx8IGFkZHJlc3MtPm9wY29kZSgpICE9IEFkZCB8fCBhZGRyZXNzLT50eXBl
KCkgIT0gSW50NjQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgICAgICBpZiAoYWRkcmVzcy0+Y2hpbGQoMCkgIT0gbWVtb3J5LT5sYXN0Q2hpbGQoKSB8fCAh
YWRkcmVzcy0+Y2hpbGQoMSktPmhhc0ludFB0cigpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gYWRkcmVzcy0+Y2hp
bGQoMSktPmFzSW50UHRyKCk7CiAgICAgICAgICAgICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgc21h
bGxPZmZzZXQgPSBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4ob2Zmc2V0KTsKLSAgICAg
ICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0gb2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRQb3N0
SW5kZXhGb3JtKHNtYWxsT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQg
IT0gb2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRJbmNyZW1lbnRJbmRleEZvcm0oc21hbGxPZmZzZXQp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgICAgICBB
cmcgaW5jcmVtZW50QXJnID0gQXJnKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFyZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcu
aAppbmRleCBlMWY2NDY2ZjAzMjJhYjgyODBiZDRlYjg4ZjYxZDlmYzk0N2Y3YmNiLi5hMDYyMTVj
NmE3NDllYmJjNWQ4ZWE2N2NjNGRmNDc2YWIzODdjYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQXJnLmgKQEAgLTEyODAsMTUgKzEyODAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0
PEludD4+Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFByZUluZGV4Rm9ybShJbnQgb2Zmc2V0KQot
ICAgIHsKLSAgICAgICAgaWYgKGlzQVJNNjQoKSkKLSAgICAgICAgICAgIHJldHVybiBpc1ZhbGlk
U2lnbmVkSW1tOShvZmZzZXQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PElu
dD4+Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFBvc3RJbmRleEZvcm0oSW50IG9mZnNldCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKEludCBvZmZzZXQpCiAgICAg
ewogICAgICAgICBpZiAoaXNBUk02NCgpKQogICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRTaWdu
ZWRJbW05KG9mZnNldCk7CkBAIC0xMzI0LDkgKzEzMTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIGNh
c2UgSW5kZXg6CiAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZEluZGV4Rm9ybShzY2FsZSgpLCBv
ZmZzZXQoKSwgd2lkdGgpOwogICAgICAgICBjYXNlIFByZUluZGV4OgotICAgICAgICAgICAgcmV0
dXJuIGlzVmFsaWRQcmVJbmRleEZvcm0ob2Zmc2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGlz
VmFsaWRJbmNyZW1lbnRJbmRleEZvcm0ob2Zmc2V0KCkpOwogICAgICAgICBjYXNlIFBvc3RJbmRl
eDoKLSAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkUG9zdEluZGV4Rm9ybShvZmZzZXQoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gaXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShvZmZzZXQoKSk7CiAg
ICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNl
IERvdWJsZUNvbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29w
Y29kZV9nZW5lcmF0b3IucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9n
ZW5lcmF0b3IucmIKaW5kZXggZjFiZjFhNDZjZmM4ODllYzE5MzQ2ZjJjMDZiN2NmNTBmOWUzZGUw
ZC4uMDU1YzA1YTBhM2M4OTA5ZDE1ZTU1NWEwNGJhOTQzYzg2MzczMTRmZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgpAQCAtOTMwLDEw
ICs5MzAsMTAgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAg
ICAgIG91dHAucHV0cyAiaWYgKCFBcmc6OmlzVmFsaWRJbmRleEZvcm0oYXJnc1sje2luZGV4fV0u
c2NhbGUoKSwgYXJnc1sje2luZGV4fV0ub2Zmc2V0KCksICN7YXJnLndpZHRoQ29kZX0pKSIKICAg
ICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJPUEdFTl9SRVRVUk4oZmFsc2UpOyIKICAgICAg
ICAgICAgICAgICB3aGVuICJQcmVJbmRleCIKLSAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRz
ICJpZiAoIUFyZzo6aXNWYWxpZFByZUluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZzZXQoKSkp
IgorICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlkSW5jcmVt
ZW50SW5kZXhGb3JtKGFyZ3NbI3tpbmRleH1dLm9mZnNldCgpKSkiCiAgICAgICAgICAgICAgICAg
ICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hl
biAiUG9zdEluZGV4IgotICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjpp
c1ZhbGlkUG9zdEluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZzZXQoKSkpIgorICAgICAgICAg
ICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3Jt
KGFyZ3NbI3tpbmRleH1dLm9mZnNldCgpKSkiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHV0
cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hlbiAiQmlnSW1tIgog
ICAgICAgICAgICAgICAgIHdoZW4gIlJlbENvbmQiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435137</attachid>
            <date>2021-08-07 16:42:01 -0700</date>
            <delta_ts>2021-08-07 17:15:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228890-20210807184200.patch</filename>
            <type>text/plain</type>
            <size>11807</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZWE3ZTQyOGZhOTM2NGRlYzNiNDYwNTJhOTQxMDA0ZjA5MzUwMTRlLi43NzM2ZDhjNDQ0MjRiODk5
MzI0Y2Y0YWZlODY5NDMxZjFiZGMzOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMS0wOC0wNyAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0FSTTY0XSBDbGVhbiB1cCBQcmUvUG9zdC1JbmRleGVkIEFkZHJlc3Mg
TW9kZSB0byBBaXIgZm9yIEFSTTY0IChMb2FkIEluc3RydWN0aW9uKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4ODkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgYW5k
IGRvZXMgbWlub3IgZml4IHRvIHRoZSBwcmV2aW91cyBwYXRjaC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODA0NworCisgICAgICAgIEluIGIzL0Iz
Q2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMuY3BwLCB3ZSBhZGRlZCB0aGlzOgorCisgICAg
ICAgICAgICBpZiAoIWNvbnRyb2xFcXVpdmFsZW50KG1lbW9yeSwgYWRkcmVzcy0+Y2hpbGQoMSkp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFRvIGNvbnZlcnQgcG9zdC1p
bmRleCBjYW5kaWRhdGVzIHRvIHRoZSBjYW5vbmljYWwgZm9ybSwgd2UgbmVlZCB0byBtb3ZlIHRo
ZSBhZGRyZXNzCisgICAgICAgIHRvIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgbG9hZC4gVGhpcyBp
cyBzdWJqZWN0IHRvIHRoZSBkb21pbmFuY2UgY29uc3RyYWludHMgdGhhdCBhZGQKKyAgICAgICAg
bXVzdCBiZSBjb250cm9sIGVxdWl2YWxlbnQgdG8gdGhlIGxvYWQuIFNvLCBzaW1pbGFybHksIGlm
IHdlIG5lZWQgdG8gbW92ZSB0aGUgb2Zmc2V0CisgICAgICAgIHRvIGp1c3QgYmVmb3JlIHRoZSBs
b2FkIGFzIHdlbGwsIHRoZSBkb21pbmFuY2UgY29uc3RyYWludHMgbXVzdCBiZSBzYXRpc2ZpZWQu
CisKKyAgICAgICAgSW4gYjMvQjNMb3dlclRvQWlyLmNwcCwgd2UgdXBkYXRlZCB0aGlzOgorCisg
ICAgICAgICAgICBpZiAobV9sb2NrZWQuY29udGFpbnMoYWRkcmVzcykgfHwgYWRkcmVzcy0+b3Bj
b2RlKCkgIT0gQWRkIHx8IGFkZHJlc3MtPnR5cGUoKSAhPSBJbnQ2NCkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHdpdGggYWRkaXRpb25hbCBtX2xvY2tlZCBj
aGVjay4gSWYgdGhlIGFkZHJlc3MgaXMgYWxyZWFkeSBsb2NrZWQsIHRoZXJlIGlzIG5vIG5lZWQg
dG8KKyAgICAgICAgY29udmVydCB0aGUgTG9hZCBpbnN0cnVjdGlvbiB0byB0aGUgcHJlL3Bvc3Qt
aW5jcmVtZW50IGZvcm0uCisKKyAgICAgICAgKiBiMy9CM0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNy
ZW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OmNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1l
bnRzKToKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fpci9B
aXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkSW5jcmVtZW50SW5k
ZXhGb3JtKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkRm9ybSBjb25zdCk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZFByZUluZGV4Rm9ybSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZFBvc3RJbmRleEZvcm0pOiBE
ZWxldGVkLgorICAgICAgICAqIGIzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiOgorCiAyMDIxLTA4
LTA2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgYnVpbGQgZml4IG9uIERlYnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHAKaW5k
ZXggYjM3NDMxZmFhYTdkMGM3MTRjMzQxZjBmMTRhYjhmYjAxMjExZTI0MC4uMGJjYjgwMjdiNTFi
YmZlNDMzMDY5YjgzMzU3MGYyMzYxOWQ1MGE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzLmNwcApA
QCAtNzIsMTYgKzcyLDE2IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJv
Y2VkdXJlJiBwcm9jKQogICAgIC8vICAgICBtZW1vcnkgPSBMb2FkKGJhc2UsIDApCiAgICAgLy8g
ICAgIC4uLgogICAgIC8vICAgICBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkKLSAgICBhdXRv
IHRyeVByZVBvc3RJbmRleCA9IFsmXSAoVmFsdWUqIHZhbHVlKSB7CisgICAgYXV0byB0cnlBZGRQ
cmVQb3N0SW5kZXhDYW5kaWRhdGUgPSBbJl0gKFZhbHVlKiB2YWx1ZSkgewogICAgICAgICBzd2l0
Y2ggKHZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICBjYXNlIExvYWQ6IHsKICAgICAgICAgICAg
IE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CiAKLSAgICAg
ICAgICAgIGF1dG8gdHJ5UHJlUG9zdEluZGV4TWVtb3J5ID0gWyZdICgpIHsKKyAgICAgICAgICAg
IGF1dG8gdHJ5VXBkYXRlQ2FuZGlkYXRlcyA9IFsmXSAoKSB7CiAgICAgICAgICAgICAgICAgaWYg
KG1lbW9yeS0+dHlwZSgpICE9IEludDMyICYmIG1lbW9yeS0+dHlwZSgpICE9IEludDY0KQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeS0+b2Zm
c2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFBcmc6OmlzVmFsaWRQcmVJbmRleEZv
cm0obWVtb3J5LT5vZmZzZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGlmICghQXJnOjppc1Zh
bGlkSW5jcmVtZW50SW5kZXhGb3JtKG1lbW9yeS0+b2Zmc2V0KCkpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICBWYWx1ZUtleSBiYXNlT2Zmc2V0
a2V5ID0gVmFsdWVLZXkobWVtb3J5LT5jaGlsZCgwKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4obWVt
b3J5LT5vZmZzZXQoKSkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWJhc2VPZmZzZXRUb0Fk
ZHJlc3Nlcy5jb250YWlucyhiYXNlT2Zmc2V0a2V5KSkKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBj
YW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyhQcm9jZWR1cmUmIHByb2MpCiAgICAgICAgICAg
ICAgICAgdmFsdWVUb0luZGV4LmFkZCh2YWx1ZSwgaW5kZXgpOwogICAgICAgICAgICAgfTsKIAot
ICAgICAgICAgICAgdHJ5UHJlUG9zdEluZGV4TWVtb3J5KCk7CisgICAgICAgICAgICB0cnlVcGRh
dGVDYW5kaWRhdGVzKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0xMDEs
MTIgKzEwMSwxMiBAQCBib29sIGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVy
ZSYgcHJvYykKICAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0gdmFsdWUtPmNoaWxkKDApOwogICAg
ICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gdmFsdWUtPmNoaWxkKDEpOwogCi0gICAgICAgICAgICBh
dXRvIHRyeVBvdGVudGlhbFBvc3RJbmRleEFkZHJlc3MgPSBbJl0gKCkgeworICAgICAgICAgICAg
YXV0byB0cnlVcGRhdGVDYW5kaWRhdGVzID0gWyZdICgpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXJpZ2h0LT5oYXNJbnRQdHIoKSB8fCB2YWx1ZS0+dHlwZSgpICE9IEludDY0KQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmln
aHQtPmFzSW50UHRyKCk7CiAgICAgICAgICAgICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgc21hbGxP
ZmZzZXQgPSBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4ob2Zmc2V0KTsKLSAgICAgICAg
ICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0gb2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRQcmVJbmRl
eEZvcm0oc21hbGxPZmZzZXQpKQorICAgICAgICAgICAgICAgIGlmIChzbWFsbE9mZnNldCAhPSBv
ZmZzZXQgfHwgIUFyZzo6aXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShzbWFsbE9mZnNldCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAvLyBzbyBmYXIgdGhp
cyBBZGQgdmFsdWUgaXMgYSB2YWxpZCBhZGRyZXNzIGNhbmRpZGF0ZSBmb3IgYm90aCBwcmVmaXgg
YW5kIHBvc3RmaXggcGF0dGVybgogICAgICAgICAgICAgICAgIFZhbHVlS2V5IGJhc2VPZmZzZXRr
ZXkgPSBWYWx1ZUtleShsZWZ0LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzbWFsbE9mZnNldCkpOwpA
QCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJv
Y2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgICAgICAgICBwb3N0SW5kZXhDYW5kaWRhdGVzLmFk
ZChtZW1vcnksIHZhbHVlKTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIHRyeVBvdGVu
dGlhbFBvc3RJbmRleEFkZHJlc3MoKTsKKyAgICAgICAgICAgIHRyeVVwZGF0ZUNhbmRpZGF0ZXMo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBi
b29sIGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICBm
b3IgKEJhc2ljQmxvY2sqIGJhc2ljQmxvY2sgOiBwcm9jLmJsb2Nrc0luUHJlT3JkZXIoKSkgewog
ICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBiYXNpY0Jsb2NrLT5zaXplKCk7ICsraW5k
ZXgpIHsKICAgICAgICAgICAgIFZhbHVlKiB2YWx1ZSA9IGJhc2ljQmxvY2stPmF0KGluZGV4KTsK
LSAgICAgICAgICAgIHRyeVByZVBvc3RJbmRleCh2YWx1ZSk7CisgICAgICAgICAgICB0cnlBZGRQ
cmVQb3N0SW5kZXhDYW5kaWRhdGUodmFsdWUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzks
MTQgKzEzOSwxNCBAQCBib29sIGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVy
ZSYgcHJvYykKICAgICAgICAgICAgIHx8IChkb21pbmF0b3JzLmRvbWluYXRlcyh2Mi0+b3duZXIs
IHYxLT5vd25lcikgJiYgYmFja3dhcmRzRG9taW5hdG9ycy5kb21pbmF0ZXModjEtPm93bmVyLCB2
Mi0+b3duZXIpKTsKICAgICB9OwogCi0gICAgYXV0byBkZXRlY3QgPSBbJl0gKEhhc2hNYXA8TWVt
b3J5VmFsdWUqLCBWYWx1ZSo+IGNhbmRpZGF0ZXMpIHsKLSAgICAgICAgZm9yIChhdXRvIGl0ciA9
IGNhbmRpZGF0ZXMuYmVnaW4oKTsgaXRyICE9IGNhbmRpZGF0ZXMuZW5kKCk7ICsraXRyKSB7Ci0g
ICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gaXRyLT5rZXk7Ci0gICAgICAgICAgICBW
YWx1ZSogYWRkcmVzcyA9IGl0ci0+dmFsdWU7CisgICAgYXV0byBkZXRlY3QgPSBbJl0gKGNvbnN0
IEhhc2hNYXA8TWVtb3J5VmFsdWUqLCBWYWx1ZSo+JiBjYW5kaWRhdGVzLCBib29sIGlzUHJlSW5k
ZXhDYW5kaWRhdGVzKSB7CisgICAgICAgIGZvciAoYXV0byBwYWlyIDogY2FuZGlkYXRlcykgewor
ICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHBhaXIua2V5OworICAgICAgICAgICAg
VmFsdWUqIGFkZHJlc3MgPSBwYWlyLnZhbHVlOwogICAgICAgICAgICAgaWYgKGlnbm9yZWRWYWx1
ZXMuY29udGFpbnMobWVtb3J5KSB8fCBpZ25vcmVkVmFsdWVzLmNvbnRhaW5zKGFkZHJlc3MpIHx8
ICFjb250cm9sRXF1aXZhbGVudChtZW1vcnksIGFkZHJlc3MpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlcyA9PSBwcmVJbmRleENhbmRpZGF0
ZXMpIHsKKyAgICAgICAgICAgIGlmIChpc1ByZUluZGV4Q2FuZGlkYXRlcykgewogICAgICAgICAg
ICAgICAgIC8vIGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0KSAgICAgICBhZGRyZXNzID0gQWRk
KGJhc2UsIG9mZnNldCkKICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC0tPiAgbmV3TWVtb3J5ID0gTG9hZChiYXNlLCBvZmZzZXQpCiAgICAgICAgICAgICAg
ICAgLy8gLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgpAQCAtMTYyLDYgKzE2
Miw4IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9j
KQogICAgICAgICAgICAgICAgIC8vIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+ICAu
Li4KICAgICAgICAgICAgICAgICAvLyBvZmZzZXQgPSBDb25zdGFudCAgICAgICAgICAgICAgICAg
b2Zmc2V0ID0gSWRlbnRpdHkobmV3T2Zmc2V0KQogICAgICAgICAgICAgICAgIC8vIGFkZHJlc3Mg
PSBBZGQoYmFzZSwgb2Zmc2V0KSAgICAgICBhZGRyZXNzID0gSWRlbnRpdHkobmV3QWRkcmVzcykK
KyAgICAgICAgICAgICAgICBpZiAoIWNvbnRyb2xFcXVpdmFsZW50KG1lbW9yeSwgYWRkcmVzcy0+
Y2hpbGQoMSkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBtZW1vcnlJbmRleCA9IHZhbHVlVG9JbmRleC5nZXQobWVtb3J5KTsKICAgICAg
ICAgICAgICAgICBWYWx1ZSogbmV3T2Zmc2V0ID0gaW5zZXJ0aW9uU2V0Lmluc2VydDxDb25zdDY0
VmFsdWU+KG1lbW9yeUluZGV4LCBtZW1vcnktPm9yaWdpbigpLCBhZGRyZXNzLT5jaGlsZCgxKS0+
YXNJbnQoKSk7CiAgICAgICAgICAgICAgICAgVmFsdWUqIG5ld0FkZHJlc3MgPSBpbnNlcnRpb25T
ZXQuaW5zZXJ0PFZhbHVlPihtZW1vcnlJbmRleCwgQWRkLCBtZW1vcnktPm9yaWdpbigpLCBhZGRy
ZXNzLT5jaGlsZCgwKSwgbmV3T2Zmc2V0KTsKQEAgLTE3NSw4ICsxNzcsOCBAQCBib29sIGNhbm9u
aWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgfQogICAg
IH07CiAKLSAgICBkZXRlY3QocHJlSW5kZXhDYW5kaWRhdGVzKTsKLSAgICBkZXRlY3QocG9zdElu
ZGV4Q2FuZGlkYXRlcyk7CisgICAgZGV0ZWN0KHByZUluZGV4Q2FuZGlkYXRlcywgdHJ1ZSk7Cisg
ICAgZGV0ZWN0KHBvc3RJbmRleENhbmRpZGF0ZXMsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCAzNTM1
YmIxM2JjMTNhY2IyYzQ3Y2M3ZGUzMDEzNmZmZDM3MjhmZDVkLi5lZWY0YWQ1MGZjMmQyOTQyYmVh
MzBkMDk5MDU5Njk1YjJlYjk0NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcApAQCAtMjU3OCwyMyArMjU3OCwyMyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAvLyBQcmUtSW5kZXggQ2Fub25pY2FsIEZvcm06Ci0gICAgICAgICAg
ICAvLyAgICAgYWRkcmVzcyA9IGFkZChiYXNlLCBvZmZzZXQpCi0gICAgICAgICAgICAvLyAgICAg
bWVtb3J5ID0gbG9hZChiYXNlLCBvZmZzZXQpCisgICAgICAgICAgICAvLyAgICAgYWRkcmVzcyA9
IGFkZChiYXNlLCBvZmZzZXQpICAgIC0tLT4gICBNb3ZlICViYXNlICVhZGRyZXNzCisgICAgICAg
ICAgICAvLyAgICAgbWVtb3J5ID0gbG9hZChiYXNlLCBvZmZzZXQpICAgICAgICAgICBNb3ZlV2l0
aEluY3JlbWVudCAoJWFkZHJlc3MsIHByZWZpeChvZmZzZXQpKSAlbWVtb3J5CiAgICAgICAgICAg
ICAvLyBQb3N0LUluZGV4IENhbm9uaWNhbCBGb3JtOgotICAgICAgICAgICAgLy8gICAgIG1lbW9y
eSA9IGxvYWQoYmFzZSwgMCkKLSAgICAgICAgICAgIC8vICAgICBhZGRyZXNzID0gYWRkKGJhc2Us
IG9mZnNldCkKKyAgICAgICAgICAgIC8vICAgICBhZGRyZXNzID0gYWRkKGJhc2UsIG9mZnNldCkg
ICAgLS0tPiAgIE1vdmUgJWJhc2UgJWFkZHJlc3MKKyAgICAgICAgICAgIC8vICAgICBtZW1vcnkg
PSBsb2FkKGJhc2UsIDApICAgICAgICAgICAgICAgIE1vdmVXaXRoSW5jcmVtZW50ICglYWRkcmVz
cywgcG9zdGZpeChvZmZzZXQpKSAlbWVtb3J5CiAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZElu
Y3JlbWVudEFkZHJlc3MgPSBbJl0gKCkgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgQWlyOjpP
cGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNb3ZlV2l0aEluY3JlbWVudDMyLCBNb3Zl
V2l0aEluY3JlbWVudDY0LCBtZW1vcnktPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFp
c1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6UHJlSW5kZXgsIEFyZzo6VG1wKSB8fCAhbV9pbmRleCkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIFZhbHVl
KiBhZGRyZXNzID0gbV9ibG9jay0+YXQobV9pbmRleCAtIDEpOwotICAgICAgICAgICAgICAgIGlm
IChhZGRyZXNzLT5vcGNvZGUoKSAhPSBBZGQgfHwgYWRkcmVzcy0+dHlwZSgpICE9IEludDY0KQor
ICAgICAgICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhhZGRyZXNzKSB8fCBhZGRyZXNz
LT5vcGNvZGUoKSAhPSBBZGQgfHwgYWRkcmVzcy0+dHlwZSgpICE9IEludDY0KQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKGFkZHJlc3MtPmNo
aWxkKDApICE9IG1lbW9yeS0+bGFzdENoaWxkKCkgfHwgIWFkZHJlc3MtPmNoaWxkKDEpLT5oYXNJ
bnRQdHIoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgIGludHB0cl90IG9mZnNldCA9IGFkZHJlc3MtPmNoaWxkKDEpLT5hc0ludFB0cigpOwogICAg
ICAgICAgICAgICAgIFZhbHVlOjpPZmZzZXRUeXBlIHNtYWxsT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8
VmFsdWU6Ok9mZnNldFR5cGU+KG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNtYWxsT2Zm
c2V0ICE9IG9mZnNldCB8fCAhQXJnOjppc1ZhbGlkUG9zdEluZGV4Rm9ybShzbWFsbE9mZnNldCkp
CisgICAgICAgICAgICAgICAgaWYgKHNtYWxsT2Zmc2V0ICE9IG9mZnNldCB8fCAhQXJnOjppc1Zh
bGlkSW5jcmVtZW50SW5kZXhGb3JtKHNtYWxsT2Zmc2V0KSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICAgICAgQXJnIGluY3JlbWVudEFyZyA9IEFyZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggZTFmNjQ2NmYwMzIyYWI4
MjgwYmQ0ZWI4OGY2MWQ5ZmM5NDdmN2JjYi4uZmJmNjYzN2IyODYwNzI5ZDU0NzhmZjNjZGQwNDUz
Njg1YWJhNGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC0xMjgw
LDE1ICsxMjgwLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIElu
dCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgotICAgIHN0YXRpYyBib29s
IGlzVmFsaWRQcmVJbmRleEZvcm0oSW50IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIGlmIChpc0FS
TTY0KCkpCi0gICAgICAgICAgICByZXR1cm4gaXNWYWxpZFNpZ25lZEltbTkob2Zmc2V0KTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwg
dHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgotICAgIHN0YXRpYyBib29sIGlz
VmFsaWRQb3N0SW5kZXhGb3JtKEludCBvZmZzZXQpCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZElu
Y3JlbWVudEluZGV4Rm9ybShJbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgaWYgKGlzQVJNNjQo
KSkKICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkU2lnbmVkSW1tOShvZmZzZXQpOwpAQCAtMTMy
NCw5ICsxMzE2LDggQEAgcHVibGljOgogICAgICAgICBjYXNlIEluZGV4OgogICAgICAgICAgICAg
cmV0dXJuIGlzVmFsaWRJbmRleEZvcm0oc2NhbGUoKSwgb2Zmc2V0KCksIHdpZHRoKTsKICAgICAg
ICAgY2FzZSBQcmVJbmRleDoKLSAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkUHJlSW5kZXhGb3Jt
KG9mZnNldCgpKTsKICAgICAgICAgY2FzZSBQb3N0SW5kZXg6Ci0gICAgICAgICAgICByZXR1cm4g
aXNWYWxpZFBvc3RJbmRleEZvcm0ob2Zmc2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGlzVmFs
aWRJbmNyZW1lbnRJbmRleEZvcm0ob2Zmc2V0KCkpOwogICAgICAgICBjYXNlIFJlbENvbmQ6CiAg
ICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCmluZGV4IGYxYmYx
YTQ2Y2ZjODg5ZWMxOTM0NmYyYzA2YjdjZjUwZjllM2RlMGQuLjA1NWMwNWEwYTNjODkwOWQxNWU1
NTVhMDRiYTk0M2M4NjM3MzE0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL29wY29kZV9nZW5lcmF0b3IucmIKQEAgLTkzMCwxMCArOTMwLDEwIEBAIHdyaXRlSCgiT3Bj
b2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJn
Ojppc1ZhbGlkSW5kZXhGb3JtKGFyZ3NbI3tpbmRleH1dLnNjYWxlKCksIGFyZ3NbI3tpbmRleH1d
Lm9mZnNldCgpLCAje2FyZy53aWR0aENvZGV9KSkiCiAgICAgICAgICAgICAgICAgICAgIG91dHAu
cHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hlbiAiUHJlSW5k
ZXgiCi0gICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKCFBcmc6OmlzVmFsaWRQcmVJ
bmRleEZvcm0oYXJnc1sje2luZGV4fV0ub2Zmc2V0KCkpKSIKKyAgICAgICAgICAgICAgICAgICAg
b3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShhcmdzWyN7aW5k
ZXh9XS5vZmZzZXQoKSkpIgogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JF
VFVSTihmYWxzZSk7IgogICAgICAgICAgICAgICAgIHdoZW4gIlBvc3RJbmRleCIKLSAgICAgICAg
ICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZFBvc3RJbmRleEZvcm0oYXJn
c1sje2luZGV4fV0ub2Zmc2V0KCkpKSIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJp
ZiAoIUFyZzo6aXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZzZXQo
KSkpIgogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7
IgogICAgICAgICAgICAgICAgIHdoZW4gIkJpZ0ltbSIKICAgICAgICAgICAgICAgICB3aGVuICJS
ZWxDb25kIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435139</attachid>
            <date>2021-08-07 17:15:17 -0700</date>
            <delta_ts>2021-08-07 20:58:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228890-20210807191516.patch</filename>
            <type>text/plain</type>
            <size>13024</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZWE3ZTQyOGZhOTM2NGRlYzNiNDYwNTJhOTQxMDA0ZjA5MzUwMTRlLi41MzNjYmIzOTk3MzhmNDk2
ODFlM2I0OTlkZTBiZGM1NDRhODQzZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMS0wOC0wNyAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0FSTTY0XSBDbGVhbiB1cCBQcmUvUG9zdC1JbmRleGVkIEFkZHJlc3Mg
TW9kZSB0byBBaXIgZm9yIEFSTTY0IChMb2FkIEluc3RydWN0aW9uKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4ODkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgYW5k
IGRvZXMgbWlub3IgZml4IHRvIHRoZSBwcmV2aW91cyBwYXRjaC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODA0NworCisgICAgICAgIEZvciB0aGUg
bW9kaWZpY2F0aW9ucyBpbiBiMy9CM0dlbmVyYXRlLmNwcCBhbmQgYjMvQjNDYW5vbmljYWxpemVQ
cmVQb3N0SW5jcmVtZW50cy5jcHAsIHdlCisgICAgICAgIG5lZWQgdG8gY29udmVydCBwb3N0LWlu
ZGV4IGNhbmRpZGF0ZXMgdG8gdGhlIGNhbm9uaWNhbCBmb3JtLiBTbywgdGhlIGFkZHJlc3MgdmFs
dWUgbmVlZHMgdG8KKyAgICAgICAgYmUgbW92ZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBsb2Fk
LiBUaGlzIGlzIHN1YmplY3QgdG8gdGhlIGRvbWluYW5jZSBjb25zdHJhaW50cyB0aGF0IGFkZAor
ICAgICAgICBtdXN0IGJlIGNvbnRyb2xsZWQgZXF1aXZhbGVudCB0byB0aGUgbG9hZC4gU28sIHNp
bWlsYXJseSwgaWYgd2UgbmVlZCB0byBtb3ZlIHRoZSBvZmZzZXQgdG8KKyAgICAgICAganVzdCBi
ZWZvcmUgdGhlIGxvYWQsIHRoZSBkb21pbmFuY2UgY29uc3RyYWludHMgbXVzdCBiZSBzYXRpc2Zp
ZWQuIFNpbmNlIGl0IGlzIGEgY29uc3RhbnQKKyAgICAgICAgdmFsdWUsIGEgYmV0dGVyIGFwcHJv
YWNoIGlzIHRvIGFkZCBhIG5ldyBjb25zdGFudCB2YWx1ZSBiZWZvcmUgdGhlIG1lbW9yeSB2YWx1
ZS4gVGhlbiwKKyAgICAgICAgZWxpbWluYXRlIHRoZSBkZWFkIGNvZGUuCisKKyAgICAgICAgSW4g
YjMvQjNMb3dlclRvQWlyLmNwcCwgd2UgdXBkYXRlZCB0aGlzOgorCisgICAgICAgICAgICBpZiAo
bV9sb2NrZWQuY29udGFpbnMoYWRkcmVzcykgfHwgYWRkcmVzcy0+b3Bjb2RlKCkgIT0gQWRkIHx8
IGFkZHJlc3MtPnR5cGUoKSAhPSBJbnQ2NCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIHdpdGggYWRkaXRpb25hbCBtX2xvY2tlZCBjaGVjay4gSWYgdGhlIGFk
ZHJlc3MgaXMgYWxyZWFkeSBsb2NrZWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8KKyAgICAgICAgY29u
dmVydCB0aGUgTG9hZCBpbnN0cnVjdGlvbiB0byB0aGUgcHJlL3Bvc3QtaW5jcmVtZW50IGZvcm0u
CisKKyAgICAgICAgKiBiMy9CM0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QjM6OmNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKToKKyAgICAgICAg
KiBiMy9CM0dlbmVyYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OmdlbmVyYXRlVG9BaXIpOgor
ICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvYWlyL0FpckFyZy5o
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzVmFsaWRJbmNyZW1lbnRJbmRleEZvcm0p
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzVmFsaWRGb3JtIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkUHJlSW5kZXhGb3JtKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkUG9zdEluZGV4Rm9ybSk6IERlbGV0ZWQu
CisgICAgICAgICogYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmI6CisKIDIwMjEtMDgtMDYgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBi
dWlsZCBmaXggb24gRGVidWcgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzLmNwcAppbmRleCBiMzc0
MzFmYWFhN2QwYzcxNGMzNDFmMGYxNGFiOGZiMDEyMTFlMjQwLi4yNzk0MTdhMWM2MDFkZTI2Mjdl
NzY3NjlhMDA0Mzc2Y2U0MTRlMDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMuY3BwCkBAIC03Miwx
NiArNzIsMTYgQEAgYm9vbCBjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyhQcm9jZWR1cmUm
IHByb2MpCiAgICAgLy8gICAgIG1lbW9yeSA9IExvYWQoYmFzZSwgMCkKICAgICAvLyAgICAgLi4u
CiAgICAgLy8gICAgIGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0KQotICAgIGF1dG8gdHJ5UHJl
UG9zdEluZGV4ID0gWyZdIChWYWx1ZSogdmFsdWUpIHsKKyAgICBhdXRvIHRyeUFkZFByZVBvc3RJ
bmRleENhbmRpZGF0ZSA9IFsmXSAoVmFsdWUqIHZhbHVlKSB7CiAgICAgICAgIHN3aXRjaCAodmFs
dWUtPm9wY29kZSgpKSB7CiAgICAgICAgIGNhc2UgTG9hZDogewogICAgICAgICAgICAgTWVtb3J5
VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKIAotICAgICAgICAgICAg
YXV0byB0cnlQcmVQb3N0SW5kZXhNZW1vcnkgPSBbJl0gKCkgeworICAgICAgICAgICAgYXV0byB0
cnlVcGRhdGVDYW5kaWRhdGVzID0gWyZdICgpIHsKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5
LT50eXBlKCkgIT0gSW50MzIgJiYgbWVtb3J5LT50eXBlKCkgIT0gSW50NjQpCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5LT5vZmZzZXQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoIUFyZzo6aXNWYWxpZFByZUluZGV4Rm9ybShtZW1v
cnktPm9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFBcmc6OmlzVmFsaWRJbmNy
ZW1lbnRJbmRleEZvcm0obWVtb3J5LT5vZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlS2V5IGJhc2VPZmZzZXRrZXkgPSBW
YWx1ZUtleShtZW1vcnktPmNoaWxkKDApLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihtZW1vcnktPm9m
ZnNldCgpKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYmFzZU9mZnNldFRvQWRkcmVzc2Vz
LmNvbnRhaW5zKGJhc2VPZmZzZXRrZXkpKQpAQCAtOTMsNyArOTMsNyBAQCBib29sIGNhbm9uaWNh
bGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgICAgICB2
YWx1ZVRvSW5kZXguYWRkKHZhbHVlLCBpbmRleCk7CiAgICAgICAgICAgICB9OwogCi0gICAgICAg
ICAgICB0cnlQcmVQb3N0SW5kZXhNZW1vcnkoKTsKKyAgICAgICAgICAgIHRyeVVwZGF0ZUNhbmRp
ZGF0ZXMoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTEwMSwxMiArMTAx
LDEyIEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9j
KQogICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSB2YWx1ZS0+Y2hpbGQoMCk7CiAgICAgICAgICAg
ICBWYWx1ZSogcmlnaHQgPSB2YWx1ZS0+Y2hpbGQoMSk7CiAKLSAgICAgICAgICAgIGF1dG8gdHJ5
UG90ZW50aWFsUG9zdEluZGV4QWRkcmVzcyA9IFsmXSAoKSB7CisgICAgICAgICAgICBhdXRvIHRy
eVVwZGF0ZUNhbmRpZGF0ZXMgPSBbJl0gKCkgewogICAgICAgICAgICAgICAgIGlmICghcmlnaHQt
Pmhhc0ludFB0cigpIHx8IHZhbHVlLT50eXBlKCkgIT0gSW50NjQpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSByaWdodC0+YXNJ
bnRQdHIoKTsKICAgICAgICAgICAgICAgICBWYWx1ZTo6T2Zmc2V0VHlwZSBzbWFsbE9mZnNldCA9
IHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPihvZmZzZXQpOwotICAgICAgICAgICAgICAg
IGlmIChzbWFsbE9mZnNldCAhPSBvZmZzZXQgfHwgIUFyZzo6aXNWYWxpZFByZUluZGV4Rm9ybShz
bWFsbE9mZnNldCkpCisgICAgICAgICAgICAgICAgaWYgKHNtYWxsT2Zmc2V0ICE9IG9mZnNldCB8
fCAhQXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKHNtYWxsT2Zmc2V0KSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIC8vIHNvIGZhciB0aGlzIEFkZCB2
YWx1ZSBpcyBhIHZhbGlkIGFkZHJlc3MgY2FuZGlkYXRlIGZvciBib3RoIHByZWZpeCBhbmQgcG9z
dGZpeCBwYXR0ZXJuCiAgICAgICAgICAgICAgICAgVmFsdWVLZXkgYmFzZU9mZnNldGtleSA9IFZh
bHVlS2V5KGxlZnQsIHN0YXRpY19jYXN0PGludDY0X3Q+KHNtYWxsT2Zmc2V0KSk7CkBAIC0xMTgs
NyArMTE4LDcgQEAgYm9vbCBjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyhQcm9jZWR1cmUm
IHByb2MpCiAgICAgICAgICAgICAgICAgICAgIHBvc3RJbmRleENhbmRpZGF0ZXMuYWRkKG1lbW9y
eSwgdmFsdWUpOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgdHJ5UG90ZW50aWFsUG9z
dEluZGV4QWRkcmVzcygpOworICAgICAgICAgICAgdHJ5VXBkYXRlQ2FuZGlkYXRlcygpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgY2Fu
b25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgIGZvciAoQmFz
aWNCbG9jayogYmFzaWNCbG9jayA6IHByb2MuYmxvY2tzSW5QcmVPcmRlcigpKSB7CiAgICAgICAg
IGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGJhc2ljQmxvY2stPnNpemUoKTsgKytpbmRleCkgewog
ICAgICAgICAgICAgVmFsdWUqIHZhbHVlID0gYmFzaWNCbG9jay0+YXQoaW5kZXgpOwotICAgICAg
ICAgICAgdHJ5UHJlUG9zdEluZGV4KHZhbHVlKTsKKyAgICAgICAgICAgIHRyeUFkZFByZVBvc3RJ
bmRleENhbmRpZGF0ZSh2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEzOSwxNCArMTM5
LDE0IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9j
KQogICAgICAgICAgICAgfHwgKGRvbWluYXRvcnMuZG9taW5hdGVzKHYyLT5vd25lciwgdjEtPm93
bmVyKSAmJiBiYWNrd2FyZHNEb21pbmF0b3JzLmRvbWluYXRlcyh2MS0+b3duZXIsIHYyLT5vd25l
cikpOwogICAgIH07CiAKLSAgICBhdXRvIGRldGVjdCA9IFsmXSAoSGFzaE1hcDxNZW1vcnlWYWx1
ZSosIFZhbHVlKj4gY2FuZGlkYXRlcykgewotICAgICAgICBmb3IgKGF1dG8gaXRyID0gY2FuZGlk
YXRlcy5iZWdpbigpOyBpdHIgIT0gY2FuZGlkYXRlcy5lbmQoKTsgKytpdHIpIHsKLSAgICAgICAg
ICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBpdHItPmtleTsKLSAgICAgICAgICAgIFZhbHVlKiBh
ZGRyZXNzID0gaXRyLT52YWx1ZTsKKyAgICBhdXRvIGRldGVjdCA9IFsmXSAoY29uc3QgSGFzaE1h
cDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4mIGNhbmRpZGF0ZXMsIGJvb2wgaXNQcmVJbmRleENhbmRp
ZGF0ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBjYW5kaWRhdGVzKSB7CisgICAgICAg
ICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gcGFpci5rZXk7CisgICAgICAgICAgICBWYWx1ZSog
YWRkcmVzcyA9IHBhaXIudmFsdWU7CiAgICAgICAgICAgICBpZiAoaWdub3JlZFZhbHVlcy5jb250
YWlucyhtZW1vcnkpIHx8IGlnbm9yZWRWYWx1ZXMuY29udGFpbnMoYWRkcmVzcykgfHwgIWNvbnRy
b2xFcXVpdmFsZW50KG1lbW9yeSwgYWRkcmVzcykpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzID09IHByZUluZGV4Q2FuZGlkYXRlcykgewor
ICAgICAgICAgICAgaWYgKGlzUHJlSW5kZXhDYW5kaWRhdGVzKSB7CiAgICAgICAgICAgICAgICAg
Ly8gYWRkcmVzcyA9IEFkZChiYXNlLCBvZmZzZXQpICAgICAgIGFkZHJlc3MgPSBBZGQoYmFzZSwg
b2Zmc2V0KQogICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LS0+ICBuZXdNZW1vcnkgPSBMb2FkKGJhc2UsIG9mZnNldCkKICAgICAgICAgICAgICAgICAvLyAu
Li4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCkBAIC0xNjAsMTIgKzE2MCwxMCBA
QCBib29sIGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAg
ICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3QWRk
cmVzcyA9IEFkZChiYXNlLCBuZXdPZmZzZXQpCiAgICAgICAgICAgICAgICAgLy8gbWVtb3J5ID0g
TG9hZChiYXNlLCAwKSAgICAgICAgICAgIG1lbW9yeSA9IExvYWQoYmFzZSwgMCkKICAgICAgICAg
ICAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tPiAgLi4uCi0gICAgICAg
ICAgICAgICAgLy8gb2Zmc2V0ID0gQ29uc3RhbnQgICAgICAgICAgICAgICAgIG9mZnNldCA9IElk
ZW50aXR5KG5ld09mZnNldCkKICAgICAgICAgICAgICAgICAvLyBhZGRyZXNzID0gQWRkKGJhc2Us
IG9mZnNldCkgICAgICAgYWRkcmVzcyA9IElkZW50aXR5KG5ld0FkZHJlc3MpCiAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbWVtb3J5SW5kZXggPSB2YWx1ZVRvSW5kZXguZ2V0KG1lbW9yeSk7CiAg
ICAgICAgICAgICAgICAgVmFsdWUqIG5ld09mZnNldCA9IGluc2VydGlvblNldC5pbnNlcnQ8Q29u
c3Q2NFZhbHVlPihtZW1vcnlJbmRleCwgbWVtb3J5LT5vcmlnaW4oKSwgYWRkcmVzcy0+Y2hpbGQo
MSktPmFzSW50KCkpOwogICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdBZGRyZXNzID0gaW5zZXJ0
aW9uU2V0Lmluc2VydDxWYWx1ZT4obWVtb3J5SW5kZXgsIEFkZCwgbWVtb3J5LT5vcmlnaW4oKSwg
YWRkcmVzcy0+Y2hpbGQoMCksIG5ld09mZnNldCk7Ci0gICAgICAgICAgICAgICAgYWRkcmVzcy0+
Y2hpbGQoMSktPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3T2Zmc2V0KTsKICAgICAgICAgICAgICAg
ICBhZGRyZXNzLT5yZXBsYWNlV2l0aElkZW50aXR5KG5ld0FkZHJlc3MpOwogICAgICAgICAgICAg
ICAgIGluc2VydGlvblNldC5leGVjdXRlKG1lbW9yeS0+b3duZXIpOwogICAgICAgICAgICAgfQpA
QCAtMTc1LDggKzE3Myw4IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJv
Y2VkdXJlJiBwcm9jKQogICAgICAgICB9CiAgICAgfTsKIAotICAgIGRldGVjdChwcmVJbmRleENh
bmRpZGF0ZXMpOwotICAgIGRldGVjdChwb3N0SW5kZXhDYW5kaWRhdGVzKTsKKyAgICBkZXRlY3Qo
cHJlSW5kZXhDYW5kaWRhdGVzLCB0cnVlKTsKKyAgICBkZXRlY3QocG9zdEluZGV4Q2FuZGlkYXRl
cywgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNHZW5lcmF0ZS5jcHAKaW5kZXggODM2ZmEzMTFjMzZiMzhmZDZkOTdjZmY3ZWI1MTU4MDI1N2Jk
MzA1Zi4uNjYyZjMyMzgwNWNjZjczNjc4ZGRlNmYxMzkzN2RjZWVkMzdlNDA5NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcApAQCAtMTE4LDEwICsxMTgsOSBAQCB2b2lk
IGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUpCiAgICAgbG93ZXJNYWNyb3NBZnRl
ck9wdGltaXphdGlvbnMocHJvY2VkdXJlKTsKICAgICBsZWdhbGl6ZU1lbW9yeU9mZnNldHMocHJv
Y2VkdXJlKTsKICAgICBtb3ZlQ29uc3RhbnRzKHByb2NlZHVyZSk7Ci0gICAgZWxpbWluYXRlRGVh
ZENvZGUocHJvY2VkdXJlKTsKLQogICAgIGlmIChwcm9jZWR1cmUub3B0TGV2ZWwoKSA+PSAyKQog
ICAgICAgICBjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyhwcm9jZWR1cmUpOworICAgIGVs
aW1pbmF0ZURlYWRDb2RlKHByb2NlZHVyZSk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJ1
biBwdXJlQ1NFIGhlcmUgdG8gY2xlYW4gdXAgc29tZSBwbGF0Zm9ybSBzcGVjaWZpYyBjaGFuZ2Vz
IGZyb20gdGhlIHByZXZpb3VzIHBoYXNlcy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCmluZGV4IDM1MzViYjEzYmMxM2FjYjJjNDdjYzdkZTMwMTM2ZmZkMzcyOGZkNWQu
LmVlZjRhZDUwZmMyZDI5NDJiZWEzMGQwOTkwNTk2OTViMmViOTQ0ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTc4LDIzICsyNTc4LDIzIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFByZS1JbmRleCBDYW5vbmlj
YWwgRm9ybToKLSAgICAgICAgICAgIC8vICAgICBhZGRyZXNzID0gYWRkKGJhc2UsIG9mZnNldCkK
LSAgICAgICAgICAgIC8vICAgICBtZW1vcnkgPSBsb2FkKGJhc2UsIG9mZnNldCkKKyAgICAgICAg
ICAgIC8vICAgICBhZGRyZXNzID0gYWRkKGJhc2UsIG9mZnNldCkgICAgLS0tPiAgIE1vdmUgJWJh
c2UgJWFkZHJlc3MKKyAgICAgICAgICAgIC8vICAgICBtZW1vcnkgPSBsb2FkKGJhc2UsIG9mZnNl
dCkgICAgICAgICAgIE1vdmVXaXRoSW5jcmVtZW50ICglYWRkcmVzcywgcHJlZml4KG9mZnNldCkp
ICVtZW1vcnkKICAgICAgICAgICAgIC8vIFBvc3QtSW5kZXggQ2Fub25pY2FsIEZvcm06Ci0gICAg
ICAgICAgICAvLyAgICAgbWVtb3J5ID0gbG9hZChiYXNlLCAwKQotICAgICAgICAgICAgLy8gICAg
IGFkZHJlc3MgPSBhZGQoYmFzZSwgb2Zmc2V0KQorICAgICAgICAgICAgLy8gICAgIGFkZHJlc3Mg
PSBhZGQoYmFzZSwgb2Zmc2V0KSAgICAtLS0+ICAgTW92ZSAlYmFzZSAlYWRkcmVzcworICAgICAg
ICAgICAgLy8gICAgIG1lbW9yeSA9IGxvYWQoYmFzZSwgMCkgICAgICAgICAgICAgICAgTW92ZVdp
dGhJbmNyZW1lbnQgKCVhZGRyZXNzLCBwb3N0Zml4KG9mZnNldCkpICVtZW1vcnkKICAgICAgICAg
ICAgIGF1dG8gdHJ5QXBwZW5kSW5jcmVtZW50QWRkcmVzcyA9IFsmXSAoKSAtPiBib29sIHsKICAg
ICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKE1vdmVX
aXRoSW5jcmVtZW50MzIsIE1vdmVXaXRoSW5jcmVtZW50NjQsIG1lbW9yeS0+dHlwZSgpKTsKICAg
ICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpQcmVJbmRleCwgQXJn
OjpUbXApIHx8ICFtX2luZGV4KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBtX2Jsb2NrLT5hdChtX2luZGV4IC0gMSk7
Ci0gICAgICAgICAgICAgICAgaWYgKGFkZHJlc3MtPm9wY29kZSgpICE9IEFkZCB8fCBhZGRyZXNz
LT50eXBlKCkgIT0gSW50NjQpCisgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5z
KGFkZHJlc3MpIHx8IGFkZHJlc3MtPm9wY29kZSgpICE9IEFkZCB8fCBhZGRyZXNzLT50eXBlKCkg
IT0gSW50NjQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
ICAgICBpZiAoYWRkcmVzcy0+Y2hpbGQoMCkgIT0gbWVtb3J5LT5sYXN0Q2hpbGQoKSB8fCAhYWRk
cmVzcy0+Y2hpbGQoMSktPmhhc0ludFB0cigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gYWRkcmVzcy0+Y2hpbGQo
MSktPmFzSW50UHRyKCk7CiAgICAgICAgICAgICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgc21hbGxP
ZmZzZXQgPSBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4ob2Zmc2V0KTsKLSAgICAgICAg
ICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0gb2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRQb3N0SW5k
ZXhGb3JtKHNtYWxsT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0g
b2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRJbmNyZW1lbnRJbmRleEZvcm0oc21hbGxPZmZzZXQpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgICAgICBBcmcg
aW5jcmVtZW50QXJnID0gQXJnKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFyZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaApp
bmRleCBlMWY2NDY2ZjAzMjJhYjgyODBiZDRlYjg4ZjYxZDlmYzk0N2Y3YmNiLi5mYmY2NjM3YjI4
NjA3MjlkNTQ3OGZmM2NkZDA0NTM2ODVhYmE0Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQXJnLmgKQEAgLTEyODAsMTUgKzEyODAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PElu
dD4+Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFByZUluZGV4Rm9ybShJbnQgb2Zmc2V0KQotICAg
IHsKLSAgICAgICAgaWYgKGlzQVJNNjQoKSkKLSAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkU2ln
bmVkSW1tOShvZmZzZXQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+
Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFBvc3RJbmRleEZvcm0oSW50IG9mZnNldCkKKyAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKEludCBvZmZzZXQpCiAgICAgewog
ICAgICAgICBpZiAoaXNBUk02NCgpKQogICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRTaWduZWRJ
bW05KG9mZnNldCk7CkBAIC0xMzI0LDkgKzEzMTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
SW5kZXg6CiAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZEluZGV4Rm9ybShzY2FsZSgpLCBvZmZz
ZXQoKSwgd2lkdGgpOwogICAgICAgICBjYXNlIFByZUluZGV4OgotICAgICAgICAgICAgcmV0dXJu
IGlzVmFsaWRQcmVJbmRleEZvcm0ob2Zmc2V0KCkpOwogICAgICAgICBjYXNlIFBvc3RJbmRleDoK
LSAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkUG9zdEluZGV4Rm9ybShvZmZzZXQoKSk7CisgICAg
ICAgICAgICByZXR1cm4gaXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShvZmZzZXQoKSk7CiAgICAg
ICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNlIERv
dWJsZUNvbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29k
ZV9nZW5lcmF0b3IucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5l
cmF0b3IucmIKaW5kZXggZjFiZjFhNDZjZmM4ODllYzE5MzQ2ZjJjMDZiN2NmNTBmOWUzZGUwZC4u
MDU1YzA1YTBhM2M4OTA5ZDE1ZTU1NWEwNGJhOTQzYzg2MzczMTRmZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgpAQCAtOTMwLDEwICs5
MzAsMTAgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAg
IG91dHAucHV0cyAiaWYgKCFBcmc6OmlzVmFsaWRJbmRleEZvcm0oYXJnc1sje2luZGV4fV0uc2Nh
bGUoKSwgYXJnc1sje2luZGV4fV0ub2Zmc2V0KCksICN7YXJnLndpZHRoQ29kZX0pKSIKICAgICAg
ICAgICAgICAgICAgICAgb3V0cC5wdXRzICJPUEdFTl9SRVRVUk4oZmFsc2UpOyIKICAgICAgICAg
ICAgICAgICB3aGVuICJQcmVJbmRleCIKLSAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJp
ZiAoIUFyZzo6aXNWYWxpZFByZUluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZzZXQoKSkpIgor
ICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlkSW5jcmVtZW50
SW5kZXhGb3JtKGFyZ3NbI3tpbmRleH1dLm9mZnNldCgpKSkiCiAgICAgICAgICAgICAgICAgICAg
IG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hlbiAi
UG9zdEluZGV4IgotICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1Zh
bGlkUG9zdEluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZzZXQoKSkpIgorICAgICAgICAgICAg
ICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKGFy
Z3NbI3tpbmRleH1dLm9mZnNldCgpKSkiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAi
T1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hlbiAiQmlnSW1tIgogICAg
ICAgICAgICAgICAgIHdoZW4gIlJlbENvbmQiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435142</attachid>
            <date>2021-08-07 20:58:45 -0700</date>
            <delta_ts>2021-08-07 21:01:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228890-20210807225844.patch</filename>
            <type>text/plain</type>
            <size>13085</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZWE3ZTQyOGZhOTM2NGRlYzNiNDYwNTJhOTQxMDA0ZjA5MzUwMTRlLi4wNjk0ODY0MGM0NDYyOGIz
ZDg5ZWVlMDJjODU3ZDJjY2VkZjVhZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAyMS0wOC0wNyAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0FSTTY0XSBDbGVhbiB1cCBhbmQgZml4IFByZS9Qb3N0LUluZGV4ZWQg
QWRkcmVzcyBNb2RlIHRvIEFpciBmb3IgQVJNNjQgKExvYWQgSW5zdHJ1Y3Rpb24pCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg4OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNsZWFu
cyB1cCBhbmQgZG9lcyBtaW5vciBmaXggdG8gdGhlIHByZXZpb3VzIHBhdGNoLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MDQ3CisKKyAgICAgICAg
Rm9yIHRoZSBtb2RpZmljYXRpb25zIGluIGIzL0IzR2VuZXJhdGUuY3BwIGFuZCBiMy9CM0Nhbm9u
aWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzLmNwcCwgd2UKKyAgICAgICAgbmVlZCB0byBjb252ZXJ0
IHBvc3QtaW5kZXggY2FuZGlkYXRlcyB0byB0aGUgY2Fub25pY2FsIGZvcm0uIFNvLCB0aGUgYWRk
cmVzcyB2YWx1ZSBuZWVkcyB0bworICAgICAgICBiZSBtb3ZlZCBpbW1lZGlhdGVseSBiZWZvcmUg
dGhlIGxvYWQuIFRoaXMgaXMgc3ViamVjdCB0byB0aGUgZG9taW5hbmNlIGNvbnN0cmFpbnRzIHRo
YXQgYWRkCisgICAgICAgIG11c3QgYmUgY29udHJvbGxlZCBlcXVpdmFsZW50IHRvIHRoZSBsb2Fk
LiBTbywgc2ltaWxhcmx5LCBpZiB3ZSBuZWVkIHRvIG1vdmUgdGhlIG9mZnNldCB0bworICAgICAg
ICBqdXN0IGJlZm9yZSB0aGUgbG9hZCwgdGhlIGRvbWluYW5jZSBjb25zdHJhaW50cyBtdXN0IGJl
IHNhdGlzZmllZC4gU2luY2UgaXQgaXMgYSBjb25zdGFudAorICAgICAgICB2YWx1ZSwgYSBiZXR0
ZXIgYXBwcm9hY2ggaXMgdG8gYWRkIGEgbmV3IGNvbnN0YW50IHZhbHVlIGJlZm9yZSB0aGUgbWVt
b3J5IHZhbHVlLiBUaGVuLAorICAgICAgICBlbGltaW5hdGUgdGhlIGRlYWQgY29kZS4KKworICAg
ICAgICBJbiBiMy9CM0xvd2VyVG9BaXIuY3BwLCB3ZSBuZWVkIG1fbG9ja2VkIGNoZWNrcyBvbiBh
ZGRyZXNzIGFuZCBiYXNlIHZhbHVlcy4gSWYgdGhleSBhcmUgYWxyZWFkeQorICAgICAgICBsb2Nr
ZWQsIHRoZXJlIGlzIG5vIG5lZWRzIHRvIGNvbnZlcnQgdGhlIExvYWQgaW5zdHJ1Y3Rpb24gdG8g
dGhlIHByZS9wb3N0LWluY3JlbWVudCBmb3JtLgorCisgICAgICAgICogYjMvQjNDYW5vbmljYWxp
emVQcmVQb3N0SW5jcmVtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpjYW5vbmljYWxpemVQ
cmVQb3N0SW5jcmVtZW50cyk6CisgICAgICAgICogYjMvQjNHZW5lcmF0ZS5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpnZW5lcmF0ZVRvQWlyKToKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3Bw
OgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJn
Ojppc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJn
Ojppc1ZhbGlkRm9ybSBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxp
ZFByZUluZGV4Rm9ybSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNW
YWxpZFBvc3RJbmRleEZvcm0pOiBEZWxldGVkLgorICAgICAgICAqIGIzL2Fpci9vcGNvZGVfZ2Vu
ZXJhdG9yLnJiOgorCiAyMDIxLTA4LTA2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IG9uIERlYnVnIGJ1aWxkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5j
cmVtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYW5vbmljYWxpemVQcmVQ
b3N0SW5jcmVtZW50cy5jcHAKaW5kZXggYjM3NDMxZmFhYTdkMGM3MTRjMzQxZjBmMTRhYjhmYjAx
MjExZTI0MC4uMjc5NDE3YTFjNjAxZGUyNjI3ZTc2NzY5YTAwNDM3NmNlNDE0ZTAyMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2Fub25pY2FsaXplUHJlUG9zdEluY3Jl
bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nhbm9uaWNhbGl6ZVBy
ZVBvc3RJbmNyZW1lbnRzLmNwcApAQCAtNzIsMTYgKzcyLDE2IEBAIGJvb2wgY2Fub25pY2FsaXpl
UHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgIC8vICAgICBtZW1vcnkgPSBM
b2FkKGJhc2UsIDApCiAgICAgLy8gICAgIC4uLgogICAgIC8vICAgICBhZGRyZXNzID0gQWRkKGJh
c2UsIG9mZnNldCkKLSAgICBhdXRvIHRyeVByZVBvc3RJbmRleCA9IFsmXSAoVmFsdWUqIHZhbHVl
KSB7CisgICAgYXV0byB0cnlBZGRQcmVQb3N0SW5kZXhDYW5kaWRhdGUgPSBbJl0gKFZhbHVlKiB2
YWx1ZSkgewogICAgICAgICBzd2l0Y2ggKHZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICBjYXNl
IExvYWQ6IHsKICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSB2YWx1ZS0+YXM8TWVt
b3J5VmFsdWU+KCk7CiAKLSAgICAgICAgICAgIGF1dG8gdHJ5UHJlUG9zdEluZGV4TWVtb3J5ID0g
WyZdICgpIHsKKyAgICAgICAgICAgIGF1dG8gdHJ5VXBkYXRlQ2FuZGlkYXRlcyA9IFsmXSAoKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeS0+dHlwZSgpICE9IEludDMyICYmIG1lbW9yeS0+
dHlwZSgpICE9IEludDY0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgaWYgKG1lbW9yeS0+b2Zmc2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFB
cmc6OmlzVmFsaWRQcmVJbmRleEZvcm0obWVtb3J5LT5vZmZzZXQoKSkpCisgICAgICAgICAgICAg
ICAgICAgIGlmICghQXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKG1lbW9yeS0+b2Zmc2V0
KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAg
ICBWYWx1ZUtleSBiYXNlT2Zmc2V0a2V5ID0gVmFsdWVLZXkobWVtb3J5LT5jaGlsZCgwKSwgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4obWVtb3J5LT5vZmZzZXQoKSkpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWJhc2VPZmZzZXRUb0FkZHJlc3Nlcy5jb250YWlucyhiYXNlT2Zmc2V0a2V5KSkKQEAg
LTkzLDcgKzkzLDcgQEAgYm9vbCBjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyhQcm9jZWR1
cmUmIHByb2MpCiAgICAgICAgICAgICAgICAgdmFsdWVUb0luZGV4LmFkZCh2YWx1ZSwgaW5kZXgp
OwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgdHJ5UHJlUG9zdEluZGV4TWVtb3J5KCk7
CisgICAgICAgICAgICB0cnlVcGRhdGVDYW5kaWRhdGVzKCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCkBAIC0xMDEsMTIgKzEwMSwxMiBAQCBib29sIGNhbm9uaWNhbGl6ZVByZVBv
c3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0g
dmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gdmFsdWUtPmNoaWxk
KDEpOwogCi0gICAgICAgICAgICBhdXRvIHRyeVBvdGVudGlhbFBvc3RJbmRleEFkZHJlc3MgPSBb
Jl0gKCkgeworICAgICAgICAgICAgYXV0byB0cnlVcGRhdGVDYW5kaWRhdGVzID0gWyZdICgpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LT5oYXNJbnRQdHIoKSB8fCB2YWx1ZS0+dHlwZSgp
ICE9IEludDY0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
aW50cHRyX3Qgb2Zmc2V0ID0gcmlnaHQtPmFzSW50UHRyKCk7CiAgICAgICAgICAgICAgICAgVmFs
dWU6Ok9mZnNldFR5cGUgc21hbGxPZmZzZXQgPSBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlw
ZT4ob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0gb2Zmc2V0IHx8
ICFBcmc6OmlzVmFsaWRQcmVJbmRleEZvcm0oc21hbGxPZmZzZXQpKQorICAgICAgICAgICAgICAg
IGlmIChzbWFsbE9mZnNldCAhPSBvZmZzZXQgfHwgIUFyZzo6aXNWYWxpZEluY3JlbWVudEluZGV4
Rm9ybShzbWFsbE9mZnNldCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICAvLyBzbyBmYXIgdGhpcyBBZGQgdmFsdWUgaXMgYSB2YWxpZCBhZGRyZXNzIGNhbmRp
ZGF0ZSBmb3IgYm90aCBwcmVmaXggYW5kIHBvc3RmaXggcGF0dGVybgogICAgICAgICAgICAgICAg
IFZhbHVlS2V5IGJhc2VPZmZzZXRrZXkgPSBWYWx1ZUtleShsZWZ0LCBzdGF0aWNfY2FzdDxpbnQ2
NF90PihzbWFsbE9mZnNldCkpOwpAQCAtMTE4LDcgKzExOCw3IEBAIGJvb2wgY2Fub25pY2FsaXpl
UHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgICAgICAgICBw
b3N0SW5kZXhDYW5kaWRhdGVzLmFkZChtZW1vcnksIHZhbHVlKTsKICAgICAgICAgICAgIH07CiAK
LSAgICAgICAgICAgIHRyeVBvdGVudGlhbFBvc3RJbmRleEFkZHJlc3MoKTsKKyAgICAgICAgICAg
IHRyeVVwZGF0ZUNhbmRpZGF0ZXMoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
QEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFBy
b2NlZHVyZSYgcHJvYykKICAgICBmb3IgKEJhc2ljQmxvY2sqIGJhc2ljQmxvY2sgOiBwcm9jLmJs
b2Nrc0luUHJlT3JkZXIoKSkgewogICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBiYXNp
Y0Jsb2NrLT5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgICAgIFZhbHVlKiB2YWx1ZSA9IGJh
c2ljQmxvY2stPmF0KGluZGV4KTsKLSAgICAgICAgICAgIHRyeVByZVBvc3RJbmRleCh2YWx1ZSk7
CisgICAgICAgICAgICB0cnlBZGRQcmVQb3N0SW5kZXhDYW5kaWRhdGUodmFsdWUpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0xMzksMTQgKzEzOSwxNCBAQCBib29sIGNhbm9uaWNhbGl6ZVByZVBv
c3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgIHx8IChkb21pbmF0b3Jz
LmRvbWluYXRlcyh2Mi0+b3duZXIsIHYxLT5vd25lcikgJiYgYmFja3dhcmRzRG9taW5hdG9ycy5k
b21pbmF0ZXModjEtPm93bmVyLCB2Mi0+b3duZXIpKTsKICAgICB9OwogCi0gICAgYXV0byBkZXRl
Y3QgPSBbJl0gKEhhc2hNYXA8TWVtb3J5VmFsdWUqLCBWYWx1ZSo+IGNhbmRpZGF0ZXMpIHsKLSAg
ICAgICAgZm9yIChhdXRvIGl0ciA9IGNhbmRpZGF0ZXMuYmVnaW4oKTsgaXRyICE9IGNhbmRpZGF0
ZXMuZW5kKCk7ICsraXRyKSB7Ci0gICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gaXRy
LT5rZXk7Ci0gICAgICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IGl0ci0+dmFsdWU7CisgICAgYXV0
byBkZXRlY3QgPSBbJl0gKGNvbnN0IEhhc2hNYXA8TWVtb3J5VmFsdWUqLCBWYWx1ZSo+JiBjYW5k
aWRhdGVzLCBib29sIGlzUHJlSW5kZXhDYW5kaWRhdGVzKSB7CisgICAgICAgIGZvciAoYXV0byBw
YWlyIDogY2FuZGlkYXRlcykgeworICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHBh
aXIua2V5OworICAgICAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBwYWlyLnZhbHVlOwogICAgICAg
ICAgICAgaWYgKGlnbm9yZWRWYWx1ZXMuY29udGFpbnMobWVtb3J5KSB8fCBpZ25vcmVkVmFsdWVz
LmNvbnRhaW5zKGFkZHJlc3MpIHx8ICFjb250cm9sRXF1aXZhbGVudChtZW1vcnksIGFkZHJlc3Mp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAoY2FuZGlkYXRl
cyA9PSBwcmVJbmRleENhbmRpZGF0ZXMpIHsKKyAgICAgICAgICAgIGlmIChpc1ByZUluZGV4Q2Fu
ZGlkYXRlcykgewogICAgICAgICAgICAgICAgIC8vIGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0
KSAgICAgICBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkKICAgICAgICAgICAgICAgICAvLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPiAgbmV3TWVtb3J5ID0gTG9hZChiYXNlLCBv
ZmZzZXQpCiAgICAgICAgICAgICAgICAgLy8gLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC4uLgpAQCAtMTYwLDEyICsxNjAsMTAgQEAgYm9vbCBjYW5vbmljYWxpemVQcmVQb3N0SW5j
cmVtZW50cyhQcm9jZWR1cmUmIHByb2MpCiAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld0FkZHJlc3MgPSBBZGQoYmFzZSwgbmV3T2Zmc2V0KQog
ICAgICAgICAgICAgICAgIC8vIG1lbW9yeSA9IExvYWQoYmFzZSwgMCkgICAgICAgICAgICBtZW1v
cnkgPSBMb2FkKGJhc2UsIDApCiAgICAgICAgICAgICAgICAgLy8gLi4uICAgICAgICAgICAgICAg
ICAgICAgICAgICAtLT4gIC4uLgotICAgICAgICAgICAgICAgIC8vIG9mZnNldCA9IENvbnN0YW50
ICAgICAgICAgICAgICAgICBvZmZzZXQgPSBJZGVudGl0eShuZXdPZmZzZXQpCiAgICAgICAgICAg
ICAgICAgLy8gYWRkcmVzcyA9IEFkZChiYXNlLCBvZmZzZXQpICAgICAgIGFkZHJlc3MgPSBJZGVu
dGl0eShuZXdBZGRyZXNzKQogICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lbW9yeUluZGV4ID0g
dmFsdWVUb0luZGV4LmdldChtZW1vcnkpOwogICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdPZmZz
ZXQgPSBpbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0NjRWYWx1ZT4obWVtb3J5SW5kZXgsIG1lbW9y
eS0+b3JpZ2luKCksIGFkZHJlc3MtPmNoaWxkKDEpLT5hc0ludCgpKTsKICAgICAgICAgICAgICAg
ICBWYWx1ZSogbmV3QWRkcmVzcyA9IGluc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1lbW9yeUlu
ZGV4LCBBZGQsIG1lbW9yeS0+b3JpZ2luKCksIGFkZHJlc3MtPmNoaWxkKDApLCBuZXdPZmZzZXQp
OwotICAgICAgICAgICAgICAgIGFkZHJlc3MtPmNoaWxkKDEpLT5yZXBsYWNlV2l0aElkZW50aXR5
KG5ld09mZnNldCk7CiAgICAgICAgICAgICAgICAgYWRkcmVzcy0+cmVwbGFjZVdpdGhJZGVudGl0
eShuZXdBZGRyZXNzKTsKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShtZW1v
cnktPm93bmVyKTsKICAgICAgICAgICAgIH0KQEAgLTE3NSw4ICsxNzMsOCBAQCBib29sIGNhbm9u
aWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgfQogICAg
IH07CiAKLSAgICBkZXRlY3QocHJlSW5kZXhDYW5kaWRhdGVzKTsKLSAgICBkZXRlY3QocG9zdElu
ZGV4Q2FuZGlkYXRlcyk7CisgICAgZGV0ZWN0KHByZUluZGV4Q2FuZGlkYXRlcywgdHJ1ZSk7Cisg
ICAgZGV0ZWN0KHBvc3RJbmRleENhbmRpZGF0ZXMsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCmluZGV4IDgzNmZhMzEx
YzM2YjM4ZmQ2ZDk3Y2ZmN2ViNTE1ODAyNTdiZDMwNWYuLjY2MmYzMjM4MDVjY2Y3MzY3OGRkZTZm
MTM5MzdkY2VlZDM3ZTQwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0dlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5j
cHAKQEAgLTExOCwxMCArMTE4LDkgQEAgdm9pZCBnZW5lcmF0ZVRvQWlyKFByb2NlZHVyZSYgcHJv
Y2VkdXJlKQogICAgIGxvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zKHByb2NlZHVyZSk7CiAg
ICAgbGVnYWxpemVNZW1vcnlPZmZzZXRzKHByb2NlZHVyZSk7CiAgICAgbW92ZUNvbnN0YW50cyhw
cm9jZWR1cmUpOwotICAgIGVsaW1pbmF0ZURlYWRDb2RlKHByb2NlZHVyZSk7Ci0KICAgICBpZiAo
cHJvY2VkdXJlLm9wdExldmVsKCkgPj0gMikKICAgICAgICAgY2Fub25pY2FsaXplUHJlUG9zdElu
Y3JlbWVudHMocHJvY2VkdXJlKTsKKyAgICBlbGltaW5hdGVEZWFkQ29kZShwcm9jZWR1cmUpOwog
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBydW4gcHVyZUNTRSBoZXJlIHRvIGNsZWFuIHVwIHNv
bWUgcGxhdGZvcm0gc3BlY2lmaWMgY2hhbmdlcyBmcm9tIHRoZSBwcmV2aW91cyBwaGFzZXMuCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDg3MwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCAzNTM1YmIxM2JjMTNh
Y2IyYzQ3Y2M3ZGUzMDEzNmZmZDM3MjhmZDVkLi4zYzZmZWI0NGQ5YjA0MDBmYTEyYjliNjI1OGE0
ZTdhZDc3YWY4ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNw
cApAQCAtMjU3OCwyMyArMjU3OCwyNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAvLyBQcmUtSW5kZXggQ2Fub25pY2FsIEZvcm06Ci0gICAgICAgICAgICAvLyAgICAg
YWRkcmVzcyA9IGFkZChiYXNlLCBvZmZzZXQpCi0gICAgICAgICAgICAvLyAgICAgbWVtb3J5ID0g
bG9hZChiYXNlLCBvZmZzZXQpCisgICAgICAgICAgICAvLyAgICAgYWRkcmVzcyA9IGFkZChiYXNl
LCBvZmZzZXQpICAgIC0tLT4gICBNb3ZlICViYXNlICVhZGRyZXNzCisgICAgICAgICAgICAvLyAg
ICAgbWVtb3J5ID0gbG9hZChiYXNlLCBvZmZzZXQpICAgICAgICAgICBNb3ZlV2l0aEluY3JlbWVu
dCAoJWFkZHJlc3MsIHByZWZpeChvZmZzZXQpKSAlbWVtb3J5CiAgICAgICAgICAgICAvLyBQb3N0
LUluZGV4IENhbm9uaWNhbCBGb3JtOgotICAgICAgICAgICAgLy8gICAgIG1lbW9yeSA9IGxvYWQo
YmFzZSwgMCkKLSAgICAgICAgICAgIC8vICAgICBhZGRyZXNzID0gYWRkKGJhc2UsIG9mZnNldCkK
KyAgICAgICAgICAgIC8vICAgICBhZGRyZXNzID0gYWRkKGJhc2UsIG9mZnNldCkgICAgLS0tPiAg
IE1vdmUgJWJhc2UgJWFkZHJlc3MKKyAgICAgICAgICAgIC8vICAgICBtZW1vcnkgPSBsb2FkKGJh
c2UsIDApICAgICAgICAgICAgICAgIE1vdmVXaXRoSW5jcmVtZW50ICglYWRkcmVzcywgcG9zdGZp
eChvZmZzZXQpKSAlbWVtb3J5CiAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZEluY3JlbWVudEFk
ZHJlc3MgPSBbJl0gKCkgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNb3ZlV2l0aEluY3JlbWVudDMyLCBNb3ZlV2l0aEluY3Jl
bWVudDY0LCBtZW1vcnktPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9y
bShvcGNvZGUsIEFyZzo6UHJlSW5kZXgsIEFyZzo6VG1wKSB8fCAhbV9pbmRleCkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIFZhbHVlKiBhZGRyZXNz
ID0gbV9ibG9jay0+YXQobV9pbmRleCAtIDEpOwotICAgICAgICAgICAgICAgIGlmIChhZGRyZXNz
LT5vcGNvZGUoKSAhPSBBZGQgfHwgYWRkcmVzcy0+dHlwZSgpICE9IEludDY0KQorICAgICAgICAg
ICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhhZGRyZXNzKSB8fCBhZGRyZXNzLT5vcGNvZGUo
KSAhPSBBZGQgfHwgYWRkcmVzcy0+dHlwZSgpICE9IEludDY0KQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKGFkZHJlc3MtPmNoaWxkKDApICE9
IG1lbW9yeS0+bGFzdENoaWxkKCkgfHwgIWFkZHJlc3MtPmNoaWxkKDEpLT5oYXNJbnRQdHIoKSkK
KyAgICAgICAgICAgICAgICBWYWx1ZSogYmFzZTEgPSBhZGRyZXNzLT5jaGlsZCgwKTsKKyAgICAg
ICAgICAgICAgICBWYWx1ZSogYmFzZTIgPSBtZW1vcnktPmxhc3RDaGlsZCgpOworICAgICAgICAg
ICAgICAgIGlmIChiYXNlMSAhPSBiYXNlMiB8fCBtX2xvY2tlZC5jb250YWlucyhiYXNlMSkgfHwg
IWFkZHJlc3MtPmNoaWxkKDEpLT5oYXNJbnRQdHIoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGludHB0cl90IG9mZnNldCA9IGFkZHJlc3MtPmNo
aWxkKDEpLT5hc0ludFB0cigpOwogICAgICAgICAgICAgICAgIFZhbHVlOjpPZmZzZXRUeXBlIHNt
YWxsT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+KG9mZnNldCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHNtYWxsT2Zmc2V0ICE9IG9mZnNldCB8fCAhQXJnOjppc1ZhbGlkUG9z
dEluZGV4Rm9ybShzbWFsbE9mZnNldCkpCisgICAgICAgICAgICAgICAgaWYgKHNtYWxsT2Zmc2V0
ICE9IG9mZnNldCB8fCAhQXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKHNtYWxsT2Zmc2V0
KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICAgICAg
QXJnIGluY3JlbWVudEFyZyA9IEFyZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBcmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJn
LmgKaW5kZXggZTFmNjQ2NmYwMzIyYWI4MjgwYmQ0ZWI4OGY2MWQ5ZmM5NDdmN2JjYi4uZmJmNjYz
N2IyODYwNzI5ZDU0NzhmZjNjZGQwNDUzNjg1YWJhNGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFyZy5oCkBAIC0xMjgwLDE1ICsxMjgwLDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNl
dDxJbnQ+PgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRQcmVJbmRleEZvcm0oSW50IG9mZnNldCkK
LSAgICB7Ci0gICAgICAgIGlmIChpc0FSTTY0KCkpCi0gICAgICAgICAgICByZXR1cm4gaXNWYWxp
ZFNpZ25lZEltbTkob2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJ
bnQ+PgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRQb3N0SW5kZXhGb3JtKEludCBvZmZzZXQpCisg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShJbnQgb2Zmc2V0KQogICAg
IHsKICAgICAgICAgaWYgKGlzQVJNNjQoKSkKICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkU2ln
bmVkSW1tOShvZmZzZXQpOwpAQCAtMTMyNCw5ICsxMzE2LDggQEAgcHVibGljOgogICAgICAgICBj
YXNlIEluZGV4OgogICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRJbmRleEZvcm0oc2NhbGUoKSwg
b2Zmc2V0KCksIHdpZHRoKTsKICAgICAgICAgY2FzZSBQcmVJbmRleDoKLSAgICAgICAgICAgIHJl
dHVybiBpc1ZhbGlkUHJlSW5kZXhGb3JtKG9mZnNldCgpKTsKICAgICAgICAgY2FzZSBQb3N0SW5k
ZXg6Ci0gICAgICAgICAgICByZXR1cm4gaXNWYWxpZFBvc3RJbmRleEZvcm0ob2Zmc2V0KCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRJbmNyZW1lbnRJbmRleEZvcm0ob2Zmc2V0KCkpOwog
ICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2Fz
ZSBEb3VibGVDb25kOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9v
cGNvZGVfZ2VuZXJhdG9yLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVf
Z2VuZXJhdG9yLnJiCmluZGV4IGYxYmYxYTQ2Y2ZjODg5ZWMxOTM0NmYyYzA2YjdjZjUwZjllM2Rl
MGQuLjA1NWMwNWEwYTNjODkwOWQxNWU1NTVhMDRiYTk0M2M4NjM3MzE0ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIKQEAgLTkzMCwx
MCArOTMwLDEwIEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAg
ICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlkSW5kZXhGb3JtKGFyZ3NbI3tpbmRleH1d
LnNjYWxlKCksIGFyZ3NbI3tpbmRleH1dLm9mZnNldCgpLCAje2FyZy53aWR0aENvZGV9KSkiCiAg
ICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAg
ICAgICAgICAgICAgd2hlbiAiUHJlSW5kZXgiCi0gICAgICAgICAgICAgICAgICAgIG91dHAucHV0
cyAiaWYgKCFBcmc6OmlzVmFsaWRQcmVJbmRleEZvcm0oYXJnc1sje2luZGV4fV0ub2Zmc2V0KCkp
KSIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZEluY3Jl
bWVudEluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZzZXQoKSkpIgogICAgICAgICAgICAgICAg
ICAgICBvdXRwLnB1dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7IgogICAgICAgICAgICAgICAgIHdo
ZW4gIlBvc3RJbmRleCIKLSAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6
aXNWYWxpZFBvc3RJbmRleEZvcm0oYXJnc1sje2luZGV4fV0ub2Zmc2V0KCkpKSIKKyAgICAgICAg
ICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZEluY3JlbWVudEluZGV4Rm9y
bShhcmdzWyN7aW5kZXh9XS5vZmZzZXQoKSkpIgogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1
dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7IgogICAgICAgICAgICAgICAgIHdoZW4gIkJpZ0ltbSIK
ICAgICAgICAgICAgICAgICB3aGVuICJSZWxDb25kIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435143</attachid>
            <date>2021-08-07 21:01:47 -0700</date>
            <delta_ts>2021-08-08 03:40:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228890-20210807230146.patch</filename>
            <type>text/plain</type>
            <size>13084</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZWE3ZTQyOGZhOTM2NGRlYzNiNDYwNTJhOTQxMDA0ZjA5MzUwMTRlLi41NzVkZjNlZjRiNzBmYzJj
YmExZmRmMDI2OWU2YzYzYmQyNTI0N2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAyMS0wOC0wNyAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0FSTTY0XSBDbGVhbiB1cCBhbmQgZml4IFByZS9Qb3N0LUluZGV4ZWQg
QWRkcmVzcyBNb2RlIHRvIEFpciBmb3IgQVJNNjQgKExvYWQgSW5zdHJ1Y3Rpb24pCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg4OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNsZWFu
cyB1cCBhbmQgZG9lcyBtaW5vciBmaXggdG8gdGhlIHByZXZpb3VzIHBhdGNoLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MDQ3CisKKyAgICAgICAg
Rm9yIHRoZSBtb2RpZmljYXRpb25zIGluIGIzL0IzR2VuZXJhdGUuY3BwIGFuZCBiMy9CM0Nhbm9u
aWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzLmNwcCwgd2UKKyAgICAgICAgbmVlZCB0byBjb252ZXJ0
IHBvc3QtaW5kZXggY2FuZGlkYXRlcyB0byB0aGUgY2Fub25pY2FsIGZvcm0uIFNvLCB0aGUgYWRk
cmVzcyB2YWx1ZSBuZWVkcyB0bworICAgICAgICBiZSBtb3ZlZCBpbW1lZGlhdGVseSBiZWZvcmUg
dGhlIGxvYWQuIFRoaXMgaXMgc3ViamVjdCB0byB0aGUgZG9taW5hbmNlIGNvbnN0cmFpbnRzIHRo
YXQgYWRkCisgICAgICAgIG11c3QgYmUgY29udHJvbGxlZCBlcXVpdmFsZW50IHRvIHRoZSBsb2Fk
LiBTbywgc2ltaWxhcmx5LCBpZiB3ZSBuZWVkIHRvIG1vdmUgdGhlIG9mZnNldCB0bworICAgICAg
ICBqdXN0IGJlZm9yZSB0aGUgbG9hZCwgdGhlIGRvbWluYW5jZSBjb25zdHJhaW50cyBtdXN0IGJl
IHNhdGlzZmllZC4gU2luY2UgaXQgaXMgYSBjb25zdGFudAorICAgICAgICB2YWx1ZSwgYSBiZXR0
ZXIgYXBwcm9hY2ggaXMgdG8gYWRkIGEgbmV3IGNvbnN0YW50IHZhbHVlIGJlZm9yZSB0aGUgbWVt
b3J5IHZhbHVlLiBUaGVuLAorICAgICAgICBlbGltaW5hdGUgdGhlIGRlYWQgY29kZS4KKworICAg
ICAgICBJbiBiMy9CM0xvd2VyVG9BaXIuY3BwLCB3ZSBuZWVkIG1fbG9ja2VkIGNoZWNrcyBvbiBh
ZGRyZXNzIGFuZCBiYXNlIHZhbHVlcy4gSWYgdGhleSBhcmUgYWxyZWFkeQorICAgICAgICBsb2Nr
ZWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY29udmVydCB0aGUgTG9hZCBpbnN0cnVjdGlvbiB0byB0
aGUgcHJlL3Bvc3QtaW5jcmVtZW50IGZvcm0uCisKKyAgICAgICAgKiBiMy9CM0Nhbm9uaWNhbGl6
ZVByZVBvc3RJbmNyZW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OmNhbm9uaWNhbGl6ZVBy
ZVBvc3RJbmNyZW1lbnRzKToKKyAgICAgICAgKiBiMy9CM0dlbmVyYXRlLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OmdlbmVyYXRlVG9BaXIpOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6
CisgICAgICAgICogYjMvYWlyL0FpckFyZy5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6
OmlzVmFsaWRJbmNyZW1lbnRJbmRleEZvcm0pOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6
OmlzVmFsaWRGb3JtIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlk
UHJlSW5kZXhGb3JtKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1Zh
bGlkUG9zdEluZGV4Rm9ybSk6IERlbGV0ZWQuCisgICAgICAgICogYjMvYWlyL29wY29kZV9nZW5l
cmF0b3IucmI6CisKIDIwMjEtMDgtMDYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXggb24gRGVidWcgYnVpbGQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNy
ZW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nhbm9uaWNhbGl6ZVByZVBv
c3RJbmNyZW1lbnRzLmNwcAppbmRleCBiMzc0MzFmYWFhN2QwYzcxNGMzNDFmMGYxNGFiOGZiMDEy
MTFlMjQwLi4yNzk0MTdhMWM2MDFkZTI2MjdlNzY3NjlhMDA0Mzc2Y2U0MTRlMDIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVt
ZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2Fub25pY2FsaXplUHJl
UG9zdEluY3JlbWVudHMuY3BwCkBAIC03MiwxNiArNzIsMTYgQEAgYm9vbCBjYW5vbmljYWxpemVQ
cmVQb3N0SW5jcmVtZW50cyhQcm9jZWR1cmUmIHByb2MpCiAgICAgLy8gICAgIG1lbW9yeSA9IExv
YWQoYmFzZSwgMCkKICAgICAvLyAgICAgLi4uCiAgICAgLy8gICAgIGFkZHJlc3MgPSBBZGQoYmFz
ZSwgb2Zmc2V0KQotICAgIGF1dG8gdHJ5UHJlUG9zdEluZGV4ID0gWyZdIChWYWx1ZSogdmFsdWUp
IHsKKyAgICBhdXRvIHRyeUFkZFByZVBvc3RJbmRleENhbmRpZGF0ZSA9IFsmXSAoVmFsdWUqIHZh
bHVlKSB7CiAgICAgICAgIHN3aXRjaCAodmFsdWUtPm9wY29kZSgpKSB7CiAgICAgICAgIGNhc2Ug
TG9hZDogewogICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1v
cnlWYWx1ZT4oKTsKIAotICAgICAgICAgICAgYXV0byB0cnlQcmVQb3N0SW5kZXhNZW1vcnkgPSBb
Jl0gKCkgeworICAgICAgICAgICAgYXV0byB0cnlVcGRhdGVDYW5kaWRhdGVzID0gWyZdICgpIHsK
ICAgICAgICAgICAgICAgICBpZiAobWVtb3J5LT50eXBlKCkgIT0gSW50MzIgJiYgbWVtb3J5LT50
eXBlKCkgIT0gSW50NjQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICBpZiAobWVtb3J5LT5vZmZzZXQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIUFy
Zzo6aXNWYWxpZFByZUluZGV4Rm9ybShtZW1vcnktPm9mZnNldCgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCFBcmc6OmlzVmFsaWRJbmNyZW1lbnRJbmRleEZvcm0obWVtb3J5LT5vZmZzZXQo
KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAg
IFZhbHVlS2V5IGJhc2VPZmZzZXRrZXkgPSBWYWx1ZUtleShtZW1vcnktPmNoaWxkKDApLCBzdGF0
aWNfY2FzdDxpbnQ2NF90PihtZW1vcnktPm9mZnNldCgpKSk7CiAgICAgICAgICAgICAgICAgICAg
IGlmICghYmFzZU9mZnNldFRvQWRkcmVzc2VzLmNvbnRhaW5zKGJhc2VPZmZzZXRrZXkpKQpAQCAt
OTMsNyArOTMsNyBAQCBib29sIGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVy
ZSYgcHJvYykKICAgICAgICAgICAgICAgICB2YWx1ZVRvSW5kZXguYWRkKHZhbHVlLCBpbmRleCk7
CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICB0cnlQcmVQb3N0SW5kZXhNZW1vcnkoKTsK
KyAgICAgICAgICAgIHRyeVVwZGF0ZUNhbmRpZGF0ZXMoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKQEAgLTEwMSwxMiArMTAxLDEyIEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9z
dEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSB2
YWx1ZS0+Y2hpbGQoMCk7CiAgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSB2YWx1ZS0+Y2hpbGQo
MSk7CiAKLSAgICAgICAgICAgIGF1dG8gdHJ5UG90ZW50aWFsUG9zdEluZGV4QWRkcmVzcyA9IFsm
XSAoKSB7CisgICAgICAgICAgICBhdXRvIHRyeVVwZGF0ZUNhbmRpZGF0ZXMgPSBbJl0gKCkgewog
ICAgICAgICAgICAgICAgIGlmICghcmlnaHQtPmhhc0ludFB0cigpIHx8IHZhbHVlLT50eXBlKCkg
IT0gSW50NjQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBp
bnRwdHJfdCBvZmZzZXQgPSByaWdodC0+YXNJbnRQdHIoKTsKICAgICAgICAgICAgICAgICBWYWx1
ZTo6T2Zmc2V0VHlwZSBzbWFsbE9mZnNldCA9IHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBl
PihvZmZzZXQpOwotICAgICAgICAgICAgICAgIGlmIChzbWFsbE9mZnNldCAhPSBvZmZzZXQgfHwg
IUFyZzo6aXNWYWxpZFByZUluZGV4Rm9ybShzbWFsbE9mZnNldCkpCisgICAgICAgICAgICAgICAg
aWYgKHNtYWxsT2Zmc2V0ICE9IG9mZnNldCB8fCAhQXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhG
b3JtKHNtYWxsT2Zmc2V0KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIC8vIHNvIGZhciB0aGlzIEFkZCB2YWx1ZSBpcyBhIHZhbGlkIGFkZHJlc3MgY2FuZGlk
YXRlIGZvciBib3RoIHByZWZpeCBhbmQgcG9zdGZpeCBwYXR0ZXJuCiAgICAgICAgICAgICAgICAg
VmFsdWVLZXkgYmFzZU9mZnNldGtleSA9IFZhbHVlS2V5KGxlZnQsIHN0YXRpY19jYXN0PGludDY0
X3Q+KHNtYWxsT2Zmc2V0KSk7CkBAIC0xMTgsNyArMTE4LDcgQEAgYm9vbCBjYW5vbmljYWxpemVQ
cmVQb3N0SW5jcmVtZW50cyhQcm9jZWR1cmUmIHByb2MpCiAgICAgICAgICAgICAgICAgICAgIHBv
c3RJbmRleENhbmRpZGF0ZXMuYWRkKG1lbW9yeSwgdmFsdWUpOwogICAgICAgICAgICAgfTsKIAot
ICAgICAgICAgICAgdHJ5UG90ZW50aWFsUG9zdEluZGV4QWRkcmVzcygpOworICAgICAgICAgICAg
dHJ5VXBkYXRlQ2FuZGlkYXRlcygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApA
QCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJv
Y2VkdXJlJiBwcm9jKQogICAgIGZvciAoQmFzaWNCbG9jayogYmFzaWNCbG9jayA6IHByb2MuYmxv
Y2tzSW5QcmVPcmRlcigpKSB7CiAgICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGJhc2lj
QmxvY2stPnNpemUoKTsgKytpbmRleCkgewogICAgICAgICAgICAgVmFsdWUqIHZhbHVlID0gYmFz
aWNCbG9jay0+YXQoaW5kZXgpOwotICAgICAgICAgICAgdHJ5UHJlUG9zdEluZGV4KHZhbHVlKTsK
KyAgICAgICAgICAgIHRyeUFkZFByZVBvc3RJbmRleENhbmRpZGF0ZSh2YWx1ZSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTEzOSwxNCArMTM5LDE0IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9z
dEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgfHwgKGRvbWluYXRvcnMu
ZG9taW5hdGVzKHYyLT5vd25lciwgdjEtPm93bmVyKSAmJiBiYWNrd2FyZHNEb21pbmF0b3JzLmRv
bWluYXRlcyh2MS0+b3duZXIsIHYyLT5vd25lcikpOwogICAgIH07CiAKLSAgICBhdXRvIGRldGVj
dCA9IFsmXSAoSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4gY2FuZGlkYXRlcykgewotICAg
ICAgICBmb3IgKGF1dG8gaXRyID0gY2FuZGlkYXRlcy5iZWdpbigpOyBpdHIgIT0gY2FuZGlkYXRl
cy5lbmQoKTsgKytpdHIpIHsKLSAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBpdHIt
PmtleTsKLSAgICAgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gaXRyLT52YWx1ZTsKKyAgICBhdXRv
IGRldGVjdCA9IFsmXSAoY29uc3QgSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4mIGNhbmRp
ZGF0ZXMsIGJvb2wgaXNQcmVJbmRleENhbmRpZGF0ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIHBh
aXIgOiBjYW5kaWRhdGVzKSB7CisgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gcGFp
ci5rZXk7CisgICAgICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHBhaXIudmFsdWU7CiAgICAgICAg
ICAgICBpZiAoaWdub3JlZFZhbHVlcy5jb250YWlucyhtZW1vcnkpIHx8IGlnbm9yZWRWYWx1ZXMu
Y29udGFpbnMoYWRkcmVzcykgfHwgIWNvbnRyb2xFcXVpdmFsZW50KG1lbW9yeSwgYWRkcmVzcykp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGVz
ID09IHByZUluZGV4Q2FuZGlkYXRlcykgeworICAgICAgICAgICAgaWYgKGlzUHJlSW5kZXhDYW5k
aWRhdGVzKSB7CiAgICAgICAgICAgICAgICAgLy8gYWRkcmVzcyA9IEFkZChiYXNlLCBvZmZzZXQp
ICAgICAgIGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0KQogICAgICAgICAgICAgICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+ICBuZXdNZW1vcnkgPSBMb2FkKGJhc2UsIG9m
ZnNldCkKICAgICAgICAgICAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLi4uCkBAIC0xNjAsMTIgKzE2MCwxMCBAQCBib29sIGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNy
ZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3QWRkcmVzcyA9IEFkZChiYXNlLCBuZXdPZmZzZXQpCiAg
ICAgICAgICAgICAgICAgLy8gbWVtb3J5ID0gTG9hZChiYXNlLCAwKSAgICAgICAgICAgIG1lbW9y
eSA9IExvYWQoYmFzZSwgMCkKICAgICAgICAgICAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAg
ICAgICAgICAgIC0tPiAgLi4uCi0gICAgICAgICAgICAgICAgLy8gb2Zmc2V0ID0gQ29uc3RhbnQg
ICAgICAgICAgICAgICAgIG9mZnNldCA9IElkZW50aXR5KG5ld09mZnNldCkKICAgICAgICAgICAg
ICAgICAvLyBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkgICAgICAgYWRkcmVzcyA9IElkZW50
aXR5KG5ld0FkZHJlc3MpCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVtb3J5SW5kZXggPSB2
YWx1ZVRvSW5kZXguZ2V0KG1lbW9yeSk7CiAgICAgICAgICAgICAgICAgVmFsdWUqIG5ld09mZnNl
dCA9IGluc2VydGlvblNldC5pbnNlcnQ8Q29uc3Q2NFZhbHVlPihtZW1vcnlJbmRleCwgbWVtb3J5
LT5vcmlnaW4oKSwgYWRkcmVzcy0+Y2hpbGQoMSktPmFzSW50KCkpOwogICAgICAgICAgICAgICAg
IFZhbHVlKiBuZXdBZGRyZXNzID0gaW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obWVtb3J5SW5k
ZXgsIEFkZCwgbWVtb3J5LT5vcmlnaW4oKSwgYWRkcmVzcy0+Y2hpbGQoMCksIG5ld09mZnNldCk7
Ci0gICAgICAgICAgICAgICAgYWRkcmVzcy0+Y2hpbGQoMSktPnJlcGxhY2VXaXRoSWRlbnRpdHko
bmV3T2Zmc2V0KTsKICAgICAgICAgICAgICAgICBhZGRyZXNzLT5yZXBsYWNlV2l0aElkZW50aXR5
KG5ld0FkZHJlc3MpOwogICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKG1lbW9y
eS0+b3duZXIpOwogICAgICAgICAgICAgfQpAQCAtMTc1LDggKzE3Myw4IEBAIGJvb2wgY2Fub25p
Y2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICB9CiAgICAg
fTsKIAotICAgIGRldGVjdChwcmVJbmRleENhbmRpZGF0ZXMpOwotICAgIGRldGVjdChwb3N0SW5k
ZXhDYW5kaWRhdGVzKTsKKyAgICBkZXRlY3QocHJlSW5kZXhDYW5kaWRhdGVzLCB0cnVlKTsKKyAg
ICBkZXRlY3QocG9zdEluZGV4Q2FuZGlkYXRlcywgZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKaW5kZXggODM2ZmEzMTFj
MzZiMzhmZDZkOTdjZmY3ZWI1MTU4MDI1N2JkMzA1Zi4uNjYyZjMyMzgwNWNjZjczNjc4ZGRlNmYx
MzkzN2RjZWVkMzdlNDA5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
R2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNw
cApAQCAtMTE4LDEwICsxMTgsOSBAQCB2b2lkIGdlbmVyYXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9j
ZWR1cmUpCiAgICAgbG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMocHJvY2VkdXJlKTsKICAg
ICBsZWdhbGl6ZU1lbW9yeU9mZnNldHMocHJvY2VkdXJlKTsKICAgICBtb3ZlQ29uc3RhbnRzKHBy
b2NlZHVyZSk7Ci0gICAgZWxpbWluYXRlRGVhZENvZGUocHJvY2VkdXJlKTsKLQogICAgIGlmIChw
cm9jZWR1cmUub3B0TGV2ZWwoKSA+PSAyKQogICAgICAgICBjYW5vbmljYWxpemVQcmVQb3N0SW5j
cmVtZW50cyhwcm9jZWR1cmUpOworICAgIGVsaW1pbmF0ZURlYWRDb2RlKHByb2NlZHVyZSk7CiAK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJ1biBwdXJlQ1NFIGhlcmUgdG8gY2xlYW4gdXAgc29t
ZSBwbGF0Zm9ybSBzcGVjaWZpYyBjaGFuZ2VzIGZyb20gdGhlIHByZXZpb3VzIHBoYXNlcy4KICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0ODczCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDM1MzViYjEzYmMxM2Fj
YjJjNDdjYzdkZTMwMTM2ZmZkMzcyOGZkNWQuLjNjNmZlYjQ0ZDliMDQwMGZhMTJiOWI2MjU4YTRl
N2FkNzdhZjhmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CkBAIC0yNTc4LDIzICsyNTc4LDI1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIC8vIFByZS1JbmRleCBDYW5vbmljYWwgRm9ybToKLSAgICAgICAgICAgIC8vICAgICBh
ZGRyZXNzID0gYWRkKGJhc2UsIG9mZnNldCkKLSAgICAgICAgICAgIC8vICAgICBtZW1vcnkgPSBs
b2FkKGJhc2UsIG9mZnNldCkKKyAgICAgICAgICAgIC8vICAgICBhZGRyZXNzID0gYWRkKGJhc2Us
IG9mZnNldCkgICAgLS0tPiAgIE1vdmUgJWJhc2UgJWFkZHJlc3MKKyAgICAgICAgICAgIC8vICAg
ICBtZW1vcnkgPSBsb2FkKGJhc2UsIG9mZnNldCkgICAgICAgICAgIE1vdmVXaXRoSW5jcmVtZW50
ICglYWRkcmVzcywgcHJlZml4KG9mZnNldCkpICVtZW1vcnkKICAgICAgICAgICAgIC8vIFBvc3Qt
SW5kZXggQ2Fub25pY2FsIEZvcm06Ci0gICAgICAgICAgICAvLyAgICAgbWVtb3J5ID0gbG9hZChi
YXNlLCAwKQotICAgICAgICAgICAgLy8gICAgIGFkZHJlc3MgPSBhZGQoYmFzZSwgb2Zmc2V0KQor
ICAgICAgICAgICAgLy8gICAgIGFkZHJlc3MgPSBhZGQoYmFzZSwgb2Zmc2V0KSAgICAtLS0+ICAg
TW92ZSAlYmFzZSAlYWRkcmVzcworICAgICAgICAgICAgLy8gICAgIG1lbW9yeSA9IGxvYWQoYmFz
ZSwgMCkgICAgICAgICAgICAgICAgTW92ZVdpdGhJbmNyZW1lbnQgKCVhZGRyZXNzLCBwb3N0Zml4
KG9mZnNldCkpICVtZW1vcnkKICAgICAgICAgICAgIGF1dG8gdHJ5QXBwZW5kSW5jcmVtZW50QWRk
cmVzcyA9IFsmXSAoKSAtPiBib29sIHsKICAgICAgICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNv
ZGUgPSB0cnlPcGNvZGVGb3JUeXBlKE1vdmVXaXRoSW5jcmVtZW50MzIsIE1vdmVXaXRoSW5jcmVt
ZW50NjQsIG1lbW9yeS0+dHlwZSgpKTsKICAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRGb3Jt
KG9wY29kZSwgQXJnOjpQcmVJbmRleCwgQXJnOjpUbXApIHx8ICFtX2luZGV4KQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgVmFsdWUqIGFkZHJlc3Mg
PSBtX2Jsb2NrLT5hdChtX2luZGV4IC0gMSk7Ci0gICAgICAgICAgICAgICAgaWYgKGFkZHJlc3Mt
Pm9wY29kZSgpICE9IEFkZCB8fCBhZGRyZXNzLT50eXBlKCkgIT0gSW50NjQpCisgICAgICAgICAg
ICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKGFkZHJlc3MpIHx8IGFkZHJlc3MtPm9wY29kZSgp
ICE9IEFkZCB8fCBhZGRyZXNzLT50eXBlKCkgIT0gSW50NjQpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcy0+Y2hpbGQoMCkgIT0g
bWVtb3J5LT5sYXN0Q2hpbGQoKSB8fCAhYWRkcmVzcy0+Y2hpbGQoMSktPmhhc0ludFB0cigpKQor
ICAgICAgICAgICAgICAgIFZhbHVlKiBiYXNlMSA9IGFkZHJlc3MtPmNoaWxkKDApOworICAgICAg
ICAgICAgICAgIFZhbHVlKiBiYXNlMiA9IG1lbW9yeS0+bGFzdENoaWxkKCk7CisgICAgICAgICAg
ICAgICAgaWYgKGJhc2UxICE9IGJhc2UyIHx8IG1fbG9ja2VkLmNvbnRhaW5zKGJhc2UxKSB8fCAh
YWRkcmVzcy0+Y2hpbGQoMSktPmhhc0ludFB0cigpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gYWRkcmVzcy0+Y2hp
bGQoMSktPmFzSW50UHRyKCk7CiAgICAgICAgICAgICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgc21h
bGxPZmZzZXQgPSBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4ob2Zmc2V0KTsKLSAgICAg
ICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0gb2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRQb3N0
SW5kZXhGb3JtKHNtYWxsT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQg
IT0gb2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRJbmNyZW1lbnRJbmRleEZvcm0oc21hbGxPZmZzZXQp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgICAgICBB
cmcgaW5jcmVtZW50QXJnID0gQXJnKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckFyZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcu
aAppbmRleCBlMWY2NDY2ZjAzMjJhYjgyODBiZDRlYjg4ZjYxZDlmYzk0N2Y3YmNiLi5mYmY2NjM3
YjI4NjA3MjlkNTQ3OGZmM2NkZDA0NTM2ODVhYmE0Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQXJnLmgKQEAgLTEyODAsMTUgKzEyODAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0
PEludD4+Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFByZUluZGV4Rm9ybShJbnQgb2Zmc2V0KQot
ICAgIHsKLSAgICAgICAgaWYgKGlzQVJNNjQoKSkKLSAgICAgICAgICAgIHJldHVybiBpc1ZhbGlk
U2lnbmVkSW1tOShvZmZzZXQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PElu
dD4+Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFBvc3RJbmRleEZvcm0oSW50IG9mZnNldCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKEludCBvZmZzZXQpCiAgICAg
ewogICAgICAgICBpZiAoaXNBUk02NCgpKQogICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRTaWdu
ZWRJbW05KG9mZnNldCk7CkBAIC0xMzI0LDkgKzEzMTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIGNh
c2UgSW5kZXg6CiAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZEluZGV4Rm9ybShzY2FsZSgpLCBv
ZmZzZXQoKSwgd2lkdGgpOwogICAgICAgICBjYXNlIFByZUluZGV4OgotICAgICAgICAgICAgcmV0
dXJuIGlzVmFsaWRQcmVJbmRleEZvcm0ob2Zmc2V0KCkpOwogICAgICAgICBjYXNlIFBvc3RJbmRl
eDoKLSAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkUG9zdEluZGV4Rm9ybShvZmZzZXQoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gaXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShvZmZzZXQoKSk7CiAg
ICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBjYXNl
IERvdWJsZUNvbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29w
Y29kZV9nZW5lcmF0b3IucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9n
ZW5lcmF0b3IucmIKaW5kZXggZjFiZjFhNDZjZmM4ODllYzE5MzQ2ZjJjMDZiN2NmNTBmOWUzZGUw
ZC4uMDU1YzA1YTBhM2M4OTA5ZDE1ZTU1NWEwNGJhOTQzYzg2MzczMTRmZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgpAQCAtOTMwLDEw
ICs5MzAsMTAgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAgICAg
ICAgIG91dHAucHV0cyAiaWYgKCFBcmc6OmlzVmFsaWRJbmRleEZvcm0oYXJnc1sje2luZGV4fV0u
c2NhbGUoKSwgYXJnc1sje2luZGV4fV0ub2Zmc2V0KCksICN7YXJnLndpZHRoQ29kZX0pKSIKICAg
ICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJPUEdFTl9SRVRVUk4oZmFsc2UpOyIKICAgICAg
ICAgICAgICAgICB3aGVuICJQcmVJbmRleCIKLSAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRz
ICJpZiAoIUFyZzo6aXNWYWxpZFByZUluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZzZXQoKSkp
IgorICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlkSW5jcmVt
ZW50SW5kZXhGb3JtKGFyZ3NbI3tpbmRleH1dLm9mZnNldCgpKSkiCiAgICAgICAgICAgICAgICAg
ICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hl
biAiUG9zdEluZGV4IgotICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjpp
c1ZhbGlkUG9zdEluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZzZXQoKSkpIgorICAgICAgICAg
ICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3Jt
KGFyZ3NbI3tpbmRleH1dLm9mZnNldCgpKSkiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHV0
cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hlbiAiQmlnSW1tIgog
ICAgICAgICAgICAgICAgIHdoZW4gIlJlbENvbmQiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435148</attachid>
            <date>2021-08-08 03:40:40 -0700</date>
            <delta_ts>2021-08-08 14:14:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228890-20210808054039.patch</filename>
            <type>text/plain</type>
            <size>16165</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZWE3ZTQyOGZhOTM2NGRlYzNiNDYwNTJhOTQxMDA0ZjA5MzUwMTRlLi5lYjkxODdhYzRiZTlhOThj
ZGUwN2E0NDRjOTc2NWE3MWQ5NWE3NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMS0wOC0wNyAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0FSTTY0XSBDbGVhbiB1cCBhbmQgZml4IFByZS9Qb3N0LUluZGV4ZWQg
QWRkcmVzcyBNb2RlIHRvIEFpciBmb3IgQVJNNjQgKExvYWQgSW5zdHJ1Y3Rpb24pCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg4OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNsZWFu
cyB1cCBhbmQgZG9lcyBtaW5vciBmaXggdG8gdGhlIHByZXZpb3VzIHBhdGNoLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MDQ3CisKKyAgICAgICAg
Rm9yIHRoZSBtb2RpZmljYXRpb25zIGluIGIzL0IzR2VuZXJhdGUuY3BwIGFuZCBiMy9CM0Nhbm9u
aWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzLmNwcCwgd2UKKyAgICAgICAgbmVlZCB0byBjb252ZXJ0
IHBvc3QtaW5kZXggY2FuZGlkYXRlcyB0byB0aGUgY2Fub25pY2FsIGZvcm0uIFNvLCB0aGUgYWRk
cmVzcyB2YWx1ZSBuZWVkcyB0bworICAgICAgICBiZSBtb3ZlZCBpbW1lZGlhdGVseSBiZWZvcmUg
dGhlIGxvYWQuIFRoaXMgaXMgc3ViamVjdCB0byB0aGUgZG9taW5hbmNlIGNvbnN0cmFpbnRzIHRo
YXQgYWRkCisgICAgICAgIG11c3QgYmUgY29udHJvbGxlZCBlcXVpdmFsZW50IHRvIHRoZSBsb2Fk
LiBTbywgc2ltaWxhcmx5LCBpZiB3ZSBuZWVkIHRvIG1vdmUgdGhlIG9mZnNldCB0bworICAgICAg
ICBqdXN0IGJlZm9yZSB0aGUgbG9hZCwgdGhlIGRvbWluYW5jZSBjb25zdHJhaW50cyBtdXN0IGJl
IHNhdGlzZmllZC4gU2luY2UgaXQgaXMgYSBjb25zdGFudAorICAgICAgICB2YWx1ZSwgYSBiZXR0
ZXIgYXBwcm9hY2ggaXMgdG8gYWRkIGEgbmV3IGNvbnN0YW50IHZhbHVlIGJlZm9yZSB0aGUgbWVt
b3J5IHZhbHVlLiBUaGVuLAorICAgICAgICBlbGltaW5hdGUgdGhlIGRlYWQgY29kZS4KKworICAg
ICAgICBUaGVyZSBpcyBhIGJ1ZyBpbiBiMy9CM0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRz
LmNwcC4gVGhlIGluc2VydGlvblNldC5leGVjdXRlKEJhc2ljQmxvY2spCisgICAgICAgIHdpbGwg
cmVvcmRlciB2YWx1ZSBpbmRleGVzLiBUaGlzIHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgZHVyaW5n
IHRoZSBkZXRlY3RpbmcgcGhhc2UgcmVseWluZyBvbgorICAgICAgICB2YWx1ZSBpbmRleGVzLiBT
bywgd2Ugc2hvdWxkIGNvbGxlY3QgdGhvc2UgYmxvY2tzIHRoYXQgbmVlZCByZW9yZGVyaW5nIGR1
cmluZyB0aGUgZGV0ZWN0aW5nCisgICAgICAgIHBoYXNlIGFuZCB0aGVuIHBlcmZvcm0gcmVvcmRl
cmluZyBvbiB0aGVtIGFmdGVyIHRoZSBkZXRlY3RpbmcgcGhhc2UuCisKKyAgICAgICAgSW4gYjMv
QjNMb3dlclRvQWlyLmNwcCwgd2UgbmVlZCBtX2xvY2tlZCBjaGVja3Mgb24gYWRkcmVzcyBhbmQg
YmFzZSB2YWx1ZXMuIElmIHRoZXkgYXJlIGFscmVhZHkKKyAgICAgICAgbG9ja2VkLCB0aGVyZSBp
cyBubyBuZWVkIHRvIGNvbnZlcnQgdGhlIExvYWQgaW5zdHJ1Y3Rpb24gdG8gdGhlIHByZS9wb3N0
LWluY3JlbWVudCBmb3JtLgorCisgICAgICAgICogYjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5j
cmVtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVt
ZW50cyk6CisgICAgICAgICogYjMvQjNHZW5lcmF0ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpn
ZW5lcmF0ZVRvQWlyKToKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAq
IGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkSW5j
cmVtZW50SW5kZXhGb3JtKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkRm9y
bSBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZFByZUluZGV4Rm9y
bSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZFBvc3RJbmRl
eEZvcm0pOiBEZWxldGVkLgorICAgICAgICAqIGIzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiOgor
CiAyMDIxLTA4LTA2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IG9uIERlYnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50
cy5jcHAKaW5kZXggYjM3NDMxZmFhYTdkMGM3MTRjMzQxZjBmMTRhYjhmYjAxMjExZTI0MC4uYTNi
MDUzN2Y5NGZhNTVmYjQ2OWJkNWYxZDI1ZmNiMGRjN2IxMGI0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1l
bnRzLmNwcApAQCAtNTAsMzggKzUwLDM5IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3Jl
bWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jLCAi
Y2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMiKTsKICAgICB1c2luZyBBcmcgPSBBaXI6OkFy
ZzsKIAorICAgIHVuc2lnbmVkIGluZGV4IHsgMCB9OwogICAgIEluc2VydGlvblNldCBpbnNlcnRp
b25TZXQgeyBwcm9jIH07CiAgICAgQmxvY2tJbnNlcnRpb25TZXQgYmxvY2tJbnNlcnRpb25TZXQg
eyBwcm9jIH07Ci0gICAgdW5zaWduZWQgaW5kZXggeyAwIH07CiAKICAgICBEb21pbmF0b3JzJiBk
b21pbmF0b3JzID0gcHJvYy5kb21pbmF0b3JzKCk7CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYg
YmFja3dhcmRzRG9taW5hdG9ycyA9IHByb2MuYmFja3dhcmRzRG9taW5hdG9ycygpOwogCi0gICAg
SGFzaE1hcDxWYWx1ZUtleSwgVmVjdG9yPFZhbHVlKj4+IGJhc2VPZmZzZXRUb0FkZHJlc3NlczsK
KyAgICBJbmRleFNldDxWYWx1ZSo+IGlnbm9yZWRWYWx1ZXM7CisgICAgSGFzaFNldDxCYXNpY0Js
b2NrKj4gb2Jzb2xldGVkQmxvY2tzOworICAgIEhhc2hNYXA8VmFsdWUqLCB1bnNpZ25lZD4gdmFs
dWVUb0luZGV4OwogICAgIEhhc2hNYXA8TWVtb3J5VmFsdWUqLCBWYWx1ZSo+IHByZUluZGV4Q2Fu
ZGlkYXRlczsKLSAgICBIYXNoTWFwPFZhbHVlKiwgVmVjdG9yPE1lbW9yeVZhbHVlKj4+IGJhc2VU
b01lbW9yaWVzOwogICAgIEhhc2hNYXA8TWVtb3J5VmFsdWUqLCBWYWx1ZSo+IHBvc3RJbmRleENh
bmRpZGF0ZXM7Ci0gICAgSGFzaE1hcDxWYWx1ZSosIHVuc2lnbmVkPiB2YWx1ZVRvSW5kZXg7Ci0g
ICAgSW5kZXhTZXQ8VmFsdWUqPiBpZ25vcmVkVmFsdWVzOworICAgIEhhc2hNYXA8VmFsdWUqLCBW
ZWN0b3I8TWVtb3J5VmFsdWUqPj4gYmFzZVRvTWVtb3JpZXM7CisgICAgSGFzaE1hcDxWYWx1ZUtl
eSwgVmVjdG9yPFZhbHVlKj4+IGJhc2VPZmZzZXRUb0FkZHJlc3NlczsKIAogICAgIC8vIFByZS1J
bmRleCBQYXR0ZXJuOgogICAgIC8vICAgICBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkKLSAg
ICAvLyAgICAgLi4uCisgICAgLy8gICAgICoqKgogICAgIC8vICAgICBtZW1vcnkgPSBMb2FkKGJh
c2UsIG9mZnNldCkKICAgICAvLyBQb3N0LUluZGV4IFBhdHRlcm46CiAgICAgLy8gICAgIG1lbW9y
eSA9IExvYWQoYmFzZSwgMCkKLSAgICAvLyAgICAgLi4uCisgICAgLy8gICAgICoqKgogICAgIC8v
ICAgICBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkKLSAgICBhdXRvIHRyeVByZVBvc3RJbmRl
eCA9IFsmXSAoVmFsdWUqIHZhbHVlKSB7CisgICAgYXV0byB0cnlBZGRQcmVQb3N0SW5kZXhDYW5k
aWRhdGUgPSBbJl0gKFZhbHVlKiB2YWx1ZSkgewogICAgICAgICBzd2l0Y2ggKHZhbHVlLT5vcGNv
ZGUoKSkgewogICAgICAgICBjYXNlIExvYWQ6IHsKICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CiAKLSAgICAgICAgICAgIGF1dG8gdHJ5
UHJlUG9zdEluZGV4TWVtb3J5ID0gWyZdICgpIHsKKyAgICAgICAgICAgIGF1dG8gdHJ5VXBkYXRl
Q2FuZGlkYXRlcyA9IFsmXSAoKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeS0+dHlwZSgp
ICE9IEludDMyICYmIG1lbW9yeS0+dHlwZSgpICE9IEludDY0KQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgaWYgKG1lbW9yeS0+b2Zmc2V0KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFBcmc6OmlzVmFsaWRQcmVJbmRleEZvcm0obWVtb3J5LT5vZmZz
ZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGlmICghQXJnOjppc1ZhbGlkSW5jcmVtZW50SW5k
ZXhGb3JtKG1lbW9yeS0+b2Zmc2V0KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgICAgICBWYWx1ZUtleSBiYXNlT2Zmc2V0a2V5ID0gVmFsdWVLZXko
bWVtb3J5LT5jaGlsZCgwKSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4obWVtb3J5LT5vZmZzZXQoKSkp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWJhc2VPZmZzZXRUb0FkZHJlc3Nlcy5jb250YWlu
cyhiYXNlT2Zmc2V0a2V5KSkKQEAgLTkwLDEwICs5MSwxMCBAQCBib29sIGNhbm9uaWNhbGl6ZVBy
ZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgICAgICAgICAgICAg
IHByZUluZGV4Q2FuZGlkYXRlcy5hZGQobWVtb3J5LCBhZGRyZXNzKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgYmFzZVRvTWVtb3JpZXMuYWRkKG1lbW9yeS0+
Y2hpbGQoMCksIFZlY3RvcjxNZW1vcnlWYWx1ZSo+KCkpLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQo
bWVtb3J5KTsKLSAgICAgICAgICAgICAgICB2YWx1ZVRvSW5kZXguYWRkKHZhbHVlLCBpbmRleCk7
CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICB0cnlQcmVQb3N0SW5kZXhNZW1vcnkoKTsK
KyAgICAgICAgICAgIHRyeVVwZGF0ZUNhbmRpZGF0ZXMoKTsKKyAgICAgICAgICAgIHZhbHVlVG9J
bmRleC5hZGQodmFsdWUsIGluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
QEAgLTEwMSwyNCArMTAyLDI0IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMo
UHJvY2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgVmFsdWUqIGxlZnQgPSB2YWx1ZS0+Y2hpbGQo
MCk7CiAgICAgICAgICAgICBWYWx1ZSogcmlnaHQgPSB2YWx1ZS0+Y2hpbGQoMSk7CiAKLSAgICAg
ICAgICAgIGF1dG8gdHJ5UG90ZW50aWFsUG9zdEluZGV4QWRkcmVzcyA9IFsmXSAoKSB7CisgICAg
ICAgICAgICBhdXRvIHRyeVVwZGF0ZUNhbmRpZGF0ZXMgPSBbJl0gKCkgewogICAgICAgICAgICAg
ICAgIGlmICghcmlnaHQtPmhhc0ludFB0cigpIHx8IHZhbHVlLT50eXBlKCkgIT0gSW50NjQpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBvZmZz
ZXQgPSByaWdodC0+YXNJbnRQdHIoKTsKICAgICAgICAgICAgICAgICBWYWx1ZTo6T2Zmc2V0VHlw
ZSBzbWFsbE9mZnNldCA9IHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPihvZmZzZXQpOwot
ICAgICAgICAgICAgICAgIGlmIChzbWFsbE9mZnNldCAhPSBvZmZzZXQgfHwgIUFyZzo6aXNWYWxp
ZFByZUluZGV4Rm9ybShzbWFsbE9mZnNldCkpCisgICAgICAgICAgICAgICAgaWYgKHNtYWxsT2Zm
c2V0ICE9IG9mZnNldCB8fCAhQXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKHNtYWxsT2Zm
c2V0KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIC8vIHNv
IGZhciB0aGlzIEFkZCB2YWx1ZSBpcyBhIHZhbGlkIGFkZHJlc3MgY2FuZGlkYXRlIGZvciBib3Ro
IHByZWZpeCBhbmQgcG9zdGZpeCBwYXR0ZXJuCiAgICAgICAgICAgICAgICAgVmFsdWVLZXkgYmFz
ZU9mZnNldGtleSA9IFZhbHVlS2V5KGxlZnQsIHN0YXRpY19jYXN0PGludDY0X3Q+KHNtYWxsT2Zm
c2V0KSk7CiAgICAgICAgICAgICAgICAgYmFzZU9mZnNldFRvQWRkcmVzc2VzLmFkZChiYXNlT2Zm
c2V0a2V5LCBWZWN0b3I8VmFsdWUqPigpKS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKHZhbHVlKTsK
LSAgICAgICAgICAgICAgICB2YWx1ZVRvSW5kZXguYWRkKHZhbHVlLCBpbmRleCk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFiYXNlVG9NZW1vcmllcy5jb250YWlucyhsZWZ0KSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGZvciAoTWVtb3J5VmFsdWUqIG1lbW9y
eSA6IGJhc2VUb01lbW9yaWVzLmdldChsZWZ0KSkKICAgICAgICAgICAgICAgICAgICAgcG9zdElu
ZGV4Q2FuZGlkYXRlcy5hZGQobWVtb3J5LCB2YWx1ZSk7CiAgICAgICAgICAgICB9OwogCi0gICAg
ICAgICAgICB0cnlQb3RlbnRpYWxQb3N0SW5kZXhBZGRyZXNzKCk7CisgICAgICAgICAgICB0cnlV
cGRhdGVDYW5kaWRhdGVzKCk7CisgICAgICAgICAgICB2YWx1ZVRvSW5kZXguYWRkKHZhbHVlLCBp
bmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0xMzAsNyArMTMxLDcg
QEAgYm9vbCBjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyhQcm9jZWR1cmUmIHByb2MpCiAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrIDogcHJvYy5ibG9ja3NJblByZU9yZGVyKCkp
IHsKICAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYmFzaWNCbG9jay0+c2l6ZSgpOyAr
K2luZGV4KSB7CiAgICAgICAgICAgICBWYWx1ZSogdmFsdWUgPSBiYXNpY0Jsb2NrLT5hdChpbmRl
eCk7Ci0gICAgICAgICAgICB0cnlQcmVQb3N0SW5kZXgodmFsdWUpOworICAgICAgICAgICAgdHJ5
QWRkUHJlUG9zdEluZGV4Q2FuZGlkYXRlKHZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MTM5LDM1ICsxNDAsMzMgQEAgYm9vbCBjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyhQcm9j
ZWR1cmUmIHByb2MpCiAgICAgICAgICAgICB8fCAoZG9taW5hdG9ycy5kb21pbmF0ZXModjItPm93
bmVyLCB2MS0+b3duZXIpICYmIGJhY2t3YXJkc0RvbWluYXRvcnMuZG9taW5hdGVzKHYxLT5vd25l
ciwgdjItPm93bmVyKSk7CiAgICAgfTsKIAotICAgIGF1dG8gZGV0ZWN0ID0gWyZdIChIYXNoTWFw
PE1lbW9yeVZhbHVlKiwgVmFsdWUqPiBjYW5kaWRhdGVzKSB7Ci0gICAgICAgIGZvciAoYXV0byBp
dHIgPSBjYW5kaWRhdGVzLmJlZ2luKCk7IGl0ciAhPSBjYW5kaWRhdGVzLmVuZCgpOyArK2l0cikg
ewotICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IGl0ci0+a2V5OwotICAgICAgICAg
ICAgVmFsdWUqIGFkZHJlc3MgPSBpdHItPnZhbHVlOworICAgIGF1dG8gZGV0ZWN0ID0gWyZdIChj
b25zdCBIYXNoTWFwPE1lbW9yeVZhbHVlKiwgVmFsdWUqPiYgY2FuZGlkYXRlcywgYm9vbCBpc1By
ZUluZGV4Q2FuZGlkYXRlcykgeworICAgICAgICBmb3IgKGF1dG8gcGFpciA6IGNhbmRpZGF0ZXMp
IHsKKyAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBwYWlyLmtleTsKKyAgICAgICAg
ICAgIFZhbHVlKiBhZGRyZXNzID0gcGFpci52YWx1ZTsKICAgICAgICAgICAgIGlmIChpZ25vcmVk
VmFsdWVzLmNvbnRhaW5zKG1lbW9yeSkgfHwgaWdub3JlZFZhbHVlcy5jb250YWlucyhhZGRyZXNz
KSB8fCAhY29udHJvbEVxdWl2YWxlbnQobWVtb3J5LCBhZGRyZXNzKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXMgPT0gcHJlSW5kZXhDYW5k
aWRhdGVzKSB7CisgICAgICAgICAgICBpZiAoaXNQcmVJbmRleENhbmRpZGF0ZXMpIHsKICAgICAg
ICAgICAgICAgICAvLyBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkgICAgICAgYWRkcmVzcyA9
IEFkZChiYXNlLCBvZmZzZXQpCi0gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtLT4gIG5ld01lbW9yeSA9IExvYWQoYmFzZSwgb2Zmc2V0KQotICAgICAgICAg
ICAgICAgIC8vIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAg
ICAgICAgICAvLyAqKiogICAgICAgICAgICAgICAgICAgICAgICAgIC0tPiAgbmV3TWVtb3J5ID0g
TG9hZChiYXNlLCBvZmZzZXQpCisgICAgICAgICAgICAgICAgLy8gKioqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICoqKgogICAgICAgICAgICAgICAgIC8vIG1lbW9yeSA9IExvYWQoYmFz
ZSwgb2Zmc2V0KSAgICAgICBtZW1vcnkgPSBJZGVudGl0eShuZXdNZW1vcnkpCiAgICAgICAgICAg
ICAgICAgTWVtb3J5VmFsdWUqIG5ld01lbW9yeSA9IGluc2VydGlvblNldC5pbnNlcnQ8TWVtb3J5
VmFsdWU+KHZhbHVlVG9JbmRleC5nZXQoYWRkcmVzcykgKyAxLCBMb2FkLCBtZW1vcnktPnR5cGUo
KSwgYWRkcmVzcy0+b3JpZ2luKCksIG1lbW9yeS0+bGFzdENoaWxkKCkpOwogICAgICAgICAgICAg
ICAgIG5ld01lbW9yeS0+c2V0T2Zmc2V0KG1lbW9yeS0+b2Zmc2V0KCkpOwogICAgICAgICAgICAg
ICAgIG1lbW9yeS0+cmVwbGFjZVdpdGhJZGVudGl0eShuZXdNZW1vcnkpOwotICAgICAgICAgICAg
ICAgIGluc2VydGlvblNldC5leGVjdXRlKGFkZHJlc3MtPm93bmVyKTsKKyAgICAgICAgICAgICAg
ICBvYnNvbGV0ZWRCbG9ja3MuYWRkKGFkZHJlc3MtPm93bmVyKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5ld09mZnNldCA9IENvbnN0YW50Ci0gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld0FkZHJlc3MgPSBBZGQoYmFzZSwgbmV3T2Zmc2V0KQorICAg
ICAgICAgICAgICAgIC8vICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdPZmZz
ZXQgPSBDb25zdGFudAorICAgICAgICAgICAgICAgIC8vICoqKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdBZGRyZXNzID0gQWRkKGJhc2UsIG5ld09mZnNldCkKICAgICAgICAgICAg
ICAgICAvLyBtZW1vcnkgPSBMb2FkKGJhc2UsIDApICAgICAgICAgICAgbWVtb3J5ID0gTG9hZChi
YXNlLCAwKQotICAgICAgICAgICAgICAgIC8vIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAg
LS0+ICAuLi4KLSAgICAgICAgICAgICAgICAvLyBvZmZzZXQgPSBDb25zdGFudCAgICAgICAgICAg
ICAgICAgb2Zmc2V0ID0gSWRlbnRpdHkobmV3T2Zmc2V0KQorICAgICAgICAgICAgICAgIC8vICoq
KiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+ICAqKioKICAgICAgICAgICAgICAgICAvLyBh
ZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkgICAgICAgYWRkcmVzcyA9IElkZW50aXR5KG5ld0Fk
ZHJlc3MpCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVtb3J5SW5kZXggPSB2YWx1ZVRvSW5k
ZXguZ2V0KG1lbW9yeSk7CiAgICAgICAgICAgICAgICAgVmFsdWUqIG5ld09mZnNldCA9IGluc2Vy
dGlvblNldC5pbnNlcnQ8Q29uc3Q2NFZhbHVlPihtZW1vcnlJbmRleCwgbWVtb3J5LT5vcmlnaW4o
KSwgYWRkcmVzcy0+Y2hpbGQoMSktPmFzSW50KCkpOwogICAgICAgICAgICAgICAgIFZhbHVlKiBu
ZXdBZGRyZXNzID0gaW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4obWVtb3J5SW5kZXgsIEFkZCwg
bWVtb3J5LT5vcmlnaW4oKSwgYWRkcmVzcy0+Y2hpbGQoMCksIG5ld09mZnNldCk7Ci0gICAgICAg
ICAgICAgICAgYWRkcmVzcy0+Y2hpbGQoMSktPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3T2Zmc2V0
KTsKICAgICAgICAgICAgICAgICBhZGRyZXNzLT5yZXBsYWNlV2l0aElkZW50aXR5KG5ld0FkZHJl
c3MpOwotICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKG1lbW9yeS0+b3duZXIp
OworICAgICAgICAgICAgICAgIG9ic29sZXRlZEJsb2Nrcy5hZGQobWVtb3J5LT5vd25lcik7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlnbm9yZWRWYWx1ZXMuYWRkKGFkZHJlc3MpOwpA
QCAtMTc1LDggKzE3NCwxMiBAQCBib29sIGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFBy
b2NlZHVyZSYgcHJvYykKICAgICAgICAgfQogICAgIH07CiAKLSAgICBkZXRlY3QocHJlSW5kZXhD
YW5kaWRhdGVzKTsKLSAgICBkZXRlY3QocG9zdEluZGV4Q2FuZGlkYXRlcyk7CisgICAgZGV0ZWN0
KHByZUluZGV4Q2FuZGlkYXRlcywgdHJ1ZSk7CisgICAgZGV0ZWN0KHBvc3RJbmRleENhbmRpZGF0
ZXMsIGZhbHNlKTsKKworICAgIGZvciAoQmFzaWNCbG9jayogb2Jzb2xldGVkQmxvY2sgOiBvYnNv
bGV0ZWRCbG9ja3MpCisgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKG9ic29sZXRlZEJsb2Nr
KTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5l
cmF0ZS5jcHAKaW5kZXggODM2ZmEzMTFjMzZiMzhmZDZkOTdjZmY3ZWI1MTU4MDI1N2JkMzA1Zi4u
NjYyZjMyMzgwNWNjZjczNjc4ZGRlNmYxMzkzN2RjZWVkMzdlNDA5NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcApAQCAtMTE4LDEwICsxMTgsOSBAQCB2b2lkIGdlbmVy
YXRlVG9BaXIoUHJvY2VkdXJlJiBwcm9jZWR1cmUpCiAgICAgbG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnMocHJvY2VkdXJlKTsKICAgICBsZWdhbGl6ZU1lbW9yeU9mZnNldHMocHJvY2VkdXJl
KTsKICAgICBtb3ZlQ29uc3RhbnRzKHByb2NlZHVyZSk7Ci0gICAgZWxpbWluYXRlRGVhZENvZGUo
cHJvY2VkdXJlKTsKLQogICAgIGlmIChwcm9jZWR1cmUub3B0TGV2ZWwoKSA+PSAyKQogICAgICAg
ICBjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyhwcm9jZWR1cmUpOworICAgIGVsaW1pbmF0
ZURlYWRDb2RlKHByb2NlZHVyZSk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJ1biBwdXJl
Q1NFIGhlcmUgdG8gY2xlYW4gdXAgc29tZSBwbGF0Zm9ybSBzcGVjaWZpYyBjaGFuZ2VzIGZyb20g
dGhlIHByZXZpb3VzIHBoYXNlcy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY0ODczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCmluZGV4IDM1MzViYjEzYmMxM2FjYjJjNDdjYzdkZTMwMTM2ZmZkMzcyOGZkNWQuLmMzOTMw
NjMwMWJiYmMwYzllNDQ1NWE0MGZkMDBhYzU3ZmJjYTMzNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0yNTc4LDExICsyNTc4LDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFByZS1JbmRleCBDYW5vbmljYWwgRm9y
bToKLSAgICAgICAgICAgIC8vICAgICBhZGRyZXNzID0gYWRkKGJhc2UsIG9mZnNldCkKLSAgICAg
ICAgICAgIC8vICAgICBtZW1vcnkgPSBsb2FkKGJhc2UsIG9mZnNldCkKKyAgICAgICAgICAgIC8v
ICAgICBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkgICAgLS0tPiAgIE1vdmUgJWJhc2UgJWFk
ZHJlc3MKKyAgICAgICAgICAgIC8vICAgICBtZW1vcnkgPSBMb2FkKGJhc2UsIG9mZnNldCkgICAg
ICAgICAgIE1vdmVXaXRoSW5jcmVtZW50ICglYWRkcmVzcywgcHJlZml4KG9mZnNldCkpICVtZW1v
cnkKICAgICAgICAgICAgIC8vIFBvc3QtSW5kZXggQ2Fub25pY2FsIEZvcm06Ci0gICAgICAgICAg
ICAvLyAgICAgbWVtb3J5ID0gbG9hZChiYXNlLCAwKQotICAgICAgICAgICAgLy8gICAgIGFkZHJl
c3MgPSBhZGQoYmFzZSwgb2Zmc2V0KQorICAgICAgICAgICAgLy8gICAgIGFkZHJlc3MgPSBBZGQo
YmFzZSwgb2Zmc2V0KSAgICAtLS0+ICAgTW92ZSAlYmFzZSAlYWRkcmVzcworICAgICAgICAgICAg
Ly8gICAgIG1lbW9yeSA9IExvYWQoYmFzZSwgMCkgICAgICAgICAgICAgICAgTW92ZVdpdGhJbmNy
ZW1lbnQgKCVhZGRyZXNzLCBwb3N0Zml4KG9mZnNldCkpICVtZW1vcnkKICAgICAgICAgICAgIGF1
dG8gdHJ5QXBwZW5kSW5jcmVtZW50QWRkcmVzcyA9IFsmXSAoKSAtPiBib29sIHsKICAgICAgICAg
ICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKE1vdmVXaXRoSW5j
cmVtZW50MzIsIE1vdmVXaXRoSW5jcmVtZW50NjQsIG1lbW9yeS0+dHlwZSgpKTsKICAgICAgICAg
ICAgICAgICBpZiAoIWlzVmFsaWRGb3JtKG9wY29kZSwgQXJnOjpQcmVJbmRleCwgQXJnOjpUbXAp
IHx8ICFtX2luZGV4KQpAQCAtMjU5MCwxMSArMjU5MCwxNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIFZhbHVlKiBhZGRyZXNzID0gbV9ibG9jay0+YXQobV9pbmRleCAtIDEpOwogICAgICAg
ICAgICAgICAgIGlmIChhZGRyZXNzLT5vcGNvZGUoKSAhPSBBZGQgfHwgYWRkcmVzcy0+dHlwZSgp
ICE9IEludDY0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgaWYgKGFkZHJlc3MtPmNoaWxkKDApICE9IG1lbW9yeS0+bGFzdENoaWxkKCkgfHwgIWFk
ZHJlc3MtPmNoaWxkKDEpLT5oYXNJbnRQdHIoKSkKKworICAgICAgICAgICAgICAgIFZhbHVlKiBi
YXNlMSA9IGFkZHJlc3MtPmNoaWxkKDApOworICAgICAgICAgICAgICAgIFZhbHVlKiBiYXNlMiA9
IG1lbW9yeS0+bGFzdENoaWxkKCk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2UxICE9IGJhc2Uy
IHx8ICFhZGRyZXNzLT5jaGlsZCgxKS0+aGFzSW50UHRyKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSBhZGRyZXNz
LT5jaGlsZCgxKS0+YXNJbnRQdHIoKTsKICAgICAgICAgICAgICAgICBWYWx1ZTo6T2Zmc2V0VHlw
ZSBzbWFsbE9mZnNldCA9IHN0YXRpY19jYXN0PFZhbHVlOjpPZmZzZXRUeXBlPihvZmZzZXQpOwot
ICAgICAgICAgICAgICAgIGlmIChzbWFsbE9mZnNldCAhPSBvZmZzZXQgfHwgIUFyZzo6aXNWYWxp
ZFBvc3RJbmRleEZvcm0oc21hbGxPZmZzZXQpKQorICAgICAgICAgICAgICAgIGlmIChzbWFsbE9m
ZnNldCAhPSBvZmZzZXQgfHwgIUFyZzo6aXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShzbWFsbE9m
ZnNldCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBpZiAobV9sb2NrZWQuY29udGFpbnMoYWRkcmVzcykgfHwgbV9sb2NrZWQuY29udGFpbnMoYmFz
ZTEpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgICAg
ICBBcmcgaW5jcmVtZW50QXJnID0gQXJnKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckFyZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuaAppbmRleCBlMWY2NDY2ZjAzMjJhYjgyODBiZDRlYjg4ZjYxZDlmYzk0N2Y3YmNiLi5mYmY2
NjM3YjI4NjA3MjlkNTQ3OGZmM2NkZDA0NTM2ODVhYmE0Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQXJnLmgKQEAgLTEyODAsMTUgKzEyODAsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zm
c2V0PEludD4+Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFByZUluZGV4Rm9ybShJbnQgb2Zmc2V0
KQotICAgIHsKLSAgICAgICAgaWYgKGlzQVJNNjQoKSkKLSAgICAgICAgICAgIHJldHVybiBpc1Zh
bGlkU2lnbmVkSW1tOShvZmZzZXQpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0
PEludD4+Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFBvc3RJbmRleEZvcm0oSW50IG9mZnNldCkK
KyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKEludCBvZmZzZXQpCiAg
ICAgewogICAgICAgICBpZiAoaXNBUk02NCgpKQogICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRT
aWduZWRJbW05KG9mZnNldCk7CkBAIC0xMzI0LDkgKzEzMTYsOCBAQCBwdWJsaWM6CiAgICAgICAg
IGNhc2UgSW5kZXg6CiAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZEluZGV4Rm9ybShzY2FsZSgp
LCBvZmZzZXQoKSwgd2lkdGgpOwogICAgICAgICBjYXNlIFByZUluZGV4OgotICAgICAgICAgICAg
cmV0dXJuIGlzVmFsaWRQcmVJbmRleEZvcm0ob2Zmc2V0KCkpOwogICAgICAgICBjYXNlIFBvc3RJ
bmRleDoKLSAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkUG9zdEluZGV4Rm9ybShvZmZzZXQoKSk7
CisgICAgICAgICAgICByZXR1cm4gaXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShvZmZzZXQoKSk7
CiAgICAgICAgIGNhc2UgUmVsQ29uZDoKICAgICAgICAgY2FzZSBSZXNDb25kOgogICAgICAgICBj
YXNlIERvdWJsZUNvbmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L29wY29kZV9nZW5lcmF0b3IucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29k
ZV9nZW5lcmF0b3IucmIKaW5kZXggZjFiZjFhNDZjZmM4ODllYzE5MzQ2ZjJjMDZiN2NmNTBmOWUz
ZGUwZC4uMDU1YzA1YTBhM2M4OTA5ZDE1ZTU1NWEwNGJhOTQzYzg2MzczMTRmZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgpAQCAtOTMw
LDEwICs5MzAsMTAgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgICAgICAgICAg
ICAgICAgIG91dHAucHV0cyAiaWYgKCFBcmc6OmlzVmFsaWRJbmRleEZvcm0oYXJnc1sje2luZGV4
fV0uc2NhbGUoKSwgYXJnc1sje2luZGV4fV0ub2Zmc2V0KCksICN7YXJnLndpZHRoQ29kZX0pKSIK
ICAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJPUEdFTl9SRVRVUk4oZmFsc2UpOyIKICAg
ICAgICAgICAgICAgICB3aGVuICJQcmVJbmRleCIKLSAgICAgICAgICAgICAgICAgICAgb3V0cC5w
dXRzICJpZiAoIUFyZzo6aXNWYWxpZFByZUluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZzZXQo
KSkpIgorICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlkSW5j
cmVtZW50SW5kZXhGb3JtKGFyZ3NbI3tpbmRleH1dLm9mZnNldCgpKSkiCiAgICAgICAgICAgICAg
ICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAg
d2hlbiAiUG9zdEluZGV4IgotICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJn
Ojppc1ZhbGlkUG9zdEluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZzZXQoKSkpIgorICAgICAg
ICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhG
b3JtKGFyZ3NbI3tpbmRleH1dLm9mZnNldCgpKSkiCiAgICAgICAgICAgICAgICAgICAgIG91dHAu
cHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hlbiAiQmlnSW1t
IgogICAgICAgICAgICAgICAgIHdoZW4gIlJlbENvbmQiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435156</attachid>
            <date>2021-08-08 14:14:32 -0700</date>
            <delta_ts>2021-08-08 19:10:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228890-20210808161430.patch</filename>
            <type>text/plain</type>
            <size>16187</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZWE3ZTQyOGZhOTM2NGRlYzNiNDYwNTJhOTQxMDA0ZjA5MzUwMTRlLi5lYjkxODdhYzRiZTlhOThj
ZGUwN2E0NDRjOTc2NWE3MWQ5NWE3NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMS0wOC0wNyAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0FSTTY0XSBDbGVhbiB1cCBhbmQgZml4IFByZS9Qb3N0LUluZGV4ZWQg
QWRkcmVzcyBNb2RlIHRvIEFpciBmb3IgQVJNNjQgKExvYWQgSW5zdHJ1Y3Rpb24pCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg4OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNsZWFu
cyB1cCBhbmQgZG9lcyBtaW5vciBmaXggdG8gdGhlIHByZXZpb3VzIHBhdGNoLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MDQ3CisKKyAgICAgICAg
Rm9yIHRoZSBtb2RpZmljYXRpb25zIGluIGIzL0IzR2VuZXJhdGUuY3BwIGFuZCBiMy9CM0Nhbm9u
aWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzLmNwcCwgd2UKKyAgICAgICAgbmVlZCB0byBjb252ZXJ0
IHBvc3QtaW5kZXggY2FuZGlkYXRlcyB0byB0aGUgY2Fub25pY2FsIGZvcm0uIFNvLCB0aGUgYWRk
cmVzcyB2YWx1ZSBuZWVkcyB0bworICAgICAgICBiZSBtb3ZlZCBpbW1lZGlhdGVseSBiZWZvcmUg
dGhlIGxvYWQuIFRoaXMgaXMgc3ViamVjdCB0byB0aGUgZG9taW5hbmNlIGNvbnN0cmFpbnRzIHRo
YXQgYWRkCisgICAgICAgIG11c3QgYmUgY29udHJvbGxlZCBlcXVpdmFsZW50IHRvIHRoZSBsb2Fk
LiBTbywgc2ltaWxhcmx5LCBpZiB3ZSBuZWVkIHRvIG1vdmUgdGhlIG9mZnNldCB0bworICAgICAg
ICBqdXN0IGJlZm9yZSB0aGUgbG9hZCwgdGhlIGRvbWluYW5jZSBjb25zdHJhaW50cyBtdXN0IGJl
IHNhdGlzZmllZC4gU2luY2UgaXQgaXMgYSBjb25zdGFudAorICAgICAgICB2YWx1ZSwgYSBiZXR0
ZXIgYXBwcm9hY2ggaXMgdG8gYWRkIGEgbmV3IGNvbnN0YW50IHZhbHVlIGJlZm9yZSB0aGUgbWVt
b3J5IHZhbHVlLiBUaGVuLAorICAgICAgICBlbGltaW5hdGUgdGhlIGRlYWQgY29kZS4KKworICAg
ICAgICBUaGVyZSBpcyBhIGJ1ZyBpbiBiMy9CM0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRz
LmNwcC4gVGhlIGluc2VydGlvblNldC5leGVjdXRlKEJhc2ljQmxvY2spCisgICAgICAgIHdpbGwg
cmVvcmRlciB2YWx1ZSBpbmRleGVzLiBUaGlzIHNob3VsZCBub3QgYmUgZXhlY3V0ZWQgZHVyaW5n
IHRoZSBkZXRlY3RpbmcgcGhhc2UgcmVseWluZyBvbgorICAgICAgICB2YWx1ZSBpbmRleGVzLiBT
bywgd2Ugc2hvdWxkIGNvbGxlY3QgdGhvc2UgYmxvY2tzIHRoYXQgbmVlZCByZW9yZGVyaW5nIGR1
cmluZyB0aGUgZGV0ZWN0aW5nCisgICAgICAgIHBoYXNlIGFuZCB0aGVuIHBlcmZvcm0gcmVvcmRl
cmluZyBvbiB0aGVtIGFmdGVyIHRoZSBkZXRlY3RpbmcgcGhhc2UuCisKKyAgICAgICAgSW4gYjMv
QjNMb3dlclRvQWlyLmNwcCwgd2UgbmVlZCBtX2xvY2tlZCBjaGVja3Mgb24gYWRkcmVzcyBhbmQg
YmFzZSB2YWx1ZXMuIElmIHRoZXkgYXJlIGFscmVhZHkKKyAgICAgICAgbG9ja2VkLCB0aGVyZSBp
cyBubyBuZWVkIHRvIGNvbnZlcnQgdGhlIExvYWQgaW5zdHJ1Y3Rpb24gdG8gdGhlIHByZS9wb3N0
LWluY3JlbWVudCBmb3JtLgorCisgICAgICAgICogYjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5j
cmVtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVt
ZW50cyk6CisgICAgICAgICogYjMvQjNHZW5lcmF0ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpn
ZW5lcmF0ZVRvQWlyKToKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAq
IGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkSW5j
cmVtZW50SW5kZXhGb3JtKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkRm9y
bSBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZFByZUluZGV4Rm9y
bSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZFBvc3RJbmRl
eEZvcm0pOiBEZWxldGVkLgorICAgICAgICAqIGIzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiOgor
CiAyMDIxLTA4LTA2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IG9uIERlYnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50
cy5jcHAKaW5kZXggYjM3NDMxZmFhYTdkMGM3MTRjMzQxZjBmMTRhYjhmYjAxMjExZTI0MC4uMjNh
N2ZlNWIxNTMyOTYzZDk1NWVhM2E0OWU2ZGYzOThmOTNlNzlmNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1l
bnRzLmNwcApAQCAtNTAsMzggKzUwLDM5IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3Jl
bWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jLCAi
Y2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMiKTsKICAgICB1c2luZyBBcmcgPSBBaXI6OkFy
ZzsKIAorICAgIHVuc2lnbmVkIGluZGV4IHsgMCB9OwogICAgIEluc2VydGlvblNldCBpbnNlcnRp
b25TZXQgeyBwcm9jIH07CiAgICAgQmxvY2tJbnNlcnRpb25TZXQgYmxvY2tJbnNlcnRpb25TZXQg
eyBwcm9jIH07Ci0gICAgdW5zaWduZWQgaW5kZXggeyAwIH07CiAKICAgICBEb21pbmF0b3JzJiBk
b21pbmF0b3JzID0gcHJvYy5kb21pbmF0b3JzKCk7CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYg
YmFja3dhcmRzRG9taW5hdG9ycyA9IHByb2MuYmFja3dhcmRzRG9taW5hdG9ycygpOwogCi0gICAg
SGFzaE1hcDxWYWx1ZUtleSwgVmVjdG9yPFZhbHVlKj4+IGJhc2VPZmZzZXRUb0FkZHJlc3NlczsK
KyAgICBJbmRleFNldDxWYWx1ZSo+IGlnbm9yZWRWYWx1ZXM7CisgICAgSGFzaFNldDxCYXNpY0Js
b2NrKj4gb2Jzb2xldGVkQmxvY2tzOworICAgIEhhc2hNYXA8VmFsdWUqLCB1bnNpZ25lZD4gdmFs
dWVUb0luZGV4OwogICAgIEhhc2hNYXA8TWVtb3J5VmFsdWUqLCBWYWx1ZSo+IHByZUluZGV4Q2Fu
ZGlkYXRlczsKLSAgICBIYXNoTWFwPFZhbHVlKiwgVmVjdG9yPE1lbW9yeVZhbHVlKj4+IGJhc2VU
b01lbW9yaWVzOwogICAgIEhhc2hNYXA8TWVtb3J5VmFsdWUqLCBWYWx1ZSo+IHBvc3RJbmRleENh
bmRpZGF0ZXM7Ci0gICAgSGFzaE1hcDxWYWx1ZSosIHVuc2lnbmVkPiB2YWx1ZVRvSW5kZXg7Ci0g
ICAgSW5kZXhTZXQ8VmFsdWUqPiBpZ25vcmVkVmFsdWVzOworICAgIEhhc2hNYXA8VmFsdWUqLCBW
ZWN0b3I8TWVtb3J5VmFsdWUqPj4gYmFzZVRvTWVtb3JpZXM7CisgICAgSGFzaE1hcDxWYWx1ZUtl
eSwgVmVjdG9yPFZhbHVlKj4+IGJhc2VPZmZzZXRUb0FkZHJlc3NlczsKIAogICAgIC8vIFByZS1J
bmRleCBQYXR0ZXJuOgogICAgIC8vICAgICBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkKLSAg
ICAvLyAgICAgLi4uCisgICAgLy8gICAgICoqKgogICAgIC8vICAgICBtZW1vcnkgPSBMb2FkKGJh
c2UsIG9mZnNldCkKICAgICAvLyBQb3N0LUluZGV4IFBhdHRlcm46CiAgICAgLy8gICAgIG1lbW9y
eSA9IExvYWQoYmFzZSwgMCkKLSAgICAvLyAgICAgLi4uCisgICAgLy8gICAgICoqKgogICAgIC8v
ICAgICBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkKLSAgICBhdXRvIHRyeVByZVBvc3RJbmRl
eCA9IFsmXSAoVmFsdWUqIHZhbHVlKSB7CisgICAgYXV0byB0cnlBZGRQcmVQb3N0SW5kZXhDYW5k
aWRhdGUgPSBbJl0gKFZhbHVlKiB2YWx1ZSkgewogICAgICAgICBzd2l0Y2ggKHZhbHVlLT5vcGNv
ZGUoKSkgewogICAgICAgICBjYXNlIExvYWQ6IHsKICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBt
ZW1vcnkgPSB2YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7CiAKLSAgICAgICAgICAgIGF1dG8gdHJ5
UHJlUG9zdEluZGV4TWVtb3J5ID0gWyZdICgpIHsKKyAgICAgICAgICAgIGF1dG8gdHJ5QWRkUHJl
SW5kZXhDYW5kaWRhdGVzID0gWyZdICgpIHsKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5LT50
eXBlKCkgIT0gSW50MzIgJiYgbWVtb3J5LT50eXBlKCkgIT0gSW50NjQpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBpZiAobWVtb3J5LT5vZmZzZXQoKSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoIUFyZzo6aXNWYWxpZFByZUluZGV4Rm9ybShtZW1vcnkt
Pm9mZnNldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFBcmc6OmlzVmFsaWRJbmNyZW1l
bnRJbmRleEZvcm0obWVtb3J5LT5vZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIFZhbHVlS2V5IGJhc2VPZmZzZXRrZXkgPSBWYWx1
ZUtleShtZW1vcnktPmNoaWxkKDApLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihtZW1vcnktPm9mZnNl
dCgpKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYmFzZU9mZnNldFRvQWRkcmVzc2VzLmNv
bnRhaW5zKGJhc2VPZmZzZXRrZXkpKQpAQCAtOTAsMTAgKzkxLDEwIEBAIGJvb2wgY2Fub25pY2Fs
aXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcHJlSW5kZXhDYW5kaWRhdGVzLmFkZChtZW1vcnksIGFkZHJlc3MpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICBiYXNlVG9NZW1vcmllcy5hZGQobWVt
b3J5LT5jaGlsZCgwKSwgVmVjdG9yPE1lbW9yeVZhbHVlKj4oKSkuaXRlcmF0b3ItPnZhbHVlLmFw
cGVuZChtZW1vcnkpOwotICAgICAgICAgICAgICAgIHZhbHVlVG9JbmRleC5hZGQodmFsdWUsIGlu
ZGV4KTsKICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIHRyeVByZVBvc3RJbmRleE1lbW9y
eSgpOworICAgICAgICAgICAgdHJ5QWRkUHJlSW5kZXhDYW5kaWRhdGVzKCk7CisgICAgICAgICAg
ICB2YWx1ZVRvSW5kZXguYWRkKHZhbHVlLCBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCkBAIC0xMDEsMjQgKzEwMiwyNCBAQCBib29sIGNhbm9uaWNhbGl6ZVByZVBvc3RJ
bmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgIFZhbHVlKiBsZWZ0ID0gdmFs
dWUtPmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gdmFsdWUtPmNoaWxkKDEp
OwogCi0gICAgICAgICAgICBhdXRvIHRyeVBvdGVudGlhbFBvc3RJbmRleEFkZHJlc3MgPSBbJl0g
KCkgeworICAgICAgICAgICAgYXV0byB0cnlBZGRQb3N0SW5kZXhDYW5kaWRhdGVzID0gWyZdICgp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LT5oYXNJbnRQdHIoKSB8fCB2YWx1ZS0+dHlw
ZSgpICE9IEludDY0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmlnaHQtPmFzSW50UHRyKCk7CiAgICAgICAgICAgICAgICAg
VmFsdWU6Ok9mZnNldFR5cGUgc21hbGxPZmZzZXQgPSBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0
VHlwZT4ob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0gb2Zmc2V0
IHx8ICFBcmc6OmlzVmFsaWRQcmVJbmRleEZvcm0oc21hbGxPZmZzZXQpKQorICAgICAgICAgICAg
ICAgIGlmIChzbWFsbE9mZnNldCAhPSBvZmZzZXQgfHwgIUFyZzo6aXNWYWxpZEluY3JlbWVudElu
ZGV4Rm9ybShzbWFsbE9mZnNldCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICAvLyBzbyBmYXIgdGhpcyBBZGQgdmFsdWUgaXMgYSB2YWxpZCBhZGRyZXNzIGNh
bmRpZGF0ZSBmb3IgYm90aCBwcmVmaXggYW5kIHBvc3RmaXggcGF0dGVybgogICAgICAgICAgICAg
ICAgIFZhbHVlS2V5IGJhc2VPZmZzZXRrZXkgPSBWYWx1ZUtleShsZWZ0LCBzdGF0aWNfY2FzdDxp
bnQ2NF90PihzbWFsbE9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJhc2VPZmZzZXRUb0FkZHJl
c3Nlcy5hZGQoYmFzZU9mZnNldGtleSwgVmVjdG9yPFZhbHVlKj4oKSkuaXRlcmF0b3ItPnZhbHVl
LmFwcGVuZCh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgdmFsdWVUb0luZGV4LmFkZCh2YWx1ZSwg
aW5kZXgpOwogICAgICAgICAgICAgICAgIGlmICghYmFzZVRvTWVtb3JpZXMuY29udGFpbnMobGVm
dCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBmb3IgKE1l
bW9yeVZhbHVlKiBtZW1vcnkgOiBiYXNlVG9NZW1vcmllcy5nZXQobGVmdCkpCiAgICAgICAgICAg
ICAgICAgICAgIHBvc3RJbmRleENhbmRpZGF0ZXMuYWRkKG1lbW9yeSwgdmFsdWUpOwogICAgICAg
ICAgICAgfTsKIAotICAgICAgICAgICAgdHJ5UG90ZW50aWFsUG9zdEluZGV4QWRkcmVzcygpOwor
ICAgICAgICAgICAgdHJ5QWRkUG9zdEluZGV4Q2FuZGlkYXRlcygpOworICAgICAgICAgICAgdmFs
dWVUb0luZGV4LmFkZCh2YWx1ZSwgaW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIApAQCAtMTMwLDcgKzEzMSw3IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVu
dHMoUHJvY2VkdXJlJiBwcm9jKQogICAgIGZvciAoQmFzaWNCbG9jayogYmFzaWNCbG9jayA6IHBy
b2MuYmxvY2tzSW5QcmVPcmRlcigpKSB7CiAgICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8
IGJhc2ljQmxvY2stPnNpemUoKTsgKytpbmRleCkgewogICAgICAgICAgICAgVmFsdWUqIHZhbHVl
ID0gYmFzaWNCbG9jay0+YXQoaW5kZXgpOwotICAgICAgICAgICAgdHJ5UHJlUG9zdEluZGV4KHZh
bHVlKTsKKyAgICAgICAgICAgIHRyeUFkZFByZVBvc3RJbmRleENhbmRpZGF0ZSh2YWx1ZSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTEzOSwzNSArMTQwLDMzIEBAIGJvb2wgY2Fub25pY2FsaXpl
UHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgfHwgKGRvbWlu
YXRvcnMuZG9taW5hdGVzKHYyLT5vd25lciwgdjEtPm93bmVyKSAmJiBiYWNrd2FyZHNEb21pbmF0
b3JzLmRvbWluYXRlcyh2MS0+b3duZXIsIHYyLT5vd25lcikpOwogICAgIH07CiAKLSAgICBhdXRv
IGRldGVjdCA9IFsmXSAoSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4gY2FuZGlkYXRlcykg
ewotICAgICAgICBmb3IgKGF1dG8gaXRyID0gY2FuZGlkYXRlcy5iZWdpbigpOyBpdHIgIT0gY2Fu
ZGlkYXRlcy5lbmQoKTsgKytpdHIpIHsKLSAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkg
PSBpdHItPmtleTsKLSAgICAgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gaXRyLT52YWx1ZTsKKyAg
ICBhdXRvIGRldGVjdCA9IFsmXSAoY29uc3QgSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4m
IGNhbmRpZGF0ZXMsIGJvb2wgaXNQcmVJbmRleENhbmRpZGF0ZXMpIHsKKyAgICAgICAgZm9yIChh
dXRvIHBhaXIgOiBjYW5kaWRhdGVzKSB7CisgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5
ID0gcGFpci5rZXk7CisgICAgICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHBhaXIudmFsdWU7CiAg
ICAgICAgICAgICBpZiAoaWdub3JlZFZhbHVlcy5jb250YWlucyhtZW1vcnkpIHx8IGlnbm9yZWRW
YWx1ZXMuY29udGFpbnMoYWRkcmVzcykgfHwgIWNvbnRyb2xFcXVpdmFsZW50KG1lbW9yeSwgYWRk
cmVzcykpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChjYW5k
aWRhdGVzID09IHByZUluZGV4Q2FuZGlkYXRlcykgeworICAgICAgICAgICAgaWYgKGlzUHJlSW5k
ZXhDYW5kaWRhdGVzKSB7CiAgICAgICAgICAgICAgICAgLy8gYWRkcmVzcyA9IEFkZChiYXNlLCBv
ZmZzZXQpICAgICAgIGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0KQotICAgICAgICAgICAgICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+ICBuZXdNZW1vcnkgPSBMb2FkKGJh
c2UsIG9mZnNldCkKLSAgICAgICAgICAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgLy8gKioqICAgICAgICAgICAgICAgICAgICAg
ICAgICAtLT4gIG5ld01lbW9yeSA9IExvYWQoYmFzZSwgb2Zmc2V0KQorICAgICAgICAgICAgICAg
IC8vICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKICAgICAgICAgICAgICAg
ICAvLyBtZW1vcnkgPSBMb2FkKGJhc2UsIG9mZnNldCkgICAgICAgbWVtb3J5ID0gSWRlbnRpdHko
bmV3TWVtb3J5KQogICAgICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBuZXdNZW1vcnkgPSBpbnNl
cnRpb25TZXQuaW5zZXJ0PE1lbW9yeVZhbHVlPih2YWx1ZVRvSW5kZXguZ2V0KGFkZHJlc3MpICsg
MSwgTG9hZCwgbWVtb3J5LT50eXBlKCksIGFkZHJlc3MtPm9yaWdpbigpLCBtZW1vcnktPmxhc3RD
aGlsZCgpKTsKICAgICAgICAgICAgICAgICBuZXdNZW1vcnktPnNldE9mZnNldChtZW1vcnktPm9m
ZnNldCgpKTsKICAgICAgICAgICAgICAgICBtZW1vcnktPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3
TWVtb3J5KTsKLSAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShhZGRyZXNzLT5v
d25lcik7CisgICAgICAgICAgICAgICAgb2Jzb2xldGVkQmxvY2tzLmFkZChhZGRyZXNzLT5vd25l
cik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuZXdPZmZzZXQgPSBDb25zdGFudAotICAgICAgICAgICAg
ICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdBZGRyZXNzID0gQWRk
KGJhc2UsIG5ld09mZnNldCkKKyAgICAgICAgICAgICAgICAvLyAqKiogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3T2Zmc2V0ID0gQ29uc3RhbnQKKyAgICAgICAgICAgICAgICAvLyAq
KiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3QWRkcmVzcyA9IEFkZChiYXNlLCBu
ZXdPZmZzZXQpCiAgICAgICAgICAgICAgICAgLy8gbWVtb3J5ID0gTG9hZChiYXNlLCAwKSAgICAg
ICAgICAgIG1lbW9yeSA9IExvYWQoYmFzZSwgMCkKLSAgICAgICAgICAgICAgICAvLyAuLi4gICAg
ICAgICAgICAgICAgICAgICAgICAgIC0tPiAgLi4uCi0gICAgICAgICAgICAgICAgLy8gb2Zmc2V0
ID0gQ29uc3RhbnQgICAgICAgICAgICAgICAgIG9mZnNldCA9IElkZW50aXR5KG5ld09mZnNldCkK
KyAgICAgICAgICAgICAgICAvLyAqKiogICAgICAgICAgICAgICAgICAgICAgICAgIC0tPiAgKioq
CiAgICAgICAgICAgICAgICAgLy8gYWRkcmVzcyA9IEFkZChiYXNlLCBvZmZzZXQpICAgICAgIGFk
ZHJlc3MgPSBJZGVudGl0eShuZXdBZGRyZXNzKQogICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1l
bW9yeUluZGV4ID0gdmFsdWVUb0luZGV4LmdldChtZW1vcnkpOwogICAgICAgICAgICAgICAgIFZh
bHVlKiBuZXdPZmZzZXQgPSBpbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0NjRWYWx1ZT4obWVtb3J5
SW5kZXgsIG1lbW9yeS0+b3JpZ2luKCksIGFkZHJlc3MtPmNoaWxkKDEpLT5hc0ludCgpKTsKICAg
ICAgICAgICAgICAgICBWYWx1ZSogbmV3QWRkcmVzcyA9IGluc2VydGlvblNldC5pbnNlcnQ8VmFs
dWU+KG1lbW9yeUluZGV4LCBBZGQsIG1lbW9yeS0+b3JpZ2luKCksIGFkZHJlc3MtPmNoaWxkKDAp
LCBuZXdPZmZzZXQpOwotICAgICAgICAgICAgICAgIGFkZHJlc3MtPmNoaWxkKDEpLT5yZXBsYWNl
V2l0aElkZW50aXR5KG5ld09mZnNldCk7CiAgICAgICAgICAgICAgICAgYWRkcmVzcy0+cmVwbGFj
ZVdpdGhJZGVudGl0eShuZXdBZGRyZXNzKTsKLSAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQu
ZXhlY3V0ZShtZW1vcnktPm93bmVyKTsKKyAgICAgICAgICAgICAgICBvYnNvbGV0ZWRCbG9ja3Mu
YWRkKG1lbW9yeS0+b3duZXIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZ25vcmVk
VmFsdWVzLmFkZChhZGRyZXNzKTsKQEAgLTE3NSw4ICsxNzQsMTIgQEAgYm9vbCBjYW5vbmljYWxp
emVQcmVQb3N0SW5jcmVtZW50cyhQcm9jZWR1cmUmIHByb2MpCiAgICAgICAgIH0KICAgICB9Owog
Ci0gICAgZGV0ZWN0KHByZUluZGV4Q2FuZGlkYXRlcyk7Ci0gICAgZGV0ZWN0KHBvc3RJbmRleENh
bmRpZGF0ZXMpOworICAgIGRldGVjdChwcmVJbmRleENhbmRpZGF0ZXMsIHRydWUpOworICAgIGRl
dGVjdChwb3N0SW5kZXhDYW5kaWRhdGVzLCBmYWxzZSk7CisKKyAgICBmb3IgKEJhc2ljQmxvY2sq
IG9ic29sZXRlZEJsb2NrIDogb2Jzb2xldGVkQmxvY2tzKQorICAgICAgICBpbnNlcnRpb25TZXQu
ZXhlY3V0ZShvYnNvbGV0ZWRCbG9jayk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCmluZGV4IDgzNmZhMzExYzM2YjM4ZmQ2ZDk3
Y2ZmN2ViNTE1ODAyNTdiZDMwNWYuLjY2MmYzMjM4MDVjY2Y3MzY3OGRkZTZmMTM5MzdkY2VlZDM3
ZTQwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKQEAgLTExOCwx
MCArMTE4LDkgQEAgdm9pZCBnZW5lcmF0ZVRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQogICAg
IGxvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zKHByb2NlZHVyZSk7CiAgICAgbGVnYWxpemVN
ZW1vcnlPZmZzZXRzKHByb2NlZHVyZSk7CiAgICAgbW92ZUNvbnN0YW50cyhwcm9jZWR1cmUpOwot
ICAgIGVsaW1pbmF0ZURlYWRDb2RlKHByb2NlZHVyZSk7Ci0KICAgICBpZiAocHJvY2VkdXJlLm9w
dExldmVsKCkgPj0gMikKICAgICAgICAgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMocHJv
Y2VkdXJlKTsKKyAgICBlbGltaW5hdGVEZWFkQ29kZShwcm9jZWR1cmUpOwogCiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBydW4gcHVyZUNTRSBoZXJlIHRvIGNsZWFuIHVwIHNvbWUgcGxhdGZvcm0g
c3BlY2lmaWMgY2hhbmdlcyBmcm9tIHRoZSBwcmV2aW91cyBwaGFzZXMuCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDg3MwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCAzNTM1YmIxM2JjMTNhY2IyYzQ3Y2M3ZGUz
MDEzNmZmZDM3MjhmZDVkLi5jMzkzMDYzMDFiYmJjMGM5ZTQ0NTVhNDBmZDAwYWM1N2ZiY2EzMzU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMjU3OCwx
MSArMjU3OCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBQ
cmUtSW5kZXggQ2Fub25pY2FsIEZvcm06Ci0gICAgICAgICAgICAvLyAgICAgYWRkcmVzcyA9IGFk
ZChiYXNlLCBvZmZzZXQpCi0gICAgICAgICAgICAvLyAgICAgbWVtb3J5ID0gbG9hZChiYXNlLCBv
ZmZzZXQpCisgICAgICAgICAgICAvLyAgICAgYWRkcmVzcyA9IEFkZChiYXNlLCBvZmZzZXQpICAg
IC0tLT4gICBNb3ZlICViYXNlICVhZGRyZXNzCisgICAgICAgICAgICAvLyAgICAgbWVtb3J5ID0g
TG9hZChiYXNlLCBvZmZzZXQpICAgICAgICAgICBNb3ZlV2l0aEluY3JlbWVudCAoJWFkZHJlc3Ms
IHByZWZpeChvZmZzZXQpKSAlbWVtb3J5CiAgICAgICAgICAgICAvLyBQb3N0LUluZGV4IENhbm9u
aWNhbCBGb3JtOgotICAgICAgICAgICAgLy8gICAgIG1lbW9yeSA9IGxvYWQoYmFzZSwgMCkKLSAg
ICAgICAgICAgIC8vICAgICBhZGRyZXNzID0gYWRkKGJhc2UsIG9mZnNldCkKKyAgICAgICAgICAg
IC8vICAgICBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkgICAgLS0tPiAgIE1vdmUgJWJhc2Ug
JWFkZHJlc3MKKyAgICAgICAgICAgIC8vICAgICBtZW1vcnkgPSBMb2FkKGJhc2UsIDApICAgICAg
ICAgICAgICAgIE1vdmVXaXRoSW5jcmVtZW50ICglYWRkcmVzcywgcG9zdGZpeChvZmZzZXQpKSAl
bWVtb3J5CiAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZEluY3JlbWVudEFkZHJlc3MgPSBbJl0g
KCkgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bj
b2RlRm9yVHlwZShNb3ZlV2l0aEluY3JlbWVudDMyLCBNb3ZlV2l0aEluY3JlbWVudDY0LCBtZW1v
cnktPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9ybShvcGNvZGUsIEFy
Zzo6UHJlSW5kZXgsIEFyZzo6VG1wKSB8fCAhbV9pbmRleCkKQEAgLTI1OTAsMTEgKzI1OTAsMTYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IG1fYmxvY2stPmF0
KG1faW5kZXggLSAxKTsKICAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcy0+b3Bjb2RlKCkgIT0g
QWRkIHx8IGFkZHJlc3MtPnR5cGUoKSAhPSBJbnQ2NCkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzLT5jaGlsZCgwKSAhPSBtZW1v
cnktPmxhc3RDaGlsZCgpIHx8ICFhZGRyZXNzLT5jaGlsZCgxKS0+aGFzSW50UHRyKCkpCisKKyAg
ICAgICAgICAgICAgICBWYWx1ZSogYmFzZTEgPSBhZGRyZXNzLT5jaGlsZCgwKTsKKyAgICAgICAg
ICAgICAgICBWYWx1ZSogYmFzZTIgPSBtZW1vcnktPmxhc3RDaGlsZCgpOworICAgICAgICAgICAg
ICAgIGlmIChiYXNlMSAhPSBiYXNlMiB8fCAhYWRkcmVzcy0+Y2hpbGQoMSktPmhhc0ludFB0cigp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgaW50
cHRyX3Qgb2Zmc2V0ID0gYWRkcmVzcy0+Y2hpbGQoMSktPmFzSW50UHRyKCk7CiAgICAgICAgICAg
ICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgc21hbGxPZmZzZXQgPSBzdGF0aWNfY2FzdDxWYWx1ZTo6
T2Zmc2V0VHlwZT4ob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0g
b2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRQb3N0SW5kZXhGb3JtKHNtYWxsT2Zmc2V0KSkKKyAgICAg
ICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0gb2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRJbmNy
ZW1lbnRJbmRleEZvcm0oc21hbGxPZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5zKGFkZHJlc3MpIHx8
IG1fbG9ja2VkLmNvbnRhaW5zKGJhc2UxKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgICAgICAgICAgQXJnIGluY3JlbWVudEFyZyA9IEFyZygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggZTFmNjQ2NmYwMzIyYWI4MjgwYmQ0ZWI4
OGY2MWQ5ZmM5NDdmN2JjYi4uZmJmNjYzN2IyODYwNzI5ZDU0NzhmZjNjZGQwNDUzNjg1YWJhNGM5
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC0xMjgwLDE1ICsxMjgw
LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5h
bWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRQ
cmVJbmRleEZvcm0oSW50IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIGlmIChpc0FSTTY0KCkpCi0g
ICAgICAgICAgICByZXR1cm4gaXNWYWxpZFNpZ25lZEltbTkob2Zmc2V0KTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUg
PSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRQb3N0
SW5kZXhGb3JtKEludCBvZmZzZXQpCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEluY3JlbWVudElu
ZGV4Rm9ybShJbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgaWYgKGlzQVJNNjQoKSkKICAgICAg
ICAgICAgIHJldHVybiBpc1ZhbGlkU2lnbmVkSW1tOShvZmZzZXQpOwpAQCAtMTMyNCw5ICsxMzE2
LDggQEAgcHVibGljOgogICAgICAgICBjYXNlIEluZGV4OgogICAgICAgICAgICAgcmV0dXJuIGlz
VmFsaWRJbmRleEZvcm0oc2NhbGUoKSwgb2Zmc2V0KCksIHdpZHRoKTsKICAgICAgICAgY2FzZSBQ
cmVJbmRleDoKLSAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkUHJlSW5kZXhGb3JtKG9mZnNldCgp
KTsKICAgICAgICAgY2FzZSBQb3N0SW5kZXg6Ci0gICAgICAgICAgICByZXR1cm4gaXNWYWxpZFBv
c3RJbmRleEZvcm0ob2Zmc2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRJbmNyZW1l
bnRJbmRleEZvcm0ob2Zmc2V0KCkpOwogICAgICAgICBjYXNlIFJlbENvbmQ6CiAgICAgICAgIGNh
c2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCmluZGV4IGYxYmYxYTQ2Y2ZjODg5
ZWMxOTM0NmYyYzA2YjdjZjUwZjllM2RlMGQuLjA1NWMwNWEwYTNjODkwOWQxNWU1NTVhMDRiYTk0
M2M4NjM3MzE0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bj
b2RlX2dlbmVyYXRvci5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29k
ZV9nZW5lcmF0b3IucmIKQEAgLTkzMCwxMCArOTMwLDEwIEBAIHdyaXRlSCgiT3Bjb2RlR2VuZXJh
dGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlk
SW5kZXhGb3JtKGFyZ3NbI3tpbmRleH1dLnNjYWxlKCksIGFyZ3NbI3tpbmRleH1dLm9mZnNldCgp
LCAje2FyZy53aWR0aENvZGV9KSkiCiAgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiT1BH
RU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hlbiAiUHJlSW5kZXgiCi0gICAg
ICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKCFBcmc6OmlzVmFsaWRQcmVJbmRleEZvcm0o
YXJnc1sje2luZGV4fV0ub2Zmc2V0KCkpKSIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRz
ICJpZiAoIUFyZzo6aXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZz
ZXQoKSkpIgogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JFVFVSTihmYWxz
ZSk7IgogICAgICAgICAgICAgICAgIHdoZW4gIlBvc3RJbmRleCIKLSAgICAgICAgICAgICAgICAg
ICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZFBvc3RJbmRleEZvcm0oYXJnc1sje2luZGV4
fV0ub2Zmc2V0KCkpKSIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6
aXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZzZXQoKSkpIgogICAg
ICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7IgogICAgICAg
ICAgICAgICAgIHdoZW4gIkJpZ0ltbSIKICAgICAgICAgICAgICAgICB3aGVuICJSZWxDb25kIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435162</attachid>
            <date>2021-08-08 19:10:36 -0700</date>
            <delta_ts>2021-08-08 19:33:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228890-20210808211035.patch</filename>
            <type>text/plain</type>
            <size>16401</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZWE3ZTQyOGZhOTM2NGRlYzNiNDYwNTJhOTQxMDA0ZjA5MzUwMTRlLi4yNDVlNWI1NmNkNjYzYzcy
YjNkYzkyYWYyNjVjYTRlODljYzBiMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0wOC0wOCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0FSTTY0XSBDbGVhbiB1cCBhbmQgZml4IFByZS9Qb3N0LUluZGV4ZWQg
QWRkcmVzcyBNb2RlIHRvIEFpciBmb3IgQVJNNjQgKExvYWQgSW5zdHJ1Y3Rpb24pCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg4OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3IgdGhlIG1vZGlmaWNh
dGlvbnMgaW4gYjMvQjNHZW5lcmF0ZS5jcHAgYW5kIGIzL0IzQ2Fub25pY2FsaXplUHJlUG9zdElu
Y3JlbWVudHMuY3BwLCB3ZQorICAgICAgICBuZWVkIHRvIGNvbnZlcnQgcG9zdC1pbmRleCBjYW5k
aWRhdGVzIHRvIHRoZSBjYW5vbmljYWwgZm9ybS4gU28sIHRoZSBhZGRyZXNzIHZhbHVlIG5lZWRz
IHRvCisgICAgICAgIGJlIG1vdmVkIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgbG9hZC4gVGhpcyBp
cyBzdWJqZWN0IHRvIHRoZSBkb21pbmFuY2UgY29uc3RyYWludHMgdGhhdCBhZGQKKyAgICAgICAg
bXVzdCBiZSBjb250cm9sbGVkIGVxdWl2YWxlbnQgdG8gdGhlIGxvYWQuIFNvLCBzaW1pbGFybHks
IGlmIHdlIG5lZWQgdG8gbW92ZSB0aGUgb2Zmc2V0IHRvCisgICAgICAgIGp1c3QgYmVmb3JlIHRo
ZSBsb2FkLCB0aGUgZG9taW5hbmNlIGNvbnN0cmFpbnRzIG11c3QgYmUgc2F0aXNmaWVkLiBTaW5j
ZSBpdCBpcyBhIGNvbnN0YW50CisgICAgICAgIHZhbHVlLCBhIGJldHRlciBhcHByb2FjaCBpcyB0
byBhZGQgYSBuZXcgY29uc3RhbnQgdmFsdWUgYmVmb3JlIHRoZSBtZW1vcnkgdmFsdWUuIFRoZW4s
CisgICAgICAgIGVsaW1pbmF0ZSB0aGUgZGVhZCBjb2RlLgorCisgICAgICAgIFRoZXJlIGlzIGEg
YnVnIGluIGIzL0IzQ2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMuY3BwLiBUaGUgaW5zZXJ0
aW9uU2V0LmV4ZWN1dGUoQmFzaWNCbG9jaykKKyAgICAgICAgd2lsbCByZW9yZGVyIHZhbHVlIGlu
ZGV4ZXMgaW4gdGhlIGJhc2ljIGJsb2NrLiBTbywgd2Ugc2hvdWxkIHJlLXNlYXJjaCBmb3IgdGhl
IHZhbHVlIGluZGV4IGluCisgICAgICAgIHRoZSBibG9jayBldmVyeSB0aW1lIGFmdGVyIHRoZSBl
eGVjdXRpb24uCisKKyAgICAgICAgSW4gYjMvQjNMb3dlclRvQWlyLmNwcCwgd2UgbmVlZCBtX2xv
Y2tlZCBjaGVja3Mgb24gYWRkcmVzcyBhbmQgYmFzZSB2YWx1ZXMuIElmIHRoZXkgYXJlIGFscmVh
ZHkKKyAgICAgICAgbG9ja2VkLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNvbnZlcnQgdGhlIExvYWQg
aW5zdHJ1Y3Rpb24gdG8gdGhlIHByZS9wb3N0LWluY3JlbWVudCBmb3JtLgorCisgICAgICAgICog
YjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyk6CisgICAgICAgICogYjMvQjNHZW5lcmF0
ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpnZW5lcmF0ZVRvQWlyKToKKyAgICAgICAgKiBiMy9C
M0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkRm9ybSBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6OkFyZzo6aXNWYWxpZFByZUluZGV4Rm9ybSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6OkFyZzo6aXNWYWxpZFBvc3RJbmRleEZvcm0pOiBEZWxldGVkLgorICAgICAgICAqIGIz
L2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiOgorCiAyMDIxLTA4LTA2ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IG9uIERl
YnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYW5vbmlj
YWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
YW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHAKaW5kZXggYjM3NDMxZmFhYTdkMGM3MTRj
MzQxZjBmMTRhYjhmYjAxMjExZTI0MC4uMTQ0ZjEyMjU4YjBhNDcwOWNhNTY5MGYwODI3Njc4NDFk
OTU3ZTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2Fub25pY2Fs
aXplUHJlUG9zdEluY3JlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzLmNwcApAQCAtNTAsMzggKzUwLDM3IEBAIGJv
b2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgIFBo
YXNlU2NvcGUgcGhhc2VTY29wZShwcm9jLCAiY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMi
KTsKICAgICB1c2luZyBBcmcgPSBBaXI6OkFyZzsKIAorICAgIHVuc2lnbmVkIGluZGV4IHsgMCB9
OwogICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQgeyBwcm9jIH07CiAgICAgQmxvY2tJbnNl
cnRpb25TZXQgYmxvY2tJbnNlcnRpb25TZXQgeyBwcm9jIH07Ci0gICAgdW5zaWduZWQgaW5kZXgg
eyAwIH07CiAKICAgICBEb21pbmF0b3JzJiBkb21pbmF0b3JzID0gcHJvYy5kb21pbmF0b3JzKCk7
CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYgYmFja3dhcmRzRG9taW5hdG9ycyA9IHByb2MuYmFj
a3dhcmRzRG9taW5hdG9ycygpOwogCi0gICAgSGFzaE1hcDxWYWx1ZUtleSwgVmVjdG9yPFZhbHVl
Kj4+IGJhc2VPZmZzZXRUb0FkZHJlc3NlczsKKyAgICBJbmRleFNldDxWYWx1ZSo+IGlnbm9yZWRW
YWx1ZXM7CiAgICAgSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4gcHJlSW5kZXhDYW5kaWRh
dGVzOwotICAgIEhhc2hNYXA8VmFsdWUqLCBWZWN0b3I8TWVtb3J5VmFsdWUqPj4gYmFzZVRvTWVt
b3JpZXM7CiAgICAgSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4gcG9zdEluZGV4Q2FuZGlk
YXRlczsKLSAgICBIYXNoTWFwPFZhbHVlKiwgdW5zaWduZWQ+IHZhbHVlVG9JbmRleDsKLSAgICBJ
bmRleFNldDxWYWx1ZSo+IGlnbm9yZWRWYWx1ZXM7CisgICAgSGFzaE1hcDxWYWx1ZSosIFZlY3Rv
cjxNZW1vcnlWYWx1ZSo+PiBiYXNlVG9NZW1vcmllczsKKyAgICBIYXNoTWFwPFZhbHVlS2V5LCBW
ZWN0b3I8VmFsdWUqPj4gYmFzZU9mZnNldFRvQWRkcmVzc2VzOwogCiAgICAgLy8gUHJlLUluZGV4
IFBhdHRlcm46CiAgICAgLy8gICAgIGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0KQotICAgIC8v
ICAgICAuLi4KKyAgICAvLyAgICAgKioqCiAgICAgLy8gICAgIG1lbW9yeSA9IExvYWQoYmFzZSwg
b2Zmc2V0KQogICAgIC8vIFBvc3QtSW5kZXggUGF0dGVybjoKICAgICAvLyAgICAgbWVtb3J5ID0g
TG9hZChiYXNlLCAwKQotICAgIC8vICAgICAuLi4KKyAgICAvLyAgICAgKioqCiAgICAgLy8gICAg
IGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0KQotICAgIGF1dG8gdHJ5UHJlUG9zdEluZGV4ID0g
WyZdIChWYWx1ZSogdmFsdWUpIHsKKyAgICBhdXRvIHRyeUFkZFByZVBvc3RJbmRleENhbmRpZGF0
ZSA9IFsmXSAoVmFsdWUqIHZhbHVlKSB7CiAgICAgICAgIHN3aXRjaCAodmFsdWUtPm9wY29kZSgp
KSB7CiAgICAgICAgIGNhc2UgTG9hZDogewogICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9y
eSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKIAotICAgICAgICAgICAgYXV0byB0cnlQcmVQ
b3N0SW5kZXhNZW1vcnkgPSBbJl0gKCkgeworICAgICAgICAgICAgYXV0byB0cnlBZGRQcmVJbmRl
eENhbmRpZGF0ZXMgPSBbJl0gKCkgewogICAgICAgICAgICAgICAgIGlmIChtZW1vcnktPnR5cGUo
KSAhPSBJbnQzMiAmJiBtZW1vcnktPnR5cGUoKSAhPSBJbnQ2NCkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGlmIChtZW1vcnktPm9mZnNldCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghQXJnOjppc1ZhbGlkUHJlSW5kZXhGb3JtKG1lbW9yeS0+b2Zm
c2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIUFyZzo6aXNWYWxpZEluY3JlbWVudElu
ZGV4Rm9ybShtZW1vcnktPm9mZnNldCgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICAgICAgVmFsdWVLZXkgYmFzZU9mZnNldGtleSA9IFZhbHVlS2V5
KG1lbW9yeS0+Y2hpbGQoMCksIHN0YXRpY19jYXN0PGludDY0X3Q+KG1lbW9yeS0+b2Zmc2V0KCkp
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFiYXNlT2Zmc2V0VG9BZGRyZXNzZXMuY29udGFp
bnMoYmFzZU9mZnNldGtleSkpCkBAIC05MCwxMCArODksOSBAQCBib29sIGNhbm9uaWNhbGl6ZVBy
ZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgICAgICAgICAgICAg
IHByZUluZGV4Q2FuZGlkYXRlcy5hZGQobWVtb3J5LCBhZGRyZXNzKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgYmFzZVRvTWVtb3JpZXMuYWRkKG1lbW9yeS0+
Y2hpbGQoMCksIFZlY3RvcjxNZW1vcnlWYWx1ZSo+KCkpLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQo
bWVtb3J5KTsKLSAgICAgICAgICAgICAgICB2YWx1ZVRvSW5kZXguYWRkKHZhbHVlLCBpbmRleCk7
CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICB0cnlQcmVQb3N0SW5kZXhNZW1vcnkoKTsK
KyAgICAgICAgICAgIHRyeUFkZFByZUluZGV4Q2FuZGlkYXRlcygpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIApAQCAtMTAxLDI0ICs5OSwyMyBAQCBib29sIGNhbm9uaWNhbGl6ZVBy
ZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgIFZhbHVlKiBsZWZ0
ID0gdmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gdmFsdWUtPmNo
aWxkKDEpOwogCi0gICAgICAgICAgICBhdXRvIHRyeVBvdGVudGlhbFBvc3RJbmRleEFkZHJlc3Mg
PSBbJl0gKCkgeworICAgICAgICAgICAgYXV0byB0cnlBZGRQb3N0SW5kZXhDYW5kaWRhdGVzID0g
WyZdICgpIHsKICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LT5oYXNJbnRQdHIoKSB8fCB2YWx1
ZS0+dHlwZSgpICE9IEludDY0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmlnaHQtPmFzSW50UHRyKCk7CiAgICAgICAgICAg
ICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgc21hbGxPZmZzZXQgPSBzdGF0aWNfY2FzdDxWYWx1ZTo6
T2Zmc2V0VHlwZT4ob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0g
b2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRQcmVJbmRleEZvcm0oc21hbGxPZmZzZXQpKQorICAgICAg
ICAgICAgICAgIGlmIChzbWFsbE9mZnNldCAhPSBvZmZzZXQgfHwgIUFyZzo6aXNWYWxpZEluY3Jl
bWVudEluZGV4Rm9ybShzbWFsbE9mZnNldCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICAvLyBzbyBmYXIgdGhpcyBBZGQgdmFsdWUgaXMgYSB2YWxpZCBhZGRy
ZXNzIGNhbmRpZGF0ZSBmb3IgYm90aCBwcmVmaXggYW5kIHBvc3RmaXggcGF0dGVybgogICAgICAg
ICAgICAgICAgIFZhbHVlS2V5IGJhc2VPZmZzZXRrZXkgPSBWYWx1ZUtleShsZWZ0LCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihzbWFsbE9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJhc2VPZmZzZXRU
b0FkZHJlc3Nlcy5hZGQoYmFzZU9mZnNldGtleSwgVmVjdG9yPFZhbHVlKj4oKSkuaXRlcmF0b3It
PnZhbHVlLmFwcGVuZCh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgdmFsdWVUb0luZGV4LmFkZCh2
YWx1ZSwgaW5kZXgpOwogICAgICAgICAgICAgICAgIGlmICghYmFzZVRvTWVtb3JpZXMuY29udGFp
bnMobGVmdCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBm
b3IgKE1lbW9yeVZhbHVlKiBtZW1vcnkgOiBiYXNlVG9NZW1vcmllcy5nZXQobGVmdCkpCiAgICAg
ICAgICAgICAgICAgICAgIHBvc3RJbmRleENhbmRpZGF0ZXMuYWRkKG1lbW9yeSwgdmFsdWUpOwog
ICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgdHJ5UG90ZW50aWFsUG9zdEluZGV4QWRkcmVz
cygpOworICAgICAgICAgICAgdHJ5QWRkUG9zdEluZGV4Q2FuZGlkYXRlcygpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTMwLDcgKzEyNyw3IEBAIGJvb2wgY2Fub25pY2Fs
aXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgIGZvciAoQmFzaWNCbG9j
ayogYmFzaWNCbG9jayA6IHByb2MuYmxvY2tzSW5QcmVPcmRlcigpKSB7CiAgICAgICAgIGZvciAo
aW5kZXggPSAwOyBpbmRleCA8IGJhc2ljQmxvY2stPnNpemUoKTsgKytpbmRleCkgewogICAgICAg
ICAgICAgVmFsdWUqIHZhbHVlID0gYmFzaWNCbG9jay0+YXQoaW5kZXgpOwotICAgICAgICAgICAg
dHJ5UHJlUG9zdEluZGV4KHZhbHVlKTsKKyAgICAgICAgICAgIHRyeUFkZFByZVBvc3RJbmRleENh
bmRpZGF0ZShiYXNpY0Jsb2NrLT5hdChpbmRleCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0x
MzksMzMgKzEzNiw0MiBAQCBib29sIGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2Nl
ZHVyZSYgcHJvYykKICAgICAgICAgICAgIHx8IChkb21pbmF0b3JzLmRvbWluYXRlcyh2Mi0+b3du
ZXIsIHYxLT5vd25lcikgJiYgYmFja3dhcmRzRG9taW5hdG9ycy5kb21pbmF0ZXModjEtPm93bmVy
LCB2Mi0+b3duZXIpKTsKICAgICB9OwogCi0gICAgYXV0byBkZXRlY3QgPSBbJl0gKEhhc2hNYXA8
TWVtb3J5VmFsdWUqLCBWYWx1ZSo+IGNhbmRpZGF0ZXMpIHsKLSAgICAgICAgZm9yIChhdXRvIGl0
ciA9IGNhbmRpZGF0ZXMuYmVnaW4oKTsgaXRyICE9IGNhbmRpZGF0ZXMuZW5kKCk7ICsraXRyKSB7
Ci0gICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gaXRyLT5rZXk7Ci0gICAgICAgICAg
ICBWYWx1ZSogYWRkcmVzcyA9IGl0ci0+dmFsdWU7CisgICAgYXV0byB2YWx1ZUluZGV4SW5CYXNp
Y0Jsb2NrID0gWyZdIChWYWx1ZSogdmFsdWUpIC0+IHVuc2lnbmVkIHsKKyAgICAgICAgdW5zaWdu
ZWQgaW5kZXggPSAwOworICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHZhbHVlLT5vd25lcjsK
KyAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYmxvY2stPnNpemUoKTsgKytpbmRleCkg
eworICAgICAgICAgICAgaWYgKGJsb2NrLT5hdChpbmRleCkgPT0gdmFsdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbmRleDsKKyAg
ICB9OworCisgICAgYXV0byBkZXRlY3QgPSBbJl0gKGNvbnN0IEhhc2hNYXA8TWVtb3J5VmFsdWUq
LCBWYWx1ZSo+JiBjYW5kaWRhdGVzLCBib29sIGlzUHJlSW5kZXhDYW5kaWRhdGVzKSB7CisgICAg
ICAgIGZvciAoYXV0byBwYWlyIDogY2FuZGlkYXRlcykgeworICAgICAgICAgICAgTWVtb3J5VmFs
dWUqIG1lbW9yeSA9IHBhaXIua2V5OworICAgICAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBwYWly
LnZhbHVlOwogICAgICAgICAgICAgaWYgKGlnbm9yZWRWYWx1ZXMuY29udGFpbnMobWVtb3J5KSB8
fCBpZ25vcmVkVmFsdWVzLmNvbnRhaW5zKGFkZHJlc3MpIHx8ICFjb250cm9sRXF1aXZhbGVudCht
ZW1vcnksIGFkZHJlc3MpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICBpZiAoY2FuZGlkYXRlcyA9PSBwcmVJbmRleENhbmRpZGF0ZXMpIHsKKyAgICAgICAgICAgIGlm
IChpc1ByZUluZGV4Q2FuZGlkYXRlcykgewogICAgICAgICAgICAgICAgIC8vIGFkZHJlc3MgPSBB
ZGQoYmFzZSwgb2Zmc2V0KSAgICAgICBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkKLSAgICAg
ICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPiAgbmV3TWVtb3J5
ID0gTG9hZChiYXNlLCBvZmZzZXQpCi0gICAgICAgICAgICAgICAgLy8gLi4uICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgIC8vICoqKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgLS0+ICBuZXdNZW1vcnkgPSBMb2FkKGJhc2UsIG9mZnNldCkKKyAgICAg
ICAgICAgICAgICAvLyAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCiAgICAg
ICAgICAgICAgICAgLy8gbWVtb3J5ID0gTG9hZChiYXNlLCBvZmZzZXQpICAgICAgIG1lbW9yeSA9
IElkZW50aXR5KG5ld01lbW9yeSkKLSAgICAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbmV3TWVt
b3J5ID0gaW5zZXJ0aW9uU2V0Lmluc2VydDxNZW1vcnlWYWx1ZT4odmFsdWVUb0luZGV4LmdldChh
ZGRyZXNzKSArIDEsIExvYWQsIG1lbW9yeS0+dHlwZSgpLCBhZGRyZXNzLT5vcmlnaW4oKSwgbWVt
b3J5LT5sYXN0Q2hpbGQoKSk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5zZXJ0aW9uSW5k
ZXggPSB2YWx1ZUluZGV4SW5CYXNpY0Jsb2NrKGFkZHJlc3MpICsgMTsKKyAgICAgICAgICAgICAg
ICBNZW1vcnlWYWx1ZSogbmV3TWVtb3J5ID0gaW5zZXJ0aW9uU2V0Lmluc2VydDxNZW1vcnlWYWx1
ZT4oaW5zZXJ0aW9uSW5kZXgsIExvYWQsIG1lbW9yeS0+dHlwZSgpLCBhZGRyZXNzLT5vcmlnaW4o
KSwgbWVtb3J5LT5sYXN0Q2hpbGQoKSk7CiAgICAgICAgICAgICAgICAgbmV3TWVtb3J5LT5zZXRP
ZmZzZXQobWVtb3J5LT5vZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgbWVtb3J5LT5yZXBsYWNl
V2l0aElkZW50aXR5KG5ld01lbW9yeSk7CiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4
ZWN1dGUoYWRkcmVzcy0+b3duZXIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3T2Zmc2V0ID0gQ29u
c3RhbnQKLSAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3QWRkcmVzcyA9IEFkZChiYXNlLCBuZXdPZmZzZXQpCisgICAgICAgICAgICAgICAgLy8g
KioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld09mZnNldCA9IENvbnN0YW50Cisg
ICAgICAgICAgICAgICAgLy8gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Fk
ZHJlc3MgPSBBZGQoYmFzZSwgbmV3T2Zmc2V0KQogICAgICAgICAgICAgICAgIC8vIG1lbW9yeSA9
IExvYWQoYmFzZSwgMCkgICAgICAgICAgICBtZW1vcnkgPSBMb2FkKGJhc2UsIDApCi0gICAgICAg
ICAgICAgICAgLy8gLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4gIC4uLgotICAgICAg
ICAgICAgICAgIC8vIG9mZnNldCA9IENvbnN0YW50ICAgICAgICAgICAgICAgICBvZmZzZXQgPSBJ
ZGVudGl0eShuZXdPZmZzZXQpCisgICAgICAgICAgICAgICAgLy8gKioqICAgICAgICAgICAgICAg
ICAgICAgICAgICAtLT4gICoqKgogICAgICAgICAgICAgICAgIC8vIGFkZHJlc3MgPSBBZGQoYmFz
ZSwgb2Zmc2V0KSAgICAgICBhZGRyZXNzID0gSWRlbnRpdHkobmV3QWRkcmVzcykKLSAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBtZW1vcnlJbmRleCA9IHZhbHVlVG9JbmRleC5nZXQobWVtb3J5KTsK
LSAgICAgICAgICAgICAgICBWYWx1ZSogbmV3T2Zmc2V0ID0gaW5zZXJ0aW9uU2V0Lmluc2VydDxD
b25zdDY0VmFsdWU+KG1lbW9yeUluZGV4LCBtZW1vcnktPm9yaWdpbigpLCBhZGRyZXNzLT5jaGls
ZCgxKS0+YXNJbnQoKSk7Ci0gICAgICAgICAgICAgICAgVmFsdWUqIG5ld0FkZHJlc3MgPSBpbnNl
cnRpb25TZXQuaW5zZXJ0PFZhbHVlPihtZW1vcnlJbmRleCwgQWRkLCBtZW1vcnktPm9yaWdpbigp
LCBhZGRyZXNzLT5jaGlsZCgwKSwgbmV3T2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBhZGRyZXNz
LT5jaGlsZCgxKS0+cmVwbGFjZVdpdGhJZGVudGl0eShuZXdPZmZzZXQpOworICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGluc2VydGlvbkluZGV4ID0gdmFsdWVJbmRleEluQmFzaWNCbG9jayhtZW1v
cnkpOworICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdPZmZzZXQgPSBpbnNlcnRpb25TZXQuaW5z
ZXJ0PENvbnN0NjRWYWx1ZT4oaW5zZXJ0aW9uSW5kZXgsIG1lbW9yeS0+b3JpZ2luKCksIGFkZHJl
c3MtPmNoaWxkKDEpLT5hc0ludCgpKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3QWRkcmVz
cyA9IGluc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KGluc2VydGlvbkluZGV4LCBBZGQsIG1lbW9y
eS0+b3JpZ2luKCksIGFkZHJlc3MtPmNoaWxkKDApLCBuZXdPZmZzZXQpOwogICAgICAgICAgICAg
ICAgIGFkZHJlc3MtPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3QWRkcmVzcyk7CiAgICAgICAgICAg
ICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUobWVtb3J5LT5vd25lcik7CiAgICAgICAgICAgICB9
CkBAIC0xNzUsOCArMTgxLDggQEAgYm9vbCBjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyhQ
cm9jZWR1cmUmIHByb2MpCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgZGV0ZWN0KHByZUluZGV4
Q2FuZGlkYXRlcyk7Ci0gICAgZGV0ZWN0KHBvc3RJbmRleENhbmRpZGF0ZXMpOworICAgIGRldGVj
dChwcmVJbmRleENhbmRpZGF0ZXMsIHRydWUpOworICAgIGRldGVjdChwb3N0SW5kZXhDYW5kaWRh
dGVzLCBmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0dlbmVyYXRlLmNwcAppbmRleCA4MzZmYTMxMWMzNmIzOGZkNmQ5N2NmZjdlYjUxNTgwMjU3
YmQzMDVmLi42NjJmMzIzODA1Y2NmNzM2NzhkZGU2ZjEzOTM3ZGNlZWQzN2U0MDk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCkBAIC0xMTgsMTAgKzExOCw5IEBAIHZv
aWQgZ2VuZXJhdGVUb0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSkKICAgICBsb3dlck1hY3Jvc0Fm
dGVyT3B0aW1pemF0aW9ucyhwcm9jZWR1cmUpOwogICAgIGxlZ2FsaXplTWVtb3J5T2Zmc2V0cyhw
cm9jZWR1cmUpOwogICAgIG1vdmVDb25zdGFudHMocHJvY2VkdXJlKTsKLSAgICBlbGltaW5hdGVE
ZWFkQ29kZShwcm9jZWR1cmUpOwotCiAgICAgaWYgKHByb2NlZHVyZS5vcHRMZXZlbCgpID49IDIp
CiAgICAgICAgIGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKHByb2NlZHVyZSk7CisgICAg
ZWxpbWluYXRlRGVhZENvZGUocHJvY2VkdXJlKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
cnVuIHB1cmVDU0UgaGVyZSB0byBjbGVhbiB1cCBzb21lIHBsYXRmb3JtIHNwZWNpZmljIGNoYW5n
ZXMgZnJvbSB0aGUgcHJldmlvdXMgcGhhc2VzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ4NzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJUb0Fpci5jcHAKaW5kZXggMzUzNWJiMTNiYzEzYWNiMmM0N2NjN2RlMzAxMzZmZmQzNzI4ZmQ1
ZC4uYzM5MzA2MzAxYmJiYzBjOWU0NDU1YTQwZmQwMGFjNTdmYmNhMzM1NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTI1NzgsMTEgKzI1NzgsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gUHJlLUluZGV4IENhbm9u
aWNhbCBGb3JtOgotICAgICAgICAgICAgLy8gICAgIGFkZHJlc3MgPSBhZGQoYmFzZSwgb2Zmc2V0
KQotICAgICAgICAgICAgLy8gICAgIG1lbW9yeSA9IGxvYWQoYmFzZSwgb2Zmc2V0KQorICAgICAg
ICAgICAgLy8gICAgIGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0KSAgICAtLS0+ICAgTW92ZSAl
YmFzZSAlYWRkcmVzcworICAgICAgICAgICAgLy8gICAgIG1lbW9yeSA9IExvYWQoYmFzZSwgb2Zm
c2V0KSAgICAgICAgICAgTW92ZVdpdGhJbmNyZW1lbnQgKCVhZGRyZXNzLCBwcmVmaXgob2Zmc2V0
KSkgJW1lbW9yeQogICAgICAgICAgICAgLy8gUG9zdC1JbmRleCBDYW5vbmljYWwgRm9ybToKLSAg
ICAgICAgICAgIC8vICAgICBtZW1vcnkgPSBsb2FkKGJhc2UsIDApCi0gICAgICAgICAgICAvLyAg
ICAgYWRkcmVzcyA9IGFkZChiYXNlLCBvZmZzZXQpCisgICAgICAgICAgICAvLyAgICAgYWRkcmVz
cyA9IEFkZChiYXNlLCBvZmZzZXQpICAgIC0tLT4gICBNb3ZlICViYXNlICVhZGRyZXNzCisgICAg
ICAgICAgICAvLyAgICAgbWVtb3J5ID0gTG9hZChiYXNlLCAwKSAgICAgICAgICAgICAgICBNb3Zl
V2l0aEluY3JlbWVudCAoJWFkZHJlc3MsIHBvc3RmaXgob2Zmc2V0KSkgJW1lbW9yeQogICAgICAg
ICAgICAgYXV0byB0cnlBcHBlbmRJbmNyZW1lbnRBZGRyZXNzID0gWyZdICgpIC0+IGJvb2wgewog
ICAgICAgICAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUoTW92
ZVdpdGhJbmNyZW1lbnQzMiwgTW92ZVdpdGhJbmNyZW1lbnQ2NCwgbWVtb3J5LT50eXBlKCkpOwog
ICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlByZUluZGV4LCBB
cmc6OlRtcCkgfHwgIW1faW5kZXgpCkBAIC0yNTkwLDExICsyNTkwLDE2IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBtX2Jsb2NrLT5hdChtX2luZGV4IC0gMSk7
CiAgICAgICAgICAgICAgICAgaWYgKGFkZHJlc3MtPm9wY29kZSgpICE9IEFkZCB8fCBhZGRyZXNz
LT50eXBlKCkgIT0gSW50NjQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgICAgICBpZiAoYWRkcmVzcy0+Y2hpbGQoMCkgIT0gbWVtb3J5LT5sYXN0Q2hpbGQo
KSB8fCAhYWRkcmVzcy0+Y2hpbGQoMSktPmhhc0ludFB0cigpKQorCisgICAgICAgICAgICAgICAg
VmFsdWUqIGJhc2UxID0gYWRkcmVzcy0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgVmFsdWUq
IGJhc2UyID0gbWVtb3J5LT5sYXN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAgICBpZiAoYmFzZTEg
IT0gYmFzZTIgfHwgIWFkZHJlc3MtPmNoaWxkKDEpLT5oYXNJbnRQdHIoKSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGludHB0cl90IG9mZnNldCA9
IGFkZHJlc3MtPmNoaWxkKDEpLT5hc0ludFB0cigpOwogICAgICAgICAgICAgICAgIFZhbHVlOjpP
ZmZzZXRUeXBlIHNtYWxsT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8VmFsdWU6Ok9mZnNldFR5cGU+KG9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNtYWxsT2Zmc2V0ICE9IG9mZnNldCB8fCAhQXJn
Ojppc1ZhbGlkUG9zdEluZGV4Rm9ybShzbWFsbE9mZnNldCkpCisgICAgICAgICAgICAgICAgaWYg
KHNtYWxsT2Zmc2V0ICE9IG9mZnNldCB8fCAhQXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3Jt
KHNtYWxsT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIGlmIChtX2xvY2tlZC5jb250YWlucyhhZGRyZXNzKSB8fCBtX2xvY2tlZC5jb250
YWlucyhiYXNlMSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICAgICAgICAgIEFyZyBpbmNyZW1lbnRBcmcgPSBBcmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFyZy5oCmluZGV4IGUxZjY0NjZmMDMyMmFiODI4MGJkNGViODhmNjFkOWZjOTQ3Zjdi
Y2IuLmZiZjY2MzdiMjg2MDcyOWQ1NDc4ZmYzY2RkMDQ1MzY4NWFiYTRjOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaApAQCAtMTI4MCwxNSArMTI4MCw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6Oklz
TGVnYWxPZmZzZXQ8SW50Pj4KLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkUHJlSW5kZXhGb3JtKElu
dCBvZmZzZXQpCi0gICAgewotICAgICAgICBpZiAoaXNBUk02NCgpKQotICAgICAgICAgICAgcmV0
dXJuIGlzVmFsaWRTaWduZWRJbW05KG9mZnNldCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVn
YWxPZmZzZXQ8SW50Pj4KLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkUG9zdEluZGV4Rm9ybShJbnQg
b2Zmc2V0KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRJbmNyZW1lbnRJbmRleEZvcm0oSW50IG9m
ZnNldCkKICAgICB7CiAgICAgICAgIGlmIChpc0FSTTY0KCkpCiAgICAgICAgICAgICByZXR1cm4g
aXNWYWxpZFNpZ25lZEltbTkob2Zmc2V0KTsKQEAgLTEzMjQsOSArMTMxNiw4IEBAIHB1YmxpYzoK
ICAgICAgICAgY2FzZSBJbmRleDoKICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkSW5kZXhGb3Jt
KHNjYWxlKCksIG9mZnNldCgpLCB3aWR0aCk7CiAgICAgICAgIGNhc2UgUHJlSW5kZXg6Ci0gICAg
ICAgICAgICByZXR1cm4gaXNWYWxpZFByZUluZGV4Rm9ybShvZmZzZXQoKSk7CiAgICAgICAgIGNh
c2UgUG9zdEluZGV4OgotICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRQb3N0SW5kZXhGb3JtKG9m
ZnNldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKG9m
ZnNldCgpKTsKICAgICAgICAgY2FzZSBSZWxDb25kOgogICAgICAgICBjYXNlIFJlc0NvbmQ6CiAg
ICAgICAgIGNhc2UgRG91YmxlQ29uZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvb3Bjb2RlX2dlbmVyYXRvci5yYgppbmRleCBmMWJmMWE0NmNmYzg4OWVjMTkzNDZmMmMwNmI3
Y2Y1MGY5ZTNkZTBkLi4wNTVjMDVhMGEzYzg5MDlkMTVlNTU1YTA0YmE5NDNjODYzNzMxNGZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3Iu
cmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJi
CkBAIC05MzAsMTAgKzkzMCwxMCBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAg
ICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZEluZGV4Rm9ybShhcmdz
WyN7aW5kZXh9XS5zY2FsZSgpLCBhcmdzWyN7aW5kZXh9XS5vZmZzZXQoKSwgI3thcmcud2lkdGhD
b2RlfSkpIgogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JFVFVSTihmYWxz
ZSk7IgogICAgICAgICAgICAgICAgIHdoZW4gIlByZUluZGV4IgotICAgICAgICAgICAgICAgICAg
ICBvdXRwLnB1dHMgImlmICghQXJnOjppc1ZhbGlkUHJlSW5kZXhGb3JtKGFyZ3NbI3tpbmRleH1d
Lm9mZnNldCgpKSkiCisgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKCFBcmc6Omlz
VmFsaWRJbmNyZW1lbnRJbmRleEZvcm0oYXJnc1sje2luZGV4fV0ub2Zmc2V0KCkpKSIKICAgICAg
ICAgICAgICAgICAgICAgb3V0cC5wdXRzICJPUEdFTl9SRVRVUk4oZmFsc2UpOyIKICAgICAgICAg
ICAgICAgICB3aGVuICJQb3N0SW5kZXgiCi0gICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAi
aWYgKCFBcmc6OmlzVmFsaWRQb3N0SW5kZXhGb3JtKGFyZ3NbI3tpbmRleH1dLm9mZnNldCgpKSki
CisgICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKCFBcmc6OmlzVmFsaWRJbmNyZW1l
bnRJbmRleEZvcm0oYXJnc1sje2luZGV4fV0ub2Zmc2V0KCkpKSIKICAgICAgICAgICAgICAgICAg
ICAgb3V0cC5wdXRzICJPUEdFTl9SRVRVUk4oZmFsc2UpOyIKICAgICAgICAgICAgICAgICB3aGVu
ICJCaWdJbW0iCiAgICAgICAgICAgICAgICAgd2hlbiAiUmVsQ29uZCIK
</data>
<flag name="commit-queue"
          id="457894"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435164</attachid>
            <date>2021-08-08 19:30:23 -0700</date>
            <delta_ts>2021-08-08 23:18:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228890-20210808213021.patch</filename>
            <type>text/plain</type>
            <size>16541</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZWE3ZTQyOGZhOTM2NGRlYzNiNDYwNTJhOTQxMDA0ZjA5MzUwMTRlLi4yNDVlNWI1NmNkNjYzYzcy
YjNkYzkyYWYyNjVjYTRlODljYzBiMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0wOC0wOCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0FSTTY0XSBDbGVhbiB1cCBhbmQgZml4IFByZS9Qb3N0LUluZGV4ZWQg
QWRkcmVzcyBNb2RlIHRvIEFpciBmb3IgQVJNNjQgKExvYWQgSW5zdHJ1Y3Rpb24pCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg4OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3IgdGhlIG1vZGlmaWNh
dGlvbnMgaW4gYjMvQjNHZW5lcmF0ZS5jcHAgYW5kIGIzL0IzQ2Fub25pY2FsaXplUHJlUG9zdElu
Y3JlbWVudHMuY3BwLCB3ZQorICAgICAgICBuZWVkIHRvIGNvbnZlcnQgcG9zdC1pbmRleCBjYW5k
aWRhdGVzIHRvIHRoZSBjYW5vbmljYWwgZm9ybS4gU28sIHRoZSBhZGRyZXNzIHZhbHVlIG5lZWRz
IHRvCisgICAgICAgIGJlIG1vdmVkIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgbG9hZC4gVGhpcyBp
cyBzdWJqZWN0IHRvIHRoZSBkb21pbmFuY2UgY29uc3RyYWludHMgdGhhdCBhZGQKKyAgICAgICAg
bXVzdCBiZSBjb250cm9sbGVkIGVxdWl2YWxlbnQgdG8gdGhlIGxvYWQuIFNvLCBzaW1pbGFybHks
IGlmIHdlIG5lZWQgdG8gbW92ZSB0aGUgb2Zmc2V0IHRvCisgICAgICAgIGp1c3QgYmVmb3JlIHRo
ZSBsb2FkLCB0aGUgZG9taW5hbmNlIGNvbnN0cmFpbnRzIG11c3QgYmUgc2F0aXNmaWVkLiBTaW5j
ZSBpdCBpcyBhIGNvbnN0YW50CisgICAgICAgIHZhbHVlLCBhIGJldHRlciBhcHByb2FjaCBpcyB0
byBhZGQgYSBuZXcgY29uc3RhbnQgdmFsdWUgYmVmb3JlIHRoZSBtZW1vcnkgdmFsdWUuIFRoZW4s
CisgICAgICAgIGVsaW1pbmF0ZSB0aGUgZGVhZCBjb2RlLgorCisgICAgICAgIFRoZXJlIGlzIGEg
YnVnIGluIGIzL0IzQ2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMuY3BwLiBUaGUgaW5zZXJ0
aW9uU2V0LmV4ZWN1dGUoQmFzaWNCbG9jaykKKyAgICAgICAgd2lsbCByZW9yZGVyIHZhbHVlIGlu
ZGV4ZXMgaW4gdGhlIGJhc2ljIGJsb2NrLiBTbywgd2Ugc2hvdWxkIHJlLXNlYXJjaCBmb3IgdGhl
IHZhbHVlIGluZGV4IGluCisgICAgICAgIHRoZSBibG9jayBldmVyeSB0aW1lIGFmdGVyIHRoZSBl
eGVjdXRpb24uCisKKyAgICAgICAgSW4gYjMvQjNMb3dlclRvQWlyLmNwcCwgd2UgbmVlZCBtX2xv
Y2tlZCBjaGVja3Mgb24gYWRkcmVzcyBhbmQgYmFzZSB2YWx1ZXMuIElmIHRoZXkgYXJlIGFscmVh
ZHkKKyAgICAgICAgbG9ja2VkLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNvbnZlcnQgdGhlIExvYWQg
aW5zdHJ1Y3Rpb24gdG8gdGhlIHByZS9wb3N0LWluY3JlbWVudCBmb3JtLgorCisgICAgICAgICog
YjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyk6CisgICAgICAgICogYjMvQjNHZW5lcmF0
ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpnZW5lcmF0ZVRvQWlyKToKKyAgICAgICAgKiBiMy9C
M0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkRm9ybSBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpB
aXI6OkFyZzo6aXNWYWxpZFByZUluZGV4Rm9ybSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpBaXI6OkFyZzo6aXNWYWxpZFBvc3RJbmRleEZvcm0pOiBEZWxldGVkLgorICAgICAgICAqIGIz
L2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiOgorCiAyMDIxLTA4LTA2ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4IG9uIERl
YnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYW5vbmlj
YWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
YW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHAKaW5kZXggYjM3NDMxZmFhYTdkMGM3MTRj
MzQxZjBmMTRhYjhmYjAxMjExZTI0MC4uODNmNzA5OTU1MGJmNzQ2ZTdkOWNkMmQ2ZDVmYTM1YzY4
ZTBhM2Y2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2Fub25pY2Fs
aXplUHJlUG9zdEluY3JlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzLmNwcApAQCAtNTAsMzggKzUwLDM3IEBAIGJv
b2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgIFBo
YXNlU2NvcGUgcGhhc2VTY29wZShwcm9jLCAiY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMi
KTsKICAgICB1c2luZyBBcmcgPSBBaXI6OkFyZzsKIAorICAgIHVuc2lnbmVkIGluZGV4IHsgMCB9
OwogICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQgeyBwcm9jIH07CiAgICAgQmxvY2tJbnNl
cnRpb25TZXQgYmxvY2tJbnNlcnRpb25TZXQgeyBwcm9jIH07Ci0gICAgdW5zaWduZWQgaW5kZXgg
eyAwIH07CiAKICAgICBEb21pbmF0b3JzJiBkb21pbmF0b3JzID0gcHJvYy5kb21pbmF0b3JzKCk7
CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYgYmFja3dhcmRzRG9taW5hdG9ycyA9IHByb2MuYmFj
a3dhcmRzRG9taW5hdG9ycygpOwogCi0gICAgSGFzaE1hcDxWYWx1ZUtleSwgVmVjdG9yPFZhbHVl
Kj4+IGJhc2VPZmZzZXRUb0FkZHJlc3NlczsKKyAgICBJbmRleFNldDxWYWx1ZSo+IGlnbm9yZWRW
YWx1ZXM7CiAgICAgSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4gcHJlSW5kZXhDYW5kaWRh
dGVzOwotICAgIEhhc2hNYXA8VmFsdWUqLCBWZWN0b3I8TWVtb3J5VmFsdWUqPj4gYmFzZVRvTWVt
b3JpZXM7CiAgICAgSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4gcG9zdEluZGV4Q2FuZGlk
YXRlczsKLSAgICBIYXNoTWFwPFZhbHVlKiwgdW5zaWduZWQ+IHZhbHVlVG9JbmRleDsKLSAgICBJ
bmRleFNldDxWYWx1ZSo+IGlnbm9yZWRWYWx1ZXM7CisgICAgSGFzaE1hcDxWYWx1ZSosIFZlY3Rv
cjxNZW1vcnlWYWx1ZSo+PiBiYXNlVG9NZW1vcmllczsKKyAgICBIYXNoTWFwPFZhbHVlS2V5LCBW
ZWN0b3I8VmFsdWUqPj4gYmFzZU9mZnNldFRvQWRkcmVzc2VzOwogCiAgICAgLy8gUHJlLUluZGV4
IFBhdHRlcm46CiAgICAgLy8gICAgIGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0KQotICAgIC8v
ICAgICAuLi4KKyAgICAvLyAgICAgKioqCiAgICAgLy8gICAgIG1lbW9yeSA9IExvYWQoYmFzZSwg
b2Zmc2V0KQogICAgIC8vIFBvc3QtSW5kZXggUGF0dGVybjoKICAgICAvLyAgICAgbWVtb3J5ID0g
TG9hZChiYXNlLCAwKQotICAgIC8vICAgICAuLi4KKyAgICAvLyAgICAgKioqCiAgICAgLy8gICAg
IGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0KQotICAgIGF1dG8gdHJ5UHJlUG9zdEluZGV4ID0g
WyZdIChWYWx1ZSogdmFsdWUpIHsKKyAgICBhdXRvIHRyeUFkZFByZVBvc3RJbmRleENhbmRpZGF0
ZSA9IFsmXSAoVmFsdWUqIHZhbHVlKSB7CiAgICAgICAgIHN3aXRjaCAodmFsdWUtPm9wY29kZSgp
KSB7CiAgICAgICAgIGNhc2UgTG9hZDogewogICAgICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9y
eSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKIAotICAgICAgICAgICAgYXV0byB0cnlQcmVQ
b3N0SW5kZXhNZW1vcnkgPSBbJl0gKCkgeworICAgICAgICAgICAgYXV0byB0cnlBZGRQcmVJbmRl
eENhbmRpZGF0ZXMgPSBbJl0gKCkgewogICAgICAgICAgICAgICAgIGlmIChtZW1vcnktPnR5cGUo
KSAhPSBJbnQzMiAmJiBtZW1vcnktPnR5cGUoKSAhPSBJbnQ2NCkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGlmIChtZW1vcnktPm9mZnNldCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghQXJnOjppc1ZhbGlkUHJlSW5kZXhGb3JtKG1lbW9yeS0+b2Zm
c2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIUFyZzo6aXNWYWxpZEluY3JlbWVudElu
ZGV4Rm9ybShtZW1vcnktPm9mZnNldCgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICAgICAgVmFsdWVLZXkgYmFzZU9mZnNldGtleSA9IFZhbHVlS2V5
KG1lbW9yeS0+Y2hpbGQoMCksIHN0YXRpY19jYXN0PGludDY0X3Q+KG1lbW9yeS0+b2Zmc2V0KCkp
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFiYXNlT2Zmc2V0VG9BZGRyZXNzZXMuY29udGFp
bnMoYmFzZU9mZnNldGtleSkpCkBAIC05MCwxMCArODksOSBAQCBib29sIGNhbm9uaWNhbGl6ZVBy
ZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgICAgICAgICAgICAg
IHByZUluZGV4Q2FuZGlkYXRlcy5hZGQobWVtb3J5LCBhZGRyZXNzKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgYmFzZVRvTWVtb3JpZXMuYWRkKG1lbW9yeS0+
Y2hpbGQoMCksIFZlY3RvcjxNZW1vcnlWYWx1ZSo+KCkpLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQo
bWVtb3J5KTsKLSAgICAgICAgICAgICAgICB2YWx1ZVRvSW5kZXguYWRkKHZhbHVlLCBpbmRleCk7
CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICB0cnlQcmVQb3N0SW5kZXhNZW1vcnkoKTsK
KyAgICAgICAgICAgIHRyeUFkZFByZUluZGV4Q2FuZGlkYXRlcygpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIApAQCAtMTAxLDI0ICs5OSwyMyBAQCBib29sIGNhbm9uaWNhbGl6ZVBy
ZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgIFZhbHVlKiBsZWZ0
ID0gdmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0gdmFsdWUtPmNo
aWxkKDEpOwogCi0gICAgICAgICAgICBhdXRvIHRyeVBvdGVudGlhbFBvc3RJbmRleEFkZHJlc3Mg
PSBbJl0gKCkgeworICAgICAgICAgICAgYXV0byB0cnlBZGRQb3N0SW5kZXhDYW5kaWRhdGVzID0g
WyZdICgpIHsKICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LT5oYXNJbnRQdHIoKSB8fCB2YWx1
ZS0+dHlwZSgpICE9IEludDY0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmlnaHQtPmFzSW50UHRyKCk7CiAgICAgICAgICAg
ICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgc21hbGxPZmZzZXQgPSBzdGF0aWNfY2FzdDxWYWx1ZTo6
T2Zmc2V0VHlwZT4ob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0g
b2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRQcmVJbmRleEZvcm0oc21hbGxPZmZzZXQpKQorICAgICAg
ICAgICAgICAgIGlmIChzbWFsbE9mZnNldCAhPSBvZmZzZXQgfHwgIUFyZzo6aXNWYWxpZEluY3Jl
bWVudEluZGV4Rm9ybShzbWFsbE9mZnNldCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICAvLyBzbyBmYXIgdGhpcyBBZGQgdmFsdWUgaXMgYSB2YWxpZCBhZGRy
ZXNzIGNhbmRpZGF0ZSBmb3IgYm90aCBwcmVmaXggYW5kIHBvc3RmaXggcGF0dGVybgogICAgICAg
ICAgICAgICAgIFZhbHVlS2V5IGJhc2VPZmZzZXRrZXkgPSBWYWx1ZUtleShsZWZ0LCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihzbWFsbE9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJhc2VPZmZzZXRU
b0FkZHJlc3Nlcy5hZGQoYmFzZU9mZnNldGtleSwgVmVjdG9yPFZhbHVlKj4oKSkuaXRlcmF0b3It
PnZhbHVlLmFwcGVuZCh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgdmFsdWVUb0luZGV4LmFkZCh2
YWx1ZSwgaW5kZXgpOwogICAgICAgICAgICAgICAgIGlmICghYmFzZVRvTWVtb3JpZXMuY29udGFp
bnMobGVmdCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBm
b3IgKE1lbW9yeVZhbHVlKiBtZW1vcnkgOiBiYXNlVG9NZW1vcmllcy5nZXQobGVmdCkpCiAgICAg
ICAgICAgICAgICAgICAgIHBvc3RJbmRleENhbmRpZGF0ZXMuYWRkKG1lbW9yeSwgdmFsdWUpOwog
ICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgdHJ5UG90ZW50aWFsUG9zdEluZGV4QWRkcmVz
cygpOworICAgICAgICAgICAgdHJ5QWRkUG9zdEluZGV4Q2FuZGlkYXRlcygpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTI4LDEwICsxMjUsOCBAQCBib29sIGNhbm9uaWNh
bGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICB9OwogCiAgICAgZm9y
IChCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrIDogcHJvYy5ibG9ja3NJblByZU9yZGVyKCkpIHsKLSAg
ICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYmFzaWNCbG9jay0+c2l6ZSgpOyArK2luZGV4
KSB7Ci0gICAgICAgICAgICBWYWx1ZSogdmFsdWUgPSBiYXNpY0Jsb2NrLT5hdChpbmRleCk7Ci0g
ICAgICAgICAgICB0cnlQcmVQb3N0SW5kZXgodmFsdWUpOwotICAgICAgICB9CisgICAgICAgIGZv
ciAoaW5kZXggPSAwOyBpbmRleCA8IGJhc2ljQmxvY2stPnNpemUoKTsgKytpbmRleCkKKyAgICAg
ICAgICAgIHRyeUFkZFByZVBvc3RJbmRleENhbmRpZGF0ZShiYXNpY0Jsb2NrLT5hdChpbmRleCkp
OwogICAgIH0KIAogICAgIGF1dG8gY29udHJvbEVxdWl2YWxlbnQgPSBbJl0gKFZhbHVlKiB2MSwg
VmFsdWUqIHYyKSAtPiBib29sIHsKQEAgLTEzOSwzMyArMTM0LDQyIEBAIGJvb2wgY2Fub25pY2Fs
aXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICAgICAgfHwgKGRv
bWluYXRvcnMuZG9taW5hdGVzKHYyLT5vd25lciwgdjEtPm93bmVyKSAmJiBiYWNrd2FyZHNEb21p
bmF0b3JzLmRvbWluYXRlcyh2MS0+b3duZXIsIHYyLT5vd25lcikpOwogICAgIH07CiAKLSAgICBh
dXRvIGRldGVjdCA9IFsmXSAoSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4gY2FuZGlkYXRl
cykgewotICAgICAgICBmb3IgKGF1dG8gaXRyID0gY2FuZGlkYXRlcy5iZWdpbigpOyBpdHIgIT0g
Y2FuZGlkYXRlcy5lbmQoKTsgKytpdHIpIHsKLSAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1v
cnkgPSBpdHItPmtleTsKLSAgICAgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gaXRyLT52YWx1ZTsK
KyAgICBhdXRvIHZhbHVlSW5kZXhJbkJhc2ljQmxvY2sgPSBbJl0gKFZhbHVlKiB2YWx1ZSkgLT4g
dW5zaWduZWQgeworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgIEJhc2ljQmxv
Y2sqIGJsb2NrID0gdmFsdWUtPm93bmVyOworICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXgg
PCBibG9jay0+c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoYmxvY2stPmF0KGlu
ZGV4KSA9PSB2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH07CisKKyAgICBhdXRvIGRldGVjdCA9IFsmXSAo
Y29uc3QgSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4mIGNhbmRpZGF0ZXMsIGJvb2wgaXNQ
cmVJbmRleENhbmRpZGF0ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBjYW5kaWRhdGVz
KSB7CisgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gcGFpci5rZXk7CisgICAgICAg
ICAgICBWYWx1ZSogYWRkcmVzcyA9IHBhaXIudmFsdWU7CiAgICAgICAgICAgICBpZiAoaWdub3Jl
ZFZhbHVlcy5jb250YWlucyhtZW1vcnkpIHx8IGlnbm9yZWRWYWx1ZXMuY29udGFpbnMoYWRkcmVz
cykgfHwgIWNvbnRyb2xFcXVpdmFsZW50KG1lbW9yeSwgYWRkcmVzcykpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzID09IHByZUluZGV4Q2Fu
ZGlkYXRlcykgeworICAgICAgICAgICAgaWYgKGlzUHJlSW5kZXhDYW5kaWRhdGVzKSB7CiAgICAg
ICAgICAgICAgICAgLy8gYWRkcmVzcyA9IEFkZChiYXNlLCBvZmZzZXQpICAgICAgIGFkZHJlc3Mg
PSBBZGQoYmFzZSwgb2Zmc2V0KQotICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLS0+ICBuZXdNZW1vcnkgPSBMb2FkKGJhc2UsIG9mZnNldCkKLSAgICAgICAg
ICAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAg
ICAgICAgICAgLy8gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4gIG5ld01lbW9yeSA9
IExvYWQoYmFzZSwgb2Zmc2V0KQorICAgICAgICAgICAgICAgIC8vICoqKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqKioKICAgICAgICAgICAgICAgICAvLyBtZW1vcnkgPSBMb2FkKGJh
c2UsIG9mZnNldCkgICAgICAgbWVtb3J5ID0gSWRlbnRpdHkobmV3TWVtb3J5KQotICAgICAgICAg
ICAgICAgIE1lbW9yeVZhbHVlKiBuZXdNZW1vcnkgPSBpbnNlcnRpb25TZXQuaW5zZXJ0PE1lbW9y
eVZhbHVlPih2YWx1ZVRvSW5kZXguZ2V0KGFkZHJlc3MpICsgMSwgTG9hZCwgbWVtb3J5LT50eXBl
KCksIGFkZHJlc3MtPm9yaWdpbigpLCBtZW1vcnktPmxhc3RDaGlsZCgpKTsKKyAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnNlcnRpb25JbmRleCA9IHZhbHVlSW5kZXhJbkJhc2ljQmxvY2soYWRk
cmVzcykgKyAxOworICAgICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBuZXdNZW1vcnkgPSBpbnNl
cnRpb25TZXQuaW5zZXJ0PE1lbW9yeVZhbHVlPihpbnNlcnRpb25JbmRleCwgTG9hZCwgbWVtb3J5
LT50eXBlKCksIGFkZHJlc3MtPm9yaWdpbigpLCBtZW1vcnktPmxhc3RDaGlsZCgpKTsKICAgICAg
ICAgICAgICAgICBuZXdNZW1vcnktPnNldE9mZnNldChtZW1vcnktPm9mZnNldCgpKTsKICAgICAg
ICAgICAgICAgICBtZW1vcnktPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3TWVtb3J5KTsKICAgICAg
ICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShhZGRyZXNzLT5vd25lcik7CiAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdPZmZzZXQgPSBDb25zdGFudAotICAgICAgICAgICAgICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdBZGRyZXNzID0gQWRkKGJhc2UsIG5ld09m
ZnNldCkKKyAgICAgICAgICAgICAgICAvLyAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3T2Zmc2V0ID0gQ29uc3RhbnQKKyAgICAgICAgICAgICAgICAvLyAqKiogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3QWRkcmVzcyA9IEFkZChiYXNlLCBuZXdPZmZzZXQpCiAg
ICAgICAgICAgICAgICAgLy8gbWVtb3J5ID0gTG9hZChiYXNlLCAwKSAgICAgICAgICAgIG1lbW9y
eSA9IExvYWQoYmFzZSwgMCkKLSAgICAgICAgICAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAg
ICAgICAgICAgIC0tPiAgLi4uCi0gICAgICAgICAgICAgICAgLy8gb2Zmc2V0ID0gQ29uc3RhbnQg
ICAgICAgICAgICAgICAgIG9mZnNldCA9IElkZW50aXR5KG5ld09mZnNldCkKKyAgICAgICAgICAg
ICAgICAvLyAqKiogICAgICAgICAgICAgICAgICAgICAgICAgIC0tPiAgKioqCiAgICAgICAgICAg
ICAgICAgLy8gYWRkcmVzcyA9IEFkZChiYXNlLCBvZmZzZXQpICAgICAgIGFkZHJlc3MgPSBJZGVu
dGl0eShuZXdBZGRyZXNzKQotICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lbW9yeUluZGV4ID0g
dmFsdWVUb0luZGV4LmdldChtZW1vcnkpOwotICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdPZmZz
ZXQgPSBpbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0NjRWYWx1ZT4obWVtb3J5SW5kZXgsIG1lbW9y
eS0+b3JpZ2luKCksIGFkZHJlc3MtPmNoaWxkKDEpLT5hc0ludCgpKTsKLSAgICAgICAgICAgICAg
ICBWYWx1ZSogbmV3QWRkcmVzcyA9IGluc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+KG1lbW9yeUlu
ZGV4LCBBZGQsIG1lbW9yeS0+b3JpZ2luKCksIGFkZHJlc3MtPmNoaWxkKDApLCBuZXdPZmZzZXQp
OwotICAgICAgICAgICAgICAgIGFkZHJlc3MtPmNoaWxkKDEpLT5yZXBsYWNlV2l0aElkZW50aXR5
KG5ld09mZnNldCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5zZXJ0aW9uSW5kZXggPSB2
YWx1ZUluZGV4SW5CYXNpY0Jsb2NrKG1lbW9yeSk7CisgICAgICAgICAgICAgICAgVmFsdWUqIG5l
d09mZnNldCA9IGluc2VydGlvblNldC5pbnNlcnQ8Q29uc3Q2NFZhbHVlPihpbnNlcnRpb25JbmRl
eCwgbWVtb3J5LT5vcmlnaW4oKSwgYWRkcmVzcy0+Y2hpbGQoMSktPmFzSW50KCkpOworICAgICAg
ICAgICAgICAgIFZhbHVlKiBuZXdBZGRyZXNzID0gaW5zZXJ0aW9uU2V0Lmluc2VydDxWYWx1ZT4o
aW5zZXJ0aW9uSW5kZXgsIEFkZCwgbWVtb3J5LT5vcmlnaW4oKSwgYWRkcmVzcy0+Y2hpbGQoMCks
IG5ld09mZnNldCk7CiAgICAgICAgICAgICAgICAgYWRkcmVzcy0+cmVwbGFjZVdpdGhJZGVudGl0
eShuZXdBZGRyZXNzKTsKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShtZW1v
cnktPm93bmVyKTsKICAgICAgICAgICAgIH0KQEAgLTE3NSw4ICsxNzksOCBAQCBib29sIGNhbm9u
aWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgfQogICAg
IH07CiAKLSAgICBkZXRlY3QocHJlSW5kZXhDYW5kaWRhdGVzKTsKLSAgICBkZXRlY3QocG9zdElu
ZGV4Q2FuZGlkYXRlcyk7CisgICAgZGV0ZWN0KHByZUluZGV4Q2FuZGlkYXRlcywgdHJ1ZSk7Cisg
ICAgZGV0ZWN0KHBvc3RJbmRleENhbmRpZGF0ZXMsIGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCmluZGV4IDgzNmZhMzEx
YzM2YjM4ZmQ2ZDk3Y2ZmN2ViNTE1ODAyNTdiZDMwNWYuLjY2MmYzMjM4MDVjY2Y3MzY3OGRkZTZm
MTM5MzdkY2VlZDM3ZTQwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0dlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmF0ZS5j
cHAKQEAgLTExOCwxMCArMTE4LDkgQEAgdm9pZCBnZW5lcmF0ZVRvQWlyKFByb2NlZHVyZSYgcHJv
Y2VkdXJlKQogICAgIGxvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zKHByb2NlZHVyZSk7CiAg
ICAgbGVnYWxpemVNZW1vcnlPZmZzZXRzKHByb2NlZHVyZSk7CiAgICAgbW92ZUNvbnN0YW50cyhw
cm9jZWR1cmUpOwotICAgIGVsaW1pbmF0ZURlYWRDb2RlKHByb2NlZHVyZSk7Ci0KICAgICBpZiAo
cHJvY2VkdXJlLm9wdExldmVsKCkgPj0gMikKICAgICAgICAgY2Fub25pY2FsaXplUHJlUG9zdElu
Y3JlbWVudHMocHJvY2VkdXJlKTsKKyAgICBlbGltaW5hdGVEZWFkQ29kZShwcm9jZWR1cmUpOwog
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBydW4gcHVyZUNTRSBoZXJlIHRvIGNsZWFuIHVwIHNv
bWUgcGxhdGZvcm0gc3BlY2lmaWMgY2hhbmdlcyBmcm9tIHRoZSBwcmV2aW91cyBwaGFzZXMuCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDg3MwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCAzNTM1YmIxM2JjMTNh
Y2IyYzQ3Y2M3ZGUzMDEzNmZmZDM3MjhmZDVkLi5jMzkzMDYzMDFiYmJjMGM5ZTQ0NTVhNDBmZDAw
YWM1N2ZiY2EzMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNw
cApAQCAtMjU3OCwxMSArMjU3OCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAvLyBQcmUtSW5kZXggQ2Fub25pY2FsIEZvcm06Ci0gICAgICAgICAgICAvLyAgICAg
YWRkcmVzcyA9IGFkZChiYXNlLCBvZmZzZXQpCi0gICAgICAgICAgICAvLyAgICAgbWVtb3J5ID0g
bG9hZChiYXNlLCBvZmZzZXQpCisgICAgICAgICAgICAvLyAgICAgYWRkcmVzcyA9IEFkZChiYXNl
LCBvZmZzZXQpICAgIC0tLT4gICBNb3ZlICViYXNlICVhZGRyZXNzCisgICAgICAgICAgICAvLyAg
ICAgbWVtb3J5ID0gTG9hZChiYXNlLCBvZmZzZXQpICAgICAgICAgICBNb3ZlV2l0aEluY3JlbWVu
dCAoJWFkZHJlc3MsIHByZWZpeChvZmZzZXQpKSAlbWVtb3J5CiAgICAgICAgICAgICAvLyBQb3N0
LUluZGV4IENhbm9uaWNhbCBGb3JtOgotICAgICAgICAgICAgLy8gICAgIG1lbW9yeSA9IGxvYWQo
YmFzZSwgMCkKLSAgICAgICAgICAgIC8vICAgICBhZGRyZXNzID0gYWRkKGJhc2UsIG9mZnNldCkK
KyAgICAgICAgICAgIC8vICAgICBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkgICAgLS0tPiAg
IE1vdmUgJWJhc2UgJWFkZHJlc3MKKyAgICAgICAgICAgIC8vICAgICBtZW1vcnkgPSBMb2FkKGJh
c2UsIDApICAgICAgICAgICAgICAgIE1vdmVXaXRoSW5jcmVtZW50ICglYWRkcmVzcywgcG9zdGZp
eChvZmZzZXQpKSAlbWVtb3J5CiAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZEluY3JlbWVudEFk
ZHJlc3MgPSBbJl0gKCkgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNb3ZlV2l0aEluY3JlbWVudDMyLCBNb3ZlV2l0aEluY3Jl
bWVudDY0LCBtZW1vcnktPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRm9y
bShvcGNvZGUsIEFyZzo6UHJlSW5kZXgsIEFyZzo6VG1wKSB8fCAhbV9pbmRleCkKQEAgLTI1OTAs
MTEgKzI1OTAsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBWYWx1ZSogYWRkcmVzcyA9
IG1fYmxvY2stPmF0KG1faW5kZXggLSAxKTsKICAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcy0+
b3Bjb2RlKCkgIT0gQWRkIHx8IGFkZHJlc3MtPnR5cGUoKSAhPSBJbnQ2NCkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzLT5jaGls
ZCgwKSAhPSBtZW1vcnktPmxhc3RDaGlsZCgpIHx8ICFhZGRyZXNzLT5jaGlsZCgxKS0+aGFzSW50
UHRyKCkpCisKKyAgICAgICAgICAgICAgICBWYWx1ZSogYmFzZTEgPSBhZGRyZXNzLT5jaGlsZCgw
KTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogYmFzZTIgPSBtZW1vcnktPmxhc3RDaGlsZCgpOwor
ICAgICAgICAgICAgICAgIGlmIChiYXNlMSAhPSBiYXNlMiB8fCAhYWRkcmVzcy0+Y2hpbGQoMSkt
Pmhhc0ludFB0cigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gYWRkcmVzcy0+Y2hpbGQoMSktPmFzSW50UHRyKCk7
CiAgICAgICAgICAgICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgc21hbGxPZmZzZXQgPSBzdGF0aWNf
Y2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4ob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoc21h
bGxPZmZzZXQgIT0gb2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRQb3N0SW5kZXhGb3JtKHNtYWxsT2Zm
c2V0KSkKKyAgICAgICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0gb2Zmc2V0IHx8ICFBcmc6
OmlzVmFsaWRJbmNyZW1lbnRJbmRleEZvcm0oc21hbGxPZmZzZXQpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2VkLmNvbnRhaW5z
KGFkZHJlc3MpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKGJhc2UxKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICAgICAgQXJnIGluY3JlbWVudEFyZyA9IEFy
ZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggZTFmNjQ2NmYwMzIy
YWI4MjgwYmQ0ZWI4OGY2MWQ5ZmM5NDdmN2JjYi4uZmJmNjYzN2IyODYwNzI5ZDU0NzhmZjNjZGQw
NDUzNjg1YWJhNGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC0x
MjgwLDE1ICsxMjgwLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgotICAgIHN0YXRpYyBi
b29sIGlzVmFsaWRQcmVJbmRleEZvcm0oSW50IG9mZnNldCkKLSAgICB7Ci0gICAgICAgIGlmIChp
c0FSTTY0KCkpCi0gICAgICAgICAgICByZXR1cm4gaXNWYWxpZFNpZ25lZEltbTkob2Zmc2V0KTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIElu
dCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgotICAgIHN0YXRpYyBib29s
IGlzVmFsaWRQb3N0SW5kZXhGb3JtKEludCBvZmZzZXQpCisgICAgc3RhdGljIGJvb2wgaXNWYWxp
ZEluY3JlbWVudEluZGV4Rm9ybShJbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgaWYgKGlzQVJN
NjQoKSkKICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkU2lnbmVkSW1tOShvZmZzZXQpOwpAQCAt
MTMyNCw5ICsxMzE2LDggQEAgcHVibGljOgogICAgICAgICBjYXNlIEluZGV4OgogICAgICAgICAg
ICAgcmV0dXJuIGlzVmFsaWRJbmRleEZvcm0oc2NhbGUoKSwgb2Zmc2V0KCksIHdpZHRoKTsKICAg
ICAgICAgY2FzZSBQcmVJbmRleDoKLSAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkUHJlSW5kZXhG
b3JtKG9mZnNldCgpKTsKICAgICAgICAgY2FzZSBQb3N0SW5kZXg6Ci0gICAgICAgICAgICByZXR1
cm4gaXNWYWxpZFBvc3RJbmRleEZvcm0ob2Zmc2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGlz
VmFsaWRJbmNyZW1lbnRJbmRleEZvcm0ob2Zmc2V0KCkpOwogICAgICAgICBjYXNlIFJlbENvbmQ6
CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25kOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiCmluZGV4IGYx
YmYxYTQ2Y2ZjODg5ZWMxOTM0NmYyYzA2YjdjZjUwZjllM2RlMGQuLjA1NWMwNWEwYTNjODkwOWQx
NWU1NTVhMDRiYTk0M2M4NjM3MzE0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIKQEAgLTkzMCwxMCArOTMwLDEwIEBAIHdyaXRlSCgi
T3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgImlmICgh
QXJnOjppc1ZhbGlkSW5kZXhGb3JtKGFyZ3NbI3tpbmRleH1dLnNjYWxlKCksIGFyZ3NbI3tpbmRl
eH1dLm9mZnNldCgpLCAje2FyZy53aWR0aENvZGV9KSkiCiAgICAgICAgICAgICAgICAgICAgIG91
dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAgd2hlbiAiUHJl
SW5kZXgiCi0gICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKCFBcmc6OmlzVmFsaWRQ
cmVJbmRleEZvcm0oYXJnc1sje2luZGV4fV0ub2Zmc2V0KCkpKSIKKyAgICAgICAgICAgICAgICAg
ICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShhcmdzWyN7
aW5kZXh9XS5vZmZzZXQoKSkpIgogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIk9QR0VO
X1JFVFVSTihmYWxzZSk7IgogICAgICAgICAgICAgICAgIHdoZW4gIlBvc3RJbmRleCIKLSAgICAg
ICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZFBvc3RJbmRleEZvcm0o
YXJnc1sje2luZGV4fV0ub2Zmc2V0KCkpKSIKKyAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRz
ICJpZiAoIUFyZzo6aXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShhcmdzWyN7aW5kZXh9XS5vZmZz
ZXQoKSkpIgogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JFVFVSTihmYWxz
ZSk7IgogICAgICAgICAgICAgICAgIHdoZW4gIkJpZ0ltbSIKICAgICAgICAgICAgICAgICB3aGVu
ICJSZWxDb25kIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435168</attachid>
            <date>2021-08-08 23:18:04 -0700</date>
            <delta_ts>2021-08-10 00:22:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228890-20210809011803.patch</filename>
            <type>text/plain</type>
            <size>16664</size>
            <attacher name="Yijia Huang">yijia_huang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZWE3ZTQyOGZhOTM2NGRlYzNiNDYwNTJhOTQxMDA0ZjA5MzUwMTRlLi4xY2E1YmNlOWI4MjE4YTVi
NTkwMDM1ZjUwY2VkN2Y3YjlmNTRmMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMS0wOC0wOCAgWWlqaWEgSHVhbmcgIDx5aWppYV9odWFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgW0FSTTY0XSBDbGVhbiB1cCBhbmQgZml4IFByZS9Qb3N0LUluZGV4ZWQg
QWRkcmVzcyBNb2RlIHRvIEFpciBmb3IgQVJNNjQgKExvYWQgSW5zdHJ1Y3Rpb24pCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg4OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNsZWFu
cyB1cCBhbmQgZG9lcyBtaW5vciBmaXggdG8gdGhlIHByZXZpb3VzIHBhdGNoIChodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MDQ3KS4KKworICAgICAgICBGb3IgdGhl
IG1vZGlmaWNhdGlvbnMgaW4gYjMvQjNHZW5lcmF0ZS5jcHAgYW5kIGIzL0IzQ2Fub25pY2FsaXpl
UHJlUG9zdEluY3JlbWVudHMuY3BwLCB3ZQorICAgICAgICBuZWVkIHRvIGNvbnZlcnQgcG9zdC1p
bmRleCBjYW5kaWRhdGVzIHRvIHRoZSBjYW5vbmljYWwgZm9ybS4gU28sIHRoZSBhZGRyZXNzIHZh
bHVlIG5lZWRzIHRvCisgICAgICAgIGJlIG1vdmVkIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgbG9h
ZC4gVGhpcyBpcyBzdWJqZWN0IHRvIHRoZSBkb21pbmFuY2UgY29uc3RyYWludHMgdGhhdCBhZGQK
KyAgICAgICAgbXVzdCBiZSBjb250cm9sbGVkIGVxdWl2YWxlbnQgdG8gdGhlIGxvYWQuIFNvLCBz
aW1pbGFybHksIGlmIHdlIG5lZWQgdG8gbW92ZSB0aGUgb2Zmc2V0IHRvCisgICAgICAgIGp1c3Qg
YmVmb3JlIHRoZSBsb2FkLCB0aGUgZG9taW5hbmNlIGNvbnN0cmFpbnRzIG11c3QgYmUgc2F0aXNm
aWVkLiBTaW5jZSBpdCBpcyBhIGNvbnN0YW50CisgICAgICAgIHZhbHVlLCBhIGJldHRlciBhcHBy
b2FjaCBpcyB0byBhZGQgYSBuZXcgY29uc3RhbnQgdmFsdWUgYmVmb3JlIHRoZSBtZW1vcnkgdmFs
dWUuIFRoZW4sCisgICAgICAgIGVsaW1pbmF0ZSB0aGUgZGVhZCBjb2RlLgorCisgICAgICAgIFRo
ZXJlIGlzIGEgYnVnIGluIGIzL0IzQ2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMuY3BwLiBU
aGUgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoQmFzaWNCbG9jaykKKyAgICAgICAgd2lsbCByZW9yZGVy
IHZhbHVlIGluZGV4ZXMgaW4gdGhlIGJhc2ljIGJsb2NrLiBTbywgd2Ugc2hvdWxkIHJlLXNlYXJj
aCBmb3IgdGhlIHZhbHVlIGluZGV4IGluCisgICAgICAgIHRoZSBibG9jayBldmVyeSB0aW1lIGFm
dGVyIHRoZSBleGVjdXRpb24uCisKKyAgICAgICAgSW4gYjMvQjNMb3dlclRvQWlyLmNwcCwgd2Ug
bmVlZCBtX2xvY2tlZCBjaGVja3Mgb24gYWRkcmVzcyBhbmQgYmFzZSB2YWx1ZXMuIElmIHRoZXkg
YXJlIGFscmVhZHkKKyAgICAgICAgbG9ja2VkLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNvbnZlcnQg
dGhlIExvYWQgaW5zdHJ1Y3Rpb24gdG8gdGhlIHByZS9wb3N0LWluY3JlbWVudCBmb3JtLgorCisg
ICAgICAgICogYjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpjYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cyk6CisgICAgICAgICogYjMv
QjNHZW5lcmF0ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpnZW5lcmF0ZVRvQWlyKToKKyAgICAg
ICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkSW5jcmVtZW50SW5kZXhGb3JtKToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1ZhbGlkRm9ybSBjb25zdCk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZFByZUluZGV4Rm9ybSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpBaXI6OkFyZzo6aXNWYWxpZFBvc3RJbmRleEZvcm0pOiBEZWxldGVkLgorICAg
ICAgICAqIGIzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJiOgorCiAyMDIxLTA4LTA2ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQg
Zml4IG9uIERlYnVnIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDYW5vbmljYWxpemVQcmVQb3N0SW5jcmVtZW50cy5jcHAKaW5kZXggYjM3NDMxZmFh
YTdkMGM3MTRjMzQxZjBmMTRhYjhmYjAxMjExZTI0MC4uODNmNzA5OTU1MGJmNzQ2ZTdkOWNkMmQ2
ZDVmYTM1YzY4ZTBhM2Y2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0Nhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzLmNwcApAQCAtNTAsMzggKzUw
LDM3IEBAIGJvb2wgY2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9j
KQogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShwcm9jLCAiY2Fub25pY2FsaXplUHJlUG9zdElu
Y3JlbWVudHMiKTsKICAgICB1c2luZyBBcmcgPSBBaXI6OkFyZzsKIAorICAgIHVuc2lnbmVkIGlu
ZGV4IHsgMCB9OwogICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQgeyBwcm9jIH07CiAgICAg
QmxvY2tJbnNlcnRpb25TZXQgYmxvY2tJbnNlcnRpb25TZXQgeyBwcm9jIH07Ci0gICAgdW5zaWdu
ZWQgaW5kZXggeyAwIH07CiAKICAgICBEb21pbmF0b3JzJiBkb21pbmF0b3JzID0gcHJvYy5kb21p
bmF0b3JzKCk7CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYgYmFja3dhcmRzRG9taW5hdG9ycyA9
IHByb2MuYmFja3dhcmRzRG9taW5hdG9ycygpOwogCi0gICAgSGFzaE1hcDxWYWx1ZUtleSwgVmVj
dG9yPFZhbHVlKj4+IGJhc2VPZmZzZXRUb0FkZHJlc3NlczsKKyAgICBJbmRleFNldDxWYWx1ZSo+
IGlnbm9yZWRWYWx1ZXM7CiAgICAgSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4gcHJlSW5k
ZXhDYW5kaWRhdGVzOwotICAgIEhhc2hNYXA8VmFsdWUqLCBWZWN0b3I8TWVtb3J5VmFsdWUqPj4g
YmFzZVRvTWVtb3JpZXM7CiAgICAgSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4gcG9zdElu
ZGV4Q2FuZGlkYXRlczsKLSAgICBIYXNoTWFwPFZhbHVlKiwgdW5zaWduZWQ+IHZhbHVlVG9JbmRl
eDsKLSAgICBJbmRleFNldDxWYWx1ZSo+IGlnbm9yZWRWYWx1ZXM7CisgICAgSGFzaE1hcDxWYWx1
ZSosIFZlY3RvcjxNZW1vcnlWYWx1ZSo+PiBiYXNlVG9NZW1vcmllczsKKyAgICBIYXNoTWFwPFZh
bHVlS2V5LCBWZWN0b3I8VmFsdWUqPj4gYmFzZU9mZnNldFRvQWRkcmVzc2VzOwogCiAgICAgLy8g
UHJlLUluZGV4IFBhdHRlcm46CiAgICAgLy8gICAgIGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0
KQotICAgIC8vICAgICAuLi4KKyAgICAvLyAgICAgKioqCiAgICAgLy8gICAgIG1lbW9yeSA9IExv
YWQoYmFzZSwgb2Zmc2V0KQogICAgIC8vIFBvc3QtSW5kZXggUGF0dGVybjoKICAgICAvLyAgICAg
bWVtb3J5ID0gTG9hZChiYXNlLCAwKQotICAgIC8vICAgICAuLi4KKyAgICAvLyAgICAgKioqCiAg
ICAgLy8gICAgIGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0KQotICAgIGF1dG8gdHJ5UHJlUG9z
dEluZGV4ID0gWyZdIChWYWx1ZSogdmFsdWUpIHsKKyAgICBhdXRvIHRyeUFkZFByZVBvc3RJbmRl
eENhbmRpZGF0ZSA9IFsmXSAoVmFsdWUqIHZhbHVlKSB7CiAgICAgICAgIHN3aXRjaCAodmFsdWUt
Pm9wY29kZSgpKSB7CiAgICAgICAgIGNhc2UgTG9hZDogewogICAgICAgICAgICAgTWVtb3J5VmFs
dWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKIAotICAgICAgICAgICAgYXV0
byB0cnlQcmVQb3N0SW5kZXhNZW1vcnkgPSBbJl0gKCkgeworICAgICAgICAgICAgYXV0byB0cnlB
ZGRQcmVJbmRleENhbmRpZGF0ZXMgPSBbJl0gKCkgewogICAgICAgICAgICAgICAgIGlmIChtZW1v
cnktPnR5cGUoKSAhPSBJbnQzMiAmJiBtZW1vcnktPnR5cGUoKSAhPSBJbnQ2NCkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGlmIChtZW1vcnktPm9mZnNldCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghQXJnOjppc1ZhbGlkUHJlSW5kZXhGb3JtKG1l
bW9yeS0+b2Zmc2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIUFyZzo6aXNWYWxpZElu
Y3JlbWVudEluZGV4Rm9ybShtZW1vcnktPm9mZnNldCgpKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgVmFsdWVLZXkgYmFzZU9mZnNldGtleSA9
IFZhbHVlS2V5KG1lbW9yeS0+Y2hpbGQoMCksIHN0YXRpY19jYXN0PGludDY0X3Q+KG1lbW9yeS0+
b2Zmc2V0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFiYXNlT2Zmc2V0VG9BZGRyZXNz
ZXMuY29udGFpbnMoYmFzZU9mZnNldGtleSkpCkBAIC05MCwxMCArODksOSBAQCBib29sIGNhbm9u
aWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgICAg
ICAgICAgICAgIHByZUluZGV4Q2FuZGlkYXRlcy5hZGQobWVtb3J5LCBhZGRyZXNzKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgYmFzZVRvTWVtb3JpZXMuYWRk
KG1lbW9yeS0+Y2hpbGQoMCksIFZlY3RvcjxNZW1vcnlWYWx1ZSo+KCkpLml0ZXJhdG9yLT52YWx1
ZS5hcHBlbmQobWVtb3J5KTsKLSAgICAgICAgICAgICAgICB2YWx1ZVRvSW5kZXguYWRkKHZhbHVl
LCBpbmRleCk7CiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICB0cnlQcmVQb3N0SW5kZXhN
ZW1vcnkoKTsKKyAgICAgICAgICAgIHRyeUFkZFByZUluZGV4Q2FuZGlkYXRlcygpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTAxLDI0ICs5OSwyMyBAQCBib29sIGNhbm9u
aWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAgICAgICAgIFZh
bHVlKiBsZWZ0ID0gdmFsdWUtPmNoaWxkKDApOwogICAgICAgICAgICAgVmFsdWUqIHJpZ2h0ID0g
dmFsdWUtPmNoaWxkKDEpOwogCi0gICAgICAgICAgICBhdXRvIHRyeVBvdGVudGlhbFBvc3RJbmRl
eEFkZHJlc3MgPSBbJl0gKCkgeworICAgICAgICAgICAgYXV0byB0cnlBZGRQb3N0SW5kZXhDYW5k
aWRhdGVzID0gWyZdICgpIHsKICAgICAgICAgICAgICAgICBpZiAoIXJpZ2h0LT5oYXNJbnRQdHIo
KSB8fCB2YWx1ZS0+dHlwZSgpICE9IEludDY0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmlnaHQtPmFzSW50UHRyKCk7CiAg
ICAgICAgICAgICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgc21hbGxPZmZzZXQgPSBzdGF0aWNfY2Fz
dDxWYWx1ZTo6T2Zmc2V0VHlwZT4ob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoc21hbGxP
ZmZzZXQgIT0gb2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRQcmVJbmRleEZvcm0oc21hbGxPZmZzZXQp
KQorICAgICAgICAgICAgICAgIGlmIChzbWFsbE9mZnNldCAhPSBvZmZzZXQgfHwgIUFyZzo6aXNW
YWxpZEluY3JlbWVudEluZGV4Rm9ybShzbWFsbE9mZnNldCkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICAvLyBzbyBmYXIgdGhpcyBBZGQgdmFsdWUgaXMgYSB2
YWxpZCBhZGRyZXNzIGNhbmRpZGF0ZSBmb3IgYm90aCBwcmVmaXggYW5kIHBvc3RmaXggcGF0dGVy
bgogICAgICAgICAgICAgICAgIFZhbHVlS2V5IGJhc2VPZmZzZXRrZXkgPSBWYWx1ZUtleShsZWZ0
LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzbWFsbE9mZnNldCkpOwogICAgICAgICAgICAgICAgIGJh
c2VPZmZzZXRUb0FkZHJlc3Nlcy5hZGQoYmFzZU9mZnNldGtleSwgVmVjdG9yPFZhbHVlKj4oKSku
aXRlcmF0b3ItPnZhbHVlLmFwcGVuZCh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgdmFsdWVUb0lu
ZGV4LmFkZCh2YWx1ZSwgaW5kZXgpOwogICAgICAgICAgICAgICAgIGlmICghYmFzZVRvTWVtb3Jp
ZXMuY29udGFpbnMobGVmdCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICBmb3IgKE1lbW9yeVZhbHVlKiBtZW1vcnkgOiBiYXNlVG9NZW1vcmllcy5nZXQobGVm
dCkpCiAgICAgICAgICAgICAgICAgICAgIHBvc3RJbmRleENhbmRpZGF0ZXMuYWRkKG1lbW9yeSwg
dmFsdWUpOwogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgdHJ5UG90ZW50aWFsUG9zdElu
ZGV4QWRkcmVzcygpOworICAgICAgICAgICAgdHJ5QWRkUG9zdEluZGV4Q2FuZGlkYXRlcygpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTI4LDEwICsxMjUsOCBAQCBib29s
IGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICB9Owog
CiAgICAgZm9yIChCYXNpY0Jsb2NrKiBiYXNpY0Jsb2NrIDogcHJvYy5ibG9ja3NJblByZU9yZGVy
KCkpIHsKLSAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYmFzaWNCbG9jay0+c2l6ZSgp
OyArK2luZGV4KSB7Ci0gICAgICAgICAgICBWYWx1ZSogdmFsdWUgPSBiYXNpY0Jsb2NrLT5hdChp
bmRleCk7Ci0gICAgICAgICAgICB0cnlQcmVQb3N0SW5kZXgodmFsdWUpOwotICAgICAgICB9Cisg
ICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGJhc2ljQmxvY2stPnNpemUoKTsgKytpbmRl
eCkKKyAgICAgICAgICAgIHRyeUFkZFByZVBvc3RJbmRleENhbmRpZGF0ZShiYXNpY0Jsb2NrLT5h
dChpbmRleCkpOwogICAgIH0KIAogICAgIGF1dG8gY29udHJvbEVxdWl2YWxlbnQgPSBbJl0gKFZh
bHVlKiB2MSwgVmFsdWUqIHYyKSAtPiBib29sIHsKQEAgLTEzOSwzMyArMTM0LDQyIEBAIGJvb2wg
Y2Fub25pY2FsaXplUHJlUG9zdEluY3JlbWVudHMoUHJvY2VkdXJlJiBwcm9jKQogICAgICAgICAg
ICAgfHwgKGRvbWluYXRvcnMuZG9taW5hdGVzKHYyLT5vd25lciwgdjEtPm93bmVyKSAmJiBiYWNr
d2FyZHNEb21pbmF0b3JzLmRvbWluYXRlcyh2MS0+b3duZXIsIHYyLT5vd25lcikpOwogICAgIH07
CiAKLSAgICBhdXRvIGRldGVjdCA9IFsmXSAoSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4g
Y2FuZGlkYXRlcykgewotICAgICAgICBmb3IgKGF1dG8gaXRyID0gY2FuZGlkYXRlcy5iZWdpbigp
OyBpdHIgIT0gY2FuZGlkYXRlcy5lbmQoKTsgKytpdHIpIHsKLSAgICAgICAgICAgIE1lbW9yeVZh
bHVlKiBtZW1vcnkgPSBpdHItPmtleTsKLSAgICAgICAgICAgIFZhbHVlKiBhZGRyZXNzID0gaXRy
LT52YWx1ZTsKKyAgICBhdXRvIHZhbHVlSW5kZXhJbkJhc2ljQmxvY2sgPSBbJl0gKFZhbHVlKiB2
YWx1ZSkgLT4gdW5zaWduZWQgeworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAg
IEJhc2ljQmxvY2sqIGJsb2NrID0gdmFsdWUtPm93bmVyOworICAgICAgICBmb3IgKGluZGV4ID0g
MDsgaW5kZXggPCBibG9jay0+c2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoYmxv
Y2stPmF0KGluZGV4KSA9PSB2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH07CisKKyAgICBhdXRvIGRldGVj
dCA9IFsmXSAoY29uc3QgSGFzaE1hcDxNZW1vcnlWYWx1ZSosIFZhbHVlKj4mIGNhbmRpZGF0ZXMs
IGJvb2wgaXNQcmVJbmRleENhbmRpZGF0ZXMpIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBj
YW5kaWRhdGVzKSB7CisgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gcGFpci5rZXk7
CisgICAgICAgICAgICBWYWx1ZSogYWRkcmVzcyA9IHBhaXIudmFsdWU7CiAgICAgICAgICAgICBp
ZiAoaWdub3JlZFZhbHVlcy5jb250YWlucyhtZW1vcnkpIHx8IGlnbm9yZWRWYWx1ZXMuY29udGFp
bnMoYWRkcmVzcykgfHwgIWNvbnRyb2xFcXVpdmFsZW50KG1lbW9yeSwgYWRkcmVzcykpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGVzID09IHBy
ZUluZGV4Q2FuZGlkYXRlcykgeworICAgICAgICAgICAgaWYgKGlzUHJlSW5kZXhDYW5kaWRhdGVz
KSB7CiAgICAgICAgICAgICAgICAgLy8gYWRkcmVzcyA9IEFkZChiYXNlLCBvZmZzZXQpICAgICAg
IGFkZHJlc3MgPSBBZGQoYmFzZSwgb2Zmc2V0KQotICAgICAgICAgICAgICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLS0+ICBuZXdNZW1vcnkgPSBMb2FkKGJhc2UsIG9mZnNldCkK
LSAgICAgICAgICAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4u
CisgICAgICAgICAgICAgICAgLy8gKioqICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4gIG5l
d01lbW9yeSA9IExvYWQoYmFzZSwgb2Zmc2V0KQorICAgICAgICAgICAgICAgIC8vICoqKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKICAgICAgICAgICAgICAgICAvLyBtZW1vcnkg
PSBMb2FkKGJhc2UsIG9mZnNldCkgICAgICAgbWVtb3J5ID0gSWRlbnRpdHkobmV3TWVtb3J5KQot
ICAgICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBuZXdNZW1vcnkgPSBpbnNlcnRpb25TZXQuaW5z
ZXJ0PE1lbW9yeVZhbHVlPih2YWx1ZVRvSW5kZXguZ2V0KGFkZHJlc3MpICsgMSwgTG9hZCwgbWVt
b3J5LT50eXBlKCksIGFkZHJlc3MtPm9yaWdpbigpLCBtZW1vcnktPmxhc3RDaGlsZCgpKTsKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnNlcnRpb25JbmRleCA9IHZhbHVlSW5kZXhJbkJhc2lj
QmxvY2soYWRkcmVzcykgKyAxOworICAgICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBuZXdNZW1v
cnkgPSBpbnNlcnRpb25TZXQuaW5zZXJ0PE1lbW9yeVZhbHVlPihpbnNlcnRpb25JbmRleCwgTG9h
ZCwgbWVtb3J5LT50eXBlKCksIGFkZHJlc3MtPm9yaWdpbigpLCBtZW1vcnktPmxhc3RDaGlsZCgp
KTsKICAgICAgICAgICAgICAgICBuZXdNZW1vcnktPnNldE9mZnNldChtZW1vcnktPm9mZnNldCgp
KTsKICAgICAgICAgICAgICAgICBtZW1vcnktPnJlcGxhY2VXaXRoSWRlbnRpdHkobmV3TWVtb3J5
KTsKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShhZGRyZXNzLT5vd25lcik7
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuZXdPZmZzZXQgPSBDb25zdGFudAotICAgICAgICAgICAgICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdBZGRyZXNzID0gQWRkKGJh
c2UsIG5ld09mZnNldCkKKyAgICAgICAgICAgICAgICAvLyAqKiogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3T2Zmc2V0ID0gQ29uc3RhbnQKKyAgICAgICAgICAgICAgICAvLyAqKiog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3QWRkcmVzcyA9IEFkZChiYXNlLCBuZXdP
ZmZzZXQpCiAgICAgICAgICAgICAgICAgLy8gbWVtb3J5ID0gTG9hZChiYXNlLCAwKSAgICAgICAg
ICAgIG1lbW9yeSA9IExvYWQoYmFzZSwgMCkKLSAgICAgICAgICAgICAgICAvLyAuLi4gICAgICAg
ICAgICAgICAgICAgICAgICAgIC0tPiAgLi4uCi0gICAgICAgICAgICAgICAgLy8gb2Zmc2V0ID0g
Q29uc3RhbnQgICAgICAgICAgICAgICAgIG9mZnNldCA9IElkZW50aXR5KG5ld09mZnNldCkKKyAg
ICAgICAgICAgICAgICAvLyAqKiogICAgICAgICAgICAgICAgICAgICAgICAgIC0tPiAgKioqCiAg
ICAgICAgICAgICAgICAgLy8gYWRkcmVzcyA9IEFkZChiYXNlLCBvZmZzZXQpICAgICAgIGFkZHJl
c3MgPSBJZGVudGl0eShuZXdBZGRyZXNzKQotICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lbW9y
eUluZGV4ID0gdmFsdWVUb0luZGV4LmdldChtZW1vcnkpOwotICAgICAgICAgICAgICAgIFZhbHVl
KiBuZXdPZmZzZXQgPSBpbnNlcnRpb25TZXQuaW5zZXJ0PENvbnN0NjRWYWx1ZT4obWVtb3J5SW5k
ZXgsIG1lbW9yeS0+b3JpZ2luKCksIGFkZHJlc3MtPmNoaWxkKDEpLT5hc0ludCgpKTsKLSAgICAg
ICAgICAgICAgICBWYWx1ZSogbmV3QWRkcmVzcyA9IGluc2VydGlvblNldC5pbnNlcnQ8VmFsdWU+
KG1lbW9yeUluZGV4LCBBZGQsIG1lbW9yeS0+b3JpZ2luKCksIGFkZHJlc3MtPmNoaWxkKDApLCBu
ZXdPZmZzZXQpOwotICAgICAgICAgICAgICAgIGFkZHJlc3MtPmNoaWxkKDEpLT5yZXBsYWNlV2l0
aElkZW50aXR5KG5ld09mZnNldCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5zZXJ0aW9u
SW5kZXggPSB2YWx1ZUluZGV4SW5CYXNpY0Jsb2NrKG1lbW9yeSk7CisgICAgICAgICAgICAgICAg
VmFsdWUqIG5ld09mZnNldCA9IGluc2VydGlvblNldC5pbnNlcnQ8Q29uc3Q2NFZhbHVlPihpbnNl
cnRpb25JbmRleCwgbWVtb3J5LT5vcmlnaW4oKSwgYWRkcmVzcy0+Y2hpbGQoMSktPmFzSW50KCkp
OworICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdBZGRyZXNzID0gaW5zZXJ0aW9uU2V0Lmluc2Vy
dDxWYWx1ZT4oaW5zZXJ0aW9uSW5kZXgsIEFkZCwgbWVtb3J5LT5vcmlnaW4oKSwgYWRkcmVzcy0+
Y2hpbGQoMCksIG5ld09mZnNldCk7CiAgICAgICAgICAgICAgICAgYWRkcmVzcy0+cmVwbGFjZVdp
dGhJZGVudGl0eShuZXdBZGRyZXNzKTsKICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhl
Y3V0ZShtZW1vcnktPm93bmVyKTsKICAgICAgICAgICAgIH0KQEAgLTE3NSw4ICsxNzksOCBAQCBi
b29sIGNhbm9uaWNhbGl6ZVByZVBvc3RJbmNyZW1lbnRzKFByb2NlZHVyZSYgcHJvYykKICAgICAg
ICAgfQogICAgIH07CiAKLSAgICBkZXRlY3QocHJlSW5kZXhDYW5kaWRhdGVzKTsKLSAgICBkZXRl
Y3QocG9zdEluZGV4Q2FuZGlkYXRlcyk7CisgICAgZGV0ZWN0KHByZUluZGV4Q2FuZGlkYXRlcywg
dHJ1ZSk7CisgICAgZGV0ZWN0KHBvc3RJbmRleENhbmRpZGF0ZXMsIGZhbHNlKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2Vu
ZXJhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJhdGUuY3BwCmluZGV4
IDgzNmZhMzExYzM2YjM4ZmQ2ZDk3Y2ZmN2ViNTE1ODAyNTdiZDMwNWYuLjY2MmYzMjM4MDVjY2Y3
MzY3OGRkZTZmMTM5MzdkY2VlZDM3ZTQwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0dlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNH
ZW5lcmF0ZS5jcHAKQEAgLTExOCwxMCArMTE4LDkgQEAgdm9pZCBnZW5lcmF0ZVRvQWlyKFByb2Nl
ZHVyZSYgcHJvY2VkdXJlKQogICAgIGxvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zKHByb2Nl
ZHVyZSk7CiAgICAgbGVnYWxpemVNZW1vcnlPZmZzZXRzKHByb2NlZHVyZSk7CiAgICAgbW92ZUNv
bnN0YW50cyhwcm9jZWR1cmUpOwotICAgIGVsaW1pbmF0ZURlYWRDb2RlKHByb2NlZHVyZSk7Ci0K
ICAgICBpZiAocHJvY2VkdXJlLm9wdExldmVsKCkgPj0gMikKICAgICAgICAgY2Fub25pY2FsaXpl
UHJlUG9zdEluY3JlbWVudHMocHJvY2VkdXJlKTsKKyAgICBlbGltaW5hdGVEZWFkQ29kZShwcm9j
ZWR1cmUpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBydW4gcHVyZUNTRSBoZXJlIHRvIGNs
ZWFuIHVwIHNvbWUgcGxhdGZvcm0gc3BlY2lmaWMgY2hhbmdlcyBmcm9tIHRoZSBwcmV2aW91cyBw
aGFzZXMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NDg3MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCAzNTM1
YmIxM2JjMTNhY2IyYzQ3Y2M3ZGUzMDEzNmZmZDM3MjhmZDVkLi5jMzkzMDYzMDFiYmJjMGM5ZTQ0
NTVhNDBmZDAwYWM1N2ZiY2EzMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcApAQCAtMjU3OCwxMSArMjU3OCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAvLyBQcmUtSW5kZXggQ2Fub25pY2FsIEZvcm06Ci0gICAgICAgICAg
ICAvLyAgICAgYWRkcmVzcyA9IGFkZChiYXNlLCBvZmZzZXQpCi0gICAgICAgICAgICAvLyAgICAg
bWVtb3J5ID0gbG9hZChiYXNlLCBvZmZzZXQpCisgICAgICAgICAgICAvLyAgICAgYWRkcmVzcyA9
IEFkZChiYXNlLCBvZmZzZXQpICAgIC0tLT4gICBNb3ZlICViYXNlICVhZGRyZXNzCisgICAgICAg
ICAgICAvLyAgICAgbWVtb3J5ID0gTG9hZChiYXNlLCBvZmZzZXQpICAgICAgICAgICBNb3ZlV2l0
aEluY3JlbWVudCAoJWFkZHJlc3MsIHByZWZpeChvZmZzZXQpKSAlbWVtb3J5CiAgICAgICAgICAg
ICAvLyBQb3N0LUluZGV4IENhbm9uaWNhbCBGb3JtOgotICAgICAgICAgICAgLy8gICAgIG1lbW9y
eSA9IGxvYWQoYmFzZSwgMCkKLSAgICAgICAgICAgIC8vICAgICBhZGRyZXNzID0gYWRkKGJhc2Us
IG9mZnNldCkKKyAgICAgICAgICAgIC8vICAgICBhZGRyZXNzID0gQWRkKGJhc2UsIG9mZnNldCkg
ICAgLS0tPiAgIE1vdmUgJWJhc2UgJWFkZHJlc3MKKyAgICAgICAgICAgIC8vICAgICBtZW1vcnkg
PSBMb2FkKGJhc2UsIDApICAgICAgICAgICAgICAgIE1vdmVXaXRoSW5jcmVtZW50ICglYWRkcmVz
cywgcG9zdGZpeChvZmZzZXQpKSAlbWVtb3J5CiAgICAgICAgICAgICBhdXRvIHRyeUFwcGVuZElu
Y3JlbWVudEFkZHJlc3MgPSBbJl0gKCkgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgQWlyOjpP
cGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShNb3ZlV2l0aEluY3JlbWVudDMyLCBNb3Zl
V2l0aEluY3JlbWVudDY0LCBtZW1vcnktPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFp
c1ZhbGlkRm9ybShvcGNvZGUsIEFyZzo6UHJlSW5kZXgsIEFyZzo6VG1wKSB8fCAhbV9pbmRleCkK
QEAgLTI1OTAsMTEgKzI1OTAsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBWYWx1ZSog
YWRkcmVzcyA9IG1fYmxvY2stPmF0KG1faW5kZXggLSAxKTsKICAgICAgICAgICAgICAgICBpZiAo
YWRkcmVzcy0+b3Bjb2RlKCkgIT0gQWRkIHx8IGFkZHJlc3MtPnR5cGUoKSAhPSBJbnQ2NCkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChhZGRy
ZXNzLT5jaGlsZCgwKSAhPSBtZW1vcnktPmxhc3RDaGlsZCgpIHx8ICFhZGRyZXNzLT5jaGlsZCgx
KS0+aGFzSW50UHRyKCkpCisKKyAgICAgICAgICAgICAgICBWYWx1ZSogYmFzZTEgPSBhZGRyZXNz
LT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICBWYWx1ZSogYmFzZTIgPSBtZW1vcnktPmxhc3RD
aGlsZCgpOworICAgICAgICAgICAgICAgIGlmIChiYXNlMSAhPSBiYXNlMiB8fCAhYWRkcmVzcy0+
Y2hpbGQoMSktPmhhc0ludFB0cigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gYWRkcmVzcy0+Y2hpbGQoMSktPmFz
SW50UHRyKCk7CiAgICAgICAgICAgICAgICAgVmFsdWU6Ok9mZnNldFR5cGUgc21hbGxPZmZzZXQg
PSBzdGF0aWNfY2FzdDxWYWx1ZTo6T2Zmc2V0VHlwZT4ob2Zmc2V0KTsKLSAgICAgICAgICAgICAg
ICBpZiAoc21hbGxPZmZzZXQgIT0gb2Zmc2V0IHx8ICFBcmc6OmlzVmFsaWRQb3N0SW5kZXhGb3Jt
KHNtYWxsT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICBpZiAoc21hbGxPZmZzZXQgIT0gb2Zmc2V0
IHx8ICFBcmc6OmlzVmFsaWRJbmNyZW1lbnRJbmRleEZvcm0oc21hbGxPZmZzZXQpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG1fbG9ja2Vk
LmNvbnRhaW5zKGFkZHJlc3MpIHx8IG1fbG9ja2VkLmNvbnRhaW5zKGJhc2UxKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICAgICAgQXJnIGluY3JlbWVu
dEFyZyA9IEFyZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBcmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggZTFm
NjQ2NmYwMzIyYWI4MjgwYmQ0ZWI4OGY2MWQ5ZmM5NDdmN2JjYi4uZmJmNjYzN2IyODYwNzI5ZDU0
NzhmZjNjZGQwNDUzNjg1YWJhNGM5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFy
Zy5oCkBAIC0xMjgwLDE1ICsxMjgwLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgotICAg
IHN0YXRpYyBib29sIGlzVmFsaWRQcmVJbmRleEZvcm0oSW50IG9mZnNldCkKLSAgICB7Ci0gICAg
ICAgIGlmIChpc0FSTTY0KCkpCi0gICAgICAgICAgICByZXR1cm4gaXNWYWxpZFNpZ25lZEltbTko
b2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgotICAgIHN0
YXRpYyBib29sIGlzVmFsaWRQb3N0SW5kZXhGb3JtKEludCBvZmZzZXQpCisgICAgc3RhdGljIGJv
b2wgaXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShJbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAg
aWYgKGlzQVJNNjQoKSkKICAgICAgICAgICAgIHJldHVybiBpc1ZhbGlkU2lnbmVkSW1tOShvZmZz
ZXQpOwpAQCAtMTMyNCw5ICsxMzE2LDggQEAgcHVibGljOgogICAgICAgICBjYXNlIEluZGV4Ogog
ICAgICAgICAgICAgcmV0dXJuIGlzVmFsaWRJbmRleEZvcm0oc2NhbGUoKSwgb2Zmc2V0KCksIHdp
ZHRoKTsKICAgICAgICAgY2FzZSBQcmVJbmRleDoKLSAgICAgICAgICAgIHJldHVybiBpc1ZhbGlk
UHJlSW5kZXhGb3JtKG9mZnNldCgpKTsKICAgICAgICAgY2FzZSBQb3N0SW5kZXg6Ci0gICAgICAg
ICAgICByZXR1cm4gaXNWYWxpZFBvc3RJbmRleEZvcm0ob2Zmc2V0KCkpOworICAgICAgICAgICAg
cmV0dXJuIGlzVmFsaWRJbmNyZW1lbnRJbmRleEZvcm0ob2Zmc2V0KCkpOwogICAgICAgICBjYXNl
IFJlbENvbmQ6CiAgICAgICAgIGNhc2UgUmVzQ29uZDoKICAgICAgICAgY2FzZSBEb3VibGVDb25k
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJh
dG9yLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJhdG9yLnJi
CmluZGV4IGYxYmYxYTQ2Y2ZjODg5ZWMxOTM0NmYyYzA2YjdjZjUwZjllM2RlMGQuLjA1NWMwNWEw
YTNjODkwOWQxNWU1NTVhMDRiYTk0M2M4NjM3MzE0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIKQEAgLTkzMCwxMCArOTMwLDEwIEBA
IHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1
dHMgImlmICghQXJnOjppc1ZhbGlkSW5kZXhGb3JtKGFyZ3NbI3tpbmRleH1dLnNjYWxlKCksIGFy
Z3NbI3tpbmRleH1dLm9mZnNldCgpLCAje2FyZy53aWR0aENvZGV9KSkiCiAgICAgICAgICAgICAg
ICAgICAgIG91dHAucHV0cyAiT1BHRU5fUkVUVVJOKGZhbHNlKTsiCiAgICAgICAgICAgICAgICAg
d2hlbiAiUHJlSW5kZXgiCi0gICAgICAgICAgICAgICAgICAgIG91dHAucHV0cyAiaWYgKCFBcmc6
OmlzVmFsaWRQcmVJbmRleEZvcm0oYXJnc1sje2luZGV4fV0ub2Zmc2V0KCkpKSIKKyAgICAgICAg
ICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZEluY3JlbWVudEluZGV4Rm9y
bShhcmdzWyN7aW5kZXh9XS5vZmZzZXQoKSkpIgogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1
dHMgIk9QR0VOX1JFVFVSTihmYWxzZSk7IgogICAgICAgICAgICAgICAgIHdoZW4gIlBvc3RJbmRl
eCIKLSAgICAgICAgICAgICAgICAgICAgb3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZFBvc3RJ
bmRleEZvcm0oYXJnc1sje2luZGV4fV0ub2Zmc2V0KCkpKSIKKyAgICAgICAgICAgICAgICAgICAg
b3V0cC5wdXRzICJpZiAoIUFyZzo6aXNWYWxpZEluY3JlbWVudEluZGV4Rm9ybShhcmdzWyN7aW5k
ZXh9XS5vZmZzZXQoKSkpIgogICAgICAgICAgICAgICAgICAgICBvdXRwLnB1dHMgIk9QR0VOX1JF
VFVSTihmYWxzZSk7IgogICAgICAgICAgICAgICAgIHdoZW4gIkJpZ0ltbSIKICAgICAgICAgICAg
ICAgICB3aGVuICJSZWxDb25kIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>