<?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>243172</bug_id>
          
          <creation_ts>2022-07-25 12:17:20 -0700</creation_ts>
          <short_desc>:has(:lang(~)) doesn&apos;t get invalidated</short_desc>
          <delta_ts>2022-10-12 12:03:28 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=246417</see_also>
          <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>
          
          <blocked>243093</blocked>
    
    <blocked>244075</blocked>
    
    <blocked>244484</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1886544</commentid>
    <comment_count>0</comment_count>
      <attachid>461200</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-07-25 12:17:20 -0700</bug_when>
    <thetext>Created attachment 461200
test case

In the attached test case, you should only see green boxes but you see red
because WebKit fails to invalidate elements with :has(:lang(~)) even when lang content attribute is mutated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1886547</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-07-25 12:19:41 -0700</bug_when>
    <thetext>There is a bit of design problem here. :lang(~) relies on Element::computeInheritedLanguage(),
which walks up the tree to find the nearest ancestor with lang content attribute.

:has(~) walks descendants to find an element with a matching :lang(~).

Combining these two naively results in O(n^2) behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1886691</commentid>
    <comment_count>2</comment_count>
      <attachid>461213</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-07-25 22:45:00 -0700</bug_when>
    <thetext>Created attachment 461213
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1886693</commentid>
    <comment_count>3</comment_count>
      <attachid>461214</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-07-25 22:46:52 -0700</bug_when>
    <thetext>Created attachment 461214
WIP

We need something like this to invalidate :lang and :dir in a subtree
whenever lang or dir content attributes are mutated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1886695</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-07-25 23:04:52 -0700</bug_when>
    <thetext>The tricky thing is that lang and dir content attributes affect element&apos;s descendants. We need to either invalidate more than we need or need to walk over the entire subtree each time the attribute is mutated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1888131</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-08-01 12:18:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/97928899&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891296</commentid>
    <comment_count>6</comment_count>
      <attachid>461632</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-08-14 22:59:45 -0700</bug_when>
    <thetext>Created attachment 461632
WIP2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891612</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-08-16 01:40:20 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/3353</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892006</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-08-17 12:19:32 -0700</bug_when>
    <thetext>Committed 253530@main (c01b88a3c523): &lt;https://commits.webkit.org/253530@main&gt;

Reviewed commits have been landed. Closing PR #3353 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892267</commentid>
    <comment_count>9</comment_count>
    <who name="Hercules Hjalmarsson">hhjalmarsson</who>
    <bug_when>2022-08-18 11:15:19 -0700</bug_when>
    <thetext>Reverted by https://github.com/WebKit/WebKit/pull/3461</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892268</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-08-18 11:19:08 -0700</bug_when>
    <thetext>Committed 253566@main (5c847bef1a06): &lt;https://commits.webkit.org/253566@main&gt;

Reviewed commits have been landed. Closing PR #3461 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892373</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-08-18 22:34:46 -0700</bug_when>
    <thetext>Re-opening for pull request https://github.com/WebKit/WebKit/pull/3472</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892558</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-08-19 16:55:34 -0700</bug_when>
    <thetext>Committed 253610@main (84698f551725): &lt;https://commits.webkit.org/253610@main&gt;

Reviewed commits have been landed. Closing PR #3472 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893390</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-08-23 17:27:16 -0700</bug_when>
    <thetext>Re-opening for pull request https://github.com/WebKit/WebKit/pull/3600</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893641</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-08-24 19:46:29 -0700</bug_when>
    <thetext>Committed 253764@main (0c6665bbc951): &lt;https://commits.webkit.org/253764@main&gt;

Reviewed commits have been landed. Closing PR #3600 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>461200</attachid>
            <date>2022-07-25 12:17:20 -0700</date>
            <delta_ts>2022-07-25 22:45:00 -0700</delta_ts>
            <desc>test case</desc>
            <filename>lang-pseudo.html</filename>
            <type>text/html</type>
            <size>1427</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Ym9keT4KICAgIDxzZWN0aW9uIGNsYXNzPSJsYW5nIj48
ZGl2IGxhbmc9ImVuIj48L2Rpdj48L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0ibGFuZyIg
aWQ9ImZyIiBsYW5nPSJmciI+PGRpdj48L2Rpdj48L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFz
cz0ibGFuZyIgaWQ9ImphIiBsYW5nPSJqYSIgc3R5bGU9Ii13ZWJraXQtbG9jYWxlOiAnZW4nIj48
ZGl2PjwvZGl2Pjwvc2VjdGlvbj4KICAgIDxkaXY+PHNlY3Rpb24gY2xhc3M9ImxhbmciIGlkPSJ6
aCIgbGFuZz0iemgiIHN0eWxlPSItd2Via2l0LWxvY2FsZTogJ2VuJyI+PHNwYW4+PC9zcGFuPjwv
c2VjdGlvbj48L2Rpdj4KICAgIDxzZWN0aW9uIGNsYXNzPSJkaXIiPjxkaXY+PC9kaXY+PC9zZWN0
aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9ImRpciIgaWQ9InJ0bCIgZGlyPSJydGwiIHN0eWxlPSJk
aXJlY3Rpb246IGx0ciI+PGRpdj48L2Rpdj48L3NlY3Rpb24+CiAgICA8ZGl2PjxzZWN0aW9uIGNs
YXNzPSJkaXIiIGlkPSJydGwyIiBkaXI9InJ0bCIgc3R5bGU9ImRpcmVjdGlvbjogbHRyIj48c3Bh
bj48L3NwYW4+PC9zZWN0aW9uPjwvZGl2PgogICAgPHN0eWxlPgogICAgICAgIGRpdiB7IHdpZHRo
OiAxMDBweDsgaGVpZ2h0OiAxNXB4OyB9CiAgICAgICAgLmxhbmcgZGl2OmxhbmcoZW4pIHsgYmFj
a2dyb3VuZDogZ3JlZW47IH0KICAgICAgICAubGFuZyBkaXY6bGFuZyhqYSkgeyBiYWNrZ3JvdW5k
OiByZWQ7IH0KICAgICAgICAubGFuZyBkaXY6bGFuZyhmcikgeyBiYWNrZ3JvdW5kOiByZWQ7IH0K
ICAgICAgICBkaXY6aGFzKC5sYW5nIDpsYW5nKHpoKSkgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KICAg
ICAgICBkaXY6aGFzKC5sYW5nIDpsYW5nKGVuKSkgeyBiYWNrZ3JvdW5kOiBncmVlbjsgfQogICAg
ICAgIC5kaXIgZGl2OmRpcihsdHIpIHsgYmFja2dyb3VuZDogZ3JlZW47IH0KICAgICAgICAuZGly
IGRpdjpkaXIocnRsKSB7IGJhY2tncm91bmQ6IHJlZDsgfQogICAgICAgICNydGwgeyBoZWlnaHQ6
IDEwcHg7IH0KICAgICAgICBkaXY6aGFzKC5kaXIgOmRpcihydGwpKSB7IGJhY2tncm91bmQ6IHJl
ZDsgfQogICAgICAgIGRpdjpoYXMoLmRpciA6ZGlyKGx0cikpIHsgYmFja2dyb3VuZDogZ3JlZW47
IH0KICAgIDwvc3R5bGU+CiAgICA8c2NyaXB0PgogICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFt
ZSgoKSA9PiB7CiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAg
amEubGFuZyA9ICdlbic7CiAgICAgICAgICAgICAgICBmci5sYW5nID0gJ2VuJzsKICAgICAgICAg
ICAgICAgIHpoLmxhbmcgPSAnZW4nOwogICAgICAgICAgICAgICAgcnRsLmRpciA9IG51bGw7CiAg
ICAgICAgICAgIH0sIDApOwogICAgICAgIH0pOwogICAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>461213</attachid>
            <date>2022-07-25 22:45:00 -0700</date>
            <delta_ts>2022-07-25 22:45:00 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>lang-pseudo.html</filename>
            <type>text/html</type>
            <size>1460</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Ym9keT4KICAgIDxzZWN0aW9uIGNsYXNzPSJsYW5nIj48
