<?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>198706</bug_id>
          
          <creation_ts>2019-06-09 23:38:45 -0700</creation_ts>
          <short_desc>[WHLSL] Remove unnecessary ASSERT()s and clean up visitor lambdas</short_desc>
          <delta_ts>2019-06-13 22:46: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>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>198704</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1543261</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-06-09 23:38:45 -0700</bug_when>
    <thetext>General cleanup. No behavior change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543262</commentid>
    <comment_count>1</comment_count>
      <attachid>371724</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-06-09 23:39:15 -0700</bug_when>
    <thetext>Created attachment 371724
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543265</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-06-09 23:40:13 -0700</bug_when>
    <thetext>*** Bug 198705 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544112</commentid>
    <comment_count>3</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2019-06-12 08:53:03 -0700</bug_when>
    <thetext>Changing to P1 since it blocks 198704.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544115</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-12 08:54:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/51668851&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544367</commentid>
    <comment_count>5</comment_count>
      <attachid>372022</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-06-12 23:54:38 -0700</bug_when>
    <thetext>Created attachment 372022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544519</commentid>
    <comment_count>6</comment_count>
      <attachid>372066</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-06-13 10:44:49 -0700</bug_when>
    <thetext>Created attachment 372066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544569</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-06-13 12:55:30 -0700</bug_when>
    <thetext>LGTM too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544597</commentid>
    <comment_count>8</comment_count>
      <attachid>372066</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-06-13 14:08:39 -0700</bug_when>
    <thetext>Comment on attachment 372066
Patch

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

r=me with just a nitpick.

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp:350
&gt; +    auto textureTypeIndex = std::find(m_textureTypeNames, m_textureTypeNames + WTF_ARRAY_LENGTH(m_textureTypeNames), nativeTypeDeclaration.name()) - m_textureTypeNames;

I understand that is more concise, but I am not entirely comfortable with replacing some reasonable code by pointer arithmetic (the - m_textureTypeNames at the end).
It gets me especially wary because of the auto. Is this std::ptrdiff_t ?uintptr_t ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544691</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-06-13 22:46:04 -0700</bug_when>
    <thetext>Committed r246428: &lt;https://trac.webkit.org/changeset/246428&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371724</attachid>
            <date>2019-06-09 23:39:15 -0700</date>
            <delta_ts>2019-06-12 23:54:37 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>32905</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TENvbnN0YW50RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgKaW5kZXggOGVlY2ViMDhiMDQuLjc2NTZm
NjJiNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaApAQCAtODgsMTQgKzg4
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PEludGVnZXJMaXRlcmFsPiht
X3ZhcmlhbnQpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgdmlzaXQo
VCYmIHQpCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZpc2l0b3I+IGF1dG8gdmlzaXQoY29uc3Qg
VmlzaXRvciYgdmlzaXRvcikgLT4gZGVjbHR5cGUoV1RGOjp2aXNpdCh2aXNpdG9yLCBzdGQ6OmRl
Y2x2YWw8VmFyaWFudDxJbnRlZ2VyTGl0ZXJhbCwgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwgRmxv
YXRMaXRlcmFsLCBOdWxsTGl0ZXJhbCwgQm9vbGVhbkxpdGVyYWwsIEVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbD4mPigpKSkKICAgICB7Ci0gICAgICAgIFdURjo6dmlzaXQoV1RGTW92ZSh0KSwgbV92
YXJpYW50KTsKKyAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV92YXJpYW50KTsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHZpc2l0KFQmJiB0KSBjb25z
dAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWaXNpdG9yPiBhdXRvIHZpc2l0KGNvbnN0IFZpc2l0
b3ImIHZpc2l0b3IpIGNvbnN0IC0+IGRlY2x0eXBlKFdURjo6dmlzaXQodmlzaXRvciwgc3RkOjpk
ZWNsdmFsPFZhcmlhbnQ8SW50ZWdlckxpdGVyYWwsIFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIEZs
b2F0TGl0ZXJhbCwgTnVsbExpdGVyYWwsIEJvb2xlYW5MaXRlcmFsLCBFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWw+Jj4oKSkpCiAgICAgewotICAgICAgICBXVEY6OnZpc2l0KFdURk1vdmUodCksIG1f
dmFyaWFudCk7CisgICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1fdmFyaWFudCk7
CiAgICAgfQogCiAgICAgQ29uc3RhbnRFeHByZXNzaW9uIGNsb25lKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQ
b2ludFNjYWZmb2xkaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcAppbmRleCAzYmFhMzdmYTU0Yy4u
MDFmYjcxZTI0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRTY2FmZm9sZGlu
Zy5jcHAKQEAgLTE0OCw3ICsxNDgsNiBAQCBTdHJpbmcgRW50cnlQb2ludFNjYWZmb2xkaW5nOjpy
ZXNvdXJjZUhlbHBlclR5cGVzKCkKICAgICAgICAgICAgIGlmIChpdGVyYXRvciA9PSBtX3Jlc291
cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgYXV0
byYgdW5uYW1lZFR5cGUgPSAqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJhdG9yLT52YWx1
ZV0udW5uYW1lZFR5cGU7Ci0gICAgICAgICAgICBBU1NFUlQoaXM8QVNUOjpSZWZlcmVuY2VUeXBl
Pih1bm5hbWVkVHlwZSkpOwogICAgICAgICAgICAgYXV0byYgcmVmZXJlbmNlVHlwZSA9IGRvd25j
YXN0PEFTVDo6UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwogICAgICAgICAgICAgYXV0byBt
YW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUocmVmZXJlbmNl
VHlwZS5lbGVtZW50VHlwZSgpKTsKICAgICAgICAgICAgIGF1dG8gYWRkcmVzc1NwYWNlID0gdG9T
dHJpbmcocmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7CkBAIC0yNzcsMTAgKzI3Niw3IEBA
IFN0cmluZyBFbnRyeVBvaW50U2NhZmZvbGRpbmc6Om1hbmdsZWRPdXRwdXRQYXRoKFZlY3RvcjxT
dHJpbmc+JiBwYXRoKQogCiAgICAgQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uKiBzdHJ1Y3R1cmVE
ZWZpbml0aW9uID0gbnVsbHB0cjsKICAgICBhdXRvJiB1bmlmeU5vZGUgPSBtX2Z1bmN0aW9uRGVm
aW5pdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgQVNTRVJUKGlzPEFTVDo6TmFtZWRUeXBl
Pih1bmlmeU5vZGUpKTsKLSAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hbWVk
VHlwZT4odW5pZnlOb2RlKTsKLSAgICBBU1NFUlQoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9u
PihuYW1lZFR5cGUpKTsKLSAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gJmRvd25jYXN0PEFTVDo6
U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKKyAgICBzdHJ1Y3R1cmVEZWZpbml0aW9u
ID0gJmRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1l
ZFR5cGU+KHVuaWZ5Tm9kZSkpOwogICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogcGF0aCkgewog
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlRGVmaW5pdGlvbik7CiAgICAgICAgIGF1dG8qIG5leHQg
PSBzdHJ1Y3R1cmVEZWZpbml0aW9uLT5maW5kKGNvbXBvbmVudCk7CkBAIC0zMTcsOSArMzEzLDcg
QEAgU3RyaW5nIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6dW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRC
dWlsdElucygpCiAgICAgICAgICAgICAgICAgYXV0byBsZW5ndGhUZW1wb3JhcnlOYW1lID0gbV9u
YW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5sZW5ndGhJbmZvcm1hdGlvbi0+dGVt
cG9yYXJ5TmFtZTsKIAogICAgICAgICAgICAgICAgIGF1dG8mIHVubmFtZWRUeXBlID0gKm1fZW50
cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnVubmFtZWRUeXBlOwotICAgICAg
ICAgICAgICAgIEFTU0VSVChpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKSk7Ci0g
ICAgICAgICAgICAgICAgYXV0byYgcmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFTVDo6UmVmZXJl
bmNlVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgICAgIGF1dG8gbWFuZ2xlZFR5cGVO
YW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJlZmVyZW5jZVR5cGUuZWxlbWVu
dFR5cGUoKSk7CisgICAgICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlPih1bm5h
bWVkVHlwZSkuZWxlbWVudFR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChtYWtlU3RyaW5nKCJzaXplX3QgIiwgbGVuZ3RoVGVtcG9yYXJ5TmFtZSwgIiA9ICIs
IHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwgIi54O1xuIikpOwogICAgICAg
ICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobGVuZ3RoVGVtcG9yYXJ5
TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPDwgMzI7XG4iKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0
aW9uV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCmluZGV4IDQ0ZDJiMWU0NmY4Li5iZjkxNGM4YTc1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xGdW5jdGlvbldyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHAKQEAgLTM5Nyw3ICszOTcsNiBAQCB2
b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmIGZs
b2F0TGl0ZXJhbCkKIHZvaWQgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjp2aXNpdChBU1Q6Ok51
bGxMaXRlcmFsJiBudWxsTGl0ZXJhbCkKIHsKICAgICBhdXRvJiB1bmlmeU5vZGUgPSBudWxsTGl0
ZXJhbC5yZXNvbHZlZFR5cGUoKS51bmlmeU5vZGUoKTsKLSAgICBBU1NFUlQoaXM8QVNUOjpVbm5h
bWVkVHlwZT4odW5pZnlOb2RlKSk7CiAgICAgYXV0byYgdW5uYW1lZFR5cGUgPSBkb3duY2FzdDxB
U1Q6OlVubmFtZWRUeXBlPih1bmlmeU5vZGUpOwogICAgIGJvb2wgaXNBcnJheVJlZmVyZW5jZVR5
cGUgPSBpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwogCkBAIC02MjIs
MjMgKzYyMSwyMSBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNUOjpW
YXJpYWJsZVJlZmVyZW5jZSYgdmFyaWFibGVSZWZlcmVuY2UpCiAKIFN0cmluZyBGdW5jdGlvbkRl
ZmluaXRpb25Xcml0ZXI6OmNvbnN0YW50RXhwcmVzc2lvblN0cmluZyhBU1Q6OkNvbnN0YW50RXhw
cmVzc2lvbiYgY29uc3RhbnRFeHByZXNzaW9uKQogewotICAgIFN0cmluZyByZXN1bHQ7Ci0gICAg
Y29uc3RhbnRFeHByZXNzaW9uLnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdl
ckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgIHJlc3VsdCA9IG1ha2VTdHJpbmco
IiIsIGludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgcmVzdWx0ID0g
bWFrZVN0cmluZygiIiwgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKLSAgICB9LCBb
Jl0oQVNUOjpGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgewotICAgICAgICByZXN1bHQgPSBt
YWtlU3RyaW5nKCIiLCBmbG9hdExpdGVyYWwudmFsdWUoKSk7Ci0gICAgfSwgWyZdKEFTVDo6TnVs
bExpdGVyYWwmKSB7Ci0gICAgICAgIHJlc3VsdCA9ICJudWxscHRyIl9zdHI7Ci0gICAgfSwgWyZd
KEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7Ci0gICAgICAgIHJlc3VsdCA9
IGJvb2xlYW5MaXRlcmFsLnZhbHVlKCkgPyAidHJ1ZSJfc3RyIDogImZhbHNlIl9zdHI7Ci0gICAg
fSwgWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwpIHsKKyAgICByZXR1cm4gY29uc3RhbnRFeHByZXNzaW9uLnZpc2l0KFdURjo6bWFrZVZp
c2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSAtPiBTdHJpbmcg
eworICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiIiwgaW50ZWdlckxpdGVyYWwudmFsdWUoKSk7
CisgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbCkgLT4gU3RyaW5nIHsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIiIsIHVuc2ln
bmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7CisgICAgfSwgWyZdKEFTVDo6RmxvYXRMaXRlcmFs
JiBmbG9hdExpdGVyYWwpIC0+IFN0cmluZyB7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCIi
LCBmbG9hdExpdGVyYWwudmFsdWUoKSk7CisgICAgfSwgWyZdKEFTVDo6TnVsbExpdGVyYWwmKSAt
PiBTdHJpbmcgeworICAgICAgICByZXR1cm4gIm51bGxwdHIiX3N0cjsKKyAgICB9LCBbJl0oQVNU
OjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpIC0+IFN0cmluZyB7CisgICAgICAgIHJl
dHVybiBib29sZWFuTGl0ZXJhbC52YWx1ZSgpID8gInRydWUiX3N0ciA6ICJmYWxzZSJfc3RyOwor
ICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsKSAtPiBTdHJpbmcgewogICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKICAgICAgICAgQVNTRVJUKGVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7Ci0gICAgICAgIHJlc3Vs
dCA9IG1ha2VTdHJpbmcobV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCplbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpLCAnLicsIG1fdHlwZU5hbWVy
Lm1hbmdsZWROYW1lRm9yRW51bWVyYXRpb25NZW1iZXIoKmVudW1lcmF0aW9uTWVtYmVyTGl0ZXJh
bC5lbnVtZXJhdGlvbk1lbWJlcigpKSk7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG1fdHlw
ZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1l
cmF0aW9uRGVmaW5pdGlvbigpKSwgJy4nLCBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1l
cmF0aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIo
KSkpOwogICAgIH0pKTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQogCiBjbGFzcyBSZW5kZXJGdW5j
dGlvbkRlZmluaXRpb25Xcml0ZXIgOiBwdWJsaWMgRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dI
TFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAKaW5kZXggNjlkZmZk
ZmU1YTUuLjE0MTI1OWY1OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9u
V3JpdGVyLmNwcApAQCAtMTMzLDcgKzEzMyw2IEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9u
KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhCiAg
ICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXpl
KCkgPT0gMSk7CiAgICAgICAgIGF1dG8gbWV0YWxQYXJhbWV0ZXJOYW1lID0gdHlwZU5hbWVyLm1h
bmdsZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClb
MF0tPnR5cGUoKSk7CiAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpLT51bmlmeU5vZGUoKTsKLSAgICAg
ICAgQVNTRVJUKGlzPEFTVDo6VW5uYW1lZFR5cGU+KHBhcmFtZXRlclR5cGUpKTsKICAgICAgICAg
YXV0byYgdW5uYW1lZFBhcmFtZXRlclR5cGUgPSBkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPihw
YXJhbWV0ZXJUeXBlKTsKICAgICAgICAgaWYgKGlzPEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkUGFy
YW1ldGVyVHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8mIGFycmF5UGFyYW1ldGVyVHlwZSA9IGRv
d25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkUGFyYW1ldGVyVHlwZSk7CkBAIC0zNTAsMTMg
KzM0OSwxMSBAQCBTdHJpbmcgd3JpdGVOYXRpdmVGdW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYQogICAgIGlmIChuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLm5hbWUoKS5zdGFydHNXaXRoKCJJbnRlcmxvY2tlZCJfc3RyKSkgewogICAg
ICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkgPT0gIkludGVybG9ja2Vk
Q29tcGFyZUV4Y2hhbmdlIikgewogICAgICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSA0KTsKLSAgICAgICAgICAgIEFTU0VSVChp
czxBU1Q6OlBvaW50ZXJUeXBlPigqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJz
KClbMF0tPnR5cGUoKSkpOwogICAgICAgICAgICAgYXV0byYgZmlyc3RBcmd1bWVudFBvaW50ZXIg
PSBkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPigqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5w
YXJhbWV0ZXJzKClbMF0tPnR5cGUoKSk7CiAgICAgICAgICAgICBhdXRvIGZpcnN0QXJndW1lbnRB
ZGRyZXNzU3BhY2UgPSBmaXJzdEFyZ3VtZW50UG9pbnRlci5hZGRyZXNzU3BhY2UoKTsKICAgICAg
ICAgICAgIGF1dG8gZmlyc3RBcmd1bWVudFBvaW50ZWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKGZpcnN0QXJndW1lbnRQb2ludGVyLmVsZW1lbnRUeXBlKCkpOwogICAgICAgICAgICAg
YXV0byBzZWNvbmRBcmd1bWVudCA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKm5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzFdLT50eXBlKCkpOwogICAgICAgICAg
ICAgYXV0byB0aGlyZEFyZ3VtZW50ID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgqbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMl0tPnR5cGUoKSk7Ci0gICAgICAg
ICAgICBBU1NFUlQoaXM8QVNUOjpQb2ludGVyVHlwZT4oKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpWzNdLT50eXBlKCkpKTsKICAgICAgICAgICAgIGF1dG8mIGZvdXJ0aEFy
Z3VtZW50UG9pbnRlciA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KCpuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVszXS0+dHlwZSgpKTsKICAgICAgICAgICAgIGF1dG8g
Zm91cnRoQXJndW1lbnRBZGRyZXNzU3BhY2UgPSBmb3VydGhBcmd1bWVudFBvaW50ZXIuYWRkcmVz
c1NwYWNlKCk7CiAgICAgICAgICAgICBhdXRvIGZvdXJ0aEFyZ3VtZW50UG9pbnRlZSA9IHR5cGVO
YW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZm91cnRoQXJndW1lbnRQb2ludGVyLmVsZW1lbnRUeXBl
KCkpOwpAQCAtMzY4LDEyICszNjUsMTAgQEAgU3RyaW5nIHdyaXRlTmF0aXZlRnVuY3Rpb24oQVNU
OjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmEKICAgICAg
ICAgfQogCiAgICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRl
cnMoKS5zaXplKCkgPT0gMyk7Ci0gICAgICAgIEFTU0VSVChpczxBU1Q6OlBvaW50ZXJUeXBlPigq
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKSkpOwogICAg
ICAgICBhdXRvJiBmaXJzdEFyZ3VtZW50UG9pbnRlciA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5
cGU+KCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKTsK
ICAgICAgICAgYXV0byBmaXJzdEFyZ3VtZW50QWRkcmVzc1NwYWNlID0gZmlyc3RBcmd1bWVudFBv
aW50ZXIuYWRkcmVzc1NwYWNlKCk7CiAgICAgICAgIGF1dG8gZmlyc3RBcmd1bWVudFBvaW50ZWUg
PSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKGZpcnN0QXJndW1lbnRQb2ludGVyLmVsZW1l
bnRUeXBlKCkpOwogICAgICAgICBhdXRvIHNlY29uZEFyZ3VtZW50ID0gdHlwZU5hbWVyLm1hbmds
ZWROYW1lRm9yVHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0t
PnR5cGUoKSk7Ci0gICAgICAgIEFTU0VSVChpczxBU1Q6OlBvaW50ZXJUeXBlPigqbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMl0tPnR5cGUoKSkpOwogICAgICAgICBhdXRv
JiB0aGlyZEFyZ3VtZW50UG9pbnRlciA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KCpuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVsyXS0+dHlwZSgpKTsKICAgICAgICAg
YXV0byB0aGlyZEFyZ3VtZW50QWRkcmVzc1NwYWNlID0gdGhpcmRBcmd1bWVudFBvaW50ZXIuYWRk
cmVzc1NwYWNlKCk7CiAgICAgICAgIGF1dG8gdGhpcmRBcmd1bWVudFBvaW50ZWUgPSB0eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHRoaXJkQXJndW1lbnRQb2ludGVyLmVsZW1lbnRUeXBlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwv
V0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5jcHAKaW5kZXggNDk0OGQ5ZGQzNzYu
LmY1N2Q1YzA3N2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5jcHAKQEAg
LTcxLDkgKzcxLDcgQEAgU3RyaW5nIHdyaXRlTmF0aXZlVHlwZShBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQogICAgICAgICBBU1NFUlQoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxVbmlxdWVSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURl
Y2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSkpOwogICAgICAgICBhdXRvJiB0eXBlUmVmZXJl
bmNlID0gV1RGOjpnZXQ8VW5pcXVlUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pOwogICAgICAgICBhdXRvJiB1bmlmeU5vZGUg
PSB0eXBlUmVmZXJlbmNlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6TmFt
ZWRUeXBlPih1bmlmeU5vZGUpKTsKICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8
QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgIEFTU0VSVChpczxBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSk7CiAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5
cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKICAg
ICAgICAgYXV0byBwcmVmaXggPSAoWyZdKCkgLT4gU3RyaW5nIHsKICAgICAgICAgICAgIGlmIChw
YXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAiYm9vbCIpCkBAIC0xMTYsOSArMTE0LDcgQEAgU3RyaW5n
IHdyaXRlTmF0aXZlVHlwZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURl
Y2xhcmF0aW9uKQogICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxVbmlxdWVS
ZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVu
dHMoKVswXSkpOwogICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gV1RGOjpnZXQ8VW5pcXVl
UmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1l
bnRzKClbMF0pOwogICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSB0eXBlUmVmZXJlbmNlLT51bmlm
eU5vZGUoKTsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKTsK
ICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5
Tm9kZSk7Ci0gICAgICAgIEFTU0VSVChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFt
ZWRUeXBlKSk7CiAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKICAgICAgICAgYXV0byBwcmVmaXggPSAo
WyZdKCkgLT4gU3RyaW5nIHsKICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJUeXBlLm5hbWUoKSA9
PSAiaGFsZiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKaW5kZXggNDExMzhkZGE2ZjguLmMzZDgy
NzI1YWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCkBAIC0yMDEsNyArMjAxLDYgQEAgc3Rh
dGljIEJhc2VUeXBlTmFtZU5vZGUmIGZpbmQoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUs
IFZlY3RvcjxVbmlxdWVSZWY8QmEKICAgICAgICAgICAgIHJldHVybiBmaW5kKGRvd25jYXN0PEFT
VDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpLCB0eXBlcykuY2hpbGRy
ZW4oKTsKICAgICAgICAgaWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlw
ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmluZChkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNl
VHlwZT4odW5uYW1lZFR5cGUpLmVsZW1lbnRUeXBlKCksIHR5cGVzKS5jaGlsZHJlbigpOwotICAg
ICAgICBBU1NFUlQoaXM8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKSk7CiAgICAgICAgIHJl
dHVybiBmaW5kKGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkudHlwZSgpLCB0
eXBlcykuY2hpbGRyZW4oKTsKICAgICB9KSgpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBmaW5kSW5W
ZWN0b3IodW5uYW1lZFR5cGUsIHZlY3RvclRvU2VhcmNoKTsKQEAgLTMwNiw3ICszMDUsNiBAQCBV
bmlxdWVSZWY8QmFzZVR5cGVOYW1lTm9kZT4gVHlwZU5hbWVyOjpjcmVhdGVOYW1lTm9kZShBU1Q6
OlVubmFtZWRUeXBlJiB1bm5hbWVkVAogICAgICAgICBhdXRvJiBhcnJheVJlZmVyZW5jZVR5cGUg
PSBkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwogICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxBcnJheVJlZmVyZW5jZVR5cGVOYW1lTm9kZT4ocGFyZW50
LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNl
KCkpOwogICAgIH0KLSAgICBBU1NFUlQoaXM8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKSk7
CiAgICAgYXV0byYgYXJyYXlUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRU
eXBlKTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxBcnJheVR5cGVOYW1lTm9kZT4ocGFyZW50
LCBnZW5lcmF0ZU5leHRUeXBlTmFtZSgpLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSk7CiB9CkBA
IC0zMjcsNyArMzI1LDYgQEAgc2l6ZV90IFR5cGVOYW1lcjo6aW5zZXJ0KEFTVDo6VW5uYW1lZFR5
cGUmIHVubmFtZWRUeXBlLCBWZWN0b3I8VW5pcXVlUmVmPEJhc2VUeXAKICAgICAgICAgdmVjdG9y
VG9JbnNlcnRJbnRvID0gJml0ZW0tPmNoaWxkcmVuKCk7CiAgICAgICAgIHBhcmVudCA9ICZpdGVt
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChpczxBU1Q6OkFycmF5VHlwZT4odW5uYW1l
ZFR5cGUpKTsKICAgICAgICAgYXV0byYgaXRlbSA9IHR5cGVzW2luc2VydChkb3duY2FzdDxBU1Q6
OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpLnR5cGUoKSwgdHlwZXMpXTsKICAgICAgICAgdmVjdG9y
VG9JbnNlcnRJbnRvID0gJml0ZW0tPmNoaWxkcmVuKCk7CiAgICAgICAgIHBhcmVudCA9ICZpdGVt
OwpAQCAtMzk5LDcgKzM5Niw2IEBAIHZvaWQgVHlwZU5hbWVyOjplbWl0VW5uYW1lZFR5cGVEZWZp
bml0aW9uKEJhc2VUeXBlTmFtZU5vZGUmIGJhc2VUeXBlTmFtZU5vZGUsIEhhCiAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAgdWludCBsZW5ndGg7XG4iKTsKICAgICAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIn07XG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoaXM8
QXJyYXlUeXBlTmFtZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUpKTsKICAgICAgICAgYXV0byYgYXJy
YXlUeXBlID0gZG93bmNhc3Q8QXJyYXlUeXBlTmFtZU5vZGU+KGJhc2VUeXBlTmFtZU5vZGUpOwog
ICAgICAgICBBU1NFUlQoYmFzZVR5cGVOYW1lTm9kZS5wYXJlbnQoKSk7CiAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcoInR5cGVkZWYgQXJyYXk8IiwgYXJyYXlUeXBlLnBh
cmVudCgpLT5tYW5nbGVkTmFtZSgpLCAiLCAiLCBhcnJheVR5cGUubnVtRWxlbWVudHMoKSwgIj4g
IiwgYXJyYXlUeXBlLm1hbmdsZWROYW1lKCksICI7XG4iKSk7CkBAIC00MTgsNyArNDE0LDYgQEAg
dm9pZCBUeXBlTmFtZXI6OmVtaXROYW1lZFR5cGVEZWZpbml0aW9uKEFTVDo6TmFtZWRUeXBlJiBu
YW1lZFR5cGUsIEhhc2hTZXQ8QVNUOjoKICAgICBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmlu
aXRpb24+KG5hbWVkVHlwZSkpIHsKICAgICAgICAgYXV0byYgZW51bWVyYXRpb25EZWZpbml0aW9u
ID0gZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSk7CiAgICAg
ICAgIGF1dG8mIGJhc2VUeXBlID0gZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKS51bmlmeU5v
ZGUoKTsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6TmFtZWRUeXBlPihiYXNlVHlwZSkpOwogICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJlbnVtIGNsYXNzICIsIG1hbmds
ZWROYW1lRm9yVHlwZShlbnVtZXJhdGlvbkRlZmluaXRpb24pLCAiIDogIiwgbWFuZ2xlZE5hbWVG
b3JUeXBlKGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPihiYXNlVHlwZSkpLCAiIHtcbiIpKTsKICAg
ICAgICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlv
bi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcoIiAgICAiLCBtYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKGVudW1l
cmF0aW9uTWVtYmVyKSwgIixcbiIpKTsKQEAgLTQzMiw3ICs0MjcsNiBAQCB2b2lkIFR5cGVOYW1l
cjo6ZW1pdE5hbWVkVHlwZURlZmluaXRpb24oQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSwgSGFz
aFNldDxBU1Q6OgogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygi
ICAgICIsIG1hbmdsZWROYW1lRm9yVHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSksICcgJywg
bWFuZ2xlZE5hbWVGb3JTdHJ1Y3R1cmVFbGVtZW50KHN0cnVjdHVyZUVsZW1lbnQpLCAiO1xuIikp
OwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgifTtcbiIpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIEFTU0VSVChpczxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZFR5cGUpKTsKICAgICAg
ICAgYXV0byYgdHlwZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uPihu
YW1lZFR5cGUpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ0eXBl
ZGVmICIsIG1hbmdsZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlvbi50eXBlKCkpLCAnICcsIG1h
bmdsZWROYW1lRm9yVHlwZSh0eXBlRGVmaW5pdGlvbiksICI7XG4iKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAK
aW5kZXggZjE0ZTdkNDNiYTYuLjhjZDA5ODk1NzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTY1NiwxNCArNjU2
LDEyIEBAIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVu
dW1lcmF0aW9uRGVmaW5pdGlvbikKICAgICBhdXRvIGVudW1lcmF0aW9uTWVtYmVycyA9IGVudW1l
cmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKTsKIAogICAgIGF1dG8gbWF0Y2hB
bmRDb21taXRNZW1iZXIgPSBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYgbWVtYmVyKSAtPiBi
b29sIHsKLSAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIG1lbWJlci52YWx1
ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkV4cHJlc3Npb24mIHZhbHVlKSB7
CisgICAgICAgIHJldHVybiBtZW1iZXIudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihb
Jl0oQVNUOjpFeHByZXNzaW9uJiB2YWx1ZSkgLT4gYm9vbCB7CiAgICAgICAgICAgICBhdXRvIHZh
bHVlSW5mbyA9IHJlY3Vyc2VBbmRHZXRJbmZvKHZhbHVlKTsKICAgICAgICAgICAgIGlmICghdmFs
dWVJbmZvKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBz
dGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCh2YWx1ZUluZm8tPnJlc29sdmluZ1R5cGUs
ICpiYXNlVHlwZSkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCh2YWx1ZUluZm8tPnJlc29s
dmluZ1R5cGUsICpiYXNlVHlwZSkpOwogICAgICAgICB9KSk7Ci0gICAgICAgIHJldHVybiBzdWNj
ZXNzOwogICAgIH07CiAKICAgICBmb3IgKGF1dG8mIG1lbWJlciA6IGVudW1lcmF0aW9uTWVtYmVy
cykgewpAQCAtNjc5LDEzICs2NzcsMTMgQEAgdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkVudW1l
cmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQogICAgIGludDY0X3QgbmV4
dFZhbHVlID0gMDsKICAgICBmb3IgKGF1dG8mIG1lbWJlciA6IGVudW1lcmF0aW9uTWVtYmVycykg
ewogICAgICAgICBpZiAobWVtYmVyLmdldCgpLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGludDY0
X3QgdmFsdWU7Ci0gICAgICAgICAgICBtZW1iZXIuZ2V0KCkudmFsdWUoKS0+dmlzaXQoV1RGOjpt
YWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKLSAg
ICAgICAgICAgICAgICB2YWx1ZSA9IGludGVnZXJMaXRlcmFsLnZhbHVlRm9yU2VsZWN0ZWRUeXBl
KCk7Ci0gICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNp
Z25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSB1bnNpZ25lZElu
dGVnZXJMaXRlcmFsLnZhbHVlRm9yU2VsZWN0ZWRUeXBlKCk7Ci0gICAgICAgICAgICB9LCBbJl0o
YXV0byYpIHsKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBtZW1iZXIuZ2V0KCkudmFsdWUoKS0+
dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxp
dGVyYWwpIC0+IGludDY0X3QgeworICAgICAgICAgICAgICAgIHJldHVybiBpbnRlZ2VyTGl0ZXJh
bC52YWx1ZUZvclNlbGVjdGVkVHlwZSgpOworICAgICAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gaW50NjRfdCB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxl
Y3RlZFR5cGUoKTsKKyAgICAgICAgICAgIH0sIFsmXShhdXRvJikgLT4gaW50NjRfdCB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICBuZXh0VmFsdWUgPSBiYXNlVHlwZS0+
c3VjY2Vzc29yKCkodmFsdWUpOwogICAgICAgICB9IGVsc2UgewpAQCAtNzA2LDE0ICs3MDQsMTQg
QEAgdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVy
YXRpb25EZWZpbml0aW9uKQogICAgIH0KIAogICAgIGF1dG8gZ2V0VmFsdWUgPSBbJl0oQVNUOjpF
bnVtZXJhdGlvbk1lbWJlciYgbWVtYmVyKSAtPiBpbnQ2NF90IHsKLSAgICAgICAgaW50NjRfdCB2
YWx1ZTsKICAgICAgICAgQVNTRVJUKG1lbWJlci52YWx1ZSgpKTsKLSAgICAgICAgbWVtYmVyLnZh
bHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGlu
dGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGludGVnZXJMaXRlcmFsLnZhbHVl
KCk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVk
SW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIHZhbHVlID0gdW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbC52YWx1ZSgpOwotICAgICAgICB9LCBbJl0oYXV0byYpIHsKKyAgICAgICAgYXV0byB2YWx1
ZSA9IG1lbWJlci52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVn
ZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgLT4gaW50NjRfdCB7CisgICAgICAgICAgICByZXR1
cm4gaW50ZWdlckxpdGVyYWwudmFsdWUoKTsKKyAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gaW50NjRfdCB7CisgICAg
ICAgICAgICByZXR1cm4gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOworICAgICAgICB9
LCBbJl0oYXV0byYpIC0+IGludDY0X3QgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfSkpOwogICAgICAgICByZXR1cm4g
dmFsdWU7CiAgICAgfTsKQEAgLTk3Nyw3ICs5NzUsNiBAQCBzdGF0aWMgT3B0aW9uYWw8VW5pcXVl
UmVmPEFTVDo6VW5uYW1lZFR5cGU+PiBhcmd1bWVudFR5cGVGb3JBbmRPdmVybG9hZChBU1Q6OlVu
bgogICAgICAgICByZXR1cm4geyBtYWtlVW5pcXVlUmVmPEFTVDo6UG9pbnRlclR5cGU+KExleGVy
OjpUb2tlbihuYW1lZFR5cGUub3JpZ2luKCkpLCBhZGRyZXNzU3BhY2UsIEFTVDo6VHlwZVJlZmVy
ZW5jZTo6d3JhcChMZXhlcjo6VG9rZW4obmFtZWRUeXBlLm9yaWdpbigpKSwgbmFtZWRUeXBlKSkg
fTsKICAgICB9CiAKLSAgICBBU1NFUlQoaXM8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKSk7
CiAgICAgYXV0byYgdW5uYW1lZFR5cGUgPSBkb3duY2FzdDxBU1Q6OlVubmFtZWRUeXBlPih1bmlm
eU5vZGUpOwogCiAgICAgaWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlw
ZSkpCkBAIC0xMzA1LDIwICsxMzAyLDE5IEBAIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpTd2l0
Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRlbWVudCkKICAgICAgICAgICAgIGhhc0RlZmF1bHQgPSB0
cnVlOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCBzdWNj
ZXNzOwotICAgICAgICBzd2l0Y2hDYXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3Io
WyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICBz
dWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwgaW50
ZWdlckxpdGVyYWwudHlwZSgpKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIHN1Y2Nlc3Mg
PSBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgqdmFsdWVUeXBlLCB1bnNpZ25lZElu
dGVnZXJMaXRlcmFsLnR5cGUoKSkpOwotICAgICAgICB9LCBbJl0oQVNUOjpGbG9hdExpdGVyYWwm
IGZsb2F0TGl0ZXJhbCkgewotICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+
KG1hdGNoQW5kQ29tbWl0KCp2YWx1ZVR5cGUsIGZsb2F0TGl0ZXJhbC50eXBlKCkpKTsKLSAgICAg
ICAgfSwgWyZdKEFTVDo6TnVsbExpdGVyYWwmIG51bGxMaXRlcmFsKSB7Ci0gICAgICAgICAgICBz
dWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwgbnVs
bExpdGVyYWwudHlwZSgpKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkJvb2xlYW5MaXRlcmFsJikg
ewotICAgICAgICAgICAgc3VjY2VzcyA9IG1hdGNoZXMoKnZhbHVlVHlwZSwgbV9pbnRyaW5zaWNz
LmJvb2xUeXBlKCkpOwotICAgICAgICB9LCBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgeworICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBz
d2l0Y2hDYXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdl
ckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgqdmFsdWVUeXBlLCBpbnRlZ2VyTGl0ZXJh
bC50eXBlKCkpKTsKKyAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYg
dW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwgdW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbC50eXBlKCkpKTsKKyAgICAgICAgfSwgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9h
dExpdGVyYWwpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+
KG1hdGNoQW5kQ29tbWl0KCp2YWx1ZVR5cGUsIGZsb2F0TGl0ZXJhbC50eXBlKCkpKTsKKyAgICAg
ICAgfSwgWyZdKEFTVDo6TnVsbExpdGVyYWwmIG51bGxMaXRlcmFsKSAtPiBib29sIHsKKyAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgqdmFsdWVUeXBl
LCBudWxsTGl0ZXJhbC50eXBlKCkpKTsKKyAgICAgICAgfSwgWyZdKEFTVDo6Qm9vbGVhbkxpdGVy
YWwmKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBtYXRjaGVzKCp2YWx1ZVR5cGUsIG1f
aW50cmluc2ljcy5ib29sVHlwZSgpKTsKKyAgICAgICAgfSwgWyZdKEFTVDo6RW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIC0+IGJvb2wgewogICAgICAg
ICAgICAgQVNTRVJUKGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRp
b24oKSk7Ci0gICAgICAgICAgICBzdWNjZXNzID0gbWF0Y2hlcygqdmFsdWVUeXBlLCAqZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKTsKKyAgICAgICAgICAg
IHJldHVybiBtYXRjaGVzKCp2YWx1ZVR5cGUsICplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51
bWVyYXRpb25EZWZpbml0aW9uKCkpOwogICAgICAgICB9KSk7CiAgICAgICAgIGlmICghc3VjY2Vz
cykgewogICAgICAgICAgICAgc2V0RXJyb3IoKTsKQEAgLTEzMzksMzEgKzEzMzUsMzcgQEAgdm9p
ZCBDaGVja2VyOjp2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYm9v
bCBzdWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgICAgIGZpcnN0Q2FzZS52YWx1ZSgpLT52aXNpdChX
VEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBmaXJzdEludGVnZXJMaXRl
cmFsKSB7Ci0gICAgICAgICAgICAgICAgc2Vjb25kQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBzZWNvbmRJbnRlZ2VyTGl0ZXJhbCkg
ewotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmlyc3RJbnRlZ2VyTGl0ZXJhbC52YWx1
ZSgpICE9IHNlY29uZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgfSwg
WyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgc2Vjb25kVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCkgewotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4oZmlyc3RJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKSAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihz
ZWNvbmRVbnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCkpOwotICAgICAgICAgICAgICAgIH0s
IFtdKGF1dG8mKSB7CisgICAgICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBmaXJzdENhc2UudmFsdWUo
KS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgZmlyc3RJ
bnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlY29uZENh
c2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJh
bCYgc2Vjb25kSW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmlyc3RJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpICE9IHNlY29uZEludGVnZXJMaXRlcmFs
LnZhbHVlKCk7CisgICAgICAgICAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCYgc2Vjb25kVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ2NF90PihmaXJzdEludGVnZXJMaXRlcmFs
LnZhbHVlKCkpICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KHNlY29uZFVuc2lnbmVkSW50ZWdlckxp
dGVyYWwudmFsdWUoKSk7CisgICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9KSk7Ci0g
ICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBmaXJzdFVuc2ln
bmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgICAgICBzZWNvbmRDYXNlLnZhbHVlKCkt
PnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIHNlY29uZElu
dGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihmaXJzdFVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSkgIT0gc3RhdGlj
X2Nhc3Q8aW50NjRfdD4oc2Vjb25kSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci0gICAgICAgICAg
ICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgc2Vjb25kVW5zaWduZWRJ
bnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmlyc3RVbnNp
Z25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCkgIT0gc2Vjb25kVW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bC52YWx1ZSgpOwotICAgICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSB7CisgICAgICAgICAgICB9
LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBmaXJzdFVuc2lnbmVkSW50ZWdlckxp
dGVyYWwpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIHJldHVybiBzZWNvbmRDYXNlLnZhbHVl
KCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIHNlY29u
ZEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludDY0X3Q+KGZpcnN0VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKSAh
PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzZWNvbmRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKKyAg
ICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBzZWNvbmRV
bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZpcnN0VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpICE9IHNlY29uZFVuc2lnbmVk
SW50ZWdlckxpdGVyYWwudmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9LCBbXShhdXRvJikgLT4g
Ym9vbCB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAg
IH0pKTsKLSAgICAgICAgICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYg
Zmlyc3RFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsKLSAgICAgICAgICAgICAgICBzZWNvbmRD
YXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVy
YWwmKSB7Ci0gICAgICAgICAgICAgICAgfSwgWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsJiBzZWNvbmRFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsKKyAgICAgICAgICAgIH0sIFsm
XShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZmlyc3RFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIHJldHVybiBzZWNvbmRDYXNlLnZhbHVl
KCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsJiBzZWNvbmRFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIC0+IGJvb2wgewogICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoZmlyc3RFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRp
b25NZW1iZXIoKSk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzZWNvbmRFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IHN1Y2Nlc3MgPSBmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJl
cigpICE9IHNlY29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigp
OwotICAgICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpICE9
IHNlY29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpOworICAg
ICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgfSwgW10oYXV0
byYpIHsKKyAgICAgICAgICAgIH0sIFtdKGF1dG8mKSAtPiBib29sIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIGlmICghc3VjY2Vz
cykgeworICAgICAgICAgICAgICAgIHNldEVycm9yKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzcyLDEzICsxMzc0LDEz
IEBAIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRl
bWVudCkKICAgICAgICAgICAgIEhhc2hTZXQ8aW50NjRfdD4gdmFsdWVzOwogICAgICAgICAgICAg
Ym9vbCB6ZXJvVmFsdWVFeGlzdHM7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2Ug
OiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkgewotICAgICAgICAgICAgICAgIGludDY0
X3QgdmFsdWU7Ci0gICAgICAgICAgICAgICAgc3dpdGNoQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgewot
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGludGVnZXJMaXRlcmFsLnZhbHVlRm9yU2VsZWN0
ZWRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgICAgICAgICB2YWx1
ZSA9IHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxlY3RlZFR5cGUoKTsKLSAgICAg
ICAgICAgICAgICB9LCBbXShhdXRvJikgeworICAgICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBz
d2l0Y2hDYXNlLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdl
ckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSAtPiBpbnQ2NF90IHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGludGVnZXJMaXRlcmFsLnZhbHVlRm9yU2VsZWN0ZWRUeXBlKCk7CisgICAgICAg
ICAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbCkgLT4gaW50NjRfdCB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bnNp
Z25lZEludGVnZXJMaXRlcmFsLnZhbHVlRm9yU2VsZWN0ZWRUeXBlKCk7CisgICAgICAgICAgICAg
ICAgfSwgW10oYXV0byYpIC0+IGludDY0X3QgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAg
ICAgICAgfSkpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICAgICAg
ICAgIHplcm9WYWx1ZUV4aXN0cyA9IHRydWU7CkBAIC0xNDA1LDcgKzE0MDcsNiBAQCB2b2lkIENo
ZWNrZXI6OnZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50JiBzd2l0Y2hTdGF0ZW1lbnQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgQVNTRVJUKGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPigqdmFsdWVUeXBl
KSk7CiAgICAgICAgICAgICBIYXNoU2V0PEFTVDo6RW51bWVyYXRpb25NZW1iZXIqPiB2YWx1ZXM7
CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dp
dGNoQ2FzZXMoKSkgewogICAgICAgICAgICAgICAgIHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKaW5kZXggNjY5OTM2MjZiNDUuLmJj
ODlmMzlmZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEluZmVyVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKQEAgLTE4OCw3ICsxODgsNiBAQCBib29sIGluZmVy
VHlwZXNGb3JUeXBlQXJndW1lbnRzKEFTVDo6TmFtZWRUeXBlJiBwb3NzaWJsZVR5cGUsIEFTVDo6
VHlwZUFyZ3VtZW50cwogICAgICAgICByZXR1cm4gdHlwZUFyZ3VtZW50cy5pc0VtcHR5KCk7CiAg
ICAgfQogCi0gICAgQVNTRVJUKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihwb3NzaWJs
ZVR5cGUpKTsKICAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gPSBkb3duY2FzdDxBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocG9zc2libGVUeXBlKTsKICAgICBpZiAobmF0aXZlVHlw
ZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgIT0gdHlwZUFyZ3VtZW50cy5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuY3BwCmluZGV4IGNiOWQ4ZDFmYzg1
Li4wMzEzZGJjZWRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuY3BwCkBAIC0zNDcsMTEgKzM0Nyw3IEBAIGJvb2wg
SW50cmluc2ljczo6YWRkTWF0cml4KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVU
eXBlRGVjbGFyYXRpb24pCiAKIGJvb2wgSW50cmluc2ljczo6YWRkRnVsbFRleHR1cmUoQVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgQVNUOjpUeXBlUmVm
ZXJlbmNlJiBpbm5lclR5cGUpCiB7Ci0gICAgdW5zaWduZWQgdGV4dHVyZVR5cGVJbmRleCA9IFdU
Rl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlVHlwZU5hbWVzKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVUeXBlTmFtZXMpOyArK2kpIHsKLSAg
ICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gbV90ZXh0dXJlVHlwZU5h
bWVzW2ldKQotICAgICAgICAgICAgdGV4dHVyZVR5cGVJbmRleCA9IGk7Ci0gICAgfQorICAgIGF1
dG8gdGV4dHVyZVR5cGVJbmRleCA9IHN0ZDo6ZmluZChtX3RleHR1cmVUeXBlTmFtZXMsIG1fdGV4
dHVyZVR5cGVOYW1lcyArIFdURl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlVHlwZU5hbWVzKSwgbmF0
aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSkgLSBtX3RleHR1cmVUeXBlTmFtZXM7CiAgICAgaWYg
KHRleHR1cmVUeXBlSW5kZXggPT0gV1RGX0FSUkFZX0xFTkdUSChtX3RleHR1cmVUeXBlTmFtZXMp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM5MiwxMSArMzg4LDcgQEAgYm9vbCBJbnRy
aW5zaWNzOjphZGREZXB0aFRleHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2
ZVR5cGVEZWNsYXJhdGkKICAgICAgICAgdGV4dHVyZSA9IG1fdGV4dHVyZURlcHRoQ3ViZTsKICAg
ICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHVuc2lnbmVkIGlubmVy
VHlwZUluZGV4ID0gV1RGX0FSUkFZX0xFTkdUSChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKG1fZGVwdGhUZXh0
dXJlSW5uZXJUeXBlcyk7ICsraSkgewotICAgICAgICBpZiAoaW5uZXJUeXBlLm5hbWUoKSA9PSBt
X2RlcHRoVGV4dHVyZUlubmVyVHlwZXNbaV0pCi0gICAgICAgICAgICBpbm5lclR5cGVJbmRleCA9
IGk7Ci0gICAgfQorICAgIGF1dG8gaW5uZXJUeXBlSW5kZXggPSBzdGQ6OmZpbmQobV9kZXB0aFRl
eHR1cmVJbm5lclR5cGVzLCBtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMgKyBXVEZfQVJSQVlfTEVO
R1RIKG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlcyksIGlubmVyVHlwZS5uYW1lKCkpIC0gbV9kZXB0
aFRleHR1cmVJbm5lclR5cGVzOwogICAgIEFTU0VSVChpbm5lclR5cGVJbmRleCAhPSBXVEZfQVJS
QVlfTEVOR1RIKG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlcykpOwogICAgIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5zZXRJc1RleHR1cmUoKTsKICAgICB0ZXh0dXJlW2lubmVyVHlwZUluZGV4XSA9ICZu
YXRpdmVUeXBlRGVjbGFyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcAppbmRleCBmODBk
YTk5NzU4ZC4uNzViNGFlM2QzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcApAQCAtMzA2
LDcgKzMwNiw2IEBAIHN0YXRpYyBPcHRpb25hbDxNb2RpZnlSZXN1bHQ+IG1vZGlmeShBU1Q6OlBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgcHJvcGVydHlBY2NlCiAgICAgICAgIGlmIChpdGVyYXRv
ci0+YmFzZSgpLnR5cGVBbm5vdGF0aW9uKCkubGVmdEFkZHJlc3NTcGFjZSgpKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIEFTU0VSVCghaXRlcmF0b3ItPmJhc2UoKS50eXBlQW5ub3RhdGlv
bigpLmlzUmlnaHRWYWx1ZSgpKTsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6UHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uPihpdGVyYXRvci0+YmFzZSgpKSk7CiAgICAgICAgIGl0ZXJhdG9yID0gJmRv
d25jYXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPihpdGVyYXRvci0+YmFzZSgpKTsK
ICAgICB9CiAgICAgYXV0byBsZWZ0RXhwcmVzc2lvbiA9IGl0ZXJhdG9yLT50YWtlQmFzZSgpOwpA
QCAtNTE5LDcgKzUxOCw2IEBAIHZvaWQgUHJvcGVydHlSZXNvbHZlcjo6dmlzaXQoQVNUOjpBc3Np
Z25tZW50RXhwcmVzc2lvbiYgYXNzaWdubWVudEV4cHJlc3Npb24pCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgQVNTRVJUKCFhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCkudHlwZUFubm90
YXRpb24oKS5pc1JpZ2h0VmFsdWUoKSk7Ci0gICAgQVNTRVJUKGlzPEFTVDo6UHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uPihhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCkpKTsKIAogICAgIGF1dG8g
dHlwZSA9IGFzc2lnbm1lbnRFeHByZXNzaW9uLnJpZ2h0KCkucmVzb2x2ZWRUeXBlKCkuY2xvbmUo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xWaXNpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
VmlzaXRvci5jcHAKaW5kZXggMjA2M2QyYTQ2ZGQuLjM0NDNkNTM2MzhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAKQEAg
LTU5LDEwICs1OSw4IEBAIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYgdW5u
YW1lZFR5cGUpCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlBvaW50
ZXJUeXBlPih1bm5hbWVkVHlwZSkpOwogICAgIGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVu
Y2VUeXBlPih1bm5hbWVkVHlwZSkpCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgQVNTRVJUKGlzPEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpOworICAgIGVsc2UK
ICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5h
bWVkVHlwZSkpOwotICAgIH0KIH0KIAogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok5hbWVkVHlw
ZSYgbmFtZWRUeXBlKQpAQCAtNzMsMTAgKzcxLDggQEAgdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6
Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpKTsKICAgICBlbHNlIGlmIChp
czxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKICAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5
cGUpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPihuYW1lZFR5cGUpKTsKKyAgICBlbHNlCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSk7Ci0gICAg
fQogfQogCiB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZp
bml0aW9uKQpAQCAtMzM2LDEwICszMzIsOCBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3Rh
dGVtZW50JiBzdGF0ZW1lbnQpCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6OlRyYXA+KHN0YXRlbWVudCkpOwogICAgIGVsc2UgaWYgKGlzPEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihzdGF0ZW1lbnQp
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6V2hpbGVMb29wPihzdGF0ZW1l
bnQpKTsKKyAgICBlbHNlCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OldoaWxlTG9vcD4oc3RhdGVtZW50KSk7Ci0gICAgfQogfQogCiB2b2lkIFZpc2l0b3I6OnZpc2l0
KEFTVDo6QnJlYWsmKQpAQCAtMzk2LDEwICszOTAsOCBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOwogICAgIGVs
c2UgaWYgKGlzPEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKSkKICAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChpczxBU1Q6
OlZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSk7CisgICAgZWxzZQogICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lv
bikpOwotICAgIH0KIH0KIAogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24m
IGRvdEV4cHJlc3Npb24pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372022</attachid>
            <date>2019-06-12 23:54:38 -0700</date>
            <delta_ts>2019-06-13 10:44:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198706-20190612235437.patch</filename>
            <type>text/plain</type>
            <size>36400</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM0ZDZmNjM1Y2JjYmFi
