<?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>234737</bug_id>
          
          <creation_ts>2021-12-28 23:37:09 -0800</creation_ts>
          <short_desc>[GTK][a11y] Web process crashes in some sites having SVG images</short_desc>
          <delta_ts>2022-01-11 06:07:49 -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=234563</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=233804</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>
    
    <blocked>234740</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>1827156</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-28 23:37:09 -0800</bug_when>
    <thetext>Changes in r287388 are not enough, it can still happen that root hasn&apos;t been set to the SVGImage page when the wrapper are created. So, we can&apos;t actually create the wrappers with a reference to the root object as we did in r286767</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827157</commentid>
    <comment_count>1</comment_count>
      <attachid>448066</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-12-29 00:36:13 -0800</bug_when>
    <thetext>Created attachment 448066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829465</commentid>
    <comment_count>2</comment_count>
      <attachid>448066</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-01-10 07:37:37 -0800</bug_when>
    <thetext>Comment on attachment 448066
Patch

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

&gt; Source/WebCore/accessibility/atspi/AccessibilityAtspi.cpp:35
&gt; +static AccessibilityAtspi* s_currentAtspi;

This smells like we may want to use “NeverDestroyed&lt;AccessibilityAtspi&gt;“ and provide instead a
“::singleton()“ method. As far as I find from the code, only the WebProcess will have an instance
(and only one) of this, which gets created in “WebProcess::platformInitializeWebProcess()”. Then
we could ditch the “WebProcess::m_accessibility” member and the “WebProcess::accessibilityAtspi()“
accessor — then “WebPageGtk.cpp“ can use “AccessibilityAtspi::singleton()”, and that seems the
only place where the accessor is ever used.

Of course we would still something like an “AccessibilityAtspi::initialize(const String&amp; busAddress)”
static method to configure the single instance from “::platformInitializeWebProcess()”.

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829749</commentid>
    <comment_count>3</comment_count>
      <attachid>448835</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-01-11 02:52:18 -0800</bug_when>
    <thetext>Created attachment 448835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829756</commentid>
    <comment_count>4</comment_count>
      <attachid>448835</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-01-11 03:38:49 -0800</bug_when>
    <thetext>Comment on attachment 448835
Patch

Thanks for the updated patch! I think it looks clearer now and I like
it that now the fact that AccessibilityAtspi is a single instance is
explicitly stated in the code :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829783</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-01-11 06:07:49 -0800</bug_when>
    <thetext>Committed r287876 (245920@trunk): &lt;https://commits.webkit.org/245920@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448066</attachid>
            <date>2021-12-29 00:36:13 -0800</date>
            <delta_ts>2022-01-11 02:52:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-root.diff</filename>
            <type>text/plain</type>
            <size>50673</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNzcwOTZmMDZjNzIuLjMyMTVmNmYyYTNhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDc5IEBACisyMDIxLTEyLTI5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBXZWIgcHJvY2VzcyBjcmFzaGVzIGlu
