<?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>233804</bug_id>
          
          <creation_ts>2021-12-03 01:25:37 -0800</creation_ts>
          <short_desc>[GTK][a11y] Ensure atspi wrappers have root set at construction time</short_desc>
          <delta_ts>2021-12-28 23:37:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234737</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>230253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>aperez</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820057</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-03 01:25:37 -0800</bug_when>
    <thetext>It simplifies the code a lot and we ensure all wrappers always have a link to the root element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820063</commentid>
    <comment_count>1</comment_count>
      <attachid>445823</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-03 01:36:12 -0800</bug_when>
    <thetext>Created attachment 445823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820064</commentid>
    <comment_count>2</comment_count>
      <attachid>445823</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2021-12-03 02:05:20 -0800</bug_when>
    <thetext>Comment on attachment 445823
Patch

Thanks for doing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820065</commentid>
    <comment_count>3</comment_count>
      <attachid>445823</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-12-03 02:10:21 -0800</bug_when>
    <thetext>Comment on attachment 445823
Patch

Very nice to see quite a few parts of the ATSPI code simplified by
this patch. As usual, patches that remove code are among the nicest 😻️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822018</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-09 00:26:45 -0800</bug_when>
    <thetext>Committed r286767 (245008@trunk): &lt;https://commits.webkit.org/245008@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445823</attachid>
            <date>2021-12-03 01:36:12 -0800</date>
            <delta_ts>2021-12-03 02:05:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-root.diff</filename>
            <type>text/plain</type>
            <size>43710</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZmUzOGVjYmE2NDEuLjI3MjgyNTg5ZWNkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDcwIEBACisyMDIxLTEyLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBFbnN1cmUgYXRzcGkgd3JhcHBlcnMg
