<?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>202100</bug_id>
          
          <creation_ts>2019-09-23 03:02:09 -0700</creation_ts>
          <short_desc>[Nicosia] Add implementations for fixed, positioned, sticky ScrollingTreeNodes</short_desc>
          <delta_ts>2019-09-25 02:48:19 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>198475</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>annulen</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1573266</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-09-23 03:02:09 -0700</bug_when>
    <thetext>[Nicosia] Add implementations for fixed, positioned, sticky ScrollingTreeNodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573267</commentid>
    <comment_count>1</comment_count>
      <attachid>379363</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-09-23 03:23:29 -0700</bug_when>
    <thetext>Created attachment 379363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573618</commentid>
    <comment_count>2</comment_count>
      <attachid>379363</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-24 04:17:43 -0700</bug_when>
    <thetext>Comment on attachment 379363
Patch

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

&gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreePositionedNode.cpp:88
&gt; +        }();

What&apos;s the point of the lambda here?

&gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreePositionedNode.h:43
&gt; +class ScrollingTreePositionedNode : public ScrollingTreeNode {

is this final class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573625</commentid>
    <comment_count>3</comment_count>
      <attachid>379363</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-09-24 05:46:29 -0700</bug_when>
    <thetext>Comment on attachment 379363
Patch

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

&gt;&gt; Source/WebCore/page/scrolling/nicosia/ScrollingTreePositionedNode.cpp:88
&gt;&gt; +        }();
&gt; 
&gt; What&apos;s the point of the lambda here?

OK, I&apos;ll flatten it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573994</commentid>
    <comment_count>4</comment_count>
      <attachid>379533</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-09-25 02:46:52 -0700</bug_when>
    <thetext>Created attachment 379533
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573995</commentid>
    <comment_count>5</comment_count>
      <attachid>379533</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-09-25 02:47:52 -0700</bug_when>
    <thetext>Comment on attachment 379533
Patch for landing

Clearing flags on attachment: 379533

Committed r250339: &lt;https://trac.webkit.org/changeset/250339&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573996</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-09-25 02:47:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573997</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-25 02:48:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/55697583&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379363</attachid>
            <date>2019-09-23 03:23:29 -0700</date>
            <delta_ts>2019-09-25 02:46:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202100-20190923122328.patch</filename>
            <type>text/plain</type>
            <size>25449</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc4ZTRkZmZkNDMzYzA1