ZGl2IGxhbmc9ImVuIj48L2Rpdj48L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFzcz0ibGFuZyIg
aWQ9ImZyIiBsYW5nPSJmciI+PGRpdj48L2Rpdj48L3NlY3Rpb24+CiAgICA8c2VjdGlvbiBjbGFz
cz0ibGFuZyIgaWQ9ImphIiBsYW5nPSJqYSIgc3R5bGU9Ii13ZWJraXQtbG9jYWxlOiAnZW4nIj48
ZGl2PjwvZGl2Pjwvc2VjdGlvbj4KICAgIDxkaXY+PHNlY3Rpb24gY2xhc3M9ImxhbmciIGlkPSJ6
aCIgbGFuZz0iemgiIHN0eWxlPSItd2Via2l0LWxvY2FsZTogJ2VuJyI+PHNwYW4+PC9zcGFuPjwv
c2VjdGlvbj48L2Rpdj4KICAgIDxzZWN0aW9uIGNsYXNzPSJkaXIiPjxkaXY+PC9kaXY+PC9zZWN0
aW9uPgogICAgPHNlY3Rpb24gY2xhc3M9ImRpciIgaWQ9InJ0bCIgZGlyPSJydGwiIHN0eWxlPSJk
aXJlY3Rpb246IGx0ciI+PGRpdj48L2Rpdj48L3NlY3Rpb24+CiAgICA8ZGl2PjxzZWN0aW9uIGNs
YXNzPSJkaXIiIGlkPSJydGwyIiBkaXI9InJ0bCIgc3R5bGU9ImRpcmVjdGlvbjogbHRyIj48c3Bh
bj48L3NwYW4+PC9zZWN0aW9uPjwvZGl2PgogICAgPHN0eWxlPgogICAgICAgIGRpdiB7IHdpZHRo
OiAxMDBweDsgaGVpZ2h0OiAxNXB4OyB9CiAgICAgICAgLmxhbmcgZGl2OmxhbmcoZW4pIHsgYmFj
a2dyb3VuZDogZ3JlZW47IH0KICAgICAgICAubGFuZyBkaXY6bGFuZyhmcikgeyBiYWNrZ3JvdW5k
OiByZWQ7IH0KICAgICAgICAubGFuZyBkaXY6bGFuZyhqYSkgeyBiYWNrZ3JvdW5kOiByZWQ7IH0K
ICAgICAgICBkaXY6aGFzKC5sYW5nIDpsYW5nKHpoKSkgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KICAg
ICAgICBkaXY6aGFzKC5sYW5nIDpsYW5nKGVuKSkgeyBiYWNrZ3JvdW5kOiBncmVlbjsgfQogICAg
ICAgIC5kaXIgZGl2OmRpcihsdHIpIHsgYmFja2dyb3VuZDogZ3JlZW47IH0KICAgICAgICAuZGly
IGRpdjpkaXIocnRsKSB7IGJhY2tncm91bmQ6IHJlZDsgfQogICAgICAgICNydGwgeyBoZWlnaHQ6
IDEwcHg7IH0KICAgICAgICBkaXY6aGFzKC5kaXIgOmRpcihydGwpKSB7IGJhY2tncm91bmQ6IHJl
ZDsgfQogICAgICAgIGRpdjpoYXMoLmRpciA6ZGlyKGx0cikpIHsgYmFja2dyb3VuZDogZ3JlZW47
IH0KICAgIDwvc3R5bGU+CiAgICA8c2NyaXB0PgogICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFt
ZSgoKSA9PiB7CiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAg
ZnIubGFuZyA9ICdlbic7CiAgICAgICAgICAgICAgICBqYS5sYW5nID0gJ2VuJzsKICAgICAgICAg
ICAgICAgIHpoLmxhbmcgPSAnZW4nOwogICAgICAgICAgICAgICAgcnRsLmRpciA9IG51bGw7CiAg
ICAgICAgICAgICAgICBydGwyLmRpciA9IG51bGw7CiAgICAgICAgICAgIH0sIDApOwogICAgICAg
IH0pOwogICAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461214</attachid>
            <date>2022-07-25 22:46:52 -0700</date>
            <delta_ts>2022-08-14 22:59:45 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip243172.patch</filename>
            <type>text/plain</type>
            <size>4487</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRp
b24uY3BwCmluZGV4IDA1Mjk4ZDBhZmZmOC4uZjQ4Mjg5OWYxMjU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkVs
ZW1lbnRSYXJlRGF0YS5oIgorI2luY2x1ZGUgIlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
LmgiCiAjaW5jbHVkZSAiU3R5bGVJbnZhbGlkYXRpb25GdW5jdGlvbnMuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNjAsNiArNjEsMjQgQEAgdm9pZCBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlk
YXRpb246OmludmFsaWRhdGVTdHlsZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUKICAg
ICAgICAgICAgIHNob3VsZEludmFsaWRhdGVDdXJyZW50ID0gdHJ1ZTsKICAgICB9KTsKIAorICAg
IGJvb2wgYWZmZWN0c0xhbmdQc2V1ZG8gPSBhdHRyaWJ1dGVOYW1lID09IEhUTUxOYW1lczo6bGFu
Z0F0dHI7CisgICAgYm9vbCBhZmZlY3RzRGlyUHNldWRvID0gYXR0cmlidXRlTmFtZSA9PSBIVE1M
TmFtZXM6OmRpckF0dHI7CisgICAgaWYgKGFmZmVjdHNMYW5nUHNldWRvKSB7CisgICAgICAgIHRy
YXZlcnNlUnVsZUZlYXR1cmVzKG1fZWxlbWVudCwgWyZdIChjb25zdCBSdWxlRmVhdHVyZVNldCYg
ZmVhdHVyZXMsIGJvb2wgbWF5QWZmZWN0U2hhZG93VHJlZSkgeworICAgICAgICAgICAgaWYgKG1h
eUFmZmVjdFNoYWRvd1RyZWUgJiYgZmVhdHVyZXMucHNldWRvQ2xhc3NUeXBlcy5jb250YWlucyhD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NMYW5nKSkKKyAgICAgICAgICAgICAgICBtYXlBZmZlY3RT
dHlsZUluU2hhZG93VHJlZSA9IHRydWU7CisgICAgICAgICAgICBpZiAobV9lbGVtZW50LnNoYWRv
d1Jvb3QoKSAmJiBmZWF0dXJlcy5wc2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdC5jb250YWlucyhD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NMYW5nKSkKKyAgICAgICAgICAgICAgICBzaG91bGRJbnZh
bGlkYXRlQ3VycmVudCA9IHRydWU7CisgICAgICAgIH0pOworICAgIH0gZWxzZSBpZiAoYWZmZWN0
c0RpclBzZXVkbykgeworICAgICAgICB0cmF2ZXJzZVJ1bGVGZWF0dXJlcyhtX2VsZW1lbnQsIFsm
XSAoY29uc3QgUnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVzLCBib29sIG1heUFmZmVjdFNoYWRvd1Ry
ZWUpIHsKKyAgICAgICAgICAgIGlmIChtYXlBZmZlY3RTaGFkb3dUcmVlICYmIGZlYXR1cmVzLnBz
ZXVkb0NsYXNzVHlwZXMuY29udGFpbnMoQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzRGlyKSkKKyAg
ICAgICAgICAgICAgICBtYXlBZmZlY3RTdHlsZUluU2hhZG93VHJlZSA9IHRydWU7CisgICAgICAg
ICAgICBpZiAobV9lbGVtZW50LnNoYWRvd1Jvb3QoKSAmJiBmZWF0dXJlcy5wc2V1ZG9DbGFzc2Vz
QWZmZWN0aW5nSG9zdC5jb250YWlucyhDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NEaXIpKQorICAg
ICAgICAgICAgICAgIHNob3VsZEludmFsaWRhdGVDdXJyZW50ID0gdHJ1ZTsKKyAgICAgICAgfSk7
CisgICAgfQorCiAgICAgaWYgKG1heUFmZmVjdFN0eWxlSW5TaGFkb3dUcmVlKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBNb3JlIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24uCiAgICAgICAgIG1fZWxl
bWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7CkBAIC03MCwyMCArODksMzcgQEAgdm9p
ZCBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGUKIAogICAgIGF1dG8mIHJ1bGVTZXRzID0gbV9lbGVtZW50LnN0
eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygpOwogCi0gICAgYXV0byogaW52YWxpZGF0aW9uUnVsZVNl
dHMgPSBydWxlU2V0cy5hdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0cyhhdHRyaWJ1dGVOYW1l
Rm9yTG9va3Vwcyk7Ci0gICAgaWYgKCFpbnZhbGlkYXRpb25SdWxlU2V0cykKLSAgICAgICAgcmV0
dXJuOworICAgIGlmIChhdXRvKiBpbnZhbGlkYXRpb25SdWxlU2V0cyA9IHJ1bGVTZXRzLmF0dHJp
YnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzKGF0dHJpYnV0ZU5hbWVGb3JMb29rdXBzKSkgeworICAg
ICAgICBmb3IgKGF1dG8mIGludmFsaWRhdGlvblJ1bGVTZXQgOiAqaW52YWxpZGF0aW9uUnVsZVNl
dHMpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byogc2VsZWN0b3IgOiBpbnZhbGlkYXRpb25SdWxl
U2V0LmludmFsaWRhdGlvblNlbGVjdG9ycykgeworICAgICAgICAgICAgICAgIGJvb2wgb2xkTWF0
Y2hlcyA9ICFvbGRWYWx1ZS5pc051bGwoKSAmJiBTZWxlY3RvckNoZWNrZXI6OmF0dHJpYnV0ZVNl
bGVjdG9yTWF0Y2hlcyhtX2VsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCAqc2VsZWN0
b3IpOworICAgICAgICAgICAgICAgIGJvb2wgbmV3TWF0Y2hlcyA9ICFuZXdWYWx1ZS5pc051bGwo
KSAmJiBTZWxlY3RvckNoZWNrZXI6OmF0dHJpYnV0ZVNlbGVjdG9yTWF0Y2hlcyhtX2VsZW1lbnQs
IGF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlLCAqc2VsZWN0b3IpOworICAgICAgICAgICAgICAgIGlm
IChvbGRNYXRjaGVzICE9IG5ld01hdGNoZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgSW52YWxp
ZGF0b3I6OmFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMobV9tYXRjaEVsZW1lbnRSdWxlU2V0cywg
aW52YWxpZGF0aW9uUnVsZVNldCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAotICAgIGZvciAo
YXV0byYgaW52YWxpZGF0aW9uUnVsZVNldCA6ICppbnZhbGlkYXRpb25SdWxlU2V0cykgewotICAg
ICAgICBmb3IgKGF1dG8qIHNlbGVjdG9yIDogaW52YWxpZGF0aW9uUnVsZVNldC5pbnZhbGlkYXRp
b25TZWxlY3RvcnMpIHsKLSAgICAgICAgICAgIGJvb2wgb2xkTWF0Y2hlcyA9ICFvbGRWYWx1ZS5p
c051bGwoKSAmJiBTZWxlY3RvckNoZWNrZXI6OmF0dHJpYnV0ZVNlbGVjdG9yTWF0Y2hlcyhtX2Vs
ZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlLCAqc2VsZWN0b3IpOwotICAgICAgICAgICAg
Ym9vbCBuZXdNYXRjaGVzID0gIW5ld1ZhbHVlLmlzTnVsbCgpICYmIFNlbGVjdG9yQ2hlY2tlcjo6
YXR0cmlidXRlU2VsZWN0b3JNYXRjaGVzKG1fZWxlbWVudCwgYXR0cmlidXRlTmFtZSwgbmV3VmFs
dWUsICpzZWxlY3Rvcik7Ci0gICAgICAgICAgICBpZiAob2xkTWF0Y2hlcyAhPSBuZXdNYXRjaGVz
KSB7CisgICAgaWYgKGFmZmVjdHNMYW5nUHNldWRvKSB7CisgICAgICAgIGZvciAoYXV0byYga2V5
IDogbWFrZVBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5cyhDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NMYW5nLCBtX2VsZW1lbnQpKSB7CisgICAgICAgICAgICBhdXRvKiBpbnZhbGlkYXRpb25SdWxl
U2V0cyA9IHJ1bGVTZXRzLnBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMoa2V5KTsKKyAg
ICAgICAgICAgIGlmICghaW52YWxpZGF0aW9uUnVsZVNldHMpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGludmFsaWRhdGlvblJ1bGVTZXQgOiAqaW52
YWxpZGF0aW9uUnVsZVNldHMpCisgICAgICAgICAgICAgICAgSW52YWxpZGF0b3I6OmFkZFRvTWF0
Y2hFbGVtZW50UnVsZVNldHMobV9tYXRjaEVsZW1lbnRSdWxlU2V0cywgaW52YWxpZGF0aW9uUnVs
ZVNldCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGFmZmVjdHNEaXJQc2V1ZG8pIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBrZXkgOiBtYWtlUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXlzKENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0RpciwgbV9lbGVtZW50KSkgeworICAgICAgICAgICAgYXV0
byogaW52YWxpZGF0aW9uUnVsZVNldHMgPSBydWxlU2V0cy5wc2V1ZG9DbGFzc0ludmFsaWRhdGlv
blJ1bGVTZXRzKGtleSk7CisgICAgICAgICAgICBpZiAoIWludmFsaWRhdGlvblJ1bGVTZXRzKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZm9yIChhdXRvJiBpbnZhbGlk
YXRpb25SdWxlU2V0IDogKmludmFsaWRhdGlvblJ1bGVTZXRzKQogICAgICAgICAgICAgICAgIElu
dmFsaWRhdG9yOjphZGRUb01hdGNoRWxlbWVudFJ1bGVTZXRzKG1fbWF0Y2hFbGVtZW50UnVsZVNl
dHMsIGludmFsaWRhdGlvblJ1bGVTZXQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQorCiB9CiAKIHZvaWQgQXR0cmlidXRlQ2hhbmdlSW52
YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5bGVXaXRoUnVsZVNldHMoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461632</attachid>
            <date>2022-08-14 22:59:45 -0700</date>
            <delta_ts>2022-08-14 22:59:45 -0700</delta_ts>
            <desc>WIP2</desc>
            <filename>wip243172b.patch</filename>
            <type>text/plain</type>
            <size>15150</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5o
