<?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>198475</bug_id>
          
          <creation_ts>2019-06-02 23:14:22 -0700</creation_ts>
          <short_desc>[Nicosia] support async scrolling</short_desc>
          <delta_ts>2022-07-01 13:36:05 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>DoNotImportToRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>187385</dependson>
    
    <dependson>198476</dependson>
    
    <dependson>198791</dependson>
    
    <dependson>198998</dependson>
    
    <dependson>201130</dependson>
    
    <dependson>201131</dependson>
    
    <dependson>201132</dependson>
    
    <dependson>201133</dependson>
    
    <dependson>202100</dependson>
    
    <dependson>202201</dependson>
    
    <dependson>202256</dependson>
    
    <dependson>202275</dependson>
    
    <dependson>202306</dependson>
    
    <dependson>202357</dependson>
    
    <dependson>202358</dependson>
    
    <dependson>202397</dependson>
    
    <dependson>202398</dependson>
    
    <dependson>202449</dependson>
    
    <dependson>202509</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>bfulgham</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1541181</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-06-02 23:14:22 -0700</bug_when>
    <thetext>Spin-off from bug #187385.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541182</commentid>
    <comment_count>1</comment_count>
      <attachid>371176</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-06-02 23:15:23 -0700</bug_when>
    <thetext>Created attachment 371176
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543269</commentid>
    <comment_count>2</comment_count>
      <attachid>371726</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-06-10 00:02:57 -0700</bug_when>
    <thetext>Created attachment 371726
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1547262</commentid>
    <comment_count>3</comment_count>
      <attachid>372735</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-06-23 23:48:42 -0700</bug_when>
    <thetext>Created attachment 372735
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564429</commentid>
    <comment_count>4</comment_count>
      <attachid>377119</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-08-23 04:02:50 -0700</bug_when>
    <thetext>Created attachment 377119
WIP -- updated</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371176</attachid>
            <date>2019-06-02 23:15:23 -0700</date>
            <delta_ts>2019-06-10 00:02:55 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>asyncscroll.patch</filename>
            <type>text/plain</type>
            <size>53081</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDcxOTNiYzVhZTEw
Li5kOTY4ZTZjNjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtl
CkBAIC0yMSw2ICsyMSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKICAgICBwYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNw
cAogICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCisg
ICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3Bw
CiAgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAK
IAogICAgIHBhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0dUSy50eHQKaW5kZXggNzVmYzBhNWQzZDguLjNjMTUxZjNmYzY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzR1RLLnR4dApAQCAtNTEsNiArNTEsNyBAQCBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1N0YXRlTm9kZU5pY29zaWEuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
VHJlZVBvc2l0aW9uZWROb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZS5jcHAKIAogcGFnZS9zY3JvbGxpbmcvZ2VuZXJpYy9TY3JvbGxpbmdUaHJl
YWRHZW5lcmljLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dAppbmRleCBkYmJkOTk1YWU0OS4uZjA3NjJm
MzJiZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CkBAIC01Miw2ICs1Miw3IEBAIHBhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCiBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogCiBwYWdlL3Njcm9sbGluZy9nZW5lcmlj
L1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggNGIwM2RiODU5NTYu
LmU2ZWRmNThmMDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotI2lmICFQTEFURk9STShNQUMpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCisjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVVTRShOSUNPU0lBKQogUmVmPFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yPiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nQ29vcmRpbmF0b3IocGFnZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDhjMTQyM2NhZDc2Li40MWY2MGJhYjc2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlICJTY3Jv
bGxpbmdUcmVlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisjaWYgVVNF
KE5JQ09TSUEpCisjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxp
bmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKQEAgLTk3LDcgKzEw
MSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOCiAgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkV4cGVjdHNXaGVlbEV2ZW50VGVz
dFRyaWdnZXIpKQogICAgICAgICBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIgPSBzdGF0
ZS5leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKE5JQ09TSUEpCiAgICAgaWYgKHN0YXRlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5l
ckxheWVyKSkKICAgICAgICAgbV9zY3JvbGxDb250YWluZXJMYXllciA9IHN0YXRlLnNjcm9sbENv
bnRhaW5lckxheWVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDZiZDgyZmQyYzVjLi44
NmIxZDA5ZjdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYg
RU5BQkxFKEFTWU5DX1NDUk9MTElORykKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvci5o
IgpAQCAtMTI3LDYgKzEyOCw5IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgZXhwZWN0c1doZWVs
RXZlbnRUZXN0VHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0
VHJpZ2dlcjsgfQogCisgICAgUGxhdGZvcm1MYXllciogc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX3Njcm9sbENvbnRhaW5lckxheWVyLmdldCgpOyB9CisgICAgUGxhdGZv
cm1MYXllciogc2Nyb2xsZWRDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxl
ZENvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KKwogICAgIExheW91dFBvaW50IHBhcmVudFRvTG9jYWxQ
b2ludChMYXlvdXRQb2ludCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGF5b3V0UG9pbnQgbG9jYWxU
b0NvbnRlbnRzUG9pbnQoTGF5b3V0UG9pbnQpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xNTIsNiAr
MTU2LDkgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0FM
YXllcj4gbV9zY3JvbGxDb250YWluZXJMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9z
Y3JvbGxlZENvbnRlbnRzTGF5ZXI7CisjZWxpZiBVU0UoTklDT1NJQSkKKyAgICBSZWZQdHI8Tmlj
b3NpYTo6UGxhdGZvcm1MYXllcj4gbV9zY3JvbGxDb250YWluZXJMYXllcjsKKyAgICBSZWZQdHI8
Tmljb3NpYTo6UGxhdGZvcm1MYXllcj4gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7CiAjZW5kaWYK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcAppbmRleCAwZDM0
M2FiNjQwOC4uNDcwYWU1YTZkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmlj
b3NpYS5jcHAKQEAgLTU4LDcgKzU4LDkgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29z
aWE6OnBhZ2VEZXN0cm95ZWQoKQogCiAgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWVDb21taXR0ZXJU
aW1lci5zdG9wKCk7CiAKLSAgICByZWxlYXNlU2Nyb2xsaW5nVHJlZSgpOworICAgIC8vIEludmFs
aWRhdGluZyB0aGUgc2Nyb2xsaW5nIHRyZWUgd2lsbCBicmVhayB0aGUgcmVmZXJlbmNlIGN5Y2xl
IGJldHdlZW4gdGhlIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGFuZCBTY3JvbGxpbmdUcmVlIG9iamVj
dHMuCisgICAgUmVmUHRyPFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4gc2Nyb2xsaW5nVHJlZSA9IHN0
YXRpY19wb2ludGVyX2Nhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihyZWxlYXNlU2Nyb2xsaW5n
VHJlZSgpKTsKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFtzY3JvbGxpbmdUcmVlXSB7
IHNjcm9sbGluZ1RyZWUtPmludmFsaWRhdGUoKTsgfSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3JOaWNvc2lhOjpjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpCkBAIC04MCwxMiArODIs
MTYgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6OnNjaGVkdWxlVHJlZVN0YXRl
Q29tbWl0KCkKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6OmNvbW1pdFRyZWVT
dGF0ZSgpCiB7CisgICAgd2lsbENvbW1pdFRyZWUoKTsKKwogICAgIGlmICghc2Nyb2xsaW5nU3Rh
dGVUcmVlKCktPmhhc0NoYW5nZWRQcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFJlZlB0cjxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+IHRocmVhZGVkU2Nyb2xsaW5nVHJlZSA9IGRv
d25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xsaW5nVHJlZSgpKTsKIAogICAgIGF1
dG8gdHJlZVN0YXRlID0gc2Nyb2xsaW5nU3RhdGVUcmVlKCktPmNvbW1pdChMYXllclJlcHJlc2Vu
dGF0aW9uOjpQbGF0Zm9ybUxheWVyUmVwcmVzZW50YXRpb24pOworICAgIHRocmVhZGVkU2Nyb2xs
aW5nVHJlZS0+aW5jcmVtZW50UGVuZGluZ0NvbW1pdENvdW50KCk7CisKICAgICBTY3JvbGxpbmdU
aHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUsIHRyZWVTdGF0ZSA9IFdURk1v
dmUodHJlZVN0YXRlKV0oKSBtdXRhYmxlIHsKICAgICAgICAgdGhyZWFkZWRTY3JvbGxpbmdUcmVl
LT5jb21taXRUcmVlU3RhdGUoV1RGTW92ZSh0cmVlU3RhdGUpKTsKICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVO
b2RlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1N0YXRlTm9kZU5pY29zaWEuY3BwCmluZGV4IGI1MzI4ZWI0MzcyLi41NWM1ZTYwNTk2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1N0YXRlTm9kZU5pY29zaWEuY3BwCkBAIC0yNiwyMSArMjYs
MjMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU5vZGUu
aCIKIAotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCiAKKyNp
bmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIu
aCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIExheWVyUmVwcmVzZW50YXRpb246OnJl
dGFpblBsYXRmb3JtTGF5ZXIodm9pZCopCit2b2lkIExheWVyUmVwcmVzZW50YXRpb246OnJldGFp
blBsYXRmb3JtTGF5ZXIodm9pZCogdHlwZWxlc3NMYXllcikKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIGlmIChhdXRvKiBsYXllciA9IG1ha2VQbGF0Zm9ybUxheWVyVHlwZWQodHlwZWxl
c3NMYXllcikpCisgICAgICAgIGxheWVyLT5yZWYoKTsKIH0KIAotdm9pZCBMYXllclJlcHJlc2Vu
dGF0aW9uOjpyZWxlYXNlUGxhdGZvcm1MYXllcih2b2lkKikKK3ZvaWQgTGF5ZXJSZXByZXNlbnRh
dGlvbjo6cmVsZWFzZVBsYXRmb3JtTGF5ZXIodm9pZCogdHlwZWxlc3NMYXllcikKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChhdXRvKiBsYXllciA9IG1ha2VQbGF0Zm9ybUxheWVy
VHlwZWQodHlwZWxlc3NMYXllcikpCisgICAgICAgIGxheWVyLT5kZXJlZigpOwogfQogCiBQbGF0
Zm9ybUxheWVyKiBMYXllclJlcHJlc2VudGF0aW9uOjptYWtlUGxhdGZvcm1MYXllclR5cGVkKHZv
aWQqIHR5cGVsZXNzTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAppbmRleCBj
OTBkYmY4MWUyOC4uNzAyMTEyNzJjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNw
cApAQCAtMzAsNyArMzAsMTIgQEAKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVT
RShOSUNPU0lBKQogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0
YXRlRml4ZWROb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgorI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlICJOaWNvc2lhUGxh
dGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC01MCwxMiArNTUsNzIgQEAgU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZTo6flNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoKQogICAgIHNjcm9sbGluZ1RyZWUoKS5maXhlZE9y
U3RpY2t5Tm9kZVJlbW92ZWQoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpj
b21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpCit2b2lk
IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3Qg
U2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCiB7CisgICAgYXV0byYgZml4ZWRTdGF0ZU5v
ZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZT4oc3RhdGVOb2RlKTsKKworICAg
IGlmIChmaXhlZFN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2Rl
OjpMYXllcikpIHsKKyAgICAgICAgTmljb3NpYTo6UGxhdGZvcm1MYXllciogbGF5ZXIgPSBmaXhl
ZFN0YXRlTm9kZS5sYXllcigpOworICAgICAgICBtX3Njcm9sbExheWVyID0gZG93bmNhc3Q8Tmlj
b3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOworICAgIH0KKworICAgIGlmIChzdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlOjpWaWV3cG9ydENv
bnN0cmFpbnRzKSkKKyAgICAgICAgbV9jb25zdHJhaW50cyA9IGZpeGVkU3RhdGVOb2RlLnZpZXdw
b3J0Q29uc3RyYWludHMoKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjphcHBs
eUxheWVyUG9zaXRpb25zKCkKIHsKKyAgICBhdXRvIGNvbXB1dGVMYXllclBvc2l0aW9uID0gWyZd
IHsKKyAgICAgICAgRmxvYXRTaXplIG92ZXJmbG93U2Nyb2xsRGVsdGE7CisgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGNvZGUgaXMgd3JvbmcgaW4gY29tcGxleCBjYXNlcyB3aGVyZSB0aGUgZml4ZWQg
ZWxlbWVudCBpcyBpbnNpZGUgYSBwb3NpdGlvbmVkIG5vZGUgYXMKKyAgICAgICAgLy8gICAgICAg
IHRoZSBzY3JvbGwgY29udGFpbmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIHRoZSBzY3JvbGxpbmcg
dHJlZSBhbmNlc3RvciBvcmRlci4KKyAgICAgICAgZm9yIChhdXRvKiBub2RlID0gcGFyZW50KCk7
IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnQoKSkgeworICAgICAgICAgICAgaWYgKGlzPFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KCpub2RlKSkgeworICAgICAgICAgICAgICAgIC8v
IEZpeGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBjb250YWluaW5nIGZy
YW1lIHNjcm9sbGluZyBub2RlLgorICAgICAgICAgICAgICAgIC8vIFdlIGJhaWwgb3V0IGFmdGVy
IGZpbmRpbmcgb25lLgorICAgICAgICAgICAgICAgIGF1dG8gbGF5b3V0Vmlld3BvcnQgPSBkb3du
Y2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPigqbm9kZSkubGF5b3V0Vmlld3Bv
cnQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9u
Rm9yVmlld3BvcnRSZWN0KGxheW91dFZpZXdwb3J0KSAtIG92ZXJmbG93U2Nyb2xsRGVsdGE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlPigqbm9kZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBUbyBrZWVwIHRoZSBs
YXllciBzdGlsbCBkdXJpbmcgYXN5bmMgc2Nyb2xsaW5nIHdlIGFkanVzdCBieSBob3cgbXVjaCB0
aGUgcG9zaXRpb24gaGFzIGNoYW5nZWQgc2luY2UgbGF5b3V0LgorICAgICAgICAgICAgICAgIGF1
dG8mIG92ZXJmbG93Tm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGU+KCpub2RlKTsKKyAgICAgICAgICAgICAgICBhdXRvIGxvY2FsRGVsdGEgPSBvdmVyZmxv
d05vZGUubGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkgLSBvdmVyZmxvd05vZGUuY3VycmVu
dFNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3dTY3JvbGxEZWx0YSAr
PSBsb2NhbERlbHRhOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gRmxvYXRQb2ludCgpOworICAgIH07CisKKyAg
ICBhdXRvIGxheWVyUG9zaXRpb24gPSBjb21wdXRlTGF5ZXJQb3NpdGlvbigpOworCisgICAgTE9H
X1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVlRml4ZWROb2Rl
ICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiByZWxhdGVkTm9kZVNjcm9sbFBvc2l0aW9uRGlk
Q2hhbmdlOiB2aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQgIiA8PCBtX2NvbnN0cmFpbnRzLnZpZXdw
b3J0UmVjdEF0TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXllciBwb3MgIiA8PCBtX2NvbnN0cmFp
bnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAiIGxheWVyUG9zaXRpb24gIiA8PCBs
YXllclBvc2l0aW9uKTsKKworICAgIEFTU0VSVChtX3Njcm9sbExheWVyKTsKKyAgICBtX3Njcm9s
bExheWVyLT5hY2Nlc3NTdGFnaW5nKAorICAgICAgICAgICAgW3RoaXMsICZsYXllclBvc2l0aW9u
XShOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjpMYXllclN0YXRlJiBzdGF0ZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5wb3NpdGlvbiA9IGxheWVyUG9zaXRpb247Cisg
ICAgICAgICAgICAgICAgc3RhdGUuZGVsdGEucG9zaXRpb25DaGFuZ2VkID0gdHJ1ZTsKKyAgICAg
ICAgICAgIH0pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmR1bXBQcm9wZXJ0
aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvciBiZWhh
dmlvcikgY29uc3QKK3sKKyAgICB0cyA8PCAiZml4ZWQgbm9kZSI7CisgICAgU2Nyb2xsaW5nVHJl
ZU5vZGU6OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7CisgICAgdHMuZHVtcFByb3BlcnR5
KCJmaXhlZCBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOworCisjaWYgMCAgICAKKyAgICBp
ZiAoYmVoYXZpb3IgJiBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvckluY2x1ZGVMYXll
clBvc2l0aW9ucykgeworICAgICAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBbbV9sYXllciBi
b3VuZHNdOworICAgICAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5jaG9y
UG9pbnRdOworICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gW21fbGF5ZXIgcG9zaXRpb25d
OworICAgICAgICBGbG9hdFBvaW50IGxheWVyVG9wTGVmdCA9IHBvc2l0aW9uIC0gdG9GbG9hdFNp
emUoYW5jaG9yUG9pbnQpICogbGF5ZXJCb3VuZHMuc2l6ZSgpICsgbV9jb25zdHJhaW50cy5hbGln
bm1lbnRPZmZzZXQoKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJsYXllciB0b3AgbGVmdCIs
IGxheWVyVG9wTGVmdCk7CisgICAgfQorI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgKaW5kZXggOWY4ZTFlMjUxYmUuLjY4NWQ5N2Rk
ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGaXhlZE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaApAQCAtMzEsNiArMzEsMTMgQEAKIAog
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCiAKKyNpbmNsdWRlICJTY3JvbGxpbmdDb25z
dHJhaW50cy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIE5pY29zaWEg
eworY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBTY3JvbGxpbmdUcmVlRml4ZWROb2RlIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ1RyZWVO
b2RlIHsKQEAgLTQzLDggKzUwLDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbW1pdFN0YXRl
QmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBhcHBseUxheWVyUG9zaXRpb25zKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGR1bXBQcm9w
ZXJ0aWVzKFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9y
KSBjb25zdCBvdmVycmlkZTsKKworICAgIEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRz
IG1fY29uc3RyYWludHM7CisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1f
c2Nyb2xsTGF5ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfU0NST0xMSU5HX05PREUoU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSwgaXNGaXhl
ZE5vZGUoKSkKKwogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNP
U0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhLmNwcAppbmRleCAxY2U0YTFhZGFkOC4uZTMyZjJkZGI4OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCkBAIC0z
MCw2ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09T
SUEpCiAKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRl
ICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9s
bGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQpAQCAtNDQsMTIg
KzQ5LDkxIEBAIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYShTCiAKIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhOjp+U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29z
aWEoKSA9IGRlZmF1bHQ7CiAKLVNjcm9sbGluZ0V2ZW50UmVzdWx0IFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpj
b21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVO
b2RlKQoreworICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRl
QmVmb3JlQ2hpbGRyZW4oc3RhdGVOb2RlKTsKKyAgICBjb25zdCBhdXRvJiBzY3JvbGxpbmdTdGF0
ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc3RhdGVO
b2RlKTsKKworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7CisgICAgICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5
ZXIqIGxheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmxheWVyKCk7CisgICAgICAgIG1fc2Nyb2xs
TGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAg
fQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkgeworICAgICAgICBO
aWNvc2lhOjpQbGF0Zm9ybUxheWVyKiBsYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxl
ZENvbnRlbnRzTGF5ZXIoKTsKKyAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIgPSBkb3du
Y2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAgfQorICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKSB7CisgICAgICAgIE5pY29zaWE6
OlBsYXRmb3JtTGF5ZXIqIGxheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmNvdW50ZXJTY3JvbGxp
bmdMYXllcigpOworICAgICAgICBtX2NvdW50ZXJTY3JvbGxpbmdMYXllciA9IGRvd25jYXN0PE5p
Y29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KGxheWVyKTsKKyAgICB9CisgICAgaWYgKHNjcm9sbGlu
Z1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6Okluc2V0Q2xpcExheWVyKSkgeworICAgICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVy
KiBsYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5pbnNldENsaXBMYXllcigpOworICAgICAgICBt
X2luc2V0Q2xpcExheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5
ZXIpOworICAgIH0KKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q29udGVudFNoYWRvd0xheWVyKSkg
eworICAgICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKiBsYXllciA9IHNjcm9sbGluZ1N0YXRl
Tm9kZS5jb250ZW50U2hhZG93TGF5ZXIoKTsKKyAgICAgICAgbV9jb250ZW50U2hhZG93TGF5ZXIg
PSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAgfQorICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpIZWFkZXJMYXllcikpIHsKKyAgICAgICAgTmljb3NpYTo6UGxh
dGZvcm1MYXllciogbGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuaGVhZGVyTGF5ZXIoKTsKKyAg
ICAgICAgbV9oZWFkZXJMYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+
KGxheWVyKTsKKyAgICB9CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3RlckxheWVyKSkgewor
ICAgICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKiBsYXllciA9IHNjcm9sbGluZ1N0YXRlTm9k
ZS5mb290ZXJMYXllcigpOworICAgICAgICBtX2Zvb3RlckxheWVyID0gZG93bmNhc3Q8Tmljb3Np
YTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOworICAgIH0KK30KKwordm9pZCBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQoreworICAgIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihzdGF0ZU5vZGUpOwor
CisgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlPihzdGF0ZU5vZGUpOworCisgICAgLy8gVXBkYXRlIHRoZSBzY3Jv
bGwgcG9zaXRpb24gYWZ0ZXIgY2hpbGQgbm9kZXMgaGF2ZSBiZWVuIHVwZGF0ZWQsIGJlY2F1c2Ug
dGhleSBuZWVkIHRvIGhhdmUgdXBkYXRlZCB0aGVpciBjb25zdHJhaW50cyBiZWZvcmUgYW55IHNj
cm9sbGluZyBoYXBwZW5zLgorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRp
b24pKSB7CisgICAgICAgIGF1dG8gc2Nyb2xsVHlwZSA9IHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1
ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSA/IFNjcm9s
bFR5cGU6OlByb2dyYW1tYXRpYyA6IFNjcm9sbFR5cGU6OlVzZXI7CisgICAgICAgIHNjcm9sbFRv
KHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpLCBzY3JvbGxUeXBl
KTsKKyAgICB9Cit9CisKK1Njcm9sbGluZ0V2ZW50UmVzdWx0IFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCkKIHsKLSAgICByZXR1cm4gU2Nyb2xsaW5nRXZlbnRSZXN1bHQ6OkRp
ZE5vdEhhbmRsZUV2ZW50OworICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKKyAgICAgICAg
cmV0dXJuIFNjcm9sbGluZ0V2ZW50UmVzdWx0OjpEaWROb3RIYW5kbGVFdmVudDsKKworICAgIGlm
ICh3aGVlbEV2ZW50LmRlbHRhWCgpIHx8IHdoZWVsRXZlbnQuZGVsdGFZKCkpIHsKKyAgICAgICAg
YXV0byogc2Nyb2xsTGF5ZXIgPSBzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKTsKKyAgICAgICAgQVNT
RVJUKHNjcm9sbExheWVyKTsKKyAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25j
YXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7CisKKyAgICAgICAg
YXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsK
KyAgICAgICAgc2Nyb2xsQnkoeyB3aGVlbEV2ZW50LmRlbHRhWCgpLCAtd2hlZWxFdmVudC5kZWx0
YVkoKSB9KTsKKyAgICB9CisKKyAgICAvLyBUT0RPOgorICAgIC8vIHNjcm9sbGluZ1RyZWUoKS5z
ZXRPckNsZWFyTGF0Y2hlZE5vZGUod2hlZWxFdmVudCwgc2Nyb2xsaW5nTm9kZUlEKCkpOworICAg
IC8vIHNjcm9sbGluZ1RyZWUoKS5oYW5kbGVXaGVlbEV2ZW50UGhhc2Uod2hlZWxFdmVudC5waGFz
ZSgpKTsKKyAgICByZXR1cm4gU2Nyb2xsaW5nRXZlbnRSZXN1bHQ6OkRpZEhhbmRsZUV2ZW50Owog
fQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpyZXBvc2l0
aW9uU2Nyb2xsaW5nTGF5ZXJzKCkKK3sKKyAgICBhdXRvKiBzY3JvbGxMYXllciA9IHNjcm9sbGVk
Q29udGVudHNMYXllcigpOworICAgIEFTU0VSVChzY3JvbGxMYXllcik7CisgICAgYXV0byYgY29t
cG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3Jv
bGxMYXllcik7CisKKyAgICBhdXRvIHNjcm9sbFBvc2l0aW9uID0gY3VycmVudFNjcm9sbFBvc2l0
aW9uKCk7CisKKyAgICBjb21wb3NpdGlvbkxheWVyLmFjY2Vzc1N0YWdpbmcoCisgICAgICAgIFsm
c2Nyb2xsUG9zaXRpb25dKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0
YXRlKQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0ZS5wb3NpdGlvbiA9IC1zY3JvbGxQb3Np
dGlvbjsKKyAgICAgICAgICAgIHN0YXRlLmRlbHRhLnBvc2l0aW9uQ2hhbmdlZCA9IHRydWU7Cisg
ICAgICAgIH0pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNv
c2lhOjphcHBseUxheWVyUG9zaXRpb25zKCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IDJiNWEyYmUzYmNlLi5m
N2I1NjdlY2E3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU5pY29zaWEuaApAQCAtMzEsNiArMzEsMTIgQEAKIAogI2luY2x1ZGUgIlNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKIAorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
bmFtZXNwYWNlIE5pY29zaWEgeworY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmlj
b3NpYSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlIHsKQEAg
LTQxLDkgKzQ3LDIxIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU5pY29zaWEoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVUeXBlLCBT
Y3JvbGxpbmdOb2RlSUQpOwogCisgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgY29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOworCiAgICAg
U2Nyb2xsaW5nRXZlbnRSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVwb3NpdGlvblNjcm9sbGluZ0xheWVycygp
IG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHlMYXllclBvc2l0aW9ucygpIG92ZXJyaWRlOworCisg
ICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1fc2Nyb2xsTGF5ZXI7CisgICAg
UmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1fc2Nyb2xsZWRDb250ZW50c0xheWVy
OworICAgIFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2NvdW50ZXJTY3JvbGxp
bmdMYXllcjsKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9pbnNldENs
aXBMYXllcjsKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9jb250ZW50
U2hhZG93TGF5ZXI7CisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1faGVh
ZGVyTGF5ZXI7CisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1fZm9vdGVy
TGF5ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29z
aWEuY3BwCmluZGV4IGNlYTcxNDZmMTE4Li45N2Y4ODZhNjgwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
Tmljb3NpYS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRml4
ZWROb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGUuaCIKICNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oIgorI2luY2x1
ZGUgIlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU1LDE4ICs1NiwxOCBA
QCBSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ1RyZWVOaWNvc2lhOjpjcmVhdGVTY3Jv
bGxpbmdUcmVlTm9kZShTY3JvbGxpbmdObwogICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmNyZWF0ZSgqdGhpcywgbm9kZVR5cGUsIG5vZGVJRCk7
CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6RnJhbWVIb3N0aW5nOgogICAgICAgICByZXR1
cm4gU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsK
LSAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVyZmxvdzoKLSAgICAgICAgLy8gU2hvdWxk
IG5vdCBiZSByZWFjaGVkIC0tIGNhdWdodCBieSBBU1NFUlRfTk9UX1JFQUNIRUQoKSBiZWxvdy4K
KyAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVyZmxvdzogLy8gRklYTUUKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6Rml4ZWQ6CiAgICAgICAgIHJldHVy
biBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgY2Fz
ZSBTY3JvbGxpbmdOb2RlVHlwZTo6U3RpY2t5OgogICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKICAgICBjYXNlIFNjcm9sbGluZ05v
ZGVUeXBlOjpQb3NpdGlvbmVkOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlOjpjcmVhdGUoKnRo
aXMsIG5vZGVJRCk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAvLyBGSVhNRTogQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNjcm9sbGlu
Z1RyZWVGaXhlZE5vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44Y2JjMDRlY2I3NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
VHJlZVBvc2l0aW9uZWROb2RlLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
ICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhP
TERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9k
ZS5oIgorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCisKKyNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9k
ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSZWY8U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlPiBTY3JvbGxpbmdUcmVlUG9z
aXRpb25lZE5vZGU6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxp
bmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1Ry
ZWVQb3NpdGlvbmVkTm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpKTsKK30KKworU2Nyb2xsaW5n
VHJlZVBvc2l0aW9uZWROb2RlOjpTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUoU2Nyb2xsaW5n
VHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAgICA6IFNjcm9s
bGluZ1RyZWVOb2RlKHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVUeXBlOjpQb3NpdGlvbmVk
LCBub2RlSUQpCit7Cit9CisKK1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6flNjcm9sbGlu
Z1RyZWVQb3NpdGlvbmVkTm9kZSgpID0gZGVmYXVsdDsKKwordm9pZCBTY3JvbGxpbmdUcmVlUG9z
aXRpb25lZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJiBzdGF0ZU5vZGUpCit7CisgICAgY29uc3QgU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVk
Tm9kZSYgcG9zaXRpb25lZFN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlUG9zaXRp
b25lZE5vZGU+KHN0YXRlTm9kZSk7CisKKyAgICBpZiAocG9zaXRpb25lZFN0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpIHsKKyAgICAgICAgTmlj
b3NpYTo6UGxhdGZvcm1MYXllciogbGF5ZXIgPSBwb3NpdGlvbmVkU3RhdGVOb2RlLmxheWVyKCk7
CisgICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxh
eWVyPihsYXllcik7CisgICAgfQorCisgICAgaWYgKHBvc2l0aW9uZWRTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU6OlJlbGF0ZWRPdmVyZmxv
d1Njcm9sbGluZ05vZGVzKSkKKyAgICAgICAgbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
cyA9IHBvc2l0aW9uZWRTdGF0ZU5vZGUucmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMoKTsK
KworICAgIGlmIChwb3NpdGlvbmVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpMYXlvdXRDb25zdHJhaW50RGF0YSkpCisgICAgICAgIG1f
Y29uc3RyYWludHMgPSBwb3NpdGlvbmVkU3RhdGVOb2RlLmxheW91dENvbnN0cmFpbnRzKCk7CisK
KyAgICAvLyBUZWxsIHRoZSBTY3JvbGxpbmdUcmVlIGFib3V0IG5vbi1hbmNlc3RvciBvdmVyZmxv
dyBub2RlcyB3aGljaCBhZmZlY3QgdGhpcyBub2RlLgorICAgIGlmIChtX2NvbnN0cmFpbnRzLnNj
cm9sbFBvc2l0aW9uaW5nQmVoYXZpb3IoKSA9PSBTY3JvbGxQb3NpdGlvbmluZ0JlaGF2aW9yOjpN
b3ZlcykgeworICAgICAgICBhdXRvJiByZWxhdGVkTm9kZXMgPSBzY3JvbGxpbmdUcmVlKCkub3Zl
cmZsb3dSZWxhdGVkTm9kZXMoKTsKKyAgICAgICAgZm9yIChhdXRvIG92ZXJmbG93Tm9kZUlEIDog
bV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcykgeworICAgICAgICAgICAgcmVsYXRlZE5v
ZGVzLmVuc3VyZShvdmVyZmxvd05vZGVJRCwgW10geworICAgICAgICAgICAgICAgIHJldHVybiBW
ZWN0b3I8U2Nyb2xsaW5nTm9kZUlEPigpOworICAgICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LmFwcGVuZChzY3JvbGxpbmdOb2RlSUQoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFt
X3JlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzLmlzRW1wdHkoKSAmJiBtX2NvbnN0cmFpbnRz
LnNjcm9sbFBvc2l0aW9uaW5nQmVoYXZpb3IoKSAhPSBTY3JvbGxQb3NpdGlvbmluZ0JlaGF2aW9y
OjpOb25lKQorICAgICAgICBzY3JvbGxpbmdUcmVlKCkucG9zaXRpb25lZE5vZGVzV2l0aFJlbGF0
ZWRPdmVyZmxvdygpLmFkZChzY3JvbGxpbmdOb2RlSUQoKSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5n
VHJlZVBvc2l0aW9uZWROb2RlOjphcHBseUxheWVyUG9zaXRpb25zKCkKK3sKKyAgICBGbG9hdFNp
emUgc2Nyb2xsT2Zmc2V0U2luY2VMYXN0Q29tbWl0OworICAgIGZvciAoYXV0byBub2RlSUQgOiBt
X3JlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKSB7CisgICAgICAgIGlmIChhdXRvKiBub2Rl
ID0gc2Nyb2xsaW5nVHJlZSgpLm5vZGVGb3JJRChub2RlSUQpKSB7CisgICAgICAgICAgICBpZiAo
aXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4obm9kZSkpIHsKKyAgICAgICAg
ICAgICAgICBhdXRvJiBvdmVyZmxvd05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlPigqbm9kZSk7CisgICAgICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0U2lu
Y2VMYXN0Q29tbWl0ICs9IG92ZXJmbG93Tm9kZS5sYXN0Q29tbWl0dGVkU2Nyb2xsUG9zaXRpb24o
KSAtIG92ZXJmbG93Tm9kZS5jdXJyZW50U2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICBhdXRvIGxheWVyT2Zmc2V0ID0gLXNjcm9sbE9mZnNldFNp
bmNlTGFzdENvbW1pdDsKKyAgICBpZiAobV9jb25zdHJhaW50cy5zY3JvbGxQb3NpdGlvbmluZ0Jl
aGF2aW9yKCkgPT0gU2Nyb2xsUG9zaXRpb25pbmdCZWhhdmlvcjo6U3RhdGlvbmFyeSkgeworICAg
ICAgICAvLyBTdGF0aW9uYXJ5IG5vZGVzIG1vdmUgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbi4K
KyAgICAgICAgbGF5ZXJPZmZzZXQgPSAtbGF5ZXJPZmZzZXQ7CisgICAgfQorCisgICAgRmxvYXRQ
b2ludCBsYXllclBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5
b3V0KCkgLSBsYXllck9mZnNldDsKKworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0
cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlICIgPDwgc2Nyb2xsaW5nTm9kZUlE
KCkgPDwgIiBhcHBseUxheWVyUG9zaXRpb25zOiBvdmVyZmxvdyBkZWx0YSAiIDw8IHNjcm9sbE9m
ZnNldFNpbmNlTGFzdENvbW1pdCA8PCAiIG1vdmluZyBsYXllciB0byAiIDw8IGxheWVyUG9zaXRp
b24pOworCisgICAgbV9zY3JvbGxMYXllci0+YWNjZXNzU3RhZ2luZygKKyAgICAgICAgICAgIFt0
aGlzLCAmbGF5ZXJQb3NpdGlvbl0oTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6TGF5ZXJTdGF0
ZSYgc3RhdGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RhdGUucG9zaXRpb24g
PSBsYXllclBvc2l0aW9uOworICAgICAgICAgICAgICAgIHN0YXRlLmRlbHRhLnBvc2l0aW9uQ2hh
bmdlZCA9IHRydWU7CisgICAgICAgICAgICB9KTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlUG9z
aXRpb25lZE5vZGU6OnJlbGF0ZWROb2RlU2Nyb2xsUG9zaXRpb25EaWRDaGFuZ2UoY29uc3QgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIGNoYW5nZWROb2RlKQoreworICAgIGlmICghbV9yZWxh
dGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rlcy5jb250YWlucyhjaGFuZ2VkTm9kZS5zY3JvbGxpbmdO
b2RlSUQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGFwcGx5TGF5ZXJQb3NpdGlvbnMoKTsK
K30KKwordm9pZCBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGU6OmR1bXBQcm9wZXJ0aWVzKFRl
eHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvciBiZWhhdmlvcikg
Y29uc3QKK3sKKyAgICB0cyA8PCAicG9zaXRpb25lZCBub2RlIjsKKyAgICBTY3JvbGxpbmdUcmVl
Tm9kZTo6ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKKworICAgIHRzLmR1bXBQcm9wZXJ0
eSgibGF5b3V0IGNvbnN0cmFpbnRzIiwgbV9jb25zdHJhaW50cyk7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJyZWxhdGVkIG92ZXJmbG93IG5vZGVzIiwgbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdO
b2Rlcy5zaXplKCkpOworCisgICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNU
ZXh0QmVoYXZpb3JJbmNsdWRlTm9kZUlEcykgeworICAgICAgICBpZiAoIW1fcmVsYXRlZE92ZXJm
bG93U2Nyb2xsaW5nTm9kZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBUZXh0U3RyZWFtOjpH
cm91cFNjb3BlIHNjb3BlKHRzKTsKKyAgICAgICAgICAgIHRzIDw8ICJvdmVyZmxvdyBub2RlcyI7
CisgICAgICAgICAgICBmb3IgKGF1dG8gbm9kZUlEIDogbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlcykKKyAgICAgICAgICAgICAgICB0cyA8PCAiXG4iIDw8IGluZGVudCA8PCAibm9kZUlE
ICIgPDwgbm9kZUlEOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZVBvc2l0aW9uZWROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi42OTUxYTFmY2QwNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWRO
b2RlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAg
ICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKKworI2luY2x1ZGUgIlNj
cm9sbGluZ0NvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBOaWNvc2lhIHsKK2NsYXNzIENvbXBv
c2l0aW9uTGF5ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5n
VHJlZVBvc2l0aW9uZWROb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZT4gY3JlYXRlKFNjcm9s
bGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVQ
b3NpdGlvbmVkTm9kZSgpOworCisgICAgU2Nyb2xsUG9zaXRpb25pbmdCZWhhdmlvciBzY3JvbGxQ
b3NpdGlvbmluZ0JlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJhaW50cy5zY3JvbGxQ
b3NpdGlvbmluZ0JlaGF2aW9yKCk7IH0KKyAgICBjb25zdCBWZWN0b3I8U2Nyb2xsaW5nTm9kZUlE
PiYgcmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMoKSBjb25zdCB7IHJldHVybiBtX3JlbGF0
ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzOyB9CisKK3ByaXZhdGU6CisgICAgU2Nyb2xsaW5nVHJl
ZVBvc2l0aW9uZWROb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworCisgICAg
dm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVsYXRlZE5vZGVTY3JvbGxQb3NpdGlvbkRpZENoYW5nZShj
b25zdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgY2hhbmdlZE5vZGUpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBhcHBseUxheWVyUG9zaXRpb25zKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGR1
bXBQcm9wZXJ0aWVzKFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJl
aGF2aW9yKSBjb25zdCBvdmVycmlkZTsKKworICAgIFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+IG1f
cmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXM7CisgICAgTGF5b3V0Q29uc3RyYWludHMgbV9j
b25zdHJhaW50czsKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9zY3Jv
bGxMYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUsIGlzUG9z
aXRpb25lZE5vZGUoKSkKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVT
RShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAppbmRleCBkNjNlYWFl
Y2YyYy4uMzIwZTkxNTBmYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCkBA
IC0zMCw3ICszMCwxMyBAQAogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5J
Q09TSUEpCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVT
dGlja3lOb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgorI2luY2x1ZGUgIlNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNTAsMTIgKzU2LDYwIEBAIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjp+U2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUoKQogICAgIHNjcm9sbGluZ1RyZWUoKS5maXhlZE9yU3RpY2t5Tm9kZVJl
bW92ZWQoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVC
ZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKQordm9pZCBTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdT
dGF0ZU5vZGUmIHN0YXRlTm9kZSkKIHsKKyAgICBhdXRvJiBzdGlja3lTdGF0ZU5vZGUgPSBkb3du
Y2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU+KHN0YXRlTm9kZSk7CisKKyAgICBpZiAoc3Rp
Y2t5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVy
KSkgeworICAgICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKiBsYXllciA9IHN0aWNreVN0YXRl
Tm9kZS5sYXllcigpOworICAgICAgICBtX3Njcm9sbExheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6
Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOworICAgIH0KKworICAgIGlmIChzdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZTo6Vmlld3BvcnRDb25zdHJh
aW50cykpCisgICAgICAgIG1fY29uc3RyYWludHMgPSBzdGlja3lTdGF0ZU5vZGUudmlld3BvcnRD
b25zdHJhaW50cygpOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjphcHBseUxh
eWVyUG9zaXRpb25zKCkKIHsKKyAgICBGbG9hdFJlY3QgY29uc3RyYWluaW5nUmVjdDsKKworICAg
IGF1dG8qIGVuY2xvc2luZ1Njcm9sbGluZ05vZGUgPSBwYXJlbnQoKTsKKyAgICBpZiAoaXM8U2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oZW5jbG9zaW5nU2Nyb2xsaW5nTm9kZSkp
CisgICAgICAgIGNvbnN0cmFpbmluZ1JlY3QgPSBGbG9hdFJlY3QoZG93bmNhc3Q8U2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oKmVuY2xvc2luZ1Njcm9sbGluZ05vZGUpLmN1cnJl
bnRTY3JvbGxQb3NpdGlvbigpLCBtX2NvbnN0cmFpbnRzLmNvbnN0cmFpbmluZ1JlY3RBdExhc3RM
YXlvdXQoKS5zaXplKCkpOworICAgIGVsc2UgaWYgKGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGU+KGVuY2xvc2luZ1Njcm9sbGluZ05vZGUpKQorICAgICAgICBjb25zdHJhaW5pbmdS
ZWN0ID0gZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oZW5jbG9zaW5n
U2Nyb2xsaW5nTm9kZSktPmxheW91dFZpZXdwb3J0KCk7CisgICAgZWxzZQorICAgICAgICByZXR1
cm47CisKKyAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb24gPSBtX2NvbnN0cmFpbnRzLmxheWVy
UG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFpbmluZ1JlY3QpIC0gbV9jb25zdHJh
aW50cy5hbGlnbm1lbnRPZmZzZXQoKTsKKworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcs
IHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUgIiA8PCBzY3JvbGxpbmdOb2RlSUQo
KSA8PCAiIGNvbnN0cmFpbmluZ1JlY3QgIiA8PCBjb25zdHJhaW5pbmdSZWN0IDw8ICIgY29uc3Ry
YWluaW5nUmVjdEF0TGFzdExheW91dCAiIDw8IG1fY29uc3RyYWludHMuY29uc3RyYWluaW5nUmVj
dEF0TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXllciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxh
eWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAiIGxheWVyUG9zaXRpb24gIiA8PCBsYXllclBv
c2l0aW9uKTsKKworICAgIEFTU0VSVChtX3Njcm9sbExheWVyKTsKKyAgICBtX3Njcm9sbExheWVy
LT5hY2Nlc3NTdGFnaW5nKAorICAgICAgICAgICAgW3RoaXMsICZsYXllclBvc2l0aW9uXShOaWNv
c2lhOjpDb21wb3NpdGlvbkxheWVyOjpMYXllclN0YXRlJiBzdGF0ZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBzdGF0ZS5wb3NpdGlvbiA9IGxheWVyUG9zaXRpb247CisgICAgICAg
ICAgICAgICAgc3RhdGUuZGVsdGEucG9zaXRpb25DaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
IH0pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpkdW1wUHJvcGVydGllcyhU
ZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3Ip
IGNvbnN0Cit7CisgICAgdHMgPDwgInN0aWNreSBub2RlIjsKKworICAgIFNjcm9sbGluZ1RyZWVO
b2RlOjpkdW1wUHJvcGVydGllcyh0cywgYmVoYXZpb3IpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgi
c3RpY2t5IGNvbnN0cmFpbnRzIiwgbV9jb25zdHJhaW50cyk7CisKKyNpZiAwCisgICAgaWYgKGJl
aGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJQb3Np
dGlvbnMpIHsKKyAgICAgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gW21fbGF5ZXIgYm91bmRz
XTsKKyAgICAgICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCA9IFttX2xheWVyIGFuY2hvclBvaW50
XTsKKyAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IFttX2xheWVyIHBvc2l0aW9uXTsKKyAg
ICAgICAgRmxvYXRQb2ludCBsYXllclRvcExlZnQgPSBwb3NpdGlvbiAtIHRvRmxvYXRTaXplKGFu
Y2hvclBvaW50KSAqIGxheWVyQm91bmRzLnNpemUoKSArIG1fY29uc3RyYWludHMuYWxpZ25tZW50
T2Zmc2V0KCk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5ZXIgdG9wIGxlZnQiLCBsYXll
clRvcExlZnQpOworICAgIH0KKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTdGlja3lOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKaW5kZXggYTNkMTkxZWE5YjkuLmY5NTIxNDc0MTI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCkBAIC0zMSw2ICszMSwxMyBAQAogCiAj
aW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKIAorI2luY2x1ZGUgIlNjcm9sbGluZ0NvbnN0
cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgTmljb3NpYSB7
CitjbGFzcyBDb21wb3NpdGlvbkxheWVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ1RyZWVO
b2RlIHsKQEAgLTQ0LDggKzUxLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21taXRTdGF0ZUJl
Zm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgYXBwbHlMYXllclBvc2l0aW9ucygpIG92ZXJyaWRlOwogCisgICAgdm9pZCBkdW1wUHJvcGVy
dGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4g
bV9zY3JvbGxMYXllcjsKKyAgICBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgbV9j
b25zdHJhaW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSwgaXNTdGlj
a3lOb2RlKCkpCisKICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklD
T1NJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCmluZGV4
IDI4YjdlMTc3YTEwLi45MTk4ZTIwYTE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
ZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC04Miw2ICs4Miw3IEBAIGlmIChVU0VfQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50
aW5nRW5naW5lVGhyZWFkZWQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Tmljb3NpYVBsYXRmb3JtTGF5ZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYVNjZW5lLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFTY2VuZUludGVncmF0aW9uLmNwcAogCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJv
LmNwcApAQCAtMTAwLDYgKzEwMSw3IEBAIGlmIChVU0VfQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBhaW50aW5nRW5naW5lLmgK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5o
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lLmgKKyAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5oCiAK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdT
dG9yZVRleHR1cmVNYXBwZXJJbXBsLmgKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbXBvc2l0aW9uTGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQ
bGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFQbGF0Zm9ybUxheWVyLmgKaW5kZXggYmUzYTUyNTdhNGIuLjAxZjZhOWE5OTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29z
aWFQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRmxv
YXRTaXplLmgiCisjaW5jbHVkZSAiTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KQEAgLTUzLDYgKzU0LDIwIEBAIHB1Ymxp
YzoKICAgICB1c2luZyBMYXllcklEID0gdWludDY0X3Q7CiAgICAgTGF5ZXJJRCBpZCgpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KIAorICAgIHZvaWQgc2V0U2NlbmVJbnRlZ3JhdGlvbihSZWZQdHI8
U2NlbmVJbnRlZ3JhdGlvbj4mJiBzY2VuZUludGVncmF0aW9uKQorICAgIHsKKyAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zdGF0ZS5sb2NrKTsKKyAgICAgICAgbV9zdGF0ZS5zY2VuZUludGVn
cmF0aW9uID0gV1RGTW92ZShzY2VuZUludGVncmF0aW9uKTsKKyAgICB9CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU+IGNyZWF0ZVVwZGF0ZVNjb3Bl
KCkKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3RhdGUubG9jayk7CisgICAg
ICAgIGlmIChtX3N0YXRlLnNjZW5lSW50ZWdyYXRpb24pCisgICAgICAgICAgICByZXR1cm4gbV9z
dGF0ZS5zY2VuZUludGVncmF0aW9uLT5jcmVhdGVVcGRhdGVTY29wZSgpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBQbGF0Zm9ybUxh
eWVyKHVpbnQ2NF90KTsKIApAQCAtNjAsNiArNzUsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdHJ1
Y3QgewogICAgICAgICBMb2NrIGxvY2s7CisgICAgICAgIFJlZlB0cjxTY2VuZUludGVncmF0aW9u
PiBzY2VuZUludGVncmF0aW9uOwogICAgIH0gbV9zdGF0ZTsKIH07CiAKQEAgLTI1Niw2ICsyNzIs
MTMgQEAgcHVibGljOgogICAgICAgICBmdW5jdG9yKG1fc3RhdGUuY29tbWl0dGVkKTsKICAgICB9
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHZvaWQgYWNjZXNzU3RhZ2luZyhjb25z
dCBUJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoUGxhdGZvcm1M
YXllcjo6bV9zdGF0ZS5sb2NrKTsKKyAgICAgICAgZnVuY3RvcihtX3N0YXRlLnN0YWdpbmcpOwor
ICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhY2Nlc3NDb21taXR0
ZWQoY29uc3QgVCYgZnVuY3RvcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdy
YXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wYWYzZGY0
MjVlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHly
aWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5pY29zaWFTY2VuZUludGVncmF0aW9u
LmgiCisKK25hbWVzcGFjZSBOaWNvc2lhIHsKKworU2NlbmVJbnRlZ3JhdGlvbjo6U2NlbmVJbnRl
Z3JhdGlvbigpID0gZGVmYXVsdDsKKworU2NlbmVJbnRlZ3JhdGlvbjo6U2NlbmVJbnRlZ3JhdGlv
bihDbGllbnQmIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudC5vYmplY3QgPSAmY2xpZW50OworfQor
CitTY2VuZUludGVncmF0aW9uOjp+U2NlbmVJbnRlZ3JhdGlvbigpCit7CisgICAgQVNTRVJUKCFt
X2NsaWVudC5vYmplY3QpOworfQorCit2b2lkIFNjZW5lSW50ZWdyYXRpb246OnNldENsaWVudChD
bGllbnQmIGNsaWVudCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsK
KyAgICBtX2NsaWVudC5vYmplY3QgPSAmY2xpZW50OworfQorCit2b2lkIFNjZW5lSW50ZWdyYXRp
b246OmludmFsaWRhdGUoKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2sp
OworICAgIG1fY2xpZW50Lm9iamVjdCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgU2NlbmVJbnRlZ3Jh
dGlvbjo6cmVxdWVzdFVwZGF0ZSgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGllbnQu
bG9jayk7CisgICAgaWYgKG1fY2xpZW50Lm9iamVjdCkKKyAgICAgICAgbV9jbGllbnQub2JqZWN0
LT5yZXF1ZXN0VXBkYXRlKCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTY2VuZUludGVncmF0aW9u
OjpVcGRhdGVTY29wZT4gU2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUoKQorewor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVwZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7
Cit9CisKK1NjZW5lSW50ZWdyYXRpb246OkNsaWVudDo6fkNsaWVudCgpID0gZGVmYXVsdDsKKwor
U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU6OlVwZGF0ZVNjb3BlKFJlZjxTY2VuZUludGVn
cmF0aW9uPiYmIHNjZW5lSW50ZWdyYXRpb24pCisgICAgOiBtX3NjZW5lSW50ZWdyYXRpb24oV1RG
TW92ZShzY2VuZUludGVncmF0aW9uKSkKKyAgICAsIG1fbG9ja2VyKG1fc2NlbmVJbnRlZ3JhdGlv
bi0+bV9jbGllbnQubG9jaykKK3sKK30KKworU2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU6
On5VcGRhdGVTY29wZSgpCit7CisgICAgYXV0byYgc2NlbmVJbnRlZ3JhdGlvbk9iaiA9IG1fc2Nl
bmVJbnRlZ3JhdGlvbi5nZXQoKTsKKyAgICBpZiAoc2NlbmVJbnRlZ3JhdGlvbk9iai5tX2NsaWVu
dC5vYmplY3QpCisgICAgICAgIHNjZW5lSW50ZWdyYXRpb25PYmoubV9jbGllbnQub2JqZWN0LT5y
ZXF1ZXN0VXBkYXRlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50
ZWdyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmlj
b3NpYVNjZW5lSW50ZWdyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uN2FmMzkwYmE1MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZUludGVncmF0aW9uLmgKQEAgLTAsMCAr
MSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5W
LgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRl
IDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIE5pY29zaWEgeworCitjbGFzcyBTY2VuZUlu
dGVncmF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNjZW5lSW50ZWdyYXRpb24+
IHsKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmly
dHVhbCB+Q2xpZW50KCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RVcGRhdGUoKSA9
IDA7CisgICAgfTsKKworICAgIFNjZW5lSW50ZWdyYXRpb24oKTsKKyAgICBTY2VuZUludGVncmF0
aW9uKENsaWVudCYpOworICAgIH5TY2VuZUludGVncmF0aW9uKCk7CisKKyAgICB2b2lkIHNldENs
aWVudChDbGllbnQmKTsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKworICAgIHZvaWQgcmVxdWVz
dFVwZGF0ZSgpOworCisgICAgY2xhc3MgVXBkYXRlU2NvcGUgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgVXBkYXRlU2NvcGUoUmVmPFNjZW5lSW50ZWdyYXRpb24+JiYpOworICAgICAgICB+VXBkYXRl
U2NvcGUoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlZjxTY2VuZUludGVncmF0aW9uPiBt
X3NjZW5lSW50ZWdyYXRpb247CisgICAgICAgIExvY2tIb2xkZXIgbV9sb2NrZXI7CisgICAgfTsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxVcGRhdGVTY29wZT4gY3JlYXRlVXBkYXRlU2NvcGUoKTsK
KworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgeworICAgICAgICBMb2NrIGxvY2s7CisgICAgICAgIENs
aWVudCogb2JqZWN0IHsgbnVsbHB0ciB9OworICAgIH0gbV9jbGllbnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBOaWNvc2lhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGE5NTM4MmM5ZDc0Li43ZTY1YWE2MjQwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKQEAgLTEyMDYsNiArMTIwNiwxMSBAQCBib29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6dXNlc0NvbnRlbnRzTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBtX25pY29zaWEuY29udGVu
dExheWVyIHx8IG1fY29tcG9zaXRlZEltYWdlOwogfQogCitQbGF0Zm9ybUxheWVyKiBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBt
X25pY29zaWEubGF5ZXIuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCBiNTE3N2RlOGNlYy4uY2E4
OWRlNTBhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmgKQEAgLTEwOCw2ICsxMDgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
dW1lQW5pbWF0aW9ucygpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBj
b25zdCBvdmVycmlkZTsKIAorI2lmIFVTRShOSUNPU0lBKQorICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgdm9pZCBzeW5jUGVu
ZGluZ1N0YXRlQ2hhbmdlc0luY2x1ZGluZ1N1YkxheWVycygpOwogICAgIHZvaWQgdXBkYXRlQ29u
dGVudEJ1ZmZlcnNJbmNsdWRpbmdTdWJMYXllcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggNTMwZGE4
NjQ4OTguLjRiZjNmZjZjODRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRj
b21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTI5Miw2ICsyOTIsMTEgQEAgdm9p
ZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRH
cmFwaGljc1N0YXRlJiBzdGF0ZSkKICAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVV
cGRhdGUoKTsKIH0KIAordm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5lKCkKK3sK
KyAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+c2NoZWR1bGVVcGRhdGUoKTsKK30KKwogI2lmIFVT
RShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiBSZWZQdHI8V2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBUaHJlYWRlZENvbXBvc2l0b3I6OmRpc3BsYXlSZWZy
ZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVk
Q29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKaW5kZXggN2UxNjczOGYzMGEu
LjMwYjg5ZDJkMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRlZENvbXBvc2l0b3IuaApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGZsb2F0IHNjYWxlKTsK
IAogICAgIHZvaWQgdXBkYXRlU2NlbmVTdGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzU3RhdGUmKTsKKyAgICB2b2lkIHVwZGF0ZVNjZW5lKCk7CiAKICAgICB2b2lkIGludmFs
aWRhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdD
b29yZGluYXRvci5jcHAKaW5kZXggYmU2NDBlOWNjZjMuLmU2MDFkZjY0ZWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
bXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKQEAg
LTIzNSw3ICsyMzUsMTEgQEAgUmVmPEdyYXBoaWNzTGF5ZXI+IENvbXBvc2l0aW5nQ29vcmRpbmF0
b3I6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllcjo6VHkKIHsKICAgICBhdXRvIGxh
eWVyID0gYWRvcHRSZWYoKm5ldyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBj
bGllbnQpKTsKICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7Ci0gICAgbV9uaWNvc2lh
LnN0YXRlLmxheWVycy5hZGQobGF5ZXItPmNvbXBvc2l0aW9uTGF5ZXIoKSk7CisgICAgeworICAg
ICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gbGF5ZXItPmNvbXBvc2l0aW9uTGF5ZXIoKTsK
KyAgICAgICAgbV9uaWNvc2lhLnN0YXRlLmxheWVycy5hZGQoY29tcG9zaXRpb25MYXllcik7Cisg
ICAgICAgIGNvbXBvc2l0aW9uTGF5ZXItPnNldFNjZW5lSW50ZWdyYXRpb24obV9jbGllbnQuc2Nl
bmVJbnRlZ3JhdGlvbigpKTsKKyAgICB9CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXll
ci0+aWQoKSwgbGF5ZXIucHRyKCkpOwogICAgIGxheWVyLT5zZXROZWVkc1Zpc2libGVSZWN0QWRq
dXN0bWVudCgpOwogICAgIG5vdGlmeUZsdXNoUmVxdWlyZWQobGF5ZXIucHRyKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCBi
NGEwZDE1NDRkNS4uNzljY2NjYjFkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCkBAIC00MCw2ICs0MCw3IEBACiAKIG5hbWVzcGFj
ZSBOaWNvc2lhIHsKIGNsYXNzIFBhaW50aW5nRW5naW5lOworY2xhc3MgU2NlbmVJbnRlZ3JhdGlv
bjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsNiArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGbHVzaFJvb3RMYXllcihjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHZpc2libGVDb250ZW50UmVjdCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5Rmx1c2hSZXF1aXJlZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFNjZW5l
U3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJikgPSAwOworICAg
ICAgICB2aXJ0dWFsIFJlZlB0cjxOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uPiBzY2VuZUludGVn
cmF0aW9uKCkgPSAwOwogICAgIH07CiAKICAgICBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yKFdlYkNv
cmU6OlBhZ2UqLCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpDbGllbnQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBo
aWNzLmNwcAppbmRleCA5MGY3NGYyZmRmMy4uYjYzNDY4YmU3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHAKQEAgLTI1Nyw2ICsyNTcsMTEgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3M6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhWaWV3cG9ydEF0dHJpYnUKICAgICAg
ICAgbV9wcmV2aW91c0xheWVyVHJlZUhvc3QtPmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhX
VEZNb3ZlKGF0dHJzKSk7CiB9CiAKK2Jvb2wgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
OjpzdXBwb3J0c0FzeW5jU2Nyb2xsaW5nKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogR3Jh
cGhpY3NMYXllckZhY3RvcnkqIERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6Z3JhcGhp
Y3NMYXllckZhY3RvcnkoKQogewogICAgIGlmICghbV9sYXllclRyZWVIb3N0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBo
aWNzLmgKaW5kZXggZTY4NGY3NWQ2NDUuLjE5ZWNlNzllMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVh
Q29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgK
QEAgLTYyLDYgKzYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1
dGVzKFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYmKSBvdmVycmlkZTsKIAorICAgIGJvb2wg
c3VwcG9ydHNBc3luY1Njcm9sbGluZygpIG92ZXJyaWRlOworCiAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzY2hlZHVsZUluaXRpYWxEZWZlcnJlZFBhaW50KCkgb3ZlcnJpZGUgeyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMmNiODJm
N2E1NWMuLjE5NjE4YzhhZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
SG9zdC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAgTGF5ZXJUcmVlSG9zdDo6TGF5ZXJUcmVlSG9zdChX
ZWJQYWdlJiB3ZWJQYWdlKQogICAgICwgbV9zdXJmYWNlKEFjY2VsZXJhdGVkU3VyZmFjZTo6Y3Jl
YXRlKHdlYlBhZ2UsICp0aGlzKSkKICAgICAsIG1fdmlld3BvcnRDb250cm9sbGVyKHdlYlBhZ2Uu
c2l6ZSgpKQogICAgICwgbV9sYXllckZsdXNoVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
TGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpCisgICAgLCBtX3NjZW5lSW50ZWdy
YXRpb24oKm5ldyBOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uKCp0aGlzKSkKIHsKICNpZiBVU0Uo
R0xJQl9FVkVOVF9MT09QKQogICAgIG1fbGF5ZXJGbHVzaFRpbWVyLnNldFByaW9yaXR5KFJ1bkxv
b3BTb3VyY2VQcmlvcml0eTo6TGF5ZXJGbHVzaFRpbWVyKTsKQEAgLTM4OSwxMSArMzkwLDIxIEBA
IHZvaWQgTGF5ZXJUcmVlSG9zdDo6Y29tbWl0U2NlbmVTdGF0ZShjb25zdCBDb29yZGluYXRlZEdy
YXBoaWNzU3RhdGUmIHN0YXRlKQogICAgIG1fY29tcG9zaXRvci0+dXBkYXRlU2NlbmVTdGF0ZShz
dGF0ZSk7CiB9CiAKK1JlZlB0cjxOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uPiBMYXllclRyZWVI
b3N0OjpzY2VuZUludGVncmF0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9zY2VuZUludGVncmF0aW9u
LmNvcHlSZWYoKTsKK30KKwogdm9pZCBMYXllclRyZWVIb3N0OjpmcmFtZUNvbXBsZXRlKCkKIHsK
ICAgICBtX2NvbXBvc2l0b3ItPmZyYW1lQ29tcGxldGUoKTsKIH0KIAordm9pZCBMYXllclRyZWVI
b3N0OjpyZXF1ZXN0VXBkYXRlKCkKK3sKKyAgICBtX2NvbXBvc2l0b3ItPnVwZGF0ZVNjZW5lKCk7
Cit9CisKIHVpbnQ2NF90IExheWVyVHJlZUhvc3Q6Om5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21w
b3NpdGluZygpCiB7CiAgICAgaWYgKCFtX3N1cmZhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3Qu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IDM4ZjNiN2ZhYmQ0Li5hYzkyOGRkYTJhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmgKQEAgLTM5LDYgKzM5LDEwIEBACiAjaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSA8V2ViQ29yZS9OaWNvc2lhU2NlbmVJ
bnRlZ3JhdGlvbi5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFJl
Y3Q7CiBjbGFzcyBJbnRTaXplOwpAQCAtNTQsNyArNTgsNyBAQCBjbGFzcyBXZWJQYWdlOwogCiBj
bGFzcyBMYXllclRyZWVIb3N0CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIGZp
bmFsIDogcHVibGljIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNsaWVudCwgcHVibGljIEFjY2Vs
ZXJhdGVkU3VyZmFjZTo6Q2xpZW50CisgICAgZmluYWwgOiBwdWJsaWMgQ29tcG9zaXRpbmdDb29y
ZGluYXRvcjo6Q2xpZW50LCBwdWJsaWMgQWNjZWxlcmF0ZWRTdXJmYWNlOjpDbGllbnQsIHB1Ymxp
YyBOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpDbGllbnQKICNlbmRpZgogewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTA3LDEwICsxMTEsMTQgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZEZsdXNoUm9vdExheWVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJsZUNv
bnRlbnRSZWN0KSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoKSBvdmVy
cmlkZSB7IHNjaGVkdWxlTGF5ZXJGbHVzaCgpOyB9OwogICAgIHZvaWQgY29tbWl0U2NlbmVTdGF0
ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8Tmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbj4gc2NlbmVJbnRlZ3JhdGlvbigpIG92
ZXJyaWRlOwogCiAgICAgLy8gQWNjZWxlcmF0ZWRTdXJmYWNlOjpDbGllbnQKICAgICB2b2lkIGZy
YW1lQ29tcGxldGUoKSBvdmVycmlkZTsKIAorICAgIC8vIE5pY29zaWE6OlNjZW5lSW50ZWdyYXRp
b246OkNsaWVudAorICAgIHZvaWQgcmVxdWVzdFVwZGF0ZSgpIG92ZXJyaWRlOworCiAgICAgdWlu
dDY0X3QgbmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKCk7CiAgICAgdm9pZCBkaWRE
ZXN0cm95R0xDb250ZXh0KCk7CiAgICAgdm9pZCB3aWxsUmVuZGVyRnJhbWUoKTsKQEAgLTE5Nyw2
ICsyMDUsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIG5lZWRzRnJlc2hGbHVzaCB7IGZhbHNl
IH07CiAgICAgfSBtX2ZvcmNlUmVwYWludEFzeW5jOwogICAgIFJ1bkxvb3A6OlRpbWVyPExheWVy
VHJlZUhvc3Q+IG1fbGF5ZXJGbHVzaFRpbWVyOworICAgIFJlZjxOaWNvc2lhOjpTY2VuZUludGVn
cmF0aW9uPiBtX3NjZW5lSW50ZWdyYXRpb247CiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371726</attachid>
            <date>2019-06-10 00:02:57 -0700</date>
            <delta_ts>2019-06-23 23:48:42 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-198475-20190610090256.patch</filename>
            <type>text/plain</type>
            <size>60502</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI1YjUwZGVhMTlkMWQ1