IHNvbWUgc2l0ZXMgaGF2aW5nIFNWRyBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDczNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgdGhlIGNoYW5nZXMgaW4gcjI4NzM4
OCBhcmUgbm90IGVub3VnaCwgaXQgY2FuIHN0aWxsIGhhcHBlbiB0aGF0IHJvb3QgaGFzbid0IGJl
ZW4gc2V0IHRvIHRoZQorICAgICAgICBTVkdJbWFnZSBwYWdlIHdoZW4gdGhlIHdyYXBwZXJzIGFy
ZSBjcmVhdGVkLiBTbywgd2UgY2FuJ3QgYWN0dWFsbHkgY3JlYXRlIHRoZSB3cmFwcGVycyB3aXRo
IGEgcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICByb290IG9iamVjdCBhcyB3ZSBkaWQgaW4gcjI4
Njc2Ny4gSW4gbW9zdCBvZiB0aGUgY2FzZXMgd3JhcHBlcnMgdXNlIHRoZSByb290IGp1c3QgdG8g
Z2V0IEFjY2Vzc2liaWxpdHlBdHNwaSwKKyAgICAgICAgd2hpY2ggaXMgbm90IGEgc2luZ2xldG9u
LCBidXQgaXQncyBjcmVhdGVkIGFuZCBvd25lZCBieSB0aGUgd2ViIHByb2Nlc3Mgc2luZ2xldG9u
IGF0IHN0YXJ0dXAsIHNvIGl0IGNhbiBiZQorICAgICAgICBhY2Nlc3NlZCBnbG9iYWx5LiBUaGlz
IHBhdGNoIGFkZHMgQWNjZXNzaWJpbGl0eUF0c3BpOjpjdXJyZW50KCkgdG8gZ2V0IHRoZSBjdXJy
ZW50IGdsb2JhbCBpbnN0YW5jZSB3aXRob3V0CisgICAgICAgIGhhdmluZyB0byBrZWVwIGEgcmVm
ZXJlbmNlIGluIHRoZSByb290IG9iamVjdC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdSb290RWxlbWVudCBjb25zdCk6IE1vdmUgdGhlIGNv
ZGUgdG8gc2V0IHRoZSByb290IGluIFNWR0ltYWdlIHBhZ2UKKyAgICAgICAgYmVmb3JlIHRoZSBy
ZW1vdGUgc3ZnIHdyYXBwZXIgaXMgY3JlYXRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
c3BpL0FYT2JqZWN0Q2FjaGVBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjphdHRhY2hXcmFwcGVyKTogSnVzdCBwYXNzIHRoZSBwYWdlIHJvb3Qgb2JqZWN0IHRvIHRo
ZSB3cmFwcGVyIGNvbnN0cnVjdG9yLCB0aGF0IG5vdworICAgICAgICByZWNlaXZlcyBhIHBvaW50
ZXIgdGhhdCBtaWdodCBiZSBudWxscHRyLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkv
QWNjZXNzaWJpbGl0eUF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlB
dHNwaTo6QWNjZXNzaWJpbGl0eUF0c3BpKTogU2V0IHRoZSBnbG9iYWwgaW5zdGFuY2UuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6On5BY2Nlc3NpYmlsaXR5QXRzcGkpOiBS
ZXNldCB0aGUgZ2xvYmFsIGluc3RhbmNlLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUF0c3BpOjpjdXJyZW50KTogUmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgaW5zdGFu
Y2UuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OmFwcGxpY2F0aW9uUmVm
ZXJlbmNlIGNvbnN0KTogVGhpcyBhbGxvd3Mgd3JhcHBlcnMgdG8gZ2V0IHRoZSBhcHBsaWNhdGlv
biByZWZlcmVuY2UKKyAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gY2hlY2sgaWYgbV9yb290IGlz
IG51bGxwdHIgb3Igbm90LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjpw
YXJlbnRDaGFuZ2VkKTogVXNlIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6aXNUcmVlUmVnaXN0
ZXJlZCgpCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OmNoaWxkcmVuQ2hh
bmdlZCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eUF0c3BpLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0QXRzcGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
OjpjcmVhdGUpOiBSZWNlaXZlIGEgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaSBwb2ludGVyIGluc3Rl
YWQgb2YgcmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Y2FjaGVEZXN0cm95ZWQpOiBPbmx5IGNhbGwgQWNj
ZXNzaWJpbGl0eVJvb3RBdHNwaTo6Y2hpbGRSZW1vdmVkIGlmIHBhcmVudCBpcworICAgICAgICB0
aGUgcm9vdCBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk6OmVsZW1lbnREZXN0cm95ZWQpOiBOdWxsIGNoZWNrIG1fcm9vdCBhbmQgdXNlIEFjY2Vzc2li
aWxpdHlBdHNwaTo6Y3VycmVudCgpLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdEF0c3BpOjpyb290KTogR2V0IHRoZSByb290IGlmIGFscmVhZHkgc2V0IG9yIHRyeSB0byBn
ZXQgaXQgZnJvbSB0aGUgcGFnZS4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaTo6aXNUcmVlUmVnaXN0ZXJlZCBjb25zdCk6IFJldHVybiB0cnkgaWYgcm9vdCBoYXMg
YmVlbiBzZXQgYW5kIGl0cyB0cmVlIGhhcworICAgICAgICBiZWVuIHJlZ2lzdGVyZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJlZ2lzdGVyT2JqZWN0KTog
VXNlIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6cm9vdCgpLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyZWZlcmVuY2UpOiBVc2UgQWNjZXNzaWJpbGl0eUF0
c3BpOjpjdXJyZW50KCkuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk6Omh5cGVybGlua1JlZmVyZW5jZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpOjpzZXRQYXJlbnQpOiBSZXR1cm4gZWFybHkgYWxzbyBpZiByb290
IGhhc24ndCBiZWVuIHNldCB5ZXQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0QXRzcGk6OnBhcmVudFJlZmVyZW5jZSBjb25zdCk6IFVzZSBBY2Nlc3NpYmlsaXR5QXRzcGk6
OmN1cnJlbnQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6
c2VyaWFsaXplIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGk6OmNoaWxkQWRkZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6Y2hpbGRSZW1vdmVkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnN0YXRlQ2hhbmdlZCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpsb2FkRXZlbnQpOiBEaXR0
by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdENv
bXBvbmVudEF0c3BpLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RIeXBlcmxpbmtBdHNwaS5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9h
dHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJ0ZXh0QXRzcGkuY3BwOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFNlbGVjdGlvbkF0c3BpLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c2VsZWN0aW9uQ2hh
bmdlZCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdFRhYmxlQXRzcGkuY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0ZXh0SW5zZXJ0ZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dERlbGV0ZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c2VsZWN0
aW9uQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjp0ZXh0QXR0cmlidXRlc0NoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RWYWx1ZUF0c3BpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dmFsdWVDaGFuZ2VkKTogRGl0dG8u
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSb290QXRzcGk6OmNyZWF0ZSk6IFJl
bW92ZSBBY2Nlc3NpYmlsaXR5QXRzcGkgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJvb3RBdHNwaTo6QWNjZXNzaWJpbGl0eVJvb3RBdHNwaSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6cmVnaXN0ZXJPYmplY3QpOiBV
c2UgQWNjZXNzaWJpbGl0eUF0c3BpOjpjdXJyZW50KCkuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5Um9vdEF0c3BpOjp1bnJlZ2lzdGVyT2JqZWN0KTogRGl0dG8KKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSb290QXRzcGk6OmVtYmVkZGVkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjphcHBsaWNhdGlvblJlZmVyZW5jZSBj
b25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6
cmVmZXJlbmNlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
Um9vdEF0c3BpOjpjaGlsZEFkZGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5Um9vdEF0c3BpOjpjaGlsZFJlbW92ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNlcmlhbGl6ZSBjb25zdCk6IERpdHRvLgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5oOgorCiAyMDIx
LTEyLTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXVthMTF5XSBUZXN0IGFjY2Vzc2liaWxpdHkvYXJpYS1pbmhlcml0cy1wcmVzZW50
YXRpb25hbC5odG1sIGlzIGZhaWxpbmcgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5k
ZXggODQ3ZGUxNmRiNjIzLi5lMmI1NTFhMTJmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAt
MzM5MiwxNyArMzM5MiwxOCBAQCBBY2Nlc3NpYmlsaXR5U1ZHUm9vdCogQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6cmVtb3RlU1ZHUm9vdEVsZW1lbnQoQ3JlYXRpb25DaAogICAgIEFYT2JqZWN0
Q2FjaGUqIGNhY2hlID0gZnJhbWUuZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpOwogICAgIGlm
ICghY2FjaGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHJvb3RTVkdPYmplY3QgPSBjcmVhdGVJZk5lY2Vzc2FyeSA9PSBDcmVhdGUgPyBjYWNoZS0+
Z2V0T3JDcmVhdGUocmVuZGVyZXJSb290KSA6IGNhY2hlLT5nZXQocmVuZGVyZXJSb290KTsKLQot
ICAgIEFTU0VSVCghY3JlYXRlSWZOZWNlc3NhcnkgfHwgcm9vdFNWR09iamVjdCk7Ci0gICAgaWYg
KCFpczxBY2Nlc3NpYmlsaXR5U1ZHUm9vdD4ocm9vdFNWR09iamVjdCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwogCiAjaWYgVVNFKEFUU1BJKQogICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1l
bnQtPnBhZ2UoKSkKICAgICAgICAgcGFnZS0+c2V0QWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoY3Jl
YXRlSWZOZWNlc3NhcnkgPT0gQ3JlYXRlID8gYXhPYmplY3RDYWNoZSgpLT5kb2N1bWVudCgpLnBh
Z2UoKS0+YWNjZXNzaWJpbGl0eVJvb3RPYmplY3QoKSA6IG51bGxwdHIpOwogI2VuZGlmCiAKKyAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290U1ZHT2JqZWN0ID0gY3JlYXRlSWZOZWNlc3Nhcnkg
PT0gQ3JlYXRlID8gY2FjaGUtPmdldE9yQ3JlYXRlKHJlbmRlcmVyUm9vdCkgOiBjYWNoZS0+Z2V0
KHJlbmRlcmVyUm9vdCk7CisKKyAgICBBU1NFUlQoIWNyZWF0ZUlmTmVjZXNzYXJ5IHx8IHJvb3RT
VkdPYmplY3QpOworICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVNWR1Jvb3Q+KHJvb3RTVkdPYmpl
Y3QpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIHJldHVybiBkb3duY2FzdDxBY2Nl
c3NpYmlsaXR5U1ZHUm9vdD4ocm9vdFNWR09iamVjdCk7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FYT2JqZWN0Q2FjaGVBdHNwaS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FYT2JqZWN0Q2FjaGVBdHNwaS5j
cHAKaW5kZXggYjcxNjhjYjVmNTcyLi45MDE5YzcwZTRiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQVhPYmplY3RDYWNoZUF0c3BpLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FYT2JqZWN0Q2FjaGVBdHNwaS5jcHAK
QEAgLTM1LDExICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBBWE9iamVjdENh
Y2hlOjphdHRhY2hXcmFwcGVyKEFYQ29yZU9iamVjdCogYXhPYmplY3QpCiB7Ci0gICAgYXV0byog
cm9vdFdyYXBwZXIgPSBkb2N1bWVudCgpLnBhZ2UoKS0+YWNjZXNzaWJpbGl0eVJvb3RPYmplY3Qo
KTsKLSAgICBpZiAoIXJvb3RXcmFwcGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHdy
YXBwZXIgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNyZWF0ZShheE9iamVjdCwgKnJvb3RX
cmFwcGVyKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNy
ZWF0ZShheE9iamVjdCwgZG9jdW1lbnQoKS5wYWdlKCktPmFjY2Vzc2liaWxpdHlSb290T2JqZWN0
KCkpOwogICAgIGF4T2JqZWN0LT5zZXRXcmFwcGVyKHdyYXBwZXIucHRyKCkpOwogCiAgICAgbV9k
ZWZlcnJlZFBhcmVudENoYW5nZWRMaXN0LmFkZChheE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5jcHAK
aW5kZXggYWYzNGFlNTMwNzdlLi43OGU0MTY4MjEzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5jcHAKQEAg
LTMyLDEyICszMiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBBY2Nlc3Np
YmlsaXR5QXRzcGkqIHNfY3VycmVudEF0c3BpOworCiBBY2Nlc3NpYmlsaXR5QXRzcGk6OkFjY2Vz
c2liaWxpdHlBdHNwaShjb25zdCBTdHJpbmcmIGJ1c0FkZHJlc3MpCiAgICAgOiBtX3F1ZXVlKFdv
cmtRdWV1ZTo6Y3JlYXRlKCJvcmcud2Via2l0LmExMXkiKSkKIHsKICAgICBSRUxFQVNFX0FTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXNfY3VycmVudEF0c3BpKTsK
KyAgICBzX2N1cnJlbnRBdHNwaSA9IHRoaXM7CiAgICAgaWYgKGJ1c0FkZHJlc3MuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CisKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgYnVzQWRk
cmVzcyA9IGJ1c0FkZHJlc3MuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBhZG9wdEdSZWYoZ19kYnVz
X2Nvbm5lY3Rpb25fbmV3X2Zvcl9hZGRyZXNzX3N5bmMoYnVzQWRkcmVzcy51dGY4KCkuZGF0YSgp
LApAQCAtNTUsNiArNjAsMTUgQEAgQWNjZXNzaWJpbGl0eUF0c3BpOjp+QWNjZXNzaWJpbGl0eUF0
c3BpKCkKIHsKICAgICBpZiAobV9yZWdpc3RyeSkKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNf
ZGlzY29ubmVjdF9ieV9kYXRhKG1fcmVnaXN0cnkuZ2V0KCksIHRoaXMpOworCisgICAgUkVMRUFT
RV9BU1NFUlQoc19jdXJyZW50QXRzcGkpOworICAgIHNfY3VycmVudEF0c3BpID0gbnVsbHB0cjsK
K30KKworQWNjZXNzaWJpbGl0eUF0c3BpJiBBY2Nlc3NpYmlsaXR5QXRzcGk6OmN1cnJlbnQoKQor
eworICAgIFJFTEVBU0VfQVNTRVJUKHNfY3VycmVudEF0c3BpKTsKKyAgICByZXR1cm4gKnNfY3Vy
cmVudEF0c3BpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6cmVnaXN0ZXJUcmVlcygp
IGNvbnN0CkBAIC0yMTgsNiArMjMyLDE5IEBAIEdWYXJpYW50KiBBY2Nlc3NpYmlsaXR5QXRzcGk6
Om51bGxSZWZlcmVuY2UoKSBjb25zdAogICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3KCIoc28pIiwg
dW5pcXVlTmFtZSgpLCAiL29yZy9hMTF5L2F0c3BpL251bGwiKTsKIH0KIAorR1ZhcmlhbnQqIEFj
Y2Vzc2liaWxpdHlBdHNwaTo6YXBwbGljYXRpb25SZWZlcmVuY2UoKSBjb25zdAoreworICAgIFJF
TEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBUaGUgYXBwbGljYXRpb24g
aXMgdGhlIHNhbWUgZm9yIGFsbCByb290IG9iamVjdHMsIHNvIGp1c3QgdXNlIHRoZSBmaXJzdCBy
b290IG9iamVjdCB0aGF0IGlzIGFscmVhZHkgZW1iZWRkZWQuCisgICAgZm9yIChhdXRvKiByb290
T2JqZWN0IDogbV9yb290T2JqZWN0cy5rZXlzKCkpIHsKKyAgICAgICAgaWYgKCFyb290T2JqZWN0
LT5wYXRoKCkuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gcm9vdE9iamVjdC0+YXBwbGlj
YXRpb25SZWZlcmVuY2UoKTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbFJlZmVyZW5jZSgpOwor
fQorCiB2b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6cmVnaXN0ZXJSb290KEFjY2Vzc2liaWxpdHlS
b290QXRzcGkmIHJvb3RPYmplY3QsIFZlY3RvcjxzdGQ6OnBhaXI8R0RCdXNJbnRlcmZhY2VJbmZv
KiwgR0RCdXNJbnRlcmZhY2VWVGFibGUqPj4mJiBpbnRlcmZhY2VzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTMyOSw3ICszNTYsNyBAQCB2b2lkIEFjY2Vz
c2liaWxpdHlBdHNwaTo6cGFyZW50Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkmIGF0
c3BpT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEFsd2F5cyBlbWl0
IHBhcmVudENoYW5nZWQgd2hlbiB0aGUgdHJlZSBpcyByZWdpc3RlcmVkIGJlY2F1c2UgdGhlIGF0
c3BpIGNhY2hlIGFsd2F5cyBjb25zdW1lcyBpdC4KLSAgICAgICAgaWYgKCFhdHNwaU9iamVjdC0+
cm9vdCgpLmlzVHJlZVJlZ2lzdGVyZWQoKSkKKyAgICAgICAgaWYgKCFhdHNwaU9iamVjdC0+aXNU
cmVlUmVnaXN0ZXJlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEVtaXQg
cGFyZW50Q2hhbmdlZCBvbmx5IGlmIHRoZSBvYmplY3QgaXMgYWxyZWFkeSByZWdpc3RlcmVkLCBv
dGhlcndpc2UgcmVnaXN0ZXIgdGhlIG9iamVjdCwKQEAgLTM2NSw3ICszOTIsNyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlBdHNwaTo6Y2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aSYgYXRzcGlPYmplY3QsCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gQWx3YXlz
IGVtaXQgQ2hpbGRyZW5DaGFuZ2VkIHdoZW4gdGhlIHRyZWUgaXMgcmVnaXN0ZXJlZCBiZWNhdXNl
IHRoZSBhdHNwaSBjYWNoZSBhbHdheXMgY29uc3VtZXMgaXQuCi0gICAgICAgIGlmICghYXRzcGlP
YmplY3QtPnJvb3QoKS5pc1RyZWVSZWdpc3RlcmVkKCkpCisgICAgICAgIGlmICghYXRzcGlPYmpl
Y3QtPmlzVHJlZVJlZ2lzdGVyZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBn
X2RidXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbChtX2Nvbm5lY3Rpb24uZ2V0KCksIG51bGxwdHIs
IGF0c3BpT2JqZWN0LT5wYXRoKCkudXRmOCgpLmRhdGEoKSwgIm9yZy5hMTF5LmF0c3BpLkV2ZW50
Lk9iamVjdCIsICJDaGlsZHJlbkNoYW5nZWQiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmgKaW5kZXggNzU0ZjMwY2Qy
ZDY4Li5hMDkwNGFiMjEwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3BpLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuaApAQCAtNDUsMTAgKzQ1LDEzIEBAIHB1
YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5QXRzcGkoY29uc3QgU3RyaW5nJik7CiAgICAgfkFjY2Vz
c2liaWxpdHlBdHNwaSgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEFjY2Vzc2liaWxp
dHlBdHNwaSYgY3VycmVudCgpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgUnVuTG9vcCYgcnVuTG9v
cCgpIGNvbnN0OwogCiAgICAgY29uc3QgY2hhciogdW5pcXVlTmFtZSgpIGNvbnN0OwogICAgIEdW
YXJpYW50KiBudWxsUmVmZXJlbmNlKCkgY29uc3Q7CisgICAgR1ZhcmlhbnQqIGFwcGxpY2F0aW9u
UmVmZXJlbmNlKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNFdmVudExpc3RlbmVycygpIGNvbnN0IHsg
cmV0dXJuICFtX2V2ZW50TGlzdGVuZXJzLmlzRW1wdHkoKTsgfQogCiAgICAgdm9pZCByZWdpc3Rl
clJvb3QoQWNjZXNzaWJpbGl0eVJvb3RBdHNwaSYsIFZlY3RvcjxzdGQ6OnBhaXI8R0RCdXNJbnRl
cmZhY2VJbmZvKiwgR0RCdXNJbnRlcmZhY2VWVGFibGUqPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKaW5k
ZXggMGYzMjNkMTliMmQ2Li4xMDEzMDc4MWIzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNyZWF0ZShB
WENvcmVPYmplY3QqIGNvcmVPYmplY3QsIEFjY2Vzc2liaWxpdHlSb290QXRzcGkmIHJvb3QpCitS
ZWY8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNy
ZWF0ZShBWENvcmVPYmplY3QqIGNvcmVPYmplY3QsIEFjY2Vzc2liaWxpdHlSb290QXRzcGkqIHJv
b3QpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
KGNvcmVPYmplY3QsIHJvb3QpKTsKIH0KQEAgLTExMCw3ICsxMTAsNyBAQCBPcHRpb25TZXQ8QWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpJbnRlcmZhY2U+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aTo6aW50ZXJmYQogICAgIHJldHVybiBpbnRlcmZhY2VzOwogfQogCi1BY2Nlc3NpYmlsaXR5T2Jq
ZWN0QXRzcGk6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaShBWENvcmVPYmplY3QqIGNvcmVPYmpl
Y3QsIEFjY2Vzc2liaWxpdHlSb290QXRzcGkmIHJvb3QpCitBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaShBWENvcmVPYmplY3QqIGNvcmVPYmplY3QsIEFj
Y2Vzc2liaWxpdHlSb290QXRzcGkqIHJvb3QpCiAgICAgOiBtX2NvcmVPYmplY3QoY29yZU9iamVj
dCkKICAgICAsIG1faW50ZXJmYWNlcyhpbnRlcmZhY2VzRm9yT2JqZWN0KCptX2NvcmVPYmplY3Qp
KQogICAgICwgbV9yb290KHJvb3QpCkBAIC0xMzYsOCArMTM2LDEwIEBAIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjpjYWNoZURlc3Ryb3llZCgpCiAgICAgaWYgKCFtX2lzUmVnaXN0ZXJl
ZC5sb2FkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcm9vdC5jaGlsZFJlbW92ZWQoKnRo
aXMpOwotICAgIG1fcm9vdC5hdHNwaSgpLnVucmVnaXN0ZXJPYmplY3QoKnRoaXMpOworICAgIGlm
IChtX3BhcmVudCAmJiAhKm1fcGFyZW50ICYmIG1fcm9vdCkKKyAgICAgICAgbV9yb290LT5jaGls
ZFJlbW92ZWQoKnRoaXMpOworCisgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpjdXJyZW50KCkudW5y
ZWdpc3Rlck9iamVjdCgqdGhpcyk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
OjplbGVtZW50RGVzdHJveWVkKCkKQEAgLTE1MCwxMSArMTUyLDExIEBAIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjplbGVtZW50RGVzdHJveWVkKCkKICAgICBpZiAobV9wYXJlbnQpIHsK
ICAgICAgICAgaWYgKCptX3BhcmVudCkKICAgICAgICAgICAgIG1fcGFyZW50LnZhbHVlKCktPmNo
aWxkUmVtb3ZlZCgqdGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcm9vdC5jaGls
ZFJlbW92ZWQoKnRoaXMpOworICAgICAgICBlbHNlIGlmIChtX3Jvb3QpCisgICAgICAgICAgICBt
X3Jvb3QtPmNoaWxkUmVtb3ZlZCgqdGhpcyk7CiAgICAgfQogCi0gICAgbV9yb290LmF0c3BpKCku
dW5yZWdpc3Rlck9iamVjdCgqdGhpcyk7CisgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpjdXJyZW50
KCkudW5yZWdpc3Rlck9iamVjdCgqdGhpcyk7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBhdHNwaVJv
bGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKQEAgLTQzMiwxMiArNDM0LDEyIEBAIEdEQnVzSW50
ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c19hY2Nlc3NpYmxlRnVuY3Rp
b25zID0gewogCiAgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3Zh
bHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcikpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldEFwcGxpY2F0aW9uIikpCi0g
ICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRp
b24sIGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCBhdHNwaU9iamVjdC0+bV9yb290LmFwcGxpY2F0
aW9uUmVmZXJlbmNlKCkpKTsKKyAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9y
ZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKEAoc28pKSIsIEFjY2Vzc2li
aWxpdHlBdHNwaTo6Y3VycmVudCgpLmFwcGxpY2F0aW9uUmVmZXJlbmNlKCkpKTsKICAgICAgICAg
ZWxzZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0Q2hpbGRBdEluZGV4IikpIHsKICAg
ICAgICAgICAgIGludCBpbmRleDsKICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVy
cywgIihpKSIsICZpbmRleCk7CiAgICAgICAgICAgICBhdXRvKiB3cmFwcGVyID0gaW5kZXggPj0g
MCA/IGF0c3BpT2JqZWN0LT5jaGlsZEF0KGluZGV4KSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBn
X2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFu
dF9uZXcoIihAKHNvKSkiLCB3cmFwcGVyID8gd3JhcHBlci0+cmVmZXJlbmNlKCkgOiBhdHNwaU9i
amVjdC0+bV9yb290LmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CisgICAgICAgICAgICBnX2Ri
dXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9u
ZXcoIihAKHNvKSkiLCB3cmFwcGVyID8gd3JhcHBlci0+cmVmZXJlbmNlKCkgOiBBY2Nlc3NpYmls
aXR5QXRzcGk6OmN1cnJlbnQoKS5udWxsUmVmZXJlbmNlKCkpKTsKICAgICAgICAgfSBlbHNlIGlm
ICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRDaGlsZHJlbiIpKSB7CiAgICAgICAgICAgICBH
VmFyaWFudEJ1aWxkZXIgYnVpbGRlciA9IEdfVkFSSUFOVF9CVUlMREVSX0lOSVQoR19WQVJJQU5U
X1RZUEUoImEoc28pIikpOwogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB3cmFwcGVyIDog
YXRzcGlPYmplY3QtPmNoaWxkcmVuKCkpCkBAIC00ODMsNiArNDg1LDIzIEBAIEdEQnVzSW50ZXJm
YWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c19hY2Nlc3NpYmxlRnVuY3Rpb25z
ID0gewogICAgIG51bGxwdHIKIH07CiAKK0FjY2Vzc2liaWxpdHlSb290QXRzcGkqIEFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaTo6cm9vdCgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fY29yZU9iamVjdCk7CisKKyAgICBpZiAoIW1f
cm9vdCkgeworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2NvcmVPYmplY3QtPmRvY3Vt
ZW50KCkpCisgICAgICAgICAgICBtX3Jvb3QgPSBkb2N1bWVudC0+cGFnZSgpLT5hY2Nlc3NpYmls
aXR5Um9vdE9iamVjdCgpOworICAgIH0KKyAgICByZXR1cm4gbV9yb290OworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6aXNUcmVlUmVnaXN0ZXJlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcm9vdCA/IG1fcm9vdC0+aXNUcmVlUmVnaXN0ZXJlZCgpIDogZmFsc2U7Cit9CisK
IGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyZWdpc3Rlck9iamVjdCgpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTUxOSwxMSArNTM4LDE2IEBAIGJv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyZWdpc3Rlck9iamVjdCgpCiAgICAgICAgIC8v
IElzb2xhdGVkIHRyZWUgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQsIGNhbGwgQWNjZXNzaWJpbGl0
eVJvb3RBdHNwaTo6Y2hpbGQoKQogICAgICAgICAvLyB0byBjcmVhdGUgaXQgYmVmb3JlIHJlZ2lz
dGVyaW5nIHRoZSBvYmplY3QuCiAgICAgICAgIEFjY2Vzc2liaWxpdHk6OnBlcmZvcm1GdW5jdGlv
bk9uTWFpblRocmVhZChbdGhpc10gewotICAgICAgICAgICAgbV9yb290LmNoaWxkKCk7CisgICAg
ICAgICAgICBpZiAoIW1fY29yZU9iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBhdHNwaVJvb3QgPSByb290KCkpCisgICAgICAgICAgICAgICAg
YXRzcGlSb290LT5jaGlsZCgpOwogICAgICAgICB9KTsKICAgICB9Ci0gICAgbV9wYXRoID0gbV9y
b290LmF0c3BpKCkucmVnaXN0ZXJPYmplY3QoKnRoaXMsIFdURk1vdmUoaW50ZXJmYWNlcykpOwot
ICAgIG1fcm9vdC5hdHNwaSgpLmFkZEFjY2Vzc2libGUoKnRoaXMpOworCisgICAgbV9wYXRoID0g
QWNjZXNzaWJpbGl0eUF0c3BpOjpjdXJyZW50KCkucmVnaXN0ZXJPYmplY3QoKnRoaXMsIFdURk1v
dmUoaW50ZXJmYWNlcykpOworICAgIEFjY2Vzc2liaWxpdHlBdHNwaTo6Y3VycmVudCgpLmFkZEFj
Y2Vzc2libGUoKnRoaXMpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MzgsNyArNTYyLDcg
QEAgY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnBhdGgoKQogR1Zhcmlh
bnQqIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6cmVmZXJlbmNlKCkKIHsKICAgICBSRUxFQVNF
X0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3KCIoc28p
IiwgbV9yb290LmF0c3BpKCkudW5pcXVlTmFtZSgpLCBwYXRoKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgcmV0dXJuIGdfdmFyaWFudF9uZXcoIihzbykiLCBBY2Nlc3NpYmlsaXR5QXRzcGk6OmN1cnJl
bnQoKS51bmlxdWVOYW1lKCksIHBhdGgoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogR1ZhcmlhbnQq
IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6aHlwZXJsaW5rUmVmZXJlbmNlKCkKQEAgLTU0Niwx
MCArNTcwLDEwIEBAIEdWYXJpYW50KiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6Omh5cGVybGlu
a1JlZmVyZW5jZSgpCiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBp
ZiAobV9oeXBlcmxpbmtQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIHJlZ2lzdGVyT2JqZWN0KCk7
Ci0gICAgICAgIG1faHlwZXJsaW5rUGF0aCA9IG1fcm9vdC5hdHNwaSgpLnJlZ2lzdGVySHlwZXJs
aW5rKCp0aGlzLCB7IHsgY29uc3RfY2FzdDxHREJ1c0ludGVyZmFjZUluZm8qPigmd2Via2l0X2h5
cGVybGlua19pbnRlcmZhY2UpLCAmc19oeXBlcmxpbmtGdW5jdGlvbnMgfSB9KTsKKyAgICAgICAg
bV9oeXBlcmxpbmtQYXRoID0gQWNjZXNzaWJpbGl0eUF0c3BpOjpjdXJyZW50KCkucmVnaXN0ZXJI
eXBlcmxpbmsoKnRoaXMsIHsgeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJr
aXRfaHlwZXJsaW5rX2ludGVyZmFjZSksICZzX2h5cGVybGlua0Z1bmN0aW9ucyB9IH0pOwogICAg
IH0KIAotICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3KCIoc28pIiwgbV9yb290LmF0c3BpKCkudW5p
cXVlTmFtZSgpLCBtX2h5cGVybGlua1BhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdf
dmFyaWFudF9uZXcoIihzbykiLCBBY2Nlc3NpYmlsaXR5QXRzcGk6OmN1cnJlbnQoKS51bmlxdWVO
YW1lKCksIG1faHlwZXJsaW5rUGF0aC51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBBY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGk6OnNldFBhcmVudChzdGQ6Om9wdGlvbmFsPEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaSo+IGF0c3BpUGFyZW50KQpAQCAtNTU5LDE1ICs1ODMsMTUgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNldFBhcmVudChzdGQ6Om9wdGlvbmFsPEFjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaSoKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYXJlbnQgPSBhdHNwaVBh
cmVudDsKLSAgICBpZiAoIW1fY29yZU9iamVjdCB8fCBtX2NvcmVPYmplY3QtPmFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSkKKyAgICBpZiAoIW1fY29yZU9iamVjdCB8fCBtX2NvcmVPYmplY3QtPmFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSB8fCAhcm9vdCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Jvb3QuYXRzcGkoKS5wYXJlbnRDaGFuZ2VkKCp0aGlzKTsKKyAgICBBY2Nlc3NpYmlsaXR5
QXRzcGk6OmN1cnJlbnQoKS5wYXJlbnRDaGFuZ2VkKCp0aGlzKTsKICAgICBpZiAobV9wYXJlbnQp
IHsKICAgICAgICAgaWYgKCptX3BhcmVudCkKICAgICAgICAgICAgIG1fcGFyZW50LnZhbHVlKCkt
PmNoaWxkQWRkZWQoKnRoaXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jvb3QuY2hp
bGRBZGRlZCgqdGhpcyk7CisgICAgICAgIGVsc2UgaWYgKG1fcm9vdCkKKyAgICAgICAgICAgIG1f
cm9vdC0+Y2hpbGRBZGRlZCgqdGhpcyk7CiAgICAgfQogfQogCkBAIC01ODksMTMgKzYxMywxNSBA
QCBzdGQ6Om9wdGlvbmFsPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSo+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6cGFyZW50KCkgY29ucwogCiBHVmFyaWFudCogQWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjpwYXJlbnRSZWZlcmVuY2UoKSBjb25zdAogewotICAgIGlmICghbV9wYXJlbnQpCi0g
ICAgICAgIHJldHVybiBtX3Jvb3QuYXRzcGkoKS5udWxsUmVmZXJlbmNlKCk7CisgICAgaWYgKG1f
cGFyZW50KSB7CisgICAgICAgIGlmICgqbV9wYXJlbnQpCisgICAgICAgICAgICByZXR1cm4gbV9w
YXJlbnQudmFsdWUoKS0+cmVmZXJlbmNlKCk7CiAKLSAgICBpZiAoIW1fcGFyZW50LnZhbHVlKCkp
Ci0gICAgICAgIHJldHVybiBtX3Jvb3QucmVmZXJlbmNlKCk7CisgICAgICAgIGlmIChtX3Jvb3Qp
CisgICAgICAgICAgICByZXR1cm4gbV9yb290LT5yZWZlcmVuY2UoKTsKKyAgICB9CiAKLSAgICBy
ZXR1cm4gbV9wYXJlbnQudmFsdWUoKS0+cmVmZXJlbmNlKCk7CisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlBdHNwaTo6Y3VycmVudCgpLm51bGxSZWZlcmVuY2UoKTsKIH0KIAogdW5zaWduZWQgQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjaGlsZENvdW50KCkgY29uc3QKQEAgLTEyMTUsOCArMTI0
MSw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpidWlsZEludGVyZmFjZXMoR1Zh
cmlhbnRCdWlsZGVyKiBidWlsZGVyKSBjb25zdAogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk6OnNlcmlhbGl6ZShHVmFyaWFudEJ1aWxkZXIqIGJ1aWxkZXIpIGNvbnN0CiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQo
YnVpbGRlciwgIihzbykiLCBtX3Jvb3QuYXRzcGkoKS51bmlxdWVOYW1lKCksIG1fcGF0aC51dGY4
KCkuZGF0YSgpKTsKLSAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoYnVpbGRlciwgIkAoc28pIiwg
bV9yb290LmFwcGxpY2F0aW9uUmVmZXJlbmNlKCkpOworICAgIGdfdmFyaWFudF9idWlsZGVyX2Fk
ZChidWlsZGVyLCAiKHNvKSIsIEFjY2Vzc2liaWxpdHlBdHNwaTo6Y3VycmVudCgpLnVuaXF1ZU5h
bWUoKSwgbV9wYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZChi
dWlsZGVyLCAiQChzbykiLCBBY2Nlc3NpYmlsaXR5QXRzcGk6OmN1cnJlbnQoKS5hcHBsaWNhdGlv
blJlZmVyZW5jZSgpKTsKICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoYnVpbGRlciwgIkAoc28p
IiwgcGFyZW50UmVmZXJlbmNlKCkpOwogCiAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKGJ1aWxk
ZXIsICJpIiwgaW5kZXhJblBhcmVudCgpKTsKQEAgLTEyNDgsNyArMTI3NCw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjaGlsZEFkZGVkKEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aSYgY2hpbGQpCiAgICAgaWYgKCFtX2NvcmVPYmplY3QgfHwgbV9jb3JlT2JqZWN0LT5hY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcm9vdC5hdHNwaSgp
LmNoaWxkcmVuQ2hhbmdlZCgqdGhpcywgY2hpbGQsIEFjY2Vzc2liaWxpdHlBdHNwaTo6Q2hpbGRy
ZW5DaGFuZ2VkOjpBZGRlZCk7CisgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpjdXJyZW50KCkuY2hp
bGRyZW5DaGFuZ2VkKCp0aGlzLCBjaGlsZCwgQWNjZXNzaWJpbGl0eUF0c3BpOjpDaGlsZHJlbkNo
YW5nZWQ6OkFkZGVkKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNoaWxk
UmVtb3ZlZChBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkmIGNoaWxkKQpAQCAtMTI2MCwxOSArMTI4
NiwxOSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Y2hpbGRSZW1vdmVkKEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaSYgY2hpbGQpCiAgICAgaWYgKCFtX2NvcmVPYmplY3QgfHwgbV9j
b3JlT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcm9vdC5hdHNwaSgpLmNoaWxkcmVuQ2hhbmdlZCgqdGhpcywgY2hpbGQsIEFjY2Vzc2li
aWxpdHlBdHNwaTo6Q2hpbGRyZW5DaGFuZ2VkOjpSZW1vdmVkKTsKKyAgICBBY2Nlc3NpYmlsaXR5
QXRzcGk6OmN1cnJlbnQoKS5jaGlsZHJlbkNoYW5nZWQoKnRoaXMsIGNoaWxkLCBBY2Nlc3NpYmls
aXR5QXRzcGk6OkNoaWxkcmVuQ2hhbmdlZDo6UmVtb3ZlZCk7CiB9CiAKIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjpzdGF0ZUNoYW5nZWQoY29uc3QgY2hhciogbmFtZSwgYm9vbCB2YWx1
ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9yb290LmF0
c3BpKCkuc3RhdGVDaGFuZ2VkKCp0aGlzLCBuYW1lLCB2YWx1ZSk7CisgICAgQWNjZXNzaWJpbGl0
eUF0c3BpOjpjdXJyZW50KCkuc3RhdGVDaGFuZ2VkKCp0aGlzLCBuYW1lLCB2YWx1ZSk7CiB9CiAK
IHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpsb2FkRXZlbnQoY29uc3QgY2hhciogZXZl
bnQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fcm9vdC5h
dHNwaSgpLmxvYWRFdmVudCgqdGhpcywgZXZlbnQpOworICAgIEFjY2Vzc2liaWxpdHlBdHNwaTo6
Y3VycmVudCgpLmxvYWRFdmVudCgqdGhpcywgZXZlbnQpOwogfQogCiBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmls
aXR5T2JqZWN0QXRzcGkuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpLmgKaW5kZXggNTgxYzdjYzIyMDk2Li5kZTEyNTBlZGE3YTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNw
aS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuaApAQCAtMzgsMTAgKzM4LDExIEBAIGNsYXNzIEFj
Y2Vzc2liaWxpdHlSb290QXRzcGk7CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSBm
aW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaT4g
Y3JlYXRlKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlSb290QXRzcGkmKTsKKyAgICBzdGF0
aWMgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaT4gY3JlYXRlKEFYQ29yZU9iamVjdCosIEFj
Y2Vzc2liaWxpdHlSb290QXRzcGkqKTsKICAgICB+QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKCkg
PSBkZWZhdWx0OwogCiAgICAgYm9vbCByZWdpc3Rlck9iamVjdCgpOworICAgIGJvb2wgaXNUcmVl
UmVnaXN0ZXJlZCgpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBJbnRlcmZhY2UgOiB1aW50MTZf
dCB7CiAgICAgICAgIEFjY2Vzc2libGUgPSAxIDw8IDAsCkBAIC01OSw3ICs2MCw2IEBAIHB1Ymxp
YzoKICAgICB9OwogICAgIGNvbnN0IE9wdGlvblNldDxJbnRlcmZhY2U+JiBpbnRlcmZhY2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9pbnRlcmZhY2VzOyB9CiAKLSAgICBjb25zdCBBY2Nlc3NpYmlsaXR5
Um9vdEF0c3BpJiByb290KCkgY29uc3QgeyByZXR1cm4gbV9yb290OyB9CiAgICAgdm9pZCBzZXRQ
YXJlbnQoc3RkOjpvcHRpb25hbDxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqPik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqPiBwYXJl
bnQoKSBjb25zdDsKICAgICBHVmFyaWFudCogcGFyZW50UmVmZXJlbmNlKCkgY29uc3Q7CkBAIC0x
NTgsNyArMTU4LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IGNlbGxQb3NpdGlv
bigpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaShBWENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpJik7CisgICAgQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlSb290QXRzcGkq
KTsKKworICAgIEFjY2Vzc2liaWxpdHlSb290QXRzcGkqIHJvb3QoKTsKIAogICAgIFZlY3RvcjxS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpPj4gd3JhcHBlclZlY3Rvcihjb25zdCBWZWN0
b3I8UmVmUHRyPEFYQ29yZU9iamVjdD4+JikgY29uc3Q7CiAgICAgaW50IGluZGV4SW5QYXJlbnQo
KSBjb25zdDsKQEAgLTI0MSw3ICsyNDMsNyBAQCBwcml2YXRlOgogICAgIEFYQ29yZU9iamVjdCog
bV9heE9iamVjdCB7IG51bGxwdHIgfTsKICAgICBBWENvcmVPYmplY3QqIG1fY29yZU9iamVjdCB7
IG51bGxwdHIgfTsKICAgICBPcHRpb25TZXQ8SW50ZXJmYWNlPiBtX2ludGVyZmFjZXM7Ci0gICAg
QWNjZXNzaWJpbGl0eVJvb3RBdHNwaSYgbV9yb290OworICAgIEFjY2Vzc2liaWxpdHlSb290QXRz
cGkqIG1fcm9vdCB7IG51bGxwdHIgfTsKICAgICBzdGQ6Om9wdGlvbmFsPEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaSo+IG1fcGFyZW50OwogICAgIEF0b21pYzxib29sPiBtX2lzUmVnaXN0ZXJlZCB7
IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fcGF0aDsKQEAgLTI0OSw3ICsyNTEsNiBAQCBwcml2YXRl
OgogICAgIGludDY0X3QgbV9sYXN0U2VsZWN0aW9uQ2hhbmdlZFRpbWUgeyAtMSB9OwogICAgIG11
dGFibGUgc3RkOjphdG9taWM8Ym9vbD4gbV9oYXNMaXN0TWFya2VyQXRTdGFydDsKICAgICBtdXRh
YmxlIGludCBtX2luZGV4SW5QYXJlbnQgeyAtMSB9OwotICAgIG11dGFibGUgTG9jayBtX3Jvb3RM
b2NrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q29tcG9uZW50QXRz
cGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5
T2JqZWN0Q29tcG9uZW50QXRzcGkuY3BwCmluZGV4IGM3MzNkMTliMDI5Yy4uZTZhY2E3M2RjYWY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RDb21wb25lbnRBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0Q29tcG9uZW50QXRzcGkuY3BwCkBAIC0y
Miw2ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgVVNFKEFUU1BJKQog
I2luY2x1ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QXRz
cGkuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QXRzcGlFbnVtcy5oIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAt
NDcsNyArNDgsNyBAQCBHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk6OnNfY29tcG9uZW50RnVuY3Rpb25zID0gewogICAgICAgICAgICAgdWludDMyX3QgY29vcmRp
bmF0ZVR5cGU7CiAgICAgICAgICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIoaWl1KSIs
ICZ4LCAmeSwgJmNvb3JkaW5hdGVUeXBlKTsKICAgICAgICAgICAgIGF1dG8qIHdyYXBwZXIgPSBh
dHNwaU9iamVjdC0+aGl0VGVzdCh7IHgsIHkgfSwgY29vcmRpbmF0ZVR5cGUpOwotICAgICAgICAg
ICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3Zh
cmlhbnRfbmV3KCIoQChzbykpIiwgd3JhcHBlciA/IHdyYXBwZXItPnJlZmVyZW5jZSgpIDogYXRz
cGlPYmplY3QtPm1fcm9vdC5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKSkpOworICAgICAgICAgICAg
Z19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3Zhcmlh
bnRfbmV3KCIoQChzbykpIiwgd3JhcHBlciA/IHdyYXBwZXItPnJlZmVyZW5jZSgpIDogQWNjZXNz
aWJpbGl0eUF0c3BpOjpjdXJyZW50KCkubnVsbFJlZmVyZW5jZSgpKSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0RXh0ZW50cyIpKSB7CiAgICAgICAgICAg
ICB1aW50MzJfdCBjb29yZGluYXRlVHlwZTsKICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFy
YW1ldGVycywgIih1KSIsICZjb29yZGluYXRlVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RIeXBlcmxpbmtBdHNw
aS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlP
YmplY3RIeXBlcmxpbmtBdHNwaS5jcHAKaW5kZXggNzk3M2QzZGM4NGJlLi5kOGQ3YzYwNGFmYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJp
bGl0eU9iamVjdEh5cGVybGlua0F0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RIeXBlcmxpbmtBdHNwaS5jcHAKQEAgLTIy
LDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKSAmJiBVU0UoQVRTUEkpCiAK
LSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eUF0c3BpLmgiCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
ICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgpAQCAtMzksNyArMzksNyBA
QCBHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNfaHlwZXJs
aW5rRnVuY3Rpb25zID0gewogICAgICAgICBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0
T2JqZWN0IikpIHsKICAgICAgICAgICAgIGludCBpbmRleDsKICAgICAgICAgICAgIGdfdmFyaWFu
dF9nZXQocGFyYW1ldGVycywgIihpKSIsICZpbmRleCk7Ci0gICAgICAgICAgICBnX2RidXNfbWV0
aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihA
KHNvKSkiLCAhaW5kZXggPyBhdHNwaU9iamVjdC0+cmVmZXJlbmNlKCkgOiBhdHNwaU9iamVjdC0+
bV9yb290LmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CisgICAgICAgICAgICBnX2RidXNfbWV0
aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihA
KHNvKSkiLCAhaW5kZXggPyBhdHNwaU9iamVjdC0+cmVmZXJlbmNlKCkgOiBBY2Nlc3NpYmlsaXR5
QXRzcGk6OmN1cnJlbnQoKS5udWxsUmVmZXJlbmNlKCkpKTsKICAgICAgICAgfSBlbHNlIGlmICgh
Z19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRVUkkiKSkgewogICAgICAgICAgICAgaW50IGluZGV4
OwogICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKGkpIiwgJmluZGV4KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJp
bGl0eU9iamVjdEh5cGVydGV4dEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEh5cGVydGV4dEF0c3BpLmNwcAppbmRleCA5Y2Yx
ODU5YmU5MmMuLmY5ODZkYTk2MDY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJ0ZXh0QXRzcGkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEh5
cGVydGV4dEF0c3BpLmNwcApAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxFKEFDQ0VTU0lC
SUxJVFkpICYmIFVTRShBVFNQSSkKIAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSb290QXRzcGku
aCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QXRzcGkuaCIKICNpbmNsdWRlIDxnaW8vZ2lvLmg+
CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIApAQCAtNDEsNyArNDEs
NyBAQCBHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNfaHlw
ZXJ0ZXh0RnVuY3Rpb25zID0gewogICAgICAgICAgICAgaW50IGluZGV4OwogICAgICAgICAgICAg
Z192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKGkpIiwgJmluZGV4KTsKICAgICAgICAgICAgIGF1
dG8qIHdyYXBwZXIgPSBpbmRleCA+PSAwID8gYXRzcGlPYmplY3QtPmh5cGVybGluayhpbmRleCkg
OiBudWxscHRyOwotICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92
YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIoQChzbykpIiwgd3JhcHBlciA/IHdyYXBw
ZXItPmh5cGVybGlua1JlZmVyZW5jZSgpIDogYXRzcGlPYmplY3QtPm1fcm9vdC5hdHNwaSgpLm51
bGxSZWZlcmVuY2UoKSkpOworICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3Jl
dHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIoQChzbykpIiwgd3JhcHBlciA/
IHdyYXBwZXItPmh5cGVybGlua1JlZmVyZW5jZSgpIDogQWNjZXNzaWJpbGl0eUF0c3BpOjpjdXJy
ZW50KCkubnVsbFJlZmVyZW5jZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMCht
ZXRob2ROYW1lLCAiR2V0TGlua0luZGV4IikpIHsKICAgICAgICAgICAgIGludCBvZmZzZXQ7CiAg
ICAgICAgICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIoaSkiLCAmb2Zmc2V0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdFNlbGVjdGlvbkF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFNlbGVjdGlvbkF0c3BpLmNwcAppbmRleCBlODdlZGNj
ZTJhMjYuLjViNThmNGZmNWRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0U2VsZWN0aW9uQXRzcGkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFNlbGVj
dGlvbkF0c3BpLmNwcApAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJ
VFkpICYmIFVTRShBVFNQSSkKIAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSb290QXRzcGkuaCIK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QXRzcGkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zNyw3ICszNyw3IEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaTo6c19zZWxlY3Rpb25GdW5jdGlvbnMgPSB7CiAgICAgICAgICAgICBpbnQgaW5kZXg7
CiAgICAgICAgICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIoaSkiLCAmaW5kZXgpOwog
ICAgICAgICAgICAgYXV0byogY2hpbGQgPSBpbmRleCA+PSAwID8gYXRzcGlPYmplY3QtPnNlbGVj
dGVkQ2hpbGQoaW5kZXgpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52
b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKEAoc28pKSIs
IGNoaWxkID8gY2hpbGQtPnJlZmVyZW5jZSgpIDogYXRzcGlPYmplY3QtPm1fcm9vdC5hdHNwaSgp
Lm51bGxSZWZlcmVuY2UoKSkpOworICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9u
X3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIoQChzbykpIiwgY2hpbGQg
PyBjaGlsZC0+cmVmZXJlbmNlKCkgOiBBY2Nlc3NpYmlsaXR5QXRzcGk6OmN1cnJlbnQoKS5udWxs
UmVmZXJlbmNlKCkpKTsKICAgICAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUs
ICJTZWxlY3RDaGlsZCIpKSB7CiAgICAgICAgICAgICBpbnQgaW5kZXg7CiAgICAgICAgICAgICBn
X3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIoaSkiLCAmaW5kZXgpOwpAQCAtMjMzLDcgKzIzMyw3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzZWxlY3Rpb25DaGFuZ2VkKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9sYXN0U2VsZWN0aW9uQ2hhbmdlZFRpbWUgPSBzb3VyY2VU
aW1lOwotICAgIG1fcm9vdC5hdHNwaSgpLnNlbGVjdGlvbkNoYW5nZWQoKnRoaXMpOworICAgIEFj
Y2Vzc2liaWxpdHlBdHNwaTo6Y3VycmVudCgpLnNlbGVjdGlvbkNoYW5nZWQoKnRoaXMpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0c3BpLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQXRz
cGkuY3BwCmluZGV4IDRlMmRlOTliYmE5MC4uYjEyMGY0NDgwM2M1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0
c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RUYWJsZUF0c3BpLmNwcApAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFkpICYmIFVTRShBVFNQSSkKIAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlS
b290QXRzcGkuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QXRzcGkuaCIKICNpbmNsdWRlICJI
VE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBAIC00Miw3ICs0Miw3IEBAIEdEQnVzSW50ZXJm
YWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c190YWJsZUZ1bmN0aW9ucyA9IHsK
ICAgICAgICAgICAgIGludCByb3csIGNvbHVtbjsKICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQo
cGFyYW1ldGVycywgIihpaSkiLCAmcm93LCAmY29sdW1uKTsKICAgICAgICAgICAgIGF1dG8qIGNl
bGwgPSByb3cgPj0gMCAmJiBjb2x1bW4gPj0gMCA/IGF0c3BpT2JqZWN0LT5jZWxsKHJvdywgY29s
dW1uKSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0
dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCBjZWxsID8gY2Vs
bC0+cmVmZXJlbmNlKCkgOiBhdHNwaU9iamVjdC0+bV9yb290LmF0c3BpKCkubnVsbFJlZmVyZW5j
ZSgpKSk7CisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVl
KGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCBjZWxsID8gY2VsbC0+cmVmZXJl
bmNlKCkgOiBBY2Nlc3NpYmlsaXR5QXRzcGk6OmN1cnJlbnQoKS5udWxsUmVmZXJlbmNlKCkpKTsK
ICAgICAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRJbmRleEF0Iikp
IHsKICAgICAgICAgICAgIGludCByb3csIGNvbHVtbjsKICAgICAgICAgICAgIGdfdmFyaWFudF9n
ZXQocGFyYW1ldGVycywgIihpaSkiLCAmcm93LCAmY29sdW1uKTsKQEAgLTc1LDEyICs3NSwxMiBA
QCBHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNfdGFibGVG
dW5jdGlvbnMgPSB7CiAgICAgICAgICAgICBpbnQgcm93OwogICAgICAgICAgICAgZ192YXJpYW50
X2dldChwYXJhbWV0ZXJzLCAiKGkpIiwgJnJvdyk7CiAgICAgICAgICAgICBhdXRvKiBoZWFkZXIg
PSByb3cgPj0gMCA/IGF0c3BpT2JqZWN0LT5yb3dIZWFkZXIocm93KSA6IG51bGxwdHI7Ci0gICAg
ICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24s
IGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCBoZWFkZXIgPyBoZWFkZXItPnJlZmVyZW5jZSgpIDog
YXRzcGlPYmplY3QtPm1fcm9vdC5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKSkpOworICAgICAgICAg
ICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3Zh
cmlhbnRfbmV3KCIoQChzbykpIiwgaGVhZGVyID8gaGVhZGVyLT5yZWZlcmVuY2UoKSA6IEFjY2Vz
c2liaWxpdHlBdHNwaTo6Y3VycmVudCgpLm51bGxSZWZlcmVuY2UoKSkpOwogICAgICAgICB9IGVs
c2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldENvbHVtbkhlYWRlciIpKSB7CiAgICAg
ICAgICAgICBpbnQgY29sdW1uOwogICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJz
LCAiKGkpIiwgJmNvbHVtbik7CiAgICAgICAgICAgICBhdXRvKiBoZWFkZXIgPSBjb2x1bW4gPj0g
MCA/IGF0c3BpT2JqZWN0LT5jb2x1bW5IZWFkZXIoY29sdW1uKSA6IG51bGxwdHI7Ci0gICAgICAg
ICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdf
dmFyaWFudF9uZXcoIihAKHNvKSkiLCBoZWFkZXIgPyBoZWFkZXItPnJlZmVyZW5jZSgpIDogYXRz
cGlPYmplY3QtPm1fcm9vdC5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKSkpOworICAgICAgICAgICAg
Z19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3Zhcmlh
bnRfbmV3KCIoQChzbykpIiwgaGVhZGVyID8gaGVhZGVyLT5yZWZlcmVuY2UoKSA6IEFjY2Vzc2li
aWxpdHlBdHNwaTo6Y3VycmVudCgpLm51bGxSZWZlcmVuY2UoKSkpOwogICAgICAgICB9IGVsc2Ug
aWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldFJvd0NvbHVtbkV4dGVudHNBdEluZGV4Iikp
IHsKICAgICAgICAgICAgIGludCBpbmRleDsKICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFy
YW1ldGVycywgIihpKSIsICZpbmRleCk7CkBAIC0xMTgsMTAgKzExOCwxMCBAQCBHREJ1c0ludGVy
ZmFjZVZUYWJsZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNfdGFibGVGdW5jdGlvbnMgPSB7
CiAgICAgICAgICAgICByZXR1cm4gZ192YXJpYW50X25ld19pbnQzMihhdHNwaU9iamVjdC0+Y29s
dW1uQ291bnQoKSk7CiAgICAgICAgIGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIkNhcHRp
b24iKSkgewogICAgICAgICAgICAgYXV0byogY2FwdGlvbiA9IGF0c3BpT2JqZWN0LT50YWJsZUNh
cHRpb24oKTsKLSAgICAgICAgICAgIHJldHVybiBjYXB0aW9uID8gY2FwdGlvbi0+cmVmZXJlbmNl
KCkgOiBhdHNwaU9iamVjdC0+bV9yb290LmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpOworICAgICAg
ICAgICAgcmV0dXJuIGNhcHRpb24gPyBjYXB0aW9uLT5yZWZlcmVuY2UoKSA6IEFjY2Vzc2liaWxp
dHlBdHNwaTo6Y3VycmVudCgpLm51bGxSZWZlcmVuY2UoKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoIWdfc3RyY21wMChwcm9wZXJ0eU5hbWUsICJTdW1tYXJ5IikpCi0gICAgICAgICAgICByZXR1
cm4gYXRzcGlPYmplY3QtPm1fcm9vdC5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKTsKKyAgICAgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QXRzcGk6OmN1cnJlbnQoKS5udWxsUmVmZXJlbmNlKCk7
CiAgICAgICAgIGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIk5TZWxlY3RlZFJvd3MiKSkK
ICAgICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2ludDMyKDApOwogICAgICAgICBpZiAo
IWdfc3RyY21wMChwcm9wZXJ0eU5hbWUsICJOU2VsZWN0ZWRDb2x1bW5zIikpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RU
YWJsZUNlbGxBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0Fj
Y2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNwaS5jcHAKaW5kZXggZDk2Mzg3OGJiY2ViLi5h
NDM0YjAwOWI1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRz
cGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNw
aS5jcHAKQEAgLTIyLDggKzIyLDggQEAKIAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKSAmJiBV
U0UoQVRTUEkpCiAKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QXRzcGkuaCIKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5QXRzcGlFbnVtcy5oIgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSb290QXRz
cGkuaCIKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3
LDcgKzY3LDcgQEAgR0RCdXNJbnRlcmZhY2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
OjpzX3RhYmxlQ2VsbEZ1bmN0aW9ucyA9IHsKICAgICAgICAgaWYgKCFnX3N0cmNtcDAocHJvcGVy
dHlOYW1lLCAiVGFibGUiKSkgewogICAgICAgICAgICAgYXV0byogYXhPYmplY3QgPSBhdHNwaU9i
amVjdC0+bV9heE9iamVjdDsKICAgICAgICAgICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0
LT5pc1RhYmxlQ2VsbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBhdHNwaU9iamVjdC0+bV9y
b290LmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5QXRzcGk6OmN1cnJlbnQoKS5udWxsUmVmZXJlbmNlKCk7CiAKICAgICAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSogd3JhcHBlciA9IGF0c3BpT2JqZWN0LnB0cigpOwog
ICAgICAgICAgICAgd2hpbGUgKGF1dG8gcGFyZW50ID0gd3JhcHBlci0+cGFyZW50KCkpIHsKQEAg
LTgwLDcgKzgwLDcgQEAgR0RCdXNJbnRlcmZhY2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpzX3RhYmxlQ2VsbEZ1bmN0aW9ucyA9IHsKICAgICAgICAgICAgICAgICBpZiAoYXhPYmpl
Y3QgJiYgYXhPYmplY3QtPmlzVGFibGUoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gd3JhcHBlciA/IHdyYXBwZXItPnJlZmVy
ZW5jZSgpIDogYXRzcGlPYmplY3QtPm1fcm9vdC5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKTsKKyAg
ICAgICAgICAgIHJldHVybiB3cmFwcGVyID8gd3JhcHBlci0+cmVmZXJlbmNlKCkgOiBBY2Nlc3Np
YmlsaXR5QXRzcGk6OmN1cnJlbnQoKS5udWxsUmVmZXJlbmNlKCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBnX3NldF9lcnJvcihlcnJvciwgR19JT19FUlJPUiwgR19JT19FUlJPUl9OT1RfU1VQUE9S
VEVELCAiVW5rbm93biBwcm9wZXJ0eSAnJXMnIiwgcHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRl
eHRBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGY0MTk2MDk0ZDNjYi4uODIzNWE0NGUzYzE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTIyLDEwICsyMiwx
MCBAQAogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFVTRShBVFNQSSkKICNpbmNsdWRl
ICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUF0c3BpLmgiCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eUF0c3BpRW51bXMuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgotI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlSb290QXRzcGkuaCIKICNpbmNsdWRlICJFZGl0aW5nLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgpAQCAt
MzgxLDcgKzM4MSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0ZXh0SW5zZXJ0
ZWQoY29uc3QgU3RyaW5nJiBpbnNlcnRlZFRleHQsIGNvbnN0IFZpCiAgICAgYXV0byBvZmZzZXQg
PSBVVEYxNk9mZnNldFRvVVRGOChtYXBwaW5nLCB1dGYxNk9mZnNldCk7CiAgICAgYXV0byB1dGY4
SW5zZXJ0ZWRUZXh0ID0gaW5zZXJ0ZWRUZXh0LnV0ZjgoKTsKICAgICBhdXRvIGluc2VydGVkVGV4
dExlbmd0aCA9IGdfdXRmOF9zdHJsZW4odXRmOEluc2VydGVkVGV4dC5kYXRhKCksIC0xKTsKLSAg
ICBtX3Jvb3QuYXRzcGkoKS50ZXh0Q2hhbmdlZCgqdGhpcywgImluc2VydCIsIFdURk1vdmUodXRm
OEluc2VydGVkVGV4dCksIG9mZnNldCAtIGluc2VydGVkVGV4dExlbmd0aCwgaW5zZXJ0ZWRUZXh0
TGVuZ3RoKTsKKyAgICBBY2Nlc3NpYmlsaXR5QXRzcGk6OmN1cnJlbnQoKS50ZXh0Q2hhbmdlZCgq
dGhpcywgImluc2VydCIsIFdURk1vdmUodXRmOEluc2VydGVkVGV4dCksIG9mZnNldCAtIGluc2Vy
dGVkVGV4dExlbmd0aCwgaW5zZXJ0ZWRUZXh0TGVuZ3RoKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmls
aXR5T2JqZWN0QXRzcGk6OnRleHREZWxldGVkKGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnRleHREZWxldGVkKGNvbnN0IFN0cmluZyYgZGVsZXRl
ZFRleHQsIGNvbnN0IFZpc2kKICAgICBhdXRvIG9mZnNldCA9IFVURjE2T2Zmc2V0VG9VVEY4KG1h
cHBpbmcsIHV0ZjE2T2Zmc2V0KTsKICAgICBhdXRvIHV0ZjhEZWxldGVkVGV4dCA9IGRlbGV0ZWRU
ZXh0LnV0ZjgoKTsKICAgICBhdXRvIGRlbGV0ZWRUZXh0TGVuZ3RoID0gZ191dGY4X3N0cmxlbih1
dGY4RGVsZXRlZFRleHQuZGF0YSgpLCAtMSk7Ci0gICAgbV9yb290LmF0c3BpKCkudGV4dENoYW5n
ZWQoKnRoaXMsICJkZWxldGUiLCBXVEZNb3ZlKHV0ZjhEZWxldGVkVGV4dCksIG9mZnNldCwgZGVs
ZXRlZFRleHRMZW5ndGgpOworICAgIEFjY2Vzc2liaWxpdHlBdHNwaTo6Y3VycmVudCgpLnRleHRD
aGFuZ2VkKCp0aGlzLCAiZGVsZXRlIiwgV1RGTW92ZSh1dGY4RGVsZXRlZFRleHQpLCBvZmZzZXQs
IGRlbGV0ZWRUZXh0TGVuZ3RoKTsKIH0KIAogSW50UG9pbnQgQWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpib3VuZGFyeU9mZnNldCh1bnNpZ25lZCB1dGYxNk9mZnNldCwgVGV4dEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5KSBjb25zdApAQCAtNzk4LDEwICs3OTgsMTAgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5T2JqZWN0QXRzcGk6OnNlbGVjdGlvbkNoYW5nZWQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW8KICAgICBhdXRvIG1hcHBpbmcgPSBvZmZzZXRNYXBwaW5nKHV0ZjE2VGV4dCk7CiAg
ICAgYXV0byBjYXJldE9mZnNldCA9IFVURjE2T2Zmc2V0VG9VVEY4KG1hcHBpbmcsIGJvdW5kcy55
KCkpOwogICAgIGlmIChjYXJldE9mZnNldCA8PSBsZW5ndGgpCi0gICAgICAgIG1fcm9vdC5hdHNw
aSgpLnRleHRDYXJldE1vdmVkKCp0aGlzLCBjYXJldE9mZnNldCk7CisgICAgICAgIEFjY2Vzc2li
aWxpdHlBdHNwaTo6Y3VycmVudCgpLnRleHRDYXJldE1vdmVkKCp0aGlzLCBjYXJldE9mZnNldCk7
CiAKICAgICBpZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSkKLSAgICAgICAgbV9yb290LmF0c3BpKCku
dGV4dFNlbGVjdGlvbkNoYW5nZWQoKnRoaXMpOworICAgICAgICBBY2Nlc3NpYmlsaXR5QXRzcGk6
OmN1cnJlbnQoKS50ZXh0U2VsZWN0aW9uQ2hhbmdlZCgqdGhpcyk7CiB9CiAKIEFjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0
ZXh0QXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB1dGYxNk9mZnNldCwgYm9vbCBp
bmNsdWRlRGVmYXVsdCkgY29uc3QKQEAgLTk5MCw3ICs5OTAsNyBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZXNDaGFuZ2VkKCkKICAgICBpZiAoIW1faW50ZXJm
YWNlcy5jb250YWlucyhJbnRlcmZhY2U6OlRleHQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Jvb3QuYXRzcGkoKS50ZXh0QXR0cmlidXRlc0NoYW5nZWQoKnRoaXMpOworICAgIEFjY2Vzc2li
aWxpdHlBdHNwaTo6Y3VycmVudCgpLnRleHRBdHRyaWJ1dGVzQ2hhbmdlZCgqdGhpcyk7CiB9CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzY3JvbGxUb01ha2VWaXNpYmxlKGludCBz
dGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgdWludDMyX3Qgc2Nyb2xsVHlwZSkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdFZhbHVlQXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNw
aS9BY2Nlc3NpYmlsaXR5T2JqZWN0VmFsdWVBdHNwaS5jcHAKaW5kZXggNThlZWU1ZjBjMGI3Li5k
YjY5ZjAwOWI3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRz
cGkvQWNjZXNzaWJpbGl0eU9iamVjdFZhbHVlQXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFZhbHVlQXRzcGkuY3BwCkBA
IC0yMiw4ICsyMiw4IEBACiAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgVVNFKEFUU1BJ
KQogCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUF0c3BpLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eU9iamVjdC5oIgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSb290QXRzcGkuaCIKICNpbmNs
dWRlIDxnaW8vZ2lvLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzNCw3ICsxMzQsNyBA
QCBkb3VibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjptaW5pbXVtSW5jcmVtZW50KCkgY29u
c3QKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp2YWx1ZUNoYW5nZWQoZG91YmxlIHZh
bHVlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3Jvb3Qu
YXRzcGkoKS52YWx1ZUNoYW5nZWQoKnRoaXMsIHZhbHVlKTsKKyAgICBBY2Nlc3NpYmlsaXR5QXRz
cGk6OmN1cnJlbnQoKS52YWx1ZUNoYW5nZWQoKnRoaXMsIHZhbHVlKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAKaW5kZXggZTE4NjYzNzM2YWMx
Li4zMDhhNGI2ZWYyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNwcApAQCAtMzQsMTQgKzM0
LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEFjY2Vzc2liaWxpdHlSb290QXRz
cGk+IEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OmNyZWF0ZShQYWdlJiBwYWdlLCBBY2Nlc3NpYmls
aXR5QXRzcGkmIGF0c3BpKQorUmVmPEFjY2Vzc2liaWxpdHlSb290QXRzcGk+IEFjY2Vzc2liaWxp
dHlSb290QXRzcGk6OmNyZWF0ZShQYWdlJiBwYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFjY2Vzc2liaWxpdHlSb290QXRzcGkocGFnZSwgYXRzcGkpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpKHBhZ2UpKTsKIH0KIAotQWNjZXNzaWJp
bGl0eVJvb3RBdHNwaTo6QWNjZXNzaWJpbGl0eVJvb3RBdHNwaShQYWdlJiBwYWdlLCBBY2Nlc3Np
YmlsaXR5QXRzcGkmIGF0c3BpKQotICAgIDogbV9hdHNwaShhdHNwaSkKLSAgICAsIG1fcGFnZShw
YWdlKQorQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6QWNjZXNzaWJpbGl0eVJvb3RBdHNwaShQYWdl
JiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogfQpAQCAtOTIsNyArOTEsNyBAQCBHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nl
c3NpYmlsaXR5Um9vdEF0c3BpOjpzX2FjY2Vzc2libGVGdW5jdGlvbnMgPSB7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24s
IGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCByb290T2JqZWN0LmF0c3BpKCkubnVsbFJlZmVyZW5j
ZSgpKSk7CisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVl
KGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCBBY2Nlc3NpYmlsaXR5QXRzcGk6
OmN1cnJlbnQoKS5udWxsUmVmZXJlbmNlKCkpKTsKICAgICAgICAgfSBlbHNlIGlmICghZ19zdHJj
bXAwKG1ldGhvZE5hbWUsICJHZXRDaGlsZHJlbiIpKSB7CiAgICAgICAgICAgICBHVmFyaWFudEJ1
aWxkZXIgYnVpbGRlciA9IEdfVkFSSUFOVF9CVUlMREVSX0lOSVQoR19WQVJJQU5UX1RZUEUoImEo
c28pIikpOwogICAgICAgICAgICAgYXV0byogY2hpbGQgPSBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2
ZVZhbHVlRnJvbU1haW5UaHJlYWQ8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKj4oWyZyb290T2Jq
ZWN0XSgpIC0+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSogewpAQCAtMTc0LDEzICsxNzMsMTMg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjpyZWdpc3Rlck9iamVjdChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYKICAgICBpbnRlcmZhY2VzLmFwcGVuZCh7IGNvbnN0
X2Nhc3Q8R0RCdXNJbnRlcmZhY2VJbmZvKj4oJndlYmtpdF9hY2Nlc3NpYmxlX2ludGVyZmFjZSks
ICZzX2FjY2Vzc2libGVGdW5jdGlvbnMgfSk7CiAgICAgaW50ZXJmYWNlcy5hcHBlbmQoeyBjb25z
dF9jYXN0PEdEQnVzSW50ZXJmYWNlSW5mbyo+KCZ3ZWJraXRfc29ja2V0X2ludGVyZmFjZSksICZz
X3NvY2tldEZ1bmN0aW9ucyB9KTsKICAgICBpbnRlcmZhY2VzLmFwcGVuZCh7IGNvbnN0X2Nhc3Q8
R0RCdXNJbnRlcmZhY2VJbmZvKj4oJndlYmtpdF9jb21wb25lbnRfaW50ZXJmYWNlKSwgJnNfY29t
cG9uZW50RnVuY3Rpb25zIH0pOwotICAgIG1fYXRzcGkucmVnaXN0ZXJSb290KCp0aGlzLCBXVEZN
b3ZlKGludGVyZmFjZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgQWNjZXNz
aWJpbGl0eUF0c3BpOjpjdXJyZW50KCkucmVnaXN0ZXJSb290KCp0aGlzLCBXVEZNb3ZlKGludGVy
ZmFjZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgQWNjZXNzaWJp
bGl0eVJvb3RBdHNwaTo6dW5yZWdpc3Rlck9iamVjdCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIG1fYXRzcGkudW5yZWdpc3RlclJvb3QoKnRoaXMpOworICAg
IEFjY2Vzc2liaWxpdHlBdHNwaTo6Y3VycmVudCgpLnVucmVnaXN0ZXJSb290KCp0aGlzKTsKIAog
ICAgIGlmIChtX3BhZ2UpCiAgICAgICAgIG1fcGFnZS0+c2V0QWNjZXNzaWJpbGl0eVJvb3RPYmpl
Y3QobnVsbHB0cik7CkBAIC0yMjIsOCArMjIxLDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0
c3BpOjplbWJlZGRlZChjb25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKgog
ICAgIFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgbV9wYXJlbnRVbmlxdWVO
YW1lID0gcGFyZW50VW5pcXVlTmFtZTsKICAgICBtX3BhcmVudFBhdGggPSBwYXJlbnRQYXRoOwot
ICAgIG1fYXRzcGkucGFyZW50Q2hhbmdlZCgqdGhpcyk7Ci0gICAgaWYgKCFtX2lzVHJlZVJlZ2lz
dGVyZWQubG9hZCgpICYmIG1fYXRzcGkuaGFzRXZlbnRMaXN0ZW5lcnMoKSkKKyAgICBBY2Nlc3Np
YmlsaXR5QXRzcGk6OmN1cnJlbnQoKS5wYXJlbnRDaGFuZ2VkKCp0aGlzKTsKKyAgICBpZiAoIW1f
aXNUcmVlUmVnaXN0ZXJlZC5sb2FkKCkgJiYgQWNjZXNzaWJpbGl0eUF0c3BpOjpjdXJyZW50KCku
aGFzRXZlbnRMaXN0ZW5lcnMoKSkKICAgICAgICAgcmVnaXN0ZXJUcmVlKCk7CiB9CiAKQEAgLTIz
MSwxNCArMjMwLDE0IEBAIEdWYXJpYW50KiBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjphcHBsaWNh
dGlvblJlZmVyZW5jZSgpIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBpZiAobV9wYXJlbnRVbmlxdWVOYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gbV9hdHNwaS5udWxsUmVmZXJlbmNlKCk7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
QXRzcGk6OmN1cnJlbnQoKS5udWxsUmVmZXJlbmNlKCk7CiAgICAgcmV0dXJuIGdfdmFyaWFudF9u
ZXcoIihzbykiLCBtX3BhcmVudFVuaXF1ZU5hbWUudXRmOCgpLmRhdGEoKSwgIi9vcmcvYTExeS9h
dHNwaS9hY2Nlc3NpYmxlL3Jvb3QiKTsKIH0KIAogR1ZhcmlhbnQqIEFjY2Vzc2liaWxpdHlSb290
QXRzcGk6OnJlZmVyZW5jZSgpIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKLSAgICByZXR1cm4gZ192YXJpYW50X25ldygiKHNvKSIsIG1fYXRzcGkudW5pcXVl
TmFtZSgpLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdfdmFyaWFudF9uZXco
IihzbykiLCBBY2Nlc3NpYmlsaXR5QXRzcGk6OmN1cnJlbnQoKS51bmlxdWVOYW1lKCksIG1fcGF0
aC51dGY4KCkuZGF0YSgpKTsKIH0KIAogR1ZhcmlhbnQqIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6
OnBhcmVudFJlZmVyZW5jZSgpIGNvbnN0CkBAIC0yNjgsMTggKzI2NywxOCBAQCBBY2Nlc3NpYmls
aXR5T2JqZWN0QXRzcGkqIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OmNoaWxkKCkgY29uc3QKIAog
dm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjpjaGlsZEFkZGVkKEFjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaSYgY2hpbGQpCiB7Ci0gICAgbV9hdHNwaS5jaGlsZHJlbkNoYW5nZWQoKnRoaXMsIGNo
aWxkLCBBY2Nlc3NpYmlsaXR5QXRzcGk6OkNoaWxkcmVuQ2hhbmdlZDo6QWRkZWQpOworICAgIEFj
Y2Vzc2liaWxpdHlBdHNwaTo6Y3VycmVudCgpLmNoaWxkcmVuQ2hhbmdlZCgqdGhpcywgY2hpbGQs
IEFjY2Vzc2liaWxpdHlBdHNwaTo6Q2hpbGRyZW5DaGFuZ2VkOjpBZGRlZCk7CiB9CiAKIHZvaWQg
QWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6Y2hpbGRSZW1vdmVkKEFjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaSYgY2hpbGQpCiB7Ci0gICAgbV9hdHNwaS5jaGlsZHJlbkNoYW5nZWQoKnRoaXMsIGNoaWxk
LCBBY2Nlc3NpYmlsaXR5QXRzcGk6OkNoaWxkcmVuQ2hhbmdlZDo6UmVtb3ZlZCk7CisgICAgQWNj
ZXNzaWJpbGl0eUF0c3BpOjpjdXJyZW50KCkuY2hpbGRyZW5DaGFuZ2VkKCp0aGlzLCBjaGlsZCwg
QWNjZXNzaWJpbGl0eUF0c3BpOjpDaGlsZHJlbkNoYW5nZWQ6OlJlbW92ZWQpOwogfQogCiB2b2lk
IEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNlcmlhbGl6ZShHVmFyaWFudEJ1aWxkZXIqIGJ1aWxk
ZXIpIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBn
X3ZhcmlhbnRfYnVpbGRlcl9hZGQoYnVpbGRlciwgIihzbykiLCBtX2F0c3BpLnVuaXF1ZU5hbWUo
KSwgbV9wYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZChidWls
ZGVyLCAiKHNvKSIsIEFjY2Vzc2liaWxpdHlBdHNwaTo6Y3VycmVudCgpLnVuaXF1ZU5hbWUoKSwg
bV9wYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZChidWlsZGVy
LCAiQChzbykiLCBhcHBsaWNhdGlvblJlZmVyZW5jZSgpKTsKICAgICBnX3ZhcmlhbnRfYnVpbGRl
cl9hZGQoYnVpbGRlciwgIkAoc28pIiwgcGFyZW50UmVmZXJlbmNlKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRz
cGkuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJv
b3RBdHNwaS5oCmluZGV4IDRlMGM5MjdhOTAzMy4uNzBiZDQ4MzgyZjE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlS
b290QXRzcGkuaApAQCAtMjAsMTMgKzIwLDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJM
RShBQ0NFU1NJQklMSVRZKSAmJiBVU0UoQVRTUEkpCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUF0
c3BpLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCit0eXBlZGVmIHN0cnVjdCBfR0RC
dXNJbnRlcmZhY2VWVGFibGUgR0RCdXNJbnRlcmZhY2VWVGFibGU7CiB0eXBlZGVmIHN0cnVjdCBf
R1ZhcmlhbnQgR1ZhcmlhbnQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDcgKzM2LDcg
QEAgY2xhc3MgUGFnZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlSb290QXRzcGkgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWNjZXNzaWJpbGl0eVJvb3RBdHNwaT4gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJp
bGl0eVJvb3RBdHNwaT4gY3JlYXRlKFBhZ2UmLCBBY2Nlc3NpYmlsaXR5QXRzcGkmKTsKKyAgICBz
dGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlSb290QXRzcGk+IGNyZWF0ZShQYWdlJik7CiAgICAgfkFj
Y2Vzc2liaWxpdHlSb290QXRzcGkoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHJlZ2lzdGVyT2Jq
ZWN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwpAQCAtNDksNyAr
NDksNiBAQCBwdWJsaWM6CiAgICAgR1ZhcmlhbnQqIHJlZmVyZW5jZSgpIGNvbnN0OwogICAgIEdW
YXJpYW50KiBwYXJlbnRSZWZlcmVuY2UoKSBjb25zdDsKICAgICBHVmFyaWFudCogYXBwbGljYXRp
b25SZWZlcmVuY2UoKSBjb25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5QXRzcGkmIGF0c3BpKCkgY29u
c3QgeyByZXR1cm4gbV9hdHNwaTsgfQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSogY2hp
bGQoKSBjb25zdDsKICAgICB2b2lkIGNoaWxkQWRkZWQoQWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
Jik7CiAgICAgdm9pZCBjaGlsZFJlbW92ZWQoQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpJik7CkBA
IC01Nyw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlcmlhbGl6ZShHVmFyaWFudEJ1aWxk
ZXIqKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpKFBhZ2Um
LCBBY2Nlc3NpYmlsaXR5QXRzcGkmKTsKKyAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5Um9vdEF0
c3BpKFBhZ2UmKTsKIAogICAgIHZvaWQgZW1iZWRkZWQoY29uc3QgY2hhciogcGFyZW50VW5pcXVl
TmFtZSwgY29uc3QgY2hhciogcGFyZW50UGF0aCk7CiAgICAgSW50UmVjdCBmcmFtZVJlY3QodWlu
dDMyX3QpIGNvbnN0OwpAQCAtNjYsNyArNjUsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBHREJ1
c0ludGVyZmFjZVZUYWJsZSBzX3NvY2tldEZ1bmN0aW9uczsKICAgICBzdGF0aWMgR0RCdXNJbnRl
cmZhY2VWVGFibGUgc19jb21wb25lbnRGdW5jdGlvbnM7CiAKLSAgICBBY2Nlc3NpYmlsaXR5QXRz
cGkmIG1fYXRzcGk7CiAgICAgV2Vha1B0cjxQYWdlPiBtX3BhZ2U7CiAgICAgU3RyaW5nIG1fcGF0
aDsKICAgICBTdHJpbmcgbV9wYXJlbnRVbmlxdWVOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjZTI3ZTE0YzY5
ZmQuLjZlOTIxM2FmOWExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMi0yOSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dU
S11bYTExeV0gV2ViIHByb2Nlc3MgY3Jhc2hlcyBpbiBzb21lIHNpdGVzIGhhdmluZyBTVkcgaW1h
Z2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3
MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEbyBu
b3QgcGFzcyB0aGUgQWNjZXNzaWJpbGl0eUF0c3BpIHRvIHRoZSBBY2Nlc3NpYmlsaXR5Um9vdEF0
c3BpIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
YWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKwogMjAyMS0xMi0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZSBXZWJLaXQvQ29jb2FDb2xvci5oIHdpdGggV2ViQ29yZS9Db2xvckNvY29hLmgs
IG5vdCBjb25mdXNpbmcgYXQgYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXggMTUxM2RkMmE1Zjc4Li42YjQzZjllZDFj
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
YWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UGFnZUd0ay5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybUluaXRp
YWxpemUoKQogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIGEgd2F5IHRvIGNvbm5lY3QgRE9NIGFuZCBh
cHAgYTExeSB0cmVlIGluIEdUSzQuCiAjZWxzZQogICAgIGlmIChhdXRvKiBwYWdlID0gY29yZVBh
Z2UoKSkgewotICAgICAgICBtX2FjY2Vzc2liaWxpdHlSb290T2JqZWN0ID0gQWNjZXNzaWJpbGl0
eVJvb3RBdHNwaTo6Y3JlYXRlKCpwYWdlLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hY2Nlc3Np
YmlsaXR5QXRzcGkoKSk7CisgICAgICAgIG1fYWNjZXNzaWJpbGl0eVJvb3RPYmplY3QgPSBBY2Nl
c3NpYmlsaXR5Um9vdEF0c3BpOjpjcmVhdGUoKnBhZ2UpOwogICAgICAgICBtX2FjY2Vzc2liaWxp
dHlSb290T2JqZWN0LT5yZWdpc3Rlck9iamVjdChbJl0oY29uc3QgU3RyaW5nJiBwbHVnSUQpIHsK
ICAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmluZEFjY2Vzc2liaWxp
dHlUcmVlKHBsdWdJRCkpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZTBlNjIwNDZhNjQuLmIxOTM5NGJlNjRlYiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIxLTEyLTI5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBXZWIgcHJvY2VzcyBjcmFzaGVzIGluIHNvbWUg
c2l0ZXMgaGF2aW5nIFNWRyBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDczNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSBBY2Nlc3NpYmlsaXR5QXRzcGk6OmN1cnJlbnQoKS4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJBdHNwaS5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9s
bGVyOjpheFJ1bkxvb3ApOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvYXRzcGkvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6QWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlcjo6fkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKToKKwogMjAyMS0xMi0y
NiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS11bYTExeV0gU3RvcCBzZXR0aW5nIG1hbmFnZXMtZGVzY2VuZGFudHMgb24gd2ViIHByb2Nl
c3Mgcm9vdCBvYmplY3Qgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0c3BpLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJBdHNwaS5jcHAKaW5kZXggYmFiNDU4YzhhMDk0Li45NGU2Zjg4NjI1YzQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdHNwaS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0c3BpLmNw
cApAQCAtMTM4LDcgKzEzOCw3IEBAIFJ1bkxvb3AmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjph
eFJ1bkxvb3AoKQogICAgICAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKTsKICAgICAgICAgYXV0byogZWxlbWVudCA9IHN0
YXRpY19jYXN0PFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSo+KFdLQWNjZXNzaWJp
bGl0eVJvb3RPYmplY3QocGFnZSkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChlbGVtZW50KTsK
LSAgICAgICAgbV9heFJ1bkxvb3AgPSAmZWxlbWVudC0+cm9vdCgpLmF0c3BpKCkucnVuTG9vcCgp
OworICAgICAgICBtX2F4UnVuTG9vcCA9ICZXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OmN1
cnJlbnQoKS5ydW5Mb29wKCk7CiAgICAgfQogCiAgICAgcmV0dXJuICptX2F4UnVuTG9vcDsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5j
cHAKaW5kZXggNTM1MWYzOTk1MGUwLi42MzFkN2UyN2I4MzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvYXRzcGkvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwCkBAIC0zMyw3ICsz
Myw2IEBACiAjaW5jbHVkZSAiSlNXcmFwcGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
T3BhcXVlSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS0J1bmRsZUZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxl
UGFnZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVBhZ2VQcml2YXRlLmg+CkBAIC00NCwx
MyArNDMsMTEgQEAgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OkFjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25IYW5kbGVyKEpTVmFsdWVSZWYgY2EKICAgICA6IG1fY2FsbGJhY2soY2Fs
bGJhY2spCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKIHsKLSAgICBXS0J1bmRsZVBhZ2VSZWYg
cGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKTsKLSAgICBX
S0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShwYWdl
KTsKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5G
cmFtZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkpOwogICAgIEpT
Q29udGV4dFJlZiBqc0NvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQo
bWFpbkZyYW1lKTsKICAgICBKU1ZhbHVlUHJvdGVjdChqc0NvbnRleHQsIG1fY2FsbGJhY2spOwog
Ci0gICAgYXV0byYgYXRzcGkgPSBtX2VsZW1lbnQgPyBtX2VsZW1lbnQtPnJvb3QoKS5hdHNwaSgp
IDogc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKj4oV0tBY2Nl
c3NpYmlsaXR5Um9vdE9iamVjdChwYWdlKSktPnJvb3QoKS5hdHNwaSgpOwotICAgIGF0c3BpLmFk
ZE5vdGlmaWNhdGlvbk9ic2VydmVyKHRoaXMsIFt0aGlzXShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGkmIGVsZW1lbnQsIGNvbnN0IGNoYXIqIG5vdGlmaWNhdGlvbk5hbWUsIFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6Tm90aWZpY2F0aW9uT2JzZXJ2ZXJQYXJhbWV0ZXIgcGFy
YW1ldGVyKSB7CisgICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjpjdXJyZW50KCkuYWRk
Tm90aWZpY2F0aW9uT2JzZXJ2ZXIodGhpcywgW3RoaXNdKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaSYgZWxlbWVudCwgY29uc3QgY2hhciogbm90aWZpY2F0aW9uTmFtZSwgV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjpOb3RpZmljYXRpb25PYnNlcnZlclBhcmFtZXRlciBwYXJh
bWV0ZXIpIHsKICAgICAgICAgaWYgKG1fZWxlbWVudCAmJiBtX2VsZW1lbnQuZ2V0KCkgIT0gJmVs
ZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTk1LDExICs5Miw5IEBAIEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
cihKU1ZhbHVlUmVmIGNhCiAKIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjp+QWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKQogewotICAgIFdLQnVuZGxlUGFnZVJlZiBw
YWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpOwotICAgIGF1
dG8mIGF0c3BpID0gbV9lbGVtZW50ID8gbV9lbGVtZW50LT5yb290KCkuYXRzcGkoKSA6IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSo+KFdLQWNjZXNzaWJpbGl0
eVJvb3RPYmplY3QocGFnZSkpLT5yb290KCkuYXRzcGkoKTsKLSAgICBhdHNwaS5yZW1vdmVOb3Rp
ZmljYXRpb25PYnNlcnZlcih0aGlzKTsKKyAgICBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6
OmN1cnJlbnQoKS5yZW1vdmVOb3RpZmljYXRpb25PYnNlcnZlcih0aGlzKTsKIAotICAgIFdLQnVu
ZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBhZ2UpOwor
ICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1l
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSk7CiAgICAgSlNDb250
ZXh0UmVmIGpzQ29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWlu
RnJhbWUpOwogICAgIEpTVmFsdWVVbnByb3RlY3QoanNDb250ZXh0LCBtX2NhbGxiYWNrKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448835</attachid>
            <date>2022-01-11 02:52:18 -0800</date>
            <delta_ts>2022-01-11 03:38:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-atspi-svg-crash.diff</filename>
            <type>text/plain</type>
            <size>53679</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZGJhYWNhMWVjOTEuLjBlMDViM2YwMjE0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDc5IEBACisyMDIyLTAxLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBXZWIgcHJvY2VzcyBjcmFzaGVzIGlu