CmluZGV4IDcwNjVkNThjYjNlYy4uYmY5YTIxNTAzNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgKQEAgLTE5NSwxOSArMTk1LDgg
QEAgQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zbGFuZ3VhZ2VTdWJ0YWdNYXRjaGluZ1Jhbmdl
KFN0cmluZ1ZpZXcgbGFuZ3VhZ2UsIFN0cmkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUFMV0FZ
U19JTkxJTkUgYm9vbCBtYXRjaGVzTGFuZ1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgYXJndW1lbnRMaXN0KQorQUxXQVlTX0lOTElO
RSBib29sIG1hdGNoZXNMYW5nUHNldWRvQ2xhc3MoY29uc3QgQXRvbVN0cmluZyYgbGFuZ3VhZ2Us
IGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgYXJndW1lbnRMaXN0KQogewotICAgIEF0b21TdHJp
bmcgbGFuZ3VhZ2U7Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIGlmIChpczxXZWJWVFRFbGVtZW50
PihlbGVtZW50KSkKLSAgICAgICAgbGFuZ3VhZ2UgPSBkb3duY2FzdDxXZWJWVFRFbGVtZW50Pihl
bGVtZW50KS5sYW5ndWFnZSgpOwotICAgIGVsc2UKLSNlbmRpZgotICAgICAgICBsYW5ndWFnZSA9
IGVsZW1lbnQuY29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7Ci0KLSAgICBpZiAobGFuZ3VhZ2Uu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAvLyBJbXBsZW1lbnQgYmFz
aWMgYW5kIGV4dGVuZGVkIGZpbHRlcmluZ3Mgb2YgZ2l2ZW4gbGFuZ3VhZ2UgdGFncwogICAgIC8v
IGFzIHNwZWNpZmllZCBpbiB3d3cuaWV0Zi5vcmcvcmZjL3JmYzQ2NDcudHh0LgogICAgIFN0cmlu
Z1ZpZXcgbGFuZ3VhZ2VTdHJpbmdWaWV3ID0gbGFuZ3VhZ2Uuc3RyaW5nKCk7CkBAIC0yNDgsNiAr
MjM3LDIyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaGVzTGFuZ1BzZXVkb0NsYXNzKGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFZlY3RvcjxBCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CitBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hlc0xhbmdQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIGFyZ3VtZW50TGlzdCkKK3sKKyAg
ICBBdG9tU3RyaW5nIGxhbmd1YWdlOworI2lmIEVOQUJMRShWSURFTykKKyAgICBpZiAoaXM8V2Vi
VlRURWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgIGxhbmd1YWdlID0gZG93bmNhc3Q8V2ViVlRU
RWxlbWVudD4oZWxlbWVudCkubGFuZ3VhZ2UoKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAg
bGFuZ3VhZ2UgPSBlbGVtZW50LmxhbmdGb3JTdHlsZVJlc29sdXRpb24oKTsKKworICAgIGlmIChs
YW5ndWFnZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBt
YXRjaGVzTGFuZ1BzZXVkb0NsYXNzKGxhbmd1YWdlLCBhcmd1bWVudExpc3QpOworfQorCiBBTFdB
WVNfSU5MSU5FIGJvb2wgbWF0Y2hlc0RpclBzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IEF0b21TdHJpbmcmIGFyZ3VtZW50KQogewogICAgIGlmICghaXM8SFRNTEVsZW1l
bnQ+KGVsZW1lbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDNlOTc2OGZiOGVlMy4uZDA4
ZjQ1NTI2YzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMTQsNiArMTE0LDcgQEAKICNp
bmNsdWRlICJTY3JvbGxJbnRvVmlld09wdGlvbnMuaCIKICNpbmNsdWRlICJTY3JvbGxMYXRjaGlu
Z0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmgi
CisjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyVGVzdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlNl
bGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3RJbml0LmgiCkBAIC0xOTE4LDYgKzE5MTksMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzRWxl
bWVudHNBcnJheVJlZmxlY3Rpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkK
ICAgICAgICAgfHwgbmFtZSA9PSBIVE1MTmFtZXM6OmFyaWFfb3duc0F0dHI7CiB9CiAKK3N0YXRp
YyBib29sIG1hdGNoZXNMYW5nUHNldWRvQ2xhc3NTZWxlY3Rvcihjb25zdCBFbGVtZW50JiwgY29u
c3QgQXRvbVN0cmluZyYgdmFsdWUsIGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikKK3sKKyAg
ICByZXR1cm4gbWF0Y2hlc0xhbmdQc2V1ZG9DbGFzcyh2YWx1ZSwgKnNlbGVjdG9yLmFyZ3VtZW50
TGlzdCgpKTsKK30KKwogdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3Ry
aW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKQogewogICAgIGJvb2wg
dmFsdWVJc1NhbWVBc0JlZm9yZSA9IG9sZFZhbHVlID09IG5ld1ZhbHVlOwpAQCAtMTkyNyw2ICsx
OTMzLDEwIEBAIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWCiAgICAgICAgICAgICBkb2N1bWVudCgp
LmludmFsaWRhdGVBY2Nlc3NLZXlDYWNoZSgpOwogICAgICAgICBlbHNlIGlmIChuYW1lID09IEhU
TUxOYW1lczo6Y2xhc3NBdHRyKQogICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKG5l
d1ZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAobmFtZSA9PSBIVE1MTmFtZXM6Om5hbWVBdHRyKQor
ICAgICAgICAgICBlbGVtZW50RGF0YSgpLT5zZXRIYXNOYW1lQXR0cmlidXRlKCFuZXdWYWx1ZS5p
c051bGwoKSk7CisgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpwYXJ0QXR0cikK
KyAgICAgICAgICAgIHBhcnRBdHRyaWJ1dGVDaGFuZ2VkKG5ld1ZhbHVlKTsKICAgICAgICAgZWxz
ZSBpZiAobmFtZSA9PSBIVE1MTmFtZXM6OmlkQXR0cikgewogICAgICAgICAgICAgQXRvbVN0cmlu
ZyBvbGRJZCA9IGVsZW1lbnREYXRhKCktPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7CiAgICAgICAg
ICAgICBBdG9tU3RyaW5nIG5ld0lkID0gbWFrZUlkRm9yU3R5bGVSZXNvbHV0aW9uKG5ld1ZhbHVl
LCBkb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpKTsKQEAgLTE5MzksOSArMTk0OSw3IEBAIHZvaWQg
RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiBvbGRWCiAgICAgICAgICAgICAgICAgdHJlZVNjb3BlKCkuaWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5KCkubm90aWZ5T2JzZXJ2ZXJzKCpvbGRWYWx1ZS5pbXBsKCkpOwogICAg
ICAgICAgICAgaWYgKCFuZXdWYWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgdHJlZVNj
b3BlKCkuaWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5KCkubm90aWZ5T2JzZXJ2ZXJzKCpuZXdWYWx1
ZS5pbXBsKCkpOwotICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpuYW1lQXR0
cikKLSAgICAgICAgICAgIGVsZW1lbnREYXRhKCktPnNldEhhc05hbWVBdHRyaWJ1dGUoIW5ld1Zh
bHVlLmlzTnVsbCgpKTsKLSAgICAgICAgZWxzZSBpZiAobmFtZSA9PSBIVE1MTmFtZXM6Om5vbmNl
QXR0cikgeworICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpub25jZUF0dHIp
IHsKICAgICAgICAgICAgIGlmIChpczxIVE1MRWxlbWVudD4oKnRoaXMpIHx8IGlzPFNWR0VsZW1l
bnQ+KCp0aGlzKSkKICAgICAgICAgICAgICAgICBzZXROb25jZShuZXdWYWx1ZS5pc051bGwoKSA/
IGVtcHR5QXRvbSgpIDogbmV3VmFsdWUpOwogICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gSFRN
TE5hbWVzOjpwc2V1ZG9BdHRyKSB7CkBAIC0xOTUyLDkgKzE5NjAsNyBAQCB2b2lkIEVsZW1lbnQ6
OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgb2xkVgogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzaGFkb3dSb290ID0gcGFyZW50
LT5zaGFkb3dSb290KCkpCiAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3QtPmhvc3RDaGls
ZEVsZW1lbnREaWRDaGFuZ2VTbG90QXR0cmlidXRlKCp0aGlzLCBvbGRWYWx1ZSwgbmV3VmFsdWUp
OwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpw
YXJ0QXR0cikKLSAgICAgICAgICAgIHBhcnRBdHRyaWJ1dGVDaGFuZ2VkKG5ld1ZhbHVlKTsKLSAg
ICAgICAgZWxzZSBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFyaWFSZWZsZWN0aW9uRm9yRWxl
bWVudFJlZmVyZW5jZXNFbmFibGVkKCkgJiYgKGlzRWxlbWVudFJlZmxlY3Rpb25BdHRyaWJ1dGUo
bmFtZSkgfHwgaXNFbGVtZW50c0FycmF5UmVmbGVjdGlvbkF0dHJpYnV0ZShuYW1lKSkpIHsKKyAg
ICAgICAgfSBlbHNlIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkuYXJpYVJlZmxlY3Rpb25Gb3JF
bGVtZW50UmVmZXJlbmNlc0VuYWJsZWQoKSAmJiAoaXNFbGVtZW50UmVmbGVjdGlvbkF0dHJpYnV0
ZShuYW1lKSB8fCBpc0VsZW1lbnRzQXJyYXlSZWZsZWN0aW9uQXR0cmlidXRlKG5hbWUpKSkgewog
ICAgICAgICAgICAgaWYgKGF1dG8qIG1hcCA9IGV4cGxpY2l0bHlTZXRBdHRyRWxlbWVudHNNYXBJ
ZkV4aXN0cygpKQogICAgICAgICAgICAgICAgIG1hcC0+cmVtb3ZlKG5hbWUpOwogICAgICAgICB9
IGVsc2UgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpleHBvcnRwYXJ0c0F0dHIpIHsKQEAgLTE5NjIs
NiArMTk2OCwxNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgb2xkVgogICAgICAgICAgICAgICAgIHNo
YWRvd1Jvb3QtPmludmFsaWRhdGVQYXJ0TWFwcGluZ3MoKTsKICAgICAgICAgICAgICAgICBTdHls
ZTo6SW52YWxpZGF0b3I6OmludmFsaWRhdGVTaGFkb3dQYXJ0cygqc2hhZG93Um9vdCk7CiAgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAobmFtZSA9PSBIVE1MTmFtZXM6OmxhbmdBdHRy
KSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxhbmcgb2xkPSVzIG5ldz0lc1xuIiwg
b2xkVmFsdWUuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG5ld1ZhbHVlLnN0cmluZygpLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHNob3dUcmVlRm9yVGhpcygpOworCisgICAgICAgICAg
ICBTdHlsZTo6UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24o
KnRoaXMsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0xhbmcsIG9sZFZhbHVlLCBuZXdWYWx1ZSwg
bWF0Y2hlc0xhbmdQc2V1ZG9DbGFzc1NlbGVjdG9yKTsKKyAgICAgICAgICAgIGVuc3VyZUVsZW1l
bnRSYXJlRGF0YSgpLnNldExhbmdGb3JTdHlsZVJlc29sdXRpb24oY29tcHV0ZUluaGVyaXRlZExh
bmd1YWdlKCkpOworICAgICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNP
ZlR5cGU8RWxlbWVudD4oKnRoaXMpKSB7CisgICAgICAgICAgICAgICAgU3R5bGU6OlBzZXVkb0Ns
YXNzQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKGVsZW1lbnQsIENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzc0xhbmcsIG9sZFZhbHVlLCBuZXdWYWx1ZSwgbWF0Y2hlc0xhbmdQc2V1
ZG9DbGFzc1NlbGVjdG9yKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpLnNldExhbmdGb3JTdHlsZVJlc29sdXRpb24obmV3VmFsdWUpOworICAgICAgICAg
ICAgICAgIGVsZW1lbnQuc2hvd1RyZWVGb3JUaGlzKCk7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTI0NzYsNiArMjQ5MywxMyBAQCBOb2RlOjpJbnNlcnRlZEludG9BbmNl
c3RvclJlc3VsdCBFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlIGlu
cwogICAgICAgICAgICAgdXBkYXRlTmFtZUZvckRvY3VtZW50KCpuZXdEb2N1bWVudCwgbnVsbEF0
b20oKSwgbmFtZVZhbHVlKTsKICAgICB9CiAKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBPcHRp
bWl6ZSBmb3IgY29tbW9uIGNhc2UuCisgICAgICAgIGF1dG8gbmV3VmFsdWUgPSBjb21wdXRlSW5o
ZXJpdGVkTGFuZ3VhZ2UoKTsKKyAgICAgICAgU3R5bGU6OlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NM
YW5nLCBudWxsQXRvbSgpLCBuZXdWYWx1ZSwgbWF0Y2hlc0xhbmdQc2V1ZG9DbGFzc1NlbGVjdG9y
KTsKKyAgICAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0TGFuZ0ZvclN0eWxlUmVzb2x1
dGlvbihjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKSk7CisgICAgfQorCiAgICAgaWYgKGJlY29t
ZUNvbm5lY3RlZCkgewogICAgICAgICBpZiAoVU5MSUtFTFkoaXNDdXN0b21FbGVtZW50VXBncmFk
ZUNhbmRpZGF0ZSgpKSkgewogICAgICAgICAgICAgQVNTRVJUKGlzQ29ubmVjdGVkKCkpOwpAQCAt
MzgyOCw2ICszODUyLDEzIEBAIEF0b21TdHJpbmcgRWxlbWVudDo6Y29tcHV0ZUluaGVyaXRlZExh
bmd1YWdlKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb250ZW50TGFuZ3VhZ2UoKTsK
IH0KIAorQXRvbVN0cmluZyBFbGVtZW50OjpsYW5nRm9yU3R5bGVSZXNvbHV0aW9uKCkgY29uc3QK
K3sKKyAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOwor
ICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+bGFuZ0ZvclN0eWxlUmVzb2x1dGlvbigpOwor
fQorCiBMb2NhbGUmIEVsZW1lbnQ6OmxvY2FsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvY3Vt
ZW50KCkuZ2V0Q2FjaGVkTG9jYWxlKGNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCmluZGV4IGQxYzI5NjAyNGNhOS4uYmFiZjMyNmFhZTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKQEAgLTQyMCw2ICs0MjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDaGlsZEluZGV4
KHVuc2lnbmVkKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgY29tcHV0ZUluaGVy
aXRlZExhbmd1YWdlKCkgY29uc3Q7CisgICAgQXRvbVN0cmluZyBsYW5nRm9yU3R5bGVSZXNvbHV0
aW9uKCkgY29uc3Q7CiAgICAgTG9jYWxlJiBsb2NhbGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
Ym9vbCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCAvKnNlbmRUb0FueUV2ZW50Ki8pIHsgcmV0dXJuIGZh
bHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3BwCmluZGV4IDAwY2Y2NWYz
MzczNi4uNzY5MzIwNjAzZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNw
cApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgU2FtZVNpemVB
c0VsZW1lbnRSYXJlRGF0YSA6IE5vZGVSYXJlRGF0YSB7CiAgICAgSW50UG9pbnQgc2F2ZWRMYXll
clNjcm9sbFBvc2l0aW9uOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RWxlbWVudEFuaW1h
dGlvblJhcmVEYXRhPj4gYW5pbWF0aW9uUmFyZURhdGE7Ci0gICAgdm9pZCogcG9pbnRlcnNbMTFd
OworICAgIHZvaWQqIHBvaW50ZXJzWzEyXTsKICAgICB2b2lkKiBpbnRlcnNlY3Rpb25PYnNlcnZl
ckRhdGE7CiAjaWYgRU5BQkxFKENTU19UWVBFRF9PTSkKICAgICB2b2lkKiB0eXBlZE9NRGF0YVsy
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCAwZGU0NTczYzUxOWEuLjMy
NWY3NWFmZDY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtNzIsNiAr
NzIsOSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoKSBjb25zdCB7
IHJldHVybiBtX2NvbXB1dGVkU3R5bGUuZ2V0KCk7IH0KICAgICB2b2lkIHNldENvbXB1dGVkU3R5
bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjb21wdXRlZFN0eWxlKSB7IG1fY29tcHV0
ZWRTdHlsZSA9IFdURk1vdmUoY29tcHV0ZWRTdHlsZSk7IH0KIAorICAgIGNvbnN0IEF0b21TdHJp
bmcmIGxhbmdGb3JTdHlsZVJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhbmdGb3JTdHls
ZVJlc29sdXRpb247IH0KKyAgICB2b2lkIHNldExhbmdGb3JTdHlsZVJlc29sdXRpb24oY29uc3Qg
QXRvbVN0cmluZyYgbGFuZykgeyBtX2xhbmdGb3JTdHlsZVJlc29sdXRpb24gPSBsYW5nOyB9CisK
ICAgICBET01Ub2tlbkxpc3QqIGNsYXNzTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NMaXN0
LmdldCgpOyB9CiAgICAgdm9pZCBzZXRDbGFzc0xpc3Qoc3RkOjp1bmlxdWVfcHRyPERPTVRva2Vu
TGlzdD4gY2xhc3NMaXN0KSB7IG1fY2xhc3NMaXN0ID0gV1RGTW92ZShjbGFzc0xpc3QpOyB9CiAK
QEAgLTExOSwxMCArMTIyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNl
VHlwZTo6U2Nyb2xsaW5nUG9zaXRpb24pOwogICAgICAgICBpZiAobV9jb21wdXRlZFN0eWxlKQog
ICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpDb21wdXRlZFN0eWxlKTsKLSAgICAgICAg
aWYgKG1fZGF0YXNldCkKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoVXNlVHlwZTo6RGF0YXNldCk7
CisgICAgICAgIGlmIChtX2xhbmdGb3JTdHlsZVJlc29sdXRpb24pCisgICAgICAgICAgICByZXN1
bHQuYWRkKFVzZVR5cGU6OkxhbmcpOwogICAgICAgICBpZiAobV9jbGFzc0xpc3QpCiAgICAgICAg
ICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OkNsYXNzTGlzdCk7CisgICAgICAgIGlmIChtX2RhdGFz
ZXQpCisgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OkRhdGFzZXQpOwogICAgICAgICBp
ZiAobV9zaGFkb3dSb290KQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpTaGFkb3dS
b290KTsKICAgICAgICAgaWYgKG1fY3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUpCkBAIC0xNTks
NiArMTY0LDcgQEAgcHJpdmF0ZToKICAgICBJbnRQb2ludCBtX3NhdmVkTGF5ZXJTY3JvbGxQb3Np
dGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG1fY29tcHV0ZWRTdHlsZTsK
IAorICAgIEF0b21TdHJpbmcgbV9sYW5nRm9yU3R5bGVSZXNvbHV0aW9uOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxEYXRhc2V0RE9NU3RyaW5nTWFwPiBtX2RhdGFzZXQ7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPERPTVRva2VuTGlzdD4gbV9jbGFzc0xpc3Q7CiAgICAgUmVmUHRyPFNoYWRvd1Jvb3Q+IG1f
c2hhZG93Um9vdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCBmNDdkNTI5ZGE0OGIu
LjVlMDAyYjVlNzI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMjY2LDYgKzI2
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgTm9uY2UgPSAxIDw8IDE3LAogICAgICAgICBDb21wdXRl
ZFN0eWxlTWFwID0gMSA8PCAxOCwKICAgICAgICAgRXhwbGljaXRseVNldEF0dHJFbGVtZW50c01h
cCA9IDEgPDwgMTksCisgICAgICAgIExhbmdGb3JTdHlsZVJlc29sdXRpb24gPSAxIDw8IDIwLAog
ICAgIH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCmluZGV4IDc3MDNjNmFlMzg0NS4uNDc1ZDc4ZDVl
Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUlu
dmFsaWRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwCkBAIC0xMDksNiArMTA5LDQ2IEBAIHZvaWQgUHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb246OmNvbGxlY3RSdWxlU2V0cyhjb25zdCBQc2V1ZG9DbGFzc0ludmFs
aWRhdGlvCiAgICAgfQogfQogCit2b2lkIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpj
b21wdXRlSW52YWxpZGF0aW9uKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xh
c3MsIGNvbnN0IEF0b21TdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9tU3RyaW5nJiBuZXdWYWx1
ZSwKKyAgICBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgQ1NTU2VsZWN0b3ImKT4mJiBtYXRjaGVzU2VsZWN0b3IpCit7CisgICAgYm9v
bCBzaG91bGRJbnZhbGlkYXRlQ3VycmVudCA9IGZhbHNlOworICAgIGJvb2wgbWF5QWZmZWN0U3R5
bGVJblNoYWRvd1RyZWUgPSBmYWxzZTsKKworICAgIHRyYXZlcnNlUnVsZUZlYXR1cmVzKG1fZWxl
bWVudCwgWyZdIChjb25zdCBSdWxlRmVhdHVyZVNldCYgZmVhdHVyZXMsIGJvb2wgbWF5QWZmZWN0
U2hhZG93VHJlZSkgeworICAgICAgICBpZiAobWF5QWZmZWN0U2hhZG93VHJlZSAmJiBmZWF0dXJl
cy5wc2V1ZG9DbGFzc1R5cGVzLmNvbnRhaW5zKHBzZXVkb0NsYXNzKSkKKyAgICAgICAgICAgIG1h
eUFmZmVjdFN0eWxlSW5TaGFkb3dUcmVlID0gdHJ1ZTsKKyAgICAgICAgaWYgKG1fZWxlbWVudC5z
aGFkb3dSb290KCkgJiYgZmVhdHVyZXMucHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuY29udGFp
bnMocHNldWRvQ2xhc3MpKQorICAgICAgICAgICAgc2hvdWxkSW52YWxpZGF0ZUN1cnJlbnQgPSB0
cnVlOworICAgIH0pOworCisgICAgaWYgKG1heUFmZmVjdFN0eWxlSW5TaGFkb3dUcmVlKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBm
b3Igc2hhZG93IHRyZWUuCisgICAgICAgIG1fZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0
cmVlKCk7CisgICAgfQorCisgICAgaWYgKHNob3VsZEludmFsaWRhdGVDdXJyZW50KQorICAgICAg
ICBtX2VsZW1lbnQuaW52YWxpZGF0ZVN0eWxlKCk7CisKKyAgICBmb3IgKGF1dG8mIGtleSA6IG1h
a2VQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleXMocHNldWRvQ2xhc3MsIG1fZWxlbWVudCkpIHsK
KyAgICAgICAgYXV0byYgcnVsZVNldHMgPSBtX2VsZW1lbnQuc3R5bGVSZXNvbHZlcigpLnJ1bGVT
ZXRzKCk7CisgICAgICAgIGF1dG8qIGludmFsaWRhdGlvblJ1bGVTZXRzID0gcnVsZVNldHMucHNl
dWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhrZXkpOworICAgICAgICBpZiAoIWludmFsaWRh
dGlvblJ1bGVTZXRzKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGZvciAoYXV0byYg
aW52YWxpZGF0aW9uUnVsZVNldCA6ICppbnZhbGlkYXRpb25SdWxlU2V0cykgeworICAgICAgICAg
ICAgZm9yIChhdXRvKiBzZWxlY3RvciA6IGludmFsaWRhdGlvblJ1bGVTZXQuaW52YWxpZGF0aW9u
U2VsZWN0b3JzKSB7CisgICAgICAgICAgICAgICAgYm9vbCBvbGRNYXRjaGVzID0gIW9sZFZhbHVl
LmlzTnVsbCgpICYmIG1hdGNoZXNTZWxlY3RvcihtX2VsZW1lbnQsIG9sZFZhbHVlLCAqc2VsZWN0
b3IpOworICAgICAgICAgICAgICAgIGJvb2wgbmV3TWF0Y2hlcyA9ICFuZXdWYWx1ZS5pc051bGwo
KSAmJiBtYXRjaGVzU2VsZWN0b3IobV9lbGVtZW50LCBuZXdWYWx1ZSwgKnNlbGVjdG9yKTsKKyAg
ICAgICAgICAgICAgICBpZiAob2xkTWF0Y2hlcyAhPSBuZXdNYXRjaGVzIHx8IHRydWUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgSW52YWxpZGF0b3I6OmFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMo
bV9iZWZvcmVDaGFuZ2VSdWxlU2V0cywgaW52YWxpZGF0aW9uUnVsZVNldCk7CisgICAgICAgICAg
ICAgICAgICAgIEludmFsaWRhdG9yOjphZGRUb01hdGNoRWxlbWVudFJ1bGVTZXRzKG1fYWZ0ZXJD
aGFuZ2VSdWxlU2V0cywgaW52YWxpZGF0aW9uUnVsZVNldCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKwogdm9pZCBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZUJl
Zm9yZUNoYW5nZSgpCiB7CiAgICAgSW52YWxpZGF0b3I6OmludmFsaWRhdGVXaXRoTWF0Y2hFbGVt
ZW50UnVsZVNldHMobV9lbGVtZW50LCBtX2JlZm9yZUNoYW5nZVJ1bGVTZXRzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oCmlu
ZGV4IGU3MDA0ODE3Zjg5MS4uNjI1MmE0MjMyNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgKQEAgLTM2LDYgKzM2LDcg
QEAgbmFtZXNwYWNlIFN0eWxlIHsKIGNsYXNzIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9u
IHsKIHB1YmxpYzoKICAgICBQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50Jiwg
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgYm9vbCB2YWx1ZSwgSW52YWxpZGF0aW9uU2Nv
cGUgPSBJbnZhbGlkYXRpb25TY29wZTo6QWxsKTsKKyAgICBQc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbihFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVlLCBXVEY6OkZ1bmN0
aW9uPGJvb2wgKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgQ1NTU2Vs
ZWN0b3ImKT4mJik7CiAgICAgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24oRWxlbWVudCYs
IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
VHlwZSwgYm9vbD4+KTsKIAogICAgIH5Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbigpOwpA
QCAtNDMsNiArNDQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUludmFs
aWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlLCBib29sIHZhbHVlLCBTdHlsZTo6
SW52YWxpZGF0aW9uU2NvcGUpOwogICAgIHZvaWQgY29sbGVjdFJ1bGVTZXRzKGNvbnN0IFBzZXVk
b0NsYXNzSW52YWxpZGF0aW9uS2V5JiwgYm9vbCB2YWx1ZSwgSW52YWxpZGF0aW9uU2NvcGUpOwor
ICAgIHZvaWQgY29tcHV0ZUludmFsaWRhdGlvbihDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUs
IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgRWxlbWVudCYsIGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBDU1NTZWxlY3RvciYpPiYmKTsKICAgICB2b2lkIGludmFsaWRhdGVCZWZvcmVDaGFuZ2Uo
KTsKICAgICB2b2lkIGludmFsaWRhdGVBZnRlckNoYW5nZSgpOwogCkBAIC03MSw2ICs3MywxOCBA
QCBpbmxpbmUgUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OlBzZXVkb0NsYXNzQ2hhbmdl
SW52YWxpZGF0aW9uKEVsZW1lbnQmIGVsZQogICAgIGludmFsaWRhdGVCZWZvcmVDaGFuZ2UoKTsK
IH0KIAoraW5saW5lIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uOjpQc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbihFbGVtZW50JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NUeXBlIHBzZXVkb0NsYXNzLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRv
bVN0cmluZyYgbmV3VmFsdWUKKyAgICAsIFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgRWxlbWVu
dCYsIGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBDU1NTZWxlY3RvciYpPiYmIG1hdGNoZXNTZWxl
Y3RvcikKKyAgICA6IG1faXNFbmFibGVkKGVsZW1lbnQubmVlZHNTdHlsZUludmFsaWRhdGlvbigp
KQorICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCisKK3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQor
ICAgICAgICByZXR1cm47CisgICAgY29tcHV0ZUludmFsaWRhdGlvbihwc2V1ZG9DbGFzcywgb2xk
VmFsdWUsIG5ld1ZhbHVlLCBXVEZNb3ZlKG1hdGNoZXNTZWxlY3RvcikpOworICAgIGludmFsaWRh
dGVCZWZvcmVDaGFuZ2UoKTsKK30KKwogaW5saW5lIFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0
aW9uOjpQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbihFbGVtZW50JiBlbGVtZW50LCBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUs
IGJvb2w+PiBwc2V1ZG9DbGFzc2VzKQogICAgIDogbV9pc0VuYWJsZWQoZWxlbWVudC5uZWVkc1N0
eWxlSW52YWxpZGF0aW9uKCkpCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>