OTdlNTI0YTdjMGUzZGQ5NGUzZTgwM2MwNy4uMjcwMzdhZjUyZDA1MDJiZWIwN2I5MDBjM2YyMDE5
MGNhYzJmNGY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTA2LTEyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBS
ZW1vdmUgdW5uZWNlc3NhcnkgQVNTRVJUKClzIGFuZCBjbGVhbiB1cCB2aXNpdG9yIGxhbWJkYXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODcwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgbWlu
b3IgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgSWYgdGhlIGNvZGUgaXMgZ29pbmcgdG8gdW5jb25k
aXRpb25hbGx5IGRvd25jYXN0PEZvbz4oYmFyKSwgdGhlcmUncyBubyBuZWVkCisgICAgICAgIHRv
IGd1YXJkIHRoYXQgd2l0aCBhbiBBU1NFUlQoaXM8Rm9vPihiYXIpKSBiZWNhdXNlIHRoZSBkb3du
Y2FzdCgpIGNhbGwgd2lsbAorICAgICAgICBkbyB0aGF0IGF1dG9tYXRpY2FsbHkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246OnZp
c2l0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbjo6
dmlzaXQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjpyZXNvdXJjZUhlbHBlclR5cGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjptYW5nbGVkT3V0
cHV0UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6dW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElucyk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI6OmNvbnN0YW50RXhwcmVzc2lvblN0cmluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6TWV0YWw6OndyaXRlTmF0aXZlRnVuY3Rpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OndyaXRlTmF0aXZlVHlwZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpmaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6VHlwZU5hbWVyOjpjcmVhdGVOYW1lTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
TWV0YWw6OlR5cGVOYW1lcjo6aW5zZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6VHlwZU5hbWVyOjplbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpNZXRhbDo6VHlwZU5hbWVyOjplbWl0TmFtZWRUeXBlRGVmaW5pdGlvbik6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjp2aXNpdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6YXJndW1lbnRUeXBlRm9yQW5kT3ZlcmxvYWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6aW5m
ZXJUeXBlc0ZvclR5cGVBcmd1bWVudHMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMSW50cmluc2ljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6SW50cmluc2lj
czo6YWRkRnVsbFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkludHJpbnNpY3M6
OmFkZERlcHRoVGV4dHVyZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
cm9wZXJ0eVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjptb2RpZnkpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb3BlcnR5UmVzb2x2ZXI6OnZpc2l0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OlZpc2l0b3I6OnZpc2l0KToKKwogMjAxOS0wNi0xMiAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExTTF0gSG9vayB1cCBj
b21wdXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCmluZGV4IDhlZWNlYjA4YjA0
Y2QyOGM5YjhkMzU5NjQ0ZmRmMGVjZWM1MjMzMDYuLjc2NTZmNjJiNTViYjBhNzEyMmUyNzgwODNh
NzFhMzY5MGVkNTdkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCkBAIC04
OCwxNCArODgsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gV1RGOjpnZXQ8SW50ZWdlckxp
dGVyYWw+KG1fdmFyaWFudCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9p
ZCB2aXNpdChUJiYgdCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlzaXRvcj4gYXV0byB2aXNp
dChjb25zdCBWaXNpdG9yJiB2aXNpdG9yKSAtPiBkZWNsdHlwZShXVEY6OnZpc2l0KHZpc2l0b3Is
IHN0ZDo6ZGVjbHZhbDxWYXJpYW50PEludGVnZXJMaXRlcmFsLCBVbnNpZ25lZEludGVnZXJMaXRl
cmFsLCBGbG9hdExpdGVyYWwsIE51bGxMaXRlcmFsLCBCb29sZWFuTGl0ZXJhbCwgRW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsPiY+KCkpKQogICAgIHsKLSAgICAgICAgV1RGOjp2aXNpdChXVEZNb3Zl
KHQpLCBtX3ZhcmlhbnQpOworICAgICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3Zh
cmlhbnQpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgdmlzaXQoVCYm
IHQpIGNvbnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZpc2l0b3I+IGF1dG8gdmlzaXQoY29u
c3QgVmlzaXRvciYgdmlzaXRvcikgY29uc3QgLT4gZGVjbHR5cGUoV1RGOjp2aXNpdCh2aXNpdG9y
LCBzdGQ6OmRlY2x2YWw8VmFyaWFudDxJbnRlZ2VyTGl0ZXJhbCwgVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCwgRmxvYXRMaXRlcmFsLCBOdWxsTGl0ZXJhbCwgQm9vbGVhbkxpdGVyYWwsIEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbD4mPigpKSkKICAgICB7Ci0gICAgICAgIFdURjo6dmlzaXQoV1RGTW92
ZSh0KSwgbV92YXJpYW50KTsKKyAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV92
YXJpYW50KTsKICAgICB9CiAKICAgICBDb25zdGFudEV4cHJlc3Npb24gY2xvbmUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCmluZGV4IDNiYWEz
N2ZhNTRjNzU1ZmQxMzRlYmMyMzI0NTdmN2QyMjQ3NDQ5ZGIuLjAxZmI3MWUyNDBiZmEyOTVkNTQ4
NjM1N2IzNDA5NTlkNjhiOWQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRT
Y2FmZm9sZGluZy5jcHAKQEAgLTE0OCw3ICsxNDgsNiBAQCBTdHJpbmcgRW50cnlQb2ludFNjYWZm
b2xkaW5nOjpyZXNvdXJjZUhlbHBlclR5cGVzKCkKICAgICAgICAgICAgIGlmIChpdGVyYXRvciA9
PSBtX3Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgYXV0byYgdW5uYW1lZFR5cGUgPSAqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJh
dG9yLT52YWx1ZV0udW5uYW1lZFR5cGU7Ci0gICAgICAgICAgICBBU1NFUlQoaXM8QVNUOjpSZWZl
cmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpOwogICAgICAgICAgICAgYXV0byYgcmVmZXJlbmNlVHlw
ZSA9IGRvd25jYXN0PEFTVDo6UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwogICAgICAgICAg
ICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
cmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpKTsKICAgICAgICAgICAgIGF1dG8gYWRkcmVzc1Nw
YWNlID0gdG9TdHJpbmcocmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7CkBAIC0yNzcsMTAg
KzI3Niw3IEBAIFN0cmluZyBFbnRyeVBvaW50U2NhZmZvbGRpbmc6Om1hbmdsZWRPdXRwdXRQYXRo
KFZlY3RvcjxTdHJpbmc+JiBwYXRoKQogCiAgICAgQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uKiBz
dHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKICAgICBhdXRvJiB1bmlmeU5vZGUgPSBtX2Z1
bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgQVNTRVJUKGlzPEFTVDo6
TmFtZWRUeXBlPih1bmlmeU5vZGUpKTsKLSAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxB
U1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICBBU1NFUlQoaXM8QVNUOjpTdHJ1Y3R1cmVE
ZWZpbml0aW9uPihuYW1lZFR5cGUpKTsKLSAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gJmRvd25j
YXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKKyAgICBzdHJ1Y3R1cmVE
ZWZpbml0aW9uID0gJmRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4oZG93bmNhc3Q8
QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpOwogICAgIGZvciAoYXV0byYgY29tcG9uZW50IDog
cGF0aCkgewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlRGVmaW5pdGlvbik7CiAgICAgICAgIGF1
dG8qIG5leHQgPSBzdHJ1Y3R1cmVEZWZpbml0aW9uLT5maW5kKGNvbXBvbmVudCk7CkBAIC0zMTcs
OSArMzEzLDcgQEAgU3RyaW5nIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6dW5wYWNrUmVzb3VyY2Vz
QW5kTmFtZWRCdWlsdElucygpCiAgICAgICAgICAgICAgICAgYXV0byBsZW5ndGhUZW1wb3JhcnlO
YW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5sZW5ndGhJbmZvcm1h
dGlvbi0+dGVtcG9yYXJ5TmFtZTsKIAogICAgICAgICAgICAgICAgIGF1dG8mIHVubmFtZWRUeXBl
ID0gKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnVubmFtZWRUeXBl
OwotICAgICAgICAgICAgICAgIEFTU0VSVChpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KHVubmFtZWRU
eXBlKSk7Ci0gICAgICAgICAgICAgICAgYXV0byYgcmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFT
VDo6UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgICAgIGF1dG8gbWFu
Z2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJlZmVyZW5jZVR5
cGUuZWxlbWVudFR5cGUoKSk7CisgICAgICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUg
PSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpSZWZlcmVuY2VU
eXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzaXplX3QgIiwgbGVuZ3RoVGVtcG9yYXJ5TmFt
ZSwgIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwgIi54O1xuIikp
OwogICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobGVuZ3Ro
VGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPDwgMzI7XG4iKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTEZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCmluZGV4IGMwMmNiYzViMDQ3MDRiODdl
Y2E0NDM3YjA3NTYzYTFlNzFkNzRkYWEuLjAwOWQ0MzEzZDFkM2U1N2FhMzZhNGI0N2MxNDkxODc0
YzBlY2RhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCkBAIC0zOTcsNyAr
Mzk3LDYgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RmxvYXRM
aXRlcmFsJiBmbG9hdExpdGVyYWwpCiB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlz
aXQoQVNUOjpOdWxsTGl0ZXJhbCYgbnVsbExpdGVyYWwpCiB7CiAgICAgYXV0byYgdW5pZnlOb2Rl
ID0gbnVsbExpdGVyYWwucmVzb2x2ZWRUeXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgQVNTRVJUKGlz
PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpOwogICAgIGF1dG8mIHVubmFtZWRUeXBlID0g
ZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKTsKICAgICBib29sIGlzQXJyYXlS
ZWZlcmVuY2VUeXBlID0gaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKTsK
IApAQCAtNjIwLDIzICs2MTksMjEgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZp
c2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVmZXJlbmNlKQogCiBTdHJpbmcg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjb25zdGFudEV4cHJlc3Npb25TdHJpbmcoQVNUOjpD
b25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikKIHsKLSAgICBTdHJpbmcgcmVz
dWx0OwotICAgIGNvbnN0YW50RXhwcmVzc2lvbi52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShB
U1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICByZXN1bHQgPSBt
YWtlU3RyaW5nKCIiLCBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKLSAgICB9LCBbJl0oQVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAg
IHJlc3VsdCA9IG1ha2VTdHJpbmcoIiIsIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7
Ci0gICAgfSwgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKLSAgICAgICAg
cmVzdWx0ID0gbWFrZVN0cmluZygiIiwgZmxvYXRMaXRlcmFsLnZhbHVlKCkpOwotICAgIH0sIFsm
XShBU1Q6Ok51bGxMaXRlcmFsJikgewotICAgICAgICByZXN1bHQgPSAibnVsbHB0ciJfc3RyOwot
ICAgIH0sIFsmXShBU1Q6OkJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkgewotICAgICAg
ICByZXN1bHQgPSBib29sZWFuTGl0ZXJhbC52YWx1ZSgpID8gInRydWUiX3N0ciA6ICJmYWxzZSJf
c3RyOwotICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsKSB7CisgICAgcmV0dXJuIGNvbnN0YW50RXhwcmVzc2lvbi52aXNpdChX
VEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkg
LT4gU3RyaW5nIHsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIiIsIGludGVnZXJMaXRlcmFs
LnZhbHVlKCkpOworICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2ln
bmVkSW50ZWdlckxpdGVyYWwpIC0+IFN0cmluZyB7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KCIiLCB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCkpOworICAgIH0sIFsmXShBU1Q6OkZs
b2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSAtPiBTdHJpbmcgeworICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZygiIiwgZmxvYXRMaXRlcmFsLnZhbHVlKCkpOworICAgIH0sIFsmXShBU1Q6Ok51bGxM
aXRlcmFsJikgLT4gU3RyaW5nIHsKKyAgICAgICAgcmV0dXJuICJudWxscHRyIl9zdHI7CisgICAg
fSwgWyZdKEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSAtPiBTdHJpbmcgewor
ICAgICAgICByZXR1cm4gYm9vbGVhbkxpdGVyYWwudmFsdWUoKSA/ICJ0cnVlIl9zdHIgOiAiZmFs
c2UiX3N0cjsKKyAgICB9LCBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gU3RyaW5nIHsKICAgICAgICAgQVNTRVJUKGVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7CiAgICAgICAgIEFTU0VS
VChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAg
ICAgICByZXN1bHQgPSBtYWtlU3RyaW5nKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgq
ZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKSwgJy4nLCBt
X3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSkpOworICAgICAgICByZXR1cm4gbWFrZVN0
cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKmVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSksICcuJywgbV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JFbnVtZXJhdGlvbk1lbWJlcigqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0
aW9uTWVtYmVyKCkpKTsKICAgICB9KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogY2xhc3Mg
UmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIDogcHVibGljIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCmlu
ZGV4IDNhZmIxODAxODQ4ZjEwNDk5YTE2OGU1ZjQ4NmEwZDJkNDBiNTk1YjcuLmRiMzk0N2IxNmM4
NGQxMDdmNGU2ZGU5ZDExNjZkZjg1NjQxNmY4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0
aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCkBAIC0xMzQsNyArMTM0LDYgQEAgU3RyaW5nIHdyaXRlTmF0
aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlv
bkRlY2xhcmEKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlck5hbWUgPSB0
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byYgcGFyYW1ldGVyVHlwZSA9IG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCktPnVuaWZ5Tm9k
ZSgpOwotICAgICAgICBBU1NFUlQoaXM8QVNUOjpVbm5hbWVkVHlwZT4ocGFyYW1ldGVyVHlwZSkp
OwogICAgICAgICBhdXRvJiB1bm5hbWVkUGFyYW1ldGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5u
YW1lZFR5cGU+KHBhcmFtZXRlclR5cGUpOwogICAgICAgICBpZiAoaXM8QVNUOjpBcnJheVR5cGU+
KHVubmFtZWRQYXJhbWV0ZXJUeXBlKSkgewogICAgICAgICAgICAgYXV0byYgYXJyYXlQYXJhbWV0
ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRQYXJhbWV0ZXJUeXBlKTsK
QEAgLTM1MSwxMyArMzUwLDExIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhCiAgICAgaWYgKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN0YXJ0c1dpdGgoIkludGVybG9ja2VkIl9z
dHIpKSB7CiAgICAgICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UiKSB7CiAgICAgICAgICAgICBBU1NFUlQobmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDQpOwotICAgICAgICAg
ICAgQVNTRVJUKGlzPEFTVDo6UG9pbnRlclR5cGU+KCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKSk7CiAgICAgICAgICAgICBhdXRvJiBmaXJzdEFyZ3Vt
ZW50UG9pbnRlciA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KCpuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgICAgIGF1dG8gZmly
c3RBcmd1bWVudEFkZHJlc3NTcGFjZSA9IGZpcnN0QXJndW1lbnRQb2ludGVyLmFkZHJlc3NTcGFj
ZSgpOwogICAgICAgICAgICAgYXV0byBmaXJzdEFyZ3VtZW50UG9pbnRlZSA9IHR5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUoZmlyc3RBcmd1bWVudFBvaW50ZXIuZWxlbWVudFR5cGUoKSk7CiAg
ICAgICAgICAgICBhdXRvIHNlY29uZEFyZ3VtZW50ID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSk7
CiAgICAgICAgICAgICBhdXRvIHRoaXJkQXJndW1lbnQgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVsyXS0+dHlwZSgp
KTsKLSAgICAgICAgICAgIEFTU0VSVChpczxBU1Q6OlBvaW50ZXJUeXBlPigqbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbM10tPnR5cGUoKSkpOwogICAgICAgICAgICAgYXV0
byYgZm91cnRoQXJndW1lbnRQb2ludGVyID0gZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4oKm5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzNdLT50eXBlKCkpOwogICAgICAg
ICAgICAgYXV0byBmb3VydGhBcmd1bWVudEFkZHJlc3NTcGFjZSA9IGZvdXJ0aEFyZ3VtZW50UG9p
bnRlci5hZGRyZXNzU3BhY2UoKTsKICAgICAgICAgICAgIGF1dG8gZm91cnRoQXJndW1lbnRQb2lu
dGVlID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmb3VydGhBcmd1bWVudFBvaW50ZXIu
ZWxlbWVudFR5cGUoKSk7CkBAIC0zNjksMTIgKzM2NiwxMCBAQCBTdHJpbmcgd3JpdGVOYXRpdmVG
dW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYQogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAzKTsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6UG9p
bnRlclR5cGU+KCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlw
ZSgpKSk7CiAgICAgICAgIGF1dG8mIGZpcnN0QXJndW1lbnRQb2ludGVyID0gZG93bmNhc3Q8QVNU
OjpQb2ludGVyVHlwZT4oKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBd
LT50eXBlKCkpOwogICAgICAgICBhdXRvIGZpcnN0QXJndW1lbnRBZGRyZXNzU3BhY2UgPSBmaXJz
dEFyZ3VtZW50UG9pbnRlci5hZGRyZXNzU3BhY2UoKTsKICAgICAgICAgYXV0byBmaXJzdEFyZ3Vt
ZW50UG9pbnRlZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZmlyc3RBcmd1bWVudFBv
aW50ZXIuZWxlbWVudFR5cGUoKSk7CiAgICAgICAgIGF1dG8gc2Vjb25kQXJndW1lbnQgPSB0eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFt
ZXRlcnMoKVsxXS0+dHlwZSgpKTsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6UG9pbnRlclR5cGU+
KCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVsyXS0+dHlwZSgpKSk7CiAg
ICAgICAgIGF1dG8mIHRoaXJkQXJndW1lbnRQb2ludGVyID0gZG93bmNhc3Q8QVNUOjpQb2ludGVy
VHlwZT4oKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzJdLT50eXBlKCkp
OwogICAgICAgICBhdXRvIHRoaXJkQXJndW1lbnRBZGRyZXNzU3BhY2UgPSB0aGlyZEFyZ3VtZW50
UG9pbnRlci5hZGRyZXNzU3BhY2UoKTsKICAgICAgICAgYXV0byB0aGlyZEFyZ3VtZW50UG9pbnRl
ZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodGhpcmRBcmd1bWVudFBvaW50ZXIuZWxl
bWVudFR5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcAppbmRleCA0
OTQ4ZDlkZDM3NjdmYjhmY2Q2YTg0MTY4NmU5YWFhYjkyODczMDUyLi5mNTdkNWMwNzdjYzRkMmZk
OTlhZDEyMDRjMTQ3YzFhOGQ0MTk0NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdy
aXRlci5jcHAKQEAgLTcxLDkgKzcxLDcgQEAgU3RyaW5nIHdyaXRlTmF0aXZlVHlwZShBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQogICAgICAgICBBU1NF
UlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxVbmlxdWVSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4o
bmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSkpOwogICAgICAgICBhdXRv
JiB0eXBlUmVmZXJlbmNlID0gV1RGOjpnZXQ8VW5pcXVlUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pOwogICAgICAgICBhdXRv
JiB1bmlmeU5vZGUgPSB0eXBlUmVmZXJlbmNlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgQVNTRVJU
KGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKTsKICAgICAgICAgYXV0byYgbmFtZWRUeXBl
ID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgIEFTU0VSVChp
czxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSk7CiAgICAgICAgIGF1dG8m
IHBhcmFtZXRlclR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFt
ZWRUeXBlKTsKICAgICAgICAgYXV0byBwcmVmaXggPSAoWyZdKCkgLT4gU3RyaW5nIHsKICAgICAg
ICAgICAgIGlmIChwYXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAiYm9vbCIpCkBAIC0xMTYsOSArMTE0
LDcgQEAgU3RyaW5nIHdyaXRlTmF0aXZlVHlwZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYg
bmF0aXZlVHlwZURlY2xhcmF0aW9uKQogICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxVbmlxdWVSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9u
LnR5cGVBcmd1bWVudHMoKVswXSkpOwogICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gV1RG
OjpnZXQ8VW5pcXVlUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi50eXBlQXJndW1lbnRzKClbMF0pOwogICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSB0eXBlUmVm
ZXJlbmNlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6TmFtZWRUeXBlPih1
bmlmeU5vZGUpKTsKICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1l
ZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgIEFTU0VSVChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbj4obmFtZWRUeXBlKSk7CiAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSBkb3du
Y2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKICAgICAgICAgYXV0
byBwcmVmaXggPSAoWyZdKCkgLT4gU3RyaW5nIHsKICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJU
eXBlLm5hbWUoKSA9PSAiaGFsZiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKaW5kZXggNDExMzhk
ZGE2ZjhiYjNjYTIyZjQ2Y2Q2MjEwMDM4MjNmODA0Yzk1Ni4uYzNkODI3MjVhZDA5ZGIxNDIzYzQx
ZGUyNDk0YmE2MTMzNzZjZjZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcApAQCAtMjAxLDcg
KzIwMSw2IEBAIHN0YXRpYyBCYXNlVHlwZU5hbWVOb2RlJiBmaW5kKEFTVDo6VW5uYW1lZFR5cGUm
IHVubmFtZWRUeXBlLCBWZWN0b3I8VW5pcXVlUmVmPEJhCiAgICAgICAgICAgICByZXR1cm4gZmlu
ZChkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKSwg
dHlwZXMpLmNoaWxkcmVuKCk7CiAgICAgICAgIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlw
ZT4odW5uYW1lZFR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIGZpbmQoZG93bmNhc3Q8QVNUOjpB
cnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpLCB0eXBlcykuY2hp
bGRyZW4oKTsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkp
OwogICAgICAgICByZXR1cm4gZmluZChkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5
cGUpLnR5cGUoKSwgdHlwZXMpLmNoaWxkcmVuKCk7CiAgICAgfSkoKTsKICAgICBhdXRvIGl0ZXJh
dG9yID0gZmluZEluVmVjdG9yKHVubmFtZWRUeXBlLCB2ZWN0b3JUb1NlYXJjaCk7CkBAIC0zMDYs
NyArMzA1LDYgQEAgVW5pcXVlUmVmPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYW1lcjo6Y3JlYXRl
TmFtZU5vZGUoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFQKICAgICAgICAgYXV0byYgYXJyYXlS
ZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRU
eXBlKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8QXJyYXlSZWZlcmVuY2VUeXBlTmFt
ZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlSZWZlcmVuY2VUeXBl
LmFkZHJlc3NTcGFjZSgpKTsKICAgICB9Ci0gICAgQVNTRVJUKGlzPEFTVDo6QXJyYXlUeXBlPih1
bm5hbWVkVHlwZSkpOwogICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlU
eXBlPih1bm5hbWVkVHlwZSk7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8QXJyYXlUeXBlTmFt
ZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1l
bnRzKCkpOwogfQpAQCAtMzI3LDcgKzMyNSw2IEBAIHNpemVfdCBUeXBlTmFtZXI6Omluc2VydChB
U1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgVmVjdG9yPFVuaXF1ZVJlZjxCYXNlVHlwCiAg
ICAgICAgIHZlY3RvclRvSW5zZXJ0SW50byA9ICZpdGVtLT5jaGlsZHJlbigpOwogICAgICAgICBw
YXJlbnQgPSAmaXRlbTsKICAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoaXM8QVNUOjpBcnJh
eVR5cGU+KHVubmFtZWRUeXBlKSk7CiAgICAgICAgIGF1dG8mIGl0ZW0gPSB0eXBlc1tpbnNlcnQo
ZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKS50eXBlKCksIHR5cGVzKV07CiAg
ICAgICAgIHZlY3RvclRvSW5zZXJ0SW50byA9ICZpdGVtLT5jaGlsZHJlbigpOwogICAgICAgICBw
YXJlbnQgPSAmaXRlbTsKQEAgLTM5OSw3ICszOTYsNiBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdFVu
bmFtZWRUeXBlRGVmaW5pdGlvbihCYXNlVHlwZU5hbWVOb2RlJiBiYXNlVHlwZU5hbWVOb2RlLCBI
YQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHVpbnQgbGVuZ3RoO1xuIik7CiAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuIik7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKGlzPEFycmF5VHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKSk7CiAgICAg
ICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFycmF5VHlwZU5hbWVOb2RlPihiYXNlVHlw
ZU5hbWVOb2RlKTsKICAgICAgICAgQVNTRVJUKGJhc2VUeXBlTmFtZU5vZGUucGFyZW50KCkpOwog
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ0eXBlZGVmIEFycmF5PCIs
IGFycmF5VHlwZS5wYXJlbnQoKS0+bWFuZ2xlZE5hbWUoKSwgIiwgIiwgYXJyYXlUeXBlLm51bUVs
ZW1lbnRzKCksICI+ICIsIGFycmF5VHlwZS5tYW5nbGVkTmFtZSgpLCAiO1xuIikpOwpAQCAtNDE4
LDcgKzQxNCw2IEBAIHZvaWQgVHlwZU5hbWVyOjplbWl0TmFtZWRUeXBlRGVmaW5pdGlvbihBU1Q6
Ok5hbWVkVHlwZSYgbmFtZWRUeXBlLCBIYXNoU2V0PEFTVDo6CiAgICAgaWYgKGlzPEFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpKSB7CiAgICAgICAgIGF1dG8mIGVudW1lcmF0
aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihuYW1l
ZFR5cGUpOwogICAgICAgICBhdXRvJiBiYXNlVHlwZSA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi50
eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgIEFTU0VSVChpczxBU1Q6Ok5hbWVkVHlwZT4oYmFz
ZVR5cGUpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiZW51bSBj
bGFzcyAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZW51bWVyYXRpb25EZWZpbml0aW9uKSwgIiA6ICIs
IG1hbmdsZWROYW1lRm9yVHlwZShkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4oYmFzZVR5cGUpKSwg
IiB7XG4iKSk7CiAgICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25NZW1iZXIgOiBlbnVtZXJh
dGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpCiAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgbWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlv
bk1lbWJlcihlbnVtZXJhdGlvbk1lbWJlciksICIsXG4iKSk7CkBAIC00MzIsNyArNDI3LDYgQEAg
dm9pZCBUeXBlTmFtZXI6OmVtaXROYW1lZFR5cGVEZWZpbml0aW9uKEFTVDo6TmFtZWRUeXBlJiBu
YW1lZFR5cGUsIEhhc2hTZXQ8QVNUOjoKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcoIiAgICAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0dXJlRWxlbWVudC50
eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChzdHJ1Y3R1cmVFbGVt
ZW50KSwgIjtcbiIpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn07XG4iKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoaXM8QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRU
eXBlKSk7CiAgICAgICAgIGF1dG8mIHR5cGVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpUeXBl
RGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZygidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24udHlw
ZSgpKSwgJyAnLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24pLCAiO1xuIikpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TENoZWNrZXIuY3BwCmluZGV4IDE1NjFhNGYwNTBkYWY1N2ZiZTEyM2RiZTYwZTEwNDE4ZDA0MTlm
YTQuLjM1YzcwYzk3YjI0MGQ0YTI5ODkxMWMyZjljMmE0MTY2MmRmMjc4YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcApA
QCAtNjU2LDE0ICs2NTYsMTIgQEAgdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQogICAgIGF1dG8gZW51bWVyYXRpb25N
ZW1iZXJzID0gZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpOwogCiAg
ICAgYXV0byBtYXRjaEFuZENvbW1pdE1lbWJlciA9IFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
JiBtZW1iZXIpIC0+IGJvb2wgewotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAg
ICAgbWVtYmVyLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6RXhwcmVz
c2lvbiYgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIG1lbWJlci52YWx1ZSgpLT52aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkV4cHJlc3Npb24mIHZhbHVlKSAtPiBib29sIHsKICAgICAg
ICAgICAgIGF1dG8gdmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8odmFsdWUpOwogICAgICAg
ICAgICAgaWYgKCF2YWx1ZUluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KHZhbHVlSW5mby0+
cmVzb2x2aW5nVHlwZSwgKmJhc2VUeXBlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KHZh
bHVlSW5mby0+cmVzb2x2aW5nVHlwZSwgKmJhc2VUeXBlKSk7CiAgICAgICAgIH0pKTsKLSAgICAg
ICAgcmV0dXJuIHN1Y2Nlc3M7CiAgICAgfTsKIAogICAgIGZvciAoYXV0byYgbWVtYmVyIDogZW51
bWVyYXRpb25NZW1iZXJzKSB7CkBAIC02NzksMTMgKzY3NywxMyBAQCB2b2lkIENoZWNrZXI6OnZp
c2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCiAg
ICAgaW50NjRfdCBuZXh0VmFsdWUgPSAwOwogICAgIGZvciAoYXV0byYgbWVtYmVyIDogZW51bWVy
YXRpb25NZW1iZXJzKSB7CiAgICAgICAgIGlmIChtZW1iZXIuZ2V0KCkudmFsdWUoKSkgewotICAg
ICAgICAgICAgaW50NjRfdCB2YWx1ZTsKLSAgICAgICAgICAgIG1lbWJlci5nZXQoKS52YWx1ZSgp
LT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2Vy
TGl0ZXJhbCkgewotICAgICAgICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwudmFsdWVG
b3JTZWxlY3RlZFR5cGUoKTsKLSAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgICAgICB2YWx1
ZSA9IHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxlY3RlZFR5cGUoKTsKLSAgICAg
ICAgICAgIH0sIFsmXShhdXRvJikgeworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IG1lbWJlci5n
ZXQoKS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRl
cmFsJiBpbnRlZ2VyTGl0ZXJhbCkgLT4gaW50NjRfdCB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGludGVnZXJMaXRlcmFsLnZhbHVlRm9yU2VsZWN0ZWRUeXBlKCk7CisgICAgICAgICAgICB9LCBb
Jl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAt
PiBpbnQ2NF90IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bC52YWx1ZUZvclNlbGVjdGVkVHlwZSgpOworICAgICAgICAgICAgfSwgWyZdKGF1dG8mKSAtPiBp
bnQ2NF90IHsKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgIG5leHRWYWx1
ZSA9IGJhc2VUeXBlLT5zdWNjZXNzb3IoKSh2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC03
MDYsMTQgKzcwNCwxNCBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZp
bml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCiAgICAgfQogCiAgICAgYXV0byBnZXRWYWx1
ZSA9IFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJiBtZW1iZXIpIC0+IGludDY0X3QgewotICAg
ICAgICBpbnQ2NF90IHZhbHVlOwogICAgICAgICBBU1NFUlQobWVtYmVyLnZhbHVlKCkpOwotICAg
ICAgICBtZW1iZXIudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRl
Z2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIHZhbHVlID0gaW50ZWdl
ckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgdmFsdWUgPSB1bnNp
Z25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShhdXRvJikgeworICAg
ICAgICBhdXRvIHZhbHVlID0gbWVtYmVyLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3Io
WyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSAtPiBpbnQ2NF90IHsKKyAg
ICAgICAgICAgIHJldHVybiBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOworICAgICAgICB9LCBbJl0o
QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBp
bnQ2NF90IHsKKyAgICAgICAgICAgIHJldHVybiB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVl
KCk7CisgICAgICAgIH0sIFsmXShhdXRvJikgLT4gaW50NjRfdCB7CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9KSk7CiAg
ICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9OwpAQCAtOTc3LDcgKzk3NSw2IEBAIHN0YXRpYyBP
cHRpb25hbDxVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4+IGFyZ3VtZW50VHlwZUZvckFuZE92
ZXJsb2FkKEFTVDo6VW5uCiAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpQb2lu
dGVyVHlwZT4oTGV4ZXI6OlRva2VuKG5hbWVkVHlwZS5vcmlnaW4oKSksIGFkZHJlc3NTcGFjZSwg
QVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihuYW1lZFR5cGUub3JpZ2luKCkp
LCBuYW1lZFR5cGUpKSB9OwogICAgIH0KIAotICAgIEFTU0VSVChpczxBU1Q6OlVubmFtZWRUeXBl
Pih1bmlmeU5vZGUpKTsKICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5u
YW1lZFR5cGU+KHVuaWZ5Tm9kZSk7CiAKICAgICBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5
cGU+KHVubmFtZWRUeXBlKSkKQEAgLTEzMDUsMjAgKzEzMDIsMTkgQEAgdm9pZCBDaGVja2VyOjp2
aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQogICAgICAgICAgICAg
aGFzRGVmYXVsdCA9IHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAg
ICAgICBib29sIHN1Y2Nlc3M7Ci0gICAgICAgIHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RG
OjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsK
LSAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgq
dmFsdWVUeXBlLCBpbnRlZ2VyTGl0ZXJhbC50eXBlKCkpKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAgICAg
ICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KCp2YWx1ZVR5
cGUsIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudHlwZSgpKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6
OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSB7Ci0gICAgICAgICAgICBzdWNjZXNzID0gc3Rh
dGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwgZmxvYXRMaXRlcmFsLnR5
cGUoKSkpOwotICAgICAgICB9LCBbJl0oQVNUOjpOdWxsTGl0ZXJhbCYgbnVsbExpdGVyYWwpIHsK
LSAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgq
dmFsdWVUeXBlLCBudWxsTGl0ZXJhbC50eXBlKCkpKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6Qm9v
bGVhbkxpdGVyYWwmKSB7Ci0gICAgICAgICAgICBzdWNjZXNzID0gbWF0Y2hlcygqdmFsdWVUeXBl
LCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSB7CisgICAgICAgIGF1
dG8gc3VjY2VzcyA9IHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihb
Jl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgeworICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KCp2YWx1ZVR5cGUs
IGludGVnZXJMaXRlcmFsLnR5cGUoKSkpOworICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKKyAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgqdmFsdWVUeXBlLCB1
bnNpZ25lZEludGVnZXJMaXRlcmFsLnR5cGUoKSkpOworICAgICAgICB9LCBbJl0oQVNUOjpGbG9h
dExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwgZmxvYXRMaXRlcmFsLnR5
cGUoKSkpOworICAgICAgICB9LCBbJl0oQVNUOjpOdWxsTGl0ZXJhbCYgbnVsbExpdGVyYWwpIC0+
IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29t
bWl0KCp2YWx1ZVR5cGUsIG51bGxMaXRlcmFsLnR5cGUoKSkpOworICAgICAgICB9LCBbJl0oQVNU
OjpCb29sZWFuTGl0ZXJhbCYpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMo
KnZhbHVlVHlwZSwgbV9pbnRyaW5zaWNzLmJvb2xUeXBlKCkpOworICAgICAgICB9LCBbJl0oQVNU
OjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4g
Ym9vbCB7CiAgICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1l
cmF0aW9uRGVmaW5pdGlvbigpKTsKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBtYXRjaGVzKCp2YWx1
ZVR5cGUsICplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkp
OworICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMoKnZhbHVlVHlwZSwgKmVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7CiAgICAgICAgIH0pKTsKICAgICAg
ICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgICAgICBzZXRFcnJvcigpOwpAQCAtMTMzOSwzMSAr
MTMzNSwzNyBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50JiBzd2l0
Y2hTdGF0ZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICAgICAgZmlyc3RDYXNlLnZh
bHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGZp
cnN0SW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgICAgICBzZWNvbmRDYXNlLnZhbHVlKCkt
PnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIHNlY29uZElu
dGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmaXJzdEludGVn
ZXJMaXRlcmFsLnZhbHVlKCkgIT0gc2Vjb25kSW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAg
ICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBzZWNvbmRVbnNp
Z25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0
aWNfY2FzdDxpbnQ2NF90PihmaXJzdEludGVnZXJMaXRlcmFsLnZhbHVlKCkpICE9IHN0YXRpY19j
YXN0PGludDY0X3Q+KHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci0gICAg
ICAgICAgICAgICAgfSwgW10oYXV0byYpIHsKKyAgICAgICAgICAgIGF1dG8gc3VjY2VzcyA9IGZp
cnN0Q2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJM
aXRlcmFsJiBmaXJzdEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2Vjb25kQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6
OkludGVnZXJMaXRlcmFsJiBzZWNvbmRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmaXJzdEludGVnZXJMaXRlcmFsLnZhbHVlKCkgIT0gc2Vjb25k
SW50ZWdlckxpdGVyYWwudmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsJiBzZWNvbmRVbnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBib29s
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KGZpcnN0
SW50ZWdlckxpdGVyYWwudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2Vjb25kVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICB9LCBbXShhdXRv
JikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgICAgIH0pKTsKLSAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVy
YWwmIGZpcnN0VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgICAgIHNlY29u
ZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0
ZXJhbCYgc2Vjb25kSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgc3VjY2Vz
cyA9IHN0YXRpY19jYXN0PGludDY0X3Q+KGZpcnN0VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1
ZSgpKSAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzZWNvbmRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgp
KTsKLSAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBz
ZWNvbmRVbnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBmaXJzdFVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSAhPSBzZWNvbmRVbnNpZ25l
ZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIHsK
KyAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIGZpcnN0VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNl
Y29uZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2Vy
TGl0ZXJhbCYgc2Vjb25kSW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4oZmlyc3RVbnNpZ25lZEludGVnZXJMaXRl
cmFsLnZhbHVlKCkpICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KHNlY29uZEludGVnZXJMaXRlcmFs
LnZhbHVlKCkpOworICAgICAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWwmIHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmlyc3RVbnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCkgIT0g
c2Vjb25kVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOworICAgICAgICAgICAgICAgIH0s
IFtdKGF1dG8mKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgfSwgWyZdKEFTVDo6RW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsJiBmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgewotICAgICAgICAg
ICAgICAgIHNlY29uZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNU
OjpJbnRlZ2VyTGl0ZXJhbCYpIHsKLSAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwmIHNlY29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgeworICAg
ICAgICAgICAgfSwgWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBmaXJzdEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNl
Y29uZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwmIHNlY29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gYm9v
bCB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHNl
Y29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsKLSAgICAg
ICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZpcnN0RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVu
dW1lcmF0aW9uTWVtYmVyKCkgIT0gc2Vjb25kRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1l
cmF0aW9uTWVtYmVyKCk7Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZpcnN0RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0
aW9uTWVtYmVyKCkgIT0gc2Vjb25kRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9u
TWVtYmVyKCk7CisgICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAg
ICAgICB9LCBbXShhdXRvJikgeworICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfSkpOworICAgICAgICAg
ICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgc2V0RXJyb3IoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEz
NzIsMTMgKzEzNzQsMTMgQEAgdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVu
dCYgc3dpdGNoU3RhdGVtZW50KQogICAgICAgICAgICAgSGFzaFNldDxpbnQ2NF90PiB2YWx1ZXM7
CiAgICAgICAgICAgICBib29sIHplcm9WYWx1ZUV4aXN0czsKICAgICAgICAgICAgIGZvciAoYXV0
byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKSB7Ci0gICAgICAg
ICAgICAgICAgaW50NjRfdCB2YWx1ZTsKLSAgICAgICAgICAgICAgICBzd2l0Y2hDYXNlLnZhbHVl
KCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVn
ZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwu
dmFsdWVGb3JTZWxlY3RlZFR5cGUoKTsKLSAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhbHVlID0gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZUZvclNlbGVjdGVk
VHlwZSgpOwotICAgICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSB7CisgICAgICAgICAgICAgICAg
YXV0byB2YWx1ZSA9IHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihb
Jl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIC0+IGludDY0X3QgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxlY3RlZFR5
cGUoKTsKKyAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
JiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBpbnQ2NF90IHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxlY3RlZFR5cGUoKTsK
KyAgICAgICAgICAgICAgICB9LCBbXShhdXRvJikgLT4gaW50NjRfdCB7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkKICAg
ICAgICAgICAgICAgICAgICAgemVyb1ZhbHVlRXhpc3RzID0gdHJ1ZTsKQEAgLTE0MDUsNyArMTQw
Nyw2IEBAIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0
YXRlbWVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRp
b24+KCp2YWx1ZVR5cGUpKTsKICAgICAgICAgICAgIEhhc2hTZXQ8QVNUOjpFbnVtZXJhdGlvbk1l
bWJlcio+IHZhbHVlczsKICAgICAgICAgICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRj
aFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoQ2FzZS52
YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcAppbmRleCBm
NTY1Y2ZkMDg5MDIwZTA0NTg3MTg5YThjNGJmZjEyMTk2NGI0MzYzLi45YjMxZDkyYTAxMTIwYjYw
MzY0Y2VlNWIxOGQ1YTAxM2E2YjJlMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKQEAgLTE4OCw3ICsxODgs
NiBAQCBib29sIGluZmVyVHlwZXNGb3JUeXBlQXJndW1lbnRzKEFTVDo6TmFtZWRUeXBlJiBwb3Nz
aWJsZVR5cGUsIEFTVDo6VHlwZUFyZ3VtZW50cwogICAgICAgICByZXR1cm4gdHlwZUFyZ3VtZW50
cy5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgQVNTRVJUKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPihwb3NzaWJsZVR5cGUpKTsKICAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24g
PSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocG9zc2libGVUeXBlKTsKICAg
ICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgIT0gdHlw
ZUFyZ3VtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuY3BwCmlu
ZGV4IGNiOWQ4ZDFmYzg1YWZkOGQxM2Q5ZmI2Y2MwMjI1YTRiODRjMzgzNjIuLjAzMTNkYmNlZGNh
OWViNzM0OTI4ZWY5NDBiMTE3MDVkNTliMWE2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcApAQCAtMzQ3LDEx
ICszNDcsNyBAQCBib29sIEludHJpbnNpY3M6OmFkZE1hdHJpeChBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQogCiBib29sIEludHJpbnNpY3M6OmFkZEZ1
bGxUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRp
b24sIEFTVDo6VHlwZVJlZmVyZW5jZSYgaW5uZXJUeXBlKQogewotICAgIHVuc2lnbmVkIHRleHR1
cmVUeXBlSW5kZXggPSBXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZVR5cGVOYW1lcyk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlVHlwZU5h
bWVzKTsgKytpKSB7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09
IG1fdGV4dHVyZVR5cGVOYW1lc1tpXSkKLSAgICAgICAgICAgIHRleHR1cmVUeXBlSW5kZXggPSBp
OwotICAgIH0KKyAgICBhdXRvIHRleHR1cmVUeXBlSW5kZXggPSBzdGQ6OmZpbmQobV90ZXh0dXJl
VHlwZU5hbWVzLCBtX3RleHR1cmVUeXBlTmFtZXMgKyBXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVy
ZVR5cGVOYW1lcyksIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkpIC0gbV90ZXh0dXJlVHlw
ZU5hbWVzOwogICAgIGlmICh0ZXh0dXJlVHlwZUluZGV4ID09IFdURl9BUlJBWV9MRU5HVEgobV90
ZXh0dXJlVHlwZU5hbWVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zOTIsMTEgKzM4
OCw3IEBAIGJvb2wgSW50cmluc2ljczo6YWRkRGVwdGhUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpCiAgICAgICAgIHRleHR1cmUgPSBtX3RleHR1
cmVEZXB0aEN1YmU7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICB1bnNpZ25lZCBpbm5lclR5cGVJbmRleCA9IFdURl9BUlJBWV9MRU5HVEgobV9kZXB0aFRleHR1
cmVJbm5lclR5cGVzKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xF
TkdUSChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpOyArK2kpIHsKLSAgICAgICAgaWYgKGlubmVy
VHlwZS5uYW1lKCkgPT0gbV9kZXB0aFRleHR1cmVJbm5lclR5cGVzW2ldKQotICAgICAgICAgICAg
aW5uZXJUeXBlSW5kZXggPSBpOwotICAgIH0KKyAgICBhdXRvIGlubmVyVHlwZUluZGV4ID0gc3Rk
OjpmaW5kKG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlcywgbV9kZXB0aFRleHR1cmVJbm5lclR5cGVz
ICsgV1RGX0FSUkFZX0xFTkdUSChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpLCBpbm5lclR5cGUu
bmFtZSgpKSAtIG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlczsKICAgICBBU1NFUlQoaW5uZXJUeXBl
SW5kZXggIT0gV1RGX0FSUkFZX0xFTkdUSChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMpKTsKICAg
ICBuYXRpdmVUeXBlRGVjbGFyYXRpb24uc2V0SXNUZXh0dXJlKCk7CiAgICAgdGV4dHVyZVtpbm5l
clR5cGVJbmRleF0gPSAmbmF0aXZlVHlwZURlY2xhcmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvcGVydHlSZXNvbHZl
ci5jcHAKaW5kZXggZjgwZGE5OTc1OGQ4NDlhMmVjMTg5NjM0ZjNmMzI0NGE0MTUxOTU2ZC4uNzVi
NGFlM2QzY2M1YjkzODFiZTNiNTEwNmUzNTdlYWI5NWQ1ZjdhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9wZXJ0eVJlc29sdmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb3BlcnR5UmVz
b2x2ZXIuY3BwCkBAIC0zMDYsNyArMzA2LDYgQEAgc3RhdGljIE9wdGlvbmFsPE1vZGlmeVJlc3Vs
dD4gbW9kaWZ5KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBwcm9wZXJ0eUFjY2UKICAg
ICAgICAgaWYgKGl0ZXJhdG9yLT5iYXNlKCkudHlwZUFubm90YXRpb24oKS5sZWZ0QWRkcmVzc1Nw
YWNlKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgQVNTRVJUKCFpdGVyYXRvci0+YmFz
ZSgpLnR5cGVBbm5vdGF0aW9uKCkuaXNSaWdodFZhbHVlKCkpOwotICAgICAgICBBU1NFUlQoaXM8
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KGl0ZXJhdG9yLT5iYXNlKCkpKTsKICAgICAg
ICAgaXRlcmF0b3IgPSAmZG93bmNhc3Q8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KGl0
ZXJhdG9yLT5iYXNlKCkpOwogICAgIH0KICAgICBhdXRvIGxlZnRFeHByZXNzaW9uID0gaXRlcmF0
b3ItPnRha2VCYXNlKCk7CkBAIC01MTksNyArNTE4LDYgQEAgdm9pZCBQcm9wZXJ0eVJlc29sdmVy
Ojp2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lvbikK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoIWFzc2lnbm1lbnRFeHByZXNzaW9u
LmxlZnQoKS50eXBlQW5ub3RhdGlvbigpLmlzUmlnaHRWYWx1ZSgpKTsKLSAgICBBU1NFUlQoaXM8
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KGFzc2lnbm1lbnRFeHByZXNzaW9uLmxlZnQo
KSkpOwogCiAgICAgYXV0byB0eXBlID0gYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKS5yZXNv
bHZlZFR5cGUoKS5jbG9uZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAppbmRleCAyMDYzZDJhNDZkZDBhYTRmYTZmMTVj
NGY4ODQyNDM5ZTYyODNjNjBmLi4zNDQzZDUzNjM4YWVmMTI2ODg5ZDMzMmIzZjVhN2YzNTZlOTQ3
ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFZpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMVmlzaXRvci5jcHAKQEAgLTU5LDEwICs1OSw4IEBAIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNU
OjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkpOwogICAgIGVsc2UgaWYgKGlz
PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpCiAgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUp
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6QXJyYXlUeXBlPih1bm5hbWVk
VHlwZSkpOworICAgIGVsc2UKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFT
VDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpOwotICAgIH0KIH0KIAogdm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQpAQCAtNzMsMTAgKzcxLDggQEAgdm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQogICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUp
KTsKICAgICBlbHNlIGlmIChpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4obmFtZWRUeXBl
KSkKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25E
ZWZpbml0aW9uPihuYW1lZFR5cGUpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGlzPEFT
VDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKTsKKyAgICBlbHNlCiAgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
bmFtZWRUeXBlKSk7Ci0gICAgfQogfQogCiB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VHlwZURl
ZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQpAQCAtMzM2LDEwICszMzIsOCBAQCB2b2lkIFZpc2l0
b3I6OnZpc2l0KEFTVDo6U3RhdGVtZW50JiBzdGF0ZW1lbnQpCiAgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OlRyYXA+KHN0YXRlbWVudCkpOwogICAgIGVsc2UgaWYgKGlz
PEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCiAgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6
V2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKKyAgICBlbHNlCiAgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChkb3duY2FzdDxBU1Q6OldoaWxlTG9vcD4oc3RhdGVtZW50KSk7Ci0gICAgfQogfQogCiB2
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QnJlYWsmKQpAQCAtMzk2LDEwICszOTAsOCBAQCB2b2lk
IFZpc2l0b3I6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKICAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhw
cmVzc2lvbikpOwogICAgIGVsc2UgaWYgKGlzPEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
PihleHByZXNzaW9uKSkKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKSk7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIEFTU0VSVChpczxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSk7CisgICAg
ZWxzZQogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJl
ZmVyZW5jZT4oZXhwcmVzc2lvbikpOwotICAgIH0KIH0KIAogdm9pZCBWaXNpdG9yOjp2aXNpdChB
U1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372066</attachid>
            <date>2019-06-13 10:44:49 -0700</date>
            <delta_ts>2019-06-13 12:55:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198706-20190613104448.patch</filename>
            <type>text/plain</type>
            <size>38704</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjM0ZDZmNjM1Y2JjYmFi