aGF2ZSByb290IHNldCBhdCBjb25zdHJ1Y3Rpb24gdGltZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFzcyB0aGUgQWNjZXNzaWJpbGl0eVJvb3RBdHNw
aSBhcyBhIHBhcmFtZXRlciB0byBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkgY29uc3RydWN0b3Ig
YW5kIHN0b3JlIGl0IGFzIGEKKyAgICAgICAgcmVmZXJlbmNlLiBBIHBvaW50ZXIgdG8gdGhlIEFj
Y2Vzc2liaWxpdHlSb290QXRzcGkgb2JqZWN0IGlzIG5vdyBzZXQgaW4gUGFnZSBzbyB0aGF0IGl0
IGNhbiBiZSBhY2Nlc3NlZCBmcm9tIHRoZQorICAgICAgICBBWE9iamVjdENhY2hlLiBBbHNvIHJl
bW92ZSBzZXRSb290KCkgYW5kIHVzZSBtX3Jvb3QgZGlyZWN0bHkgaW5zdGVhZCBvZiByb290KCkg
YWNjZXNzb3IuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FYT2JqZWN0Q2FjaGVB
dHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVy
KTogR2V0IHRoZSBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpIGZyb20gdGhlIHBhZ2UgYW5kIHBhc3Mg
aXQgdG8gdGhlIHdyYXBwZXIKKyAgICAgICAgY29uc3RydWN0b3IuIEFsc28gc2V0IHRoZSBwYXJl
bnQgb2YgdGhlIGRvbSByb290IGVsZW1lbnQgd3JhcHBlciB0byB0aGUgYXRzcGkgcm9vdCBlbGVt
ZW50LgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OkFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGk6OmNhY2hlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6ZWxlbWVudERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGk6OnBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjpyZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjpoeXBlcmxpbmtSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpwYXJlbnRSZWZlcmVuY2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjaGlsZEF0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6d3JhcHBlclZlY3RvciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmJ1aWxkUmVs
YXRpb25TZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpzZXJpYWxpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdEF0c3BpOjpjaGlsZEFkZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6Y2hpbGRSZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaTo6c3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaTo6c2V0Um9vdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvb3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmg6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q29tcG9uZW50QXRzcGku
Y3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEh5
cGVybGlua0F0c3BpLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RIeXBlcnRleHRBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGk6Omh5cGVybGluayBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0U2VsZWN0aW9uQXRzcGkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzZWxlY3RlZENoaWxkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c2VsZWN0aW9u
Q2hhbmdlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0VGFibGVBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGk6OmNlbGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjp0YWJsZUNhcHRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjpyb3dIZWFkZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjb2x1bW5IZWFkZXIgY29uc3QpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Y2VsbFJvd0hlYWRl
cnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpj
ZWxsQ29sdW1uSGVhZGVycyBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEluc2VydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dERlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzZWxlY3Rpb25DaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZXNDaGFuZ2VkKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RWYWx1ZUF0
c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dmFs
dWVDaGFuZ2VkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlS
b290QXRzcGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6
cmVnaXN0ZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJvb3RBdHNw
aTo6dW5yZWdpc3Rlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Um9v
dEF0c3BpOjpjaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Um9v
dEF0c3BpOjpmb2N1c2VkT2JqZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuaDoKKyAgICAgICAgKiBwYWdlL1Bh
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFjY2Vzc2liaWxpdHlSb290T2JqZWN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldEFjY2Vzc2liaWxpdHlSb290T2JqZWN0
KToKKwogMjAyMS0xMi0wMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgc3RpY2t5IHRoIG9yIHRkIGluIHRhYmxlIGRvZXMgbm90IHN0b3BzIGF0IHNw
ZWNpZmllZCB0b3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRz
cGkvQVhPYmplY3RDYWNoZUF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQVhPYmplY3RDYWNoZUF0c3BpLmNwcAppbmRleCA4MGZiNmU4NWEzMjIuLmYyYjQwMjQx
N2Y0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BWE9i
amVjdENhY2hlQXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRz
cGkvQVhPYmplY3RDYWNoZUF0c3BpLmNwcApAQCAtMzUsMTIgKzM1LDE3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFYQ29yZU9iamVj
dCogYXhPYmplY3QpCiB7Ci0gICAgYXV0byB3cmFwcGVyID0gQWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpjcmVhdGUoYXhPYmplY3QpOworICAgIGF1dG8qIHJvb3RXcmFwcGVyID0gZG9jdW1lbnQo
KS5wYWdlKCktPmFjY2Vzc2liaWxpdHlSb290T2JqZWN0KCk7CisgICAgUkVMRUFTRV9BU1NFUlQo
cm9vdFdyYXBwZXIpOworICAgIGF1dG8gd3JhcHBlciA9IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aTo6Y3JlYXRlKGF4T2JqZWN0LCAqcm9vdFdyYXBwZXIpOwogICAgIGF4T2JqZWN0LT5zZXRXcmFw
cGVyKHdyYXBwZXIucHRyKCkpOwogCiAgICAgYXV0byogYXhQYXJlbnQgPSBheE9iamVjdC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFheFBhcmVudCkKKyAgICBpZiAoIWF4UGFy
ZW50KSB7CisgICAgICAgIGlmIChheE9iamVjdC0+aXNTY3JvbGxWaWV3KCkgJiYgYXhPYmplY3Qt
PnNjcm9sbFZpZXcoKSA9PSBkb2N1bWVudCgpLnZpZXcoKSkKKyAgICAgICAgICAgIHdyYXBwZXIt
PnNldFBhcmVudChudWxscHRyKTsgLy8gbnVsbHB0ciBwYXJlbnQgbWVhbnMgcm9vdC4KICAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogICAgIGF1dG8qIGF4UGFyZW50V3JhcHBlciA9IGF4UGFyZW50
LT53cmFwcGVyKCk7CiAgICAgaWYgKCFheFBhcmVudFdyYXBwZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5jcHAK
aW5kZXggMDVlNDQyMmNlYTEzLi4wYjNkOTBkNDFlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5jcHAKQEAg
LTE3Nyw3ICsxNzcsNiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6Y2hpbGRyZW5DaGFuZ2Vk
KEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSYgYXRzcGlPYmplY3QsCiAgICAgICAgIGlmICghbV9j
b25uZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNoaWxkLT5zZXRSb290
KGF0c3BpT2JqZWN0LT5yb290KCkpOwogICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9lbWl0X3Np
Z25hbChtX2Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIsIGF0c3BpT2JqZWN0LT5wYXRoKCkudXRm
OCgpLmRhdGEoKSwgIm9yZy5hMTF5LmF0c3BpLkV2ZW50Lk9iamVjdCIsICJDaGlsZHJlbkNoYW5n
ZWQiLAogICAgICAgICAgICAgZ192YXJpYW50X25ldygiKHNpaXYoc28pKSIsIGNoYW5nZSA9PSBD
aGlsZHJlbkNoYW5nZWQ6OkFkZGVkID8gImFkZCIgOiAicmVtb3ZlIiwgY2hpbGQtPmluZGV4SW5Q
YXJlbnRGb3JDaGlsZHJlbkNoYW5nZWQoY2hhbmdlKSwKICAgICAgICAgICAgIDAsIGdfdmFyaWFu
dF9uZXcoIihzbykiLCB1bmlxdWVOYW1lKCksIGNoaWxkLT5wYXRoKCkudXRmOCgpLmRhdGEoKSks
IHVuaXF1ZU5hbWUoKSwgYXRzcGlPYmplY3QtPnBhdGgoKS51dGY4KCkuZGF0YSgpKSwgbnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggN2Q1MTdlZmU3YzkwLi42NDZm
OGFlN2M2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkv
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTM3LDkgKzM3LDkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
PiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNyZWF0ZShBWENvcmVPYmplY3QqIGNvcmVPYmpl
Y3QpCitSZWY8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk6OmNyZWF0ZShBWENvcmVPYmplY3QqIGNvcmVPYmplY3QsIEFjY2Vzc2liaWxpdHlSb290QXRz
cGkmIHJvb3QpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpKGNvcmVPYmplY3QpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmls
aXR5T2JqZWN0QXRzcGkoY29yZU9iamVjdCwgcm9vdCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgcm9sZUlzVGV4dFR5cGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKQEAgLTExMiw5ICsxMTIs
MTAgQEAgT3B0aW9uU2V0PEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6SW50ZXJmYWNlPiBBY2Nl
c3NpYmlsaXR5T2JqZWN0QXRzcGk6OmludGVyZmEKICAgICByZXR1cm4gaW50ZXJmYWNlczsKIH0K
IAotQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkoQVhD
b3JlT2JqZWN0KiBjb3JlT2JqZWN0KQorQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGkoQVhDb3JlT2JqZWN0KiBjb3JlT2JqZWN0LCBBY2Nlc3NpYmlsaXR5
Um9vdEF0c3BpJiByb290KQogICAgIDogbV9jb3JlT2JqZWN0KGNvcmVPYmplY3QpCiAgICAgLCBt
X2ludGVyZmFjZXMoaW50ZXJmYWNlc0Zvck9iamVjdCgqbV9jb3JlT2JqZWN0KSkKKyAgICAsIG1f
cm9vdChyb290KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KQEAg
LTEzNyw3ICsxMzgsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Y2FjaGVEZXN0
cm95ZWQoKQogICAgIGlmICghbV9pc1JlZ2lzdGVyZWQubG9hZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICByb290KCktPmF0c3BpKCkudW5yZWdpc3Rlck9iamVjdCgqdGhpcyk7CisgICAgbV9y
b290LmF0c3BpKCkudW5yZWdpc3Rlck9iamVjdCgqdGhpcyk7CiB9CiAKIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjplbGVtZW50RGVzdHJveWVkKCkKQEAgLTE1MCw3ICsxNTEsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6ZWxlbWVudERlc3Ryb3llZCgpCiAgICAgaWYg
KG1fcGFyZW50ICYmICptX3BhcmVudCkKICAgICAgICAgbV9wYXJlbnQudmFsdWUoKS0+Y2hpbGRS
ZW1vdmVkKCp0aGlzKTsKIAotICAgIHJvb3QoKS0+YXRzcGkoKS51bnJlZ2lzdGVyT2JqZWN0KCp0
aGlzKTsKKyAgICBtX3Jvb3QuYXRzcGkoKS51bnJlZ2lzdGVyT2JqZWN0KCp0aGlzKTsKIH0KIAog
c3RhdGljIHVuc2lnbmVkIGF0c3BpUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQpAQCAtNDI5
LDEyICs0MzAsMTIgQEAgR0RCdXNJbnRlcmZhY2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpzX2FjY2Vzc2libGVGdW5jdGlvbnMgPSB7CiAKICAgICAgICAgICAgIGdfZGJ1c19tZXRo
b2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X2J1aWxkZXJf
ZW5kKCZidWlsZGVyKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1l
LCAiR2V0QXBwbGljYXRpb24iKSkKLSAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlv
bl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKEAoc28pKSIsIGF0c3Bp
T2JqZWN0LT5yb290KCktPmFwcGxpY2F0aW9uUmVmZXJlbmNlKCkpKTsKKyAgICAgICAgICAgIGdf
ZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50
X25ldygiKEAoc28pKSIsIGF0c3BpT2JqZWN0LT5tX3Jvb3QuYXBwbGljYXRpb25SZWZlcmVuY2Uo
KSkpOwogICAgICAgICBlbHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRDaGlsZEF0
SW5kZXgiKSkgewogICAgICAgICAgICAgaW50IGluZGV4OwogICAgICAgICAgICAgZ192YXJpYW50
X2dldChwYXJhbWV0ZXJzLCAiKGkpIiwgJmluZGV4KTsKICAgICAgICAgICAgIGF1dG8qIHdyYXBw
ZXIgPSBpbmRleCA+PSAwID8gYXRzcGlPYmplY3QtPmNoaWxkQXQoaW5kZXgpIDogbnVsbHB0cjsK
LSAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2Nh
dGlvbiwgZ192YXJpYW50X25ldygiKEAoc28pKSIsIHdyYXBwZXIgPyB3cmFwcGVyLT5yZWZlcmVu
Y2UoKSA6IGF0c3BpT2JqZWN0LT5yb290KCktPmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7Cisg
ICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRp
b24sIGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCB3cmFwcGVyID8gd3JhcHBlci0+cmVmZXJlbmNl
KCkgOiBhdHNwaU9iamVjdC0+bV9yb290LmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0Q2hpbGRyZW4iKSkgewog
ICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXIgPSBHX1ZBUklBTlRfQlVJTERFUl9J
TklUKEdfVkFSSUFOVF9UWVBFKCJhKHNvKSIpKTsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0
byYgd3JhcHBlciA6IGF0c3BpT2JqZWN0LT5jaGlsZHJlbigpKQpAQCAtNDg0LDggKzQ4NSw2IEBA
IGNvbnN0IFN0cmluZyYgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpwYXRoKCkKIHsKICAgICBS
RUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX3BhdGguaXNOdWxsKCkp
IHsKLSAgICAgICAgYXV0byogYXRzcGlSb290ID0gcm9vdCgpOwotICAgICAgICBSRUxFQVNFX0FT
U0VSVChhdHNwaVJvb3QpOwogICAgICAgICBtX2lzUmVnaXN0ZXJlZC5zdG9yZSh0cnVlKTsKIAog
ICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEdEQnVzSW50ZXJmYWNlSW5mbyosIEdEQnVzSW50ZXJm
YWNlVlRhYmxlKj4+IGludGVyZmFjZXM7CkBAIC01MTMsNyArNTEyLDcgQEAgY29uc3QgU3RyaW5n
JiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnBhdGgoKQogICAgICAgICAgICAgaW50ZXJmYWNl
cy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRfdGFibGVf
aW50ZXJmYWNlKSwgJnNfdGFibGVGdW5jdGlvbnMgfSk7CiAgICAgICAgIGlmIChtX2ludGVyZmFj
ZXMuY29udGFpbnMoSW50ZXJmYWNlOjpUYWJsZUNlbGwpKQogICAgICAgICAgICAgaW50ZXJmYWNl
cy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRfdGFibGVf
Y2VsbF9pbnRlcmZhY2UpLCAmc190YWJsZUNlbGxGdW5jdGlvbnMgfSk7Ci0gICAgICAgIG1fcGF0
aCA9IGF0c3BpUm9vdC0+YXRzcGkoKS5yZWdpc3Rlck9iamVjdCgqdGhpcywgV1RGTW92ZShpbnRl
cmZhY2VzKSk7CisgICAgICAgIG1fcGF0aCA9IG1fcm9vdC5hdHNwaSgpLnJlZ2lzdGVyT2JqZWN0
KCp0aGlzLCBXVEZNb3ZlKGludGVyZmFjZXMpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9wYXRo
OwpAQCAtNTIyLDcgKzUyMSw3IEBAIGNvbnN0IFN0cmluZyYgQWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpwYXRoKCkKIEdWYXJpYW50KiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJlZmVyZW5j
ZSgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICByZXR1cm4g
Z192YXJpYW50X25ldygiKHNvKSIsIHJvb3QoKS0+YXRzcGkoKS51bmlxdWVOYW1lKCksIHBhdGgo
KS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ192YXJpYW50X25ldygiKHNvKSIsIG1fcm9v
dC5hdHNwaSgpLnVuaXF1ZU5hbWUoKSwgcGF0aCgpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBHVmFy
aWFudCogQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpoeXBlcmxpbmtSZWZlcmVuY2UoKQpAQCAt
NTMwLDIyICs1MjksMTAgQEAgR1ZhcmlhbnQqIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6aHlw
ZXJsaW5rUmVmZXJlbmNlKCkKICAgICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgIGlmIChtX2h5cGVybGlua1BhdGguaXNOdWxsKCkpIHsKICAgICAgICAgcGF0aCgpOwotICAg
ICAgICBtX2h5cGVybGlua1BhdGggPSByb290KCktPmF0c3BpKCkucmVnaXN0ZXJIeXBlcmxpbmso
KnRoaXMsIHsgeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRfaHlwZXJs
aW5rX2ludGVyZmFjZSksICZzX2h5cGVybGlua0Z1bmN0aW9ucyB9IH0pOworICAgICAgICBtX2h5
cGVybGlua1BhdGggPSBtX3Jvb3QuYXRzcGkoKS5yZWdpc3Rlckh5cGVybGluaygqdGhpcywgeyB7
IGNvbnN0X2Nhc3Q8R0RCdXNJbnRlcmZhY2VJbmZvKj4oJndlYmtpdF9oeXBlcmxpbmtfaW50ZXJm
YWNlKSwgJnNfaHlwZXJsaW5rRnVuY3Rpb25zIH0gfSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdf
dmFyaWFudF9uZXcoIihzbykiLCByb290KCktPmF0c3BpKCkudW5pcXVlTmFtZSgpLCBtX2h5cGVy
bGlua1BhdGgudXRmOCgpLmRhdGEoKSk7Ci19Ci0KLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpzZXRSb290KEFjY2Vzc2liaWxpdHlSb290QXRzcGkqIHJvb3QpCi17Ci0gICAgTG9ja2Vy
IGxvY2tlciB7IG1fcm9vdExvY2sgfTsKLSAgICBtX3Jvb3QgPSByb290OwotfQotCi1BY2Nlc3Np
YmlsaXR5Um9vdEF0c3BpKiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvb3QoKSBjb25zdAot
ewotICAgIExvY2tlciBsb2NrZXIgeyBtX3Jvb3RMb2NrIH07Ci0gICAgcmV0dXJuIG1fcm9vdDsK
KyAgICByZXR1cm4gZ192YXJpYW50X25ldygiKHNvKSIsIG1fcm9vdC5hdHNwaSgpLnVuaXF1ZU5h
bWUoKSwgbV9oeXBlcmxpbmtQYXRoLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaTo6c2V0UGFyZW50KHN0ZDo6b3B0aW9uYWw8QWNjZXNzaWJpbGl0eU9i
amVjdEF0c3BpKj4gYXRzcGlQYXJlbnQpCkBAIC01NjksMTAgKzU1Niw4IEBAIHN0ZDo6b3B0aW9u
YWw8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKj4gQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpw
YXJlbnQoKSBjb25zCiAgICAgaWYgKCFheFBhcmVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBpZiAoYXV0byogYXRzcGlQYXJlbnQgPSBheFBhcmVudC0+d3JhcHBlcigpKSB7Ci0g
ICAgICAgIGF0c3BpUGFyZW50LT5zZXRSb290KHJvb3QoKSk7CisgICAgaWYgKGF1dG8qIGF0c3Bp
UGFyZW50ID0gYXhQYXJlbnQtPndyYXBwZXIoKSkKICAgICAgICAgcmV0dXJuIGF0c3BpUGFyZW50
OwotICAgIH0KIAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CkBAIC01ODEsMTAgKzU2Niwx
MCBAQCBHVmFyaWFudCogQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpwYXJlbnRSZWZlcmVuY2Uo
KSBjb25zdAogewogICAgIGF1dG8gcGFyZW50QXRzcGkgPSBwYXJlbnQoKTsKICAgICBpZiAoIXBh
cmVudEF0c3BpKQotICAgICAgICByZXR1cm4gcm9vdCgpLT5hdHNwaSgpLm51bGxSZWZlcmVuY2Uo
KTsKKyAgICAgICAgcmV0dXJuIG1fcm9vdC5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKTsKIAogICAg
IGlmICghcGFyZW50QXRzcGkudmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIHJvb3QoKS0+cmVmZXJl
bmNlKCk7CisgICAgICAgIHJldHVybiBtX3Jvb3QucmVmZXJlbmNlKCk7CiAKICAgICByZXR1cm4g
cGFyZW50QXRzcGkudmFsdWUoKS0+cmVmZXJlbmNlKCk7CiB9CkBAIC02MDgsMjEgKzU5MywxNiBA
QCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Y2hp
bGRBdCh1bnNpZ25lZCBpbmRleCkgY29ucwogICAgIGlmIChpbmRleCA+PSBjaGlsZHJlbi5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byogd3JhcHBlciA9IGNoaWxk
cmVuW2luZGV4XS0+d3JhcHBlcigpOwotICAgIHdyYXBwZXItPnNldFJvb3Qocm9vdCgpKTsKLSAg
ICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gY2hpbGRyZW5baW5kZXhdLT53cmFwcGVyKCk7
CiB9CiAKIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpPj4gQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjp3cmFwcGVyVmVjdG9yKGNvbnN0IFZlY3RvcjxSZWZQdHI8QVhDb3Jl
T2JqZWN0Pj4mIGVsZW1lbnRzKSBjb25zdAogewogICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpPj4gd3JhcHBlcnM7CiAgICAgd3JhcHBlcnMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShlbGVtZW50cy5zaXplKCkpOwotICAgIGF1dG8qIHJvb3QgPSB0aGlzLT5yb290KCk7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpIHsKLSAgICAgICAgaWYg
KGF1dG8qIHdyYXBwZXIgPSBlbGVtZW50LT53cmFwcGVyKCkpIHsKLSAgICAgICAgICAgIHdyYXBw
ZXItPnNldFJvb3Qocm9vdCk7CisgICAgICAgIGlmIChhdXRvKiB3cmFwcGVyID0gZWxlbWVudC0+
d3JhcHBlcigpKQogICAgICAgICAgICAgd3JhcHBlcnMudW5jaGVja2VkQXBwZW5kKHdyYXBwZXIp
OwotICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB3cmFwcGVyczsKIH0KQEAgLTExNDAsMTAg
KzExMjAsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YnVpbGRSZWxhdGlvblNl
dChHVmFyaWFudEJ1aWxkZXIqIGJ1aWxkZXIpIGNvbnN0CiAKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGl0IDogcmVsYXRpb25NYXApIHsKICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyIGFycmF5QnVpbGRl
ciA9IEdfVkFSSUFOVF9CVUlMREVSX0lOSVQoR19WQVJJQU5UX1RZUEUoImEoc28pIikpOwotICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGF0c3BpT2JqZWN0IDogaXQudmFsdWUpIHsKLSAgICAgICAg
ICAgIGF0c3BpT2JqZWN0LT5zZXRSb290KHJvb3QoKSk7CisgICAgICAgIGZvciAoY29uc3QgYXV0
byYgYXRzcGlPYmplY3QgOiBpdC52YWx1ZSkKICAgICAgICAgICAgIGdfdmFyaWFudF9idWlsZGVy
X2FkZCgmYXJyYXlCdWlsZGVyLCAiQChzbykiLCBhdHNwaU9iamVjdC0+cmVmZXJlbmNlKCkpOwot
ICAgICAgICB9CiAgICAgICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZChidWlsZGVyLCAiKHVhKHNv
KSkiLCBpdC5rZXksICZhcnJheUJ1aWxkZXIpOwogICAgIH0KIH0KQEAgLTExODAsOSArMTE1OCw4
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpidWlsZEludGVyZmFjZXMoR1Zhcmlh
bnRCdWlsZGVyKiBidWlsZGVyKSBjb25zdAogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OnNlcmlhbGl6ZShHVmFyaWFudEJ1aWxkZXIqIGJ1aWxkZXIpIGNvbnN0CiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvKiBhdHNwaVJvb3QgPSByb290KCk7
Ci0gICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKGJ1aWxkZXIsICIoc28pIiwgYXRzcGlSb290LT5h
dHNwaSgpLnVuaXF1ZU5hbWUoKSwgbV9wYXRoLnV0ZjgoKS5kYXRhKCkpOwotICAgIGdfdmFyaWFu
dF9idWlsZGVyX2FkZChidWlsZGVyLCAiKHNvKSIsIGF0c3BpUm9vdC0+cGFyZW50VW5pcXVlTmFt
ZSgpLnV0ZjgoKS5kYXRhKCksICIvb3JnL2ExMXkvYXRzcGkvYWNjZXNzaWJsZS9yb290Iik7Cisg
ICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKGJ1aWxkZXIsICIoc28pIiwgbV9yb290LmF0c3BpKCku
dW5pcXVlTmFtZSgpLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgZ192YXJpYW50X2J1aWxk
ZXJfYWRkKGJ1aWxkZXIsICIoc28pIiwgbV9yb290LnBhcmVudFVuaXF1ZU5hbWUoKS51dGY4KCku
ZGF0YSgpLCAiL29yZy9hMTF5L2F0c3BpL2FjY2Vzc2libGUvcm9vdCIpOwogICAgIGdfdmFyaWFu
dF9idWlsZGVyX2FkZChidWlsZGVyLCAiQChzbykiLCBwYXJlbnRSZWZlcmVuY2UoKSk7CiAKICAg
ICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoYnVpbGRlciwgImkiLCBpbmRleEluUGFyZW50KCkpOwpA
QCAtMTIxNCw3ICsxMTkxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNoaWxk
QWRkZWQoQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpJiBjaGlsZCkKICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjaGlsZCA9
IFJlZiB7IGNoaWxkIH1dIHsKICAgICAgICAgaWYgKCFtX2NvcmVPYmplY3QpCiAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHJvb3QoKS0+YXRzcGkoKS5jaGlsZHJlbkNoYW5nZWQoKnRoaXMs
IGNoaWxkLCBBY2Nlc3NpYmlsaXR5QXRzcGk6OkNoaWxkcmVuQ2hhbmdlZDo6QWRkZWQpOworICAg
ICAgICBtX3Jvb3QuYXRzcGkoKS5jaGlsZHJlbkNoYW5nZWQoKnRoaXMsIGNoaWxkLCBBY2Nlc3Np
YmlsaXR5QXRzcGk6OkNoaWxkcmVuQ2hhbmdlZDo6QWRkZWQpOwogICAgIH0pOwogfQogCkBAIC0x
MjI0LDcgKzEyMDEsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Y2hpbGRSZW1v
dmVkKEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSYgY2hpbGQpCiAgICAgaWYgKCFtX2lzUmVnaXN0
ZXJlZC5sb2FkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJvb3QoKS0+YXRzcGkoKS5jaGls
ZHJlbkNoYW5nZWQoKnRoaXMsIGNoaWxkLCBBY2Nlc3NpYmlsaXR5QXRzcGk6OkNoaWxkcmVuQ2hh
bmdlZDo6UmVtb3ZlZCk7CisgICAgbV9yb290LmF0c3BpKCkuY2hpbGRyZW5DaGFuZ2VkKCp0aGlz
LCBjaGlsZCwgQWNjZXNzaWJpbGl0eUF0c3BpOjpDaGlsZHJlbkNoYW5nZWQ6OlJlbW92ZWQpOwog
fQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c3RhdGVDaGFuZ2VkKGNvbnN0IGNo
YXIqIG5hbWUsIGJvb2wgdmFsdWUpCkBAIC0xMjMzLDcgKzEyMTAsNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaTo6c3RhdGVDaGFuZ2VkKGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdmFs
dWUpCiAgICAgaWYgKCFtX2lzUmVnaXN0ZXJlZC5sb2FkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHJvb3QoKS0+YXRzcGkoKS5zdGF0ZUNoYW5nZWQoKnRoaXMsIG5hbWUsIHZhbHVlKTsKKyAg
ICBtX3Jvb3QuYXRzcGkoKS5zdGF0ZUNoYW5nZWQoKnRoaXMsIG5hbWUsIHZhbHVlKTsKIH0KIAog
dW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyb2xlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaS5oCmluZGV4IDg4MzllZDczYjU2OS4uZTA0Yjg1OTlkMTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
PHd0Zi9BdG9taWNzLmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMzksNyArMzgsNyBAQCBjbGFzcyBBY2Nlc3NpYmls
aXR5Um9vdEF0c3BpOwogCiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkgZmluYWwgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk+IGNyZWF0ZShB
WENvcmVPYmplY3QqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaT4g
Y3JlYXRlKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlSb290QXRzcGkmKTsKICAgICB+QWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpKCkgPSBkZWZhdWx0OwogCiAgICAgZW51bSBjbGFzcyBJbnRl
cmZhY2UgOiB1aW50MTZfdCB7CkBAIC01OCw4ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogICAg
IGNvbnN0IE9wdGlvblNldDxJbnRlcmZhY2U+JiBpbnRlcmZhY2VzKCkgY29uc3QgeyByZXR1cm4g
bV9pbnRlcmZhY2VzOyB9CiAKLSAgICB2b2lkIHNldFJvb3QoQWNjZXNzaWJpbGl0eVJvb3RBdHNw
aSopOwotICAgIFdFQkNPUkVfRVhQT1JUIEFjY2Vzc2liaWxpdHlSb290QXRzcGkqIHJvb3QoKSBj
b25zdDsKKyAgICBjb25zdCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpJiByb290KCkgY29uc3QgeyBy
ZXR1cm4gbV9yb290OyB9CiAgICAgdm9pZCBzZXRQYXJlbnQoc3RkOjpvcHRpb25hbDxBY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGkqPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxB
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqPiBwYXJlbnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwpAQCAtMTU1LDcgKzE1Myw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4s
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBjZWxsUG9zaXRpb24oKSBjb25zdDsKIAogcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkoQVhDb3JlT2JqZWN0Kik7
CisgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKEFYQ29yZU9iamVjdCosIEFj
Y2Vzc2liaWxpdHlSb290QXRzcGkmKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpPj4gd3JhcHBlclZlY3Rvcihjb25zdCBWZWN0b3I8UmVmUHRyPEFYQ29yZU9i
amVjdD4+JikgY29uc3Q7CiAgICAgaW50IGluZGV4SW5QYXJlbnQoKSBjb25zdDsKQEAgLTIzNiw3
ICsyMzQsNyBAQCBwcml2YXRlOgogICAgIEFYQ29yZU9iamVjdCogbV9heE9iamVjdCB7IG51bGxw
dHIgfTsKICAgICBBWENvcmVPYmplY3QqIG1fY29yZU9iamVjdCB7IG51bGxwdHIgfTsKICAgICBP
cHRpb25TZXQ8SW50ZXJmYWNlPiBtX2ludGVyZmFjZXM7Ci0gICAgQWNjZXNzaWJpbGl0eVJvb3RB
dHNwaSogbV9yb290IFdURl9HVUFSREVEX0JZX0xPQ0sobV9yb290TG9jaykgeyBudWxscHRyIH07
CisgICAgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaSYgbV9yb290OwogICAgIHN0ZDo6b3B0aW9uYWw8
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKj4gbV9wYXJlbnQ7CiAgICAgQXRvbWljPGJvb2w+IG1f
aXNSZWdpc3RlcmVkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9wYXRoOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q29t
cG9uZW50QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nl
c3NpYmlsaXR5T2JqZWN0Q29tcG9uZW50QXRzcGkuY3BwCmluZGV4IGZhM2UxOTg1ZmZhMy4uYzcz
M2QxOWIwMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RDb21wb25lbnRBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q29tcG9uZW50QXRzcGku
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6c19jb21wb25lbnRGdW5jdGlvbnMgPSB7CiAgICAgICAgICAgICB1aW50MzJf
dCBjb29yZGluYXRlVHlwZTsKICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywg
IihpaXUpIiwgJngsICZ5LCAmY29vcmRpbmF0ZVR5cGUpOwogICAgICAgICAgICAgYXV0byogd3Jh
cHBlciA9IGF0c3BpT2JqZWN0LT5oaXRUZXN0KHsgeCwgeSB9LCBjb29yZGluYXRlVHlwZSk7Ci0g
ICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRp
b24sIGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCB3cmFwcGVyID8gd3JhcHBlci0+cmVmZXJlbmNl
KCkgOiBhdHNwaU9iamVjdC0+cm9vdCgpLT5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKSkpOworICAg
ICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9u
LCBnX3ZhcmlhbnRfbmV3KCIoQChzbykpIiwgd3JhcHBlciA/IHdyYXBwZXItPnJlZmVyZW5jZSgp
IDogYXRzcGlPYmplY3QtPm1fcm9vdC5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKSkpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldEV4dGVudHMiKSkgewogICAg
ICAgICAgICAgdWludDMyX3QgY29vcmRpbmF0ZVR5cGU7CiAgICAgICAgICAgICBnX3ZhcmlhbnRf
Z2V0KHBhcmFtZXRlcnMsICIodSkiLCAmY29vcmRpbmF0ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJs
aW5rQXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3BwCmluZGV4IDYzOWI0MDMzNzI1Zi4uNzk3M2Qz
ZGM4NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0Fj
Y2Vzc2liaWxpdHlPYmplY3RIeXBlcmxpbmtBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaTo6c19oeXBlcmxpbmtGdW5jdGlvbnMgPSB7CiAgICAgICAgIGlmICghZ19zdHJjbXAw
KG1ldGhvZE5hbWUsICJHZXRPYmplY3QiKSkgewogICAgICAgICAgICAgaW50IGluZGV4OwogICAg
ICAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKGkpIiwgJmluZGV4KTsKLSAgICAg
ICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwg
Z192YXJpYW50X25ldygiKEAoc28pKSIsICFpbmRleCA/IGF0c3BpT2JqZWN0LT5yZWZlcmVuY2Uo
KSA6IGF0c3BpT2JqZWN0LT5yb290KCktPmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CisgICAg
ICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24s
IGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCAhaW5kZXggPyBhdHNwaU9iamVjdC0+cmVmZXJlbmNl
KCkgOiBhdHNwaU9iamVjdC0+bV9yb290LmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0VVJJIikpIHsKICAgICAg
ICAgICAgIGludCBpbmRleDsKICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywg
IihpKSIsICZpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RIeXBlcnRleHRBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RIeXBlcnRleHRBdHNw
aS5jcHAKaW5kZXggMDRmMGIzODZkYWJiLi45Y2YxODU5YmU5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEh5cGVydGV4
dEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vz
c2liaWxpdHlPYmplY3RIeXBlcnRleHRBdHNwaS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgR0RCdXNJ
bnRlcmZhY2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzX2h5cGVydGV4dEZ1bmN0
aW9ucyA9IHsKICAgICAgICAgICAgIGludCBpbmRleDsKICAgICAgICAgICAgIGdfdmFyaWFudF9n
ZXQocGFyYW1ldGVycywgIihpKSIsICZpbmRleCk7CiAgICAgICAgICAgICBhdXRvKiB3cmFwcGVy
ID0gaW5kZXggPj0gMCA/IGF0c3BpT2JqZWN0LT5oeXBlcmxpbmsoaW5kZXgpIDogbnVsbHB0cjsK
LSAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2Nh
dGlvbiwgZ192YXJpYW50X25ldygiKEAoc28pKSIsIHdyYXBwZXIgPyB3cmFwcGVyLT5oeXBlcmxp
bmtSZWZlcmVuY2UoKSA6IGF0c3BpT2JqZWN0LT5yb290KCktPmF0c3BpKCkubnVsbFJlZmVyZW5j
ZSgpKSk7CisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVl
KGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCB3cmFwcGVyID8gd3JhcHBlci0+
aHlwZXJsaW5rUmVmZXJlbmNlKCkgOiBhdHNwaU9iamVjdC0+bV9yb290LmF0c3BpKCkubnVsbFJl
ZmVyZW5jZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAi
R2V0TGlua0luZGV4IikpIHsKICAgICAgICAgICAgIGludCBvZmZzZXQ7CiAgICAgICAgICAgICBn
X3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIoaSkiLCAmb2Zmc2V0KTsKQEAgLTEwMiwxMCArMTAy
LDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
Omh5cGVybGluayh1bnNpZ25lZCBpbmRleCkgY28KICAgICAgICAgICAgIGlmICghd3JhcHBlciB8
fCAhd3JhcHBlci0+aW50ZXJmYWNlcygpLmNvbnRhaW5zKEludGVyZmFjZTo6SHlwZXJsaW5rKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0
PHVuc2lnbmVkPigrK2xpbmtJbmRleCkgPT0gaW5kZXgpIHsKLSAgICAgICAgICAgICAgICB3cmFw
cGVyLT5zZXRSb290KHJvb3QoKSk7CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KCsrbGlua0luZGV4KSA9PSBpbmRleCkKICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHBl
cjsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmls
aXR5T2JqZWN0U2VsZWN0aW9uQXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0U2VsZWN0aW9uQXRzcGkuY3BwCmluZGV4IDdhMmVl
MDExNWZiNS4uMGY2YmUzMDQ1NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RTZWxlY3Rpb25BdHNwaS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0U2Vs
ZWN0aW9uQXRzcGkuY3BwCkBAIC0zNyw3ICszNyw3IEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxlIEFj
Y2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c19zZWxlY3Rpb25GdW5jdGlvbnMgPSB7CiAgICAgICAg
ICAgICBpbnQgaW5kZXg7CiAgICAgICAgICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIo
aSkiLCAmaW5kZXgpOwogICAgICAgICAgICAgYXV0byogY2hpbGQgPSBpbmRleCA+PSAwID8gYXRz
cGlPYmplY3QtPnNlbGVjdGVkQ2hpbGQoaW5kZXgpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIGdf
ZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50
X25ldygiKEAoc28pKSIsIGNoaWxkID8gY2hpbGQtPnJlZmVyZW5jZSgpIDogYXRzcGlPYmplY3Qt
PnJvb3QoKS0+YXRzcGkoKS5udWxsUmVmZXJlbmNlKCkpKTsKKyAgICAgICAgICAgIGdfZGJ1c19t
ZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygi
KEAoc28pKSIsIGNoaWxkID8gY2hpbGQtPnJlZmVyZW5jZSgpIDogYXRzcGlPYmplY3QtPm1fcm9v
dC5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKSkpOwogICAgICAgICB9IGVsc2UgaWYgKCFnX3N0cmNt
cDAobWV0aG9kTmFtZSwgIlNlbGVjdENoaWxkIikpIHsKICAgICAgICAgICAgIGludCBpbmRleDsK
ICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIihpKSIsICZpbmRleCk7CkBA
IC0xMTAsOSArMTEwLDYgQEAgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKiBBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGk6OnNlbGVjdGVkQ2hpbGQodW5zaWduZWQgaW5kZXgKICAgICAgICAgcmV0dXJu
IHNlbGVjdGVkSXRlbXNbaW5kZXhdLT53cmFwcGVyKCk7CiAgICAgfSk7CiAKLSAgICBpZiAod3Jh
cHBlcikKLSAgICAgICAgd3JhcHBlci0+c2V0Um9vdChyb290KCkpOwotCiAgICAgcmV0dXJuIHdy
YXBwZXI7CiB9CiAKQEAgLTIzMCw3ICsyMjcsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaTo6c2VsZWN0aW9uQ2hhbmdlZCgpCiAgICAgaWYgKCFtX2lzUmVnaXN0ZXJlZC5sb2FkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHJvb3QoKS0+YXRzcGkoKS5zZWxlY3Rpb25DaGFuZ2Vk
KCp0aGlzKTsKKyAgICBtX3Jvb3QuYXRzcGkoKS5zZWxlY3Rpb25DaGFuZ2VkKCp0aGlzKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNwaS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0
c3BpLmNwcAppbmRleCA5YWE1OTUwYjRlMzYuLjRlMmRlOTliYmE5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVB
dHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0VGFibGVBdHNwaS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgR0RCdXNJbnRlcmZh
Y2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzX3RhYmxlRnVuY3Rpb25zID0gewog
ICAgICAgICAgICAgaW50IHJvdywgY29sdW1uOwogICAgICAgICAgICAgZ192YXJpYW50X2dldChw
YXJhbWV0ZXJzLCAiKGlpKSIsICZyb3csICZjb2x1bW4pOwogICAgICAgICAgICAgYXV0byogY2Vs
bCA9IHJvdyA+PSAwICYmIGNvbHVtbiA+PSAwID8gYXRzcGlPYmplY3QtPmNlbGwocm93LCBjb2x1
bW4pIDogbnVsbHB0cjsKLSAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1
cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKEAoc28pKSIsIGNlbGwgPyBjZWxs
LT5yZWZlcmVuY2UoKSA6IGF0c3BpT2JqZWN0LT5yb290KCktPmF0c3BpKCkubnVsbFJlZmVyZW5j
ZSgpKSk7CisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVl
KGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCBjZWxsID8gY2VsbC0+cmVmZXJl
bmNlKCkgOiBhdHNwaU9iamVjdC0+bV9yb290LmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0SW5kZXhBdCIpKSB7
CiAgICAgICAgICAgICBpbnQgcm93LCBjb2x1bW47CiAgICAgICAgICAgICBnX3ZhcmlhbnRfZ2V0
KHBhcmFtZXRlcnMsICIoaWkpIiwgJnJvdywgJmNvbHVtbik7CkBAIC03NSwxMiArNzUsMTIgQEAg
R0RCdXNJbnRlcmZhY2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzX3RhYmxlRnVu
Y3Rpb25zID0gewogICAgICAgICAgICAgaW50IHJvdzsKICAgICAgICAgICAgIGdfdmFyaWFudF9n
ZXQocGFyYW1ldGVycywgIihpKSIsICZyb3cpOwogICAgICAgICAgICAgYXV0byogaGVhZGVyID0g
cm93ID49IDAgPyBhdHNwaU9iamVjdC0+cm93SGVhZGVyKHJvdykgOiBudWxscHRyOwotICAgICAg
ICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBn
X3ZhcmlhbnRfbmV3KCIoQChzbykpIiwgaGVhZGVyID8gaGVhZGVyLT5yZWZlcmVuY2UoKSA6IGF0
c3BpT2JqZWN0LT5yb290KCktPmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CisgICAgICAgICAg
ICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFy
aWFudF9uZXcoIihAKHNvKSkiLCBoZWFkZXIgPyBoZWFkZXItPnJlZmVyZW5jZSgpIDogYXRzcGlP
YmplY3QtPm1fcm9vdC5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKSkpOwogICAgICAgICB9IGVsc2Ug
aWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldENvbHVtbkhlYWRlciIpKSB7CiAgICAgICAg
ICAgICBpbnQgY29sdW1uOwogICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAi
KGkpIiwgJmNvbHVtbik7CiAgICAgICAgICAgICBhdXRvKiBoZWFkZXIgPSBjb2x1bW4gPj0gMCA/
IGF0c3BpT2JqZWN0LT5jb2x1bW5IZWFkZXIoY29sdW1uKSA6IG51bGxwdHI7Ci0gICAgICAgICAg
ICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFy
aWFudF9uZXcoIihAKHNvKSkiLCBoZWFkZXIgPyBoZWFkZXItPnJlZmVyZW5jZSgpIDogYXRzcGlP
YmplY3QtPnJvb3QoKS0+YXRzcGkoKS5udWxsUmVmZXJlbmNlKCkpKTsKKyAgICAgICAgICAgIGdf
ZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50
X25ldygiKEAoc28pKSIsIGhlYWRlciA/IGhlYWRlci0+cmVmZXJlbmNlKCkgOiBhdHNwaU9iamVj
dC0+bV9yb290LmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
IWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0Um93Q29sdW1uRXh0ZW50c0F0SW5kZXgiKSkgewog
ICAgICAgICAgICAgaW50IGluZGV4OwogICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0
ZXJzLCAiKGkpIiwgJmluZGV4KTsKQEAgLTExOCwxMCArMTE4LDEwIEBAIEdEQnVzSW50ZXJmYWNl
VlRhYmxlIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c190YWJsZUZ1bmN0aW9ucyA9IHsKICAg
ICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2ludDMyKGF0c3BpT2JqZWN0LT5jb2x1bW5D
b3VudCgpKTsKICAgICAgICAgaWYgKCFnX3N0cmNtcDAocHJvcGVydHlOYW1lLCAiQ2FwdGlvbiIp
KSB7CiAgICAgICAgICAgICBhdXRvKiBjYXB0aW9uID0gYXRzcGlPYmplY3QtPnRhYmxlQ2FwdGlv
bigpOwotICAgICAgICAgICAgcmV0dXJuIGNhcHRpb24gPyBjYXB0aW9uLT5yZWZlcmVuY2UoKSA6
IGF0c3BpT2JqZWN0LT5yb290KCktPmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpOworICAgICAgICAg
ICAgcmV0dXJuIGNhcHRpb24gPyBjYXB0aW9uLT5yZWZlcmVuY2UoKSA6IGF0c3BpT2JqZWN0LT5t
X3Jvb3QuYXRzcGkoKS5udWxsUmVmZXJlbmNlKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFn
X3N0cmNtcDAocHJvcGVydHlOYW1lLCAiU3VtbWFyeSIpKQotICAgICAgICAgICAgcmV0dXJuIGF0
c3BpT2JqZWN0LT5yb290KCktPmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpOworICAgICAgICAgICAg
cmV0dXJuIGF0c3BpT2JqZWN0LT5tX3Jvb3QuYXRzcGkoKS5udWxsUmVmZXJlbmNlKCk7CiAgICAg
ICAgIGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIk5TZWxlY3RlZFJvd3MiKSkKICAgICAg
ICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2ludDMyKDApOwogICAgICAgICBpZiAoIWdfc3Ry
Y21wMChwcm9wZXJ0eU5hbWUsICJOU2VsZWN0ZWRDb2x1bW5zIikpCkBAIC0xNjAsMTIgKzE2MCw4
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSogQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpj
ZWxsKHVuc2lnbmVkIHJvdywgdW5zaWduZWQKICAgICBpZiAoIW1fYXhPYmplY3QpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKGF1dG8qIHRhYmxlQ2VsbCA9IG1fYXhPYmplY3Qt
PmNlbGxGb3JDb2x1bW5BbmRSb3coY29sdW1uLCByb3cpKSB7Ci0gICAgICAgIGlmIChhdXRvKiB3
cmFwcGVyID0gdGFibGVDZWxsLT53cmFwcGVyKCkpIHsKLSAgICAgICAgICAgIHdyYXBwZXItPnNl
dFJvb3Qocm9vdCgpKTsKLSAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgICAgICB9Ci0g
ICAgfQorICAgIGlmIChhdXRvKiB0YWJsZUNlbGwgPSBtX2F4T2JqZWN0LT5jZWxsRm9yQ29sdW1u
QW5kUm93KGNvbHVtbiwgcm93KSkKKyAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbC0+d3JhcHBlcigp
OwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0xODUsMTIgKzE4MSw4IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaSogQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0YWJsZUNhcHRpb24o
KSBjb25zdAogCiAgICAgICAgICAgICBpZiAoYXV0byBjYXB0aW9uID0gZG93bmNhc3Q8SFRNTFRh
YmxlRWxlbWVudD4oKm5vZGUpLmNhcHRpb24oKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiByZW5kZXJlciA9IGNhcHRpb24tPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGF1dG8qIGVsZW1lbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaXJzdEFjY2Vzc2libGVP
YmplY3RGcm9tTm9kZShyZW5kZXJlci0+ZWxlbWVudCgpKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBlbGVtZW50LT53cmFwcGVyKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLT5zZXRSb290KHJvb3QoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8q
IGVsZW1lbnQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9t
Tm9kZShyZW5kZXJlci0+ZWxlbWVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBlbGVtZW50LT53cmFwcGVyKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC0yNTMsMTAgKzI0NSw4IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSog
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyb3dIZWFkZXIodW5zaWduZWQgcm93KSBjb25zCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiBoZWFkZXJzKSB7CiAgICAgICAgIGF1dG8gcmFu
Z2UgPSBoZWFkZXItPnJvd0luZGV4UmFuZ2UoKTsKICAgICAgICAgaWYgKHJhbmdlLmZpcnN0IDw9
IHJvdyAmJiByb3cgPCByYW5nZS5maXJzdCArIHJhbmdlLnNlY29uZCkgewotICAgICAgICAgICAg
aWYgKGF1dG8qIHdyYXBwZXIgPSBoZWFkZXItPndyYXBwZXIoKSkgewotICAgICAgICAgICAgICAg
IHdyYXBwZXItPnNldFJvb3Qocm9vdCgpKTsKKyAgICAgICAgICAgIGlmIChhdXRvKiB3cmFwcGVy
ID0gaGVhZGVyLT53cmFwcGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0g
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI3MywxMCArMjYzLDggQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpKiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNvbHVtbkhl
YWRlcih1bnNpZ25lZCBjb2x1bW4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IGhlYWRl
cnMpIHsKICAgICAgICAgYXV0byByYW5nZSA9IGhlYWRlci0+Y29sdW1uSW5kZXhSYW5nZSgpOwog
ICAgICAgICBpZiAocmFuZ2UuZmlyc3QgPD0gY29sdW1uICYmIGNvbHVtbiA8IHJhbmdlLmZpcnN0
ICsgcmFuZ2Uuc2Vjb25kKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogd3JhcHBlciA9IGhlYWRl
ci0+d3JhcHBlcigpKSB7Ci0gICAgICAgICAgICAgICAgd3JhcHBlci0+c2V0Um9vdChyb290KCkp
OworICAgICAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBoZWFkZXItPndyYXBwZXIoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVDZWxsQXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVDZWxsQXRzcGkuY3BwCmlu
ZGV4IGUxMjQ3NTNiMzAwNy4uZDk2Mzg3OGJiY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNwaS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5
T2JqZWN0VGFibGVDZWxsQXRzcGkuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIEdEQnVzSW50ZXJmYWNl
VlRhYmxlIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c190YWJsZUNlbGxGdW5jdGlvbnMgPSB7
CiAgICAgICAgIGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIlRhYmxlIikpIHsKICAgICAg
ICAgICAgIGF1dG8qIGF4T2JqZWN0ID0gYXRzcGlPYmplY3QtPm1fYXhPYmplY3Q7CiAgICAgICAg
ICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gYXRzcGlPYmplY3QtPnJvb3QoKS0+YXRzcGkoKS5udWxsUmVmZXJlbmNl
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGF0c3BpT2JqZWN0LT5tX3Jvb3QuYXRzcGkoKS5u
dWxsUmVmZXJlbmNlKCk7CiAKICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSog
d3JhcHBlciA9IGF0c3BpT2JqZWN0LnB0cigpOwogICAgICAgICAgICAgd2hpbGUgKGF1dG8gcGFy
ZW50ID0gd3JhcHBlci0+cGFyZW50KCkpIHsKQEAgLTgwLDcgKzgwLDcgQEAgR0RCdXNJbnRlcmZh
Y2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzX3RhYmxlQ2VsbEZ1bmN0aW9ucyA9
IHsKICAgICAgICAgICAgICAgICBpZiAoYXhPYmplY3QgJiYgYXhPYmplY3QtPmlzVGFibGUoKSkK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gd3JhcHBlciA/IHdyYXBwZXItPnJlZmVyZW5jZSgpIDogYXRzcGlPYmplY3QtPnJvb3Qo
KS0+YXRzcGkoKS5udWxsUmVmZXJlbmNlKCk7CisgICAgICAgICAgICByZXR1cm4gd3JhcHBlciA/
IHdyYXBwZXItPnJlZmVyZW5jZSgpIDogYXRzcGlPYmplY3QtPm1fcm9vdC5hdHNwaSgpLm51bGxS
ZWZlcmVuY2UoKTsKICAgICAgICAgfQogCiAgICAgICAgIGdfc2V0X2Vycm9yKGVycm9yLCBHX0lP
X0VSUk9SLCBHX0lPX0VSUk9SX05PVF9TVVBQT1JURUQsICJVbmtub3duIHByb3BlcnR5ICclcyci
LCBwcm9wZXJ0eU5hbWUpOwpAQCAtMTAyLDE3ICsxMDIsNyBAQCBWZWN0b3I8UmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaT4+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Y2VsbFJvd0hl
YWRlcgogICAgIGlmIChyb2xlKCkgIT0gQXRzcGk6OlJvbGU6OlRhYmxlQ2VsbCkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaGVhZGVycyA9IG1fYXhPYmplY3QtPnJvd0hlYWRlcnMo
KTsKLSAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaT4+IHdyYXBwZXJz
OwotICAgIHdyYXBwZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaGVhZGVycy5zaXplKCkpOwot
ICAgIGF1dG8qIHJvb3QgPSB0aGlzLT5yb290KCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBoZWFk
ZXIgOiBoZWFkZXJzKSB7Ci0gICAgICAgIGlmIChhdXRvKiB3cmFwcGVyID0gaGVhZGVyLT53cmFw
cGVyKCkpIHsKLSAgICAgICAgICAgIHdyYXBwZXItPnNldFJvb3Qocm9vdCk7Ci0gICAgICAgICAg
ICB3cmFwcGVycy51bmNoZWNrZWRBcHBlbmQod3JhcHBlcik7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgcmV0dXJuIHdyYXBwZXJzOworICAgIHJldHVybiB3cmFwcGVyVmVjdG9yKG1fYXhPYmplY3Qt
PnJvd0hlYWRlcnMoKSk7CiB9CiAKIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpPj4gQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjZWxsQ29sdW1uSGVhZGVycygpIGNvbnN0
CkBAIC0xMjUsMTcgKzExNSw3IEBAIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpPj4gQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjZWxsQ29sdW1uSGVhCiAgICAgaWYgKHJv
bGUoKSAhPSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgYXV0byBoZWFkZXJzID0gbV9heE9iamVjdC0+Y29sdW1uSGVhZGVycygpOwotICAgIFZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpPj4gd3JhcHBlcnM7Ci0gICAgd3JhcHBl
cnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShoZWFkZXJzLnNpemUoKSk7Ci0gICAgYXV0byogcm9v
dCA9IHRoaXMtPnJvb3QoKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IGhlYWRlcnMp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBoZWFkZXItPndyYXBwZXIoKSkgewotICAg
ICAgICAgICAgd3JhcHBlci0+c2V0Um9vdChyb290KTsKLSAgICAgICAgICAgIHdyYXBwZXJzLnVu
Y2hlY2tlZEFwcGVuZCh3cmFwcGVyKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gd3Jh
cHBlcnM7CisgICAgcmV0dXJuIHdyYXBwZXJWZWN0b3IobV9heE9iamVjdC0+Y29sdW1uSGVhZGVy
cygpKTsKIH0KIAogdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyb3dTcGFuKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGI3ODQwOThi
ZmEyOC4uMDYzNDUwZGEyYmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5j
cHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4
dEluc2VydGVkKGNvbnN0IFN0cmluZyYgaW5zZXJ0ZWRUZXh0LCBjb25zdCBWaQogICAgIGF1dG8g
b2Zmc2V0ID0gVVRGMTZPZmZzZXRUb1VURjgobWFwcGluZywgdXRmMTZPZmZzZXQpOwogICAgIGF1
dG8gdXRmOEluc2VydGVkVGV4dCA9IGluc2VydGVkVGV4dC51dGY4KCk7CiAgICAgYXV0byBpbnNl
cnRlZFRleHRMZW5ndGggPSBnX3V0Zjhfc3RybGVuKHV0ZjhJbnNlcnRlZFRleHQuZGF0YSgpLCAt
MSk7Ci0gICAgcm9vdCgpLT5hdHNwaSgpLnRleHRDaGFuZ2VkKCp0aGlzLCAiaW5zZXJ0IiwgV1RG
TW92ZSh1dGY4SW5zZXJ0ZWRUZXh0KSwgb2Zmc2V0IC0gaW5zZXJ0ZWRUZXh0TGVuZ3RoLCBpbnNl
cnRlZFRleHRMZW5ndGgpOworICAgIG1fcm9vdC5hdHNwaSgpLnRleHRDaGFuZ2VkKCp0aGlzLCAi
aW5zZXJ0IiwgV1RGTW92ZSh1dGY4SW5zZXJ0ZWRUZXh0KSwgb2Zmc2V0IC0gaW5zZXJ0ZWRUZXh0
TGVuZ3RoLCBpbnNlcnRlZFRleHRMZW5ndGgpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaTo6dGV4dERlbGV0ZWQoY29uc3QgU3RyaW5nJiBkZWxldGVkVGV4dCwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaTo6dGV4dERlbGV0ZWQoY29uc3QgU3RyaW5nJiBkZWxldGVkVGV4dCwg
Y29uc3QgVmlzaQogICAgIGF1dG8gb2Zmc2V0ID0gVVRGMTZPZmZzZXRUb1VURjgobWFwcGluZywg
dXRmMTZPZmZzZXQpOwogICAgIGF1dG8gdXRmOERlbGV0ZWRUZXh0ID0gZGVsZXRlZFRleHQudXRm
OCgpOwogICAgIGF1dG8gZGVsZXRlZFRleHRMZW5ndGggPSBnX3V0Zjhfc3RybGVuKHV0ZjhEZWxl
dGVkVGV4dC5kYXRhKCksIC0xKTsKLSAgICByb290KCktPmF0c3BpKCkudGV4dENoYW5nZWQoKnRo
aXMsICJkZWxldGUiLCBXVEZNb3ZlKHV0ZjhEZWxldGVkVGV4dCksIG9mZnNldCwgZGVsZXRlZFRl
eHRMZW5ndGgpOworICAgIG1fcm9vdC5hdHNwaSgpLnRleHRDaGFuZ2VkKCp0aGlzLCAiZGVsZXRl
IiwgV1RGTW92ZSh1dGY4RGVsZXRlZFRleHQpLCBvZmZzZXQsIGRlbGV0ZWRUZXh0TGVuZ3RoKTsK
IH0KIAogSW50UG9pbnQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpib3VuZGFyeU9mZnNldCh1
bnNpZ25lZCB1dGYxNk9mZnNldCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KSBjb25zdApA
QCAtNzczLDEwICs3NzMsMTAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNlbGVj
dGlvbkNoYW5nZWQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW8KICAgICBhdXRvIG1h
cHBpbmcgPSBvZmZzZXRNYXBwaW5nKHV0ZjE2VGV4dCk7CiAgICAgYXV0byBjYXJldE9mZnNldCA9
IFVURjE2T2Zmc2V0VG9VVEY4KG1hcHBpbmcsIGJvdW5kcy55KCkpOwogICAgIGlmIChjYXJldE9m
ZnNldCA8PSBsZW5ndGgpCi0gICAgICAgIHJvb3QoKS0+YXRzcGkoKS50ZXh0Q2FyZXRNb3ZlZCgq
dGhpcywgY2FyZXRPZmZzZXQpOworICAgICAgICBtX3Jvb3QuYXRzcGkoKS50ZXh0Q2FyZXRNb3Zl
ZCgqdGhpcywgY2FyZXRPZmZzZXQpOwogCiAgICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpCi0g
ICAgICAgIHJvb3QoKS0+YXRzcGkoKS50ZXh0U2VsZWN0aW9uQ2hhbmdlZCgqdGhpcyk7CisgICAg
ICAgIG1fcm9vdC5hdHNwaSgpLnRleHRTZWxlY3Rpb25DaGFuZ2VkKCp0aGlzKTsKIH0KIAogQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpUZXh0QXR0cmlidXRlcyBBY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGk6OnRleHRBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHV0ZjE2T2Zmc2V0
LCBib29sIGluY2x1ZGVEZWZhdWx0KSBjb25zdApAQCAtOTQ5LDcgKzk0OSw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlc0NoYW5nZWQoKQogICAgIGlmICgh
bV9pbnRlcmZhY2VzLmNvbnRhaW5zKEludGVyZmFjZTo6VGV4dCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHJvb3QoKS0+YXRzcGkoKS50ZXh0QXR0cmlidXRlc0NoYW5nZWQoKnRoaXMpOworICAg
IG1fcm9vdC5hdHNwaSgpLnRleHRBdHRyaWJ1dGVzQ2hhbmdlZCgqdGhpcyk7CiB9CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzY3JvbGxUb01ha2VWaXNpYmxlKGludCBzdGFydE9m
ZnNldCwgaW50IGVuZE9mZnNldCwgdWludDMyX3Qgc2Nyb2xsVHlwZSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFZhbHVlQXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nl
c3NpYmlsaXR5T2JqZWN0VmFsdWVBdHNwaS5jcHAKaW5kZXggOGEzYjc0NmFlMWFiLi5lMzk4OTI5
ZTk4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdFZhbHVlQXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFZhbHVlQXRzcGkuY3BwCkBAIC0xMzcs
NyArMTM3LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnZhbHVlQ2hhbmdlZChk
b3VibGUgdmFsdWUpCiAgICAgaWYgKCFtX2lzUmVnaXN0ZXJlZC5sb2FkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHJvb3QoKS0+YXRzcGkoKS52YWx1ZUNoYW5nZWQoKnRoaXMsIHZhbHVlKTsK
KyAgICBtX3Jvb3QuYXRzcGkoKS52YWx1ZUNoYW5nZWQoKnRoaXMsIHZhbHVlKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAKaW5kZXggZDU3Y2Yy
NDJlZjZjLi5hNzk0MWI1MGE1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNwcApAQCAtMTU3
LDYgKzE1Nyw5IEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6
OnNfYWNjZXNzaWJsZUZ1bmN0aW9ucyA9IHsKIHZvaWQgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6
cmVnaXN0ZXJPYmplY3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKG1fcGFnZSkKKyAgICAgICAgbV9wYWdlLT5zZXRBY2Nlc3NpYmlsaXR5Um9vdE9i
amVjdCh0aGlzKTsKKwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8R0RCdXNJbnRlcmZhY2VJbmZvKiwg
R0RCdXNJbnRlcmZhY2VWVGFibGUqPj4gaW50ZXJmYWNlczsKICAgICBpbnRlcmZhY2VzLmFwcGVu
ZCh7IGNvbnN0X2Nhc3Q8R0RCdXNJbnRlcmZhY2VJbmZvKj4oJndlYmtpdF9hY2Nlc3NpYmxlX2lu
dGVyZmFjZSksICZzX2FjY2Vzc2libGVGdW5jdGlvbnMgfSk7CiAgICAgaW50ZXJmYWNlcy5hcHBl
bmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRfY29tcG9uZW50X2lu
dGVyZmFjZSksICZzX2NvbXBvbmVudEZ1bmN0aW9ucyB9KTsKQEAgLTE2Nyw2ICsxNzAsOSBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnVucmVnaXN0ZXJPYmplY3QoKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX2F0c3BpLnVucmVnaXN0ZXJSb290
KCp0aGlzKTsKKworICAgIGlmIChtX3BhZ2UpCisgICAgICAgIG1fcGFnZS0+c2V0QWNjZXNzaWJp
bGl0eVJvb3RPYmplY3QobnVsbHB0cik7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJvb3RBdHNw
aTo6c2V0UGF0aChTdHJpbmcmJiBwYXRoKQpAQCAtMTk4LDkgKzIwNCw2IEBAIEdWYXJpYW50KiBB
Y2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjpyZWZlcmVuY2UoKSBjb25zdAogQWNjZXNzaWJpbGl0eU9i
amVjdEF0c3BpKiBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjpjaGlsZCgpIGNvbnN0CiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghQVhPYmplY3RDYWNoZTo6
YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKLSAgICAgICAgQVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNj
ZXNzaWJpbGl0eSgpOwotCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC0yMDgsNTIgKzIxMSwxMyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqIEFjY2Vz
c2liaWxpdHlSb290QXRzcGk6OmNoaWxkKCkgY29uc3QKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgQVhPYmplY3RDYWNoZTo6ZW5hYmxl
QWNjZXNzaWJpbGl0eSgpOwogICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZnJhbWUuZG9jdW1l
bnQoKS0+YXhPYmplY3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgQVhDb3JlT2JqZWN0KiByb290T2JqZWN0ID0gY2FjaGUtPnJvb3RPYmpl
Y3QoKTsKLSAgICBpZiAoIXJvb3RPYmplY3QpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgYXV0byogd3JhcHBlciA9IHJvb3RPYmplY3QtPndyYXBwZXIoKTsKLSAgICBpZiAoIXdyYXBw
ZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgd3JhcHBlci0+c2V0Um9vdChjb25z
dF9jYXN0PEFjY2Vzc2liaWxpdHlSb290QXRzcGkqPih0aGlzKSk7Ci0gICAgd3JhcHBlci0+c2V0
UGFyZW50KG51bGxwdHIpOyAvLyBudWxscHRyIHBhcmVudCBtZWFucyByb290LgotCi0gICAgcmV0
dXJuIHdyYXBwZXI7Ci19Ci0KLUFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSogQWNjZXNzaWJpbGl0
eVJvb3RBdHNwaTo6Zm9jdXNlZE9iamVjdCgpIGNvbnN0Ci17Ci0gICAgUkVMRUFTRV9BU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVu
YWJsZWQoKSkKLSAgICAgICAgQVhPYmplY3RDYWNoZTo6ZW5hYmxlQWNjZXNzaWJpbGl0eSgpOwot
Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byog
Zm9jdXNlZERvY3VtZW50ID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5kb2N1bWVudCgpOwotICAgIGlmICghZm9jdXNlZERvY3VtZW50KQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8qIGNhY2hlID0gZm9jdXNlZERvY3VtZW50LT5heE9i
amVjdENhY2hlKCk7Ci0gICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBhdXRvKiBmb2N1c2VkT2JqZWN0ID0gY2FjaGUtPmZvY3VzZWRPYmplY3RGb3JQYWdlKG1f
cGFnZS5nZXQoKSk7Ci0gICAgaWYgKCFmb2N1c2VkT2JqZWN0KQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGF1dG8qIHdyYXBwZXIgPSBmb2N1c2VkT2JqZWN0LT53cmFwcGVyKCk7Ci0g
ICAgaWYgKCF3cmFwcGVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHdyYXBwZXIt
PnNldFJvb3QoY29uc3RfY2FzdDxBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpKj4odGhpcykpOwotCi0g
ICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHJvb3RPYmplY3QgPyByb290T2JqZWN0LT53
cmFwcGVyKCkgOiBudWxscHRyOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNl
cmlhbGl6ZShHVmFyaWFudEJ1aWxkZXIqIGJ1aWxkZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNw
aS5oCmluZGV4IGJkMTUyN2RkZTg5NS4uYTI3NWYzZmRlNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRz
cGkuaApAQCAtNDksNyArNDksNiBAQCBwdWJsaWM6CiAgICAgR1ZhcmlhbnQqIGFwcGxpY2F0aW9u
UmVmZXJlbmNlKCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpJiBhdHNwaSgpIGNvbnN0
IHsgcmV0dXJuIG1fYXRzcGk7IH0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqIGNoaWxk
KCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKiBmb2N1c2VkT2JqZWN0KCkg
Y29uc3Q7CiAKICAgICB2b2lkIHNlcmlhbGl6ZShHVmFyaWFudEJ1aWxkZXIqKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCBmMWUwOGJjNGZlYzAuLjhjY2VkN2Y1ODEyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgKQEAgLTkxLDYgKzkxLDcgQEAgbmFtZXNwYWNlIElEQkNsaWVudCB7CiBjbGFzcyBJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI7CiB9CiAKK2NsYXNzIEFjY2Vzc2liaWxpdHlSb290QXRzcGk7CiBjbGFz
cyBBcHBsZVBheUFNU1VJUGF5bWVudEhhbmRsZXI7CiBjbGFzcyBBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXI7CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDbGllbnQ7CkBAIC05MTMsNiArOTE0LDEx
IEBAIHB1YmxpYzoKIAogICAgIE1vZGVsUGxheWVyUHJvdmlkZXImIG1vZGVsUGxheWVyUHJvdmlk
ZXIoKTsKIAorI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKSAmJiBVU0UoQVRTUEkpCisgICAgQWNj
ZXNzaWJpbGl0eVJvb3RBdHNwaSogYWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBtX2FjY2Vzc2liaWxpdHlSb290T2JqZWN0OyB9CisgICAgdm9pZCBzZXRBY2Nlc3NpYmls
aXR5Um9vdE9iamVjdChBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpKiByb290T2JqZWN0KSB7IG1fYWNj
ZXNzaWJpbGl0eVJvb3RPYmplY3QgPSByb290T2JqZWN0OyB9CisjZW5kaWYKKwogcHJpdmF0ZToK
ICAgICBzdHJ1Y3QgTmF2aWdhdGlvbiB7CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFp
bjsKQEAgLTEyNTksNiArMTI2NSwxMCBAQCBwcml2YXRlOgogICAgIHVzaW5nIENhY2hlZFRleHRS
ZWNvZ25pdGlvblJlc3VsdCA9IHN0ZDo6cGFpcjxUZXh0UmVjb2duaXRpb25SZXN1bHQsIEludFJl
Y3Q+OwogICAgIFdlYWtIYXNoTWFwPEhUTUxFbGVtZW50LCBDYWNoZWRUZXh0UmVjb2duaXRpb25S
ZXN1bHQ+IG1fdGV4dFJlY29nbml0aW9uUmVzdWx0czsKICNlbmRpZgorCisjaWYgRU5BQkxFKEFD
Q0VTU0lCSUxJVFkpICYmIFVTRShBVFNQSSkKKyAgICBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpKiBt
X2FjY2Vzc2liaWxpdHlSb290T2JqZWN0IHsgbnVsbHB0ciB9OworI2VuZGlmCiB9OwogCiBpbmxp
bmUgUGFnZUdyb3VwJiBQYWdlOjpncm91cCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNlYzE1MmMxZjcwNi4uNTgx
YmQ3YTAyN2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTEyLTAzICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5
XSBFbnN1cmUgYXRzcGkgd3JhcHBlcnMgaGF2ZSByb290IHNldCBhdCBjb25zdHJ1Y3Rpb24gdGlt
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODA0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChX
S0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KTogUmVtb3ZlIEFUU1BJIHNwZWNpZmljIGNvZGUuCisg
ICAgICAgIChXS0FjY2Vzc2liaWxpdHlGb2N1c2VkT2JqZWN0KTogRGl0dG8uCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJvb3RPYmplY3QgY29uc3QpOiBEZWxldGVkLgorCiAyMDIxLTEyLTAxICBT
aWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEZpbGVTeXN0ZW1TeW5j
QWNjZXNzSGFuZGxlIHNob3VsZCBiZSBpbnZhbGlkYXRlZCB3aGVuIG5ldHdvcmsgcHJvY2VzcyBj
cmFzaGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDI2NzU0MTAxYTA4Yi4uNjBj
MjUzMDdiOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtMjQ3LDEwICsyNDcs
NiBAQCB2b2lkKiBXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmKQogICAgIGlmICghcGFnZVJlZikKICAgICAgICAgcmV0dXJuIDA7CiAKLSNpZiBVU0UoQVRT
UEkpCi0gICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHBhZ2VSZWYpLT5hY2Nlc3NpYmlsaXR5Um9v
dE9iamVjdCgpLmNoaWxkKCk7Ci0jZW5kaWYKLQogICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBX
ZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+Y29yZVBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtMjc4LDEwICsyNzQsNiBAQCB2b2lkKiBXS0FjY2Vzc2liaWxpdHlG
b2N1c2VkT2JqZWN0KFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogICAgIGlmICghcGFnZVJlZikK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSNpZiBVU0UoQVRTUEkpCi0gICAgcmV0dXJuIFdlYktpdDo6
dG9JbXBsKHBhZ2VSZWYpLT5hY2Nlc3NpYmlsaXR5Um9vdE9iamVjdCgpLmZvY3VzZWRPYmplY3Qo
KTsKLSNlbmRpZgotCiAgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IFdlYktpdDo6dG9JbXBsKHBh
Z2VSZWYpLT5jb3JlUGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjYyZGU2YTQy
YTY5Li5hMTZhMjA5NjRlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTE0OTQsMTAgKzE0OTQsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZXBh
cmVUb1J1bk1vZGFsSmF2YVNjcmlwdERpYWxvZygpOwogCi0jaWYgVVNFKEFUU1BJKQotICAgIGNv
bnN0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSb290QXRzcGkmIGFjY2Vzc2liaWxpdHlSb290T2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gKm1fYWNjZXNzaWJpbGl0eVJvb3RPYmplY3Q7IH0KLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQogICAgIGJvb2wgdXNlQVJLaXRG
b3JNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlQVJLaXRGb3JNb2RlbDsgfTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk0NWVh
ZWI4MjMzMS4uMzM0ZTdiMTcxYzc2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMDMgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW2ExMXldIEVu
c3VyZSBhdHNwaSB3cmFwcGVycyBoYXZlIHJvb3Qgc2V0IGF0IGNvbnN0cnVjdGlvbiB0aW1lCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM4MDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdHNw
aS5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpheFJ1bkxvb3Ap
OgorCiAyMDIxLTEyLTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLiBbR1RLXSBVc2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAg
aW4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
QXRzcGkuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0c3BpLmNwcAppbmRleCAxMDZjYjYzOTVjY2QuLjQ5ZWRh
MDIzZjc0MiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdHNwaS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0c3BpLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
QXRzcGkuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgUnVuTG9vcCYgQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6OmF4UnVuTG9vcCgpCiAgICAgICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpOwogICAgICAgICBhdXRvKiBlbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKj4oV0tB
Y2Nlc3NpYmlsaXR5Um9vdE9iamVjdChwYWdlKSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVs
ZW1lbnQpOwotICAgICAgICBtX2F4UnVuTG9vcCA9ICZlbGVtZW50LT5yb290KCktPmF0c3BpKCku
cnVuTG9vcCgpOworICAgICAgICBtX2F4UnVuTG9vcCA9ICZlbGVtZW50LT5yb290KCkuYXRzcGko
KS5ydW5Mb29wKCk7CiAgICAgfQogCiAgICAgcmV0dXJuICptX2F4UnVuTG9vcDsK
</data>
<flag name="review"
          id="471105"
          type_id="1"
          status="+"
          setter="jdiggs"
    />
          </attachment>
      

    </bug>

</bugzilla>