NDhiOTFmNWNlMDA5YmMxY2Y2OGY3OTAwOS4uZmJjNjdmNWU2NDk0Y2NjMmY0N2ZiYzg2NTNlM2E2
OTg5YTNhNzI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE5LTA5LTIzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbTmljb3NpYV0gQWRk
IGltcGxlbWVudGF0aW9ucyBmb3IgZml4ZWQsIHBvc2l0aW9uZWQsIHN0aWNreSBTY3JvbGxpbmdU
cmVlTm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMjEwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZpbGwgaW4gdGhlIE5pY29zaWEgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZSwKKyAgICAgICAgU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlIGFuZCBTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZSBjbGFzc2VzLgorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlv
bnMgaW4gbWFqb3JpdHkgcmVwZWF0IHdoYXQgdGhlIENvY29hIGltcGxlbWVudGF0aW9ucworICAg
ICAgICBkbywgd2l0aCB0aGUgbWFpbiBkaWZmZXJlbmNlIGJlaW5nIHRoZSBOaWNvc2lhLXNwZWNp
ZmljIGxheWVyIHN0YXRlCisgICAgICAgIGFwcGxpY2F0aW9uLiBTaGFyaW5nIG1vcmUgb2YgdGhp
cyBsb2dpYyBzaG91bGQgYmUgaW52ZXN0aWdhdGVkIGluIHRoZQorICAgICAgICBmdXR1cmUuCisK
KyAgICAgICAgKiBQbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOiBBZGQgU2Nyb2xsaW5nVHJlZVBv
c2l0aW9uZWROb2RlIHRvIGJ1aWxkLgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OiBEaXR0by4K
KyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDogRGl0dG8uCisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6YXBwbHlMYXllclBvc2l0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpkdW1wUHJvcGVy
dGllcyBjb25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlRml4ZWROb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6Y29tbWl0U3RhdGVC
ZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlUG9zaXRpb25l
ZE5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZVBvc2l0aW9uZWROb2RlOjpkdW1wUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGU6OnJlbGF0ZWRP
dmVyZmxvd1Njcm9sbGluZ05vZGVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjphcHBseUxheWVyUG9zaXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpkdW1wUHJvcGVy
dGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6
Y29tcHV0ZUxheWVyUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaDoKKwogMjAxOS0wOS0yMiAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGNsYW5nLXRpZHk6IEZpeCB1bm5l
Y2Vzc2FyeSBjb3B5L3JlZiBjaHVybiBvZiBmb3IgbG9vcCB2YXJpYWJsZXMgaW4gV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggNzE5M2JjNWFlMTBi
MjQ3MjZlZjg5ZWY5N2UwMzlkNmU0MGY4YzY1ZC4uZDk2OGU2YzY0ZTJiZjkyMWMwZWUzZjEwOTEy
YjA2ZGYzNWZiZTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtl
CkBAIC0yMSw2ICsyMSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKICAgICBwYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNw
cAogICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCisg
ICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3Bw
CiAgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAK
IAogICAgIHBhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0dUSy50eHQKaW5kZXggMDRlYmJmYzAyYjJmOTUwOWIwNTc4NTg2MTdkYzg0MTYz
MzhkMGQwYy4uZDQ0ZGExNzFiZmFhMmMyYjU4MzAwN2E4YjEyOThhZWYwZTNiYzM0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0dUSy50eHQKQEAgLTU1LDYgKzU1LDcgQEAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlRml4ZWROb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCitwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVQb3NpdGlvbmVkTm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUuY3BwCiAKIHBhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhy
ZWFkR2VuZXJpYy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKaW5kZXggMmY5OGZmZWJmMDIzZjhkY2U3
ZTY2MTFhYjhlMmFlNDc2MWY0ZjRlNi4uOTk5OGI3NmFlOGI2NjM1OGFlNzlkOWJlYjc2NjNhNDJk
NDM4MTEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKQEAgLTUyLDYgKzUyLDcgQEAgcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcAogcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKIHBhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCitwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCiAKIHBhZ2Uvc2Nyb2xsaW5nL2dlbmVy
aWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUu
Y3BwCmluZGV4IGM5MGRiZjgxZTI4YWQ0Yjc3NjRhNDk4YmQ1N2JiOWNiODIwNzQwOTkuLjY3MmQ5
YzJjNWFkZDE0YjVhZGEwNDI3MDMxMzA5ZGI3ZmFlZWVjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
Rml4ZWROb2RlLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgg
SWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNyArMzEsMTIgQEAKIAogI2lmIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVG
aXhlZE5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlLmgiCisjaW5jbHVkZSAiU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MCwxMiArNTYsNzQgQEAgU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZTo6flNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoKQogICAgIHNjcm9s
bGluZ1RyZWUoKS5maXhlZE9yU3RpY2t5Tm9kZVJlbW92ZWQoKTsKIH0KIAotdm9pZCBTY3JvbGxp
bmdUcmVlRml4ZWROb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlTm9kZSYpCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlQmVm
b3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCiB7CisgICAg
YXV0byYgZml4ZWRTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZT4o
c3RhdGVOb2RlKTsKKworICAgIGlmIChmaXhlZFN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpIHsKKyAgICAgICAgTmljb3NpYTo6UGxhdGZvcm1M
YXllciogbGF5ZXIgPSBmaXhlZFN0YXRlTm9kZS5sYXllcigpOworICAgICAgICBtX2xheWVyID0g
ZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOworICAgIH0KKworICAg
IGlmIChmaXhlZFN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGaXhl
ZE5vZGU6OlZpZXdwb3J0Q29uc3RyYWludHMpKQorICAgICAgICBtX2NvbnN0cmFpbnRzID0gZml4
ZWRTdGF0ZU5vZGUudmlld3BvcnRDb25zdHJhaW50cygpOwogfQogCiB2b2lkIFNjcm9sbGluZ1Ry
ZWVGaXhlZE5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQogeworICAgIGF1dG8gY29tcHV0ZUxh
eWVyUG9zaXRpb24gPSBbJl0geworICAgICAgICBGbG9hdFNpemUgb3ZlcmZsb3dTY3JvbGxEZWx0
YTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyB3cm9uZyBpbiBjb21wbGV4IGNhc2Vz
IHdoZXJlIHRoZSBmaXhlZCBlbGVtZW50IGlzIGluc2lkZSBhIHBvc2l0aW9uZWQgbm9kZSBhcwor
ICAgICAgICAvLyAgICAgICAgdGhlIHNjcm9sbCBjb250YWluZXIgb3JkZXIgZG9lcyBub3QgbWF0
Y2ggdGhlIHNjcm9sbGluZyB0cmVlIGFuY2VzdG9yIG9yZGVyLgorICAgICAgICBmb3IgKGF1dG8q
IG5vZGUgPSBwYXJlbnQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudCgpKSB7CisgICAgICAg
ICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oKm5vZGUpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gRml4ZWQgbm9kZXMgYXJlIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG8g
dGhlIGNvbnRhaW5pbmcgZnJhbWUgc2Nyb2xsaW5nIG5vZGUuCisgICAgICAgICAgICAgICAgLy8g
V2UgYmFpbCBvdXQgYWZ0ZXIgZmluZGluZyBvbmUuCisgICAgICAgICAgICAgICAgYXV0byBsYXlv
dXRWaWV3cG9ydCA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KCpu
b2RlKS5sYXlvdXRWaWV3cG9ydCgpOworICAgICAgICAgICAgICAgIHJldHVybiBtX2NvbnN0cmFp
bnRzLmxheWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJlY3QobGF5b3V0Vmlld3BvcnQpIC0gb3ZlcmZs
b3dTY3JvbGxEZWx0YTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlzPFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KCpub2RlKSkgeworICAgICAgICAgICAgICAg
IC8vIFRvIGtlZXAgdGhlIGxheWVyIHN0aWxsIGR1cmluZyBhc3luYyBzY3JvbGxpbmcgd2UgYWRq
dXN0IGJ5IGhvdyBtdWNoIHRoZSBwb3NpdGlvbiBoYXMgY2hhbmdlZCBzaW5jZSBsYXlvdXQuCisg
ICAgICAgICAgICAgICAgYXV0byYgb3ZlcmZsb3dOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oKm5vZGUpOworICAgICAgICAgICAgICAgIGF1dG8gbG9j
YWxEZWx0YSA9IG92ZXJmbG93Tm9kZS5sYXN0Q29tbWl0dGVkU2Nyb2xsUG9zaXRpb24oKSAtIG92
ZXJmbG93Tm9kZS5jdXJyZW50U2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvd1Njcm9sbERlbHRhICs9IGxvY2FsRGVsdGE7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBGbG9hdFBvaW50
KCk7CisgICAgfTsKKworICAgIGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0
aW9uKCk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9s
bGluZ1RyZWVGaXhlZE5vZGUgIiA8PCBzY3JvbGxpbmdOb2RlSUQoKSA8PCAiIHJlbGF0ZWROb2Rl
U2Nyb2xsUG9zaXRpb25EaWRDaGFuZ2U6IHZpZXdwb3J0UmVjdEF0TGFzdExheW91dCAiIDw8IG1f
Y29uc3RyYWludHMudmlld3BvcnRSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxheWVyIHBv
cyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIDw8ICIgbGF5
ZXJQb3NpdGlvbiAiIDw8IGxheWVyUG9zaXRpb24pOworCisgICAgQVNTRVJUKG1fbGF5ZXIpOwor
ICAgIG1fbGF5ZXItPmFjY2Vzc1N0YWdpbmcoCisgICAgICAgIFsmbGF5ZXJQb3NpdGlvbl0oTmlj
b3NpYTo6Q29tcG9zaXRpb25MYXllcjo6TGF5ZXJTdGF0ZSYgc3RhdGUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRlLnBvc2l0aW9uID0gbGF5ZXJQb3NpdGlvbjsKKyAgICAgICAgICAgIHN0
YXRlLmRlbHRhLnBvc2l0aW9uQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIH0pOworfQorCit2b2lk
IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBT
Y3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvciBiZWhhdmlvcikgY29uc3QKK3sKKyAgICB0
cyA8PCAiZml4ZWQgbm9kZSI7CisgICAgU2Nyb2xsaW5nVHJlZU5vZGU6OmR1bXBQcm9wZXJ0aWVz
KHRzLCBiZWhhdmlvcik7CisgICAgdHMuZHVtcFByb3BlcnR5KCJmaXhlZCBjb25zdHJhaW50cyIs
IG1fY29uc3RyYWludHMpOworCisgICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVl
QXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJQb3NpdGlvbnMpIHsKKyAgICAgICAgRmxvYXRQb2lu
dCBsYXllclRvcExlZnQ7CisgICAgICAgIEFTU0VSVChtX2xheWVyKTsKKyAgICAgICAgbV9sYXll
ci0+YWNjZXNzQ29tbWl0dGVkKAorICAgICAgICAgICAgW3RoaXMsICZsYXllclRvcExlZnRdKE5p
Y29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0YXRlKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGxheWVyVG9wTGVmdCA9IHN0YXRlLnBvc2l0aW9uIC0gdG9GbG9h
dFNpemUoc3RhdGUuYW5jaG9yUG9pbnQueHkoKSkgKiBzdGF0ZS5zaXplICsgbV9jb25zdHJhaW50
cy5hbGlnbm1lbnRPZmZzZXQoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgibGF5ZXIgdG9wIGxlZnQiLCBsYXllclRvcExlZnQpOworICAgIH0KIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAppbmRleCA5Zjhl
MWUyNTFiZTIyYmVkM2I1YjhlYzBiMmY5ZmY2ODYyMTQ0OWQxLi4xYjY5NzE0ZWY0ZmFhNmM3MTk0
ZDhlNDZlYzQ5MWM3ZmQ0ODVhMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaApAQCAt
MSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjksNyArMzAsMTMgQEAKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVT
RShOSUNPU0lBKQogCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29uc3RyYWludHMuaCIKICNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNw
YWNlIE5pY29zaWEgeworY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKK30KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00Myw4ICs1MCwxNSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21taXRT
dGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgYXBwbHlMYXllclBvc2l0aW9ucygpIG92ZXJyaWRlOworCisgICAgdm9pZCBkdW1w
UHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhh
dmlvcikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJh
aW50cyBtX2NvbnN0cmFpbnRzOworICAgIFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVy
PiBtX2xheWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1NDUk9MTElOR19OT0RFKFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUsIGlzRml4ZWRO
b2RlKCkpCisKICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJ
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ZDdiYTExOTdhZDFhYzYwYWEwOWU0ODg1YTdhNGUyNTA4ZmNkN2NhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9z
aXRpb25lZE5vZGUuY3BwCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oIgorCisj
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCisKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJT
Y3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5o
IgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVm
PFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZT4gU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2Rl
OjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5v
ZGVJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxpbmdUcmVlUG9zaXRpb25l
ZE5vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Cit9CisKK1Njcm9sbGluZ1RyZWVQb3NpdGlv
bmVkTm9kZTo6U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlKFNjcm9sbGluZ1RyZWUmIHNjcm9s
bGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBTY3JvbGxpbmdUcmVlTm9k
ZShzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZTo6UG9zaXRpb25lZCwgbm9kZUlEKQor
eworfQorCitTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGU6On5TY3JvbGxpbmdUcmVlUG9zaXRp
b25lZE5vZGUoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2Rl
Ojpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3Rh
dGVOb2RlKQoreworICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUmIHBvc2l0
aW9uZWRTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlPihz
dGF0ZU5vZGUpOworCisgICAgaWYgKHBvc2l0aW9uZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7CisgICAgICAgIE5pY29zaWE6OlBsYXRm
b3JtTGF5ZXIqIGxheWVyID0gcG9zaXRpb25lZFN0YXRlTm9kZS5sYXllcigpOworICAgICAgICBt
X2xheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOworICAg
IH0KKworICAgIGlmIChwb3NpdGlvbmVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpSZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rlcykp
CisgICAgICAgIG1fcmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMgPSBwb3NpdGlvbmVkU3Rh
dGVOb2RlLnJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKCk7CisKKyAgICBpZiAocG9zaXRp
b25lZFN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVk
Tm9kZTo6TGF5b3V0Q29uc3RyYWludERhdGEpKQorICAgICAgICBtX2NvbnN0cmFpbnRzID0gcG9z
aXRpb25lZFN0YXRlTm9kZS5sYXlvdXRDb25zdHJhaW50cygpOworCisgICAgaWYgKCFtX3JlbGF0
ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzLmlzRW1wdHkoKSkKKyAgICAgICAgc2Nyb2xsaW5nVHJl
ZSgpLmFjdGl2ZVBvc2l0aW9uZWROb2RlcygpLmFkZCgqdGhpcyk7Cit9CisKK3ZvaWQgU2Nyb2xs
aW5nVHJlZVBvc2l0aW9uZWROb2RlOjphcHBseUxheWVyUG9zaXRpb25zKCkKK3sKKyAgICBhdXRv
IGRlbHRhID0KKyAgICAgICAgW3RoaXNdIHsKKyAgICAgICAgICAgIEZsb2F0U2l6ZSBkZWx0YTsK
KyAgICAgICAgICAgIGZvciAoYXV0byBub2RlSUQgOiBtX3JlbGF0ZWRPdmVyZmxvd1Njcm9sbGlu
Z05vZGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIG5vZGUgPSBzY3JvbGxpbmdUcmVl
KCkubm9kZUZvcklEKG5vZGVJRCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzPFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KG5vZGUpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvJiBvdmVyZmxvd05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlPigqbm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YSAr
PSBvdmVyZmxvd05vZGUuc2Nyb2xsRGVsdGFTaW5jZUxhc3RDb21taXQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiAtZGVsdGE7CisgICAgICAgIH0oKTsKKyAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRp
b24gPSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSAtIGRlbHRhOwor
CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVl
UG9zaXRpb25lZE5vZGUgIiA8PCBzY3JvbGxpbmdOb2RlSUQoKSA8PCAiIGFwcGx5TGF5ZXJQb3Np
dGlvbnM6IG92ZXJmbG93IGRlbHRhICIgPDwgc2Nyb2xsT2Zmc2V0U2luY2VMYXN0Q29tbWl0IDw8
ICIgbW92aW5nIGxheWVyIHRvICIgPDwgbGF5ZXJQb3NpdGlvbik7CisKKyAgICBsYXllclBvc2l0
aW9uIC09IG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCk7CisKKyAgICBBU1NFUlQobV9s
YXllcik7CisgICAgbV9sYXllci0+YWNjZXNzU3RhZ2luZygKKyAgICAgICAgWyZsYXllclBvc2l0
aW9uXShOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjpMYXllclN0YXRlJiBzdGF0ZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGUucG9zaXRpb24gPSBsYXllclBvc2l0aW9uOworICAgICAg
ICAgICAgc3RhdGUuZGVsdGEucG9zaXRpb25DaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfSk7Cit9
CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0
U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNv
bnN0Cit7CisgICAgdHMgPDwgInBvc2l0aW9uZWQgbm9kZSI7CisgICAgU2Nyb2xsaW5nVHJlZU5v
ZGU6OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7CisKKyAgICB0cy5kdW1wUHJvcGVydHko
ImxheW91dCBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOworICAgIHRzLmR1bXBQcm9wZXJ0
eSgicmVsYXRlZCBvdmVyZmxvdyBub2RlcyIsIG1fcmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9k
ZXMuc2l6ZSgpKTsKKworICAgIGlmIChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4
dEJlaGF2aW9ySW5jbHVkZU5vZGVJRHMpIHsKKyAgICAgICAgaWYgKCFtX3JlbGF0ZWRPdmVyZmxv
d1Njcm9sbGluZ05vZGVzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgVGV4dFN0cmVhbTo6R3Jv
dXBTY29wZSBzY29wZSh0cyk7CisgICAgICAgICAgICB0cyA8PCAib3ZlcmZsb3cgbm9kZXMiOwor
ICAgICAgICAgICAgZm9yIChhdXRvIG5vZGVJRCA6IG1fcmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5n
Tm9kZXMpCisgICAgICAgICAgICAgICAgdHMgPDwgIlxuIiA8PCBpbmRlbnQgPDwgIm5vZGVJRCAi
IDw8IG5vZGVJRDsKKyAgICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVQb3NpdGlvbmVkTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODYwMDBlMTJj
NDBmM2Q0YjEwM2UwODM1NDYxZjRmZTg4NmNiMjJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5v
ZGUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKKworI2luY2x1ZGUgIlNjcm9s
bGluZ0NvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBOaWNvc2lhIHsKK2NsYXNzIENvbXBvc2l0
aW9uTGF5ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5nVHJl
ZVBvc2l0aW9uZWROb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZT4gY3JlYXRlKFNjcm9sbGlu
Z1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVQb3Np
dGlvbmVkTm9kZSgpOworCisgICAgY29uc3QgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4mIHJlbGF0
ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZWxhdGVkT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlczsgfQorCitwcml2YXRlOgorICAgIFNjcm9sbGluZ1RyZWVQb3NpdGlv
bmVkTm9kZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQgY29t
bWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlvbnMoKSBvdmVycmlkZTsKKworICAgIHZvaWQg
ZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0
QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOworCisgICAgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4g
bV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlczsKKyAgICBBYnNvbHV0ZVBvc2l0aW9uQ29u
c3RyYWludHMgbV9jb25zdHJhaW50czsKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25M
YXllcj4gbV9sYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUs
IGlzUG9zaXRpb25lZE5vZGUoKSkKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
ICYmIFVTRShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAppbmRleCBk
NjNlYWFlY2YyYzBmMzUxNTg0OTE1NDRiZjZkZWNhZWI1YTMxZWIzLi42YjNkN2Q5MTc0YTNiYzhj
ODVmMGJjNzNmNzBjZGE2ZWI5NGQ3NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMu
TC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzAsNyArMzEsMTQgQEAKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpICYmIFVTRShOSUNPU0lBKQogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5p
Y29zaWFQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2Rl
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVG
aXhlZE5vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgi
CisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
MCwxMiArNTgsOTAgQEAgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6On5TY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZSgpCiAgICAgc2Nyb2xsaW5nVHJlZSgpLmZpeGVkT3JTdGlja3lOb2RlUmVtb3ZlZCgp
OwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNo
aWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9k
ZSYgc3RhdGVOb2RlKQogeworICAgIGF1dG8mIHN0aWNreVN0YXRlTm9kZSA9IGRvd25jYXN0PFNj
cm9sbGluZ1N0YXRlU3RpY2t5Tm9kZT4oc3RhdGVOb2RlKTsKKworICAgIGlmIChzdGlja3lTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7Cisg
ICAgICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqIGxheWVyID0gc3RpY2t5U3RhdGVOb2RlLmxh
eWVyKCk7CisgICAgICAgIG1fbGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxh
eWVyPihsYXllcik7CisgICAgfQorCisgICAgaWYgKHN0aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkK
KyAgICAgICAgbV9jb25zdHJhaW50cyA9IHN0aWNreVN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFp
bnRzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmFwcGx5TGF5ZXJQb3Np
dGlvbnMoKQogeworICAgIGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0aW9u
KCk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiBjb25zdHJhaW5pbmdS
ZWN0QXRMYXN0TGF5b3V0ICIgPDwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0
TGF5b3V0KCkgPDwgIiBsYXN0IGxheWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3Np
dGlvbkF0TGFzdExheW91dCgpIDw8ICIgbGF5ZXJQb3NpdGlvbiAiIDw8IGxheWVyUG9zaXRpb24p
OworCisgICAgbGF5ZXJQb3NpdGlvbiAtPSBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgp
OworCisgICAgQVNTRVJUKG1fbGF5ZXIpOworICAgIG1fbGF5ZXItPmFjY2Vzc1N0YWdpbmcoCisg
ICAgICAgIFsmbGF5ZXJQb3NpdGlvbl0oTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6TGF5ZXJT
dGF0ZSYgc3RhdGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRlLnBvc2l0aW9uID0gbGF5
ZXJQb3NpdGlvbjsKKyAgICAgICAgICAgIHN0YXRlLmRlbHRhLnBvc2l0aW9uQ2hhbmdlZCA9IHRy
dWU7CisgICAgICAgIH0pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpkdW1w
UHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZp
b3IgYmVoYXZpb3IpIGNvbnN0Cit7CisgICAgdHMgPDwgInN0aWNreSBub2RlIjsKKworICAgIFNj
cm9sbGluZ1RyZWVOb2RlOjpkdW1wUHJvcGVydGllcyh0cywgYmVoYXZpb3IpOworICAgIHRzLmR1
bXBQcm9wZXJ0eSgic3RpY2t5IGNvbnN0cmFpbnRzIiwgbV9jb25zdHJhaW50cyk7CisKKyAgICBp
ZiAoYmVoYXZpb3IgJiBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvckluY2x1ZGVMYXll
clBvc2l0aW9ucykgeworICAgICAgICBGbG9hdFBvaW50IGxheWVyVG9wTGVmdDsKKyAgICAgICAg
QVNTRVJUKG1fbGF5ZXIpOworICAgICAgICBtX2xheWVyLT5hY2Nlc3NDb21taXR0ZWQoCisgICAg
ICAgICAgICBbdGhpcywgJmxheWVyVG9wTGVmdF0oTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6
TGF5ZXJTdGF0ZSYgc3RhdGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbGF5ZXJU
b3BMZWZ0ID0gc3RhdGUucG9zaXRpb24gLSB0b0Zsb2F0U2l6ZShzdGF0ZS5hbmNob3JQb2ludC54
eSgpKSAqIHN0YXRlLnNpemUgKyBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJsYXllciB0b3AgbGVmdCIs
IGxheWVyVG9wTGVmdCk7CisgICAgfQorfQorCitGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVTdGlj
a3lOb2RlOjpjb21wdXRlTGF5ZXJQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgYXV0byBjb21wdXRl
TGF5ZXJQb3NpdGlvbkZvclNjcm9sbGluZ05vZGUgPSBbJl0oU2Nyb2xsaW5nVHJlZU5vZGUmIHNj
cm9sbGluZ05vZGUpIHsKKyAgICAgICAgRmxvYXRSZWN0IGNvbnN0cmFpbmluZ1JlY3Q7CisgICAg
ICAgIGlmIChpczxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2Rl
KSkgeworICAgICAgICAgICAgYXV0byYgZnJhbWVTY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSk7CisgICAgICAgICAg
ICBjb25zdHJhaW5pbmdSZWN0ID0gZnJhbWVTY3JvbGxpbmdOb2RlLmxheW91dFZpZXdwb3J0KCk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdXRvJiBvdmVyZmxvd1Njcm9sbGluZ05v
ZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPihzY3JvbGxp
bmdOb2RlKTsKKyAgICAgICAgICAgIGNvbnN0cmFpbmluZ1JlY3QgPSBGbG9hdFJlY3Qob3ZlcmZs
b3dTY3JvbGxpbmdOb2RlLmN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCBtX2NvbnN0cmFpbnRzLmNv
bnN0cmFpbmluZ1JlY3RBdExhc3RMYXlvdXQoKS5zaXplKCkpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KGNv
bnN0cmFpbmluZ1JlY3QpOworICAgIH07CisKKyAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gcGFy
ZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnQoKSkgeworICAgICAg
ICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqYW5jZXN0b3Ip
KSB7CisgICAgICAgICAgICBhdXRvJiBvdmVyZmxvd1Byb3h5Tm9kZSA9IGRvd25jYXN0PFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZT4oKmFuY2VzdG9yKTsKKyAgICAgICAgICAg
IGF1dG8gb3ZlcmZsb3dOb2RlID0gc2Nyb2xsaW5nVHJlZSgpLm5vZGVGb3JJRChvdmVyZmxvd1By
b3h5Tm9kZS5vdmVyZmxvd1Njcm9sbGluZ05vZGVJRCgpKTsKKyAgICAgICAgICAgIGlmICghb3Zl
cmZsb3dOb2RlKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICByZXR1cm4g
Y29tcHV0ZUxheWVyUG9zaXRpb25Gb3JTY3JvbGxpbmdOb2RlKCpvdmVyZmxvd05vZGUpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqYW5j
ZXN0b3IpKQorICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVMYXllclBvc2l0aW9uRm9yU2Nyb2xs
aW5nTm9kZSgqYW5jZXN0b3IpOworCisgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlRml4ZWRO
b2RlPigqYW5jZXN0b3IpIHx8IGlzPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPigqYW5jZXN0b3Ip
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBzY3JvbGxpbmcgdHJlZSBub2Rl
cyBhdCBhbGwgZm9yIG5lc3RlZCBjYXNlcz8KKyAgICAgICAgICAgIHJldHVybiBtX2NvbnN0cmFp
bnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbV9jb25zdHJhaW50cy5sYXllclBvc2l0
aW9uQXRMYXN0TGF5b3V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUuaAppbmRleCBhM2QxOTFlYTliOWY3NTgxYzg0OGUxZDlhOWJmYzVl
ZTUzYjU5M2ZhLi4wYTQyMmEwMTRlNzkxNjE2ZThlODYzNWI3YmY1MWE3ZjJhMDc0ODIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5M
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw3ICszMCwxMyBAQAogCiAj
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCiAKKyNpbmNsdWRlICJT
Y3JvbGxpbmdDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgTmljb3NpYSB7CitjbGFzcyBDb21w
b3NpdGlvbkxheWVyOworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDggKzUxLDE2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNj
cm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYXBwbHlMYXllclBvc2l0aW9u
cygpIG92ZXJyaWRlOwogCisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0m
LCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
ICBGbG9hdFBvaW50IGNvbXB1dGVMYXllclBvc2l0aW9uKCkgY29uc3Q7CisKKyAgICBTdGlja3lQ
b3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgbV9jb25zdHJhaW50czsKKyAgICBSZWZQdHI8Tmlj
b3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9sYXllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZSwgaXNTdGlja3lOb2RlKCkpCisKICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379533</attachid>
            <date>2019-09-25 02:46:52 -0700</date>
            <delta_ts>2019-09-25 02:46:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-202100-20190925114651.patch</filename>
            <type>text/plain</type>
            <size>25320</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRiZDU3MzkzOTZkYWVk
