<?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>143194</bug_id>
          
          <creation_ts>2015-03-29 11:48:10 -0700</creation_ts>
          <short_desc>Remove unneeded SVG code, including most isSupportedAttribute functions</short_desc>
          <delta_ts>2015-03-29 13:41:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>kling</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1081017</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-29 11:48:10 -0700</bug_when>
    <thetext>Remove unneeded SVG code, including most isSupportedAttribute functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081019</commentid>
    <comment_count>1</comment_count>
      <attachid>249687</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-29 12:23:20 -0700</bug_when>
    <thetext>Created attachment 249687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081040</commentid>
    <comment_count>2</comment_count>
      <attachid>249687</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-29 13:36:43 -0700</bug_when>
    <thetext>Comment on attachment 249687
Patch

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

&gt; Source/WebCore/svg/SVGFELightElement.cpp:147
&gt; +        auto* parent = parentNode();

You can go parentElement() for tighter typing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081042</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-29 13:41:04 -0700</bug_when>
    <thetext>Committed r182121: &lt;http://trac.webkit.org/changeset/182121&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249687</attachid>
            <date>2015-03-29 12:23:20 -0700</date>
            <delta_ts>2015-03-29 13:38:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143194-20150329122239.patch</filename>
            <type>text/plain</type>
            <size>209165</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhYTRmOGE3Zjk4OTFh