OTdlNTI0YTdjMGUzZGQ5NGUzZTgwM2MwNy4uMjcwMzdhZjUyZDA1MDJiZWIwN2I5MDBjM2YyMDE5
MGNhYzJmNGY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTA2LTEyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBS
ZW1vdmUgdW5uZWNlc3NhcnkgQVNTRVJUKClzIGFuZCBjbGVhbiB1cCB2aXNpdG9yIGxhbWJkYXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODcwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUgbWlu
b3IgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgSWYgdGhlIGNvZGUgaXMgZ29pbmcgdG8gdW5jb25k
aXRpb25hbGx5IGRvd25jYXN0PEZvbz4oYmFyKSwgdGhlcmUncyBubyBuZWVkCisgICAgICAgIHRv
IGd1YXJkIHRoYXQgd2l0aCBhbiBBU1NFUlQoaXM8Rm9vPihiYXIpKSBiZWNhdXNlIHRoZSBkb3du
Y2FzdCgpIGNhbGwgd2lsbAorICAgICAgICBkbyB0aGF0IGF1dG9tYXRpY2FsbHkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246OnZp
c2l0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbjo6
dmlzaXQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
RW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjpyZXNvdXJjZUhlbHBlclR5cGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpNZXRhbDo6RW50cnlQb2ludFNjYWZmb2xkaW5nOjptYW5nbGVkT3V0
cHV0UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkVudHJ5UG9pbnRTY2Fm
Zm9sZGluZzo6dW5wYWNrUmVzb3VyY2VzQW5kTmFtZWRCdWlsdElucyk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OkZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjpGdW5jdGlvbkRlZmluaXRpb25Xcml0
ZXI6OmNvbnN0YW50RXhwcmVzc2lvblN0cmluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6TWV0YWw6OndyaXRlTmF0aXZlRnVuY3Rpb24pOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdyaXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OndyaXRlTmF0aXZlVHlwZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6Ok1ldGFsOjpmaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6VHlwZU5hbWVyOjpjcmVhdGVOYW1lTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
TWV0YWw6OlR5cGVOYW1lcjo6aW5zZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpNZXRh
bDo6VHlwZU5hbWVyOjplbWl0VW5uYW1lZFR5cGVEZWZpbml0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpNZXRhbDo6VHlwZU5hbWVyOjplbWl0TmFtZWRUeXBlRGVmaW5pdGlvbik6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpDaGVja2VyOjp2aXNpdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6YXJndW1lbnRUeXBlRm9yQW5kT3ZlcmxvYWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6aW5m
ZXJUeXBlc0ZvclR5cGVBcmd1bWVudHMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMSW50cmluc2ljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6SW50cmluc2lj
czo6YWRkRnVsbFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkludHJpbnNpY3M6
OmFkZERlcHRoVGV4dHVyZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQ
cm9wZXJ0eVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjptb2RpZnkpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb3BlcnR5UmVzb2x2ZXI6OnZpc2l0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OlZpc2l0b3I6OnZpc2l0KToKKwogMjAxOS0wNi0xMiAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExTTF0gSG9vayB1cCBj
b21wdXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCmluZGV4IDhlZWNlYjA4YjA0
Y2QyOGM5YjhkMzU5NjQ0ZmRmMGVjZWM1MjMzMDYuLjc2NTZmNjJiNTViYjBhNzEyMmUyNzgwODNh
NzFhMzY5MGVkNTdkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCkBAIC04
OCwxNCArODgsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gV1RGOjpnZXQ8SW50ZWdlckxp
dGVyYWw+KG1fdmFyaWFudCk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9p
ZCB2aXNpdChUJiYgdCkKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlzaXRvcj4gYXV0byB2aXNp
dChjb25zdCBWaXNpdG9yJiB2aXNpdG9yKSAtPiBkZWNsdHlwZShXVEY6OnZpc2l0KHZpc2l0b3Is
IHN0ZDo6ZGVjbHZhbDxWYXJpYW50PEludGVnZXJMaXRlcmFsLCBVbnNpZ25lZEludGVnZXJMaXRl
cmFsLCBGbG9hdExpdGVyYWwsIE51bGxMaXRlcmFsLCBCb29sZWFuTGl0ZXJhbCwgRW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsPiY+KCkpKQogICAgIHsKLSAgICAgICAgV1RGOjp2aXNpdChXVEZNb3Zl
KHQpLCBtX3ZhcmlhbnQpOworICAgICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX3Zh
cmlhbnQpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgdmlzaXQoVCYm
IHQpIGNvbnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZpc2l0b3I+IGF1dG8gdmlzaXQoY29u
c3QgVmlzaXRvciYgdmlzaXRvcikgY29uc3QgLT4gZGVjbHR5cGUoV1RGOjp2aXNpdCh2aXNpdG9y
LCBzdGQ6OmRlY2x2YWw8VmFyaWFudDxJbnRlZ2VyTGl0ZXJhbCwgVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCwgRmxvYXRMaXRlcmFsLCBOdWxsTGl0ZXJhbCwgQm9vbGVhbkxpdGVyYWwsIEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbD4mPigpKSkKICAgICB7Ci0gICAgICAgIFdURjo6dmlzaXQoV1RGTW92
ZSh0KSwgbV92YXJpYW50KTsKKyAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgbV92
YXJpYW50KTsKICAgICB9CiAKICAgICBDb25zdGFudEV4cHJlc3Npb24gY2xvbmUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvTWV0YWwvV0hMU0xFbnRyeVBvaW50U2NhZmZvbGRpbmcuY3BwCmluZGV4IDNiYWEz
N2ZhNTRjNzU1ZmQxMzRlYmMyMzI0NTdmN2QyMjQ3NDQ5ZGIuLjAxZmI3MWUyNDBiZmEyOTVkNTQ4
NjM1N2IzNDA5NTlkNjhiOWQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMRW50cnlQb2ludFNjYWZmb2xkaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEVudHJ5UG9pbnRT
Y2FmZm9sZGluZy5jcHAKQEAgLTE0OCw3ICsxNDgsNiBAQCBTdHJpbmcgRW50cnlQb2ludFNjYWZm
b2xkaW5nOjpyZXNvdXJjZUhlbHBlclR5cGVzKCkKICAgICAgICAgICAgIGlmIChpdGVyYXRvciA9
PSBtX3Jlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgYXV0byYgdW5uYW1lZFR5cGUgPSAqbV9lbnRyeVBvaW50SXRlbXMuaW5wdXRzW2l0ZXJh
dG9yLT52YWx1ZV0udW5uYW1lZFR5cGU7Ci0gICAgICAgICAgICBBU1NFUlQoaXM8QVNUOjpSZWZl
cmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpOwogICAgICAgICAgICAgYXV0byYgcmVmZXJlbmNlVHlw
ZSA9IGRvd25jYXN0PEFTVDo6UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwogICAgICAgICAg
ICAgYXV0byBtYW5nbGVkVHlwZU5hbWUgPSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUo
cmVmZXJlbmNlVHlwZS5lbGVtZW50VHlwZSgpKTsKICAgICAgICAgICAgIGF1dG8gYWRkcmVzc1Nw
YWNlID0gdG9TdHJpbmcocmVmZXJlbmNlVHlwZS5hZGRyZXNzU3BhY2UoKSk7CkBAIC0yNzcsMTAg
KzI3Niw3IEBAIFN0cmluZyBFbnRyeVBvaW50U2NhZmZvbGRpbmc6Om1hbmdsZWRPdXRwdXRQYXRo
KFZlY3RvcjxTdHJpbmc+JiBwYXRoKQogCiAgICAgQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uKiBz
dHJ1Y3R1cmVEZWZpbml0aW9uID0gbnVsbHB0cjsKICAgICBhdXRvJiB1bmlmeU5vZGUgPSBtX2Z1
bmN0aW9uRGVmaW5pdGlvbi50eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgQVNTRVJUKGlzPEFTVDo6
TmFtZWRUeXBlPih1bmlmeU5vZGUpKTsKLSAgICBhdXRvJiBuYW1lZFR5cGUgPSBkb3duY2FzdDxB
U1Q6Ok5hbWVkVHlwZT4odW5pZnlOb2RlKTsKLSAgICBBU1NFUlQoaXM8QVNUOjpTdHJ1Y3R1cmVE
ZWZpbml0aW9uPihuYW1lZFR5cGUpKTsKLSAgICBzdHJ1Y3R1cmVEZWZpbml0aW9uID0gJmRvd25j
YXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKKyAgICBzdHJ1Y3R1cmVE
ZWZpbml0aW9uID0gJmRvd25jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4oZG93bmNhc3Q8
QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpOwogICAgIGZvciAoYXV0byYgY29tcG9uZW50IDog
cGF0aCkgewogICAgICAgICBBU1NFUlQoc3RydWN0dXJlRGVmaW5pdGlvbik7CiAgICAgICAgIGF1
dG8qIG5leHQgPSBzdHJ1Y3R1cmVEZWZpbml0aW9uLT5maW5kKGNvbXBvbmVudCk7CkBAIC0zMTcs
OSArMzEzLDcgQEAgU3RyaW5nIEVudHJ5UG9pbnRTY2FmZm9sZGluZzo6dW5wYWNrUmVzb3VyY2Vz
QW5kTmFtZWRCdWlsdElucygpCiAgICAgICAgICAgICAgICAgYXV0byBsZW5ndGhUZW1wb3JhcnlO
YW1lID0gbV9uYW1lZEJpbmRHcm91cHNbaV0ubmFtZWRCaW5kaW5nc1tqXS5sZW5ndGhJbmZvcm1h
dGlvbi0+dGVtcG9yYXJ5TmFtZTsKIAogICAgICAgICAgICAgICAgIGF1dG8mIHVubmFtZWRUeXBl
ID0gKm1fZW50cnlQb2ludEl0ZW1zLmlucHV0c1tpdGVyYXRvci0+dmFsdWVdLnVubmFtZWRUeXBl
OwotICAgICAgICAgICAgICAgIEFTU0VSVChpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KHVubmFtZWRU
eXBlKSk7Ci0gICAgICAgICAgICAgICAgYXV0byYgcmVmZXJlbmNlVHlwZSA9IGRvd25jYXN0PEFT
VDo6UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpOwotICAgICAgICAgICAgICAgIGF1dG8gbWFu
Z2xlZFR5cGVOYW1lID0gbV90eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJlZmVyZW5jZVR5
cGUuZWxlbWVudFR5cGUoKSk7CisgICAgICAgICAgICAgICAgYXV0byBtYW5nbGVkVHlwZU5hbWUg
PSBtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZG93bmNhc3Q8QVNUOjpSZWZlcmVuY2VU
eXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKSk7CiAKICAgICAgICAgICAgICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJzaXplX3QgIiwgbGVuZ3RoVGVtcG9yYXJ5TmFt
ZSwgIiA9ICIsIHZhcmlhYmxlTmFtZSwgJy4nLCBsZW5ndGhFbGVtZW50TmFtZSwgIi54O1xuIikp
OwogICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1ha2VTdHJpbmcobGVuZ3Ro
VGVtcG9yYXJ5TmFtZSwgIiA9ICIsIGxlbmd0aFRlbXBvcmFyeU5hbWUsICIgPDwgMzI7XG4iKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9X
SExTTEZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCmluZGV4IGMwMmNiYzViMDQ3MDRiODdl
Y2E0NDM3YjA3NTYzYTFlNzFkNzRkYWEuLjAwOWQ0MzEzZDFkM2U1N2FhMzZhNGI0N2MxNDkxODc0
YzBlY2RhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCkBAIC0zOTcsNyAr
Mzk3LDYgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZpc2l0KEFTVDo6RmxvYXRM
aXRlcmFsJiBmbG9hdExpdGVyYWwpCiB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlz
aXQoQVNUOjpOdWxsTGl0ZXJhbCYgbnVsbExpdGVyYWwpCiB7CiAgICAgYXV0byYgdW5pZnlOb2Rl
ID0gbnVsbExpdGVyYWwucmVzb2x2ZWRUeXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgQVNTRVJUKGlz
PEFTVDo6VW5uYW1lZFR5cGU+KHVuaWZ5Tm9kZSkpOwogICAgIGF1dG8mIHVubmFtZWRUeXBlID0g
ZG93bmNhc3Q8QVNUOjpVbm5hbWVkVHlwZT4odW5pZnlOb2RlKTsKICAgICBib29sIGlzQXJyYXlS
ZWZlcmVuY2VUeXBlID0gaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKTsK
IApAQCAtNjIwLDIzICs2MTksMjEgQEAgdm9pZCBGdW5jdGlvbkRlZmluaXRpb25Xcml0ZXI6OnZp
c2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxlUmVmZXJlbmNlKQogCiBTdHJpbmcg
RnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyOjpjb25zdGFudEV4cHJlc3Npb25TdHJpbmcoQVNUOjpD
b25zdGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikKIHsKLSAgICBTdHJpbmcgcmVz
dWx0OwotICAgIGNvbnN0YW50RXhwcmVzc2lvbi52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShB
U1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICByZXN1bHQgPSBt
YWtlU3RyaW5nKCIiLCBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKLSAgICB9LCBbJl0oQVNUOjpV
bnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAg
IHJlc3VsdCA9IG1ha2VTdHJpbmcoIiIsIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7
Ci0gICAgfSwgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9hdExpdGVyYWwpIHsKLSAgICAgICAg
cmVzdWx0ID0gbWFrZVN0cmluZygiIiwgZmxvYXRMaXRlcmFsLnZhbHVlKCkpOwotICAgIH0sIFsm
XShBU1Q6Ok51bGxMaXRlcmFsJikgewotICAgICAgICByZXN1bHQgPSAibnVsbHB0ciJfc3RyOwot
ICAgIH0sIFsmXShBU1Q6OkJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkgewotICAgICAg
ICByZXN1bHQgPSBib29sZWFuTGl0ZXJhbC52YWx1ZSgpID8gInRydWUiX3N0ciA6ICJmYWxzZSJf
c3RyOwotICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsKSB7CisgICAgcmV0dXJuIGNvbnN0YW50RXhwcmVzc2lvbi52aXNpdChX
VEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkg
LT4gU3RyaW5nIHsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIiIsIGludGVnZXJMaXRlcmFs
LnZhbHVlKCkpOworICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2ln
bmVkSW50ZWdlckxpdGVyYWwpIC0+IFN0cmluZyB7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KCIiLCB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCkpOworICAgIH0sIFsmXShBU1Q6OkZs
b2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSAtPiBTdHJpbmcgeworICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZygiIiwgZmxvYXRMaXRlcmFsLnZhbHVlKCkpOworICAgIH0sIFsmXShBU1Q6Ok51bGxM
aXRlcmFsJikgLT4gU3RyaW5nIHsKKyAgICAgICAgcmV0dXJuICJudWxscHRyIl9zdHI7CisgICAg
fSwgWyZdKEFTVDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSAtPiBTdHJpbmcgewor
ICAgICAgICByZXR1cm4gYm9vbGVhbkxpdGVyYWwudmFsdWUoKSA/ICJ0cnVlIl9zdHIgOiAiZmFs
c2UiX3N0cjsKKyAgICB9LCBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gU3RyaW5nIHsKICAgICAgICAgQVNTRVJUKGVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7CiAgICAgICAgIEFTU0VS
VChlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkpOwotICAg
ICAgICByZXN1bHQgPSBtYWtlU3RyaW5nKG1fdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZSgq
ZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9uRGVmaW5pdGlvbigpKSwgJy4nLCBt
X3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvckVudW1lcmF0aW9uTWVtYmVyKCplbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSkpOworICAgICAgICByZXR1cm4gbWFrZVN0
cmluZyhtX3R5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoKmVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSksICcuJywgbV90eXBlTmFtZXIubWFuZ2xlZE5h
bWVGb3JFbnVtZXJhdGlvbk1lbWJlcigqZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0
aW9uTWVtYmVyKCkpKTsKICAgICB9KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogY2xhc3Mg
UmVuZGVyRnVuY3Rpb25EZWZpbml0aW9uV3JpdGVyIDogcHVibGljIEZ1bmN0aW9uRGVmaW5pdGlv
bldyaXRlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCmlu
ZGV4IDNhZmIxODAxODQ4ZjEwNDk5YTE2OGU1ZjQ4NmEwZDJkNDBiNTk1YjcuLmRiMzk0N2IxNmM4
NGQxMDdmNGU2ZGU5ZDExNjZkZjg1NjQxNmY4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0
aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCkBAIC0xMzQsNyArMTM0LDYgQEAgU3RyaW5nIHdyaXRlTmF0
aXZlRnVuY3Rpb24oQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlv
bkRlY2xhcmEKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1l
dGVycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYXV0byBtZXRhbFBhcmFtZXRlck5hbWUgPSB0
eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBh
cmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgYXV0byYgcGFyYW1ldGVyVHlwZSA9IG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCktPnVuaWZ5Tm9k
ZSgpOwotICAgICAgICBBU1NFUlQoaXM8QVNUOjpVbm5hbWVkVHlwZT4ocGFyYW1ldGVyVHlwZSkp
OwogICAgICAgICBhdXRvJiB1bm5hbWVkUGFyYW1ldGVyVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5u
YW1lZFR5cGU+KHBhcmFtZXRlclR5cGUpOwogICAgICAgICBpZiAoaXM8QVNUOjpBcnJheVR5cGU+
KHVubmFtZWRQYXJhbWV0ZXJUeXBlKSkgewogICAgICAgICAgICAgYXV0byYgYXJyYXlQYXJhbWV0
ZXJUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRQYXJhbWV0ZXJUeXBlKTsK
QEAgLTM1MSwxMyArMzUwLDExIEBAIFN0cmluZyB3cml0ZU5hdGl2ZUZ1bmN0aW9uKEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhCiAgICAgaWYgKG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ubmFtZSgpLnN0YXJ0c1dpdGgoIkludGVybG9ja2VkIl9z
dHIpKSB7CiAgICAgICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLm5hbWUoKSA9PSAi
SW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UiKSB7CiAgICAgICAgICAgICBBU1NFUlQobmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDQpOwotICAgICAgICAg
ICAgQVNTRVJUKGlzPEFTVDo6UG9pbnRlclR5cGU+KCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
LnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKSk7CiAgICAgICAgICAgICBhdXRvJiBmaXJzdEFyZ3Vt
ZW50UG9pbnRlciA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KCpuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpKTsKICAgICAgICAgICAgIGF1dG8gZmly
c3RBcmd1bWVudEFkZHJlc3NTcGFjZSA9IGZpcnN0QXJndW1lbnRQb2ludGVyLmFkZHJlc3NTcGFj
ZSgpOwogICAgICAgICAgICAgYXV0byBmaXJzdEFyZ3VtZW50UG9pbnRlZSA9IHR5cGVOYW1lci5t
YW5nbGVkTmFtZUZvclR5cGUoZmlyc3RBcmd1bWVudFBvaW50ZXIuZWxlbWVudFR5cGUoKSk7CiAg
ICAgICAgICAgICBhdXRvIHNlY29uZEFyZ3VtZW50ID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9y
VHlwZSgqbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMV0tPnR5cGUoKSk7
CiAgICAgICAgICAgICBhdXRvIHRoaXJkQXJndW1lbnQgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVG
b3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVsyXS0+dHlwZSgp
KTsKLSAgICAgICAgICAgIEFTU0VSVChpczxBU1Q6OlBvaW50ZXJUeXBlPigqbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbM10tPnR5cGUoKSkpOwogICAgICAgICAgICAgYXV0
byYgZm91cnRoQXJndW1lbnRQb2ludGVyID0gZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4oKm5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzNdLT50eXBlKCkpOwogICAgICAg
ICAgICAgYXV0byBmb3VydGhBcmd1bWVudEFkZHJlc3NTcGFjZSA9IGZvdXJ0aEFyZ3VtZW50UG9p
bnRlci5hZGRyZXNzU3BhY2UoKTsKICAgICAgICAgICAgIGF1dG8gZm91cnRoQXJndW1lbnRQb2lu
dGVlID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShmb3VydGhBcmd1bWVudFBvaW50ZXIu
ZWxlbWVudFR5cGUoKSk7CkBAIC0zNjksMTIgKzM2NiwxMCBAQCBTdHJpbmcgd3JpdGVOYXRpdmVG
dW5jdGlvbihBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYQogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24ucGFyYW1ldGVycygpLnNpemUoKSA9PSAzKTsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6UG9p
bnRlclR5cGU+KCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlw
ZSgpKSk7CiAgICAgICAgIGF1dG8mIGZpcnN0QXJndW1lbnRQb2ludGVyID0gZG93bmNhc3Q8QVNU
OjpQb2ludGVyVHlwZT4oKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBd
LT50eXBlKCkpOwogICAgICAgICBhdXRvIGZpcnN0QXJndW1lbnRBZGRyZXNzU3BhY2UgPSBmaXJz
dEFyZ3VtZW50UG9pbnRlci5hZGRyZXNzU3BhY2UoKTsKICAgICAgICAgYXV0byBmaXJzdEFyZ3Vt
ZW50UG9pbnRlZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUoZmlyc3RBcmd1bWVudFBv
aW50ZXIuZWxlbWVudFR5cGUoKSk7CiAgICAgICAgIGF1dG8gc2Vjb25kQXJndW1lbnQgPSB0eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFt
ZXRlcnMoKVsxXS0+dHlwZSgpKTsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6UG9pbnRlclR5cGU+
KCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKVsyXS0+dHlwZSgpKSk7CiAg
ICAgICAgIGF1dG8mIHRoaXJkQXJndW1lbnRQb2ludGVyID0gZG93bmNhc3Q8QVNUOjpQb2ludGVy
VHlwZT4oKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzJdLT50eXBlKCkp
OwogICAgICAgICBhdXRvIHRoaXJkQXJndW1lbnRBZGRyZXNzU3BhY2UgPSB0aGlyZEFyZ3VtZW50
UG9pbnRlci5hZGRyZXNzU3BhY2UoKTsKICAgICAgICAgYXV0byB0aGlyZEFyZ3VtZW50UG9pbnRl
ZSA9IHR5cGVOYW1lci5tYW5nbGVkTmFtZUZvclR5cGUodGhpcmRBcmd1bWVudFBvaW50ZXIuZWxl
bWVudFR5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVUeXBlV3JpdGVyLmNwcAppbmRleCA0
OTQ4ZDlkZDM3NjdmYjhmY2Q2YTg0MTY4NmU5YWFhYjkyODczMDUyLi5mNTdkNWMwNzdjYzRkMmZk
OTlhZDEyMDRjMTQ3YzFhOGQ0MTk0NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZVR5cGVXcml0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlVHlwZVdy
aXRlci5jcHAKQEAgLTcxLDkgKzcxLDcgQEAgU3RyaW5nIHdyaXRlTmF0aXZlVHlwZShBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQogICAgICAgICBBU1NF
UlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxVbmlxdWVSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4o
bmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKVswXSkpOwogICAgICAgICBhdXRv
JiB0eXBlUmVmZXJlbmNlID0gV1RGOjpnZXQ8VW5pcXVlUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKClbMF0pOwogICAgICAgICBhdXRv
JiB1bmlmeU5vZGUgPSB0eXBlUmVmZXJlbmNlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgQVNTRVJU
KGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeU5vZGUpKTsKICAgICAgICAgYXV0byYgbmFtZWRUeXBl
ID0gZG93bmNhc3Q8QVNUOjpOYW1lZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgIEFTU0VSVChp
czxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSk7CiAgICAgICAgIGF1dG8m
IHBhcmFtZXRlclR5cGUgPSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFt
ZWRUeXBlKTsKICAgICAgICAgYXV0byBwcmVmaXggPSAoWyZdKCkgLT4gU3RyaW5nIHsKICAgICAg
ICAgICAgIGlmIChwYXJhbWV0ZXJUeXBlLm5hbWUoKSA9PSAiYm9vbCIpCkBAIC0xMTYsOSArMTE0
LDcgQEAgU3RyaW5nIHdyaXRlTmF0aXZlVHlwZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYg
bmF0aXZlVHlwZURlY2xhcmF0aW9uKQogICAgICAgICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxVbmlxdWVSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPj4obmF0aXZlVHlwZURlY2xhcmF0aW9u
LnR5cGVBcmd1bWVudHMoKVswXSkpOwogICAgICAgICBhdXRvJiB0eXBlUmVmZXJlbmNlID0gV1RG
OjpnZXQ8VW5pcXVlUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4+KG5hdGl2ZVR5cGVEZWNsYXJhdGlv
bi50eXBlQXJndW1lbnRzKClbMF0pOwogICAgICAgICBhdXRvJiB1bmlmeU5vZGUgPSB0eXBlUmVm
ZXJlbmNlLT51bmlmeU5vZGUoKTsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6TmFtZWRUeXBlPih1
bmlmeU5vZGUpKTsKICAgICAgICAgYXV0byYgbmFtZWRUeXBlID0gZG93bmNhc3Q8QVNUOjpOYW1l
ZFR5cGU+KHVuaWZ5Tm9kZSk7Ci0gICAgICAgIEFTU0VSVChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbj4obmFtZWRUeXBlKSk7CiAgICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSBkb3du
Y2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKTsKICAgICAgICAgYXV0
byBwcmVmaXggPSAoWyZdKCkgLT4gU3RyaW5nIHsKICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJU
eXBlLm5hbWUoKSA9PSAiaGFsZiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTFR5cGVOYW1lci5jcHAKaW5kZXggNDExMzhk
ZGE2ZjhiYjNjYTIyZjQ2Y2Q2MjEwMDM4MjNmODA0Yzk1Ni4uYzNkODI3MjVhZDA5ZGIxNDIzYzQx
ZGUyNDk0YmE2MTMzNzZjZjZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xUeXBlTmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMVHlwZU5hbWVyLmNwcApAQCAtMjAxLDcg
KzIwMSw2IEBAIHN0YXRpYyBCYXNlVHlwZU5hbWVOb2RlJiBmaW5kKEFTVDo6VW5uYW1lZFR5cGUm
IHVubmFtZWRUeXBlLCBWZWN0b3I8VW5pcXVlUmVmPEJhCiAgICAgICAgICAgICByZXR1cm4gZmlu
ZChkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVkVHlwZSkuZWxlbWVudFR5cGUoKSwg
dHlwZXMpLmNoaWxkcmVuKCk7CiAgICAgICAgIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlw
ZT4odW5uYW1lZFR5cGUpKQogICAgICAgICAgICAgcmV0dXJuIGZpbmQoZG93bmNhc3Q8QVNUOjpB
cnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpLCB0eXBlcykuY2hp
bGRyZW4oKTsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkp
OwogICAgICAgICByZXR1cm4gZmluZChkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5
cGUpLnR5cGUoKSwgdHlwZXMpLmNoaWxkcmVuKCk7CiAgICAgfSkoKTsKICAgICBhdXRvIGl0ZXJh
dG9yID0gZmluZEluVmVjdG9yKHVubmFtZWRUeXBlLCB2ZWN0b3JUb1NlYXJjaCk7CkBAIC0zMDYs
NyArMzA1LDYgQEAgVW5pcXVlUmVmPEJhc2VUeXBlTmFtZU5vZGU+IFR5cGVOYW1lcjo6Y3JlYXRl
TmFtZU5vZGUoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFQKICAgICAgICAgYXV0byYgYXJyYXlS
ZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHVubmFtZWRU
eXBlKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8QXJyYXlSZWZlcmVuY2VUeXBlTmFt
ZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlSZWZlcmVuY2VUeXBl
LmFkZHJlc3NTcGFjZSgpKTsKICAgICB9Ci0gICAgQVNTRVJUKGlzPEFTVDo6QXJyYXlUeXBlPih1
bm5hbWVkVHlwZSkpOwogICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFTVDo6QXJyYXlU
eXBlPih1bm5hbWVkVHlwZSk7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8QXJyYXlUeXBlTmFt
ZU5vZGU+KHBhcmVudCwgZ2VuZXJhdGVOZXh0VHlwZU5hbWUoKSwgYXJyYXlUeXBlLm51bUVsZW1l
bnRzKCkpOwogfQpAQCAtMzI3LDcgKzMyNSw2IEBAIHNpemVfdCBUeXBlTmFtZXI6Omluc2VydChB
U1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgVmVjdG9yPFVuaXF1ZVJlZjxCYXNlVHlwCiAg
ICAgICAgIHZlY3RvclRvSW5zZXJ0SW50byA9ICZpdGVtLT5jaGlsZHJlbigpOwogICAgICAgICBw
YXJlbnQgPSAmaXRlbTsKICAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoaXM8QVNUOjpBcnJh
eVR5cGU+KHVubmFtZWRUeXBlKSk7CiAgICAgICAgIGF1dG8mIGl0ZW0gPSB0eXBlc1tpbnNlcnQo
ZG93bmNhc3Q8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKS50eXBlKCksIHR5cGVzKV07CiAg
ICAgICAgIHZlY3RvclRvSW5zZXJ0SW50byA9ICZpdGVtLT5jaGlsZHJlbigpOwogICAgICAgICBw
YXJlbnQgPSAmaXRlbTsKQEAgLTM5OSw3ICszOTYsNiBAQCB2b2lkIFR5cGVOYW1lcjo6ZW1pdFVu
bmFtZWRUeXBlRGVmaW5pdGlvbihCYXNlVHlwZU5hbWVOb2RlJiBiYXNlVHlwZU5hbWVOb2RlLCBI
YQogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHVpbnQgbGVuZ3RoO1xuIik7CiAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJ9O1xuIik7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKGlzPEFycmF5VHlwZU5hbWVOb2RlPihiYXNlVHlwZU5hbWVOb2RlKSk7CiAgICAg
ICAgIGF1dG8mIGFycmF5VHlwZSA9IGRvd25jYXN0PEFycmF5VHlwZU5hbWVOb2RlPihiYXNlVHlw
ZU5hbWVOb2RlKTsKICAgICAgICAgQVNTRVJUKGJhc2VUeXBlTmFtZU5vZGUucGFyZW50KCkpOwog
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCJ0eXBlZGVmIEFycmF5PCIs
IGFycmF5VHlwZS5wYXJlbnQoKS0+bWFuZ2xlZE5hbWUoKSwgIiwgIiwgYXJyYXlUeXBlLm51bUVs
ZW1lbnRzKCksICI+ICIsIGFycmF5VHlwZS5tYW5nbGVkTmFtZSgpLCAiO1xuIikpOwpAQCAtNDE4
LDcgKzQxNCw2IEBAIHZvaWQgVHlwZU5hbWVyOjplbWl0TmFtZWRUeXBlRGVmaW5pdGlvbihBU1Q6
Ok5hbWVkVHlwZSYgbmFtZWRUeXBlLCBIYXNoU2V0PEFTVDo6CiAgICAgaWYgKGlzPEFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpKSB7CiAgICAgICAgIGF1dG8mIGVudW1lcmF0
aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihuYW1l
ZFR5cGUpOwogICAgICAgICBhdXRvJiBiYXNlVHlwZSA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi50
eXBlKCkudW5pZnlOb2RlKCk7Ci0gICAgICAgIEFTU0VSVChpczxBU1Q6Ok5hbWVkVHlwZT4oYmFz
ZVR5cGUpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFrZVN0cmluZygiZW51bSBj
bGFzcyAiLCBtYW5nbGVkTmFtZUZvclR5cGUoZW51bWVyYXRpb25EZWZpbml0aW9uKSwgIiA6ICIs
IG1hbmdsZWROYW1lRm9yVHlwZShkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4oYmFzZVR5cGUpKSwg
IiB7XG4iKSk7CiAgICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25NZW1iZXIgOiBlbnVtZXJh
dGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpCiAgICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChtYWtlU3RyaW5nKCIgICAgIiwgbWFuZ2xlZE5hbWVGb3JFbnVtZXJhdGlv
bk1lbWJlcihlbnVtZXJhdGlvbk1lbWJlciksICIsXG4iKSk7CkBAIC00MzIsNyArNDI3LDYgQEAg
dm9pZCBUeXBlTmFtZXI6OmVtaXROYW1lZFR5cGVEZWZpbml0aW9uKEFTVDo6TmFtZWRUeXBlJiBu
YW1lZFR5cGUsIEhhc2hTZXQ8QVNUOjoKICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KG1ha2VTdHJpbmcoIiAgICAiLCBtYW5nbGVkTmFtZUZvclR5cGUoc3RydWN0dXJlRWxlbWVudC50
eXBlKCkpLCAnICcsIG1hbmdsZWROYW1lRm9yU3RydWN0dXJlRWxlbWVudChzdHJ1Y3R1cmVFbGVt
ZW50KSwgIjtcbiIpKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIn07XG4iKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoaXM8QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRU
eXBlKSk7CiAgICAgICAgIGF1dG8mIHR5cGVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpUeXBl
RGVmaW5pdGlvbj4obmFtZWRUeXBlKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWFr
ZVN0cmluZygidHlwZWRlZiAiLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24udHlw
ZSgpKSwgJyAnLCBtYW5nbGVkTmFtZUZvclR5cGUodHlwZURlZmluaXRpb24pLCAiO1xuIikpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TENoZWNrZXIuY3BwCmluZGV4IDE1NjFhNGYwNTBkYWY1N2ZiZTEyM2RiZTYwZTEwNDE4ZDA0MTlm
YTQuLjM1YzcwYzk3YjI0MGQ0YTI5ODkxMWMyZjljMmE0MTY2MmRmMjc4YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcApA
QCAtNjU2LDE0ICs2NTYsMTIgQEAgdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQogICAgIGF1dG8gZW51bWVyYXRpb25N
ZW1iZXJzID0gZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpOwogCiAg
ICAgYXV0byBtYXRjaEFuZENvbW1pdE1lbWJlciA9IFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
JiBtZW1iZXIpIC0+IGJvb2wgewotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAg
ICAgbWVtYmVyLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6RXhwcmVz
c2lvbiYgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIG1lbWJlci52YWx1ZSgpLT52aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkV4cHJlc3Npb24mIHZhbHVlKSAtPiBib29sIHsKICAgICAg
ICAgICAgIGF1dG8gdmFsdWVJbmZvID0gcmVjdXJzZUFuZEdldEluZm8odmFsdWUpOwogICAgICAg
ICAgICAgaWYgKCF2YWx1ZUluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KHZhbHVlSW5mby0+
cmVzb2x2aW5nVHlwZSwgKmJhc2VUeXBlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KHZh
bHVlSW5mby0+cmVzb2x2aW5nVHlwZSwgKmJhc2VUeXBlKSk7CiAgICAgICAgIH0pKTsKLSAgICAg
ICAgcmV0dXJuIHN1Y2Nlc3M7CiAgICAgfTsKIAogICAgIGZvciAoYXV0byYgbWVtYmVyIDogZW51
bWVyYXRpb25NZW1iZXJzKSB7CkBAIC02NzksMTMgKzY3NywxMyBAQCB2b2lkIENoZWNrZXI6OnZp
c2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCiAg
ICAgaW50NjRfdCBuZXh0VmFsdWUgPSAwOwogICAgIGZvciAoYXV0byYgbWVtYmVyIDogZW51bWVy
YXRpb25NZW1iZXJzKSB7CiAgICAgICAgIGlmIChtZW1iZXIuZ2V0KCkudmFsdWUoKSkgewotICAg
ICAgICAgICAgaW50NjRfdCB2YWx1ZTsKLSAgICAgICAgICAgIG1lbWJlci5nZXQoKS52YWx1ZSgp
LT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2Vy
TGl0ZXJhbCkgewotICAgICAgICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwudmFsdWVG
b3JTZWxlY3RlZFR5cGUoKTsKLSAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgICAgICB2YWx1
ZSA9IHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxlY3RlZFR5cGUoKTsKLSAgICAg
ICAgICAgIH0sIFsmXShhdXRvJikgeworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IG1lbWJlci5n
ZXQoKS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJMaXRl
cmFsJiBpbnRlZ2VyTGl0ZXJhbCkgLT4gaW50NjRfdCB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGludGVnZXJMaXRlcmFsLnZhbHVlRm9yU2VsZWN0ZWRUeXBlKCk7CisgICAgICAgICAgICB9LCBb
Jl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAt
PiBpbnQ2NF90IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bC52YWx1ZUZvclNlbGVjdGVkVHlwZSgpOworICAgICAgICAgICAgfSwgWyZdKGF1dG8mKSAtPiBp
bnQ2NF90IHsKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgIG5leHRWYWx1
ZSA9IGJhc2VUeXBlLT5zdWNjZXNzb3IoKSh2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC03
MDYsMTQgKzcwNCwxNCBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZp
bml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCiAgICAgfQogCiAgICAgYXV0byBnZXRWYWx1
ZSA9IFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVyJiBtZW1iZXIpIC0+IGludDY0X3QgewotICAg
ICAgICBpbnQ2NF90IHZhbHVlOwogICAgICAgICBBU1NFUlQobWVtYmVyLnZhbHVlKCkpOwotICAg
ICAgICBtZW1iZXIudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRl
Z2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgIHZhbHVlID0gaW50ZWdl
ckxpdGVyYWwudmFsdWUoKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgdmFsdWUgPSB1bnNp
Z25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgIH0sIFsmXShhdXRvJikgeworICAg
ICAgICBhdXRvIHZhbHVlID0gbWVtYmVyLnZhbHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3Io
WyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSAtPiBpbnQ2NF90IHsKKyAg
ICAgICAgICAgIHJldHVybiBpbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOworICAgICAgICB9LCBbJl0o
QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBp
bnQ2NF90IHsKKyAgICAgICAgICAgIHJldHVybiB1bnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVl
KCk7CisgICAgICAgIH0sIFsmXShhdXRvJikgLT4gaW50NjRfdCB7CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9KSk7CiAg
ICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9OwpAQCAtOTc3LDcgKzk3NSw2IEBAIHN0YXRpYyBP
cHRpb25hbDxVbmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4+IGFyZ3VtZW50VHlwZUZvckFuZE92
ZXJsb2FkKEFTVDo6VW5uCiAgICAgICAgIHJldHVybiB7IG1ha2VVbmlxdWVSZWY8QVNUOjpQb2lu
dGVyVHlwZT4oTGV4ZXI6OlRva2VuKG5hbWVkVHlwZS5vcmlnaW4oKSksIGFkZHJlc3NTcGFjZSwg
QVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihuYW1lZFR5cGUub3JpZ2luKCkp
LCBuYW1lZFR5cGUpKSB9OwogICAgIH0KIAotICAgIEFTU0VSVChpczxBU1Q6OlVubmFtZWRUeXBl
Pih1bmlmeU5vZGUpKTsKICAgICBhdXRvJiB1bm5hbWVkVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5u
YW1lZFR5cGU+KHVuaWZ5Tm9kZSk7CiAKICAgICBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5
cGU+KHVubmFtZWRUeXBlKSkKQEAgLTEzMDUsMjAgKzEzMDIsMTkgQEAgdm9pZCBDaGVja2VyOjp2
aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQogICAgICAgICAgICAg
aGFzRGVmYXVsdCA9IHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAg
ICAgICBib29sIHN1Y2Nlc3M7Ci0gICAgICAgIHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RG
OjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsK
LSAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgq
dmFsdWVUeXBlLCBpbnRlZ2VyTGl0ZXJhbC50eXBlKCkpKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAgICAg
ICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KCp2YWx1ZVR5
cGUsIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudHlwZSgpKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6
OkZsb2F0TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSB7Ci0gICAgICAgICAgICBzdWNjZXNzID0gc3Rh
dGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwgZmxvYXRMaXRlcmFsLnR5
cGUoKSkpOwotICAgICAgICB9LCBbJl0oQVNUOjpOdWxsTGl0ZXJhbCYgbnVsbExpdGVyYWwpIHsK
LSAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgq
dmFsdWVUeXBlLCBudWxsTGl0ZXJhbC50eXBlKCkpKTsKLSAgICAgICAgfSwgWyZdKEFTVDo6Qm9v
bGVhbkxpdGVyYWwmKSB7Ci0gICAgICAgICAgICBzdWNjZXNzID0gbWF0Y2hlcygqdmFsdWVUeXBl
LCBtX2ludHJpbnNpY3MuYm9vbFR5cGUoKSk7Ci0gICAgICAgIH0sIFsmXShBU1Q6OkVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSB7CisgICAgICAgIGF1
dG8gc3VjY2VzcyA9IHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihb
Jl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgeworICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29tbWl0KCp2YWx1ZVR5cGUs
IGludGVnZXJMaXRlcmFsLnR5cGUoKSkpOworICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKKyAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtYXRjaEFuZENvbW1pdCgqdmFsdWVUeXBlLCB1
bnNpZ25lZEludGVnZXJMaXRlcmFsLnR5cGUoKSkpOworICAgICAgICB9LCBbJl0oQVNUOjpGbG9h
dExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Ym9vbD4obWF0Y2hBbmRDb21taXQoKnZhbHVlVHlwZSwgZmxvYXRMaXRlcmFsLnR5
cGUoKSkpOworICAgICAgICB9LCBbJl0oQVNUOjpOdWxsTGl0ZXJhbCYgbnVsbExpdGVyYWwpIC0+
IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1hdGNoQW5kQ29t
bWl0KCp2YWx1ZVR5cGUsIG51bGxMaXRlcmFsLnR5cGUoKSkpOworICAgICAgICB9LCBbJl0oQVNU
OjpCb29sZWFuTGl0ZXJhbCYpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMo
KnZhbHVlVHlwZSwgbV9pbnRyaW5zaWNzLmJvb2xUeXBlKCkpOworICAgICAgICB9LCBbJl0oQVNU
OjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4g
Ym9vbCB7CiAgICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1l
cmF0aW9uRGVmaW5pdGlvbigpKTsKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBtYXRjaGVzKCp2YWx1
ZVR5cGUsICplbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25EZWZpbml0aW9uKCkp
OworICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMoKnZhbHVlVHlwZSwgKmVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbC5lbnVtZXJhdGlvbkRlZmluaXRpb24oKSk7CiAgICAgICAgIH0pKTsKICAgICAg
ICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgICAgICBzZXRFcnJvcigpOwpAQCAtMTMzOSwzMSAr
MTMzNSwzNyBAQCB2b2lkIENoZWNrZXI6OnZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50JiBzd2l0
Y2hTdGF0ZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICAgICAgZmlyc3RDYXNlLnZh
bHVlKCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGZp
cnN0SW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgICAgICBzZWNvbmRDYXNlLnZhbHVlKCkt
PnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIHNlY29uZElu
dGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmaXJzdEludGVn
ZXJMaXRlcmFsLnZhbHVlKCkgIT0gc2Vjb25kSW50ZWdlckxpdGVyYWwudmFsdWUoKTsKLSAgICAg
ICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBzZWNvbmRVbnNp
Z25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0
aWNfY2FzdDxpbnQ2NF90PihmaXJzdEludGVnZXJMaXRlcmFsLnZhbHVlKCkpICE9IHN0YXRpY19j
YXN0PGludDY0X3Q+KHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSk7Ci0gICAg
ICAgICAgICAgICAgfSwgW10oYXV0byYpIHsKKyAgICAgICAgICAgIGF1dG8gc3VjY2VzcyA9IGZp
cnN0Q2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkludGVnZXJM
aXRlcmFsJiBmaXJzdEludGVnZXJMaXRlcmFsKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2Vjb25kQ2FzZS52YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6
OkludGVnZXJMaXRlcmFsJiBzZWNvbmRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmaXJzdEludGVnZXJMaXRlcmFsLnZhbHVlKCkgIT0gc2Vjb25k
SW50ZWdlckxpdGVyYWwudmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsJiBzZWNvbmRVbnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBib29s
IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDY0X3Q+KGZpcnN0
SW50ZWdlckxpdGVyYWwudmFsdWUoKSkgIT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2Vjb25kVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICB9LCBbXShhdXRv
JikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgICAgIH0pKTsKLSAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVy
YWwmIGZpcnN0VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkgewotICAgICAgICAgICAgICAgIHNlY29u
ZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0
ZXJhbCYgc2Vjb25kSW50ZWdlckxpdGVyYWwpIHsKLSAgICAgICAgICAgICAgICAgICAgc3VjY2Vz
cyA9IHN0YXRpY19jYXN0PGludDY0X3Q+KGZpcnN0VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1
ZSgpKSAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzZWNvbmRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgp
KTsKLSAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiBz
ZWNvbmRVbnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nl
c3MgPSBmaXJzdFVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWUoKSAhPSBzZWNvbmRVbnNpZ25l
ZEludGVnZXJMaXRlcmFsLnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIHsK
KyAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIGZpcnN0VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNl
Y29uZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2Vy
TGl0ZXJhbCYgc2Vjb25kSW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgeworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50NjRfdD4oZmlyc3RVbnNpZ25lZEludGVnZXJMaXRl
cmFsLnZhbHVlKCkpICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KHNlY29uZEludGVnZXJMaXRlcmFs
LnZhbHVlKCkpOworICAgICAgICAgICAgICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWwmIHNlY29uZFVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIC0+IGJvb2wgeworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmlyc3RVbnNpZ25lZEludGVnZXJMaXRlcmFsLnZhbHVlKCkgIT0g
c2Vjb25kVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZSgpOworICAgICAgICAgICAgICAgIH0s
IFtdKGF1dG8mKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgfSkpOwotICAgICAgICAgICAgfSwgWyZdKEFTVDo6RW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsJiBmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgewotICAgICAgICAg
ICAgICAgIHNlY29uZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNU
OjpJbnRlZ2VyTGl0ZXJhbCYpIHsKLSAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwmIHNlY29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgeworICAg
ICAgICAgICAgfSwgWyZdKEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBmaXJzdEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNl
Y29uZENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwmIHNlY29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gYm9v
bCB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChmaXJzdEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHNl
Y29uZEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKTsKLSAgICAg
ICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZpcnN0RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVu
dW1lcmF0aW9uTWVtYmVyKCkgIT0gc2Vjb25kRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1l
cmF0aW9uTWVtYmVyKCk7Ci0gICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZpcnN0RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0
aW9uTWVtYmVyKCkgIT0gc2Vjb25kRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmVudW1lcmF0aW9u
TWVtYmVyKCk7CisgICAgICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgeworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9KSk7Ci0gICAgICAg
ICAgICB9LCBbXShhdXRvJikgeworICAgICAgICAgICAgfSwgW10oYXV0byYpIC0+IGJvb2wgewor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfSkpOworICAgICAgICAg
ICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgc2V0RXJyb3IoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEz
NzIsMTMgKzEzNzQsMTMgQEAgdm9pZCBDaGVja2VyOjp2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVu
dCYgc3dpdGNoU3RhdGVtZW50KQogICAgICAgICAgICAgSGFzaFNldDxpbnQ2NF90PiB2YWx1ZXM7
CiAgICAgICAgICAgICBib29sIHplcm9WYWx1ZUV4aXN0czsKICAgICAgICAgICAgIGZvciAoYXV0
byYgc3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKSB7Ci0gICAgICAg
ICAgICAgICAgaW50NjRfdCB2YWx1ZTsKLSAgICAgICAgICAgICAgICBzd2l0Y2hDYXNlLnZhbHVl
KCktPnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVn
ZXJMaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaW50ZWdlckxpdGVyYWwu
dmFsdWVGb3JTZWxlY3RlZFR5cGUoKTsKLSAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNp
Z25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhbHVlID0gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC52YWx1ZUZvclNlbGVjdGVk
VHlwZSgpOwotICAgICAgICAgICAgICAgIH0sIFtdKGF1dG8mKSB7CisgICAgICAgICAgICAgICAg
YXV0byB2YWx1ZSA9IHN3aXRjaENhc2UudmFsdWUoKS0+dmlzaXQoV1RGOjptYWtlVmlzaXRvcihb
Jl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIC0+IGludDY0X3QgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxlY3RlZFR5
cGUoKTsKKyAgICAgICAgICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
JiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSAtPiBpbnQ2NF90IHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwudmFsdWVGb3JTZWxlY3RlZFR5cGUoKTsK
KyAgICAgICAgICAgICAgICB9LCBbXShhdXRvJikgLT4gaW50NjRfdCB7CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkKICAg
ICAgICAgICAgICAgICAgICAgemVyb1ZhbHVlRXhpc3RzID0gdHJ1ZTsKQEAgLTE0MDUsNyArMTQw
Nyw2IEBAIHZvaWQgQ2hlY2tlcjo6dmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0
YXRlbWVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRp
b24+KCp2YWx1ZVR5cGUpKTsKICAgICAgICAgICAgIEhhc2hTZXQ8QVNUOjpFbnVtZXJhdGlvbk1l
bWJlcio+IHZhbHVlczsKICAgICAgICAgICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6IHN3aXRj
aFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoQ2FzZS52
YWx1ZSgpLT52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcAppbmRleCBm
NTY1Y2ZkMDg5MDIwZTA0NTg3MTg5YThjNGJmZjEyMTk2NGI0MzYzLi45YjMxZDkyYTAxMTIwYjYw
MzY0Y2VlNWIxOGQ1YTAxM2E2YjJlMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKQEAgLTE4OCw3ICsxODgs
NiBAQCBib29sIGluZmVyVHlwZXNGb3JUeXBlQXJndW1lbnRzKEFTVDo6TmFtZWRUeXBlJiBwb3Nz
aWJsZVR5cGUsIEFTVDo6VHlwZUFyZ3VtZW50cwogICAgICAgICByZXR1cm4gdHlwZUFyZ3VtZW50
cy5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgQVNTRVJUKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xh
cmF0aW9uPihwb3NzaWJsZVR5cGUpKTsKICAgICBhdXRvJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24g
PSBkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocG9zc2libGVUeXBlKTsKICAg
ICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgIT0gdHlw
ZUFyZ3VtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuY3BwCmlu
ZGV4IGNiOWQ4ZDFmYzg1YWZkOGQxM2Q5ZmI2Y2MwMjI1YTRiODRjMzgzNjIuLmM4YmZmYjgyY2Fl
Y2ZlOThmYjI1MmY5OGZmMjhmZmI4YTM1ZTZhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmNwcApAQCAtMzQ3LDEx
ICszNDcsNyBAQCBib29sIEludHJpbnNpY3M6OmFkZE1hdHJpeChBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQogCiBib29sIEludHJpbnNpY3M6OmFkZEZ1
bGxUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRp
b24sIEFTVDo6VHlwZVJlZmVyZW5jZSYgaW5uZXJUeXBlKQogewotICAgIHVuc2lnbmVkIHRleHR1
cmVUeXBlSW5kZXggPSBXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVyZVR5cGVOYW1lcyk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgobV90ZXh0dXJlVHlwZU5h
bWVzKTsgKytpKSB7Ci0gICAgICAgIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRpb24ubmFtZSgpID09
IG1fdGV4dHVyZVR5cGVOYW1lc1tpXSkKLSAgICAgICAgICAgIHRleHR1cmVUeXBlSW5kZXggPSBp
OwotICAgIH0KKyAgICBhdXRvIHRleHR1cmVUeXBlSW5kZXggPSBzdGQ6OmZpbmQobV90ZXh0dXJl
VHlwZU5hbWVzLCBtX3RleHR1cmVUeXBlTmFtZXMgKyBXVEZfQVJSQVlfTEVOR1RIKG1fdGV4dHVy
ZVR5cGVOYW1lcyksIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkpIC0gbV90ZXh0dXJlVHlw
ZU5hbWVzOwogICAgIGlmICh0ZXh0dXJlVHlwZUluZGV4ID09IFdURl9BUlJBWV9MRU5HVEgobV90
ZXh0dXJlVHlwZU5hbWVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNzcsOSArMzcz
LDkgQEAgYm9vbCBJbnRyaW5zaWNzOjphZGRGdWxsVGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNs
YXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBJbnRyaW5zaWNzOjphZGREZXB0aFRleHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24m
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgQVNUOjpUeXBlUmVmZXJlbmNlJiBpbm5lclR5cGUpCit2
b2lkIEludHJpbnNpY3M6OmFkZERlcHRoVGV4dHVyZShBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
biYgbmF0aXZlVHlwZURlY2xhcmF0aW9uLCBBU1Q6OlR5cGVSZWZlcmVuY2UmIGlubmVyVHlwZSkK
IHsKLSAgICBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbioqIHRleHR1cmU7CisgICAgQVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24qKiB0ZXh0dXJlID0gbnVsbHB0cjsKICAgICBpZiAobmF0aXZl
VHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZURlcHRoMkQiKQogICAgICAgICB0ZXh0
dXJlID0gbV90ZXh0dXJlRGVwdGgyRDsKICAgICBlbHNlIGlmIChuYXRpdmVUeXBlRGVjbGFyYXRp
b24ubmFtZSgpID09ICJSV1RleHR1cmVEZXB0aDJEIikKQEAgLTM4OCwxOSArMzg0LDE0IEBAIGJv
b2wgSW50cmluc2ljczo6YWRkRGVwdGhUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9u
JiBuYXRpdmVUeXBlRGVjbGFyYXRpCiAgICAgICAgIHRleHR1cmUgPSBtX3RleHR1cmVEZXB0aDJE
QXJyYXk7CiAgICAgZWxzZSBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLm5hbWUoKSA9PSAiUldU
ZXh0dXJlRGVwdGgyREFycmF5IikKICAgICAgICAgdGV4dHVyZSA9IG1fcndUZXh0dXJlRGVwdGgy
REFycmF5OwotICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5uYW1lKCkgPT0gIlRl
eHR1cmVEZXB0aEN1YmUiKQorICAgIGVsc2UgeworICAgICAgICBBU1NFUlQobmF0aXZlVHlwZURl
Y2xhcmF0aW9uLm5hbWUoKSA9PSAiVGV4dHVyZURlcHRoQ3ViZSIpOwogICAgICAgICB0ZXh0dXJl
ID0gbV90ZXh0dXJlRGVwdGhDdWJlOwotICAgIGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgdW5zaWduZWQgaW5uZXJUeXBlSW5kZXggPSBXVEZfQVJSQVlfTEVOR1RIKG1f
ZGVwdGhUZXh0dXJlSW5uZXJUeXBlcyk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdU
Rl9BUlJBWV9MRU5HVEgobV9kZXB0aFRleHR1cmVJbm5lclR5cGVzKTsgKytpKSB7Ci0gICAgICAg
IGlmIChpbm5lclR5cGUubmFtZSgpID09IG1fZGVwdGhUZXh0dXJlSW5uZXJUeXBlc1tpXSkKLSAg
ICAgICAgICAgIGlubmVyVHlwZUluZGV4ID0gaTsKICAgICB9CisgICAgYXV0byBpbm5lclR5cGVJ
bmRleCA9IHN0ZDo6ZmluZChtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXMsIG1fZGVwdGhUZXh0dXJl
SW5uZXJUeXBlcyArIFdURl9BUlJBWV9MRU5HVEgobV9kZXB0aFRleHR1cmVJbm5lclR5cGVzKSwg
aW5uZXJUeXBlLm5hbWUoKSkgLSBtX2RlcHRoVGV4dHVyZUlubmVyVHlwZXM7CiAgICAgQVNTRVJU
KGlubmVyVHlwZUluZGV4ICE9IFdURl9BUlJBWV9MRU5HVEgobV9kZXB0aFRleHR1cmVJbm5lclR5
cGVzKSk7CiAgICAgbmF0aXZlVHlwZURlY2xhcmF0aW9uLnNldElzVGV4dHVyZSgpOwogICAgIHRl
eHR1cmVbaW5uZXJUeXBlSW5kZXhdID0gJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbjsKLSAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogdm9pZCBJbnRyaW5zaWNzOjphZGRUZXh0dXJlKEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCkBAIC00MTMsOCArNDA0LDggQEAg
dm9pZCBJbnRyaW5zaWNzOjphZGRUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBu
YXRpdmVUeXBlRGVjbGFyYXRpb24pCiAgICAgICAgIG1fdGV4dHVyZVNldC5hZGQoJm5hdGl2ZVR5
cGVEZWNsYXJhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGFkZERlcHRo
VGV4dHVyZShuYXRpdmVUeXBlRGVjbGFyYXRpb24sIGlubmVyVHlwZSkpCi0gICAgICAgIG1fdGV4
dHVyZVNldC5hZGQoJm5hdGl2ZVR5cGVEZWNsYXJhdGlvbik7CisgICAgYWRkRGVwdGhUZXh0dXJl
KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiwgaW5uZXJUeXBlKTsKKyAgICBtX3RleHR1cmVTZXQuYWRk
KCZuYXRpdmVUeXBlRGVjbGFyYXRpb24pOwogfQogCiB2b2lkIEludHJpbnNpY3M6OmFkZChBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbnRyaW5zaWNzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuaApp
bmRleCBkMjNiZjk3ODdkODBiOTk4Yzc5Mzk1MWVjNzUwZjFhNzkxZTkyZjRmLi5hZDg1N2M1Zjk0
ZWFmMTM1MmEzMTUzNzE1NDM0N2QwNjJlZDBiYmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuaApAQCAtMjMxLDcgKzIz
MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhZGRWZWN0b3IoQVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24mKTsKICAgICBib29sIGFkZE1hdHJpeChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYp
OwogICAgIGJvb2wgYWRkRnVsbFRleHR1cmUoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mLCBB
U1Q6OlR5cGVSZWZlcmVuY2UmKTsKLSAgICBib29sIGFkZERlcHRoVGV4dHVyZShBU1Q6Ok5hdGl2
ZVR5cGVEZWNsYXJhdGlvbiYsIEFTVDo6VHlwZVJlZmVyZW5jZSYpOworICAgIHZvaWQgYWRkRGVw
dGhUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiwgQVNUOjpUeXBlUmVmZXJlbmNl
Jik7CiAgICAgdm9pZCBhZGRUZXh0dXJlKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJik7CiAK
ICAgICBIYXNoU2V0PGNvbnN0IEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uKj4gbV90ZXh0dXJl
U2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcm9wZXJ0eVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJvcGVydHlSZXNvbHZlci5jcHAKaW5kZXggZjgwZGE5OTc1OGQ4NDlhMmVjMTg5
NjM0ZjNmMzI0NGE0MTUxOTU2ZC4uNzViNGFlM2QzY2M1YjkzODFiZTNiNTEwNmUzNTdlYWI5NWQ1
ZjdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcm9wZXJ0eVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwCkBAIC0zMDYsNyArMzA2LDYgQEAgc3Rh
dGljIE9wdGlvbmFsPE1vZGlmeVJlc3VsdD4gbW9kaWZ5KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uJiBwcm9wZXJ0eUFjY2UKICAgICAgICAgaWYgKGl0ZXJhdG9yLT5iYXNlKCkudHlwZUFu
bm90YXRpb24oKS5sZWZ0QWRkcmVzc1NwYWNlKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgQVNTRVJUKCFpdGVyYXRvci0+YmFzZSgpLnR5cGVBbm5vdGF0aW9uKCkuaXNSaWdodFZhbHVl
KCkpOwotICAgICAgICBBU1NFUlQoaXM8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KGl0
ZXJhdG9yLT5iYXNlKCkpKTsKICAgICAgICAgaXRlcmF0b3IgPSAmZG93bmNhc3Q8QVNUOjpQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KGl0ZXJhdG9yLT5iYXNlKCkpOwogICAgIH0KICAgICBhdXRv
IGxlZnRFeHByZXNzaW9uID0gaXRlcmF0b3ItPnRha2VCYXNlKCk7CkBAIC01MTksNyArNTE4LDYg
QEAgdm9pZCBQcm9wZXJ0eVJlc29sdmVyOjp2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9u
JiBhc3NpZ25tZW50RXhwcmVzc2lvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NF
UlQoIWFzc2lnbm1lbnRFeHByZXNzaW9uLmxlZnQoKS50eXBlQW5ub3RhdGlvbigpLmlzUmlnaHRW
YWx1ZSgpKTsKLSAgICBBU1NFUlQoaXM8QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24+KGFz
c2lnbm1lbnRFeHByZXNzaW9uLmxlZnQoKSkpOwogCiAgICAgYXV0byB0eXBlID0gYXNzaWdubWVu
dEV4cHJlc3Npb24ucmlnaHQoKS5yZXNvbHZlZFR5cGUoKS5jbG9uZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAppbmRl
eCAyMDYzZDJhNDZkZDBhYTRmYTZmMTVjNGY4ODQyNDM5ZTYyODNjNjBmLi4zNDQzZDUzNjM4YWVm
MTI2ODg5ZDMzMmIzZjVhN2YzNTZlOTQ3ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAKQEAgLTU5LDEwICs1OSw4IEBA
IHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpCiAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlBvaW50ZXJUeXBlPih1bm5hbWVk
VHlwZSkpOwogICAgIGVsc2UgaWYgKGlzPEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVk
VHlwZSkpCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkFycmF5UmVm
ZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKGlz
PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpOworICAgIGVsc2UKICAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpOwotICAg
IH0KIH0KIAogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQpA
QCAtNzMsMTAgKzcxLDggQEAgdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok5hbWVkVHlwZSYgbmFt
ZWRUeXBlKQogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1
cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpKTsKICAgICBlbHNlIGlmIChpczxBU1Q6OkVudW1lcmF0
aW9uRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpKTsKLSAgICBlbHNl
IHsKLSAgICAgICAgQVNTRVJUKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5
cGUpKTsKKyAgICBlbHNlCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSk7Ci0gICAgfQogfQogCiB2b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQpAQCAtMzM2
LDEwICszMzIsOCBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhdGVtZW50JiBzdGF0ZW1l
bnQpCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlRyYXA+KHN0YXRl
bWVudCkpOwogICAgIGVsc2UgaWYgKGlzPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQ+KHN0YXRlbWVudCkpCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgQVNTRVJUKGlzPEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKKyAgICBlbHNl
CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OldoaWxlTG9vcD4oc3Rh
dGVtZW50KSk7Ci0gICAgfQogfQogCiB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QnJlYWsmKQpA
QCAtMzk2LDEwICszOTAsOCBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RXhwcmVzc2lvbiYg
ZXhwcmVzc2lvbikKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOwogICAgIGVsc2UgaWYgKGlzPEFTVDo6
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKSkKICAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNz
aW9uKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChpczxBU1Q6OlZhcmlhYmxlUmVmZXJl
bmNlPihleHByZXNzaW9uKSk7CisgICAgZWxzZQogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
ZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOwotICAgIH0KIH0K
IAogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24p
Cg==
</data>
<flag name="review"
          id="387835"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>