YTI4MGQyMzM3NjQ3OTQxZjM2Njk0YTM3Zi4uMTkxZmU2ZDY0M2QzNTIzNmRjYjRlMTIzNjc4MjVk
ZjQ0NDZlNmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE5LTA5LTI1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbTmljb3NpYV0gQWRk
IGltcGxlbWVudGF0aW9ucyBmb3IgZml4ZWQsIHBvc2l0aW9uZWQsIHN0aWNreSBTY3JvbGxpbmdU
cmVlTm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMjEwMAorCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEgQ2FtcG9zLgorCisg
ICAgICAgIEZpbGwgaW4gdGhlIE5pY29zaWEgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZSwKKyAgICAgICAgU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlIGFu
ZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSBjbGFzc2VzLgorCisgICAgICAgIFRoZSBpbXBsZW1l
bnRhdGlvbnMgaW4gbWFqb3JpdHkgcmVwZWF0IHdoYXQgdGhlIENvY29hIGltcGxlbWVudGF0aW9u
cworICAgICAgICBkbywgd2l0aCB0aGUgbWFpbiBkaWZmZXJlbmNlIGJlaW5nIHRoZSBOaWNvc2lh
LXNwZWNpZmljIGxheWVyIHN0YXRlCisgICAgICAgIGFwcGxpY2F0aW9uLiBTaGFyaW5nIG1vcmUg
b2YgdGhpcyBsb2dpYyBzaG91bGQgYmUgaW52ZXN0aWdhdGVkIGluIHRoZQorICAgICAgICBmdXR1
cmUuCisKKyAgICAgICAgKiBQbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlOiBBZGQgU2Nyb2xsaW5n
VHJlZVBvc2l0aW9uZWROb2RlIHRvIGJ1aWxkLgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OiBE
aXR0by4KKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDogRGl0dG8uCisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6YXBwbHlMYXllclBv
c2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpkdW1w
UHJvcGVydGllcyBjb25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlRml4ZWROb2RlLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6Y29tbWl0
U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlUG9z
aXRpb25lZE5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlOjpkdW1wUHJvcGVydGllcyBjb25zdCk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGU6OnJl
bGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjphcHBseUxheWVyUG9z
aXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpkdW1w
UHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZTo6Y29tcHV0ZUxheWVyUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaDoKKwogMjAxOS0wOS0yNCAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9u
c10gUmVtb3ZpbmcgYW4gZWxlbWVudCBzaG91bGQgb25seSBjYW5jZWwgaXRzIGRlY2xhcmF0aXZl
IGFuaW1hdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRp
b24uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4
IDcxOTNiYzVhZTEwYjI0NzI2ZWY4OWVmOTdlMDM5ZDZlNDBmOGM2NWQuLmQ5NjhlNmM2NGUyYmY5
MjFjMGVlM2YxMDkxMmIwNmRmMzVmYmU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5
U3RhdGlvbi5jbWFrZQpAQCAtMjEsNiArMjEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKICAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuY3Bw
CiAgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTmljb3NpYS5jcHAKICAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVO
aWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0
aW9uZWROb2RlLmNwcAogICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuY3BwCiAKICAgICBwYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVh
ZEdlbmVyaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CmluZGV4IDA0ZWJiZmMwMmIyZjk1MDliMDU3
ODU4NjE3ZGM4NDE2MzM4ZDBkMGMuLmQ0NGRhMTcxYmZhYTJjMmI1ODMwMDdhOGIxMjk4YWVmMGUz
YmMzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CkBAIC01NSw2ICs1NSw3IEBAIHBhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCiBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogCiBwYWdlL3Njcm9sbGluZy9nZW5lcmlj
L1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CmluZGV4IDJmOThm
ZmViZjAyM2Y4ZGNlN2U2NjExYWI4ZTJhZTQ3NjFmNGY0ZTYuLjk5OThiNzZhZThiNjYzNThhZTc5
ZDliZWI3NjYzYTQyZDQzODExMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNX
UEUudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CkBAIC01Miw2ICs1Miw3
IEBAIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5jcHAK
IHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKIHBhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEu
Y3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogCiBwYWdlL3Nj
cm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlRml4ZWROb2RlLmNwcAppbmRleCBjOTBkYmY4MWUyOGFkNGI3NzY0YTQ5OGJkNTdiYjljYjgy
MDc0MDk5Li42NzJkOWMyYzVhZGQxNGI1YWRhMDQyNzAzMTMwOWRiN2ZhZWVlYzNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVG
aXhlZE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDcgKzMxLDEyIEBACiAKICNp
ZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKIAorI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlNj
cm9sbGluZ1N0YXRlRml4ZWROb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgorI2lu
Y2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTAsMTIg
KzU2LDc0IEBAIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6On5TY3JvbGxpbmdUcmVlRml4ZWROb2Rl
KCkKICAgICBzY3JvbGxpbmdUcmVlKCkuZml4ZWRPclN0aWNreU5vZGVSZW1vdmVkKCk7CiB9CiAK
LXZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihj
b25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKQordm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpj
b21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVO
b2RlKQogeworICAgIGF1dG8mIGZpeGVkU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3Rh
dGVGaXhlZE5vZGU+KHN0YXRlTm9kZSk7CisKKyAgICBpZiAoZml4ZWRTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7CisgICAgICAgIE5pY29z
aWE6OlBsYXRmb3JtTGF5ZXIqIGxheWVyID0gZml4ZWRTdGF0ZU5vZGUubGF5ZXIoKTsKKyAgICAg
ICAgbV9sYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KGxheWVyKTsK
KyAgICB9CisKKyAgICBpZiAoZml4ZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlRml4ZWROb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKKyAgICAgICAgbV9jb25z
dHJhaW50cyA9IGZpeGVkU3RhdGVOb2RlLnZpZXdwb3J0Q29uc3RyYWludHMoKTsKIH0KIAogdm9p
ZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjphcHBseUxheWVyUG9zaXRpb25zKCkKIHsKKyAgICBh
dXRvIGNvbXB1dGVMYXllclBvc2l0aW9uID0gWyZdIHsKKyAgICAgICAgRmxvYXRTaXplIG92ZXJm
bG93U2Nyb2xsRGVsdGE7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgd3JvbmcgaW4g
Y29tcGxleCBjYXNlcyB3aGVyZSB0aGUgZml4ZWQgZWxlbWVudCBpcyBpbnNpZGUgYSBwb3NpdGlv
bmVkIG5vZGUgYXMKKyAgICAgICAgLy8gICAgICAgIHRoZSBzY3JvbGwgY29udGFpbmVyIG9yZGVy
IGRvZXMgbm90IG1hdGNoIHRoZSBzY3JvbGxpbmcgdHJlZSBhbmNlc3RvciBvcmRlci4KKyAgICAg
ICAgZm9yIChhdXRvKiBub2RlID0gcGFyZW50KCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnQo
KSkgeworICAgICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+
KCpub2RlKSkgeworICAgICAgICAgICAgICAgIC8vIEZpeGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVk
IHJlbGF0aXZlIHRvIHRoZSBjb250YWluaW5nIGZyYW1lIHNjcm9sbGluZyBub2RlLgorICAgICAg
ICAgICAgICAgIC8vIFdlIGJhaWwgb3V0IGFmdGVyIGZpbmRpbmcgb25lLgorICAgICAgICAgICAg
ICAgIGF1dG8gbGF5b3V0Vmlld3BvcnQgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlPigqbm9kZSkubGF5b3V0Vmlld3BvcnQoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uRm9yVmlld3BvcnRSZWN0KGxheW91dFZpZXdw
b3J0KSAtIG92ZXJmbG93U2Nyb2xsRGVsdGE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChpczxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPigqbm9kZSkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBUbyBrZWVwIHRoZSBsYXllciBzdGlsbCBkdXJpbmcgYXN5bmMgc2Ny
b2xsaW5nIHdlIGFkanVzdCBieSBob3cgbXVjaCB0aGUgcG9zaXRpb24gaGFzIGNoYW5nZWQgc2lu
Y2UgbGF5b3V0LgorICAgICAgICAgICAgICAgIGF1dG8mIG92ZXJmbG93Tm9kZSA9IGRvd25jYXN0
PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KCpub2RlKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIGxvY2FsRGVsdGEgPSBvdmVyZmxvd05vZGUubGFzdENvbW1pdHRlZFNjcm9sbFBv
c2l0aW9uKCkgLSBvdmVyZmxvd05vZGUuY3VycmVudFNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3dTY3JvbGxEZWx0YSArPSBsb2NhbERlbHRhOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gRmxvYXRQb2ludCgpOworICAgIH07CisKKyAgICBhdXRvIGxheWVyUG9zaXRpb24gPSBjb21w
dXRlTGF5ZXJQb3NpdGlvbigpOworCisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3Ry
ZWFtIDw8ICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwg
IiByZWxhdGVkTm9kZVNjcm9sbFBvc2l0aW9uRGlkQ2hhbmdlOiB2aWV3cG9ydFJlY3RBdExhc3RM
YXlvdXQgIiA8PCBtX2NvbnN0cmFpbnRzLnZpZXdwb3J0UmVjdEF0TGFzdExheW91dCgpIDw8ICIg
bGFzdCBsYXllciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlv
dXQoKSA8PCAiIGxheWVyUG9zaXRpb24gIiA8PCBsYXllclBvc2l0aW9uKTsKKworICAgIEFTU0VS
VChtX2xheWVyKTsKKyAgICBtX2xheWVyLT5hY2Nlc3NTdGFnaW5nKAorICAgICAgICBbJmxheWVy
UG9zaXRpb25dKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0YXRlKQor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0ZS5wb3NpdGlvbiA9IGxheWVyUG9zaXRpb247Cisg
ICAgICAgICAgICBzdGF0ZS5kZWx0YS5wb3NpdGlvbkNoYW5nZWQgPSB0cnVlOworICAgICAgICB9
KTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0
U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNv
bnN0Cit7CisgICAgdHMgPDwgImZpeGVkIG5vZGUiOworICAgIFNjcm9sbGluZ1RyZWVOb2RlOjpk
dW1wUHJvcGVydGllcyh0cywgYmVoYXZpb3IpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZml4ZWQg
Y29uc3RyYWludHMiLCBtX2NvbnN0cmFpbnRzKTsKKworICAgIGlmIChiZWhhdmlvciAmIFNjcm9s
bGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9ySW5jbHVkZUxheWVyUG9zaXRpb25zKSB7CisgICAg
ICAgIEZsb2F0UG9pbnQgbGF5ZXJUb3BMZWZ0OworICAgICAgICBBU1NFUlQobV9sYXllcik7Cisg
ICAgICAgIG1fbGF5ZXItPmFjY2Vzc0NvbW1pdHRlZCgKKyAgICAgICAgICAgIFt0aGlzLCAmbGF5
ZXJUb3BMZWZ0XShOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjpMYXllclN0YXRlJiBzdGF0ZSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsYXllclRvcExlZnQgPSBzdGF0ZS5wb3Np
dGlvbiAtIHRvRmxvYXRTaXplKHN0YXRlLmFuY2hvclBvaW50Lnh5KCkpICogc3RhdGUuc2l6ZSAr
IG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCk7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoImxheWVyIHRvcCBsZWZ0IiwgbGF5ZXJUb3BMZWZ0KTsKKyAg
ICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2Rl
LmgKaW5kZXggOWY4ZTFlMjUxYmUyMmJlZDNiNWI4ZWMwYjJmOWZmNjg2MjE0NDlkMS4uMWI2OTcx
NGVmNGZhYTZjNzE5NGQ4ZTQ2ZWM0OTFjN2ZkNDg1YTM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4
ZWROb2RlLmgKQEAgLTEsNSArMSw2IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxp
YSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzMwLDEzIEBACiAKICNpZiBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKIAorI2luY2x1ZGUgIlNjcm9sbGluZ0NvbnN0cmFpbnRz
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBOaWNvc2lhIHsKK2NsYXNzIENvbXBvc2l0aW9uTGF5ZXI7Cit9CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsOCArNTAsMTUgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUm
KSBvdmVycmlkZTsKICAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlvbnMoKSBvdmVycmlkZTsKKwor
ICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5nU3RhdGVU
cmVlQXNUZXh0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOworCisgICAgRml4ZWRQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWludHMgbV9jb25zdHJhaW50czsKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29t
cG9zaXRpb25MYXllcj4gbV9sYXllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlRml4ZWRO
b2RlLCBpc0ZpeGVkTm9kZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykg
JiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTRmNDRmMzVkN2U2OTYxYTk5NWJkZTI5N2Y2YzljZjdmYzM2YTUzNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlUG9zaXRpb25l
ZE5vZGUuaCIKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQor
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgi
CisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oIgorI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1JlZjxTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGU+IFNjcm9sbGluZ1RyZWVQ
b3NpdGlvbmVkTm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9s
bGluZ05vZGVJRCBub2RlSUQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5n
VHJlZVBvc2l0aW9uZWROb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkpOworfQorCitTY3JvbGxp
bmdUcmVlUG9zaXRpb25lZE5vZGU6OlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZShTY3JvbGxp
bmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQorICAgIDogU2Ny
b2xsaW5nVHJlZU5vZGUoc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGU6OlBvc2l0aW9u
ZWQsIG5vZGVJRCkKK3sKK30KKworU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlOjp+U2Nyb2xs
aW5nVHJlZVBvc2l0aW9uZWROb2RlKCkgPSBkZWZhdWx0OworCit2b2lkIFNjcm9sbGluZ1RyZWVQ
b3NpdGlvbmVkTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdT
dGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBjb25zdCBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9u
ZWROb2RlJiBwb3NpdGlvbmVkU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVQb3Np
dGlvbmVkTm9kZT4oc3RhdGVOb2RlKTsKKworICAgIGlmIChwb3NpdGlvbmVkU3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkgeworICAgICAgICBO
aWNvc2lhOjpQbGF0Zm9ybUxheWVyKiBsYXllciA9IHBvc2l0aW9uZWRTdGF0ZU5vZGUubGF5ZXIo
KTsKKyAgICAgICAgbV9sYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+
KGxheWVyKTsKKyAgICB9CisKKyAgICBpZiAocG9zaXRpb25lZFN0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZTo6UmVsYXRlZE92ZXJmbG93U2Ny
b2xsaW5nTm9kZXMpKQorICAgICAgICBtX3JlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzID0g
cG9zaXRpb25lZFN0YXRlTm9kZS5yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcygpOworCisg
ICAgaWYgKHBvc2l0aW9uZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlUG9zaXRpb25lZE5vZGU6OkxheW91dENvbnN0cmFpbnREYXRhKSkKKyAgICAgICAgbV9jb25z
dHJhaW50cyA9IHBvc2l0aW9uZWRTdGF0ZU5vZGUubGF5b3V0Q29uc3RyYWludHMoKTsKKworICAg
IGlmICghbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rlcy5pc0VtcHR5KCkpCisgICAgICAg
IHNjcm9sbGluZ1RyZWUoKS5hY3RpdmVQb3NpdGlvbmVkTm9kZXMoKS5hZGQoKnRoaXMpOworfQor
Cit2b2lkIFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6YXBwbHlMYXllclBvc2l0aW9ucygp
Cit7CisgICAgRmxvYXRTaXplIGRlbHRhOworICAgIGZvciAoYXV0byBub2RlSUQgOiBtX3JlbGF0
ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKSB7CisgICAgICAgIGlmIChhdXRvKiBub2RlID0gc2Ny
b2xsaW5nVHJlZSgpLm5vZGVGb3JJRChub2RlSUQpKSB7CisgICAgICAgICAgICBpZiAoaXM8U2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4obm9kZSkpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvJiBvdmVyZmxvd05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlPigqbm9kZSk7CisgICAgICAgICAgICAgICAgZGVsdGEgKz0gb3ZlcmZsb3dOb2Rl
LnNjcm9sbERlbHRhU2luY2VMYXN0Q29tbWl0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb24gPSBtX2NvbnN0cmFpbnRzLmxh
eWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSArIGRlbHRhOworCisgICAgTE9HX1dJVEhfU1RSRUFN
KFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUgIiA8PCBz
Y3JvbGxpbmdOb2RlSUQoKSA8PCAiIGFwcGx5TGF5ZXJQb3NpdGlvbnM6IG92ZXJmbG93IGRlbHRh
ICIgPDwgc2Nyb2xsT2Zmc2V0U2luY2VMYXN0Q29tbWl0IDw8ICIgbW92aW5nIGxheWVyIHRvICIg
PDwgbGF5ZXJQb3NpdGlvbik7CisKKyAgICBsYXllclBvc2l0aW9uIC09IG1fY29uc3RyYWludHMu
YWxpZ25tZW50T2Zmc2V0KCk7CisKKyAgICBBU1NFUlQobV9sYXllcik7CisgICAgbV9sYXllci0+
YWNjZXNzU3RhZ2luZygKKyAgICAgICAgWyZsYXllclBvc2l0aW9uXShOaWNvc2lhOjpDb21wb3Np
dGlvbkxheWVyOjpMYXllclN0YXRlJiBzdGF0ZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGUucG9zaXRpb24gPSBsYXllclBvc2l0aW9uOworICAgICAgICAgICAgc3RhdGUuZGVsdGEucG9z
aXRpb25DaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJl
ZVBvc2l0aW9uZWROb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5n
U3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0Cit7CisgICAgdHMgPDwgInBv
c2l0aW9uZWQgbm9kZSI7CisgICAgU2Nyb2xsaW5nVHJlZU5vZGU6OmR1bXBQcm9wZXJ0aWVzKHRz
LCBiZWhhdmlvcik7CisKKyAgICB0cy5kdW1wUHJvcGVydHkoImxheW91dCBjb25zdHJhaW50cyIs
IG1fY29uc3RyYWludHMpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVsYXRlZCBvdmVyZmxvdyBu
b2RlcyIsIG1fcmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMuc2l6ZSgpKTsKKworICAgIGlm
IChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9ySW5jbHVkZU5vZGVJ
RHMpIHsKKyAgICAgICAgaWYgKCFtX3JlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBzY29wZSh0cyk7Cisg
ICAgICAgICAgICB0cyA8PCAib3ZlcmZsb3cgbm9kZXMiOworICAgICAgICAgICAgZm9yIChhdXRv
IG5vZGVJRCA6IG1fcmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMpCisgICAgICAgICAgICAg
ICAgdHMgPDwgIlxuIiA8PCBpbmRlbnQgPDwgIm5vZGVJRCAiIDw8IG5vZGVJRDsKKyAgICAgICAg
fQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9z
aXRpb25lZE5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OGFlZTJkYzY2ZjZmNDM0OGM2ODYwYjVjM2MxOTc1
MDI0Zjk5NTdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaApAQCAtMCwwICsxLDY3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KSAmJiBVU0UoTklDT1NJQSkKKworI2luY2x1ZGUgIlNjcm9sbGluZ0NvbnN0cmFpbnRzLmgiCisj
aW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBOaWNvc2lhIHsKK2NsYXNzIENvbXBvc2l0aW9uTGF5ZXI7Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlIGZpbmFs
IDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNj
cm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxp
bmdOb2RlSUQpOworICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZSgpOwor
CisgICAgY29uc3QgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4mIHJlbGF0ZWRPdmVyZmxvd1Njcm9s
bGluZ05vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
czsgfQorCitwcml2YXRlOgorICAgIFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZShTY3JvbGxp
bmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVD
aGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFw
cGx5TGF5ZXJQb3NpdGlvbnMoKSBvdmVycmlkZTsKKworICAgIHZvaWQgZHVtcFByb3BlcnRpZXMo
V1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4gbV9yZWxhdGVkT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlczsKKyAgICBBYnNvbHV0ZVBvc2l0aW9uQ29uc3RyYWludHMgbV9jb25z
dHJhaW50czsKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9sYXllcjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19T
Q1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUsIGlzUG9zaXRpb25lZE5v
ZGUoKSkKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lB
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAppbmRleCBkNjNlYWFlY2YyYzBmMzUx
NTg0OTE1NDRiZjZkZWNhZWI1YTMxZWIzLi42YjNkN2Q5MTc0YTNiYzhjODVmMGJjNzNmNzBjZGE2
ZWI5NGQ3NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcApAQCAtMSw1ICsx
LDYgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzAsNyArMzEsMTQgQEAKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNP
U0lBKQogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxh
eWVyLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCIKKyNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVkZSAiU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MCwxMiArNTgsOTAgQEAg
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6On5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSgpCiAgICAg
c2Nyb2xsaW5nVHJlZSgpLmZpeGVkT3JTdGlja3lOb2RlUmVtb3ZlZCgpOwogfQogCi12b2lkIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNj
cm9sbGluZ1N0YXRlTm9kZSYpCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRT
dGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQog
eworICAgIGF1dG8mIHN0aWNreVN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZT4oc3RhdGVOb2RlKTsKKworICAgIGlmIChzdGlja3lTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7CisgICAgICAgIE5pY29zaWE6
OlBsYXRmb3JtTGF5ZXIqIGxheWVyID0gc3RpY2t5U3RhdGVOb2RlLmxheWVyKCk7CisgICAgICAg
IG1fbGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7Cisg
ICAgfQorCisgICAgaWYgKHN0aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTdGlja3lOb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKKyAgICAgICAgbV9jb25z
dHJhaW50cyA9IHN0aWNreVN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7CiB9CiAKIHZv
aWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQogeworICAg
IGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXllclBvc2l0aW9uKCk7CisKKyAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
ICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0
ICIgPDwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBs
YXN0IGxheWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91
dCgpIDw8ICIgbGF5ZXJQb3NpdGlvbiAiIDw8IGxheWVyUG9zaXRpb24pOworCisgICAgbGF5ZXJQ
b3NpdGlvbiAtPSBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOworCisgICAgQVNTRVJU
KG1fbGF5ZXIpOworICAgIG1fbGF5ZXItPmFjY2Vzc1N0YWdpbmcoCisgICAgICAgIFsmbGF5ZXJQ
b3NpdGlvbl0oTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6TGF5ZXJTdGF0ZSYgc3RhdGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRlLnBvc2l0aW9uID0gbGF5ZXJQb3NpdGlvbjsKKyAg
ICAgICAgICAgIHN0YXRlLmRlbHRhLnBvc2l0aW9uQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIH0p
OworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0
U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNv
bnN0Cit7CisgICAgdHMgPDwgInN0aWNreSBub2RlIjsKKworICAgIFNjcm9sbGluZ1RyZWVOb2Rl
OjpkdW1wUHJvcGVydGllcyh0cywgYmVoYXZpb3IpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgic3Rp
Y2t5IGNvbnN0cmFpbnRzIiwgbV9jb25zdHJhaW50cyk7CisKKyAgICBpZiAoYmVoYXZpb3IgJiBT
Y3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvckluY2x1ZGVMYXllclBvc2l0aW9ucykgewor
ICAgICAgICBGbG9hdFBvaW50IGxheWVyVG9wTGVmdDsKKyAgICAgICAgQVNTRVJUKG1fbGF5ZXIp
OworICAgICAgICBtX2xheWVyLT5hY2Nlc3NDb21taXR0ZWQoCisgICAgICAgICAgICBbdGhpcywg
JmxheWVyVG9wTGVmdF0oTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6TGF5ZXJTdGF0ZSYgc3Rh
dGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbGF5ZXJUb3BMZWZ0ID0gc3RhdGUu
cG9zaXRpb24gLSB0b0Zsb2F0U2l6ZShzdGF0ZS5hbmNob3JQb2ludC54eSgpKSAqIHN0YXRlLnNp
emUgKyBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOworICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJsYXllciB0b3AgbGVmdCIsIGxheWVyVG9wTGVmdCk7
CisgICAgfQorfQorCitGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21wdXRl
TGF5ZXJQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgYXV0byBjb21wdXRlTGF5ZXJQb3NpdGlvbkZv
clNjcm9sbGluZ05vZGUgPSBbJl0oU2Nyb2xsaW5nVHJlZU5vZGUmIHNjcm9sbGluZ05vZGUpIHsK
KyAgICAgICAgRmxvYXRSZWN0IGNvbnN0cmFpbmluZ1JlY3Q7CisgICAgICAgIGlmIChpczxTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKSkgeworICAgICAgICAg
ICAgYXV0byYgZnJhbWVTY3JvbGxpbmdOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSk7CisgICAgICAgICAgICBjb25zdHJhaW5pbmdS
ZWN0ID0gZnJhbWVTY3JvbGxpbmdOb2RlLmxheW91dFZpZXdwb3J0KCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBhdXRvJiBvdmVyZmxvd1Njcm9sbGluZ05vZGUgPSBkb3duY2FzdDxT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKTsKKyAgICAg
ICAgICAgIGNvbnN0cmFpbmluZ1JlY3QgPSBGbG9hdFJlY3Qob3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
LmN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCBtX2NvbnN0cmFpbnRzLmNvbnN0cmFpbmluZ1JlY3RB
dExhc3RMYXlvdXQoKS5zaXplKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2NvbnN0
cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFpbmluZ1JlY3Qp
OworICAgIH07CisKKyAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gcGFyZW50KCk7IGFuY2VzdG9y
OyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAoaXM8U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlPigqYW5jZXN0b3IpKSB7CisgICAgICAgICAg
ICBhdXRvJiBvdmVyZmxvd1Byb3h5Tm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbFByb3h5Tm9kZT4oKmFuY2VzdG9yKTsKKyAgICAgICAgICAgIGF1dG8gb3ZlcmZsb3dO
b2RlID0gc2Nyb2xsaW5nVHJlZSgpLm5vZGVGb3JJRChvdmVyZmxvd1Byb3h5Tm9kZS5vdmVyZmxv
d1Njcm9sbGluZ05vZGVJRCgpKTsKKyAgICAgICAgICAgIGlmICghb3ZlcmZsb3dOb2RlKQorICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICByZXR1cm4gY29tcHV0ZUxheWVyUG9z
aXRpb25Gb3JTY3JvbGxpbmdOb2RlKCpvdmVyZmxvd05vZGUpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlPigqYW5jZXN0b3IpKQorICAgICAg
ICAgICAgcmV0dXJuIGNvbXB1dGVMYXllclBvc2l0aW9uRm9yU2Nyb2xsaW5nTm9kZSgqYW5jZXN0
b3IpOworCisgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlRml4ZWROb2RlPigqYW5jZXN0b3Ip
IHx8IGlzPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPigqYW5jZXN0b3IpKSB7CisgICAgICAgICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCBzY3JvbGxpbmcgdHJlZSBub2RlcyBhdCBhbGwgZm9yIG5l
c3RlZCBjYXNlcz8KKyAgICAgICAgICAgIHJldHVybiBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRp
b25BdExhc3RMYXlvdXQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaAppbmRleCBhM2QxOTFlYTliOWY3NTgxYzg0OGUxZDlhOWJmYzVlZTUzYjU5M2ZhLi4wYTQy
MmEwMTRlNzkxNjE2ZThlODYzNWI3YmY1MWE3ZjJhMDc0ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBJ
Z2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw3ICszMCwxMyBAQAogCiAjaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCiAKKyNpbmNsdWRlICJTY3JvbGxpbmdDb25zdHJh
aW50cy5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgTmljb3NpYSB7CitjbGFzcyBDb21wb3NpdGlvbkxheWVyOwor
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDggKzUxLDE2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9k
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYXBwbHlMYXllclBvc2l0aW9ucygpIG92ZXJyaWRlOwog
CisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0
ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBGbG9hdFBvaW50IGNv
bXB1dGVMYXllclBvc2l0aW9uKCkgY29uc3Q7CisKKyAgICBTdGlja3lQb3NpdGlvblZpZXdwb3J0
Q29uc3RyYWludHMgbV9jb25zdHJhaW50czsKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRp
b25MYXllcj4gbV9sYXllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSwg
aXNTdGlja3lOb2RlKCkpCisKICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBV
U0UoTklDT1NJQSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>