YTY1NDRkZTYzMDNjODgzNzRmYWVkMjJjNS4uNDc4ZDgyMmU0M2ZkYTlkZGFlMzQ0NzZjMGMwMGM4
NjRkMGIxMjgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2OSBAQAorMjAxNS0wMy0yOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVubmVlZGVkIFNW
RyBjb2RlLCBpbmNsdWRpbmcgbW9zdCBpc1N1cHBvcnRlZEF0dHJpYnV0ZSBmdW5jdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzE5NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gUmVtb3ZlZCBt
b3N0IGltcGxlbWVudGF0aW9ucyBvZiBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4gT3RoZXJzIGNhbiBi
ZSByZW1vdmVkIGluCisgICAgICAgICAgZnV0dXJlIHBhdGNoZXMuIFRoZSBvbmVzIGxlZnQgYmVo
aW5kIGFyZSBub3cgYWxsIHByaXZhdGUgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMuCisgICAgICAg
ICAgSXQncyBkYW5nZXJvdXMgZm9yIHRoZW0gdG8gYmUgcHVibGljIGJlY2F1c2UgdGhleSB0ZW5k
IHRvIGluZGljYXRlIHdoaWNoIGF0dHJpYnV0ZXMKKyAgICAgICAgICBhcmUgc3VwcG9ydGVkIGF0
IGEgcGFydGljdWxhciBsZXZlbCBpbiB0aGUgY2xhc3MgaGllcmFyY2h5IGFuZCB0aGV5IGFyZSBu
b3QgdmlydHVhbAorICAgICAgICAgIGZ1bmN0aW9uczsgbWlnaHQgd2FudCB0byByZXRoaW5rIHRo
ZSBmdW5jdGlvbiBuYW1lIGlmIHdlIGtlZXAgYW55IG9mIHRoZXNlIGxvbmcgdGVybS4KKworICAg
ICAgICAtIFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMsIGVzcGVjaWFsbHkgb2YgQXR0ci5oIGFu
ZCBBdHRyaWJ1dGUuaC4KKworICAgICAgICAtIENoYW5nZWQgbW9zdCBwYXJzZUF0dHJpYnV0ZSBh
bmQgc3ZnQXR0cmlidXRlQ2hhbmdlZCBmdW5jdGlvbnMgc28gdGhleSBubyBsb25nZXIKKyAgICAg
ICAgICByZWx5IG9uIGNoZWNraW5nIGF0dHJpYnV0ZSBuYW1lcyBhZ2FpbnN0IGEgc2V0LiBBbHNv
IHJlbW92ZWQgbG90cyBvZiB1bm5lZWRlZCBjYWxscworICAgICAgICAgIHRvIFNWR0xhbmdTcGFj
ZTo6cGFyc2VBdHRyaWJ1dGUsIHdoaWNoIGlzIGNhbGxlZCBieSBTVkdFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSBhbmQKKyAgICAgICAgICBuZWVkIG5vdCBiZSBjYWxsZWQgYnkgZGVyaXZlZCBjbGFz
c2VzLgorCisgICAgICAgIC0gUmVtb3ZlZCByZXR1cm4gdmFsdWVzIGZyb20gcGFyc2VBdHRyaWJ1
dGUgZnVuY3Rpb25zLiBTa2lwcGluZyBvdGhlciBwYXJzZUF0dHJpYnV0ZQorICAgICAgICAgIGxv
Z2ljIGlzIG5vdCBhbiBpbXBvcnRhbnQgb3B0aW16YXRpb24gYW5kIG1ha2VzIGZ1bmN0aW9ucyBu
ZWVkbGVzc2x5IGNvbXBsZXguCisKKyAgICAgICAgLSBNb3ZlZCB1c2Ugb2YgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBjbG9zZXIgdG8gd2hlcmUgdGhleSBhcmUgbmVlZGVkLiBFdmVudHVhbGx5
CisgICAgICAgICAgd2UgbWF5IGJlIGFibGUgdG8gcmVtb3ZlIG1hbnkgb2YgdGhlc2UuCisKKyAg
ICAgICAgLSBVc2VkIGF1dG8gaW4gYSBmZXcgcGxhY2VzIHdoZXJlIHRoZSBzYW1lIHR5cGUgaXMg
cmVwZWF0ZWQgdHdpY2Ugb24gdGhlIHNhbWUgbGluZSBvZgorICAgICAgICAgIGNvZGUsIGFuZCBh
dXRvIG1ha2VzIGl0IGEgYml0IHNtYWxsZXIuCisKKyAgICAgICAgLSBHb3QgcmlkIG9mIHByb3Rl
Y3RlZCBzZWN0aW9ucyBpbiBzb21lIGZpbmFsIGNsYXNzZXM7IGRvZXNuJ3QgbWFrZSBzZW5zZSB0
byBjb21iaW5lCisgICAgICAgICAgdGhlc2UgdHdvLiBBbHNvIG1vdmVkIGEgZmV3IGZ1bmN0aW9u
cyBmcm9tIHByb3RlY3RlZCB0byBwcml2YXRlIGluIG90aGVyIGNsYXNzZXMuCisKKyAgICAgICAg
LSBNYWRlIGEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBpbnRvIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb25z
IGluIHRoZSBiYXNlIGNsYXNzZXMgc3VjaAorICAgICAgICAgIGFzIFNWR0xhbmdTcGFjZTsgdGhl
eSB3ZXJlIG5vdCBtYWtpbmcgYW55IHVzZSBvZiB0aGUgb2JqZWN0LCBhbmQgc28gaXQgd2FzIHdh
c3RlZnVsCisgICAgICAgICAgdG8gY29tcGlsZSB0aGVtIGFzIG5vbi1zdGF0aWMgbWVtYmVyIGZ1
bmN0aW9ucy4KKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOiBS
ZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6
IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVu
dDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogRG9uJ3QgdXNlIGlzU3VwcG9ydGVkQXR0cmlidXRl
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBE
b24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50
Lmg6IFJlbW92ZWQgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50Lmg6IFJlbW92ZWQgaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUuCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJp
YnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50Lmg6IFJlbW92ZWQgaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBE
b24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6aXNTdXBwb3J0
ZWRBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRG9u
J3QgdXNlIGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVt
ZW50Lmg6IFJlbW92ZWQgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR0Ns
aXBQYXRoRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogRG9uJ3QgdXNlIGlz
U3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOiBSZW1vdmVkIHVu
bmVlZGVkIGluY2x1ZGVzLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRG9uJ3QgdXNl
IGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDogUmVt
b3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
Y3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxs
aXBzZUVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERvbid0IHVzZSBpc1N1
cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKTogRG9uJ3QgdXNlIGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAg
ICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5oOiBSZW1vdmVkIGlzU3VwcG9ydGVkQXR0cmli
dXRlLgorICAgICAgICAqIHN2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNwcDogUmVt
b3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKTogRG9uJ3QgcmV0dXJuIGEgYm9vbGVhbi4K
KyAgICAgICAgKiBzdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oOiBEb24ndCByZXR1
cm4gYSBib29sZWFuLgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6IFJlbW92
ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVu
dDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVCbGVuZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogRG9uJ3QgdXNlIGlzU3VwcG9ydGVkQXR0
cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3Zn
L1NWR0ZFQmxlbmRFbGVtZW50Lmg6IFJlbW92ZWQgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAg
ICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBp
bmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Ojppc1N1
cHBvcnRlZEF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9y
TWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAg
KiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaDogUmVtb3ZlZCBpc1N1cHBvcnRlZEF0dHJp
YnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOiBS
ZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAg
ICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBp
bmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6aXNTdXBw
b3J0ZWRBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3Np
dGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0
ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcv
U1ZHRkVDb21wb3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVt
ZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTog
RG9uJ3QgdXNlIGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVE
cm9wU2hhZG93RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERvbid0IHVzZSBpc1N1cHBv
cnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5j
bHVkZXMuCisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6IFJlbW92
ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2Ug
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUuCisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMu
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1
dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKTogRG9uJ3QgdXNlIGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEb24ndCB1c2Ug
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBp
bmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50Ojppc1N1cHBvcnRl
ZEF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERv
bid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcDogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxl
bWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERvbid0IHVzZSBpc1N1cHBv
cnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAg
ICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
TW9ycGhvbG9neUVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRG9u
J3QgdXNlIGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6IFJlbW92
ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1l
bnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFT2Zmc2V0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICog
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKTogRG9uJ3QgdXNlIGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVF
bGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFVGlsZUVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogRG9uJ3QgdXNl
IGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4K
KyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKTogRG9uJ3QgdXNlIGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERvbid0
IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNl
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDogUmVtb3ZlZCB1
bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKTogRG9uJ3QgdXNlIGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAq
IHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOiBSZW1vdmVkIHVu
bmVlZGVkIGluY2x1ZGVzLgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZSk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0
dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmg6IFJlbW92ZWQgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUgYW5kIGFsc28gbW92ZWQgYQorICAg
ICAgICBjb3VwbGUgZnVuY3Rpb25zIG91dCBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KKyAgICAg
ICAgKiBzdmcvU1ZHRml0VG9WaWV3Qm94LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4K
KyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBp
bmNsdWRlcy4KKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcDogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogRG9uJ3QgdXNlIGlzU3VwcG9y
dGVkQXR0cmlidXRlLgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5u
ZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NW
R0dseXBoRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgICog
c3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisg
ICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaFJlZkVsZW1lbnQ6Omhhc1ZhbGlkR2x5cGhFbGVtZW50
KTogUmV3cm90ZSB0byB1c2UgaXM8PiBpbnN0ZWFkIG9mIGhhc1RhZ05hbWUuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdHbHlwaFJlZkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogRG9uJ3QgdXNlIHJl
dHVybiB2YWx1ZSBmcm9tIFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUuCisgICAgICAg
ICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMu
CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTog
RG9uJ3QgdXNlIGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGlj
c0VsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERvbid0IHVzZSBpc1N1cHBv
cnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDogUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAg
ICogc3ZnL1NWR0xhbmdTcGFjZS5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKTogUmVtb3ZlZCB0aGUg
cmV0dXJuIHZhbHVlLgorICAgICAgICAqIHN2Zy9TVkdMYW5nU3BhY2UuaDogQ29udmVydGVkIGZ1
bmN0aW9ucyB0byBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucyBhbmQgcmVtb3ZlZCB0aGUKKyAgICAg
ICAgcmV0dXJuIHZhbHVlIGZyb20gcGFyc2VBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR0xp
bmVFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xpbmVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERvbid0IHVzZSBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcDog
UmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdy
YWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUuCisgICAgICAgICogc3ZnL1NWR01QYXRoRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVk
ZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjpTVkdNUGF0aEVsZW1lbnQ6OmlzU3VwcG9y
dGVkQXR0cmlidXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR01QYXRoRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdNUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEb24n
dCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR01QYXRoRWxlbWVu
dC5oOiBSZW1vdmVkIGlzU3VwcG9ydGVkQXR0cmlidXRlIGFuZCBtYWRlIGRpZE5vdGlmeVN1YnRy
ZWVJbnNlcnRpb25zCisgICAgICAgIHByaXZhdGUgaW5zdGVhZCBvZiBwcm90ZWN0ZWQuCisgICAg
ICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVz
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBE
b24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR01hc2tFbGVt
ZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R01hc2tFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJp
YnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVk
IGluY2x1ZGVzLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKTogRG9uJ3QgdXNlIGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAqIHN2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50LmNwcDogUmVt
b3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50
Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQ
b2x5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUuCisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHUG9s
eUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcDog
UmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUuCisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRl
ZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50Ojppc1N1cHBvcnRl
ZEF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAg
IChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERvbid0IHVz
ZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVk
ZXMuCisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERv
bid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHU2NyaXB0RWxl
bWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgICogc3ZnL1NWR1N0
b3BFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR1N0b3BFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2Ug
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAg
ICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuaDogUmVtb3ZlZCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZS4KKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBp
bmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6aXNTdXBwb3J0ZWRB
dHRyaWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAg
KiBzdmcvU1ZHU3R5bGVFbGVtZW50Lmg6IFJlbW92ZWQgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisg
ICAgICAgICogc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1
ZGVzLgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRy
aWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3ltYm9sRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdTeW1ib2xFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKTogRG9uJ3QgdXNl
IGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50Lmg6
IFJlbW92ZWQgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RSZWZFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEb24ndCB1c2UgaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAg
KiBzdmcvU1ZHVFJlZkVsZW1lbnQuaDogUmVtb3ZlZCBpc1N1cHBvcnRlZEF0dHJpYnV0ZSBhbmQg
bWFkZSBkaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucworICAgICAgICBwcml2YXRlIGluc3RlYWQg
b2YgcHJvdGVjdGVkLgorICAgICAgICAqIHN2Zy9TVkdUZXN0cy5jcHA6IFJlbW92ZWQgdW5uZWVk
ZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUp
OiBSZW1vdmVkIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuaDogUmVtb3Zl
ZCByZXR1cm4gdmFsdWUgb2YgcGFyc2VBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZSk6IERvbid0IHVzZQorICAgICAgICBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4gQWxz
byByZW1vdmVkIGdsb2JhbCB0byBvcHRpbWl6ZSBjb21wYXJpbmcgYXR0cmlidXRlIHZhbHVlIGFn
YWluc3QKKyAgICAgICAgdGhlIHN0cmluZyAicHJlc2VydmUiLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERvbid0IHVzZSBpc1N1cHBv
cnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6IE1hZGUgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUgcHJpdmF0ZSBpbnN0ZWFkIG9mIHByb3RlY3RlZC4KKyAgICAgICAgKiBzdmcvU1ZHVGV4
dEVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAgICAqIHN2Zy9T
VkdUZXh0UGF0aEVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IERvbid0IHVz
ZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudC5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6IERvbid0IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOiBEb24n
dCB1c2UgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUuCisgICAgICAgICogc3ZnL1NWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQuaDogUmVtb3ZlZCBpc1N1cHBvcnRlZEF0dHJpYnV0ZSBhbmQgbWFkZSBzb21l
IGZ1bmN0aW9ucworICAgICAgICBwcml2YXRlIGluc2V0YWQgb2YgcHJvdGVjdGVkLgorICAgICAg
ICAqIHN2Zy9TVkdVUklSZWZlcmVuY2UuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVVJJUmVmZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZSk6IERvbid0
IHVzZSBpc1N1cHBvcnRlZEF0dHJpYnV0ZS4KKyAgICAgICAgKiBzdmcvU1ZHVVJJUmVmZXJlbmNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZl
cmVuY2UpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDogUmVtb3ZlZCB1bm5lZWRl
ZCBpbmNsdWRlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKTogRG9uJ3QgdXNlIGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAqIHN2Zy9TVkdW
aWV3RWxlbWVudC5oOiBSZW1vdmVkIGlzU3VwcG9ydGVkQXR0cmlidXRlLgorICAgICAgICAqIHN2
Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVz
LgorCiAyMDE1LTAzLTI4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIFtNYWNdIFVwZGF0ZSBmb3Igb3V0cHV0IGRldmljZSBBUEkgY2hhbmdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDRi
YTQ4YjFmM2E0NDliNDQ3NDZkNjA0OTJkM2FjNzBjODQ4ZTk5Y2MuLjUwMjE2Nzk4MTEzM2RjZmNh
NmUxZTZlMjU0ODdhMzk1ZTNhYWQ1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW1hZ2UuaCIKIAotI2luY2x1ZGUgIkF0dHIuaCIK
ICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmlu
ZGV4IDBhMjk2ODYwM2I2N2ZmNjYyMzNkZjM3ZTdmM2NkMmY4ZjE4OWNhM2QuLmZhMzE3MmYxYmQ2
ZjgxNjM4OTgxN2UwNDdlYWRlMjQ1OWZkNDZmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50
LmNwcApAQCAtMjMsOCArMjMsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNW
R0FFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJBdHRyLmgiCi0jaW5jbHVkZSAiQXR0cmlidXRlLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCkBAIC00Myw3ICs0MSw2IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMu
aCIKICNpbmNsdWRlICJTVkdTTUlMRWxlbWVudC5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIK
LSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC04Miw1NyArNzksMzAgQEAgU3RyaW5nIFNWR0FFbGVtZW50Ojp0aXRsZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIFNWR0VsZW1lbnQ6OnRpdGxlKCk7CiB9CiAKLWJvb2wgU1ZHQUVsZW1lbnQ6Omlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFF1YWxpZmllZE5hbWU+PiBzdXBwb3J0ZWRB
dHRyaWJ1dGVzOwotICAgIGlmIChzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmlzRW1wdHkoKSkg
ewotICAgICAgICBTVkdVUklSZWZlcmVuY2U6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoc3VwcG9y
dGVkQXR0cmlidXRlcyk7Ci0gICAgICAgIFNWR0xhbmdTcGFjZTo6YWRkU3VwcG9ydGVkQXR0cmli
dXRlcyhzdXBwb3J0ZWRBdHRyaWJ1dGVzKTsKLSAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZDo6YWRkU3VwcG9ydGVkQXR0cmlidXRlcyhzdXBwb3J0ZWRBdHRyaWJ1dGVzKTsKLSAg
ICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRhcmdldEF0dHIp
OwotICAgIH0KLSAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5jb250YWluczxT
VkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwotfQotCiB2b2lkIFNWR0FFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkp
IHsKLSAgICAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1
ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6
dGFyZ2V0QXR0cikgewogICAgICAgICBzZXRTVkdUYXJnZXRCYXNlVmFsdWUodmFsdWUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKFNWR0xhbmdTcGFj
ZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYg
KFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVl
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgU1ZH
R3JhcGhpY3NFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CisgICAgU1ZHVVJJ
UmVmZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CisgICAgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiB2b2lk
IFNWR0FFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJk
IGd1YXJkKCp0aGlzKTsKLQotICAgIC8vIFVubGlrZSBvdGhlciBTVkcqRWxlbWVudCBjbGFzc2Vz
LCBTVkdBRWxlbWVudCBvbmx5IGxpc3RlbnMgdG8gU1ZHVVJJUmVmZXJlbmNlIGNoYW5nZXMKLSAg
ICAvLyBhcyBub25lIG9mIHRoZSBvdGhlciBwcm9wZXJ0aWVzIGNoYW5nZXMgdGhlIGxpbmtpbmcg
YmVoYXZpb3VyIGZvciBvdXIgPGE+IGVsZW1lbnQuCiAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgYm9vbCB3YXNMaW5rID0gaXNM
aW5rKCk7CiAgICAgICAgIHNldElzTGluayghaHJlZigpLmlzTnVsbCgpICYmICFzaG91bGRQcm9o
aWJpdExpbmtzKHRoaXMpKTsKLSAgICAgICAgaWYgKHdhc0xpbmsgIT0gaXNMaW5rKCkpCisgICAg
ICAgIGlmICh3YXNMaW5rICE9IGlzTGluaygpKSB7CisgICAgICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKKyAgICAgICAgfQogICAgIH0KKworICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBT
VkdBRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKaW5kZXggMTk0Y2RhY2RiOGJiNWU0MDAzYjI3NDUz
NjEyYzdiNjViYmUyYmViZS4uMjk0NjVkZGNmMTEzMWM2NjAxZDg2ZWJkMDY0ZjRiZTRhYWQwOGU2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDYgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
U3RyaW5nIHRhcmdldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN2Z1RhcmdldCgpOyB9CiAK
LSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggMjJjMDFkNTQ2MDQyODky
MDFmNmUxMjI3ZDU4ZDFjYzk5YzFlYTExMC4uMDM2MjdiZGUxZjM2YjdiNDBhZjI0Y2FiM2Y2NWU1
ZDVkZGFhNDg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rp
b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuY3BwCkBAIC0yMyw5ICsyMyw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuaCIKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkF0dHJp
YnV0ZS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgotI2luY2x1ZGUgIlJlbmRlck9i
amVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHSW1h
Z2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTVBhdGhFbGVtZW50LmgiCkBAIC0zNiw3ICszNCw2
IEBACiAjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9y
bUxpc3QuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKQEAgLTk2LDIxICs5Myw4IEBAIGJvb2wgU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQ6Omhhc1ZhbGlkQXR0cmlidXRlTmFtZSgpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFF1YWxpZmllZE5hbWU+PiBzdXBwb3J0ZWRBdHRyaWJ1dGVzOwotICAgIGlm
IChzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmlzRW1wdHkoKSkKLSAgICAgICAgc3VwcG9ydGVk
QXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBhdGhBdHRyKTsKLSAgICByZXR1cm4gc3Vw
cG9ydGVkQXR0cmlidXRlcy5nZXQoKS5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRv
cj4oYXR0ck5hbWUpOwotfQotCiB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKLSAgICAgICAg
U1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnBhdGhBdHRyKSB7
CiAgICAgICAgIG1fcGF0aCA9IFBhdGgoKTsKICAgICAgICAgYnVpbGRQYXRoRnJvbVN0cmluZyh2
YWx1ZSwgbV9wYXRoKTsKQEAgLTExOCw3ICsxMDIsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgU1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQog
ICAgIAogU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OlJvdGF0ZU1vZGUgU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQ6OnJvdGF0ZU1vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQuaAppbmRleCAwMTJhYjQ3N2U1YWU0ZjYxOGMzMjMyNmE1OTg3NWVh
NmNmNmI1MDMyLi44NDMwOTg0ZjgxZjI0N2Q0MzljNmUwMjQ4ZjJlNzE3ZDA2MDcyODZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaApAQCAtMzgsNyAr
MzgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBoYXNWYWxpZEF0dHJpYnV0ZVR5cGUo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsaWRBdHRyaWJ1dGVOYW1lKCkgb3Zl
cnJpZGU7CiAKLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHJl
c2V0QW5pbWF0ZWRUeXBlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAppbmRleCAxNzI4ZGQyNmFjMDU3ZWU1Zjk2MWNl
OWE1YzBiN2QwNjEzNzcwN2NmLi44YzJiZjRmZTAwYWE4ZTA1OTEzYjZmNmI4NzZiNjc4NTZmM2Ji
NDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudC5jcHAKQEAgLTIzLDEwICsyMyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5o
IgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgot
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTU0LDIxICs1Miw4IEBAIGJvb2wgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6Omhhc1Zh
bGlkQXR0cmlidXRlVHlwZSgpCiAgICAgcmV0dXJuIG1fYW5pbWF0ZWRQcm9wZXJ0eVR5cGUgPT0g
QW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OwogfQogCi1ib29sIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
LXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxRdWFsaWZpZWROYW1lPj4gc3Vw
cG9ydGVkQXR0cmlidXRlczsKLSAgICBpZiAoc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5pc0Vt
cHR5KCkpCi0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjp0
eXBlQXR0cik7Ci0gICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuY29udGFpbnM8
U1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKLX0KLQogdm9pZCBTVkdBbmlt
YXRlVHJhbnNmb3JtRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVk
QXR0cmlidXRlKG5hbWUpKSB7Ci0gICAgICAgIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6cGFyc2VB
dHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7CiAgICAgICAgIG1fdHlwZSA9IFNWR1RyYW5z
Zm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtVHlwZSh2YWx1ZSk7CiAgICAgICAgIGlmIChtX3R5cGUg
PT0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX01BVFJJWCkKQEAgLTc2LDcgKzYxLDcgQEAg
dm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudC5oCmluZGV4IDc1YmJjNmE4Y2Y4NmMyY2Q4Y2M1NTdkNWMw
YTIyOWQzN2E4NjU2M2EuLjI5MzI5ZjRmZWQ2MmNlNTU1MjEwMThlMGMwODQ0OWZmM2NmYTNkMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5o
CkBAIC00MCw4ICs0MCw2IEBAIHByaXZhdGU6CiAgICAgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCiAgICAgdmlydHVhbCBi
b29sIGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIG92ZXJyaWRlOwotCi0gICAgYm9vbCBpc1N1cHBv
cnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBv
dmVycmlkZTsKIAogICAgIFNWR1RyYW5zZm9ybTo6U1ZHVHJhbnNmb3JtVHlwZSBtX3R5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKaW5kZXggNGViZDViZmY1
OTc5MjZlNGExYWJhOGQ3NjY3YzdjZjk3ZTJmNGQwNy4uZmUzYTA4OWUzMmFkNTMxNTM2MzY1Nzdj
ZjY1ZmVhNDY3MDVmMzQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVt
ZW50LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNWR0FuaW1hdGlvbkVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1
ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKQEAgLTE2MywxMSArMTYyLDYgQEAgYm9v
bCBTVkdBbmltYXRpb25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIAogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKLSAgICAgICAgU1ZH
U01JTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp2YWx1ZXNBdHRyKSB7CiAgICAg
ICAgIC8vIFBlciB0aGUgU01JTCBzcGVjaWZpY2F0aW9uLCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3
aGl0ZSBzcGFjZSwKICAgICAgICAgLy8gYW5kIHdoaXRlIHNwYWNlIGJlZm9yZSBhbmQgYWZ0ZXIg
c2VtaWNvbG9uIHNlcGFyYXRvcnMsIGlzIGFsbG93ZWQgYW5kIHdpbGwgYmUgaWdub3JlZC4KQEAg
LTIxNCwxMiArMjA4LDkgQEAgdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKTsKKyAgICBTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwor
ICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKTsKIH0KIAogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRpb25FbGVtZW50LmgKaW5kZXggYjNjYjE3NDM4MDFmMmU0ZjEzNWEwNDdhNzU2MTEzM2ExN2U2
YmQ0NS4uMmNlNzlkYjMzYTA1YTE5YTgxZGI3MDE3Y2MwMTAwNjViNzBmMDBiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5oCkBAIC0xNjksNyArMTY5LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgY29tcHV0ZUNTU1Byb3BlcnR5VmFsdWUoU1ZHRWxlbWVudCosIENT
U1Byb3BlcnR5SUQsIFN0cmluZyYgdmFsdWUpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVQ
cm9wZXJ0eVZhbHVlVHlwZXMoY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKTsK
IAotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCmluZGV4IDY4YzRiNDQxOGQ0Zjc2NDBkNDAzZGU0
ODM0YjAzYzY2ZjA2ODQ2NjQuLjFiODk5ZjljNzJmZWMwNGM4MzE1YjMxMWUzNzdhNzIwNjQ3MTU4
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTIxLDcgKzIx
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdDaXJjbGVFbGVtZW50Lmgi
CiAKLSNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0VsbGlwc2UuaCIKQEAg
LTMwLDcgKzI5LDYgQEAKICNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKICNpbmNsdWRlICJTVkdM
ZW5ndGguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYzLDUxICs2MSwyOSBAQCBSZWY8
U1ZHQ2lyY2xlRWxlbWVudD4gU1ZHQ2lyY2xlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0NpcmNsZUVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBTVkdDaXJjbGVFbGVtZW50Ojpp
c1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxRdWFsaWZpZWROYW1lPj4gc3VwcG9ydGVk
QXR0cmlidXRlczsKLSAgICBpZiAoc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgU1ZHTGFuZ1NwYWNlOjphZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKHN1cHBvcnRl
ZEF0dHJpYnV0ZXMpOwotICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjphZGRT
dXBwb3J0ZWRBdHRyaWJ1dGVzKHN1cHBvcnRlZEF0dHJpYnV0ZXMpOwotICAgICAgICBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6Y3hBdHRyKTsKLSAgICAgICAgc3VwcG9y
dGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmN5QXR0cik7Ci0gICAgICAgIHN1cHBv
cnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpyQXR0cik7Ci0gICAgfQotICAgIHJl
dHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zPFNWR0F0dHJpYnV0ZUhhc2hU
cmFuc2xhdG9yPihhdHRyTmFtZSk7Ci19Ci0KIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKLSAg
ICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKQotICAgICAgICBTVkdHcmFwaGljc0Vs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChuYW1lID09
IFNWR05hbWVzOjpjeEF0dHIpCisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikKICAg
ICAgICAgc2V0Q3hCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN5
QXR0cikKICAgICAgICAgc2V0Q3lCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjpyQXR0cikKICAgICAgICAgc2V0UkJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVj
dChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0
aHMpKTsKLSAgICBlbHNlIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKQotICAgICAgICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKSkgewotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9y
LCBuYW1lLCB2YWx1ZSk7CisKKyAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKTsKKyAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAo
IWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdHcmFwaGljc0Vs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAg
U1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIAotICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09
IFNWR05hbWVzOjpjeUF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJBdHRy
KSB7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjeEF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmN5QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ckF0dHIpIHsKKyAgICAg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGludmFs
aWRhdGVTVkdQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTE3LDExICs5Myw5IEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAg
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2lyY2xl
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCmluZGV4IDRjN2Y1ZDEwNzljNDA1YjIz
YzA2ZjIxNzgyNDk3YjAwOGUxNzBiZjMuLjY4NmZiY2EwM2UzMjc5MDkyYzdiOGMxY2UwMWEyNmRh
NmI3NWUzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaApAQCAtMzgsNyAr
MzgsNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKLSAgICBib29sIGlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50LmNwcAppbmRleCBhMGNiYTFiZjdkMGQxMmJmM2JjNmVkYmIxZGUyZjNjNDg1ODE0NGYwLi43
ZjZiZWM5NWRiZjY4ZWRiNWRiZWUwZTQ2YzU3NDk4ZjI3ZGQ2ZDUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcApAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0NsaXBQYXRoRWxlbWVudC5oIgogCi0jaW5jbHVkZSAi
QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtNjgsMjQgKzY3LDE1
IEBAIGJvb2wgU1ZHQ2xpcFBhdGhFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkgewotICAgICAg
ICBTVkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpjbGlwUGF0aFVu
aXRzQXR0cikgewotICAgICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByb3BlcnR5VmFs
dWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0
cmluZyh2YWx1ZSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJh
aXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAg
ICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgc2V0Q2xpcFBhdGhVbml0c0Jh
c2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OworICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKIH0KIAogdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xp
cFBhdGhFbGVtZW50LmgKaW5kZXggMzQwMWZiMDkxZDgwMjkyMDYxZjI2OWUyZTA3ODY0NDRiN2Yy
ZWNiOS4uZDNiYTZmZDQ3M2Q5NzA1ZjZmODE2MDgwNWY1YTY4NmVkNjQ3MjFkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGlu
ZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBib29sIGlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICBzdGF0aWMgYm9vbCBpc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKaW5kZXgg
YTJiNTQ5ZmZmNWE4N2MwMTRhNzllYjBmMmUyZWUyNzkxYjliMTUwNC4uMjdkNjIwMWUwMTM3ODBl
NWQ0ZmQ4NGRhZTVlMzdhMzg1YTA5MzFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCkBAIC0yMSw3
ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1
ZGUgIlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMu
aCIKICNpbmNsdWRlICJTVkdOdW1iZXJMaXN0LmgiCkBAIC03NSwxMSArNzQsNiBAQCBib29sIFNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYQogCiB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkp
IHsKLSAgICAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRy
KSB7CiAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJv
cGVydHlUcmFpdHM8Q29tcG9uZW50VHJhbnNmZXJUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAg
ICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKQEAgLTEyMCw3ICsxMTQsNyBAQCB2b2lkIFNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OwogfQogCiB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQu
aAppbmRleCA1Njk0ODNkNjc1OWFkMzFjYjNjMTQ0NzYzMGIxMzI2ZGM1M2QwNDA2Li5iZTRmZTk3
MzFjZGI4NDc1ZGFiYTQxNjViY2NlYjkwOGI1ZTJhZmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaApAQCAt
NzYsMTMgKzc2LDE0IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAot
ICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQpCiAgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfRU5VTUVSQVRJT04oVHlwZSwgdHlwZSwgQ29tcG9uZW50VHJhbnNm
ZXJUeXBlKQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUl9MSVNUKFRhYmxlVmFsdWVz
LCB0YWJsZVZhbHVlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAppbmRl
eCA5NmJlMjNlMTg4NWVjMTE4N2I5MjdlOGY1YmE4NGIzYmViYTIwZjJlLi5kNTRlYzQ2YzY3YWRl
ZmE0YjQ5ODQ5ZjE0Y2ZkZmUzNzJkOGUwNmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU1ZHQ3Vyc29yRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJYTGlua05hbWVz
LmgiCkBAIC04MSwxOSArODAsMTcgQEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKIHsKICAgICBT
VkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKLSAgICBpZiAoIWlzU3VwcG9y
dGVkQXR0cmlidXRlKG5hbWUpKQotICAgICAgICBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCisgICAg
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQogICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xl
bmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAg
ICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKICAgICAgICAgc2V0WUJhc2VWYWx1
ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJv
cikpOwotICAgIGVsc2UgaWYgKFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkK
LSAgICAgICAgICAgICB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJp
YnV0ZShuYW1lLCB2YWx1ZSkKLSAgICAgICAgICAgICB8fCBTVkdVUklSZWZlcmVuY2U6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKSkgewotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAKKwogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJz
ZUVycm9yLCBuYW1lLCB2YWx1ZSk7CisKKyAgICBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7CisgICAgU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
KyAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2
YWx1ZSk7CisgICAgU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7
CiB9CiAKIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6YWRkQ2xpZW50KFNWR0VsZW1lbnQqIGVsZW1l
bnQpCkBAIC0xMjEsMTMgKzExOCw4IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICB9CiAKICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLQotICAgIC8vIEFueSBjaGFu
Z2Ugb2YgYSBjdXJzb3Igc3BlY2lmaWMgYXR0cmlidXRlIHRyaWdnZXJzIHRoaXMgcmVjYWxjLgot
ICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2xpZW50cy5i
ZWdpbigpOwotICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBt
X2NsaWVudHMuZW5kKCk7Ci0KLSAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAo
Kml0KS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAogdm9p
ZCBTVkdDdXJzb3JFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8VVJMPiYgdXJscykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
dXJzb3JFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCmlu
ZGV4IDZhMzdmYTNhMjMyZDZmMGE2YzVhZTM4OGJmN2NhYjdkMzJiN2ExNjcuLjFiMWU5MDFmZDFi
NGRhNTdiZGFiNjUzZTNiZjEwZGM1OTUwMGYzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuaApAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29s
IGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9
CiAKLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
KyAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcAppbmRleCBkZGI5MjhkNmM2YmFjN2RjZTA0NWIxNjFkNDk5YWMzNjEz
N2E4OTc5Li5kMzFiNDI3NTIzZTRmMTViOTQwYzhlMGY1YjQzYjM5NGNjZDU5MzIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1
ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNs
dWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsbGlwc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxl
bWVudC5jcHAKaW5kZXggZjU2MDJhYTM4MzhlOTBjMzEwNDE5ZTUxODNiNWJlNGE4MDRhYjFlNS4u
ZDMzMzg0MThkODM4YmVhZDhhODMwY2I3NzViZWEyZjJhZTc4YTc1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCkBAIC0yMSwxNCArMjEsMTIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdFbGxpcHNlRWxlbWVudC5oIgogCi0jaW5jbHVkZSAi
QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlJlbmRlclNW
R0VsbGlwc2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdQYXRoLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTY0LDI3ICs2MiwxMSBAQCBSZWY8U1ZHRWxsaXBzZUVsZW1lbnQ+IFNWR0VsbGlw
c2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNWR0VsbGlwc2VFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CiAKLWJvb2wgU1ZHRWxsaXBzZUVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PFF1YWxpZmllZE5hbWU+PiBzdXBwb3J0ZWRBdHRyaWJ1dGVzOwotICAgIGlmIChzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBTVkdMYW5nU3BhY2U6
OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoc3VwcG9ydGVkQXR0cmlidXRlcyk7Ci0gICAgICAgIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoc3VwcG9y
dGVkQXR0cmlidXRlcyk7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNW
R05hbWVzOjpjeEF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChT
VkdOYW1lczo6Y3lBdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQo
U1ZHTmFtZXM6OnJ4QXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRk
KFNWR05hbWVzOjpyeUF0dHIpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRl
cy5nZXQoKS5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwot
fQotCiB2b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIFNWR1BhcnNp
bmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUobmFtZSkpCi0gICAgICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikKKyAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyKQogICAgICAgICBzZXRDeEJhc2VWYWx1ZShT
VkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyKQogICAgICAgICBzZXRDeUJh
c2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFy
c2VFcnJvcikpOwpAQCAtOTIsNDEgKzc0LDMwIEBAIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0CiAg
ICAgICAgIHNldFJ4QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0
aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJ5QXR0cikKICAgICAgICAgc2V0UnlCYXNlVmFsdWUoU1ZH
TGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZv
cmJpZE5lZ2F0aXZlTGVuZ3RocykpOwotICAgIGVsc2UgaWYgKFNWR0xhbmdTcGFjZTo6cGFyc2VB
dHRyaWJ1dGUobmFtZSwgdmFsdWUpCi0gICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKSB7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2lu
Z0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKKworICAgIFNWR0dyYXBoaWNzRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdFbGxp
cHNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cgotICAg
ICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpyeEF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ5
QXR0cikgeworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpjeUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0ciB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6cnlBdHRyKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9u
QXR0cmlidXRlU3R5bGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIHJl
bmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHU2hhcGU+KHRoaXMtPnJlbmRlcmVyKCkpOwotICAg
IGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChTVkdMYW5nU3BhY2U6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVy
KTsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHU2hhcGU+
KHRoaXMtPnJlbmRlcmVyKCkpKSB7CisgICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAg
fQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0K
IAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0VsbGlwc2VFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxsaXBzZUVsZW1lbnQuaAppbmRleCA3NjlkZDU3NGFjNWNhYWQ2NTQxOWVmYTBlNTk5MWNkNDhh
OTRkYTRhLi4yZGY0MWVkNmYwMTM4MDJhYTc3MmVkNTliYzE5YWJjZTczOTJiNTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaApAQCAtMzgsNyArMzgsNiBAQCBwcml2YXRl
OgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLmNwcAppbmRleCBjMjAwMTZjYTBlNWMzMjRlYTM3MmVjMTE4ZTA2NjMwMDBj
NzJlMzIxLi45Zjg1OWE4YzFlNjY2NDM5YTJmM2JhMmViMTQ2MDhjODYyNGI1NTYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3Bw
CkBAIC0yMSwyMCArMjEsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAKLSNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVk
ZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotYm9vbCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQor
dm9pZCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlm
IChuYW1lID09IFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0cikgeworICAg
IGlmIChuYW1lID09IFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0cikKICAg
ICAgICAgc2V0RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEJhc2VWYWx1ZSh2YWx1ZSA9PSAidHJ1
ZSIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIGJvb2wgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oCmluZGV4IDFlZDUwY2QyNGQyOWNhYjNmY2Q0
ZjE2OTM1MTg0NDExZDRkZmIxMmYuLjhhZWE5ZDAzYmExNTU0ZWM5ZWMzNGRiMzlkZThlOTI4MzI5
ZmQ4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQuaApAQCAtMjYsNyArMjYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEF0dHJpYnV0ZTsKIGNsYXNzIFNWR0VsZW1lbnQ7CiAKIC8vIE5vdGVzIG9uIGEgU1ZHIDEu
MSBzcGVjIGRpc2NyZXBhbmN5OgpAQCAtMzgsMTQgKzM3LDE2IEBAIGNsYXNzIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQgewogcHVibGljOgogICAgIHZpcnR1YWwgflNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKSB7IH0KIAotICAgIGJvb2wgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIGJvb2wgaXNLbm93bkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdm9pZCBhZGRTdXBwb3J0ZWRBdHRyaWJ1
dGVzKEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4mKTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKKworICAgIHN0YXRpYyBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHN0YXRpYyB2
b2lkIGFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGFzaFNldDxRdWFsaWZpZWROYW1lPiYpOworCiAg
ICAgYm9vbCBoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoU1ZHRWxlbWVudCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKIAogcHJvdGVjdGVkOgogICAgIC8vIFRoZXNlIHR5cGVzIGxvb2sgYSBiaXQgYXdr
d2FyZCwgYnV0IGhhdmUgdG8gbWF0Y2ggdGhlIGdlbmVyaWMgdHlwZXMgb2YgdGhlIFNWR0FuaW1h
dGVkUHJvcGVydHkgbWFjcm9zLgotICAgIHZpcnR1YWwgdm9pZCBzZXRFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkQmFzZVZhbHVlKGNvbnN0IGJvb2wmLCBjb25zdCBib29sIHZhbGlkVmFsdWUgPSB0
cnVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRC
YXNlVmFsdWUoY29uc3QgYm9vbCYsIGJvb2wgdmFsaWRWYWx1ZSA9IHRydWUpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wmIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRCYXNlVmFsdWUoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KGJvb2wpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKaW5kZXggYmM2MDg4Mjg3MWRm
NzA5N2RlMzI2NWFiODc1ZGQ5NjdhMzkyMzQ0ZS4uNzlmNGMwMGMwZjU3MmQ1MTBkZGJhM2VmMDhk
MzdmMzJjZmZmM2Q3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3Bw
CkBAIC0yMiwxMSArMjIsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0ZF
QmxlbmRFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJGaWx0
ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC01NSwyNCArNTMsOCBAQCBSZWY8U1ZHRkVCbGVuZEVsZW1lbnQ+IFNWR0ZF
QmxlbmRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRAogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFQmxlbmRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KSk7CiB9CiAKLWJvb2wgU1ZHRkVCbGVuZEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PFF1YWxpZmllZE5hbWU+PiBzdXBwb3J0ZWRBdHRyaWJ1dGVzOwotICAgIGlmIChz
dXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBzdXBwb3J0ZWRB
dHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6bW9kZUF0dHIpOwotICAgICAgICBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6aW5BdHRyKTsKLSAgICAgICAgc3VwcG9y
dGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmluMkF0dHIpOwotICAgIH0KLSAgICBy
ZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNo
VHJhbnNsYXRvcj4oYXR0ck5hbWUpOwotfQotCiB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKLSAgICAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAobmFtZSA9PSBT
VkdOYW1lczo6bW9kZUF0dHIpIHsKICAgICAgICAgQmxlbmRNb2RlIG1vZGUgPSBCbGVuZE1vZGVO
b3JtYWw7CiAgICAgICAgIGlmIChwYXJzZUJsZW5kTW9kZSh2YWx1ZSwgbW9kZSkpCkBAIC05MCw3
ICs3Miw3IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogYm9vbCBT
VkdGRUJsZW5kRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCog
ZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTEwNSwyNCArODcsMTkg
QEAgYm9vbCBTVkdGRUJsZW5kRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRl
ckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWEKIAogdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7Ci0KICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1vZGVBdHRy
KSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAg
ICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjppbjJBdHRyKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpbnZhbGlkYXRlKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwog
fQogCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAppbmRleCBiNTY1YmMxNjg1N2I2ODUzOGM4YzcxYjM0
NDRiMDhjZTgxZWQyZTBjLi5jODMxZTcxOTlkOGMzMzhmNGEzNTA5NmUxN2JmYmVlMGU3Yjg2ZjU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaApAQCAtNTgsNyArNTgsNiBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZFQmxlbmRFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCAwYmU0Y2Y3N2Y2
ZDNkZmIzMTg5MzFlOGZmMGI2NTBiMTAzZjZmYzVlLi41MzljNmIzZjRmNTU3YjZlODc4ZDU4ZDYy
ZWM3NWVmZTBhYThmODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5jcHAKQEAgLTIxLDExICsyMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0
ZS5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxk
ZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDI2ICs1MiwxMCBAQCBSZWY8U1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQ+IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWJvb2wgU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFF1YWxpZmllZE5hbWU+
PiBzdXBwb3J0ZWRBdHRyaWJ1dGVzOwotICAgIGlmIChzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgp
LmlzRW1wdHkoKSkgewotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdO
YW1lczo6dHlwZUF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChT
VkdOYW1lczo6dmFsdWVzQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCku
YWRkKFNWR05hbWVzOjppbkF0dHIpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmli
dXRlcy5nZXQoKS5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUp
OwotfQotCiB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAg
IGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dHlwZUF0
dHIpIHsKLSAgICAgICAgQ29sb3JNYXRyaXhUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0
eVRyYWl0czxDb2xvck1hdHJpeFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgYXV0
byBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8Q29sb3JNYXRyaXhUeXBlPjo6ZnJv
bVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKICAgICAgICAg
ICAgIHNldFR5cGVCYXNlVmFsdWUocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTkyLDcgKzc0LDcgQEAgdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXQKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBi
b29sIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmls
dGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTA5
LDI0ICs5MSwxOSBAQCBib29sIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzZXRGaWx0ZXJFZmZl
Y3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbgogCiB2b2lkIFNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLQogICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6dHlwZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZhbHVlc0F0dHIpIHsK
KyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAg
IHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKKyAgICAgICAg
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGludmFsaWRh
dGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNv
bG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwg
RmlsdGVyKiBmaWx0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5oCmluZGV4IDZhZDYwZGI5MDNlY2I0Nzg2N2RiYzYwMmFlMGUwNjNmMWQ1Mzg0YzMuLmIz
ODAzMmI5NjQ2NzQ1MmE4NThmOGUwNTg5YTRkYzc0YWZmODMyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCkBAIC03Miw3ICs3Miw2IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDNjZTRkNDBj
NTc1ZGEwOWFhNzY4M2E0N2ExZjBiZGE3MjZjMzNlYTQuLmM5YzZmYzk1ZTJjOTUyNjEyZTMyYjZl
YmZiNGRmYjA5MmEwZTZjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgiCiAK
LSNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiU1ZHRkVGdW5jQUVsZW1lbnQuaCIKQEAgLTU0
LDI3ICs1MywxNCBAQCBSZWY8U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ+IFNWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUQogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CiAKLWJvb2wgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PFF1YWxpZmllZE5hbWU+PiBzdXBwb3J0ZWRBdHRyaWJ1dGVzOwot
ICAgIGlmIChzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmlzRW1wdHkoKSkKLSAgICAgICAgc3Vw
cG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmluQXR0cik7Ci0gICAgcmV0dXJu
IHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuY29udGFpbnM8U1ZHQXR0cmlidXRlSGFzaFRyYW5z
bGF0b3I+KGF0dHJOYW1lKTsKLX0KLQogdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7
Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewogICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7CiB9CiAKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwg
RmlsdGVyKiBmaWx0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5oCmluZGV4IGYzNGExZjA0MzU2YzExZmM1MDI3YjNjMjYzMTRkY2Fm
YzhiYzk0M2QuLjliNmI5Y2Y2NWQxZDY4Nzc5MzUzODhlNDkwMWNiODlkYTVhODNiMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5o
CkBAIC0zNCw3ICszNCw2IEBAIHByaXZhdGU6CiAgICAgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICAvLyBGSVhNRTog
c3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciosIEZpbHRlciopIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuY3BwCmluZGV4IGMyNmI3YWNjZWQzMDJjMWRiMjAxZDc4ZWRlNTNjM2RlMTIx
YTRmZjEuLjY3ZDY5MTZlYjU5MjU4ZDBmMjNiOGE5NzNjOWNkNTljZmU5NjJjY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC0yMSwxMSArMjEs
OSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5oIgogCi0jaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
CiAjaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0j
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNjIsMjggKzYwLDggQEAgUmVmPFNWR0ZFQ29tcG9zaXRlRWxlbWVudD4gU1ZHRkVDb21wb3Np
dGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGEKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0K
IAotYm9vbCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PFF1YWxpZmllZE5hbWU+PiBzdXBwb3J0ZWRBdHRyaWJ1dGVzOwotICAgIGlmIChzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBzdXBwb3J0ZWRBdHRy
aWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6aW5BdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0
cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmluMkF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRB
dHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6b3BlcmF0b3JBdHRyKTsKLSAgICAgICAgc3Vw
cG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmsxQXR0cik7Ci0gICAgICAgIHN1
cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjprMkF0dHIpOwotICAgICAgICBz
dXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6azNBdHRyKTsKLSAgICAgICAg
c3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6Oms0QXR0cik7Ci0gICAgfQot
ICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zPFNWR0F0dHJpYnV0
ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7Ci19Ci0KIHZvaWQgU1ZHRkVDb21wb3NpdGVFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkp
IHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6b3BlcmF0b3JBdHRyKSB7CiAgICAgICAgIENvbXBvc2l0ZU9wZXJh
dGlvblR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPENvbXBvc2l0ZU9wZXJh
dGlvblR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUg
PiAwKQpAQCAtMTIxLDcgKzk5LDcgQEAgdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b20KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OwogfQogCiBib29sIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmli
dXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
QEAgLTE0NSwyOCArMTIzLDE5IEBAIGJvb2wgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzZXRGaWx0
ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0CiAKIHZvaWQgU1ZH
RkVDb21wb3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6b3BlcmF0b3JBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjprMUF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmsyQXR0cgotICAg
ICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azNBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjprNEF0dHIpIHsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9w
ZXJhdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azFBdHRyIHx8IGF0dHJOYW1lID09
IFNWR05hbWVzOjprMkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmszQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6azRBdHRyKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKSB7CisgICAg
ICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpbnZh
bGlkYXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZH
RkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJCdWlsZGVy
LCBGaWx0ZXIqIGZpbHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuaAppbmRleCA3YzNjY2QxYmE0YTFiNmQwNjE2MzE5OWQ2NDk4OThiNDdiYzk5ZThhLi4xYzgx
ZjlmMDA0OTY4OTcxOTkwYmE2YWM4OGNkMmFlMmRhZjhkZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCkBAIC04MCw3ICs4MCw2IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU1ZHRkVDb21wb3NpdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOwogCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCAzNzgwMWYyMWZmZmNhMTlmODFjNGY0
NjUxMmFkYzg0Nzg4YmVlYzAyLi44Mzk4MTk1ZmE3ZDBmZThmNjIwZjJlYmRmOTA0Nzk3NDcwM2Vj
OTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5jcHAKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQXR0ci5oIgogI2lu
Y2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRl
ICJJbnRQb2ludC5oIgpAQCAtMjgsNyArMjcsNiBAQAogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxk
ZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGll
cy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTk5LDMxICs5Nyw4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6Om9yZGVyWUlkZW50aWZpZXIoKQogICAgIHJldHVybiBzX2lkZW50aWZp
ZXI7CiB9CiAKLWJvb2wgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoU2V0PFF1YWxpZmllZE5hbWU+PiBzdXBwb3J0ZWRBdHRyaWJ1dGVzOwot
ICAgIGlmIChzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBz
dXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6aW5BdHRyKTsKLSAgICAgICAg
c3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6Om9yZGVyQXR0cik7Ci0gICAg
ICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjprZXJuZWxNYXRyaXhB
dHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmVk
Z2VNb2RlQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05h
bWVzOjpkaXZpc29yQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRk
KFNWR05hbWVzOjpiaWFzQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCku
YWRkKFNWR05hbWVzOjp0YXJnZXRYQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMu
Z2V0KCkuYWRkKFNWR05hbWVzOjp0YXJnZXRZQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJp
YnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cik7Ci0gICAgICAg
IHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0
cik7Ci0gICAgfQotICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5z
PFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7Ci19Ci0KIHZvaWQgU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShuYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKICAgICAgICAgc2V0
SW4xQmFzZVZhbHVlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM1LDkgKzExMCw3IEBA
IHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0CiAgICAgICAgICAgICBzZXRPcmRlclhCYXNlVmFsdWUo
eCk7CiAgICAgICAgICAgICBzZXRPcmRlcllCYXNlVmFsdWUoeSk7CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0V2Fybmlu
ZygKLSAgICAgICAgICAgICAgICAiZmVDb252b2x2ZU1hdHJpeDogcHJvYmxlbSBwYXJzaW5nIG9y
ZGVyPVwiIiArIHZhbHVlCi0gICAgICAgICAgICAgICAgKyAiXCIuIEZpbHRlcmVkIGVsZW1lbnQg
d2lsbCBub3QgYmUgZGlzcGxheWVkLiIpOworICAgICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NT
VkdFeHRlbnNpb25zKCkucmVwb3J0V2FybmluZygiZmVDb252b2x2ZU1hdHJpeDogcHJvYmxlbSBw
YXJzaW5nIG9yZGVyPVwiIiArIHZhbHVlICsgIlwiLiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90
IGJlIGRpc3BsYXllZC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ2LDkgKzEx
OSw3IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVl
ID4gMCkKICAgICAgICAgICAgIHNldEVkZ2VNb2RlQmFzZVZhbHVlKHByb3BlcnR5VmFsdWUpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMo
KS5yZXBvcnRXYXJuaW5nKAotICAgICAgICAgICAgICAgICJmZUNvbnZvbHZlTWF0cml4OiBwcm9i
bGVtIHBhcnNpbmcgZWRnZU1vZGU9XCIiICsgdmFsdWUKLSAgICAgICAgICAgICAgICArICJcIi4g
RmlsdGVyZWQgZWxlbWVudCB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQuIik7CisgICAgICAgICAgICBk
b2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRXYXJuaW5nKCJmZUNvbnZvbHZl
TWF0cml4OiBwcm9ibGVtIHBhcnNpbmcgZWRnZU1vZGU9XCIiICsgdmFsdWUgKyAiXCIuIEZpbHRl
cmVkIGVsZW1lbnQgd2lsbCBub3QgYmUgZGlzcGxheWVkLiIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xNjUsOSArMTM2LDcgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QKICAgICAg
ICAgaWYgKGRpdmlzb3IpCiAgICAgICAgICAgICBzZXREaXZpc29yQmFzZVZhbHVlKGRpdmlzb3Ip
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS5yZXBvcnRXYXJuaW5nKAotICAgICAgICAgICAgICAgICJmZUNvbnZvbHZlTWF0cml4OiBw
cm9ibGVtIHBhcnNpbmcgZGl2aXNvcj1cIiIgKyB2YWx1ZQotICAgICAgICAgICAgICAgICsgIlwi
LiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3BsYXllZC4iKTsKKyAgICAgICAgICAg
IGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydFdhcm5pbmcoImZlQ29udm9s
dmVNYXRyaXg6IHByb2JsZW0gcGFyc2luZyBkaXZpc29yPVwiIiArIHZhbHVlICsgIlwiLiBGaWx0
ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3BsYXllZC4iKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKQEAgLTE5Miw5ICsxNjEsNyBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdAog
ICAgICAgICAgICAgc2V0S2VybmVsVW5pdExlbmd0aFhCYXNlVmFsdWUoeCk7CiAgICAgICAgICAg
ICBzZXRLZXJuZWxVbml0TGVuZ3RoWUJhc2VWYWx1ZSh5KTsKICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRXYXJuaW5nKAot
ICAgICAgICAgICAgICAgICJmZUNvbnZvbHZlTWF0cml4OiBwcm9ibGVtIHBhcnNpbmcga2VybmVs
VW5pdExlbmd0aD1cIiIgKyB2YWx1ZQotICAgICAgICAgICAgICAgICsgIlwiLiBGaWx0ZXJlZCBl
bGVtZW50IHdpbGwgbm90IGJlIGRpc3BsYXllZC4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCku
YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydFdhcm5pbmcoImZlQ29udm9sdmVNYXRyaXg6IHBy
b2JsZW0gcGFyc2luZyBrZXJuZWxVbml0TGVuZ3RoPVwiIiArIHZhbHVlICsgIlwiLiBGaWx0ZXJl
ZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3BsYXllZC4iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMjA0LDEzICsxNzEsMTEgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QKICAgICAg
ICAgZWxzZSBpZiAodmFsdWUgPT0gImZhbHNlIikKICAgICAgICAgICAgIHNldFByZXNlcnZlQWxw
aGFCYXNlVmFsdWUoZmFsc2UpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkb2N1bWVudCgp
LmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRXYXJuaW5nKAotICAgICAgICAgICAgICAgICJm
ZUNvbnZvbHZlTWF0cml4OiBwcm9ibGVtIHBhcnNpbmcgcHJlc2VydmVBbHBoYUF0dHI9XCIiICsg
dmFsdWUKLSAgICAgICAgICAgICAgICArICJcIi4gRmlsdGVyZWQgZWxlbWVudCB3aWxsIG5vdCBi
ZSBkaXNwbGF5ZWQuIik7CisgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS5yZXBvcnRXYXJuaW5nKCJmZUNvbnZvbHZlTWF0cml4OiBwcm9ibGVtIHBhcnNpbmcgcHJl
c2VydmVBbHBoYUF0dHI9XCIiICsgdmFsdWUgICsgIlwiLiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwg
bm90IGJlIGRpc3BsYXllZC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBib29sIFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZl
Y3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMjUxLDMyICsyMTYsMTkgQEAg
dm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0S2VybmVsVW5pdExlbmd0aChmbG9h
dCB4LCBmbG9hdCB5KQogCiB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmICgh
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVBdHRy
Ci0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpkaXZpc29yQXR0cgotICAgICAgICB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6Ymlhc0F0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnRhcmdldFhBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp0
YXJnZXRZQXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExl
bmd0aEF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFB
dHRyKSB7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjplZGdlTW9kZUF0dHIgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmRpdmlzb3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpi
aWFzQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGFyZ2V0WEF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnRhcmdldFlBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxV
bml0TGVuZ3RoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIp
IHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAg
ICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIKLSAgICAgICAg
fHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9yZGVyQXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0cikgeworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpvcmRlckF0dHIgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRy
TmFtZSk7CiB9CiAKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyKiBm
aWx0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5oCmluZGV4IGY0ODBiMmRkMDJhZGY2ZTU4OTRkOWNhMWY4NTcxZTU4MDc0YjViZDAuLmIxZjdl
ZGU0OTVmNmVkN2U5ZGE1MjQyNTIxNTUyZjg4N2E5MWMyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCkBAIC03Myw3ICs3Myw2IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggN2Y3MmEw
MjA0NjA3ODRhNjQ0ZTJmNGZmZGRlMmExMDIzZDI4MDhhNy4uOWRiMjdhNTJlZjgyODIzYTZlYjFk
OTc2ZWVlMjgxYmE2ZGE2MDdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCIKIAotI2lu
Y2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJGRURpZmZ1c2VMaWdodGluZy5oIgogI2luY2x1ZGUg
IkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCkBAIC0yOSw3ICsyOCw2
IEBACiAjaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgi
CiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzUsMjYgKzczLDggQEAgY29u
c3QgQXRvbWljU3RyaW5nJiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6Omtlcm5lbFVuaXRM
ZW5ndGhZSWRlbnRpZmllcigpCiAgICAgcmV0dXJuIHNfaWRlbnRpZmllcjsKIH0KIAotYm9vbCBT
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
U2V0PFF1YWxpZmllZE5hbWU+PiBzdXBwb3J0ZWRBdHRyaWJ1dGVzOwotICAgIGlmIChzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1
dGVzLmdldCgpLmFkZChTVkdOYW1lczo6aW5BdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmli
dXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIpOwotICAgICAgICBz
dXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0cik7
Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjprZXJuZWxV
bml0TGVuZ3RoQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNW
R05hbWVzOjpsaWdodGluZ19jb2xvckF0dHIpOyAvLyBFdmVuIHRob3VnaCBpdCdzIGEgU1ZHLUNT
UyBwcm9wZXJ0eSwgd2Ugb3ZlcnJpZGUgaXRzIGhhbmRsaW5nIGhlcmUuCi0gICAgfQotICAgIHJl
dHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zPFNWR0F0dHJpYnV0ZUhhc2hU
cmFuc2xhdG9yPihhdHRyTmFtZSk7Ci19Ci0KIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkg
fHwgbmFtZSA9PSBTVkdOYW1lczo6bGlnaHRpbmdfY29sb3JBdHRyKSB7Ci0gICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OmluQXR0cikgewogICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1
cm47CkBAIC0xMTksNyArOTksNyBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29ucwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7
CiB9CiAKIGJvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQpAQCAtMTY4LDI3ICsxNDgsMTkgQEAgYm9vbCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwKIAogdm9p
ZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgIAot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0cgotICAgICAgICB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0cgotICAgICAgICB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIKLSAgICAgICAgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikgeworICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6
ZGlmZnVzZUNvbnN0YW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExl
bmd0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikgewor
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAg
cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgeworICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaW52YWxpZGF0
ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAogdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6
OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgU1ZHRkVMaWdodEVsZW1lbnQqIGxp
Z2h0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKaW5kZXggNjQxNTFkYTEz
ZTljZjkyZjhhODU1ZGI3YmIxZDVmYWVmYTU4ODc3OC4uMGJmMDc5ODBlZTczMjM4NjdhMGRkMTA1
MjZmZTEyY2E5YmU3NTc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQuaApAQCAtMzgsNyArMzgsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIAotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNl
dEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1l
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAppbmRleCA3YTRlNTI1ODZlMzViZTA3ZWM3OWEw
YWJjNWNlNjliYjkzYzQ1ZmZiLi42YzdmN2QxOWZmN2ViOTM1NDNjYmZjMWVjOTIzMjdmMDJiZmE0
ZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50LmNwcApAQCAtMjAsMTEgKzIwLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0
ZS5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxk
ZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4LDM1ICs1NiwxNyBAQCBSZWY8U1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50PiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1ib29sIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UXVhbGlm
aWVkTmFtZT4+IHN1cHBvcnRlZEF0dHJpYnV0ZXM7Ci0gICAgaWYgKHN1cHBvcnRlZEF0dHJpYnV0
ZXMuZ2V0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCku
YWRkKFNWR05hbWVzOjppbkF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgp
LmFkZChTVkdOYW1lczo6aW4yQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0
KCkuYWRkKFNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0cik7Ci0gICAgICAgIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0cik7Ci0g
ICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpzY2FsZUF0dHIp
OwotICAgIH0KLSAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5jb250YWluczxT
VkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwotfQotCiB2b2lkIFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVk
QXR0cmlidXRlKG5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyKSB7
Ci0gICAgICAgIENoYW5uZWxTZWxlY3RvclR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5
VHJhaXRzPENoYW5uZWxTZWxlY3RvclR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKKyAgICAgICAg
YXV0byBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8Q2hhbm5lbFNlbGVjdG9yVHlw
ZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAg
ICAgICAgICAgICBzZXRYQ2hhbm5lbFNlbGVjdG9yQmFzZVZhbHVlKHByb3BlcnR5VmFsdWUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlDaGFu
bmVsU2VsZWN0b3JBdHRyKSB7Ci0gICAgICAgIENoYW5uZWxTZWxlY3RvclR5cGUgcHJvcGVydHlW
YWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPENoYW5uZWxTZWxlY3RvclR5cGU+Ojpmcm9tU3RyaW5n
KHZhbHVlKTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8
Q2hhbm5lbFNlbGVjdG9yVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJv
cGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAgICBzZXRZQ2hhbm5lbFNlbGVjdG9yQmFzZVZhbHVl
KHByb3BlcnR5VmFsdWUpOwogICAgICAgICByZXR1cm47CkBAIC0xMDcsNyArODcsNyBAQCB2b2lk
IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29ucwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIGJvb2wgU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZl
Y3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTI2LDI0ICsxMDYsMTkgQEAg
Ym9vbCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0
ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwKIAogdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6eENoYW5uZWxTZWxlY3RvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlDaGFubmVs
U2VsZWN0b3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzY2FsZUF0dHIpIHsKKyAgICAg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHByaW1p
dGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmluMkF0dHIpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKIFBhc3NS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCmluZGV4IDM5NTM0
ZTFkYWFmOWI1MGExOWZkOWM0MGEzZGI4MzY1ODA4MDYwN2UuLjI0OWU3ZGFiZTJmYmMyZTAwNWEy
OGNlZjJhY2M1MDY3MjNiZmU5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKQEAgLTczLDcgKzczLDYgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmKTsKICAgICAKLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCA1YzEwZTcx
Mzk5NTBiYzVjYjBhYjA1NjljMGQxNzBiZjAzMTZkZDMwLi5mN2U5MmVlMzdlNDhkNzVlZDExMjI5
NjkyNDYwMDM3NDE5YTNhNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
cm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQuY3BwCkBAIC0yMCwxMyArMjAsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTVkdGRURyb3BTaGFkb3dFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJBdHRyaWJ1
dGUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxk
ZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGll
cy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODEsMjUgKzc5LDggQEAgdm9p
ZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzZXRTdGREZXZpYXRpb24oZmxvYXQgeCwgZmxvYXQg
eSkKICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKLWJvb2wgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4+IHN1cHBvcnRl
ZEF0dHJpYnV0ZXM7Ci0gICAgaWYgKHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjppbkF0
dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6ZHhB
dHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmR5
QXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpz
dGREZXZpYXRpb25BdHRyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMu
Z2V0KCkuY29udGFpbnM8U1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKLX0K
LQogdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICgh
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9u
QXR0cikgewogICAgICAgICBmbG9hdCB4LCB5OwogICAgICAgICBpZiAocGFyc2VOdW1iZXJPcHRp
b25hbE51bWJlcih2YWx1ZSwgeCwgeSkpIHsKQEAgLTEyNCwyNyArMTA1LDE4IEBAIHZvaWQgU1ZH
RkVEcm9wU2hhZG93RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBh
cnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmluQXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9u
QXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHhBdHRyCi0gICAgICAgIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjpkeUF0dHIpIHsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0ciB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZHhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpk
eUF0dHIpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5oCmluZGV4IDNlNGYzMDczNGZiNTg2OWM1OGZmZWU0NDQ5NGIx
YjVkM2Y0NDI2NTkuLjNmNTQ0YjJhYTRhYmFhZTk1NzY3YTAzMTMxN2IwNTk2MTk1M2NhZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaApAQCAtMzUsNyAr
MzUsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCi0gICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAKaW5kZXggYzhkNDdkNzY4MWE3MGYwZmQzYTAzZDVk
NWFlMDY2NmY3NTkyOWM1OS4uZGVlN2VkYzc2NjNiZTg1NWZlMWIyYTQ5MGYyMWE4NzFhNWVmMzAz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCkBAIC0yMSw3ICsy
MSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVGbG9vZEVsZW1lbnQu
aCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAppbmRleCAwMGUy
MWFjNWNiODA4ZWY1NTU2MWFiMDQxNTkxNzQ2NDg5YTZiOGQyLi44NzFiMTIyYWY5NGM2NWUwMzYy
OWE5ZDVhMmM4MDgzOGMxZWNiNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50LmNwcApAQCAtMjEsMTIgKzIxLDEwIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgiCiAKLSNpbmNsdWRl
ICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJTVkdG
aWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJz
ZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC03NiwyNCArNzQsOCBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKGZsb2F0IHgsIGZsb2F0IHkpCiAgICAgaW52YWxpZGF0
ZSgpOwogfQogCi1ib29sIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4+IHN1cHBvcnRlZEF0dHJpYnV0ZXM7Ci0g
ICAgaWYgKHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHN1
cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjppbkF0dHIpOwotICAgICAgICBz
dXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cik7
Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjplZGdlTW9k
ZUF0dHIpOwotICAgIH0KLSAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5jb250
YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwotfQotCiB2b2lkIFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9y
dGVkQXR0cmlidXRlKG5hbWUpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIpIHsK
ICAgICAgICAgZmxvYXQgeCwgeTsKICAgICAgICAgaWYgKHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1i
ZXIodmFsdWUsIHgsIHkpKSB7CkBAIC0xMDksMzYgKzkxLDI2IEBAIHZvaWQgU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBCiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0cikg
ewotICAgICAgICBFZGdlTW9kZVR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRz
PEVkZ2VNb2RlVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOworICAgICAgICBhdXRvIHByb3BlcnR5
VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxFZGdlTW9kZVR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVl
KTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgc2V0RWRnZU1v
ZGVCYXNlVmFsdWUocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRv
Y3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydFdhcm5pbmcoCi0gICAgICAgICAg
ICAgICAgImZlR2F1c3NpYW5CbHVyOiBwcm9ibGVtIHBhcnNpbmcgZWRnZU1vZGU9XCIiICsgdmFs
dWUKLSAgICAgICAgICAgICAgICArICJcIi4gRmlsdGVyZWQgZWxlbWVudCB3aWxsIG5vdCBiZSBk
aXNwbGF5ZWQuIik7CisgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMo
KS5yZXBvcnRXYXJuaW5nKCJmZUdhdXNzaWFuQmx1cjogcHJvYmxlbSBwYXJzaW5nIGVkZ2VNb2Rl
PVwiIiArIHZhbHVlICsgIlwiLiBGaWx0ZXJlZCBlbGVtZW50IHdpbGwgbm90IGJlIGRpc3BsYXll
ZC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1
dGUobmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7Ci0gICAgCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0
dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0dHIKLSAg
ICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0cikgeworICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzdGRE
ZXZpYXRpb25BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjplZGdlTW9kZUF0dHIpIHsKKyAg
ICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGlu
dmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpbHRlckJ1
aWxkZXIsIEZpbHRlciogZmlsdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5oCmluZGV4IDJhNTZlMjJlYTBjNTA1ZWM0MDViY2NhOTg2MTEyZGQwZWNj
ZTE5YWYuLmI1NWMyZmI5Y2Y5N2Q5YWFhY2QzYTg2NWIxZTk4ZmQwY2VkMzc5YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKQEAgLTM4LDcgKzM4
LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBib29sIGlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCAyMjVlZDU5NWY4NjhhZDg4ZGE4Y2MyY2FlZTFm
N2RiZmFhOThjMTNmLi41MmJkYTQ5YzcyMzk1M2NmOWI3ZDNlYTIyMjU4ZmRjMzk4MWUxNjdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTIyLDcgKzIyLDYg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdGRUltYWdlRWxlbWVudC5oIgog
Ci0jaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3Qu
aCIKQEAgLTM0LDcgKzMzLDYgQEAKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTEx
LDI1ICsxMDksOCBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJj
ZSgpCiAgICAgaW52YWxpZGF0ZSgpOwogfQogCi1ib29sIFNWR0ZFSW1hZ2VFbGVtZW50Ojppc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxRdWFsaWZpZWROYW1lPj4gc3VwcG9ydGVkQXR0
cmlidXRlczsKLSAgICBpZiAoc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgU1ZHVVJJUmVmZXJlbmNlOjphZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKHN1cHBvcnRl
ZEF0dHJpYnV0ZXMpOwotICAgICAgICBTVkdMYW5nU3BhY2U6OmFkZFN1cHBvcnRlZEF0dHJpYnV0
ZXMoc3VwcG9ydGVkQXR0cmlidXRlcyk7Ci0gICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoc3VwcG9ydGVkQXR0cmlidXRlcyk7Ci0gICAg
ICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVj
dFJhdGlvQXR0cik7Ci0gICAgfQotICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgp
LmNvbnRhaW5zPFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7Ci19Ci0KIHZv
aWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShuYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
cikgewogICAgICAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW87
CiAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW8ucGFyc2UodmFsdWUpOwpAQCAtMTM3LDM5ICsx
MTgsMjYgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR1VSSVJl
ZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBT
VkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgCiAgICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikgeworICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaW52YWxpZGF0ZSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9u
UmVxdWVzdCBTVkdGRUltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIHJv
b3RQYXJlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCmluZGV4IGY0MzE5
ZTQ1YTZlYWIzZGQ2MzFkODYyNmJhNzMzZTNlNWRmNmM1YWEuLjI4ZmM2N2RjMThlZWE5YmNlNjIw
OTNiZmI0MDMzNTcyOGY4NTJhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5oCkBAIC00MiwxMyArNDIsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+U1ZHRkVJbWFn
ZUVsZW1lbnQoKTsKIAotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkaWROb3RpZnlTdWJ0
cmVlSW5zZXJ0aW9ucyhDb250YWluZXJOb2RlKikgb3ZlcnJpZGU7Ci0KIHByaXZhdGU6CiAgICAg
U1ZHRkVJbWFnZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAg
ICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkTm90aWZ5U3VidHJlZUluc2VydGlvbnMoQ29udGFpbmVyTm9kZSopIG92
ZXJyaWRlOworCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAppbmRleCAzYjY2YmFhZDI4OWFj
NWUwNDAyYWFjNWFiMjViNzgyMmYyNGJmYTc2Li5lMGFiN2RiNWExMDRmNDc0OGFiNjcyNjAyYTdm
ZDYxZGM1NDNmMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAK
QEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdGRUxp
Z2h0RWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRWxlbWVu
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2UuaCIKQEAgLTMxLDcgKzMwLDYgQEAKICNpbmNsdWRlICJTVkdGaWx0ZXJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgi
CiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04NCwzMSArODIsOCBAQCBQYXNzUmVmUHRyPExp
Z2h0U291cmNlPiBTVkdGRUxpZ2h0RWxlbWVudDo6ZmluZExpZ2h0U291cmNlKGNvbnN0IFNWR0Vs
ZW1lbnQqIHN2ZwogICAgIHJldHVybiBsaWdodE5vZGUtPmxpZ2h0U291cmNlKCk7CiB9CiAKLWJv
b2wgU1ZHRkVMaWdodEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFF1
YWxpZmllZE5hbWU+PiBzdXBwb3J0ZWRBdHRyaWJ1dGVzOwotICAgIGlmIChzdXBwb3J0ZWRBdHRy
aWJ1dGVzLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdl
dCgpLmFkZChTVkdOYW1lczo6YXppbXV0aEF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1
dGVzLmdldCgpLmFkZChTVkdOYW1lczo6ZWxldmF0aW9uQXR0cik7Ci0gICAgICAgIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjp4QXR0cik7Ci0gICAgICAgIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjp5QXR0cik7Ci0gICAgICAgIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjp6QXR0cik7Ci0gICAgICAgIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpwb2ludHNBdFhBdHRyKTsKLSAgICAgICAg
c3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIpOwot
ICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6cG9pbnRzQXRa
QXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpz
cGVjdWxhckV4cG9uZW50QXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCku
YWRkKFNWR05hbWVzOjpsaW1pdGluZ0NvbmVBbmdsZUF0dHIpOwotICAgIH0KLSAgICByZXR1cm4g
c3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNs
YXRvcj4oYXR0ck5hbWUpOwotfQotCiB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKLSAgICAgICAgU1ZH
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmF6aW11dGhBdHRyKSB7CiAgICAgICAg
IHNldEF6aW11dGhCYXNlVmFsdWUodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTU5LDQ4ICsxMzQsMzYgQEAgdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0VsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdGRUxpZ2h0RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
LSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmF6aW11dGhBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjplbGV2YXRpb25BdHRyCisgICAgICAgIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjp4QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnpBdHRyCisgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2lu
dHNBdFhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyCisgICAgICAgIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6bGlt
aXRpbmdDb25lQW5nbGVBdHRyKSB7CiAKLSAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmF6aW11dGhB
dHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjplbGV2YXRpb25BdHRyCi0gICAg
ICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6eUF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnpBdHRy
Ci0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFhBdHRyCi0gICAgICAg
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyCi0gICAgICAgIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6bGltaXRpbmdDb25lQW5nbGVBdHRyKSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGUqIHBh
cmVudCA9IHBhcmVudE5vZGUoKTsKKyAgICAgICAgYXV0byogcGFyZW50ID0gcGFyZW50Tm9kZSgp
OwogICAgICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOworICAgICAgICBhdXRv
KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlciB8
fCAhcmVuZGVyZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBpZiAocGFyZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZURp
ZmZ1c2VMaWdodGluZ1RhZykpIHsKLSAgICAgICAgICAgIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudCogZGlmZnVzZUxpZ2h0aW5nID0gc3RhdGljX2Nhc3Q8U1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50Kj4ocGFyZW50KTsKLSAgICAgICAgICAgIGRpZmZ1c2VMaWdodGluZy0+bGlnaHRFbGVt
ZW50QXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBhdHRyTmFtZSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0gZWxzZSBpZiAocGFyZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNwZWN1
bGFyTGlnaHRpbmdUYWcpKSB7Ci0gICAgICAgICAgICBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50KiBzcGVjdWxhckxpZ2h0aW5nID0gc3RhdGljX2Nhc3Q8U1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudCo+KHBhcmVudCk7Ci0gICAgICAgICAgICBzcGVjdWxhckxpZ2h0aW5nLT5saWdodEVs
ZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIGF0dHJOYW1lKTsKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaWYgKGlzPFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudD4oKnBhcmVudCkp
IHsKKyAgICAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwor
ICAgICAgICAgICAgZG93bmNhc3Q8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50PigqcGFyZW50
KS5saWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIGF0dHJOYW1lKTsKKyAgICAgICAg
fSBlbHNlIGlmIChpczxTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50PigqcGFyZW50KSkgewor
ICAgICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAg
ICAgICAgICBkb3duY2FzdDxTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50PigqcGFyZW50KS5s
aWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIGF0dHJOYW1lKTsKICAgICAgICAgfQor
CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAogdm9pZCBT
VkdGRUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFu
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCmluZGV4IDU2NDlhMDAzZDJm
MGQwZTZkMmQ1NGU1MTIwNzI0ZTU5MmQ3YWZhMjYuLjcwODQ1ZDBkMWMyNTQ3OTNiZjNlM2ZmNmNi
ZDQwZmQwNmI5ODdhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCkBA
IC00MCw3ICs0MCw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHBy
aXZhdGU6Ci0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAppbmRleCBjNDNlODRk
Mjk4MTUzZjg5YzM5NTBlZDFjZTBkMDU1NTk2OGE5ZDg5Li40ODUxMWYyNmVlZTQyYjAyNjI2ZWQw
MjYwNjU3MTc2YmUzNGQzYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
ZXJnZU5vZGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5v
ZGVFbGVtZW50LmNwcApAQCAtMjEsMTMgKzIxLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJBdHRyaWJ1dGUu
aCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJj
ZS5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTUwLDQ0ICs0NywyNSBAQCBSZWY8U1ZHRkVNZXJnZU5vZGVFbGVtZW50PiBTVkdGRU1lcmdlTm9k
ZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YQogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQog
Ci1ib29sIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hTZXQ8UXVhbGlmaWVkTmFtZT4+IHN1cHBvcnRlZEF0dHJpYnV0ZXM7Ci0gICAgaWYgKHN1cHBv
cnRlZEF0dHJpYnV0ZXMuZ2V0KCkuaXNFbXB0eSgpKQotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1
dGVzLmdldCgpLmFkZChTVkdOYW1lczo6aW5BdHRyKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkQXR0
cmlidXRlcy5nZXQoKS5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5h
bWUpOwotfQotCiB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQog
ICAgIGlmIChuYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKICAgICAgICAgc2V0SW4xQmFzZVZh
bHVlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0K
IAogdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLQogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwogICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KHRoaXMpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgU1ZHRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAppbmRleCBjYWUxYTU2NWIxNzc3YjJkYTdm
NmIxODAyZTIzZjAzNDdmODQ1NTg2Li4yZGE0ZTgxZjM4ZWNlYWQ4YjdhOWFhOWZkZTQ3MTBjZmYy
MDU0MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCkBA
IC0zMywxMCArMzMsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZFTWVyZ2VOb2RlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIGJvb2wgaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAg
QkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAppbmRleCA1
ZTUzOWZjYzZmZjJlOTE4YTMwMDliY2RhZGZkYzEwMGViYmI5YTIwLi5kYjllNTg4MGI1NDQ5YjBm
ZWRmZGJmOWI5Yzk0OTE5ZjUyYmQxYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TW9ycGhvbG9neUVsZW1lbnQuY3BwCkBAIC0yMCwxMiArMjAsMTAgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJTVkdGRU1vcnBob2xvZ3lFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJB
dHRyaWJ1dGUuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJTVkdGaWx0
ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJV
dGlsaXRpZXMuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC03NSwyNCArNzMsOCBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1l
bnQ6OnNldFJhZGl1cyhmbG9hdCB4LCBmbG9hdCB5KQogICAgIGludmFsaWRhdGUoKTsKIH0KIAot
Ym9vbCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxRdWFsaWZpZWROYW1lPj4gc3VwcG9ydGVkQXR0cmlidXRlczsKLSAgICBpZiAoc3VwcG9y
dGVkQXR0cmlidXRlcy5nZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmli
dXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmluQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJp
YnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpvcGVyYXRvckF0dHIpOwotICAgICAgICBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6cmFkaXVzQXR0cik7Ci0gICAgfQotICAg
IHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zPFNWR0F0dHJpYnV0ZUhh
c2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7Ci19Ci0KIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7
Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0cikgewogICAgICAgICBNb3JwaG9sb2d5T3BlcmF0
b3JUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxNb3JwaG9sb2d5T3BlcmF0
b3JUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4g
MCkKQEAgLTExNCw3ICs5Niw3IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
IH0KIAogYm9vbCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1
dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpA
QCAtMTM1LDI0ICsxMTcsMTkgQEAgYm9vbCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzZXRGaWx0
ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnMKIAogdm9pZCBTVkdG
RU1vcnBob2xvZ3lFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAKICAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6
cmFkaXVzQXR0cikgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0
cikgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAg
ICAgICAgaW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAogUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZp
bHRlckJ1aWxkZXIsIEZpbHRlciogZmlsdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1v
cnBob2xvZ3lFbGVtZW50LmgKaW5kZXggNjdlZTBkYWQ0NTk3NGFhZGM1ZDM1MjRiZmU2Y2RmYmUw
Njg2NDg4OS4uMmMxZjY5ZDE3MTNmZDU2YzIzZWMzMmMwMjIzYWU2ODdlODFmMGMzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCkBAIC02NSw3ICs2NSw2
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBj
b25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCAzZTU0OTJhYzk3Y2VmYjZmOGJlYzJk
N2IzNzQxYjQzOTZhN2UzMTRmLi42MzQ5MmZkN2Y4ZGZlZWQyMzk5ODRjZTFkZGNkMzczNmYxMWQw
Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtMjEs
MTEgKzIxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdGRU9mZnNldEVs
ZW1lbnQuaCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVj
dC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5o
IgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTUzLDI0ICs1MSw4IEBAIFJlZjxTVkdGRU9mZnNldEVsZW1lbnQ+IFNWR0ZFT2Zmc2V0
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU1ZHRkVPZmZzZXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9
CiAKLWJvb2wgU1ZHRkVPZmZzZXRFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxRdWFsaWZpZWROYW1lPj4gc3VwcG9ydGVkQXR0cmlidXRlczsKLSAgICBpZiAoc3VwcG9y
dGVkQXR0cmlidXRlcy5nZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmli
dXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmluQXR0cik7Ci0gICAgICAgIHN1cHBvcnRlZEF0dHJp
YnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpkeEF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRy
aWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6ZHlBdHRyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN1
cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuY29udGFpbnM8U1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0
b3I+KGF0dHJOYW1lKTsKLX0KLQogdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkgewotICAgICAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmIChuYW1lID09IFNWR05hbWVz
OjpkeEF0dHIpIHsKICAgICAgICAgc2V0RHhCYXNlVmFsdWUodmFsdWUudG9GbG9hdCgpKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtODYsMjQgKzY4LDE4IEBAIHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBv
cnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRo
aXMpOwotICAgIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjpkeEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikg
eworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAg
ICAgaW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAogUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVp
bGRlciwgRmlsdGVyKiBmaWx0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVPZmZzZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50
LmgKaW5kZXggYWU5YmVkZWY5YmYxODViZjE0MDYzZTdhZmUwMzM2ZTJlYTMzYWIzOS4uZDU4YWRi
MWJjM2IwMzQyY2FiNzY3M2VjYThkOTJmNzk0MDEzOTk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRU9mZnNldEVsZW1lbnQuaApAQCAtMzQsNyArMzQsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFNWR0ZFT2Zmc2V0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
IAotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmNwcAppbmRleCAyNmU3YmY1M2U1MjJlY2FkOTc4ZTY2M2U0MTEyZmE0NjgwZDY3
YmU4Li41MTgwNWYwMDU3MGRjNjA3YzU3MzA5YjllOGZjNzYyYTlhODg2MzgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBA
IC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJT
VkdDb2xvci5oIgpAQCAtMzAsNyArMjksNiBAQAogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIu
aCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5o
IgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTc5LDI2ICs3Nyw4IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudDo6a2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCkKICAgICByZXR1cm4g
c19pZGVudGlmaWVyOwogfQogCi1ib29sIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6Omlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFF1YWxpZmllZE5hbWU+PiBzdXBwb3J0ZWRB
dHRyaWJ1dGVzOwotICAgIGlmIChzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmlzRW1wdHkoKSkg
ewotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6aW5BdHRy
KTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnNwZWN1
bGFyQ29uc3RhbnRBdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQo
U1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmli
dXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIpOwotICAgICAgICBzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIp
OwotICAgIH0KLSAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5jb250YWluczxT
VkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwotfQotCiB2b2lkIFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShuYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKICAgICAgICAgc2V0
SW4xQmFzZVZhbHVlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI4LDcgKzEwOCw3IEBA
IHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogYm9vbCBTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0
KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTc5LDI3ICsxNTks
MTkgQEAgYm9vbCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QKIAogdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAKLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
OjpzcGVjdWxhckV4cG9uZW50QXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6
a2VybmVsVW5pdExlbmd0aEF0dHIpIHsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1
cmZhY2VTY2FsZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRB
dHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIpIHsKKyAgICAgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHByaW1pdGl2ZUF0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CiB9CiAKIHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6bGlnaHRFbGVtZW50
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBTVkdGRUxpZ2h0RWxlbWVudCogbGlnaHRFbGVtZW50LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCmluZGV4IGQzZTBhYjFjOTNjMGQxNTg1ZjZm
MWUxNWM2YTg3NTQyYmVkNDRiYzkuLmMwNjQ4Y2QxZGEyOWYwMWNiNjJlODZiMzQxZjc1Mzc4NzQw
MTI4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuaApAQCAtMzcsNyArMzcsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAgICAgCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0Rmls
dGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHAKaW5kZXggODk0ZWYyNDNmOWY4NDkzMzFkNGQ4YjllYTk0NDNlZWI5ZTNiNzkwYi4uNDE4OGUx
NjRlODc2Y2U4MzA4ZmY0NzdjNWZlNjExODYxMjY2MTBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVRpbGVFbGVtZW50LmNwcApAQCAtMjEsMTIgKzIxLDEwIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU1ZHRkVUaWxlRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQXR0cmlidXRl
LmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRl
ci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIK
LSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01MCw0NCArNDgsMjUgQEAgUmVmPFNWR0ZFVGlsZUVsZW1lbnQ+IFNWR0ZFVGlsZUVsZW1l
bnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2MKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTVkdGRVRpbGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAK
LWJvb2wgU1ZHRkVUaWxlRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8
UXVhbGlmaWVkTmFtZT4+IHN1cHBvcnRlZEF0dHJpYnV0ZXM7Ci0gICAgaWYgKHN1cHBvcnRlZEF0
dHJpYnV0ZXMuZ2V0KCkuaXNFbXB0eSgpKQotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdl
dCgpLmFkZChTVkdOYW1lczo6aW5BdHRyKTsKLSAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRl
cy5nZXQoKS5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwot
fQotCiB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1
cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKICAgICAg
ICAgc2V0SW4xQmFzZVZhbHVlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIFNWR0ZFVGls
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEluc3RhbmNlSW52
YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjppbkF0dHIpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9CiAKIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiBmaWx0ZXJCdWlsZGVyLCBGaWx0ZXIqIGZpbHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5oCmluZGV4IDgwNDZkZTE5NWQyNTcyMDM3MjE0NmNjZGU0NzA0Y2QwYzM0MDY3OTYu
LjU3YzVhNGIyMmNhZjhjYmQyNzU0N2MzMDQyZWZkMmY2MDYwZWUzMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaApAQCAtMzMsNyArMzMsNiBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFNWR0ZFVGlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAKLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5j
cHAKaW5kZXggZDNjYWEzYTBkOTk3YjBjMTJmMTYyODdmNjNhMjg1NWYwZDdiYmM1ZC4uNjZlYmMx
OWU3Njg4YWQwY2IwMDlmNGIxOWI4MjE0N2VhOGU0Y2Y5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcApAQCAtMjEsMTAgKzIxLDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgiCiAKLSNp
bmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNW
R1BhcnNlclV0aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTczLDI2ICs3MSw4IEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YmFzZUZyZXF1ZW5jeVlJZGVudGlmaWVyKCkKICAg
ICByZXR1cm4gc19pZGVudGlmaWVyOwogfQogCi1ib29sIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6
OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFF1YWxpZmllZE5hbWU+PiBzdXBwb3J0
ZWRBdHRyaWJ1dGVzOwotICAgIGlmIChzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmlzRW1wdHko
KSkgewotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6YmFz
ZUZyZXF1ZW5jeUF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChT
VkdOYW1lczo6bnVtT2N0YXZlc0F0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdl
dCgpLmFkZChTVkdOYW1lczo6c2VlZEF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVz
LmdldCgpLmFkZChTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyKTsKLSAgICAgICAgc3VwcG9ydGVk
QXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnR5cGVBdHRyKTsKLSAgICB9Ci0gICAgcmV0
dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuY29udGFpbnM8U1ZHQXR0cmlidXRlSGFzaFRy
YW5zbGF0b3I+KGF0dHJOYW1lKTsKLX0KLQogdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKLSAg
ICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAobmFtZSA9
PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKICAgICAgICAgVHVyYnVsZW5jZVR5cGUgcHJvcGVydHlW
YWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFR1cmJ1bGVuY2VUeXBlPjo6ZnJvbVN0cmluZyh2YWx1
ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKQEAgLTEyNiw3ICsxMDYsNyBAQCB2
b2lkIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0bwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIGJvb2wgU1ZHRkVUdXJidWxl
bmNlRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTE0OSwyMyArMTI5LDEzIEBAIGJv
b2wgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRl
ckVmZmVjdCogZWZmZWN0LCBjb25zCiAKIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7Ci0gICAgCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpiYXNl
RnJlcXVlbmN5QXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6bnVtT2N0YXZl
c0F0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNlZWRBdHRyCi0gICAgICAg
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIKLSAgICAgICAgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjpiYXNlRnJlcXVlbmN5QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6bnVtT2N0YXZl
c0F0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNlZWRBdHRyIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRy
KSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAg
ICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiB9
CiAKIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKiBmaWx0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAppbmRleCAzNTZiYjY5MzliYzAwN2JjYWRhNjA0MjNh
ZTM5NmQyYWEwYTkyZDllLi42ODY1YjlmNjhiNTQzNDJkZDBkZWNkZDJmODE5OTVjZDgyNzlkYmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKQEAgLTEw
MCw3ICsxMDAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBib29sIGlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVy
RWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAppbmRleCAzZmJhZGI0
Njk4NDRlYzlkZjRiZDAxOTE5YjEwYjQ5Y2FkYzdhMDVlLi5mZTY1Nzk4ZjA2MjM2NjQ2MGY1Yjg1
NTRlYTBkZjI4YWU5MmVhMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
Y3BwCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZH
RmlsdGVyRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIlJlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyQnVpbGRlci5oIgogI2luY2x1
ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgpAQCAtMTI0LDkgKzEy
Myw3IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBh
cnNlRXJyb3IgPSBOb0Vycm9yOwogCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1l
KSkKLSAgICAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAg
IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0cikgeworICAgIGlmIChu
YW1lID09IFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIpIHsKICAgICAgICAgU1ZHVW5pdFR5cGVz
OjpTVkdVbml0VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVW5pdFR5
cGVzOjpTVkdVbml0VHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVy
dHlWYWx1ZSA+IDApCiAgICAgICAgICAgICBzZXRGaWx0ZXJVbml0c0Jhc2VWYWx1ZShwcm9wZXJ0
eVZhbHVlKTsKQEAgLTE0OCwxMyArMTQ1LDEzIEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAg
ICAgICAgICAgICBzZXRGaWx0ZXJSZXNYQmFzZVZhbHVlKHgpOwogICAgICAgICAgICAgc2V0Rmls
dGVyUmVzWUJhc2VWYWx1ZSh5KTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoU1ZHVVJJUmVm
ZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkKLSAgICAgICAgICAgICB8fCBTVkdM
YW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKQotICAgICAgICAgICAgIHx8IFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkg
ewotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKICAg
ICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwor
CisgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR1VS
SVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9p
ZCBTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQpAQCAtMTY2LDE2ICsxNjMsMTMgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogCiAg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKLSAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
Ojp5QXR0cgotICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyCi0gICAg
ICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7CisgICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp4QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aGVpZ2h0QXR0cikgewogICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uQXR0cmlidXRl
U3R5bGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChSZW5kZXJPYmplY3Qq
IG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsK
KyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZW5k
ZXJlci0+c2V0TmVlZHNMYXlvdXQoKTsKIH0KIAogdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpjaGls
ZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5oCmluZGV4IGExMjMxYjcyOTVhMzk0YmUwOTUzMzI0ZTQwYmQ0ODZkZWI0
ZWE2YjMuLjU2NTZlMjNjZjY4Y2I1NTlmYjA4NDY3MGNhOGY0M2I5NTU5M2QxZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxpbmcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKaW5kZXggYjI3ZTc2NWU3
NTRhNWIzMjcyNDA2MmRiMTRmOGI4YTM2ZmU5MTZhZi4uMDcwZjdkMDFhYjk2YjliMTdiY2M4YWVj
YThjMDEzYjBjZTFiNTk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAgLTIyLDcgKzIyLDYg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpAQCAtNzksOSArNzgsNyBAQCB2b2lkIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbgogewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJv
cjsKIAotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpCi0gICAgICAgIFNWR0Vs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChuYW1lID09
IFNWR05hbWVzOjp4QXR0cikKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCiAgICAg
ICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRy
KQogICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVI
ZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CkBAIC05MSwxMCArODgsMTAgQEAgdm9pZCBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG4KICAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29u
c3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6cmVzdWx0QXR0cikKICAgICAgICAgc2V0UmVzdWx0QmFzZVZh
bHVlKHZhbHVlKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAg
ICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsK
KworICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogYm9v
bCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnNldEZpbHRlckVmZmVjdEF0
dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaAppbmRleCA2OWFkYmUyN2NlMTE2ZmFlZTQzZDcxYjAxMGUzMzMyODNlZjY5MzY0Li4zMWJl
NTE0YjQwZGU1OWU4MDEwY2E5NjFmM2NjYWM4MWE0NjM2YjgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
CkBAIC00NywyMiArNDcsMTIgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKIAotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAg
IGlubGluZSB2b2lkIGludmFsaWRhdGUoKQotICAgIHsKLSAgICAgICAgaWYgKFJlbmRlckVsZW1l
bnQqIHByaW1pdGl2ZVJlbmRlcmVyID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNW
R1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnBy
aW1pdGl2ZVJlbmRlcmVyKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgdm9pZCBwcmltaXRpdmVBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKLSAgICB7Ci0gICAg
ICAgIGlmIChSZW5kZXJFbGVtZW50KiBwcmltaXRpdmVSZW5kZXJlciA9IHJlbmRlcmVyKCkpCi0g
ICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSo+
KHByaW1pdGl2ZVJlbmRlcmVyKS0+cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUp
OwotICAgIH0KKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICB2b2lkIHByaW1pdGl2ZUF0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7CiAKIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtNzEsNiArNjEsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKQogICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQogICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX0xFTkdUSChZLCB5KQpAQCAtODIsNiArNzQsMTggQEAgcHJpdmF0ZToKIAogdm9pZCBpbnZh
bGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQqKTsKIAoraW5saW5lIHZvaWQg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppbnZhbGlkYXRlKCkKK3sKKyAg
ICBpZiAoYXV0byogcHJpbWl0aXZlUmVuZGVyZXIgPSByZW5kZXJlcigpKQorICAgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9u
KCpwcmltaXRpdmVSZW5kZXJlcik7Cit9CisKK2lubGluZSB2b2lkIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGUpCit7CisgICAgaWYgKGF1dG8qIHByaW1pdGl2ZVJlbmRlcmVy
ID0gcmVuZGVyZXIoKSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmUqPihwcmltaXRpdmVSZW5kZXJlciktPnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5n
ZWQoYXR0cmlidXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKaW5kZXggZmNjYjNh
MjJjZDlhMjRiZjUzNDViYmUxZjhlM2Y5MjMxNGYzNmNjNi4uNjE5MDA1ZTQ4NGEwZDI5ZGNlMzA1
MTlkYjlhMWUxNjFmODU3NTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
dFRvVmlld0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5j
cHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKIAogI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZHRG9j
dW1lbnRFeHRlbnNpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQu
Y3BwCmluZGV4IDRlMmY1MjkxMDgyMDFkMTY2ZTQ3YmM1YzIzODY1NTc5NzBiNTQyOTYuLjEwZDJh
Njg0ODMyODJlOTdiMmRkNmRlOTU0YjI5YzM5ZjA3ZDhkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCkBAIC0yNCw3ICsyNCw2IEBACiAjaWYgRU5BQkxFKFNW
R19GT05UUykKICNpbmNsdWRlICJTVkdGb250RmFjZUVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkF0
dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKICNpbmNsdWRlICJD
U1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuY3BwCmluZGV4IGIyYjUwNTdhM2ZiMTMxOTRk
ZjY1MGQ0NzcxMTEwM2RiMDVjYTA1ZDQuLjQyMDYwZTEyZWE4ODZlMGQ5OWExM2M5ZWVhMWIzMGI2
N2I2M2E3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQu
Y3BwCkBAIC0yMyw3ICsyMyw2IEBACiAjaWYgRU5BQkxFKFNWR19GT05UUykKICNpbmNsdWRlICJT
VkdGb250RmFjZVVyaUVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1
ZGUgIkNTU0ZvbnRGYWNlU3JjVmFsdWUuaCIKICNpbmNsdWRlICJDYWNoZWRGb250LmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDI3ODVlYTdhNTI3NGE1NTE4NTcyZWE3NTVm
ZGMxODQ1ODNhMmM5Y2MuLjYyNDZiMjgxN2FjZjYyMDQ1MmIwOWU2N2EwODdkYjQ3MDg2MDFjMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcApA
QCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oIgog
I2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCkBAIC04Niw5ICs4NSw3IEBAIHZvaWQgU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0CiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vy
cm9yOwogCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkKLSAgICAgICAgU1ZH
R3JhcGhpY3NFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Ci0gICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhB
dHRyKQogICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjp5QXR0cikKICAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwpAQCAtOTYsMTIgKzkzLDExIEBA
IHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0CiAgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xl
bmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAg
ICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQogICAgICAgICBzZXRIZWln
aHRCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKLSAgICBlbHNlIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKQotICAgICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKSB7Ci0gICAgfSBlbHNlCi0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9y
KHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKKworICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKaW5k
ZXggMTk0NGYwYWY4MWY1MDIyOGYzZmM2OTg1OGY5ZWE3YzQ3MjU5NzAwMS4uNWIwZjJlZTZiMzM1
NmU4OTI1MmJiMTY3NDUwNzY4MWJhNjEzYzE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAgcHJpdmF0ZToKICAgICBT
VkdGb3JlaWduT2JqZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZH
VGVzdHM6OmlzVmFsaWQoKTsgfQotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKaW5kZXggYTIxZjkyODJjNjE0YTZm
Yjc5YTRlYmY3MGVkYTllMmFhZWEzZTNhYS4uMDNhZThmMzQwZTQ1YjA3MzBkNzU1NzY5NWJlYzBl
YWU0OWNhY2JmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCkBAIC02NiwxNyArNjYs
OCBAQCBib29sIFNWR0dFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIAogdm9pZCBTVkdHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7Ci0gICAgICAgIFNWR0dyYXBoaWNz
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKFNWR0xhbmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CisgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VB
dHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIFNWR0dFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0Vs
ZW1lbnQuaAppbmRleCAzNWNlMTBhZjU1MmQzMzk2NDk2MDE0NTk3NTY3ZmIyMjA2OTExZGUyLi44
MWM4ODM4NzE0YzYyYjBiODY0YmE3MDczNjMxMzU2N2Y0ZGU3NTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R0VsZW1lbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29s
IGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9
CiAKLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
KyAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAKaW5kZXggMWE4MzRjODk3YWZlM2IzMmVlMGRkMzhl
MDdjODViNDJlM2FiZDgyMC4uNzg0OGNhYjk5ODg2MjQ2MWY1NGFmYmYwYjU4ZDBhNzZlYWI4Njkw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAKQEAgLTI0LDcgKzI0LDYg
QEAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogI2luY2x1ZGUgIlNWR0dseXBoRWxlbWVudC5oIgog
Ci0jaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiU1ZHRm9udERhdGEuaCIKICNpbmNs
dWRlICJTVkdGb250RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZvbnRGYWNlRWxlbWVudC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmNwcAppbmRleCBhYzlmODU1ZTg5
ODFkOTVmYjYxNDcwYzAxMjRkYzAxNDkxZTMxMjZhLi41ODE0MjEwMDFhODc2OTlhZWM3OWRhM2Nl
OTFjZWE5NWQ4NzNlNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhS
ZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50
LmNwcApAQCAtNTksMTAgKzU5LDcgQEAgYm9vbCBTVkdHbHlwaFJlZkVsZW1lbnQ6Omhhc1ZhbGlk
R2x5cGhFbGVtZW50KFN0cmluZyYgZ2x5cGhOYW1lKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBX
ZSBvbmx5IHN1cHBvcnQgeGxpbms6aHJlZiBzbyBmYXIuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0Nzg3Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IHRh
cmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGdldEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0
ciksIGRvY3VtZW50KCksICZnbHlwaE5hbWUpOwotICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVu
dC0+aGFzVGFnTmFtZShTVkdOYW1lczo6Z2x5cGhUYWcpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzPFNWR0dseXBoRWxlbWVudD4odGFyZ2V0
RWxlbWVudEZyb21JUklTdHJpbmcoZ2V0QXR0cmlidXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKSwg
ZG9jdW1lbnQoKSwgJmdseXBoTmFtZSkpOwogfQogCiB2b2lkIFNWR0dseXBoUmVmRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKQEAgLTgxLDggKzc4LDcgQEAgdm9pZCBTVkdHbHlwaFJlZkVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1MKICAg
ICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpkeUF0dHIpCiAgICAgICAgIHBhcnNlTnVtYmVy
KHN0YXJ0UHRyLCBlbmRQdHIsIG1fZHkpOwogICAgIGVsc2UgewotICAgICAgICBpZiAoU1ZHVVJJ
UmVmZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgIFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OwogICAgICAgICBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCAwMjcw
MmQ1NzEyYmE5OTRiMmNmNGZmZjkwNzQ4OGIwOTM4Njk3MzdkLi5iMWMyNTA2NzZiMGQ0NDUyMTAz
NWUxMDkwNTc2NDk1YzFkNGY0YjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRF
bGVtZW50LmNwcApAQCAtNzYsMTMgKzc2LDggQEAgYm9vbCBTVkdHcmFkaWVudEVsZW1lbnQ6Omlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogCiB2b2lk
IFNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVk
QXR0cmlidXRlKG5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjpncmFkaWVudFVuaXRzQXR0cikgewotICAgICAgICBTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CisgICAgICAgIGF1dG8gcHJvcGVydHlWYWx1
ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3Ry
aW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAg
c2V0R3JhZGllbnRVbml0c0Jhc2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtOTcsMTggKzkyLDE1IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTCiAgICAgfQogCiAg
ICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIpIHsKLSAgICAgICAgU1ZH
U3ByZWFkTWV0aG9kVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3By
ZWFkTWV0aG9kVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOworICAgICAgICBhdXRvIHByb3BlcnR5
VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdTcHJlYWRNZXRob2RUeXBlPjo6ZnJvbVN0cmlu
Zyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKICAgICAgICAgICAgIHNl
dFNwcmVhZE1ldGhvZEJhc2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKTsKKyAgICBTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKTsKKyAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5oCmluZGV4IDM2NTg5YmI1MjM2ZGIxZGI3OWQ3NDhjYTg2ZDQyYTg4
ODVlNGNmNjYuLmJhYTBjNjhmODM4OWE0YWI5YjdmMmU3NmYxNjZiNTFmZjg1M2QzMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIFNWR0dyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBl
OTllNDM2NmUyNDg4YjIyYmU0NmQ3MTllYzVjZDlkYTkyMzM1MjIzLi43OTQ3YTFjZDVkMjhlMDAw
ZGIxOGJmY2EyNGQ5NjliYmQxYzAzNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmNwcApAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgIlNWR0dyYXBoaWNzRWxl
bWVudC5oIgogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiQXR0cmli
dXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUGF0aC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jl
c291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTExMCwxMSArMTA5LDYgQEAgYm9v
bCBTVkdHcmFwaGljc0VsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogCiB2b2lkIFNWR0dyYXBoaWNzRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
IHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7Ci0gICAgICAgIFNWR0Vs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSB7CiAgICAgICAg
IFNWR1RyYW5zZm9ybUxpc3QgbmV3TGlzdDsKICAgICAgICAgbmV3TGlzdC5wYXJzZSh2YWx1ZSk7
CkBAIC0xMjMsMTAgKzExNyw4IEBAIHZvaWQgU1ZHR3JhcGhpY3NFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
U1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR1Rlc3RzOjpw
YXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHR3JhcGhpY3NFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCmluZGV4IDExMGFkMTRiNThjZTM4Njgz
NGNiYzg5YjQ2OTgxOThmYmY0MTRlZWQuLmYyZDNkMmY2MzQwYTBkNjgwOWEyZTdlZGMxZGVkMDNl
ZjhhNGQ0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKQEAgLTU2
LDggKzU2LDYgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFNWR0dyYXBoaWNzRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIGJvb2wgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBFbGVtZW50OjpzdXBwb3J0c0ZvY3Vz
KCkgfHwgaGFzRm9jdXNFdmVudExpc3RlbmVycygpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOwpAQCAtNzAsNiArNjgsOCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBpc1NWR0dyYXBoaWNzRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAorICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKwogICAgIC8vIFNWR1Rlc3RzCiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcygpIG92ZXJyaWRlIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyh0aGlzKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucygpIG92ZXJyaWRlIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKHRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IDgxZTVhNTAzNmU5MjdhMjhlZjgxZDI1MDhiODM2Y2M5NTZmMDY3NDEuLmIzNjY4MTIwZGM5
NGM0YTAyOTA2MGYwMmRlYTExNDkzYTgxOTNhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuY3BwCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU1ZHSW1hZ2VFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNs
dWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZS5o
IgogI2luY2x1ZGUgIlJlbmRlclNWR0ltYWdlLmgiCkBAIC04OCwyOSArODcsMjkgQEAgYm9vbCBT
VkdJbWFnZUVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogCiB2b2lkIFNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKKyAgICBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKKyAgICAgICAg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvOworICAgICAgICBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvLnBhcnNlKHZhbHVlKTsKKyAgICAgICAgc2V0UHJlc2VydmVBc3BlY3RS
YXRpb0Jhc2VWYWx1ZShwcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAotICAgIGlm
ICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpCi0gICAgICAgIFNWR0dyYXBoaWNzRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OnhBdHRyKQorICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKICAgICAgICAg
c2V0WEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCiAg
ICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKLSAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpw
cmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikgewotICAgICAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
IHByZXNlcnZlQXNwZWN0UmF0aW87Ci0gICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW8ucGFyc2Uo
dmFsdWUpOwotICAgICAgICBzZXRQcmVzZXJ2ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKHByZXNlcnZl
QXNwZWN0UmF0aW8pOwotICAgIH0gZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRy
KQorICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKICAgICAgICAgc2V0
V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1
ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKICAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNW
R0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBG
b3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKLSAgICBlbHNlIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKQotICAgICAgICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKQotICAgICAgICAgICAgIHx8
IFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKSB7Ci0gICAgfSBl
bHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAgcmVwb3J0QXR0cmlidXRl
UGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKKworICAgIFNWR0dyYXBoaWNz
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICBTVkdVUklS
ZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdJbWFn
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXggNDU0NDI4NDAzODJmOTM0
ZDE2YTY3N2ZiY2IyZGIwYTVlNjc5ZjFlZC4uOWVhMTVhNmYwYTkyODk2MmVmYjMyNDgwOTg3OGVh
NTA3MDQ4MDkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaApAQCAtNDIsNyAr
NDIsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCi0gICAgYm9vbCBpc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgc3RhdGljIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2Uu
Y3BwCmluZGV4IDBjNzk0NzgzODAzZjcyNmY4NzljY2IyYzY4ZjYwZGFmZGZlZjM0ZGEuLjQ4YmUw
ZGNjMGIwODIyZmQ2MmRjYWQyNTU3NWNhNzE5YmUzMTk0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
YW5nU3BhY2UuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAKLSNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRl
ICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CkBAIC00OCwxOCArNDcsMTIgQEAgdm9pZCBTVkdMYW5nU3BhY2U6OnNldFht
bHNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgeG1sU3BhY2UpCiAgICAgbV9zcGFjZSA9IHhtbFNw
YWNlOwogfQogCi1ib29sIFNWR0xhbmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgU1ZHTGFuZ1Nw
YWNlOjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmIChuYW1lLm1hdGNoZXMoWE1MTmFtZXM6OmxhbmdB
dHRyKSkgeworICAgIGlmIChuYW1lLm1hdGNoZXMoWE1MTmFtZXM6OmxhbmdBdHRyKSkKICAgICAg
ICAgc2V0WG1sbGFuZyh2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBp
ZiAobmFtZS5tYXRjaGVzKFhNTE5hbWVzOjpzcGFjZUF0dHIpKSB7CisgICAgaWYgKG5hbWUubWF0
Y2hlcyhYTUxOYW1lczo6c3BhY2VBdHRyKSkKICAgICAgICAgc2V0WG1sc3BhY2UodmFsdWUpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJv
b2wgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5oCmluZGV4IGJlMmNiNGJiNjMzZjYwMjA5
ZGM0NTgzNjJiMWE3OWM0M2UyYTRkYWUuLjc1ODRiM2Y1NzYwMDgxNjNlZmJjMWE5YmUxZWMzMjUz
ZTY0YzkxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmgKQEAgLTI2LDggKzI2LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdHRyaWJ1dGU7Ci0KIGNsYXNzIFNWR0xh
bmdTcGFjZSB7CiBwdWJsaWM6CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB4bWxsYW5nKCkgY29u
c3QgeyByZXR1cm4gbV9sYW5nOyB9CkBAIC0zNiw5ICszNCwxMCBAQCBwdWJsaWM6CiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiB4bWxzcGFjZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0WG1sc3BhY2Uo
Y29uc3QgQXRvbWljU3RyaW5nJiB4bWxTcGFjZSk7CiAKLSAgICBib29sIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICBib29sIGlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZvaWQgYWRkU3VwcG9y
dGVkQXR0cmlidXRlcyhIYXNoU2V0PFF1YWxpZmllZE5hbWU+Jik7CisgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisKKyAg
ICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAg
ICBzdGF0aWMgdm9pZCBhZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hTZXQ8UXVhbGlmaWVkTmFt
ZT4mKTsKIAogcHJpdmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV9sYW5nOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lRWxlbWVudC5jcHAKaW5kZXggZGRkMGY1Zjc5MjI0MzA0NjE2M2ZhMjY3OTllM2M2
ODI4MDY2YmM4Ni4uNWQ0MzFmODUzN2FmNzRhNWJkNzUxMGFjM2RhODg5ZDY0ODUzNGEzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHTGluZUVsZW1lbnQuaCIKIAotI2luY2x1ZGUg
IkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJSZW5kZXJT
VkdQYXRoLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKQEAgLTgxLDkgKzgwLDcg
QEAgdm9pZCBTVkdMaW5lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW4KIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VF
cnJvciA9IE5vRXJyb3I7CiAKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKQot
ICAgICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
LSAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp4MUF0dHIpCisgICAgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OngxQXR0cikKICAgICAgICAgc2V0WDFCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25z
dHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnkxQXR0cikKICAgICAgICAgc2V0WTFCYXNlVmFsdWUoU1ZHTGVu
Z3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKQEAg
LTkxLDEyICs4OCwxMSBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbgogICAgICAgICBzZXRYMkJh
c2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eTJBdHRyKQogICAgICAg
ICBzZXRZMkJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2
YWx1ZSwgcGFyc2VFcnJvcikpOwotICAgIGVsc2UgaWYgKFNWR0xhbmdTcGFjZTo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpCi0gICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKSB7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vy
cm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKKworICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdMaW5lRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKaW5kZXggMTA4YjUxZjYxMjEwYTA3YzBjOGVj
ZGE1NzAxZmYwMTc1Y2ZkM2Q5Mi4uMTRmNjAwMDc3ZGVlZGE2ODhmNzMxZmYwNWQ4MDIzZTAyYjk4
YjJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAg
cHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAotICAgIGJvb2wgaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHN0YXRpYyBib29sIGlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LmNwcAppbmRleCA0ZjU1YTkyYWQ0ODkxNTk2N2NhM2E3ZTEzMmFmYWRl
NGQ2YzEwNWQ4Li4yNjNjMWNjZjkyMWMzNGRmY2VkNWEwY2M5M2EyNTljMGFhNjEyNWRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcApAQCAt
MjQsNyArMjQsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiTGluZWFyR3JhZGll
bnRBdHRyaWJ1dGVzLmgiCkBAIC04NSw5ICs4NCw3IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
CiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCi0gICAgaWYg
KCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkKLSAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6eDFBdHRyKQorICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4MUF0dHIpCiAgICAgICAg
IHNldFgxQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5MUF0dHIp
CiAgICAgICAgIHNldFkxQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVI
ZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CkBAIC05NSwxMCArOTIsMTAgQEAgdm9pZCBTVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEEKICAgICAgICAgc2V0WDJCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnkyQXR0cikKICAgICAgICAgc2V0WTJCYXNlVmFsdWUoU1ZHTGVuZ3Ro
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKLSAgICBl
bHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAgcmVwb3J0QXR0cmlidXRl
UGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKKworICAgIFNWR0dyYWRpZW50
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuaAppbmRleCBlZTNiNmMzNjI3OTc0N2Q5ZDVmYWY1ZGFlMGY0NjhkOTI4NGUyODJhLi5hN2E0
Njk3NjcwNWE1NTk5NDQ2ZjM5ZjkxZjU3YWFiMWFiZDMzMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7CisgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuY3BwCmluZGV4IGNlNjgz
OTM1MDIwNTc2YjU5NWFkMGExMmQ3YWYwYTkyOGU0MTU4MWIuLjIwNjA4YmY4MjcyNmQwOTU1Njkw
MmNkMjMyMTAzNDE3YzVmN2VjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
UGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQu
Y3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJT
VkdQYXRoRWxlbWVudC5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKLSNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDgsNDkgKzEw
NywyMiBAQCB2b2lkIFNWR01QYXRoRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYg
cm9vdFBhcmVudCkKICAgICAgICAgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKIH0KIAotYm9v
bCBTVkdNUGF0aEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFF1YWxp
ZmllZE5hbWU+PiBzdXBwb3J0ZWRBdHRyaWJ1dGVzOwotICAgIGlmIChzdXBwb3J0ZWRBdHRyaWJ1
dGVzLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBTVkdVUklSZWZlcmVuY2U6OmFkZFN1cHBv
cnRlZEF0dHJpYnV0ZXMoc3VwcG9ydGVkQXR0cmlidXRlcyk7Ci0gICAgICAgIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQ6OmFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoc3VwcG9ydGVkQXR0cmli
dXRlcyk7Ci0gICAgfQotICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRh
aW5zPFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7Ci19Ci0KIHZvaWQgU1ZH
TVBhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUobmFtZSkpIHsKLSAgICAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgU1ZHRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR1VSSVJlZmVyZW5jZTo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdNUGF0aEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
U1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
LQogICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAg
ICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBT
VkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAogU1ZHUGF0aEVs
ZW1lbnQqIFNWR01QYXRoRWxlbWVudDo6cGF0aEVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01Q
YXRoRWxlbWVudC5oCmluZGV4IDI5MTEyZjM3ZjE4NGUwYzkwNmViZTk0ODU0ODAzZTU0M2QzMWJi
YTIuLjExYjNmMzQ2NGRhZjg5ODZjNzlmZWEzOGFjYzlhZjg2MDk2Mzc0NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgKQEAgLTMxLDkgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAogY2xhc3MgU1ZHUGF0aEVsZW1lbnQ7CiAKLWNsYXNzIFNWR01QYXRoRWxlbWVu
dCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIHsKK2NsYXNzIFNWR01QYXRoRWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBTVkdFbGVtZW50LCBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLCBw
dWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxTVkdNUGF0aEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKIApAQCAtNDMsOSArNDEsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRhcmdldFBhdGhD
aGFuZ2VkKCk7CiAKLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTm90aWZ5U3VidHJl
ZUluc2VydGlvbnMoQ29udGFpbmVyTm9kZSopIG92ZXJyaWRlOwotCiBwcml2YXRlOgogICAgIFNW
R01QYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIApAQCAtNTQs
MTEgKzQ5LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKIAotICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyhDb250YWluZXJOb2Rl
Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIG5vdGlmeVBhcmVudE9mUGF0aENoYW5nZShDb250YWlu
ZXJOb2RlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAppbmRleCAw
MGY0M2RjNjJiNGJkMzM4YzhjOWEyNDNiNzRkYjEyMTE2NmY0MWQzLi5hZmQ0MDQ4OWJkMTRlM2E2
YzM0NDdmYmI0NjBmMDY3OWIwMmIzYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiU1ZHTWFya2VyRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3gu
aCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtMTI1LDE1ICsxMjQsMjYgQEAgYm9vbCBTVkdN
YXJrZXJFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIAogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIFNW
R1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKLQotICAgIGlmICghaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUobmFtZSkpCi0gICAgICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjptYXJrZXJVbml0c0F0
dHIpIHsKLSAgICAgICAgU1ZHTWFya2VyVW5pdHNUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9w
ZXJ0eVRyYWl0czxTVkdNYXJrZXJVbml0c1R5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKKyAgICBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyKSB7CisgICAgICAgIGF1dG8gcHJv
cGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlclVuaXRzVHlwZT46OmZyb21T
dHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAg
ICBzZXRNYXJrZXJVbml0c0Jhc2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKLSAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnJlZlhBdHRyKQorICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om9yaWVudEF0dHIpIHsKKyAgICAgICAgU1ZHQW5nbGUg
YW5nbGU7CisgICAgICAgIGF1dG8gb3JpZW50VHlwZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01h
cmtlck9yaWVudFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlLCBhbmdsZSk7CisgICAgICAgIGlmIChv
cmllbnRUeXBlID4gMCkKKyAgICAgICAgICAgIHNldE9yaWVudFR5cGVCYXNlVmFsdWUob3JpZW50
VHlwZSk7CisgICAgICAgIGlmIChvcmllbnRUeXBlID09IFNWR01hcmtlck9yaWVudEFuZ2xlKQor
ICAgICAgICAgICAgc2V0T3JpZW50QW5nbGVCYXNlVmFsdWUoYW5nbGUpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwor
CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJlZlhBdHRyKQogICAgICAgICBzZXRSZWZYQmFz
ZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpyZWZZQXR0cikKICAgICAg
ICAgc2V0UmVmWUJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwpAQCAtMTQxLDIwICsxNTEsMTIgQEAgdm9pZCBTVkdNYXJr
ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHIKICAgICAgICAgc2V0TWFya2VyV2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIpCiAgICAgICAgIHNldE1hcmtl
ckhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2
YWx1ZSwgcGFyc2VFcnJvcikpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om9yaWVu
dEF0dHIpIHsKLSAgICAgICAgU1ZHQW5nbGUgYW5nbGU7Ci0gICAgICAgIFNWR01hcmtlck9yaWVu
dFR5cGUgb3JpZW50VHlwZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR01hcmtlck9yaWVudFR5cGU+
Ojpmcm9tU3RyaW5nKHZhbHVlLCBhbmdsZSk7Ci0gICAgICAgIGlmIChvcmllbnRUeXBlID4gMCkK
LSAgICAgICAgICAgIHNldE9yaWVudFR5cGVCYXNlVmFsdWUob3JpZW50VHlwZSk7Ci0gICAgICAg
IGlmIChvcmllbnRUeXBlID09IFNWR01hcmtlck9yaWVudEFuZ2xlKQotICAgICAgICAgICAgc2V0
T3JpZW50QW5nbGVCYXNlVmFsdWUoYW5nbGUpOwotICAgIH0gZWxzZSBpZiAoU1ZHTGFuZ1NwYWNl
OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkKLSAgICAgICAgICAgICB8fCBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkKLSAgICAgICAg
ICAgICB8fCBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlQXR0cmlidXRlKHRoaXMsIG5hbWUsIHZhbHVl
KSkgewotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAogICAgIHJl
cG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CisKKyAg
ICBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CisgICAgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNW
R0ZpdFRvVmlld0JveDo6cGFyc2VBdHRyaWJ1dGUodGhpcywgbmFtZSwgdmFsdWUpOwogfQogCiB2
b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2Vy
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAppbmRleCBh
M2IyNGRjMTI2MTg3OGUxNWViYWRiNmRmM2ZlMDBkMDZiMmY4MzkwLi5iNGQzMDYxNTU4OGEzNDU5
N2NmY2I4ZWRmMWJlMzI2MzdhMTM3MDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5l
ZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCmluZGV4IDhlZmNlZmI0MzlmOWIzMzZi
OWE3YmY1NjkwMjNhMmVhYmViY2E0NjAuLjZjNTA4NTFjMzZmNDgxZTQwZWY2YmVjOGFhNGQ2OTJi
OTc1MDc2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcApAQCAtMjUsNyAr
MjUsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR01hc2tFbGVtZW50Lmgi
CiAKLSNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3VwcG9y
dC5oIgpAQCAtOTUsMjEgKzk0LDIyIEBAIGJvb2wgU1ZHTWFza0VsZW1lbnQ6OmlzU3VwcG9ydGVk
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogCiB2b2lkIFNWR01hc2tF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0g
Tm9FcnJvcjsKLQotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpCi0gICAgICAg
IFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChu
YW1lID09IFNWR05hbWVzOjptYXNrVW5pdHNBdHRyKSB7Ci0gICAgICAgIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKKyAgICBpZiAobmFtZSA9PSBTVkdO
YW1lczo6bWFza1VuaXRzQXR0cikgeworICAgICAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBTVkdQ
cm9wZXJ0eVRyYWl0czxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1
ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKICAgICAgICAgICAgIHNldE1hc2tV
bml0c0Jhc2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gZWxz
ZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIpIHsKLSAgICAgICAg
U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFp
dHM8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT46OmZyb21TdHJpbmcodmFsdWUpOworICAgIH0K
KyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIpIHsKKyAgICAg
ICAgYXV0byBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1
ZSA+IDApCiAgICAgICAgICAgICBzZXRNYXNrQ29udGVudFVuaXRzQmFzZVZhbHVlKHByb3BlcnR5
VmFsdWUpOwogICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
Ojp4QXR0cikKKyAgICB9CisKKyAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJy
b3I7CisKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCiAgICAgICAgIHNldFhCYXNl
VmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VF
cnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQogICAgICAgICBz
ZXRZQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CkBAIC0xMTcsMTMgKzExNywxMiBAQCB2b2lkIFNWR01hc2tFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbgogICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5n
dGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6aGVpZ2h0QXR0cikKICAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0
aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7Ci0gICAg
ZWxzZSBpZiAoU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKQotICAgICAgICAg
ICAgIHx8IFNWR0xhbmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpCi0gICAgICAg
ICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUobmFt
ZSwgdmFsdWUpKSB7Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
CiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVl
KTsKKworICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICBT
VkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBT
VkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKaW5kZXggMDdmNDhmNTNhNTQ0
NDEzYjcwYjFhN2EyN2IxZDI5NDBlZGE5OThjMy4uNGU1NjhlMDFhNGZiNGY0YTQ2NTU4NDk1NzU2
YjNhOWRlYWQ1MTQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgbmVl
ZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKKyAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5kZXggM2M4NzI1NzU5Y2Y3ZDcyMTIx
ODFjZGJhYjQyNjk0ZTBiNGNjNzkwMC4uMWQ1YzgzMTJmNDhmMjY3MDkwMzA5OGEwZjFjNzA4YTY4
MzIwNTkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCkBAIC0yMSw3ICsy
MSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIK
IAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1BhdGguaCIKICNp
bmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR01QYXRoRWxlbWVudC5o
IgpAQCAtMjI0LDExICsyMjMsNiBAQCBib29sIFNWR1BhdGhFbGVtZW50Ojppc1N1cHBvcnRlZEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogdm9pZCBTVkdQYXRoRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUp
KSB7Ci0gICAgICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OmRBdHRyKSB7CiAgICAgICAgIGlmICghYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmco
dmFsdWUsIG1fcGF0aEJ5dGVTdHJlYW0uZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpKQogICAgICAg
ICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0RXJyb3IoIlByb2Js
ZW0gcGFyc2luZyBkPVwiIiArIHZhbHVlICsgIlwiIik7CkBAIC0yNDIsMTIgKzIzNiw4IEBAIHZv
aWQgU1ZHUGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
U1ZHTGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
KyAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2
YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5o
CmluZGV4IGFjZTZjNTc0ZTY1YTNjMjVkMDU2ZGVmNTQ1YzA0MzliMTU4N2VkMzkuLmMzNzFlNTU5
NmJjNTE4MTJjYTRmN2FlOTFhNGI5OTJkY2FiZDUyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
RWxlbWVudC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9v
bCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsg
fQogCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7
CisgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAppbmRleCBjNmIxNjc2YTdi
M2MwNTFkMDBmY2VlMGRkYTY3NWQwNjg1NzljNzk3Li5mYjE4ZjhhYjI5MDY3YTM3ZDZmMGU0ZTVk
MDlhYzc1MTZmZDY3ZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHAKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJTVkdQYXR0ZXJuRWxlbWVudC5oIgogCiAj
aW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTExMSwyNyArMTEwLDI5IEBAIGJvb2wgU1ZHUGF0dGVy
bkVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogCiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIFNWR1Bh
cnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKLQotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUobmFtZSkpCi0gICAgICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKLSAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRy
KSB7Ci0gICAgICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNW
R1Byb3BlcnR5VHJhaXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZh
bHVlKTsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0cikgeworICAg
ICAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0VHlwZXM6
OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZh
bHVlID4gMCkKICAgICAgICAgICAgIHNldFBhdHRlcm5Vbml0c0Jhc2VWYWx1ZShwcm9wZXJ0eVZh
bHVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6
cGF0dGVybkNvbnRlbnRVbml0c0F0dHIpIHsKLSAgICAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0
VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZT46OmZyb21TdHJpbmcodmFsdWUpOworICAgIH0KKyAgICBpZiAobmFtZSA9PSBTVkdO
YW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0dHIpIHsKKyAgICAgICAgYXV0byBwcm9wZXJ0eVZh
bHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT46OmZyb21T
dHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAg
ICBzZXRQYXR0ZXJuQ29udGVudFVuaXRzQmFzZVZhbHVlKHByb3BlcnR5VmFsdWUpOwogICAgICAg
ICByZXR1cm47Ci0gICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNm
b3JtQXR0cikgeworICAgIH0KKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0dGVyblRyYW5z
Zm9ybUF0dHIpIHsKICAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdCBuZXdMaXN0OwogICAgICAgICBu
ZXdMaXN0LnBhcnNlKHZhbHVlKTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWRQYXR0ZXJuVHJhbnNm
b3JtTGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0UGF0dGVyblRyYW5z
Zm9ybUJhc2VWYWx1ZShuZXdMaXN0KTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCisgICAgfQorCisgICAgU1ZHUGFyc2luZ0Vycm9yIHBh
cnNlRXJyb3IgPSBOb0Vycm9yOworCisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQog
ICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0
aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5
QXR0cikKICAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhN
b2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwpAQCAtMTM5LDE1ICsxNDAsMTQgQEAgdm9p
ZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3QKICAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3Ro
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVn
YXRpdmVMZW5ndGhzKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0
cikKICAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0
aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsK
LSAgICBlbHNlIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVl
KQotICAgICAgICAgICAgIHx8IFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkK
LSAgICAgICAgICAgICB8fCBTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVl
KQotICAgICAgICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0
cmlidXRlKG5hbWUsIHZhbHVlKQotICAgICAgICAgICAgIHx8IFNWR0ZpdFRvVmlld0JveDo6cGFy
c2VBdHRyaWJ1dGUodGhpcywgbmFtZSwgdmFsdWUpKSB7Ci0gICAgfSBlbHNlCi0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBh
cnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKKworICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKTsKKyAgICBTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKKyAgICBTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAg
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVl
KTsKKyAgICBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlQXR0cmlidXRlKHRoaXMsIG5hbWUsIHZhbHVl
KTsKIH0KIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmgKaW5kZXggMmY0YjBhYjVkN2Y0ZmU1Y2UwYzJmZjhjMzQ5ODk0MGY5OThjYWQzYy4uYzZl
Njg0ZDNmOGIwMmY2OGRhNGE3NTk5M2EzNmY2NDhhZDM3YjRlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1Zh
bGlkKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBib29sIGlzU3VwcG9ydGVk
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICBzdGF0aWMgYm9vbCBpc1N1cHBv
cnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BvbHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVu
dC5jcHAKaW5kZXggYWZkMmQzYjQzMjJhODk2NjFmN2U1YzgyOTUyYmNiMDVjYmE4MzcyZS4uNDM2
ZDczN2VlZTU3NTI4MDBkNWI2ZThkYWE5NmQ4MTJjOTI3MmFhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9seUVsZW1lbnQuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU1ZHUG9seUVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUg
IlJlbmRlclNWR1BhdGguaCIKQEAgLTI5LDcgKzI4LDYgQEAKICNpbmNsdWRlICJTVkdBbmltYXRl
ZFBvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2Vy
VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNjMsMjQgKzYxLDggQEAgU1ZHUG9seUVsZW1lbnQ6OlNWR1BvbHlF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkK
ICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1BvbHlFbGVtZW50KCk7ICAgIAog
fQogCi1ib29sIFNWR1BvbHlFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxRdWFsaWZpZWROYW1lPj4gc3VwcG9ydGVkQXR0cmlidXRlczsKLSAgICBpZiAoc3VwcG9ydGVk
QXR0cmlidXRlcy5nZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgU1ZHTGFuZ1NwYWNlOjphZGRT
dXBwb3J0ZWRBdHRyaWJ1dGVzKHN1cHBvcnRlZEF0dHJpYnV0ZXMpOwotICAgICAgICBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjphZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKHN1cHBvcnRlZEF0
dHJpYnV0ZXMpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1l
czo6cG9pbnRzQXR0cik7Ci0gICAgfQotICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdl
dCgpLmNvbnRhaW5zPFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7Ci19Ci0K
IHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShuYW1lKSkgewotICAgICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmIChu
YW1lID09IFNWR05hbWVzOjpwb2ludHNBdHRyKSB7CiAgICAgICAgIFNWR1BvaW50TGlzdCBuZXdM
aXN0OwogICAgICAgICBpZiAoIXBvaW50c0xpc3RGcm9tU1ZHRGF0YShuZXdMaXN0LCB2YWx1ZSkp
CkBAIC05MywzOSArNzUsMzAgQEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW4KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdQb2x5RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAg
ICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdHcmFw
aGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
Ci0KLSAgICBhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1NoYXBlPih0aGlzLT5y
ZW5kZXJlcigpKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0KICAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpIHsKLSAgICAgICAgcmVuZGVyZXIt
PnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAg
ICBpZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5k
ZXJlcigpKSkgeworICAgICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7CisgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOworICAg
ICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAoU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8
fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJl
ciA9IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKSB7CisgICAgICAg
ICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgICAg
IFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAogdm9pZCBTVkdQb2x5RWxlbWVudDo6c3luY2hy
b25pemVQb2ludHMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
b2x5RWxlbWVudC5oCmluZGV4IDE5ODg2MTU0NDhjZGJiMGVlNzQ2YWY1ZDU3NDBjMWY0YmM4OWFj
ZTcuLjMwNWEzOWQyYjgwZWQxYTczMGE5ODIzYTBlMjgyMzQ0OTU3YzIwMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5RWxlbWVudC5oCkBAIC00NCw3ICs0NCw2IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBT
VkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKLSAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOyAKICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5jcHAKaW5kZXggN2M0ZDcxODNlOTMxYmQwMWNlMTNkZjU4NDg1ZDUyOWQ2NTAyM2U2Ni4uMDk5
YTBjOWM5MTIxOGM3NDNkOTQyZGQxZWVlYjdiYzI2NTU1MDA5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTI0LDcgKzI0LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
aCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5o
IgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJSYWRpYWxHcmFkaWVudEF0dHJp
YnV0ZXMuaCIKQEAgLTkzLDkgKzkyLDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEEKIHsKICAg
ICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKLSAgICBpZiAoIWlzU3Vw
cG9ydGVkQXR0cmlidXRlKG5hbWUpKQotICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpj
eEF0dHIpCisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikKICAgICAgICAgc2V0Q3hC
YXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN5QXR0cikKICAgICAg
ICAgc2V0Q3lCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKQEAgLTEwNywxMCArMTA0LDEwIEBAIHZvaWQgU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBCiAgICAgICAgIHNldEZ5QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBTVkdOYW1lczo6ZnJBdHRyKQogICAgICAgICBzZXRGckJhc2VWYWx1ZShTVkdMZW5ndGg6OmNv
bnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2
ZUxlbmd0aHMpKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAg
ICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsK
KworICAgIFNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwog
fQogCiB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuaAppbmRleCBiOWViZmQ4OWJlY2ZmYTdmM2FiNjBiMjMyYTRm
YmI3NmZkM2EzYzJjLi5kNjQ4ODk5MmY4ZjdmNDk1MTBhNGRkZDZiOTdiOTVkOWIzNGUwMjY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCkBAIC0z
OCw3ICszOCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgYm9vbCBpc1N1cHBv
cnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgc3RhdGljIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUmVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmNwcAppbmRleCAwYjkwYmRkZjhiYzk0Zjg3YjFkZTBjMTk2YjY5MWUwYjk1YTgyNjBlLi5lMjNh
MWU1ZDI4MzViZTY4NDg4NzVhNTc0NGViMWNiYzU1NDhkN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSZWN0RWxlbWVudC5jcHAKQEAgLTIyLDEzICsyMiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlNWR1JlY3RFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJBdHRyaWJ1dGUuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdQYXRoLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVjdC5oIgog
I2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MCwyOSArNjgsMTEgQEAgUmVmPFNWR1JlY3RFbGVt
ZW50PiBTVkdSZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW4KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdSZWN0RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOwogfQogCi1ib29sIFNWR1JlY3RFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxRdWFsaWZpZWROYW1lPj4gc3VwcG9ydGVkQXR0cmlidXRlczsKLSAg
ICBpZiAoc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgU1ZH
TGFuZ1NwYWNlOjphZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKHN1cHBvcnRlZEF0dHJpYnV0ZXMpOwot
ICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjphZGRTdXBwb3J0ZWRBdHRyaWJ1
dGVzKHN1cHBvcnRlZEF0dHJpYnV0ZXMpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdl
dCgpLmFkZChTVkdOYW1lczo6eEF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdl
dCgpLmFkZChTVkdOYW1lczo6eUF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdl
dCgpLmFkZChTVkdOYW1lczo6d2lkdGhBdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0cmlidXRl
cy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmhlaWdodEF0dHIpOwotICAgICAgICBzdXBwb3J0ZWRBdHRy
aWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6cnhBdHRyKTsKLSAgICAgICAgc3VwcG9ydGVkQXR0
cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnJ5QXR0cik7Ci0gICAgfQotICAgIHJldHVybiBz
dXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zPFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xh
dG9yPihhdHRyTmFtZSk7Ci19Ci0KIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7
CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCi0gICAgaWYgKCFp
c1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkKLSAgICAgICAgU1ZHR3JhcGhpY3NFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6eEF0dHIpCisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQogICAgICAgICBzZXRY
QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKICAgICAg
ICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2
YWx1ZSwgcGFyc2VFcnJvcikpOwpAQCAtMTA0LDQzICs4NCwzMCBAQCB2b2lkIFNWR1JlY3RFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbgogICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMp
KTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQogICAgICAgICBz
ZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOwotICAgIGVsc2UgaWYg
KFNWR0xhbmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpCi0gICAgICAgICAgICAg
fHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpKSB7Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAg
cmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKKwor
ICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAg
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVl
KTsKIH0KIAogdm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnhBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cgotICAg
ICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyCi0gICAgICAgIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyCi0gICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjpyeEF0dHIKLSAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ5QXR0cikgewor
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnlBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0ciB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cnlBdHRyKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxp
ZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8q
IHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHU2hhcGU+KHRoaXMtPnJlbmRlcmVyKCkpOwot
ICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChTVkdMYW5nU3Bh
Y2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRl
cmVyKTsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHU2hh
cGU+KHRoaXMtPnJlbmRlcmVyKCkpKSB7CisgICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJr
Rm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAg
ICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsK
IH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1JlY3RFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVj
dEVsZW1lbnQuaAppbmRleCA3ZWRiOGI0NzYyZDU2NTZhZWVlYjlmMTA2N2JjNGYyMjI5MGIyNDQ0
Li5lZGE1MjZiZjA1ODQ0ZGM3NDEwODE4ZDY4OWQ2NTVlNzk3MTFjYjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUmVjdEVsZW1lbnQuaApAQCAtMzksNyArMzksNiBAQCBwcml2YXRlOgogICAgIAogICAg
IHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZHVGVzdHM6
OmlzVmFsaWQoKTsgfQogCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCA5ODg4NjFiOTY3OTBmOTgwZDdh
NGE3NjU1MzYzNTM1MTgzNTdhOGQ3Li4wZDRkODVhZjhiZGMxYzZkMTIyNDg2OTZjZTYxZTY4NTAz
ZjMxZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0yNTcsNyArMjU3
LDYgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNp
bmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKLSAgICBTVkdMYW5nU3BhY2U6OnBh
cnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgU1ZHRml0VG9WaWV3Qm94Ojpw
YXJzZUF0dHJpYnV0ZSh0aGlzLCBuYW1lLCB2YWx1ZSk7CiAgICAgU1ZHWm9vbUFuZFBhbjo6cGFy
c2VBdHRyaWJ1dGUoKnRoaXMsIG5hbWUsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3Jp
cHRFbGVtZW50LmNwcAppbmRleCBjZTc3YWI3NjM0YTFhZDMzMWMwOTQyMzA5YzY4NWRjMzMxNTY2
OWQyLi4zYTc3NzFkODhlMjdmZTRjYmM4MjNjMDRkOTk5ZGQxNDQzYjYzNTQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0yMSw3ICsyMSw2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHU2NyaXB0RWxlbWVudC5oIgogCi0jaW5jbHVkZSAi
QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdG9wRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3Bw
CmluZGV4IDEyYTYwOGMxYzI3N2I0NTU0YWNkZTliZmJiNTk0NmE1Mjk3NmIyNmYuLjA1OWNkNGQ2
YWFiNjZmMTVlMmFmNTY2MDliMmQyYTZjOTgxMmNiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmNwcApAQCAtMjEsMTMgKzIxLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU1ZHU3RvcEVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJTVkdHcmFkaWVudEVsZW1l
bnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDIxICs1MCw4IEBAIFJlZjxTVkdT
dG9wRWxlbWVudD4gU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVuCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHU3RvcEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBTVkdTdG9wRWxlbWVudDo6aXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4+IHN1cHBvcnRlZEF0dHJpYnV0
ZXM7Ci0gICAgaWYgKHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuaXNFbXB0eSgpKQotICAgICAg
ICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6b2Zmc2V0QXR0cik7Ci0g
ICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuY29udGFpbnM8U1ZHQXR0cmlidXRl
SGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKLX0KLQogdm9pZCBTVkdTdG9wRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7Ci0gICAg
ICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKSB7CiAg
ICAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgnJScpKQogICAgICAgICAgICAgc2V0T2Zmc2V0QmFz
ZVZhbHVlKHZhbHVlLnN0cmluZygpLmxlZnQodmFsdWUubGVuZ3RoKCkgLSAxKS50b0Zsb2F0KCkg
LyAxMDAuMGYpOwpAQCAtNzUsMjUgKzYwLDIwIEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBT
VkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHU3Rv
cEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlz
KTsKLQogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b2Zmc2V0QXR0cikgewotICAgICAg
ICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIGlmIChhdXRv
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIFNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwog
fQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9w
RWxlbWVudC5oCmluZGV4IGMwNDhhNjBkYmE1M2ZjOGEwYTc4NTYyMTc5NGRkMzAzM2ExMTA0NTUu
LjdlY2ViZmU1Nzg2MDhiNGFkZWJmZDJkY2ViMTA3NjNhMjM1YzMwNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdG9wRWxlbWVudC5oCkBAIC0zNSw3ICszNSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgU1ZHU3RvcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAg
ICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVFbGVtZW50LmNwcAppbmRleCAyNjRhOTkyMDM3ZmYwMjBhMzM2MDFjYjhiZjA4OTc5ODAx
ZjAyZDEwLi44YWMyOGRhNjY3ZjIwY2VjYmVjMTU2ZjNjYjhlMWE3OWE4NWE0MDNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcApAQCAtMjMsMTIgKzIzLDEwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVFbGVtZW50LmgiCiAKLSNpbmNsdWRl
ICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMu
aCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk2LDI0ICs5NCw4IEBAIHZvaWQg
U1ZHU3R5bGVFbGVtZW50OjpzZXRUaXRsZShjb25zdCBBdG9taWNTdHJpbmcmIHRpdGxlLCBFeGNl
cHRpb25Db2RlJikKICAgICBzZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnRpdGxlQXR0ciwgdGl0bGUp
OwogfQogCi1ib29sIFNWR1N0eWxlRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hTZXQ8UXVhbGlmaWVkTmFtZT4+IHN1cHBvcnRlZEF0dHJpYnV0ZXM7Ci0gICAgaWYgKHN1cHBv
cnRlZEF0dHJpYnV0ZXMuZ2V0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFNWR0xhbmdTcGFjZTo6
YWRkU3VwcG9ydGVkQXR0cmlidXRlcyhzdXBwb3J0ZWRBdHRyaWJ1dGVzKTsKLSAgICAgICAgc3Vw
cG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnRpdGxlQXR0cik7Ci0gICAgICAg
IHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjptZWRpYUF0dHIpOwotICAg
ICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6dHlwZUF0dHIpOwot
ICAgIH0KLSAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5jb250YWluczxTVkdB
dHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwotfQotCiB2b2lkIFNWR1N0eWxlRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUp
KSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dGl0bGVBdHRy
KSB7CiAgICAgICAgIGlmIChzaGVldCgpKQogICAgICAgICAgICAgc2hlZXQoKS0+c2V0VGl0bGUo
dmFsdWUpOwpAQCAtMTI3LDEwICsxMDksOCBAQCB2b2lkIFNWR1N0eWxlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaQogICAg
ICAgICBtX3N0eWxlU2hlZXRPd25lci5zZXRNZWRpYSh2YWx1ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgaWYgKFNWR0xhbmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
KQotICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBTVkdF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHU3R5bGVF
bGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxl
bWVudC5oCmluZGV4IGRhZDMyZTIxYmIzNzhhNjE2MWVkNmUxZTU0Njk2YWRlMjI1OWMyZjEuLjY0
NzhlNDc5NjQ5NTRlMmUwMDVkMDdlMGE1NjA2YWVhMDIxM2RhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3R5bGVFbGVtZW50LmgKQEAgLTQ5LDcgKzQ5LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBTVkdTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBj
cmVhdGVkQnlQYXJzZXIpOwogCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUm
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCmluZGV4IDMx
Y2RjNGQzMjFkODJmMWMyN2M2OWFkYTQ3ZjFhMDdhMDI2MGZkOWIuLmJiODA4ZjhhNTJjOTQxNDYz
YjVkZWRiYjM2NmFlMTliYzM3YmZhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTeW1ib2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxl
bWVudC5jcHAKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdIaWRkZW5Db250
YWluZXIuaCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTUyLDQ2ICs1MSwyMiBAQCBSZWY8U1ZHU3ltYm9sRWxlbWVudD4gU1ZHU3ltYm9s
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNWR1N5bWJvbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAotYm9vbCBTVkdTeW1ib2xFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxRdWFsaWZpZWROYW1lPj4gc3VwcG9ydGVkQXR0cmlidXRlczsKLSAgICBpZiAoc3VwcG9y
dGVkQXR0cmlidXRlcy5nZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgU1ZHTGFuZ1NwYWNlOjph
ZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKHN1cHBvcnRlZEF0dHJpYnV0ZXMpOwotICAgICAgICBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjphZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKHN1cHBvcnRl
ZEF0dHJpYnV0ZXMpOwotICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OmFkZFN1cHBvcnRlZEF0dHJp
YnV0ZXMoc3VwcG9ydGVkQXR0cmlidXRlcyk7Ci0gICAgfQotICAgIHJldHVybiBzdXBwb3J0ZWRB
dHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zPFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRy
TmFtZSk7Ci19Ci0KIHZvaWQgU1ZHU3ltYm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7Ci0gICAgICAgIFNWR0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJp
YnV0ZShuYW1lLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoU1ZHRml0VG9WaWV3
Qm94OjpwYXJzZUF0dHJpYnV0ZSh0aGlzLCBuYW1lLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKG5hbWUsIHZhbHVlKTsKKyAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJz
ZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CisgICAgU1ZHRml0VG9WaWV3Qm94OjpwYXJzZUF0dHJp
YnV0ZSh0aGlzLCBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHU3ltYm9sRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnZpZXdCb3hBdHRyKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOworICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7Ci0KLSAgICAvLyBFdmVyeSBvdGhlciBwcm9wZXJ0eSBjaGFuZ2UgaXMg
aWdub3JlZC4KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKQotICAg
ICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOworICAgIFNWR0VsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogfQogCiBib29sIFNWR1N5bWJvbEVsZW1l
bnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1i
b2xFbGVtZW50LmgKaW5kZXggOTI4ZDdlMTdhNmY3NjE4MDIwODUwMDg5ZDIyYTk3MTBkZjQyMjRh
MS4uODgzNjVhN2FjZjRjNjgwZjJmNmIwM2VhN2NjNmI5NWY1Y2U4Yjc5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCkBAIC0zOSw3ICszOSw2IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgU1ZHU3ltYm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKIAotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5k
ZXggMTU3ODM4MTM3OWVlMzFmZWFhMGMwMDUwODViZWYyZDk0NTk5ZThhZC4uY2Y2YjhmMjU3YjAz
OWFhMzcwYmMzMjI4NTZkYWZlZjIzOGFkMDQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRh
LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKLSNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzcs
NDQgKzE3NiwyMyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQoKQogICAgICAg
ICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5hZGRQZW5kaW5nUmVzb3VyY2UoaWQs
IHRoaXMpOwogfQogCi1ib29sIFNWR1RSZWZFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8SGFzaFNldDxRdWFsaWZpZWROYW1lPj4gc3VwcG9ydGVkQXR0cmlidXRlczsKLSAgICBpZiAo
c3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5pc0VtcHR5KCkpCi0gICAgICAgIFNWR1VSSVJlZmVy
ZW5jZTo6YWRkU3VwcG9ydGVkQXR0cmlidXRlcyhzdXBwb3J0ZWRBdHRyaWJ1dGVzKTsKLSAgICBy
ZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5jb250YWluczxTVkdBdHRyaWJ1dGVIYXNo
VHJhbnNsYXRvcj4oYXR0ck5hbWUpOwotfQotCiB2b2lkIFNWR1RSZWZFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKLSAgICAgICAg
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VB
dHRyaWJ1dGUobmFtZSwgdmFsdWUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CisgICAgU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLQogICAgIGlmIChT
VkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIElu
c3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBidWlsZFBlbmRp
bmdSZXNvdXJjZSgpOwogICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpCiAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVu
dFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR1RSZWZFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAppbmRleCA2YWQ0
YTI2Yjc3NDAwNTVlODg4MmQxYmQ0NTg2OTRmOGZhYWQ3N2VhLi4zMDZlMmIzOTA2ZmNhM2U1YTY1
ZDhjMjcxOWY1YmNkOTYwMjIxNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VFJlZkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaApA
QCAtMjgsMjEgKzI4LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHVFJlZlRh
cmdldEV2ZW50TGlzdGVuZXI7CiAKLWNsYXNzIFNWR1RSZWZFbGVtZW50IGZpbmFsIDogcHVibGlj
IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdVUklSZWZlcmVuY2UgeworY2xhc3MgU1ZHVFJlZkVsZW1lbnQgZmluYWwgOiBw
dWJsaWMgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgcHVibGljIFNWR1VSSVJlZmVyZW5jZSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdUUmVmRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lk
IGRpZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25zKENvbnRhaW5lck5vZGUqKSBvdmVycmlkZTsKLQog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXI7CiAK
ICAgICBTVkdUUmVmRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAg
ICB2aXJ0dWFsIH5TVkdUUmVmRWxlbWVudCgpOwogCi0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jikgb3ZlcnJpZGU7CiAKQEAgLTUyLDYgKzQ3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25zKENv
bnRhaW5lck5vZGUqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRhcmdldCgp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAppbmRleCBlYjMzY2RlMTkwODA0Y2Vh
YjE3ODNlNmE4ZDYyYThiZWQwM2Q3MGQzLi5lYzJmMjRkZTdjNTkzMTVlMzFlYzc5NWI1NGVlNzcz
OGQyY2UwZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdUZXN0cy5oIgogCi0jaW5jbHVkZSAiQXR0
cmlidXRlLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgpAQCAtMTAyLDIxICsxMDEsMTQgQEAgYm9v
bCBTVkdUZXN0czo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
U1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit2b2lkIFNWR1Rlc3RzOjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKQogewotICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IHJlcXVpcmVkRmVhdHVyZXNB
dHRyKSB7CisgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gcmVxdWlyZWRGZWF0dXJlc0F0dHIpCiAg
ICAgICAgIG1fcmVxdWlyZWRGZWF0dXJlcy52YWx1ZS5yZXNldCh2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSByZXF1aXJlZEV4dGVu
c2lvbnNBdHRyKSB7CisgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gcmVxdWlyZWRFeHRlbnNpb25z
QXR0cikKICAgICAgICAgbV9yZXF1aXJlZEV4dGVuc2lvbnMudmFsdWUucmVzZXQodmFsdWUpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gc3lz
dGVtTGFuZ3VhZ2VBdHRyKSB7CisgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gc3lzdGVtTGFuZ3Vh
Z2VBdHRyKQogICAgICAgICBtX3N5c3RlbUxhbmd1YWdlLnZhbHVlLnJlc2V0KHZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBT
VkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAppbmRleCA4ZmY2MGU1YTc2ODcxNWFiNTUyNzA2NzY4ZmU3
MmNkN2YzM2Q0ZWZkLi44NTIyMWQ2YTVlZDc2NjdkYWZhNmZkNGFmNzg4MTcxOTQ5ODBmZDUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGVzdHMuaApAQCAtMzcsMTAgKzM3LDExIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBoYXNFeHRlbnNpb24oY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3Q7CiAKLSAgICBib29sIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKIAorICAgIHN0YXRpYyBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGFkZFN1
cHBvcnRlZEF0dHJpYnV0ZXMoSGFzaFNldDxRdWFsaWZpZWROYW1lPiYpOworCiAgICAgc3RhdGlj
IGJvb2wgaGFuZGxlQXR0cmlidXRlQ2hhbmdlKFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAKICAgICBzdGF0aWMgY29uc3QgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgYXR0
cmlidXRlVG9Qcm9wZXJ0eU1hcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmNwcAppbmRleCBkOTBkZjYxZGE0NTU0ZTA1Y2U4NDY3MDA5YmViMTE4ZWY1M2Nh
YTU3Li40ZDQxNDI2YjRhNGU5YWI2ZDBlYzcxYjk1ZmMwZTlhZjI3ODE1Njk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcApAQCAtMjI4LDM2ICsyMjgs
MzIgQEAgYm9vbCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OmlzUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGMKIAogdm9pZCBTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJiBzdHlsZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKQotICAg
ICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJp
YnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwotICAgIGVsc2UgaWYgKG5hbWUubWF0Y2hlcyhYTUxO
YW1lczo6c3BhY2VBdHRyKSkgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBwcmVzZXJ2ZVN0cmluZywgKCJwcmVzZXJ2ZSIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLQotICAgICAgICBpZiAodmFsdWUgPT0g
cHJlc2VydmVTdHJpbmcpCisgICAgaWYgKG5hbWUubWF0Y2hlcyhYTUxOYW1lczo6c3BhY2VBdHRy
KSkgeworICAgICAgICBpZiAodmFsdWUgPT0gInByZXNlcnZlIikKICAgICAgICAgICAgIGFkZFBy
b3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaGl0
ZVNwYWNlLCBDU1NWYWx1ZVByZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFkZFByb3Bl
cnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZSwgQ1NTUHJvcGVydHlXaGl0ZVNw
YWNlLCBDU1NWYWx1ZU5vd3JhcCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBTVkdH
cmFwaGljc0VsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSwgc3R5bGUpOwogfQogCiB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKLSAg
ICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKQotICAgICAgICBTVkdHcmFwaGljc0Vs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChuYW1lID09
IFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyKSB7Ci0gICAgICAgIFNWR0xlbmd0aEFkanVzdFR5
cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aEFkanVzdFR5cGU+
Ojpmcm9tU3RyaW5nKHZhbHVlKTsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6bGVuZ3RoQWRq
dXN0QXR0cikgeworICAgICAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0
czxTVkdMZW5ndGhBZGp1c3RUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChw
cm9wZXJ0eVZhbHVlID4gMCkKICAgICAgICAgICAgIHNldExlbmd0aEFkanVzdEJhc2VWYWx1ZShw
cm9wZXJ0eVZhbHVlKTsKLSAgICB9IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5n
dGhBdHRyKSB7CisgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0
cikKICAgICAgICAgbV90ZXh0TGVuZ3RoLnZhbHVlID0gU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKTsK
LSAgICB9IGVsc2UgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmli
dXRlKG5hbWUsIHZhbHVlKSkgewotICAgIH0gZWxzZSBpZiAoU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSkpIHsKLSAgICB9IGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwg
bmFtZSwgdmFsdWUpOworCisgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7CisgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTI2Nywx
MyArMjYzLDEzIEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KICAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyKQogICAgICAgICBtX3NwZWNp
ZmllZFRleHRMZW5ndGggPSBtX3RleHRMZW5ndGgudmFsdWU7CiAKLSAgICBpZiAoYXV0byByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRo
aXMpOwogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgfQogfQogCiBib29sIFNWR1RleHRD
b250ZW50RWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKaW5kZXggZmFiYTk0ZjAwZmY0MDIyY2I1
OWNiMzBjMWE3NTMxMTkzMzVjNjRlMy4uZTg0NGRmMGQzNDI5ZDQ4OTE1ZDAyNzgyMTc5YjAyYjJk
ZGMwYjc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaApA
QCAtOTYsNyArOTYsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAotICAgIGJv
b2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJp
ZGU7CkBAIC0xMDcsNiArMTA2LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGJvb2wgaXNUZXh0Q29udGVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIAorICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKwogICAgIC8vIEN1c3RvbSAndGV4dExlbmd0aCcgcHJvcGVydHkKICAgICBzdGF0
aWMgdm9pZCBzeW5jaHJvbml6ZVRleHRMZW5ndGgoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQp
OwogICAgIHN0YXRpYyBSZWY8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVUZXh0
TGVuZ3RoV3JhcHBlcihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRFbGVtZW50LmNwcAppbmRleCBjZjFhY2E3YTUwZjczZjBjZTYwYTc3NDNkZWRkZTA4
MDVjNWZhZGJjLi44OTU0ZDYyMzdjYTM3YzFmMTYzNjIzZWRkNGVjNzg2NWRjN2NlNTA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdUZXh0RWxlbWVudC5oIgogCi0jaW5jbHVkZSAi
QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJTVkdUZXh0LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5jcHAKaW5kZXggNzRjY2RjMDAzOTFiNjdlODEyZmRmZTJjYzI5
MmE0MDYyOGNiNTRkYy4uZjUzM2JkOTUyM2ZmMTEwNzEwOWIwOWQ1NGRlODA1ZmYxYmVlMjE2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAgLTIxLDcgKzIx
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdUZXh0UGF0aEVsZW1lbnQu
aCIKIAotI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHVGV4dFBhdGguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5o
IgpAQCAtODUsOSArODQsNyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljUwogewogICAgIFNWR1Bh
cnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUobmFtZSkpCi0gICAgICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwotICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnN0YXJ0
T2Zmc2V0QXR0cikKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyKQog
ICAgICAgICBzZXRTdGFydE9mZnNldEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5n
dGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6bWV0aG9kQXR0cikgewogICAgICAgICBTVkdUZXh0UGF0aE1ldGhvZFR5cGUgcHJv
cGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RleHRQYXRoTWV0aG9kVHlwZT46OmZy
b21TdHJpbmcodmFsdWUpOwpAQCAtOTcsMTEgKzk0LDEyIEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTCiAgICAgICAgIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1By
b3BlcnR5VHJhaXRzPFNWR1RleHRQYXRoU3BhY2luZ1R5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsK
ICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgc2V0U3BhY2luZ0Jh
c2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKLSAgICB9IGVsc2UgaWYgKFNWR1VSSVJlZmVyZW5jZTo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKSB7Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJv
cihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CisKKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICBTVkdVUklSZWZlcmVuY2U6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKaW5kZXggN2E3MDNiZDFkZjYxNDdlN2NhMjQ1
ZjlmNDQ1NWE0MDQ1MDI0NjZiYi4uYTVhYzBkZTk1MzVmOTZiM2U5NzVjMTZjZmExNzdhNmY3NmQz
YmEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaApAQCAtMTI1LDcg
KzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHN0YXRpYyBib29s
IGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCmluZGV4IGU4NzJhYzBlMTY0MzU5ZjMzZTI3
OGE4ZDQ0ZmNjMzBiNDg4MDY1MWUuLjQ5MmZhOTBkOTQ2ZDBlYWNmYTU2MzMzMDg5OWMxN2Y3MmM4
YjljNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJBdHRyaWJ1dGUuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJj
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1RleHQuaCIKQEAgLTMwLDcgKzI5LDYgQEAKICNpbmNs
dWRlICJTVkdMZW5ndGhMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJT
VkdOdW1iZXJMaXN0LmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsMjYgKzU0LDggQEAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudDo6U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW0KICAgICByZWdpc3RlckFuaW1hdGVkUHJvcGVydGllc0ZvclNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQoKTsKIH0KIAotYm9vbCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Ojppc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxRdWFsaWZpZWROYW1lPj4gc3VwcG9ydGVkQXR0cmlidXRl
czsKLSAgICBpZiAoc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnhBdHRyKTsKLSAgICAg
ICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OnlBdHRyKTsKLSAgICAg
ICAgc3VwcG9ydGVkQXR0cmlidXRlcy5nZXQoKS5hZGQoU1ZHTmFtZXM6OmR4QXR0cik7Ci0gICAg
ICAgIHN1cHBvcnRlZEF0dHJpYnV0ZXMuZ2V0KCkuYWRkKFNWR05hbWVzOjpkeUF0dHIpOwotICAg
ICAgICBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmFkZChTVkdOYW1lczo6cm90YXRlQXR0cik7
Ci0gICAgfQotICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmdldCgpLmNvbnRhaW5zPFNW
R0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7Ci19Ci0KIHZvaWQgU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKG5hbWUpKSB7Ci0gICAgICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnhBdHRyKSB7CiAgICAgICAgIFNWR0xlbmd0aExpc3QgbmV3TGlzdDsK
ICAgICAgICAgbmV3TGlzdC5wYXJzZSh2YWx1ZSwgTGVuZ3RoTW9kZVdpZHRoKTsKQEAgLTExNiw3
ICs5Niw3IEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIFNWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJiBzdHlsZSkKQEAgLTEzNSwzMyArMTE1LDIyIEBAIGJvb2wgU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtCiAKIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9y
dGVkQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnlBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpkeEF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmR5QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cm90YXRlQXR0cikgewor
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAotICAgIElu
c3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBpZiAoYXR0ck5h
bWUgIT0gU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpCisgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxl
bmd0aHNJbmZvcm1hdGlvbigpOwogCi0gICAgYm9vbCB1cGRhdGVSZWxhdGl2ZUxlbmd0aHMgPSBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cjsKLQotICAgIGlmICh1
cGRhdGVSZWxhdGl2ZUxlbmd0aHMpCi0gICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9y
bWF0aW9uKCk7Ci0KLSAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICBp
ZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChhdXRvIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHRleHRBbmNlc3Rv
ciA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3RvcigqcmVuZGVyZXIp
KQorICAgICAgICAgICAgICAgIHRleHRBbmNlc3Rvci0+c2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVl
c1VwZGF0ZSgpOworICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICB9CiAKLSAg
ICBpZiAodXBkYXRlUmVsYXRpdmVMZW5ndGhzIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpyb3Rh
dGVBdHRyKSB7Ci0gICAgICAgIGlmIChhdXRvKiB0ZXh0QW5jZXN0b3IgPSBSZW5kZXJTVkdUZXh0
Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IoKnJlbmRlcmVyKSkKLSAgICAgICAgICAgIHRl
eHRBbmNlc3Rvci0+c2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVlc1VwZGF0ZSgpOwotICAgICAgICBS
ZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0
aW9uKCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwogfQogCiBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KiBTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50OjplbGVtZW50RnJvbVJlbmRlcmVyKFJlbmRlckJveE1vZGVsT2JqZWN0
JiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5oCmluZGV4IDYyMjkwYmMxMGM3YzY0N2M4YzE1ZTZkNjQ3MzQzYThhM2E0YTY1Y2MuLjVm
NzY5MmEzZjRhOTQyOGI2YmZiNTRiM2ViN2FjYWJjNzliNDQ2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaApAQCAtMzQsMTIgKzM0LDEzIEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBib29sIGlzUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CiAKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2
aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
Jikgb3ZlcnJpZGUgZmluYWw7CisKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEhfTElTVChYLCB4KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSF9MSVNUKFks
IHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCmluZGV4IDdiZTYxN2QwYWJl
NjQwMzczMDc2Mzc3ZGQ2YjVmMzU0NzhjZmU4OWYuLjY3ZDcxODQ5ZDJjNGQzODg2ZGI0ZmQ2MTVk
MmVlZTBlY2UzN2EyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZl
cmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCkBA
IC0yMSw3ICsyMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVm
ZXJlbmNlLmgiCiAKLSNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJVUkwuaCIKQEAgLTI5LDE0ICsyOCwx
MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgU1ZHVVJJUmVmZXJlbmNlOjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQordm9pZCBTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKG5h
bWUubWF0Y2hlcyhYTGlua05hbWVzOjpocmVmQXR0cikpIHsKKyAgICBpZiAobmFtZS5tYXRjaGVz
KFhMaW5rTmFtZXM6OmhyZWZBdHRyKSkKICAgICAgICAgc2V0SHJlZkJhc2VWYWx1ZSh2YWx1ZSk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKIH0KIAog
Ym9vbCBTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJl
bmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmgKaW5kZXggOTBiYjFi
NDk4NDkzMWYyNjc0OGVhZGJiMDMzM2MwYjI1YWY2ODJmNC4uMDNlYzkyMWEyNmQ0MGE2M2Q2NmJi
ZjE2YzVkM2NlNzhhMjI2MzUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VS
SVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaApA
QCAtMjYsMjEgKzI2LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXR0cmli
dXRlOwotY2xhc3MgRWxlbWVudDsKLQogY2xhc3MgU1ZHVVJJUmVmZXJlbmNlIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5TVkdVUklSZWZlcmVuY2UoKSB7IH0KIAotICAgIGJvb2wgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIGJv
b2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdm9pZCBhZGRT
dXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hTZXQ8UXVhbGlmaWVkTmFtZT4mKTsKKyAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsK
KyAgICBzdGF0aWMgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
KyAgICBzdGF0aWMgdm9pZCBhZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hTZXQ8UXVhbGlmaWVk
TmFtZT4mKTsKIAogICAgIHN0YXRpYyBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0
cmluZyhjb25zdCBTdHJpbmcmLCBEb2N1bWVudCYpOwogICAgIHN0YXRpYyBFbGVtZW50KiB0YXJn
ZXRFbGVtZW50RnJvbUlSSVN0cmluZyhjb25zdCBTdHJpbmcmLCBEb2N1bWVudCYsIFN0cmluZyog
PSAwLCBEb2N1bWVudCogPSAwKTsKIAotICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0V4dGVybmFs
VVJJUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgdXJpLCBEb2N1bWVudCYgZG9jdW1lbnQpCisgICAg
c3RhdGljIGJvb2wgaXNFeHRlcm5hbFVSSVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHVyaSwgRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIHsKICAgICAgICAgLy8gRnJhZ21lbnQtb25seSBVUklzIGFy
ZSBhbHdheXMgaW50ZXJuYWwKICAgICAgICAgaWYgKHVyaS5zdGFydHNXaXRoKCcjJykpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggMjFjM2RhNjlmMDk5MGU0YmY5M2UxM2Mx
NjNkZjU0ZjM2ZmE0NTQyYy4uYTUxZThjYWY0ZjJkYTc3NTk1NDYyZmRmZTQ1ZTYwZjQ2MzY2MjBi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtOTgsNyArOTgsNiBAQCB2
b2lkIFNWR1VzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZwogCiAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwotICAgIFNWR0xhbmdTcGFjZTo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpOwogICAgIFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmll
d0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCmluZGV4IDE0
NTA4M2ViMDI3OTVmYzUxOWFiMzc2NWJkNzk5NTY0MjU4MjgwMDYuLjI1Njc1YTUyZWYzZDI1MWRl
YjA3Yzc4YjcxMmM5OTA3OTI5ZTkxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5o
CkBAIC01MCw3ICs1MCw2IEBAIHByaXZhdGU6CiAgICAgU1ZHVmlld0VsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hh
bmdlZCBtaXNzaW5nLgotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1l
bnQuY3BwCmluZGV4IDg1ZTE1MGY1NWMyY2E3YTZkYjc1M2MxMmNhYWQ3ZmI1MGJhYjc1YzMuLmUx
NDQ1ZDNmNmM1NjZkMTk2Y2YwZjI4MjMxODlkZjI3ZWIxZmNkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCkBAIC0yNiw3ICsyNiw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHU01JTEVsZW1lbnQuaCIKIAotI2lu
Y2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgKaW5kZXggODc1ZGNiOWU1OWEwODMzMjY3OTNm
MDQ3OTI5NjE0MTRkZGI4NGEzOS4uOTg4N2UxYTIzZTYwZjc1MDE3OTdkYmE1YjdjMDY2MWQ3OGIw
ZDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQu
aApAQCAtNDIsNyArNDIsNiBAQCBwdWJsaWM6CiAgICAgU1ZHU01JTEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+U1ZHU01JTEVsZW1lbnQoKTsK
IAotICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92
ZXJyaWRlOwpAQCAtMTMyLDYgKzEzMSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmRlZEFjdGl2
ZUludGVydmFsKCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbihmbG9hdCBwZXJj
ZW50LCB1bnNpZ25lZCByZXBlYXQsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KSA9IDA7
CiAKKyAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CisKICAgICBlbnVtIEJlZ2luT3JFbmQgeyBCZWdpbiwgRW5kIH07CiAgICAgCiAgICAg
U01JTFRpbWUgZmluZEluc3RhbmNlVGltZShCZWdpbk9yRW5kLCBTTUlMVGltZSBtaW5pbXVtVGlt
ZSwgYm9vbCBlcXVhbHNNaW5pbXVtT0spIGNvbnN0Owo=
</data>
<flag name="review"
          id="274517"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>