OGYyMDFiMWM2MzJlOWUwM2IxY2M5NDMyYy4uNzY0ZTY1ZGI5ZmJmNjc2Yzg3NWRmMjlmODQxYTY2
N2RlNTIxOTQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE5LTA2LTEwICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbTmljb3NpYV0gc3Vw
cG9ydCBhc3luYyBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5ODQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm1Q
bGF5U3RhdGlvbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBT
b3VyY2VzV1BFLnR4dDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhOjpjb21taXRUcmVlU3RhdGUp
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmlj
b3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlcHJlc2VudGF0aW9uOjpyZXRhaW5Q
bGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVwcmVzZW50YXRpb246OnJl
bGVhc2VQbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjphcHBseUxheWVyUG9zaXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUu
aDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpj
b21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OnJlcG9zaXRp
b25TY3JvbGxpbmdMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmFwcGx5TGF5ZXJQb3NpdGlvbnMpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29z
aWEuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNv
c2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOaWNvc2lhOjpjcmVhdGVT
Y3JvbGxpbmdUcmVlTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6Y29tbWl0U3Rh
dGVCZWZvcmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlUG9zaXRp
b25lZE5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nVHJlZVBvc2l0aW9uZWROb2RlOjpyZWxhdGVkTm9kZVNjcm9sbFBvc2l0aW9uRGlkQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6ZHVtcFBy
b3BlcnRpZXMgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZVBvc2l0aW9uZWROb2RlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaC4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6c2Nyb2xsUG9zaXRpb25pbmdCZWhh
dmlvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5v
ZGU6OnJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjphcHBseUxh
eWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
OjpkdW1wUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1RleHR1cmVN
YXBwZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
UGxhdGZvcm1MYXllci5oOgorICAgICAgICAoTmljb3NpYTo6UGxhdGZvcm1MYXllcjo6c2V0U2Nl
bmVJbnRlZ3JhdGlvbik6CisgICAgICAgIChOaWNvc2lhOjpQbGF0Zm9ybUxheWVyOjpjcmVhdGVV
cGRhdGVTY29wZSk6CisgICAgICAgIChOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjphY2Nlc3NT
dGFnaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2Vu
ZUludGVncmF0aW9uLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcC4KKyAgICAgICAgKE5pY29zaWE6
OlNjZW5lSW50ZWdyYXRpb246OlNjZW5lSW50ZWdyYXRpb24pOgorICAgICAgICAoTmljb3NpYTo6
U2NlbmVJbnRlZ3JhdGlvbjo6flNjZW5lSW50ZWdyYXRpb24pOgorICAgICAgICAoTmljb3NpYTo6
U2NlbmVJbnRlZ3JhdGlvbjo6c2V0Q2xpZW50KToKKyAgICAgICAgKE5pY29zaWE6OlNjZW5lSW50
ZWdyYXRpb246OmludmFsaWRhdGUpOgorICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlv
bjo6cmVxdWVzdFVwZGF0ZSk6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpj
cmVhdGVVcGRhdGVTY29wZSk6CisgICAgICAgIChOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpV
cGRhdGVTY29wZTo6VXBkYXRlU2NvcGUpOgorICAgICAgICAoTmljb3NpYTo6U2NlbmVJbnRlZ3Jh
dGlvbjo6VXBkYXRlU2NvcGU6On5VcGRhdGVTY29wZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
LmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKwog
MjAxOS0wNi0wOSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCB3
aWxkY2FyZCB0byBBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzIGFuZCBBY2Nlc3MtQ29udHJv
bC1BbGxvdy1IZWFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5Njg0NTEzNTNhZDY5MDU3MzZhMTIxNzYwNDZm
NDQxOTlmOTk5OTQuLjE1YjZiOWY1NzVlOTJmNGMzZGUzYzFiMjdkYzkxZWQzZGNjYTQ0MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMDYtMTAgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtOaWNvc2lhXSBzdXBwb3J0IGFzeW5jIHNjcm9s
bGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4
NDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21w
b3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVT
Y2VuZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVHcmFwaGljc0xheWVyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3Np
dGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpzdXBwb3J0c0FzeW5jU2Ny
b2xsaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6TGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChXZWJLaXQ6
OkxheWVyVHJlZUhvc3Q6OnNjZW5lSW50ZWdyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVIb3N0OjpyZXF1ZXN0VXBkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0Lmg6CisKIDIwMTktMDYtMDkgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyBzdGF0ZSBpcyBub3QgcHJvcGVybHkgcmVsYXllZCB0byB0aGUgTmV0d29y
a1Byb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24u
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDcx
OTNiYzVhZTEwYjI0NzI2ZWY4OWVmOTdlMDM5ZDZlNDBmOGM2NWQuLmQ5NjhlNmM2NGUyYmY5MjFj
MGVlM2YxMDkxMmIwNmRmMzVmYmU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZQpAQCAtMjEsNiArMjEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwCiAg
ICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Tmljb3NpYS5jcHAKICAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNv
c2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0aW9u
ZWROb2RlLmNwcAogICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuY3BwCiAKICAgICBwYWdlL3Njcm9sbGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdl
bmVyaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CmluZGV4IDljZTY2OWE1NThiMDZkZTExNGNjYjc2
NjJmMjJmNjFlOWI4ZWYwMzAuLjMwZjgwYWY5NDMxNTAwMzkxOTI3YmVlYTI1MWJiZTEwNGRiZTM3
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CkBAIC01MSw2ICs1MSw3IEBAIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCiBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogCiBwYWdlL3Njcm9sbGluZy9nZW5lcmljL1Nj
cm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CmluZGV4IGRiYmQ5OTVh
ZTQ5Mjg0ODYyOWRiMzkzZTE5OTVkZGM1ZGU4NTExMDUuLmYwNzYyZjMyYmU2YTkxYWJjZWFhOWE5
N2M0ZmM0OTdlY2UxODUxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CkBAIC01Miw2ICs1Miw3IEBA
IHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5jcHAKIHBh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKIHBhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3Bw
CiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogCiBwYWdlL3Njcm9s
bGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5jcHAKaW5kZXggNTFiMzU2YTk0MWY3MTNhMzE0ZmMwMTgyZmZkYzRjNGE2MDMzMzE5NC4uMGIy
YTdlMjQwZTNmOTBlNzI5ZjlkNTUxMzNkZDE1NzIxOGFjZWE5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmNwcApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisjaWYgVVNFKE5JQ09TSUEpCisjaW5j
bHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZSBub2Rl
VHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKQEAgLTk3LDcgKzEwMSw3IEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3Qg
U2Nyb2xsaW5nU3RhdGVOCiAgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OkV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIpKQogICAg
ICAgICBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIgPSBzdGF0ZS5leHBlY3RzV2hlZWxF
dmVudFRlc3RUcmlnZ2VyKCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBQTEFURk9STShD
T0NPQSkgfHwgVVNFKE5JQ09TSUEpCiAgICAgaWYgKHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKSkKICAgICAg
ICAgbV9zY3JvbGxDb250YWluZXJMYXllciA9IHN0YXRlLnNjcm9sbENvbnRhaW5lckxheWVyKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IGI0MzQwMjg4ZDA2ZDI4NjQ5MDFhYzI1N2E0MzAw
YmRmZGU2MWMxZTEuLmViNTRlZDFlYjNiZDYxMTJiMjQ5N2MwNGYxYjVkNDg0MDE3ZTNkN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1MYXll
ci5oIgogI2luY2x1ZGUgIlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1ZGUgIlNjcm9s
bFR5cGVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKQEAgLTEyOCw2ICsx
MjksOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdn
ZXIoKSBjb25zdCB7IHJldHVybiBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXI7IH0KIAor
ICAgIFBsYXRmb3JtTGF5ZXIqIHNjcm9sbENvbnRhaW5lckxheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxDb250YWluZXJMYXllci5nZXQoKTsgfQorICAgIFBsYXRmb3JtTGF5ZXIqIHNjcm9s
bGVkQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsZWRDb250ZW50c0xheWVy
LmdldCgpOyB9CisKICAgICBMYXlvdXRQb2ludCBwYXJlbnRUb0xvY2FsUG9pbnQoTGF5b3V0UG9p
bnQpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFBvaW50IGxvY2FsVG9Db250ZW50c1BvaW50
KExheW91dFBvaW50KSBjb25zdCBvdmVycmlkZTsKIApAQCAtMTUzLDYgKzE1Nyw5IEBAIHByaXZh
dGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xs
Q29udGFpbmVyTGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xsZWRDb250ZW50
c0xheWVyOworI2VsaWYgVVNFKE5JQ09TSUEpCisgICAgUmVmUHRyPE5pY29zaWE6OlBsYXRmb3Jt
TGF5ZXI+IG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXI7CisgICAgUmVmUHRyPE5pY29zaWE6OlBsYXRm
b3JtTGF5ZXI+IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAKaW5kZXggMGQzNDNhYjY0MDg1YTFlYmE5
MGZiM2RhMTUyNjUzMzZlNDAwNmZkNC4uNDcwYWU1YTZkOWI4OWYwMGI4OGZhNWY5OGNjZmY0ZjU4
Njk5YjUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcApAQCAt
NTgsNyArNTgsOSBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYTo6cGFnZURlc3Ry
b3llZCgpCiAKICAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyLnN0b3AoKTsK
IAotICAgIHJlbGVhc2VTY3JvbGxpbmdUcmVlKCk7CisgICAgLy8gSW52YWxpZGF0aW5nIHRoZSBz
Y3JvbGxpbmcgdHJlZSB3aWxsIGJyZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUgYmV0d2VlbiB0aGUg
U2Nyb2xsaW5nQ29vcmRpbmF0b3IgYW5kIFNjcm9sbGluZ1RyZWUgb2JqZWN0cy4KKyAgICBSZWZQ
dHI8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPiBzY3JvbGxpbmdUcmVlID0gc3RhdGljX3BvaW50ZXJf
Y2FzdDxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+KHJlbGVhc2VTY3JvbGxpbmdUcmVlKCkpOworICAg
IFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW3Njcm9sbGluZ1RyZWVdIHsgc2Nyb2xsaW5nVHJl
ZS0+aW52YWxpZGF0ZSgpOyB9KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29z
aWE6OmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKCkKQEAgLTgwLDEyICs4MiwxNiBAQCB2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYTo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKQogCiB2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYTo6Y29tbWl0VHJlZVN0YXRlKCkKIHsKKyAg
ICB3aWxsQ29tbWl0VHJlZSgpOworCiAgICAgaWYgKCFzY3JvbGxpbmdTdGF0ZVRyZWUoKS0+aGFz
Q2hhbmdlZFByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPFRocmVh
ZGVkU2Nyb2xsaW5nVHJlZT4gdGhyZWFkZWRTY3JvbGxpbmdUcmVlID0gZG93bmNhc3Q8VGhyZWFk
ZWRTY3JvbGxpbmdUcmVlPihzY3JvbGxpbmdUcmVlKCkpOwogCiAgICAgYXV0byB0cmVlU3RhdGUg
PSBzY3JvbGxpbmdTdGF0ZVRyZWUoKS0+Y29tbWl0KExheWVyUmVwcmVzZW50YXRpb246OlBsYXRm
b3JtTGF5ZXJSZXByZXNlbnRhdGlvbik7CisgICAgdGhyZWFkZWRTY3JvbGxpbmdUcmVlLT5pbmNy
ZW1lbnRQZW5kaW5nQ29tbWl0Q291bnQoKTsKKwogICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0
Y2goW3RocmVhZGVkU2Nyb2xsaW5nVHJlZSwgdHJlZVN0YXRlID0gV1RGTW92ZSh0cmVlU3RhdGUp
XSgpIG11dGFibGUgewogICAgICAgICB0aHJlYWRlZFNjcm9sbGluZ1RyZWUtPmNvbW1pdFRyZWVT
dGF0ZShXVEZNb3ZlKHRyZWVTdGF0ZSkpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVO
b2RlTmljb3NpYS5jcHAKaW5kZXggYjUzMjhlYjQzNzIzMzE4MzkyNDhiOGE3Yzg2ZjExNjcxNmIx
MThkYi4uNTVjNWU2MDU5NmU1OWFhMDAwM2E3ZjM3YjBlMjIyMTllOWFkYjUzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdTdGF0ZU5v
ZGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1N0YXRlTm9kZU5pY29zaWEuY3BwCkBAIC0yNiwyMSArMjYsMjMgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU5vZGUuaCIKIAotI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCiAjaWYg
RU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCiAKKyNpbmNsdWRlICJOaWNv
c2lhUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12b2lkIExheWVyUmVwcmVzZW50YXRpb246OnJldGFpblBsYXRmb3Jt
TGF5ZXIodm9pZCopCit2b2lkIExheWVyUmVwcmVzZW50YXRpb246OnJldGFpblBsYXRmb3JtTGF5
ZXIodm9pZCogdHlwZWxlc3NMYXllcikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlm
IChhdXRvKiBsYXllciA9IG1ha2VQbGF0Zm9ybUxheWVyVHlwZWQodHlwZWxlc3NMYXllcikpCisg
ICAgICAgIGxheWVyLT5yZWYoKTsKIH0KIAotdm9pZCBMYXllclJlcHJlc2VudGF0aW9uOjpyZWxl
YXNlUGxhdGZvcm1MYXllcih2b2lkKikKK3ZvaWQgTGF5ZXJSZXByZXNlbnRhdGlvbjo6cmVsZWFz
ZVBsYXRmb3JtTGF5ZXIodm9pZCogdHlwZWxlc3NMYXllcikKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIGlmIChhdXRvKiBsYXllciA9IG1ha2VQbGF0Zm9ybUxheWVyVHlwZWQodHlwZWxl
c3NMYXllcikpCisgICAgICAgIGxheWVyLT5kZXJlZigpOwogfQogCiBQbGF0Zm9ybUxheWVyKiBM
YXllclJlcHJlc2VudGF0aW9uOjptYWtlUGxhdGZvcm1MYXllclR5cGVkKHZvaWQqIHR5cGVsZXNz
TGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAppbmRleCBjOTBkYmY4MWUyOGFk
NGI3NzY0YTQ5OGJkNTdiYjljYjgyMDc0MDk5Li43MDIxMTI3MmMzZThiYjEwYWJmOGJhMzdlOGM2
NTI4ZTIwMWM1YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKQEAgLTMwLDcg
KzMwLDEyIEBACiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkK
IAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZUZpeGVkTm9k
ZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNTAsMTIgKzU1LDcyIEBAIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6On5TY3JvbGxp
bmdUcmVlRml4ZWROb2RlKCkKICAgICBzY3JvbGxpbmdUcmVlKCkuZml4ZWRPclN0aWNreU5vZGVS
ZW1vdmVkKCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y29tbWl0U3RhdGVC
ZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKQordm9pZCBTY3JvbGxpbmdU
cmVlRml4ZWROb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYgc3RhdGVOb2RlKQogeworICAgIGF1dG8mIGZpeGVkU3RhdGVOb2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU+KHN0YXRlTm9kZSk7CisKKyAgICBpZiAoZml4ZWRT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7
CisgICAgICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqIGxheWVyID0gZml4ZWRTdGF0ZU5vZGUu
bGF5ZXIoKTsKKyAgICAgICAgbV9zY3JvbGxMYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBv
c2l0aW9uTGF5ZXI+KGxheWVyKTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZTo6Vmlld3BvcnRDb25zdHJhaW50cykp
CisgICAgICAgIG1fY29uc3RyYWludHMgPSBmaXhlZFN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFp
bnRzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6YXBwbHlMYXllclBvc2l0
aW9ucygpCiB7CisgICAgYXV0byBjb21wdXRlTGF5ZXJQb3NpdGlvbiA9IFsmXSB7CisgICAgICAg
IEZsb2F0U2l6ZSBvdmVyZmxvd1Njcm9sbERlbHRhOworICAgICAgICAvLyBGSVhNRTogVGhpcyBj
b2RlIGlzIHdyb25nIGluIGNvbXBsZXggY2FzZXMgd2hlcmUgdGhlIGZpeGVkIGVsZW1lbnQgaXMg
aW5zaWRlIGEgcG9zaXRpb25lZCBub2RlIGFzCisgICAgICAgIC8vICAgICAgICB0aGUgc2Nyb2xs
IGNvbnRhaW5lciBvcmRlciBkb2VzIG5vdCBtYXRjaCB0aGUgc2Nyb2xsaW5nIHRyZWUgYW5jZXN0
b3Igb3JkZXIuCisgICAgICAgIGZvciAoYXV0byogbm9kZSA9IHBhcmVudCgpOyBub2RlOyBub2Rl
ID0gbm9kZS0+cGFyZW50KCkpIHsKKyAgICAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlPigqbm9kZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGaXhlZCBub2Rl
cyBhcmUgcG9zaXRpb25lZCByZWxhdGl2ZSB0byB0aGUgY29udGFpbmluZyBmcmFtZSBzY3JvbGxp
bmcgbm9kZS4KKyAgICAgICAgICAgICAgICAvLyBXZSBiYWlsIG91dCBhZnRlciBmaW5kaW5nIG9u
ZS4KKyAgICAgICAgICAgICAgICBhdXRvIGxheW91dFZpZXdwb3J0ID0gZG93bmNhc3Q8U2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oKm5vZGUpLmxheW91dFZpZXdwb3J0KCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0
UmVjdChsYXlvdXRWaWV3cG9ydCkgLSBvdmVyZmxvd1Njcm9sbERlbHRhOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZT4oKm5vZGUpKSB7CisgICAgICAgICAgICAgICAgLy8gVG8ga2VlcCB0aGUgbGF5ZXIgc3RpbGwg
ZHVyaW5nIGFzeW5jIHNjcm9sbGluZyB3ZSBhZGp1c3QgYnkgaG93IG11Y2ggdGhlIHBvc2l0aW9u
IGhhcyBjaGFuZ2VkIHNpbmNlIGxheW91dC4KKyAgICAgICAgICAgICAgICBhdXRvJiBvdmVyZmxv
d05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPigqbm9k
ZSk7CisgICAgICAgICAgICAgICAgYXV0byBsb2NhbERlbHRhID0gb3ZlcmZsb3dOb2RlLmxhc3RD
b21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIC0gb3ZlcmZsb3dOb2RlLmN1cnJlbnRTY3JvbGxQb3Np
dGlvbigpOworICAgICAgICAgICAgICAgIG92ZXJmbG93U2Nyb2xsRGVsdGEgKz0gbG9jYWxEZWx0
YTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQoKTsKKyAgICB9OworCisgICAgYXV0byBsYXll
clBvc2l0aW9uID0gY29tcHV0ZUxheWVyUG9zaXRpb24oKTsKKworICAgIExPR19XSVRIX1NUUkVB
TShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSAiIDw8IHNjcm9s
bGluZ05vZGVJRCgpIDw8ICIgcmVsYXRlZE5vZGVTY3JvbGxQb3NpdGlvbkRpZENoYW5nZTogdmll
d3BvcnRSZWN0QXRMYXN0TGF5b3V0ICIgPDwgbV9jb25zdHJhaW50cy52aWV3cG9ydFJlY3RBdExh
c3RMYXlvdXQoKSA8PCAiIGxhc3QgbGF5ZXIgcG9zICIgPDwgbV9jb25zdHJhaW50cy5sYXllclBv
c2l0aW9uQXRMYXN0TGF5b3V0KCkgPDwgIiBsYXllclBvc2l0aW9uICIgPDwgbGF5ZXJQb3NpdGlv
bik7CisKKyAgICBBU1NFUlQobV9zY3JvbGxMYXllcik7CisgICAgbV9zY3JvbGxMYXllci0+YWNj
ZXNzU3RhZ2luZygKKyAgICAgICAgICAgIFt0aGlzLCAmbGF5ZXJQb3NpdGlvbl0oTmljb3NpYTo6
Q29tcG9zaXRpb25MYXllcjo6TGF5ZXJTdGF0ZSYgc3RhdGUpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgc3RhdGUucG9zaXRpb24gPSBsYXllclBvc2l0aW9uOworICAgICAgICAgICAg
ICAgIHN0YXRlLmRlbHRhLnBvc2l0aW9uQ2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICB9KTsK
K30KKwordm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3Ry
ZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0
Cit7CisgICAgdHMgPDwgImZpeGVkIG5vZGUiOworICAgIFNjcm9sbGluZ1RyZWVOb2RlOjpkdW1w
UHJvcGVydGllcyh0cywgYmVoYXZpb3IpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZml4ZWQgY29u
c3RyYWludHMiLCBtX2NvbnN0cmFpbnRzKTsKKworI2lmIDAgICAgCisgICAgaWYgKGJlaGF2aW9y
ICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJQb3NpdGlvbnMp
IHsKKyAgICAgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gW21fbGF5ZXIgYm91bmRzXTsKKyAg
ICAgICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCA9IFttX2xheWVyIGFuY2hvclBvaW50XTsKKyAg
ICAgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IFttX2xheWVyIHBvc2l0aW9uXTsKKyAgICAgICAg
RmxvYXRQb2ludCBsYXllclRvcExlZnQgPSBwb3NpdGlvbiAtIHRvRmxvYXRTaXplKGFuY2hvclBv
aW50KSAqIGxheWVyQm91bmRzLnNpemUoKSArIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0
KCk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5ZXIgdG9wIGxlZnQiLCBsYXllclRvcExl
ZnQpOworICAgIH0KKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVG
aXhlZE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oCmluZGV4IDlmOGUxZTI1MWJlMjJiZWQzYjViOGVjMGIyZjlmZjY4
NjIxNDQ5ZDEuLjY4NWQ5N2RkZDljOWJhNzU5MDk1YTZhOTJkZTViOGE1MWUxZmFiY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oCkBAIC0zMSw2ICszMSwxMyBAQAogCiAjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZU5vZGUuaCIKIAorI2luY2x1ZGUgIlNjcm9sbGluZ0NvbnN0cmFpbnRzLmgi
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgTmljb3NpYSB7CitjbGFzcyBD
b21wb3NpdGlvbkxheWVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcm9s
bGluZ1RyZWVGaXhlZE5vZGUgZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgewpAQCAt
NDMsOCArNTAsMTUgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGls
ZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIGFwcGx5
TGF5ZXJQb3NpdGlvbnMoKSBvdmVycmlkZTsKKworICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoV1RG
OjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IpIGNvbnN0IG92
ZXJyaWRlOworCisgICAgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgbV9jb25zdHJh
aW50czsKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9zY3JvbGxMYXll
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlRml4ZWROb2RlLCBpc0ZpeGVkTm9kZSgpKQor
CiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3Bw
CmluZGV4IDFjZTRhMWFkYWQ4MWE0YzExNWMxYzliODlmNzQzNGFhYWVhYjA4MmEuLmUzMmYyZGRi
ODk2ZTU3MTU2MTI5NjQ4NDNlYjg5OTM0Y2E2MjQxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCkBAIC0zMCw2ICszMCwx
MSBAQAogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCiAKKyNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlICJOaWNvc2lh
UGxhdGZvcm1MYXllci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlPiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmlj
b3NpYTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVU
eXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQpAQCAtNDQsMTIgKzQ5LDkxIEBA
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTmljb3NpYShTCiAKIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVOaWNvc2lhOjp+U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEoKSA9IGRl
ZmF1bHQ7CiAKLVNjcm9sbGluZ0V2ZW50UmVzdWx0IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYp
Cit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0
ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQorewor
ICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hp
bGRyZW4oc3RhdGVOb2RlKTsKKyAgICBjb25zdCBhdXRvJiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBk
b3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc3RhdGVOb2RlKTsKKwor
ICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6TGF5ZXIpKSB7CisgICAgICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqIGxheWVy
ID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmxheWVyKCk7CisgICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBk
b3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAgfQorICAgIGlm
IChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkgeworICAgICAgICBOaWNvc2lhOjpQ
bGF0Zm9ybUxheWVyKiBsYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRz
TGF5ZXIoKTsKKyAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIgPSBkb3duY2FzdDxOaWNv
c2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAgfQorICAgIGlmIChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdO
b2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKSB7CisgICAgICAgIE5pY29zaWE6OlBsYXRmb3Jt
TGF5ZXIqIGxheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmNvdW50ZXJTY3JvbGxpbmdMYXllcigp
OworICAgICAgICBtX2NvdW50ZXJTY3JvbGxpbmdMYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNv
bXBvc2l0aW9uTGF5ZXI+KGxheWVyKTsKKyAgICB9CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Oklu
c2V0Q2xpcExheWVyKSkgeworICAgICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKiBsYXllciA9
IHNjcm9sbGluZ1N0YXRlTm9kZS5pbnNldENsaXBMYXllcigpOworICAgICAgICBtX2luc2V0Q2xp
cExheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOworICAg
IH0KKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q29udGVudFNoYWRvd0xheWVyKSkgeworICAgICAg
ICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKiBsYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5jb250
ZW50U2hhZG93TGF5ZXIoKTsKKyAgICAgICAgbV9jb250ZW50U2hhZG93TGF5ZXIgPSBkb3duY2Fz
dDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAgfQorICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlOjpIZWFkZXJMYXllcikpIHsKKyAgICAgICAgTmljb3NpYTo6UGxhdGZvcm1MYXll
ciogbGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuaGVhZGVyTGF5ZXIoKTsKKyAgICAgICAgbV9o
ZWFkZXJMYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KGxheWVyKTsK
KyAgICB9CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3RlckxheWVyKSkgeworICAgICAgICBO
aWNvc2lhOjpQbGF0Zm9ybUxheWVyKiBsYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5mb290ZXJM
YXllcigpOworICAgICAgICBtX2Zvb3RlckxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9z
aXRpb25MYXllcj4obGF5ZXIpOworICAgIH0KK30KKwordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9s
bGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQoreworICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGU6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihzdGF0ZU5vZGUpOworCisgICAgY29u
c3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlPihzdGF0ZU5vZGUpOworCisgICAgLy8gVXBkYXRlIHRoZSBzY3JvbGwgcG9zaXRp
b24gYWZ0ZXIgY2hpbGQgbm9kZXMgaGF2ZSBiZWVuIHVwZGF0ZWQsIGJlY2F1c2UgdGhleSBuZWVk
IHRvIGhhdmUgdXBkYXRlZCB0aGVpciBjb25zdHJhaW50cyBiZWZvcmUgYW55IHNjcm9sbGluZyBo
YXBwZW5zLgorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pKSB7Cisg
ICAgICAgIGF1dG8gc2Nyb2xsVHlwZSA9IHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3Jv
bGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSA/IFNjcm9sbFR5cGU6OlBy
b2dyYW1tYXRpYyA6IFNjcm9sbFR5cGU6OlVzZXI7CisgICAgICAgIHNjcm9sbFRvKHNjcm9sbGlu
Z1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpLCBzY3JvbGxUeXBlKTsKKyAgICB9
Cit9CisKK1Njcm9sbGluZ0V2ZW50UmVzdWx0IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCkKIHsKLSAgICByZXR1cm4gU2Nyb2xsaW5nRXZlbnRSZXN1bHQ6OkRpZE5vdEhhbmRs
ZUV2ZW50OworICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKKyAgICAgICAgcmV0dXJuIFNj
cm9sbGluZ0V2ZW50UmVzdWx0OjpEaWROb3RIYW5kbGVFdmVudDsKKworICAgIGlmICh3aGVlbEV2
ZW50LmRlbHRhWCgpIHx8IHdoZWVsRXZlbnQuZGVsdGFZKCkpIHsKKyAgICAgICAgYXV0byogc2Ny
b2xsTGF5ZXIgPSBzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKTsKKyAgICAgICAgQVNTRVJUKHNjcm9s
bExheWVyKTsKKyAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29z
aWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7CisKKyAgICAgICAgYXV0byB1cGRh
dGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKKyAgICAgICAg
c2Nyb2xsQnkoeyB3aGVlbEV2ZW50LmRlbHRhWCgpLCAtd2hlZWxFdmVudC5kZWx0YVkoKSB9KTsK
KyAgICB9CisKKyAgICAvLyBUT0RPOgorICAgIC8vIHNjcm9sbGluZ1RyZWUoKS5zZXRPckNsZWFy
TGF0Y2hlZE5vZGUod2hlZWxFdmVudCwgc2Nyb2xsaW5nTm9kZUlEKCkpOworICAgIC8vIHNjcm9s
bGluZ1RyZWUoKS5oYW5kbGVXaGVlbEV2ZW50UGhhc2Uod2hlZWxFdmVudC5waGFzZSgpKTsKKyAg
ICByZXR1cm4gU2Nyb2xsaW5nRXZlbnRSZXN1bHQ6OkRpZEhhbmRsZUV2ZW50OwogfQogCiB2b2lk
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpyZXBvc2l0aW9uU2Nyb2xs
aW5nTGF5ZXJzKCkKK3sKKyAgICBhdXRvKiBzY3JvbGxMYXllciA9IHNjcm9sbGVkQ29udGVudHNM
YXllcigpOworICAgIEFTU0VSVChzY3JvbGxMYXllcik7CisgICAgYXV0byYgY29tcG9zaXRpb25M
YXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7
CisKKyAgICBhdXRvIHNjcm9sbFBvc2l0aW9uID0gY3VycmVudFNjcm9sbFBvc2l0aW9uKCk7CisK
KyAgICBjb21wb3NpdGlvbkxheWVyLmFjY2Vzc1N0YWdpbmcoCisgICAgICAgIFsmc2Nyb2xsUG9z
aXRpb25dKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0YXRlKQorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0ZS5wb3NpdGlvbiA9IC1zY3JvbGxQb3NpdGlvbjsKKyAg
ICAgICAgICAgIHN0YXRlLmRlbHRhLnBvc2l0aW9uQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIH0p
OworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjphcHBs
eUxheWVyUG9zaXRpb25zKCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3Np
YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IDJiNWEyYmUzYmNlMGI1ZWU1MGVkOTA2
YmM1ZTM2NDc4YTIwMmIxODYuLmY3YjU2N2VjYTc0NGJkYWQ4ODlmOWZkODQ3YjNhYzM2ZWQxODQ4
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVO
aWNvc2lhLmgKQEAgLTMxLDYgKzMxLDEyIEBACiAKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlLmgiCiAKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBOaWNvc2lhIHsKK2NsYXNzIENvbXBvc2l0aW9uTGF5ZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEgZmlu
YWwgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSB7CkBAIC00MSw5ICs0
NywyMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5n
Tm9kZUlEKTsKIAorICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3Jv
bGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdFN0YXRlQWZ0ZXJDaGls
ZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKwogICAgIFNjcm9sbGlu
Z0V2ZW50UmVzdWx0IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlcG9zaXRpb25TY3JvbGxpbmdMYXllcnMoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlvbnMoKSBvdmVycmlkZTsKKworICAgIFJlZlB0
cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX3Njcm9sbExheWVyOworICAgIFJlZlB0cjxO
aWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsKKyAgICBS
ZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXI7
CisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1faW5zZXRDbGlwTGF5ZXI7
CisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1fY29udGVudFNoYWRvd0xh
eWVyOworICAgIFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2hlYWRlckxheWVy
OworICAgIFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2Zvb3RlckxheWVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcApp
bmRleCBjZWE3MTQ2ZjExODA5NjA1YzUzNmJhNzc4NTgzZjA0ZmJjMzlhODBkLi45N2Y4ODZhNjgw
ZWJkNWZkNTIzMDUxYmY4ZDAyYWZjMjA4MDllZWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lh
LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUu
aCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5oIgogI2luY2x1ZGUg
IlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmgiCisjaW5jbHVkZSAiU2Ny
b2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTUsMTggKzU2LDE4IEBAIFJlZjxT
Y3JvbGxpbmdUcmVlTm9kZT4gU2Nyb2xsaW5nVHJlZU5pY29zaWE6OmNyZWF0ZVNjcm9sbGluZ1Ry
ZWVOb2RlKFNjcm9sbGluZ05vCiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTmljb3NpYTo6Y3JlYXRlKCp0aGlzLCBub2RlVHlwZSwgbm9kZUlEKTsKICAgICBj
YXNlIFNjcm9sbGluZ05vZGVUeXBlOjpGcmFtZUhvc3Rpbmc6CiAgICAgICAgIHJldHVybiBTY3Jv
bGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwotICAgIGNh
c2UgU2Nyb2xsaW5nTm9kZVR5cGU6Ok92ZXJmbG93OgotICAgICAgICAvLyBTaG91bGQgbm90IGJl
IHJlYWNoZWQgLS0gY2F1Z2h0IGJ5IEFTU0VSVF9OT1RfUkVBQ0hFRCgpIGJlbG93LgorICAgIGNh
c2UgU2Nyb2xsaW5nTm9kZVR5cGU6Ok92ZXJmbG93OiAvLyBGSVhNRQogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpGaXhlZDoKICAgICAgICAgcmV0dXJuIFNjcm9s
bGluZ1RyZWVGaXhlZE5vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKICAgICBjYXNlIFNjcm9s
bGluZ05vZGVUeXBlOjpTdGlja3k6CiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6
OlBvc2l0aW9uZWQ6Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGU6OmNyZWF0ZSgqdGhpcywgbm9k
ZUlEKTsKICAgICB9CiAKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIC8v
IEZJWE1FOiBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGNiYzA0ZWNiNzc1NjhlNmIzNmY5ZmY5YzFkYmI0MjgxMmQyZGJjYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBv
c2l0aW9uZWROb2RlLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oIgor
CisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCisKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZWY8U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlPiBTY3JvbGxpbmdUcmVlUG9zaXRpb25l
ZE5vZGU6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2Rl
SUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1RyZWVQb3Np
dGlvbmVkTm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpKTsKK30KKworU2Nyb2xsaW5nVHJlZVBv
c2l0aW9uZWROb2RlOjpTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUoU2Nyb2xsaW5nVHJlZSYg
c2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAgICA6IFNjcm9sbGluZ1Ry
ZWVOb2RlKHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVUeXBlOjpQb3NpdGlvbmVkLCBub2Rl
SUQpCit7Cit9CisKK1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6flNjcm9sbGluZ1RyZWVQ
b3NpdGlvbmVkTm9kZSgpID0gZGVmYXVsdDsKKwordm9pZCBTY3JvbGxpbmdUcmVlUG9zaXRpb25l
ZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2Rl
JiBzdGF0ZU5vZGUpCit7CisgICAgY29uc3QgU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZSYg
cG9zaXRpb25lZFN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5v
ZGU+KHN0YXRlTm9kZSk7CisKKyAgICBpZiAocG9zaXRpb25lZFN0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpIHsKKyAgICAgICAgTmljb3NpYTo6
UGxhdGZvcm1MYXllciogbGF5ZXIgPSBwb3NpdGlvbmVkU3RhdGVOb2RlLmxheWVyKCk7CisgICAg
ICAgIG1fc2Nyb2xsTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihs
YXllcik7CisgICAgfQorCisgICAgaWYgKHBvc2l0aW9uZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU6OlJlbGF0ZWRPdmVyZmxvd1Njcm9s
bGluZ05vZGVzKSkKKyAgICAgICAgbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcyA9IHBv
c2l0aW9uZWRTdGF0ZU5vZGUucmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMoKTsKKworICAg
IGlmIChwb3NpdGlvbmVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVBvc2l0aW9uZWROb2RlOjpMYXlvdXRDb25zdHJhaW50RGF0YSkpCisgICAgICAgIG1fY29uc3Ry
YWludHMgPSBwb3NpdGlvbmVkU3RhdGVOb2RlLmxheW91dENvbnN0cmFpbnRzKCk7CisKKyAgICAv
LyBUZWxsIHRoZSBTY3JvbGxpbmdUcmVlIGFib3V0IG5vbi1hbmNlc3RvciBvdmVyZmxvdyBub2Rl
cyB3aGljaCBhZmZlY3QgdGhpcyBub2RlLgorICAgIGlmIChtX2NvbnN0cmFpbnRzLnNjcm9sbFBv
c2l0aW9uaW5nQmVoYXZpb3IoKSA9PSBTY3JvbGxQb3NpdGlvbmluZ0JlaGF2aW9yOjpNb3Zlcykg
eworICAgICAgICBhdXRvJiByZWxhdGVkTm9kZXMgPSBzY3JvbGxpbmdUcmVlKCkub3ZlcmZsb3dS
ZWxhdGVkTm9kZXMoKTsKKyAgICAgICAgZm9yIChhdXRvIG92ZXJmbG93Tm9kZUlEIDogbV9yZWxh
dGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlcykgeworICAgICAgICAgICAgcmVsYXRlZE5vZGVzLmVu
c3VyZShvdmVyZmxvd05vZGVJRCwgW10geworICAgICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8
U2Nyb2xsaW5nTm9kZUlEPigpOworICAgICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVu
ZChzY3JvbGxpbmdOb2RlSUQoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFtX3JlbGF0
ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzLmlzRW1wdHkoKSAmJiBtX2NvbnN0cmFpbnRzLnNjcm9s
bFBvc2l0aW9uaW5nQmVoYXZpb3IoKSAhPSBTY3JvbGxQb3NpdGlvbmluZ0JlaGF2aW9yOjpOb25l
KQorICAgICAgICBzY3JvbGxpbmdUcmVlKCkucG9zaXRpb25lZE5vZGVzV2l0aFJlbGF0ZWRPdmVy
ZmxvdygpLmFkZChzY3JvbGxpbmdOb2RlSUQoKSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVBv
c2l0aW9uZWROb2RlOjphcHBseUxheWVyUG9zaXRpb25zKCkKK3sKKyAgICBGbG9hdFNpemUgc2Ny
b2xsT2Zmc2V0U2luY2VMYXN0Q29tbWl0OworICAgIGZvciAoYXV0byBub2RlSUQgOiBtX3JlbGF0
ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKSB7CisgICAgICAgIGlmIChhdXRvKiBub2RlID0gc2Ny
b2xsaW5nVHJlZSgpLm5vZGVGb3JJRChub2RlSUQpKSB7CisgICAgICAgICAgICBpZiAoaXM8U2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4obm9kZSkpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvJiBvdmVyZmxvd05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlPigqbm9kZSk7CisgICAgICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0U2luY2VMYXN0
Q29tbWl0ICs9IG92ZXJmbG93Tm9kZS5sYXN0Q29tbWl0dGVkU2Nyb2xsUG9zaXRpb24oKSAtIG92
ZXJmbG93Tm9kZS5jdXJyZW50U2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyAgICBhdXRvIGxheWVyT2Zmc2V0ID0gLXNjcm9sbE9mZnNldFNpbmNlTGFz
dENvbW1pdDsKKyAgICBpZiAobV9jb25zdHJhaW50cy5zY3JvbGxQb3NpdGlvbmluZ0JlaGF2aW9y
KCkgPT0gU2Nyb2xsUG9zaXRpb25pbmdCZWhhdmlvcjo6U3RhdGlvbmFyeSkgeworICAgICAgICAv
LyBTdGF0aW9uYXJ5IG5vZGVzIG1vdmUgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbi4KKyAgICAg
ICAgbGF5ZXJPZmZzZXQgPSAtbGF5ZXJPZmZzZXQ7CisgICAgfQorCisgICAgRmxvYXRQb2ludCBs
YXllclBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkg
LSBsYXllck9mZnNldDsKKworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8
PCAiU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwg
IiBhcHBseUxheWVyUG9zaXRpb25zOiBvdmVyZmxvdyBkZWx0YSAiIDw8IHNjcm9sbE9mZnNldFNp
bmNlTGFzdENvbW1pdCA8PCAiIG1vdmluZyBsYXllciB0byAiIDw8IGxheWVyUG9zaXRpb24pOwor
CisgICAgbV9zY3JvbGxMYXllci0+YWNjZXNzU3RhZ2luZygKKyAgICAgICAgICAgIFt0aGlzLCAm
bGF5ZXJQb3NpdGlvbl0oTmljb3NpYTo6Q29tcG9zaXRpb25MYXllcjo6TGF5ZXJTdGF0ZSYgc3Rh
dGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RhdGUucG9zaXRpb24gPSBsYXll
clBvc2l0aW9uOworICAgICAgICAgICAgICAgIHN0YXRlLmRlbHRhLnBvc2l0aW9uQ2hhbmdlZCA9
IHRydWU7CisgICAgICAgICAgICB9KTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlUG9zaXRpb25l
ZE5vZGU6OnJlbGF0ZWROb2RlU2Nyb2xsUG9zaXRpb25EaWRDaGFuZ2UoY29uc3QgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUmIGNoYW5nZWROb2RlKQoreworICAgIGlmICghbV9yZWxhdGVkT3Zl
cmZsb3dTY3JvbGxpbmdOb2Rlcy5jb250YWlucyhjaGFuZ2VkTm9kZS5zY3JvbGxpbmdOb2RlSUQo
KSkpCisgICAgICAgIHJldHVybjsKKworICAgIGFwcGx5TGF5ZXJQb3NpdGlvbnMoKTsKK30KKwor
dm9pZCBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJl
YW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvciBiZWhhdmlvcikgY29uc3QK
K3sKKyAgICB0cyA8PCAicG9zaXRpb25lZCBub2RlIjsKKyAgICBTY3JvbGxpbmdUcmVlTm9kZTo6
ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKKworICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5
b3V0IGNvbnN0cmFpbnRzIiwgbV9jb25zdHJhaW50cyk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJy
ZWxhdGVkIG92ZXJmbG93IG5vZGVzIiwgbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rlcy5z
aXplKCkpOworCisgICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVo
YXZpb3JJbmNsdWRlTm9kZUlEcykgeworICAgICAgICBpZiAoIW1fcmVsYXRlZE92ZXJmbG93U2Ny
b2xsaW5nTm9kZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNj
b3BlIHNjb3BlKHRzKTsKKyAgICAgICAgICAgIHRzIDw8ICJvdmVyZmxvdyBub2RlcyI7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gbm9kZUlEIDogbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
cykKKyAgICAgICAgICAgICAgICB0cyA8PCAiXG4iIDw8IGluZGVudCA8PCAibm9kZUlEICIgPDwg
bm9kZUlEOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZVBvc2l0aW9uZWROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NTFhMWZjZDA2NWVk
NTYzMDUwMjY5NjRjMGY4ZDE2YjA0NTY0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5o
CkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCisKKyNpbmNsdWRlICJTY3JvbGxp
bmdDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgTmljb3NpYSB7CitjbGFzcyBDb21wb3NpdGlv
bkxheWVyOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbGluZ1RyZWVQ
b3NpdGlvbmVkTm9kZSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGU+IGNyZWF0ZShTY3JvbGxpbmdU
cmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlUG9zaXRp
b25lZE5vZGUoKTsKKworICAgIFNjcm9sbFBvc2l0aW9uaW5nQmVoYXZpb3Igc2Nyb2xsUG9zaXRp
b25pbmdCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWludHMuc2Nyb2xsUG9zaXRp
b25pbmdCZWhhdmlvcigpOyB9CisgICAgY29uc3QgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4mIHJl
bGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZWxhdGVkT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlczsgfQorCitwcml2YXRlOgorICAgIFNjcm9sbGluZ1RyZWVQb3Np
dGlvbmVkTm9kZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQg
Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlbGF0ZWROb2RlU2Nyb2xsUG9zaXRpb25EaWRDaGFuZ2UoY29uc3Qg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIGNoYW5nZWROb2RlKSBvdmVycmlkZTsKKworICAg
IHZvaWQgYXBwbHlMYXllclBvc2l0aW9ucygpIG92ZXJyaWRlOworCisgICAgdm9pZCBkdW1wUHJv
cGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlv
cikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBWZWN0b3I8U2Nyb2xsaW5nTm9kZUlEPiBtX3JlbGF0
ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzOworICAgIExheW91dENvbnN0cmFpbnRzIG1fY29uc3Ry
YWludHM7CisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1fc2Nyb2xsTGF5
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfU0NST0xMSU5HX05PREUoU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLCBpc1Bvc2l0aW9u
ZWROb2RlKCkpCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklD
T1NJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKaW5kZXggZDYzZWFhZWNmMmMw
ZjM1MTU4NDkxNTQ0YmY2ZGVjYWViNWEzMWViMy4uMzIwZTkxNTBmYTk2NjM4N2Q2OGRiOWY4NzBk
ZTk4NGUzY2RmMzBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKQEAgLTMw
LDcgKzMwLDEzIEBACiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJ
QSkKIAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZVN0aWNr
eU5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01MCwxMiArNTYsNjAgQEAgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6On5TY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZSgpCiAgICAgc2Nyb2xsaW5nVHJlZSgpLmZpeGVkT3JTdGlja3lOb2RlUmVtb3Zl
ZCgpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9y
ZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpCit2b2lkIFNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRl
Tm9kZSYgc3RhdGVOb2RlKQogeworICAgIGF1dG8mIHN0aWNreVN0YXRlTm9kZSA9IGRvd25jYXN0
PFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZT4oc3RhdGVOb2RlKTsKKworICAgIGlmIChzdGlja3lT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7
CisgICAgICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqIGxheWVyID0gc3RpY2t5U3RhdGVOb2Rl
LmxheWVyKCk7CisgICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21w
b3NpdGlvbkxheWVyPihsYXllcik7CisgICAgfQorCisgICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRz
KSkKKyAgICAgICAgbV9jb25zdHJhaW50cyA9IHN0aWNreVN0YXRlTm9kZS52aWV3cG9ydENvbnN0
cmFpbnRzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmFwcGx5TGF5ZXJQ
b3NpdGlvbnMoKQogeworICAgIEZsb2F0UmVjdCBjb25zdHJhaW5pbmdSZWN0OworCisgICAgYXV0
byogZW5jbG9zaW5nU2Nyb2xsaW5nTm9kZSA9IHBhcmVudCgpOworICAgIGlmIChpczxTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPihlbmNsb3NpbmdTY3JvbGxpbmdOb2RlKSkKKyAg
ICAgICAgY29uc3RyYWluaW5nUmVjdCA9IEZsb2F0UmVjdChkb3duY2FzdDxTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlPigqZW5jbG9zaW5nU2Nyb2xsaW5nTm9kZSkuY3VycmVudFNj
cm9sbFBvc2l0aW9uKCksIG1fY29uc3RyYWludHMuY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91
dCgpLnNpemUoKSk7CisgICAgZWxzZSBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZT4oZW5jbG9zaW5nU2Nyb2xsaW5nTm9kZSkpCisgICAgICAgIGNvbnN0cmFpbmluZ1JlY3Qg
PSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihlbmNsb3NpbmdTY3Jv
bGxpbmdOb2RlKS0+bGF5b3V0Vmlld3BvcnQoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybjsK
KworICAgIEZsb2F0UG9pbnQgbGF5ZXJQb3NpdGlvbiA9IG1fY29uc3RyYWludHMubGF5ZXJQb3Np
dGlvbkZvckNvbnN0cmFpbmluZ1JlY3QoY29uc3RyYWluaW5nUmVjdCkgLSBtX2NvbnN0cmFpbnRz
LmFsaWdubWVudE9mZnNldCgpOworCisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3Ry
ZWFtIDw8ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8
ICIgY29uc3RyYWluaW5nUmVjdCAiIDw8IGNvbnN0cmFpbmluZ1JlY3QgPDwgIiBjb25zdHJhaW5p
bmdSZWN0QXRMYXN0TGF5b3V0ICIgPDwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRM
YXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxheWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQ
b3NpdGlvbkF0TGFzdExheW91dCgpIDw8ICIgbGF5ZXJQb3NpdGlvbiAiIDw8IGxheWVyUG9zaXRp
b24pOworCisgICAgQVNTRVJUKG1fc2Nyb2xsTGF5ZXIpOworICAgIG1fc2Nyb2xsTGF5ZXItPmFj
Y2Vzc1N0YWdpbmcoCisgICAgICAgICAgICBbdGhpcywgJmxheWVyUG9zaXRpb25dKE5pY29zaWE6
OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0YXRlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHN0YXRlLnBvc2l0aW9uID0gbGF5ZXJQb3NpdGlvbjsKKyAgICAgICAgICAg
ICAgICBzdGF0ZS5kZWx0YS5wb3NpdGlvbkNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7
Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRT
dHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvciBiZWhhdmlvcikgY29u
c3QKK3sKKyAgICB0cyA8PCAic3RpY2t5IG5vZGUiOworCisgICAgU2Nyb2xsaW5nVHJlZU5vZGU6
OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzdGlj
a3kgY29uc3RyYWludHMiLCBtX2NvbnN0cmFpbnRzKTsKKworI2lmIDAKKyAgICBpZiAoYmVoYXZp
b3IgJiBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvckluY2x1ZGVMYXllclBvc2l0aW9u
cykgeworICAgICAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBbbV9sYXllciBib3VuZHNdOwor
ICAgICAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5jaG9yUG9pbnRdOwor
ICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gW21fbGF5ZXIgcG9zaXRpb25dOworICAgICAg
ICBGbG9hdFBvaW50IGxheWVyVG9wTGVmdCA9IHBvc2l0aW9uIC0gdG9GbG9hdFNpemUoYW5jaG9y
UG9pbnQpICogbGF5ZXJCb3VuZHMuc2l6ZSgpICsgbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZz
ZXQoKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJsYXllciB0b3AgbGVmdCIsIGxheWVyVG9w
TGVmdCk7CisgICAgfQorI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuaAppbmRleCBhM2QxOTFlYTliOWY3NTgxYzg0OGUxZDlhOWJm
YzVlZTUzYjU5M2ZhLi5mOTUyMTQ3NDEyOGM5MWU4YTFlYTg5NzI3MTYyNzRlMzQ3OTE4OWFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTdGlja3lOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCkBAIC0zMSw2ICszMSwxMyBAQAogCiAjaW5j
bHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKIAorI2luY2x1ZGUgIlNjcm9sbGluZ0NvbnN0cmFp
bnRzLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgTmljb3NpYSB7Citj
bGFzcyBDb21wb3NpdGlvbkxheWVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2Rl
IHsKQEAgLTQ0LDggKzUxLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9y
ZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
YXBwbHlMYXllclBvc2l0aW9ucygpIG92ZXJyaWRlOwogCisgICAgdm9pZCBkdW1wUHJvcGVydGll
cyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29u
c3Qgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9z
Y3JvbGxMYXllcjsKKyAgICBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgbV9jb25z
dHJhaW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSwgaXNTdGlja3lO
b2RlKCkpCisKICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJ
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCmluZGV4IDI4
YjdlMTc3YTEwNDQwZWUyMTNiMGEzODE3YWY3ZmY4ZTFiMDUwMzUuLjkxOThlMjBhMTRmNmRiMTM1
OWMzOGI4Y2I5MTMzMmM2YjIwMjA5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RleHR1cmVNYXBwZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4
dHVyZU1hcHBlci5jbWFrZQpAQCAtODIsNiArODIsNyBAQCBpZiAoVVNFX0NPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGlu
Z0VuZ2luZVRocmVhZGVkLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFQbGF0Zm9ybUxheWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFTY2VuZS5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNv
c2lhU2NlbmVJbnRlZ3JhdGlvbi5jcHAKIAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5j
cHAKQEAgLTEwMCw2ICsxMDEsNyBAQCBpZiAoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTKQogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFQYWludGluZ0VuZ2luZS5oCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRmb3JtTGF5ZXIuaAog
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFTY2VuZS5oCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uaAogCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3Rv
cmVUZXh0dXJlTWFwcGVySW1wbC5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFDb21wb3NpdGlvbkxheWVyVGV4dHVyZU1hcHBlckltcGwuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxh
dGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9O
aWNvc2lhUGxhdGZvcm1MYXllci5oCmluZGV4IGJlM2E1MjU3YTRiMjVhZWE1MjFjYzU4YjQ4MDMw
NGY4MDJiZDgwNDAuLjAxZjZhOWE5OTRlY2VlNGZhODMyNDEyMzhlMzRlZWI0ODU5NjE2NmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3Np
YVBsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGbG9h
dFNpemUuaCIKKyNpbmNsdWRlICJOaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5oIgogI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtNTMsNiArNTQsMjAgQEAgcHVibGlj
OgogICAgIHVzaW5nIExheWVySUQgPSB1aW50NjRfdDsKICAgICBMYXllcklEIGlkKCkgY29uc3Qg
eyByZXR1cm4gbV9pZDsgfQogCisgICAgdm9pZCBzZXRTY2VuZUludGVncmF0aW9uKFJlZlB0cjxT
Y2VuZUludGVncmF0aW9uPiYmIHNjZW5lSW50ZWdyYXRpb24pCisgICAgeworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3N0YXRlLmxvY2spOworICAgICAgICBtX3N0YXRlLnNjZW5lSW50ZWdy
YXRpb24gPSBXVEZNb3ZlKHNjZW5lSW50ZWdyYXRpb24pOworICAgIH0KKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gY3JlYXRlVXBkYXRlU2NvcGUo
KQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zdGF0ZS5sb2NrKTsKKyAgICAg
ICAgaWYgKG1fc3RhdGUuc2NlbmVJbnRlZ3JhdGlvbikKKyAgICAgICAgICAgIHJldHVybiBtX3N0
YXRlLnNjZW5lSW50ZWdyYXRpb24tPmNyZWF0ZVVwZGF0ZVNjb3BlKCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtTGF5
ZXIodWludDY0X3QpOwogCkBAIC02MCw2ICs3NSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0cnVj
dCB7CiAgICAgICAgIExvY2sgbG9jazsKKyAgICAgICAgUmVmUHRyPFNjZW5lSW50ZWdyYXRpb24+
IHNjZW5lSW50ZWdyYXRpb247CiAgICAgfSBtX3N0YXRlOwogfTsKIApAQCAtMjU2LDYgKzI3Miwx
MyBAQCBwdWJsaWM6CiAgICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5jb21taXR0ZWQpOwogICAgIH0K
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBhY2Nlc3NTdGFnaW5nKGNvbnN0
IFQmIGZ1bmN0b3IpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihQbGF0Zm9ybUxh
eWVyOjptX3N0YXRlLmxvY2spOworICAgICAgICBmdW5jdG9yKG1fc3RhdGUuc3RhZ2luZyk7Cisg
ICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGFjY2Vzc0NvbW1pdHRl
ZChjb25zdCBUJiBmdW5jdG9yKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3Jh
dGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFmM2RmNDI1ZTUxZGM2MmY5OWY4ZTlhNWE5ZDYxNDI1ZDFk
MGM0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvTmljb3NpYVNjZW5lSW50ZWdyYXRpb24uY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHly
aWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5pY29zaWFTY2VuZUludGVncmF0aW9u
LmgiCisKK25hbWVzcGFjZSBOaWNvc2lhIHsKKworU2NlbmVJbnRlZ3JhdGlvbjo6U2NlbmVJbnRl
Z3JhdGlvbigpID0gZGVmYXVsdDsKKworU2NlbmVJbnRlZ3JhdGlvbjo6U2NlbmVJbnRlZ3JhdGlv
bihDbGllbnQmIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudC5vYmplY3QgPSAmY2xpZW50OworfQor
CitTY2VuZUludGVncmF0aW9uOjp+U2NlbmVJbnRlZ3JhdGlvbigpCit7CisgICAgQVNTRVJUKCFt
X2NsaWVudC5vYmplY3QpOworfQorCit2b2lkIFNjZW5lSW50ZWdyYXRpb246OnNldENsaWVudChD
bGllbnQmIGNsaWVudCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NsaWVudC5sb2NrKTsK
KyAgICBtX2NsaWVudC5vYmplY3QgPSAmY2xpZW50OworfQorCit2b2lkIFNjZW5lSW50ZWdyYXRp
b246OmludmFsaWRhdGUoKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2sp
OworICAgIG1fY2xpZW50Lm9iamVjdCA9IG51bGxwdHI7Cit9CisKK3ZvaWQgU2NlbmVJbnRlZ3Jh
dGlvbjo6cmVxdWVzdFVwZGF0ZSgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGllbnQu
bG9jayk7CisgICAgaWYgKG1fY2xpZW50Lm9iamVjdCkKKyAgICAgICAgbV9jbGllbnQub2JqZWN0
LT5yZXF1ZXN0VXBkYXRlKCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTY2VuZUludGVncmF0aW9u
OjpVcGRhdGVTY29wZT4gU2NlbmVJbnRlZ3JhdGlvbjo6Y3JlYXRlVXBkYXRlU2NvcGUoKQorewor
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFVwZGF0ZVNjb3BlPihtYWtlUmVmKCp0aGlzKSk7
Cit9CisKK1NjZW5lSW50ZWdyYXRpb246OkNsaWVudDo6fkNsaWVudCgpID0gZGVmYXVsdDsKKwor
U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU6OlVwZGF0ZVNjb3BlKFJlZjxTY2VuZUludGVn
cmF0aW9uPiYmIHNjZW5lSW50ZWdyYXRpb24pCisgICAgOiBtX3NjZW5lSW50ZWdyYXRpb24oV1RG
TW92ZShzY2VuZUludGVncmF0aW9uKSkKKyAgICAsIG1fbG9ja2VyKG1fc2NlbmVJbnRlZ3JhdGlv
bi0+bV9jbGllbnQubG9jaykKK3sKK30KKworU2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU6
On5VcGRhdGVTY29wZSgpCit7CisgICAgYXV0byYgc2NlbmVJbnRlZ3JhdGlvbk9iaiA9IG1fc2Nl
bmVJbnRlZ3JhdGlvbi5nZXQoKTsKKyAgICBpZiAoc2NlbmVJbnRlZ3JhdGlvbk9iai5tX2NsaWVu
dC5vYmplY3QpCisgICAgICAgIHNjZW5lSW50ZWdyYXRpb25PYmoubV9jbGllbnQub2JqZWN0LT5y
ZXF1ZXN0VXBkYXRlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIE5pY29zaWEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVNjZW5lSW50
ZWdyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmlj
b3NpYVNjZW5lSW50ZWdyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWYzOTBiYTUxY2E0YmVkN2JhNjcz
MjI3ZGFmZDM3Y2M0ZWUxMzEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhU2NlbmVJbnRlZ3JhdGlvbi5oCkBAIC0wLDAg
KzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWV0cm9sb2dpY2FsIEdyb3VwIEIu
Vi4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVk
ZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBOaWNvc2lhIHsKKworY2xhc3MgU2NlbmVJ
bnRlZ3JhdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTY2VuZUludGVncmF0aW9u
PiB7CitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZp
cnR1YWwgfkNsaWVudCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VXBkYXRlKCkg
PSAwOworICAgIH07CisKKyAgICBTY2VuZUludGVncmF0aW9uKCk7CisgICAgU2NlbmVJbnRlZ3Jh
dGlvbihDbGllbnQmKTsKKyAgICB+U2NlbmVJbnRlZ3JhdGlvbigpOworCisgICAgdm9pZCBzZXRD
bGllbnQoQ2xpZW50Jik7CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKKyAgICB2b2lkIHJlcXVl
c3RVcGRhdGUoKTsKKworICAgIGNsYXNzIFVwZGF0ZVNjb3BlIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFVwZGF0ZVNjb3BlKFJlZjxTY2VuZUludGVncmF0aW9uPiYmKTsKKyAgICAgICAgflVwZGF0
ZVNjb3BlKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBSZWY8U2NlbmVJbnRlZ3JhdGlvbj4g
bV9zY2VuZUludGVncmF0aW9uOworICAgICAgICBMb2NrSG9sZGVyIG1fbG9ja2VyOworICAgIH07
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlU2NvcGU+IGNyZWF0ZVVwZGF0ZVNjb3BlKCk7
CisKK3ByaXZhdGU6CisgICAgc3RydWN0IHsKKyAgICAgICAgTG9jayBsb2NrOworICAgICAgICBD
bGllbnQqIG9iamVjdCB7IG51bGxwdHIgfTsKKyAgICB9IG1fY2xpZW50OworfTsKKworfSAvLyBu
YW1lc3BhY2UgTmljb3NpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBhOTUzODJjOWQ3NDc5NTljYjBkZTI0YmJkOWIy
NjFhMWMxZmMwZTdkLi43ZTY1YWE2MjQwNThkNWM1N2E3MDBiZWY1ZGMyOTNiMDQ1NjY3NTNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcApAQCAtMTIwNiw2ICsxMjA2LDExIEBAIGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjp1c2VzQ29udGVudHNMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fbmljb3NpYS5jb250
ZW50TGF5ZXIgfHwgbV9jb21wb3NpdGVkSW1hZ2U7CiB9CiAKK1BsYXRmb3JtTGF5ZXIqIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbmljb3NpYS5sYXllci5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IGI1MTc3ZGU4Y2VjNTI4
ODY2YTFjODBhOGY2OWI1Y2E3MmRkMmIyZWMuLmNhODlkZTUwYWY1ZDJhOTgyMmMyNTk0ZjdlZjI2
YjFlNTlkYmE0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKQEAgLTEwOCw2ICsxMDgsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
cmVzdW1lQW5pbWF0aW9ucygpIG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIo
KSBjb25zdCBvdmVycmlkZTsKIAorI2lmIFVTRShOSUNPU0lBKQorICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgdm9pZCBzeW5j
UGVuZGluZ1N0YXRlQ2hhbmdlc0luY2x1ZGluZ1N1YkxheWVycygpOwogICAgIHZvaWQgdXBkYXRl
Q29udGVudEJ1ZmZlcnNJbmNsdWRpbmdTdWJMYXllcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggNTMw
ZGE4NjQ4OTg1ODBhN2EwYTI1M2ZkMTkzYWJhZGI5M2YzYjNlNi4uNGJmM2ZmNmM4NGUxMDIxYmQ3
YWFlYzJjMDg0N2ZkNjUyNWY1ZjliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVh
ZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCkBAIC0yOTIsNiArMjkyLDExIEBA
IHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5h
dGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUpCiAgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVk
dWxlVXBkYXRlKCk7CiB9CiAKK3ZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2VuZSgp
Cit7CisgICAgbV9jb21wb3NpdGluZ1J1bkxvb3AtPnNjaGVkdWxlVXBkYXRlKCk7Cit9CisKICNp
ZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQogUmVmUHRyPFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gVGhyZWFkZWRDb21wb3NpdG9yOjpkaXNwbGF5
UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCmluZGV4IDdlMTY3Mzhm
MzBhNWM4YWM4MDYwN2NjNGM3ZjdkYjQxYmJlMGVmOWYuLjMwYjg5ZDJkMjA3MDA4OTliYmYyYTlj
YzI1MDg1NDIxYzlhOTVjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgZmxvYXQgc2Nh
bGUpOwogCiAgICAgdm9pZCB1cGRhdGVTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NTdGF0ZSYpOworICAgIHZvaWQgdXBkYXRlU2NlbmUoKTsKIAogICAgIHZvaWQg
aW52YWxpZGF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3Np
dGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBiZTY0MGU5Y2NmMzM0ZDVlZGQyZDc2NzU5OGEzMjFj
MjExOGMxMjRiLi5lNjAxZGY2NGVhMzcxNzU3NGNlMGUwNTE5YmE2OTU4NDMwMTc2ODZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5j
cHAKQEAgLTIzNSw3ICsyMzUsMTEgQEAgUmVmPEdyYXBoaWNzTGF5ZXI+IENvbXBvc2l0aW5nQ29v
cmRpbmF0b3I6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllcjo6VHkKIHsKICAgICBh
dXRvIGxheWVyID0gYWRvcHRSZWYoKm5ldyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobGF5ZXJU
eXBlLCBjbGllbnQpKTsKICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7Ci0gICAgbV9u
aWNvc2lhLnN0YXRlLmxheWVycy5hZGQobGF5ZXItPmNvbXBvc2l0aW9uTGF5ZXIoKSk7CisgICAg
eworICAgICAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gbGF5ZXItPmNvbXBvc2l0aW9uTGF5
ZXIoKTsKKyAgICAgICAgbV9uaWNvc2lhLnN0YXRlLmxheWVycy5hZGQoY29tcG9zaXRpb25MYXll
cik7CisgICAgICAgIGNvbXBvc2l0aW9uTGF5ZXItPnNldFNjZW5lSW50ZWdyYXRpb24obV9jbGll
bnQuc2NlbmVJbnRlZ3JhdGlvbigpKTsKKyAgICB9CiAgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFk
ZChsYXllci0+aWQoKSwgbGF5ZXIucHRyKCkpOwogICAgIGxheWVyLT5zZXROZWVkc1Zpc2libGVS
ZWN0QWRqdXN0bWVudCgpOwogICAgIG5vdGlmeUZsdXNoUmVxdWlyZWQobGF5ZXIucHRyKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaApp
bmRleCBiNGEwZDE1NDRkNTA4MDgwY2Y2OWRkNjZmZGY5NjQ0MmUyYzIyYTQxLi43OWNjY2NiMWRm
NDhlMThmODNjNmNlZTJjOGZlNTc5ZmI4NWVkYzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRp
bmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaApAQCAtNDAsNiArNDAsNyBAQAogCiBu
YW1lc3BhY2UgTmljb3NpYSB7CiBjbGFzcyBQYWludGluZ0VuZ2luZTsKK2NsYXNzIFNjZW5lSW50
ZWdyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDYgKzYxLDcgQEAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmx1c2hSb290TGF5ZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb21t
aXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpID0g
MDsKKyAgICAgICAgdmlydHVhbCBSZWZQdHI8Tmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbj4gc2Nl
bmVJbnRlZ3JhdGlvbigpID0gMDsKICAgICB9OwogCiAgICAgQ29tcG9zaXRpbmdDb29yZGluYXRv
cihXZWJDb3JlOjpQYWdlKiwgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Q2xpZW50Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAKaW5kZXggMDcyMDAwZTgyYzM0ZTlmMTlkMmFiYWI1YzM4YWM2MGQ2MmIy
OTdiNi4uYzIwNmIzMTUzODI0MTEzZDczZWMzODg2YmM0NTYwZjU3NGY2NWQ1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzLmNwcApAQCAtMjU3LDYgKzI1NywxMSBAQCB2b2lkIERyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljczo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKFZpZXdwb3J0QXR0cmli
dQogICAgICAgICBtX3ByZXZpb3VzTGF5ZXJUcmVlSG9zdC0+ZGlkQ2hhbmdlVmlld3BvcnRBdHRy
aWJ1dGVzKFdURk1vdmUoYXR0cnMpKTsKIH0KIAorYm9vbCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3M6OnN1cHBvcnRzQXN5bmNTY3JvbGxpbmcoKQoreworICAgIHJldHVybiB0cnVlOwor
fQorCiBHcmFwaGljc0xheWVyRmFjdG9yeSogRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
OjpncmFwaGljc0xheWVyRmFjdG9yeSgpCiB7CiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5h
dGVkR3JhcGhpY3MuaAppbmRleCBlNjg0Zjc1ZDY0NTYzMDU2MDRlNjg5YWRiZTU0ZWVjNGMyYTgx
NTM5Li4xOWVjZTc5ZTEzZmFiMTA4YzEyODJmMjM4YjgyNGU2MjAxMDY1YzJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzLmgKQEAgLTYyLDYgKzYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRldmljZU9yUGFn
ZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3Bv
cnRBdHRyaWJ1dGVzKFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYmKSBvdmVycmlkZTsKIAor
ICAgIGJvb2wgc3VwcG9ydHNBc3luY1Njcm9sbGluZygpIG92ZXJyaWRlOworCiAgICAgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVy
Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY2hlZHVsZUluaXRpYWxEZWZlcnJlZFBhaW50KCkgb3Zl
cnJpZGUgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5jcHAKaW5k
ZXggZTg5NGJkMTYxZjAyNzNjODg3ODI2N2JiNTk0NzA3NzIyZTNjMzU5Ny4uOWJkYTgyMDkxZWY5
NGE2MzY4N2YzOGYwYTA2YWE3MGM0MzMwMDBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUhvc3QuY3BwCkBAIC01Myw2ICs1Myw3IEBAIExheWVyVHJlZUhvc3Q6OkxheWVy
VHJlZUhvc3QoV2ViUGFnZSYgd2ViUGFnZSkKICAgICAsIG1fc3VyZmFjZShBY2NlbGVyYXRlZFN1
cmZhY2U6OmNyZWF0ZSh3ZWJQYWdlLCAqdGhpcykpCiAgICAgLCBtX3ZpZXdwb3J0Q29udHJvbGxl
cih3ZWJQYWdlLnNpemUoKSkKICAgICAsIG1fbGF5ZXJGbHVzaFRpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJkxheWVyVHJlZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVkKQorICAgICwgbV9z
Y2VuZUludGVncmF0aW9uKCpuZXcgTmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbigqdGhpcykpCiB7
CiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBtX2xheWVyRmx1c2hUaW1lci5zZXRQcmlv
cml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6OkxheWVyRmx1c2hUaW1lcik7CkBAIC0zNzksMTEg
KzM4MCwyMSBAQCB2b2lkIExheWVyVHJlZUhvc3Q6OmNvbW1pdFNjZW5lU3RhdGUoY29uc3QgQ29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkKICAgICBtX2NvbXBvc2l0b3ItPnVwZGF0ZVNj
ZW5lU3RhdGUoc3RhdGUpOwogfQogCitSZWZQdHI8Tmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbj4g
TGF5ZXJUcmVlSG9zdDo6c2NlbmVJbnRlZ3JhdGlvbigpCit7CisgICAgcmV0dXJuIG1fc2NlbmVJ
bnRlZ3JhdGlvbi5jb3B5UmVmKCk7Cit9CisKIHZvaWQgTGF5ZXJUcmVlSG9zdDo6ZnJhbWVDb21w
bGV0ZSgpCiB7CiAgICAgbV9jb21wb3NpdG9yLT5mcmFtZUNvbXBsZXRlKCk7CiB9CiAKK3ZvaWQg
TGF5ZXJUcmVlSG9zdDo6cmVxdWVzdFVwZGF0ZSgpCit7CisgICAgbV9jb21wb3NpdG9yLT51cGRh
dGVTY2VuZSgpOworfQorCiB1aW50NjRfdCBMYXllclRyZWVIb3N0OjpuYXRpdmVTdXJmYWNlSGFu
ZGxlRm9yQ29tcG9zaXRpbmcoKQogewogICAgIGlmICghbV9zdXJmYWNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaAppbmRleCAzOGYzYjdmYWJkNDVmNjE2ZDJjMTU5NTY4
N2RiMjI1ZTNmNWQ0ZGI4Li5hYzkyOGRkYTJhMGM4NTY0OWJlZjI2NmE3OGI1ZDQ1ZDYzZTQxMmJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaApAQCAtMzksNiArMzks
MTAgQEAKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlIDxXZWJDb3JlL05p
Y29zaWFTY2VuZUludGVncmF0aW9uLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CkBAIC01NCw3ICs1OCw3IEBAIGNsYXNzIFdl
YlBhZ2U7CiAKIGNsYXNzIExheWVyVHJlZUhvc3QKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi0gICAgZmluYWwgOiBwdWJsaWMgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Q2xpZW50LCBw
dWJsaWMgQWNjZWxlcmF0ZWRTdXJmYWNlOjpDbGllbnQKKyAgICBmaW5hbCA6IHB1YmxpYyBDb21w
b3NpdGluZ0Nvb3JkaW5hdG9yOjpDbGllbnQsIHB1YmxpYyBBY2NlbGVyYXRlZFN1cmZhY2U6OkNs
aWVudCwgcHVibGljIE5pY29zaWE6OlNjZW5lSW50ZWdyYXRpb246OkNsaWVudAogI2VuZGlmCiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMDcsMTAgKzExMSwxNCBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkRmx1c2hSb290TGF5ZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiB2aXNpYmxlQ29udGVudFJlY3QpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5Rmx1c2hSZXF1
aXJlZCgpIG92ZXJyaWRlIHsgc2NoZWR1bGVMYXllckZsdXNoKCk7IH07CiAgICAgdm9pZCBjb21t
aXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpIG92
ZXJyaWRlOworICAgIFJlZlB0cjxOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uPiBzY2VuZUludGVn
cmF0aW9uKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBBY2NlbGVyYXRlZFN1cmZhY2U6OkNsaWVudAog
ICAgIHZvaWQgZnJhbWVDb21wbGV0ZSgpIG92ZXJyaWRlOwogCisgICAgLy8gTmljb3NpYTo6U2Nl
bmVJbnRlZ3JhdGlvbjo6Q2xpZW50CisgICAgdm9pZCByZXF1ZXN0VXBkYXRlKCkgb3ZlcnJpZGU7
CisKICAgICB1aW50NjRfdCBuYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoKTsKICAg
ICB2b2lkIGRpZERlc3Ryb3lHTENvbnRleHQoKTsKICAgICB2b2lkIHdpbGxSZW5kZXJGcmFtZSgp
OwpAQCAtMTk3LDYgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgbmVlZHNGcmVzaEZs
dXNoIHsgZmFsc2UgfTsKICAgICB9IG1fZm9yY2VSZXBhaW50QXN5bmM7CiAgICAgUnVuTG9vcDo6
VGltZXI8TGF5ZXJUcmVlSG9zdD4gbV9sYXllckZsdXNoVGltZXI7CisgICAgUmVmPE5pY29zaWE6
OlNjZW5lSW50ZWdyYXRpb24+IG1fc2NlbmVJbnRlZ3JhdGlvbjsKICNlbmRpZiAvLyBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372735</attachid>
            <date>2019-06-23 23:48:42 -0700</date>
            <delta_ts>2019-08-23 04:04:56 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>asyncscroll.patch</filename>
            <type>text/plain</type>
            <size>53184</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDcxOTNiYzVhZTEw
Li5kOTY4ZTZjNjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtl
CkBAIC0yMSw2ICsyMSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKICAgICBwYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNw
cAogICAgIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29zaWEuY3BwCisg
ICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3Bw
CiAgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAK
IAogICAgIHBhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0dUSy50eHQKaW5kZXggMzM0MzBmOTAzYzguLjgxMWEzMzIzODJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzR1RLLnR4dApAQCAtNTUsNiArNTUsNyBAQCBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1N0YXRlTm9kZU5pY29zaWEuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
VHJlZVBvc2l0aW9uZWROb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZS5jcHAKIAogcGFnZS9zY3JvbGxpbmcvZ2VuZXJpYy9TY3JvbGxpbmdUaHJl
YWRHZW5lcmljLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dAppbmRleCAyZjk4ZmZlYmYwMi4uOTk5OGI3
NmFlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CkBAIC01Miw2ICs1Miw3IEBAIHBhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCiBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAogCiBwYWdlL3Njcm9sbGluZy9nZW5lcmlj
L1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXgg
NTFiMzU2YTk0MWYuLjBiMmE3ZTI0MGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0z
NCw2ICszNCwxMCBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+CiAKKyNpZiBVU0UoTklDT1NJQSkKKyNpbmNsdWRlICJOaWNvc2lh
UGxhdGZvcm1MYXllci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlKFNjcm9sbGlu
Z1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxp
bmdOb2RlSUQgbm9kZUlEKQpAQCAtOTcsNyArMTAxLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0
ZU4KICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6RXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcikpCiAgICAgICAgIG1fZXhwZWN0
c1doZWVsRXZlbnRUZXN0VHJpZ2dlciA9IHN0YXRlLmV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdn
ZXIoKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0Uo
TklDT1NJQSkKICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKQogICAgICAgICBtX3Njcm9sbENv
bnRhaW5lckxheWVyID0gc3RhdGUuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmgKaW5kZXggYjIyZmZhNzkyMjUuLjkwZTIzMTY2ZDlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRl
ICJTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2lu
Y2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCkBAIC0xMzAsNiArMTMxLDkgQEAgcHJvdGVjdGVkOgog
CiAgICAgYm9vbCBleHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkgY29uc3QgeyByZXR1cm4g
bV9leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyOyB9CiAKKyAgICBQbGF0Zm9ybUxheWVyKiBz
Y3JvbGxDb250YWluZXJMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsQ29udGFpbmVyTGF5
ZXIuZ2V0KCk7IH0KKyAgICBQbGF0Zm9ybUxheWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX3Njcm9sbGVkQ29udGVudHNMYXllci5nZXQoKTsgfQorCiAgICAgTGF5
b3V0UG9pbnQgcGFyZW50VG9Mb2NhbFBvaW50KExheW91dFBvaW50KSBjb25zdCBvdmVycmlkZTsK
ICAgICBMYXlvdXRQb2ludCBsb2NhbFRvQ29udGVudHNQb2ludChMYXlvdXRQb2ludCkgY29uc3Qg
b3ZlcnJpZGU7CiAKQEAgLTE1NSw2ICsxNTksOSBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbENvbnRhaW5lckxheWVyOwogICAg
IFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsKKyNlbGlmIFVTRShO
SUNPU0lBKQorICAgIFJlZlB0cjxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyPiBtX3Njcm9sbENvbnRh
aW5lckxheWVyOworICAgIFJlZlB0cjxOaWNvc2lhOjpQbGF0Zm9ybUxheWVyPiBtX3Njcm9sbGVk
Q29udGVudHNMYXllcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRv
ck5pY29zaWEuY3BwCmluZGV4IDBkMzQzYWI2NDA4Li40NzBhZTVhNmQ5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRv
ck5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcApAQCAtNTgsNyArNTgsOSBAQCB2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYTo6cGFnZURlc3Ryb3llZCgpCiAKICAgICBtX3Njcm9s
bGluZ1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyLnN0b3AoKTsKIAotICAgIHJlbGVhc2VTY3JvbGxp
bmdUcmVlKCk7CisgICAgLy8gSW52YWxpZGF0aW5nIHRoZSBzY3JvbGxpbmcgdHJlZSB3aWxsIGJy
ZWFrIHRoZSByZWZlcmVuY2UgY3ljbGUgYmV0d2VlbiB0aGUgU2Nyb2xsaW5nQ29vcmRpbmF0b3Ig
YW5kIFNjcm9sbGluZ1RyZWUgb2JqZWN0cy4KKyAgICBSZWZQdHI8VGhyZWFkZWRTY3JvbGxpbmdU
cmVlPiBzY3JvbGxpbmdUcmVlID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU+KHJlbGVhc2VTY3JvbGxpbmdUcmVlKCkpOworICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlz
cGF0Y2goW3Njcm9sbGluZ1RyZWVdIHsgc2Nyb2xsaW5nVHJlZS0+aW52YWxpZGF0ZSgpOyB9KTsK
IH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6OmNvbW1pdFRyZWVTdGF0ZUlm
TmVlZGVkKCkKQEAgLTgwLDEyICs4MiwxNiBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTmlj
b3NpYTo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yTmljb3NpYTo6Y29tbWl0VHJlZVN0YXRlKCkKIHsKKyAgICB3aWxsQ29tbWl0VHJlZSgpOwor
CiAgICAgaWYgKCFzY3JvbGxpbmdTdGF0ZVRyZWUoKS0+aGFzQ2hhbmdlZFByb3BlcnRpZXMoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4gdGhy
ZWFkZWRTY3JvbGxpbmdUcmVlID0gZG93bmNhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihzY3Jv
bGxpbmdUcmVlKCkpOwogCiAgICAgYXV0byB0cmVlU3RhdGUgPSBzY3JvbGxpbmdTdGF0ZVRyZWUo
KS0+Y29tbWl0KExheWVyUmVwcmVzZW50YXRpb246OlBsYXRmb3JtTGF5ZXJSZXByZXNlbnRhdGlv
bik7CisgICAgdGhyZWFkZWRTY3JvbGxpbmdUcmVlLT5pbmNyZW1lbnRQZW5kaW5nQ29tbWl0Q291
bnQoKTsKKwogICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW3RocmVhZGVkU2Nyb2xsaW5n
VHJlZSwgdHJlZVN0YXRlID0gV1RGTW92ZSh0cmVlU3RhdGUpXSgpIG11dGFibGUgewogICAgICAg
ICB0aHJlYWRlZFNjcm9sbGluZ1RyZWUtPmNvbW1pdFRyZWVTdGF0ZShXVEZNb3ZlKHRyZWVTdGF0
ZSkpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmljb3NpYS5jcHAKaW5kZXgg
YjUzMjhlYjQzNzIuLjU1YzVlNjA1OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1N0YXRlTm9kZU5pY29zaWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nU3RhdGVOb2RlTmlj
b3NpYS5jcHAKQEAgLTI2LDIxICsyNiwyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlNjcm9sbGluZ1N0YXRlTm9kZS5oIgogCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgot
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KSAmJiBVU0UoTklDT1NJQSkKIAorI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
TGF5ZXJSZXByZXNlbnRhdGlvbjo6cmV0YWluUGxhdGZvcm1MYXllcih2b2lkKikKK3ZvaWQgTGF5
ZXJSZXByZXNlbnRhdGlvbjo6cmV0YWluUGxhdGZvcm1MYXllcih2b2lkKiB0eXBlbGVzc0xheWVy
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGF1dG8qIGxheWVyID0gbWFrZVBs
YXRmb3JtTGF5ZXJUeXBlZCh0eXBlbGVzc0xheWVyKSkKKyAgICAgICAgbGF5ZXItPnJlZigpOwog
fQogCi12b2lkIExheWVyUmVwcmVzZW50YXRpb246OnJlbGVhc2VQbGF0Zm9ybUxheWVyKHZvaWQq
KQordm9pZCBMYXllclJlcHJlc2VudGF0aW9uOjpyZWxlYXNlUGxhdGZvcm1MYXllcih2b2lkKiB0
eXBlbGVzc0xheWVyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGF1dG8qIGxh
eWVyID0gbWFrZVBsYXRmb3JtTGF5ZXJUeXBlZCh0eXBlbGVzc0xheWVyKSkKKyAgICAgICAgbGF5
ZXItPmRlcmVmKCk7CiB9CiAKIFBsYXRmb3JtTGF5ZXIqIExheWVyUmVwcmVzZW50YXRpb246Om1h
a2VQbGF0Zm9ybUxheWVyVHlwZWQodm9pZCogdHlwZWxlc3NMYXllcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVGaXhlZE5vZGUuY3BwCmluZGV4IGM5MGRiZjgxZTI4Li43MDIxMTI3MmMzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4
ZWROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwCkBAIC0zMCw3ICszMCwxMiBAQAogCiAjaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCiAKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxp
bmdUcmVlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5o
IgorI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUwLDEyICs1NSw3MiBA
QCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjp+U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSgpCiAgICAg
c2Nyb2xsaW5nVHJlZSgpLmZpeGVkT3JTdGlja3lOb2RlUmVtb3ZlZCgpOwogfQogCi12b2lkIFNj
cm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Ny
b2xsaW5nU3RhdGVOb2RlJikKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y29tbWl0U3Rh
dGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKIHsK
KyAgICBhdXRvJiBmaXhlZFN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRml4ZWRO
b2RlPihzdGF0ZU5vZGUpOworCisgICAgaWYgKGZpeGVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkgeworICAgICAgICBOaWNvc2lhOjpQbGF0
Zm9ybUxheWVyKiBsYXllciA9IGZpeGVkU3RhdGVOb2RlLmxheWVyKCk7CisgICAgICAgIG1fc2Ny
b2xsTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7Cisg
ICAgfQorCisgICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVGaXhlZE5vZGU6OlZpZXdwb3J0Q29uc3RyYWludHMpKQorICAgICAgICBtX2NvbnN0cmFpbnRz
ID0gZml4ZWRTdGF0ZU5vZGUudmlld3BvcnRDb25zdHJhaW50cygpOwogfQogCiB2b2lkIFNjcm9s
bGluZ1RyZWVGaXhlZE5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQogeworICAgIGF1dG8gY29t
cHV0ZUxheWVyUG9zaXRpb24gPSBbJl0geworICAgICAgICBGbG9hdFNpemUgb3ZlcmZsb3dTY3Jv
bGxEZWx0YTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyB3cm9uZyBpbiBjb21wbGV4
IGNhc2VzIHdoZXJlIHRoZSBmaXhlZCBlbGVtZW50IGlzIGluc2lkZSBhIHBvc2l0aW9uZWQgbm9k
ZSBhcworICAgICAgICAvLyAgICAgICAgdGhlIHNjcm9sbCBjb250YWluZXIgb3JkZXIgZG9lcyBu
b3QgbWF0Y2ggdGhlIHNjcm9sbGluZyB0cmVlIGFuY2VzdG9yIG9yZGVyLgorICAgICAgICBmb3Ig
KGF1dG8qIG5vZGUgPSBwYXJlbnQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudCgpKSB7Cisg
ICAgICAgICAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oKm5vZGUp
KSB7CisgICAgICAgICAgICAgICAgLy8gRml4ZWQgbm9kZXMgYXJlIHBvc2l0aW9uZWQgcmVsYXRp
dmUgdG8gdGhlIGNvbnRhaW5pbmcgZnJhbWUgc2Nyb2xsaW5nIG5vZGUuCisgICAgICAgICAgICAg
ICAgLy8gV2UgYmFpbCBvdXQgYWZ0ZXIgZmluZGluZyBvbmUuCisgICAgICAgICAgICAgICAgYXV0
byBsYXlvdXRWaWV3cG9ydCA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGU+KCpub2RlKS5sYXlvdXRWaWV3cG9ydCgpOworICAgICAgICAgICAgICAgIHJldHVybiBtX2Nv
bnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJlY3QobGF5b3V0Vmlld3BvcnQpIC0g
b3ZlcmZsb3dTY3JvbGxEZWx0YTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlz
PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KCpub2RlKSkgeworICAgICAgICAg
ICAgICAgIC8vIFRvIGtlZXAgdGhlIGxheWVyIHN0aWxsIGR1cmluZyBhc3luYyBzY3JvbGxpbmcg
d2UgYWRqdXN0IGJ5IGhvdyBtdWNoIHRoZSBwb3NpdGlvbiBoYXMgY2hhbmdlZCBzaW5jZSBsYXlv
dXQuCisgICAgICAgICAgICAgICAgYXV0byYgb3ZlcmZsb3dOb2RlID0gZG93bmNhc3Q8U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oKm5vZGUpOworICAgICAgICAgICAgICAgIGF1
dG8gbG9jYWxEZWx0YSA9IG92ZXJmbG93Tm9kZS5sYXN0Q29tbWl0dGVkU2Nyb2xsUG9zaXRpb24o
KSAtIG92ZXJmbG93Tm9kZS5jdXJyZW50U2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvd1Njcm9sbERlbHRhICs9IGxvY2FsRGVsdGE7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBGbG9h
dFBvaW50KCk7CisgICAgfTsKKworICAgIGF1dG8gbGF5ZXJQb3NpdGlvbiA9IGNvbXB1dGVMYXll
clBvc2l0aW9uKCk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwg
IlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUgIiA8PCBzY3JvbGxpbmdOb2RlSUQoKSA8PCAiIHJlbGF0
ZWROb2RlU2Nyb2xsUG9zaXRpb25EaWRDaGFuZ2U6IHZpZXdwb3J0UmVjdEF0TGFzdExheW91dCAi
IDw8IG1fY29uc3RyYWludHMudmlld3BvcnRSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxh
eWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIDw8
ICIgbGF5ZXJQb3NpdGlvbiAiIDw8IGxheWVyUG9zaXRpb24pOworCisgICAgQVNTRVJUKG1fc2Ny
b2xsTGF5ZXIpOworICAgIG1fc2Nyb2xsTGF5ZXItPmFjY2Vzc1N0YWdpbmcoCisgICAgICAgICAg
ICBbdGhpcywgJmxheWVyUG9zaXRpb25dKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVy
U3RhdGUmIHN0YXRlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0YXRlLnBvc2l0
aW9uID0gbGF5ZXJQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBzdGF0ZS5kZWx0YS5wb3NpdGlv
bkNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRl
VHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAoreworICAgIHRzIDw8ICJmaXhlZCBu
b2RlIjsKKyAgICBTY3JvbGxpbmdUcmVlTm9kZTo6ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9y
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImZpeGVkIGNvbnN0cmFpbnRzIiwgbV9jb25zdHJhaW50
cyk7CisKKyNpZiAwICAgIAorICAgIGlmIChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFz
VGV4dEJlaGF2aW9ySW5jbHVkZUxheWVyUG9zaXRpb25zKSB7CisgICAgICAgIEZsb2F0UmVjdCBs
YXllckJvdW5kcyA9IFttX2xheWVyIGJvdW5kc107CisgICAgICAgIEZsb2F0UG9pbnQgYW5jaG9y
UG9pbnQgPSBbbV9sYXllciBhbmNob3JQb2ludF07CisgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRp
b24gPSBbbV9sYXllciBwb3NpdGlvbl07CisgICAgICAgIEZsb2F0UG9pbnQgbGF5ZXJUb3BMZWZ0
ID0gcG9zaXRpb24gLSB0b0Zsb2F0U2l6ZShhbmNob3JQb2ludCkgKiBsYXllckJvdW5kcy5zaXpl
KCkgKyBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOworICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImxheWVyIHRvcCBsZWZ0IiwgbGF5ZXJUb3BMZWZ0KTsKKyAgICB9CisjZW5kaWYKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAppbmRl
eCA5ZjhlMWUyNTFiZS4uNjg1ZDk3ZGRkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5o
CkBAIC0zMSw2ICszMSwxMyBAQAogCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKIAor
I2luY2x1ZGUgIlNjcm9sbGluZ0NvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgTmljb3NpYSB7CitjbGFzcyBDb21wb3NpdGlvbkxheWVyOworfQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUgZmluYWwg
OiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgewpAQCAtNDMsOCArNTAsMTUgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0
ZU5vZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIGFwcGx5TGF5ZXJQb3NpdGlvbnMoKSBvdmVycmlk
ZTsKKworICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5n
U3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOworCisgICAgRml4ZWRQb3Np
dGlvblZpZXdwb3J0Q29uc3RyYWludHMgbV9jb25zdHJhaW50czsKKyAgICBSZWZQdHI8Tmljb3Np
YTo6Q29tcG9zaXRpb25MYXllcj4gbV9zY3JvbGxMYXllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxp
bmdUcmVlRml4ZWROb2RlLCBpc0ZpeGVkTm9kZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5D
X1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNv
c2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCmluZGV4IDFjZTRhMWFkYWQ4Li5lMzJm
MmRkYjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYS5jcHAKQEAgLTMwLDYgKzMwLDExIEBACiAKICNpZiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKIAorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2lu
Y2x1ZGUgIlNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVkZSAiU2Ny
b2xsaW5nVHJlZS5oIgorI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUmVmPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+IFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjcmVhdGUoU2Nyb2xsaW5nVHJl
ZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05v
ZGVJRCBub2RlSUQpCkBAIC00NCwxMiArNDksOTEgQEAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU5pY29zaWE6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhKFMK
IAogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6On5TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYSgpID0gZGVmYXVsdDsKIAotU2Nyb2xsaW5nRXZlbnRS
ZXN1bHQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Ny
b2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCit7CisgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihzdGF0ZU5vZGUpOworICAgIGNv
bnN0IGF1dG8mIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlPihzdGF0ZU5vZGUpOworCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpIHsKKyAgICAg
ICAgTmljb3NpYTo6UGxhdGZvcm1MYXllciogbGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUubGF5
ZXIoKTsKKyAgICAgICAgbV9zY3JvbGxMYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0
aW9uTGF5ZXI+KGxheWVyKTsKKyAgICB9CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRl
bnRzTGF5ZXIpKSB7CisgICAgICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqIGxheWVyID0gc2Ny
b2xsaW5nU3RhdGVOb2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpOworICAgICAgICBtX3Njcm9s
bGVkQ29udGVudHNMYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KGxh
eWVyKTsKKyAgICB9CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJTY3JvbGxpbmdMYXll
cikpIHsKKyAgICAgICAgTmljb3NpYTo6UGxhdGZvcm1MYXllciogbGF5ZXIgPSBzY3JvbGxpbmdT
dGF0ZU5vZGUuY291bnRlclNjcm9sbGluZ0xheWVyKCk7CisgICAgICAgIG1fY291bnRlclNjcm9s
bGluZ0xheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOwor
ICAgIH0KKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SW5zZXRDbGlwTGF5ZXIpKSB7CisgICAgICAg
IE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqIGxheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmluc2V0
Q2xpcExheWVyKCk7CisgICAgICAgIG1faW5zZXRDbGlwTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lh
OjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAgfQorICAgIGlmIChzY3JvbGxpbmdTdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
OjpDb250ZW50U2hhZG93TGF5ZXIpKSB7CisgICAgICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIq
IGxheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmNvbnRlbnRTaGFkb3dMYXllcigpOworICAgICAg
ICBtX2NvbnRlbnRTaGFkb3dMYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5
ZXI+KGxheWVyKTsKKyAgICB9CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkhlYWRlckxheWVyKSkg
eworICAgICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKiBsYXllciA9IHNjcm9sbGluZ1N0YXRl
Tm9kZS5oZWFkZXJMYXllcigpOworICAgICAgICBtX2hlYWRlckxheWVyID0gZG93bmNhc3Q8Tmlj
b3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOworICAgIH0KKyAgICBpZiAoc2Nyb2xsaW5n
U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZTo6Rm9vdGVyTGF5ZXIpKSB7CisgICAgICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqIGxh
eWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmZvb3RlckxheWVyKCk7CisgICAgICAgIG1fZm9vdGVy
TGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAg
fQorfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjb21t
aXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUp
Cit7CisgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVBZnRl
ckNoaWxkcmVuKHN0YXRlTm9kZSk7CisKKyAgICBjb25zdCBhdXRvJiBzY3JvbGxpbmdTdGF0ZU5v
ZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CisK
KyAgICAvLyBVcGRhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiBhZnRlciBjaGlsZCBub2RlcyBoYXZl
IGJlZW4gdXBkYXRlZCwgYmVjYXVzZSB0aGV5IG5lZWQgdG8gaGF2ZSB1cGRhdGVkIHRoZWlyIGNv
bnN0cmFpbnRzIGJlZm9yZSBhbnkgc2Nyb2xsaW5nIGhhcHBlbnMuCisgICAgaWYgKHNjcm9sbGlu
Z1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpIHsKKyAgICAgICAgYXV0byBzY3JvbGxUeXBlID0g
c2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dy
YW1tYXRpY1Njcm9sbCgpID8gU2Nyb2xsVHlwZTo6UHJvZ3JhbW1hdGljIDogU2Nyb2xsVHlwZTo6
VXNlcjsKKyAgICAgICAgc2Nyb2xsVG8oc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9s
bFBvc2l0aW9uKCksIHNjcm9sbFR5cGUpOworICAgIH0KK30KKworU2Nyb2xsaW5nRXZlbnRSZXN1
bHQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewotICAgIHJldHVybiBT
Y3JvbGxpbmdFdmVudFJlc3VsdDo6RGlkTm90SGFuZGxlRXZlbnQ7CisgICAgaWYgKCFjYW5IYXZl
U2Nyb2xsYmFycygpKQorICAgICAgICByZXR1cm4gU2Nyb2xsaW5nRXZlbnRSZXN1bHQ6OkRpZE5v
dEhhbmRsZUV2ZW50OworCisgICAgaWYgKHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVu
dC5kZWx0YVkoKSkgeworICAgICAgICBhdXRvKiBzY3JvbGxMYXllciA9IHNjcm9sbGVkQ29udGVu
dHNMYXllcigpOworICAgICAgICBBU1NFUlQoc2Nyb2xsTGF5ZXIpOworICAgICAgICBhdXRvJiBj
b21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4oKnNj
cm9sbExheWVyKTsKKworICAgICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY29tcG9zaXRpb25MYXll
ci5jcmVhdGVVcGRhdGVTY29wZSgpOworICAgICAgICBzY3JvbGxCeSh7IHdoZWVsRXZlbnQuZGVs
dGFYKCksIC13aGVlbEV2ZW50LmRlbHRhWSgpIH0pOworICAgIH0KKworICAgIC8vIFRPRE86Cisg
ICAgLy8gc2Nyb2xsaW5nVHJlZSgpLnNldE9yQ2xlYXJMYXRjaGVkTm9kZSh3aGVlbEV2ZW50LCBz
Y3JvbGxpbmdOb2RlSUQoKSk7CisgICAgLy8gc2Nyb2xsaW5nVHJlZSgpLmhhbmRsZVdoZWVsRXZl
bnRQaGFzZSh3aGVlbEV2ZW50LnBoYXNlKCkpOworICAgIHJldHVybiBTY3JvbGxpbmdFdmVudFJl
c3VsdDo6RGlkSGFuZGxlRXZlbnQ7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU5pY29zaWE6OnJlcG9zaXRpb25TY3JvbGxpbmdMYXllcnMoKQoreworICAgIGF1dG8q
IHNjcm9sbExheWVyID0gc2Nyb2xsZWRDb250ZW50c0xheWVyKCk7CisgICAgQVNTRVJUKHNjcm9s
bExheWVyKTsKKyAgICBhdXRvJiBjb21wb3NpdGlvbkxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6
Q29tcG9zaXRpb25MYXllcj4oKnNjcm9sbExheWVyKTsKKworICAgIGF1dG8gc2Nyb2xsUG9zaXRp
b24gPSBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKTsKKworICAgIGNvbXBvc2l0aW9uTGF5ZXIuYWNj
ZXNzU3RhZ2luZygKKyAgICAgICAgWyZzY3JvbGxQb3NpdGlvbl0oTmljb3NpYTo6Q29tcG9zaXRp
b25MYXllcjo6TGF5ZXJTdGF0ZSYgc3RhdGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRl
LnBvc2l0aW9uID0gLXNjcm9sbFBvc2l0aW9uOworICAgICAgICAgICAgc3RhdGUuZGVsdGEucG9z
aXRpb25DaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lh
LmgKaW5kZXggMmI1YTJiZTNiY2UuLmY3YjU2N2VjYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVOaWNvc2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCkBAIC0zMSw2ICszMSwxMiBA
QAogCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogCisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgTmljb3NpYSB7CitjbGFzcyBDb21wb3Np
dGlvbkxheWVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGUgewpAQCAtNDEsOSArNDcsMjEgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYShTY3JvbGxpbmdUcmVl
JiwgU2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCk7CiAKKyAgICB2b2lkIGNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVO
b2RlJikgb3ZlcnJpZGU7CisKICAgICBTY3JvbGxpbmdFdmVudFJlc3VsdCBoYW5kbGVXaGVlbEV2
ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZXBv
c2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseUxheWVyUG9z
aXRpb25zKCkgb3ZlcnJpZGU7CisKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXll
cj4gbV9zY3JvbGxMYXllcjsKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4g
bV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7CisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9u
TGF5ZXI+IG1fY291bnRlclNjcm9sbGluZ0xheWVyOworICAgIFJlZlB0cjxOaWNvc2lhOjpDb21w
b3NpdGlvbkxheWVyPiBtX2luc2V0Q2xpcExheWVyOworICAgIFJlZlB0cjxOaWNvc2lhOjpDb21w
b3NpdGlvbkxheWVyPiBtX2NvbnRlbnRTaGFkb3dMYXllcjsKKyAgICBSZWZQdHI8Tmljb3NpYTo6
Q29tcG9zaXRpb25MYXllcj4gbV9oZWFkZXJMYXllcjsKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29t
cG9zaXRpb25MYXllcj4gbV9mb290ZXJMYXllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlTmljb3NpYS5jcHAKaW5kZXggY2VhNzE0NmYxMTguLjk3Zjg4NmE2
ODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVl
RnJhbWVIb3N0aW5nTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNTUsMTggKzU2LDE4IEBAIFJlZjxTY3JvbGxpbmdUcmVlTm9kZT4gU2Nyb2xsaW5n
VHJlZU5pY29zaWE6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vCiAgICAgICAg
IHJldHVybiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y3JlYXRlKCp0
aGlzLCBub2RlVHlwZSwgbm9kZUlEKTsKICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpGcmFt
ZUhvc3Rpbmc6CiAgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6
Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwotICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6Ok92ZXJm
bG93OgotICAgICAgICAvLyBTaG91bGQgbm90IGJlIHJlYWNoZWQgLS0gY2F1Z2h0IGJ5IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpIGJlbG93LgorICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6Ok92ZXJm
bG93OiAvLyBGSVhNRQogICAgICAgICBicmVhazsKICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBl
OjpGaXhlZDoKICAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNyZWF0ZSgq
dGhpcywgbm9kZUlEKTsKICAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpTdGlja3k6CiAgICAg
ICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQp
OwogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZVR5cGU6OlBvc2l0aW9uZWQ6Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlUG9z
aXRpb25lZE5vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKICAgICB9CiAKLSAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIC8vIEZJWE1FOiBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3JlYXRlKCp0aGlzLCBub2Rl
SUQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQ
b3NpdGlvbmVkTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LmQ1NTRlY2VmZmFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwCkBAIC0wLDAgKzEs
MTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Ny
b2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KSAmJiBVU0UoTklDT1NJQSkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOaWNv
c2lhUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5v
ZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0u
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWRO
b2RlPiBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGU6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBz
Y3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZShzY3JvbGxpbmdUcmVlLCBub2Rl
SUQpKTsKK30KKworU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlOjpTY3JvbGxpbmdUcmVlUG9z
aXRpb25lZE5vZGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlE
IG5vZGVJRCkKKyAgICA6IFNjcm9sbGluZ1RyZWVOb2RlKHNjcm9sbGluZ1RyZWUsIFNjcm9sbGlu
Z05vZGVUeXBlOjpQb3NpdGlvbmVkLCBub2RlSUQpCit7Cit9CisKK1Njcm9sbGluZ1RyZWVQb3Np
dGlvbmVkTm9kZTo6flNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZSgpID0gZGVmYXVsdDsKKwor
dm9pZCBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRy
ZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCit7CisgICAgY29uc3QgU2Ny
b2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZSYgcG9zaXRpb25lZFN0YXRlTm9kZSA9IGRvd25jYXN0
PFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGU+KHN0YXRlTm9kZSk7CisKKyAgICBpZiAocG9z
aXRpb25lZFN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpM
YXllcikpIHsKKyAgICAgICAgTmljb3NpYTo6UGxhdGZvcm1MYXllciogbGF5ZXIgPSBwb3NpdGlv
bmVkU3RhdGVOb2RlLmxheWVyKCk7CisgICAgICAgIG1fc2Nyb2xsTGF5ZXIgPSBkb3duY2FzdDxO
aWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAgfQorCisgICAgaWYgKHBvc2l0
aW9uZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlUG9zaXRpb25l
ZE5vZGU6OlJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKSkKKyAgICAgICAgbV9yZWxhdGVk
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlcyA9IHBvc2l0aW9uZWRTdGF0ZU5vZGUucmVsYXRlZE92ZXJm
bG93U2Nyb2xsaW5nTm9kZXMoKTsKKworICAgIGlmIChwb3NpdGlvbmVkU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpMYXlvdXRDb25zdHJh
aW50RGF0YSkpCisgICAgICAgIG1fY29uc3RyYWludHMgPSBwb3NpdGlvbmVkU3RhdGVOb2RlLmxh
eW91dENvbnN0cmFpbnRzKCk7CisKKyAgICBpZiAoIW1fcmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5n
Tm9kZXMuaXNFbXB0eSgpKQorICAgICAgICBzY3JvbGxpbmdUcmVlKCkubm9kZXNXaXRoUmVsYXRl
ZE92ZXJmbG93KCkuYWRkKHNjcm9sbGluZ05vZGVJRCgpKTsKK30KKwordm9pZCBTY3JvbGxpbmdU
cmVlUG9zaXRpb25lZE5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQoreworICAgIGF1dG8gZGVs
dGEgPQorICAgICAgICBbdGhpc10geworICAgICAgICAgICAgRmxvYXRTaXplIGRlbHRhOworICAg
ICAgICAgICAgZm9yIChhdXRvIG5vZGVJRCA6IG1fcmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5nTm9k
ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogbm9kZSA9IHNjcm9sbGluZ1RyZWUoKS5u
b2RlRm9ySUQobm9kZUlEKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXM8U2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4obm9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dG8mIG92ZXJmbG93Tm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGU+KCpub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhICs9IG92
ZXJmbG93Tm9kZS5zY3JvbGxEZWx0YVNpbmNlTGFzdENvbW1pdCgpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIC1kZWx0YTsKKyAgICAgICAgfSgpOworICAgIEZsb2F0UG9pbnQgbGF5ZXJQb3NpdGlvbiA9
IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIC0gZGVsdGE7CisKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVQb3Np
dGlvbmVkTm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8ICIgYXBwbHlMYXllclBvc2l0aW9u
czogb3ZlcmZsb3cgZGVsdGEgIiA8PCBzY3JvbGxPZmZzZXRTaW5jZUxhc3RDb21taXQgPDwgIiBt
b3ZpbmcgbGF5ZXIgdG8gIiA8PCBsYXllclBvc2l0aW9uKTsKKworICAgIG1fc2Nyb2xsTGF5ZXIt
PmFjY2Vzc1N0YWdpbmcoCisgICAgICAgICAgICBbdGhpcywgJmxheWVyUG9zaXRpb25dKE5pY29z
aWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUmIHN0YXRlKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHN0YXRlLnBvc2l0aW9uID0gbGF5ZXJQb3NpdGlvbiAtIG1fY29uc3Ry
YWludHMuYWxpZ25tZW50T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgc3RhdGUuZGVsdGEucG9z
aXRpb25DaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworfQorCit2b2lkIFNjcm9sbGlu
Z1RyZWVQb3NpdGlvbmVkTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9s
bGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAoreworICAgIHRzIDw8
ICJwb3NpdGlvbmVkIG5vZGUiOworICAgIFNjcm9sbGluZ1RyZWVOb2RlOjpkdW1wUHJvcGVydGll
cyh0cywgYmVoYXZpb3IpOworCisgICAgdHMuZHVtcFByb3BlcnR5KCJsYXlvdXQgY29uc3RyYWlu
dHMiLCBtX2NvbnN0cmFpbnRzKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInJlbGF0ZWQgb3ZlcmZs
b3cgbm9kZXMiLCBtX3JlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzLnNpemUoKSk7CisKKyAg
ICBpZiAoYmVoYXZpb3IgJiBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvckluY2x1ZGVO
b2RlSURzKSB7CisgICAgICAgIGlmICghbV9yZWxhdGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2Rlcy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgc2NvcGUodHMp
OworICAgICAgICAgICAgdHMgPDwgIm92ZXJmbG93IG5vZGVzIjsKKyAgICAgICAgICAgIGZvciAo
YXV0byBub2RlSUQgOiBtX3JlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKQorICAgICAgICAg
ICAgICAgIHRzIDw8ICJcbiIgPDwgaW5kZW50IDw8ICJub2RlSUQgIiA8PCBub2RlSUQ7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZVBvc2l0aW9uZWROb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
Ljg1ZTFjNzc4YmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JP
TExJTkcpICYmIFVTRShOSUNPU0lBKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29uc3RyYWludHMu
aCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIE5pY29zaWEgeworY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUg
OiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2Ny
b2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlPiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGlu
Z05vZGVJRCk7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlKCk7CisK
KyAgICBjb25zdCBWZWN0b3I8U2Nyb2xsaW5nTm9kZUlEPiYgcmVsYXRlZE92ZXJmbG93U2Nyb2xs
aW5nTm9kZXMoKSBjb25zdCB7IHJldHVybiBtX3JlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVz
OyB9CisKK3ByaXZhdGU6CisgICAgU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlKFNjcm9sbGlu
Z1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworCisgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNo
aWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOworCisgICAgdm9pZCBh
cHBseUxheWVyUG9zaXRpb25zKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGR1bXBQcm9wZXJ0aWVz
KFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25z
dCBvdmVycmlkZTsKKworICAgIFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+IG1fcmVsYXRlZE92ZXJm
bG93U2Nyb2xsaW5nTm9kZXM7CisgICAgQWJzb2x1dGVQb3NpdGlvbkNvbnN0cmFpbnRzIG1fY29u
c3RyYWludHM7CisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1fc2Nyb2xs
TGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfU0NST0xMSU5HX05PREUoU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLCBpc1Bvc2l0
aW9uZWROb2RlKCkpCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0Uo
TklDT1NJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKaW5kZXggZDYzZWFhZWNm
MmMuLjMyMGU5MTUwZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcApAQCAt
MzAsNyArMzAsMTMgQEAKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNP
U0lBKQogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZS5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlICJTY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTUwLDEyICs1Niw2MCBAQCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6flNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlKCkKICAgICBzY3JvbGxpbmdUcmVlKCkuZml4ZWRPclN0aWNreU5vZGVSZW1v
dmVkKCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRlQmVm
b3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikKK3ZvaWQgU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJiBzdGF0ZU5vZGUpCiB7CisgICAgYXV0byYgc3RpY2t5U3RhdGVOb2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPihzdGF0ZU5vZGUpOworCisgICAgaWYgKHN0aWNr
eVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikp
IHsKKyAgICAgICAgTmljb3NpYTo6UGxhdGZvcm1MYXllciogbGF5ZXIgPSBzdGlja3lTdGF0ZU5v
ZGUubGF5ZXIoKTsKKyAgICAgICAgbV9zY3JvbGxMYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNv
bXBvc2l0aW9uTGF5ZXI+KGxheWVyKTsKKyAgICB9CisKKyAgICBpZiAoc3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU6OlZpZXdwb3J0Q29uc3RyYWlu
dHMpKQorICAgICAgICBtX2NvbnN0cmFpbnRzID0gc3RpY2t5U3RhdGVOb2RlLnZpZXdwb3J0Q29u
c3RyYWludHMoKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6YXBwbHlMYXll
clBvc2l0aW9ucygpCiB7CisgICAgRmxvYXRSZWN0IGNvbnN0cmFpbmluZ1JlY3Q7CisKKyAgICBh
dXRvKiBlbmNsb3NpbmdTY3JvbGxpbmdOb2RlID0gcGFyZW50KCk7CisgICAgaWYgKGlzPFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KGVuY2xvc2luZ1Njcm9sbGluZ05vZGUpKQor
ICAgICAgICBjb25zdHJhaW5pbmdSZWN0ID0gRmxvYXRSZWN0KGRvd25jYXN0PFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KCplbmNsb3NpbmdTY3JvbGxpbmdOb2RlKS5jdXJyZW50
U2Nyb2xsUG9zaXRpb24oKSwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5
b3V0KCkuc2l6ZSgpKTsKKyAgICBlbHNlIGlmIChpczxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlPihlbmNsb3NpbmdTY3JvbGxpbmdOb2RlKSkKKyAgICAgICAgY29uc3RyYWluaW5nUmVj
dCA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KGVuY2xvc2luZ1Nj
cm9sbGluZ05vZGUpLT5sYXlvdXRWaWV3cG9ydCgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJu
OworCisgICAgRmxvYXRQb2ludCBsYXllclBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBv
c2l0aW9uRm9yQ29uc3RyYWluaW5nUmVjdChjb25zdHJhaW5pbmdSZWN0KSAtIG1fY29uc3RyYWlu
dHMuYWxpZ25tZW50T2Zmc2V0KCk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBz
dHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkg
PDwgIiBjb25zdHJhaW5pbmdSZWN0ICIgPDwgY29uc3RyYWluaW5nUmVjdCA8PCAiIGNvbnN0cmFp
bmluZ1JlY3RBdExhc3RMYXlvdXQgIiA8PCBtX2NvbnN0cmFpbnRzLmNvbnN0cmFpbmluZ1JlY3RB
dExhc3RMYXlvdXQoKSA8PCAiIGxhc3QgbGF5ZXIgcG9zICIgPDwgbV9jb25zdHJhaW50cy5sYXll
clBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgPDwgIiBsYXllclBvc2l0aW9uICIgPDwgbGF5ZXJQb3Np
dGlvbik7CisKKyAgICBBU1NFUlQobV9zY3JvbGxMYXllcik7CisgICAgbV9zY3JvbGxMYXllci0+
YWNjZXNzU3RhZ2luZygKKyAgICAgICAgICAgIFt0aGlzLCAmbGF5ZXJQb3NpdGlvbl0oTmljb3Np
YTo6Q29tcG9zaXRpb25MYXllcjo6TGF5ZXJTdGF0ZSYgc3RhdGUpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgc3RhdGUucG9zaXRpb24gPSBsYXllclBvc2l0aW9uOworICAgICAgICAg
ICAgICAgIHN0YXRlLmRlbHRhLnBvc2l0aW9uQ2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICB9
KTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4
dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBj
b25zdAoreworICAgIHRzIDw8ICJzdGlja3kgbm9kZSI7CisKKyAgICBTY3JvbGxpbmdUcmVlTm9k
ZTo6ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInN0
aWNreSBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOworCisjaWYgMAorICAgIGlmIChiZWhh
dmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9ySW5jbHVkZUxheWVyUG9zaXRp
b25zKSB7CisgICAgICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IFttX2xheWVyIGJvdW5kc107
CisgICAgICAgIEZsb2F0UG9pbnQgYW5jaG9yUG9pbnQgPSBbbV9sYXllciBhbmNob3JQb2ludF07
CisgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSBbbV9sYXllciBwb3NpdGlvbl07CisgICAg
ICAgIEZsb2F0UG9pbnQgbGF5ZXJUb3BMZWZ0ID0gcG9zaXRpb24gLSB0b0Zsb2F0U2l6ZShhbmNo
b3JQb2ludCkgKiBsYXllckJvdW5kcy5zaXplKCkgKyBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9m
ZnNldCgpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoImxheWVyIHRvcCBsZWZ0IiwgbGF5ZXJU
b3BMZWZ0KTsKKyAgICB9CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCmluZGV4IGEzZDE5MWVhOWI5Li5mOTUyMTQ3NDEyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaApAQCAtMzEsNiArMzEsMTMgQEAKIAogI2lu
Y2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCiAKKyNpbmNsdWRlICJTY3JvbGxpbmdDb25zdHJh
aW50cy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIE5pY29zaWEgewor
Y2xhc3MgQ29tcG9zaXRpb25MYXllcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9k
ZSB7CkBAIC00NCw4ICs1MSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tbWl0U3RhdGVCZWZv
cmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKICAgICB2b2lk
IGFwcGx5TGF5ZXJQb3NpdGlvbnMoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgZHVtcFByb3BlcnRp
ZXMoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IpIGNv
bnN0IG92ZXJyaWRlOworCisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1f
c2Nyb2xsTGF5ZXI7CisgICAgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIG1fY29u
c3RyYWludHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfU0NST0xMSU5HX05PREUoU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUsIGlzU3RpY2t5
Tm9kZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09T
SUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L05pY29zaWFQbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmgKaW5kZXggYTNiZjI4N2ViOGQuLjAxZjZh
OWE5OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCkBAIC0yNzIsNiArMjcyLDEz
IEBAIHB1YmxpYzoKICAgICAgICAgZnVuY3RvcihtX3N0YXRlLmNvbW1pdHRlZCk7CiAgICAgfQog
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFjY2Vzc1N0YWdpbmcoY29uc3Qg
VCYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKFBsYXRmb3JtTGF5
ZXI6Om1fc3RhdGUubG9jayk7CisgICAgICAgIGZ1bmN0b3IobV9zdGF0ZS5zdGFnaW5nKTsKKyAg
ICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWNjZXNzQ29tbWl0dGVk
KGNvbnN0IFQmIGZ1bmN0b3IpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBhOTUzODJjOWQ3NC4uMjQyNWFk
NDI3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwCkBAIC0yMzYsNiArMjM2LDE2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwKQogICAgIGRpZENoYW5n
ZUdlb21ldHJ5KCk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jUG9z
aXRpb24oY29uc3QgRmxvYXRQb2ludCYgcCkKK3sKKyAgICBpZiAocG9zaXRpb24oKSA9PSBwKQor
ICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRQb3NpdGlvbihwKTsKKyAg
ICBtX25pY29zaWEuZGVsdGEucG9zaXRpb25DaGFuZ2VkID0gdHJ1ZTsKKyAgICBzZXRTaG91bGRV
cGRhdGVWaXNpYmxlUmVjdCgpOworfQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJiBwKQogewogICAgIGlmIChhbmNob3JQ
b2ludCgpID09IHApCkBAIC0xMjA2LDYgKzEyMTYsMTEgQEAgYm9vbCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnVzZXNDb250ZW50c0xheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9uaWNvc2lh
LmNvbnRlbnRMYXllciB8fCBtX2NvbXBvc2l0ZWRJbWFnZTsKIH0KIAorUGxhdGZvcm1MYXllciog
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9uaWNvc2lhLmxheWVyLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggYjUxNzdkZThj
ZWMuLjQwNzA3ZDI3MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICBib29s
IHJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVyKiwgUmVmPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgc3luY1Bvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEFuY2hvclBvaW50
KGNvbnN0IEZsb2F0UG9pbnQzRCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBG
bG9hdFNpemUmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwpAQCAtMTA4LDYgKzEwOSwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXN1bWVBbmltYXRpb25zKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCB1c2VzQ29udGVu
dHNMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgVVNFKE5JQ09TSUEpCisgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKICAgICB2
b2lkIHN5bmNQZW5kaW5nU3RhdGVDaGFuZ2VzSW5jbHVkaW5nU3ViTGF5ZXJzKCk7CiAgICAgdm9p
ZCB1cGRhdGVDb250ZW50QnVmZmVyc0luY2x1ZGluZ1N1YkxheWVycygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDgy
ZDJjMTU0OTBkLi5lZDcwMjhlNTk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChXS1dQRTo6VmlldyYg
dmlldykKICAgICA6IG1fdmlldyh2aWV3KQotICAgICwgbV9zY3JvbGxHZXN0dXJlQ29udHJvbGxl
cihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEdlc3R1cmVDb250cm9sbGVyPigpKQorICAgICwgbV9z
Y3JvbGxHZXN0dXJlQ29udHJvbGxlcihtX3ZpZXcuc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIoKSkK
IHsKIH0KIApAQCAtMjEyLDggKzIxMiw4IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRo
VG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50LCBiCiAKICAg
ICBhdXRvJiBwYWdlID0gbV92aWV3LnBhZ2UoKTsKIAotICAgIGlmIChtX3Njcm9sbEdlc3R1cmVD
b250cm9sbGVyLT5oYW5kbGVFdmVudCh0b3VjaFBvaW50KSkgewotICAgICAgICBzdHJ1Y3Qgd3Bl
X2lucHV0X2F4aXNfZXZlbnQqIGF4aXNFdmVudCA9IG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIt
PmF4aXNFdmVudCgpOworICAgIGlmIChtX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmhhbmRsZUV2
ZW50KHRvdWNoUG9pbnQpKSB7CisgICAgICAgIHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCog
YXhpc0V2ZW50ID0gbV9zY3JvbGxHZXN0dXJlQ29udHJvbGxlci5heGlzRXZlbnQoKTsKICAgICAg
ICAgaWYgKGF4aXNFdmVudC0+dHlwZSAhPSB3cGVfaW5wdXRfYXhpc19ldmVudF90eXBlX251bGwp
CiAgICAgICAgICAgICBwYWdlLmhhbmRsZVdoZWVsRXZlbnQoV2ViS2l0OjpOYXRpdmVXZWJXaGVl
bEV2ZW50KGF4aXNFdmVudCwgbV92aWV3LnBhZ2UoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFn
ZUNsaWVudEltcGwuaAppbmRleCA3YmU5YjNlZTkzZi4uY2NmMmY0ZmFjYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE2MSw4
ICsxNjEsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpIG92ZXJyaWRlOwogCiAgICAgV0tX
UEU6OlZpZXcmIG1fdmlldzsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxHZXN0dXJlQ29u
dHJvbGxlcj4gbV9zY3JvbGxHZXN0dXJlQ29udHJvbGxlcjsKKyAgICBTY3JvbGxHZXN0dXJlQ29u
dHJvbGxlciYgbV9zY3JvbGxHZXN0dXJlQ29udHJvbGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3Jv
bGxHZXN0dXJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmNwcAppbmRleCAxZTYxM2FlZTRkMS4uMjQwMTUyOTk0
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2Vz
dHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC0yNywxOSArMjcsNDAgQEAKICNpbmNsdWRl
ICJTY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxi
YXIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KKyNpbmNs
dWRlIDxnbGliLmg+CisjaW5jbHVkZSA8bnVtZXJpYz4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K1Njcm9sbEdlc3R1cmVDb250cm9sbGVyOjpDbGllbnQ6On5DbGllbnQoKSA9IGRlZmF1bHQ7CisK
K1Njcm9sbEdlc3R1cmVDb250cm9sbGVyOjpTY3JvbGxHZXN0dXJlQ29udHJvbGxlcihDbGllbnQm
IGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKK3sKKyAgICBtX2tpbmV0aWNzLnRpbWVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxSdW5Mb29wOjpUaW1lcjxTY3JvbGxHZXN0dXJlQ29udHJvbGxl
cj4+KFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlNjcm9sbEdlc3R1cmVDb250cm9sbGVyOjpkaXNw
YXRjaENhbGxiYWNrKTsKKyAgICBtX2tpbmV0aWNzLnRpbWVyLT5zZXRQcmlvcml0eShSdW5Mb29w
U291cmNlUHJpb3JpdHk6OkxheWVyRmx1c2hUaW1lcik7Cit9CisKK1Njcm9sbEdlc3R1cmVDb250
cm9sbGVyOjp+U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIoKQoreworfQorCiBib29sIFNjcm9sbEdl
c3R1cmVDb250cm9sbGVyOjpoYW5kbGVFdmVudChjb25zdCBzdHJ1Y3Qgd3BlX2lucHV0X3RvdWNo
X2V2ZW50X3JhdyogdG91Y2hQb2ludCkKIHsKICAgICBzd2l0Y2ggKHRvdWNoUG9pbnQtPnR5cGUp
IHsKICAgICBjYXNlIHdwZV9pbnB1dF90b3VjaF9ldmVudF90eXBlX2Rvd246Ci0gICAgICAgIG1f
c3RhcnQudGltZSA9IHRvdWNoUG9pbnQtPnRpbWU7Ci0gICAgICAgIG1fc3RhcnQueCA9IHRvdWNo
UG9pbnQtPng7Ci0gICAgICAgIG1fc3RhcnQueSA9IHRvdWNoUG9pbnQtPnk7Ci0gICAgICAgIG1f
b2Zmc2V0LnggPSB0b3VjaFBvaW50LT54OwotICAgICAgICBtX29mZnNldC55ID0gdG91Y2hQb2lu
dC0+eTsKKyAgICB7CisgICAgICAgIGludDMyX3QgeCA9IHRvdWNoUG9pbnQtPng7CisgICAgICAg
IGludDMyX3QgeSA9IHRvdWNoUG9pbnQtPnk7CisgICAgICAgIG1fc3RhcnQgPSB7IHRvdWNoUG9p
bnQtPnRpbWUsIHgsIHkgfTsKKyAgICAgICAgbV9vZmZzZXQgPSB7IHgsIHkgfTsKKyAgICAgICAg
bV9raW5ldGljcy5sYXN0ID0geyB0b3VjaFBvaW50LT50aW1lLCB4LCB5IH07CisgICAgICAgIG1f
a2luZXRpY3MudmVsb2NpdHkgPSB7IH07CisgICAgICAgIG1fa2luZXRpY3MuYXBwbGljYXRpb24g
PSB7IH07CisgICAgICAgIG1fa2luZXRpY3MudGltZXItPnN0b3AoKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KICAgICBjYXNlIHdwZV9pbnB1dF90b3VjaF9ldmVudF90eXBlX21vdGlv
bjoKICAgICAgICAgaWYgKCFtX2hhbmRsaW5nKSB7CiAgICAgICAgICAgICBpbnQzMl90IGRlbHRh
WCA9IHRvdWNoUG9pbnQtPnggLSBtX3N0YXJ0Lng7CkBAIC00OSw3ICs3MCw3IEBAIGJvb2wgU2Ny
b2xsR2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZUV2ZW50KGNvbnN0IHN0cnVjdCB3cGVfaW5wdXRf
dG91Y2hfZXZlbnRfcmF3CiAgICAgICAgICAgICBpbnQgcGl4ZWxzUGVyTGluZVN0ZXAgPSBXZWJD
b3JlOjpTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCk7CiAgICAgICAgICAgICBtX2hhbmRs
aW5nID0gc3RkOjphYnMoZGVsdGFYKSA+PSBwaXhlbHNQZXJMaW5lU3RlcAogICAgICAgICAgICAg
ICAgIHx8IHN0ZDo6YWJzKGRlbHRhWSkgPj0gcGl4ZWxzUGVyTGluZVN0ZXAKLSAgICAgICAgICAg
ICAgICB8fCBkZWx0YVRpbWUgPj0gMjAwOworICAgICAgICAgICAgICAgIHx8IGRlbHRhVGltZSA+
PSA2NDsKICAgICAgICAgfQogICAgICAgICBpZiAobV9oYW5kbGluZykgewogICAgICAgICAgICAg
bV9heGlzRXZlbnQgPSB7CkBAIC01OSw4ICs4MCwyNSBAQCBib29sIFNjcm9sbEdlc3R1cmVDb250
cm9sbGVyOjpoYW5kbGVFdmVudChjb25zdCBzdHJ1Y3Qgd3BlX2lucHV0X3RvdWNoX2V2ZW50X3Jh
dwogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIG1fb2Zmc2V0LnggPSB0b3VjaFBvaW50LT54
OwogICAgICAgICAgICAgbV9vZmZzZXQueSA9IHRvdWNoUG9pbnQtPnk7CisKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBhdXRvJiBsYXN0ID0gbV9raW5ldGljcy5sYXN0OworICAgICAg
ICAgICAgICAgIGF1dG8mIHZlbG9jaXR5ID0gbV9raW5ldGljcy52ZWxvY2l0eTsKKyAgICAgICAg
ICAgICAgICBzdGQ6OnJvdGF0ZSh2ZWxvY2l0eS54LmJlZ2luKCksIHZlbG9jaXR5LnguYmVnaW4o
KSArIDEsIHZlbG9jaXR5LnguZW5kKCkpOworICAgICAgICAgICAgICAgIHN0ZDo6cm90YXRlKHZl
bG9jaXR5LnkuYmVnaW4oKSwgdmVsb2NpdHkueS5iZWdpbigpICsgMSwgdmVsb2NpdHkueS5lbmQo
KSk7CisgICAgICAgICAgICAgICAgc3RkOjpyb3RhdGUodmVsb2NpdHkudGltZS5iZWdpbigpLCB2
ZWxvY2l0eS50aW1lLmJlZ2luKCkgKyAxLCB2ZWxvY2l0eS50aW1lLmVuZCgpKTsKKworICAgICAg
ICAgICAgICAgIHZlbG9jaXR5LnguYmFjaygpID0gdG91Y2hQb2ludC0+eCAtIGxhc3QueDsKKyAg
ICAgICAgICAgICAgICB2ZWxvY2l0eS55LmJhY2soKSA9IHRvdWNoUG9pbnQtPnkgLSBsYXN0Lnk7
CisgICAgICAgICAgICAgICAgdmVsb2NpdHkudGltZS5iYWNrKCkgPSB0b3VjaFBvaW50LT50aW1l
IC0gbGFzdC50aW1lOworCisgICAgICAgICAgICAgICAgbGFzdCA9IHsgdG91Y2hQb2ludC0+dGlt
ZSwgdG91Y2hQb2ludC0+eCwgdG91Y2hQb2ludC0+eSB9OworICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorCisgICAgICAgIG1fa2luZXRpY3MubGFz
dCA9IHsgdG91Y2hQb2ludC0+dGltZSwgdG91Y2hQb2ludC0+eCwgdG91Y2hQb2ludC0+eSB9Owog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfdHlw
ZV91cDoKICAgICAgICAgaWYgKG1faGFuZGxpbmcpIHsKQEAgLTY5LDYgKzEwNywyMCBAQCBib29s
IFNjcm9sbEdlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVFdmVudChjb25zdCBzdHJ1Y3Qgd3BlX2lu
cHV0X3RvdWNoX2V2ZW50X3JhdwogICAgICAgICAgICAgICAgIHdwZV9pbnB1dF9heGlzX2V2ZW50
X3R5cGVfbnVsbCwKICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwCiAgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICBhdXRvJiB2ZWxvY2l0eSA9IG1fa2luZXRpY3MudmVsb2NpdHk7
CisgICAgICAgICAgICB1aW50MzJfdCBhY2N1bXVsYXRlZFRpbWUgPSBzdGQ6OmFjY3VtdWxhdGUo
dmVsb2NpdHkudGltZS5iZWdpbigpLCB2ZWxvY2l0eS50aW1lLmVuZCgpLCAwKTsKKyAgICAgICAg
ICAgIGludDMyX3QgYWNjdW11bGF0ZWRYID0gc3RkOjphY2N1bXVsYXRlKHZlbG9jaXR5LnguYmVn
aW4oKSwgdmVsb2NpdHkueC5lbmQoKSwgMCk7CisgICAgICAgICAgICBpbnQzMl90IGFjY3VtdWxh
dGVkWSA9IHN0ZDo6YWNjdW11bGF0ZSh2ZWxvY2l0eS55LmJlZ2luKCksIHZlbG9jaXR5LnkuZW5k
KCksIDApOworICAgICAgICAgICAgZG91YmxlIHRyYWplY3RvcnlYID0gMTAwMC4wICogYWNjdW11
bGF0ZWRYIC8gYWNjdW11bGF0ZWRUaW1lOworICAgICAgICAgICAgZG91YmxlIHRyYWplY3RvcnlZ
ID0gMTAwMC4wICogYWNjdW11bGF0ZWRZIC8gYWNjdW11bGF0ZWRUaW1lOworCisgICAgICAgICAg
ICBtX2tpbmV0aWNzLmFwcGxpY2F0aW9uID0geworICAgICAgICAgICAgICAgICAgICBnX2dldF9t
b25vdG9uaWNfdGltZSgpLCB0b3VjaFBvaW50LT50aW1lLCB0b3VjaFBvaW50LT50aW1lLAorICAg
ICAgICAgICAgICAgICAgICB7IG1fc3RhcnQueCwgdHJhamVjdG9yeVgsIHN0ZDo6YWJzKHRyYWpl
Y3RvcnlYICogMC4yKSB9LAorICAgICAgICAgICAgICAgICAgICB7IG1fc3RhcnQueSwgdHJhamVj
dG9yeVksIHN0ZDo6YWJzKHRyYWplY3RvcnlZICogMC4yKSB9CisgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIG1fa2luZXRpY3MudGltZXItPnN0YXJ0T25lU2hvdChTZWNvbmRzOjpmcm9t
TWlsbGlzZWNvbmRzKDE1KSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03Nyw0ICsxMjksNDIgQEAgYm9vbCBTY3JvbGxHZXN0
dXJlQ29udHJvbGxlcjo6aGFuZGxlRXZlbnQoY29uc3Qgc3RydWN0IHdwZV9pbnB1dF90b3VjaF9l
dmVudF9yYXcKICAgICB9CiB9CiAKK3ZvaWQgU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI6OmRpc3Bh
dGNoQ2FsbGJhY2soKQoreworICAgIHVpbnQzMl90IHRpbWVPZmZzZXQgPSAoZ19nZXRfbW9ub3Rv
bmljX3RpbWUoKSAtIG1fa2luZXRpY3MuYXBwbGljYXRpb24uYmFzZU1vbm90b25pY1RpbWUpIC8g
MTAwMDsKKyAgICB1aW50MzJfdCB0aW1lID0gbV9raW5ldGljcy5hcHBsaWNhdGlvbi5iYXNlVGlt
ZSArIHRpbWVPZmZzZXQ7CisgICAgdWludDMyX3QgdGltZURlbHRhID0gdGltZSAtIG1fa2luZXRp
Y3MuYXBwbGljYXRpb24ubGFzdFRpbWU7CisgICAgbV9raW5ldGljcy5hcHBsaWNhdGlvbi5sYXN0
VGltZSA9IHRpbWU7CisKKyAgICBkb3VibGUgdHJhamVjdG9yeVhWYWx1ZSA9IDA7CisgICAgaWYg
KHRpbWVPZmZzZXQgPCBtX2tpbmV0aWNzLmFwcGxpY2F0aW9uLnguZHVyYXRpb24pIHsKKyAgICAg
ICAgdHJhamVjdG9yeVhWYWx1ZSA9IC1zdGQ6OnBvdyhkb3VibGUodGltZU9mZnNldCkgLyBtX2tp
bmV0aWNzLmFwcGxpY2F0aW9uLnguZHVyYXRpb24sIDIpICsgMTsKKyAgICAgICAgdHJhamVjdG9y
eVhWYWx1ZSA9IHN0ZDo6bWF4PGRvdWJsZT4odHJhamVjdG9yeVhWYWx1ZSwgMCk7CisgICAgfQor
CisgICAgZG91YmxlIHRyYWplY3RvcnlZVmFsdWUgPSAwOworICAgIGlmICh0aW1lT2Zmc2V0IDwg
bV9raW5ldGljcy5hcHBsaWNhdGlvbi55LmR1cmF0aW9uKSB7CisgICAgICAgIHRyYWplY3RvcnlZ
VmFsdWUgPSAtc3RkOjpwb3coZG91YmxlKHRpbWVPZmZzZXQpIC8gbV9raW5ldGljcy5hcHBsaWNh
dGlvbi55LmR1cmF0aW9uLCAyKSArIDE7CisgICAgICAgIHRyYWplY3RvcnlZVmFsdWUgPSBzdGQ6
Om1heDxkb3VibGU+KHRyYWplY3RvcnlZVmFsdWUsIDApOworICAgIH0KKworICAgIGJvb2wgYWN0
aXZlVHJhamVjdG9yaWVzID0gISF0cmFqZWN0b3J5WFZhbHVlIHx8ICEhdHJhamVjdG9yeVlWYWx1
ZTsKKworICAgIGludDMyX3QgdHJhamVjdG9yeVlDaGFuZ2UgPSBtX2tpbmV0aWNzLmFwcGxpY2F0
aW9uLnkudHJhamVjdG9yeSAqIHRyYWplY3RvcnlZVmFsdWUgKiB0aW1lRGVsdGEgLyAxMDAwLjA7
CisgICAgaWYgKHRyYWplY3RvcnlZQ2hhbmdlKSB7CisgICAgICAgIHN0cnVjdCB3cGVfaW5wdXRf
YXhpc19ldmVudCBheGlzRXZlbnQgPSB7CisgICAgICAgICAgICB3cGVfaW5wdXRfYXhpc19ldmVu
dF90eXBlX21vdGlvbiwKKyAgICAgICAgICAgIG1fa2luZXRpY3MuYXBwbGljYXRpb24uYmFzZVRp
bWUgKyB0aW1lT2Zmc2V0LAorICAgICAgICAgICAgbV9raW5ldGljcy5hcHBsaWNhdGlvbi54LmNv
b3JkaW5hdGUsIG1fa2luZXRpY3MuYXBwbGljYXRpb24ueS5jb29yZGluYXRlLAorICAgICAgICAg
ICAgMiwgdHJhamVjdG9yeVlDaGFuZ2UKKyAgICAgICAgfTsKKyAgICAgICAgbV9jbGllbnQuZGlz
cGF0Y2hBeGlzRXZlbnQoJmF4aXNFdmVudCk7CisgICAgfQorCisgICAgLy8gRklYTUU6IEFsc28g
aGFuZGxlIGNoYW5nZSBpbiB0aGUgaG9yaXpvbnRhbCB0cmFqZWN0b3J5LgorCisgICAgaWYgKGFj
dGl2ZVRyYWplY3RvcmllcykKKyAgICAgICAgbV9raW5ldGljcy50aW1lci0+c3RhcnRPbmVTaG90
KFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoMTUpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdl
c3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9s
bEdlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggOWM5ZjZlOWUzYjEuLjYyNmUxMThhZWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0
dXJlQ29udHJvbGxlci5oCkBAIC0yNSwxOSArMjUsMzQgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDx3cGUvd3BlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNjcm9sbEdlc3R1cmVDb250cm9s
bGVyIHsKIHB1YmxpYzoKLSAgICBTY3JvbGxHZXN0dXJlQ29udHJvbGxlcigpID0gZGVmYXVsdDsK
KyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50
KCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQXhpc0V2ZW50KHN0cnVjdCB3cGVf
aW5wdXRfYXhpc19ldmVudCopID0gMDsKKyAgICB9OworCisgICAgU2Nyb2xsR2VzdHVyZUNvbnRy
b2xsZXIoQ2xpZW50Jik7CisgICAgflNjcm9sbEdlc3R1cmVDb250cm9sbGVyKCk7CiAKICAgICBz
dHJ1Y3Qgd3BlX2lucHV0X2F4aXNfZXZlbnQqIGF4aXNFdmVudCgpIHsgcmV0dXJuICZtX2F4aXNF
dmVudDsgfQogCisgICAgYm9vbCBpc0hhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGlu
ZzsgfQogICAgIGJvb2wgaGFuZGxlRXZlbnQoY29uc3Qgc3RydWN0IHdwZV9pbnB1dF90b3VjaF9l
dmVudF9yYXcqKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGRpc3BhdGNoQ2FsbGJhY2soKTsKKwor
ICAgIENsaWVudCYgbV9jbGllbnQ7CisKICAgICBzdHJ1Y3QgewogICAgICAgICB1aW50MzJfdCB0
aW1lIHsgMCB9OwogICAgICAgICBpbnQzMl90IHggeyAwIH07CkBAIC00OSw2ICs2NCwzMiBAQCBw
cml2YXRlOgogICAgICAgICBpbnQzMl90IHkgeyAwIH07CiAgICAgfSBtX29mZnNldDsKIAorICAg
IHN0cnVjdCB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCB0aW1lIHsg
MCB9OworICAgICAgICAgICAgaW50MzJfdCB4IHsgMCB9OworICAgICAgICAgICAgaW50MzJfdCB5
IHsgMCB9OworICAgICAgICB9IGxhc3Q7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBz
dGQ6OmFycmF5PGludDMyX3QsIDQ+IHg7CisgICAgICAgICAgICBzdGQ6OmFycmF5PGludDMyX3Qs
IDQ+IHk7CisgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQzMl90LCA0PiB0aW1lOworICAgICAg
ICB9IHZlbG9jaXR5OworCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpbnQ2NF90IGJh
c2VNb25vdG9uaWNUaW1lIHsgMCB9OworICAgICAgICAgICAgdWludDMyX3QgYmFzZVRpbWUgeyAw
IH07CisgICAgICAgICAgICB1aW50MzJfdCBsYXN0VGltZSB7IDAgfTsKKyAgICAgICAgICAgIHN0
cnVjdCB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBjb29yZGluYXRlIHsgMCB9OworICAgICAg
ICAgICAgICAgIGRvdWJsZSB0cmFqZWN0b3J5IHsgMCB9OworICAgICAgICAgICAgICAgIGRvdWJs
ZSBkdXJhdGlvbiB7IDAgfTsKKyAgICAgICAgICAgIH0geCwgeTsKKyAgICAgICAgfSBhcHBsaWNh
dGlvbjsKKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVuTG9vcDo6VGltZXI8U2Nyb2xsR2Vz
dHVyZUNvbnRyb2xsZXI+PiB0aW1lcjsKKyAgICB9IG1fa2luZXRpY3M7CisKICAgICBib29sIG1f
aGFuZGxpbmcgeyBmYWxzZSB9OwogICAgIHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCBtX2F4
aXNFdmVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dQRVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNw
cAppbmRleCA5YWE2MzQwNDUzMS4uOWQ4ZTFlNzE4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV0tX
UEUgewogCiBWaWV3OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBiYWNrZW5kLCBjb25z
dCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBiYXNlQ29uZmlndXJhdGlvbikKICAgICA6IG1fY2xp
ZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQorICAgICwgbV9zY3JvbGxH
ZXN0dXJlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEdlc3R1cmVDb250cm9sbGVy
PigqdGhpcykpCiAgICAgLCBtX3BhZ2VDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ2xpZW50
SW1wbD4oKnRoaXMpKQogICAgICwgbV9zaXplIHsgODAwLCA2MDAgfQogICAgICwgbV92aWV3U3Rh
dGVGbGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlLCBXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyB9CkBAIC0xNTcsOCArMTU4
LDI3IEBAIFZpZXc6OlZpZXcoc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIGJhY2tlbmQsIGNvbnN0
IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGJhc2VDCiAgICAgICAgIC8vIGhhbmRsZV90b3VjaF9l
dmVudAogICAgICAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd3BlX2lucHV0X3RvdWNoX2V2ZW50
KiBldmVudCkKICAgICAgICAgewotICAgICAgICAgICAgYXV0byYgcGFnZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Vmlldyo+KGRhdGEpLT5wYWdlKCk7Ci0gICAgICAgICAgICBwYWdlLmhhbmRsZVRvdWNo
RXZlbnQoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50KGV2ZW50LCBwYWdlLmRldmljZVNjYWxl
RmFjdG9yKCkpKTsKKyAgICAgICAgICAgIGF1dG8mIHZpZXcgPSAqcmVpbnRlcnByZXRfY2FzdDxW
aWV3Kj4oZGF0YSk7CisgICAgICAgICAgICBhdXRvJiBwYWdlID0gdmlldy5wYWdlKCk7CisKKyAg
ICAgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworCisgICAgICAgICAgICBXZWJLaXQ6Ok5h
dGl2ZVdlYlRvdWNoRXZlbnQgbmF0aXZlRXZlbnQoZXZlbnQsIHBhZ2UuZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CisKKyAgICAgICAgICAgIGF1dG8mIHNjcm9sbEdlc3R1cmVDb250cm9sbGVyID0gKnZp
ZXcubV9zY3JvbGxHZXN0dXJlQ29udHJvbGxlcjsKKyAgICAgICAgICAgIGlmIChzY3JvbGxHZXN0
dXJlQ29udHJvbGxlci5pc0hhbmRsaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBzdHJ1
Y3Qgd3BlX2lucHV0X3RvdWNoX2V2ZW50X3JhdyogdG91Y2hQb2ludCA9IG5hdGl2ZUV2ZW50Lm5h
dGl2ZUZhbGxiYWNrVG91Y2hQb2ludCgpOworICAgICAgICAgICAgICAgIGlmICh0b3VjaFBvaW50
LT50eXBlICE9IHdwZV9pbnB1dF90b3VjaF9ldmVudF90eXBlX251bGwgJiYKKyAgICAgICAgICAg
ICAgICAgICAgc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaGFuZGxlRXZlbnQodG91Y2hQb2ludCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCogYXhpc0V2ZW50ID0gc2Nyb2xsR2VzdHVy
ZUNvbnRyb2xsZXIuYXhpc0V2ZW50KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChheGlzRXZl
bnQtPnR5cGUgIT0gd3BlX2lucHV0X2F4aXNfZXZlbnRfdHlwZV9udWxsKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcGFnZS5oYW5kbGVXaGVlbEV2ZW50KFdlYktpdDo6TmF0aXZlV2ViV2hlZWxF
dmVudChheGlzRXZlbnQsIHBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFoYW5kbGVkKQorICAgICAg
ICAgICAgICAgIHBhZ2UuaGFuZGxlVG91Y2hFdmVudChuYXRpdmVFdmVudCk7CiAgICAgICAgIH0s
CiAgICAgICAgIC8vIHBhZGRpbmcKICAgICAgICAgbnVsbHB0ciwKQEAgLTIzNCw0ICsyNTQsMTAg
QEAgV2ViS2l0V2ViVmlld0FjY2Vzc2libGUqIFZpZXc6OmFjY2Vzc2libGUoKSBjb25zdAogfQog
I2VuZGlmCiAKK3ZvaWQgVmlldzo6ZGlzcGF0Y2hBeGlzRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9h
eGlzX2V2ZW50KiBheGlzRXZlbnQpCit7CisgICAgYXV0byYgcGFnZSA9IHRoaXMtPnBhZ2UoKTsK
KyAgICBwYWdlLmhhbmRsZVdoZWVsRXZlbnQoV2ViS2l0OjpOYXRpdmVXZWJXaGVlbEV2ZW50KGF4
aXNFdmVudCwgcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdLV1BFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCmluZGV4IDc1
Y2E4NTc5ODAyLi4zYjZmZGI0YmFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XUEVWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XUEVWaWV3LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiU2Nyb2xsR2VzdHVyZUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Fj
dGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxtZW1vcnk+CkBAIC0zOSw2ICs0MCw3IEBACiAjZW5k
aWYKIAogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0dsb2JhbENvbnRleHRSZWY7
CitzdHJ1Y3Qgd3BlX2lucHV0X2F4aXNfZXZlbnQ7CiBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZDsK
IAogbmFtZXNwYWNlIEFQSSB7CkBAIC00NywxMyArNDksMTQgQEAgY2xhc3MgVmlld0NsaWVudDsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEb3dubG9hZFByb3h5OworY2xhc3MgU2Nyb2xs
R2VzdHVyZUNvbnRyb2xsZXI7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQcm9jZXNz
UG9vbDsKIH0KIAogbmFtZXNwYWNlIFdLV1BFIHsKIAotY2xhc3MgVmlldyA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlZpZXc+IHsKK2NsYXNzIFZpZXcgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpWaWV3PiwgcHVibGljIFdlYktp
dDo6U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFZpZXcqIGNyZWF0ZShzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFja2VuZCwgY29uc3QgQVBJ
OjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7CkBAIC04NywxNCArOTAs
MjAgQEAgcHVibGljOgogICAgIFdlYktpdFdlYlZpZXdBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKCkg
Y29uc3Q7CiAjZW5kaWYKIAorICAgIFdlYktpdDo6U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXImIHNj
cm9sbEdlc3R1cmVDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fc2Nyb2xsR2VzdHVyZUNv
bnRyb2xsZXI7IH0KKwogcHJpdmF0ZToKICAgICBWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5k
KiwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYpOwogCiAgICAgdm9pZCBzZXRTaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIHNldFZpZXdTdGF0ZShPcHRpb25TZXQ8
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4pOwogCisgICAgLy8gU2Nyb2xsR2VzdHVyZUNv
bnRyb2xsZXI6OkNsaWVudAorICAgIHZvaWQgZGlzcGF0Y2hBeGlzRXZlbnQoc3RydWN0IHdwZV9p
bnB1dF9heGlzX2V2ZW50Kikgb3ZlcnJpZGU7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpW
aWV3Q2xpZW50PiBtX2NsaWVudDsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlNjcm9s
bEdlc3R1cmVDb250cm9sbGVyPiBtX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPiBtX3BhZ2VDbGllbnQ7CiAgICAgUmVm
UHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2VQcm94eTsKICAgICBXZWJDb3JlOjpJbnRT
aXplIG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCAzMGY2NmIwNDQ0Ny4uOTkzZDNk
MmFlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdp
bmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTI1Nyw2ICsyNTcsMTEgQEAgdm9pZCBE
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRl
cyhWaWV3cG9ydEF0dHJpYnUKICAgICAgICAgbV9wcmV2aW91c0xheWVyVHJlZUhvc3QtPmRpZENo
YW5nZVZpZXdwb3J0QXR0cmlidXRlcyhXVEZNb3ZlKGF0dHJzKSk7CiB9CiAKK2Jvb2wgRHJhd2lu
Z0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpzdXBwb3J0c0FzeW5jU2Nyb2xsaW5nKCkKK3sKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogR3JhcGhpY3NMYXllckZhY3RvcnkqIERyYXdpbmdBcmVhQ29v
cmRpbmF0ZWRHcmFwaGljczo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKQogewogICAgIGlmICghbV9s
YXllclRyZWVIb3N0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgKaW5kZXggNWFmOWQ1ZWE5NmMuLmExZGY3NDA0
N2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFDb29yZGluYXRlZEdyYXBoaWNzLmgKQEAgLTYyLDYgKzYyLDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYm
KSBvdmVycmlkZTsKIAorICAgIGJvb2wgc3VwcG9ydHNBc3luY1Njcm9sbGluZygpIG92ZXJyaWRl
OworCiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0
b3J5KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzY2hlZHVsZUluaXRpYWxEZWZl
cnJlZFBhaW50KCkgb3ZlcnJpZGUgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlv
bnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQppbmRleCA2Y2I4YzBj
MmFmMS4uMWUzZDI0OTNjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCkBAIC00Niw3ICs0Niw3IEBA
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9YU0xUIFBVQkxJQyBPTikK
ICMgUHJpdmF0ZSBvcHRpb25zIHNoYXJlZCB3aXRoIG90aGVyIFdlYktpdCBwb3J0cy4gQWRkIG9w
dGlvbnMgaGVyZSBvbmx5IGlmCiAjIHdlIG5lZWQgYSB2YWx1ZSBkaWZmZXJlbnQgZnJvbSB0aGUg
ZGVmYXVsdCBkZWZpbmVkIGluIFdlYktpdEZlYXR1cmVzLmNtYWtlLgogIyBDaGFuZ2luZyB0aGVz
ZSBvcHRpb25zIGlzIGNvbXBsZXRlbHkgdW5zdXBwb3J0ZWQuCi1XRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfQVNZTkNfU0NST0xMSU5HIFBSSVZBVEUgT0ZGKQorV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FTWU5DX1NDUk9MTElORyBQUklWQVRF
IE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NPTlRFTlRfRVhU
RU5TSU9OUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX01FRElBX1NUUkVBTSBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFU30p
CiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUhUTUwgUFJJVkFURSBP
TikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377119</attachid>
            <date>2019-08-23 04:02:50 -0700</date>
            <delta_ts>2019-08-23 04:02:50 -0700</delta_ts>
            <desc>WIP -- updated</desc>
            <filename>asyncscrolling.patch</filename>
            <type>text/plain</type>
            <size>54949</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IGVhODc2ZWU4ZGQ1Li41ZGQwZWU0N2FkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBA
IC0xNTA3LDcgKzE1MDcsNyBAQAogI2RlZmluZSBFTkFCTEVfRlVMTF9LRVlCT0FSRF9BQ0NFU1Mg
MQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpKSB8fCBQTEFURk9STShHVEspCisjaWYgKChQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0o
V1BFKSkgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykpIHx8IFBMQVRGT1JNKEdUSykKICNkZWZp
bmUgRU5BQkxFX0tJTkVUSUNfU0NST0xMSU5HIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA3MTkzYmM1YWUxMC4uZDk2OGU2YzY0ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAtMjEsNiArMjEsNyBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwCiAgICAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKICAgICBwYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lhLmNwcAorICAgIHBhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcAogICAgIHBhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCiAKICAgICBwYWdlL3Njcm9s
bGluZy9nZW5lcmljL1Njcm9sbGluZ1RocmVhZEdlbmVyaWMuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0
CmluZGV4IDA0ZWJiZmMwMmIyLi5kNDRkYTE3MWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAg
LTU1LDYgKzU1LDcgQEAgcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdTdGF0ZU5vZGVO
aWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2Rl
LmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTmljb3NpYS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU5pY29z
aWEuY3BwCitwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9k
ZS5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3Bw
CiAKIHBhZ2Uvc2Nyb2xsaW5nL2dlbmVyaWMvU2Nyb2xsaW5nVGhyZWFkR2VuZXJpYy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlc1dQRS50eHQKaW5kZXggMmY5OGZmZWJmMDIuLjk5OThiNzZhZThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzV1BFLnR4dApAQCAtNTIsNiArNTIsNyBAQCBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1N0YXRlTm9kZU5pY29zaWEuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVGaXhlZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlTmljb3NpYS5jcHAKK3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZVBvc2l0aW9uZWROb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5jcHAKIAogcGFnZS9zY3JvbGxpbmcvZ2VuZXJpYy9TY3JvbGxpbmdUaHJlYWRH
ZW5lcmljLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDQ0ZDZlOGM2NjdiLi5iNjdk
YTUzNTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcApAQCAtMzQsNiArMzQsMTAgQEAKICNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCisjaWYgVVNFKE5JQ09TSUEpCisjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdU
cmVlLCBTY3JvbGxpbmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkK
QEAgLTk3LDcgKzEwMSw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOCiAgICAgaWYgKHN0YXRl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkV4cGVjdHNX
aGVlbEV2ZW50VGVzdFRyaWdnZXIpKQogICAgICAgICBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRy
aWdnZXIgPSBzdGF0ZS5leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKE5JQ09TSUEpCiAgICAgaWYg
KHN0YXRlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNj
cm9sbENvbnRhaW5lckxheWVyKSkKICAgICAgICAgbV9zY3JvbGxDb250YWluZXJMYXllciA9IHN0
YXRlLnNjcm9sbENvbnRhaW5lckxheWVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDdl
NWU0NWNhMzI5Li40OTkzZDE1M2E4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKIAogI2luY2x1ZGUgIkludFJlY3Qu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNl
dHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxl
QXJlYS5oIgpAQCAtMTMwLDYgKzEzMSw5IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgZXhwZWN0
c1doZWVsRXZlbnRUZXN0VHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0c1doZWVsRXZl
bnRUZXN0VHJpZ2dlcjsgfQogCisgICAgUGxhdGZvcm1MYXllciogc2Nyb2xsQ29udGFpbmVyTGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbENvbnRhaW5lckxheWVyLmdldCgpOyB9CisgICAg
UGxhdGZvcm1MYXllciogc2Nyb2xsZWRDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxlZENvbnRlbnRzTGF5ZXIuZ2V0KCk7IH0KKwogICAgIExheW91dFBvaW50IHBhcmVudFRv
TG9jYWxQb2ludChMYXlvdXRQb2ludCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGF5b3V0UG9pbnQg
bG9jYWxUb0NvbnRlbnRzUG9pbnQoTGF5b3V0UG9pbnQpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0x
NTUsNiArMTU5LDkgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gbV9zY3JvbGxDb250YWluZXJMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXll
cj4gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7CisjZWxpZiBVU0UoTklDT1NJQSkKKyAgICBSZWZQ
dHI8Tmljb3NpYTo6UGxhdGZvcm1MYXllcj4gbV9zY3JvbGxDb250YWluZXJMYXllcjsKKyAgICBS
ZWZQdHI8Tmljb3NpYTo6UGxhdGZvcm1MYXllcj4gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcAppbmRl
eCAwZDM0M2FiNjQwOC4uNDcwYWU1YTZkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yTmljb3NpYS5jcHAKQEAgLTU4LDcgKzU4LDkgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
ck5pY29zaWE6OnBhZ2VEZXN0cm95ZWQoKQogCiAgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWVDb21t
aXR0ZXJUaW1lci5zdG9wKCk7CiAKLSAgICByZWxlYXNlU2Nyb2xsaW5nVHJlZSgpOworICAgIC8v
IEludmFsaWRhdGluZyB0aGUgc2Nyb2xsaW5nIHRyZWUgd2lsbCBicmVhayB0aGUgcmVmZXJlbmNl
IGN5Y2xlIGJldHdlZW4gdGhlIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGFuZCBTY3JvbGxpbmdUcmVl
IG9iamVjdHMuCisgICAgUmVmUHRyPFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4gc2Nyb2xsaW5nVHJl
ZSA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihyZWxlYXNlU2Ny
b2xsaW5nVHJlZSgpKTsKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFtzY3JvbGxpbmdU
cmVlXSB7IHNjcm9sbGluZ1RyZWUtPmludmFsaWRhdGUoKTsgfSk7CiB9CiAKIHZvaWQgU2Nyb2xs
aW5nQ29vcmRpbmF0b3JOaWNvc2lhOjpjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpCkBAIC04MCwx
MiArODIsMTYgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6OnNjaGVkdWxlVHJl
ZVN0YXRlQ29tbWl0KCkKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6OmNvbW1p
dFRyZWVTdGF0ZSgpCiB7CisgICAgd2lsbENvbW1pdFRyZWUoKTsKKwogICAgIGlmICghc2Nyb2xs
aW5nU3RhdGVUcmVlKCktPmhhc0NoYW5nZWRQcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFJlZlB0cjxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+IHRocmVhZGVkU2Nyb2xsaW5nVHJl
ZSA9IGRvd25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xsaW5nVHJlZSgpKTsKIAog
ICAgIGF1dG8gdHJlZVN0YXRlID0gc2Nyb2xsaW5nU3RhdGVUcmVlKCktPmNvbW1pdChMYXllclJl
cHJlc2VudGF0aW9uOjpQbGF0Zm9ybUxheWVyUmVwcmVzZW50YXRpb24pOworICAgIHRocmVhZGVk
U2Nyb2xsaW5nVHJlZS0+aW5jcmVtZW50UGVuZGluZ0NvbW1pdENvdW50KCk7CisKICAgICBTY3Jv
bGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUsIHRyZWVTdGF0ZSA9
IFdURk1vdmUodHJlZVN0YXRlKV0oKSBtdXRhYmxlIHsKICAgICAgICAgdGhyZWFkZWRTY3JvbGxp
bmdUcmVlLT5jb21taXRUcmVlU3RhdGUoV1RGTW92ZSh0cmVlU3RhdGUpKTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
U3RhdGVOb2RlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1N0YXRlTm9kZU5pY29zaWEuY3BwCmluZGV4IGI1MzI4ZWI0MzcyLi41NWM1
ZTYwNTk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdTdGF0ZU5vZGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1N0YXRlTm9kZU5pY29zaWEuY3BwCkBAIC0yNiwy
MSArMjYsMjMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0
ZU5vZGUuaCIKIAotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgotCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEp
CiAKKyNpbmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIExheWVyUmVwcmVzZW50YXRp
b246OnJldGFpblBsYXRmb3JtTGF5ZXIodm9pZCopCit2b2lkIExheWVyUmVwcmVzZW50YXRpb246
OnJldGFpblBsYXRmb3JtTGF5ZXIodm9pZCogdHlwZWxlc3NMYXllcikKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIGlmIChhdXRvKiBsYXllciA9IG1ha2VQbGF0Zm9ybUxheWVyVHlwZWQo
dHlwZWxlc3NMYXllcikpCisgICAgICAgIGxheWVyLT5yZWYoKTsKIH0KIAotdm9pZCBMYXllclJl
cHJlc2VudGF0aW9uOjpyZWxlYXNlUGxhdGZvcm1MYXllcih2b2lkKikKK3ZvaWQgTGF5ZXJSZXBy
ZXNlbnRhdGlvbjo6cmVsZWFzZVBsYXRmb3JtTGF5ZXIodm9pZCogdHlwZWxlc3NMYXllcikKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChhdXRvKiBsYXllciA9IG1ha2VQbGF0Zm9y
bUxheWVyVHlwZWQodHlwZWxlc3NMYXllcikpCisgICAgICAgIGxheWVyLT5kZXJlZigpOwogfQog
CiBQbGF0Zm9ybUxheWVyKiBMYXllclJlcHJlc2VudGF0aW9uOjptYWtlUGxhdGZvcm1MYXllclR5
cGVkKHZvaWQqIHR5cGVsZXNzTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcApp
bmRleCBjOTBkYmY4MWUyOC4uNzAyMTEyNzJjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWRO
b2RlLmNwcApAQCAtMzAsNyArMzAsMTIgQEAKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
ICYmIFVTRShOSUNPU0lBKQogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcm9s
bGluZ1N0YXRlRml4ZWROb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZS5oIgorI2luY2x1
ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlICJOaWNv
c2lhUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MCwxMiArNTUsNzIgQEAgU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZTo6flNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoKQogICAgIHNjcm9sbGluZ1RyZWUoKS5m
aXhlZE9yU3RpY2t5Tm9kZVJlbW92ZWQoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWRO
b2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYp
Cit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4o
Y29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCiB7CisgICAgYXV0byYgZml4ZWRT
dGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZT4oc3RhdGVOb2RlKTsK
KworICAgIGlmIChmaXhlZFN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpMYXllcikpIHsKKyAgICAgICAgTmljb3NpYTo6UGxhdGZvcm1MYXllciogbGF5ZXIg
PSBmaXhlZFN0YXRlTm9kZS5sYXllcigpOworICAgICAgICBtX3Njcm9sbExheWVyID0gZG93bmNh
c3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOworICAgIH0KKworICAgIGlmIChz
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlOjpWaWV3
cG9ydENvbnN0cmFpbnRzKSkKKyAgICAgICAgbV9jb25zdHJhaW50cyA9IGZpeGVkU3RhdGVOb2Rl
LnZpZXdwb3J0Q29uc3RyYWludHMoKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2Rl
OjphcHBseUxheWVyUG9zaXRpb25zKCkKIHsKKyAgICBhdXRvIGNvbXB1dGVMYXllclBvc2l0aW9u
ID0gWyZdIHsKKyAgICAgICAgRmxvYXRTaXplIG92ZXJmbG93U2Nyb2xsRGVsdGE7CisgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgd3JvbmcgaW4gY29tcGxleCBjYXNlcyB3aGVyZSB0aGUg
Zml4ZWQgZWxlbWVudCBpcyBpbnNpZGUgYSBwb3NpdGlvbmVkIG5vZGUgYXMKKyAgICAgICAgLy8g
ICAgICAgIHRoZSBzY3JvbGwgY29udGFpbmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIHRoZSBzY3Jv
bGxpbmcgdHJlZSBhbmNlc3RvciBvcmRlci4KKyAgICAgICAgZm9yIChhdXRvKiBub2RlID0gcGFy
ZW50KCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnQoKSkgeworICAgICAgICAgICAgaWYgKGlz
PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KCpub2RlKSkgeworICAgICAgICAgICAg
ICAgIC8vIEZpeGVkIG5vZGVzIGFyZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBjb250YWlu
aW5nIGZyYW1lIHNjcm9sbGluZyBub2RlLgorICAgICAgICAgICAgICAgIC8vIFdlIGJhaWwgb3V0
IGFmdGVyIGZpbmRpbmcgb25lLgorICAgICAgICAgICAgICAgIGF1dG8gbGF5b3V0Vmlld3BvcnQg
PSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPigqbm9kZSkubGF5b3V0
Vmlld3BvcnQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jb25zdHJhaW50cy5sYXllclBv
c2l0aW9uRm9yVmlld3BvcnRSZWN0KGxheW91dFZpZXdwb3J0KSAtIG92ZXJmbG93U2Nyb2xsRGVs
dGE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlPigqbm9kZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBUbyBrZWVw
IHRoZSBsYXllciBzdGlsbCBkdXJpbmcgYXN5bmMgc2Nyb2xsaW5nIHdlIGFkanVzdCBieSBob3cg
bXVjaCB0aGUgcG9zaXRpb24gaGFzIGNoYW5nZWQgc2luY2UgbGF5b3V0LgorICAgICAgICAgICAg
ICAgIGF1dG8mIG92ZXJmbG93Tm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGU+KCpub2RlKTsKKyAgICAgICAgICAgICAgICBhdXRvIGxvY2FsRGVsdGEgPSBv
dmVyZmxvd05vZGUubGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkgLSBvdmVyZmxvd05vZGUu
Y3VycmVudFNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3dTY3JvbGxE
ZWx0YSArPSBsb2NhbERlbHRhOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gRmxvYXRQb2ludCgpOworICAgIH07
CisKKyAgICBhdXRvIGxheWVyUG9zaXRpb24gPSBjb21wdXRlTGF5ZXJQb3NpdGlvbigpOworCisg
ICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVlRml4
ZWROb2RlICIgPDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiByZWxhdGVkTm9kZVNjcm9sbFBvc2l0
aW9uRGlkQ2hhbmdlOiB2aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQgIiA8PCBtX2NvbnN0cmFpbnRz
LnZpZXdwb3J0UmVjdEF0TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXllciBwb3MgIiA8PCBtX2Nv
bnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAiIGxheWVyUG9zaXRpb24g
IiA8PCBsYXllclBvc2l0aW9uKTsKKworICAgIEFTU0VSVChtX3Njcm9sbExheWVyKTsKKyAgICBt
X3Njcm9sbExheWVyLT5hY2Nlc3NTdGFnaW5nKAorICAgICAgICAgICAgW3RoaXMsICZsYXllclBv
c2l0aW9uXShOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjpMYXllclN0YXRlJiBzdGF0ZSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5wb3NpdGlvbiA9IGxheWVyUG9zaXRp
b247CisgICAgICAgICAgICAgICAgc3RhdGUuZGVsdGEucG9zaXRpb25DaGFuZ2VkID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmR1bXBQ
cm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlv
ciBiZWhhdmlvcikgY29uc3QKK3sKKyAgICB0cyA8PCAiZml4ZWQgbm9kZSI7CisgICAgU2Nyb2xs
aW5nVHJlZU5vZGU6OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJmaXhlZCBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOworCisjaWYgMCAgICAK
KyAgICBpZiAoYmVoYXZpb3IgJiBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvckluY2x1
ZGVMYXllclBvc2l0aW9ucykgeworICAgICAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBbbV9s
YXllciBib3VuZHNdOworICAgICAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIg
YW5jaG9yUG9pbnRdOworICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gW21fbGF5ZXIgcG9z
aXRpb25dOworICAgICAgICBGbG9hdFBvaW50IGxheWVyVG9wTGVmdCA9IHBvc2l0aW9uIC0gdG9G
bG9hdFNpemUoYW5jaG9yUG9pbnQpICogbGF5ZXJCb3VuZHMuc2l6ZSgpICsgbV9jb25zdHJhaW50
cy5hbGlnbm1lbnRPZmZzZXQoKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJsYXllciB0b3Ag
bGVmdCIsIGxheWVyVG9wTGVmdCk7CisgICAgfQorI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29z
aWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgKaW5kZXggOWY4ZTFlMjUxYmUuLjY4
NWQ5N2RkZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaApAQCAtMzEsNiArMzEsMTMg
QEAKIAogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCiAKKyNpbmNsdWRlICJTY3JvbGxp
bmdDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIE5p
Y29zaWEgeworY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBTY3JvbGxpbmdUcmVlRml4ZWROb2RlIGZpbmFsIDogcHVibGljIFNjcm9sbGlu
Z1RyZWVOb2RlIHsKQEAgLTQzLDggKzUwLDE1IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhcHBseUxheWVyUG9zaXRpb25zKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGR1
bXBQcm9wZXJ0aWVzKFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJl
aGF2aW9yKSBjb25zdCBvdmVycmlkZTsKKworICAgIEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzIG1fY29uc3RyYWludHM7CisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5
ZXI+IG1fc2Nyb2xsTGF5ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfU0NST0xMSU5HX05PREUoU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSwg
aXNGaXhlZE5vZGUoKSkKKwogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVT
RShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhLmNwcAppbmRleCAxY2U0YTFhZGFkOC4uZTMyZjJkZGI4OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3Bw
CkBAIC0zMCw2ICszMCwxMSBAQAogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNF
KE5JQ09TSUEpCiAKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNp
bmNsdWRlICJOaWNvc2lhUGxhdGZvcm1MYXllci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFJlZjxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPiBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTmljb3NpYTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUs
IFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQpAQCAt
NDQsMTIgKzQ5LDkxIEBAIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYShTCiAKIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjp+U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZU5pY29zaWEoKSA9IGRlZmF1bHQ7CiAKLVNjcm9sbGluZ0V2ZW50UmVzdWx0IFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNv
c2lhOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYg
c3RhdGVOb2RlKQoreworICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4oc3RhdGVOb2RlKTsKKyAgICBjb25zdCBhdXRvJiBzY3JvbGxp
bmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4o
c3RhdGVOb2RlKTsKKworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7CisgICAgICAgIE5pY29zaWE6OlBsYXRm
b3JtTGF5ZXIqIGxheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmxheWVyKCk7CisgICAgICAgIG1f
c2Nyb2xsTGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7
CisgICAgfQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xheWVyKSkgeworICAg
ICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKiBsYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5z
Y3JvbGxlZENvbnRlbnRzTGF5ZXIoKTsKKyAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIg
PSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAgfQorICAg
IGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlOjpDb3VudGVyU2Nyb2xsaW5nTGF5ZXIpKSB7CisgICAgICAgIE5p
Y29zaWE6OlBsYXRmb3JtTGF5ZXIqIGxheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmNvdW50ZXJT
Y3JvbGxpbmdMYXllcigpOworICAgICAgICBtX2NvdW50ZXJTY3JvbGxpbmdMYXllciA9IGRvd25j
YXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KGxheWVyKTsKKyAgICB9CisgICAgaWYgKHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGU6Okluc2V0Q2xpcExheWVyKSkgeworICAgICAgICBOaWNvc2lhOjpQbGF0Zm9y
bUxheWVyKiBsYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5pbnNldENsaXBMYXllcigpOworICAg
ICAgICBtX2luc2V0Q2xpcExheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXll
cj4obGF5ZXIpOworICAgIH0KKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q29udGVudFNoYWRvd0xh
eWVyKSkgeworICAgICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKiBsYXllciA9IHNjcm9sbGlu
Z1N0YXRlTm9kZS5jb250ZW50U2hhZG93TGF5ZXIoKTsKKyAgICAgICAgbV9jb250ZW50U2hhZG93
TGF5ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAg
fQorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpIZWFkZXJMYXllcikpIHsKKyAgICAgICAgTmljb3Np
YTo6UGxhdGZvcm1MYXllciogbGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuaGVhZGVyTGF5ZXIo
KTsKKyAgICAgICAgbV9oZWFkZXJMYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9u
TGF5ZXI+KGxheWVyKTsKKyAgICB9CisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3RlckxheWVy
KSkgeworICAgICAgICBOaWNvc2lhOjpQbGF0Zm9ybUxheWVyKiBsYXllciA9IHNjcm9sbGluZ1N0
YXRlTm9kZS5mb290ZXJMYXllcigpOworICAgICAgICBtX2Zvb3RlckxheWVyID0gZG93bmNhc3Q8
Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOworICAgIH0KK30KKwordm9pZCBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxk
cmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQoreworICAgIFNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihzdGF0ZU5v
ZGUpOworCisgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPihzdGF0ZU5vZGUpOworCisgICAgLy8gVXBkYXRlIHRo
ZSBzY3JvbGwgcG9zaXRpb24gYWZ0ZXIgY2hpbGQgbm9kZXMgaGF2ZSBiZWVuIHVwZGF0ZWQsIGJl
Y2F1c2UgdGhleSBuZWVkIHRvIGhhdmUgdXBkYXRlZCB0aGVpciBjb25zdHJhaW50cyBiZWZvcmUg
YW55IHNjcm9sbGluZyBoYXBwZW5zLgorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24pKSB7CisgICAgICAgIGF1dG8gc2Nyb2xsVHlwZSA9IHNjcm9sbGluZ1N0YXRlTm9k
ZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSA/
IFNjcm9sbFR5cGU6OlByb2dyYW1tYXRpYyA6IFNjcm9sbFR5cGU6OlVzZXI7CisgICAgICAgIHNj
cm9sbFRvKHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpLCBzY3Jv
bGxUeXBlKTsKKyAgICB9Cit9CisKK1Njcm9sbGluZ0V2ZW50UmVzdWx0IFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKLSAgICByZXR1cm4gU2Nyb2xsaW5nRXZlbnRSZXN1
bHQ6OkRpZE5vdEhhbmRsZUV2ZW50OworICAgIGlmICghY2FuSGF2ZVNjcm9sbGJhcnMoKSkKKyAg
ICAgICAgcmV0dXJuIFNjcm9sbGluZ0V2ZW50UmVzdWx0OjpEaWROb3RIYW5kbGVFdmVudDsKKwor
ICAgIGlmICh3aGVlbEV2ZW50LmRlbHRhWCgpIHx8IHdoZWVsRXZlbnQuZGVsdGFZKCkpIHsKKyAg
ICAgICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzY3JvbGxlZENvbnRlbnRzTGF5ZXIoKTsKKyAgICAg
ICAgQVNTRVJUKHNjcm9sbExheWVyKTsKKyAgICAgICAgYXV0byYgY29tcG9zaXRpb25MYXllciA9
IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KCpzY3JvbGxMYXllcik7CisKKyAg
ICAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNvbXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2Nv
cGUoKTsKKyAgICAgICAgc2Nyb2xsQnkoeyB3aGVlbEV2ZW50LmRlbHRhWCgpLCAtd2hlZWxFdmVu
dC5kZWx0YVkoKSB9KTsKKyAgICB9CisKKyAgICAvLyBUT0RPOgorICAgIC8vIHNjcm9sbGluZ1Ry
ZWUoKS5zZXRPckNsZWFyTGF0Y2hlZE5vZGUod2hlZWxFdmVudCwgc2Nyb2xsaW5nTm9kZUlEKCkp
OworICAgIC8vIHNjcm9sbGluZ1RyZWUoKS5oYW5kbGVXaGVlbEV2ZW50UGhhc2Uod2hlZWxFdmVu
dC5waGFzZSgpKTsKKyAgICByZXR1cm4gU2Nyb2xsaW5nRXZlbnRSZXN1bHQ6OkRpZEhhbmRsZUV2
ZW50OwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpy
ZXBvc2l0aW9uU2Nyb2xsaW5nTGF5ZXJzKCkKK3sKKyAgICBhdXRvKiBzY3JvbGxMYXllciA9IHNj
cm9sbGVkQ29udGVudHNMYXllcigpOworICAgIEFTU0VSVChzY3JvbGxMYXllcik7CisgICAgYXV0
byYgY29tcG9zaXRpb25MYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+
KCpzY3JvbGxMYXllcik7CisKKyAgICBhdXRvIHNjcm9sbFBvc2l0aW9uID0gY3VycmVudFNjcm9s
bFBvc2l0aW9uKCk7CisKKyAgICBjb21wb3NpdGlvbkxheWVyLmFjY2Vzc1N0YWdpbmcoCisgICAg
ICAgIFsmc2Nyb2xsUG9zaXRpb25dKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3Rh
dGUmIHN0YXRlKQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0ZS5wb3NpdGlvbiA9IC1zY3Jv
bGxQb3NpdGlvbjsKKyAgICAgICAgICAgIHN0YXRlLmRlbHRhLnBvc2l0aW9uQ2hhbmdlZCA9IHRy
dWU7CisgICAgICAgIH0pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVOaWNvc2lhOjphcHBseUxheWVyUG9zaXRpb25zKCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCmluZGV4IDJiNWEyYmUz
YmNlLi5mN2I1NjdlY2E3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU5pY29zaWEuaApAQCAtMzEsNiArMzEsMTIgQEAKIAogI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKIAorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIE5pY29zaWEgeworY2xhc3MgQ29tcG9zaXRpb25MYXllcjsKK30KKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTmljb3NpYSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
IHsKQEAgLTQxLDkgKzQ3LDIxIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVU
eXBlLCBTY3JvbGxpbmdOb2RlSUQpOwogCisgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxk
cmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgY29tbWl0
U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwor
CiAgICAgU2Nyb2xsaW5nRXZlbnRSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVwb3NpdGlvblNjcm9sbGluZ0xh
eWVycygpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHlMYXllclBvc2l0aW9ucygpIG92ZXJyaWRl
OworCisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1fc2Nyb2xsTGF5ZXI7
CisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1fc2Nyb2xsZWRDb250ZW50
c0xheWVyOworICAgIFJlZlB0cjxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX2NvdW50ZXJT
Y3JvbGxpbmdMYXllcjsKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9p
bnNldENsaXBMYXllcjsKKyAgICBSZWZQdHI8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4gbV9j
b250ZW50U2hhZG93TGF5ZXI7CisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+
IG1faGVhZGVyTGF5ZXI7CisgICAgUmVmUHRyPE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+IG1f
Zm9vdGVyTGF5ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVOaWNvc2lh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZU5pY29zaWEuY3BwCmluZGV4IGNlYTcxNDZmMTE4Li45N2Y4ODZhNjgwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlTmljb3Np
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlTmljb3NpYS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJTY3JvbGxpbmdU
cmVlRml4ZWROb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGUu
aCIKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5oIgor
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oIgogI2luY2x1ZGUgIlNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU1LDE4ICs1
NiwxOCBAQCBSZWY8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ1RyZWVOaWNvc2lhOjpjcmVh
dGVTY3JvbGxpbmdUcmVlTm9kZShTY3JvbGxpbmdObwogICAgICAgICByZXR1cm4gU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmNyZWF0ZSgqdGhpcywgbm9kZVR5cGUsIG5v
ZGVJRCk7CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6RnJhbWVIb3N0aW5nOgogICAgICAg
ICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGU6OmNyZWF0ZSgqdGhpcywgbm9k
ZUlEKTsKLSAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVyZmxvdzoKLSAgICAgICAgLy8g
U2hvdWxkIG5vdCBiZSByZWFjaGVkIC0tIGNhdWdodCBieSBBU1NFUlRfTk9UX1JFQUNIRUQoKSBi
ZWxvdy4KKyAgICBjYXNlIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVyZmxvdzogLy8gRklYTUUKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6Rml4ZWQ6CiAgICAgICAg
IHJldHVybiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CiAg
ICAgY2FzZSBTY3JvbGxpbmdOb2RlVHlwZTo6U3RpY2t5OgogICAgICAgICByZXR1cm4gU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKICAgICBjYXNlIFNjcm9s
bGluZ05vZGVUeXBlOjpQb3NpdGlvbmVkOgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlOjpjcmVh
dGUoKnRoaXMsIG5vZGVJRCk7CiAgICAgfQogCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAvLyBGSVhNRTogQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFNj
cm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44ZjZjNWI4NTBiMAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmNwcApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVQb3NpdGlv
bmVkTm9kZS5oIgorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEp
CisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIu
aCIKKyNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmgiCisjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUmVmPFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZT4gU2Nyb2xsaW5nVHJl
ZVBvc2l0aW9uZWROb2RlOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Ny
b2xsaW5nTm9kZUlEIG5vZGVJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxp
bmdUcmVlUG9zaXRpb25lZE5vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Cit9CisKK1Njcm9s
bGluZ1RyZWVQb3NpdGlvbmVkTm9kZTo6U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlKFNjcm9s
bGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBT
Y3JvbGxpbmdUcmVlTm9kZShzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZTo6UG9zaXRp
b25lZCwgbm9kZUlEKQoreworfQorCitTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGU6On5TY3Jv
bGxpbmdUcmVlUG9zaXRpb25lZE5vZGUoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgU2Nyb2xsaW5nVHJl
ZVBvc2l0aW9uZWROb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlTm9kZSYgc3RhdGVOb2RlKQoreworICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlUG9zaXRp
b25lZE5vZGUmIHBvc2l0aW9uZWRTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVBv
c2l0aW9uZWROb2RlPihzdGF0ZU5vZGUpOworCisgICAgaWYgKHBvc2l0aW9uZWRTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7CisgICAgICAg
IE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqIGxheWVyID0gcG9zaXRpb25lZFN0YXRlTm9kZS5sYXll
cigpOworICAgICAgICBtX3Njcm9sbExheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRp
b25MYXllcj4obGF5ZXIpOworICAgIH0KKworICAgIGlmIChwb3NpdGlvbmVkU3RhdGVOb2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlOjpSZWxhdGVkT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlcykpCisgICAgICAgIG1fcmVsYXRlZE92ZXJmbG93U2Nyb2xsaW5n
Tm9kZXMgPSBwb3NpdGlvbmVkU3RhdGVOb2RlLnJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVz
KCk7CisKKyAgICBpZiAocG9zaXRpb25lZFN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZTo6TGF5b3V0Q29uc3RyYWludERhdGEpKQorICAgICAg
ICBtX2NvbnN0cmFpbnRzID0gcG9zaXRpb25lZFN0YXRlTm9kZS5sYXlvdXRDb25zdHJhaW50cygp
OworCisgICAgaWYgKCFtX3JlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzLmlzRW1wdHkoKSkK
KyAgICAgICAgc2Nyb2xsaW5nVHJlZSgpLmFjdGl2ZVBvc2l0aW9uZWROb2RlcygpLmFkZCgqdGhp
cyk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlOjphcHBseUxheWVyUG9z
aXRpb25zKCkKK3sKKyAgICBhdXRvIGRlbHRhID0KKyAgICAgICAgW3RoaXNdIHsKKyAgICAgICAg
ICAgIEZsb2F0U2l6ZSBkZWx0YTsKKyAgICAgICAgICAgIGZvciAoYXV0byBub2RlSUQgOiBtX3Jl
bGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8q
IG5vZGUgPSBzY3JvbGxpbmdUcmVlKCkubm9kZUZvcklEKG5vZGVJRCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KG5vZGUp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBvdmVyZmxvd05vZGUgPSBkb3duY2Fz
dDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPigqbm9kZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBkZWx0YSArPSBvdmVyZmxvd05vZGUuc2Nyb2xsRGVsdGFTaW5jZUxhc3RD
b21taXQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtZGVsdGE7CisgICAgICAgIH0oKTsKKyAgICBG
bG9hdFBvaW50IGxheWVyUG9zaXRpb24gPSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExh
c3RMYXlvdXQoKSAtIGRlbHRhOworCisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3Ry
ZWFtIDw8ICJTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUgIiA8PCBzY3JvbGxpbmdOb2RlSUQo
KSA8PCAiIGFwcGx5TGF5ZXJQb3NpdGlvbnM6IG92ZXJmbG93IGRlbHRhICIgPDwgc2Nyb2xsT2Zm
c2V0U2luY2VMYXN0Q29tbWl0IDw8ICIgbW92aW5nIGxheWVyIHRvICIgPDwgbGF5ZXJQb3NpdGlv
bik7CisKKyAgICBtX3Njcm9sbExheWVyLT5hY2Nlc3NTdGFnaW5nKAorICAgICAgICAgICAgW3Ro
aXMsICZsYXllclBvc2l0aW9uXShOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyOjpMYXllclN0YXRl
JiBzdGF0ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5wb3NpdGlvbiA9
IGxheWVyUG9zaXRpb24gLSBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOworICAgICAg
ICAgICAgICAgIHN0YXRlLmRlbHRhLnBvc2l0aW9uQ2hhbmdlZCA9IHRydWU7CisgICAgICAgICAg
ICB9KTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGU6OmR1bXBQcm9wZXJ0
aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvciBiZWhh
dmlvcikgY29uc3QKK3sKKyAgICB0cyA8PCAicG9zaXRpb25lZCBub2RlIjsKKyAgICBTY3JvbGxp
bmdUcmVlTm9kZTo6ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKKworICAgIHRzLmR1bXBQ
cm9wZXJ0eSgibGF5b3V0IGNvbnN0cmFpbnRzIiwgbV9jb25zdHJhaW50cyk7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJyZWxhdGVkIG92ZXJmbG93IG5vZGVzIiwgbV9yZWxhdGVkT3ZlcmZsb3dTY3Jv
bGxpbmdOb2Rlcy5zaXplKCkpOworCisgICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVU
cmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTm9kZUlEcykgeworICAgICAgICBpZiAoIW1fcmVsYXRl
ZE92ZXJmbG93U2Nyb2xsaW5nTm9kZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBUZXh0U3Ry
ZWFtOjpHcm91cFNjb3BlIHNjb3BlKHRzKTsKKyAgICAgICAgICAgIHRzIDw8ICJvdmVyZmxvdyBu
b2RlcyI7CisgICAgICAgICAgICBmb3IgKGF1dG8gbm9kZUlEIDogbV9yZWxhdGVkT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlcykKKyAgICAgICAgICAgICAgICB0cyA8PCAiXG4iIDw8IGluZGVudCA8PCAi
bm9kZUlEICIgPDwgbm9kZUlEOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklD
T1NJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44NWUxYzc3OGJlMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVBvc2l0
aW9uZWROb2RlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
CisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKKworI2luY2x1
ZGUgIlNjcm9sbGluZ0NvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUu
aCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBOaWNvc2lhIHsKK2NsYXNz
IENvbXBvc2l0aW9uTGF5ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Ny
b2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPFNjcm9sbGluZ1RyZWVQb3NpdGlvbmVkTm9kZT4gY3JlYXRl
KFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworICAgIHZpcnR1YWwgflNjcm9sbGlu
Z1RyZWVQb3NpdGlvbmVkTm9kZSgpOworCisgICAgY29uc3QgVmVjdG9yPFNjcm9sbGluZ05vZGVJ
RD4mIHJlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZWxh
dGVkT3ZlcmZsb3dTY3JvbGxpbmdOb2RlczsgfQorCitwcml2YXRlOgorICAgIFNjcm9sbGluZ1Ry
ZWVQb3NpdGlvbmVkTm9kZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAg
IHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUm
KSBvdmVycmlkZTsKKworICAgIHZvaWQgYXBwbHlMYXllclBvc2l0aW9ucygpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0
ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBWZWN0b3I8U2Nyb2xs
aW5nTm9kZUlEPiBtX3JlbGF0ZWRPdmVyZmxvd1Njcm9sbGluZ05vZGVzOworICAgIEFic29sdXRl
UG9zaXRpb25Db25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOworICAgIFJlZlB0cjxOaWNvc2lhOjpD
b21wb3NpdGlvbkxheWVyPiBtX3Njcm9sbExheWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1NDUk9MTElOR19OT0RFKFNjcm9sbGluZ1Ry
ZWVQb3NpdGlvbmVkTm9kZSwgaXNQb3NpdGlvbmVkTm9kZSgpKQorCisjZW5kaWYgLy8gRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuY3BwCmluZGV4IGQ2M2VhYWVjZjJjLi4zMjBlOTE1MGZhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5jcHAKQEAgLTMwLDcgKzMwLDEzIEBACiAKICNpZiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKSAmJiBVU0UoTklDT1NJQSkKIAorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdU
cmVlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgorI2lu
Y2x1ZGUgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlICJO
aWNvc2lhUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MCwxMiArNTYsNjAgQEAgU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGU6On5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSgpCiAgICAgc2Nyb2xsaW5nVHJl
ZSgpLmZpeGVkT3JTdGlja3lOb2RlUmVtb3ZlZCgpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRl
Tm9kZSYpCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNo
aWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQogeworICAgIGF1dG8m
IHN0aWNreVN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZT4oc3Rh
dGVOb2RlKTsKKworICAgIGlmIChzdGlja3lTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKSB7CisgICAgICAgIE5pY29zaWE6OlBsYXRmb3JtTGF5
ZXIqIGxheWVyID0gc3RpY2t5U3RhdGVOb2RlLmxheWVyKCk7CisgICAgICAgIG1fc2Nyb2xsTGF5
ZXIgPSBkb3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CisgICAgfQor
CisgICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKKyAgICAgICAgbV9jb25zdHJhaW50cyA9IHN0
aWNreVN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGU6OmFwcGx5TGF5ZXJQb3NpdGlvbnMoKQogeworICAgIEZsb2F0UmVjdCBj
b25zdHJhaW5pbmdSZWN0OworCisgICAgYXV0byogZW5jbG9zaW5nU2Nyb2xsaW5nTm9kZSA9IHBh
cmVudCgpOworICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPihl
bmNsb3NpbmdTY3JvbGxpbmdOb2RlKSkKKyAgICAgICAgY29uc3RyYWluaW5nUmVjdCA9IEZsb2F0
UmVjdChkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPigqZW5jbG9z
aW5nU2Nyb2xsaW5nTm9kZSkuY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIG1fY29uc3RyYWludHMu
Y29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91dCgpLnNpemUoKSk7CisgICAgZWxzZSBpZiAoaXM8
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oZW5jbG9zaW5nU2Nyb2xsaW5nTm9kZSkp
CisgICAgICAgIGNvbnN0cmFpbmluZ1JlY3QgPSBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlPihlbmNsb3NpbmdTY3JvbGxpbmdOb2RlKS0+bGF5b3V0Vmlld3BvcnQoKTsK
KyAgICBlbHNlCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0UG9pbnQgbGF5ZXJQb3NpdGlv
biA9IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkZvckNvbnN0cmFpbmluZ1JlY3QoY29uc3Ry
YWluaW5nUmVjdCkgLSBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOworCisgICAgTE9H
X1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8ICIgY29uc3RyYWluaW5nUmVjdCAiIDw8IGNvbnN0
cmFpbmluZ1JlY3QgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0ICIgPDwgbV9jb25z
dHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxheWVyIHBv
cyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIDw8ICIgbGF5
ZXJQb3NpdGlvbiAiIDw8IGxheWVyUG9zaXRpb24pOworCisgICAgQVNTRVJUKG1fc2Nyb2xsTGF5
ZXIpOworICAgIG1fc2Nyb2xsTGF5ZXItPmFjY2Vzc1N0YWdpbmcoCisgICAgICAgICAgICBbdGhp
cywgJmxheWVyUG9zaXRpb25dKE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI6OkxheWVyU3RhdGUm
IHN0YXRlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0YXRlLnBvc2l0aW9uID0g
bGF5ZXJQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICBzdGF0ZS5kZWx0YS5wb3NpdGlvbkNoYW5n
ZWQgPSB0cnVlOworICAgICAgICAgICAgfSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHRCZWhhdmlvciBiZWhhdmlvcikgY29uc3QKK3sKKyAgICB0cyA8PCAic3RpY2t5IG5vZGUi
OworCisgICAgU2Nyb2xsaW5nVHJlZU5vZGU6OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7
CisgICAgdHMuZHVtcFByb3BlcnR5KCJzdGlja3kgY29uc3RyYWludHMiLCBtX2NvbnN0cmFpbnRz
KTsKKworI2lmIDAKKyAgICBpZiAoYmVoYXZpb3IgJiBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRC
ZWhhdmlvckluY2x1ZGVMYXllclBvc2l0aW9ucykgeworICAgICAgICBGbG9hdFJlY3QgbGF5ZXJC
b3VuZHMgPSBbbV9sYXllciBib3VuZHNdOworICAgICAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50
ID0gW21fbGF5ZXIgYW5jaG9yUG9pbnRdOworICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0g
W21fbGF5ZXIgcG9zaXRpb25dOworICAgICAgICBGbG9hdFBvaW50IGxheWVyVG9wTGVmdCA9IHBv
c2l0aW9uIC0gdG9GbG9hdFNpemUoYW5jaG9yUG9pbnQpICogbGF5ZXJCb3VuZHMuc2l6ZSgpICsg
bV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJsYXllciB0b3AgbGVmdCIsIGxheWVyVG9wTGVmdCk7CisgICAgfQorI2VuZGlmCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaAppbmRleCBh
M2QxOTFlYTliOS4uZjk1MjE0NzQxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgK
QEAgLTMxLDYgKzMxLDEzIEBACiAKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVlTm9kZS5oIgogCisj
aW5jbHVkZSAiU2Nyb2xsaW5nQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBOaWNvc2lhIHsKK2NsYXNzIENvbXBvc2l0aW9uTGF5ZXI7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUgZmluYWwg
OiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgewpAQCAtNDQsOCArNTEsMTQgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVO
b2RlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcHBseUxheWVyUG9zaXRpb25zKCkgb3ZlcnJpZGU7
CiAKKyAgICB2b2lkIGR1bXBQcm9wZXJ0aWVzKFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbGluZ1N0
YXRlVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsKKworICAgIFJlZlB0cjxOaWNv
c2lhOjpDb21wb3NpdGlvbkxheWVyPiBtX3Njcm9sbExheWVyOworICAgIFN0aWNreVBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1NDUk9MTElOR19OT0RFKFNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlLCBpc1N0aWNreU5vZGUoKSkKKwogI2VuZGlmIC8vIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5o
CmluZGV4IDNjY2ZlNjA5Mzg2Li44YzdmNjYxNmFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhUGxhdGZvcm1MYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYVBsYXRmb3Jt
TGF5ZXIuaApAQCAtMjc3LDYgKzI3NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIGZ1bmN0b3IobV9z
dGF0ZS5jb21taXR0ZWQpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
dm9pZCBhY2Nlc3NTdGFnaW5nKGNvbnN0IFQmIGZ1bmN0b3IpCisgICAgeworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihQbGF0Zm9ybUxheWVyOjptX3N0YXRlLmxvY2spOworICAgICAgICBmdW5j
dG9yKG1fc3RhdGUuc3RhZ2luZyk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
ICAgICB2b2lkIGFjY2Vzc0NvbW1pdHRlZChjb25zdCBUJiBmdW5jdG9yKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
aW5kZXggMTcxODEzMzY3OTUuLmRkZTkxM2U3M2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMjM4LDYgKzIzOCwx
NiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0UG9zaXRpb24oY29uc3QgRmxv
YXRQb2ludCYgcCkKICAgICBkaWRDaGFuZ2VHZW9tZXRyeSgpOwogfQogCit2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c3luY1Bvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHApCit7Cisg
ICAgaWYgKHBvc2l0aW9uKCkgPT0gcCkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NM
YXllcjo6c2V0UG9zaXRpb24ocCk7CisgICAgbV9uaWNvc2lhLmRlbHRhLnBvc2l0aW9uQ2hhbmdl
ZCA9IHRydWU7CisgICAgc2V0U2hvdWxkVXBkYXRlVmlzaWJsZVJlY3QoKTsKK30KKwogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQz
RCYgcCkKIHsKICAgICBpZiAoYW5jaG9yUG9pbnQoKSA9PSBwKQpAQCAtMTMwMiw2ICsxMzEyLDEx
IEBAIGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp1c2VzQ29udGVudHNMYXllcigpIGNv
bnN0CiAgICAgcmV0dXJuIG1fbmljb3NpYS5jb250ZW50TGF5ZXIgfHwgbV9jb21wb3NpdGVkSW1h
Z2U7CiB9CiAKK1BsYXRmb3JtTGF5ZXIqIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cGxhdGZv
cm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbmljb3NpYS5sYXllci5nZXQoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FOSU1B
VEVEQkFDS0lOR1NUT1JFQ0xJRU5UKFdlYkNvcmU6OkNvb3JkaW5hdGVkQW5pbWF0ZWRCYWNraW5n
U3RvcmVDbGllbnQsIHR5cGUoKSA9PSBOaWNvc2lhOjpBbmltYXRlZEJhY2tpbmdTdG9yZUNsaWVu
dDo6VHlwZTo6Q29vcmRpbmF0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggZjJkN2NmM2QxYTkuLmM0ZTdmNDhkOTkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5oCkBAIC03Myw2ICs3Myw3IEBAIHB1YmxpYzoKICAgICBib29sIHJlcGxhY2VDaGlsZChHcmFw
aGljc0xheWVyKiwgUmVmPEdyYXBoaWNzTGF5ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVt
b3ZlRnJvbVBhcmVudCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxv
YXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgc3luY1Bvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQz
RCYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBGbG9hdFNpemUmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92
ZXJyaWRlOwpAQCAtMTA5LDYgKzExMCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWVBbmlt
YXRpb25zKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92
ZXJyaWRlOwogCisjaWYgVVNFKE5JQ09TSUEpCisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKICAgICB2b2lkIHN5bmNQZW5kaW5nU3Rh
dGVDaGFuZ2VzSW5jbHVkaW5nU3ViTGF5ZXJzKCk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50QnVm
ZmVyc0luY2x1ZGluZ1N1YkxheWVycygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJFdmVudC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnQuaAppbmRleCA3
ZThiMDE4NjVkMS4uYzM2MTAwY2Y1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnQuaApAQCAtMTg4
LDcgKzE4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQKICAg
ICB9OwogCi0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9S
TShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgZW51bSBQaGFz
ZSB7CiAgICAgICAgIFBoYXNlTm9uZSAgICAgICAgPSAwLAogICAgICAgICBQaGFzZUJlZ2FuICAg
ICAgID0gMSA8PCAwLApAQCAtMjE1LDcgKzIxNSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUgd2hlZWxUaWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxUaWNrczsg
fQogICAgIEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8R3JhbnVsYXJpdHk+KG1fZ3JhbnVsYXJpdHkpOyB9CiAgICAgYm9vbCBkaXJlY3Rpb25JbnZl
cnRlZEZyb21EZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbkludmVydGVkRnJvbURl
dmljZTsgfQotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIFBoYXNlIHBo
YXNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UGhhc2U+KG1fcGhhc2UpOyB9CiAgICAg
UGhhc2UgbW9tZW50dW1QaGFzZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFBoYXNlPiht
X21vbWVudHVtUGhhc2UpOyB9CiAjZW5kaWYKQEAgLTIzNyw3ICsyMzcsNyBAQCBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3doZWVsVGlja3M7CiAgICAgdWludDMyX3QgbV9ncmFu
dWxhcml0eTsgLy8gR3JhbnVsYXJpdHkKICAgICBib29sIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9t
RGV2aWNlOwotI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIHVpbnQzMl90
IG1fcGhhc2UgeyBQaGFzZTo6UGhhc2VOb25lIH07CiAgICAgdWludDMyX3QgbV9tb21lbnR1bVBo
YXNlIHsgUGhhc2U6OlBoYXNlTm9uZSB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGUyMDhhNWM1NWQ3Li5m
ZTBjMTYwYjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9Q
YWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9Q
YWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IFBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbChXS1dQRTo6VmlldyYgdmlldykKICAgICA6
IG1fdmlldyh2aWV3KQotICAgICwgbV9zY3JvbGxHZXN0dXJlQ29udHJvbGxlcihtYWtlVW5pcXVl
PFNjcm9sbEdlc3R1cmVDb250cm9sbGVyPigpKQorICAgICwgbV9zY3JvbGxHZXN0dXJlQ29udHJv
bGxlcihtX3ZpZXcuc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIoKSkKIHsKIH0KIApAQCAtMjEyLDgg
KzIxMiw4IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBO
YXRpdmVXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50LCBiCiAKICAgICBhdXRvJiBwYWdlID0gbV92
aWV3LnBhZ2UoKTsKIAotICAgIGlmIChtX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyLT5oYW5kbGVF
dmVudCh0b3VjaFBvaW50KSkgewotICAgICAgICBzdHJ1Y3Qgd3BlX2lucHV0X2F4aXNfZXZlbnQq
IGF4aXNFdmVudCA9IG1fc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXItPmF4aXNFdmVudCgpOworICAg
IGlmIChtX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmhhbmRsZUV2ZW50KHRvdWNoUG9pbnQpKSB7
CisgICAgICAgIHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCogYXhpc0V2ZW50ID0gbV9zY3Jv
bGxHZXN0dXJlQ29udHJvbGxlci5heGlzRXZlbnQoKTsKICAgICAgICAgaWYgKGF4aXNFdmVudC0+
dHlwZSAhPSB3cGVfaW5wdXRfYXhpc19ldmVudF90eXBlX251bGwpCiAgICAgICAgICAgICBwYWdl
LmhhbmRsZVdoZWVsRXZlbnQoV2ViS2l0OjpOYXRpdmVXZWJXaGVlbEV2ZW50KGF4aXNFdmVudCwg
bV92aWV3LnBhZ2UoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAppbmRl
eCAxNjgyMDM3NzMxNS4uOThhYWZmZTAzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTE2MSw4ICsxNjEsNyBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbigpIG92ZXJyaWRlOwogCiAgICAgV0tXUEU6OlZpZXcmIG1fdmlldzsK
LQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4gbV9zY3JvbGxH
ZXN0dXJlQ29udHJvbGxlcjsKKyAgICBTY3JvbGxHZXN0dXJlQ29udHJvbGxlciYgbV9zY3JvbGxH
ZXN0dXJlQ29udHJvbGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250
cm9sbGVyLmNwcAppbmRleCAxZTYxM2FlZTRkMS4uMjQwMTUyOTk0NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvU2Nyb2xsR2VzdHVyZUNvbnRy
b2xsZXIuY3BwCkBAIC0yNywxOSArMjcsNDAgQEAKICNpbmNsdWRlICJTY3JvbGxHZXN0dXJlQ29u
dHJvbGxlci5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KKyNpbmNsdWRlIDx3
dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3JpdHkuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisjaW5j
bHVkZSA8bnVtZXJpYz4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1Njcm9sbEdlc3R1cmVDb250
cm9sbGVyOjpDbGllbnQ6On5DbGllbnQoKSA9IGRlZmF1bHQ7CisKK1Njcm9sbEdlc3R1cmVDb250
cm9sbGVyOjpTY3JvbGxHZXN0dXJlQ29udHJvbGxlcihDbGllbnQmIGNsaWVudCkKKyAgICA6IG1f
Y2xpZW50KGNsaWVudCkKK3sKKyAgICBtX2tpbmV0aWNzLnRpbWVyID0gc3RkOjptYWtlX3VuaXF1
ZTxSdW5Mb29wOjpUaW1lcjxTY3JvbGxHZXN0dXJlQ29udHJvbGxlcj4+KFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJlNjcm9sbEdlc3R1cmVDb250cm9sbGVyOjpkaXNwYXRjaENhbGxiYWNrKTsKKyAg
ICBtX2tpbmV0aWNzLnRpbWVyLT5zZXRQcmlvcml0eShSdW5Mb29wU291cmNlUHJpb3JpdHk6Okxh
eWVyRmx1c2hUaW1lcik7Cit9CisKK1Njcm9sbEdlc3R1cmVDb250cm9sbGVyOjp+U2Nyb2xsR2Vz
dHVyZUNvbnRyb2xsZXIoKQoreworfQorCiBib29sIFNjcm9sbEdlc3R1cmVDb250cm9sbGVyOjpo
YW5kbGVFdmVudChjb25zdCBzdHJ1Y3Qgd3BlX2lucHV0X3RvdWNoX2V2ZW50X3JhdyogdG91Y2hQ
b2ludCkKIHsKICAgICBzd2l0Y2ggKHRvdWNoUG9pbnQtPnR5cGUpIHsKICAgICBjYXNlIHdwZV9p
bnB1dF90b3VjaF9ldmVudF90eXBlX2Rvd246Ci0gICAgICAgIG1fc3RhcnQudGltZSA9IHRvdWNo
UG9pbnQtPnRpbWU7Ci0gICAgICAgIG1fc3RhcnQueCA9IHRvdWNoUG9pbnQtPng7Ci0gICAgICAg
IG1fc3RhcnQueSA9IHRvdWNoUG9pbnQtPnk7Ci0gICAgICAgIG1fb2Zmc2V0LnggPSB0b3VjaFBv
aW50LT54OwotICAgICAgICBtX29mZnNldC55ID0gdG91Y2hQb2ludC0+eTsKKyAgICB7CisgICAg
ICAgIGludDMyX3QgeCA9IHRvdWNoUG9pbnQtPng7CisgICAgICAgIGludDMyX3QgeSA9IHRvdWNo
UG9pbnQtPnk7CisgICAgICAgIG1fc3RhcnQgPSB7IHRvdWNoUG9pbnQtPnRpbWUsIHgsIHkgfTsK
KyAgICAgICAgbV9vZmZzZXQgPSB7IHgsIHkgfTsKKyAgICAgICAgbV9raW5ldGljcy5sYXN0ID0g
eyB0b3VjaFBvaW50LT50aW1lLCB4LCB5IH07CisgICAgICAgIG1fa2luZXRpY3MudmVsb2NpdHkg
PSB7IH07CisgICAgICAgIG1fa2luZXRpY3MuYXBwbGljYXRpb24gPSB7IH07CisgICAgICAgIG1f
a2luZXRpY3MudGltZXItPnN0b3AoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAg
ICBjYXNlIHdwZV9pbnB1dF90b3VjaF9ldmVudF90eXBlX21vdGlvbjoKICAgICAgICAgaWYgKCFt
X2hhbmRsaW5nKSB7CiAgICAgICAgICAgICBpbnQzMl90IGRlbHRhWCA9IHRvdWNoUG9pbnQtPngg
LSBtX3N0YXJ0Lng7CkBAIC00OSw3ICs3MCw3IEBAIGJvb2wgU2Nyb2xsR2VzdHVyZUNvbnRyb2xs
ZXI6OmhhbmRsZUV2ZW50KGNvbnN0IHN0cnVjdCB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfcmF3CiAg
ICAgICAgICAgICBpbnQgcGl4ZWxzUGVyTGluZVN0ZXAgPSBXZWJDb3JlOjpTY3JvbGxiYXI6OnBp
eGVsc1BlckxpbmVTdGVwKCk7CiAgICAgICAgICAgICBtX2hhbmRsaW5nID0gc3RkOjphYnMoZGVs
dGFYKSA+PSBwaXhlbHNQZXJMaW5lU3RlcAogICAgICAgICAgICAgICAgIHx8IHN0ZDo6YWJzKGRl
bHRhWSkgPj0gcGl4ZWxzUGVyTGluZVN0ZXAKLSAgICAgICAgICAgICAgICB8fCBkZWx0YVRpbWUg
Pj0gMjAwOworICAgICAgICAgICAgICAgIHx8IGRlbHRhVGltZSA+PSA2NDsKICAgICAgICAgfQog
ICAgICAgICBpZiAobV9oYW5kbGluZykgewogICAgICAgICAgICAgbV9heGlzRXZlbnQgPSB7CkBA
IC01OSw4ICs4MCwyNSBAQCBib29sIFNjcm9sbEdlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVFdmVu
dChjb25zdCBzdHJ1Y3Qgd3BlX2lucHV0X3RvdWNoX2V2ZW50X3JhdwogICAgICAgICAgICAgfTsK
ICAgICAgICAgICAgIG1fb2Zmc2V0LnggPSB0b3VjaFBvaW50LT54OwogICAgICAgICAgICAgbV9v
ZmZzZXQueSA9IHRvdWNoUG9pbnQtPnk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBhdXRvJiBsYXN0ID0gbV9raW5ldGljcy5sYXN0OworICAgICAgICAgICAgICAgIGF1dG8mIHZl
bG9jaXR5ID0gbV9raW5ldGljcy52ZWxvY2l0eTsKKyAgICAgICAgICAgICAgICBzdGQ6OnJvdGF0
ZSh2ZWxvY2l0eS54LmJlZ2luKCksIHZlbG9jaXR5LnguYmVnaW4oKSArIDEsIHZlbG9jaXR5Lngu
ZW5kKCkpOworICAgICAgICAgICAgICAgIHN0ZDo6cm90YXRlKHZlbG9jaXR5LnkuYmVnaW4oKSwg
dmVsb2NpdHkueS5iZWdpbigpICsgMSwgdmVsb2NpdHkueS5lbmQoKSk7CisgICAgICAgICAgICAg
ICAgc3RkOjpyb3RhdGUodmVsb2NpdHkudGltZS5iZWdpbigpLCB2ZWxvY2l0eS50aW1lLmJlZ2lu
KCkgKyAxLCB2ZWxvY2l0eS50aW1lLmVuZCgpKTsKKworICAgICAgICAgICAgICAgIHZlbG9jaXR5
LnguYmFjaygpID0gdG91Y2hQb2ludC0+eCAtIGxhc3QueDsKKyAgICAgICAgICAgICAgICB2ZWxv
Y2l0eS55LmJhY2soKSA9IHRvdWNoUG9pbnQtPnkgLSBsYXN0Lnk7CisgICAgICAgICAgICAgICAg
dmVsb2NpdHkudGltZS5iYWNrKCkgPSB0b3VjaFBvaW50LT50aW1lIC0gbGFzdC50aW1lOworCisg
ICAgICAgICAgICAgICAgbGFzdCA9IHsgdG91Y2hQb2ludC0+dGltZSwgdG91Y2hQb2ludC0+eCwg
dG91Y2hQb2ludC0+eSB9OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQorCisgICAgICAgIG1fa2luZXRpY3MubGFzdCA9IHsgdG91Y2hQb2ludC0+
dGltZSwgdG91Y2hQb2ludC0+eCwgdG91Y2hQb2ludC0+eSB9OwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgY2FzZSB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfdHlwZV91cDoKICAgICAgICAgaWYg
KG1faGFuZGxpbmcpIHsKQEAgLTY5LDYgKzEwNywyMCBAQCBib29sIFNjcm9sbEdlc3R1cmVDb250
cm9sbGVyOjpoYW5kbGVFdmVudChjb25zdCBzdHJ1Y3Qgd3BlX2lucHV0X3RvdWNoX2V2ZW50X3Jh
dwogICAgICAgICAgICAgICAgIHdwZV9pbnB1dF9heGlzX2V2ZW50X3R5cGVfbnVsbCwKICAgICAg
ICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwCiAgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICBhdXRvJiB2ZWxvY2l0eSA9IG1fa2luZXRpY3MudmVsb2NpdHk7CisgICAgICAgICAgICB1aW50
MzJfdCBhY2N1bXVsYXRlZFRpbWUgPSBzdGQ6OmFjY3VtdWxhdGUodmVsb2NpdHkudGltZS5iZWdp
bigpLCB2ZWxvY2l0eS50aW1lLmVuZCgpLCAwKTsKKyAgICAgICAgICAgIGludDMyX3QgYWNjdW11
bGF0ZWRYID0gc3RkOjphY2N1bXVsYXRlKHZlbG9jaXR5LnguYmVnaW4oKSwgdmVsb2NpdHkueC5l
bmQoKSwgMCk7CisgICAgICAgICAgICBpbnQzMl90IGFjY3VtdWxhdGVkWSA9IHN0ZDo6YWNjdW11
bGF0ZSh2ZWxvY2l0eS55LmJlZ2luKCksIHZlbG9jaXR5LnkuZW5kKCksIDApOworICAgICAgICAg
ICAgZG91YmxlIHRyYWplY3RvcnlYID0gMTAwMC4wICogYWNjdW11bGF0ZWRYIC8gYWNjdW11bGF0
ZWRUaW1lOworICAgICAgICAgICAgZG91YmxlIHRyYWplY3RvcnlZID0gMTAwMC4wICogYWNjdW11
bGF0ZWRZIC8gYWNjdW11bGF0ZWRUaW1lOworCisgICAgICAgICAgICBtX2tpbmV0aWNzLmFwcGxp
Y2F0aW9uID0geworICAgICAgICAgICAgICAgICAgICBnX2dldF9tb25vdG9uaWNfdGltZSgpLCB0
b3VjaFBvaW50LT50aW1lLCB0b3VjaFBvaW50LT50aW1lLAorICAgICAgICAgICAgICAgICAgICB7
IG1fc3RhcnQueCwgdHJhamVjdG9yeVgsIHN0ZDo6YWJzKHRyYWplY3RvcnlYICogMC4yKSB9LAor
ICAgICAgICAgICAgICAgICAgICB7IG1fc3RhcnQueSwgdHJhamVjdG9yeVksIHN0ZDo6YWJzKHRy
YWplY3RvcnlZICogMC4yKSB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIG1fa2lu
ZXRpY3MudGltZXItPnN0YXJ0T25lU2hvdChTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKDE1KSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC03Nyw0ICsxMjksNDIgQEAgYm9vbCBTY3JvbGxHZXN0dXJlQ29udHJvbGxlcjo6aGFu
ZGxlRXZlbnQoY29uc3Qgc3RydWN0IHdwZV9pbnB1dF90b3VjaF9ldmVudF9yYXcKICAgICB9CiB9
CiAKK3ZvaWQgU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI6OmRpc3BhdGNoQ2FsbGJhY2soKQorewor
ICAgIHVpbnQzMl90IHRpbWVPZmZzZXQgPSAoZ19nZXRfbW9ub3RvbmljX3RpbWUoKSAtIG1fa2lu
ZXRpY3MuYXBwbGljYXRpb24uYmFzZU1vbm90b25pY1RpbWUpIC8gMTAwMDsKKyAgICB1aW50MzJf
dCB0aW1lID0gbV9raW5ldGljcy5hcHBsaWNhdGlvbi5iYXNlVGltZSArIHRpbWVPZmZzZXQ7Cisg
ICAgdWludDMyX3QgdGltZURlbHRhID0gdGltZSAtIG1fa2luZXRpY3MuYXBwbGljYXRpb24ubGFz
dFRpbWU7CisgICAgbV9raW5ldGljcy5hcHBsaWNhdGlvbi5sYXN0VGltZSA9IHRpbWU7CisKKyAg
ICBkb3VibGUgdHJhamVjdG9yeVhWYWx1ZSA9IDA7CisgICAgaWYgKHRpbWVPZmZzZXQgPCBtX2tp
bmV0aWNzLmFwcGxpY2F0aW9uLnguZHVyYXRpb24pIHsKKyAgICAgICAgdHJhamVjdG9yeVhWYWx1
ZSA9IC1zdGQ6OnBvdyhkb3VibGUodGltZU9mZnNldCkgLyBtX2tpbmV0aWNzLmFwcGxpY2F0aW9u
LnguZHVyYXRpb24sIDIpICsgMTsKKyAgICAgICAgdHJhamVjdG9yeVhWYWx1ZSA9IHN0ZDo6bWF4
PGRvdWJsZT4odHJhamVjdG9yeVhWYWx1ZSwgMCk7CisgICAgfQorCisgICAgZG91YmxlIHRyYWpl
Y3RvcnlZVmFsdWUgPSAwOworICAgIGlmICh0aW1lT2Zmc2V0IDwgbV9raW5ldGljcy5hcHBsaWNh
dGlvbi55LmR1cmF0aW9uKSB7CisgICAgICAgIHRyYWplY3RvcnlZVmFsdWUgPSAtc3RkOjpwb3co
ZG91YmxlKHRpbWVPZmZzZXQpIC8gbV9raW5ldGljcy5hcHBsaWNhdGlvbi55LmR1cmF0aW9uLCAy
KSArIDE7CisgICAgICAgIHRyYWplY3RvcnlZVmFsdWUgPSBzdGQ6Om1heDxkb3VibGU+KHRyYWpl
Y3RvcnlZVmFsdWUsIDApOworICAgIH0KKworICAgIGJvb2wgYWN0aXZlVHJhamVjdG9yaWVzID0g
ISF0cmFqZWN0b3J5WFZhbHVlIHx8ICEhdHJhamVjdG9yeVlWYWx1ZTsKKworICAgIGludDMyX3Qg
dHJhamVjdG9yeVlDaGFuZ2UgPSBtX2tpbmV0aWNzLmFwcGxpY2F0aW9uLnkudHJhamVjdG9yeSAq
IHRyYWplY3RvcnlZVmFsdWUgKiB0aW1lRGVsdGEgLyAxMDAwLjA7CisgICAgaWYgKHRyYWplY3Rv
cnlZQ2hhbmdlKSB7CisgICAgICAgIHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCBheGlzRXZl
bnQgPSB7CisgICAgICAgICAgICB3cGVfaW5wdXRfYXhpc19ldmVudF90eXBlX21vdGlvbiwKKyAg
ICAgICAgICAgIG1fa2luZXRpY3MuYXBwbGljYXRpb24uYmFzZVRpbWUgKyB0aW1lT2Zmc2V0LAor
ICAgICAgICAgICAgbV9raW5ldGljcy5hcHBsaWNhdGlvbi54LmNvb3JkaW5hdGUsIG1fa2luZXRp
Y3MuYXBwbGljYXRpb24ueS5jb29yZGluYXRlLAorICAgICAgICAgICAgMiwgdHJhamVjdG9yeVlD
aGFuZ2UKKyAgICAgICAgfTsKKyAgICAgICAgbV9jbGllbnQuZGlzcGF0Y2hBeGlzRXZlbnQoJmF4
aXNFdmVudCk7CisgICAgfQorCisgICAgLy8gRklYTUU6IEFsc28gaGFuZGxlIGNoYW5nZSBpbiB0
aGUgaG9yaXpvbnRhbCB0cmFqZWN0b3J5LgorCisgICAgaWYgKGFjdGl2ZVRyYWplY3RvcmllcykK
KyAgICAgICAgbV9raW5ldGljcy50aW1lci0+c3RhcnRPbmVTaG90KFNlY29uZHM6OmZyb21NaWxs
aXNlY29uZHMoMTUpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVy
LmgKaW5kZXggM2Y2MzI1MTIxZDguLjdlZTQ2NWQ5MDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1Njcm9sbEdlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9TY3JvbGxHZXN0dXJlQ29udHJvbGxlci5oCkBA
IC0yNSwyMCArMjUsMzUgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxhcnJheT4KICNp
bmNsdWRlIDx3cGUvd3BlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFNjcm9sbEdlc3R1cmVDb250cm9sbGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTY3JvbGxHZXN0dXJlQ29udHJvbGxlcigp
ID0gZGVmYXVsdDsKKyAgICBjbGFzcyBDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmly
dHVhbCB+Q2xpZW50KCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQXhpc0V2ZW50
KHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCopID0gMDsKKyAgICB9OworCisgICAgU2Nyb2xs
R2VzdHVyZUNvbnRyb2xsZXIoQ2xpZW50Jik7CisgICAgflNjcm9sbEdlc3R1cmVDb250cm9sbGVy
KCk7CiAKICAgICBzdHJ1Y3Qgd3BlX2lucHV0X2F4aXNfZXZlbnQqIGF4aXNFdmVudCgpIHsgcmV0
dXJuICZtX2F4aXNFdmVudDsgfQogCisgICAgYm9vbCBpc0hhbmRsaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9oYW5kbGluZzsgfQogICAgIGJvb2wgaGFuZGxlRXZlbnQoY29uc3Qgc3RydWN0IHdwZV9p
bnB1dF90b3VjaF9ldmVudF9yYXcqKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGRpc3BhdGNoQ2Fs
bGJhY2soKTsKKworICAgIENsaWVudCYgbV9jbGllbnQ7CisKICAgICBzdHJ1Y3QgewogICAgICAg
ICB1aW50MzJfdCB0aW1lIHsgMCB9OwogICAgICAgICBpbnQzMl90IHggeyAwIH07CkBAIC01MCw2
ICs2NSwzMiBAQCBwcml2YXRlOgogICAgICAgICBpbnQzMl90IHkgeyAwIH07CiAgICAgfSBtX29m
ZnNldDsKIAorICAgIHN0cnVjdCB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50
MzJfdCB0aW1lIHsgMCB9OworICAgICAgICAgICAgaW50MzJfdCB4IHsgMCB9OworICAgICAgICAg
ICAgaW50MzJfdCB5IHsgMCB9OworICAgICAgICB9IGxhc3Q7CisgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICBzdGQ6OmFycmF5PGludDMyX3QsIDQ+IHg7CisgICAgICAgICAgICBzdGQ6OmFy
cmF5PGludDMyX3QsIDQ+IHk7CisgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQzMl90LCA0PiB0
aW1lOworICAgICAgICB9IHZlbG9jaXR5OworCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAg
ICBpbnQ2NF90IGJhc2VNb25vdG9uaWNUaW1lIHsgMCB9OworICAgICAgICAgICAgdWludDMyX3Qg
YmFzZVRpbWUgeyAwIH07CisgICAgICAgICAgICB1aW50MzJfdCBsYXN0VGltZSB7IDAgfTsKKyAg
ICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBjb29yZGluYXRlIHsg
MCB9OworICAgICAgICAgICAgICAgIGRvdWJsZSB0cmFqZWN0b3J5IHsgMCB9OworICAgICAgICAg
ICAgICAgIGRvdWJsZSBkdXJhdGlvbiB7IDAgfTsKKyAgICAgICAgICAgIH0geCwgeTsKKyAgICAg
ICAgfSBhcHBsaWNhdGlvbjsKKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVuTG9vcDo6VGlt
ZXI8U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI+PiB0aW1lcjsKKyAgICB9IG1fa2luZXRpY3M7CisK
ICAgICBib29sIG1faGFuZGxpbmcgeyBmYWxzZSB9OwogICAgIHN0cnVjdCB3cGVfaW5wdXRfYXhp
c19ldmVudCBtX2F4aXNFdmVudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XUEVWaWV3LmNwcAppbmRleCAxMmUzMmZhZDQwMC4uZWZiMzdjMjNkNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcApAQCAtNDMsNiArNDMsNyBAQCBu
YW1lc3BhY2UgV0tXUEUgewogCiBWaWV3OjpWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBi
YWNrZW5kLCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBiYXNlQ29uZmlndXJhdGlvbikK
ICAgICA6IG1fY2xpZW50KG1ha2VVbmlxdWU8QVBJOjpWaWV3Q2xpZW50PigpKQorICAgICwgbV9z
Y3JvbGxHZXN0dXJlQ29udHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbEdlc3R1cmVDb250
cm9sbGVyPigqdGhpcykpCiAgICAgLCBtX3BhZ2VDbGllbnQobWFrZVVuaXF1ZTxQYWdlQ2xpZW50
SW1wbD4oKnRoaXMpKQogICAgICwgbV9zaXplIHsgODAwLCA2MDAgfQogICAgICwgbV92aWV3U3Rh
dGVGbGFncyB7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlLCBXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpJc0ZvY3VzZWQsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNJbldpbmRvdyB9CkBAIC0xNTcsOCArMTU4
LDI3IEBAIFZpZXc6OlZpZXcoc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIGJhY2tlbmQsIGNvbnN0
IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGJhc2VDCiAgICAgICAgIC8vIGhhbmRsZV90b3VjaF9l
dmVudAogICAgICAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd3BlX2lucHV0X3RvdWNoX2V2ZW50
KiBldmVudCkKICAgICAgICAgewotICAgICAgICAgICAgYXV0byYgcGFnZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Vmlldyo+KGRhdGEpLT5wYWdlKCk7Ci0gICAgICAgICAgICBwYWdlLmhhbmRsZVRvdWNo
RXZlbnQoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50KGV2ZW50LCBwYWdlLmRldmljZVNjYWxl
RmFjdG9yKCkpKTsKKyAgICAgICAgICAgIGF1dG8mIHZpZXcgPSAqcmVpbnRlcnByZXRfY2FzdDxW
aWV3Kj4oZGF0YSk7CisgICAgICAgICAgICBhdXRvJiBwYWdlID0gdmlldy5wYWdlKCk7CisKKyAg
ICAgICAgICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworCisgICAgICAgICAgICBXZWJLaXQ6Ok5h
dGl2ZVdlYlRvdWNoRXZlbnQgbmF0aXZlRXZlbnQoZXZlbnQsIHBhZ2UuZGV2aWNlU2NhbGVGYWN0
b3IoKSk7CisKKyAgICAgICAgICAgIGF1dG8mIHNjcm9sbEdlc3R1cmVDb250cm9sbGVyID0gKnZp
ZXcubV9zY3JvbGxHZXN0dXJlQ29udHJvbGxlcjsKKyAgICAgICAgICAgIGlmIChzY3JvbGxHZXN0
dXJlQ29udHJvbGxlci5pc0hhbmRsaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBzdHJ1
Y3Qgd3BlX2lucHV0X3RvdWNoX2V2ZW50X3JhdyogdG91Y2hQb2ludCA9IG5hdGl2ZUV2ZW50Lm5h
dGl2ZUZhbGxiYWNrVG91Y2hQb2ludCgpOworICAgICAgICAgICAgICAgIGlmICh0b3VjaFBvaW50
LT50eXBlICE9IHdwZV9pbnB1dF90b3VjaF9ldmVudF90eXBlX251bGwgJiYKKyAgICAgICAgICAg
ICAgICAgICAgc2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXIuaGFuZGxlRXZlbnQodG91Y2hQb2ludCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgIHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCogYXhpc0V2ZW50ID0gc2Nyb2xsR2VzdHVy
ZUNvbnRyb2xsZXIuYXhpc0V2ZW50KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChheGlzRXZl
bnQtPnR5cGUgIT0gd3BlX2lucHV0X2F4aXNfZXZlbnRfdHlwZV9udWxsKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcGFnZS5oYW5kbGVXaGVlbEV2ZW50KFdlYktpdDo6TmF0aXZlV2ViV2hlZWxF
dmVudChheGlzRXZlbnQsIHBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFoYW5kbGVkKQorICAgICAg
ICAgICAgICAgIHBhZ2UuaGFuZGxlVG91Y2hFdmVudChuYXRpdmVFdmVudCk7CiAgICAgICAgIH0s
CiAgICAgICAgIC8vIHBhZGRpbmcKICAgICAgICAgbnVsbHB0ciwKQEAgLTIzNCw0ICsyNTQsMTAg
QEAgV2ViS2l0V2ViVmlld0FjY2Vzc2libGUqIFZpZXc6OmFjY2Vzc2libGUoKSBjb25zdAogfQog
I2VuZGlmCiAKK3ZvaWQgVmlldzo6ZGlzcGF0Y2hBeGlzRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9h
eGlzX2V2ZW50KiBheGlzRXZlbnQpCit7CisgICAgYXV0byYgcGFnZSA9IHRoaXMtPnBhZ2UoKTsK
KyAgICBwYWdlLmhhbmRsZVdoZWVsRXZlbnQoV2ViS2l0OjpOYXRpdmVXZWJXaGVlbEV2ZW50KGF4
aXNFdmVudCwgcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdLV1BFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCmluZGV4IDI0
NDU4NjE3NDI2Li40ZDhjYTE3YTlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XUEVWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XUEVWaWV3LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiU2Nyb2xsR2VzdHVyZUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Fj
dGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxtZW1vcnk+CkBAIC0zOSw2ICs0MCw3IEBACiAjZW5k
aWYKIAogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0dsb2JhbENvbnRleHRSZWY7
CitzdHJ1Y3Qgd3BlX2lucHV0X2F4aXNfZXZlbnQ7CiBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZDsK
IAogbmFtZXNwYWNlIEFQSSB7CkBAIC00NywxMyArNDksMTQgQEAgY2xhc3MgVmlld0NsaWVudDsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBEb3dubG9hZFByb3h5OworY2xhc3MgU2Nyb2xs
R2VzdHVyZUNvbnRyb2xsZXI7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQcm9jZXNz
UG9vbDsKIH0KIAogbmFtZXNwYWNlIFdLV1BFIHsKIAotY2xhc3MgVmlldyA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlZpZXc+IHsKK2NsYXNzIFZpZXcgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpWaWV3PiwgcHVibGljIFdlYktp
dDo6U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFZpZXcqIGNyZWF0ZShzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFja2VuZCwgY29uc3QgQVBJ
OjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7CkBAIC04NywxNCArOTAs
MjAgQEAgcHVibGljOgogICAgIFdlYktpdFdlYlZpZXdBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKCkg
Y29uc3Q7CiAjZW5kaWYKIAorICAgIFdlYktpdDo6U2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXImIHNj
cm9sbEdlc3R1cmVDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fc2Nyb2xsR2VzdHVyZUNv
bnRyb2xsZXI7IH0KKwogcHJpdmF0ZToKICAgICBWaWV3KHN0cnVjdCB3cGVfdmlld19iYWNrZW5k
KiwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYpOwogCiAgICAgdm9pZCBzZXRTaXplKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2b2lkIHNldFZpZXdTdGF0ZShPcHRpb25TZXQ8
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4pOwogCisgICAgLy8gU2Nyb2xsR2VzdHVyZUNv
bnRyb2xsZXI6OkNsaWVudAorICAgIHZvaWQgZGlzcGF0Y2hBeGlzRXZlbnQoc3RydWN0IHdwZV9p
bnB1dF9heGlzX2V2ZW50Kikgb3ZlcnJpZGU7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpW
aWV3Q2xpZW50PiBtX2NsaWVudDsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlNjcm9s
bEdlc3R1cmVDb250cm9sbGVyPiBtX3Njcm9sbEdlc3R1cmVDb250cm9sbGVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPiBtX3BhZ2VDbGllbnQ7CiAgICAgUmVm
UHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3BhZ2VQcm94eTsKICAgICBXZWJDb3JlOjpJbnRT
aXplIG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCBiMjQ1ODFjOTdlNy4uNTZiMjU4
NWMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdp
bmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTI2Niw2ICsyNjYsMTEgQEAgdm9pZCBE
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRl
cyhWaWV3cG9ydEF0dHJpYnUKIH0KICNlbmRpZgogCitib29sIERyYXdpbmdBcmVhQ29vcmRpbmF0
ZWRHcmFwaGljczo6c3VwcG9ydHNBc3luY1Njcm9sbGluZygpCit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhp
Y3M6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkKIHsKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRp
bmF0ZWRHcmFwaGljcy5oCmluZGV4IDVkNzA3NTFhNmExLi40NWIwNmQ4NTg3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9E
cmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRH
cmFwaGljcy5oCkBAIC02NSw2ICs2NSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VW
aWV3cG9ydEF0dHJpYnV0ZXMoV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKKyAgICBib29sIHN1cHBvcnRzQXN5bmNTY3JvbGxpbmcoKSBvdmVycmlkZTsK
KwogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9y
eSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6
R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgc2NoZWR1bGVJbml0aWFsRGVmZXJy
ZWRQYWludCgpIG92ZXJyaWRlIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25z
V1BFLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKaW5kZXggYWRhYjM1ZDdm
NzMuLjFiZWUyZmI0ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFr
ZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQpAQCAtNDcsNyArNDcsNyBAQCBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfWFNMVCBQVUJMSUMgT04pCiAj
IFByaXZhdGUgb3B0aW9ucyBzaGFyZWQgd2l0aCBvdGhlciBXZWJLaXQgcG9ydHMuIEFkZCBvcHRp
b25zIGhlcmUgb25seSBpZgogIyB3ZSBuZWVkIGEgdmFsdWUgZGlmZmVyZW50IGZyb20gdGhlIGRl
ZmF1bHQgZGVmaW5lZCBpbiBXZWJLaXRGZWF0dXJlcy5jbWFrZS4KICMgQ2hhbmdpbmcgdGhlc2Ug
b3B0aW9ucyBpcyBjb21wbGV0ZWx5IHVuc3VwcG9ydGVkLgotV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0FTWU5DX1NDUk9MTElORyBQUklWQVRFIE9GRikKK1dFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BU1lOQ19TQ1JPTExJTkcgUFJJVkFURSBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DT05URU5UX0VYVEVO
U0lPTlMgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9NRURJQV9TVFJFQU0gUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVN9KQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01IVE1MIFBSSVZBVEUgT04p
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>