IHNvbWUgc2l0ZXMgaGF2aW5nIFNWRyBpbWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDczNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHkgdGhlIGNoYW5nZXMgaW4gcjI4NzM4
OCBhcmUgbm90IGVub3VnaCwgaXQgY2FuIHN0aWxsIGhhcHBlbiB0aGF0IHJvb3QgaGFzbid0IGJl
ZW4gc2V0IHRvIHRoZQorICAgICAgICBTVkdJbWFnZSBwYWdlIHdoZW4gdGhlIHdyYXBwZXJzIGFy
ZSBjcmVhdGVkLiBTbywgd2UgY2FuJ3QgYWN0dWFsbHkgY3JlYXRlIHRoZSB3cmFwcGVycyB3aXRo
IGEgcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICByb290IG9iamVjdCBhcyB3ZSBkaWQgaW4gcjI4
Njc2Ny4gSW4gbW9zdCBvZiB0aGUgY2FzZXMgd3JhcHBlcnMgdXNlIHRoZSByb290IGp1c3QgdG8g
Z2V0IEFjY2Vzc2liaWxpdHlBdHNwaSwKKyAgICAgICAgd2hpY2ggaXMgbm90IGEgc2luZ2xldG9u
LCBidXQgaXQncyBjcmVhdGVkIGFuZCBvd25lZCBieSB0aGUgd2ViIHByb2Nlc3Mgc2luZ2xldG9u
IGF0IHN0YXJ0dXAsIHNvIGl0IGNhbiBiZQorICAgICAgICBhY2Nlc3NlZCBnbG9iYWx5LiBUaGlz
IHBhdGNoIG1ha2VzIEFjY2Vzc2liaWxpdHlBdHNwaSBhIHNpbmdsZXRvbiB0byBnZXQgdGhlIGds
b2JhbCBpbnN0YW5jZSB3aXRob3V0IGhhdmluZyB0bworICAgICAgICBrZWVwIGEgcmVmZXJlbmNl
IGluIHRoZSByb290IG9iamVjdC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpyZW1vdGVTVkdSb290RWxlbWVudCBjb25zdCk6IE1vdmUgdGhlIGNvZGUgdG8g
c2V0IHRoZSByb290IGluIFNWR0ltYWdlIHBhZ2UKKyAgICAgICAgYmVmb3JlIHRoZSByZW1vdGUg
c3ZnIHdyYXBwZXIgaXMgY3JlYXRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FY
T2JqZWN0Q2FjaGVBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjph
dHRhY2hXcmFwcGVyKTogSnVzdCBwYXNzIHRoZSBwYWdlIHJvb3Qgb2JqZWN0IHRvIHRoZSB3cmFw
cGVyIGNvbnN0cnVjdG9yLCB0aGF0IG5vdworICAgICAgICByZWNlaXZlcyBhIHBvaW50ZXIgdGhh
dCBtaWdodCBiZSBudWxscHRyLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eUF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6
QWNjZXNzaWJpbGl0eUF0c3BpKTogSnVzdCBjcmVhdGUgdGhlIFdvcmtRdWV1ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKTogUmV0dXJuIGEgcmVmZXJl
bmNlIHRvIHRoZSBnbG9iYWwgaW5zdGFuY2UuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5QXRzcGk6OmNvbm5lY3QpOiBDb25uZWN0IHRvIHRoZSBnaXZlbiBkYnVzIGFkZHJlc3MuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OmFwcGxpY2F0aW9uUmVmZXJlbmNl
IGNvbnN0KTogVGhpcyBhbGxvd3Mgd3JhcHBlcnMgdG8gZ2V0IHRoZSBhcHBsaWNhdGlvbiByZWZl
cmVuY2UKKyAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gY2hlY2sgaWYgbV9yb290IGlzIG51bGxw
dHIgb3Igbm90LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjpwYXJlbnRD
aGFuZ2VkKTogVXNlIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6aXNUcmVlUmVnaXN0ZXJlZCgp
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OmNoaWxkcmVuQ2hhbmdlZCk6
IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0c3Bp
Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjcmVh
dGUpOiBSZWNlaXZlIGEgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaSBwb2ludGVyIGluc3RlYWQgb2Yg
cmVmZXJlbmNlLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6Y2FjaGVEZXN0cm95ZWQpOiBPbmx5IGNhbGwgQWNjZXNzaWJp
bGl0eVJvb3RBdHNwaTo6Y2hpbGRSZW1vdmVkIGlmIHBhcmVudCBpcworICAgICAgICB0aGUgcm9v
dCBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVs
ZW1lbnREZXN0cm95ZWQpOiBOdWxsIGNoZWNrIG1fcm9vdCBhbmQgdXNlIEFjY2Vzc2liaWxpdHlB
dHNwaTo6c2luZ2xldG9uKCkuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGk6OnJvb3QpOiBHZXQgdGhlIHJvb3QgaWYgYWxyZWFkeSBzZXQgb3IgdHJ5IHRvIGdldCBp
dCBmcm9tIHRoZSBwYWdlLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjppc1RyZWVSZWdpc3RlcmVkIGNvbnN0KTogUmV0dXJuIHRyeSBpZiByb290IGhhcyBiZWVu
IHNldCBhbmQgaXRzIHRyZWUgaGFzCisgICAgICAgIGJlZW4gcmVnaXN0ZXJlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6cmVnaXN0ZXJPYmplY3QpOiBVc2Ug
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyb290KCkuCisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJlZmVyZW5jZSk6IFVzZSBBY2Nlc3NpYmlsaXR5QXRzcGk6
OnNpbmdsZXRvbigpLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
OjpoeXBlcmxpbmtSZWZlcmVuY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaTo6c2V0UGFyZW50KTogUmV0dXJuIGVhcmx5IGFsc28gaWYgcm9vdCBo
YXNuJ3QgYmVlbiBzZXQgeWV0LgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjpwYXJlbnRSZWZlcmVuY2UgY29uc3QpOiBVc2UgQWNjZXNzaWJpbGl0eUF0c3BpOjpz
aW5nbGV0b24oKS4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6
c2VyaWFsaXplIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGk6OmNoaWxkQWRkZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6Y2hpbGRSZW1vdmVkKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnN0YXRlQ2hhbmdlZCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpsb2FkRXZlbnQpOiBEaXR0
by4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdENv
bXBvbmVudEF0c3BpLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RIeXBlcmxpbmtBdHNwaS5jcHA6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9h
dHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJ0ZXh0QXRzcGkuY3BwOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFNlbGVjdGlvbkF0c3BpLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c2VsZWN0aW9uQ2hh
bmdlZCk6IERpdHRvLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdFRhYmxlQXRzcGkuY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0ZXh0SW5zZXJ0ZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dERlbGV0ZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c2VsZWN0
aW9uQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjp0ZXh0QXR0cmlidXRlc0NoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RWYWx1ZUF0c3BpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dmFsdWVDaGFuZ2VkKTogRGl0dG8u
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSb290QXRzcGk6OmNyZWF0ZSk6IFJl
bW92ZSBBY2Nlc3NpYmlsaXR5QXRzcGkgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJvb3RBdHNwaTo6QWNjZXNzaWJpbGl0eVJvb3RBdHNwaSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6cmVnaXN0ZXJPYmplY3QpOiBV
c2UgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSb290QXRzcGk6OnVucmVnaXN0ZXJPYmplY3QpOiBEaXR0bworICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6ZW1iZWRkZWQpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSb290QXRzcGk6OmFwcGxpY2F0aW9uUmVmZXJlbmNl
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Um9vdEF0c3Bp
OjpyZWZlcmVuY2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSb290QXRzcGk6OmNoaWxkQWRkZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSb290QXRzcGk6OmNoaWxkUmVtb3ZlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6c2VyaWFsaXplIGNvbnN0KTogRGl0dG8uCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmg6CisKIDIw
MjItMDEtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW2ExMXldIFdUUjogZG8gbm90IGltbWVkaWF0ZWx5IHByb2Nlc3MgbWFpbiB0
aHJlYWQgZXZlbnRzIHdoaWxlIHdhaXRpbmcgZm9yIGF4IHRocmVhZCB0YXNrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCAwMDNlMjQ0NDFhOTkuLmZkZWU2NGFkNGI1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCkBAIC0zNDAyLDE3ICszNDAyLDE4IEBAIEFjY2Vzc2liaWxpdHlTVkdSb290KiBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdSb290RWxlbWVudChDcmVhdGlvbkNoCiAg
ICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBmcmFtZS5kb2N1bWVudCgpLT5heE9iamVjdENhY2hl
KCk7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogcm9vdFNWR09iamVjdCA9IGNyZWF0ZUlmTmVjZXNzYXJ5ID09IENyZWF0
ZSA/IGNhY2hlLT5nZXRPckNyZWF0ZShyZW5kZXJlclJvb3QpIDogY2FjaGUtPmdldChyZW5kZXJl
clJvb3QpOwotCi0gICAgQVNTRVJUKCFjcmVhdGVJZk5lY2Vzc2FyeSB8fCByb290U1ZHT2JqZWN0
KTsKLSAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlTVkdSb290Pihyb290U1ZHT2JqZWN0KSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICNpZiBVU0UoQVRTUEkpCiAgICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudC0+cGFnZSgpKQogICAgICAgICBwYWdlLT5zZXRBY2Nlc3NpYmlsaXR5Um9v
dE9iamVjdChjcmVhdGVJZk5lY2Vzc2FyeSA9PSBDcmVhdGUgPyBheE9iamVjdENhY2hlKCktPmRv
Y3VtZW50KCkucGFnZSgpLT5hY2Nlc3NpYmlsaXR5Um9vdE9iamVjdCgpIDogbnVsbHB0cik7CiAj
ZW5kaWYKIAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3RTVkdPYmplY3QgPSBjcmVhdGVJ
Zk5lY2Vzc2FyeSA9PSBDcmVhdGUgPyBjYWNoZS0+Z2V0T3JDcmVhdGUocmVuZGVyZXJSb290KSA6
IGNhY2hlLT5nZXQocmVuZGVyZXJSb290KTsKKworICAgIEFTU0VSVCghY3JlYXRlSWZOZWNlc3Nh
cnkgfHwgcm9vdFNWR09iamVjdCk7CisgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5U1ZHUm9vdD4o
cm9vdFNWR09iamVjdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgcmV0dXJuIGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlTVkdSb290Pihyb290U1ZHT2JqZWN0KTsKIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQVhPYmplY3RDYWNo
ZUF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQVhPYmplY3RD
YWNoZUF0c3BpLmNwcAppbmRleCAwMzZkZjJiNzg2NzQuLmI1MjhhMDE1M2Q2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BWE9iamVjdENhY2hlQXRzcGku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQVhPYmplY3RDYWNo
ZUF0c3BpLmNwcApAQCAtMzUsMTEgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lk
IEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQVhDb3JlT2JqZWN0KiBheE9iamVjdCkKIHsK
LSAgICBhdXRvKiByb290V3JhcHBlciA9IGRvY3VtZW50KCkucGFnZSgpLT5hY2Nlc3NpYmlsaXR5
Um9vdE9iamVjdCgpOwotICAgIGlmICghcm9vdFdyYXBwZXIpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGF1dG8gd3JhcHBlciA9IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6Y3JlYXRlKGF4T2Jq
ZWN0LCAqcm9vdFdyYXBwZXIpOworICAgIGF1dG8gd3JhcHBlciA9IEFjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaTo6Y3JlYXRlKGF4T2JqZWN0LCBkb2N1bWVudCgpLnBhZ2UoKS0+YWNjZXNzaWJpbGl0
eVJvb3RPYmplY3QoKSk7CiAgICAgYXhPYmplY3QtPnNldFdyYXBwZXIod3JhcHBlci5wdHIoKSk7
CiAKICAgICBtX2RlZmVycmVkUGFyZW50Q2hhbmdlZExpc3QuYWRkKGF4T2JqZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0
c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eUF0c3BpLmNwcAppbmRleCBhZjM0YWU1MzA3N2UuLjNiMjlmOGE2YmM3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eUF0
c3BpLmNwcApAQCAtMjYsMTggKzI2LDMxIEBACiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1
ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4K
ICNpbmNsdWRlIDx3dGYvU29ydGVkQXJyYXlNYXAuaD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFjY2Vzc2liaWxpdHlBdHNwaTo6QWNjZXNzaWJpbGl0
eUF0c3BpKGNvbnN0IFN0cmluZyYgYnVzQWRkcmVzcykKK0FjY2Vzc2liaWxpdHlBdHNwaSYgQWNj
ZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBY2Nlc3NpYmlsaXR5QXRzcGk+IGF0c3BpOworICAgIHJldHVybiBhdHNwaTsKK30KKworQWNj
ZXNzaWJpbGl0eUF0c3BpOjpBY2Nlc3NpYmlsaXR5QXRzcGkoKQogICAgIDogbV9xdWV1ZShXb3Jr
UXVldWU6OmNyZWF0ZSgib3JnLndlYmtpdC5hMTF5IikpCit7CisgICAgUkVMRUFTRV9BU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlBdHNwaTo6Y29ubmVjdChj
b25zdCBTdHJpbmcmIGJ1c0FkZHJlc3MpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIGlmIChidXNBZGRyZXNzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwor
CiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIGJ1c0FkZHJlc3MgPSBidXNBZGRyZXNzLmlz
b2xhdGVkQ29weSgpXSB7CiAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAg
ICAgICAgbV9jb25uZWN0aW9uID0gYWRvcHRHUmVmKGdfZGJ1c19jb25uZWN0aW9uX25ld19mb3Jf
YWRkcmVzc19zeW5jKGJ1c0FkZHJlc3MudXRmOCgpLmRhdGEoKSwKQEAgLTUxLDEyICs2NCw2IEBA
IEFjY2Vzc2liaWxpdHlBdHNwaTo6QWNjZXNzaWJpbGl0eUF0c3BpKGNvbnN0IFN0cmluZyYgYnVz
QWRkcmVzcykKICAgICB9KTsKIH0KIAotQWNjZXNzaWJpbGl0eUF0c3BpOjp+QWNjZXNzaWJpbGl0
eUF0c3BpKCkKLXsKLSAgICBpZiAobV9yZWdpc3RyeSkKLSAgICAgICAgZ19zaWduYWxfaGFuZGxl
cnNfZGlzY29ubmVjdF9ieV9kYXRhKG1fcmVnaXN0cnkuZ2V0KCksIHRoaXMpOwotfQotCiB2b2lk
IEFjY2Vzc2liaWxpdHlBdHNwaTo6cmVnaXN0ZXJUcmVlcygpIGNvbnN0CiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTIxOCw2ICsyMjUsMTkgQEAgR1ZhcmlhbnQq
IEFjY2Vzc2liaWxpdHlBdHNwaTo6bnVsbFJlZmVyZW5jZSgpIGNvbnN0CiAgICAgcmV0dXJuIGdf
dmFyaWFudF9uZXcoIihzbykiLCB1bmlxdWVOYW1lKCksICIvb3JnL2ExMXkvYXRzcGkvbnVsbCIp
OwogfQogCitHVmFyaWFudCogQWNjZXNzaWJpbGl0eUF0c3BpOjphcHBsaWNhdGlvblJlZmVyZW5j
ZSgpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAg
IC8vIFRoZSBhcHBsaWNhdGlvbiBpcyB0aGUgc2FtZSBmb3IgYWxsIHJvb3Qgb2JqZWN0cywgc28g
anVzdCB1c2UgdGhlIGZpcnN0IHJvb3Qgb2JqZWN0IHRoYXQgaXMgYWxyZWFkeSBlbWJlZGRlZC4K
KyAgICBmb3IgKGF1dG8qIHJvb3RPYmplY3QgOiBtX3Jvb3RPYmplY3RzLmtleXMoKSkgeworICAg
ICAgICBpZiAoIXJvb3RPYmplY3QtPnBhdGgoKS5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVy
biByb290T2JqZWN0LT5hcHBsaWNhdGlvblJlZmVyZW5jZSgpOworICAgIH0KKworICAgIHJldHVy
biBudWxsUmVmZXJlbmNlKCk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eUF0c3BpOjpyZWdpc3Rl
clJvb3QoQWNjZXNzaWJpbGl0eVJvb3RBdHNwaSYgcm9vdE9iamVjdCwgVmVjdG9yPHN0ZDo6cGFp
cjxHREJ1c0ludGVyZmFjZUluZm8qLCBHREJ1c0ludGVyZmFjZVZUYWJsZSo+PiYmIGludGVyZmFj
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMzI5LDcg
KzM0OSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUF0c3BpOjpwYXJlbnRDaGFuZ2VkKEFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaSYgYXRzcGlPYmplY3QpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgLy8gQWx3YXlzIGVtaXQgcGFyZW50Q2hhbmdlZCB3aGVuIHRoZSB0cmVlIGlzIHJlZ2lz
dGVyZWQgYmVjYXVzZSB0aGUgYXRzcGkgY2FjaGUgYWx3YXlzIGNvbnN1bWVzIGl0LgotICAgICAg
ICBpZiAoIWF0c3BpT2JqZWN0LT5yb290KCkuaXNUcmVlUmVnaXN0ZXJlZCgpKQorICAgICAgICBp
ZiAoIWF0c3BpT2JqZWN0LT5pc1RyZWVSZWdpc3RlcmVkKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgLy8gRW1pdCBwYXJlbnRDaGFuZ2VkIG9ubHkgaWYgdGhlIG9iamVjdCBpcyBh
bHJlYWR5IHJlZ2lzdGVyZWQsIG90aGVyd2lzZSByZWdpc3RlciB0aGUgb2JqZWN0LApAQCAtMzY1
LDcgKzM4NSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUF0c3BpOjpjaGlsZHJlbkNoYW5nZWQoQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpJiBhdHNwaU9iamVjdCwKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAvLyBBbHdheXMgZW1pdCBDaGlsZHJlbkNoYW5nZWQgd2hlbiB0aGUgdHJlZSBp
cyByZWdpc3RlcmVkIGJlY2F1c2UgdGhlIGF0c3BpIGNhY2hlIGFsd2F5cyBjb25zdW1lcyBpdC4K
LSAgICAgICAgaWYgKCFhdHNwaU9iamVjdC0+cm9vdCgpLmlzVHJlZVJlZ2lzdGVyZWQoKSkKKyAg
ICAgICAgaWYgKCFhdHNwaU9iamVjdC0+aXNUcmVlUmVnaXN0ZXJlZCgpKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX2VtaXRfc2lnbmFsKG1fY29ubmVj
dGlvbi5nZXQoKSwgbnVsbHB0ciwgYXRzcGlPYmplY3QtPnBhdGgoKS51dGY4KCkuZGF0YSgpLCAi
b3JnLmExMXkuYXRzcGkuRXZlbnQuT2JqZWN0IiwgIkNoaWxkcmVuQ2hhbmdlZCIsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNw
aS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRz
cGkuaAppbmRleCA3NTRmMzBjZDJkNjguLjBiNGUzMjBiOGUwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5QXRzcGkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlBdHNwaS5oCkBA
IC00MCwxNSArNDAsMTggQEAgY2xhc3MgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTsKIGVudW0gY2xh
c3MgQWNjZXNzaWJpbGl0eVJvbGU7CiAKIGNsYXNzIEFjY2Vzc2liaWxpdHlBdHNwaSB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWNjZXNz
aWJpbGl0eUF0c3BpKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIE5ldmVy
RGVzdHJveWVkPEFjY2Vzc2liaWxpdHlBdHNwaT47CiBwdWJsaWM6Ci0gICAgQWNjZXNzaWJpbGl0
eUF0c3BpKGNvbnN0IFN0cmluZyYpOwotICAgIH5BY2Nlc3NpYmlsaXR5QXRzcGkoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgQWNjZXNzaWJpbGl0eUF0c3BpJiBzaW5nbGV0b24oKTsKKwor
ICAgIHZvaWQgY29ubmVjdChjb25zdCBTdHJpbmcmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJ1
bkxvb3AmIHJ1bkxvb3AoKSBjb25zdDsKIAogICAgIGNvbnN0IGNoYXIqIHVuaXF1ZU5hbWUoKSBj
b25zdDsKICAgICBHVmFyaWFudCogbnVsbFJlZmVyZW5jZSgpIGNvbnN0OworICAgIEdWYXJpYW50
KiBhcHBsaWNhdGlvblJlZmVyZW5jZSgpIGNvbnN0OwogICAgIGJvb2wgaGFzRXZlbnRMaXN0ZW5l
cnMoKSBjb25zdCB7IHJldHVybiAhbV9ldmVudExpc3RlbmVycy5pc0VtcHR5KCk7IH0KIAogICAg
IHZvaWQgcmVnaXN0ZXJSb290KEFjY2Vzc2liaWxpdHlSb290QXRzcGkmLCBWZWN0b3I8c3RkOjpw
YWlyPEdEQnVzSW50ZXJmYWNlSW5mbyosIEdEQnVzSW50ZXJmYWNlVlRhYmxlKj4+JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwpAQCAtODgsNiArOTEsOCBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5QXRzcGkoKTsKKwog
ICAgIHZvaWQgcmVnaXN0ZXJUcmVlcygpIGNvbnN0OwogICAgIHZvaWQgaW5pdGlhbGl6ZVJlZ2lz
dHJ5KCk7CiAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IGNoYXIqIGRidXNOYW1lLCBj
b25zdCBjaGFyKiBldmVudE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCmluZGV4
IGY1ODUzMjgzNGE4ZC4uZWY0OWFmNzU2YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGku
Y3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaT4gQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjcmVhdGUoQVhD
b3JlT2JqZWN0KiBjb3JlT2JqZWN0LCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpJiByb290KQorUmVm
PEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaT4gQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjcmVh
dGUoQVhDb3JlT2JqZWN0KiBjb3JlT2JqZWN0LCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpKiByb290
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaShj
b3JlT2JqZWN0LCByb290KSk7CiB9CkBAIC0xMTAsNyArMTEwLDcgQEAgT3B0aW9uU2V0PEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6SW50ZXJmYWNlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OmludGVyZmEKICAgICByZXR1cm4gaW50ZXJmYWNlczsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkoQVhDb3JlT2JqZWN0KiBjb3JlT2JqZWN0
LCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpJiByb290KQorQWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
OjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkoQVhDb3JlT2JqZWN0KiBjb3JlT2JqZWN0LCBBY2Nl
c3NpYmlsaXR5Um9vdEF0c3BpKiByb290KQogICAgIDogbV9jb3JlT2JqZWN0KGNvcmVPYmplY3Qp
CiAgICAgLCBtX2ludGVyZmFjZXMoaW50ZXJmYWNlc0Zvck9iamVjdCgqbV9jb3JlT2JqZWN0KSkK
ICAgICAsIG1fcm9vdChyb290KQpAQCAtMTM2LDggKzEzNiwxMCBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaTo6Y2FjaGVEZXN0cm95ZWQoKQogICAgIGlmICghbV9pc1JlZ2lzdGVyZWQu
bG9hZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Jvb3QuY2hpbGRSZW1vdmVkKCp0aGlz
KTsKLSAgICBtX3Jvb3QuYXRzcGkoKS51bnJlZ2lzdGVyT2JqZWN0KCp0aGlzKTsKKyAgICBpZiAo
bV9wYXJlbnQgJiYgISptX3BhcmVudCAmJiBtX3Jvb3QpCisgICAgICAgIG1fcm9vdC0+Y2hpbGRS
ZW1vdmVkKCp0aGlzKTsKKworICAgIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCkudW5y
ZWdpc3Rlck9iamVjdCgqdGhpcyk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
OjplbGVtZW50RGVzdHJveWVkKCkKQEAgLTE1MCwxMSArMTUyLDExIEBAIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjplbGVtZW50RGVzdHJveWVkKCkKICAgICBpZiAobV9wYXJlbnQpIHsK
ICAgICAgICAgaWYgKCptX3BhcmVudCkKICAgICAgICAgICAgIG1fcGFyZW50LnZhbHVlKCktPmNo
aWxkUmVtb3ZlZCgqdGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcm9vdC5jaGls
ZFJlbW92ZWQoKnRoaXMpOworICAgICAgICBlbHNlIGlmIChtX3Jvb3QpCisgICAgICAgICAgICBt
X3Jvb3QtPmNoaWxkUmVtb3ZlZCgqdGhpcyk7CiAgICAgfQogCi0gICAgbV9yb290LmF0c3BpKCku
dW5yZWdpc3Rlck9iamVjdCgqdGhpcyk7CisgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0
b24oKS51bnJlZ2lzdGVyT2JqZWN0KCp0aGlzKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGF0c3Bp
Um9sZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQpAQCAtNDMyLDEyICs0MzQsMTIgQEAgR0RCdXNJ
bnRlcmZhY2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzX2FjY2Vzc2libGVGdW5j
dGlvbnMgPSB7CiAKICAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5f
dmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X2J1aWxkZXJfZW5kKCZidWlsZGVyKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0QXBwbGljYXRpb24iKSkK
LSAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2Nh
dGlvbiwgZ192YXJpYW50X25ldygiKEAoc28pKSIsIGF0c3BpT2JqZWN0LT5tX3Jvb3QuYXBwbGlj
YXRpb25SZWZlcmVuY2UoKSkpOworICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9u
X3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIoQChzbykpIiwgQWNjZXNz
aWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvblJlZmVyZW5jZSgpKSk7CiAgICAg
ICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldENoaWxkQXRJbmRleCIpKSB7
CiAgICAgICAgICAgICBpbnQgaW5kZXg7CiAgICAgICAgICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFt
ZXRlcnMsICIoaSkiLCAmaW5kZXgpOwogICAgICAgICAgICAgYXV0byogd3JhcHBlciA9IGluZGV4
ID49IDAgPyBhdHNwaU9iamVjdC0+Y2hpbGRBdChpbmRleCkgOiBudWxscHRyOwotICAgICAgICAg
ICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3Zh
cmlhbnRfbmV3KCIoQChzbykpIiwgd3JhcHBlciA/IHdyYXBwZXItPnJlZmVyZW5jZSgpIDogYXRz
cGlPYmplY3QtPm1fcm9vdC5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKSkpOworICAgICAgICAgICAg
Z19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3Zhcmlh
bnRfbmV3KCIoQChzbykpIiwgd3JhcHBlciA/IHdyYXBwZXItPnJlZmVyZW5jZSgpIDogQWNjZXNz
aWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5udWxsUmVmZXJlbmNlKCkpKTsKICAgICAgICAgfSBl
bHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRDaGlsZHJlbiIpKSB7CiAgICAgICAg
ICAgICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlciA9IEdfVkFSSUFOVF9CVUlMREVSX0lOSVQoR19W
QVJJQU5UX1RZUEUoImEoc28pIikpOwogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB3cmFw
cGVyIDogYXRzcGlPYmplY3QtPmNoaWxkcmVuKCkpCkBAIC00ODMsNiArNDg1LDIzIEBAIEdEQnVz
SW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c19hY2Nlc3NpYmxlRnVu
Y3Rpb25zID0gewogICAgIG51bGxwdHIKIH07CiAKK0FjY2Vzc2liaWxpdHlSb290QXRzcGkqIEFj
Y2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6cm9vdCgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fY29yZU9iamVjdCk7CisKKyAgICBp
ZiAoIW1fcm9vdCkgeworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2NvcmVPYmplY3Qt
PmRvY3VtZW50KCkpCisgICAgICAgICAgICBtX3Jvb3QgPSBkb2N1bWVudC0+cGFnZSgpLT5hY2Nl
c3NpYmlsaXR5Um9vdE9iamVjdCgpOworICAgIH0KKyAgICByZXR1cm4gbV9yb290OworfQorCiti
b29sIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6aXNUcmVlUmVnaXN0ZXJlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcm9vdCA/IG1fcm9vdC0+aXNUcmVlUmVnaXN0ZXJlZCgpIDogZmFsc2U7
Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyZWdpc3Rlck9iamVjdCgpCiB7
CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTUxOSwxMSArNTM4LDE2
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyZWdpc3Rlck9iamVjdCgpCiAgICAg
ICAgIC8vIElzb2xhdGVkIHRyZWUgaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQsIGNhbGwgQWNjZXNz
aWJpbGl0eVJvb3RBdHNwaTo6Y2hpbGQoKQogICAgICAgICAvLyB0byBjcmVhdGUgaXQgYmVmb3Jl
IHJlZ2lzdGVyaW5nIHRoZSBvYmplY3QuCiAgICAgICAgIEFjY2Vzc2liaWxpdHk6OnBlcmZvcm1G
dW5jdGlvbk9uTWFpblRocmVhZChbdGhpc10gewotICAgICAgICAgICAgbV9yb290LmNoaWxkKCk7
CisgICAgICAgICAgICBpZiAoIW1fY29yZU9iamVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGlmIChhdXRvKiBhdHNwaVJvb3QgPSByb290KCkpCisgICAgICAgICAg
ICAgICAgYXRzcGlSb290LT5jaGlsZCgpOwogICAgICAgICB9KTsKICAgICB9Ci0gICAgbV9wYXRo
ID0gbV9yb290LmF0c3BpKCkucmVnaXN0ZXJPYmplY3QoKnRoaXMsIFdURk1vdmUoaW50ZXJmYWNl
cykpOwotICAgIG1fcm9vdC5hdHNwaSgpLmFkZEFjY2Vzc2libGUoKnRoaXMpOworCisgICAgbV9w
YXRoID0gQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5yZWdpc3Rlck9iamVjdCgqdGhp
cywgV1RGTW92ZShpbnRlcmZhY2VzKSk7CisgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0
b24oKS5hZGRBY2Nlc3NpYmxlKCp0aGlzKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNTM4
LDcgKzU2Miw3IEBAIGNvbnN0IFN0cmluZyYgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpwYXRo
KCkKIEdWYXJpYW50KiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJlZmVyZW5jZSgpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICByZXR1cm4gZ192YXJpYW50
X25ldygiKHNvKSIsIG1fcm9vdC5hdHNwaSgpLnVuaXF1ZU5hbWUoKSwgcGF0aCgpLnV0ZjgoKS5k
YXRhKCkpOworICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3KCIoc28pIiwgQWNjZXNzaWJpbGl0eUF0
c3BpOjpzaW5nbGV0b24oKS51bmlxdWVOYW1lKCksIHBhdGgoKS51dGY4KCkuZGF0YSgpKTsKIH0K
IAogR1ZhcmlhbnQqIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6aHlwZXJsaW5rUmVmZXJlbmNl
KCkKQEAgLTU0NiwxMCArNTcwLDEwIEBAIEdWYXJpYW50KiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk6Omh5cGVybGlua1JlZmVyZW5jZSgpCiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBpZiAobV9oeXBlcmxpbmtQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIHJlZ2lz
dGVyT2JqZWN0KCk7Ci0gICAgICAgIG1faHlwZXJsaW5rUGF0aCA9IG1fcm9vdC5hdHNwaSgpLnJl
Z2lzdGVySHlwZXJsaW5rKCp0aGlzLCB7IHsgY29uc3RfY2FzdDxHREJ1c0ludGVyZmFjZUluZm8q
Pigmd2Via2l0X2h5cGVybGlua19pbnRlcmZhY2UpLCAmc19oeXBlcmxpbmtGdW5jdGlvbnMgfSB9
KTsKKyAgICAgICAgbV9oeXBlcmxpbmtQYXRoID0gQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0
b24oKS5yZWdpc3Rlckh5cGVybGluaygqdGhpcywgeyB7IGNvbnN0X2Nhc3Q8R0RCdXNJbnRlcmZh
Y2VJbmZvKj4oJndlYmtpdF9oeXBlcmxpbmtfaW50ZXJmYWNlKSwgJnNfaHlwZXJsaW5rRnVuY3Rp
b25zIH0gfSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdfdmFyaWFudF9uZXcoIihzbykiLCBtX3Jv
b3QuYXRzcGkoKS51bmlxdWVOYW1lKCksIG1faHlwZXJsaW5rUGF0aC51dGY4KCkuZGF0YSgpKTsK
KyAgICByZXR1cm4gZ192YXJpYW50X25ldygiKHNvKSIsIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2lu
Z2xldG9uKCkudW5pcXVlTmFtZSgpLCBtX2h5cGVybGlua1BhdGgudXRmOCgpLmRhdGEoKSk7CiB9
CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzZXRQYXJlbnQoc3RkOjpvcHRpb25h
bDxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqPiBhdHNwaVBhcmVudCkKQEAgLTU1OSwxNSArNTgz
LDE1IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzZXRQYXJlbnQoc3RkOjpvcHRp
b25hbDxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
cGFyZW50ID0gYXRzcGlQYXJlbnQ7Ci0gICAgaWYgKCFtX2NvcmVPYmplY3QgfHwgbV9jb3JlT2Jq
ZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgaWYgKCFtX2NvcmVPYmplY3QgfHwg
bV9jb3JlT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgfHwgIXJvb3QoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9yb290LmF0c3BpKCkucGFyZW50Q2hhbmdlZCgqdGhpcyk7Cisg
ICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJlbnRDaGFuZ2VkKCp0aGlzKTsK
ICAgICBpZiAobV9wYXJlbnQpIHsKICAgICAgICAgaWYgKCptX3BhcmVudCkKICAgICAgICAgICAg
IG1fcGFyZW50LnZhbHVlKCktPmNoaWxkQWRkZWQoKnRoaXMpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX3Jvb3QuY2hpbGRBZGRlZCgqdGhpcyk7CisgICAgICAgIGVsc2UgaWYgKG1fcm9v
dCkKKyAgICAgICAgICAgIG1fcm9vdC0+Y2hpbGRBZGRlZCgqdGhpcyk7CiAgICAgfQogfQogCkBA
IC01ODksMTMgKzYxMywxNSBAQCBzdGQ6Om9wdGlvbmFsPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aSo+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6cGFyZW50KCkgY29ucwogCiBHVmFyaWFudCog
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpwYXJlbnRSZWZlcmVuY2UoKSBjb25zdAogewotICAg
IGlmICghbV9wYXJlbnQpCi0gICAgICAgIHJldHVybiBtX3Jvb3QuYXRzcGkoKS5udWxsUmVmZXJl
bmNlKCk7CisgICAgaWYgKG1fcGFyZW50KSB7CisgICAgICAgIGlmICgqbV9wYXJlbnQpCisgICAg
ICAgICAgICByZXR1cm4gbV9wYXJlbnQudmFsdWUoKS0+cmVmZXJlbmNlKCk7CiAKLSAgICBpZiAo
IW1fcGFyZW50LnZhbHVlKCkpCi0gICAgICAgIHJldHVybiBtX3Jvb3QucmVmZXJlbmNlKCk7Cisg
ICAgICAgIGlmIChtX3Jvb3QpCisgICAgICAgICAgICByZXR1cm4gbV9yb290LT5yZWZlcmVuY2Uo
KTsKKyAgICB9CiAKLSAgICByZXR1cm4gbV9wYXJlbnQudmFsdWUoKS0+cmVmZXJlbmNlKCk7Cisg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCkubnVsbFJlZmVyZW5jZSgp
OwogfQogCiB1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmNoaWxkQ291bnQoKSBj
b25zdApAQCAtMTIyMiw4ICsxMjQ4LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OmJ1aWxkSW50ZXJmYWNlcyhHVmFyaWFudEJ1aWxkZXIqIGJ1aWxkZXIpIGNvbnN0CiB2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c2VyaWFsaXplKEdWYXJpYW50QnVpbGRlciogYnVpbGRl
cikgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIGdf
dmFyaWFudF9idWlsZGVyX2FkZChidWlsZGVyLCAiKHNvKSIsIG1fcm9vdC5hdHNwaSgpLnVuaXF1
ZU5hbWUoKSwgbV9wYXRoLnV0ZjgoKS5kYXRhKCkpOwotICAgIGdfdmFyaWFudF9idWlsZGVyX2Fk
ZChidWlsZGVyLCAiQChzbykiLCBtX3Jvb3QuYXBwbGljYXRpb25SZWZlcmVuY2UoKSk7CisgICAg
Z192YXJpYW50X2J1aWxkZXJfYWRkKGJ1aWxkZXIsICIoc28pIiwgQWNjZXNzaWJpbGl0eUF0c3Bp
OjpzaW5nbGV0b24oKS51bmlxdWVOYW1lKCksIG1fcGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICBn
X3ZhcmlhbnRfYnVpbGRlcl9hZGQoYnVpbGRlciwgIkAoc28pIiwgQWNjZXNzaWJpbGl0eUF0c3Bp
OjpzaW5nbGV0b24oKS5hcHBsaWNhdGlvblJlZmVyZW5jZSgpKTsKICAgICBnX3ZhcmlhbnRfYnVp
bGRlcl9hZGQoYnVpbGRlciwgIkAoc28pIiwgcGFyZW50UmVmZXJlbmNlKCkpOwogCiAgICAgZ192
YXJpYW50X2J1aWxkZXJfYWRkKGJ1aWxkZXIsICJpIiwgaW5kZXhJblBhcmVudCgpKTsKQEAgLTEy
NTUsNyArMTI4MSw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpjaGlsZEFkZGVk
KEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSYgY2hpbGQpCiAgICAgaWYgKCFtX2NvcmVPYmplY3Qg
fHwgbV9jb3JlT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcm9vdC5hdHNwaSgpLmNoaWxkcmVuQ2hhbmdlZCgqdGhpcywgY2hpbGQsIEFj
Y2Vzc2liaWxpdHlBdHNwaTo6Q2hpbGRyZW5DaGFuZ2VkOjpBZGRlZCk7CisgICAgQWNjZXNzaWJp
bGl0eUF0c3BpOjpzaW5nbGV0b24oKS5jaGlsZHJlbkNoYW5nZWQoKnRoaXMsIGNoaWxkLCBBY2Nl
c3NpYmlsaXR5QXRzcGk6OkNoaWxkcmVuQ2hhbmdlZDo6QWRkZWQpOwogfQogCiB2b2lkIEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6Y2hpbGRSZW1vdmVkKEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aSYgY2hpbGQpCkBAIC0xMjY3LDE5ICsxMjkzLDE5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpOjpjaGlsZFJlbW92ZWQoQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpJiBjaGlsZCkKICAg
ICBpZiAoIW1fY29yZU9iamVjdCB8fCBtX2NvcmVPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yb290LmF0c3BpKCkuY2hpbGRyZW5DaGFu
Z2VkKCp0aGlzLCBjaGlsZCwgQWNjZXNzaWJpbGl0eUF0c3BpOjpDaGlsZHJlbkNoYW5nZWQ6OlJl
bW92ZWQpOworICAgIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCkuY2hpbGRyZW5DaGFu
Z2VkKCp0aGlzLCBjaGlsZCwgQWNjZXNzaWJpbGl0eUF0c3BpOjpDaGlsZHJlbkNoYW5nZWQ6OlJl
bW92ZWQpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c3RhdGVDaGFuZ2Vk
KGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdmFsdWUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIG1fcm9vdC5hdHNwaSgpLnN0YXRlQ2hhbmdlZCgqdGhpcywgbmFt
ZSwgdmFsdWUpOworICAgIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCkuc3RhdGVDaGFu
Z2VkKCp0aGlzLCBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpsb2FkRXZlbnQoY29uc3QgY2hhciogZXZlbnQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIG1fcm9vdC5hdHNwaSgpLmxvYWRFdmVudCgqdGhpcywgZXZl
bnQpOworICAgIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCkubG9hZEV2ZW50KCp0aGlz
LCBldmVudCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IEFjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaTo6ZWZmZWN0aXZlUm9sZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuaApp
bmRleCA0OTc0MmM5MjQ3NjcuLmQ1MzJiODNlNDgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aS5oCkBAIC0zOCwxMCArMzgsMTEgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTsKIAog
Y2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSwgV1RGOjpEZXN0cnVjdGlvblRocmVh
ZDo6TWFpbj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpPiBjcmVhdGUoQVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaSYpOworICAg
IHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpPiBjcmVhdGUoQVhDb3JlT2JqZWN0
KiwgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaSopOwogICAgIH5BY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGkoKSA9IGRlZmF1bHQ7CiAKICAgICBib29sIHJlZ2lzdGVyT2JqZWN0KCk7CisgICAgYm9vbCBp
c1RyZWVSZWdpc3RlcmVkKCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIEludGVyZmFjZSA6IHVp
bnQxNl90IHsKICAgICAgICAgQWNjZXNzaWJsZSA9IDEgPDwgMCwKQEAgLTU5LDcgKzYwLDYgQEAg
cHVibGljOgogICAgIH07CiAgICAgY29uc3QgT3B0aW9uU2V0PEludGVyZmFjZT4mIGludGVyZmFj
ZXMoKSBjb25zdCB7IHJldHVybiBtX2ludGVyZmFjZXM7IH0KIAotICAgIGNvbnN0IEFjY2Vzc2li
aWxpdHlSb290QXRzcGkmIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3Q7IH0KICAgICB2b2lk
IHNldFBhcmVudChzdGQ6Om9wdGlvbmFsPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSo+KTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSo+
IHBhcmVudCgpIGNvbnN0OwogICAgIEdWYXJpYW50KiBwYXJlbnRSZWZlcmVuY2UoKSBjb25zdDsK
QEAgLTE1OCw3ICsxNTgsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWly
PHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4gY2VsbFBv
c2l0aW9uKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eU9i
amVjdEF0c3BpKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlSb290QXRzcGkmKTsKKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkoQVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eVJvb3RB
dHNwaSopOworCisgICAgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaSogcm9vdCgpOwogCiAgICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk+PiB3cmFwcGVyVmVjdG9yKGNvbnN0
IFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4mKSBjb25zdDsKICAgICBpbnQgaW5kZXhJblBh
cmVudCgpIGNvbnN0OwpAQCAtMjQxLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgQVhDb3JlT2Jq
ZWN0KiBtX2F4T2JqZWN0IHsgbnVsbHB0ciB9OwogICAgIEFYQ29yZU9iamVjdCogbV9jb3JlT2Jq
ZWN0IHsgbnVsbHB0ciB9OwogICAgIE9wdGlvblNldDxJbnRlcmZhY2U+IG1faW50ZXJmYWNlczsK
LSAgICBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpJiBtX3Jvb3Q7CisgICAgQWNjZXNzaWJpbGl0eVJv
b3RBdHNwaSogbV9yb290IHsgbnVsbHB0ciB9OwogICAgIHN0ZDo6b3B0aW9uYWw8QWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpKj4gbV9wYXJlbnQ7CiAgICAgQXRvbWljPGJvb2w+IG1faXNSZWdpc3Rl
cmVkIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9wYXRoOwpAQCAtMjQ5LDcgKzI1MSw2IEBAIHBy
aXZhdGU6CiAgICAgaW50NjRfdCBtX2xhc3RTZWxlY3Rpb25DaGFuZ2VkVGltZSB7IC0xIH07CiAg
ICAgbXV0YWJsZSBzdGQ6OmF0b21pYzxib29sPiBtX2hhc0xpc3RNYXJrZXJBdFN0YXJ0OwogICAg
IG11dGFibGUgaW50IG1faW5kZXhJblBhcmVudCB7IC0xIH07Ci0gICAgbXV0YWJsZSBMb2NrIG1f
cm9vdExvY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RDb21wb25l
bnRBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RDb21wb25lbnRBdHNwaS5jcHAKaW5kZXggYzczM2QxOWIwMjljLi5hNDhmMWUx
YWQ3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdENvbXBvbmVudEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RDb21wb25lbnRBdHNwaS5jcHAK
QEAgLTIyLDYgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKSAmJiBVU0UoQVRT
UEkpCiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlBdHNwaS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBdHNwaUVudW1zLmgiCiAjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CkBAIC00Nyw3ICs0OCw3IEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaTo6c19jb21wb25lbnRGdW5jdGlvbnMgPSB7CiAgICAgICAgICAgICB1aW50MzJfdCBj
b29yZGluYXRlVHlwZTsKICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIihp
aXUpIiwgJngsICZ5LCAmY29vcmRpbmF0ZVR5cGUpOwogICAgICAgICAgICAgYXV0byogd3JhcHBl
ciA9IGF0c3BpT2JqZWN0LT5oaXRUZXN0KHsgeCwgeSB9LCBjb29yZGluYXRlVHlwZSk7Ci0gICAg
ICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24s
IGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCB3cmFwcGVyID8gd3JhcHBlci0+cmVmZXJlbmNlKCkg
OiBhdHNwaU9iamVjdC0+bV9yb290LmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CisgICAgICAg
ICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdf
dmFyaWFudF9uZXcoIihAKHNvKSkiLCB3cmFwcGVyID8gd3JhcHBlci0+cmVmZXJlbmNlKCkgOiBB
Y2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLm51bGxSZWZlcmVuY2UoKSkpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldEV4dGVudHMiKSkgewogICAg
ICAgICAgICAgdWludDMyX3QgY29vcmRpbmF0ZVR5cGU7CiAgICAgICAgICAgICBnX3ZhcmlhbnRf
Z2V0KHBhcmFtZXRlcnMsICIodSkiLCAmY29vcmRpbmF0ZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJs
aW5rQXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3BwCmluZGV4IDc5NzNkM2RjODRiZS4uOWI2ZWI2
OTZlNDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0Fj
Y2Vzc2liaWxpdHlPYmplY3RIeXBlcmxpbmtBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJsaW5rQXRzcGkuY3Bw
CkBAIC0yMiw3ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgVVNFKEFU
U1BJKQogCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5oIgorI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlBdHNwaS5oIgogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KQEAgLTM5LDcg
KzM5LDcgQEAgR0RCdXNJbnRlcmZhY2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpz
X2h5cGVybGlua0Z1bmN0aW9ucyA9IHsKICAgICAgICAgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFt
ZSwgIkdldE9iamVjdCIpKSB7CiAgICAgICAgICAgICBpbnQgaW5kZXg7CiAgICAgICAgICAgICBn
X3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIoaSkiLCAmaW5kZXgpOwotICAgICAgICAgICAgZ19k
YnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRf
bmV3KCIoQChzbykpIiwgIWluZGV4ID8gYXRzcGlPYmplY3QtPnJlZmVyZW5jZSgpIDogYXRzcGlP
YmplY3QtPm1fcm9vdC5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKSkpOworICAgICAgICAgICAgZ19k
YnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRf
bmV3KCIoQChzbykpIiwgIWluZGV4ID8gYXRzcGlPYmplY3QtPnJlZmVyZW5jZSgpIDogQWNjZXNz
aWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5udWxsUmVmZXJlbmNlKCkpKTsKICAgICAgICAgfSBl
bHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRVUkkiKSkgewogICAgICAgICAgICAg
aW50IGluZGV4OwogICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKGkpIiwg
JmluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkv
QWNjZXNzaWJpbGl0eU9iamVjdEh5cGVydGV4dEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEh5cGVydGV4dEF0c3BpLmNwcApp
bmRleCA5Y2YxODU5YmU5MmMuLjEzZDYzMGNmODQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0SHlwZXJ0ZXh0QXRzcGku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEh5cGVydGV4dEF0c3BpLmNwcApAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFkpICYmIFVTRShBVFNQSSkKIAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlS
b290QXRzcGkuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QXRzcGkuaCIKICNpbmNsdWRlIDxn
aW8vZ2lvLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIApAQCAt
NDEsNyArNDEsNyBAQCBHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk6OnNfaHlwZXJ0ZXh0RnVuY3Rpb25zID0gewogICAgICAgICAgICAgaW50IGluZGV4OwogICAg
ICAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKGkpIiwgJmluZGV4KTsKICAgICAg
ICAgICAgIGF1dG8qIHdyYXBwZXIgPSBpbmRleCA+PSAwID8gYXRzcGlPYmplY3QtPmh5cGVybGlu
ayhpbmRleCkgOiBudWxscHRyOwotICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9u
X3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIoQChzbykpIiwgd3JhcHBl
ciA/IHdyYXBwZXItPmh5cGVybGlua1JlZmVyZW5jZSgpIDogYXRzcGlPYmplY3QtPm1fcm9vdC5h
dHNwaSgpLm51bGxSZWZlcmVuY2UoKSkpOworICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZv
Y2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIoQChzbykpIiwg
d3JhcHBlciA/IHdyYXBwZXItPmh5cGVybGlua1JlZmVyZW5jZSgpIDogQWNjZXNzaWJpbGl0eUF0
c3BpOjpzaW5nbGV0b24oKS5udWxsUmVmZXJlbmNlKCkpKTsKICAgICAgICAgfSBlbHNlIGlmICgh
Z19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRMaW5rSW5kZXgiKSkgewogICAgICAgICAgICAgaW50
IG9mZnNldDsKICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIihpKSIsICZv
ZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0U2VsZWN0aW9uQXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0U2VsZWN0aW9uQXRzcGkuY3BwCmlu
ZGV4IGU4N2VkY2NlMmEyNi4uNmQ3OTVkZDI4NWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RTZWxlY3Rpb25BdHNwaS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5
T2JqZWN0U2VsZWN0aW9uQXRzcGkuY3BwCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpZiBFTkFCTEUo
QUNDRVNTSUJJTElUWSkgJiYgVVNFKEFUU1BJKQogCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJv
b3RBdHNwaS5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBdHNwaS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTM3LDcgKzM3LDcgQEAgR0RCdXNJbnRlcmZhY2VWVGFibGUgQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpOjpzX3NlbGVjdGlvbkZ1bmN0aW9ucyA9IHsKICAgICAgICAgICAg
IGludCBpbmRleDsKICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIihpKSIs
ICZpbmRleCk7CiAgICAgICAgICAgICBhdXRvKiBjaGlsZCA9IGluZGV4ID49IDAgPyBhdHNwaU9i
amVjdC0+c2VsZWN0ZWRDaGlsZChpbmRleCkgOiBudWxscHRyOwotICAgICAgICAgICAgZ19kYnVz
X21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3
KCIoQChzbykpIiwgY2hpbGQgPyBjaGlsZC0+cmVmZXJlbmNlKCkgOiBhdHNwaU9iamVjdC0+bV9y
b290LmF0c3BpKCkubnVsbFJlZmVyZW5jZSgpKSk7CisgICAgICAgICAgICBnX2RidXNfbWV0aG9k
X2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihAKHNv
KSkiLCBjaGlsZCA/IGNoaWxkLT5yZWZlcmVuY2UoKSA6IEFjY2Vzc2liaWxpdHlBdHNwaTo6c2lu
Z2xldG9uKCkubnVsbFJlZmVyZW5jZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWdfc3RyY21w
MChtZXRob2ROYW1lLCAiU2VsZWN0Q2hpbGQiKSkgewogICAgICAgICAgICAgaW50IGluZGV4Owog
ICAgICAgICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKGkpIiwgJmluZGV4KTsKQEAg
LTIzMyw3ICsyMzMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c2VsZWN0aW9u
Q2hhbmdlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbGFzdFNlbGVjdGlvbkNoYW5nZWRU
aW1lID0gc291cmNlVGltZTsKLSAgICBtX3Jvb3QuYXRzcGkoKS5zZWxlY3Rpb25DaGFuZ2VkKCp0
aGlzKTsKKyAgICBBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLnNlbGVjdGlvbkNoYW5n
ZWQoKnRoaXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0
c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdFRhYmxlQXRzcGkuY3BwCmluZGV4IDRlMmRlOTliYmE5MC4uYWMwNGUwOWJjYTU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUYWJsZUF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0c3BpLmNwcApAQCAtMjIsNyArMjIsNyBA
QAogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFVTRShBVFNQSSkKIAotI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlSb290QXRzcGkuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QXRzcGku
aCIKICNpbmNsdWRlICJIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxU
YWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBAIC00Miw3ICs0Miw3
IEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c190YWJs
ZUZ1bmN0aW9ucyA9IHsKICAgICAgICAgICAgIGludCByb3csIGNvbHVtbjsKICAgICAgICAgICAg
IGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIihpaSkiLCAmcm93LCAmY29sdW1uKTsKICAgICAg
ICAgICAgIGF1dG8qIGNlbGwgPSByb3cgPj0gMCAmJiBjb2x1bW4gPj0gMCA/IGF0c3BpT2JqZWN0
LT5jZWxsKHJvdywgY29sdW1uKSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBnX2RidXNfbWV0aG9k
X2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihAKHNv
KSkiLCBjZWxsID8gY2VsbC0+cmVmZXJlbmNlKCkgOiBhdHNwaU9iamVjdC0+bV9yb290LmF0c3Bp
KCkubnVsbFJlZmVyZW5jZSgpKSk7CisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRp
b25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCBjZWxs
ID8gY2VsbC0+cmVmZXJlbmNlKCkgOiBBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLm51
bGxSZWZlcmVuY2UoKSkpOwogICAgICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFt
ZSwgIkdldEluZGV4QXQiKSkgewogICAgICAgICAgICAgaW50IHJvdywgY29sdW1uOwogICAgICAg
ICAgICAgZ192YXJpYW50X2dldChwYXJhbWV0ZXJzLCAiKGlpKSIsICZyb3csICZjb2x1bW4pOwpA
QCAtNzUsMTIgKzc1LDEyIEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaTo6c190YWJsZUZ1bmN0aW9ucyA9IHsKICAgICAgICAgICAgIGludCByb3c7CiAgICAg
ICAgICAgICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIoaSkiLCAmcm93KTsKICAgICAgICAg
ICAgIGF1dG8qIGhlYWRlciA9IHJvdyA+PSAwID8gYXRzcGlPYmplY3QtPnJvd0hlYWRlcihyb3cp
IDogbnVsbHB0cjsKLSAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5f
dmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKEAoc28pKSIsIGhlYWRlciA/IGhlYWRl
ci0+cmVmZXJlbmNlKCkgOiBhdHNwaU9iamVjdC0+bV9yb290LmF0c3BpKCkubnVsbFJlZmVyZW5j
ZSgpKSk7CisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVl
KGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihAKHNvKSkiLCBoZWFkZXIgPyBoZWFkZXItPnJl
ZmVyZW5jZSgpIDogQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5udWxsUmVmZXJlbmNl
KCkpKTsKICAgICAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUsICJHZXRDb2x1
bW5IZWFkZXIiKSkgewogICAgICAgICAgICAgaW50IGNvbHVtbjsKICAgICAgICAgICAgIGdfdmFy
aWFudF9nZXQocGFyYW1ldGVycywgIihpKSIsICZjb2x1bW4pOwogICAgICAgICAgICAgYXV0byog
aGVhZGVyID0gY29sdW1uID49IDAgPyBhdHNwaU9iamVjdC0+Y29sdW1uSGVhZGVyKGNvbHVtbikg
OiBudWxscHRyOwotICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92
YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIoQChzbykpIiwgaGVhZGVyID8gaGVhZGVy
LT5yZWZlcmVuY2UoKSA6IGF0c3BpT2JqZWN0LT5tX3Jvb3QuYXRzcGkoKS5udWxsUmVmZXJlbmNl
KCkpKTsKKyAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUo
aW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKEAoc28pKSIsIGhlYWRlciA/IGhlYWRlci0+cmVm
ZXJlbmNlKCkgOiBBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLm51bGxSZWZlcmVuY2Uo
KSkpOwogICAgICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldFJvd0Nv
bHVtbkV4dGVudHNBdEluZGV4IikpIHsKICAgICAgICAgICAgIGludCBpbmRleDsKICAgICAgICAg
ICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIihpKSIsICZpbmRleCk7CkBAIC0xMTgsMTAg
KzExOCwxMCBAQCBHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OnNfdGFibGVGdW5jdGlvbnMgPSB7CiAgICAgICAgICAgICByZXR1cm4gZ192YXJpYW50X25ld19p
bnQzMihhdHNwaU9iamVjdC0+Y29sdW1uQ291bnQoKSk7CiAgICAgICAgIGlmICghZ19zdHJjbXAw
KHByb3BlcnR5TmFtZSwgIkNhcHRpb24iKSkgewogICAgICAgICAgICAgYXV0byogY2FwdGlvbiA9
IGF0c3BpT2JqZWN0LT50YWJsZUNhcHRpb24oKTsKLSAgICAgICAgICAgIHJldHVybiBjYXB0aW9u
ID8gY2FwdGlvbi0+cmVmZXJlbmNlKCkgOiBhdHNwaU9iamVjdC0+bV9yb290LmF0c3BpKCkubnVs
bFJlZmVyZW5jZSgpOworICAgICAgICAgICAgcmV0dXJuIGNhcHRpb24gPyBjYXB0aW9uLT5yZWZl
cmVuY2UoKSA6IEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCkubnVsbFJlZmVyZW5jZSgp
OwogICAgICAgICB9CiAgICAgICAgIGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIlN1bW1h
cnkiKSkKLSAgICAgICAgICAgIHJldHVybiBhdHNwaU9iamVjdC0+bV9yb290LmF0c3BpKCkubnVs
bFJlZmVyZW5jZSgpOworICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2lu
Z2xldG9uKCkubnVsbFJlZmVyZW5jZSgpOwogICAgICAgICBpZiAoIWdfc3RyY21wMChwcm9wZXJ0
eU5hbWUsICJOU2VsZWN0ZWRSb3dzIikpCiAgICAgICAgICAgICByZXR1cm4gZ192YXJpYW50X25l
d19pbnQzMigwKTsKICAgICAgICAgaWYgKCFnX3N0cmNtcDAocHJvcGVydHlOYW1lLCAiTlNlbGVj
dGVkQ29sdW1ucyIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVDZWxsQXRzcGkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVDZWxsQXRzcGku
Y3BwCmluZGV4IGQ5NjM4NzhiYmNlYi4uNDhmY2E1YjdjM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxB
dHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0VGFibGVDZWxsQXRzcGkuY3BwCkBAIC0yMiw4ICsyMiw4IEBACiAKICNpZiBF
TkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgVVNFKEFUU1BJKQogCisjaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eUF0c3BpLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUF0c3BpRW51bXMuaCIKLSNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmgiCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02Nyw3ICs2Nyw3IEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxl
IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c190YWJsZUNlbGxGdW5jdGlvbnMgPSB7CiAgICAg
ICAgIGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIlRhYmxlIikpIHsKICAgICAgICAgICAg
IGF1dG8qIGF4T2JqZWN0ID0gYXRzcGlPYmplY3QtPm1fYXhPYmplY3Q7CiAgICAgICAgICAgICBp
ZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gYXRzcGlPYmplY3QtPm1fcm9vdC5hdHNwaSgpLm51bGxSZWZlcmVuY2UoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5udWxs
UmVmZXJlbmNlKCk7CiAKICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSogd3Jh
cHBlciA9IGF0c3BpT2JqZWN0LnB0cigpOwogICAgICAgICAgICAgd2hpbGUgKGF1dG8gcGFyZW50
ID0gd3JhcHBlci0+cGFyZW50KCkpIHsKQEAgLTgwLDcgKzgwLDcgQEAgR0RCdXNJbnRlcmZhY2VW
VGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzX3RhYmxlQ2VsbEZ1bmN0aW9ucyA9IHsK
ICAgICAgICAgICAgICAgICBpZiAoYXhPYmplY3QgJiYgYXhPYmplY3QtPmlzVGFibGUoKSkKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4gd3JhcHBlciA/IHdyYXBwZXItPnJlZmVyZW5jZSgpIDogYXRzcGlPYmplY3QtPm1fcm9vdC5h
dHNwaSgpLm51bGxSZWZlcmVuY2UoKTsKKyAgICAgICAgICAgIHJldHVybiB3cmFwcGVyID8gd3Jh
cHBlci0+cmVmZXJlbmNlKCkgOiBBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLm51bGxS
ZWZlcmVuY2UoKTsKICAgICAgICAgfQogCiAgICAgICAgIGdfc2V0X2Vycm9yKGVycm9yLCBHX0lP
X0VSUk9SLCBHX0lPX0VSUk9SX05PVF9TVVBQT1JURUQsICJVbmtub3duIHByb3BlcnR5ICclcyci
LCBwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKaW5k
ZXggNGQxZjJjNjhjNDIyLi5kMjI3MDllZTQ5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0
VGV4dEF0c3BpLmNwcApAQCAtMjIsMTAgKzIyLDEwIEBACiAKICNpZiBFTkFCTEUoQUNDRVNTSUJJ
TElUWSkgJiYgVVNFKEFUU1BJKQogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5QXRzcGkuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QXRzcGlFbnVt
cy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJvb3RBdHNw
aS5oIgogI2luY2x1ZGUgIkVkaXRpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgog
I2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCkBAIC0zODEsNyArMzgxLDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGk6OnRleHRJbnNlcnRlZChjb25zdCBTdHJpbmcmIGluc2VydGVkVGV4
dCwgY29uc3QgVmkKICAgICBhdXRvIG9mZnNldCA9IFVURjE2T2Zmc2V0VG9VVEY4KG1hcHBpbmcs
IHV0ZjE2T2Zmc2V0KTsKICAgICBhdXRvIHV0ZjhJbnNlcnRlZFRleHQgPSBpbnNlcnRlZFRleHQu
dXRmOCgpOwogICAgIGF1dG8gaW5zZXJ0ZWRUZXh0TGVuZ3RoID0gZ191dGY4X3N0cmxlbih1dGY4
SW5zZXJ0ZWRUZXh0LmRhdGEoKSwgLTEpOwotICAgIG1fcm9vdC5hdHNwaSgpLnRleHRDaGFuZ2Vk
KCp0aGlzLCAiaW5zZXJ0IiwgV1RGTW92ZSh1dGY4SW5zZXJ0ZWRUZXh0KSwgb2Zmc2V0IC0gaW5z
ZXJ0ZWRUZXh0TGVuZ3RoLCBpbnNlcnRlZFRleHRMZW5ndGgpOworICAgIEFjY2Vzc2liaWxpdHlB
dHNwaTo6c2luZ2xldG9uKCkudGV4dENoYW5nZWQoKnRoaXMsICJpbnNlcnQiLCBXVEZNb3ZlKHV0
ZjhJbnNlcnRlZFRleHQpLCBvZmZzZXQgLSBpbnNlcnRlZFRleHRMZW5ndGgsIGluc2VydGVkVGV4
dExlbmd0aCk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0ZXh0RGVsZXRl
ZChjb25zdCBTdHJpbmcmIGRlbGV0ZWRUZXh0LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0
aW9uKQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0
ZXh0RGVsZXRlZChjb25zdCBTdHJpbmcmIGRlbGV0ZWRUZXh0LCBjb25zdCBWaXNpCiAgICAgYXV0
byBvZmZzZXQgPSBVVEYxNk9mZnNldFRvVVRGOChtYXBwaW5nLCB1dGYxNk9mZnNldCk7CiAgICAg
YXV0byB1dGY4RGVsZXRlZFRleHQgPSBkZWxldGVkVGV4dC51dGY4KCk7CiAgICAgYXV0byBkZWxl
dGVkVGV4dExlbmd0aCA9IGdfdXRmOF9zdHJsZW4odXRmOERlbGV0ZWRUZXh0LmRhdGEoKSwgLTEp
OwotICAgIG1fcm9vdC5hdHNwaSgpLnRleHRDaGFuZ2VkKCp0aGlzLCAiZGVsZXRlIiwgV1RGTW92
ZSh1dGY4RGVsZXRlZFRleHQpLCBvZmZzZXQsIGRlbGV0ZWRUZXh0TGVuZ3RoKTsKKyAgICBBY2Nl
c3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLnRleHRDaGFuZ2VkKCp0aGlzLCAiZGVsZXRlIiwg
V1RGTW92ZSh1dGY4RGVsZXRlZFRleHQpLCBvZmZzZXQsIGRlbGV0ZWRUZXh0TGVuZ3RoKTsKIH0K
IAogSW50UG9pbnQgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpib3VuZGFyeU9mZnNldCh1bnNp
Z25lZCB1dGYxNk9mZnNldCwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KSBjb25zdApAQCAt
Nzk4LDEwICs3OTgsMTAgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNlbGVjdGlv
bkNoYW5nZWQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW8KICAgICBhdXRvIG1hcHBp
bmcgPSBvZmZzZXRNYXBwaW5nKHV0ZjE2VGV4dCk7CiAgICAgYXV0byBjYXJldE9mZnNldCA9IFVU
RjE2T2Zmc2V0VG9VVEY4KG1hcHBpbmcsIGJvdW5kcy55KCkpOwogICAgIGlmIChjYXJldE9mZnNl
dCA8PSBsZW5ndGgpCi0gICAgICAgIG1fcm9vdC5hdHNwaSgpLnRleHRDYXJldE1vdmVkKCp0aGlz
LCBjYXJldE9mZnNldCk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCku
dGV4dENhcmV0TW92ZWQoKnRoaXMsIGNhcmV0T2Zmc2V0KTsKIAogICAgIGlmIChzZWxlY3Rpb24u
aXNSYW5nZSgpKQotICAgICAgICBtX3Jvb3QuYXRzcGkoKS50ZXh0U2VsZWN0aW9uQ2hhbmdlZCgq
dGhpcyk7CisgICAgICAgIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCkudGV4dFNlbGVj
dGlvbkNoYW5nZWQoKnRoaXMpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRB
dHRyaWJ1dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZXMoc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gdXRmMTZPZmZzZXQsIGJvb2wgaW5jbHVkZURlZmF1bHQpIGNvbnN0
CkBAIC05OTAsNyArOTkwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnRleHRB
dHRyaWJ1dGVzQ2hhbmdlZCgpCiAgICAgaWYgKCFtX2ludGVyZmFjZXMuY29udGFpbnMoSW50ZXJm
YWNlOjpUZXh0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yb290LmF0c3BpKCkudGV4dEF0
dHJpYnV0ZXNDaGFuZ2VkKCp0aGlzKTsKKyAgICBBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRv
bigpLnRleHRBdHRyaWJ1dGVzQ2hhbmdlZCgqdGhpcyk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjpzY3JvbGxUb01ha2VWaXNpYmxlKGludCBzdGFydE9mZnNldCwgaW50IGVu
ZE9mZnNldCwgdWludDMyX3Qgc2Nyb2xsVHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFZhbHVlQXRzcGku
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0VmFsdWVBdHNwaS5jcHAKaW5kZXggNThlZWU1ZjBjMGI3Li5iYzU5OGNkYjA0OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9i
amVjdFZhbHVlQXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRz
cGkvQWNjZXNzaWJpbGl0eU9iamVjdFZhbHVlQXRzcGkuY3BwCkBAIC0yMiw4ICsyMiw4IEBACiAK
ICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgVVNFKEFUU1BJKQogCisjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eUF0c3BpLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgotI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlSb290QXRzcGkuaCIKICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEzNCw3ICsxMzQsNyBAQCBkb3VibGUgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjptaW5pbXVtSW5jcmVtZW50KCkgY29uc3QKIHZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjp2YWx1ZUNoYW5nZWQoZG91YmxlIHZhbHVlKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3Jvb3QuYXRzcGkoKS52YWx1ZUNoYW5n
ZWQoKnRoaXMsIHZhbHVlKTsKKyAgICBBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLnZh
bHVlQ2hhbmdlZCgqdGhpcywgdmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlSb290QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nl
c3NpYmlsaXR5Um9vdEF0c3BpLmNwcAppbmRleCBlMTg2NjM3MzZhYzEuLjE3NmZkMjkwZjYxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmls
aXR5Um9vdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCkBAIC0zNCwxNCArMzQsMTMgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWY8QWNjZXNzaWJpbGl0eVJvb3RBdHNwaT4gQWNjZXNzaWJpbGl0
eVJvb3RBdHNwaTo6Y3JlYXRlKFBhZ2UmIHBhZ2UsIEFjY2Vzc2liaWxpdHlBdHNwaSYgYXRzcGkp
CitSZWY8QWNjZXNzaWJpbGl0eVJvb3RBdHNwaT4gQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6Y3Jl
YXRlKFBhZ2UmIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0
eVJvb3RBdHNwaShwYWdlLCBhdHNwaSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vz
c2liaWxpdHlSb290QXRzcGkocGFnZSkpOwogfQogCi1BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjpB
Y2Nlc3NpYmlsaXR5Um9vdEF0c3BpKFBhZ2UmIHBhZ2UsIEFjY2Vzc2liaWxpdHlBdHNwaSYgYXRz
cGkpCi0gICAgOiBtX2F0c3BpKGF0c3BpKQotICAgICwgbV9wYWdlKHBhZ2UpCitBY2Nlc3NpYmls
aXR5Um9vdEF0c3BpOjpBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpKFBhZ2UmIHBhZ2UpCisgICAgOiBt
X3BhZ2UocGFnZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CkBA
IC05Miw3ICs5MSw3IEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlSb290QXRz
cGk6OnNfYWNjZXNzaWJsZUZ1bmN0aW9ucyA9IHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdfZGJ1c19t
ZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygi
KEAoc28pKSIsIHJvb3RPYmplY3QuYXRzcGkoKS5udWxsUmVmZXJlbmNlKCkpKTsKKyAgICAgICAg
ICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192
YXJpYW50X25ldygiKEAoc28pKSIsIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCkubnVs
bFJlZmVyZW5jZSgpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1l
LCAiR2V0Q2hpbGRyZW4iKSkgewogICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXIg
PSBHX1ZBUklBTlRfQlVJTERFUl9JTklUKEdfVkFSSUFOVF9UWVBFKCJhKHNvKSIpKTsKICAgICAg
ICAgICAgIGF1dG8qIGNoaWxkID0gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWlu
VGhyZWFkPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSo+KFsmcm9vdE9iamVjdF0oKSAtPiBBY2Nl
c3NpYmlsaXR5T2JqZWN0QXRzcGkqIHsKQEAgLTE3NCwxMyArMTczLDEzIEBAIHZvaWQgQWNjZXNz
aWJpbGl0eVJvb3RBdHNwaTo6cmVnaXN0ZXJPYmplY3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBTdHJpbmcmCiAgICAgaW50ZXJmYWNlcy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50
ZXJmYWNlSW5mbyo+KCZ3ZWJraXRfYWNjZXNzaWJsZV9pbnRlcmZhY2UpLCAmc19hY2Nlc3NpYmxl
RnVuY3Rpb25zIH0pOwogICAgIGludGVyZmFjZXMuYXBwZW5kKHsgY29uc3RfY2FzdDxHREJ1c0lu
dGVyZmFjZUluZm8qPigmd2Via2l0X3NvY2tldF9pbnRlcmZhY2UpLCAmc19zb2NrZXRGdW5jdGlv
bnMgfSk7CiAgICAgaW50ZXJmYWNlcy5hcHBlbmQoeyBjb25zdF9jYXN0PEdEQnVzSW50ZXJmYWNl
SW5mbyo+KCZ3ZWJraXRfY29tcG9uZW50X2ludGVyZmFjZSksICZzX2NvbXBvbmVudEZ1bmN0aW9u
cyB9KTsKLSAgICBtX2F0c3BpLnJlZ2lzdGVyUm9vdCgqdGhpcywgV1RGTW92ZShpbnRlcmZhY2Vz
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIEFjY2Vzc2liaWxpdHlBdHNwaTo6
c2luZ2xldG9uKCkucmVnaXN0ZXJSb290KCp0aGlzLCBXVEZNb3ZlKGludGVyZmFjZXMpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJvb3RBdHNw
aTo6dW5yZWdpc3Rlck9iamVjdCgpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIG1fYXRzcGkudW5yZWdpc3RlclJvb3QoKnRoaXMpOworICAgIEFjY2Vzc2liaWxp
dHlBdHNwaTo6c2luZ2xldG9uKCkudW5yZWdpc3RlclJvb3QoKnRoaXMpOwogCiAgICAgaWYgKG1f
cGFnZSkKICAgICAgICAgbV9wYWdlLT5zZXRBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdChudWxscHRy
KTsKQEAgLTIyMiw4ICsyMjEsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OmVtYmVk
ZGVkKGNvbnN0IGNoYXIqIHBhcmVudFVuaXF1ZU5hbWUsIGNvbnN0IGNoYXIqCiAgICAgUkVMRUFT
RV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBwYXJl
bnRVbmlxdWVOYW1lOwogICAgIG1fcGFyZW50UGF0aCA9IHBhcmVudFBhdGg7Ci0gICAgbV9hdHNw
aS5wYXJlbnRDaGFuZ2VkKCp0aGlzKTsKLSAgICBpZiAoIW1faXNUcmVlUmVnaXN0ZXJlZC5sb2Fk
KCkgJiYgbV9hdHNwaS5oYXNFdmVudExpc3RlbmVycygpKQorICAgIEFjY2Vzc2liaWxpdHlBdHNw
aTo6c2luZ2xldG9uKCkucGFyZW50Q2hhbmdlZCgqdGhpcyk7CisgICAgaWYgKCFtX2lzVHJlZVJl
Z2lzdGVyZWQubG9hZCgpICYmIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCkuaGFzRXZl
bnRMaXN0ZW5lcnMoKSkKICAgICAgICAgcmVnaXN0ZXJUcmVlKCk7CiB9CiAKQEAgLTIzMSwxNCAr
MjMwLDE0IEBAIEdWYXJpYW50KiBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjphcHBsaWNhdGlvblJl
ZmVyZW5jZSgpIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBpZiAobV9wYXJlbnRVbmlxdWVOYW1lLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gbV9h
dHNwaS5udWxsUmVmZXJlbmNlKCk7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QXRzcGk6
OnNpbmdsZXRvbigpLm51bGxSZWZlcmVuY2UoKTsKICAgICByZXR1cm4gZ192YXJpYW50X25ldygi
KHNvKSIsIG1fcGFyZW50VW5pcXVlTmFtZS51dGY4KCkuZGF0YSgpLCAiL29yZy9hMTF5L2F0c3Bp
L2FjY2Vzc2libGUvcm9vdCIpOwogfQogCiBHVmFyaWFudCogQWNjZXNzaWJpbGl0eVJvb3RBdHNw
aTo6cmVmZXJlbmNlKCkgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwotICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3KCIoc28pIiwgbV9hdHNwaS51bmlxdWVOYW1l
KCksIG1fcGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ192YXJpYW50X25ldygiKHNv
KSIsIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCkudW5pcXVlTmFtZSgpLCBtX3BhdGgu
dXRmOCgpLmRhdGEoKSk7CiB9CiAKIEdWYXJpYW50KiBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjpw
YXJlbnRSZWZlcmVuY2UoKSBjb25zdApAQCAtMjY4LDE4ICsyNjcsMTggQEAgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpKiBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjpjaGlsZCgpIGNvbnN0CiAKIHZv
aWQgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6Y2hpbGRBZGRlZChBY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGkmIGNoaWxkKQogewotICAgIG1fYXRzcGkuY2hpbGRyZW5DaGFuZ2VkKCp0aGlzLCBjaGls
ZCwgQWNjZXNzaWJpbGl0eUF0c3BpOjpDaGlsZHJlbkNoYW5nZWQ6OkFkZGVkKTsKKyAgICBBY2Nl
c3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLmNoaWxkcmVuQ2hhbmdlZCgqdGhpcywgY2hpbGQs
IEFjY2Vzc2liaWxpdHlBdHNwaTo6Q2hpbGRyZW5DaGFuZ2VkOjpBZGRlZCk7CiB9CiAKIHZvaWQg
QWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6Y2hpbGRSZW1vdmVkKEFjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaSYgY2hpbGQpCiB7Ci0gICAgbV9hdHNwaS5jaGlsZHJlbkNoYW5nZWQoKnRoaXMsIGNoaWxk
LCBBY2Nlc3NpYmlsaXR5QXRzcGk6OkNoaWxkcmVuQ2hhbmdlZDo6UmVtb3ZlZCk7CisgICAgQWNj
ZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5jaGlsZHJlbkNoYW5nZWQoKnRoaXMsIGNoaWxk
LCBBY2Nlc3NpYmlsaXR5QXRzcGk6OkNoaWxkcmVuQ2hhbmdlZDo6UmVtb3ZlZCk7CiB9CiAKIHZv
aWQgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6c2VyaWFsaXplKEdWYXJpYW50QnVpbGRlciogYnVp
bGRlcikgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAg
IGdfdmFyaWFudF9idWlsZGVyX2FkZChidWlsZGVyLCAiKHNvKSIsIG1fYXRzcGkudW5pcXVlTmFt
ZSgpLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKGJ1
aWxkZXIsICIoc28pIiwgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS51bmlxdWVOYW1l
KCksIG1fcGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoYnVp
bGRlciwgIkAoc28pIiwgYXBwbGljYXRpb25SZWZlcmVuY2UoKSk7CiAgICAgZ192YXJpYW50X2J1
aWxkZXJfYWRkKGJ1aWxkZXIsICJAKHNvKSIsIHBhcmVudFJlZmVyZW5jZSgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9v
dEF0c3BpLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlSb290QXRzcGkuaAppbmRleCAzZTIyNGQ5Nzk1MzEuLjFjMmU2ODRjNjk3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0
c3BpLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmls
aXR5Um9vdEF0c3BpLmgKQEAgLTIwLDEzICsyMCwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBF
TkFCTEUoQUNDRVNTSUJJTElUWSkgJiYgVVNFKEFUU1BJKQotI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlBdHNwaS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5o
PgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVS
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAordHlwZWRlZiBzdHJ1Y3Qg
X0dEQnVzSW50ZXJmYWNlVlRhYmxlIEdEQnVzSW50ZXJmYWNlVlRhYmxlOwogdHlwZWRlZiBzdHJ1
Y3QgX0dWYXJpYW50IEdWYXJpYW50OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw3ICsz
Niw3IEBAIGNsYXNzIFBhZ2U7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpIGZpbmFsIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFjY2Vzc2liaWxpdHlSb290QXRzcGksIFdURjo6
RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlSb290QXRzcGk+IGNyZWF0ZShQ
YWdlJiwgQWNjZXNzaWJpbGl0eUF0c3BpJik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5
Um9vdEF0c3BpPiBjcmVhdGUoUGFnZSYpOwogICAgIH5BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpKCkg
PSBkZWZhdWx0OwogCiAgICAgdm9pZCByZWdpc3Rlck9iamVjdChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKQEAgLTQ5LDcgKzQ5LDYgQEAgcHVibGljOgogICAgIEdW
YXJpYW50KiByZWZlcmVuY2UoKSBjb25zdDsKICAgICBHVmFyaWFudCogcGFyZW50UmVmZXJlbmNl
KCkgY29uc3Q7CiAgICAgR1ZhcmlhbnQqIGFwcGxpY2F0aW9uUmVmZXJlbmNlKCkgY29uc3Q7Ci0g
ICAgQWNjZXNzaWJpbGl0eUF0c3BpJiBhdHNwaSgpIGNvbnN0IHsgcmV0dXJuIG1fYXRzcGk7IH0K
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqIGNoaWxkKCkgY29uc3Q7CiAgICAgdm9pZCBj
aGlsZEFkZGVkKEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSYpOwogICAgIHZvaWQgY2hpbGRSZW1v
dmVkKEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSYpOwpAQCAtNTcsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXJpYWxpemUoR1ZhcmlhbnRCdWlsZGVyKikgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaShQYWdlJiwgQWNjZXNzaWJpbGl0eUF0c3BpJik7
CisgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaShQYWdlJik7CiAKICAgICB2b2lk
IGVtYmVkZGVkKGNvbnN0IGNoYXIqIHBhcmVudFVuaXF1ZU5hbWUsIGNvbnN0IGNoYXIqIHBhcmVu
dFBhdGgpOwogICAgIEludFJlY3QgZnJhbWVSZWN0KHVpbnQzMl90KSBjb25zdDsKQEAgLTY2LDcg
KzY1LDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgR0RCdXNJbnRlcmZhY2VWVGFibGUgc19zb2Nr
ZXRGdW5jdGlvbnM7CiAgICAgc3RhdGljIEdEQnVzSW50ZXJmYWNlVlRhYmxlIHNfY29tcG9uZW50
RnVuY3Rpb25zOwogCi0gICAgQWNjZXNzaWJpbGl0eUF0c3BpJiBtX2F0c3BpOwogICAgIFdlYWtQ
dHI8UGFnZT4gbV9wYWdlOwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1fcGFyZW50
VW5pcXVlTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTk3OTU0MGFhYzQ2Li43MWU3ODM4ZTlmYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDEtMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW2ExMXldIFdlYiBwcm9jZXNzIGNy
YXNoZXMgaW4gc29tZSBzaXRlcyBoYXZpbmcgU1ZHIGltYWdlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NzM3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2lu
Z2xldG9uKCkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjphY2Nlc3NpYmlsaXR5QXRzcGkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDIyLTAxLTEwICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbGxvd3VwIHRvIHIy
ODc4NjMgLSBhZGp1c3QgbGluZSB3cmFwcGluZyBiZWhhdmlvciBpbiBpbWFnZSBvdmVybGF5cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VH
dGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsu
Y3BwCmluZGV4IDE1MTNkZDJhNWY3OC4uNmI0M2Y5ZWQxY2E5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBAIC03MCw3ICs3
MCw3IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICAvLyBGSVhNRTog
d2UgbmVlZCBhIHdheSB0byBjb25uZWN0IERPTSBhbmQgYXBwIGExMXkgdHJlZSBpbiBHVEs0Lgog
I2Vsc2UKICAgICBpZiAoYXV0byogcGFnZSA9IGNvcmVQYWdlKCkpIHsKLSAgICAgICAgbV9hY2Nl
c3NpYmlsaXR5Um9vdE9iamVjdCA9IEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OmNyZWF0ZSgqcGFn
ZSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWNjZXNzaWJpbGl0eUF0c3BpKCkpOworICAgICAg
ICBtX2FjY2Vzc2liaWxpdHlSb290T2JqZWN0ID0gQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6Y3Jl
YXRlKCpwYWdlKTsKICAgICAgICAgbV9hY2Nlc3NpYmlsaXR5Um9vdE9iamVjdC0+cmVnaXN0ZXJP
YmplY3QoWyZdKGNvbnN0IFN0cmluZyYgcGx1Z0lEKSB7CiAgICAgICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkJpbmRBY2Nlc3NpYmlsaXR5VHJlZShwbHVnSUQpKTsKICAgICAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA5MDdkOWZhNTc2
MTkuLjQ2OWEwYTVlMTkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBA
IC03NSwxMCArNzUsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
cy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVRTUEkpCi0jaW5jbHVkZSA8V2ViQ29yZS9BY2Nlc3Np
YmlsaXR5QXRzcGkuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIE9iamVjdDsK
IH0KQEAgLTM5OSwxMCArMzk1LDYgQEAgcHVibGljOgogICAgIFNwZWVjaFJlY29nbml0aW9uUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXImIGVuc3VyZVNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVN
ZWRpYVNvdXJjZU1hbmFnZXIoKTsKICNlbmRpZgogCi0jaWYgVVNFKEFUU1BJKQotICAgIFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlBdHNwaSYgYWNjZXNzaWJpbGl0eUF0c3BpKCkgY29uc3QgeyByZXR1
cm4gKm1fYWNjZXNzaWJpbGl0eTsgfQotI2VuZGlmCi0KICAgICBib29sIGlzQ2FwdGl2ZVBvcnRh
bE1vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NhcHRpdmVQb3J0YWxNb2RlRW5hYmxl
ZDsgfQogCiBwcml2YXRlOgpAQCAtNzc4LDEwICs3NzAsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0aW9uUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI+IG1fc3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlcjsKICNlbmRpZgotCi0jaWYgVVNFKEFUU1BJKQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk+IG1fYWNjZXNzaWJpbGl0eTsKLSNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvZ2xpYi9XZWJQcm9jZXNzR0xpYi5jcHAKaW5kZXggNzcyOWZmNzllNjBmLi4zZTFjMjc1
YzUwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1dlYlByb2Nl
c3NHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
R0xpYi5jcHAKQEAgLTU5LDYgKzU5LDEwIEBACiAjaW5jbHVkZSA8d3RmL2xpbnV4L1JlYWxUaW1l
VGhyZWFkcy5oPgogI2VuZGlmCiAKKyNpZiBVU0UoQVRTUEkpCisjaW5jbHVkZSA8V2ViQ29yZS9B
Y2Nlc3NpYmlsaXR5QXRzcGkuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMjksNyArMTMzLDcgQEAgdm9pZCBXZWJQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmIHBhcmEKICAgICAgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25OYW1lKHBhcmFtZXRlcnMu
YXBwbGljYXRpb25OYW1lKTsKIAogI2lmIFVTRShBVFNQSSkKLSAgICBtX2FjY2Vzc2liaWxpdHkg
PSBtYWtlVW5pcXVlPEFjY2Vzc2liaWxpdHlBdHNwaT4ocGFyYW1ldGVycy5hY2Nlc3NpYmlsaXR5
QnVzQWRkcmVzcyk7CisgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5jb25uZWN0
KHBhcmFtZXRlcnMuYWNjZXNzaWJpbGl0eUJ1c0FkZHJlc3MpOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNTZkNjc4NTRj
NWQuLjBmMjQ1ZDZmNTcwYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIyLTAxLTExICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVthMTF5XSBXZWIgcHJv
Y2VzcyBjcmFzaGVzIGluIHNvbWUgc2l0ZXMgaGF2aW5nIFNWRyBpbWFnZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDczNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBBY2Nlc3NpYmlsaXR5QXRz
cGk6OnNpbmdsZXRvbigpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0c3BpLmNwcDoKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmF4UnVuTG9vcCk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlci5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcik6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjp+QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIpOgorCiAyMDIyLTAxLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVthMTF5XSBXVFI6IGRvIG5vdCBpbW1lZGlhdGVs
eSBwcm9jZXNzIG1haW4gdGhyZWFkIGV2ZW50cyB3aGlsZSB3YWl0aW5nIGZvciBheCB0aHJlYWQg
dGFzawpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dHNwaS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0c3BpLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdHNwaS5j
cHAKaW5kZXggYmEzZDI5NGZkZmQ2Li4yYjcyN2M3YWZkM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJBdHNwaS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dHNwaS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0c3BpLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBA
IFJ1bkxvb3AmIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpheFJ1bkxvb3AoKQogICAgICAgICBX
S0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCkt
PnBhZ2UoKTsKICAgICAgICAgYXV0byogZWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3RBdHNwaSo+KFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QocGFnZSkp
OwogICAgICAgICBSRUxFQVNFX0FTU0VSVChlbGVtZW50KTsKLSAgICAgICAgbV9heFJ1bkxvb3Ag
PSAmZWxlbWVudC0+cm9vdCgpLmF0c3BpKCkucnVuTG9vcCgpOworICAgICAgICBtX2F4UnVuTG9v
cCA9ICZXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLnJ1bkxvb3AoKTsK
ICAgICB9CiAKICAgICByZXR1cm4gKm1fYXhSdW5Mb29wOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0
c3BpL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmNwcAppbmRleCA1MzUxZjM5OTUw
ZTAuLmMwNDdkNWRlN2YyNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlci5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJK
U1dyYXBwZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVu
ZGxlRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdlLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KQEAgLTQ0LDEzICs0MywxMSBAQCBBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXIoSlNWYWx1ZVJlZiBjYQogICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAsIG1fZWxl
bWVudChlbGVtZW50KQogewotICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpOwotICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFp
bkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBhZ2UpOworICAgIFdLQnVuZGxlRnJh
bWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSk7CiAgICAgSlNDb250ZXh0UmVmIGpzQ29udGV4
dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOwogICAgIEpT
VmFsdWVQcm90ZWN0KGpzQ29udGV4dCwgbV9jYWxsYmFjayk7CiAKLSAgICBhdXRvJiBhdHNwaSA9
IG1fZWxlbWVudCA/IG1fZWxlbWVudC0+cm9vdCgpLmF0c3BpKCkgOiBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqPihXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0
KHBhZ2UpKS0+cm9vdCgpLmF0c3BpKCk7Ci0gICAgYXRzcGkuYWRkTm90aWZpY2F0aW9uT2JzZXJ2
ZXIodGhpcywgW3RoaXNdKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSYgZWxlbWVu
dCwgY29uc3QgY2hhciogbm90aWZpY2F0aW9uTmFtZSwgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0
c3BpOjpOb3RpZmljYXRpb25PYnNlcnZlclBhcmFtZXRlciBwYXJhbWV0ZXIpIHsKKyAgICBXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLmFkZE5vdGlmaWNhdGlvbk9ic2Vy
dmVyKHRoaXMsIFt0aGlzXShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkmIGVsZW1l
bnQsIGNvbnN0IGNoYXIqIG5vdGlmaWNhdGlvbk5hbWUsIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlB
dHNwaTo6Tm90aWZpY2F0aW9uT2JzZXJ2ZXJQYXJhbWV0ZXIgcGFyYW1ldGVyKSB7CiAgICAgICAg
IGlmIChtX2VsZW1lbnQgJiYgbV9lbGVtZW50LmdldCgpICE9ICZlbGVtZW50KQogICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC05NSwxMSArOTIsOSBAQCBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlcjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoSlNWYWx1ZVJlZiBjYQog
CiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6fkFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyKCkKIHsKLSAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKTsKLSAgICBhdXRvJiBhdHNwaSA9IG1fZWxl
bWVudCA/IG1fZWxlbWVudC0+cm9vdCgpLmF0c3BpKCkgOiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqPihXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KHBhZ2Up
KS0+cm9vdCgpLmF0c3BpKCk7Ci0gICAgYXRzcGkucmVtb3ZlTm90aWZpY2F0aW9uT2JzZXJ2ZXIo
dGhpcyk7CisgICAgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5yZW1v
dmVOb3RpZmljYXRpb25PYnNlcnZlcih0aGlzKTsKIAotICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFp
bkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBhZ2UpOworICAgIFdLQnVuZGxlRnJh
bWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSk7CiAgICAgSlNDb250ZXh0UmVmIGpzQ29udGV4
dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOwogICAgIEpT
VmFsdWVVbnByb3RlY3QoanNDb250ZXh0LCBtX2NhbGxiYWNrKTsKIH0K
</data>
<flag name="review"
          id="474798"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>