<?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>171795</bug_id>
          
          <creation_ts>2017-05-07 16:44:17 -0700</creation_ts>
          <short_desc>Move &apos;style&apos; from Element to HTMLElement / SVGElement and make it settable</short_desc>
          <delta_ts>2017-06-07 15:50:48 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=164537</see_also>
          <bug_file_loc>https://drafts.csswg.org/cssom/#the-elementcssinlinestyle-interface</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1305761</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-07 16:44:17 -0700</bug_when>
    <thetext>Move &apos;style&apos; from Element to HTMLElement / SVGElement and make it settable, as per:
- https://drafts.csswg.org/cssom/#the-elementcssinlinestyle-interface

Both Firefox and Chrome already follow the specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305778</commentid>
    <comment_count>1</comment_count>
      <attachid>309335</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-07 17:59:50 -0700</bug_when>
    <thetext>Created attachment 309335
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305779</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-07 18:02:11 -0700</bug_when>
    <thetext>Attachment 309335 did not pass style-queue:


ERROR: Source/WebCore/inspector/InspectorCSSAgent.h:138:  The parameter name &quot;element&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305782</commentid>
    <comment_count>3</comment_count>
      <attachid>309336</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-07 18:30:00 -0700</bug_when>
    <thetext>Created attachment 309336
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305784</commentid>
    <comment_count>4</comment_count>
      <attachid>309337</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-07 18:42:47 -0700</bug_when>
    <thetext>Created attachment 309337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305791</commentid>
    <comment_count>5</comment_count>
      <attachid>309339</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-07 19:30:34 -0700</bug_when>
    <thetext>Created attachment 309339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305793</commentid>
    <comment_count>6</comment_count>
      <attachid>309340</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-07 19:32:46 -0700</bug_when>
    <thetext>Created attachment 309340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305797</commentid>
    <comment_count>7</comment_count>
      <attachid>309343</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-07 21:35:35 -0700</bug_when>
    <thetext>Created attachment 309343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305837</commentid>
    <comment_count>8</comment_count>
      <attachid>309343</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-05-08 04:44:40 -0700</bug_when>
    <thetext>Comment on attachment 309343
Patch

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

&gt; Source/WebCore/css/StyleProperties.cpp:1335
&gt;      m_cssomWrapper = std::make_unique&lt;PropertySetCSSStyleDeclaration&gt;(this);

*this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305868</commentid>
    <comment_count>9</comment_count>
      <attachid>309362</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-08 08:48:09 -0700</bug_when>
    <thetext>Created attachment 309362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305887</commentid>
    <comment_count>10</comment_count>
      <attachid>309362</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-08 09:50:50 -0700</bug_when>
    <thetext>Comment on attachment 309362
Patch

Clearing flags on attachment: 309362

Committed r216426: &lt;http://trac.webkit.org/changeset/216426&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305888</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-08 09:50:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309335</attachid>
            <date>2017-05-07 17:59:50 -0700</date>
            <delta_ts>2017-05-07 18:30:00 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>171795_Element_style_wip.patch</filename>
            <type>text/plain</type>
            <size>35199</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMDIwZWU0MjRlZmEuLmIxOThkNzdjNmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMzg3LDYgKzM4Nyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgY3NzL0RlcHJlY2F0ZWRDU1NPTVZhbHVlLmlkbAogICAgIGNzcy9EZXByZWNh
dGVkQ1NTT01WYWx1ZUxpc3QuaWRsCiAgICAgY3NzL0RPTUNTU05hbWVzcGFjZS5pZGwKKyAgICBj
c3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbAogICAgIGNzcy9Gb250RmFjZS5pZGwKICAgICBj
c3MvRm9udEZhY2VTZXQuaWRsCiAgICAgY3NzL01lZGlhTGlzdC5pZGwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCmluZGV4IDBhY2QyOWMxM2QzLi4wYTQ1MjZiYzdiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zMjMsNiArMzIzLDcgQEAgSlNfQklORElOR19JRExTID0g
XAogCSQoV2ViQ29yZSkvY3NzL0RlcHJlY2F0ZWRDU1NPTVZhbHVlLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9jc3MvRGVwcmVjYXRlZENTU09NVmFsdWVMaXN0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9j
c3MvRE9NQ1NTTmFtZXNwYWNlLmlkbCBcCisgICAgJChXZWJDb3JlKS9jc3MvRWxlbWVudENTU0lu
bGluZVN0eWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvRm9udEZhY2UuaWRsIFwKICAgICAk
KFdlYkNvcmUpL2Nzcy9Gb250RmFjZVNldC5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL01lZGlh
TGlzdC5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGViZTZhZmE0ZWZiLi40ZTY0ZWQxODVlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEzOTIsNiAr
MTEzOTIsNyBAQAogCQk4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW91c2VFdmVudEluaXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIEVu
Z2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnBsaXN0LnN0cmluZ3NkaWN0OyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHBy
b2ovTG9jYWxpemFibGUuc3RyaW5nc2RpY3Q7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9T
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzdERkIzNDFFQkZFQTcwMDA2MDEz
ODUgLyogRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBF
bGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
Mzg2QTk2QzE5RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4Mzg2QTk2RTE5RjYxRTRGMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlQnVpbGRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzODg2NzM0MUQxM0JBNTkwMDM2OTdEMCAvKiBSZW5k
ZXJPYmplY3RFbnVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJP
YmplY3RFbnVtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ5OTYsNiArMjQ5
OTcsNyBAQAogCQkJCUZENjc3NzM1MTk1Q0FCMjAwMDcyRTBEMyAvKiBET01DU1NOYW1lc3BhY2Uu
Y3BwICovLAogCQkJCUZDOUEwRjcyMTY0MDk0Q0YwMDNENkI4RCAvKiBET01DU1NOYW1lc3BhY2Uu
aCAqLywKIAkJCQlGQzlBMEY3MzE2NDA5NENGMDAzRDZCOEQgLyogRE9NQ1NTTmFtZXNwYWNlLmlk
bCAqLywKKwkJCQk4MzdERkIzNDFFQkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGluZVN0
eWxlLmlkbCAqLywKIAkJCQlGQkRCNjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxlbWVudFJ1bGVD
b2xsZWN0b3IuY3BwICovLAogCQkJCUZCREI2MTlFMTZENjAzNjUwMEJCMzM5NCAvKiBFbGVtZW50
UnVsZUNvbGxlY3Rvci5oICovLAogCQkJCTFDNjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250
RmFjZS5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lu
bGluZVN0eWxlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUu
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZmU3MjM5NmY2MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5
bGUuaWRsCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBDU1NPTSBleHRlbnNpb25z
IHRvIEhUTUxFbGVtZW50IC8gU1ZHRWxlbWVudDoKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3NvbS8jdGhlLWVsZW1lbnRjc3NpbmxpbmVzdHlsZS1pbnRlcmZhY2UKK1sKKyAgICBOb0lu
dGVyZmFjZU9iamVjdCwKK10gaW50ZXJmYWNlIEVsZW1lbnRDU1NJbmxpbmVTdHlsZSB7CisgICAg
W0ltcGxlbWVudGVkQXM9Y3Nzb21TdHlsZSwgUHV0Rm9yd2FyZHM9Y3NzVGV4dF0gcmVhZG9ubHkg
YXR0cmlidXRlIENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7IC8vIEZJWE1FOiBTaG91bGQgYmUg
W1NhbWVPYmplY3RdLgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uaAppbmRleCA1NjRjYjFkYTIzYi4uODY0ZDkyNGRlZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uLmgKQEAgLTExNyw5ICsxMTcsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBJbmxpbmVDU1NTdHls
ZURlY2xhcmF0aW9uIGZpbmFsIDogcHVibGljIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
biB7CiBwdWJsaWM6Ci0gICAgSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzKiBwcm9wZXJ0eVNldCwgU3R5bGVkRWxlbWVudCogcGFyZW50RWxlbWVudCkKKyAg
ICBJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHByb3Bl
cnR5U2V0LCBTdHlsZWRFbGVtZW50JiBwYXJlbnRFbGVtZW50KQogICAgICAgICA6IFByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbihwcm9wZXJ0eVNldCkKLSAgICAgICAgLCBtX3BhcmVudEVs
ZW1lbnQocGFyZW50RWxlbWVudCkgCisgICAgICAgICwgbV9wYXJlbnRFbGVtZW50KCZwYXJlbnRF
bGVtZW50KQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5j
cHAKaW5kZXggYTNhMTBhNjdmZGIuLjEwMDkzYTdhYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTMyNSwyNSArMTMyNSwyNSBAQCBQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24qIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNzc1N0eWxlRGVjbGFyYXRp
b24oKQogICAgIHJldHVybiBtX2Nzc29tV3JhcHBlci5nZXQoKTsKIH0KIAotQ1NTU3R5bGVEZWNs
YXJhdGlvbiogTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlv
bigpCitDU1NTdHlsZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVD
U1NTdHlsZURlY2xhcmF0aW9uKCkKIHsKICAgICBpZiAobV9jc3NvbVdyYXBwZXIpIHsKICAgICAg
ICAgQVNTRVJUKCFzdGF0aWNfY2FzdDxDU1NTdHlsZURlY2xhcmF0aW9uKj4obV9jc3NvbVdyYXBw
ZXIuZ2V0KCkpLT5wYXJlbnRSdWxlKCkpOwogICAgICAgICBBU1NFUlQoIW1fY3Nzb21XcmFwcGVy
LT5wYXJlbnRFbGVtZW50KCkpOwotICAgICAgICByZXR1cm4gbV9jc3NvbVdyYXBwZXIuZ2V0KCk7
CisgICAgICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiAgICAgfQogICAgIG1fY3Nzb21XcmFw
cGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KHRo
aXMpOwotICAgIHJldHVybiBtX2Nzc29tV3JhcHBlci5nZXQoKTsKKyAgICByZXR1cm4gKm1fY3Nz
b21XcmFwcGVyOwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9uKiBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eWxlZEVsZW1lbnQqIHBhcmVu
dEVsZW1lbnQpCitDU1NTdHlsZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpl
bnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eWxlZEVsZW1lbnQmIHBhcmVudEVsZW1l
bnQpCiB7CiAgICAgaWYgKG1fY3Nzb21XcmFwcGVyKSB7Ci0gICAgICAgIEFTU0VSVChtX2Nzc29t
V3JhcHBlci0+cGFyZW50RWxlbWVudCgpID09IHBhcmVudEVsZW1lbnQpOwotICAgICAgICByZXR1
cm4gbV9jc3NvbVdyYXBwZXIuZ2V0KCk7CisgICAgICAgIEFTU0VSVChtX2Nzc29tV3JhcHBlci0+
cGFyZW50RWxlbWVudCgpID09ICZwYXJlbnRFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuICptX2Nz
c29tV3JhcHBlcjsKICAgICB9CiAgICAgbV9jc3NvbVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24+KHRoaXMsIHBhcmVudEVsZW1lbnQpOwotICAgIHJl
dHVybiBtX2Nzc29tV3JhcHBlci5nZXQoKTsKKyAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwog
fQogCiB1bnNpZ25lZCBTdHlsZVByb3BlcnRpZXM6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKaW5kZXggZmQ5ZmNhMzAyZTMuLjA2ZDE1ZGY2MWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCkBAIC0yMzYsOCArMjM2LDggQEAg
cHVibGljOgogICAgIHZvaWQgY2xlYXIoKTsKICAgICBib29sIHBhcnNlRGVjbGFyYXRpb24oY29u
c3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uLCBDU1NQYXJzZXJDb250ZXh0KTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIENTU1N0eWxlRGVjbGFyYXRpb24qIGVuc3VyZUNTU1N0eWxlRGVjbGFyYXRp
b24oKTsKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBlbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xh
cmF0aW9uKFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpOworICAgIFdFQkNPUkVfRVhQT1JU
IENTU1N0eWxlRGVjbGFyYXRpb24mIGVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKKyAgICBD
U1NTdHlsZURlY2xhcmF0aW9uJiBlbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eWxl
ZEVsZW1lbnQmIHBhcmVudEVsZW1lbnQpOwogCiAgICAgaW50IGZpbmRQcm9wZXJ0eUluZGV4KENT
U1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIGludCBmaW5kQ3VzdG9tUHJvcGVydHlJbmRleChjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggZjA0NWZj
ODJiZTguLjBhNGRjNDg5NTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAg
Q1NTU3R5bGVEZWNsYXJhdGlvbiogQXR0cjo6c3R5bGUoKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBtX3N0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAg
ZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKm1fZWxlbWVudCkuY29sbGVjdFN0eWxlRm9yUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKHF1YWxpZmllZE5hbWUoKSwgdmFsdWUoKSwgKm1fc3R5bGUpOwotICAg
IHJldHVybiBtX3N0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CisgICAgcmV0dXJu
ICZtX3N0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CiB9CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgQXR0cjo6dmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
NTA3MWJlYWY3YTUuLmNhMjVmY2FiY2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTky
Nyw3ICs5MjcsNyBAQCBSZWY8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShj
b25zdCBTdHJpbmcmIHRleHQpCiBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gRG9jdW1lbnQ6OmNy
ZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKQogewogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzPiBwcm9wZXJ0eVNldChNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKSk7Ci0gICAg
cmV0dXJuICpwcm9wZXJ0eVNldC0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOworICAgIHJl
dHVybiBwcm9wZXJ0eVNldC0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogfQogCiBFeGNl
cHRpb25PcjxSZWY8Tm9kZT4+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUmIG5vZGVUb0ltcG9y
dCwgYm9vbCBkZWVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDFmY2VkYTFjMTczLi5lYzdk
MTg0ZmMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjM2NywxMSArMjM2Nyw2IEBAIGJv
b2wgRWxlbWVudDo6aGFzQXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkksIGNvbnN0IEF0b21pY1N0cmluCiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRBdHRy
aWJ1dGVCeU5hbWUocU5hbWUpOwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9uKiBFbGVtZW50Ojpj
c3NvbVN0eWxlKCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogdm9pZCBFbGVtZW50Ojpm
b2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uKQogewogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDU2
ZmFkYjQzNmUzLi45NDE0NjliNTE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0xOTcsOCArMTk3
LDYgQEAgcHVibGljOgogCiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxBdHRyPj4mIGF0dHJOb2Rl
TGlzdCgpOwogCi0gICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uKiBjc3NvbVN0eWxlKCk7
Ci0KICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGFnTmFtZTsgfQogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RhdGljIHB0cmRpZmZfdCB0YWdRTmFt
ZU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFbGVtZW50LCBtX3RhZ05h
bWUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggNDRkNDhiMzgwNzMuLjllNjBiOWViMjkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC02NiwxMCArNjYsNiBAQAogICAgIFtDRVJlYWN0
aW9ucywgTWF5VGhyb3dFeGNlcHRpb25dIEVsZW1lbnQ/IGluc2VydEFkamFjZW50RWxlbWVudChE
T01TdHJpbmcgd2hlcmUsIEVsZW1lbnQgZWxlbWVudCk7IC8vIEhpc3RvcmljYWwuCiAgICAgW01h
eVRocm93RXhjZXB0aW9uXSB2b2lkIGluc2VydEFkamFjZW50VGV4dChET01TdHJpbmcgd2hlcmUs
IERPTVN0cmluZyBkYXRhKTsgLy8gSGlzdG9yaWNhbC4KIAotICAgIC8vIEZJWE1FOiBTaG91bGQg
YmUgaW4gYSBzZXBhcmF0ZSBFbGVtZW50Q1NTSW5saW5lU3R5bGUgYW5kIGltcGxlbWVudGVkIGJ5
IEhUTUxFbGVtZW50IC8gU1ZHRWxlbWVudC4KLSAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3Nzb20vI3RoZS1lbGVtZW50Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCi0gICAgW0ltcGxl
bWVudGVkQXM9Y3Nzb21TdHlsZV0gcmVhZG9ubHkgYXR0cmlidXRlIENTU1N0eWxlRGVjbGFyYXRp
b24gc3R5bGU7IC8vIEZJWE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3QsIFB1dEZvcndhcmRzPWNz
c1RleHRdLgotCiAgICAgLy8gQ1NTT00tdmlldyBleHRlbnNpb25zIChodHRwczovL2RyYWZ0cy5j
c3N3Zy5vcmcvY3Nzb20tdmlldy8jZXh0ZW5zaW9uLXRvLXRoZS1lbGVtZW50LWludGVyZmFjZSku
CiAgICAgc2VxdWVuY2U8RE9NUmVjdD4gZ2V0Q2xpZW50UmVjdHMoKTsKICAgICBbTmV3T2JqZWN0
XSBET01SZWN0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVs
ZW1lbnQuY3BwCmluZGV4IDJlZTk5OTdmZDA4Li4yY2JlNzhlN2I1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdHlsZWRFbGVtZW50LmNwcApAQCAtNjEsOSArNjEsOSBAQCBTdHlsZWRFbGVtZW50Ojp+U3R5
bGVkRWxlbWVudCgpCiAgICAgICAgIGNzc29tV3JhcHBlci0+Y2xlYXJQYXJlbnRFbGVtZW50KCk7
CiB9CiAKLUNTU1N0eWxlRGVjbGFyYXRpb24qIFN0eWxlZEVsZW1lbnQ6OmNzc29tU3R5bGUoKQor
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgU3R5bGVkRWxlbWVudDo6Y3Nzb21TdHlsZSgpCiB7Ci0gICAg
cmV0dXJuIGVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSgpLmVuc3VyZUlubGluZUNTU1N0eWxlRGVj
bGFyYXRpb24odGhpcyk7CisgICAgcmV0dXJuIGVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSgpLmVu
c3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oKnRoaXMpOwogfQogCiBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJiBTdHlsZWRFbGVtZW50OjplbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXggNDQyMDQxY2Q1MDkuLjMxYjhmYjMyNTlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplU3R5bGVBdHRyaWJ1dGVJbnRlcm5hbChTdHlsZWRF
bGVtZW50Kik7CiAgICAgdm9pZCBzeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwoKSBj
b25zdCB7IFN0eWxlZEVsZW1lbnQ6OnN5bmNocm9uaXplU3R5bGVBdHRyaWJ1dGVJbnRlcm5hbChj
b25zdF9jYXN0PFN0eWxlZEVsZW1lbnQqPih0aGlzKSk7IH0KICAgICAKLSAgICBDU1NTdHlsZURl
Y2xhcmF0aW9uKiBjc3NvbVN0eWxlKCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgY3Nzb21TdHlsZSgpOwogCiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVz
KiBwcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBj
b2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAzYmM3ZmM3N2RlNS4uNTI1OWQzM2ExYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTMxMDMsMTAgKzMxMDMsMTAgQEAgdm9pZCBFZGl0
b3I6OmFwcGx5RWRpdGluZ1N0eWxlVG9FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBz
byB3ZSBnZXQgdGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCi0gICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiogc3R5bGUgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCku
Y3Nzb21TdHlsZSgpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5
V29yZFdyYXAsICJicmVhay13b3JkIiwgZmFsc2UpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUlu
dGVybmFsKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIsIGZhbHNlKTsKLSAgICBz
dHlsZS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVCcmVhaywgImFmdGVyLXdo
aXRlLXNwYWNlIiwgZmFsc2UpOworICAgIGF1dG8mIHN0eWxlID0gZG93bmNhc3Q8U3R5bGVkRWxl
bWVudD4oKmVsZW1lbnQpLmNzc29tU3R5bGUoKTsKKyAgICBzdHlsZS5zZXRQcm9wZXJ0eUludGVy
bmFsKENTU1Byb3BlcnR5V29yZFdyYXAsICJicmVhay13b3JkIiwgZmFsc2UpOworICAgIHN0eWxl
LnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgInNwYWNlIiwg
ZmFsc2UpOworICAgIHN0eWxlLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlMaW5lQnJl
YWssICJhZnRlci13aGl0ZS1zcGFjZSIsIGZhbHNlKTsKIH0KIAogYm9vbCBFZGl0b3I6OmZpbmRT
dHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4
IGE0ZTQ4NjM1ODg3Li4yNzBmODUwNDIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTU1Niw5ICs1NTYsOSBAQCB2b2lk
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5
bGVTcGFuSW5saW5lKEluc2VydAogCiAgICAgICAgICAgICAvLyBNdXRhdGUgdXNpbmcgdGhlIENT
U09NIHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2aW9yIGFzIGEgc2NyaXB0
LgogICAgICAgICAgICAgaWYgKGlzQmxvY2soZWxlbWVudCkpCi0gICAgICAgICAgICAgICAgZWxl
bWVudC0+Y3Nzb21TdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RGlzcGxh
eSwgImlubGluZSIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0eWxl
KCkuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUiLCBmYWxz
ZSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cmVuZGVyZXIoKSAmJiBlbGVtZW50LT5yZW5k
ZXJlcigpLT5zdHlsZSgpLmlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5j
c3NvbVN0eWxlKCktPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgIm5vbmUi
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFByb3Bl
cnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgIm5vbmUiLCBmYWxzZSk7CiAgICAgICAgIH0K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCmluZGV4IGZmZDc2NDFlNjAz
Li41OWE0NTA0NjcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKQEAgLTU3LDQg
KzU3LDUgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTWFwIGRhdGFzZXQ7CiB9
OwogCitIVE1MRWxlbWVudCBpbXBsZW1lbnRzIEVsZW1lbnRDU1NJbmxpbmVTdHlsZTsKIEhUTUxF
bGVtZW50IGltcGxlbWVudHMgR2xvYmFsRXZlbnRIYW5kbGVyczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDdjMTk5MmYyYWJiLi5hN2Mx
M2I4NTA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCkBAIC02MDYsOSArNjA2LDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0
Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICAg
ICAgICAgICAgICBhdXRvIGVudHJ5ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0
ZWRTdHlsZUVudHJ5OjpjcmVhdGUoKQogICAgICAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENT
U1J1bGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLCBz
dHlsZVJlc29sdmVyLCAqcGFyZW50RWxlbWVudCwgTk9QU0VVRE8pKQogICAgICAgICAgICAgICAg
ICAgICAucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50LT5jc3Nv
bVN0eWxlKCkgJiYgcGFyZW50RWxlbWVudC0+Y3Nzb21TdHlsZSgpLT5sZW5ndGgoKSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBz
dHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KHBhcmVudEVsZW1lbnQpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgZW50cnktPnNldElubGluZVN0eWxlKHN0eWxlU2hlZXQtPmJ1aWxk
T2JqZWN0Rm9yU3R5bGUoc3R5bGVTaGVldC0+c3R5bGVGb3JJZChJbnNwZWN0b3JDU1NJZChzdHls
ZVNoZWV0LT5pZCgpLCAwKSkpKTsKKyAgICAgICAgICAgICAgICBpZiAoaXM8U3R5bGVkRWxlbWVu
dD4oKnBhcmVudEVsZW1lbnQpICYmIGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnRFbGVt
ZW50KS5jc3NvbVN0eWxlKCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYg
c3R5bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChkb3duY2FzdDxTdHlsZWRFbGVtZW50
PigqcGFyZW50RWxlbWVudCkpOworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2V0SW5saW5l
U3R5bGUoc3R5bGVTaGVldC5idWlsZE9iamVjdEZvclN0eWxlKHN0eWxlU2hlZXQuc3R5bGVGb3JJ
ZChJbnNwZWN0b3JDU1NJZChzdHlsZVNoZWV0LmlkKCksIDApKSkpOwogICAgICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgICAgIGVudHJpZXMtPmFkZEl0ZW0oV1RGTW92ZShlbnRyeSkpOwpA
QCAtNjIyLDE2ICs2MjIsMTQgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm8KIAogdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0
eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0
eWxlPiYgYXR0cmlidXRlc1N0eWxlKQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50
Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIHN0eWxlU2hl
ZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQoZWxlbWVudCk7Ci0gICAgaWYgKCFzdHlsZVNoZWV0
KQorICAgIGF1dG8qIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7
CisgICAgaWYgKCFpczxTdHlsZWRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaW5saW5lU3R5bGUgPSBzdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGVsZW1l
bnQtPmNzc29tU3R5bGUoKSk7Ci0gICAgaWYgKGF1dG8gYXR0cmlidXRlcyA9IGJ1aWxkT2JqZWN0
Rm9yQXR0cmlidXRlc1N0eWxlKGVsZW1lbnQpKQorICAgIGF1dG8mIHN0eWxlZEVsZW1lbnQgPSBk
b3duY2FzdDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCk7CisgICAgYXV0byYgc3R5bGVTaGVldCA9
IGFzSW5zcGVjdG9yU3R5bGVTaGVldChzdHlsZWRFbGVtZW50KTsKKyAgICBpbmxpbmVTdHlsZSA9
IHN0eWxlU2hlZXQuYnVpbGRPYmplY3RGb3JTdHlsZSgmc3R5bGVkRWxlbWVudC5jc3NvbVN0eWxl
KCkpOworICAgIGlmIChhdXRvIGF0dHJpYnV0ZXMgPSBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNT
dHlsZShzdHlsZWRFbGVtZW50KSkKICAgICAgICAgYXR0cmlidXRlc1N0eWxlID0gV1RGTW92ZShh
dHRyaWJ1dGVzKTsKICAgICBlbHNlCiAgICAgICAgIGF0dHJpYnV0ZXNTdHlsZSA9IG51bGxwdHI7
CkBAIC02MzksMTIgKzYzNywxMiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxpbmVT
dHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZAogCiB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+JiBzdHls
ZSkKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBu
b2RlSWQpOworICAgIGF1dG8qIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5v
ZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlSW5mbyA9IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCplbGVtZW50LCB0cnVlKTsKLSAgICBSZWY8SW5z
cGVjdG9yU3R5bGU+IGluc3BlY3RvclN0eWxlID0gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShJbnNw
ZWN0b3JDU1NJZCgpLCBjb21wdXRlZFN0eWxlSW5mbywgbnVsbHB0cik7CisgICAgYXV0byBjb21w
dXRlZFN0eWxlSW5mbyA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCplbGVt
ZW50LCB0cnVlKTsKKyAgICBhdXRvIGluc3BlY3RvclN0eWxlID0gSW5zcGVjdG9yU3R5bGU6OmNy
ZWF0ZShJbnNwZWN0b3JDU1NJZCgpLCBXVEZNb3ZlKGNvbXB1dGVkU3R5bGVJbmZvKSwgbnVsbHB0
cik7CiAgICAgc3R5bGUgPSBpbnNwZWN0b3JTdHlsZS0+YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5
bGUoKTsKIH0KIApAQCAtOTIwLDIyICs5MTgsMTkgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBkb2MK
ICAgICByZXN1bHQgPSBXVEZNb3ZlKG5hbWVkRmxvd3MpOwogfQogCi1JbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hl
ZXQoRWxlbWVudCogZWxlbWVudCkKK0luc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVldChTdHlsZWRFbGVtZW50JiBl
bGVtZW50KQogewotICAgIE5vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQ6Oml0ZXJhdG9yIGl0ID0g
bV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmZpbmQoZWxlbWVudCk7CisgICAgYXV0byBpdCA9
IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5maW5kKCZlbGVtZW50KTsKICAgICBpZiAoaXQg
PT0gbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmVuZCgpKSB7Ci0gICAgICAgIENTU1N0eWxl
RGVjbGFyYXRpb24qIHN0eWxlID0gZWxlbWVudC0+Y3Nzb21TdHlsZSgpOwotICAgICAgICBpZiAo
IXN0eWxlKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICAgICAgU3RyaW5nIG5l
d1N0eWxlU2hlZXRJZCA9IFN0cmluZzo6bnVtYmVyKG1fbGFzdFN0eWxlU2hlZXRJZCsrKTsKLSAg
ICAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gaW5zcGVjdG9y
U3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKG1f
ZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBuZXdTdHlsZVNoZWV0SWQsIGVsZW1lbnQsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhciwgdGhpcyk7Ci0gICAg
ICAgIG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KG5ld1N0eWxlU2hlZXRJZCwgaW5zcGVj
dG9yU3R5bGVTaGVldCk7Ci0gICAgICAgIG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5zZXQo
ZWxlbWVudCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7Ci0gICAgICAgIHJldHVybiBpbnNwZWN0b3JT
dHlsZVNoZWV0LmdldCgpOworICAgICAgICBhdXRvIGluc3BlY3RvclN0eWxlU2hlZXQgPSBJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZShtX2RvbUFnZW50LT5wYWdlQWdl
bnQoKSwgbmV3U3R5bGVTaGVldElkLCBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIsIHRoaXMpOworICAgICAgICBhdXRvJiBpbnNwZWN0
b3JTdHlsZVNoZWV0UmVmID0gaW5zcGVjdG9yU3R5bGVTaGVldC5nZXQoKTsKKyAgICAgICAgbV9p
ZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5zZXQobmV3U3R5bGVTaGVldElkLCBpbnNwZWN0b3JTdHls
ZVNoZWV0LmNvcHlSZWYoKSk7CisgICAgICAgIG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5z
ZXQoJmVsZW1lbnQsIFdURk1vdmUoaW5zcGVjdG9yU3R5bGVTaGVldCkpOworICAgICAgICByZXR1
cm4gaW5zcGVjdG9yU3R5bGVTaGVldFJlZjsKICAgICB9CiAKLSAgICByZXR1cm4gaXQtPnZhbHVl
LmdldCgpOworICAgIHJldHVybiAqaXQtPnZhbHVlOwogfQogCiBFbGVtZW50KiBJbnNwZWN0b3JD
U1NBZ2VudDo6ZWxlbWVudEZvcklkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJ
ZCkKQEAgLTEwODUsMjEgKzEwODAsMTUgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gSW5zcGVjdG8KICAgICBy
ZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCi1SZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRl
c1N0eWxlKEVsZW1lbnQqIGVsZW1lbnQpCitSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0
eWxlKFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQpOwotICAg
IGlmICghaXM8U3R5bGVkRWxlbWVudD4oKmVsZW1lbnQpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQogICAgIC8vIEZJWE1FOiBVZ2xpbmVzcyBiZWxvdy4KLSAgICBTdHlsZVByb3BlcnRpZXMq
IGF0dHJpYnV0ZVN0eWxlID0gY29uc3RfY2FzdDxTdHlsZVByb3BlcnRpZXMqPihkb3duY2FzdDxT
dHlsZWRFbGVtZW50PihlbGVtZW50KS0+cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSk7Cisg
ICAgYXV0byogYXR0cmlidXRlU3R5bGUgPSBjb25zdF9jYXN0PFN0eWxlUHJvcGVydGllcyo+KGVs
ZW1lbnQucHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSk7CiAgICAgaWYgKCFhdHRyaWJ1dGVT
dHlsZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihhdHRyaWJ1dGVTdHlsZS0+aXNNdXRhYmxlKCkpOwotICAgIE11dGFibGVT
dHlsZVByb3BlcnRpZXMqIG11dGFibGVBdHRyaWJ1dGVTdHlsZSA9IHN0YXRpY19jYXN0PE11dGFi
bGVTdHlsZVByb3BlcnRpZXMqPihhdHRyaWJ1dGVTdHlsZSk7Ci0KLSAgICBSZWY8SW5zcGVjdG9y
U3R5bGU+IGluc3BlY3RvclN0eWxlID0gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JD
U1NJZCgpLCBtdXRhYmxlQXR0cmlidXRlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24o
KSwgbnVsbHB0cik7CisgICAgYXV0byYgbXV0YWJsZUF0dHJpYnV0ZVN0eWxlID0gZG93bmNhc3Q8
TXV0YWJsZVN0eWxlUHJvcGVydGllcz4oKmF0dHJpYnV0ZVN0eWxlKTsKKyAgICBhdXRvIGluc3Bl
Y3RvclN0eWxlID0gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JDU1NJZCgpLCBtdXRh
YmxlQXR0cmlidXRlU3R5bGUuZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpLCBudWxscHRyKTsK
ICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA3OGVi
Y2E3YTA5Yy4uNjk5MmJmNTg0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVm
IEhhc2hNYXA8aW50LCB1bnNpZ25lZD4gTm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZTsKIAogICAg
IHZvaWQgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwotICAgIEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZSogYXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVsZW1lbnQqIGVsZW1lbnQpOwor
ICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgYXNJbnNwZWN0b3JTdHlsZVNo
ZWV0KFN0eWxlZEVsZW1lbnQmIGVsZW1lbnQpOwogICAgIEVsZW1lbnQqIGVsZW1lbnRGb3JJZChF
cnJvclN0cmluZyYsIGludCBub2RlSWQpOwogICAgIGludCBkb2N1bWVudE5vZGVXaXRoUmVxdWVz
dGVkRmxvd3NJZChEb2N1bWVudCopOwogCkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZv
clJ1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQmKTsKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NT
U3R5bGVSdWxlKik7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gYnVpbGRBcnJheUZvck1hdGNoZWRSdWxl
TGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiwgU3R5bGVSZXNvbHZlciYsIEVs
ZW1lbnQmLCBQc2V1ZG9JZCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1lbnQqKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JB
dHRyaWJ1dGVzU3R5bGUoU3R5bGVkRWxlbWVudCYpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbj4+IGJ1aWxkQXJy
YXlGb3JSZWdpb25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPE5vZGVMaXN0PiYmLCBpbnQgZG9jdW1l
bnROb2RlSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxv
dz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcmLCBXZWJLaXROYW1lZEZsb3cq
LCBpbnQgZG9jdW1lbnROb2RlSWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggNmIwYThlZTdiYTIuLjYzYzQ0OGRjNTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CkBAIC01MTgsMTcgKzUxOCwxNiBAQCBzdGF0aWMgdm9pZCBmaWxsTWVkaWFMaXN0Q2hhaW4oQ1NT
UnVsZSogcnVsZSwgQXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDUwogICAgIH0KIH0K
IAotUmVmPEluc3BlY3RvclN0eWxlPiBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKGNvbnN0IEluc3Bl
Y3RvckNTU0lkJiBzdHlsZUlkLCBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiBzdHlsZSwg
SW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCkKK1JlZjxJbnNwZWN0b3JTdHls
ZT4gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShjb25zdCBJbnNwZWN0b3JDU1NJZCYgc3R5bGVJZCwg
UmVmPENTU1N0eWxlRGVjbGFyYXRpb24+JiYgc3R5bGUsIEluc3BlY3RvclN0eWxlU2hlZXQqIHBh
cmVudFN0eWxlU2hlZXQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yU3R5
bGUoc3R5bGVJZCwgV1RGTW92ZShzdHlsZSksIHBhcmVudFN0eWxlU2hlZXQpKTsKIH0KIAotSW5z
cGVjdG9yU3R5bGU6Okluc3BlY3RvclN0eWxlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlk
LCBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiBzdHlsZSwgSW5zcGVjdG9yU3R5bGVTaGVl
dCogcGFyZW50U3R5bGVTaGVldCkKK0luc3BlY3RvclN0eWxlOjpJbnNwZWN0b3JTdHlsZShjb25z
dCBJbnNwZWN0b3JDU1NJZCYgc3R5bGVJZCwgUmVmPENTU1N0eWxlRGVjbGFyYXRpb24+JiYgc3R5
bGUsIEluc3BlY3RvclN0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQpCiAgICAgOiBtX3N0eWxl
SWQoc3R5bGVJZCkKLSAgICAsIG1fc3R5bGUoc3R5bGUpCisgICAgLCBtX3N0eWxlKFdURk1vdmUo
c3R5bGUpKQogICAgICwgbV9wYXJlbnRTdHlsZVNoZWV0KHBhcmVudFN0eWxlU2hlZXQpCiB7Ci0g
ICAgQVNTRVJUKG1fc3R5bGUpOwogfQogCiBJbnNwZWN0b3JTdHlsZTo6fkluc3BlY3RvclN0eWxl
KCkKQEAgLTc0NSwxMiArNzQ0LDEyIEBAIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gSW5zcGVj
dG9yU3R5bGU6OmV4dHJhY3RTb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFyZW50
U3R5bGVTaGVldCB8fCAhbV9wYXJlbnRTdHlsZVNoZWV0LT5lbnN1cmVQYXJzZWREYXRhUmVhZHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIG1fcGFyZW50U3R5bGVTaGVl
dC0+cnVsZVNvdXJjZURhdGFGb3IobV9zdHlsZS5nZXQoKSk7CisgICAgcmV0dXJuIG1fcGFyZW50
U3R5bGVTaGVldC0+cnVsZVNvdXJjZURhdGFGb3IobV9zdHlsZS5wdHIoKSk7CiB9CiAKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEluc3BlY3RvclN0eWxlOjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkK
IHsKLSAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0LT5zZXRTdHlsZVRleHQobV9zdHlsZS5n
ZXQoKSwgdGV4dCk7CisgICAgcmV0dXJuIG1fcGFyZW50U3R5bGVTaGVldC0+c2V0U3R5bGVUZXh0
KG1fc3R5bGUucHRyKCksIHRleHQpOwogfQogCiBTdHJpbmcgSW5zcGVjdG9yU3R5bGU6OnNob3J0
aGFuZFZhbHVlKGNvbnN0IFN0cmluZyYgc2hvcnRoYW5kUHJvcGVydHkpIGNvbnN0CkBAIC0xMjU3
LDcgKzEyNTYsNyBAQCBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6
Omluc3BlY3RvclN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQwogICAgIGlmICghc3R5bGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEluc3BlY3RvclN0eWxlOjpjcmVh
dGUoaWQsIHN0eWxlLCB0aGlzKTsKKyAgICByZXR1cm4gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShp
ZCwgKnN0eWxlLCB0aGlzKTsKIH0KIAogSW5zcGVjdG9yQ1NTSWQgSW5zcGVjdG9yU3R5bGVTaGVl
dDo6cnVsZU9yU3R5bGVJZChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3QKQEAgLTE0
NzIsMjYgKzE0NzEsMjUgQEAgdm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpjb2xsZWN0RmxhdFJ1
bGVzKFJlZlB0cjxDU1NSdWxlTGlzdD4mJiBydWxlTGlzdCwgQ1NTU3QKICAgICB9CiB9CiAKLVJl
ZjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25z
dCBTdHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCitS
ZWY8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29u
c3QgU3RyaW5nJiBpZCwgUmVmPFN0eWxlZEVsZW1lbnQ+JiYgZWxlbWVudCwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVy
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZShwYWdlQWdlbnQsIGlkLCBXVEZNb3ZlKGVsZW1lbnQpLCBvcmlnaW4sIGxpc3RlbmVy
KSk7CiB9CiAKLUluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25z
dCBTdHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCitJ
bnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5nJiBp
ZCwgUmVmPFN0eWxlZEVsZW1lbnQ+JiYgZWxlbWVudCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIDogSW5z
cGVjdG9yU3R5bGVTaGVldChwYWdlQWdlbnQsIGlkLCBudWxscHRyLCBvcmlnaW4sIFN0cmluZygp
LCBsaXN0ZW5lcikKICAgICAsIG1fZWxlbWVudChXVEZNb3ZlKGVsZW1lbnQpKQogICAgICwgbV9y
dWxlU291cmNlRGF0YShudWxscHRyKQogICAgICwgbV9pc1N0eWxlVGV4dFZhbGlkKGZhbHNlKQog
ewotICAgIEFTU0VSVChtX2VsZW1lbnQpOwogICAgIG1faW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0
b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKGlkLCAwKSwgaW5saW5lU3R5bGUoKSwgdGhp
cyk7Ci0gICAgbV9zdHlsZVRleHQgPSBtX2VsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpID8gbV9l
bGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3RyaW5nKCkgOiBTdHJpbmcoKTsKKyAgICBt
X3N0eWxlVGV4dCA9IG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKCJzdHlsZSIpLnN0cmluZygpOwog
fQogCiB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6ZGlkTW9kaWZ5RWxl
bWVudEF0dHJpYnV0ZSgpCiB7CiAgICAgbV9pc1N0eWxlVGV4dFZhbGlkID0gZmFsc2U7Ci0gICAg
aWYgKG1fZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkgJiYgbV9lbGVtZW50LT5jc3NvbVN0eWxl
KCkgIT0gbV9pbnNwZWN0b3JTdHlsZS0+Y3NzU3R5bGUoKSkKKyAgICBpZiAoJm1fZWxlbWVudC0+
Y3Nzb21TdHlsZSgpICE9ICZtX2luc3BlY3RvclN0eWxlLT5jc3NTdHlsZSgpKQogICAgICAgICBt
X2luc3BlY3RvclN0eWxlID0gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JDU1NJZChp
ZCgpLCAwKSwgaW5saW5lU3R5bGUoKSwgdGhpcyk7CiAgICAgbV9ydWxlU291cmNlRGF0YSA9IG51
bGxwdHI7CiB9CkBAIC0xNTA3LDcgKzE1MDUsNyBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6dGV4dCgpIGNvbnN0CiAKIEV4Y2VwdGlvbk9y
PHZvaWQ+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6c2V0U3R5bGVUZXh0KENT
U1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgQVNT
RVJUX1VOVVNFRChzdHlsZSwgc3R5bGUgPT0gaW5saW5lU3R5bGUoKSk7CisgICAgQVNTRVJUX1VO
VVNFRChzdHlsZSwgc3R5bGUgPT0gJmlubGluZVN0eWxlKCkpOwogCiAgICAgewogICAgICAgICBJ
bnNwZWN0b3JDU1NBZ2VudDo6SW5saW5lU3R5bGVPdmVycmlkZVNjb3BlIG92ZXJyaWRlU2NvcGUo
bV9lbGVtZW50LT5kb2N1bWVudCgpKTsKQEAgLTE1NDQsOSArMTU0Miw2IEBAIGJvb2wgSW5zcGVj
dG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjplbnN1cmVQYXJzZWREYXRhUmVhZHkoKQogICAg
IGlmIChtX3J1bGVTb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICgh
bV9lbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAg
ICAgbV9ydWxlU291cmNlRGF0YSA9IHJ1bGVTb3VyY2VEYXRhKCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0xNTU3LDcgKzE1NTIsNyBAQCBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+IEluc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6aW5zcGVjdG9yU3R5bGVGb3JJZChjbwogICAgIHJl
dHVybiBtX2luc3BlY3RvclN0eWxlLmNvcHlSZWYoKTsKIH0KIAotQ1NTU3R5bGVEZWNsYXJhdGlv
biogSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjppbmxpbmVTdHlsZSgpIGNvbnN0
CitDU1NTdHlsZURlY2xhcmF0aW9uJiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6
OmlubGluZVN0eWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9lbGVtZW50LT5jc3NvbVN0eWxl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aAppbmRleCBkZjk1ZDFjZTUyMC4uMmYzMWYzMGI5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaApAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3Ry
dWN0IEluc3BlY3RvclN0eWxlUHJvcGVydHkgewogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZSBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclN0eWxlPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxJbnNwZWN0b3JTdHlsZT4gY3JlYXRlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHls
ZUlkLCBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiwgSW5zcGVjdG9yU3R5bGVTaGVldCog
cGFyZW50U3R5bGVTaGVldCk7CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHlsZT4gY3JlYXRl
KGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4m
JiwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCk7CiAgICAgfkluc3BlY3Rv
clN0eWxlKCk7CiAKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBjc3NTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KKyAgICBDU1NTdHlsZURlY2xhcmF0aW9uJiBjc3NTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0Owog
ICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IGJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxl
KCkgY29uc3Q7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JT
dHlsZShjb25zdCBJbnNwZWN0b3JDU1NJZCYgc3R5bGVJZCwgUmVmUHRyPENTU1N0eWxlRGVjbGFy
YXRpb24+JiYsIEluc3BlY3RvclN0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQpOworICAgIElu
c3BlY3RvclN0eWxlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVE
ZWNsYXJhdGlvbj4mJiwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCk7CiAK
ICAgICB2b2lkIHBvcHVsYXRlQWxsUHJvcGVydGllcyhWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9w
ZXJ0eT4qIHJlc3VsdCkgY29uc3Q7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGU+IHN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdDsKQEAgLTE0Myw3ICsxNDMsNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IGxvbmdoYW5kUHJvcGVydGllcyhjb25zdCBT
dHJpbmcmIHNob3J0aGFuZFByb3BlcnR5KSBjb25zdDsKIAogICAgIEluc3BlY3RvckNTU0lkIG1f
c3R5bGVJZDsKLSAgICBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gbV9zdHlsZTsKKyAgICBS
ZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gbV9zdHlsZTsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0
KiBtX3BhcmVudFN0eWxlU2hlZXQ7CiB9OwogCkBAIC0yMjksMTcgKzIyOSwxNyBAQCBwcml2YXRl
OgogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yU3R5bGVTaGVldCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0
b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBj
b25zdCBTdHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIHN0YXRpYyBSZWY8SW5zcGVj
dG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50Kiwg
Y29uc3QgU3RyaW5nJiBpZCwgUmVmPFN0eWxlZEVsZW1lbnQ+JiYsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiwgTGlzdGVuZXIqKTsKIAogICAgIHZvaWQgZGlkTW9k
aWZ5RWxlbWVudEF0dHJpYnV0ZSgpOwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gdGV4dCgpIGNv
bnN0IGZpbmFsOwotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQoY29uc3QgSW5z
cGVjdG9yQ1NTSWQmIGlkKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9VTlVTRUQoaWQsICFpZC5vcmRp
bmFsKCkpOyByZXR1cm4gaW5saW5lU3R5bGUoKTsgfQorICAgIENTU1N0eWxlRGVjbGFyYXRpb24q
IHN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkKSBjb25zdCBmaW5hbCB7IEFTU0VS
VF9VTlVTRUQoaWQsICFpZC5vcmRpbmFsKCkpOyByZXR1cm4gJmlubGluZVN0eWxlKCk7IH0KIAog
cHJvdGVjdGVkOgotICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0
b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIElu
c3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25z
dCBTdHJpbmcmIGlkLCBSZWY8U3R5bGVkRWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOwogCiAgICAgRG9jdW1lbnQqIG93bmVy
RG9jdW1lbnQoKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1
bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdCBmaW5hbCB7
IEFTU0VSVF9VTlVTRUQoc3R5bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9y
dWxlU291cmNlRGF0YTsgfQorICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZVNvdXJj
ZURhdGFGb3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IGZpbmFsIHsgQVNTRVJU
X1VOVVNFRChzdHlsZSwgc3R5bGUgPT0gJmlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291
cmNlRGF0YTsgfQogICAgIHVuc2lnbmVkIHJ1bGVJbmRleEJ5U3R5bGUoQ1NTU3R5bGVEZWNsYXJh
dGlvbiopIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBib29sIGVuc3VyZVBhcnNlZERh
dGFSZWFkeSgpIGZpbmFsOwogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5
bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYpIGZpbmFsOwpAQCAtMjQ5LDExICsyNDksMTEg
QEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVu
ZGluZ3MoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9u
KiBpbmxpbmVTdHlsZSgpIGNvbnN0OworICAgIENTU1N0eWxlRGVjbGFyYXRpb24mIGlubGluZVN0
eWxlKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBlbGVtZW50U3R5bGVUZXh0KCkgY29uc3Q7
CiAgICAgUmVmPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YSgpIGNvbnN0OwogCi0g
ICAgUmVmUHRyPEVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBSZWY8U3R5bGVkRWxlbWVudD4gbV9l
bGVtZW50OwogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gbV9ydWxlU291cmNlRGF0YTsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+IG1faW5zcGVjdG9yU3R5bGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmlkbAppbmRleCBmY2I2NGFlZGMyOC4uNDJlMjBmZTJmODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5pZGwKQEAgLTMwLDcgKzMwLDYgQEAKICAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHhtbHNwYWNlOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3Ry
aW5nIGNsYXNzTmFtZTsKLSAgICBbSW1wbGVtZW50ZWRBcz1jc3NvbVN0eWxlXSByZWFkb25seSBh
dHRyaWJ1dGUgQ1NTU3R5bGVEZWNsYXJhdGlvbiBzdHlsZTsKIAogICAgIGF0dHJpYnV0ZSBsb25n
IHRhYkluZGV4OwogCkBAIC00NCw0ICs0Myw1IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZ01hcCBkYXRhc2V0OwogfTsKIAorU1ZHRWxlbWVudCBpbXBsZW1lbnRzIEVsZW1lbnRD
U1NJbmxpbmVTdHlsZTsKIFNWR0VsZW1lbnQgaW1wbGVtZW50cyBHbG9iYWxFdmVudEhhbmRsZXJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9ET00vRE9NRWxlbWVudC5tbQppbmRleCA2ZDE4M2M5M2ZjMy4uZTdhYWU3
ZDhiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50Lm1tCkBAIC00MSw2ICs0MSw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL05hbWVOb2RlTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2Rl
TGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHlsZVByb3BlcnRpZXMuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvU3R5bGVkRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJTY3JpcHRPYmplY3RQcml2YXRlLmg+CiAKQEAgLTcyLDcgKzcz
LDggQEAgLSAoTlNTdHJpbmcgKil0YWdOYW1lCiAtIChET01DU1NTdHlsZURlY2xhcmF0aW9uICop
c3R5bGUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
cmV0dXJuIGtpdCh1bndyYXAoKnNlbGYpLmNzc29tU3R5bGUoKSk7CisgICAgYXV0byYgZWxlbWVu
dCA9IHVud3JhcCgqc2VsZik7CisgICAgcmV0dXJuIGlzPFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ+
KGVsZW1lbnQpID8ga2l0KCZkb3duY2FzdDxXZWJDb3JlOjpTdHlsZWRFbGVtZW50PihlbGVtZW50
KS5jc3NvbVN0eWxlKCkpIDogbnVsbHB0cjsKIH0KIAogLSAoaW50KW9mZnNldExlZnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpp
bmRleCAyNjZkYjQ5MDY4OC4uMjQ5Zjk1MGE1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTI1NCw3ICsyNTQsNyBA
QCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMq
IHN0eWxlLCBSYW5nZSogcmFuZ2UpCiB7CiAgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+
IG11dGFibGVTdHlsZShzdHlsZS0+aXNNdXRhYmxlKCkgPyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4oc3RhdGljX2Nhc3Q8TXV0YWJsZVN0eWxlUHJvcGVydGllcyY+KCpzdHlsZSkpIDogc3R5
bGUtPm11dGFibGVDb3B5KCkpOwogICAgIHJldHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0RlbGVn
YXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldwotICAgICAgICBzaG91bGRBcHBseVN0eWxl
OmtpdChtdXRhYmxlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSkgdG9FbGVtZW50
c0luRE9NUmFuZ2U6a2l0KHJhbmdlKV07CisgICAgICAgIHNob3VsZEFwcGx5U3R5bGU6a2l0KCZt
dXRhYmxlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSkgdG9FbGVtZW50c0luRE9N
UmFuZ2U6a2l0KHJhbmdlKV07CiB9CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZUZvbnRQYW5lbChXZWJW
aWV3ICp3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNTgx
OTVlZTM2NTkuLjM2ODVlMmMwNmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KQEAgLTkyMSw3ICs5MjEsNyBAQCAtIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopX3R5cGlu
Z1N0eWxlCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHR5cGluZ1N0eWxlID0g
X3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuY29weVR5cGluZ1N0eWxlKCk7CiAgICAg
aWYgKCF0eXBpbmdTdHlsZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4ga2l0KHR5
cGluZ1N0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkpOworICAgIHJldHVybiBraXQo
JnR5cGluZ1N0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkpOwogfQogCiAtICh2b2lk
KV9zZXRUeXBpbmdTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlIHdpdGhVbmRv
QWN0aW9uOihFZGl0QWN0aW9uKXVuZG9BY3Rpb24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309336</attachid>
            <date>2017-05-07 18:30:00 -0700</date>
            <delta_ts>2017-05-07 18:42:45 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>171795_Element_style_wip.patch</filename>
            <type>text/plain</type>
            <size>38955</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQtc3R5bGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvRWxlbWVudC1zdHlsZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjllMjQ2Mjg2MDcxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvRWxlbWVudC1zdHlsZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgJ3N0eWxlJyBwcm9wZXJ0eSBsb2NhdGlvbiAKK1BB
U1MgJ3N0eWxlJyBwcm9wZXJ0eSB0eXBlIAorUEFTUyBzdHlsZSBzaG91bGQgYmUgc2V0dGFibGUg
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQtc3R5bGUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQtc3R5bGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDJiOWJjZWVmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9FbGVtZW50LXN0eWxlLmh0bWwKQEAgLTAsMCArMSw0NiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxkaXYgaWQ9InRlc3REaXYiIHN0
eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQiPjwvZGl2PgorPHN2ZyBpZD0idGVzdFNWRyIgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZCI+PC9kaXY+Cis8c2NyaXB0PgordGVzdCgoKSA9PiB7
CisgICAgY29uc3QgdGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RGl2Iik7
CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0RGl2Ll9fcHJvdG9fXywgSFRNTERpdkVsZW1lbnQucHJv
dG90eXBlLCAidGVzdERpdiBpcyBhbiBIVE1MRGl2RWxlbWVudCIpOworICAgIGFzc2VydF9pZGxf
YXR0cmlidXRlKHRlc3REaXYsICJzdHlsZSIsICJIVE1MRWxlbWVudCBoYXMgJ3N0eWxlJyBhdHRy
aWJ1dGUiKTsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5KEhUTUxFbGVtZW50LnByb3RvdHlwZSwg
InN0eWxlIiwgIidzdHlsZScgaXMgb24gSFRNTEVsZW1lbnQgcHJvdG90eXBlIik7CisKKyAgICBj
b25zdCB0ZXN0U1ZHID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RTVkciKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHRlc3RTVkcuX19wcm90b19fLCBTVkdTVkdFbGVtZW50LnByb3RvdHlwZSwg
InRlc3RTVkcgaXMgYW4gU1ZHU1ZHRWxlbWVudCIpOworICAgIGFzc2VydF9pZGxfYXR0cmlidXRl
KHRlc3RTVkcsICJzdHlsZSIsICJTVkdFbGVtZW50IGhhcyAnc3R5bGUnIGF0dHJpYnV0ZSIpOwor
ICAgIGFzc2VydF9vd25fcHJvcGVydHkoU1ZHRWxlbWVudC5wcm90b3R5cGUsICJzdHlsZSIsICIn
c3R5bGUnIGlzIG9uIFNWR0VsZW1lbnQgcHJvdG90eXBlIik7CisKKyAgICBhc3NlcnRfbm90X2V4
aXN0cygiRWxlbWVudC5wcm90b3R5cGUiLCAic3R5bGUiLCAiJ3N0eWxlJyBpcyBub3Qgb24gRWxl
bWVudCBwcm90b3R5cGUiKTsKK30sICInc3R5bGUnIHByb3BlcnR5IGxvY2F0aW9uIik7CisKK3Rl
c3QoKCkgPT4geworICAgIGNvbnN0IHRlc3REaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGVzdERpdiIpOworICAgIGFzc2VydF9lcXVhbHModGVzdERpdi5zdHlsZS5fX3Byb3RvX18sIENT
U1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlLCAiSFRNTEVsZW1lbnQuc3R5bGUgdHlwZSIpOwor
CisgICAgY29uc3QgdGVzdFNWRyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0U1ZHIik7
CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0U1ZHLnN0eWxlLl9fcHJvdG9fXywgQ1NTU3R5bGVEZWNs
YXJhdGlvbi5wcm90b3R5cGUsICJTVkdFbGVtZW50LnN0eWxlIHR5cGUiKTsKK30sICInc3R5bGUn
IHByb3BlcnR5IHR5cGUiKTsKKwordGVzdCgoKSA9PiB7CisgICAgY29uc3QgdGVzdERpdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RGl2Iik7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0
RGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciwgInJlZCIsICJIVE1MRWxlbWVudC5zdHlsZSBnZXR0
ZXIiKTsKKyAgICBhc3NlcnRfcmVhZG9ubHkodGVzdERpdiwgInN0eWxlIiwgIkhUTUxFbGVtZW50
LnN0eWxlIGlzIHJlYWRvbmx5Iik7CisgICAgdGVzdERpdi5zdHlsZSA9ICJiYWNrZ3JvdW5kLWNv
bG9yOiBncmVlbiI7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0RGl2LnN0eWxlLmJhY2tncm91bmRD
b2xvciwgImdyZWVuIiwgIkhUTUxFbGVtZW50LnN0eWxlIHNldHRlciIpOworCisgICAgY29uc3Qg
dGVzdFNWRyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0U1ZHIik7CisgICAgYXNzZXJ0
X2VxdWFscyh0ZXN0U1ZHLnN0eWxlLmJhY2tncm91bmRDb2xvciwgInJlZCIsICJTVkdFbGVtZW50
LnN0eWxlIGdldHRlciIpOworICAgIGFzc2VydF9yZWFkb25seSh0ZXN0U1ZHLCAic3R5bGUiLCAi
U1ZHRWxlbWVudC5zdHlsZSBpcyByZWFkb25seSIpOworICAgIHRlc3RTVkcuc3R5bGUgPSAiYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW4iOworICAgIGFzc2VydF9lcXVhbHModGVzdFNWRy5zdHlsZS5i
YWNrZ3JvdW5kQ29sb3IsICJncmVlbiIsICJTVkdFbGVtZW50LnN0eWxlIHNldHRlciIpOworfSwg
InN0eWxlIHNob3VsZCBiZSBzZXR0YWJsZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDAyMGVlNDI0ZWZhLi5iMTk4ZDc3YzZmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTM4Nyw2ICszODcsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lE
TF9GSUxFUwogICAgIGNzcy9EZXByZWNhdGVkQ1NTT01WYWx1ZS5pZGwKICAgICBjc3MvRGVwcmVj
YXRlZENTU09NVmFsdWVMaXN0LmlkbAogICAgIGNzcy9ET01DU1NOYW1lc3BhY2UuaWRsCisgICAg
Y3NzL0VsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwKICAgICBjc3MvRm9udEZhY2UuaWRsCiAgICAg
Y3NzL0ZvbnRGYWNlU2V0LmlkbAogICAgIGNzcy9NZWRpYUxpc3QuaWRsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCAwYWNkMjljMTNkMy4uMGE0NTI2YmM3YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzIzLDYgKzMyMyw3IEBAIEpTX0JJTkRJTkdfSURMUyA9
IFwKIAkkKFdlYkNvcmUpL2Nzcy9EZXByZWNhdGVkQ1NTT01WYWx1ZS5pZGwgXAogICAgICQoV2Vi
Q29yZSkvY3NzL0RlcHJlY2F0ZWRDU1NPTVZhbHVlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkv
Y3NzL0RPTUNTU05hbWVzcGFjZS5pZGwgXAorICAgICQoV2ViQ29yZSkvY3NzL0VsZW1lbnRDU1NJ
bmxpbmVTdHlsZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0ZvbnRGYWNlLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9jc3MvRm9udEZhY2VTZXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9NZWRp
YUxpc3QuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBlYmU2YWZhNGVmYi4uNGU2NGVkMTg1ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMzkyLDYg
KzExMzkyLDcgQEAKIAkJODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdXNlRXZlbnRJbml0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMwMDAyNkI5RiAvKiBF
bmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRhdGlvbkJ1YmJsZUlP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM3REZCMzQxRUJGRUE3MDAwNjAx
Mzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODM4NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODM4NkE5NkUxOUY2MUU0RjAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUJ1aWxkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzg4NjczNDFEMTNCQTU5MDAzNjk3RDAgLyogUmVu
ZGVyT2JqZWN0RW51bXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
T2JqZWN0RW51bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0OTk2LDYgKzI0
OTk3LDcgQEAKIAkJCQlGRDY3NzczNTE5NUNBQjIwMDA3MkUwRDMgLyogRE9NQ1NTTmFtZXNwYWNl
LmNwcCAqLywKIAkJCQlGQzlBMEY3MjE2NDA5NENGMDAzRDZCOEQgLyogRE9NQ1NTTmFtZXNwYWNl
LmggKi8sCiAJCQkJRkM5QTBGNzMxNjQwOTRDRjAwM0Q2QjhEIC8qIERPTUNTU05hbWVzcGFjZS5p
ZGwgKi8sCisJCQkJODM3REZCMzQxRUJGRUE3MDAwNjAxMzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVT
dHlsZS5pZGwgKi8sCiAJCQkJRkJEQjYxOUExNkQ2MDMyQTAwQkIzMzk0IC8qIEVsZW1lbnRSdWxl
Q29sbGVjdG9yLmNwcCAqLywKIAkJCQlGQkRCNjE5RTE2RDYwMzY1MDBCQjMzOTQgLyogRWxlbWVu
dFJ1bGVDb2xsZWN0b3IuaCAqLywKIAkJCQkxQzY2MjYwRTFDNkU3Q0E2MDBBQjUyN0MgLyogRm9u
dEZhY2UuY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRDU1NJ
bmxpbmVTdHlsZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxl
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uY2ZlNzIzOTZmNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0
eWxlLmlkbApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQ1NTT00gZXh0ZW5zaW9u
cyB0byBIVE1MRWxlbWVudCAvIFNWR0VsZW1lbnQ6CisvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5v
cmcvY3Nzb20vI3RoZS1lbGVtZW50Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCitbCisgICAgTm9J
bnRlcmZhY2VPYmplY3QsCitdIGludGVyZmFjZSBFbGVtZW50Q1NTSW5saW5lU3R5bGUgeworICAg
IFtJbXBsZW1lbnRlZEFzPWNzc29tU3R5bGUsIFB1dEZvcndhcmRzPWNzc1RleHRdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBDU1NTdHlsZURlY2xhcmF0aW9uIHN0eWxlOyAvLyBGSVhNRTogU2hvdWxkIGJl
IFtTYW1lT2JqZWN0XS4KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggNTY0Y2IxZGEyM2IuLjg2NGQ5MjRkZWRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbi5oCkBAIC0xMTcsOSArMTE3LDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgSW5saW5lQ1NTU3R5
bGVEZWNsYXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24gewogcHVibGljOgotICAgIElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxl
UHJvcGVydGllcyogcHJvcGVydHlTZXQsIFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpCisg
ICAgSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBwcm9w
ZXJ0eVNldCwgU3R5bGVkRWxlbWVudCYgcGFyZW50RWxlbWVudCkKICAgICAgICAgOiBQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24ocHJvcGVydHlTZXQpCi0gICAgICAgICwgbV9wYXJlbnRF
bGVtZW50KHBhcmVudEVsZW1lbnQpIAorICAgICAgICAsIG1fcGFyZW50RWxlbWVudCgmcGFyZW50
RWxlbWVudCkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwCmluZGV4IGEzYTEwYTY3ZmRiLi4xMDA5M2E3YWE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydGllcy5jcHAKQEAgLTEzMjUsMjUgKzEzMjUsMjUgQEAgUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uKiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjc3NTdHlsZURlY2xhcmF0
aW9uKCkKICAgICByZXR1cm4gbV9jc3NvbVdyYXBwZXIuZ2V0KCk7CiB9CiAKLUNTU1N0eWxlRGVj
bGFyYXRpb24qIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRp
b24oKQorQ1NTU3R5bGVEZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6ZW5zdXJl
Q1NTU3R5bGVEZWNsYXJhdGlvbigpCiB7CiAgICAgaWYgKG1fY3Nzb21XcmFwcGVyKSB7CiAgICAg
ICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8Q1NTU3R5bGVEZWNsYXJhdGlvbio+KG1fY3Nzb21XcmFw
cGVyLmdldCgpKS0+cGFyZW50UnVsZSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2Nzc29tV3JhcHBl
ci0+cGFyZW50RWxlbWVudCgpKTsKLSAgICAgICAgcmV0dXJuIG1fY3Nzb21XcmFwcGVyLmdldCgp
OworICAgICAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogICAgIH0KICAgICBtX2Nzc29tV3Jh
cHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uPih0
aGlzKTsKLSAgICByZXR1cm4gbV9jc3NvbVdyYXBwZXIuZ2V0KCk7CisgICAgcmV0dXJuICptX2Nz
c29tV3JhcHBlcjsKIH0KIAotQ1NTU3R5bGVEZWNsYXJhdGlvbiogTXV0YWJsZVN0eWxlUHJvcGVy
dGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihTdHlsZWRFbGVtZW50KiBwYXJl
bnRFbGVtZW50KQorQ1NTU3R5bGVEZWNsYXJhdGlvbiYgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6
ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihTdHlsZWRFbGVtZW50JiBwYXJlbnRFbGVt
ZW50KQogewogICAgIGlmIChtX2Nzc29tV3JhcHBlcikgewotICAgICAgICBBU1NFUlQobV9jc3Nv
bVdyYXBwZXItPnBhcmVudEVsZW1lbnQoKSA9PSBwYXJlbnRFbGVtZW50KTsKLSAgICAgICAgcmV0
dXJuIG1fY3Nzb21XcmFwcGVyLmdldCgpOworICAgICAgICBBU1NFUlQobV9jc3NvbVdyYXBwZXIt
PnBhcmVudEVsZW1lbnQoKSA9PSAmcGFyZW50RWxlbWVudCk7CisgICAgICAgIHJldHVybiAqbV9j
c3NvbVdyYXBwZXI7CiAgICAgfQogICAgIG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uPih0aGlzLCBwYXJlbnRFbGVtZW50KTsKLSAgICBy
ZXR1cm4gbV9jc3NvbVdyYXBwZXIuZ2V0KCk7CisgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsK
IH0KIAogdW5zaWduZWQgU3R5bGVQcm9wZXJ0aWVzOjphdmVyYWdlU2l6ZUluQnl0ZXMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCmluZGV4IGZkOWZjYTMwMmUzLi4wNmQxNWRmNjFk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaApAQCAtMjM2LDggKzIzNiw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgYm9vbCBwYXJzZURlY2xhcmF0aW9uKGNv
bnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbiwgQ1NTUGFyc2VyQ29udGV4dCk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBDU1NTdHlsZURlY2xhcmF0aW9uKiBlbnN1cmVDU1NTdHlsZURlY2xhcmF0
aW9uKCk7Ci0gICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNs
YXJhdGlvbihTdHlsZWRFbGVtZW50KiBwYXJlbnRFbGVtZW50KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBDU1NTdHlsZURlY2xhcmF0aW9uJiBlbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CisgICAg
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihTdHls
ZWRFbGVtZW50JiBwYXJlbnRFbGVtZW50KTsKIAogICAgIGludCBmaW5kUHJvcGVydHlJbmRleChD
U1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBpbnQgZmluZEN1c3RvbVByb3BlcnR5SW5kZXgoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCmluZGV4IGYwNDVm
YzgyYmU4Li4wYTRkYzQ4OTU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBA
IENTU1N0eWxlRGVjbGFyYXRpb24qIEF0dHI6OnN0eWxlKCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgbV9zdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAg
IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCptX2VsZW1lbnQpLmNvbGxlY3RTdHlsZUZvclByZXNl
bnRhdGlvbkF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKCksIHZhbHVlKCksICptX3N0eWxlKTsKLSAg
ICByZXR1cm4gbV9zdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOworICAgIHJldHVy
biAmbV9zdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogfQogCiBjb25zdCBBdG9t
aWNTdHJpbmcmIEF0dHI6OnZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IDUwNzFiZWFmN2E1Li5jYTI1ZmNhYmNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC05
MjcsNyArOTI3LDcgQEAgUmVmPFRleHQ+IERvY3VtZW50OjpjcmVhdGVFZGl0aW5nVGV4dE5vZGUo
Y29uc3QgU3RyaW5nJiB0ZXh0KQogUmVmPENTU1N0eWxlRGVjbGFyYXRpb24+IERvY3VtZW50Ojpj
cmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCkKIHsKICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVy
dGllcz4gcHJvcGVydHlTZXQoTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCkpOwotICAg
IHJldHVybiAqcHJvcGVydHlTZXQtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKKyAgICBy
ZXR1cm4gcHJvcGVydHlTZXQtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKIH0KIAogRXhj
ZXB0aW9uT3I8UmVmPE5vZGU+PiBEb2N1bWVudDo6aW1wb3J0Tm9kZShOb2RlJiBub2RlVG9JbXBv
cnQsIGJvb2wgZGVlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAxZmNlZGExYzE3My4uZWM3
ZDE4NGZjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTIzNjcsMTEgKzIzNjcsNiBAQCBi
b29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
VVJJLCBjb25zdCBBdG9taWNTdHJpbgogICAgIHJldHVybiBlbGVtZW50RGF0YSgpLT5maW5kQXR0
cmlidXRlQnlOYW1lKHFOYW1lKTsKIH0KIAotQ1NTU3R5bGVEZWNsYXJhdGlvbiogRWxlbWVudDo6
Y3Nzb21TdHlsZSgpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIHZvaWQgRWxlbWVudDo6
Zm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24sIEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbikKIHsKICAgICBpZiAoIWlzQ29ubmVjdGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA1
NmZhZGI0MzZlMy4uOTQxNDY5YjUxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMTk3LDggKzE5
Nyw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8QXR0cj4+JiBhdHRyTm9k
ZUxpc3QoKTsKIAotICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogY3Nzb21TdHlsZSgp
OwotCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUoKSBjb25zdCB7IHJldHVybiBt
X3RhZ05hbWU7IH0KICNpZiBFTkFCTEUoSklUKQogICAgIHN0YXRpYyBwdHJkaWZmX3QgdGFnUU5h
bWVNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRWxlbWVudCwgbV90YWdO
YW1lKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IDQ0ZDQ4YjM4MDczLi45ZTYwYjllYjI5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtNjYsMTAgKzY2LDYgQEAKICAgICBbQ0VSZWFj
dGlvbnMsIE1heVRocm93RXhjZXB0aW9uXSBFbGVtZW50PyBpbnNlcnRBZGphY2VudEVsZW1lbnQo
RE9NU3RyaW5nIHdoZXJlLCBFbGVtZW50IGVsZW1lbnQpOyAvLyBIaXN0b3JpY2FsLgogICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBpbnNlcnRBZGphY2VudFRleHQoRE9NU3RyaW5nIHdoZXJl
LCBET01TdHJpbmcgZGF0YSk7IC8vIEhpc3RvcmljYWwuCiAKLSAgICAvLyBGSVhNRTogU2hvdWxk
IGJlIGluIGEgc2VwYXJhdGUgRWxlbWVudENTU0lubGluZVN0eWxlIGFuZCBpbXBsZW1lbnRlZCBi
eSBIVE1MRWxlbWVudCAvIFNWR0VsZW1lbnQuCi0gICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzc29tLyN0aGUtZWxlbWVudGNzc2lubGluZXN0eWxlLWludGVyZmFjZQotICAgIFtJbXBs
ZW1lbnRlZEFzPWNzc29tU3R5bGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHlsZURlY2xhcmF0
aW9uIHN0eWxlOyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0LCBQdXRGb3J3YXJkcz1j
c3NUZXh0XS4KLQogICAgIC8vIENTU09NLXZpZXcgZXh0ZW5zaW9ucyAoaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzc29tLXZpZXcvI2V4dGVuc2lvbi10by10aGUtZWxlbWVudC1pbnRlcmZhY2Up
LgogICAgIHNlcXVlbmNlPERPTVJlY3Q+IGdldENsaWVudFJlY3RzKCk7CiAgICAgW05ld09iamVj
dF0gRE9NUmVjdCBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRF
bGVtZW50LmNwcAppbmRleCAyZWU5OTk3ZmQwOC4uMmNiZTc4ZTdiNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU3R5bGVkRWxlbWVudC5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgU3R5bGVkRWxlbWVudDo6flN0
eWxlZEVsZW1lbnQoKQogICAgICAgICBjc3NvbVdyYXBwZXItPmNsZWFyUGFyZW50RWxlbWVudCgp
OwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9uKiBTdHlsZWRFbGVtZW50Ojpjc3NvbVN0eWxlKCkK
K0NTU1N0eWxlRGVjbGFyYXRpb24mIFN0eWxlZEVsZW1lbnQ6OmNzc29tU3R5bGUoKQogewotICAg
IHJldHVybiBlbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUoKS5lbnN1cmVJbmxpbmVDU1NTdHlsZURl
Y2xhcmF0aW9uKHRoaXMpOworICAgIHJldHVybiBlbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUoKS5l
bnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKCp0aGlzKTsKIH0KIAogTXV0YWJsZVN0eWxl
UHJvcGVydGllcyYgU3R5bGVkRWxlbWVudDo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDQ0MjA0MWNkNTA5Li4zMWI4ZmIzMjU5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwoU3R5bGVk
RWxlbWVudCopOwogICAgIHZvaWQgc3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKCkg
Y29uc3QgeyBTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwo
Y29uc3RfY2FzdDxTdHlsZWRFbGVtZW50Kj4odGhpcykpOyB9CiAgICAgCi0gICAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogY3Nzb21TdHlsZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIENTU1N0
eWxlRGVjbGFyYXRpb24mIGNzc29tU3R5bGUoKTsKIAogICAgIGNvbnN0IFN0eWxlUHJvcGVydGll
cyogcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggM2JjN2ZjNzdkZTUuLjUyNTlkMzNhMWFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMTAzLDEwICszMTAzLDEwIEBAIHZvaWQgRWRp
dG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50KiBlbGVtZW50KSBjb25zdAog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBNdXRhdGUgdXNpbmcgdGhlIENTU09NIHdyYXBwZXIg
c28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2aW9yIGFzIGEgc2NyaXB0LgotICAgIENTU1N0
eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKmVsZW1lbnQp
LmNzc29tU3R5bGUoKTsKLSAgICBzdHlsZS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0
eVdvcmRXcmFwLCAiYnJlYWstd29yZCIsIGZhbHNlKTsKLSAgICBzdHlsZS0+c2V0UHJvcGVydHlJ
bnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCAic3BhY2UiLCBmYWxzZSk7Ci0gICAg
c3R5bGUtPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlMaW5lQnJlYWssICJhZnRlci13
aGl0ZS1zcGFjZSIsIGZhbHNlKTsKKyAgICBhdXRvJiBzdHlsZSA9IGRvd25jYXN0PFN0eWxlZEVs
ZW1lbnQ+KCplbGVtZW50KS5jc3NvbVN0eWxlKCk7CisgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRl
cm5hbChDU1NQcm9wZXJ0eVdvcmRXcmFwLCAiYnJlYWstd29yZCIsIGZhbHNlKTsKKyAgICBzdHls
ZS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIs
IGZhbHNlKTsKKyAgICBzdHlsZS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5TGluZUJy
ZWFrLCAiYWZ0ZXItd2hpdGUtc3BhY2UiLCBmYWxzZSk7CiB9CiAKIGJvb2wgRWRpdG9yOjpmaW5k
U3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRl
eCBhNGU0ODYzNTg4Ny4uMjcwZjg1MDQyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC01NTYsOSArNTU2LDkgQEAgdm9p
ZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0
eWxlU3BhbklubGluZShJbnNlcnQKIAogICAgICAgICAgICAgLy8gTXV0YXRlIHVzaW5nIHRoZSBD
U1NPTSB3cmFwcGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBhIHNjcmlw
dC4KICAgICAgICAgICAgIGlmIChpc0Jsb2NrKGVsZW1lbnQpKQotICAgICAgICAgICAgICAgIGVs
ZW1lbnQtPmNzc29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3Bs
YXksICJpbmxpbmUiLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHls
ZSgpLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlEaXNwbGF5LCAiaW5saW5lIiwgZmFs
c2UpOwogICAgICAgICAgICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkgJiYgZWxlbWVudC0+cmVu
ZGVyZXIoKS0+c3R5bGUoKS5pc0Zsb2F0aW5nKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudC0+
Y3Nzb21TdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJub25l
IiwgZmFsc2UpOworICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5zZXRQcm9w
ZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJub25lIiwgZmFsc2UpOwogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAppbmRleCBmZmQ3NjQxZTYw
My4uNTlhNDUwNDY3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCkBAIC01Nyw0
ICs1Nyw1IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ01hcCBkYXRhc2V0Owog
fTsKIAorSFRNTEVsZW1lbnQgaW1wbGVtZW50cyBFbGVtZW50Q1NTSW5saW5lU3R5bGU7CiBIVE1M
RWxlbWVudCBpbXBsZW1lbnRzIEdsb2JhbEV2ZW50SGFuZGxlcnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA3YzE5OTJmMmFiYi4uYTdj
MTNiODUwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcApAQCAtNjA2LDkgKzYwNiw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1h
dGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vCiAgICAg
ICAgICAgICAgICAgYXV0byBlbnRyeSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6SW5oZXJp
dGVkU3R5bGVFbnRyeTo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRD
U1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcywg
c3R5bGVSZXNvbHZlciwgKnBhcmVudEVsZW1lbnQsIE5PUFNFVURPKSkKICAgICAgICAgICAgICAg
ICAgICAgLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBpZiAocGFyZW50RWxlbWVudC0+Y3Nz
b21TdHlsZSgpICYmIHBhcmVudEVsZW1lbnQtPmNzc29tU3R5bGUoKS0+bGVuZ3RoKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSog
c3R5bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChwYXJlbnRFbGVtZW50KSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zZXRJbmxpbmVTdHlsZShzdHlsZVNoZWV0LT5idWls
ZE9iamVjdEZvclN0eWxlKHN0eWxlU2hlZXQtPnN0eWxlRm9ySWQoSW5zcGVjdG9yQ1NTSWQoc3R5
bGVTaGVldC0+aWQoKSwgMCkpKSk7CisgICAgICAgICAgICAgICAgaWYgKGlzPFN0eWxlZEVsZW1l
bnQ+KCpwYXJlbnRFbGVtZW50KSAmJiBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqcGFyZW50RWxl
bWVudCkuY3Nzb21TdHlsZSgpLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8m
IHN0eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQoZG93bmNhc3Q8U3R5bGVkRWxlbWVu
dD4oKnBhcmVudEVsZW1lbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnNldElubGlu
ZVN0eWxlKHN0eWxlU2hlZXQuYnVpbGRPYmplY3RGb3JTdHlsZShzdHlsZVNoZWV0LnN0eWxlRm9y
SWQoSW5zcGVjdG9yQ1NTSWQoc3R5bGVTaGVldC5pZCgpLCAwKSkpKTsKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBlbnRyaWVzLT5hZGRJdGVtKFdURk1vdmUoZW50cnkpKTsK
QEAgLTYyMiwxNiArNjIyLDE0IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRT
dHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vCiAKIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NT
dHlsZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NT
dHlsZT4mIGF0dHJpYnV0ZXNTdHlsZSkKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVu
dEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBzdHlsZVNo
ZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KGVsZW1lbnQpOwotICAgIGlmICghc3R5bGVTaGVl
dCkKKyAgICBhdXRvKiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQp
OworICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlubGluZVN0eWxlID0gc3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JTdHlsZShlbGVt
ZW50LT5jc3NvbVN0eWxlKCkpOwotICAgIGlmIChhdXRvIGF0dHJpYnV0ZXMgPSBidWlsZE9iamVj
dEZvckF0dHJpYnV0ZXNTdHlsZShlbGVtZW50KSkKKyAgICBhdXRvJiBzdHlsZWRFbGVtZW50ID0g
ZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKmVsZW1lbnQpOworICAgIGF1dG8mIHN0eWxlU2hlZXQg
PSBhc0luc3BlY3RvclN0eWxlU2hlZXQoc3R5bGVkRWxlbWVudCk7CisgICAgaW5saW5lU3R5bGUg
PSBzdHlsZVNoZWV0LmJ1aWxkT2JqZWN0Rm9yU3R5bGUoJnN0eWxlZEVsZW1lbnQuY3Nzb21TdHls
ZSgpKTsKKyAgICBpZiAoYXV0byBhdHRyaWJ1dGVzID0gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVz
U3R5bGUoc3R5bGVkRWxlbWVudCkpCiAgICAgICAgIGF0dHJpYnV0ZXNTdHlsZSA9IFdURk1vdmUo
YXR0cmlidXRlcyk7CiAgICAgZWxzZQogICAgICAgICBhdHRyaWJ1dGVzU3R5bGUgPSBudWxscHRy
OwpAQCAtNjM5LDEyICs2MzcsMTIgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0SW5saW5l
U3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2QKIAogdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYgc3R5
bGUpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywg
bm9kZUlkKTsKKyAgICBhdXRvKiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBu
b2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRy
PENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZUluZm8gPSBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgqZWxlbWVudCwgdHJ1ZSk7Ci0gICAgUmVmPElu
c3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoSW5z
cGVjdG9yQ1NTSWQoKSwgY29tcHV0ZWRTdHlsZUluZm8sIG51bGxwdHIpOworICAgIGF1dG8gY29t
cHV0ZWRTdHlsZUluZm8gPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgqZWxl
bWVudCwgdHJ1ZSk7CisgICAgYXV0byBpbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxlOjpj
cmVhdGUoSW5zcGVjdG9yQ1NTSWQoKSwgV1RGTW92ZShjb21wdXRlZFN0eWxlSW5mbyksIG51bGxw
dHIpOwogICAgIHN0eWxlID0gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0
eWxlKCk7CiB9CiAKQEAgLTkyMCwyMiArOTE4LDE5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgZG9j
CiAgICAgcmVzdWx0ID0gV1RGTW92ZShuYW1lZEZsb3dzKTsKIH0KIAotSW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGluZVN0eWxlKiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNo
ZWV0KEVsZW1lbnQqIGVsZW1lbnQpCitJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUm
IEluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQoU3R5bGVkRWxlbWVudCYg
ZWxlbWVudCkKIHsKLSAgICBOb2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0OjppdGVyYXRvciBpdCA9
IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5maW5kKGVsZW1lbnQpOworICAgIGF1dG8gaXQg
PSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZmluZCgmZWxlbWVudCk7CiAgICAgaWYgKGl0
ID09IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5lbmQoKSkgewotICAgICAgICBDU1NTdHls
ZURlY2xhcmF0aW9uKiBzdHlsZSA9IGVsZW1lbnQtPmNzc29tU3R5bGUoKTsKLSAgICAgICAgaWYg
KCFzdHlsZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgICAgIFN0cmluZyBu
ZXdTdHlsZVNoZWV0SWQgPSBTdHJpbmc6Om51bWJlcihtX2xhc3RTdHlsZVNoZWV0SWQrKyk7Ci0g
ICAgICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGluc3BlY3Rv
clN0eWxlU2hlZXQgPSBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZSht
X2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgbmV3U3R5bGVTaGVldElkLCBlbGVtZW50LCBJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIsIHRoaXMpOwotICAg
ICAgICBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChuZXdTdHlsZVNoZWV0SWQsIGluc3Bl
Y3RvclN0eWxlU2hlZXQpOwotICAgICAgICBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0
KGVsZW1lbnQsIGluc3BlY3RvclN0eWxlU2hlZXQpOwotICAgICAgICByZXR1cm4gaW5zcGVjdG9y
U3R5bGVTaGVldC5nZXQoKTsKKyAgICAgICAgYXV0byBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5z
cGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUobV9kb21BZ2VudC0+cGFnZUFn
ZW50KCksIG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyLCB0aGlzKTsKKyAgICAgICAgYXV0byYgaW5zcGVj
dG9yU3R5bGVTaGVldFJlZiA9IGluc3BlY3RvclN0eWxlU2hlZXQuZ2V0KCk7CisgICAgICAgIG1f
aWRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KG5ld1N0eWxlU2hlZXRJZCwgaW5zcGVjdG9yU3R5
bGVTaGVldC5jb3B5UmVmKCkpOworICAgICAgICBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQu
c2V0KCZlbGVtZW50LCBXVEZNb3ZlKGluc3BlY3RvclN0eWxlU2hlZXQpKTsKKyAgICAgICAgcmV0
dXJuIGluc3BlY3RvclN0eWxlU2hlZXRSZWY7CiAgICAgfQogCi0gICAgcmV0dXJuIGl0LT52YWx1
ZS5nZXQoKTsKKyAgICByZXR1cm4gKml0LT52YWx1ZTsKIH0KIAogRWxlbWVudCogSW5zcGVjdG9y
Q1NTQWdlbnQ6OmVsZW1lbnRGb3JJZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQpCkBAIC0xMDg1LDIxICsxMDgwLDE1IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3BlY3RvCiAgICAg
cmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAotUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0
ZXNTdHlsZShFbGVtZW50KiBlbGVtZW50KQorUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTU3R5bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNT
dHlsZShTdHlsZWRFbGVtZW50JiBlbGVtZW50KQogewotICAgIEFTU0VSVChlbGVtZW50KTsKLSAg
ICBpZiAoIWlzPFN0eWxlZEVsZW1lbnQ+KCplbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KICAgICAvLyBGSVhNRTogVWdsaW5lc3MgYmVsb3cuCi0gICAgU3R5bGVQcm9wZXJ0aWVz
KiBhdHRyaWJ1dGVTdHlsZSA9IGNvbnN0X2Nhc3Q8U3R5bGVQcm9wZXJ0aWVzKj4oZG93bmNhc3Q8
U3R5bGVkRWxlbWVudD4oZWxlbWVudCktPnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkpOwor
ICAgIGF1dG8qIGF0dHJpYnV0ZVN0eWxlID0gY29uc3RfY2FzdDxTdHlsZVByb3BlcnRpZXMqPihl
bGVtZW50LnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkpOwogICAgIGlmICghYXR0cmlidXRl
U3R5bGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oYXR0cmlidXRlU3R5bGUtPmlzTXV0YWJsZSgpKTsKLSAgICBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzKiBtdXRhYmxlQXR0cmlidXRlU3R5bGUgPSBzdGF0aWNfY2FzdDxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzKj4oYXR0cmlidXRlU3R5bGUpOwotCi0gICAgUmVmPEluc3BlY3Rv
clN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoSW5zcGVjdG9y
Q1NTSWQoKSwgbXV0YWJsZUF0dHJpYnV0ZVN0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9u
KCksIG51bGxwdHIpOworICAgIGF1dG8mIG11dGFibGVBdHRyaWJ1dGVTdHlsZSA9IGRvd25jYXN0
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+KCphdHRyaWJ1dGVTdHlsZSk7CisgICAgYXV0byBpbnNw
ZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoKSwgbXV0
YWJsZUF0dHJpYnV0ZVN0eWxlLmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSwgbnVsbHB0cik7
CiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlLT5idWlsZE9iamVjdEZvclN0eWxlKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggNzhl
YmNhN2EwOWMuLjY4NzcwMGE3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaApAQCAtMTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPGludCwgdW5zaWduZWQ+IE5vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGU7CiAKICAg
ICB2b2lkIHJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKTsKLSAgICBJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGUqIGFzSW5zcGVjdG9yU3R5bGVTaGVldChFbGVtZW50KiBlbGVtZW50KTsK
KyAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUmIGFzSW5zcGVjdG9yU3R5bGVT
aGVldChTdHlsZWRFbGVtZW50Jik7CiAgICAgRWxlbWVudCogZWxlbWVudEZvcklkKEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCk7CiAgICAgaW50IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93
c0lkKERvY3VtZW50Kik7CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShT
dHlsZVJ1bGUqLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCYpOwogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1
bGUqKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCYs
IFBzZXVkb0lkKTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCopOworICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0
ZXNTdHlsZShTdHlsZWRFbGVtZW50Jik7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UmVnaW9uPj4gYnVpbGRBcnJheUZvclJl
Z2lvbnMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8Tm9kZUxpc3Q+JiYsIGludCBkb2N1bWVudE5vZGVJ
ZCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93PiBidWls
ZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyYsIFdlYktpdE5hbWVkRmxvdyosIGludCBk
b2N1bWVudE5vZGVJZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcAppbmRleCA2YjBhOGVlN2JhMi4uNjNjNDQ4ZGM1NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTUx
OCwxNyArNTE4LDE2IEBAIHN0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxlKiBy
dWxlLCBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTCiAgICAgfQogfQogCi1SZWY8
SW5zcGVjdG9yU3R5bGU+IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoY29uc3QgSW5zcGVjdG9yQ1NT
SWQmIHN0eWxlSWQsIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJbnNwZWN0
b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KQorUmVmPEluc3BlY3RvclN0eWxlPiBJbnNw
ZWN0b3JTdHlsZTo6Y3JlYXRlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NT
U3R5bGVEZWNsYXJhdGlvbj4mJiBzdHlsZSwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5
bGVTaGVldCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JTdHlsZShzdHls
ZUlkLCBXVEZNb3ZlKHN0eWxlKSwgcGFyZW50U3R5bGVTaGVldCkpOwogfQogCi1JbnNwZWN0b3JT
dHlsZTo6SW5zcGVjdG9yU3R5bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFJlZlB0
cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJl
bnRTdHlsZVNoZWV0KQorSW5zcGVjdG9yU3R5bGU6Okluc3BlY3RvclN0eWxlKGNvbnN0IEluc3Bl
Y3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiBzdHlsZSwgSW5z
cGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCkKICAgICA6IG1fc3R5bGVJZChzdHls
ZUlkKQotICAgICwgbV9zdHlsZShzdHlsZSkKKyAgICAsIG1fc3R5bGUoV1RGTW92ZShzdHlsZSkp
CiAgICAgLCBtX3BhcmVudFN0eWxlU2hlZXQocGFyZW50U3R5bGVTaGVldCkKIHsKLSAgICBBU1NF
UlQobV9zdHlsZSk7CiB9CiAKIEluc3BlY3RvclN0eWxlOjp+SW5zcGVjdG9yU3R5bGUoKQpAQCAt
NzQ1LDEyICs3NDQsMTIgQEAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBJbnNwZWN0b3JTdHls
ZTo6ZXh0cmFjdFNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9wYXJlbnRTdHlsZVNo
ZWV0IHx8ICFtX3BhcmVudFN0eWxlU2hlZXQtPmVuc3VyZVBhcnNlZERhdGFSZWFkeSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0LT5ydWxl
U291cmNlRGF0YUZvcihtX3N0eWxlLmdldCgpKTsKKyAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNo
ZWV0LT5ydWxlU291cmNlRGF0YUZvcihtX3N0eWxlLnB0cigpKTsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gSW5zcGVjdG9yU3R5bGU6OnNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAg
IHJldHVybiBtX3BhcmVudFN0eWxlU2hlZXQtPnNldFN0eWxlVGV4dChtX3N0eWxlLmdldCgpLCB0
ZXh0KTsKKyAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0LT5zZXRTdHlsZVRleHQobV9zdHls
ZS5wdHIoKSwgdGV4dCk7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JTdHlsZTo6c2hvcnRoYW5kVmFs
dWUoY29uc3QgU3RyaW5nJiBzaG9ydGhhbmRQcm9wZXJ0eSkgY29uc3QKQEAgLTEyNTcsNyArMTI1
Niw3IEBAIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6aW5zcGVj
dG9yU3R5bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDCiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShpZCwg
c3R5bGUsIHRoaXMpOworICAgIHJldHVybiBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKGlkLCAqc3R5
bGUsIHRoaXMpOwogfQogCiBJbnNwZWN0b3JDU1NJZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxl
T3JTdHlsZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdApAQCAtMTQ3MiwyNiAr
MTQ3MSwyNSBAQCB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OmNvbGxlY3RGbGF0UnVsZXMoUmVm
UHRyPENTU1J1bGVMaXN0PiYmIHJ1bGVMaXN0LCBDU1NTdAogICAgIH0KIH0KIAotUmVmPEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK1JlZjxJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZTo6Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJp
bmcmIGlkLCBSZWY8U3R5bGVkRWxlbWVudD4mJiBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
KHBhZ2VBZ2VudCwgaWQsIFdURk1vdmUoZWxlbWVudCksIG9yaWdpbiwgbGlzdGVuZXIpKTsKIH0K
IAotSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK0luc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBSZWY8
U3R5bGVkRWxlbWVudD4mJiBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxl
U2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgOiBJbnNwZWN0b3JT
dHlsZVNoZWV0KHBhZ2VBZ2VudCwgaWQsIG51bGxwdHIsIG9yaWdpbiwgU3RyaW5nKCksIGxpc3Rl
bmVyKQogICAgICwgbV9lbGVtZW50KFdURk1vdmUoZWxlbWVudCkpCiAgICAgLCBtX3J1bGVTb3Vy
Y2VEYXRhKG51bGxwdHIpCiAgICAgLCBtX2lzU3R5bGVUZXh0VmFsaWQoZmFsc2UpCiB7Ci0gICAg
QVNTRVJUKG1fZWxlbWVudCk7CiAgICAgbV9pbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxl
OjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoaWQsIDApLCBpbmxpbmVTdHlsZSgpLCB0aGlzKTsKLSAg
ICBtX3N0eWxlVGV4dCA9IG1fZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkgPyBtX2VsZW1lbnQt
PmdldEF0dHJpYnV0ZSgic3R5bGUiKS5zdHJpbmcoKSA6IFN0cmluZygpOworICAgIG1fc3R5bGVU
ZXh0ID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3RyaW5nKCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpkaWRNb2RpZnlFbGVtZW50QXR0
cmlidXRlKCkKIHsKICAgICBtX2lzU3R5bGVUZXh0VmFsaWQgPSBmYWxzZTsKLSAgICBpZiAobV9l
bGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAmJiBtX2VsZW1lbnQtPmNzc29tU3R5bGUoKSAhPSBt
X2luc3BlY3RvclN0eWxlLT5jc3NTdHlsZSgpKQorICAgIGlmICgmbV9lbGVtZW50LT5jc3NvbVN0
eWxlKCkgIT0gJm1faW5zcGVjdG9yU3R5bGUtPmNzc1N0eWxlKCkpCiAgICAgICAgIG1faW5zcGVj
dG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKGlkKCksIDAp
LCBpbmxpbmVTdHlsZSgpLCB0aGlzKTsKICAgICBtX3J1bGVTb3VyY2VEYXRhID0gbnVsbHB0cjsK
IH0KQEAgLTE1MDcsNyArMTUwNSw3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlOjp0ZXh0KCkgY29uc3QKIAogRXhjZXB0aW9uT3I8dm9pZD4g
SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRleHQoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBBU1NFUlRfVU5V
U0VEKHN0eWxlLCBzdHlsZSA9PSBpbmxpbmVTdHlsZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN0
eWxlLCBzdHlsZSA9PSAmaW5saW5lU3R5bGUoKSk7CiAKICAgICB7CiAgICAgICAgIEluc3BlY3Rv
ckNTU0FnZW50OjpJbmxpbmVTdHlsZU92ZXJyaWRlU2NvcGUgb3ZlcnJpZGVTY29wZShtX2VsZW1l
bnQtPmRvY3VtZW50KCkpOwpAQCAtMTU0NCw5ICsxNTQyLDYgQEAgYm9vbCBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVuc3VyZVBhcnNlZERhdGFSZWFkeSgpCiAgICAgaWYgKG1f
cnVsZVNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFtX2VsZW1l
bnQtPmlzU3R5bGVkRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBtX3J1
bGVTb3VyY2VEYXRhID0gcnVsZVNvdXJjZURhdGEoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTE1NTcsNyArMTU1Miw3IEBAIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGluZVN0eWxlOjppbnNwZWN0b3JTdHlsZUZvcklkKGNvCiAgICAgcmV0dXJuIG1f
aW5zcGVjdG9yU3R5bGUuY29weVJlZigpOwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9uKiBJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmlubGluZVN0eWxlKCkgY29uc3QKK0NTU1N0
eWxlRGVjbGFyYXRpb24mIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6aW5saW5l
U3R5bGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2VsZW1lbnQtPmNzc29tU3R5bGUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4
IGRmOTVkMWNlNTIwLi4yZjMxZjMwYjk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCkBAIC0xMjIsMTAgKzEyMiwxMCBAQCBzdHJ1Y3QgSW5z
cGVjdG9yU3R5bGVQcm9wZXJ0eSB7CiAKIGNsYXNzIEluc3BlY3RvclN0eWxlIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yU3R5bGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEluc3BlY3RvclN0eWxlPiBjcmVhdGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFJl
ZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJlbnRT
dHlsZVNoZWV0KTsKKyAgICBzdGF0aWMgUmVmPEluc3BlY3RvclN0eWxlPiBjcmVhdGUoY29uc3Qg
SW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFJlZjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmLCBJbnNw
ZWN0b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KTsKICAgICB+SW5zcGVjdG9yU3R5bGUo
KTsKIAotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIGNzc1N0eWxlKCkgY29uc3QgeyByZXR1cm4g
bV9zdHlsZS5nZXQoKTsgfQorICAgIENTU1N0eWxlRGVjbGFyYXRpb24mIGNzc1N0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvclN0eWxlKCkgY29uc3Q7CiAgICAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
Q29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gYnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25z
dDsKIApAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIEluc3BlY3RvclN0eWxlKGNv
bnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4m
JiwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCk7CisgICAgSW5zcGVjdG9y
U3R5bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFJlZjxDU1NTdHlsZURlY2xhcmF0
aW9uPiYmLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KTsKIAogICAgIHZv
aWQgcG9wdWxhdGVBbGxQcm9wZXJ0aWVzKFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5Piog
cmVzdWx0KSBjb25zdDsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHls
ZT4gc3R5bGVXaXRoUHJvcGVydGllcygpIGNvbnN0OwpAQCAtMTQzLDcgKzE0Myw3IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbG9uZ2hhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0cmluZyYg
c2hvcnRoYW5kUHJvcGVydHkpIGNvbnN0OwogCiAgICAgSW5zcGVjdG9yQ1NTSWQgbV9zdHlsZUlk
OwotICAgIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBtX3N0eWxlOworICAgIFJlZjxDU1NT
dHlsZURlY2xhcmF0aW9uPiBtX3N0eWxlOwogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIG1fcGFy
ZW50U3R5bGVTaGVldDsKIH07CiAKQEAgLTIyOSwxNyArMjI5LDE3IEBAIHByaXZhdGU6CiAKIGNs
YXNzIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3JTdHlsZVNoZWV0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc3BlY3RvclN0eWxl
U2hlZXRGb3JJbmxpbmVTdHlsZT4gY3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0
cmluZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0
eWxlU2hlZXRPcmlnaW4sIExpc3RlbmVyKik7CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBT
dHJpbmcmIGlkLCBSZWY8U3R5bGVkRWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOwogCiAgICAgdm9pZCBkaWRNb2RpZnlFbGVt
ZW50QXR0cmlidXRlKCk7CiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiB0ZXh0KCkgY29uc3QgZmlu
YWw7Ci0gICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVGb3JJZChjb25zdCBJbnNwZWN0b3JD
U1NJZCYgaWQpIGNvbnN0IGZpbmFsIHsgQVNTRVJUX1VOVVNFRChpZCwgIWlkLm9yZGluYWwoKSk7
IHJldHVybiBpbmxpbmVTdHlsZSgpOyB9CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVG
b3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNvbnN0IGZpbmFsIHsgQVNTRVJUX1VOVVNF
RChpZCwgIWlkLm9yZGluYWwoKSk7IHJldHVybiAmaW5saW5lU3R5bGUoKTsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3RvclBhZ2VB
Z2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4sIExpc3RlbmVyKik7CisgICAgSW5zcGVjdG9y
U3R5bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmlu
ZyYgaWQsIFJlZjxTdHlsZWRFbGVtZW50PiYmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0
eWxlU2hlZXRPcmlnaW4sIExpc3RlbmVyKik7CiAKICAgICBEb2N1bWVudCogb3duZXJEb2N1bWVu
dCgpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZVNvdXJj
ZURhdGFGb3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IGZpbmFsIHsgQVNTRVJU
X1VOVVNFRChzdHlsZSwgc3R5bGUgPT0gaW5saW5lU3R5bGUoKSk7IHJldHVybiBtX3J1bGVTb3Vy
Y2VEYXRhOyB9CisgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YUZv
cihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3QgZmluYWwgeyBBU1NFUlRfVU5VU0VE
KHN0eWxlLCBzdHlsZSA9PSAmaW5saW5lU3R5bGUoKSk7IHJldHVybiBtX3J1bGVTb3VyY2VEYXRh
OyB9CiAgICAgdW5zaWduZWQgcnVsZUluZGV4QnlTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKikg
Y29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIGJvb2wgZW5zdXJlUGFyc2VkRGF0YVJlYWR5
KCkgZmluYWw7CiAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZUZvcklk
KGNvbnN0IEluc3BlY3RvckNTU0lkJikgZmluYWw7CkBAIC0yNDksMTEgKzI0OSwxMSBAQCBwcm90
ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncygp
IGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIGlubGlu
ZVN0eWxlKCkgY29uc3Q7CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYgaW5saW5lU3R5bGUoKSBj
b25zdDsKICAgICBjb25zdCBTdHJpbmcmIGVsZW1lbnRTdHlsZVRleHQoKSBjb25zdDsKICAgICBS
ZWY8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1bGVTb3VyY2VEYXRhKCkgY29uc3Q7CiAKLSAgICBSZWZQ
dHI8RWxlbWVudD4gbV9lbGVtZW50OworICAgIFJlZjxTdHlsZWRFbGVtZW50PiBtX2VsZW1lbnQ7
CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBtX3J1bGVTb3VyY2VEYXRhOwogICAgIFJl
ZlB0cjxJbnNwZWN0b3JTdHlsZT4gbV9pbnNwZWN0b3JTdHlsZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaWRsCmluZGV4IGZjYjY0YWVkYzI4Li40MmUyMGZlMmY4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmlkbApAQCAtMzAsNyArMzAsNiBAQAogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcg
eG1sc3BhY2U7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgY2xh
c3NOYW1lOwotICAgIFtJbXBsZW1lbnRlZEFzPWNzc29tU3R5bGVdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBDU1NTdHlsZURlY2xhcmF0aW9uIHN0eWxlOwogCiAgICAgYXR0cmlidXRlIGxvbmcgdGFiSW5k
ZXg7CiAKQEAgLTQ0LDQgKzQzLDUgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
TWFwIGRhdGFzZXQ7CiB9OwogCitTVkdFbGVtZW50IGltcGxlbWVudHMgRWxlbWVudENTU0lubGlu
ZVN0eWxlOwogU1ZHRWxlbWVudCBpbXBsZW1lbnRzIEdsb2JhbEV2ZW50SGFuZGxlcnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL0RPTS9ET01FbGVtZW50Lm1tCmluZGV4IDZkMTgzYzkzZmMzLi5lN2FhZTdkOGJhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9T
dHlsZWRFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KIApAQCAtNzIsNyArNzMsOCBAQCAt
IChOU1N0cmluZyAqKXRhZ05hbWUKIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4g
a2l0KHVud3JhcCgqc2VsZikuY3Nzb21TdHlsZSgpKTsKKyAgICBhdXRvJiBlbGVtZW50ID0gdW53
cmFwKCpzZWxmKTsKKyAgICByZXR1cm4gaXM8V2ViQ29yZTo6U3R5bGVkRWxlbWVudD4oZWxlbWVu
dCkgPyBraXQoJmRvd25jYXN0PFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpLmNzc29t
U3R5bGUoKSkgOiBudWxscHRyOwogfQogCiAtIChpbnQpb2Zmc2V0TGVmdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IDI2
NmRiNDkwNjg4Li4yNDlmOTUwYTU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMjU0LDcgKzI1NCw3IEBAIGJvb2wg
V2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKFN0eWxlUHJvcGVydGllcyogc3R5bGUs
IFJhbmdlKiByYW5nZSkKIHsKICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gbXV0YWJs
ZVN0eWxlKHN0eWxlLT5pc011dGFibGUoKSA/IFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPihz
dGF0aWNfY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJj4oKnN0eWxlKSkgOiBzdHlsZS0+bXV0
YWJsZUNvcHkoKSk7CiAgICAgcmV0dXJuIFtbbV93ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3
YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3Ci0gICAgICAgIHNob3VsZEFwcGx5U3R5bGU6a2l0KG11
dGFibGVTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKSB0b0VsZW1lbnRzSW5ET01S
YW5nZTpraXQocmFuZ2UpXTsKKyAgICAgICAgc2hvdWxkQXBwbHlTdHlsZTpraXQoJm11dGFibGVT
dHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKSB0b0VsZW1lbnRzSW5ET01SYW5nZTpr
aXQocmFuZ2UpXTsKIH0KIAogc3RhdGljIHZvaWQgdXBkYXRlRm9udFBhbmVsKFdlYlZpZXcgKndl
YlZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA1ODE5NWVlMzY1
OS4uMzY4NWUyYzA2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAt
OTIxLDcgKzkyMSw3IEBAIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilfdHlwaW5nU3R5bGUK
ICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gdHlwaW5nU3R5bGUgPSBfcHJpdmF0
ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5jb3B5VHlwaW5nU3R5bGUoKTsKICAgICBpZiAoIXR5
cGluZ1N0eWxlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBraXQodHlwaW5nU3R5
bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSk7CisgICAgcmV0dXJuIGtpdCgmdHlwaW5n
U3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSk7CiB9CiAKIC0gKHZvaWQpX3NldFR5
cGluZ1N0eWxlOihET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUgd2l0aFVuZG9BY3Rpb246
KEVkaXRBY3Rpb24pdW5kb0FjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGM5OTll
ZmY4NmVlLi4zZmFlZTE5ZjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMTUxLDcg
KzE1MSw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdl
KFJhbmdlKiBmcm9tUmFuZ2UsIFJhbmdlKiB0b1JhbmdlCiBib29sIFdlYkVkaXRvckNsaWVudDo6
c2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqIHN0eWxlLCBSYW5nZSogcmFuZ2UpCiB7
CiAgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IG11dGFibGVTdHlsZShzdHlsZS0+aXNN
dXRhYmxlKCkgPyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4oc3RhdGljX2Nhc3Q8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcyY+KCpzdHlsZSkpIDogc3R5bGUtPm11dGFibGVDb3B5KCkpOwotICAg
IGJvb2wgcmVzdWx0ID0gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLnNob3Vs
ZEFwcGx5U3R5bGUoKm1fcGFnZSwgbXV0YWJsZVN0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0
aW9uKCksIHJhbmdlKTsKKyAgICBib29sIHJlc3VsdCA9IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQoKS5zaG91bGRBcHBseVN0eWxlKCptX3BhZ2UsICZtdXRhYmxlU3R5bGUtPmVu
c3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSwgcmFuZ2UpOwogICAgIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309337</attachid>
            <date>2017-05-07 18:42:47 -0700</date>
            <delta_ts>2017-05-07 19:30:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171795-20170507184246.patch</filename>
            <type>text/plain</type>
            <size>47481</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODI3ZWNkMjcxYmU2NDkz
ZjYyOGY4OWUyNTdjNGZlYzRjNjkyYjMzZS4uN2RiOTU4NjQxYTNkODgyODcwMDA1NmNhZGUxNjc5
NjBlZTkyOGFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY3IEBACiAyMDE3LTA1LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSAnc3R5bGUnIGZyb20g
RWxlbWVudCB0byBIVE1MRWxlbWVudCAvIFNWR0VsZW1lbnQgYW5kIG1ha2UgaXQgc2V0dGFibGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTc5NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgJ3N0
eWxlJyBmcm9tIEVsZW1lbnQgdG8gSFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50IGFuZCBtYWtlIGl0
IHNldHRhYmxlCisgICAgICAgIGFzIHBlcjoKKyAgICAgICAgLSBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3Nzb20vI3RoZS1lbGVtZW50Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCisKKyAgICAg
ICAgQm90aCBGaXJlZm94IGFuZCBDaHJvbWUgYWxyZWFkeSBtYXRjaCB0aGUgc3BlY2lmaWNhdGlv
biAoYm90aCBmb3IgdGhlCisgICAgICAgIHByb3BlcnR5IGxvY2F0aW9uIGFuZCBoYXZpbmcgaXQg
c2V0dGFibGUpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL0VsZW1lbnQtc3R5bGUuaHRtbAor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogY3NzL0VsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGw6IEFkZGVkLgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVu
c3VyZUNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxl
UHJvcGVydGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgICog
Y3NzL1N0eWxlUHJvcGVydGllcy5oOgorICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF0dHI6OnN0eWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50Ojpjc3NvbVN0eWxlKToKKyAgICAgICAgKiBk
b20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBT
dHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9y
QXR0cmlidXRlc1N0eWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclN0eWxlOjpJbnNwZWN0b3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JTdHlsZTo6ZXh0cmFjdFNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3R5bGU6OnNldFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6
aW5zcGVjdG9yU3R5bGVGb3JJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6
OmRpZE1vZGlmeUVsZW1lbnRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjplbnN1cmVQYXJzZWREYXRhUmVh
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
OjppbmxpbmVTdHlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5pZGw6CisKKzIwMTctMDUtMDcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBEcm9wIHJlbWFpbmluZyB1c2VzIG9m
IFBhc3NSZWZQdHIgaW4gZWRpdGluZyBjb2RlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE3ODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDFlNzlhNTdl
YTFkMjgzNTQzN2MwZDViZTM3ZTMyNGFlN2ZjODQ5NGIuLjFhN2RiZGRkYWVmMDk1ZThiNWRhOTg2
ODlkYjdkZGJmYzFlNDljMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
Ny0wNS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
J3N0eWxlJyBmcm9tIEVsZW1lbnQgdG8gSFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50IGFuZCBtYWtl
IGl0IHNldHRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzE3OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBCdWlsZCBmaXguCisKKyAgICAgICAgKiBET00vRE9NRWxlbWVudC5tbToKKyAgICAgICAg
KC1bRE9NRWxlbWVudCBzdHlsZV0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZSk6
CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3R5
cGluZ1N0eWxlXSk6CisKIDIwMTctMDUtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBbGlnbiBvdXIgSURMIGZpbGVzIHdpdGggdGhlIGxhdGVzdCBET00gc3Bl
Y2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDMwNmYzYWM0N2NmNjNjNzMwMGI0YTlkMjgxNGIxMzE4
MjUxZTM2YmEuLjYyMDY2ODE2MzAzMjdkMzAxNGU0YjMzMTkyN2M3OThhYjk4MjFiMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgJ3N0eWxlJyBmcm9tIEVsZW1lbnQgdG8gSFRNTEVs
ZW1lbnQgLyBTVkdFbGVtZW50IGFuZCBtYWtlIGl0IHNldHRhYmxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE3OTUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWlsZCBmaXguCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZSk6CisKIDIwMTctMDUtMDcg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVh
bV0gcjIxNjE5NyBjYXVzZWQgc29tZSB3ZWJydGMgdGVzdHMgdG8gZmFpbApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCAwMjBlZTQyNGVmYWQ5YmJlZmM3YmE2YWM2YTQ2MzM0ZTExNjEyNzQyLi5iMTk4
ZDc3YzZmYmVmNzM4ZDJkMGFhNzBmNGEwY2UzOGM4ZjU4YWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMzg3LDYgKzM4Nyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAg
Y3NzL0RlcHJlY2F0ZWRDU1NPTVZhbHVlLmlkbAogICAgIGNzcy9EZXByZWNhdGVkQ1NTT01WYWx1
ZUxpc3QuaWRsCiAgICAgY3NzL0RPTUNTU05hbWVzcGFjZS5pZGwKKyAgICBjc3MvRWxlbWVudENT
U0lubGluZVN0eWxlLmlkbAogICAgIGNzcy9Gb250RmFjZS5pZGwKICAgICBjc3MvRm9udEZhY2VT
ZXQuaWRsCiAgICAgY3NzL01lZGlhTGlzdC5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDBhY2QyOWMxM2QzNjA0YzJlZmQ2Zjc3ODNjNGEyZjljNjhmZmUxMWEuLjBhNDUyNmJj
N2JkNWViZjAzNGM5OGIwNjQwYmIwNGJmNTI5MjY3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMzIzLDYgKzMyMyw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKIAkkKFdlYkNv
cmUpL2Nzcy9EZXByZWNhdGVkQ1NTT01WYWx1ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0Rl
cHJlY2F0ZWRDU1NPTVZhbHVlTGlzdC5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0RPTUNTU05h
bWVzcGFjZS5pZGwgXAorICAgICQoV2ViQ29yZSkvY3NzL0VsZW1lbnRDU1NJbmxpbmVTdHlsZS5p
ZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0ZvbnRGYWNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9j
c3MvRm9udEZhY2VTZXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9NZWRpYUxpc3QuaWRsIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBlYmU2YWZhNGVmYjhjZjQ1NDFkNGM4YmY3OGRiY2QyNzI1ZjJmZjExLi40ZTY0ZWQxODVl
YTViZWUyM2IwNjFlMGZmYjlkY2MyZTg1NzE1NDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTM5Miw2ICsxMTM5Miw3IEBA
CiAJCTgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MzdBODAxMjFFMUUxMjczMDAwMjZCOUYgLyogRW5nbGlzaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Qu
c3RyaW5nc2RpY3Q7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9Mb2NhbGl6
YWJsZS5zdHJpbmdzZGljdDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk4MzdCN0Qx
RjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZhbGlkYXRpb25CdWJibGVJT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzN0RGQjM0MUVCRkVBNzAwMDYwMTM4NSAvKiBFbGVt
ZW50Q1NTSW5saW5lU3R5bGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVsZW1lbnRDU1NJ
bmxpbmVTdHlsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzODZBOTZDMTlG
NjFCMkUwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3R5bGVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
ODZBOTZFMTlGNjFFNEYwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODM4ODY3MzQxRDEzQkE1OTAwMzY5N0QwIC8qIFJlbmRlck9iamVjdEVu
dW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck9iamVjdEVudW1z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDk5Niw2ICsyNDk5Nyw3IEBACiAJ
CQkJRkQ2Nzc3MzUxOTVDQUIyMDAwNzJFMEQzIC8qIERPTUNTU05hbWVzcGFjZS5jcHAgKi8sCiAJ
CQkJRkM5QTBGNzIxNjQwOTRDRjAwM0Q2QjhEIC8qIERPTUNTU05hbWVzcGFjZS5oICovLAogCQkJ
CUZDOUEwRjczMTY0MDk0Q0YwMDNENkI4RCAvKiBET01DU1NOYW1lc3BhY2UuaWRsICovLAorCQkJ
CTgzN0RGQjM0MUVCRkVBNzAwMDYwMTM4NSAvKiBFbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsICov
LAogCQkJCUZCREI2MTlBMTZENjAzMkEwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5j
cHAgKi8sCiAJCQkJRkJEQjYxOUUxNkQ2MDM2NTAwQkIzMzk0IC8qIEVsZW1lbnRSdWxlQ29sbGVj
dG9yLmggKi8sCiAJCQkJMUM2NjI2MEUxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmNwcCAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2ZlNzIzOTZmNjAzODEwMjNjNGIxZGE3ODhkMDVkNjcyNWQzNjIyNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCkBA
IC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBDU1NPTSBleHRlbnNpb25zIHRvIEhUTUxF
bGVtZW50IC8gU1ZHRWxlbWVudDoKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS8j
dGhlLWVsZW1lbnRjc3NpbmxpbmVzdHlsZS1pbnRlcmZhY2UKK1sKKyAgICBOb0ludGVyZmFjZU9i
amVjdCwKK10gaW50ZXJmYWNlIEVsZW1lbnRDU1NJbmxpbmVTdHlsZSB7CisgICAgW0ltcGxlbWVu
dGVkQXM9Y3Nzb21TdHlsZSwgUHV0Rm9yd2FyZHM9Y3NzVGV4dF0gcmVhZG9ubHkgYXR0cmlidXRl
IENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7IC8vIEZJWE1FOiBTaG91bGQgYmUgW1NhbWVPYmpl
Y3RdLgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb24uaAppbmRleCA1NjRjYjFkYTIzYjViYmEyNTAzYmQ1MDE2MmZhYmJhYzFjNjhh
YmY5Li44NjRkOTI0ZGVkYWExZTM0NWVmMzc1NjVmZjViYWEyYzY1YjJlMThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCkBA
IC0xMTcsOSArMTE3LDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgSW5saW5lQ1NTU3R5bGVEZWNsYXJh
dGlvbiBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24gewogcHVi
bGljOgotICAgIElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxlUHJvcGVydGll
cyogcHJvcGVydHlTZXQsIFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpCisgICAgSW5saW5l
Q1NTU3R5bGVEZWNsYXJhdGlvbihNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBwcm9wZXJ0eVNldCwg
U3R5bGVkRWxlbWVudCYgcGFyZW50RWxlbWVudCkKICAgICAgICAgOiBQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24ocHJvcGVydHlTZXQpCi0gICAgICAgICwgbV9wYXJlbnRFbGVtZW50KHBh
cmVudEVsZW1lbnQpIAorICAgICAgICAsIG1fcGFyZW50RWxlbWVudCgmcGFyZW50RWxlbWVudCkK
ICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4
IGEzYTEwYTY3ZmRiMWUwNDBjZjg1Y2NkYzcyNGZmMDEyYTBlNTg5YjIuLjEwMDkzYTdhYTc3MTMw
YjA3MmY1YTg0OGZjOTc0OTdmNWU3NWYwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuY3BwCkBAIC0xMzI1LDI1ICsxMzI1LDI1IEBAIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbiogTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3NzU3R5bGVEZWNsYXJhdGlvbigpCiAg
ICAgcmV0dXJuIG1fY3Nzb21XcmFwcGVyLmdldCgpOwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9u
KiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkKK0NT
U1N0eWxlRGVjbGFyYXRpb24mIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUNTU1N0eWxl
RGVjbGFyYXRpb24oKQogewogICAgIGlmIChtX2Nzc29tV3JhcHBlcikgewogICAgICAgICBBU1NF
UlQoIXN0YXRpY19jYXN0PENTU1N0eWxlRGVjbGFyYXRpb24qPihtX2Nzc29tV3JhcHBlci5nZXQo
KSktPnBhcmVudFJ1bGUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jc3NvbVdyYXBwZXItPnBhcmVu
dEVsZW1lbnQoKSk7Ci0gICAgICAgIHJldHVybiBtX2Nzc29tV3JhcHBlci5nZXQoKTsKKyAgICAg
ICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9CiAgICAgbV9jc3NvbVdyYXBwZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4odGhpcyk7Ci0g
ICAgcmV0dXJuIG1fY3Nzb21XcmFwcGVyLmdldCgpOworICAgIHJldHVybiAqbV9jc3NvbVdyYXBw
ZXI7CiB9CiAKLUNTU1N0eWxlRGVjbGFyYXRpb24qIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVu
c3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oU3R5bGVkRWxlbWVudCogcGFyZW50RWxlbWVu
dCkKK0NTU1N0eWxlRGVjbGFyYXRpb24mIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUlu
bGluZUNTU1N0eWxlRGVjbGFyYXRpb24oU3R5bGVkRWxlbWVudCYgcGFyZW50RWxlbWVudCkKIHsK
ICAgICBpZiAobV9jc3NvbVdyYXBwZXIpIHsKLSAgICAgICAgQVNTRVJUKG1fY3Nzb21XcmFwcGVy
LT5wYXJlbnRFbGVtZW50KCkgPT0gcGFyZW50RWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBtX2Nz
c29tV3JhcHBlci5nZXQoKTsKKyAgICAgICAgQVNTRVJUKG1fY3Nzb21XcmFwcGVyLT5wYXJlbnRF
bGVtZW50KCkgPT0gJnBhcmVudEVsZW1lbnQpOworICAgICAgICByZXR1cm4gKm1fY3Nzb21XcmFw
cGVyOwogICAgIH0KICAgICBtX2Nzc29tV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5l
Q1NTU3R5bGVEZWNsYXJhdGlvbj4odGhpcywgcGFyZW50RWxlbWVudCk7Ci0gICAgcmV0dXJuIG1f
Y3Nzb21XcmFwcGVyLmdldCgpOworICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiB9CiAKIHVu
c2lnbmVkIFN0eWxlUHJvcGVydGllczo6YXZlcmFnZVNpemVJbkJ5dGVzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnRpZXMuaAppbmRleCBmZDlmY2EzMDJlMzY4OWE0ZWY3ZGM4YTFhNzc4ZWY2
OTFlNTlkZmU0Li4wNmQxNWRmNjFkY2FhOWMzMzU1Yjc2Mjc5MWFlMTc3OGY5YWUzZGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCkBAIC0yMzYsOCArMjM2LDggQEAgcHVibGlj
OgogICAgIHZvaWQgY2xlYXIoKTsKICAgICBib29sIHBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3Ry
aW5nJiBzdHlsZURlY2xhcmF0aW9uLCBDU1NQYXJzZXJDb250ZXh0KTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIENTU1N0eWxlRGVjbGFyYXRpb24qIGVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsK
LSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBlbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9u
KFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpOworICAgIFdFQkNPUkVfRVhQT1JUIENTU1N0
eWxlRGVjbGFyYXRpb24mIGVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKKyAgICBDU1NTdHls
ZURlY2xhcmF0aW9uJiBlbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eWxlZEVsZW1l
bnQmIHBhcmVudEVsZW1lbnQpOwogCiAgICAgaW50IGZpbmRQcm9wZXJ0eUluZGV4KENTU1Byb3Bl
cnR5SUQpIGNvbnN0OwogICAgIGludCBmaW5kQ3VzdG9tUHJvcGVydHlJbmRleChjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
QXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggZjA0NWZjODJiZThh
MDIwOWFhOWY4MjFmNzdlOTliYjcxOTQ5MWZhOS4uMGE0ZGM0ODk1OTc0YzRiZjJhZDJiZjI0YTQy
ZDljMWM3NmRjMzdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIENTU1N0
eWxlRGVjbGFyYXRpb24qIEF0dHI6OnN0eWxlKCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgbV9zdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIGRvd25j
YXN0PFN0eWxlZEVsZW1lbnQ+KCptX2VsZW1lbnQpLmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKCksIHZhbHVlKCksICptX3N0eWxlKTsKLSAgICByZXR1
cm4gbV9zdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOworICAgIHJldHVybiAmbV9z
dHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogfQogCiBjb25zdCBBdG9taWNTdHJp
bmcmIEF0dHI6OnZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUwNzFi
ZWFmN2E1ZjkyZWU3MzE3MzYyNWRhNzc4ODAxM2MxYzgxMWEuLmNhMjVmY2FiY2Q4YzZmMmM0ZmQz
YzYwODQ1NWYzZDJhNDZhNTU0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtOTI3LDcg
KzkyNyw3IEBAIFJlZjxUZXh0PiBEb2N1bWVudDo6Y3JlYXRlRWRpdGluZ1RleHROb2RlKGNvbnN0
IFN0cmluZyYgdGV4dCkKIFJlZjxDU1NTdHlsZURlY2xhcmF0aW9uPiBEb2N1bWVudDo6Y3JlYXRl
Q1NTU3R5bGVEZWNsYXJhdGlvbigpCiB7CiAgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+
IHByb3BlcnR5U2V0KE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpKTsKLSAgICByZXR1
cm4gKnByb3BlcnR5U2V0LT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CisgICAgcmV0dXJu
IHByb3BlcnR5U2V0LT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CiB9CiAKIEV4Y2VwdGlv
bk9yPFJlZjxOb2RlPj4gRG9jdW1lbnQ6OmltcG9ydE5vZGUoTm9kZSYgbm9kZVRvSW1wb3J0LCBi
b29sIGRlZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMWZjZWRhMWMxNzM0MmVkNDU2NzQ5
OTZkMzU2ZmJjZjMzNzg5MDliNS4uZWM3ZDE4NGZjMmIzZTNiYzM3ZGZlN2FhZTVlMmNhZDExM2Qx
NGE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjM2NywxMSArMjM2Nyw2IEBAIGJvb2wg
RWxlbWVudDo6aGFzQXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IEF0b21pY1N0cmluCiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRBdHRyaWJ1
dGVCeU5hbWUocU5hbWUpOwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9uKiBFbGVtZW50Ojpjc3Nv
bVN0eWxlKCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogdm9pZCBFbGVtZW50Ojpmb2N1
cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9u
KQogewogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDU2ZmFk
YjQzNmUzZjA2YjE2NWQ2Mzk2ZmI4NDZlOWYzYjUyYWU1NjYuLjk0MTQ2OWI1MTcxMDVkNzgxYzlk
MjY0OWU2MDFhMThkNWUxYjRjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMTk3LDggKzE5Nyw2
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8QXR0cj4+JiBhdHRyTm9kZUxp
c3QoKTsKIAotICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogY3Nzb21TdHlsZSgpOwot
CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Rh
Z05hbWU7IH0KICNpZiBFTkFCTEUoSklUKQogICAgIHN0YXRpYyBwdHJkaWZmX3QgdGFnUU5hbWVN
ZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRWxlbWVudCwgbV90YWdOYW1l
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IDQ0ZDQ4YjM4MDczOTE3Mzk1NjUxNjE0Nzg5
NDA3YzBlMDVjNTFhZDMuLjllNjBiOWViMjkxOGMwN2VmNTYzNGM0ZmRkOTgyZTAzZDdlMjA5MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTY2LDEwICs2Niw2IEBACiAgICAgW0NFUmVhY3Rp
b25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRWxlbWVudD8gaW5zZXJ0QWRqYWNlbnRFbGVtZW50KERP
TVN0cmluZyB3aGVyZSwgRWxlbWVudCBlbGVtZW50KTsgLy8gSGlzdG9yaWNhbC4KICAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0QWRqYWNlbnRUZXh0KERPTVN0cmluZyB3aGVyZSwg
RE9NU3RyaW5nIGRhdGEpOyAvLyBIaXN0b3JpY2FsLgogCi0gICAgLy8gRklYTUU6IFNob3VsZCBi
ZSBpbiBhIHNlcGFyYXRlIEVsZW1lbnRDU1NJbmxpbmVTdHlsZSBhbmQgaW1wbGVtZW50ZWQgYnkg
SFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50LgotICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9y
Zy9jc3NvbS8jdGhlLWVsZW1lbnRjc3NpbmxpbmVzdHlsZS1pbnRlcmZhY2UKLSAgICBbSW1wbGVt
ZW50ZWRBcz1jc3NvbVN0eWxlXSByZWFkb25seSBhdHRyaWJ1dGUgQ1NTU3R5bGVEZWNsYXJhdGlv
biBzdHlsZTsgLy8gRklYTUU6IFNob3VsZCBiZSBbU2FtZU9iamVjdCwgUHV0Rm9yd2FyZHM9Y3Nz
VGV4dF0uCi0KICAgICAvLyBDU1NPTS12aWV3IGV4dGVuc2lvbnMgKGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3NvbS12aWV3LyNleHRlbnNpb24tdG8tdGhlLWVsZW1lbnQtaW50ZXJmYWNlKS4K
ICAgICBzZXF1ZW5jZTxET01SZWN0PiBnZXRDbGllbnRSZWN0cygpOwogICAgIFtOZXdPYmplY3Rd
IERPTVJlY3QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxl
bWVudC5jcHAKaW5kZXggMmVlOTk5N2ZkMDg4ZjRhOTQwNzUyMWU3YjE5Y2YwMmY1ZWFkMGYxNi4u
MmNiZTc4ZTdiNTJhODgyMWM2ZDQyZGVmOWQxMmNhOTJlYmM1Y2EzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdHlsZWRFbGVtZW50LmNwcApAQCAtNjEsOSArNjEsOSBAQCBTdHlsZWRFbGVtZW50Ojp+U3R5
bGVkRWxlbWVudCgpCiAgICAgICAgIGNzc29tV3JhcHBlci0+Y2xlYXJQYXJlbnRFbGVtZW50KCk7
CiB9CiAKLUNTU1N0eWxlRGVjbGFyYXRpb24qIFN0eWxlZEVsZW1lbnQ6OmNzc29tU3R5bGUoKQor
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgU3R5bGVkRWxlbWVudDo6Y3Nzb21TdHlsZSgpCiB7Ci0gICAg
cmV0dXJuIGVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSgpLmVuc3VyZUlubGluZUNTU1N0eWxlRGVj
bGFyYXRpb24odGhpcyk7CisgICAgcmV0dXJuIGVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSgpLmVu
c3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oKnRoaXMpOwogfQogCiBNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzJiBTdHlsZWRFbGVtZW50OjplbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXggNDQyMDQxY2Q1MDk5NTk1MThmMTdhMWY2MTA4
YzY4NzRhZDMxNjQ0NC4uMzFiOGZiMzI1OWZjOGI4OGJjYjdjYjRhNzIzMmJmMTE2YjZmZjdkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwoU3R5bGVk
RWxlbWVudCopOwogICAgIHZvaWQgc3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKCkg
Y29uc3QgeyBTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwo
Y29uc3RfY2FzdDxTdHlsZWRFbGVtZW50Kj4odGhpcykpOyB9CiAgICAgCi0gICAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogY3Nzb21TdHlsZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIENTU1N0
eWxlRGVjbGFyYXRpb24mIGNzc29tU3R5bGUoKTsKIAogICAgIGNvbnN0IFN0eWxlUHJvcGVydGll
cyogcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggM2JjN2ZjNzdkZTVmNjBmNzQ5NjBjYzk0ZWNmNzFl
MDljM2M1NTdkYS4uNTI1OWQzM2ExYWM1YmNjOGI0ZmZhMTU3N2Q5MTQ3Y2QxODU2NjgxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzEwMywxMCArMzEwMywxMCBAQCB2b2lkIEVk
aXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoRWxlbWVudCogZWxlbWVudCkgY29uc3QK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTXV0YXRlIHVzaW5nIHRoZSBDU1NPTSB3cmFwcGVy
IHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBhIHNjcmlwdC4KLSAgICBDU1NT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCplbGVtZW50
KS5jc3NvbVN0eWxlKCk7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVy
dHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSk7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5
SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgInNwYWNlIiwgZmFsc2UpOwotICAg
IHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrLCAiYWZ0ZXIt
d2hpdGUtc3BhY2UiLCBmYWxzZSk7CisgICAgYXV0byYgc3R5bGUgPSBkb3duY2FzdDxTdHlsZWRF
bGVtZW50PigqZWxlbWVudCkuY3Nzb21TdHlsZSgpOworICAgIHN0eWxlLnNldFByb3BlcnR5SW50
ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSk7CisgICAgc3R5
bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCAic3BhY2Ui
LCBmYWxzZSk7CisgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVC
cmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2UpOwogfQogCiBib29sIEVkaXRvcjo6Zmlu
ZFN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5k
ZXggYTRlNDg2MzU4ODc0ZjcyMzQ4OGRiOTJkMjgzYzU5M2Y5OGY5MDJmNy4uMjcwZjg1MDQyMDk0
YzFmMzdiNmI3YWJiNDAyNjM5NzE2MTZlMmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTU1Niw5ICs1NTYsOSBAQCB2
b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVw
U3R5bGVTcGFuSW5saW5lKEluc2VydAogCiAgICAgICAgICAgICAvLyBNdXRhdGUgdXNpbmcgdGhl
IENTU09NIHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2aW9yIGFzIGEgc2Ny
aXB0LgogICAgICAgICAgICAgaWYgKGlzQmxvY2soZWxlbWVudCkpCi0gICAgICAgICAgICAgICAg
ZWxlbWVudC0+Y3Nzb21TdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RGlz
cGxheSwgImlubGluZSIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0
eWxlKCkuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUiLCBm
YWxzZSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cmVuZGVyZXIoKSAmJiBlbGVtZW50LT5y
ZW5kZXJlcigpLT5zdHlsZSgpLmlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50
LT5jc3NvbVN0eWxlKCktPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgIm5v
bmUiLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFBy
b3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgIm5vbmUiLCBmYWxzZSk7CiAgICAgICAg
IH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCmluZGV4IGZmZDc2NDFl
NjAzOTA1Y2YyNTVlMWQxYTNlMDcwZjFmNTM5YWIxMGEuLjU5YTQ1MDQ2NzI1YjcxZTA1NjBjMmM1
N2M0ZTMxNmRlYTJkZDliNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCkBAIC01
Nyw0ICs1Nyw1IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ01hcCBkYXRhc2V0
OwogfTsKIAorSFRNTEVsZW1lbnQgaW1wbGVtZW50cyBFbGVtZW50Q1NTSW5saW5lU3R5bGU7CiBI
VE1MRWxlbWVudCBpbXBsZW1lbnRzIEdsb2JhbEV2ZW50SGFuZGxlcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA3YzE5OTJmMmFiYmI0
NzNiY2Q2Nzk4ZWYzOTFmYmQ0NDNiZDVhNWI0Li5hN2MxM2I4NTA4ZjZlZjEyMGI5MzFiNjM3Nzgy
OTJhNzNlZjg5MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKQEAgLTYwNiw5ICs2MDYsOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpn
ZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwog
ICAgICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Oklu
aGVyaXRlZFN0eWxlRW50cnk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRNYXRj
aGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVs
ZXMsIHN0eWxlUmVzb2x2ZXIsICpwYXJlbnRFbGVtZW50LCBOT1BTRVVETykpCiAgICAgICAgICAg
ICAgICAgICAgIC5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQt
PmNzc29tU3R5bGUoKSAmJiBwYXJlbnRFbGVtZW50LT5jc3NvbVN0eWxlKCktPmxlbmd0aCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGUqIHN0eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQocGFyZW50RWxlbWVudCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2V0SW5saW5lU3R5bGUoc3R5bGVTaGVldC0+
YnVpbGRPYmplY3RGb3JTdHlsZShzdHlsZVNoZWV0LT5zdHlsZUZvcklkKEluc3BlY3RvckNTU0lk
KHN0eWxlU2hlZXQtPmlkKCksIDApKSkpOworICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZWRF
bGVtZW50PigqcGFyZW50RWxlbWVudCkgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVu
dEVsZW1lbnQpLmNzc29tU3R5bGUoKS5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBh
dXRvJiBzdHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0PFN0eWxlZEVs
ZW1lbnQ+KCpwYXJlbnRFbGVtZW50KSk7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zZXRJ
bmxpbmVTdHlsZShzdHlsZVNoZWV0LmJ1aWxkT2JqZWN0Rm9yU3R5bGUoc3R5bGVTaGVldC5zdHls
ZUZvcklkKEluc3BlY3RvckNTU0lkKHN0eWxlU2hlZXQuaWQoKSwgMCkpKSk7CiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgZW50cmllcy0+YWRkSXRlbShXVEZNb3ZlKGVudHJ5
KSk7CkBAIC02MjIsMTYgKzYyMiwxNCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRj
aGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogCiB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzU3R5bGUpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGVs
ZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogc3R5
bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChlbGVtZW50KTsKLSAgICBpZiAoIXN0eWxl
U2hlZXQpCisgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9k
ZUlkKTsKKyAgICBpZiAoIWlzPFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpbmxpbmVTdHlsZSA9IHN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUo
ZWxlbWVudC0+Y3Nzb21TdHlsZSgpKTsKLSAgICBpZiAoYXV0byBhdHRyaWJ1dGVzID0gYnVpbGRP
YmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoZWxlbWVudCkpCisgICAgYXV0byYgc3R5bGVkRWxlbWVu
dCA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCplbGVtZW50KTsKKyAgICBhdXRvJiBzdHlsZVNo
ZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KHN0eWxlZEVsZW1lbnQpOworICAgIGlubGluZVN0
eWxlID0gc3R5bGVTaGVldC5idWlsZE9iamVjdEZvclN0eWxlKCZzdHlsZWRFbGVtZW50LmNzc29t
U3R5bGUoKSk7CisgICAgaWYgKGF1dG8gYXR0cmlidXRlcyA9IGJ1aWxkT2JqZWN0Rm9yQXR0cmli
dXRlc1N0eWxlKHN0eWxlZEVsZW1lbnQpKQogICAgICAgICBhdHRyaWJ1dGVzU3R5bGUgPSBXVEZN
b3ZlKGF0dHJpYnV0ZXMpOwogICAgIGVsc2UKICAgICAgICAgYXR0cmlidXRlc1N0eWxlID0gbnVs
bHB0cjsKQEAgLTYzOSwxMiArNjM3LDEyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElu
bGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kCiAKIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4m
IHN0eWxlKQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJp
bmcsIG5vZGVJZCk7CisgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmlu
Zywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVJbmZvID0gQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKmVsZW1lbnQsIHRydWUpOwotICAgIFJl
ZjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRl
KEluc3BlY3RvckNTU0lkKCksIGNvbXB1dGVkU3R5bGVJbmZvLCBudWxscHRyKTsKKyAgICBhdXRv
IGNvbXB1dGVkU3R5bGVJbmZvID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUo
KmVsZW1lbnQsIHRydWUpOworICAgIGF1dG8gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHls
ZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKCksIFdURk1vdmUoY29tcHV0ZWRTdHlsZUluZm8pLCBu
dWxscHRyKTsKICAgICBzdHlsZSA9IGluc3BlY3RvclN0eWxlLT5idWlsZEFycmF5Rm9yQ29tcHV0
ZWRTdHlsZSgpOwogfQogCkBAIC05MjAsMjIgKzkxOCwxOSBAQCB2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50
IGRvYwogICAgIHJlc3VsdCA9IFdURk1vdmUobmFtZWRGbG93cyk7CiB9CiAKLUluc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9yU3R5
bGVTaGVldChFbGVtZW50KiBlbGVtZW50KQorSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlJiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KFN0eWxlZEVsZW1l
bnQmIGVsZW1lbnQpCiB7Ci0gICAgTm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldDo6aXRlcmF0b3Ig
aXQgPSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZmluZChlbGVtZW50KTsKKyAgICBhdXRv
IGl0ID0gbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmZpbmQoJmVsZW1lbnQpOwogICAgIGlm
IChpdCA9PSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZW5kKCkpIHsKLSAgICAgICAgQ1NT
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGUgPSBlbGVtZW50LT5jc3NvbVN0eWxlKCk7Ci0gICAgICAg
IGlmICghc3R5bGUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgICAgICBTdHJp
bmcgbmV3U3R5bGVTaGVldElkID0gU3RyaW5nOjpudW1iZXIobV9sYXN0U3R5bGVTaGVldElkKysp
OwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBpbnNw
ZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVh
dGUobV9kb21BZ2VudC0+cGFnZUFnZW50KCksIG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyLCB0aGlzKTsK
LSAgICAgICAgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5zZXQobmV3U3R5bGVTaGVldElkLCBp
bnNwZWN0b3JTdHlsZVNoZWV0KTsKLSAgICAgICAgbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0
LnNldChlbGVtZW50LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKLSAgICAgICAgcmV0dXJuIGluc3Bl
Y3RvclN0eWxlU2hlZXQuZ2V0KCk7CisgICAgICAgIGF1dG8gaW5zcGVjdG9yU3R5bGVTaGVldCA9
IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBh
Z2VBZ2VudCgpLCBuZXdTdHlsZVNoZWV0SWQsIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhciwgdGhpcyk7CisgICAgICAgIGF1dG8mIGlu
c3BlY3RvclN0eWxlU2hlZXRSZWYgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LmdldCgpOworICAgICAg
ICBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChuZXdTdHlsZVNoZWV0SWQsIGluc3BlY3Rv
clN0eWxlU2hlZXQuY29weVJlZigpKTsKKyAgICAgICAgbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNo
ZWV0LnNldCgmZWxlbWVudCwgV1RGTW92ZShpbnNwZWN0b3JTdHlsZVNoZWV0KSk7CisgICAgICAg
IHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0UmVmOwogICAgIH0KIAotICAgIHJldHVybiBpdC0+
dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJuICppdC0+dmFsdWU7CiB9CiAKIEVsZW1lbnQqIEluc3Bl
Y3RvckNTU0FnZW50OjplbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkKQpAQCAtMTA4NSwyMSArMTA4MCwxNSBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0bwog
ICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRy
aWJ1dGVzU3R5bGUoRWxlbWVudCogZWxlbWVudCkKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1
dGVzU3R5bGUoU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBBU1NFUlQoZWxlbWVudCk7
Ci0gICAgaWYgKCFpczxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCiAgICAgLy8gRklYTUU6IFVnbGluZXNzIGJlbG93LgotICAgIFN0eWxlUHJvcGVy
dGllcyogYXR0cmlidXRlU3R5bGUgPSBjb25zdF9jYXN0PFN0eWxlUHJvcGVydGllcyo+KGRvd25j
YXN0PFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpLT5wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgp
KTsKKyAgICBhdXRvKiBhdHRyaWJ1dGVTdHlsZSA9IGNvbnN0X2Nhc3Q8U3R5bGVQcm9wZXJ0aWVz
Kj4oZWxlbWVudC5wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpKTsKICAgICBpZiAoIWF0dHJp
YnV0ZVN0eWxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGF0dHJpYnV0ZVN0eWxlLT5pc011dGFibGUoKSk7Ci0gICAgTXV0
YWJsZVN0eWxlUHJvcGVydGllcyogbXV0YWJsZUF0dHJpYnV0ZVN0eWxlID0gc3RhdGljX2Nhc3Q8
TXV0YWJsZVN0eWxlUHJvcGVydGllcyo+KGF0dHJpYnV0ZVN0eWxlKTsKLQotICAgIFJlZjxJbnNw
ZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3Bl
Y3RvckNTU0lkKCksIG11dGFibGVBdHRyaWJ1dGVTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJh
dGlvbigpLCBudWxscHRyKTsKKyAgICBhdXRvJiBtdXRhYmxlQXR0cmlidXRlU3R5bGUgPSBkb3du
Y2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPigqYXR0cmlidXRlU3R5bGUpOworICAgIGF1dG8g
aW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKCks
IG11dGFibGVBdHRyaWJ1dGVTdHlsZS5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCksIG51bGxw
dHIpOwogICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4
IDc4ZWJjYTdhMDljYWFmZWMwNDYyNDY3NzMwN2I2ODUxZjdlYjBiMjkuLjY4NzcwMGE3ZWRjYjQ3
NmIzZTVhYjY2MThiM2ZiZjI3MTgxZjVmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICB0
eXBlZGVmIEhhc2hNYXA8aW50LCB1bnNpZ25lZD4gTm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZTsK
IAogICAgIHZvaWQgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwotICAgIEluc3BlY3RvclN0eWxl
U2hlZXRGb3JJbmxpbmVTdHlsZSogYXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVsZW1lbnQqIGVsZW1l
bnQpOworICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgYXNJbnNwZWN0b3JT
dHlsZVNoZWV0KFN0eWxlZEVsZW1lbnQmKTsKICAgICBFbGVtZW50KiBlbGVtZW50Rm9ySWQoRXJy
b3JTdHJpbmcmLCBpbnQgbm9kZUlkKTsKICAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVlc3Rl
ZEZsb3dzSWQoRG9jdW1lbnQqKTsKIApAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JS
dWxlKFN0eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Jik7CiAgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKENTU1N0
eWxlUnVsZSopOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxp
c3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlUmVzb2x2ZXImLCBFbGVt
ZW50JiwgUHNldWRvSWQpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50Kik7CisgICAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0
cmlidXRlc1N0eWxlKFN0eWxlZEVsZW1lbnQmKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5
Rm9yUmVnaW9ucyhFcnJvclN0cmluZyYsIFJlZlB0cjxOb2RlTGlzdD4mJiwgaW50IGRvY3VtZW50
Tm9kZUlkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+
IGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nJiwgV2ViS2l0TmFtZWRGbG93Kiwg
aW50IGRvY3VtZW50Tm9kZUlkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDZiMGE4ZWU3YmEyY2ZkODg4ZTQ5MDU2N2NhYTRm
MTg3NjdkMzM5NWEuLjYzYzQ0OGRjNTQxMTNjOWE3MjFmYmE2NzRmYTBhMjQ3N2ZmYjVhMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAK
QEAgLTUxOCwxNyArNTE4LDE2IEBAIHN0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NS
dWxlKiBydWxlLCBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTCiAgICAgfQogfQog
Ci1SZWY8SW5zcGVjdG9yU3R5bGU+IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoY29uc3QgSW5zcGVj
dG9yQ1NTSWQmIHN0eWxlSWQsIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJ
bnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KQorUmVmPEluc3BlY3RvclN0eWxl
PiBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBS
ZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiBzdHlsZSwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFy
ZW50U3R5bGVTaGVldCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JTdHls
ZShzdHlsZUlkLCBXVEZNb3ZlKHN0eWxlKSwgcGFyZW50U3R5bGVTaGVldCkpOwogfQogCi1JbnNw
ZWN0b3JTdHlsZTo6SW5zcGVjdG9yU3R5bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQs
IFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJbnNwZWN0b3JTdHlsZVNoZWV0
KiBwYXJlbnRTdHlsZVNoZWV0KQorSW5zcGVjdG9yU3R5bGU6Okluc3BlY3RvclN0eWxlKGNvbnN0
IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiBzdHls
ZSwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCkKICAgICA6IG1fc3R5bGVJ
ZChzdHlsZUlkKQotICAgICwgbV9zdHlsZShzdHlsZSkKKyAgICAsIG1fc3R5bGUoV1RGTW92ZShz
dHlsZSkpCiAgICAgLCBtX3BhcmVudFN0eWxlU2hlZXQocGFyZW50U3R5bGVTaGVldCkKIHsKLSAg
ICBBU1NFUlQobV9zdHlsZSk7CiB9CiAKIEluc3BlY3RvclN0eWxlOjp+SW5zcGVjdG9yU3R5bGUo
KQpAQCAtNzQ1LDEyICs3NDQsMTIgQEAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBJbnNwZWN0
b3JTdHlsZTo6ZXh0cmFjdFNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9wYXJlbnRT
dHlsZVNoZWV0IHx8ICFtX3BhcmVudFN0eWxlU2hlZXQtPmVuc3VyZVBhcnNlZERhdGFSZWFkeSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0
LT5ydWxlU291cmNlRGF0YUZvcihtX3N0eWxlLmdldCgpKTsKKyAgICByZXR1cm4gbV9wYXJlbnRT
dHlsZVNoZWV0LT5ydWxlU291cmNlRGF0YUZvcihtX3N0eWxlLnB0cigpKTsKIH0KIAogRXhjZXB0
aW9uT3I8dm9pZD4gSW5zcGVjdG9yU3R5bGU6OnNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQog
ewotICAgIHJldHVybiBtX3BhcmVudFN0eWxlU2hlZXQtPnNldFN0eWxlVGV4dChtX3N0eWxlLmdl
dCgpLCB0ZXh0KTsKKyAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0LT5zZXRTdHlsZVRleHQo
bV9zdHlsZS5wdHIoKSwgdGV4dCk7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JTdHlsZTo6c2hvcnRo
YW5kVmFsdWUoY29uc3QgU3RyaW5nJiBzaG9ydGhhbmRQcm9wZXJ0eSkgY29uc3QKQEAgLTEyNTcs
NyArMTI1Niw3IEBAIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6
aW5zcGVjdG9yU3R5bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDCiAgICAgaWYgKCFzdHlsZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gSW5zcGVjdG9yU3R5bGU6OmNyZWF0
ZShpZCwgc3R5bGUsIHRoaXMpOworICAgIHJldHVybiBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKGlk
LCAqc3R5bGUsIHRoaXMpOwogfQogCiBJbnNwZWN0b3JDU1NJZCBJbnNwZWN0b3JTdHlsZVNoZWV0
OjpydWxlT3JTdHlsZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdApAQCAtMTQ3
MiwyNiArMTQ3MSwyNSBAQCB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OmNvbGxlY3RGbGF0UnVs
ZXMoUmVmUHRyPENTU1J1bGVMaXN0PiYmIHJ1bGVMaXN0LCBDU1NTdAogICAgIH0KIH0KIAotUmVm
PEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldEZv
cklubGluZVN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0
IFN0cmluZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK1Jl
ZjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25z
dCBTdHJpbmcmIGlkLCBSZWY8U3R5bGVkRWxlbWVudD4mJiBlbGVtZW50LCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlKHBhZ2VBZ2VudCwgaWQsIFdURk1vdmUoZWxlbWVudCksIG9yaWdpbiwgbGlzdGVuZXIp
KTsKIH0KIAotSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0
IFN0cmluZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK0lu
c3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklu
bGluZVN0eWxlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlk
LCBSZWY8U3R5bGVkRWxlbWVudD4mJiBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OlN0eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgOiBJbnNw
ZWN0b3JTdHlsZVNoZWV0KHBhZ2VBZ2VudCwgaWQsIG51bGxwdHIsIG9yaWdpbiwgU3RyaW5nKCks
IGxpc3RlbmVyKQogICAgICwgbV9lbGVtZW50KFdURk1vdmUoZWxlbWVudCkpCiAgICAgLCBtX3J1
bGVTb3VyY2VEYXRhKG51bGxwdHIpCiAgICAgLCBtX2lzU3R5bGVUZXh0VmFsaWQoZmFsc2UpCiB7
Ci0gICAgQVNTRVJUKG1fZWxlbWVudCk7CiAgICAgbV9pbnNwZWN0b3JTdHlsZSA9IEluc3BlY3Rv
clN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoaWQsIDApLCBpbmxpbmVTdHlsZSgpLCB0aGlz
KTsKLSAgICBtX3N0eWxlVGV4dCA9IG1fZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkgPyBtX2Vs
ZW1lbnQtPmdldEF0dHJpYnV0ZSgic3R5bGUiKS5zdHJpbmcoKSA6IFN0cmluZygpOworICAgIG1f
c3R5bGVUZXh0ID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3RyaW5nKCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpkaWRNb2RpZnlFbGVt
ZW50QXR0cmlidXRlKCkKIHsKICAgICBtX2lzU3R5bGVUZXh0VmFsaWQgPSBmYWxzZTsKLSAgICBp
ZiAobV9lbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAmJiBtX2VsZW1lbnQtPmNzc29tU3R5bGUo
KSAhPSBtX2luc3BlY3RvclN0eWxlLT5jc3NTdHlsZSgpKQorICAgIGlmICgmbV9lbGVtZW50LT5j
c3NvbVN0eWxlKCkgIT0gJm1faW5zcGVjdG9yU3R5bGUtPmNzc1N0eWxlKCkpCiAgICAgICAgIG1f
aW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKGlk
KCksIDApLCBpbmxpbmVTdHlsZSgpLCB0aGlzKTsKICAgICBtX3J1bGVTb3VyY2VEYXRhID0gbnVs
bHB0cjsKIH0KQEAgLTE1MDcsNyArMTUwNSw3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW5zcGVj
dG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjp0ZXh0KCkgY29uc3QKIAogRXhjZXB0aW9uT3I8
dm9pZD4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRleHQoQ1NT
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBBU1NF
UlRfVU5VU0VEKHN0eWxlLCBzdHlsZSA9PSBpbmxpbmVTdHlsZSgpKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHN0eWxlLCBzdHlsZSA9PSAmaW5saW5lU3R5bGUoKSk7CiAKICAgICB7CiAgICAgICAgIElu
c3BlY3RvckNTU0FnZW50OjpJbmxpbmVTdHlsZU92ZXJyaWRlU2NvcGUgb3ZlcnJpZGVTY29wZSht
X2VsZW1lbnQtPmRvY3VtZW50KCkpOwpAQCAtMTU0NCw5ICsxNTQyLDYgQEAgYm9vbCBJbnNwZWN0
b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVuc3VyZVBhcnNlZERhdGFSZWFkeSgpCiAgICAg
aWYgKG1fcnVsZVNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFt
X2VsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAg
ICBtX3J1bGVTb3VyY2VEYXRhID0gcnVsZVNvdXJjZURhdGEoKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTE1NTcsNyArMTU1Miw3IEBAIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9y
U3R5bGVTaGVldEZvcklubGluZVN0eWxlOjppbnNwZWN0b3JTdHlsZUZvcklkKGNvCiAgICAgcmV0
dXJuIG1faW5zcGVjdG9yU3R5bGUuY29weVJlZigpOwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9u
KiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmlubGluZVN0eWxlKCkgY29uc3QK
K0NTU1N0eWxlRGVjbGFyYXRpb24mIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6
aW5saW5lU3R5bGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2VsZW1lbnQtPmNzc29tU3R5bGUo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5o
CmluZGV4IGRmOTVkMWNlNTIwN2FlMjQwYTM2ZGI1ZTI0NDZiY2NhYmE5ZGM3Y2QuLjJmMzFmMzBi
OTdiZTQ4YmNiODVlZjdiOGI2NTc0N2QwMjhjNTBiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaApAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3Ry
dWN0IEluc3BlY3RvclN0eWxlUHJvcGVydHkgewogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZSBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclN0eWxlPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxJbnNwZWN0b3JTdHlsZT4gY3JlYXRlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHls
ZUlkLCBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiwgSW5zcGVjdG9yU3R5bGVTaGVldCog
cGFyZW50U3R5bGVTaGVldCk7CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHlsZT4gY3JlYXRl
KGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4m
JiwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCk7CiAgICAgfkluc3BlY3Rv
clN0eWxlKCk7CiAKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBjc3NTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KKyAgICBDU1NTdHlsZURlY2xhcmF0aW9uJiBjc3NTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0Owog
ICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IGJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxl
KCkgY29uc3Q7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JT
dHlsZShjb25zdCBJbnNwZWN0b3JDU1NJZCYgc3R5bGVJZCwgUmVmUHRyPENTU1N0eWxlRGVjbGFy
YXRpb24+JiYsIEluc3BlY3RvclN0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQpOworICAgIElu
c3BlY3RvclN0eWxlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVE
ZWNsYXJhdGlvbj4mJiwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCk7CiAK
ICAgICB2b2lkIHBvcHVsYXRlQWxsUHJvcGVydGllcyhWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9w
ZXJ0eT4qIHJlc3VsdCkgY29uc3Q7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGU+IHN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdDsKQEAgLTE0Myw3ICsxNDMsNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IGxvbmdoYW5kUHJvcGVydGllcyhjb25zdCBT
dHJpbmcmIHNob3J0aGFuZFByb3BlcnR5KSBjb25zdDsKIAogICAgIEluc3BlY3RvckNTU0lkIG1f
c3R5bGVJZDsKLSAgICBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gbV9zdHlsZTsKKyAgICBS
ZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gbV9zdHlsZTsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0
KiBtX3BhcmVudFN0eWxlU2hlZXQ7CiB9OwogCkBAIC0yMjksMTcgKzIyOSwxNyBAQCBwcml2YXRl
OgogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yU3R5bGVTaGVldCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0
b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBj
b25zdCBTdHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIHN0YXRpYyBSZWY8SW5zcGVj
dG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50Kiwg
Y29uc3QgU3RyaW5nJiBpZCwgUmVmPFN0eWxlZEVsZW1lbnQ+JiYsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiwgTGlzdGVuZXIqKTsKIAogICAgIHZvaWQgZGlkTW9k
aWZ5RWxlbWVudEF0dHJpYnV0ZSgpOwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gdGV4dCgpIGNv
bnN0IGZpbmFsOwotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQoY29uc3QgSW5z
cGVjdG9yQ1NTSWQmIGlkKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9VTlVTRUQoaWQsICFpZC5vcmRp
bmFsKCkpOyByZXR1cm4gaW5saW5lU3R5bGUoKTsgfQorICAgIENTU1N0eWxlRGVjbGFyYXRpb24q
IHN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkKSBjb25zdCBmaW5hbCB7IEFTU0VS
VF9VTlVTRUQoaWQsICFpZC5vcmRpbmFsKCkpOyByZXR1cm4gJmlubGluZVN0eWxlKCk7IH0KIAog
cHJvdGVjdGVkOgotICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0
b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIElu
c3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25z
dCBTdHJpbmcmIGlkLCBSZWY8U3R5bGVkRWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOwogCiAgICAgRG9jdW1lbnQqIG93bmVy
RG9jdW1lbnQoKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1
bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdCBmaW5hbCB7
IEFTU0VSVF9VTlVTRUQoc3R5bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9y
dWxlU291cmNlRGF0YTsgfQorICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZVNvdXJj
ZURhdGFGb3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IGZpbmFsIHsgQVNTRVJU
X1VOVVNFRChzdHlsZSwgc3R5bGUgPT0gJmlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291
cmNlRGF0YTsgfQogICAgIHVuc2lnbmVkIHJ1bGVJbmRleEJ5U3R5bGUoQ1NTU3R5bGVEZWNsYXJh
dGlvbiopIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBib29sIGVuc3VyZVBhcnNlZERh
dGFSZWFkeSgpIGZpbmFsOwogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5
bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYpIGZpbmFsOwpAQCAtMjQ5LDExICsyNDksMTEg
QEAgcHJvdGVjdGVkOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVu
ZGluZ3MoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9u
KiBpbmxpbmVTdHlsZSgpIGNvbnN0OworICAgIENTU1N0eWxlRGVjbGFyYXRpb24mIGlubGluZVN0
eWxlKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBlbGVtZW50U3R5bGVUZXh0KCkgY29uc3Q7
CiAgICAgUmVmPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YSgpIGNvbnN0OwogCi0g
ICAgUmVmUHRyPEVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBSZWY8U3R5bGVkRWxlbWVudD4gbV9l
bGVtZW50OwogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gbV9ydWxlU291cmNlRGF0YTsK
ICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+IG1faW5zcGVjdG9yU3R5bGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmlkbAppbmRleCBmY2I2NGFlZGMyODg1YThlMTUyNWYxZjkwYzgyZmJkNGU5
YjFkOWUwLi40MmUyMGZlMmY4NGNjOGE5ZmFjNGYyM2VkNzEzMGFkYWVlYzYwODdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaWRsCkBAIC0zMCw3ICszMCw2IEBACiAgICAgYXR0cmlidXRlIERP
TVN0cmluZyB4bWxzcGFjZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0
cmluZyBjbGFzc05hbWU7Ci0gICAgW0ltcGxlbWVudGVkQXM9Y3Nzb21TdHlsZV0gcmVhZG9ubHkg
YXR0cmlidXRlIENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7CiAKICAgICBhdHRyaWJ1dGUgbG9u
ZyB0YWJJbmRleDsKIApAQCAtNDQsNCArNDMsNSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmdNYXAgZGF0YXNldDsKIH07CiAKK1NWR0VsZW1lbnQgaW1wbGVtZW50cyBFbGVtZW50
Q1NTSW5saW5lU3R5bGU7CiBTVkdFbGVtZW50IGltcGxlbWVudHMgR2xvYmFsRXZlbnRIYW5kbGVy
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KaW5kZXggNmQxODNjOTNmYzNjNTBkZjRj
OTFmYjY5NzZkZGUyMzQ5MGZiYTkyYS4uZTdhYWU3ZDhiYTRmNTZkMjE5NGFlMjg0ZWM2NWJjMzVi
ODFlOWJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KQEAgLTQxLDYgKzQxLDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05v
ZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgorI2ltcG9ydCA8
V2ViQ29yZS9TdHlsZWRFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KIApAQCAtNzIsNyAr
NzMsOCBAQCAtIChOU1N0cmluZyAqKXRhZ05hbWUKIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24g
KilzdHlsZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICByZXR1cm4ga2l0KHVud3JhcCgqc2VsZikuY3Nzb21TdHlsZSgpKTsKKyAgICBhdXRvJiBlbGVt
ZW50ID0gdW53cmFwKCpzZWxmKTsKKyAgICByZXR1cm4gaXM8V2ViQ29yZTo6U3R5bGVkRWxlbWVu
dD4oZWxlbWVudCkgPyBraXQoJmRvd25jYXN0PFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ+KGVsZW1l
bnQpLmNzc29tU3R5bGUoKSkgOiBudWxscHRyOwogfQogCiAtIChpbnQpb2Zmc2V0TGVmdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
CmluZGV4IDI2NmRiNDkwNjg4ZDYxMjYzZjRhYjAwY2IzNjM4YzBjOGU3NTZjMjYuLjI0OWY5NTBh
NTg1OThlZDljNzM1OTI0N2NkZTRhZjYwZjU4ODgxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTI1NCw3ICsyNTQs
NyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRp
ZXMqIHN0eWxlLCBSYW5nZSogcmFuZ2UpCiB7CiAgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IG11dGFibGVTdHlsZShzdHlsZS0+aXNNdXRhYmxlKCkgPyBSZWY8TXV0YWJsZVN0eWxlUHJv
cGVydGllcz4oc3RhdGljX2Nhc3Q8TXV0YWJsZVN0eWxlUHJvcGVydGllcyY+KCpzdHlsZSkpIDog
c3R5bGUtPm11dGFibGVDb3B5KCkpOwogICAgIHJldHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0Rl
bGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldwotICAgICAgICBzaG91bGRBcHBseVN0
eWxlOmtpdChtdXRhYmxlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSkgdG9FbGVt
ZW50c0luRE9NUmFuZ2U6a2l0KHJhbmdlKV07CisgICAgICAgIHNob3VsZEFwcGx5U3R5bGU6a2l0
KCZtdXRhYmxlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSkgdG9FbGVtZW50c0lu
RE9NUmFuZ2U6a2l0KHJhbmdlKV07CiB9CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZUZvbnRQYW5lbChX
ZWJWaWV3ICp3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXgg
NTgxOTVlZTM2NTliMWRjZDNmOTVkYzIzZGIxMmI3ODU0N2IyNDIxNS4uMzY4NWUyYzA2ZjA1NmY1
NjExNmNmNGU0YjM4ZmE0MTdiMzY5NmNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCkBAIC05MjEsNyArOTIxLDcgQEAgLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKV90
eXBpbmdTdHlsZQogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiB0eXBpbmdTdHls
ZSA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLmNvcHlUeXBpbmdTdHlsZSgpOwog
ICAgIGlmICghdHlwaW5nU3R5bGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGtp
dCh0eXBpbmdTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKKyAgICByZXR1cm4g
a2l0KCZ0eXBpbmdTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKIH0KIAogLSAo
dm9pZClfc2V0VHlwaW5nU3R5bGU6KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZSB3aXRo
VW5kb0FjdGlvbjooRWRpdEFjdGlvbil1bmRvQWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L0RPTS9XZWJLaXRET01FbGVtZW50LmNwcAppbmRleCA1OWExNWQzMzlkNDk0ZjJlMjNmYjUwZTI4
NDE1NTVhZDRjODcwZWRlLi5iNTY3NWEwYjQ0ZmJkNWNlZmIxYmE2MDRkNmMzNWM4ZjAyMmQzZDk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudC5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJHT2JqZWN0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJlYWRF
eGVjU3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0eWxlZEVsZW1lbnQuaD4KICNpbmNsdWRl
ICJXZWJLaXRET01BdHRyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTUNTU1N0eWxlRGVj
bGFyYXRpb25Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NQ2xpZW50UmVjdExpc3RQcml2
YXRlLmgiCkBAIC0xMDQ5LDkgKzEwNTAsMTAgQEAgV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlv
biogd2Via2l0X2RvbV9lbGVtZW50X2dldF9zdHlsZShXZWJLaXRET01FbGVtZW50KiBzZWwKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3Jl
OjpFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpDU1NTdHlsZURlY2xhcmF0aW9uPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+
Y3Nzb21TdHlsZSgpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQo
KSk7CisgICAgYXV0byYgaXRlbSA9ICpXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaWYgKCFpczxX
ZWJDb3JlOjpTdHlsZWRFbGVtZW50PihpdGVtKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIFdlYktpdDo6a2l0KCZkb3duY2FzdDxXZWJDb3JlOjpTdHlsZWRFbGVtZW50Pihp
dGVtKS5jc3NvbVN0eWxlKCkpOwogfQogCiBnY2hhciogd2Via2l0X2RvbV9lbGVtZW50X2dldF9p
ZChXZWJLaXRET01FbGVtZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGM5
OTllZmY4NmVlODYzZWM0NzA2YzljMTg2NDY3NDY1Y2M2NTY5OGQuLjNmYWVlMTlmMWRiN2RhODI2
MTYwMDNlMTEzOWVjY2VkYWI5ZjZmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTE1
MSw3ICsxNTEsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRS
YW5nZShSYW5nZSogZnJvbVJhbmdlLCBSYW5nZSogdG9SYW5nZQogYm9vbCBXZWJFZGl0b3JDbGll
bnQ6OnNob3VsZEFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwgUmFuZ2UqIHJhbmdl
KQogewogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxlU3R5bGUoc3R5bGUt
PmlzTXV0YWJsZSgpID8gUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+KHN0YXRpY19jYXN0PE11
dGFibGVTdHlsZVByb3BlcnRpZXMmPigqc3R5bGUpKSA6IHN0eWxlLT5tdXRhYmxlQ29weSgpKTsK
LSAgICBib29sIHJlc3VsdCA9IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5z
aG91bGRBcHBseVN0eWxlKCptX3BhZ2UsIG11dGFibGVTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNs
YXJhdGlvbigpLCByYW5nZSk7CisgICAgYm9vbCByZXN1bHQgPSBtX3BhZ2UtPmluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkQXBwbHlTdHlsZSgqbV9wYWdlLCAmbXV0YWJsZVN0eWxl
LT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCksIHJhbmdlKTsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDlkNWI0MzBkNTU5YzA5ODI4NWIx
OTc4OTJjZGZkZDBhNTgzZTEzZi4uYzM3YThiNzA4MDExZDk4NWQwYzFkMjgwODE0ZWJiNWNjNGJk
ZmU5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA1LTA3ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSAnc3R5bGUnIGZyb20gRWxlbWVudCB0byBI
VE1MRWxlbWVudCAvIFNWR0VsZW1lbnQgYW5kIG1ha2UgaXQgc2V0dGFibGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTc5NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3Zl
cmFnZS4KKworICAgICAgICAqIGZhc3QvY3NzL0VsZW1lbnQtc3R5bGUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9FbGVtZW50LXN0eWxlLmh0bWw6IEFkZGVkLgorCiAy
MDE3LTA1LTA3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWVkaWFTdHJlYW1dIHIyMTYxOTcgY2F1c2VkIHNvbWUgd2VicnRjIHRlc3RzIHRvIGZhaWwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQtc3R5bGUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvRWxlbWVudC1zdHlsZS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWUyNDYyODYwNzE4OGJkMzYzMjYxMjcxY2I1YTY4ZmM1OTFmYmY4NgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQtc3R5bGUtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNSBAQAorCitQQVNTICdzdHlsZScgcHJvcGVydHkgbG9jYXRpb24gCitQQVNT
ICdzdHlsZScgcHJvcGVydHkgdHlwZSAKK1BBU1Mgc3R5bGUgc2hvdWxkIGJlIHNldHRhYmxlIAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9FbGVtZW50LXN0eWxlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9FbGVtZW50LXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJiOWJj
ZWVmM2VlOWI4ZGQwNWI4ZWFjMTM3YjhmZjdmMzk2MDU4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQtc3R5bGUuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0idGVzdERpdiIgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZCI+PC9kaXY+Cis8c3ZnIGlkPSJ0ZXN0U1ZHIiBzdHls
ZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkIj48L2Rpdj4KKzxzY3JpcHQ+Cit0ZXN0KCgpID0+IHsK
KyAgICBjb25zdCB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3REaXYiKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHRlc3REaXYuX19wcm90b19fLCBIVE1MRGl2RWxlbWVudC5wcm90
b3R5cGUsICJ0ZXN0RGl2IGlzIGFuIEhUTUxEaXZFbGVtZW50Iik7CisgICAgYXNzZXJ0X2lkbF9h
dHRyaWJ1dGUodGVzdERpdiwgInN0eWxlIiwgIkhUTUxFbGVtZW50IGhhcyAnc3R5bGUnIGF0dHJp
YnV0ZSIpOworICAgIGFzc2VydF9vd25fcHJvcGVydHkoSFRNTEVsZW1lbnQucHJvdG90eXBlLCAi
c3R5bGUiLCAiJ3N0eWxlJyBpcyBvbiBIVE1MRWxlbWVudCBwcm90b3R5cGUiKTsKKworICAgIGNv
bnN0IHRlc3RTVkcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFNWRyIpOworICAgIGFz
c2VydF9lcXVhbHModGVzdFNWRy5fX3Byb3RvX18sIFNWR1NWR0VsZW1lbnQucHJvdG90eXBlLCAi
dGVzdFNWRyBpcyBhbiBTVkdTVkdFbGVtZW50Iik7CisgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUo
dGVzdFNWRywgInN0eWxlIiwgIlNWR0VsZW1lbnQgaGFzICdzdHlsZScgYXR0cmlidXRlIik7Cisg
ICAgYXNzZXJ0X293bl9wcm9wZXJ0eShTVkdFbGVtZW50LnByb3RvdHlwZSwgInN0eWxlIiwgIidz
dHlsZScgaXMgb24gU1ZHRWxlbWVudCBwcm90b3R5cGUiKTsKKworICAgIGFzc2VydF9ub3RfZXhp
c3RzKCJFbGVtZW50LnByb3RvdHlwZSIsICJzdHlsZSIsICInc3R5bGUnIGlzIG5vdCBvbiBFbGVt
ZW50IHByb3RvdHlwZSIpOworfSwgIidzdHlsZScgcHJvcGVydHkgbG9jYXRpb24iKTsKKwordGVz
dCgoKSA9PiB7CisgICAgY29uc3QgdGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXN0RGl2Iik7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0RGl2LnN0eWxlLl9fcHJvdG9fXywgQ1NT
U3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUsICJIVE1MRWxlbWVudC5zdHlsZSB0eXBlIik7CisK
KyAgICBjb25zdCB0ZXN0U1ZHID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RTVkciKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHRlc3RTVkcuc3R5bGUuX19wcm90b19fLCBDU1NTdHlsZURlY2xh
cmF0aW9uLnByb3RvdHlwZSwgIlNWR0VsZW1lbnQuc3R5bGUgdHlwZSIpOworfSwgIidzdHlsZScg
cHJvcGVydHkgdHlwZSIpOworCit0ZXN0KCgpID0+IHsKKyAgICBjb25zdCB0ZXN0RGl2ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3REaXYiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRlc3RE
aXYuc3R5bGUuYmFja2dyb3VuZENvbG9yLCAicmVkIiwgIkhUTUxFbGVtZW50LnN0eWxlIGdldHRl
ciIpOworICAgIGFzc2VydF9yZWFkb25seSh0ZXN0RGl2LCAic3R5bGUiLCAiSFRNTEVsZW1lbnQu
c3R5bGUgaXMgcmVhZG9ubHkiKTsKKyAgICB0ZXN0RGl2LnN0eWxlID0gImJhY2tncm91bmQtY29s
b3I6IGdyZWVuIjsKKyAgICBhc3NlcnRfZXF1YWxzKHRlc3REaXYuc3R5bGUuYmFja2dyb3VuZENv
bG9yLCAiZ3JlZW4iLCAiSFRNTEVsZW1lbnQuc3R5bGUgc2V0dGVyIik7CisKKyAgICBjb25zdCB0
ZXN0U1ZHID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RTVkciKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHRlc3RTVkcuc3R5bGUuYmFja2dyb3VuZENvbG9yLCAicmVkIiwgIlNWR0VsZW1lbnQu
c3R5bGUgZ2V0dGVyIik7CisgICAgYXNzZXJ0X3JlYWRvbmx5KHRlc3RTVkcsICJzdHlsZSIsICJT
VkdFbGVtZW50LnN0eWxlIGlzIHJlYWRvbmx5Iik7CisgICAgdGVzdFNWRy5zdHlsZSA9ICJiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbiI7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0U1ZHLnN0eWxlLmJh
Y2tncm91bmRDb2xvciwgImdyZWVuIiwgIlNWR0VsZW1lbnQuc3R5bGUgc2V0dGVyIik7Cit9LCAi
c3R5bGUgc2hvdWxkIGJlIHNldHRhYmxlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309339</attachid>
            <date>2017-05-07 19:30:34 -0700</date>
            <delta_ts>2017-05-07 19:32:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171795-20170507193033.patch</filename>
            <type>text/plain</type>
            <size>52719</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODI3ZWNkMjcxYmU2NDkz
ZjYyOGY4OWUyNTdjNGZlYzRjNjkyYjMzZS4uMzNmOTRlNTg4MWY0YjhkNmFlNDUxNzNiNjhjZDcw
NDdkNTRiOTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc1IEBACiAyMDE3LTA1LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSAnc3R5bGUnIGZyb20g
RWxlbWVudCB0byBIVE1MRWxlbWVudCAvIFNWR0VsZW1lbnQgYW5kIG1ha2UgaXQgc2V0dGFibGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTc5NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgJ3N0
eWxlJyBmcm9tIEVsZW1lbnQgdG8gSFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50IGFuZCBtYWtlIGl0
IHNldHRhYmxlCisgICAgICAgIGFzIHBlcjoKKyAgICAgICAgLSBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3Nzb20vI3RoZS1lbGVtZW50Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCisKKyAgICAg
ICAgQm90aCBGaXJlZm94IGFuZCBDaHJvbWUgYWxyZWFkeSBtYXRjaCB0aGUgc3BlY2lmaWNhdGlv
biAoYm90aCBmb3IgdGhlCisgICAgICAgIHByb3BlcnR5IGxvY2F0aW9uIGFuZCBoYXZpbmcgaXQg
c2V0dGFibGUpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL0VsZW1lbnQtc3R5bGUuaHRtbAor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogY3NzL0VsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGw6IEFkZGVkLgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVu
c3VyZUNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxl
UHJvcGVydGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgICog
Y3NzL1N0eWxlUHJvcGVydGllcy5oOgorICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF0dHI6OnN0eWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50Ojpjc3NvbVN0eWxlKToKKyAgICAgICAgKiBk
b20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBT
dHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorCisgICAg
ICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlu
cHV0VHlwZTo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBlOjp3aWR0
aCk6CisgICAgICAgIEZpeCBidWcgdGhhdCB3YXMgZm91bmQgYnkgZmFzdC9mb3Jtcy9pbnB1dC13
aWR0aC1oZWlnaHQtYXR0cmlidXRlcy13aXRob3V0LXJlbmRlcmVyLWxvYWRlZC1pbWFnZS5odG1s
LgorICAgICAgICBUaGF0IHRlc3QgcmVsaWVkIG9uIHNldHRpbmcgSFRNTEVsZW1lbnQuc3R5bGUg
d2hpY2ggZGlkIG5vdCB3b3JrIHVudGlsIG5vdy4gQ2FsbCB1cGRhdGVMYXlvdXQoKQorICAgICAg
ICAqYmVmb3JlKiBkb2luZyB0aGUgcmVuZGVyZXIgY2hlY2suCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNT
dHlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3R5bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZTo6SW5zcGVjdG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmV4
dHJhY3RTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzZXRU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6Omluc3BlY3RvclN0
eWxlRm9ySWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZv
cklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpkaWRNb2RpZnlF
bGVtZW50QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6c2V0U3R5bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6ZW5zdXJlUGFyc2VkRGF0YVJlYWR5KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6aW5saW5lU3R5
bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnQuaWRsOgorCisyMDE3LTA1LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKICAgICAgICAgRHJvcCByZW1haW5pbmcgdXNlcyBvZiBQYXNzUmVmUHRy
IGluIGVkaXRpbmcgY29kZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxNzg3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxZTc5YTU3ZWExZDI4MzU0Mzdj
MGQ1YmUzN2UzMjRhZTdmYzg0OTRiLi4xYTdkYmRkZGFlZjA5NWU4YjVkYTk4Njg5ZGI3ZGRiZmMx
ZTQ5YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDUtMDcgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlICdzdHlsZScgZnJv
bSBFbGVtZW50IHRvIEhUTUxFbGVtZW50IC8gU1ZHRWxlbWVudCBhbmQgbWFrZSBpdCBzZXR0YWJs
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNzk1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQg
Zml4LgorCisgICAgICAgICogRE9NL0RPTUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUVsZW1l
bnQgc3R5bGVdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06
CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUpOgorICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF90eXBpbmdTdHlsZV0p
OgorCiAyMDE3LTA1LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWxpZ24gb3VyIElETCBmaWxlcyB3aXRoIHRoZSBsYXRlc3QgRE9NIHNwZWNpZmljYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzMDZmM2FjNDdjZjYzYzczMDBiNGE5ZDI4MTRiMTMxODI1MWUzNmJhLi42
MjA2NjgxNjMwMzI3ZDMwMTRlNGIzMzE5MjdjNzk4YWI5ODIxYjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTctMDUtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlICdzdHlsZScgZnJvbSBFbGVtZW50IHRvIEhUTUxFbGVtZW50IC8gU1ZH
RWxlbWVudCBhbmQgbWFrZSBpdCBzZXR0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJF
ZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUpOgorCiAyMDE3LTA1LTA3ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIHIyMTYxOTcg
Y2F1c2VkIHNvbWUgd2VicnRjIHRlc3RzIHRvIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MDIwZWU0MjRlZmFkOWJiZWZjN2JhNmFjNmE0NjMzNGUxMTYxMjc0Mi4uYjE5OGQ3N2M2ZmJlZjcz
OGQyZDBhYTcwZjRhMGNlMzhjOGY1OGFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM4Nyw2
ICszODcsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGNzcy9EZXByZWNh
dGVkQ1NTT01WYWx1ZS5pZGwKICAgICBjc3MvRGVwcmVjYXRlZENTU09NVmFsdWVMaXN0LmlkbAog
ICAgIGNzcy9ET01DU1NOYW1lc3BhY2UuaWRsCisgICAgY3NzL0VsZW1lbnRDU1NJbmxpbmVTdHls
ZS5pZGwKICAgICBjc3MvRm9udEZhY2UuaWRsCiAgICAgY3NzL0ZvbnRGYWNlU2V0LmlkbAogICAg
IGNzcy9NZWRpYUxpc3QuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwYWNk
MjljMTNkMzYwNGMyZWZkNmY3NzgzYzRhMmY5YzY4ZmZlMTFhLi4wYTQ1MjZiYzdiZDVlYmYwMzRj
OThiMDY0MGJiMDRiZjUyOTI2NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTMyMyw2ICszMjMsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAJJChXZWJDb3JlKS9jc3MvRGVw
cmVjYXRlZENTU09NVmFsdWUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9EZXByZWNhdGVkQ1NT
T01WYWx1ZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9ET01DU1NOYW1lc3BhY2UuaWRs
IFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsIFwKICAgICAk
KFdlYkNvcmUpL2Nzcy9Gb250RmFjZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0ZvbnRGYWNl
U2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvTWVkaWFMaXN0LmlkbCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWJlNmFm
YTRlZmI4Y2Y0NTQxZDRjOGJmNzhkYmNkMjcyNWYyZmYxMS4uNGU2NGVkMTg1ZWE1YmVlMjNiMDYx
ZTBmZmI5ZGNjMmU4NTcxNTQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEzOTIsNiArMTEzOTIsNyBAQAogCQk4Mzc2NUY5
NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTW91c2VFdmVudEluaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3NkaWN0
OyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
c2RpY3Q7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAw
RDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4MzdERkIzNDFFQkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGlu
ZVN0eWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbGVtZW50Q1NTSW5saW5lU3R5bGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzg2QTk2QzE5RjYxQjJFMDBFMUVD
NEEgLyogU3R5bGVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
eWxlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzg2QTk2RTE5RjYx
RTRGMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzODg2NzM0MUQxM0JBNTkwMDM2OTdEMCAvKiBSZW5kZXJPYmplY3RFbnVtcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJPYmplY3RFbnVtcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ5OTYsNiArMjQ5OTcsNyBAQAogCQkJCUZENjc3NzM1
MTk1Q0FCMjAwMDcyRTBEMyAvKiBET01DU1NOYW1lc3BhY2UuY3BwICovLAogCQkJCUZDOUEwRjcy
MTY0MDk0Q0YwMDNENkI4RCAvKiBET01DU1NOYW1lc3BhY2UuaCAqLywKIAkJCQlGQzlBMEY3MzE2
NDA5NENGMDAzRDZCOEQgLyogRE9NQ1NTTmFtZXNwYWNlLmlkbCAqLywKKwkJCQk4MzdERkIzNDFF
QkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCAqLywKIAkJCQlGQkRC
NjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwICovLAogCQkJ
CUZCREI2MTlFMTZENjAzNjUwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5oICovLAog
CQkJCTFDNjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5jcHAgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmZTcy
Mzk2ZjYwMzgxMDIzYzRiMWRhNzg4ZDA1ZDY3MjVkMzYyMjQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbApAQCAtMCwwICsxLDMy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLy8gQ1NTT00gZXh0ZW5zaW9ucyB0byBIVE1MRWxlbWVudCAvIFNW
R0VsZW1lbnQ6CisvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3RoZS1lbGVtZW50
Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCitbCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGlu
dGVyZmFjZSBFbGVtZW50Q1NTSW5saW5lU3R5bGUgeworICAgIFtJbXBsZW1lbnRlZEFzPWNzc29t
U3R5bGUsIFB1dEZvcndhcmRzPWNzc1RleHRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHlsZURl
Y2xhcmF0aW9uIHN0eWxlOyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4KK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
LmgKaW5kZXggNTY0Y2IxZGEyM2I1YmJhMjUwM2JkNTAxNjJmYWJiYWMxYzY4YWJmOS4uODY0ZDky
NGRlZGFhMWUzNDVlZjM3NTY1ZmY1YmFhMmM2NWIyZTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaApAQCAtMTE3LDkgKzEx
Nyw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24gZmluYWwg
OiBwdWJsaWMgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBJ
bmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHByb3BlcnR5
U2V0LCBTdHlsZWRFbGVtZW50KiBwYXJlbnRFbGVtZW50KQorICAgIElubGluZUNTU1N0eWxlRGVj
bGFyYXRpb24oTXV0YWJsZVN0eWxlUHJvcGVydGllcyogcHJvcGVydHlTZXQsIFN0eWxlZEVsZW1l
bnQmIHBhcmVudEVsZW1lbnQpCiAgICAgICAgIDogUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uKHByb3BlcnR5U2V0KQotICAgICAgICAsIG1fcGFyZW50RWxlbWVudChwYXJlbnRFbGVtZW50
KSAKKyAgICAgICAgLCBtX3BhcmVudEVsZW1lbnQoJnBhcmVudEVsZW1lbnQpCiAgICAgewogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCBhM2ExMGE2N2Zk
YjFlMDQwY2Y4NWNjZGM3MjRmZjAxMmEwZTU4OWIyLi4xMDA5M2E3YWE3NzEzMGIwNzJmNWE4NDhm
Yzk3NDk3ZjVlNzVmMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApA
QCAtMTMyNSwyNSArMTMyNSwyNSBAQCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24qIE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OmNzc1N0eWxlRGVjbGFyYXRpb24oKQogICAgIHJldHVybiBt
X2Nzc29tV3JhcHBlci5nZXQoKTsKIH0KIAotQ1NTU3R5bGVEZWNsYXJhdGlvbiogTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpCitDU1NTdHlsZURlY2xh
cmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9u
KCkKIHsKICAgICBpZiAobV9jc3NvbVdyYXBwZXIpIHsKICAgICAgICAgQVNTRVJUKCFzdGF0aWNf
Y2FzdDxDU1NTdHlsZURlY2xhcmF0aW9uKj4obV9jc3NvbVdyYXBwZXIuZ2V0KCkpLT5wYXJlbnRS
dWxlKCkpOwogICAgICAgICBBU1NFUlQoIW1fY3Nzb21XcmFwcGVyLT5wYXJlbnRFbGVtZW50KCkp
OwotICAgICAgICByZXR1cm4gbV9jc3NvbVdyYXBwZXIuZ2V0KCk7CisgICAgICAgIHJldHVybiAq
bV9jc3NvbVdyYXBwZXI7CiAgICAgfQogICAgIG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KHRoaXMpOwotICAgIHJldHVybiBt
X2Nzc29tV3JhcHBlci5nZXQoKTsKKyAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCi1D
U1NTdHlsZURlY2xhcmF0aW9uKiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVD
U1NTdHlsZURlY2xhcmF0aW9uKFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpCitDU1NTdHls
ZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHls
ZURlY2xhcmF0aW9uKFN0eWxlZEVsZW1lbnQmIHBhcmVudEVsZW1lbnQpCiB7CiAgICAgaWYgKG1f
Y3Nzb21XcmFwcGVyKSB7Ci0gICAgICAgIEFTU0VSVChtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxl
bWVudCgpID09IHBhcmVudEVsZW1lbnQpOwotICAgICAgICByZXR1cm4gbV9jc3NvbVdyYXBwZXIu
Z2V0KCk7CisgICAgICAgIEFTU0VSVChtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgpID09
ICZwYXJlbnRFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9
CiAgICAgbV9jc3NvbVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUNTU1N0eWxlRGVj
bGFyYXRpb24+KHRoaXMsIHBhcmVudEVsZW1lbnQpOwotICAgIHJldHVybiBtX2Nzc29tV3JhcHBl
ci5nZXQoKTsKKyAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCiB1bnNpZ25lZCBTdHls
ZVByb3BlcnRpZXM6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmgKaW5kZXggZmQ5ZmNhMzAyZTM2ODlhNGVmN2RjOGExYTc3OGVmNjkxZTU5ZGZlNC4u
MDZkMTVkZjYxZGNhYTljMzM1NWI3NjI3OTFhZTE3NzhmOWFlM2RjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnRpZXMuaApAQCAtMjM2LDggKzIzNiw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyKCk7CiAgICAgYm9vbCBwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVE
ZWNsYXJhdGlvbiwgQ1NTUGFyc2VyQ29udGV4dCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBDU1NT
dHlsZURlY2xhcmF0aW9uKiBlbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7Ci0gICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiogZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihTdHlsZWRFbGVt
ZW50KiBwYXJlbnRFbGVtZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDU1NTdHlsZURlY2xhcmF0
aW9uJiBlbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlv
biYgZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihTdHlsZWRFbGVtZW50JiBwYXJlbnRF
bGVtZW50KTsKIAogICAgIGludCBmaW5kUHJvcGVydHlJbmRleChDU1NQcm9wZXJ0eUlEKSBjb25z
dDsKICAgICBpbnQgZmluZEN1c3RvbVByb3BlcnR5SW5kZXgoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCmluZGV4IGYwNDVmYzgyYmU4YTAyMDlhYTlmODIx
Zjc3ZTk5YmI3MTk0OTFmYTkuLjBhNGRjNDg5NTk3NGM0YmYyYWQyYmYyNGE0MmQ5YzFjNzZkYzM3
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBDU1NTdHlsZURlY2xhcmF0
aW9uKiBBdHRyOjpzdHlsZSgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIG1fc3R5bGUg
PSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBkb3duY2FzdDxTdHlsZWRF
bGVtZW50PigqbV9lbGVtZW50KS5jb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
cXVhbGlmaWVkTmFtZSgpLCB2YWx1ZSgpLCAqbV9zdHlsZSk7Ci0gICAgcmV0dXJuIG1fc3R5bGUt
PmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKKyAgICByZXR1cm4gJm1fc3R5bGUtPmVuc3Vy
ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdHRyOjp2
YWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1MDcxYmVhZjdhNWY5MmVl
NzMxNzM2MjVkYTc3ODgwMTNjMWM4MTFhLi5jYTI1ZmNhYmNkOGM2ZjJjNGZkM2M2MDg0NTVmM2Qy
YTQ2YTU1NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTkyNyw3ICs5MjcsNyBAQCBS
ZWY8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb25zdCBTdHJpbmcmIHRl
eHQpCiBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gRG9jdW1lbnQ6OmNyZWF0ZUNTU1N0eWxlRGVj
bGFyYXRpb24oKQogewogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0eVNl
dChNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKSk7Ci0gICAgcmV0dXJuICpwcm9wZXJ0
eVNldC0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOworICAgIHJldHVybiBwcm9wZXJ0eVNl
dC0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8Tm9k
ZT4+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUmIG5vZGVUb0ltcG9ydCwgYm9vbCBkZWVwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDFmY2VkYTFjMTczNDJlZDQ1Njc0OTk2ZDM1NmZiY2Yz
Mzc4OTA5YjUuLmVjN2QxODRmYzJiM2UzYmMzN2RmZTdhYWU1ZTJjYWQxMTNkMTRhODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTIzNjcsMTEgKzIzNjcsNiBAQCBib29sIEVsZW1lbnQ6Omhh
c0F0dHJpYnV0ZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9t
aWNTdHJpbgogICAgIHJldHVybiBlbGVtZW50RGF0YSgpLT5maW5kQXR0cmlidXRlQnlOYW1lKHFO
YW1lKTsKIH0KIAotQ1NTU3R5bGVEZWNsYXJhdGlvbiogRWxlbWVudDo6Y3Nzb21TdHlsZSgpCi17
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIHZvaWQgRWxlbWVudDo6Zm9jdXMoYm9vbCByZXN0
b3JlUHJldmlvdXNTZWxlY3Rpb24sIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBp
ZiAoIWlzQ29ubmVjdGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA1NmZhZGI0MzZlM2YwNmIx
NjVkNjM5NmZiODQ2ZTlmM2I1MmFlNTY2Li45NDE0NjliNTE3MTA1ZDc4MWM5ZDI2NDllNjAxYTE4
ZDVlMWI0Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTE5Nyw4ICsxOTcsNiBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEF0dHI+PiYgYXR0ck5vZGVMaXN0KCk7CiAKLSAg
ICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIGNzc29tU3R5bGUoKTsKLQogICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lOyB9CiAj
aWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgcHRyZGlmZl90IHRhZ1FOYW1lTWVtb3J5T2Zmc2V0
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEVsZW1lbnQsIG1fdGFnTmFtZSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmlkbAppbmRleCA0NGQ0OGIzODA3MzkxNzM5NTY1MTYxNDc4OTQwN2MwZTA1YzUx
YWQzLi45ZTYwYjllYjI5MThjMDdlZjU2MzRjNGZkZDk4MmUwM2Q3ZTIwOTJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCkBAIC02NiwxMCArNjYsNiBAQAogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhy
b3dFeGNlcHRpb25dIEVsZW1lbnQ/IGluc2VydEFkamFjZW50RWxlbWVudChET01TdHJpbmcgd2hl
cmUsIEVsZW1lbnQgZWxlbWVudCk7IC8vIEhpc3RvcmljYWwuCiAgICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIGluc2VydEFkamFjZW50VGV4dChET01TdHJpbmcgd2hlcmUsIERPTVN0cmluZyBk
YXRhKTsgLy8gSGlzdG9yaWNhbC4KIAotICAgIC8vIEZJWE1FOiBTaG91bGQgYmUgaW4gYSBzZXBh
cmF0ZSBFbGVtZW50Q1NTSW5saW5lU3R5bGUgYW5kIGltcGxlbWVudGVkIGJ5IEhUTUxFbGVtZW50
IC8gU1ZHRWxlbWVudC4KLSAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Ro
ZS1lbGVtZW50Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCi0gICAgW0ltcGxlbWVudGVkQXM9Y3Nz
b21TdHlsZV0gcmVhZG9ubHkgYXR0cmlidXRlIENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7IC8v
IEZJWE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3QsIFB1dEZvcndhcmRzPWNzc1RleHRdLgotCiAg
ICAgLy8gQ1NTT00tdmlldyBleHRlbnNpb25zIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
b20tdmlldy8jZXh0ZW5zaW9uLXRvLXRoZS1lbGVtZW50LWludGVyZmFjZSkuCiAgICAgc2VxdWVu
Y2U8RE9NUmVjdD4gZ2V0Q2xpZW50UmVjdHMoKTsKICAgICBbTmV3T2JqZWN0XSBET01SZWN0IGdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmlu
ZGV4IDJlZTk5OTdmZDA4OGY0YTk0MDc1MjFlN2IxOWNmMDJmNWVhZDBmMTYuLjJjYmU3OGU3YjUy
YTg4MjFjNmQ0MmRlZjlkMTJjYTkyZWJjNWNhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxl
bWVudC5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgU3R5bGVkRWxlbWVudDo6flN0eWxlZEVsZW1lbnQo
KQogICAgICAgICBjc3NvbVdyYXBwZXItPmNsZWFyUGFyZW50RWxlbWVudCgpOwogfQogCi1DU1NT
dHlsZURlY2xhcmF0aW9uKiBTdHlsZWRFbGVtZW50Ojpjc3NvbVN0eWxlKCkKK0NTU1N0eWxlRGVj
bGFyYXRpb24mIFN0eWxlZEVsZW1lbnQ6OmNzc29tU3R5bGUoKQogewotICAgIHJldHVybiBlbnN1
cmVNdXRhYmxlSW5saW5lU3R5bGUoKS5lbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKHRo
aXMpOworICAgIHJldHVybiBlbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUoKS5lbnN1cmVJbmxpbmVD
U1NTdHlsZURlY2xhcmF0aW9uKCp0aGlzKTsKIH0KIAogTXV0YWJsZVN0eWxlUHJvcGVydGllcyYg
U3R5bGVkRWxlbWVudDo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5
bGVkRWxlbWVudC5oCmluZGV4IDQ0MjA0MWNkNTA5OTU5NTE4ZjE3YTFmNjEwOGM2ODc0YWQzMTY0
NDQuLjMxYjhmYjMyNTlmYzhiODhiY2I3Y2I0YTcyMzJiZjExNmI2ZmY3ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgc3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKFN0eWxlZEVsZW1lbnQqKTsK
ICAgICB2b2lkIHN5bmNocm9uaXplU3R5bGVBdHRyaWJ1dGVJbnRlcm5hbCgpIGNvbnN0IHsgU3R5
bGVkRWxlbWVudDo6c3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKGNvbnN0X2Nhc3Q8
U3R5bGVkRWxlbWVudCo+KHRoaXMpKTsgfQogICAgIAotICAgIENTU1N0eWxlRGVjbGFyYXRpb24q
IGNzc29tU3R5bGUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDU1NTdHlsZURlY2xhcmF0
aW9uJiBjc3NvbVN0eWxlKCk7CiAKICAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIHByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IDNiYzdmYzc3ZGU1ZjYwZjc0OTYwY2M5NGVjZjcxZTA5YzNjNTU3ZGEu
LjUyNTlkMzNhMWFjNWJjYzhiNGZmYTE1NzdkOTE0N2NkMTg1NjY4MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKQEAgLTMxMDMsMTAgKzMxMDMsMTAgQEAgdm9pZCBFZGl0b3I6OmFwcGx5
RWRpdGluZ1N0eWxlVG9FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBnZXQg
dGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCi0gICAgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGUgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21TdHls
ZSgpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V29yZFdyYXAs
ICJicmVhay13b3JkIiwgZmFsc2UpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIsIGZhbHNlKTsKLSAgICBzdHlsZS0+c2V0
UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNl
IiwgZmFsc2UpOworICAgIGF1dG8mIHN0eWxlID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKmVs
ZW1lbnQpLmNzc29tU3R5bGUoKTsKKyAgICBzdHlsZS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1By
b3BlcnR5V29yZFdyYXAsICJicmVhay13b3JkIiwgZmFsc2UpOworICAgIHN0eWxlLnNldFByb3Bl
cnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgInNwYWNlIiwgZmFsc2UpOwor
ICAgIHN0eWxlLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlMaW5lQnJlYWssICJhZnRl
ci13aGl0ZS1zcGFjZSIsIGZhbHNlKTsKIH0KIAogYm9vbCBFZGl0b3I6OmZpbmRTdHJpbmcoY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGE0ZTQ4NjM1
ODg3NGY3MjM0ODhkYjkyZDI4M2M1OTNmOThmOTAyZjcuLjI3MGY4NTA0MjA5NGMxZjM3YjZiN2Fi
YjQwMjYzOTcxNjE2ZTJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC01NTYsOSArNTU2LDkgQEAgdm9pZCBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3Bhbklu
bGluZShJbnNlcnQKIAogICAgICAgICAgICAgLy8gTXV0YXRlIHVzaW5nIHRoZSBDU1NPTSB3cmFw
cGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBhIHNjcmlwdC4KICAgICAg
ICAgICAgIGlmIChpc0Jsb2NrKGVsZW1lbnQpKQotICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNz
c29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxp
bmUiLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFBy
b3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlEaXNwbGF5LCAiaW5saW5lIiwgZmFsc2UpOwogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkgJiYgZWxlbWVudC0+cmVuZGVyZXIoKS0+
c3R5bGUoKS5pc0Zsb2F0aW5nKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHls
ZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJub25lIiwgZmFsc2Up
OworICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVy
bmFsKENTU1Byb3BlcnR5RmxvYXQsICJub25lIiwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAppbmRleCBmZmQ3NjQxZTYwMzkwNWNmMjU1
ZTFkMWEzZTA3MGYxZjUzOWFiMTBhLi41OWE0NTA0NjcyNWI3MWUwNTYwYzJjNTdjNGUzMTZkZWEy
ZGQ5YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbApAQCAtNTcsNCArNTcsNSBA
QAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdNYXAgZGF0YXNldDsKIH07CiAKK0hU
TUxFbGVtZW50IGltcGxlbWVudHMgRWxlbWVudENTU0lubGluZVN0eWxlOwogSFRNTEVsZW1lbnQg
aW1wbGVtZW50cyBHbG9iYWxFdmVudEhhbmRsZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5w
dXRUeXBlLmNwcAppbmRleCBiMjExYmU5ZWU0ZjA1NGJiZTA3NWFlN2NkMmIyYzIxNjZhZjRkZTg4
Li5lOTRiMTc0MWU3YmQ4ODVkNTMyM2M4NjFiZmEyMWFlOTJjOTYwMDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcApAQCAtMTc3LDYgKzE3Nyw4IEBAIHVuc2lnbmVkIElt
YWdlSW5wdXRUeXBlOjpoZWlnaHQoKSBjb25zdAogewogICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50
PiBlbGVtZW50KHRoaXMtPmVsZW1lbnQoKSk7CiAKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLnVw
ZGF0ZUxheW91dCgpOworCiAgICAgaWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKSB7CiAgICAgICAg
IC8vIENoZWNrIHRoZSBhdHRyaWJ1dGUgZmlyc3QgZm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVl
LgogICAgICAgICBpZiAoYXV0byBvcHRpb25hbEhlaWdodCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZl
SW50ZWdlcihlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdodEF0
dHIpKSkKQEAgLTE4OCw4ICsxOTAsNiBAQCB1bnNpZ25lZCBJbWFnZUlucHV0VHlwZTo6aGVpZ2h0
KCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBpbWFnZUxvYWRlci0+aW1hZ2UoKS0+aW1hZ2VT
aXplRm9yUmVuZGVyZXIoZWxlbWVudC0+cmVuZGVyZXIoKSwgMSkuaGVpZ2h0KCkudG9VbnNpZ25l
ZCgpOwogICAgIH0KIAotICAgIGVsZW1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7Ci0K
ICAgICBSZW5kZXJCb3gqIGJveCA9IGVsZW1lbnQtPnJlbmRlckJveCgpOwogICAgIHJldHVybiBi
b3ggPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oYm94LT5jb250ZW50SGVpZ2h0KCksICpib3gpIDog
MDsKIH0KQEAgLTE5OCw2ICsxOTgsOCBAQCB1bnNpZ25lZCBJbWFnZUlucHV0VHlwZTo6d2lkdGgo
KSBjb25zdAogewogICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBlbGVtZW50KHRoaXMtPmVsZW1l
bnQoKSk7CiAKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOworCiAgICAg
aWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKSB7CiAgICAgICAgIC8vIENoZWNrIHRoZSBhdHRyaWJ1
dGUgZmlyc3QgZm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVlLgogICAgICAgICBpZiAoYXV0byBv
cHRpb25hbFdpZHRoID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGVsZW1lbnQtPmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSkpCkBAIC0yMDksOCArMjExLDYg
QEAgdW5zaWduZWQgSW1hZ2VJbnB1dFR5cGU6OndpZHRoKCkgY29uc3QKICAgICAgICAgICAgIHJl
dHVybiBpbWFnZUxvYWRlci0+aW1hZ2UoKS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIoZWxlbWVudC0+
cmVuZGVyZXIoKSwgMSkud2lkdGgoKS50b1Vuc2lnbmVkKCk7CiAgICAgfQogCi0gICAgZWxlbWVu
dC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKLQogICAgIFJlbmRlckJveCogYm94ID0gZWxl
bWVudC0+cmVuZGVyQm94KCk7CiAgICAgcmV0dXJuIGJveCA/IGFkanVzdEZvckFic29sdXRlWm9v
bShib3gtPmNvbnRlbnRXaWR0aCgpLCAqYm94KSA6IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA3YzE5OTJmMmFiYmI0NzNiY2Q2
Nzk4ZWYzOTFmYmQ0NDNiZDVhNWI0Li5hN2MxM2I4NTA4ZjZlZjEyMGI5MzFiNjM3NzgyOTJhNzNl
Zjg5MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKQEAgLTYwNiw5ICs2MDYsOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRj
aGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogICAgICAg
ICAgICAgICAgIGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRl
ZFN0eWxlRW50cnk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NT
UnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMsIHN0
eWxlUmVzb2x2ZXIsICpwYXJlbnRFbGVtZW50LCBOT1BTRVVETykpCiAgICAgICAgICAgICAgICAg
ICAgIC5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQtPmNzc29t
U3R5bGUoKSAmJiBwYXJlbnRFbGVtZW50LT5jc3NvbVN0eWxlKCktPmxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIHN0
eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQocGFyZW50RWxlbWVudCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBlbnRyeS0+c2V0SW5saW5lU3R5bGUoc3R5bGVTaGVldC0+YnVpbGRP
YmplY3RGb3JTdHlsZShzdHlsZVNoZWV0LT5zdHlsZUZvcklkKEluc3BlY3RvckNTU0lkKHN0eWxl
U2hlZXQtPmlkKCksIDApKSkpOworICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZWRFbGVtZW50
PigqcGFyZW50RWxlbWVudCkgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1l
bnQpLmNzc29tU3R5bGUoKS5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBz
dHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+
KCpwYXJlbnRFbGVtZW50KSk7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zZXRJbmxpbmVT
dHlsZShzdHlsZVNoZWV0LmJ1aWxkT2JqZWN0Rm9yU3R5bGUoc3R5bGVTaGVldC5zdHlsZUZvcklk
KEluc3BlY3RvckNTU0lkKHN0eWxlU2hlZXQuaWQoKSwgMCkpKSk7CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgZW50cmllcy0+YWRkSXRlbShXVEZNb3ZlKGVudHJ5KSk7CkBA
IC02MjIsMTYgKzYyMiwxNCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5
bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogCiB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+JiBhdHRyaWJ1dGVzU3R5bGUpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRG
b3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogc3R5bGVTaGVl
dCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChlbGVtZW50KTsKLSAgICBpZiAoIXN0eWxlU2hlZXQp
CisgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsK
KyAgICBpZiAoIWlzPFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpbmxpbmVTdHlsZSA9IHN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoZWxlbWVu
dC0+Y3Nzb21TdHlsZSgpKTsKLSAgICBpZiAoYXV0byBhdHRyaWJ1dGVzID0gYnVpbGRPYmplY3RG
b3JBdHRyaWJ1dGVzU3R5bGUoZWxlbWVudCkpCisgICAgYXV0byYgc3R5bGVkRWxlbWVudCA9IGRv
d25jYXN0PFN0eWxlZEVsZW1lbnQ+KCplbGVtZW50KTsKKyAgICBhdXRvJiBzdHlsZVNoZWV0ID0g
YXNJbnNwZWN0b3JTdHlsZVNoZWV0KHN0eWxlZEVsZW1lbnQpOworICAgIGlubGluZVN0eWxlID0g
c3R5bGVTaGVldC5idWlsZE9iamVjdEZvclN0eWxlKCZzdHlsZWRFbGVtZW50LmNzc29tU3R5bGUo
KSk7CisgICAgaWYgKGF1dG8gYXR0cmlidXRlcyA9IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0
eWxlKHN0eWxlZEVsZW1lbnQpKQogICAgICAgICBhdHRyaWJ1dGVzU3R5bGUgPSBXVEZNb3ZlKGF0
dHJpYnV0ZXMpOwogICAgIGVsc2UKICAgICAgICAgYXR0cmlidXRlc1N0eWxlID0gbnVsbHB0cjsK
QEAgLTYzOSwxMiArNjM3LDEyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kCiAKIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mIHN0eWxl
KQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5v
ZGVJZCk7CisgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9k
ZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVJbmZvID0gQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKmVsZW1lbnQsIHRydWUpOwotICAgIFJlZjxJbnNw
ZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3Bl
Y3RvckNTU0lkKCksIGNvbXB1dGVkU3R5bGVJbmZvLCBudWxscHRyKTsKKyAgICBhdXRvIGNvbXB1
dGVkU3R5bGVJbmZvID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKmVsZW1l
bnQsIHRydWUpOworICAgIGF1dG8gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3Jl
YXRlKEluc3BlY3RvckNTU0lkKCksIFdURk1vdmUoY29tcHV0ZWRTdHlsZUluZm8pLCBudWxscHRy
KTsKICAgICBzdHlsZSA9IGluc3BlY3RvclN0eWxlLT5idWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHls
ZSgpOwogfQogCkBAIC05MjAsMjIgKzkxOCwxOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpn
ZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGRvYwog
ICAgIHJlc3VsdCA9IFdURk1vdmUobmFtZWRGbG93cyk7CiB9CiAKLUluc3BlY3RvclN0eWxlU2hl
ZXRGb3JJbmxpbmVTdHlsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVl
dChFbGVtZW50KiBlbGVtZW50KQorSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlJiBJ
bnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KFN0eWxlZEVsZW1lbnQmIGVs
ZW1lbnQpCiB7Ci0gICAgTm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldDo6aXRlcmF0b3IgaXQgPSBt
X25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZmluZChlbGVtZW50KTsKKyAgICBhdXRvIGl0ID0g
bV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmZpbmQoJmVsZW1lbnQpOwogICAgIGlmIChpdCA9
PSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZW5kKCkpIHsKLSAgICAgICAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUgPSBlbGVtZW50LT5jc3NvbVN0eWxlKCk7Ci0gICAgICAgIGlmICgh
c3R5bGUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgICAgICBTdHJpbmcgbmV3
U3R5bGVTaGVldElkID0gU3RyaW5nOjpudW1iZXIobV9sYXN0U3R5bGVTaGVldElkKyspOwotICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBpbnNwZWN0b3JT
dHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUobV9k
b21BZ2VudC0+cGFnZUFnZW50KCksIG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyLCB0aGlzKTsKLSAgICAg
ICAgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5zZXQobmV3U3R5bGVTaGVldElkLCBpbnNwZWN0
b3JTdHlsZVNoZWV0KTsKLSAgICAgICAgbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChl
bGVtZW50LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKLSAgICAgICAgcmV0dXJuIGluc3BlY3RvclN0
eWxlU2hlZXQuZ2V0KCk7CisgICAgICAgIGF1dG8gaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2Vu
dCgpLCBuZXdTdHlsZVNoZWV0SWQsIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhciwgdGhpcyk7CisgICAgICAgIGF1dG8mIGluc3BlY3Rv
clN0eWxlU2hlZXRSZWYgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LmdldCgpOworICAgICAgICBtX2lk
VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChuZXdTdHlsZVNoZWV0SWQsIGluc3BlY3RvclN0eWxl
U2hlZXQuY29weVJlZigpKTsKKyAgICAgICAgbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNl
dCgmZWxlbWVudCwgV1RGTW92ZShpbnNwZWN0b3JTdHlsZVNoZWV0KSk7CisgICAgICAgIHJldHVy
biBpbnNwZWN0b3JTdHlsZVNoZWV0UmVmOwogICAgIH0KIAotICAgIHJldHVybiBpdC0+dmFsdWUu
Z2V0KCk7CisgICAgcmV0dXJuICppdC0+dmFsdWU7CiB9CiAKIEVsZW1lbnQqIEluc3BlY3RvckNT
U0FnZW50OjplbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
KQpAQCAtMTA4NSwyMSArMTA4MCwxNSBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0bwogICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVz
U3R5bGUoRWxlbWVudCogZWxlbWVudCkKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5
bGUoU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBBU1NFUlQoZWxlbWVudCk7Ci0gICAg
aWYgKCFpczxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCiAgICAgLy8gRklYTUU6IFVnbGluZXNzIGJlbG93LgotICAgIFN0eWxlUHJvcGVydGllcyog
YXR0cmlidXRlU3R5bGUgPSBjb25zdF9jYXN0PFN0eWxlUHJvcGVydGllcyo+KGRvd25jYXN0PFN0
eWxlZEVsZW1lbnQ+KGVsZW1lbnQpLT5wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpKTsKKyAg
ICBhdXRvKiBhdHRyaWJ1dGVTdHlsZSA9IGNvbnN0X2Nhc3Q8U3R5bGVQcm9wZXJ0aWVzKj4oZWxl
bWVudC5wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpKTsKICAgICBpZiAoIWF0dHJpYnV0ZVN0
eWxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGF0dHJpYnV0ZVN0eWxlLT5pc011dGFibGUoKSk7Ci0gICAgTXV0YWJsZVN0
eWxlUHJvcGVydGllcyogbXV0YWJsZUF0dHJpYnV0ZVN0eWxlID0gc3RhdGljX2Nhc3Q8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcyo+KGF0dHJpYnV0ZVN0eWxlKTsKLQotICAgIFJlZjxJbnNwZWN0b3JT
dHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNT
U0lkKCksIG11dGFibGVBdHRyaWJ1dGVTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigp
LCBudWxscHRyKTsKKyAgICBhdXRvJiBtdXRhYmxlQXR0cmlidXRlU3R5bGUgPSBkb3duY2FzdDxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPigqYXR0cmlidXRlU3R5bGUpOworICAgIGF1dG8gaW5zcGVj
dG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKCksIG11dGFi
bGVBdHRyaWJ1dGVTdHlsZS5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCksIG51bGxwdHIpOwog
ICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDc4ZWJj
YTdhMDljYWFmZWMwNDYyNDY3NzMwN2I2ODUxZjdlYjBiMjkuLjY4NzcwMGE3ZWRjYjQ3NmIzZTVh
YjY2MThiM2ZiZjI3MTgxZjVmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVm
IEhhc2hNYXA8aW50LCB1bnNpZ25lZD4gTm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZTsKIAogICAg
IHZvaWQgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwotICAgIEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZSogYXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVsZW1lbnQqIGVsZW1lbnQpOwor
ICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgYXNJbnNwZWN0b3JTdHlsZVNo
ZWV0KFN0eWxlZEVsZW1lbnQmKTsKICAgICBFbGVtZW50KiBlbGVtZW50Rm9ySWQoRXJyb3JTdHJp
bmcmLCBpbnQgbm9kZUlkKTsKICAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dz
SWQoRG9jdW1lbnQqKTsKIApAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKFN0
eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Jik7CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVs
ZSopOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Jiwg
UHNldWRvSWQpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxl
PiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50Kik7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRl
c1N0eWxlKFN0eWxlZEVsZW1lbnQmKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5Rm9yUmVn
aW9ucyhFcnJvclN0cmluZyYsIFJlZlB0cjxOb2RlTGlzdD4mJiwgaW50IGRvY3VtZW50Tm9kZUlk
KTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+IGJ1aWxk
T2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nJiwgV2ViS2l0TmFtZWRGbG93KiwgaW50IGRv
Y3VtZW50Tm9kZUlkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCmluZGV4IDZiMGE4ZWU3YmEyY2ZkODg4ZTQ5MDU2N2NhYTRmMTg3Njdk
MzM5NWEuLjYzYzQ0OGRjNTQxMTNjOWE3MjFmYmE2NzRmYTBhMjQ3N2ZmYjVhMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTUx
OCwxNyArNTE4LDE2IEBAIHN0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxlKiBy
dWxlLCBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTCiAgICAgfQogfQogCi1SZWY8
SW5zcGVjdG9yU3R5bGU+IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoY29uc3QgSW5zcGVjdG9yQ1NT
SWQmIHN0eWxlSWQsIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJbnNwZWN0
b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KQorUmVmPEluc3BlY3RvclN0eWxlPiBJbnNw
ZWN0b3JTdHlsZTo6Y3JlYXRlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NT
U3R5bGVEZWNsYXJhdGlvbj4mJiBzdHlsZSwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5
bGVTaGVldCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JTdHlsZShzdHls
ZUlkLCBXVEZNb3ZlKHN0eWxlKSwgcGFyZW50U3R5bGVTaGVldCkpOwogfQogCi1JbnNwZWN0b3JT
dHlsZTo6SW5zcGVjdG9yU3R5bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFJlZlB0
cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJl
bnRTdHlsZVNoZWV0KQorSW5zcGVjdG9yU3R5bGU6Okluc3BlY3RvclN0eWxlKGNvbnN0IEluc3Bl
Y3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiBzdHlsZSwgSW5z
cGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCkKICAgICA6IG1fc3R5bGVJZChzdHls
ZUlkKQotICAgICwgbV9zdHlsZShzdHlsZSkKKyAgICAsIG1fc3R5bGUoV1RGTW92ZShzdHlsZSkp
CiAgICAgLCBtX3BhcmVudFN0eWxlU2hlZXQocGFyZW50U3R5bGVTaGVldCkKIHsKLSAgICBBU1NF
UlQobV9zdHlsZSk7CiB9CiAKIEluc3BlY3RvclN0eWxlOjp+SW5zcGVjdG9yU3R5bGUoKQpAQCAt
NzQ1LDEyICs3NDQsMTIgQEAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBJbnNwZWN0b3JTdHls
ZTo6ZXh0cmFjdFNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9wYXJlbnRTdHlsZVNo
ZWV0IHx8ICFtX3BhcmVudFN0eWxlU2hlZXQtPmVuc3VyZVBhcnNlZERhdGFSZWFkeSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0LT5ydWxl
U291cmNlRGF0YUZvcihtX3N0eWxlLmdldCgpKTsKKyAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNo
ZWV0LT5ydWxlU291cmNlRGF0YUZvcihtX3N0eWxlLnB0cigpKTsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gSW5zcGVjdG9yU3R5bGU6OnNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAg
IHJldHVybiBtX3BhcmVudFN0eWxlU2hlZXQtPnNldFN0eWxlVGV4dChtX3N0eWxlLmdldCgpLCB0
ZXh0KTsKKyAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0LT5zZXRTdHlsZVRleHQobV9zdHls
ZS5wdHIoKSwgdGV4dCk7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JTdHlsZTo6c2hvcnRoYW5kVmFs
dWUoY29uc3QgU3RyaW5nJiBzaG9ydGhhbmRQcm9wZXJ0eSkgY29uc3QKQEAgLTEyNTcsNyArMTI1
Niw3IEBAIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6aW5zcGVj
dG9yU3R5bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDCiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShpZCwg
c3R5bGUsIHRoaXMpOworICAgIHJldHVybiBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKGlkLCAqc3R5
bGUsIHRoaXMpOwogfQogCiBJbnNwZWN0b3JDU1NJZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxl
T3JTdHlsZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdApAQCAtMTQ3MiwyNiAr
MTQ3MSwyNSBAQCB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OmNvbGxlY3RGbGF0UnVsZXMoUmVm
UHRyPENTU1J1bGVMaXN0PiYmIHJ1bGVMaXN0LCBDU1NTdAogICAgIH0KIH0KIAotUmVmPEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK1JlZjxJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZTo6Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJp
bmcmIGlkLCBSZWY8U3R5bGVkRWxlbWVudD4mJiBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
KHBhZ2VBZ2VudCwgaWQsIFdURk1vdmUoZWxlbWVudCksIG9yaWdpbiwgbGlzdGVuZXIpKTsKIH0K
IAotSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK0luc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBSZWY8
U3R5bGVkRWxlbWVudD4mJiBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxl
U2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgOiBJbnNwZWN0b3JT
dHlsZVNoZWV0KHBhZ2VBZ2VudCwgaWQsIG51bGxwdHIsIG9yaWdpbiwgU3RyaW5nKCksIGxpc3Rl
bmVyKQogICAgICwgbV9lbGVtZW50KFdURk1vdmUoZWxlbWVudCkpCiAgICAgLCBtX3J1bGVTb3Vy
Y2VEYXRhKG51bGxwdHIpCiAgICAgLCBtX2lzU3R5bGVUZXh0VmFsaWQoZmFsc2UpCiB7Ci0gICAg
QVNTRVJUKG1fZWxlbWVudCk7CiAgICAgbV9pbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxl
OjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoaWQsIDApLCBpbmxpbmVTdHlsZSgpLCB0aGlzKTsKLSAg
ICBtX3N0eWxlVGV4dCA9IG1fZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkgPyBtX2VsZW1lbnQt
PmdldEF0dHJpYnV0ZSgic3R5bGUiKS5zdHJpbmcoKSA6IFN0cmluZygpOworICAgIG1fc3R5bGVU
ZXh0ID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3RyaW5nKCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpkaWRNb2RpZnlFbGVtZW50QXR0
cmlidXRlKCkKIHsKICAgICBtX2lzU3R5bGVUZXh0VmFsaWQgPSBmYWxzZTsKLSAgICBpZiAobV9l
bGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAmJiBtX2VsZW1lbnQtPmNzc29tU3R5bGUoKSAhPSBt
X2luc3BlY3RvclN0eWxlLT5jc3NTdHlsZSgpKQorICAgIGlmICgmbV9lbGVtZW50LT5jc3NvbVN0
eWxlKCkgIT0gJm1faW5zcGVjdG9yU3R5bGUtPmNzc1N0eWxlKCkpCiAgICAgICAgIG1faW5zcGVj
dG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKGlkKCksIDAp
LCBpbmxpbmVTdHlsZSgpLCB0aGlzKTsKICAgICBtX3J1bGVTb3VyY2VEYXRhID0gbnVsbHB0cjsK
IH0KQEAgLTE1MDcsNyArMTUwNSw3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlOjp0ZXh0KCkgY29uc3QKIAogRXhjZXB0aW9uT3I8dm9pZD4g
SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRleHQoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBBU1NFUlRfVU5V
U0VEKHN0eWxlLCBzdHlsZSA9PSBpbmxpbmVTdHlsZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN0
eWxlLCBzdHlsZSA9PSAmaW5saW5lU3R5bGUoKSk7CiAKICAgICB7CiAgICAgICAgIEluc3BlY3Rv
ckNTU0FnZW50OjpJbmxpbmVTdHlsZU92ZXJyaWRlU2NvcGUgb3ZlcnJpZGVTY29wZShtX2VsZW1l
bnQtPmRvY3VtZW50KCkpOwpAQCAtMTU0NCw5ICsxNTQyLDYgQEAgYm9vbCBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVuc3VyZVBhcnNlZERhdGFSZWFkeSgpCiAgICAgaWYgKG1f
cnVsZVNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFtX2VsZW1l
bnQtPmlzU3R5bGVkRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBtX3J1
bGVTb3VyY2VEYXRhID0gcnVsZVNvdXJjZURhdGEoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTE1NTcsNyArMTU1Miw3IEBAIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGluZVN0eWxlOjppbnNwZWN0b3JTdHlsZUZvcklkKGNvCiAgICAgcmV0dXJuIG1f
aW5zcGVjdG9yU3R5bGUuY29weVJlZigpOwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9uKiBJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmlubGluZVN0eWxlKCkgY29uc3QKK0NTU1N0
eWxlRGVjbGFyYXRpb24mIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6aW5saW5l
U3R5bGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2VsZW1lbnQtPmNzc29tU3R5bGUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4
IGRmOTVkMWNlNTIwN2FlMjQwYTM2ZGI1ZTI0NDZiY2NhYmE5ZGM3Y2QuLjJmMzFmMzBiOTdiZTQ4
YmNiODVlZjdiOGI2NTc0N2QwMjhjNTBiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaApAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RydWN0IElu
c3BlY3RvclN0eWxlUHJvcGVydHkgewogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZSBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclN0eWxlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxJbnNwZWN0b3JTdHlsZT4gY3JlYXRlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBS
ZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50
U3R5bGVTaGVldCk7CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHlsZT4gY3JlYXRlKGNvbnN0
IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiwgSW5z
cGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCk7CiAgICAgfkluc3BlY3RvclN0eWxl
KCk7CiAKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBjc3NTdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3R5bGUuZ2V0KCk7IH0KKyAgICBDU1NTdHlsZURlY2xhcmF0aW9uJiBjc3NTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0OwogICAgIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IGJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29u
c3Q7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0VGV4dChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JTdHlsZShj
b25zdCBJbnNwZWN0b3JDU1NJZCYgc3R5bGVJZCwgUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+
JiYsIEluc3BlY3RvclN0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQpOworICAgIEluc3BlY3Rv
clN0eWxlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJh
dGlvbj4mJiwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCk7CiAKICAgICB2
b2lkIHBvcHVsYXRlQWxsUHJvcGVydGllcyhWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4q
IHJlc3VsdCkgY29uc3Q7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+IHN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdDsKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IGxvbmdoYW5kUHJvcGVydGllcyhjb25zdCBTdHJpbmcm
IHNob3J0aGFuZFByb3BlcnR5KSBjb25zdDsKIAogICAgIEluc3BlY3RvckNTU0lkIG1fc3R5bGVJ
ZDsKLSAgICBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gbV9zdHlsZTsKKyAgICBSZWY8Q1NT
U3R5bGVEZWNsYXJhdGlvbj4gbV9zdHlsZTsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBtX3Bh
cmVudFN0eWxlU2hlZXQ7CiB9OwogCkBAIC0yMjksMTcgKzIyOSwxNyBAQCBwcml2YXRlOgogCiBj
bGFzcyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUgZmluYWwgOiBwdWJsaWMgSW5z
cGVjdG9yU3R5bGVTaGVldCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBT
dHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlPiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3Qg
U3RyaW5nJiBpZCwgUmVmPFN0eWxlZEVsZW1lbnQ+JiYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbiwgTGlzdGVuZXIqKTsKIAogICAgIHZvaWQgZGlkTW9kaWZ5RWxl
bWVudEF0dHJpYnV0ZSgpOwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gdGV4dCgpIGNvbnN0IGZp
bmFsOwotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9y
Q1NTSWQmIGlkKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9VTlVTRUQoaWQsICFpZC5vcmRpbmFsKCkp
OyByZXR1cm4gaW5saW5lU3R5bGUoKTsgfQorICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxl
Rm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9VTlVT
RUQoaWQsICFpZC5vcmRpbmFsKCkpOyByZXR1cm4gJmlubGluZVN0eWxlKCk7IH0KIAogcHJvdGVj
dGVkOgotICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdl
QWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIEluc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJp
bmcmIGlkLCBSZWY8U3R5bGVkRWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOwogCiAgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1l
bnQoKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1bGVTb3Vy
Y2VEYXRhRm9yKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdCBmaW5hbCB7IEFTU0VS
VF9VTlVTRUQoc3R5bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291
cmNlRGF0YTsgfQorICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZVNvdXJjZURhdGFG
b3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IGZpbmFsIHsgQVNTRVJUX1VOVVNF
RChzdHlsZSwgc3R5bGUgPT0gJmlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291cmNlRGF0
YTsgfQogICAgIHVuc2lnbmVkIHJ1bGVJbmRleEJ5U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiop
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBib29sIGVuc3VyZVBhcnNlZERhdGFSZWFk
eSgpIGZpbmFsOwogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGVGb3JJ
ZChjb25zdCBJbnNwZWN0b3JDU1NJZCYpIGZpbmFsOwpAQCAtMjQ5LDExICsyNDksMTEgQEAgcHJv
dGVjdGVkOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3Mo
KSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBpbmxp
bmVTdHlsZSgpIGNvbnN0OworICAgIENTU1N0eWxlRGVjbGFyYXRpb24mIGlubGluZVN0eWxlKCkg
Y29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBlbGVtZW50U3R5bGVUZXh0KCkgY29uc3Q7CiAgICAg
UmVmPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YSgpIGNvbnN0OwogCi0gICAgUmVm
UHRyPEVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBSZWY8U3R5bGVkRWxlbWVudD4gbV9lbGVtZW50
OwogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gbV9ydWxlU291cmNlRGF0YTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yU3R5bGU+IG1faW5zcGVjdG9yU3R5bGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmlkbAppbmRleCBmY2I2NGFlZGMyODg1YThlMTUyNWYxZjkwYzgyZmJkNGU5YjFkOWUw
Li40MmUyMGZlMmY4NGNjOGE5ZmFjNGYyM2VkNzEzMGFkYWVlYzYwODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaWRsCkBAIC0zMCw3ICszMCw2IEBACiAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyB4bWxzcGFjZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBj
bGFzc05hbWU7Ci0gICAgW0ltcGxlbWVudGVkQXM9Y3Nzb21TdHlsZV0gcmVhZG9ubHkgYXR0cmli
dXRlIENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7CiAKICAgICBhdHRyaWJ1dGUgbG9uZyB0YWJJ
bmRleDsKIApAQCAtNDQsNCArNDMsNSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmdNYXAgZGF0YXNldDsKIH07CiAKK1NWR0VsZW1lbnQgaW1wbGVtZW50cyBFbGVtZW50Q1NTSW5s
aW5lU3R5bGU7CiBTVkdFbGVtZW50IGltcGxlbWVudHMgR2xvYmFsRXZlbnRIYW5kbGVyczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KaW5kZXggNmQxODNjOTNmYzNjNTBkZjRjOTFmYjY5
NzZkZGUyMzQ5MGZiYTkyYS4uZTdhYWU3ZDhiYTRmNTZkMjE5NGFlMjg0ZWM2NWJjMzViODFlOWJi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KQEAgLTQxLDYgKzQxLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9TdHlsZWRFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KIApAQCAtNzIsNyArNzMsOCBA
QCAtIChOU1N0cmluZyAqKXRhZ05hbWUKIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHls
ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1
cm4ga2l0KHVud3JhcCgqc2VsZikuY3Nzb21TdHlsZSgpKTsKKyAgICBhdXRvJiBlbGVtZW50ID0g
dW53cmFwKCpzZWxmKTsKKyAgICByZXR1cm4gaXM8V2ViQ29yZTo6U3R5bGVkRWxlbWVudD4oZWxl
bWVudCkgPyBraXQoJmRvd25jYXN0PFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpLmNz
c29tU3R5bGUoKSkgOiBudWxscHRyOwogfQogCiAtIChpbnQpb2Zmc2V0TGVmdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4
IDI2NmRiNDkwNjg4ZDYxMjYzZjRhYjAwY2IzNjM4YzBjOGU3NTZjMjYuLjI0OWY5NTBhNTg1OThl
ZDljNzM1OTI0N2NkZTRhZjYwZjU4ODgxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTI1NCw3ICsyNTQsNyBAQCBi
b29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqIHN0
eWxlLCBSYW5nZSogcmFuZ2UpCiB7CiAgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IG11
dGFibGVTdHlsZShzdHlsZS0+aXNNdXRhYmxlKCkgPyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4oc3RhdGljX2Nhc3Q8TXV0YWJsZVN0eWxlUHJvcGVydGllcyY+KCpzdHlsZSkpIDogc3R5bGUt
Pm11dGFibGVDb3B5KCkpOwogICAgIHJldHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRl
Rm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldwotICAgICAgICBzaG91bGRBcHBseVN0eWxlOmtp
dChtdXRhYmxlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSkgdG9FbGVtZW50c0lu
RE9NUmFuZ2U6a2l0KHJhbmdlKV07CisgICAgICAgIHNob3VsZEFwcGx5U3R5bGU6a2l0KCZtdXRh
YmxlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSkgdG9FbGVtZW50c0luRE9NUmFu
Z2U6a2l0KHJhbmdlKV07CiB9CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZUZvbnRQYW5lbChXZWJWaWV3
ICp3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNTgxOTVl
ZTM2NTliMWRjZDNmOTVkYzIzZGIxMmI3ODU0N2IyNDIxNS4uMzY4NWUyYzA2ZjA1NmY1NjExNmNm
NGU0YjM4ZmE0MTdiMzY5NmNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CkBAIC05MjEsNyArOTIxLDcgQEAgLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKV90eXBpbmdT
dHlsZQogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiB0eXBpbmdTdHlsZSA9IF9w
cml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLmNvcHlUeXBpbmdTdHlsZSgpOwogICAgIGlm
ICghdHlwaW5nU3R5bGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGtpdCh0eXBp
bmdTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKKyAgICByZXR1cm4ga2l0KCZ0
eXBpbmdTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKIH0KIAogLSAodm9pZClf
c2V0VHlwaW5nU3R5bGU6KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZSB3aXRoVW5kb0Fj
dGlvbjooRWRpdEFjdGlvbil1bmRvQWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01FbGVtZW50LmNwcAppbmRleCA1OWExNWQzMzlkNDk0ZjJlMjNmYjUwZTI4NDE1NTVh
ZDRjODcwZWRlLi5iNTY3NWEwYjQ0ZmJkNWNlZmIxYmE2MDRkNmMzNWM4ZjAyMmQzZDk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJHT2JqZWN0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvSFRNTE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3Rh
dGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0eWxlZEVsZW1lbnQuaD4KICNpbmNsdWRlICJXZWJL
aXRET01BdHRyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRp
b25Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NQ2xpZW50UmVjdExpc3RQcml2YXRlLmgi
CkBAIC0xMDQ5LDkgKzEwNTAsMTAgQEAgV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiogd2Vi
a2l0X2RvbV9lbGVtZW50X2dldF9zdHlsZShXZWJLaXRET01FbGVtZW50KiBzZWwKIHsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpFbGVt
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDU1NT
dHlsZURlY2xhcmF0aW9uPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+Y3Nzb21T
dHlsZSgpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Cisg
ICAgYXV0byYgaXRlbSA9ICpXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaWYgKCFpczxXZWJDb3Jl
OjpTdHlsZWRFbGVtZW50PihpdGVtKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIFdlYktpdDo6a2l0KCZkb3duY2FzdDxXZWJDb3JlOjpTdHlsZWRFbGVtZW50PihpdGVtKS5j
c3NvbVN0eWxlKCkpOwogfQogCiBnY2hhciogd2Via2l0X2RvbV9lbGVtZW50X2dldF9pZChXZWJL
aXRET01FbGVtZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGM5OTllZmY4
NmVlODYzZWM0NzA2YzljMTg2NDY3NDY1Y2M2NTY5OGQuLjNmYWVlMTlmMWRiN2RhODI2MTYwMDNl
MTEzOWVjY2VkYWI5ZjZmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTE1MSw3ICsx
NTEsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShS
YW5nZSogZnJvbVJhbmdlLCBSYW5nZSogdG9SYW5nZQogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNo
b3VsZEFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwgUmFuZ2UqIHJhbmdlKQogewog
ICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxlU3R5bGUoc3R5bGUtPmlzTXV0
YWJsZSgpID8gUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+KHN0YXRpY19jYXN0PE11dGFibGVT
dHlsZVByb3BlcnRpZXMmPigqc3R5bGUpKSA6IHN0eWxlLT5tdXRhYmxlQ29weSgpKTsKLSAgICBi
b29sIHJlc3VsdCA9IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5zaG91bGRB
cHBseVN0eWxlKCptX3BhZ2UsIG11dGFibGVTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlv
bigpLCByYW5nZSk7CisgICAgYm9vbCByZXN1bHQgPSBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50KCkuc2hvdWxkQXBwbHlTdHlsZSgqbV9wYWdlLCAmbXV0YWJsZVN0eWxlLT5lbnN1
cmVDU1NTdHlsZURlY2xhcmF0aW9uKCksIHJhbmdlKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDlkNWI0MzBkNTU5YzA5ODI4NWIxOTc4OTJj
ZGZkZDBhNTgzZTEzZi4uMGVlNGJhYjk3NTY2NzZkOGFhMWViM2VmZTM4MGI3NzM0MGUxNGRiNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA1LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSAnc3R5bGUnIGZyb20gRWxlbWVudCB0byBIVE1MRWxl
bWVudCAvIFNWR0VsZW1lbnQgYW5kIG1ha2UgaXQgc2V0dGFibGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTc5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9yb2xlcy1leHBv
c2VkLmh0bWw6CisgICAgICAgIEFkZCBudWxsIGNoZWNrIGZvciBlbGVtZW50LnN0eWxlLgorCisg
ICAgICAgICogZmFzdC9jc3MvRWxlbWVudC1zdHlsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzL0VsZW1lbnQtc3R5bGUuaHRtbDogQWRkZWQuCisgICAgICAgIEFkZCBs
YXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtd2lkdGgt
aGVpZ2h0LWF0dHJpYnV0ZXMtd2l0aG91dC1yZW5kZXJlci1sb2FkZWQtaW1hZ2UtZXhwZWN0ZWQu
dHh0OgorICAgICAgICBSZWJhc2VsaW5lIHRlc3QgdGhhdCB3YXMgc2V0dGluZyBIVE1MRWxlbWVu
dC5zdHlsZSB3aGljaCB3YXMgYSBuby1vcCB1bnRpbCB0aGlzIHBhdGNoLiBOb3cgdGhhdCBpdCBh
Y3R1YWxseQorICAgICAgICBkb2VzIHNvbWV0aGluZywgdGhlIGlucHV0IGVsZW1lbnQgYWN0dWFs
bHkgbG9vc2VzIGl0cyByZW5kZXJlci4gVGhpcyBmb3VuZCBhIGJ1ZyB3aGljaCBJIGZpeGVkIGlu
IHRoaXMKKyAgICAgICAgcGF0Y2guCisKKyAgICAgICAgKiBqcy9kb20vZG9tLXN0YXRpYy1wcm9w
ZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgUmViYXNlbGluZSBh
cyBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBoYXMgY2hhbmdlZC4KKworMjAxNy0wNS0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgJ3N0eWxlJyBm
cm9tIEVsZW1lbnQgdG8gSFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50IGFuZCBtYWtlIGl0IHNldHRh
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE3
OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
bGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9FbGVtZW50LXN0eWxl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvRWxlbWVudC1zdHlsZS5o
dG1sOiBBZGRlZC4KKwogMjAxNy0wNS0wNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgW01lZGlhU3RyZWFtXSByMjE2MTk3IGNhdXNlZCBzb21lIHdlYnJ0YyB0
ZXN0cyB0byBmYWlsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JvbGVz
LWV4cG9zZWQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcm9sZXMtZXhwb3NlZC5o
dG1sCmluZGV4IGNiNzMyOTYyYTZjN2Y2YTU2ZmUyNDY3OWI3NjgzNWQyYjIzYTI5MTcuLjQ0NTYz
NDU1ODRmMjNhNzYwNDg5MjBhY2UwNDM3NDIwNDczZmVlNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvcm9sZXMtZXhwb3NlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvcm9sZXMtZXhwb3NlZC5odG1sCkBAIC00MzEsNyArNDMxLDggQEAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAg
IGV4YW1wbGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV4Jyk7CiAgICAgZm9yICh2
YXIgaSA9IDAsIGMgPSBleGFtcGxlcy5sZW5ndGg7IGkgPCBjOyBpKyspIHsKICAgICAgICAgZWwg
PSBleGFtcGxlc1tpXTsKLSAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICAg
ICAgaWYgKGVsLnN0eWxlKQorICAgICAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJzsK
ICAgICB9CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL0Vs
ZW1lbnQtc3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvRWxlbWVudC1z
dHlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWUyNDYyODYwNzE4OGJkMzYzMjYxMjcxY2I1
YTY4ZmM1OTFmYmY4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL0Vs
ZW1lbnQtc3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCitQQVNTICdzdHlsZScg
cHJvcGVydHkgbG9jYXRpb24gCitQQVNTICdzdHlsZScgcHJvcGVydHkgdHlwZSAKK1BBU1Mgc3R5
bGUgc2hvdWxkIGJlIHNldHRhYmxlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9FbGVtZW50LXN0eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9FbGVtZW50LXN0eWxl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDJiOWJjZWVmM2VlOWI4ZGQwNWI4ZWFjMTM3YjhmZjdmMzk2MDU4
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQtc3R5bGUu
aHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPGRpdiBpZD0idGVzdERpdiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZCI+PC9kaXY+
Cis8c3ZnIGlkPSJ0ZXN0U1ZHIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkIj48L2Rpdj4K
KzxzY3JpcHQ+Cit0ZXN0KCgpID0+IHsKKyAgICBjb25zdCB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3REaXYiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRlc3REaXYuX19wcm90
b19fLCBIVE1MRGl2RWxlbWVudC5wcm90b3R5cGUsICJ0ZXN0RGl2IGlzIGFuIEhUTUxEaXZFbGVt
ZW50Iik7CisgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUodGVzdERpdiwgInN0eWxlIiwgIkhUTUxF
bGVtZW50IGhhcyAnc3R5bGUnIGF0dHJpYnV0ZSIpOworICAgIGFzc2VydF9vd25fcHJvcGVydHko
SFRNTEVsZW1lbnQucHJvdG90eXBlLCAic3R5bGUiLCAiJ3N0eWxlJyBpcyBvbiBIVE1MRWxlbWVu
dCBwcm90b3R5cGUiKTsKKworICAgIGNvbnN0IHRlc3RTVkcgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdFNWRyIpOworICAgIGFzc2VydF9lcXVhbHModGVzdFNWRy5fX3Byb3RvX18sIFNW
R1NWR0VsZW1lbnQucHJvdG90eXBlLCAidGVzdFNWRyBpcyBhbiBTVkdTVkdFbGVtZW50Iik7Cisg
ICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUodGVzdFNWRywgInN0eWxlIiwgIlNWR0VsZW1lbnQgaGFz
ICdzdHlsZScgYXR0cmlidXRlIik7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShTVkdFbGVtZW50
LnByb3RvdHlwZSwgInN0eWxlIiwgIidzdHlsZScgaXMgb24gU1ZHRWxlbWVudCBwcm90b3R5cGUi
KTsKKworICAgIGFzc2VydF9ub3RfZXhpc3RzKCJFbGVtZW50LnByb3RvdHlwZSIsICJzdHlsZSIs
ICInc3R5bGUnIGlzIG5vdCBvbiBFbGVtZW50IHByb3RvdHlwZSIpOworfSwgIidzdHlsZScgcHJv
cGVydHkgbG9jYXRpb24iKTsKKwordGVzdCgoKSA9PiB7CisgICAgY29uc3QgdGVzdERpdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RGl2Iik7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0
RGl2LnN0eWxlLl9fcHJvdG9fXywgQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUsICJIVE1M
RWxlbWVudC5zdHlsZSB0eXBlIik7CisKKyAgICBjb25zdCB0ZXN0U1ZHID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3RTVkciKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRlc3RTVkcuc3R5bGUu
X19wcm90b19fLCBDU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSwgIlNWR0VsZW1lbnQuc3R5
bGUgdHlwZSIpOworfSwgIidzdHlsZScgcHJvcGVydHkgdHlwZSIpOworCit0ZXN0KCgpID0+IHsK
KyAgICBjb25zdCB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3REaXYiKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHRlc3REaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yLCAicmVkIiwg
IkhUTUxFbGVtZW50LnN0eWxlIGdldHRlciIpOworICAgIGFzc2VydF9yZWFkb25seSh0ZXN0RGl2
LCAic3R5bGUiLCAiSFRNTEVsZW1lbnQuc3R5bGUgaXMgcmVhZG9ubHkiKTsKKyAgICB0ZXN0RGl2
LnN0eWxlID0gImJhY2tncm91bmQtY29sb3I6IGdyZWVuIjsKKyAgICBhc3NlcnRfZXF1YWxzKHRl
c3REaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yLCAiZ3JlZW4iLCAiSFRNTEVsZW1lbnQuc3R5bGUg
c2V0dGVyIik7CisKKyAgICBjb25zdCB0ZXN0U1ZHID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRlc3RTVkciKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRlc3RTVkcuc3R5bGUuYmFja2dyb3VuZENv
bG9yLCAicmVkIiwgIlNWR0VsZW1lbnQuc3R5bGUgZ2V0dGVyIik7CisgICAgYXNzZXJ0X3JlYWRv
bmx5KHRlc3RTVkcsICJzdHlsZSIsICJTVkdFbGVtZW50LnN0eWxlIGlzIHJlYWRvbmx5Iik7Cisg
ICAgdGVzdFNWRy5zdHlsZSA9ICJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI7CisgICAgYXNzZXJ0
X2VxdWFscyh0ZXN0U1ZHLnN0eWxlLmJhY2tncm91bmRDb2xvciwgImdyZWVuIiwgIlNWR0VsZW1l
bnQuc3R5bGUgc2V0dGVyIik7Cit9LCAic3R5bGUgc2hvdWxkIGJlIHNldHRhYmxlIik7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtd2lkdGgtaGVpZ2h0LWF0dHJpYnV0ZXMtd2l0aG91dC1yZW5kZXJlci1sb2FkZWQt
aW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC13aWR0aC1o
ZWlnaHQtYXR0cmlidXRlcy13aXRob3V0LXJlbmRlcmVyLWxvYWRlZC1pbWFnZS1leHBlY3RlZC50
eHQKaW5kZXggZjUzMDk1NGNiMjU0YmUyODVhY2RhODQzYTMxN2JmMDAzYTFmNWFlZC4uN2FjYmJk
MzFiNTQ0ZjkxNDY3Yjk0NTAzZDBlNjY5MzhhZWUyN2M0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnB1dC13aWR0aC1oZWlnaHQtYXR0cmlidXRlcy13aXRob3V0LXJlbmRl
cmVyLWxvYWRlZC1pbWFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9pbnB1dC13aWR0aC1oZWlnaHQtYXR0cmlidXRlcy13aXRob3V0LXJlbmRlcmVyLWxvYWRlZC1p
bWFnZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi0KIFBBU1MgZS53aWR0aCBpcyAxNgog
UEFTUyBlLmhlaWdodCBpcyAxNgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbS1zdGF0aWMtcHJvcGVydHktZm9yLWluLWl0
ZXJhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9w
ZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCAwNzZmMDljMzY1NDE5OTJm
ZWQ1MjAwMzMxODU1MWZiYTVkY2JmODQyLi45YjhlMjdkMjNlMDBmMzIzNmJlOTIxMWZhZGY5YTU2
M2M1ZTdjYmQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9w
ZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9k
b20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dApAQCAt
NDYsNiArNDYsNyBAQCBQQVNTIGFbImNvbnRlbnRFZGl0YWJsZSJdIGlzIGluaGVyaXQKIFBBU1Mg
YVsiaXNDb250ZW50RWRpdGFibGUiXSBpcyBmYWxzZQogUEFTUyBhWyJzcGVsbGNoZWNrIl0gaXMg
dHJ1ZQogUEFTUyBhWyJkYXRhc2V0Il0gaXMgW29iamVjdCBET01TdHJpbmdNYXBdCitQQVNTIGFb
InN0eWxlIl0gaXMgW29iamVjdCBDU1NTdHlsZURlY2xhcmF0aW9uXQogUEFTUyBhWyJvbmFib3J0
Il0gaXMgbnVsbAogUEFTUyBhWyJvbmJsdXIiXSBpcyBudWxsCiBQQVNTIGFbIm9uY2FucGxheSJd
IGlzIG51bGwKQEAgLTExNCw3ICsxMTUsNiBAQCBQQVNTIGFbImNsYXNzTGlzdCJdIGlzCiBQQVNT
IGFbInNsb3QiXSBpcyAKIFBBU1MgYVsiYXR0cmlidXRlcyJdIGlzIFtvYmplY3QgTmFtZWROb2Rl
TWFwXQogUEFTUyBhWyJzaGFkb3dSb290Il0gaXMgbnVsbAotUEFTUyBhWyJzdHlsZSJdIGlzIFtv
YmplY3QgQ1NTU3R5bGVEZWNsYXJhdGlvbl0KIFBBU1MgYVsic2Nyb2xsVG9wIl0gaXMgMAogUEFT
UyBhWyJzY3JvbGxMZWZ0Il0gaXMgMAogUEFTUyBhWyJzY3JvbGxXaWR0aCJdIGlzIDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309340</attachid>
            <date>2017-05-07 19:32:46 -0700</date>
            <delta_ts>2017-05-07 21:35:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171795-20170507193245.patch</filename>
            <type>text/plain</type>
            <size>52350</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODI3ZWNkMjcxYmU2NDkz
ZjYyOGY4OWUyNTdjNGZlYzRjNjkyYjMzZS4uMzNmOTRlNTg4MWY0YjhkNmFlNDUxNzNiNjhjZDcw
NDdkNTRiOTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc1IEBACiAyMDE3LTA1LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSAnc3R5bGUnIGZyb20g
RWxlbWVudCB0byBIVE1MRWxlbWVudCAvIFNWR0VsZW1lbnQgYW5kIG1ha2UgaXQgc2V0dGFibGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTc5NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgJ3N0
eWxlJyBmcm9tIEVsZW1lbnQgdG8gSFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50IGFuZCBtYWtlIGl0
IHNldHRhYmxlCisgICAgICAgIGFzIHBlcjoKKyAgICAgICAgLSBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3Nzb20vI3RoZS1lbGVtZW50Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCisKKyAgICAg
ICAgQm90aCBGaXJlZm94IGFuZCBDaHJvbWUgYWxyZWFkeSBtYXRjaCB0aGUgc3BlY2lmaWNhdGlv
biAoYm90aCBmb3IgdGhlCisgICAgICAgIHByb3BlcnR5IGxvY2F0aW9uIGFuZCBoYXZpbmcgaXQg
c2V0dGFibGUpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL0VsZW1lbnQtc3R5bGUuaHRtbAor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogY3NzL0VsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGw6IEFkZGVkLgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVu
c3VyZUNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxl
UHJvcGVydGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgICog
Y3NzL1N0eWxlUHJvcGVydGllcy5oOgorICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF0dHI6OnN0eWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50Ojpjc3NvbVN0eWxlKToKKyAgICAgICAgKiBk
b20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBT
dHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorCisgICAg
ICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlu
cHV0VHlwZTo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBlOjp3aWR0
aCk6CisgICAgICAgIEZpeCBidWcgdGhhdCB3YXMgZm91bmQgYnkgZmFzdC9mb3Jtcy9pbnB1dC13
aWR0aC1oZWlnaHQtYXR0cmlidXRlcy13aXRob3V0LXJlbmRlcmVyLWxvYWRlZC1pbWFnZS5odG1s
LgorICAgICAgICBUaGF0IHRlc3QgcmVsaWVkIG9uIHNldHRpbmcgSFRNTEVsZW1lbnQuc3R5bGUg
d2hpY2ggZGlkIG5vdCB3b3JrIHVudGlsIG5vdy4gQ2FsbCB1cGRhdGVMYXlvdXQoKQorICAgICAg
ICAqYmVmb3JlKiBkb2luZyB0aGUgcmVuZGVyZXIgY2hlY2suCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNT
dHlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3R5bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZTo6SW5zcGVjdG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmV4
dHJhY3RTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzZXRU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6Omluc3BlY3RvclN0
eWxlRm9ySWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZv
cklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpkaWRNb2RpZnlF
bGVtZW50QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6c2V0U3R5bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6ZW5zdXJlUGFyc2VkRGF0YVJlYWR5KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6aW5saW5lU3R5
bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnQuaWRsOgorCisyMDE3LTA1LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKICAgICAgICAgRHJvcCByZW1haW5pbmcgdXNlcyBvZiBQYXNzUmVmUHRy
IGluIGVkaXRpbmcgY29kZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxNzg3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxZTc5YTU3ZWExZDI4MzU0Mzdj
MGQ1YmUzN2UzMjRhZTdmYzg0OTRiLi4xYTdkYmRkZGFlZjA5NWU4YjVkYTk4Njg5ZGI3ZGRiZmMx
ZTQ5YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDUtMDcgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlICdzdHlsZScgZnJv
bSBFbGVtZW50IHRvIEhUTUxFbGVtZW50IC8gU1ZHRWxlbWVudCBhbmQgbWFrZSBpdCBzZXR0YWJs
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNzk1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQg
Zml4LgorCisgICAgICAgICogRE9NL0RPTUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUVsZW1l
bnQgc3R5bGVdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06
CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUpOgorICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF90eXBpbmdTdHlsZV0p
OgorCiAyMDE3LTA1LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWxpZ24gb3VyIElETCBmaWxlcyB3aXRoIHRoZSBsYXRlc3QgRE9NIHNwZWNpZmljYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzMDZmM2FjNDdjZjYzYzczMDBiNGE5ZDI4MTRiMTMxODI1MWUzNmJhLi42
MjA2NjgxNjMwMzI3ZDMwMTRlNGIzMzE5MjdjNzk4YWI5ODIxYjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTctMDUtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlICdzdHlsZScgZnJvbSBFbGVtZW50IHRvIEhUTUxFbGVtZW50IC8gU1ZH
RWxlbWVudCBhbmQgbWFrZSBpdCBzZXR0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJF
ZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUpOgorCiAyMDE3LTA1LTA3ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIHIyMTYxOTcg
Y2F1c2VkIHNvbWUgd2VicnRjIHRlc3RzIHRvIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MDIwZWU0MjRlZmFkOWJiZWZjN2JhNmFjNmE0NjMzNGUxMTYxMjc0Mi4uYjE5OGQ3N2M2ZmJlZjcz
OGQyZDBhYTcwZjRhMGNlMzhjOGY1OGFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM4Nyw2
ICszODcsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGNzcy9EZXByZWNh
dGVkQ1NTT01WYWx1ZS5pZGwKICAgICBjc3MvRGVwcmVjYXRlZENTU09NVmFsdWVMaXN0LmlkbAog
ICAgIGNzcy9ET01DU1NOYW1lc3BhY2UuaWRsCisgICAgY3NzL0VsZW1lbnRDU1NJbmxpbmVTdHls
ZS5pZGwKICAgICBjc3MvRm9udEZhY2UuaWRsCiAgICAgY3NzL0ZvbnRGYWNlU2V0LmlkbAogICAg
IGNzcy9NZWRpYUxpc3QuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwYWNk
MjljMTNkMzYwNGMyZWZkNmY3NzgzYzRhMmY5YzY4ZmZlMTFhLi4wYTQ1MjZiYzdiZDVlYmYwMzRj
OThiMDY0MGJiMDRiZjUyOTI2NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTMyMyw2ICszMjMsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAJJChXZWJDb3JlKS9jc3MvRGVw
cmVjYXRlZENTU09NVmFsdWUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9EZXByZWNhdGVkQ1NT
T01WYWx1ZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9ET01DU1NOYW1lc3BhY2UuaWRs
IFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsIFwKICAgICAk
KFdlYkNvcmUpL2Nzcy9Gb250RmFjZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0ZvbnRGYWNl
U2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvTWVkaWFMaXN0LmlkbCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWJlNmFm
YTRlZmI4Y2Y0NTQxZDRjOGJmNzhkYmNkMjcyNWYyZmYxMS4uNGU2NGVkMTg1ZWE1YmVlMjNiMDYx
ZTBmZmI5ZGNjMmU4NTcxNTQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEzOTIsNiArMTEzOTIsNyBAQAogCQk4Mzc2NUY5
NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTW91c2VFdmVudEluaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3NkaWN0
OyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
c2RpY3Q7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAw
RDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4MzdERkIzNDFFQkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGlu
ZVN0eWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbGVtZW50Q1NTSW5saW5lU3R5bGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzg2QTk2QzE5RjYxQjJFMDBFMUVD
NEEgLyogU3R5bGVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
eWxlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzg2QTk2RTE5RjYx
RTRGMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzODg2NzM0MUQxM0JBNTkwMDM2OTdEMCAvKiBSZW5kZXJPYmplY3RFbnVtcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJPYmplY3RFbnVtcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ5OTYsNiArMjQ5OTcsNyBAQAogCQkJCUZENjc3NzM1
MTk1Q0FCMjAwMDcyRTBEMyAvKiBET01DU1NOYW1lc3BhY2UuY3BwICovLAogCQkJCUZDOUEwRjcy
MTY0MDk0Q0YwMDNENkI4RCAvKiBET01DU1NOYW1lc3BhY2UuaCAqLywKIAkJCQlGQzlBMEY3MzE2
NDA5NENGMDAzRDZCOEQgLyogRE9NQ1NTTmFtZXNwYWNlLmlkbCAqLywKKwkJCQk4MzdERkIzNDFF
QkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCAqLywKIAkJCQlGQkRC
NjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwICovLAogCQkJ
CUZCREI2MTlFMTZENjAzNjUwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5oICovLAog
CQkJCTFDNjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5jcHAgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmZTcy
Mzk2ZjYwMzgxMDIzYzRiMWRhNzg4ZDA1ZDY3MjVkMzYyMjQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbApAQCAtMCwwICsxLDMy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLy8gQ1NTT00gZXh0ZW5zaW9ucyB0byBIVE1MRWxlbWVudCAvIFNW
R0VsZW1lbnQ6CisvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3RoZS1lbGVtZW50
Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCitbCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGlu
dGVyZmFjZSBFbGVtZW50Q1NTSW5saW5lU3R5bGUgeworICAgIFtJbXBsZW1lbnRlZEFzPWNzc29t
U3R5bGUsIFB1dEZvcndhcmRzPWNzc1RleHRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHlsZURl
Y2xhcmF0aW9uIHN0eWxlOyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4KK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
LmgKaW5kZXggNTY0Y2IxZGEyM2I1YmJhMjUwM2JkNTAxNjJmYWJiYWMxYzY4YWJmOS4uODY0ZDky
NGRlZGFhMWUzNDVlZjM3NTY1ZmY1YmFhMmM2NWIyZTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaApAQCAtMTE3LDkgKzEx
Nyw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24gZmluYWwg
OiBwdWJsaWMgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBJ
bmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHByb3BlcnR5
U2V0LCBTdHlsZWRFbGVtZW50KiBwYXJlbnRFbGVtZW50KQorICAgIElubGluZUNTU1N0eWxlRGVj
bGFyYXRpb24oTXV0YWJsZVN0eWxlUHJvcGVydGllcyogcHJvcGVydHlTZXQsIFN0eWxlZEVsZW1l
bnQmIHBhcmVudEVsZW1lbnQpCiAgICAgICAgIDogUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uKHByb3BlcnR5U2V0KQotICAgICAgICAsIG1fcGFyZW50RWxlbWVudChwYXJlbnRFbGVtZW50
KSAKKyAgICAgICAgLCBtX3BhcmVudEVsZW1lbnQoJnBhcmVudEVsZW1lbnQpCiAgICAgewogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCBhM2ExMGE2N2Zk
YjFlMDQwY2Y4NWNjZGM3MjRmZjAxMmEwZTU4OWIyLi4xMDA5M2E3YWE3NzEzMGIwNzJmNWE4NDhm
Yzk3NDk3ZjVlNzVmMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApA
QCAtMTMyNSwyNSArMTMyNSwyNSBAQCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24qIE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OmNzc1N0eWxlRGVjbGFyYXRpb24oKQogICAgIHJldHVybiBt
X2Nzc29tV3JhcHBlci5nZXQoKTsKIH0KIAotQ1NTU3R5bGVEZWNsYXJhdGlvbiogTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpCitDU1NTdHlsZURlY2xh
cmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9u
KCkKIHsKICAgICBpZiAobV9jc3NvbVdyYXBwZXIpIHsKICAgICAgICAgQVNTRVJUKCFzdGF0aWNf
Y2FzdDxDU1NTdHlsZURlY2xhcmF0aW9uKj4obV9jc3NvbVdyYXBwZXIuZ2V0KCkpLT5wYXJlbnRS
dWxlKCkpOwogICAgICAgICBBU1NFUlQoIW1fY3Nzb21XcmFwcGVyLT5wYXJlbnRFbGVtZW50KCkp
OwotICAgICAgICByZXR1cm4gbV9jc3NvbVdyYXBwZXIuZ2V0KCk7CisgICAgICAgIHJldHVybiAq
bV9jc3NvbVdyYXBwZXI7CiAgICAgfQogICAgIG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KHRoaXMpOwotICAgIHJldHVybiBt
X2Nzc29tV3JhcHBlci5nZXQoKTsKKyAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCi1D
U1NTdHlsZURlY2xhcmF0aW9uKiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVD
U1NTdHlsZURlY2xhcmF0aW9uKFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpCitDU1NTdHls
ZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHls
ZURlY2xhcmF0aW9uKFN0eWxlZEVsZW1lbnQmIHBhcmVudEVsZW1lbnQpCiB7CiAgICAgaWYgKG1f
Y3Nzb21XcmFwcGVyKSB7Ci0gICAgICAgIEFTU0VSVChtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxl
bWVudCgpID09IHBhcmVudEVsZW1lbnQpOwotICAgICAgICByZXR1cm4gbV9jc3NvbVdyYXBwZXIu
Z2V0KCk7CisgICAgICAgIEFTU0VSVChtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgpID09
ICZwYXJlbnRFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9
CiAgICAgbV9jc3NvbVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUNTU1N0eWxlRGVj
bGFyYXRpb24+KHRoaXMsIHBhcmVudEVsZW1lbnQpOwotICAgIHJldHVybiBtX2Nzc29tV3JhcHBl
ci5nZXQoKTsKKyAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCiB1bnNpZ25lZCBTdHls
ZVByb3BlcnRpZXM6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmgKaW5kZXggZmQ5ZmNhMzAyZTM2ODlhNGVmN2RjOGExYTc3OGVmNjkxZTU5ZGZlNC4u
MDZkMTVkZjYxZGNhYTljMzM1NWI3NjI3OTFhZTE3NzhmOWFlM2RjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnRpZXMuaApAQCAtMjM2LDggKzIzNiw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyKCk7CiAgICAgYm9vbCBwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVE
ZWNsYXJhdGlvbiwgQ1NTUGFyc2VyQ29udGV4dCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBDU1NT
dHlsZURlY2xhcmF0aW9uKiBlbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7Ci0gICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiogZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihTdHlsZWRFbGVt
ZW50KiBwYXJlbnRFbGVtZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDU1NTdHlsZURlY2xhcmF0
aW9uJiBlbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlv
biYgZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihTdHlsZWRFbGVtZW50JiBwYXJlbnRF
bGVtZW50KTsKIAogICAgIGludCBmaW5kUHJvcGVydHlJbmRleChDU1NQcm9wZXJ0eUlEKSBjb25z
dDsKICAgICBpbnQgZmluZEN1c3RvbVByb3BlcnR5SW5kZXgoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCmluZGV4IGYwNDVmYzgyYmU4YTAyMDlhYTlmODIx
Zjc3ZTk5YmI3MTk0OTFmYTkuLjBhNGRjNDg5NTk3NGM0YmYyYWQyYmYyNGE0MmQ5YzFjNzZkYzM3
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBDU1NTdHlsZURlY2xhcmF0
aW9uKiBBdHRyOjpzdHlsZSgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIG1fc3R5bGUg
PSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBkb3duY2FzdDxTdHlsZWRF
bGVtZW50PigqbV9lbGVtZW50KS5jb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
cXVhbGlmaWVkTmFtZSgpLCB2YWx1ZSgpLCAqbV9zdHlsZSk7Ci0gICAgcmV0dXJuIG1fc3R5bGUt
PmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKKyAgICByZXR1cm4gJm1fc3R5bGUtPmVuc3Vy
ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdHRyOjp2
YWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1MDcxYmVhZjdhNWY5MmVl
NzMxNzM2MjVkYTc3ODgwMTNjMWM4MTFhLi5jYTI1ZmNhYmNkOGM2ZjJjNGZkM2M2MDg0NTVmM2Qy
YTQ2YTU1NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTkyNyw3ICs5MjcsNyBAQCBS
ZWY8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb25zdCBTdHJpbmcmIHRl
eHQpCiBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gRG9jdW1lbnQ6OmNyZWF0ZUNTU1N0eWxlRGVj
bGFyYXRpb24oKQogewogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0eVNl
dChNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKSk7Ci0gICAgcmV0dXJuICpwcm9wZXJ0
eVNldC0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOworICAgIHJldHVybiBwcm9wZXJ0eVNl
dC0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8Tm9k
ZT4+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUmIG5vZGVUb0ltcG9ydCwgYm9vbCBkZWVwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDFmY2VkYTFjMTczNDJlZDQ1Njc0OTk2ZDM1NmZiY2Yz
Mzc4OTA5YjUuLmVjN2QxODRmYzJiM2UzYmMzN2RmZTdhYWU1ZTJjYWQxMTNkMTRhODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTIzNjcsMTEgKzIzNjcsNiBAQCBib29sIEVsZW1lbnQ6Omhh
c0F0dHJpYnV0ZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9t
aWNTdHJpbgogICAgIHJldHVybiBlbGVtZW50RGF0YSgpLT5maW5kQXR0cmlidXRlQnlOYW1lKHFO
YW1lKTsKIH0KIAotQ1NTU3R5bGVEZWNsYXJhdGlvbiogRWxlbWVudDo6Y3Nzb21TdHlsZSgpCi17
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIHZvaWQgRWxlbWVudDo6Zm9jdXMoYm9vbCByZXN0
b3JlUHJldmlvdXNTZWxlY3Rpb24sIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBp
ZiAoIWlzQ29ubmVjdGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA1NmZhZGI0MzZlM2YwNmIx
NjVkNjM5NmZiODQ2ZTlmM2I1MmFlNTY2Li45NDE0NjliNTE3MTA1ZDc4MWM5ZDI2NDllNjAxYTE4
ZDVlMWI0Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTE5Nyw4ICsxOTcsNiBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEF0dHI+PiYgYXR0ck5vZGVMaXN0KCk7CiAKLSAg
ICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIGNzc29tU3R5bGUoKTsKLQogICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lOyB9CiAj
aWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgcHRyZGlmZl90IHRhZ1FOYW1lTWVtb3J5T2Zmc2V0
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEVsZW1lbnQsIG1fdGFnTmFtZSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmlkbAppbmRleCA0NGQ0OGIzODA3MzkxNzM5NTY1MTYxNDc4OTQwN2MwZTA1YzUx
YWQzLi45ZTYwYjllYjI5MThjMDdlZjU2MzRjNGZkZDk4MmUwM2Q3ZTIwOTJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCkBAIC02NiwxMCArNjYsNiBAQAogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhy
b3dFeGNlcHRpb25dIEVsZW1lbnQ/IGluc2VydEFkamFjZW50RWxlbWVudChET01TdHJpbmcgd2hl
cmUsIEVsZW1lbnQgZWxlbWVudCk7IC8vIEhpc3RvcmljYWwuCiAgICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIGluc2VydEFkamFjZW50VGV4dChET01TdHJpbmcgd2hlcmUsIERPTVN0cmluZyBk
YXRhKTsgLy8gSGlzdG9yaWNhbC4KIAotICAgIC8vIEZJWE1FOiBTaG91bGQgYmUgaW4gYSBzZXBh
cmF0ZSBFbGVtZW50Q1NTSW5saW5lU3R5bGUgYW5kIGltcGxlbWVudGVkIGJ5IEhUTUxFbGVtZW50
IC8gU1ZHRWxlbWVudC4KLSAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Ro
ZS1lbGVtZW50Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCi0gICAgW0ltcGxlbWVudGVkQXM9Y3Nz
b21TdHlsZV0gcmVhZG9ubHkgYXR0cmlidXRlIENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7IC8v
IEZJWE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3QsIFB1dEZvcndhcmRzPWNzc1RleHRdLgotCiAg
ICAgLy8gQ1NTT00tdmlldyBleHRlbnNpb25zIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
b20tdmlldy8jZXh0ZW5zaW9uLXRvLXRoZS1lbGVtZW50LWludGVyZmFjZSkuCiAgICAgc2VxdWVu
Y2U8RE9NUmVjdD4gZ2V0Q2xpZW50UmVjdHMoKTsKICAgICBbTmV3T2JqZWN0XSBET01SZWN0IGdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmlu
ZGV4IDJlZTk5OTdmZDA4OGY0YTk0MDc1MjFlN2IxOWNmMDJmNWVhZDBmMTYuLjJjYmU3OGU3YjUy
YTg4MjFjNmQ0MmRlZjlkMTJjYTkyZWJjNWNhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxl
bWVudC5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgU3R5bGVkRWxlbWVudDo6flN0eWxlZEVsZW1lbnQo
KQogICAgICAgICBjc3NvbVdyYXBwZXItPmNsZWFyUGFyZW50RWxlbWVudCgpOwogfQogCi1DU1NT
dHlsZURlY2xhcmF0aW9uKiBTdHlsZWRFbGVtZW50Ojpjc3NvbVN0eWxlKCkKK0NTU1N0eWxlRGVj
bGFyYXRpb24mIFN0eWxlZEVsZW1lbnQ6OmNzc29tU3R5bGUoKQogewotICAgIHJldHVybiBlbnN1
cmVNdXRhYmxlSW5saW5lU3R5bGUoKS5lbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKHRo
aXMpOworICAgIHJldHVybiBlbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUoKS5lbnN1cmVJbmxpbmVD
U1NTdHlsZURlY2xhcmF0aW9uKCp0aGlzKTsKIH0KIAogTXV0YWJsZVN0eWxlUHJvcGVydGllcyYg
U3R5bGVkRWxlbWVudDo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5
bGVkRWxlbWVudC5oCmluZGV4IDQ0MjA0MWNkNTA5OTU5NTE4ZjE3YTFmNjEwOGM2ODc0YWQzMTY0
NDQuLjMxYjhmYjMyNTlmYzhiODhiY2I3Y2I0YTcyMzJiZjExNmI2ZmY3ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgc3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKFN0eWxlZEVsZW1lbnQqKTsK
ICAgICB2b2lkIHN5bmNocm9uaXplU3R5bGVBdHRyaWJ1dGVJbnRlcm5hbCgpIGNvbnN0IHsgU3R5
bGVkRWxlbWVudDo6c3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKGNvbnN0X2Nhc3Q8
U3R5bGVkRWxlbWVudCo+KHRoaXMpKTsgfQogICAgIAotICAgIENTU1N0eWxlRGVjbGFyYXRpb24q
IGNzc29tU3R5bGUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDU1NTdHlsZURlY2xhcmF0
aW9uJiBjc3NvbVN0eWxlKCk7CiAKICAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIHByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IDNiYzdmYzc3ZGU1ZjYwZjc0OTYwY2M5NGVjZjcxZTA5YzNjNTU3ZGEu
LjUyNTlkMzNhMWFjNWJjYzhiNGZmYTE1NzdkOTE0N2NkMTg1NjY4MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKQEAgLTMxMDMsMTAgKzMxMDMsMTAgQEAgdm9pZCBFZGl0b3I6OmFwcGx5
RWRpdGluZ1N0eWxlVG9FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBnZXQg
dGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCi0gICAgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGUgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21TdHls
ZSgpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V29yZFdyYXAs
ICJicmVhay13b3JkIiwgZmFsc2UpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIsIGZhbHNlKTsKLSAgICBzdHlsZS0+c2V0
UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNl
IiwgZmFsc2UpOworICAgIGF1dG8mIHN0eWxlID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKmVs
ZW1lbnQpLmNzc29tU3R5bGUoKTsKKyAgICBzdHlsZS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1By
b3BlcnR5V29yZFdyYXAsICJicmVhay13b3JkIiwgZmFsc2UpOworICAgIHN0eWxlLnNldFByb3Bl
cnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgInNwYWNlIiwgZmFsc2UpOwor
ICAgIHN0eWxlLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlMaW5lQnJlYWssICJhZnRl
ci13aGl0ZS1zcGFjZSIsIGZhbHNlKTsKIH0KIAogYm9vbCBFZGl0b3I6OmZpbmRTdHJpbmcoY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGE0ZTQ4NjM1
ODg3NGY3MjM0ODhkYjkyZDI4M2M1OTNmOThmOTAyZjcuLjI3MGY4NTA0MjA5NGMxZjM3YjZiN2Fi
YjQwMjYzOTcxNjE2ZTJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC01NTYsOSArNTU2LDkgQEAgdm9pZCBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3Bhbklu
bGluZShJbnNlcnQKIAogICAgICAgICAgICAgLy8gTXV0YXRlIHVzaW5nIHRoZSBDU1NPTSB3cmFw
cGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBhIHNjcmlwdC4KICAgICAg
ICAgICAgIGlmIChpc0Jsb2NrKGVsZW1lbnQpKQotICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNz
c29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxp
bmUiLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFBy
b3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlEaXNwbGF5LCAiaW5saW5lIiwgZmFsc2UpOwogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkgJiYgZWxlbWVudC0+cmVuZGVyZXIoKS0+
c3R5bGUoKS5pc0Zsb2F0aW5nKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHls
ZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJub25lIiwgZmFsc2Up
OworICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVy
bmFsKENTU1Byb3BlcnR5RmxvYXQsICJub25lIiwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAppbmRleCBmZmQ3NjQxZTYwMzkwNWNmMjU1
ZTFkMWEzZTA3MGYxZjUzOWFiMTBhLi41OWE0NTA0NjcyNWI3MWUwNTYwYzJjNTdjNGUzMTZkZWEy
ZGQ5YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbApAQCAtNTcsNCArNTcsNSBA
QAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdNYXAgZGF0YXNldDsKIH07CiAKK0hU
TUxFbGVtZW50IGltcGxlbWVudHMgRWxlbWVudENTU0lubGluZVN0eWxlOwogSFRNTEVsZW1lbnQg
aW1wbGVtZW50cyBHbG9iYWxFdmVudEhhbmRsZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5w
dXRUeXBlLmNwcAppbmRleCBiMjExYmU5ZWU0ZjA1NGJiZTA3NWFlN2NkMmIyYzIxNjZhZjRkZTg4
Li5lOTRiMTc0MWU3YmQ4ODVkNTMyM2M4NjFiZmEyMWFlOTJjOTYwMDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcApAQCAtMTc3LDYgKzE3Nyw4IEBAIHVuc2lnbmVkIElt
YWdlSW5wdXRUeXBlOjpoZWlnaHQoKSBjb25zdAogewogICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50
PiBlbGVtZW50KHRoaXMtPmVsZW1lbnQoKSk7CiAKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLnVw
ZGF0ZUxheW91dCgpOworCiAgICAgaWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKSB7CiAgICAgICAg
IC8vIENoZWNrIHRoZSBhdHRyaWJ1dGUgZmlyc3QgZm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVl
LgogICAgICAgICBpZiAoYXV0byBvcHRpb25hbEhlaWdodCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZl
SW50ZWdlcihlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdodEF0
dHIpKSkKQEAgLTE4OCw4ICsxOTAsNiBAQCB1bnNpZ25lZCBJbWFnZUlucHV0VHlwZTo6aGVpZ2h0
KCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBpbWFnZUxvYWRlci0+aW1hZ2UoKS0+aW1hZ2VT
aXplRm9yUmVuZGVyZXIoZWxlbWVudC0+cmVuZGVyZXIoKSwgMSkuaGVpZ2h0KCkudG9VbnNpZ25l
ZCgpOwogICAgIH0KIAotICAgIGVsZW1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7Ci0K
ICAgICBSZW5kZXJCb3gqIGJveCA9IGVsZW1lbnQtPnJlbmRlckJveCgpOwogICAgIHJldHVybiBi
b3ggPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oYm94LT5jb250ZW50SGVpZ2h0KCksICpib3gpIDog
MDsKIH0KQEAgLTE5OCw2ICsxOTgsOCBAQCB1bnNpZ25lZCBJbWFnZUlucHV0VHlwZTo6d2lkdGgo
KSBjb25zdAogewogICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBlbGVtZW50KHRoaXMtPmVsZW1l
bnQoKSk7CiAKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOworCiAgICAg
aWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKSB7CiAgICAgICAgIC8vIENoZWNrIHRoZSBhdHRyaWJ1
dGUgZmlyc3QgZm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVlLgogICAgICAgICBpZiAoYXV0byBv
cHRpb25hbFdpZHRoID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGVsZW1lbnQtPmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSkpCkBAIC0yMDksOCArMjExLDYg
QEAgdW5zaWduZWQgSW1hZ2VJbnB1dFR5cGU6OndpZHRoKCkgY29uc3QKICAgICAgICAgICAgIHJl
dHVybiBpbWFnZUxvYWRlci0+aW1hZ2UoKS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIoZWxlbWVudC0+
cmVuZGVyZXIoKSwgMSkud2lkdGgoKS50b1Vuc2lnbmVkKCk7CiAgICAgfQogCi0gICAgZWxlbWVu
dC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKLQogICAgIFJlbmRlckJveCogYm94ID0gZWxl
bWVudC0+cmVuZGVyQm94KCk7CiAgICAgcmV0dXJuIGJveCA/IGFkanVzdEZvckFic29sdXRlWm9v
bShib3gtPmNvbnRlbnRXaWR0aCgpLCAqYm94KSA6IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA3YzE5OTJmMmFiYmI0NzNiY2Q2
Nzk4ZWYzOTFmYmQ0NDNiZDVhNWI0Li5hN2MxM2I4NTA4ZjZlZjEyMGI5MzFiNjM3NzgyOTJhNzNl
Zjg5MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKQEAgLTYwNiw5ICs2MDYsOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRj
aGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogICAgICAg
ICAgICAgICAgIGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRl
ZFN0eWxlRW50cnk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NT
UnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMsIHN0
eWxlUmVzb2x2ZXIsICpwYXJlbnRFbGVtZW50LCBOT1BTRVVETykpCiAgICAgICAgICAgICAgICAg
ICAgIC5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQtPmNzc29t
U3R5bGUoKSAmJiBwYXJlbnRFbGVtZW50LT5jc3NvbVN0eWxlKCktPmxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIHN0
eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQocGFyZW50RWxlbWVudCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBlbnRyeS0+c2V0SW5saW5lU3R5bGUoc3R5bGVTaGVldC0+YnVpbGRP
YmplY3RGb3JTdHlsZShzdHlsZVNoZWV0LT5zdHlsZUZvcklkKEluc3BlY3RvckNTU0lkKHN0eWxl
U2hlZXQtPmlkKCksIDApKSkpOworICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZWRFbGVtZW50
PigqcGFyZW50RWxlbWVudCkgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1l
bnQpLmNzc29tU3R5bGUoKS5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBz
dHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+
KCpwYXJlbnRFbGVtZW50KSk7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zZXRJbmxpbmVT
dHlsZShzdHlsZVNoZWV0LmJ1aWxkT2JqZWN0Rm9yU3R5bGUoc3R5bGVTaGVldC5zdHlsZUZvcklk
KEluc3BlY3RvckNTU0lkKHN0eWxlU2hlZXQuaWQoKSwgMCkpKSk7CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgZW50cmllcy0+YWRkSXRlbShXVEZNb3ZlKGVudHJ5KSk7CkBA
IC02MjIsMTYgKzYyMiwxNCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5
bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogCiB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+JiBhdHRyaWJ1dGVzU3R5bGUpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRG
b3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogc3R5bGVTaGVl
dCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChlbGVtZW50KTsKLSAgICBpZiAoIXN0eWxlU2hlZXQp
CisgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsK
KyAgICBpZiAoIWlzPFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpbmxpbmVTdHlsZSA9IHN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoZWxlbWVu
dC0+Y3Nzb21TdHlsZSgpKTsKLSAgICBpZiAoYXV0byBhdHRyaWJ1dGVzID0gYnVpbGRPYmplY3RG
b3JBdHRyaWJ1dGVzU3R5bGUoZWxlbWVudCkpCisgICAgYXV0byYgc3R5bGVkRWxlbWVudCA9IGRv
d25jYXN0PFN0eWxlZEVsZW1lbnQ+KCplbGVtZW50KTsKKyAgICBhdXRvJiBzdHlsZVNoZWV0ID0g
YXNJbnNwZWN0b3JTdHlsZVNoZWV0KHN0eWxlZEVsZW1lbnQpOworICAgIGlubGluZVN0eWxlID0g
c3R5bGVTaGVldC5idWlsZE9iamVjdEZvclN0eWxlKCZzdHlsZWRFbGVtZW50LmNzc29tU3R5bGUo
KSk7CisgICAgaWYgKGF1dG8gYXR0cmlidXRlcyA9IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0
eWxlKHN0eWxlZEVsZW1lbnQpKQogICAgICAgICBhdHRyaWJ1dGVzU3R5bGUgPSBXVEZNb3ZlKGF0
dHJpYnV0ZXMpOwogICAgIGVsc2UKICAgICAgICAgYXR0cmlidXRlc1N0eWxlID0gbnVsbHB0cjsK
QEAgLTYzOSwxMiArNjM3LDEyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kCiAKIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mIHN0eWxl
KQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5v
ZGVJZCk7CisgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9k
ZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVJbmZvID0gQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKmVsZW1lbnQsIHRydWUpOwotICAgIFJlZjxJbnNw
ZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3Bl
Y3RvckNTU0lkKCksIGNvbXB1dGVkU3R5bGVJbmZvLCBudWxscHRyKTsKKyAgICBhdXRvIGNvbXB1
dGVkU3R5bGVJbmZvID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKmVsZW1l
bnQsIHRydWUpOworICAgIGF1dG8gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3Jl
YXRlKEluc3BlY3RvckNTU0lkKCksIFdURk1vdmUoY29tcHV0ZWRTdHlsZUluZm8pLCBudWxscHRy
KTsKICAgICBzdHlsZSA9IGluc3BlY3RvclN0eWxlLT5idWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHls
ZSgpOwogfQogCkBAIC05MjAsMjIgKzkxOCwxOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpn
ZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGRvYwog
ICAgIHJlc3VsdCA9IFdURk1vdmUobmFtZWRGbG93cyk7CiB9CiAKLUluc3BlY3RvclN0eWxlU2hl
ZXRGb3JJbmxpbmVTdHlsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVl
dChFbGVtZW50KiBlbGVtZW50KQorSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlJiBJ
bnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KFN0eWxlZEVsZW1lbnQmIGVs
ZW1lbnQpCiB7Ci0gICAgTm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldDo6aXRlcmF0b3IgaXQgPSBt
X25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZmluZChlbGVtZW50KTsKKyAgICBhdXRvIGl0ID0g
bV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmZpbmQoJmVsZW1lbnQpOwogICAgIGlmIChpdCA9
PSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZW5kKCkpIHsKLSAgICAgICAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUgPSBlbGVtZW50LT5jc3NvbVN0eWxlKCk7Ci0gICAgICAgIGlmICgh
c3R5bGUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgICAgICBTdHJpbmcgbmV3
U3R5bGVTaGVldElkID0gU3RyaW5nOjpudW1iZXIobV9sYXN0U3R5bGVTaGVldElkKyspOwotICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBpbnNwZWN0b3JT
dHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUobV9k
b21BZ2VudC0+cGFnZUFnZW50KCksIG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyLCB0aGlzKTsKLSAgICAg
ICAgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5zZXQobmV3U3R5bGVTaGVldElkLCBpbnNwZWN0
b3JTdHlsZVNoZWV0KTsKLSAgICAgICAgbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChl
bGVtZW50LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKLSAgICAgICAgcmV0dXJuIGluc3BlY3RvclN0
eWxlU2hlZXQuZ2V0KCk7CisgICAgICAgIGF1dG8gaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2Vu
dCgpLCBuZXdTdHlsZVNoZWV0SWQsIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhciwgdGhpcyk7CisgICAgICAgIGF1dG8mIGluc3BlY3Rv
clN0eWxlU2hlZXRSZWYgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LmdldCgpOworICAgICAgICBtX2lk
VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChuZXdTdHlsZVNoZWV0SWQsIGluc3BlY3RvclN0eWxl
U2hlZXQuY29weVJlZigpKTsKKyAgICAgICAgbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNl
dCgmZWxlbWVudCwgV1RGTW92ZShpbnNwZWN0b3JTdHlsZVNoZWV0KSk7CisgICAgICAgIHJldHVy
biBpbnNwZWN0b3JTdHlsZVNoZWV0UmVmOwogICAgIH0KIAotICAgIHJldHVybiBpdC0+dmFsdWUu
Z2V0KCk7CisgICAgcmV0dXJuICppdC0+dmFsdWU7CiB9CiAKIEVsZW1lbnQqIEluc3BlY3RvckNT
U0FnZW50OjplbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
KQpAQCAtMTA4NSwyMSArMTA4MCwxNSBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0bwogICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVz
U3R5bGUoRWxlbWVudCogZWxlbWVudCkKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5
bGUoU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBBU1NFUlQoZWxlbWVudCk7Ci0gICAg
aWYgKCFpczxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCiAgICAgLy8gRklYTUU6IFVnbGluZXNzIGJlbG93LgotICAgIFN0eWxlUHJvcGVydGllcyog
YXR0cmlidXRlU3R5bGUgPSBjb25zdF9jYXN0PFN0eWxlUHJvcGVydGllcyo+KGRvd25jYXN0PFN0
eWxlZEVsZW1lbnQ+KGVsZW1lbnQpLT5wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpKTsKKyAg
ICBhdXRvKiBhdHRyaWJ1dGVTdHlsZSA9IGNvbnN0X2Nhc3Q8U3R5bGVQcm9wZXJ0aWVzKj4oZWxl
bWVudC5wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpKTsKICAgICBpZiAoIWF0dHJpYnV0ZVN0
eWxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGF0dHJpYnV0ZVN0eWxlLT5pc011dGFibGUoKSk7Ci0gICAgTXV0YWJsZVN0
eWxlUHJvcGVydGllcyogbXV0YWJsZUF0dHJpYnV0ZVN0eWxlID0gc3RhdGljX2Nhc3Q8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcyo+KGF0dHJpYnV0ZVN0eWxlKTsKLQotICAgIFJlZjxJbnNwZWN0b3JT
dHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNT
U0lkKCksIG11dGFibGVBdHRyaWJ1dGVTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigp
LCBudWxscHRyKTsKKyAgICBhdXRvJiBtdXRhYmxlQXR0cmlidXRlU3R5bGUgPSBkb3duY2FzdDxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPigqYXR0cmlidXRlU3R5bGUpOworICAgIGF1dG8gaW5zcGVj
dG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKCksIG11dGFi
bGVBdHRyaWJ1dGVTdHlsZS5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCksIG51bGxwdHIpOwog
ICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDc4ZWJj
YTdhMDljYWFmZWMwNDYyNDY3NzMwN2I2ODUxZjdlYjBiMjkuLjY4NzcwMGE3ZWRjYjQ3NmIzZTVh
YjY2MThiM2ZiZjI3MTgxZjVmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVm
IEhhc2hNYXA8aW50LCB1bnNpZ25lZD4gTm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZTsKIAogICAg
IHZvaWQgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwotICAgIEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZSogYXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVsZW1lbnQqIGVsZW1lbnQpOwor
ICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgYXNJbnNwZWN0b3JTdHlsZVNo
ZWV0KFN0eWxlZEVsZW1lbnQmKTsKICAgICBFbGVtZW50KiBlbGVtZW50Rm9ySWQoRXJyb3JTdHJp
bmcmLCBpbnQgbm9kZUlkKTsKICAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dz
SWQoRG9jdW1lbnQqKTsKIApAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKFN0
eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Jik7CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVs
ZSopOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Jiwg
UHNldWRvSWQpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxl
PiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50Kik7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRl
c1N0eWxlKFN0eWxlZEVsZW1lbnQmKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5Rm9yUmVn
aW9ucyhFcnJvclN0cmluZyYsIFJlZlB0cjxOb2RlTGlzdD4mJiwgaW50IGRvY3VtZW50Tm9kZUlk
KTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+IGJ1aWxk
T2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nJiwgV2ViS2l0TmFtZWRGbG93KiwgaW50IGRv
Y3VtZW50Tm9kZUlkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCmluZGV4IDZiMGE4ZWU3YmEyY2ZkODg4ZTQ5MDU2N2NhYTRmMTg3Njdk
MzM5NWEuLjYzYzQ0OGRjNTQxMTNjOWE3MjFmYmE2NzRmYTBhMjQ3N2ZmYjVhMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTUx
OCwxNyArNTE4LDE2IEBAIHN0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxlKiBy
dWxlLCBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTCiAgICAgfQogfQogCi1SZWY8
SW5zcGVjdG9yU3R5bGU+IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoY29uc3QgSW5zcGVjdG9yQ1NT
SWQmIHN0eWxlSWQsIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJbnNwZWN0
b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KQorUmVmPEluc3BlY3RvclN0eWxlPiBJbnNw
ZWN0b3JTdHlsZTo6Y3JlYXRlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NT
U3R5bGVEZWNsYXJhdGlvbj4mJiBzdHlsZSwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5
bGVTaGVldCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JTdHlsZShzdHls
ZUlkLCBXVEZNb3ZlKHN0eWxlKSwgcGFyZW50U3R5bGVTaGVldCkpOwogfQogCi1JbnNwZWN0b3JT
dHlsZTo6SW5zcGVjdG9yU3R5bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFJlZlB0
cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJl
bnRTdHlsZVNoZWV0KQorSW5zcGVjdG9yU3R5bGU6Okluc3BlY3RvclN0eWxlKGNvbnN0IEluc3Bl
Y3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiBzdHlsZSwgSW5z
cGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCkKICAgICA6IG1fc3R5bGVJZChzdHls
ZUlkKQotICAgICwgbV9zdHlsZShzdHlsZSkKKyAgICAsIG1fc3R5bGUoV1RGTW92ZShzdHlsZSkp
CiAgICAgLCBtX3BhcmVudFN0eWxlU2hlZXQocGFyZW50U3R5bGVTaGVldCkKIHsKLSAgICBBU1NF
UlQobV9zdHlsZSk7CiB9CiAKIEluc3BlY3RvclN0eWxlOjp+SW5zcGVjdG9yU3R5bGUoKQpAQCAt
NzQ1LDEyICs3NDQsMTIgQEAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBJbnNwZWN0b3JTdHls
ZTo6ZXh0cmFjdFNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9wYXJlbnRTdHlsZVNo
ZWV0IHx8ICFtX3BhcmVudFN0eWxlU2hlZXQtPmVuc3VyZVBhcnNlZERhdGFSZWFkeSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0LT5ydWxl
U291cmNlRGF0YUZvcihtX3N0eWxlLmdldCgpKTsKKyAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNo
ZWV0LT5ydWxlU291cmNlRGF0YUZvcihtX3N0eWxlLnB0cigpKTsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gSW5zcGVjdG9yU3R5bGU6OnNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAg
IHJldHVybiBtX3BhcmVudFN0eWxlU2hlZXQtPnNldFN0eWxlVGV4dChtX3N0eWxlLmdldCgpLCB0
ZXh0KTsKKyAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0LT5zZXRTdHlsZVRleHQobV9zdHls
ZS5wdHIoKSwgdGV4dCk7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JTdHlsZTo6c2hvcnRoYW5kVmFs
dWUoY29uc3QgU3RyaW5nJiBzaG9ydGhhbmRQcm9wZXJ0eSkgY29uc3QKQEAgLTEyNTcsNyArMTI1
Niw3IEBAIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6aW5zcGVj
dG9yU3R5bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDCiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShpZCwg
c3R5bGUsIHRoaXMpOworICAgIHJldHVybiBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKGlkLCAqc3R5
bGUsIHRoaXMpOwogfQogCiBJbnNwZWN0b3JDU1NJZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxl
T3JTdHlsZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdApAQCAtMTQ3MiwyNiAr
MTQ3MSwyNSBAQCB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OmNvbGxlY3RGbGF0UnVsZXMoUmVm
UHRyPENTU1J1bGVMaXN0PiYmIHJ1bGVMaXN0LCBDU1NTdAogICAgIH0KIH0KIAotUmVmPEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK1JlZjxJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZTo6Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJp
bmcmIGlkLCBSZWY8U3R5bGVkRWxlbWVudD4mJiBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
KHBhZ2VBZ2VudCwgaWQsIFdURk1vdmUoZWxlbWVudCksIG9yaWdpbiwgbGlzdGVuZXIpKTsKIH0K
IAotSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK0luc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBSZWY8
U3R5bGVkRWxlbWVudD4mJiBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxl
U2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgOiBJbnNwZWN0b3JT
dHlsZVNoZWV0KHBhZ2VBZ2VudCwgaWQsIG51bGxwdHIsIG9yaWdpbiwgU3RyaW5nKCksIGxpc3Rl
bmVyKQogICAgICwgbV9lbGVtZW50KFdURk1vdmUoZWxlbWVudCkpCiAgICAgLCBtX3J1bGVTb3Vy
Y2VEYXRhKG51bGxwdHIpCiAgICAgLCBtX2lzU3R5bGVUZXh0VmFsaWQoZmFsc2UpCiB7Ci0gICAg
QVNTRVJUKG1fZWxlbWVudCk7CiAgICAgbV9pbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxl
OjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoaWQsIDApLCBpbmxpbmVTdHlsZSgpLCB0aGlzKTsKLSAg
ICBtX3N0eWxlVGV4dCA9IG1fZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkgPyBtX2VsZW1lbnQt
PmdldEF0dHJpYnV0ZSgic3R5bGUiKS5zdHJpbmcoKSA6IFN0cmluZygpOworICAgIG1fc3R5bGVU
ZXh0ID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3RyaW5nKCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpkaWRNb2RpZnlFbGVtZW50QXR0
cmlidXRlKCkKIHsKICAgICBtX2lzU3R5bGVUZXh0VmFsaWQgPSBmYWxzZTsKLSAgICBpZiAobV9l
bGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAmJiBtX2VsZW1lbnQtPmNzc29tU3R5bGUoKSAhPSBt
X2luc3BlY3RvclN0eWxlLT5jc3NTdHlsZSgpKQorICAgIGlmICgmbV9lbGVtZW50LT5jc3NvbVN0
eWxlKCkgIT0gJm1faW5zcGVjdG9yU3R5bGUtPmNzc1N0eWxlKCkpCiAgICAgICAgIG1faW5zcGVj
dG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKGlkKCksIDAp
LCBpbmxpbmVTdHlsZSgpLCB0aGlzKTsKICAgICBtX3J1bGVTb3VyY2VEYXRhID0gbnVsbHB0cjsK
IH0KQEAgLTE1MDcsNyArMTUwNSw3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlOjp0ZXh0KCkgY29uc3QKIAogRXhjZXB0aW9uT3I8dm9pZD4g
SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRleHQoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBBU1NFUlRfVU5V
U0VEKHN0eWxlLCBzdHlsZSA9PSBpbmxpbmVTdHlsZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN0
eWxlLCBzdHlsZSA9PSAmaW5saW5lU3R5bGUoKSk7CiAKICAgICB7CiAgICAgICAgIEluc3BlY3Rv
ckNTU0FnZW50OjpJbmxpbmVTdHlsZU92ZXJyaWRlU2NvcGUgb3ZlcnJpZGVTY29wZShtX2VsZW1l
bnQtPmRvY3VtZW50KCkpOwpAQCAtMTU0NCw5ICsxNTQyLDYgQEAgYm9vbCBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVuc3VyZVBhcnNlZERhdGFSZWFkeSgpCiAgICAgaWYgKG1f
cnVsZVNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFtX2VsZW1l
bnQtPmlzU3R5bGVkRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBtX3J1
bGVTb3VyY2VEYXRhID0gcnVsZVNvdXJjZURhdGEoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTE1NTcsNyArMTU1Miw3IEBAIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGluZVN0eWxlOjppbnNwZWN0b3JTdHlsZUZvcklkKGNvCiAgICAgcmV0dXJuIG1f
aW5zcGVjdG9yU3R5bGUuY29weVJlZigpOwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9uKiBJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmlubGluZVN0eWxlKCkgY29uc3QKK0NTU1N0
eWxlRGVjbGFyYXRpb24mIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6aW5saW5l
U3R5bGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2VsZW1lbnQtPmNzc29tU3R5bGUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4
IGRmOTVkMWNlNTIwN2FlMjQwYTM2ZGI1ZTI0NDZiY2NhYmE5ZGM3Y2QuLjJmMzFmMzBiOTdiZTQ4
YmNiODVlZjdiOGI2NTc0N2QwMjhjNTBiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaApAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RydWN0IElu
c3BlY3RvclN0eWxlUHJvcGVydHkgewogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZSBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclN0eWxlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxJbnNwZWN0b3JTdHlsZT4gY3JlYXRlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBS
ZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50
U3R5bGVTaGVldCk7CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHlsZT4gY3JlYXRlKGNvbnN0
IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiwgSW5z
cGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCk7CiAgICAgfkluc3BlY3RvclN0eWxl
KCk7CiAKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBjc3NTdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3R5bGUuZ2V0KCk7IH0KKyAgICBDU1NTdHlsZURlY2xhcmF0aW9uJiBjc3NTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0OwogICAgIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IGJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29u
c3Q7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0VGV4dChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JTdHlsZShj
b25zdCBJbnNwZWN0b3JDU1NJZCYgc3R5bGVJZCwgUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+
JiYsIEluc3BlY3RvclN0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQpOworICAgIEluc3BlY3Rv
clN0eWxlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJh
dGlvbj4mJiwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCk7CiAKICAgICB2
b2lkIHBvcHVsYXRlQWxsUHJvcGVydGllcyhWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4q
IHJlc3VsdCkgY29uc3Q7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+IHN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdDsKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IGxvbmdoYW5kUHJvcGVydGllcyhjb25zdCBTdHJpbmcm
IHNob3J0aGFuZFByb3BlcnR5KSBjb25zdDsKIAogICAgIEluc3BlY3RvckNTU0lkIG1fc3R5bGVJ
ZDsKLSAgICBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gbV9zdHlsZTsKKyAgICBSZWY8Q1NT
U3R5bGVEZWNsYXJhdGlvbj4gbV9zdHlsZTsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBtX3Bh
cmVudFN0eWxlU2hlZXQ7CiB9OwogCkBAIC0yMjksMTcgKzIyOSwxNyBAQCBwcml2YXRlOgogCiBj
bGFzcyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUgZmluYWwgOiBwdWJsaWMgSW5z
cGVjdG9yU3R5bGVTaGVldCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBT
dHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlPiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3Qg
U3RyaW5nJiBpZCwgUmVmPFN0eWxlZEVsZW1lbnQ+JiYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbiwgTGlzdGVuZXIqKTsKIAogICAgIHZvaWQgZGlkTW9kaWZ5RWxl
bWVudEF0dHJpYnV0ZSgpOwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gdGV4dCgpIGNvbnN0IGZp
bmFsOwotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9y
Q1NTSWQmIGlkKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9VTlVTRUQoaWQsICFpZC5vcmRpbmFsKCkp
OyByZXR1cm4gaW5saW5lU3R5bGUoKTsgfQorICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxl
Rm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9VTlVT
RUQoaWQsICFpZC5vcmRpbmFsKCkpOyByZXR1cm4gJmlubGluZVN0eWxlKCk7IH0KIAogcHJvdGVj
dGVkOgotICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdl
QWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIEluc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJp
bmcmIGlkLCBSZWY8U3R5bGVkRWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOwogCiAgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1l
bnQoKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1bGVTb3Vy
Y2VEYXRhRm9yKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdCBmaW5hbCB7IEFTU0VS
VF9VTlVTRUQoc3R5bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291
cmNlRGF0YTsgfQorICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZVNvdXJjZURhdGFG
b3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IGZpbmFsIHsgQVNTRVJUX1VOVVNF
RChzdHlsZSwgc3R5bGUgPT0gJmlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291cmNlRGF0
YTsgfQogICAgIHVuc2lnbmVkIHJ1bGVJbmRleEJ5U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiop
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBib29sIGVuc3VyZVBhcnNlZERhdGFSZWFk
eSgpIGZpbmFsOwogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGVGb3JJ
ZChjb25zdCBJbnNwZWN0b3JDU1NJZCYpIGZpbmFsOwpAQCAtMjQ5LDExICsyNDksMTEgQEAgcHJv
dGVjdGVkOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3Mo
KSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBpbmxp
bmVTdHlsZSgpIGNvbnN0OworICAgIENTU1N0eWxlRGVjbGFyYXRpb24mIGlubGluZVN0eWxlKCkg
Y29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBlbGVtZW50U3R5bGVUZXh0KCkgY29uc3Q7CiAgICAg
UmVmPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YSgpIGNvbnN0OwogCi0gICAgUmVm
UHRyPEVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBSZWY8U3R5bGVkRWxlbWVudD4gbV9lbGVtZW50
OwogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gbV9ydWxlU291cmNlRGF0YTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yU3R5bGU+IG1faW5zcGVjdG9yU3R5bGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmlkbAppbmRleCBmY2I2NGFlZGMyODg1YThlMTUyNWYxZjkwYzgyZmJkNGU5YjFkOWUw
Li40MmUyMGZlMmY4NGNjOGE5ZmFjNGYyM2VkNzEzMGFkYWVlYzYwODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaWRsCkBAIC0zMCw3ICszMCw2IEBACiAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyB4bWxzcGFjZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBj
bGFzc05hbWU7Ci0gICAgW0ltcGxlbWVudGVkQXM9Y3Nzb21TdHlsZV0gcmVhZG9ubHkgYXR0cmli
dXRlIENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7CiAKICAgICBhdHRyaWJ1dGUgbG9uZyB0YWJJ
bmRleDsKIApAQCAtNDQsNCArNDMsNSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmdNYXAgZGF0YXNldDsKIH07CiAKK1NWR0VsZW1lbnQgaW1wbGVtZW50cyBFbGVtZW50Q1NTSW5s
aW5lU3R5bGU7CiBTVkdFbGVtZW50IGltcGxlbWVudHMgR2xvYmFsRXZlbnRIYW5kbGVyczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KaW5kZXggNmQxODNjOTNmYzNjNTBkZjRjOTFmYjY5
NzZkZGUyMzQ5MGZiYTkyYS4uZTdhYWU3ZDhiYTRmNTZkMjE5NGFlMjg0ZWM2NWJjMzViODFlOWJi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KQEAgLTQxLDYgKzQxLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9TdHlsZWRFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KIApAQCAtNzIsNyArNzMsOCBA
QCAtIChOU1N0cmluZyAqKXRhZ05hbWUKIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHls
ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1
cm4ga2l0KHVud3JhcCgqc2VsZikuY3Nzb21TdHlsZSgpKTsKKyAgICBhdXRvJiBlbGVtZW50ID0g
dW53cmFwKCpzZWxmKTsKKyAgICByZXR1cm4gaXM8V2ViQ29yZTo6U3R5bGVkRWxlbWVudD4oZWxl
bWVudCkgPyBraXQoJmRvd25jYXN0PFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpLmNz
c29tU3R5bGUoKSkgOiBudWxscHRyOwogfQogCiAtIChpbnQpb2Zmc2V0TGVmdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4
IDI2NmRiNDkwNjg4ZDYxMjYzZjRhYjAwY2IzNjM4YzBjOGU3NTZjMjYuLjI0OWY5NTBhNTg1OThl
ZDljNzM1OTI0N2NkZTRhZjYwZjU4ODgxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTI1NCw3ICsyNTQsNyBAQCBi
b29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqIHN0
eWxlLCBSYW5nZSogcmFuZ2UpCiB7CiAgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IG11
dGFibGVTdHlsZShzdHlsZS0+aXNNdXRhYmxlKCkgPyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4oc3RhdGljX2Nhc3Q8TXV0YWJsZVN0eWxlUHJvcGVydGllcyY+KCpzdHlsZSkpIDogc3R5bGUt
Pm11dGFibGVDb3B5KCkpOwogICAgIHJldHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRl
Rm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldwotICAgICAgICBzaG91bGRBcHBseVN0eWxlOmtp
dChtdXRhYmxlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSkgdG9FbGVtZW50c0lu
RE9NUmFuZ2U6a2l0KHJhbmdlKV07CisgICAgICAgIHNob3VsZEFwcGx5U3R5bGU6a2l0KCZtdXRh
YmxlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSkgdG9FbGVtZW50c0luRE9NUmFu
Z2U6a2l0KHJhbmdlKV07CiB9CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZUZvbnRQYW5lbChXZWJWaWV3
ICp3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNTgxOTVl
ZTM2NTliMWRjZDNmOTVkYzIzZGIxMmI3ODU0N2IyNDIxNS4uMzY4NWUyYzA2ZjA1NmY1NjExNmNm
NGU0YjM4ZmE0MTdiMzY5NmNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CkBAIC05MjEsNyArOTIxLDcgQEAgLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKV90eXBpbmdT
dHlsZQogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiB0eXBpbmdTdHlsZSA9IF9w
cml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLmNvcHlUeXBpbmdTdHlsZSgpOwogICAgIGlm
ICghdHlwaW5nU3R5bGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGtpdCh0eXBp
bmdTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKKyAgICByZXR1cm4ga2l0KCZ0
eXBpbmdTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKIH0KIAogLSAodm9pZClf
c2V0VHlwaW5nU3R5bGU6KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZSB3aXRoVW5kb0Fj
dGlvbjooRWRpdEFjdGlvbil1bmRvQWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01FbGVtZW50LmNwcAppbmRleCA1OWExNWQzMzlkNDk0ZjJlMjNmYjUwZTI4NDE1NTVh
ZDRjODcwZWRlLi5iNTY3NWEwYjQ0ZmJkNWNlZmIxYmE2MDRkNmMzNWM4ZjAyMmQzZDk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudC5jcHAKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJHT2JqZWN0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvSFRNTE5hbWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU01haW5UaHJlYWRFeGVjU3Rh
dGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N0eWxlZEVsZW1lbnQuaD4KICNpbmNsdWRlICJXZWJL
aXRET01BdHRyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRp
b25Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NQ2xpZW50UmVjdExpc3RQcml2YXRlLmgi
CkBAIC0xMDQ5LDkgKzEwNTAsMTAgQEAgV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiogd2Vi
a2l0X2RvbV9lbGVtZW50X2dldF9zdHlsZShXZWJLaXRET01FbGVtZW50KiBzZWwKIHsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0RPTV9JU19FTEVNRU5UKHNlbGYpLCAwKTsKLSAgICBXZWJDb3JlOjpFbGVt
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDU1NT
dHlsZURlY2xhcmF0aW9uPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+Y3Nzb21T
dHlsZSgpKTsKLSAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7Cisg
ICAgYXV0byYgaXRlbSA9ICpXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaWYgKCFpczxXZWJDb3Jl
OjpTdHlsZWRFbGVtZW50PihpdGVtKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIFdlYktpdDo6a2l0KCZkb3duY2FzdDxXZWJDb3JlOjpTdHlsZWRFbGVtZW50PihpdGVtKS5j
c3NvbVN0eWxlKCkpOwogfQogCiBnY2hhciogd2Via2l0X2RvbV9lbGVtZW50X2dldF9pZChXZWJL
aXRET01FbGVtZW50KiBzZWxmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGM5OTllZmY4
NmVlODYzZWM0NzA2YzljMTg2NDY3NDY1Y2M2NTY5OGQuLjNmYWVlMTlmMWRiN2RhODI2MTYwMDNl
MTEzOWVjY2VkYWI5ZjZmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTE1MSw3ICsx
NTEsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShS
YW5nZSogZnJvbVJhbmdlLCBSYW5nZSogdG9SYW5nZQogYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNo
b3VsZEFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwgUmFuZ2UqIHJhbmdlKQogewog
ICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBtdXRhYmxlU3R5bGUoc3R5bGUtPmlzTXV0
YWJsZSgpID8gUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+KHN0YXRpY19jYXN0PE11dGFibGVT
dHlsZVByb3BlcnRpZXMmPigqc3R5bGUpKSA6IHN0eWxlLT5tdXRhYmxlQ29weSgpKTsKLSAgICBi
b29sIHJlc3VsdCA9IG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5zaG91bGRB
cHBseVN0eWxlKCptX3BhZ2UsIG11dGFibGVTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlv
bigpLCByYW5nZSk7CisgICAgYm9vbCByZXN1bHQgPSBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50KCkuc2hvdWxkQXBwbHlTdHlsZSgqbV9wYWdlLCAmbXV0YWJsZVN0eWxlLT5lbnN1
cmVDU1NTdHlsZURlY2xhcmF0aW9uKCksIHJhbmdlKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDlkNWI0MzBkNTU5YzA5ODI4NWIxOTc4OTJj
ZGZkZDBhNTgzZTEzZi4uYTA0ZDY2YzYxYTI3NTI0MjM0YTZlZGRkMjUwZTNkMDYxYzM4NzM5NiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA1LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSAnc3R5bGUnIGZyb20gRWxlbWVudCB0byBIVE1MRWxl
bWVudCAvIFNWR0VsZW1lbnQgYW5kIG1ha2UgaXQgc2V0dGFibGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTc5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9yb2xlcy1leHBv
c2VkLmh0bWw6CisgICAgICAgIEFkZCBudWxsIGNoZWNrIGZvciBlbGVtZW50LnN0eWxlLgorCisg
ICAgICAgICogZmFzdC9jc3MvRWxlbWVudC1zdHlsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3NzL0VsZW1lbnQtc3R5bGUuaHRtbDogQWRkZWQuCisgICAgICAgIEFkZCBs
YXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtd2lkdGgt
aGVpZ2h0LWF0dHJpYnV0ZXMtd2l0aG91dC1yZW5kZXJlci1sb2FkZWQtaW1hZ2UtZXhwZWN0ZWQu
dHh0OgorICAgICAgICBSZWJhc2VsaW5lIHRlc3QgdGhhdCB3YXMgc2V0dGluZyBIVE1MRWxlbWVu
dC5zdHlsZSB3aGljaCB3YXMgYSBuby1vcCB1bnRpbCB0aGlzIHBhdGNoLiBOb3cgdGhhdCBpdCBh
Y3R1YWxseQorICAgICAgICBkb2VzIHNvbWV0aGluZywgdGhlIGlucHV0IGVsZW1lbnQgYWN0dWFs
bHkgbG9vc2VzIGl0cyByZW5kZXJlci4gVGhpcyBmb3VuZCBhIGJ1ZyB3aGljaCBJIGZpeGVkIGlu
IHRoaXMKKyAgICAgICAgcGF0Y2guCisKKyAgICAgICAgKiBqcy9kb20vZG9tLXN0YXRpYy1wcm9w
ZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgUmViYXNlbGluZSBh
cyBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBoYXMgY2hhbmdlZC4KKwogMjAxNy0wNS0wNyAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhU3RyZWFt
XSByMjE2MTk3IGNhdXNlZCBzb21lIHdlYnJ0YyB0ZXN0cyB0byBmYWlsCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JvbGVzLWV4cG9zZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvcm9sZXMtZXhwb3NlZC5odG1sCmluZGV4IGNiNzMyOTYyYTZjN2Y2YTU2
ZmUyNDY3OWI3NjgzNWQyYjIzYTI5MTcuLjQ0NTYzNDU1ODRmMjNhNzYwNDg5MjBhY2UwNDM3NDIw
NDczZmVlNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcm9sZXMtZXhw
b3NlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcm9sZXMtZXhwb3NlZC5o
dG1sCkBAIC00MzEsNyArNDMxLDggQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgIGV4YW1wbGVzID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgnLmV4Jyk7CiAgICAgZm9yICh2YXIgaSA9IDAsIGMgPSBleGFtcGxlcy5sZW5n
dGg7IGkgPCBjOyBpKyspIHsKICAgICAgICAgZWwgPSBleGFtcGxlc1tpXTsKLSAgICAgICAgZWwu
c3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICAgICAgaWYgKGVsLnN0eWxlKQorICAgICAgICAg
ICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICB9CiB9CiA8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQtc3R5bGUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvRWxlbWVudC1zdHlsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWUyNDYyODYwNzE4OGJkMzYzMjYxMjcxY2I1YTY4ZmM1OTFmYmY4NgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQtc3R5bGUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNSBAQAorCitQQVNTICdzdHlsZScgcHJvcGVydHkgbG9jYXRpb24gCitQQVNTICdz
dHlsZScgcHJvcGVydHkgdHlwZSAKK1BBU1Mgc3R5bGUgc2hvdWxkIGJlIHNldHRhYmxlIAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9FbGVtZW50LXN0eWxlLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9FbGVtZW50LXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJiOWJjZWVm
M2VlOWI4ZGQwNWI4ZWFjMTM3YjhmZjdmMzk2MDU4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQtc3R5bGUuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0idGVzdERpdiIgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6IHJlZCI+PC9kaXY+Cis8c3ZnIGlkPSJ0ZXN0U1ZHIiBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogcmVkIj48L2Rpdj4KKzxzY3JpcHQ+Cit0ZXN0KCgpID0+IHsKKyAg
ICBjb25zdCB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3REaXYiKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHRlc3REaXYuX19wcm90b19fLCBIVE1MRGl2RWxlbWVudC5wcm90b3R5
cGUsICJ0ZXN0RGl2IGlzIGFuIEhUTUxEaXZFbGVtZW50Iik7CisgICAgYXNzZXJ0X2lkbF9hdHRy
aWJ1dGUodGVzdERpdiwgInN0eWxlIiwgIkhUTUxFbGVtZW50IGhhcyAnc3R5bGUnIGF0dHJpYnV0
ZSIpOworICAgIGFzc2VydF9vd25fcHJvcGVydHkoSFRNTEVsZW1lbnQucHJvdG90eXBlLCAic3R5
bGUiLCAiJ3N0eWxlJyBpcyBvbiBIVE1MRWxlbWVudCBwcm90b3R5cGUiKTsKKworICAgIGNvbnN0
IHRlc3RTVkcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdFNWRyIpOworICAgIGFzc2Vy
dF9lcXVhbHModGVzdFNWRy5fX3Byb3RvX18sIFNWR1NWR0VsZW1lbnQucHJvdG90eXBlLCAidGVz
dFNWRyBpcyBhbiBTVkdTVkdFbGVtZW50Iik7CisgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUodGVz
dFNWRywgInN0eWxlIiwgIlNWR0VsZW1lbnQgaGFzICdzdHlsZScgYXR0cmlidXRlIik7CisgICAg
YXNzZXJ0X293bl9wcm9wZXJ0eShTVkdFbGVtZW50LnByb3RvdHlwZSwgInN0eWxlIiwgIidzdHls
ZScgaXMgb24gU1ZHRWxlbWVudCBwcm90b3R5cGUiKTsKKworICAgIGFzc2VydF9ub3RfZXhpc3Rz
KCJFbGVtZW50LnByb3RvdHlwZSIsICJzdHlsZSIsICInc3R5bGUnIGlzIG5vdCBvbiBFbGVtZW50
IHByb3RvdHlwZSIpOworfSwgIidzdHlsZScgcHJvcGVydHkgbG9jYXRpb24iKTsKKwordGVzdCgo
KSA9PiB7CisgICAgY29uc3QgdGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0
RGl2Iik7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0RGl2LnN0eWxlLl9fcHJvdG9fXywgQ1NTU3R5
bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUsICJIVE1MRWxlbWVudC5zdHlsZSB0eXBlIik7CisKKyAg
ICBjb25zdCB0ZXN0U1ZHID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RTVkciKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHRlc3RTVkcuc3R5bGUuX19wcm90b19fLCBDU1NTdHlsZURlY2xhcmF0
aW9uLnByb3RvdHlwZSwgIlNWR0VsZW1lbnQuc3R5bGUgdHlwZSIpOworfSwgIidzdHlsZScgcHJv
cGVydHkgdHlwZSIpOworCit0ZXN0KCgpID0+IHsKKyAgICBjb25zdCB0ZXN0RGl2ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3REaXYiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRlc3REaXYu
c3R5bGUuYmFja2dyb3VuZENvbG9yLCAicmVkIiwgIkhUTUxFbGVtZW50LnN0eWxlIGdldHRlciIp
OworICAgIGFzc2VydF9yZWFkb25seSh0ZXN0RGl2LCAic3R5bGUiLCAiSFRNTEVsZW1lbnQuc3R5
bGUgaXMgcmVhZG9ubHkiKTsKKyAgICB0ZXN0RGl2LnN0eWxlID0gImJhY2tncm91bmQtY29sb3I6
IGdyZWVuIjsKKyAgICBhc3NlcnRfZXF1YWxzKHRlc3REaXYuc3R5bGUuYmFja2dyb3VuZENvbG9y
LCAiZ3JlZW4iLCAiSFRNTEVsZW1lbnQuc3R5bGUgc2V0dGVyIik7CisKKyAgICBjb25zdCB0ZXN0
U1ZHID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RTVkciKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHRlc3RTVkcuc3R5bGUuYmFja2dyb3VuZENvbG9yLCAicmVkIiwgIlNWR0VsZW1lbnQuc3R5
bGUgZ2V0dGVyIik7CisgICAgYXNzZXJ0X3JlYWRvbmx5KHRlc3RTVkcsICJzdHlsZSIsICJTVkdF
bGVtZW50LnN0eWxlIGlzIHJlYWRvbmx5Iik7CisgICAgdGVzdFNWRy5zdHlsZSA9ICJiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbiI7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0U1ZHLnN0eWxlLmJhY2tn
cm91bmRDb2xvciwgImdyZWVuIiwgIlNWR0VsZW1lbnQuc3R5bGUgc2V0dGVyIik7Cit9LCAic3R5
bGUgc2hvdWxkIGJlIHNldHRhYmxlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtd2lkdGgtaGVpZ2h0LWF0dHJp
YnV0ZXMtd2l0aG91dC1yZW5kZXJlci1sb2FkZWQtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC13aWR0aC1oZWlnaHQtYXR0cmlidXRlcy13aXRob3V0LXJl
bmRlcmVyLWxvYWRlZC1pbWFnZS1leHBlY3RlZC50eHQKaW5kZXggZjUzMDk1NGNiMjU0YmUyODVh
Y2RhODQzYTMxN2JmMDAzYTFmNWFlZC4uN2FjYmJkMzFiNTQ0ZjkxNDY3Yjk0NTAzZDBlNjY5Mzhh
ZWUyN2M0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC13aWR0aC1o
ZWlnaHQtYXR0cmlidXRlcy13aXRob3V0LXJlbmRlcmVyLWxvYWRlZC1pbWFnZS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC13aWR0aC1oZWlnaHQtYXR0cmli
dXRlcy13aXRob3V0LXJlbmRlcmVyLWxvYWRlZC1pbWFnZS1leHBlY3RlZC50eHQKQEAgLTEsNCAr
MSwzIEBACi0KIFBBU1MgZS53aWR0aCBpcyAxNgogUEFTUyBlLmhlaWdodCBpcyAxNgogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9t
L2RvbS1zdGF0aWMtcHJvcGVydHktZm9yLWluLWl0ZXJhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVj
dGVkLnR4dAppbmRleCAwNzZmMDljMzY1NDE5OTJmZWQ1MjAwMzMxODU1MWZiYTVkY2JmODQyLi45
YjhlMjdkMjNlMDBmMzIzNmJlOTIxMWZhZGY5YTU2M2M1ZTdjYmQ2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1mb3It
aW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtNDYsNiArNDYsNyBAQCBQQVNTIGFbImNvbnRl
bnRFZGl0YWJsZSJdIGlzIGluaGVyaXQKIFBBU1MgYVsiaXNDb250ZW50RWRpdGFibGUiXSBpcyBm
YWxzZQogUEFTUyBhWyJzcGVsbGNoZWNrIl0gaXMgdHJ1ZQogUEFTUyBhWyJkYXRhc2V0Il0gaXMg
W29iamVjdCBET01TdHJpbmdNYXBdCitQQVNTIGFbInN0eWxlIl0gaXMgW29iamVjdCBDU1NTdHls
ZURlY2xhcmF0aW9uXQogUEFTUyBhWyJvbmFib3J0Il0gaXMgbnVsbAogUEFTUyBhWyJvbmJsdXIi
XSBpcyBudWxsCiBQQVNTIGFbIm9uY2FucGxheSJdIGlzIG51bGwKQEAgLTExNCw3ICsxMTUsNiBA
QCBQQVNTIGFbImNsYXNzTGlzdCJdIGlzCiBQQVNTIGFbInNsb3QiXSBpcyAKIFBBU1MgYVsiYXR0
cmlidXRlcyJdIGlzIFtvYmplY3QgTmFtZWROb2RlTWFwXQogUEFTUyBhWyJzaGFkb3dSb290Il0g
aXMgbnVsbAotUEFTUyBhWyJzdHlsZSJdIGlzIFtvYmplY3QgQ1NTU3R5bGVEZWNsYXJhdGlvbl0K
IFBBU1MgYVsic2Nyb2xsVG9wIl0gaXMgMAogUEFTUyBhWyJzY3JvbGxMZWZ0Il0gaXMgMAogUEFT
UyBhWyJzY3JvbGxXaWR0aCJdIGlzIDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309343</attachid>
            <date>2017-05-07 21:35:35 -0700</date>
            <delta_ts>2017-05-08 08:48:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171795-20170507213533.patch</filename>
            <type>text/plain</type>
            <size>53974</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODI3ZWNkMjcxYmU2NDkz
ZjYyOGY4OWUyNTdjNGZlYzRjNjkyYjMzZS4uMzNmOTRlNTg4MWY0YjhkNmFlNDUxNzNiNjhjZDcw
NDdkNTRiOTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc1IEBACiAyMDE3LTA1LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSAnc3R5bGUnIGZyb20g
RWxlbWVudCB0byBIVE1MRWxlbWVudCAvIFNWR0VsZW1lbnQgYW5kIG1ha2UgaXQgc2V0dGFibGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTc5NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgJ3N0
eWxlJyBmcm9tIEVsZW1lbnQgdG8gSFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50IGFuZCBtYWtlIGl0
IHNldHRhYmxlCisgICAgICAgIGFzIHBlcjoKKyAgICAgICAgLSBodHRwczovL2RyYWZ0cy5jc3N3
Zy5vcmcvY3Nzb20vI3RoZS1lbGVtZW50Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCisKKyAgICAg
ICAgQm90aCBGaXJlZm94IGFuZCBDaHJvbWUgYWxyZWFkeSBtYXRjaCB0aGUgc3BlY2lmaWNhdGlv
biAoYm90aCBmb3IgdGhlCisgICAgICAgIHByb3BlcnR5IGxvY2F0aW9uIGFuZCBoYXZpbmcgaXQg
c2V0dGFibGUpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL0VsZW1lbnQtc3R5bGUuaHRtbAor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogY3NzL0VsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGw6IEFkZGVkLgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVu
c3VyZUNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxl
UHJvcGVydGllczo6ZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgICog
Y3NzL1N0eWxlUHJvcGVydGllcy5oOgorICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF0dHI6OnN0eWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24pOgorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50Ojpjc3NvbVN0eWxlKToKKyAgICAgICAgKiBk
b20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQpOgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBT
dHlsZVNwYW5JbmxpbmUpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorCisgICAg
ICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUlu
cHV0VHlwZTo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlSW5wdXRUeXBlOjp3aWR0
aCk6CisgICAgICAgIEZpeCBidWcgdGhhdCB3YXMgZm91bmQgYnkgZmFzdC9mb3Jtcy9pbnB1dC13
aWR0aC1oZWlnaHQtYXR0cmlidXRlcy13aXRob3V0LXJlbmRlcmVyLWxvYWRlZC1pbWFnZS5odG1s
LgorICAgICAgICBUaGF0IHRlc3QgcmVsaWVkIG9uIHNldHRpbmcgSFRNTEVsZW1lbnQuc3R5bGUg
d2hpY2ggZGlkIG5vdCB3b3JrIHVudGlsIG5vdy4gQ2FsbCB1cGRhdGVMYXlvdXQoKQorICAgICAg
ICAqYmVmb3JlKiBkb2luZyB0aGUgcmVuZGVyZXIgY2hlY2suCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNT
dHlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3R5bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZTo6SW5zcGVjdG9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmV4
dHJhY3RTb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzZXRU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6Omluc3BlY3RvclN0
eWxlRm9ySWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZv
cklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpkaWRNb2RpZnlF
bGVtZW50QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZTo6c2V0U3R5bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6ZW5zdXJlUGFyc2VkRGF0YVJlYWR5KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6aW5saW5lU3R5
bGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnQuaWRsOgorCisyMDE3LTA1LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKICAgICAgICAgRHJvcCByZW1haW5pbmcgdXNlcyBvZiBQYXNzUmVmUHRy
IGluIGVkaXRpbmcgY29kZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcxNzg3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxZTc5YTU3ZWExZDI4MzU0Mzdj
MGQ1YmUzN2UzMjRhZTdmYzg0OTRiLi4xYTdkYmRkZGFlZjA5NWU4YjVkYTk4Njg5ZGI3ZGRiZmMx
ZTQ5YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDUtMDcgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlICdzdHlsZScgZnJv
bSBFbGVtZW50IHRvIEhUTUxFbGVtZW50IC8gU1ZHRWxlbWVudCBhbmQgbWFrZSBpdCBzZXR0YWJs
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNzk1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQg
Zml4LgorCisgICAgICAgICogRE9NL0RPTUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUVsZW1l
bnQgc3R5bGVdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06
CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUpOgorICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF90eXBpbmdTdHlsZV0p
OgorCiAyMDE3LTA1LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWxpZ24gb3VyIElETCBmaWxlcyB3aXRoIHRoZSBsYXRlc3QgRE9NIHNwZWNpZmljYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzMDZmM2FjNDdjZjYzYzczMDBiNGE5ZDI4MTRiMTMxODI1MWUzNmJhLi42
MjA2NjgxNjMwMzI3ZDMwMTRlNGIzMzE5MjdjNzk4YWI5ODIxYjJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTctMDUtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlICdzdHlsZScgZnJvbSBFbGVtZW50IHRvIEhUTUxFbGVtZW50IC8gU1ZH
RWxlbWVudCBhbmQgbWFrZSBpdCBzZXR0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNzk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJF
ZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUpOgorCiAyMDE3LTA1LTA3ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIHIyMTYxOTcg
Y2F1c2VkIHNvbWUgd2VicnRjIHRlc3RzIHRvIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MDIwZWU0MjRlZmFkOWJiZWZjN2JhNmFjNmE0NjMzNGUxMTYxMjc0Mi4uYjE5OGQ3N2M2ZmJlZjcz
OGQyZDBhYTcwZjRhMGNlMzhjOGY1OGFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTM4Nyw2
ICszODcsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGNzcy9EZXByZWNh
dGVkQ1NTT01WYWx1ZS5pZGwKICAgICBjc3MvRGVwcmVjYXRlZENTU09NVmFsdWVMaXN0LmlkbAog
ICAgIGNzcy9ET01DU1NOYW1lc3BhY2UuaWRsCisgICAgY3NzL0VsZW1lbnRDU1NJbmxpbmVTdHls
ZS5pZGwKICAgICBjc3MvRm9udEZhY2UuaWRsCiAgICAgY3NzL0ZvbnRGYWNlU2V0LmlkbAogICAg
IGNzcy9NZWRpYUxpc3QuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAwYWNk
MjljMTNkMzYwNGMyZWZkNmY3NzgzYzRhMmY5YzY4ZmZlMTFhLi4wYTQ1MjZiYzdiZDVlYmYwMzRj
OThiMDY0MGJiMDRiZjUyOTI2NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTMyMyw2ICszMjMsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAJJChXZWJDb3JlKS9jc3MvRGVw
cmVjYXRlZENTU09NVmFsdWUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9EZXByZWNhdGVkQ1NT
T01WYWx1ZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9ET01DU1NOYW1lc3BhY2UuaWRs
IFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsIFwKICAgICAk
KFdlYkNvcmUpL2Nzcy9Gb250RmFjZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0ZvbnRGYWNl
U2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvTWVkaWFMaXN0LmlkbCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWJlNmFm
YTRlZmI4Y2Y0NTQxZDRjOGJmNzhkYmNkMjcyNWYyZmYxMS4uNGU2NGVkMTg1ZWE1YmVlMjNiMDYx
ZTBmZmI5ZGNjMmU4NTcxNTQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEzOTIsNiArMTEzOTIsNyBAQAogCQk4Mzc2NUY5
NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTW91c2VFdmVudEluaXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3NkaWN0
OyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
c2RpY3Q7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAw
RDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4MzdERkIzNDFFQkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGlu
ZVN0eWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbGVtZW50Q1NTSW5saW5lU3R5bGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzg2QTk2QzE5RjYxQjJFMDBFMUVD
NEEgLyogU3R5bGVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
eWxlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzg2QTk2RTE5RjYx
RTRGMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzODg2NzM0MUQxM0JBNTkwMDM2OTdEMCAvKiBSZW5kZXJPYmplY3RFbnVtcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJPYmplY3RFbnVtcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ5OTYsNiArMjQ5OTcsNyBAQAogCQkJCUZENjc3NzM1
MTk1Q0FCMjAwMDcyRTBEMyAvKiBET01DU1NOYW1lc3BhY2UuY3BwICovLAogCQkJCUZDOUEwRjcy
MTY0MDk0Q0YwMDNENkI4RCAvKiBET01DU1NOYW1lc3BhY2UuaCAqLywKIAkJCQlGQzlBMEY3MzE2
NDA5NENGMDAzRDZCOEQgLyogRE9NQ1NTTmFtZXNwYWNlLmlkbCAqLywKKwkJCQk4MzdERkIzNDFF
QkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCAqLywKIAkJCQlGQkRC
NjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwICovLAogCQkJ
CUZCREI2MTlFMTZENjAzNjUwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5oICovLAog
CQkJCTFDNjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5jcHAgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmZTcy
Mzk2ZjYwMzgxMDIzYzRiMWRhNzg4ZDA1ZDY3MjVkMzYyMjQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbApAQCAtMCwwICsxLDMy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLy8gQ1NTT00gZXh0ZW5zaW9ucyB0byBIVE1MRWxlbWVudCAvIFNW
R0VsZW1lbnQ6CisvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3RoZS1lbGVtZW50
Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCitbCisgICAgTm9JbnRlcmZhY2VPYmplY3QsCitdIGlu
dGVyZmFjZSBFbGVtZW50Q1NTSW5saW5lU3R5bGUgeworICAgIFtJbXBsZW1lbnRlZEFzPWNzc29t
U3R5bGUsIFB1dEZvcndhcmRzPWNzc1RleHRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHlsZURl
Y2xhcmF0aW9uIHN0eWxlOyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4KK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
LmgKaW5kZXggNTY0Y2IxZGEyM2I1YmJhMjUwM2JkNTAxNjJmYWJiYWMxYzY4YWJmOS4uODY0ZDky
NGRlZGFhMWUzNDVlZjM3NTY1ZmY1YmFhMmM2NWIyZTE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaApAQCAtMTE3LDkgKzEx
Nyw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24gZmluYWwg
OiBwdWJsaWMgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBJ
bmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHByb3BlcnR5
U2V0LCBTdHlsZWRFbGVtZW50KiBwYXJlbnRFbGVtZW50KQorICAgIElubGluZUNTU1N0eWxlRGVj
bGFyYXRpb24oTXV0YWJsZVN0eWxlUHJvcGVydGllcyogcHJvcGVydHlTZXQsIFN0eWxlZEVsZW1l
bnQmIHBhcmVudEVsZW1lbnQpCiAgICAgICAgIDogUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uKHByb3BlcnR5U2V0KQotICAgICAgICAsIG1fcGFyZW50RWxlbWVudChwYXJlbnRFbGVtZW50
KSAKKyAgICAgICAgLCBtX3BhcmVudEVsZW1lbnQoJnBhcmVudEVsZW1lbnQpCiAgICAgewogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCBhM2ExMGE2N2Zk
YjFlMDQwY2Y4NWNjZGM3MjRmZjAxMmEwZTU4OWIyLi4xMDA5M2E3YWE3NzEzMGIwNzJmNWE4NDhm
Yzk3NDk3ZjVlNzVmMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApA
QCAtMTMyNSwyNSArMTMyNSwyNSBAQCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24qIE11
dGFibGVTdHlsZVByb3BlcnRpZXM6OmNzc1N0eWxlRGVjbGFyYXRpb24oKQogICAgIHJldHVybiBt
X2Nzc29tV3JhcHBlci5nZXQoKTsKIH0KIAotQ1NTU3R5bGVEZWNsYXJhdGlvbiogTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpCitDU1NTdHlsZURlY2xh
cmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9u
KCkKIHsKICAgICBpZiAobV9jc3NvbVdyYXBwZXIpIHsKICAgICAgICAgQVNTRVJUKCFzdGF0aWNf
Y2FzdDxDU1NTdHlsZURlY2xhcmF0aW9uKj4obV9jc3NvbVdyYXBwZXIuZ2V0KCkpLT5wYXJlbnRS
dWxlKCkpOwogICAgICAgICBBU1NFUlQoIW1fY3Nzb21XcmFwcGVyLT5wYXJlbnRFbGVtZW50KCkp
OwotICAgICAgICByZXR1cm4gbV9jc3NvbVdyYXBwZXIuZ2V0KCk7CisgICAgICAgIHJldHVybiAq
bV9jc3NvbVdyYXBwZXI7CiAgICAgfQogICAgIG1fY3Nzb21XcmFwcGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KHRoaXMpOwotICAgIHJldHVybiBt
X2Nzc29tV3JhcHBlci5nZXQoKTsKKyAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCi1D
U1NTdHlsZURlY2xhcmF0aW9uKiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVD
U1NTdHlsZURlY2xhcmF0aW9uKFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpCitDU1NTdHls
ZURlY2xhcmF0aW9uJiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHls
ZURlY2xhcmF0aW9uKFN0eWxlZEVsZW1lbnQmIHBhcmVudEVsZW1lbnQpCiB7CiAgICAgaWYgKG1f
Y3Nzb21XcmFwcGVyKSB7Ci0gICAgICAgIEFTU0VSVChtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxl
bWVudCgpID09IHBhcmVudEVsZW1lbnQpOwotICAgICAgICByZXR1cm4gbV9jc3NvbVdyYXBwZXIu
Z2V0KCk7CisgICAgICAgIEFTU0VSVChtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgpID09
ICZwYXJlbnRFbGVtZW50KTsKKyAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9
CiAgICAgbV9jc3NvbVdyYXBwZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUNTU1N0eWxlRGVj
bGFyYXRpb24+KHRoaXMsIHBhcmVudEVsZW1lbnQpOwotICAgIHJldHVybiBtX2Nzc29tV3JhcHBl
ci5nZXQoKTsKKyAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCiB1bnNpZ25lZCBTdHls
ZVByb3BlcnRpZXM6OmF2ZXJhZ2VTaXplSW5CeXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmgKaW5kZXggZmQ5ZmNhMzAyZTM2ODlhNGVmN2RjOGExYTc3OGVmNjkxZTU5ZGZlNC4u
MDZkMTVkZjYxZGNhYTljMzM1NWI3NjI3OTFhZTE3NzhmOWFlM2RjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVByb3BlcnRpZXMuaApAQCAtMjM2LDggKzIzNiw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyKCk7CiAgICAgYm9vbCBwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVE
ZWNsYXJhdGlvbiwgQ1NTUGFyc2VyQ29udGV4dCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBDU1NT
dHlsZURlY2xhcmF0aW9uKiBlbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7Ci0gICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiogZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihTdHlsZWRFbGVt
ZW50KiBwYXJlbnRFbGVtZW50KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBDU1NTdHlsZURlY2xhcmF0
aW9uJiBlbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlv
biYgZW5zdXJlSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihTdHlsZWRFbGVtZW50JiBwYXJlbnRF
bGVtZW50KTsKIAogICAgIGludCBmaW5kUHJvcGVydHlJbmRleChDU1NQcm9wZXJ0eUlEKSBjb25z
dDsKICAgICBpbnQgZmluZEN1c3RvbVByb3BlcnR5SW5kZXgoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCmluZGV4IGYwNDVmYzgyYmU4YTAyMDlhYTlmODIx
Zjc3ZTk5YmI3MTk0OTFmYTkuLjBhNGRjNDg5NTk3NGM0YmYyYWQyYmYyNGE0MmQ5YzFjNzZkYzM3
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBDU1NTdHlsZURlY2xhcmF0
aW9uKiBBdHRyOjpzdHlsZSgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIG1fc3R5bGUg
PSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBkb3duY2FzdDxTdHlsZWRF
bGVtZW50PigqbV9lbGVtZW50KS5jb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
cXVhbGlmaWVkTmFtZSgpLCB2YWx1ZSgpLCAqbV9zdHlsZSk7Ci0gICAgcmV0dXJuIG1fc3R5bGUt
PmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKKyAgICByZXR1cm4gJm1fc3R5bGUtPmVuc3Vy
ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBBdHRyOjp2
YWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1MDcxYmVhZjdhNWY5MmVl
NzMxNzM2MjVkYTc3ODgwMTNjMWM4MTFhLi5jYTI1ZmNhYmNkOGM2ZjJjNGZkM2M2MDg0NTVmM2Qy
YTQ2YTU1NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTkyNyw3ICs5MjcsNyBAQCBS
ZWY8VGV4dD4gRG9jdW1lbnQ6OmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZShjb25zdCBTdHJpbmcmIHRl
eHQpCiBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gRG9jdW1lbnQ6OmNyZWF0ZUNTU1N0eWxlRGVj
bGFyYXRpb24oKQogewogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBwcm9wZXJ0eVNl
dChNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKSk7Ci0gICAgcmV0dXJuICpwcm9wZXJ0
eVNldC0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOworICAgIHJldHVybiBwcm9wZXJ0eVNl
dC0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8Tm9k
ZT4+IERvY3VtZW50OjppbXBvcnROb2RlKE5vZGUmIG5vZGVUb0ltcG9ydCwgYm9vbCBkZWVwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDFmY2VkYTFjMTczNDJlZDQ1Njc0OTk2ZDM1NmZiY2Yz
Mzc4OTA5YjUuLmVjN2QxODRmYzJiM2UzYmMzN2RmZTdhYWU1ZTJjYWQxMTNkMTRhODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTIzNjcsMTEgKzIzNjcsNiBAQCBib29sIEVsZW1lbnQ6Omhh
c0F0dHJpYnV0ZU5TKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9t
aWNTdHJpbgogICAgIHJldHVybiBlbGVtZW50RGF0YSgpLT5maW5kQXR0cmlidXRlQnlOYW1lKHFO
YW1lKTsKIH0KIAotQ1NTU3R5bGVEZWNsYXJhdGlvbiogRWxlbWVudDo6Y3Nzb21TdHlsZSgpCi17
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIHZvaWQgRWxlbWVudDo6Zm9jdXMoYm9vbCByZXN0
b3JlUHJldmlvdXNTZWxlY3Rpb24sIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBp
ZiAoIWlzQ29ubmVjdGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA1NmZhZGI0MzZlM2YwNmIx
NjVkNjM5NmZiODQ2ZTlmM2I1MmFlNTY2Li45NDE0NjliNTE3MTA1ZDc4MWM5ZDI2NDllNjAxYTE4
ZDVlMWI0Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTE5Nyw4ICsxOTcsNiBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEF0dHI+PiYgYXR0ck5vZGVMaXN0KCk7CiAKLSAg
ICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIGNzc29tU3R5bGUoKTsKLQogICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YWdOYW1lOyB9CiAj
aWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgcHRyZGlmZl90IHRhZ1FOYW1lTWVtb3J5T2Zmc2V0
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEVsZW1lbnQsIG1fdGFnTmFtZSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmlkbAppbmRleCA0NGQ0OGIzODA3MzkxNzM5NTY1MTYxNDc4OTQwN2MwZTA1YzUx
YWQzLi45ZTYwYjllYjI5MThjMDdlZjU2MzRjNGZkZDk4MmUwM2Q3ZTIwOTJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCkBAIC02NiwxMCArNjYsNiBAQAogICAgIFtDRVJlYWN0aW9ucywgTWF5VGhy
b3dFeGNlcHRpb25dIEVsZW1lbnQ/IGluc2VydEFkamFjZW50RWxlbWVudChET01TdHJpbmcgd2hl
cmUsIEVsZW1lbnQgZWxlbWVudCk7IC8vIEhpc3RvcmljYWwuCiAgICAgW01heVRocm93RXhjZXB0
aW9uXSB2b2lkIGluc2VydEFkamFjZW50VGV4dChET01TdHJpbmcgd2hlcmUsIERPTVN0cmluZyBk
YXRhKTsgLy8gSGlzdG9yaWNhbC4KIAotICAgIC8vIEZJWE1FOiBTaG91bGQgYmUgaW4gYSBzZXBh
cmF0ZSBFbGVtZW50Q1NTSW5saW5lU3R5bGUgYW5kIGltcGxlbWVudGVkIGJ5IEhUTUxFbGVtZW50
IC8gU1ZHRWxlbWVudC4KLSAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Ro
ZS1lbGVtZW50Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCi0gICAgW0ltcGxlbWVudGVkQXM9Y3Nz
b21TdHlsZV0gcmVhZG9ubHkgYXR0cmlidXRlIENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7IC8v
IEZJWE1FOiBTaG91bGQgYmUgW1NhbWVPYmplY3QsIFB1dEZvcndhcmRzPWNzc1RleHRdLgotCiAg
ICAgLy8gQ1NTT00tdmlldyBleHRlbnNpb25zIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
b20tdmlldy8jZXh0ZW5zaW9uLXRvLXRoZS1lbGVtZW50LWludGVyZmFjZSkuCiAgICAgc2VxdWVu
Y2U8RE9NUmVjdD4gZ2V0Q2xpZW50UmVjdHMoKTsKICAgICBbTmV3T2JqZWN0XSBET01SZWN0IGdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmlu
ZGV4IDJlZTk5OTdmZDA4OGY0YTk0MDc1MjFlN2IxOWNmMDJmNWVhZDBmMTYuLjJjYmU3OGU3YjUy
YTg4MjFjNmQ0MmRlZjlkMTJjYTkyZWJjNWNhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxl
bWVudC5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgU3R5bGVkRWxlbWVudDo6flN0eWxlZEVsZW1lbnQo
KQogICAgICAgICBjc3NvbVdyYXBwZXItPmNsZWFyUGFyZW50RWxlbWVudCgpOwogfQogCi1DU1NT
dHlsZURlY2xhcmF0aW9uKiBTdHlsZWRFbGVtZW50Ojpjc3NvbVN0eWxlKCkKK0NTU1N0eWxlRGVj
bGFyYXRpb24mIFN0eWxlZEVsZW1lbnQ6OmNzc29tU3R5bGUoKQogewotICAgIHJldHVybiBlbnN1
cmVNdXRhYmxlSW5saW5lU3R5bGUoKS5lbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKHRo
aXMpOworICAgIHJldHVybiBlbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUoKS5lbnN1cmVJbmxpbmVD
U1NTdHlsZURlY2xhcmF0aW9uKCp0aGlzKTsKIH0KIAogTXV0YWJsZVN0eWxlUHJvcGVydGllcyYg
U3R5bGVkRWxlbWVudDo6ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5
bGVkRWxlbWVudC5oCmluZGV4IDQ0MjA0MWNkNTA5OTU5NTE4ZjE3YTFmNjEwOGM2ODc0YWQzMTY0
NDQuLjMxYjhmYjMyNTlmYzhiODhiY2I3Y2I0YTcyMzJiZjExNmI2ZmY3ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgc3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKFN0eWxlZEVsZW1lbnQqKTsK
ICAgICB2b2lkIHN5bmNocm9uaXplU3R5bGVBdHRyaWJ1dGVJbnRlcm5hbCgpIGNvbnN0IHsgU3R5
bGVkRWxlbWVudDo6c3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKGNvbnN0X2Nhc3Q8
U3R5bGVkRWxlbWVudCo+KHRoaXMpKTsgfQogICAgIAotICAgIENTU1N0eWxlRGVjbGFyYXRpb24q
IGNzc29tU3R5bGUoKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBDU1NTdHlsZURlY2xhcmF0
aW9uJiBjc3NvbVN0eWxlKCk7CiAKICAgICBjb25zdCBTdHlsZVByb3BlcnRpZXMqIHByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCmluZGV4IDNiYzdmYzc3ZGU1ZjYwZjc0OTYwY2M5NGVjZjcxZTA5YzNjNTU3ZGEu
LjUyNTlkMzNhMWFjNWJjYzhiNGZmYTE1NzdkOTE0N2NkMTg1NjY4MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKQEAgLTMxMDMsMTAgKzMxMDMsMTAgQEAgdm9pZCBFZGl0b3I6OmFwcGx5
RWRpdGluZ1N0eWxlVG9FbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBnZXQg
dGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCi0gICAgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGUgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21TdHls
ZSgpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V29yZFdyYXAs
ICJicmVhay13b3JkIiwgZmFsc2UpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIsIGZhbHNlKTsKLSAgICBzdHlsZS0+c2V0
UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUxpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNl
IiwgZmFsc2UpOworICAgIGF1dG8mIHN0eWxlID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKmVs
ZW1lbnQpLmNzc29tU3R5bGUoKTsKKyAgICBzdHlsZS5zZXRQcm9wZXJ0eUludGVybmFsKENTU1By
b3BlcnR5V29yZFdyYXAsICJicmVhay13b3JkIiwgZmFsc2UpOworICAgIHN0eWxlLnNldFByb3Bl
cnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgInNwYWNlIiwgZmFsc2UpOwor
ICAgIHN0eWxlLnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlMaW5lQnJlYWssICJhZnRl
ci13aGl0ZS1zcGFjZSIsIGZhbHNlKTsKIH0KIAogYm9vbCBFZGl0b3I6OmZpbmRTdHJpbmcoY29u
c3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGE0ZTQ4NjM1
ODg3NGY3MjM0ODhkYjkyZDI4M2M1OTNmOThmOTAyZjcuLjI3MGY4NTA0MjA5NGMxZjM3YjZiN2Fi
YjQwMjYzOTcxNjE2ZTJlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC01NTYsOSArNTU2LDkgQEAgdm9pZCBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3Bhbklu
bGluZShJbnNlcnQKIAogICAgICAgICAgICAgLy8gTXV0YXRlIHVzaW5nIHRoZSBDU1NPTSB3cmFw
cGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBhIHNjcmlwdC4KICAgICAg
ICAgICAgIGlmIChpc0Jsb2NrKGVsZW1lbnQpKQotICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNz
c29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxp
bmUiLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNldFBy
b3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlEaXNwbGF5LCAiaW5saW5lIiwgZmFsc2UpOwogICAg
ICAgICAgICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkgJiYgZWxlbWVudC0+cmVuZGVyZXIoKS0+
c3R5bGUoKS5pc0Zsb2F0aW5nKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHls
ZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJub25lIiwgZmFsc2Up
OworICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS5zZXRQcm9wZXJ0eUludGVy
bmFsKENTU1Byb3BlcnR5RmxvYXQsICJub25lIiwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAppbmRleCBmZmQ3NjQxZTYwMzkwNWNmMjU1
ZTFkMWEzZTA3MGYxZjUzOWFiMTBhLi41OWE0NTA0NjcyNWI3MWUwNTYwYzJjNTdjNGUzMTZkZWEy
ZGQ5YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbApAQCAtNTcsNCArNTcsNSBA
QAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdNYXAgZGF0YXNldDsKIH07CiAKK0hU
TUxFbGVtZW50IGltcGxlbWVudHMgRWxlbWVudENTU0lubGluZVN0eWxlOwogSFRNTEVsZW1lbnQg
aW1wbGVtZW50cyBHbG9iYWxFdmVudEhhbmRsZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5w
dXRUeXBlLmNwcAppbmRleCBiMjExYmU5ZWU0ZjA1NGJiZTA3NWFlN2NkMmIyYzIxNjZhZjRkZTg4
Li5lOTRiMTc0MWU3YmQ4ODVkNTMyM2M4NjFiZmEyMWFlOTJjOTYwMDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcApAQCAtMTc3LDYgKzE3Nyw4IEBAIHVuc2lnbmVkIElt
YWdlSW5wdXRUeXBlOjpoZWlnaHQoKSBjb25zdAogewogICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50
PiBlbGVtZW50KHRoaXMtPmVsZW1lbnQoKSk7CiAKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLnVw
ZGF0ZUxheW91dCgpOworCiAgICAgaWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKSB7CiAgICAgICAg
IC8vIENoZWNrIHRoZSBhdHRyaWJ1dGUgZmlyc3QgZm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVl
LgogICAgICAgICBpZiAoYXV0byBvcHRpb25hbEhlaWdodCA9IHBhcnNlSFRNTE5vbk5lZ2F0aXZl
SW50ZWdlcihlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdodEF0
dHIpKSkKQEAgLTE4OCw4ICsxOTAsNiBAQCB1bnNpZ25lZCBJbWFnZUlucHV0VHlwZTo6aGVpZ2h0
KCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBpbWFnZUxvYWRlci0+aW1hZ2UoKS0+aW1hZ2VT
aXplRm9yUmVuZGVyZXIoZWxlbWVudC0+cmVuZGVyZXIoKSwgMSkuaGVpZ2h0KCkudG9VbnNpZ25l
ZCgpOwogICAgIH0KIAotICAgIGVsZW1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7Ci0K
ICAgICBSZW5kZXJCb3gqIGJveCA9IGVsZW1lbnQtPnJlbmRlckJveCgpOwogICAgIHJldHVybiBi
b3ggPyBhZGp1c3RGb3JBYnNvbHV0ZVpvb20oYm94LT5jb250ZW50SGVpZ2h0KCksICpib3gpIDog
MDsKIH0KQEAgLTE5OCw2ICsxOTgsOCBAQCB1bnNpZ25lZCBJbWFnZUlucHV0VHlwZTo6d2lkdGgo
KSBjb25zdAogewogICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBlbGVtZW50KHRoaXMtPmVsZW1l
bnQoKSk7CiAKKyAgICBlbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOworCiAgICAg
aWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKSB7CiAgICAgICAgIC8vIENoZWNrIHRoZSBhdHRyaWJ1
dGUgZmlyc3QgZm9yIGFuIGV4cGxpY2l0IHBpeGVsIHZhbHVlLgogICAgICAgICBpZiAoYXV0byBv
cHRpb25hbFdpZHRoID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGVsZW1lbnQtPmF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSkpCkBAIC0yMDksOCArMjExLDYg
QEAgdW5zaWduZWQgSW1hZ2VJbnB1dFR5cGU6OndpZHRoKCkgY29uc3QKICAgICAgICAgICAgIHJl
dHVybiBpbWFnZUxvYWRlci0+aW1hZ2UoKS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIoZWxlbWVudC0+
cmVuZGVyZXIoKSwgMSkud2lkdGgoKS50b1Vuc2lnbmVkKCk7CiAgICAgfQogCi0gICAgZWxlbWVu
dC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKLQogICAgIFJlbmRlckJveCogYm94ID0gZWxl
bWVudC0+cmVuZGVyQm94KCk7CiAgICAgcmV0dXJuIGJveCA/IGFkanVzdEZvckFic29sdXRlWm9v
bShib3gtPmNvbnRlbnRXaWR0aCgpLCAqYm94KSA6IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA3YzE5OTJmMmFiYmI0NzNiY2Q2
Nzk4ZWYzOTFmYmQ0NDNiZDVhNWI0Li5hN2MxM2I4NTA4ZjZlZjEyMGI5MzFiNjM3NzgyOTJhNzNl
Zjg5MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKQEAgLTYwNiw5ICs2MDYsOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRj
aGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogICAgICAg
ICAgICAgICAgIGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkluaGVyaXRl
ZFN0eWxlRW50cnk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NT
UnVsZXMoYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMsIHN0
eWxlUmVzb2x2ZXIsICpwYXJlbnRFbGVtZW50LCBOT1BTRVVETykpCiAgICAgICAgICAgICAgICAg
ICAgIC5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQtPmNzc29t
U3R5bGUoKSAmJiBwYXJlbnRFbGVtZW50LT5jc3NvbVN0eWxlKCktPmxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUqIHN0
eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQocGFyZW50RWxlbWVudCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBlbnRyeS0+c2V0SW5saW5lU3R5bGUoc3R5bGVTaGVldC0+YnVpbGRP
YmplY3RGb3JTdHlsZShzdHlsZVNoZWV0LT5zdHlsZUZvcklkKEluc3BlY3RvckNTU0lkKHN0eWxl
U2hlZXQtPmlkKCksIDApKSkpOworICAgICAgICAgICAgICAgIGlmIChpczxTdHlsZWRFbGVtZW50
PigqcGFyZW50RWxlbWVudCkgJiYgZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1l
bnQpLmNzc29tU3R5bGUoKS5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBz
dHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+
KCpwYXJlbnRFbGVtZW50KSk7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zZXRJbmxpbmVT
dHlsZShzdHlsZVNoZWV0LmJ1aWxkT2JqZWN0Rm9yU3R5bGUoc3R5bGVTaGVldC5zdHlsZUZvcklk
KEluc3BlY3RvckNTU0lkKHN0eWxlU2hlZXQuaWQoKSwgMCkpKSk7CiAgICAgICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAgICAgZW50cmllcy0+YWRkSXRlbShXVEZNb3ZlKGVudHJ5KSk7CkBA
IC02MjIsMTYgKzYyMiwxNCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5
bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogCiB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+JiBhdHRyaWJ1dGVzU3R5bGUpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRG
b3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsKLSAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogc3R5bGVTaGVl
dCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChlbGVtZW50KTsKLSAgICBpZiAoIXN0eWxlU2hlZXQp
CisgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9kZUlkKTsK
KyAgICBpZiAoIWlzPFN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpbmxpbmVTdHlsZSA9IHN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoZWxlbWVu
dC0+Y3Nzb21TdHlsZSgpKTsKLSAgICBpZiAoYXV0byBhdHRyaWJ1dGVzID0gYnVpbGRPYmplY3RG
b3JBdHRyaWJ1dGVzU3R5bGUoZWxlbWVudCkpCisgICAgYXV0byYgc3R5bGVkRWxlbWVudCA9IGRv
d25jYXN0PFN0eWxlZEVsZW1lbnQ+KCplbGVtZW50KTsKKyAgICBhdXRvJiBzdHlsZVNoZWV0ID0g
YXNJbnNwZWN0b3JTdHlsZVNoZWV0KHN0eWxlZEVsZW1lbnQpOworICAgIGlubGluZVN0eWxlID0g
c3R5bGVTaGVldC5idWlsZE9iamVjdEZvclN0eWxlKCZzdHlsZWRFbGVtZW50LmNzc29tU3R5bGUo
KSk7CisgICAgaWYgKGF1dG8gYXR0cmlidXRlcyA9IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0
eWxlKHN0eWxlZEVsZW1lbnQpKQogICAgICAgICBhdHRyaWJ1dGVzU3R5bGUgPSBXVEZNb3ZlKGF0
dHJpYnV0ZXMpOwogICAgIGVsc2UKICAgICAgICAgYXR0cmlidXRlc1N0eWxlID0gbnVsbHB0cjsK
QEAgLTYzOSwxMiArNjM3LDEyIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kCiAKIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mIHN0eWxl
KQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5v
ZGVJZCk7CisgICAgYXV0byogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywgbm9k
ZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVJbmZvID0gQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKmVsZW1lbnQsIHRydWUpOwotICAgIFJlZjxJbnNw
ZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3Bl
Y3RvckNTU0lkKCksIGNvbXB1dGVkU3R5bGVJbmZvLCBudWxscHRyKTsKKyAgICBhdXRvIGNvbXB1
dGVkU3R5bGVJbmZvID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKmVsZW1l
bnQsIHRydWUpOworICAgIGF1dG8gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3Jl
YXRlKEluc3BlY3RvckNTU0lkKCksIFdURk1vdmUoY29tcHV0ZWRTdHlsZUluZm8pLCBudWxscHRy
KTsKICAgICBzdHlsZSA9IGluc3BlY3RvclN0eWxlLT5idWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHls
ZSgpOwogfQogCkBAIC05MjAsMjIgKzkxOCwxOSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpn
ZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGRvYwog
ICAgIHJlc3VsdCA9IFdURk1vdmUobmFtZWRGbG93cyk7CiB9CiAKLUluc3BlY3RvclN0eWxlU2hl
ZXRGb3JJbmxpbmVTdHlsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVl
dChFbGVtZW50KiBlbGVtZW50KQorSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlJiBJ
bnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KFN0eWxlZEVsZW1lbnQmIGVs
ZW1lbnQpCiB7Ci0gICAgTm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldDo6aXRlcmF0b3IgaXQgPSBt
X25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZmluZChlbGVtZW50KTsKKyAgICBhdXRvIGl0ID0g
bV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmZpbmQoJmVsZW1lbnQpOwogICAgIGlmIChpdCA9
PSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZW5kKCkpIHsKLSAgICAgICAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUgPSBlbGVtZW50LT5jc3NvbVN0eWxlKCk7Ci0gICAgICAgIGlmICgh
c3R5bGUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQogICAgICAgICBTdHJpbmcgbmV3
U3R5bGVTaGVldElkID0gU3RyaW5nOjpudW1iZXIobV9sYXN0U3R5bGVTaGVldElkKyspOwotICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBpbnNwZWN0b3JT
dHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUobV9k
b21BZ2VudC0+cGFnZUFnZW50KCksIG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyLCB0aGlzKTsKLSAgICAg
ICAgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5zZXQobmV3U3R5bGVTaGVldElkLCBpbnNwZWN0
b3JTdHlsZVNoZWV0KTsKLSAgICAgICAgbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChl
bGVtZW50LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKLSAgICAgICAgcmV0dXJuIGluc3BlY3RvclN0
eWxlU2hlZXQuZ2V0KCk7CisgICAgICAgIGF1dG8gaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2Vu
dCgpLCBuZXdTdHlsZVNoZWV0SWQsIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhciwgdGhpcyk7CisgICAgICAgIGF1dG8mIGluc3BlY3Rv
clN0eWxlU2hlZXRSZWYgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LmdldCgpOworICAgICAgICBtX2lk
VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChuZXdTdHlsZVNoZWV0SWQsIGluc3BlY3RvclN0eWxl
U2hlZXQuY29weVJlZigpKTsKKyAgICAgICAgbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNl
dCgmZWxlbWVudCwgV1RGTW92ZShpbnNwZWN0b3JTdHlsZVNoZWV0KSk7CisgICAgICAgIHJldHVy
biBpbnNwZWN0b3JTdHlsZVNoZWV0UmVmOwogICAgIH0KIAotICAgIHJldHVybiBpdC0+dmFsdWUu
Z2V0KCk7CisgICAgcmV0dXJuICppdC0+dmFsdWU7CiB9CiAKIEVsZW1lbnQqIEluc3BlY3RvckNT
U0FnZW50OjplbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
KQpAQCAtMTA4NSwyMSArMTA4MCwxNSBAQCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBJbnNwZWN0bwogICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKLVJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpD
U1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVz
U3R5bGUoRWxlbWVudCogZWxlbWVudCkKK1JlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5
bGUoU3R5bGVkRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBBU1NFUlQoZWxlbWVudCk7Ci0gICAg
aWYgKCFpczxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCiAgICAgLy8gRklYTUU6IFVnbGluZXNzIGJlbG93LgotICAgIFN0eWxlUHJvcGVydGllcyog
YXR0cmlidXRlU3R5bGUgPSBjb25zdF9jYXN0PFN0eWxlUHJvcGVydGllcyo+KGRvd25jYXN0PFN0
eWxlZEVsZW1lbnQ+KGVsZW1lbnQpLT5wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpKTsKKyAg
ICBhdXRvKiBhdHRyaWJ1dGVTdHlsZSA9IGNvbnN0X2Nhc3Q8U3R5bGVQcm9wZXJ0aWVzKj4oZWxl
bWVudC5wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpKTsKICAgICBpZiAoIWF0dHJpYnV0ZVN0
eWxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGF0dHJpYnV0ZVN0eWxlLT5pc011dGFibGUoKSk7Ci0gICAgTXV0YWJsZVN0
eWxlUHJvcGVydGllcyogbXV0YWJsZUF0dHJpYnV0ZVN0eWxlID0gc3RhdGljX2Nhc3Q8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcyo+KGF0dHJpYnV0ZVN0eWxlKTsKLQotICAgIFJlZjxJbnNwZWN0b3JT
dHlsZT4gaW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNT
U0lkKCksIG11dGFibGVBdHRyaWJ1dGVTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigp
LCBudWxscHRyKTsKKyAgICBhdXRvJiBtdXRhYmxlQXR0cmlidXRlU3R5bGUgPSBkb3duY2FzdDxN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzPigqYXR0cmlidXRlU3R5bGUpOworICAgIGF1dG8gaW5zcGVj
dG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKCksIG11dGFi
bGVBdHRyaWJ1dGVTdHlsZS5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCksIG51bGxwdHIpOwog
ICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDc4ZWJj
YTdhMDljYWFmZWMwNDYyNDY3NzMwN2I2ODUxZjdlYjBiMjkuLjY4NzcwMGE3ZWRjYjQ3NmIzZTVh
YjY2MThiM2ZiZjI3MTgxZjVmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVm
IEhhc2hNYXA8aW50LCB1bnNpZ25lZD4gTm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZTsKIAogICAg
IHZvaWQgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwotICAgIEluc3BlY3RvclN0eWxlU2hlZXRG
b3JJbmxpbmVTdHlsZSogYXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVsZW1lbnQqIGVsZW1lbnQpOwor
ICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgYXNJbnNwZWN0b3JTdHlsZVNo
ZWV0KFN0eWxlZEVsZW1lbnQmKTsKICAgICBFbGVtZW50KiBlbGVtZW50Rm9ySWQoRXJyb3JTdHJp
bmcmLCBpbnQgbm9kZUlkKTsKICAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dz
SWQoRG9jdW1lbnQqKTsKIApAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKFN0
eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Jik7CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVs
ZSopOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Jiwg
UHNldWRvSWQpOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxl
PiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50Kik7CisgICAgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRl
c1N0eWxlKFN0eWxlZEVsZW1lbnQmKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5Rm9yUmVn
aW9ucyhFcnJvclN0cmluZyYsIFJlZlB0cjxOb2RlTGlzdD4mJiwgaW50IGRvY3VtZW50Tm9kZUlk
KTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+IGJ1aWxk
T2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nJiwgV2ViS2l0TmFtZWRGbG93KiwgaW50IGRv
Y3VtZW50Tm9kZUlkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCmluZGV4IDZiMGE4ZWU3YmEyY2ZkODg4ZTQ5MDU2N2NhYTRmMTg3Njdk
MzM5NWEuLjYzYzQ0OGRjNTQxMTNjOWE3MjFmYmE2NzRmYTBhMjQ3N2ZmYjVhMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTUx
OCwxNyArNTE4LDE2IEBAIHN0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxlKiBy
dWxlLCBBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTCiAgICAgfQogfQogCi1SZWY8
SW5zcGVjdG9yU3R5bGU+IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoY29uc3QgSW5zcGVjdG9yQ1NT
SWQmIHN0eWxlSWQsIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJbnNwZWN0
b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KQorUmVmPEluc3BlY3RvclN0eWxlPiBJbnNw
ZWN0b3JTdHlsZTo6Y3JlYXRlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NT
U3R5bGVEZWNsYXJhdGlvbj4mJiBzdHlsZSwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5
bGVTaGVldCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JTdHlsZShzdHls
ZUlkLCBXVEZNb3ZlKHN0eWxlKSwgcGFyZW50U3R5bGVTaGVldCkpOwogfQogCi1JbnNwZWN0b3JT
dHlsZTo6SW5zcGVjdG9yU3R5bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFJlZlB0
cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJl
bnRTdHlsZVNoZWV0KQorSW5zcGVjdG9yU3R5bGU6Okluc3BlY3RvclN0eWxlKGNvbnN0IEluc3Bl
Y3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiBzdHlsZSwgSW5z
cGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCkKICAgICA6IG1fc3R5bGVJZChzdHls
ZUlkKQotICAgICwgbV9zdHlsZShzdHlsZSkKKyAgICAsIG1fc3R5bGUoV1RGTW92ZShzdHlsZSkp
CiAgICAgLCBtX3BhcmVudFN0eWxlU2hlZXQocGFyZW50U3R5bGVTaGVldCkKIHsKLSAgICBBU1NF
UlQobV9zdHlsZSk7CiB9CiAKIEluc3BlY3RvclN0eWxlOjp+SW5zcGVjdG9yU3R5bGUoKQpAQCAt
NzQ1LDEyICs3NDQsMTIgQEAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBJbnNwZWN0b3JTdHls
ZTo6ZXh0cmFjdFNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9wYXJlbnRTdHlsZVNo
ZWV0IHx8ICFtX3BhcmVudFN0eWxlU2hlZXQtPmVuc3VyZVBhcnNlZERhdGFSZWFkeSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0LT5ydWxl
U291cmNlRGF0YUZvcihtX3N0eWxlLmdldCgpKTsKKyAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNo
ZWV0LT5ydWxlU291cmNlRGF0YUZvcihtX3N0eWxlLnB0cigpKTsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gSW5zcGVjdG9yU3R5bGU6OnNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAg
IHJldHVybiBtX3BhcmVudFN0eWxlU2hlZXQtPnNldFN0eWxlVGV4dChtX3N0eWxlLmdldCgpLCB0
ZXh0KTsKKyAgICByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0LT5zZXRTdHlsZVRleHQobV9zdHls
ZS5wdHIoKSwgdGV4dCk7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JTdHlsZTo6c2hvcnRoYW5kVmFs
dWUoY29uc3QgU3RyaW5nJiBzaG9ydGhhbmRQcm9wZXJ0eSkgY29uc3QKQEAgLTEyNTcsNyArMTI1
Niw3IEBAIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6aW5zcGVj
dG9yU3R5bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDCiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShpZCwg
c3R5bGUsIHRoaXMpOworICAgIHJldHVybiBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKGlkLCAqc3R5
bGUsIHRoaXMpOwogfQogCiBJbnNwZWN0b3JDU1NJZCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxl
T3JTdHlsZUlkKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdApAQCAtMTQ3MiwyNiAr
MTQ3MSwyNSBAQCB2b2lkIEluc3BlY3RvclN0eWxlU2hlZXQ6OmNvbGxlY3RGbGF0UnVsZXMoUmVm
UHRyPENTU1J1bGVMaXN0PiYmIHJ1bGVMaXN0LCBDU1NTdAogICAgIH0KIH0KIAotUmVmPEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK1JlZjxJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZTo6Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJp
bmcmIGlkLCBSZWY8U3R5bGVkRWxlbWVudD4mJiBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
KHBhZ2VBZ2VudCwgaWQsIFdURk1vdmUoZWxlbWVudCksIG9yaWdpbiwgbGlzdGVuZXIpKTsKIH0K
IAotSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKK0luc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBTdHJpbmcmIGlkLCBSZWY8
U3R5bGVkRWxlbWVudD4mJiBlbGVtZW50LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxl
U2hlZXRPcmlnaW4gb3JpZ2luLCBMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgOiBJbnNwZWN0b3JT
dHlsZVNoZWV0KHBhZ2VBZ2VudCwgaWQsIG51bGxwdHIsIG9yaWdpbiwgU3RyaW5nKCksIGxpc3Rl
bmVyKQogICAgICwgbV9lbGVtZW50KFdURk1vdmUoZWxlbWVudCkpCiAgICAgLCBtX3J1bGVTb3Vy
Y2VEYXRhKG51bGxwdHIpCiAgICAgLCBtX2lzU3R5bGVUZXh0VmFsaWQoZmFsc2UpCiB7Ci0gICAg
QVNTRVJUKG1fZWxlbWVudCk7CiAgICAgbV9pbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxl
OjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoaWQsIDApLCBpbmxpbmVTdHlsZSgpLCB0aGlzKTsKLSAg
ICBtX3N0eWxlVGV4dCA9IG1fZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkgPyBtX2VsZW1lbnQt
PmdldEF0dHJpYnV0ZSgic3R5bGUiKS5zdHJpbmcoKSA6IFN0cmluZygpOworICAgIG1fc3R5bGVU
ZXh0ID0gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUoInN0eWxlIikuc3RyaW5nKCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpkaWRNb2RpZnlFbGVtZW50QXR0
cmlidXRlKCkKIHsKICAgICBtX2lzU3R5bGVUZXh0VmFsaWQgPSBmYWxzZTsKLSAgICBpZiAobV9l
bGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAmJiBtX2VsZW1lbnQtPmNzc29tU3R5bGUoKSAhPSBt
X2luc3BlY3RvclN0eWxlLT5jc3NTdHlsZSgpKQorICAgIGlmICgmbV9lbGVtZW50LT5jc3NvbVN0
eWxlKCkgIT0gJm1faW5zcGVjdG9yU3R5bGUtPmNzc1N0eWxlKCkpCiAgICAgICAgIG1faW5zcGVj
dG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKGlkKCksIDAp
LCBpbmxpbmVTdHlsZSgpLCB0aGlzKTsKICAgICBtX3J1bGVTb3VyY2VEYXRhID0gbnVsbHB0cjsK
IH0KQEAgLTE1MDcsNyArMTUwNSw3IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gSW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlOjp0ZXh0KCkgY29uc3QKIAogRXhjZXB0aW9uT3I8dm9pZD4g
SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRleHQoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBBU1NFUlRfVU5V
U0VEKHN0eWxlLCBzdHlsZSA9PSBpbmxpbmVTdHlsZSgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHN0
eWxlLCBzdHlsZSA9PSAmaW5saW5lU3R5bGUoKSk7CiAKICAgICB7CiAgICAgICAgIEluc3BlY3Rv
ckNTU0FnZW50OjpJbmxpbmVTdHlsZU92ZXJyaWRlU2NvcGUgb3ZlcnJpZGVTY29wZShtX2VsZW1l
bnQtPmRvY3VtZW50KCkpOwpAQCAtMTU0NCw5ICsxNTQyLDYgQEAgYm9vbCBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmVuc3VyZVBhcnNlZERhdGFSZWFkeSgpCiAgICAgaWYgKG1f
cnVsZVNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFtX2VsZW1l
bnQtPmlzU3R5bGVkRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBtX3J1
bGVTb3VyY2VEYXRhID0gcnVsZVNvdXJjZURhdGEoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTE1NTcsNyArMTU1Miw3IEBAIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGluZVN0eWxlOjppbnNwZWN0b3JTdHlsZUZvcklkKGNvCiAgICAgcmV0dXJuIG1f
aW5zcGVjdG9yU3R5bGUuY29weVJlZigpOwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9uKiBJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmlubGluZVN0eWxlKCkgY29uc3QKK0NTU1N0
eWxlRGVjbGFyYXRpb24mIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6aW5saW5l
U3R5bGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2VsZW1lbnQtPmNzc29tU3R5bGUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4
IGRmOTVkMWNlNTIwN2FlMjQwYTM2ZGI1ZTI0NDZiY2NhYmE5ZGM3Y2QuLjJmMzFmMzBiOTdiZTQ4
YmNiODVlZjdiOGI2NTc0N2QwMjhjNTBiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaApAQCAtMTIyLDEwICsxMjIsMTAgQEAgc3RydWN0IElu
c3BlY3RvclN0eWxlUHJvcGVydHkgewogCiBjbGFzcyBJbnNwZWN0b3JTdHlsZSBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclN0eWxlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxJbnNwZWN0b3JTdHlsZT4gY3JlYXRlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBS
ZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50
U3R5bGVTaGVldCk7CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHlsZT4gY3JlYXRlKGNvbnN0
IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4mJiwgSW5z
cGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCk7CiAgICAgfkluc3BlY3RvclN0eWxl
KCk7CiAKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBjc3NTdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3R5bGUuZ2V0KCk7IH0KKyAgICBDU1NTdHlsZURlY2xhcmF0aW9uJiBjc3NTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0OwogICAgIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNT
U0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IGJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29u
c3Q7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0VGV4dChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JTdHlsZShj
b25zdCBJbnNwZWN0b3JDU1NJZCYgc3R5bGVJZCwgUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+
JiYsIEluc3BlY3RvclN0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQpOworICAgIEluc3BlY3Rv
clN0eWxlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWY8Q1NTU3R5bGVEZWNsYXJh
dGlvbj4mJiwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCk7CiAKICAgICB2
b2lkIHBvcHVsYXRlQWxsUHJvcGVydGllcyhWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4q
IHJlc3VsdCkgY29uc3Q7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5
bGU+IHN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdDsKQEAgLTE0Myw3ICsxNDMsNyBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IGxvbmdoYW5kUHJvcGVydGllcyhjb25zdCBTdHJpbmcm
IHNob3J0aGFuZFByb3BlcnR5KSBjb25zdDsKIAogICAgIEluc3BlY3RvckNTU0lkIG1fc3R5bGVJ
ZDsKLSAgICBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gbV9zdHlsZTsKKyAgICBSZWY8Q1NT
U3R5bGVEZWNsYXJhdGlvbj4gbV9zdHlsZTsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBtX3Bh
cmVudFN0eWxlU2hlZXQ7CiB9OwogCkBAIC0yMjksMTcgKzIyOSwxNyBAQCBwcml2YXRlOgogCiBj
bGFzcyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUgZmluYWwgOiBwdWJsaWMgSW5z
cGVjdG9yU3R5bGVTaGVldCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBT
dHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlPiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3Qg
U3RyaW5nJiBpZCwgUmVmPFN0eWxlZEVsZW1lbnQ+JiYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6U3R5bGVTaGVldE9yaWdpbiwgTGlzdGVuZXIqKTsKIAogICAgIHZvaWQgZGlkTW9kaWZ5RWxl
bWVudEF0dHJpYnV0ZSgpOwogICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gdGV4dCgpIGNvbnN0IGZp
bmFsOwotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9y
Q1NTSWQmIGlkKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9VTlVTRUQoaWQsICFpZC5vcmRpbmFsKCkp
OyByZXR1cm4gaW5saW5lU3R5bGUoKTsgfQorICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxl
Rm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkKSBjb25zdCBmaW5hbCB7IEFTU0VSVF9VTlVT
RUQoaWQsICFpZC5vcmRpbmFsKCkpOyByZXR1cm4gJmlubGluZVN0eWxlKCk7IH0KIAogcHJvdGVj
dGVkOgotICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdl
QWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBSZWZQdHI8RWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOworICAgIEluc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqLCBjb25zdCBTdHJp
bmcmIGlkLCBSZWY8U3R5bGVkRWxlbWVudD4mJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOwogCiAgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1l
bnQoKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1bGVTb3Vy
Y2VEYXRhRm9yKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdCBmaW5hbCB7IEFTU0VS
VF9VTlVTRUQoc3R5bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291
cmNlRGF0YTsgfQorICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gcnVsZVNvdXJjZURhdGFG
b3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0IGZpbmFsIHsgQVNTRVJUX1VOVVNF
RChzdHlsZSwgc3R5bGUgPT0gJmlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291cmNlRGF0
YTsgfQogICAgIHVuc2lnbmVkIHJ1bGVJbmRleEJ5U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiop
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBib29sIGVuc3VyZVBhcnNlZERhdGFSZWFk
eSgpIGZpbmFsOwogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGVGb3JJ
ZChjb25zdCBJbnNwZWN0b3JDU1NJZCYpIGZpbmFsOwpAQCAtMjQ5LDExICsyNDksMTEgQEAgcHJv
dGVjdGVkOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3Mo
KSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBpbmxp
bmVTdHlsZSgpIGNvbnN0OworICAgIENTU1N0eWxlRGVjbGFyYXRpb24mIGlubGluZVN0eWxlKCkg
Y29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBlbGVtZW50U3R5bGVUZXh0KCkgY29uc3Q7CiAgICAg
UmVmPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YSgpIGNvbnN0OwogCi0gICAgUmVm
UHRyPEVsZW1lbnQ+IG1fZWxlbWVudDsKKyAgICBSZWY8U3R5bGVkRWxlbWVudD4gbV9lbGVtZW50
OwogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gbV9ydWxlU291cmNlRGF0YTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yU3R5bGU+IG1faW5zcGVjdG9yU3R5bGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmlkbAppbmRleCBmY2I2NGFlZGMyODg1YThlMTUyNWYxZjkwYzgyZmJkNGU5YjFkOWUw
Li40MmUyMGZlMmY4NGNjOGE5ZmFjNGYyM2VkNzEzMGFkYWVlYzYwODdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaWRsCkBAIC0zMCw3ICszMCw2IEBACiAgICAgYXR0cmlidXRlIERPTVN0cmlu
ZyB4bWxzcGFjZTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBj
bGFzc05hbWU7Ci0gICAgW0ltcGxlbWVudGVkQXM9Y3Nzb21TdHlsZV0gcmVhZG9ubHkgYXR0cmli
dXRlIENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7CiAKICAgICBhdHRyaWJ1dGUgbG9uZyB0YWJJ
bmRleDsKIApAQCAtNDQsNCArNDMsNSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmdNYXAgZGF0YXNldDsKIH07CiAKK1NWR0VsZW1lbnQgaW1wbGVtZW50cyBFbGVtZW50Q1NTSW5s
aW5lU3R5bGU7CiBTVkdFbGVtZW50IGltcGxlbWVudHMgR2xvYmFsRXZlbnRIYW5kbGVyczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KaW5kZXggNmQxODNjOTNmYzNjNTBkZjRjOTFmYjY5
NzZkZGUyMzQ5MGZiYTkyYS4uZTdhYWU3ZDhiYTRmNTZkMjE5NGFlMjg0ZWM2NWJjMzViODFlOWJi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KQEAgLTQxLDYgKzQxLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvTmFtZU5vZGVMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vZGVMaXN0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1N0eWxlUHJvcGVydGllcy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9TdHlsZWRFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYlNjcmlwdE9iamVjdFByaXZhdGUuaD4KIApAQCAtNzIsNyArNzMsOCBA
QCAtIChOU1N0cmluZyAqKXRhZ05hbWUKIC0gKERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHls
ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1
cm4ga2l0KHVud3JhcCgqc2VsZikuY3Nzb21TdHlsZSgpKTsKKyAgICBhdXRvJiBlbGVtZW50ID0g
dW53cmFwKCpzZWxmKTsKKyAgICByZXR1cm4gaXM8V2ViQ29yZTo6U3R5bGVkRWxlbWVudD4oZWxl
bWVudCkgPyBraXQoJmRvd25jYXN0PFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ+KGVsZW1lbnQpLmNz
c29tU3R5bGUoKSkgOiBudWxscHRyOwogfQogCiAtIChpbnQpb2Zmc2V0TGVmdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4
IDI2NmRiNDkwNjg4ZDYxMjYzZjRhYjAwY2IzNjM4YzBjOGU3NTZjMjYuLjI0OWY5NTBhNTg1OThl
ZDljNzM1OTI0N2NkZTRhZjYwZjU4ODgxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTI1NCw3ICsyNTQsNyBAQCBi
b29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShTdHlsZVByb3BlcnRpZXMqIHN0
eWxlLCBSYW5nZSogcmFuZ2UpCiB7CiAgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IG11
dGFibGVTdHlsZShzdHlsZS0+aXNNdXRhYmxlKCkgPyBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4oc3RhdGljX2Nhc3Q8TXV0YWJsZVN0eWxlUHJvcGVydGllcyY+KCpzdHlsZSkpIDogc3R5bGUt
Pm11dGFibGVDb3B5KCkpOwogICAgIHJldHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRl
Rm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldwotICAgICAgICBzaG91bGRBcHBseVN0eWxlOmtp
dChtdXRhYmxlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSkgdG9FbGVtZW50c0lu
RE9NUmFuZ2U6a2l0KHJhbmdlKV07CisgICAgICAgIHNob3VsZEFwcGx5U3R5bGU6a2l0KCZtdXRh
YmxlU3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSkgdG9FbGVtZW50c0luRE9NUmFu
Z2U6a2l0KHJhbmdlKV07CiB9CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZUZvbnRQYW5lbChXZWJWaWV3
ICp3ZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggNTgxOTVl
ZTM2NTliMWRjZDNmOTVkYzIzZGIxMmI3ODU0N2IyNDIxNS4uMzY4NWUyYzA2ZjA1NmY1NjExNmNm
NGU0YjM4ZmE0MTdiMzY5NmNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CkBAIC05MjEsNyArOTIxLDcgQEAgLSAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKV90eXBpbmdT
dHlsZQogICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiB0eXBpbmdTdHlsZSA9IF9w
cml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLmNvcHlUeXBpbmdTdHlsZSgpOwogICAgIGlm
ICghdHlwaW5nU3R5bGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGtpdCh0eXBp
bmdTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKKyAgICByZXR1cm4ga2l0KCZ0
eXBpbmdTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKIH0KIAogLSAodm9pZClf
c2V0VHlwaW5nU3R5bGU6KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZSB3aXRoVW5kb0Fj
dGlvbjooRWRpdEFjdGlvbil1bmRvQWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggOTVlMGVlZTA1MDA4Y2M3MDk1ZTRiY2IwNGQzYWUzM2YyNDE3NTZmNS4uZjBiM2Nl
ZDI4ODdiZmM2ZTFjOGIyZjcwNzc4ZGFmMzYwY2UwOWIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtMjEwNSw3ICsyMTA1LDcgQEAgLSAoRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqKXN0eWxlQXRTZWxlY3Rpb25TdGFydAogICAgIGF1dG8qIHN0eWxlID0gZWRpdGluZ1N0
eWxlLT5zdHlsZSgpOwogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
cmV0dXJuIGtpdChzdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKKyAgICByZXR1
cm4ga2l0KCZzdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKTsKIH0KIAogLSAoTlNV
SW50ZWdlcilfcmVuZGVyVHJlZVNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0RP
TUNvcmVDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApp
bmRleCA5MWZlMzY0ZTk1MWU3NjdiYmMxZDU4OTE0MDRlOWI3MzA1MmQ5NjQ5Li5hNDIxMTE5ZGU2
NjFjYmFiZTQxNTZkNzJjMDMyMDIwN2U3ZWRhZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNs
YXNzZXMuY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SYW5nZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVu
ZGVyVHJlZUFzVGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3R5bGVkRWxlbWVudC5oPgogCiAj
aW5jbHVkZSA8aW5pdGd1aWQuaD4KIC8vIHszQjBDMEVGRi00NzhCLTRiMGItODI5MC1EMjMyMUUw
OEUyM0V9CkBAIC0xMzUwLDE0ICsxMzUxLDEwIEBAIEhSRVNVTFQgRE9NRWxlbWVudDo6c3R5bGUo
X0NPTV9PdXRwdHJfb3B0XyBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbioqIHJlc3VsdCkKICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKICAgICAqcmVzdWx0ID0gbnVs
bHB0cjsKLSAgICBpZiAoIW1fZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIEVfRkFJTDsKLQotICAg
IFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlID0gbV9lbGVtZW50LT5jc3NvbVN0
eWxlKCk7Ci0gICAgaWYgKCFzdHlsZSkKKyAgICBpZiAoIWlzPFdlYkNvcmU6OlN0eWxlZEVsZW1l
bnQ+KG1fZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICAqcmVzdWx0ID0g
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlSW5zdGFuY2Uoc3R5bGUpOworICAgICpyZXN1
bHQgPSBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGVJbnN0YW5jZSgmbV9lbGVtZW50LT5j
c3NvbVN0eWxlKCkpOwogICAgIHJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudC5jcHAKaW5kZXggNTlh
MTVkMzM5ZDQ5NGYyZTIzZmI1MGUyODQxNTU1YWQ0Yzg3MGVkZS4uYjU2NzVhMGI0NGZiZDVjZWZi
MWJhNjA0ZDZjMzVjOGYwMjJkM2Q5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUVsZW1lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiR09iamVjdEV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdHls
ZWRFbGVtZW50Lmg+CiAjaW5jbHVkZSAiV2ViS2l0RE9NQXR0clByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dERPTUNsaWVudFJlY3RMaXN0UHJpdmF0ZS5oIgpAQCAtMTA0OSw5ICsxMDUwLDEwIEBAIFdlYktp
dERPTUNTU1N0eWxlRGVjbGFyYXRpb24qIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfc3R5bGUoV2Vi
S2l0RE9NRWxlbWVudCogc2VsCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRUxFTUVOVChz
ZWxmKSwgMCk7Ci0gICAgV2ViQ29yZTo6RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbj4gZ29iamVjdFJlc3Vs
dCA9IFdURjo6Z2V0UHRyKGl0ZW0tPmNzc29tU3R5bGUoKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6
a2l0KGdvYmplY3RSZXN1bHQuZ2V0KCkpOworICAgIGF1dG8mIGl0ZW0gPSAqV2ViS2l0Ojpjb3Jl
KHNlbGYpOworICAgIGlmICghaXM8V2ViQ29yZTo6U3R5bGVkRWxlbWVudD4oaXRlbSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBXZWJLaXQ6OmtpdCgmZG93bmNhc3Q8V2Vi
Q29yZTo6U3R5bGVkRWxlbWVudD4oaXRlbSkuY3Nzb21TdHlsZSgpKTsKIH0KIAogZ2NoYXIqIHdl
YmtpdF9kb21fZWxlbWVudF9nZXRfaWQoV2ViS2l0RE9NRWxlbWVudCogc2VsZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAppbmRleCBjOTk5ZWZmODZlZTg2M2VjNDcwNmM5YzE4NjQ2NzQ2NWNjNjU2
OThkLi4zZmFlZTE5ZjFkYjdkYTgyNjE2MDAzZTExMzllY2NlZGFiOWY2ZmNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6
OnNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2UqIGZyb21SYW5nZSwgUmFuZ2UqIHRvUmFu
Z2UKIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKFN0eWxlUHJvcGVydGll
cyogc3R5bGUsIFJhbmdlKiByYW5nZSkKIHsKICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gbXV0YWJsZVN0eWxlKHN0eWxlLT5pc011dGFibGUoKSA/IFJlZjxNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzPihzdGF0aWNfY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJj4oKnN0eWxlKSkgOiBz
dHlsZS0+bXV0YWJsZUNvcHkoKSk7Ci0gICAgYm9vbCByZXN1bHQgPSBtX3BhZ2UtPmluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50KCkuc2hvdWxkQXBwbHlTdHlsZSgqbV9wYWdlLCBtdXRhYmxlU3R5
bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKSwgcmFuZ2UpOworICAgIGJvb2wgcmVzdWx0
ID0gbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLnNob3VsZEFwcGx5U3R5bGUo
Km1fcGFnZSwgJm11dGFibGVTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpLCByYW5n
ZSk7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDQ5ZDViNDMwZDU1OWMwOTgyODViMTk3ODkyY2RmZGQwYTU4M2UxM2YuLmEwNGQ2NmM2MWEyNzUy
NDIzNGE2ZWRkZDI1MGUzZDA2MWMzODczOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNy0w
NS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgJ3N0
eWxlJyBmcm9tIEVsZW1lbnQgdG8gSFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50IGFuZCBtYWtlIGl0
IHNldHRhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzE3OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvcm9sZXMtZXhwb3NlZC5odG1sOgorICAgICAgICBBZGQgbnVsbCBj
aGVjayBmb3IgZWxlbWVudC5zdHlsZS4KKworICAgICAgICAqIGZhc3QvY3NzL0VsZW1lbnQtc3R5
bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9FbGVtZW50LXN0eWxl
Lmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL2lucHV0LXdpZHRoLWhlaWdodC1hdHRyaWJ1dGVzLXdpdGhvdXQtcmVu
ZGVyZXItbG9hZGVkLWltYWdlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0
IHRoYXQgd2FzIHNldHRpbmcgSFRNTEVsZW1lbnQuc3R5bGUgd2hpY2ggd2FzIGEgbm8tb3AgdW50
aWwgdGhpcyBwYXRjaC4gTm93IHRoYXQgaXQgYWN0dWFsbHkKKyAgICAgICAgZG9lcyBzb21ldGhp
bmcsIHRoZSBpbnB1dCBlbGVtZW50IGFjdHVhbGx5IGxvb3NlcyBpdHMgcmVuZGVyZXIuIFRoaXMg
Zm91bmQgYSBidWcgd2hpY2ggSSBmaXhlZCBpbiB0aGlzCisgICAgICAgIHBhdGNoLgorCisgICAg
ICAgICoganMvZG9tL2RvbS1zdGF0aWMtcHJvcGVydHktZm9yLWluLWl0ZXJhdGlvbi1leHBlY3Rl
ZC50eHQ6CisgICAgICAgIFJlYmFzZWxpbmUgYXMgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIg
aGFzIGNoYW5nZWQuCisKIDIwMTctMDUtMDcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gcjIxNjE5NyBjYXVzZWQgc29tZSB3ZWJydGMg
dGVzdHMgdG8gZmFpbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yb2xl
cy1leHBvc2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JvbGVzLWV4cG9zZWQu
aHRtbAppbmRleCBjYjczMjk2MmE2YzdmNmE1NmZlMjQ2NzliNzY4MzVkMmIyM2EyOTE3Li40NDU2
MzQ1NTg0ZjIzYTc2MDQ4OTIwYWNlMDQzNzQyMDQ3M2ZlZTUyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3JvbGVzLWV4cG9zZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3JvbGVzLWV4cG9zZWQuaHRtbApAQCAtNDMxLDcgKzQzMSw4IEBAIGlmICh3
aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKICAg
ICBleGFtcGxlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5leCcpOwogICAgIGZvciAo
dmFyIGkgPSAwLCBjID0gZXhhbXBsZXMubGVuZ3RoOyBpIDwgYzsgaSsrKSB7CiAgICAgICAgIGVs
ID0gZXhhbXBsZXNbaV07Ci0gICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAg
ICAgIGlmIChlbC5zdHlsZSkKKyAgICAgICAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7
CiAgICAgfQogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9F
bGVtZW50LXN0eWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQt
c3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllMjQ2Mjg2MDcxODhiZDM2MzI2MTI3MWNi
NWE2OGZjNTkxZmJmODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9F
bGVtZW50LXN0eWxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworUEFTUyAnc3R5bGUn
IHByb3BlcnR5IGxvY2F0aW9uIAorUEFTUyAnc3R5bGUnIHByb3BlcnR5IHR5cGUgCitQQVNTIHN0
eWxlIHNob3VsZCBiZSBzZXR0YWJsZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvRWxlbWVudC1zdHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvRWxlbWVudC1zdHls
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAyYjliY2VlZjNlZTliOGRkMDViOGVhYzEzN2I4ZmY3ZjM5NjA1
OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9FbGVtZW50LXN0eWxl
Lmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxkaXYgaWQ9InRlc3REaXYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQiPjwvZGl2
PgorPHN2ZyBpZD0idGVzdFNWRyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZCI+PC9kaXY+
Cis8c2NyaXB0PgordGVzdCgoKSA9PiB7CisgICAgY29uc3QgdGVzdERpdiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0RGl2Iik7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0RGl2Ll9fcHJv
dG9fXywgSFRNTERpdkVsZW1lbnQucHJvdG90eXBlLCAidGVzdERpdiBpcyBhbiBIVE1MRGl2RWxl
bWVudCIpOworICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKHRlc3REaXYsICJzdHlsZSIsICJIVE1M
RWxlbWVudCBoYXMgJ3N0eWxlJyBhdHRyaWJ1dGUiKTsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5
KEhUTUxFbGVtZW50LnByb3RvdHlwZSwgInN0eWxlIiwgIidzdHlsZScgaXMgb24gSFRNTEVsZW1l
bnQgcHJvdG90eXBlIik7CisKKyAgICBjb25zdCB0ZXN0U1ZHID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3RTVkciKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRlc3RTVkcuX19wcm90b19fLCBT
VkdTVkdFbGVtZW50LnByb3RvdHlwZSwgInRlc3RTVkcgaXMgYW4gU1ZHU1ZHRWxlbWVudCIpOwor
ICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKHRlc3RTVkcsICJzdHlsZSIsICJTVkdFbGVtZW50IGhh
cyAnc3R5bGUnIGF0dHJpYnV0ZSIpOworICAgIGFzc2VydF9vd25fcHJvcGVydHkoU1ZHRWxlbWVu
dC5wcm90b3R5cGUsICJzdHlsZSIsICInc3R5bGUnIGlzIG9uIFNWR0VsZW1lbnQgcHJvdG90eXBl
Iik7CisKKyAgICBhc3NlcnRfbm90X2V4aXN0cygiRWxlbWVudC5wcm90b3R5cGUiLCAic3R5bGUi
LCAiJ3N0eWxlJyBpcyBub3Qgb24gRWxlbWVudCBwcm90b3R5cGUiKTsKK30sICInc3R5bGUnIHBy
b3BlcnR5IGxvY2F0aW9uIik7CisKK3Rlc3QoKCkgPT4geworICAgIGNvbnN0IHRlc3REaXYgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdERpdiIpOworICAgIGFzc2VydF9lcXVhbHModGVz
dERpdi5zdHlsZS5fX3Byb3RvX18sIENTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlLCAiSFRN
TEVsZW1lbnQuc3R5bGUgdHlwZSIpOworCisgICAgY29uc3QgdGVzdFNWRyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0U1ZHIik7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0U1ZHLnN0eWxl
Ll9fcHJvdG9fXywgQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUsICJTVkdFbGVtZW50LnN0
eWxlIHR5cGUiKTsKK30sICInc3R5bGUnIHByb3BlcnR5IHR5cGUiKTsKKwordGVzdCgoKSA9PiB7
CisgICAgY29uc3QgdGVzdERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RGl2Iik7
CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0RGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciwgInJlZCIs
ICJIVE1MRWxlbWVudC5zdHlsZSBnZXR0ZXIiKTsKKyAgICBhc3NlcnRfcmVhZG9ubHkodGVzdERp
diwgInN0eWxlIiwgIkhUTUxFbGVtZW50LnN0eWxlIGlzIHJlYWRvbmx5Iik7CisgICAgdGVzdERp
di5zdHlsZSA9ICJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI7CisgICAgYXNzZXJ0X2VxdWFscyh0
ZXN0RGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciwgImdyZWVuIiwgIkhUTUxFbGVtZW50LnN0eWxl
IHNldHRlciIpOworCisgICAgY29uc3QgdGVzdFNWRyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0U1ZHIik7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0U1ZHLnN0eWxlLmJhY2tncm91bmRD
b2xvciwgInJlZCIsICJTVkdFbGVtZW50LnN0eWxlIGdldHRlciIpOworICAgIGFzc2VydF9yZWFk
b25seSh0ZXN0U1ZHLCAic3R5bGUiLCAiU1ZHRWxlbWVudC5zdHlsZSBpcyByZWFkb25seSIpOwor
ICAgIHRlc3RTVkcuc3R5bGUgPSAiYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4iOworICAgIGFzc2Vy
dF9lcXVhbHModGVzdFNWRy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IsICJncmVlbiIsICJTVkdFbGVt
ZW50LnN0eWxlIHNldHRlciIpOworfSwgInN0eWxlIHNob3VsZCBiZSBzZXR0YWJsZSIpOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2lucHV0LXdpZHRoLWhlaWdodC1hdHRyaWJ1dGVzLXdpdGhvdXQtcmVuZGVyZXItbG9hZGVk
LWltYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtd2lkdGgt
aGVpZ2h0LWF0dHJpYnV0ZXMtd2l0aG91dC1yZW5kZXJlci1sb2FkZWQtaW1hZ2UtZXhwZWN0ZWQu
dHh0CmluZGV4IGY1MzA5NTRjYjI1NGJlMjg1YWNkYTg0M2EzMTdiZjAwM2ExZjVhZWQuLjdhY2Ji
ZDMxYjU0NGY5MTQ2N2I5NDUwM2QwZTY2OTM4YWVlMjdjNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvaW5wdXQtd2lkdGgtaGVpZ2h0LWF0dHJpYnV0ZXMtd2l0aG91dC1yZW5k
ZXJlci1sb2FkZWQtaW1hZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtd2lkdGgtaGVpZ2h0LWF0dHJpYnV0ZXMtd2l0aG91dC1yZW5kZXJlci1sb2FkZWQt
aW1hZ2UtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotCiBQQVNTIGUud2lkdGggaXMgMTYK
IFBBU1MgZS5oZWlnaHQgaXMgMTYKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb20tc3RhdGljLXByb3BlcnR5LWZvci1pbi1p
dGVyYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbS1zdGF0aWMtcHJv
cGVydHktZm9yLWluLWl0ZXJhdGlvbi1leHBlY3RlZC50eHQKaW5kZXggMDc2ZjA5YzM2NTQxOTky
ZmVkNTIwMDMzMTg1NTFmYmE1ZGNiZjg0Mi4uOWI4ZTI3ZDIzZTAwZjMyMzZiZTkyMTFmYWRmOWE1
NjNjNWU3Y2JkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbS1zdGF0aWMtcHJv
cGVydHktZm9yLWluLWl0ZXJhdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMv
ZG9tL2RvbS1zdGF0aWMtcHJvcGVydHktZm9yLWluLWl0ZXJhdGlvbi1leHBlY3RlZC50eHQKQEAg
LTQ2LDYgKzQ2LDcgQEAgUEFTUyBhWyJjb250ZW50RWRpdGFibGUiXSBpcyBpbmhlcml0CiBQQVNT
IGFbImlzQ29udGVudEVkaXRhYmxlIl0gaXMgZmFsc2UKIFBBU1MgYVsic3BlbGxjaGVjayJdIGlz
IHRydWUKIFBBU1MgYVsiZGF0YXNldCJdIGlzIFtvYmplY3QgRE9NU3RyaW5nTWFwXQorUEFTUyBh
WyJzdHlsZSJdIGlzIFtvYmplY3QgQ1NTU3R5bGVEZWNsYXJhdGlvbl0KIFBBU1MgYVsib25hYm9y
dCJdIGlzIG51bGwKIFBBU1MgYVsib25ibHVyIl0gaXMgbnVsbAogUEFTUyBhWyJvbmNhbnBsYXki
XSBpcyBudWxsCkBAIC0xMTQsNyArMTE1LDYgQEAgUEFTUyBhWyJjbGFzc0xpc3QiXSBpcwogUEFT
UyBhWyJzbG90Il0gaXMgCiBQQVNTIGFbImF0dHJpYnV0ZXMiXSBpcyBbb2JqZWN0IE5hbWVkTm9k
ZU1hcF0KIFBBU1MgYVsic2hhZG93Um9vdCJdIGlzIG51bGwKLVBBU1MgYVsic3R5bGUiXSBpcyBb
b2JqZWN0IENTU1N0eWxlRGVjbGFyYXRpb25dCiBQQVNTIGFbInNjcm9sbFRvcCJdIGlzIDAKIFBB
U1MgYVsic2Nyb2xsTGVmdCJdIGlzIDAKIFBBU1MgYVsic2Nyb2xsV2lkdGgiXSBpcyAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309362</attachid>
            <date>2017-05-08 08:48:09 -0700</date>
            <delta_ts>2017-05-08 09:50:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171795-20170508084807.patch</filename>
            <type>text/plain</type>
            <size>55335</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2MzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODI3ZWNkMjcxYmU2NDkz
ZjYyOGY4OWUyNTdjNGZlYzRjNjkyYjMzZS4uY2I0MmQ4YmU3YTExNzRhN2EzMDg3MmNiM2Y5YzQz
MjRjZjdlODRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc1IEBACiAyMDE3LTA1LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSAnc3R5bGUnIGZyb20g
RWxlbWVudCB0byBIVE1MRWxlbWVudCAvIFNWR0VsZW1lbnQgYW5kIG1ha2UgaXQgc2V0dGFibGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTc5NQor
CisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTW92ZSAn
c3R5bGUnIGZyb20gRWxlbWVudCB0byBIVE1MRWxlbWVudCAvIFNWR0VsZW1lbnQgYW5kIG1ha2Ug
aXQgc2V0dGFibGUKKyAgICAgICAgYXMgcGVyOgorICAgICAgICAtIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy9jc3NvbS8jdGhlLWVsZW1lbnRjc3NpbmxpbmVzdHlsZS1pbnRlcmZhY2UKKworICAg
ICAgICBCb3RoIEZpcmVmb3ggYW5kIENocm9tZSBhbHJlYWR5IG1hdGNoIHRoZSBzcGVjaWZpY2F0
aW9uIChib3RoIGZvciB0aGUKKyAgICAgICAgcHJvcGVydHkgbG9jYXRpb24gYW5kIGhhdmluZyBp
dCBzZXR0YWJsZSkuCisKKyAgICAgICAgVGVzdDogZmFzdC9jc3MvRWxlbWVudC1zdHlsZS5odG1s
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBjc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbDogQWRkZWQuCisgICAgICAgICogY3Nz
L1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAqIGNzcy9TdHlsZVBy
b3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVN0eWxlUHJvcGVydGllczo6
ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKToKKyAgICAgICAg
KiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmg6CisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXR0cjo6c3R5bGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlQ1NTU3R5bGVEZWNsYXJhdGlvbik6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmNzc29tU3R5bGUpOgorICAgICAgICAq
IGRvbS9TdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudCk6CisgICAg
ICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2Vl
cFN0eWxlU3BhbklubGluZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5pZGw6CisKKyAg
ICAgICAgKiBodG1sL0ltYWdlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
SW5wdXRUeXBlOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VJbnB1dFR5cGU6Ondp
ZHRoKToKKyAgICAgICAgRml4IGJ1ZyB0aGF0IHdhcyBmb3VuZCBieSBmYXN0L2Zvcm1zL2lucHV0
LXdpZHRoLWhlaWdodC1hdHRyaWJ1dGVzLXdpdGhvdXQtcmVuZGVyZXItbG9hZGVkLWltYWdlLmh0
bWwuCisgICAgICAgIFRoYXQgdGVzdCByZWxpZWQgb24gc2V0dGluZyBIVE1MRWxlbWVudC5zdHls
ZSB3aGljaCBkaWQgbm90IHdvcmsgdW50aWwgbm93LiBDYWxsIHVwZGF0ZUxheW91dCgpCisgICAg
ICAgICpiZWZvcmUqIGRvaW5nIHRoZSByZW5kZXJlciBjaGVjay4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRl
c1N0eWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0
eWxlOjpJbnNwZWN0b3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6
ZXh0cmFjdFNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnNl
dFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6aW5zcGVjdG9y
U3R5bGVGb3JJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmRpZE1vZGlm
eUVsZW1lbnRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVl
dEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjplbnN1cmVQYXJzZWREYXRhUmVhZHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjppbmxpbmVT
dHlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRWxlbWVudC5pZGw6CisKKzIwMTctMDUtMDcgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBEcm9wIHJlbWFpbmluZyB1c2VzIG9mIFBhc3NSZWZQ
dHIgaW4gZWRpdGluZyBjb2RlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzE3ODcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDFlNzlhNTdlYTFkMjgzNTQz
N2MwZDViZTM3ZTMyNGFlN2ZjODQ5NGIuLjI1MjE5YWNmMDAzYjU3MTQwZTZhNmIyOTQxNjhhZWNj
MThkMjFlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0wNS0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgJ3N0eWxlJyBm
cm9tIEVsZW1lbnQgdG8gSFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50IGFuZCBtYWtlIGl0IHNldHRh
YmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE3
OTUKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIEJ1
aWxkIGZpeC4KKworICAgICAgICAqIERPTS9ET01FbGVtZW50Lm1tOgorICAgICAgICAoLVtET01F
bGVtZW50IHN0eWxlXSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfdHlwaW5nU3R5
bGVdKToKKwogMjAxNy0wNS0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFsaWduIG91ciBJREwgZmlsZXMgd2l0aCB0aGUgbGF0ZXN0IERPTSBzcGVjaWZpY2F0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggMzA2ZjNhYzQ3Y2Y2M2M3MzAwYjRhOWQyODE0YjEzMTgyNTFlMzZi
YS4uNGY4MzAzMjFjYTdkNWM4ZDUyODVmNGUyZTQ0YTA4ZDdmMmQ3YTg5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE3LTA1LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgTW92ZSAnc3R5bGUnIGZyb20gRWxlbWVudCB0byBIVE1MRWxlbWVudCAv
IFNWR0VsZW1lbnQgYW5kIG1ha2UgaXQgc2V0dGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTc5NQorCisgICAgICAgIFJldmlld2VkIGJ5IEFs
ZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQnVpbGQgZml4LgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUpOgorCiAyMDE3LTA1LTA3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIHIy
MTYxOTcgY2F1c2VkIHNvbWUgd2VicnRjIHRlc3RzIHRvIGZhaWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggMDIwZWU0MjRlZmFkOWJiZWZjN2JhNmFjNmE0NjMzNGUxMTYxMjc0Mi4uYjE5OGQ3N2M2
ZmJlZjczOGQyZDBhYTcwZjRhMGNlMzhjOGY1OGFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTM4Nyw2ICszODcsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGNzcy9E
ZXByZWNhdGVkQ1NTT01WYWx1ZS5pZGwKICAgICBjc3MvRGVwcmVjYXRlZENTU09NVmFsdWVMaXN0
LmlkbAogICAgIGNzcy9ET01DU1NOYW1lc3BhY2UuaWRsCisgICAgY3NzL0VsZW1lbnRDU1NJbmxp
bmVTdHlsZS5pZGwKICAgICBjc3MvRm9udEZhY2UuaWRsCiAgICAgY3NzL0ZvbnRGYWNlU2V0Lmlk
bAogICAgIGNzcy9NZWRpYUxpc3QuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCAwYWNkMjljMTNkMzYwNGMyZWZkNmY3NzgzYzRhMmY5YzY4ZmZlMTFhLi4wYTQ1MjZiYzdiZDVl
YmYwMzRjOThiMDY0MGJiMDRiZjUyOTI2NzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTMyMyw2ICszMjMsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAJJChXZWJDb3JlKS9j
c3MvRGVwcmVjYXRlZENTU09NVmFsdWUuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9EZXByZWNh
dGVkQ1NTT01WYWx1ZUxpc3QuaWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9ET01DU1NOYW1lc3Bh
Y2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2Nzcy9Gb250RmFjZS5pZGwgXAogICAgICQoV2ViQ29yZSkvY3NzL0Zv
bnRGYWNlU2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvTWVkaWFMaXN0LmlkbCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ZWJlNmFmYTRlZmI4Y2Y0NTQxZDRjOGJmNzhkYmNkMjcyNWYyZmYxMS4uNGU2NGVkMTg1ZWE1YmVl
MjNiMDYxZTBmZmI5ZGNjMmU4NTcxNTQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTEzOTIsNiArMTEzOTIsNyBAQAogCQk4
Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW91c2VFdmVudEluaXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODM3QTgwMTIxRTFFMTI3MzAwMDI2QjlGIC8qIEVuZ2xpc2ggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmlu
Z3NkaWN0OyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUu
c3RyaW5nc2RpY3Q7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMz
RjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWYWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4MzdERkIzNDFFQkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENT
U0lubGluZVN0eWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbGVtZW50Q1NTSW5saW5l
U3R5bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzg2QTk2QzE5RjYxQjJF
MDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0eWxlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzg2QTk2
RTE5RjYxRTRGMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzODg2NzM0MUQxM0JBNTkwMDM2OTdEMCAvKiBSZW5kZXJPYmplY3RFbnVtcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJPYmplY3RFbnVtcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ5OTYsNiArMjQ5OTcsNyBAQAogCQkJCUZE
Njc3NzM1MTk1Q0FCMjAwMDcyRTBEMyAvKiBET01DU1NOYW1lc3BhY2UuY3BwICovLAogCQkJCUZD
OUEwRjcyMTY0MDk0Q0YwMDNENkI4RCAvKiBET01DU1NOYW1lc3BhY2UuaCAqLywKIAkJCQlGQzlB
MEY3MzE2NDA5NENGMDAzRDZCOEQgLyogRE9NQ1NTTmFtZXNwYWNlLmlkbCAqLywKKwkJCQk4MzdE
RkIzNDFFQkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCAqLywKIAkJ
CQlGQkRCNjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwICov
LAogCQkJCUZCREI2MTlFMTZENjAzNjUwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5o
ICovLAogCQkJCTFDNjYyNjBFMUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5jcHAgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNmZTcyMzk2ZjYwMzgxMDIzYzRiMWRhNzg4ZDA1ZDY3MjVkMzYyMjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRWxlbWVudENTU0lubGluZVN0eWxlLmlkbApAQCAtMCww
ICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQ1NTT00gZXh0ZW5zaW9ucyB0byBIVE1MRWxlbWVu
dCAvIFNWR0VsZW1lbnQ6CisvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3RoZS1l
bGVtZW50Y3NzaW5saW5lc3R5bGUtaW50ZXJmYWNlCitbCisgICAgTm9JbnRlcmZhY2VPYmplY3Qs
CitdIGludGVyZmFjZSBFbGVtZW50Q1NTSW5saW5lU3R5bGUgeworICAgIFtJbXBsZW1lbnRlZEFz
PWNzc29tU3R5bGUsIFB1dEZvcndhcmRzPWNzc1RleHRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NT
dHlsZURlY2xhcmF0aW9uIHN0eWxlOyAvLyBGSVhNRTogU2hvdWxkIGJlIFtTYW1lT2JqZWN0XS4K
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwCmluZGV4IDZlMGUxY2YwZGNjOTkxMzI0NDZhOTc5YzJlZDc5ZTQxZmE1Mjcx
YjguLjEyNWExMzliNzJiYWVjNTMyMGViYTExZDM2N2VmMGExODgyNzY1MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3Bw
CkBAIC0zNDYsNyArMzQ2LDcgQEAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3BlcnRpZXMoKSBjb24KIH0KICAgICAKIFN0
eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRpb246OlN0eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRpb24o
TXV0YWJsZVN0eWxlUHJvcGVydGllcyYgcHJvcGVydHlTZXQsIENTU1J1bGUmIHBhcmVudFJ1bGUp
Ci0gICAgOiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24oJnByb3BlcnR5U2V0KQorICAg
IDogUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uKHByb3BlcnR5U2V0KQogICAgICwgbV9y
ZWZDb3VudCgxKQogICAgICwgbV9wYXJlbnRSdWxlKCZwYXJlbnRSdWxlKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4
IDU2NGNiMWRhMjNiNWJiYTI1MDNiZDUwMTYyZmFiYmFjMWM2OGFiZjkuLjY1MDI1OWZkMzllY2Y3
MTQ2ZGVhZGExYjVjOWU4NmFhMTI0OGUzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTQzLDcgKzQzLDkgQEAgY2xh
c3MgU3R5bGVkRWxlbWVudDsKIAogY2xhc3MgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
IDogcHVibGljIENTU1N0eWxlRGVjbGFyYXRpb24gewogcHVibGljOgotICAgIFByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbihNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBwcm9wZXJ0eVNldCkg
OiBtX3Byb3BlcnR5U2V0KHByb3BlcnR5U2V0KSB7IH0KKyAgICBleHBsaWNpdCBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgcHJvcGVydHlTZXQp
CisgICAgICAgIDogbV9wcm9wZXJ0eVNldCgmcHJvcGVydHlTZXQpCisgICAgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJQYXJlbnRFbGVtZW50KCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogCkBAIC0xMTcsOSArMTE5LDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgSW5saW5lQ1NTU3R5bGVE
ZWNsYXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24g
ewogcHVibGljOgotICAgIElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxlUHJv
cGVydGllcyogcHJvcGVydHlTZXQsIFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpCisgICAg
SW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0
eVNldCwgU3R5bGVkRWxlbWVudCYgcGFyZW50RWxlbWVudCkKICAgICAgICAgOiBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24ocHJvcGVydHlTZXQpCi0gICAgICAgICwgbV9wYXJlbnRFbGVt
ZW50KHBhcmVudEVsZW1lbnQpIAorICAgICAgICAsIG1fcGFyZW50RWxlbWVudCgmcGFyZW50RWxl
bWVudCkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3Bw
CmluZGV4IGEzYTEwYTY3ZmRiMWUwNDBjZjg1Y2NkYzcyNGZmMDEyYTBlNTg5YjIuLjk4ZDI1ZTM2
NjZiYjkxMzAwYjhjYTJjODRiODZmMDc5YWUzNGU1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnRpZXMuY3BwCkBAIC0xMzI1LDI1ICsxMzI1LDI1IEBAIFByb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbiogTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3NzU3R5bGVEZWNsYXJhdGlv
bigpCiAgICAgcmV0dXJuIG1fY3Nzb21XcmFwcGVyLmdldCgpOwogfQogCi1DU1NTdHlsZURlY2xh
cmF0aW9uKiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9u
KCkKK0NTU1N0eWxlRGVjbGFyYXRpb24mIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmVuc3VyZUNT
U1N0eWxlRGVjbGFyYXRpb24oKQogewogICAgIGlmIChtX2Nzc29tV3JhcHBlcikgewogICAgICAg
ICBBU1NFUlQoIXN0YXRpY19jYXN0PENTU1N0eWxlRGVjbGFyYXRpb24qPihtX2Nzc29tV3JhcHBl
ci5nZXQoKSktPnBhcmVudFJ1bGUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jc3NvbVdyYXBwZXIt
PnBhcmVudEVsZW1lbnQoKSk7Ci0gICAgICAgIHJldHVybiBtX2Nzc29tV3JhcHBlci5nZXQoKTsK
KyAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9Ci0gICAgbV9jc3NvbVdyYXBw
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4odGhp
cyk7Ci0gICAgcmV0dXJuIG1fY3Nzb21XcmFwcGVyLmdldCgpOworICAgIG1fY3Nzb21XcmFwcGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24+KCp0aGlz
KTsKKyAgICByZXR1cm4gKm1fY3Nzb21XcmFwcGVyOwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9u
KiBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9u
KFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpCitDU1NTdHlsZURlY2xhcmF0aW9uJiBNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzOjplbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eWxl
ZEVsZW1lbnQmIHBhcmVudEVsZW1lbnQpCiB7CiAgICAgaWYgKG1fY3Nzb21XcmFwcGVyKSB7Ci0g
ICAgICAgIEFTU0VSVChtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgpID09IHBhcmVudEVs
ZW1lbnQpOwotICAgICAgICByZXR1cm4gbV9jc3NvbVdyYXBwZXIuZ2V0KCk7CisgICAgICAgIEFT
U0VSVChtX2Nzc29tV3JhcHBlci0+cGFyZW50RWxlbWVudCgpID09ICZwYXJlbnRFbGVtZW50KTsK
KyAgICAgICAgcmV0dXJuICptX2Nzc29tV3JhcHBlcjsKICAgICB9Ci0gICAgbV9jc3NvbVdyYXBw
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24+KHRoaXMsIHBh
cmVudEVsZW1lbnQpOwotICAgIHJldHVybiBtX2Nzc29tV3JhcHBlci5nZXQoKTsKKyAgICBtX2Nz
c29tV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbj4o
KnRoaXMsIHBhcmVudEVsZW1lbnQpOworICAgIHJldHVybiAqbV9jc3NvbVdyYXBwZXI7CiB9CiAK
IHVuc2lnbmVkIFN0eWxlUHJvcGVydGllczo6YXZlcmFnZVNpemVJbkJ5dGVzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuaAppbmRleCBmZDlmY2EzMDJlMzY4OWE0ZWY3ZGM4YTFhNzc4
ZWY2OTFlNTlkZmU0Li4wNmQxNWRmNjFkY2FhOWMzMzU1Yjc2Mjc5MWFlMTc3OGY5YWUzZGMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCkBAIC0yMzYsOCArMjM2LDggQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXIoKTsKICAgICBib29sIHBhcnNlRGVjbGFyYXRpb24oY29uc3Qg
U3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uLCBDU1NQYXJzZXJDb250ZXh0KTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIENTU1N0eWxlRGVjbGFyYXRpb24qIGVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24o
KTsKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBlbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0
aW9uKFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpOworICAgIFdFQkNPUkVfRVhQT1JUIENT
U1N0eWxlRGVjbGFyYXRpb24mIGVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKKyAgICBDU1NT
dHlsZURlY2xhcmF0aW9uJiBlbnN1cmVJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKFN0eWxlZEVs
ZW1lbnQmIHBhcmVudEVsZW1lbnQpOwogCiAgICAgaW50IGZpbmRQcm9wZXJ0eUluZGV4KENTU1By
b3BlcnR5SUQpIGNvbnN0OwogICAgIGludCBmaW5kQ3VzdG9tUHJvcGVydHlJbmRleChjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggZjA0NWZjODJi
ZThhMDIwOWFhOWY4MjFmNzdlOTliYjcxOTQ5MWZhOS4uMGE0ZGM0ODk1OTc0YzRiZjJhZDJiZjI0
YTQyZDljMWM3NmRjMzdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIENT
U1N0eWxlRGVjbGFyYXRpb24qIEF0dHI6OnN0eWxlKCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgbV9zdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIGRv
d25jYXN0PFN0eWxlZEVsZW1lbnQ+KCptX2VsZW1lbnQpLmNvbGxlY3RTdHlsZUZvclByZXNlbnRh
dGlvbkF0dHJpYnV0ZShxdWFsaWZpZWROYW1lKCksIHZhbHVlKCksICptX3N0eWxlKTsKLSAgICBy
ZXR1cm4gbV9zdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOworICAgIHJldHVybiAm
bV9zdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogfQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIEF0dHI6OnZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUw
NzFiZWFmN2E1ZjkyZWU3MzE3MzYyNWRhNzc4ODAxM2MxYzgxMWEuLmNhMjVmY2FiY2Q4YzZmMmM0
ZmQzYzYwODQ1NWYzZDJhNDZhNTU0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtOTI3
LDcgKzkyNyw3IEBAIFJlZjxUZXh0PiBEb2N1bWVudDo6Y3JlYXRlRWRpdGluZ1RleHROb2RlKGNv
bnN0IFN0cmluZyYgdGV4dCkKIFJlZjxDU1NTdHlsZURlY2xhcmF0aW9uPiBEb2N1bWVudDo6Y3Jl
YXRlQ1NTU3R5bGVEZWNsYXJhdGlvbigpCiB7CiAgICAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IHByb3BlcnR5U2V0KE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpKTsKLSAgICBy
ZXR1cm4gKnByb3BlcnR5U2V0LT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CisgICAgcmV0
dXJuIHByb3BlcnR5U2V0LT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CiB9CiAKIEV4Y2Vw
dGlvbk9yPFJlZjxOb2RlPj4gRG9jdW1lbnQ6OmltcG9ydE5vZGUoTm9kZSYgbm9kZVRvSW1wb3J0
LCBib29sIGRlZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMWZjZWRhMWMxNzM0MmVkNDU2
NzQ5OTZkMzU2ZmJjZjMzNzg5MDliNS4uZWM3ZDE4NGZjMmIzZTNiYzM3ZGZlN2FhZTVlMmNhZDEx
M2QxNGE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjM2NywxMSArMjM2Nyw2IEBAIGJv
b2wgRWxlbWVudDo6aGFzQXR0cmlidXRlTlMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkksIGNvbnN0IEF0b21pY1N0cmluCiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCktPmZpbmRBdHRy
aWJ1dGVCeU5hbWUocU5hbWUpOwogfQogCi1DU1NTdHlsZURlY2xhcmF0aW9uKiBFbGVtZW50Ojpj
c3NvbVN0eWxlKCkKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogdm9pZCBFbGVtZW50Ojpm
b2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uKQogewogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDU2
ZmFkYjQzNmUzZjA2YjE2NWQ2Mzk2ZmI4NDZlOWYzYjUyYWU1NjYuLjk0MTQ2OWI1MTcxMDVkNzgx
YzlkMjY0OWU2MDFhMThkNWUxYjRjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMTk3LDggKzE5
Nyw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8QXR0cj4+JiBhdHRyTm9k
ZUxpc3QoKTsKIAotICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogY3Nzb21TdHlsZSgp
OwotCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUoKSBjb25zdCB7IHJldHVybiBt
X3RhZ05hbWU7IH0KICNpZiBFTkFCTEUoSklUKQogICAgIHN0YXRpYyBwdHJkaWZmX3QgdGFnUU5h
bWVNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRWxlbWVudCwgbV90YWdO
YW1lKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IDQ0ZDQ4YjM4MDczOTE3Mzk1NjUxNjE0
Nzg5NDA3YzBlMDVjNTFhZDMuLjllNjBiOWViMjkxOGMwN2VmNTYzNGM0ZmRkOTgyZTAzZDdlMjA5
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTY2LDEwICs2Niw2IEBACiAgICAgW0NFUmVh
Y3Rpb25zLCBNYXlUaHJvd0V4Y2VwdGlvbl0gRWxlbWVudD8gaW5zZXJ0QWRqYWNlbnRFbGVtZW50
KERPTVN0cmluZyB3aGVyZSwgRWxlbWVudCBlbGVtZW50KTsgLy8gSGlzdG9yaWNhbC4KICAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgaW5zZXJ0QWRqYWNlbnRUZXh0KERPTVN0cmluZyB3aGVy
ZSwgRE9NU3RyaW5nIGRhdGEpOyAvLyBIaXN0b3JpY2FsLgogCi0gICAgLy8gRklYTUU6IFNob3Vs
ZCBiZSBpbiBhIHNlcGFyYXRlIEVsZW1lbnRDU1NJbmxpbmVTdHlsZSBhbmQgaW1wbGVtZW50ZWQg
YnkgSFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50LgotICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3NvbS8jdGhlLWVsZW1lbnRjc3NpbmxpbmVzdHlsZS1pbnRlcmZhY2UKLSAgICBbSW1w
bGVtZW50ZWRBcz1jc3NvbVN0eWxlXSByZWFkb25seSBhdHRyaWJ1dGUgQ1NTU3R5bGVEZWNsYXJh
dGlvbiBzdHlsZTsgLy8gRklYTUU6IFNob3VsZCBiZSBbU2FtZU9iamVjdCwgUHV0Rm9yd2FyZHM9
Y3NzVGV4dF0uCi0KICAgICAvLyBDU1NPTS12aWV3IGV4dGVuc2lvbnMgKGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy9jc3NvbS12aWV3LyNleHRlbnNpb24tdG8tdGhlLWVsZW1lbnQtaW50ZXJmYWNl
KS4KICAgICBzZXF1ZW5jZTxET01SZWN0PiBnZXRDbGllbnRSZWN0cygpOwogICAgIFtOZXdPYmpl
Y3RdIERPTVJlY3QgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVk
RWxlbWVudC5jcHAKaW5kZXggMmVlOTk5N2ZkMDg4ZjRhOTQwNzUyMWU3YjE5Y2YwMmY1ZWFkMGYx
Ni4uMmNiZTc4ZTdiNTJhODgyMWM2ZDQyZGVmOWQxMmNhOTJlYmM1Y2EzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtNjEsOSArNjEsOSBAQCBTdHlsZWRFbGVtZW50Ojp+
U3R5bGVkRWxlbWVudCgpCiAgICAgICAgIGNzc29tV3JhcHBlci0+Y2xlYXJQYXJlbnRFbGVtZW50
KCk7CiB9CiAKLUNTU1N0eWxlRGVjbGFyYXRpb24qIFN0eWxlZEVsZW1lbnQ6OmNzc29tU3R5bGUo
KQorQ1NTU3R5bGVEZWNsYXJhdGlvbiYgU3R5bGVkRWxlbWVudDo6Y3Nzb21TdHlsZSgpCiB7Ci0g
ICAgcmV0dXJuIGVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSgpLmVuc3VyZUlubGluZUNTU1N0eWxl
RGVjbGFyYXRpb24odGhpcyk7CisgICAgcmV0dXJuIGVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSgp
LmVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oKnRoaXMpOwogfQogCiBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzJiBTdHlsZWRFbGVtZW50OjplbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXggNDQyMDQxY2Q1MDk5NTk1MThmMTdhMWY2
MTA4YzY4NzRhZDMxNjQ0NC4uMzFiOGZiMzI1OWZjOGI4OGJjYjdjYjRhNzIzMmJmMTE2YjZmZjdk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwoU3R5
bGVkRWxlbWVudCopOwogICAgIHZvaWQgc3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFs
KCkgY29uc3QgeyBTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJu
YWwoY29uc3RfY2FzdDxTdHlsZWRFbGVtZW50Kj4odGhpcykpOyB9CiAgICAgCi0gICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiogY3Nzb21TdHlsZSgpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIENT
U1N0eWxlRGVjbGFyYXRpb24mIGNzc29tU3R5bGUoKTsKIAogICAgIGNvbnN0IFN0eWxlUHJvcGVy
dGllcyogcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggM2JjN2ZjNzdkZTVmNjBmNzQ5NjBjYzk0ZWNm
NzFlMDljM2M1NTdkYS4uNTI1OWQzM2ExYWM1YmNjOGI0ZmZhMTU3N2Q5MTQ3Y2QxODU2NjgxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzEwMywxMCArMzEwMywxMCBAQCB2b2lk
IEVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoRWxlbWVudCogZWxlbWVudCkgY29u
c3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTXV0YXRlIHVzaW5nIHRoZSBDU1NPTSB3cmFw
cGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBhIHNjcmlwdC4KLSAgICBD
U1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCplbGVt
ZW50KS5jc3NvbVN0eWxlKCk7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJv
cGVydHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSk7Ci0gICAgc3R5bGUtPnNldFByb3Bl
cnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgInNwYWNlIiwgZmFsc2UpOwot
ICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5TGluZUJyZWFrLCAiYWZ0
ZXItd2hpdGUtc3BhY2UiLCBmYWxzZSk7CisgICAgYXV0byYgc3R5bGUgPSBkb3duY2FzdDxTdHls
ZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21TdHlsZSgpOworICAgIHN0eWxlLnNldFByb3BlcnR5
SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSk7CisgICAg
c3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdE5ic3BNb2RlLCAic3Bh
Y2UiLCBmYWxzZSk7CisgICAgc3R5bGUuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUxp
bmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2UpOwogfQogCiBib29sIEVkaXRvcjo6
ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
aW5kZXggYTRlNDg2MzU4ODc0ZjcyMzQ4OGRiOTJkMjgzYzU5M2Y5OGY5MDJmNy4uMjcwZjg1MDQy
MDk0YzFmMzdiNmI3YWJiNDAyNjM5NzE2MTZlMmVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTU1Niw5ICs1NTYsOSBA
QCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRL
ZWVwU3R5bGVTcGFuSW5saW5lKEluc2VydAogCiAgICAgICAgICAgICAvLyBNdXRhdGUgdXNpbmcg
dGhlIENTU09NIHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2aW9yIGFzIGEg
c2NyaXB0LgogICAgICAgICAgICAgaWYgKGlzQmxvY2soZWxlbWVudCkpCi0gICAgICAgICAgICAg
ICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5
RGlzcGxheSwgImlubGluZSIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3Nv
bVN0eWxlKCkuc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUi
LCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cmVuZGVyZXIoKSAmJiBlbGVtZW50
LT5yZW5kZXJlcigpLT5zdHlsZSgpLmlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgICAgICBlbGVt
ZW50LT5jc3NvbVN0eWxlKCktPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwg
Im5vbmUiLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLnNl
dFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgIm5vbmUiLCBmYWxzZSk7CiAgICAg
ICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCmluZGV4IGZmZDc2
NDFlNjAzOTA1Y2YyNTVlMWQxYTNlMDcwZjFmNTM5YWIxMGEuLjU5YTQ1MDQ2NzI1YjcxZTA1NjBj
MmM1N2M0ZTMxNmRlYTJkZDliNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCkBA
IC01Nyw0ICs1Nyw1IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ01hcCBkYXRh
c2V0OwogfTsKIAorSFRNTEVsZW1lbnQgaW1wbGVtZW50cyBFbGVtZW50Q1NTSW5saW5lU3R5bGU7
CiBIVE1MRWxlbWVudCBpbXBsZW1lbnRzIEdsb2JhbEV2ZW50SGFuZGxlcnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGIyMTFiZTllZTRmMDU0YmJlMDc1YWU3Y2Qy
YjJjMjE2NmFmNGRlODguLmU5NGIxNzQxZTdiZDg4NWQ1MzIzYzg2MWJmYTIxYWU5MmM5NjAwMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC0xNzcsNiArMTc3LDgg
QEAgdW5zaWduZWQgSW1hZ2VJbnB1dFR5cGU6OmhlaWdodCgpIGNvbnN0CiB7CiAgICAgUmVmPEhU
TUxJbnB1dEVsZW1lbnQ+IGVsZW1lbnQodGhpcy0+ZWxlbWVudCgpKTsKIAorICAgIGVsZW1lbnQt
PmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CisKICAgICBpZiAoIWVsZW1lbnQtPnJlbmRlcmVy
KCkpIHsKICAgICAgICAgLy8gQ2hlY2sgdGhlIGF0dHJpYnV0ZSBmaXJzdCBmb3IgYW4gZXhwbGlj
aXQgcGl4ZWwgdmFsdWUuCiAgICAgICAgIGlmIChhdXRvIG9wdGlvbmFsSGVpZ2h0ID0gcGFyc2VI
VE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oaGVpZ2h0QXR0cikpKQpAQCAtMTg4LDggKzE5MCw2IEBAIHVuc2lnbmVkIEltYWdlSW5w
dXRUeXBlOjpoZWlnaHQoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGltYWdlTG9hZGVyLT5p
bWFnZSgpLT5pbWFnZVNpemVGb3JSZW5kZXJlcihlbGVtZW50LT5yZW5kZXJlcigpLCAxKS5oZWln
aHQoKS50b1Vuc2lnbmVkKCk7CiAgICAgfQogCi0gICAgZWxlbWVudC0+ZG9jdW1lbnQoKS51cGRh
dGVMYXlvdXQoKTsKLQogICAgIFJlbmRlckJveCogYm94ID0gZWxlbWVudC0+cmVuZGVyQm94KCk7
CiAgICAgcmV0dXJuIGJveCA/IGFkanVzdEZvckFic29sdXRlWm9vbShib3gtPmNvbnRlbnRIZWln
aHQoKSwgKmJveCkgOiAwOwogfQpAQCAtMTk4LDYgKzE5OCw4IEBAIHVuc2lnbmVkIEltYWdlSW5w
dXRUeXBlOjp3aWR0aCgpIGNvbnN0CiB7CiAgICAgUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IGVsZW1l
bnQodGhpcy0+ZWxlbWVudCgpKTsKIAorICAgIGVsZW1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5
b3V0KCk7CisKICAgICBpZiAoIWVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgLy8gQ2hl
Y2sgdGhlIGF0dHJpYnV0ZSBmaXJzdCBmb3IgYW4gZXhwbGljaXQgcGl4ZWwgdmFsdWUuCiAgICAg
ICAgIGlmIChhdXRvIG9wdGlvbmFsV2lkdGggPSBwYXJzZUhUTUxOb25OZWdhdGl2ZUludGVnZXIo
ZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3aWR0aEF0dHIpKSkKQEAg
LTIwOSw4ICsyMTEsNiBAQCB1bnNpZ25lZCBJbWFnZUlucHV0VHlwZTo6d2lkdGgoKSBjb25zdAog
ICAgICAgICAgICAgcmV0dXJuIGltYWdlTG9hZGVyLT5pbWFnZSgpLT5pbWFnZVNpemVGb3JSZW5k
ZXJlcihlbGVtZW50LT5yZW5kZXJlcigpLCAxKS53aWR0aCgpLnRvVW5zaWduZWQoKTsKICAgICB9
CiAKLSAgICBlbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwotCiAgICAgUmVuZGVy
Qm94KiBib3ggPSBlbGVtZW50LT5yZW5kZXJCb3goKTsKICAgICByZXR1cm4gYm94ID8gYWRqdXN0
Rm9yQWJzb2x1dGVab29tKGJveC0+Y29udGVudFdpZHRoKCksICpib3gpIDogMDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDdjMTk5
MmYyYWJiYjQ3M2JjZDY3OThlZjM5MWZiZDQ0M2JkNWE1YjQuLmE3YzEzYjg1MDhmNmVmMTIwYjkz
MWI2Mzc3ODI5MmE3M2VmODkxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmNwcApAQCAtNjA2LDkgKzYwNiw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
aW50IG5vCiAgICAgICAgICAgICAgICAgYXV0byBlbnRyeSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeTo6Y3JlYXRlKCkKICAgICAgICAgICAgICAgICAgICAg
LnNldE1hdGNoZWRDU1NSdWxlcyhidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KHBhcmVudE1h
dGNoZWRSdWxlcywgc3R5bGVSZXNvbHZlciwgKnBhcmVudEVsZW1lbnQsIE5PUFNFVURPKSkKICAg
ICAgICAgICAgICAgICAgICAgLnJlbGVhc2UoKTsKLSAgICAgICAgICAgICAgICBpZiAocGFyZW50
RWxlbWVudC0+Y3Nzb21TdHlsZSgpICYmIHBhcmVudEVsZW1lbnQtPmNzc29tU3R5bGUoKS0+bGVu
Z3RoKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZSogc3R5bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChwYXJlbnRFbGVt
ZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zZXRJbmxpbmVTdHlsZShzdHls
ZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKHN0eWxlU2hlZXQtPnN0eWxlRm9ySWQoSW5zcGVj
dG9yQ1NTSWQoc3R5bGVTaGVldC0+aWQoKSwgMCkpKSk7CisgICAgICAgICAgICAgICAgaWYgKGlz
PFN0eWxlZEVsZW1lbnQ+KCpwYXJlbnRFbGVtZW50KSAmJiBkb3duY2FzdDxTdHlsZWRFbGVtZW50
PigqcGFyZW50RWxlbWVudCkuY3Nzb21TdHlsZSgpLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8mIHN0eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQoZG93bmNhc3Q8
U3R5bGVkRWxlbWVudD4oKnBhcmVudEVsZW1lbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgZW50
cnktPnNldElubGluZVN0eWxlKHN0eWxlU2hlZXQuYnVpbGRPYmplY3RGb3JTdHlsZShzdHlsZVNo
ZWV0LnN0eWxlRm9ySWQoSW5zcGVjdG9yQ1NTSWQoc3R5bGVTaGVldC5pZCgpLCAwKSkpKTsKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBlbnRyaWVzLT5hZGRJdGVtKFdURk1v
dmUoZW50cnkpKTsKQEAgLTYyMiwxNiArNjIyLDE0IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5v
CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJpYnV0ZXNTdHlsZSkKIHsKLSAgICBFbGVtZW50KiBlbGVt
ZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwotICAgIGlmICghZWxlbWVu
dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlKiBzdHlsZVNoZWV0ID0gYXNJbnNwZWN0b3JTdHlsZVNoZWV0KGVsZW1lbnQpOwotICAgIGlm
ICghc3R5bGVTaGVldCkKKyAgICBhdXRvKiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3Ry
aW5nLCBub2RlSWQpOworICAgIGlmICghaXM8U3R5bGVkRWxlbWVudD4oZWxlbWVudCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlubGluZVN0eWxlID0gc3R5bGVTaGVldC0+YnVpbGRPYmplY3RG
b3JTdHlsZShlbGVtZW50LT5jc3NvbVN0eWxlKCkpOwotICAgIGlmIChhdXRvIGF0dHJpYnV0ZXMg
PSBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShlbGVtZW50KSkKKyAgICBhdXRvJiBzdHls
ZWRFbGVtZW50ID0gZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oKmVsZW1lbnQpOworICAgIGF1dG8m
IHN0eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQoc3R5bGVkRWxlbWVudCk7CisgICAg
aW5saW5lU3R5bGUgPSBzdHlsZVNoZWV0LmJ1aWxkT2JqZWN0Rm9yU3R5bGUoJnN0eWxlZEVsZW1l
bnQuY3Nzb21TdHlsZSgpKTsKKyAgICBpZiAoYXV0byBhdHRyaWJ1dGVzID0gYnVpbGRPYmplY3RG
b3JBdHRyaWJ1dGVzU3R5bGUoc3R5bGVkRWxlbWVudCkpCiAgICAgICAgIGF0dHJpYnV0ZXNTdHls
ZSA9IFdURk1vdmUoYXR0cmlidXRlcyk7CiAgICAgZWxzZQogICAgICAgICBhdHRyaWJ1dGVzU3R5
bGUgPSBudWxscHRyOwpAQCAtNjM5LDEyICs2MzcsMTIgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBu
b2QKIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJv
cGVydHk+PiYgc3R5bGUpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChl
cnJvclN0cmluZywgbm9kZUlkKTsKKyAgICBhdXRvKiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVy
cm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZUlu
Zm8gPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgqZWxlbWVudCwgdHJ1ZSk7
Ci0gICAgUmVmPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxl
OjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoKSwgY29tcHV0ZWRTdHlsZUluZm8sIG51bGxwdHIpOwor
ICAgIGF1dG8gY29tcHV0ZWRTdHlsZUluZm8gPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OmNyZWF0ZSgqZWxlbWVudCwgdHJ1ZSk7CisgICAgYXV0byBpbnNwZWN0b3JTdHlsZSA9IEluc3Bl
Y3RvclN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoKSwgV1RGTW92ZShjb21wdXRlZFN0eWxl
SW5mbyksIG51bGxwdHIpOwogICAgIHN0eWxlID0gaW5zcGVjdG9yU3R5bGUtPmJ1aWxkQXJyYXlG
b3JDb21wdXRlZFN0eWxlKCk7CiB9CiAKQEAgLTkyMCwyMiArOTE4LDE5IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBpbnQgZG9jCiAgICAgcmVzdWx0ID0gV1RGTW92ZShuYW1lZEZsb3dzKTsKIH0KIAotSW5z
cGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNw
ZWN0b3JTdHlsZVNoZWV0KEVsZW1lbnQqIGVsZW1lbnQpCitJbnNwZWN0b3JTdHlsZVNoZWV0Rm9y
SW5saW5lU3R5bGUmIEluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQoU3R5
bGVkRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBOb2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0Ojpp
dGVyYXRvciBpdCA9IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5maW5kKGVsZW1lbnQpOwor
ICAgIGF1dG8gaXQgPSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZmluZCgmZWxlbWVudCk7
CiAgICAgaWYgKGl0ID09IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5lbmQoKSkgewotICAg
ICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IGVsZW1lbnQtPmNzc29tU3R5bGUoKTsK
LSAgICAgICAgaWYgKCFzdHlsZSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAg
ICAgIFN0cmluZyBuZXdTdHlsZVNoZWV0SWQgPSBTdHJpbmc6Om51bWJlcihtX2xhc3RTdHlsZVNo
ZWV0SWQrKyk7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGU+IGluc3BlY3RvclN0eWxlU2hlZXQgPSBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5
bGU6OmNyZWF0ZShtX2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgbmV3U3R5bGVTaGVldElkLCBlbGVt
ZW50LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIs
IHRoaXMpOwotICAgICAgICBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChuZXdTdHlsZVNo
ZWV0SWQsIGluc3BlY3RvclN0eWxlU2hlZXQpOwotICAgICAgICBtX25vZGVUb0luc3BlY3RvclN0
eWxlU2hlZXQuc2V0KGVsZW1lbnQsIGluc3BlY3RvclN0eWxlU2hlZXQpOwotICAgICAgICByZXR1
cm4gaW5zcGVjdG9yU3R5bGVTaGVldC5nZXQoKTsKKyAgICAgICAgYXV0byBpbnNwZWN0b3JTdHls
ZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUobV9kb21B
Z2VudC0+cGFnZUFnZW50KCksIG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyLCB0aGlzKTsKKyAgICAgICAg
YXV0byYgaW5zcGVjdG9yU3R5bGVTaGVldFJlZiA9IGluc3BlY3RvclN0eWxlU2hlZXQuZ2V0KCk7
CisgICAgICAgIG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KG5ld1N0eWxlU2hlZXRJZCwg
aW5zcGVjdG9yU3R5bGVTaGVldC5jb3B5UmVmKCkpOworICAgICAgICBtX25vZGVUb0luc3BlY3Rv
clN0eWxlU2hlZXQuc2V0KCZlbGVtZW50LCBXVEZNb3ZlKGluc3BlY3RvclN0eWxlU2hlZXQpKTsK
KyAgICAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXRSZWY7CiAgICAgfQogCi0gICAgcmV0
dXJuIGl0LT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gKml0LT52YWx1ZTsKIH0KIAogRWxlbWVu
dCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmVsZW1lbnRGb3JJZChFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGludCBub2RlSWQpCkBAIC0xMDg1LDIxICsxMDgwLDE1IEBAIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IElu
c3BlY3RvCiAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAotUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVj
dEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50KiBlbGVtZW50KQorUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZv
ckF0dHJpYnV0ZXNTdHlsZShTdHlsZWRFbGVtZW50JiBlbGVtZW50KQogewotICAgIEFTU0VSVChl
bGVtZW50KTsKLSAgICBpZiAoIWlzPFN0eWxlZEVsZW1lbnQ+KCplbGVtZW50KSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KICAgICAvLyBGSVhNRTogVWdsaW5lc3MgYmVsb3cuCi0gICAgU3R5
bGVQcm9wZXJ0aWVzKiBhdHRyaWJ1dGVTdHlsZSA9IGNvbnN0X2Nhc3Q8U3R5bGVQcm9wZXJ0aWVz
Kj4oZG93bmNhc3Q8U3R5bGVkRWxlbWVudD4oZWxlbWVudCktPnByZXNlbnRhdGlvbkF0dHJpYnV0
ZVN0eWxlKCkpOworICAgIGF1dG8qIGF0dHJpYnV0ZVN0eWxlID0gY29uc3RfY2FzdDxTdHlsZVBy
b3BlcnRpZXMqPihlbGVtZW50LnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkpOwogICAgIGlm
ICghYXR0cmlidXRlU3R5bGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oYXR0cmlidXRlU3R5bGUtPmlzTXV0YWJsZSgpKTsK
LSAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBtdXRhYmxlQXR0cmlidXRlU3R5bGUgPSBzdGF0
aWNfY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKj4oYXR0cmlidXRlU3R5bGUpOwotCi0gICAg
UmVmPEluc3BlY3RvclN0eWxlPiBpbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxlOjpjcmVh
dGUoSW5zcGVjdG9yQ1NTSWQoKSwgbXV0YWJsZUF0dHJpYnV0ZVN0eWxlLT5lbnN1cmVDU1NTdHls
ZURlY2xhcmF0aW9uKCksIG51bGxwdHIpOworICAgIGF1dG8mIG11dGFibGVBdHRyaWJ1dGVTdHls
ZSA9IGRvd25jYXN0PE11dGFibGVTdHlsZVByb3BlcnRpZXM+KCphdHRyaWJ1dGVTdHlsZSk7Cisg
ICAgYXV0byBpbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoSW5zcGVjdG9y
Q1NTSWQoKSwgbXV0YWJsZUF0dHJpYnV0ZVN0eWxlLmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24o
KSwgbnVsbHB0cik7CiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlLT5idWlsZE9iamVjdEZvclN0
eWxlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmgKaW5kZXggNzhlYmNhN2EwOWNhYWZlYzA0NjI0Njc3MzA3YjY4NTFmN2ViMGIyOS4uNjg3NzAw
YTdlZGNiNDc2YjNlNWFiNjYxOGIzZmJmMjcxODFmNWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRl
OgogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIHVuc2lnbmVkPiBOb2RlSWRUb0ZvcmNlZFBzZXVk
b1N0YXRlOwogCiAgICAgdm9pZCByZXNldE5vblBlcnNpc3RlbnREYXRhKCk7Ci0gICAgSW5zcGVj
dG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBhc0luc3BlY3RvclN0eWxlU2hlZXQoRWxlbWVu
dCogZWxlbWVudCk7CisgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlJiBhc0lu
c3BlY3RvclN0eWxlU2hlZXQoU3R5bGVkRWxlbWVudCYpOwogICAgIEVsZW1lbnQqIGVsZW1lbnRG
b3JJZChFcnJvclN0cmluZyYsIGludCBub2RlSWQpOwogICAgIGludCBkb2N1bWVudE5vZGVXaXRo
UmVxdWVzdGVkRmxvd3NJZChEb2N1bWVudCopOwogCkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9i
amVjdEZvclJ1bGUoU3R5bGVSdWxlKiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQmKTsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1
bGUoQ1NTU3R5bGVSdWxlKik7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4gYnVpbGRBcnJheUZvck1hdGNo
ZWRSdWxlTGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiwgU3R5bGVSZXNvbHZl
ciYsIEVsZW1lbnQmLCBQc2V1ZG9JZCk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1lbnQqKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmpl
Y3RGb3JBdHRyaWJ1dGVzU3R5bGUoU3R5bGVkRWxlbWVudCYpOwogICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJlZ2lvbj4+IGJ1
aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPE5vZGVMaXN0PiYmLCBpbnQg
ZG9jdW1lbnROb2RlSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5h
bWVkRmxvdz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcmLCBXZWJLaXROYW1l
ZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggNmIwYThlZTdiYTJjZmQ4ODhlNDkw
NTY3Y2FhNGYxODc2N2QzMzk1YS4uNjNjNDQ4ZGM1NDExM2M5YTcyMWZiYTY3NGZhMGEyNDc3ZmZi
NWExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcApAQCAtNTE4LDE3ICs1MTgsMTYgQEAgc3RhdGljIHZvaWQgZmlsbE1lZGlhTGlzdENo
YWluKENTU1J1bGUqIHJ1bGUsIEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1MKICAg
ICB9CiB9CiAKLVJlZjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShjb25z
dCBJbnNwZWN0b3JDU1NJZCYgc3R5bGVJZCwgUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+JiYg
c3R5bGUsIEluc3BlY3RvclN0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQpCitSZWY8SW5zcGVj
dG9yU3R5bGU+IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0
eWxlSWQsIFJlZjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJbnNwZWN0b3JTdHlsZVNo
ZWV0KiBwYXJlbnRTdHlsZVNoZWV0KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3Bl
Y3RvclN0eWxlKHN0eWxlSWQsIFdURk1vdmUoc3R5bGUpLCBwYXJlbnRTdHlsZVNoZWV0KSk7CiB9
CiAKLUluc3BlY3RvclN0eWxlOjpJbnNwZWN0b3JTdHlsZShjb25zdCBJbnNwZWN0b3JDU1NJZCYg
c3R5bGVJZCwgUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+JiYgc3R5bGUsIEluc3BlY3RvclN0
eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQpCitJbnNwZWN0b3JTdHlsZTo6SW5zcGVjdG9yU3R5
bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFJlZjxDU1NTdHlsZURlY2xhcmF0aW9u
PiYmIHN0eWxlLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KQogICAgIDog
bV9zdHlsZUlkKHN0eWxlSWQpCi0gICAgLCBtX3N0eWxlKHN0eWxlKQorICAgICwgbV9zdHlsZShX
VEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fcGFyZW50U3R5bGVTaGVldChwYXJlbnRTdHlsZVNoZWV0
KQogewotICAgIEFTU0VSVChtX3N0eWxlKTsKIH0KIAogSW5zcGVjdG9yU3R5bGU6On5JbnNwZWN0
b3JTdHlsZSgpCkBAIC03NDUsMTIgKzc0NCwxMiBAQCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+
IEluc3BlY3RvclN0eWxlOjpleHRyYWN0U291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3BhcmVudFN0eWxlU2hlZXQgfHwgIW1fcGFyZW50U3R5bGVTaGVldC0+ZW5zdXJlUGFyc2VkRGF0
YVJlYWR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBtX3BhcmVudFN0
eWxlU2hlZXQtPnJ1bGVTb3VyY2VEYXRhRm9yKG1fc3R5bGUuZ2V0KCkpOworICAgIHJldHVybiBt
X3BhcmVudFN0eWxlU2hlZXQtPnJ1bGVTb3VyY2VEYXRhRm9yKG1fc3R5bGUucHRyKCkpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBJbnNwZWN0b3JTdHlsZTo6c2V0VGV4dChjb25zdCBTdHJpbmcm
IHRleHQpCiB7Ci0gICAgcmV0dXJuIG1fcGFyZW50U3R5bGVTaGVldC0+c2V0U3R5bGVUZXh0KG1f
c3R5bGUuZ2V0KCksIHRleHQpOworICAgIHJldHVybiBtX3BhcmVudFN0eWxlU2hlZXQtPnNldFN0
eWxlVGV4dChtX3N0eWxlLnB0cigpLCB0ZXh0KTsKIH0KIAogU3RyaW5nIEluc3BlY3RvclN0eWxl
OjpzaG9ydGhhbmRWYWx1ZShjb25zdCBTdHJpbmcmIHNob3J0aGFuZFByb3BlcnR5KSBjb25zdApA
QCAtMTI1Nyw3ICsxMjU2LDcgQEAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBJbnNwZWN0b3JTdHls
ZVNoZWV0OjppbnNwZWN0b3JTdHlsZUZvcklkKGNvbnN0IEluc3BlY3RvckMKICAgICBpZiAoIXN0
eWxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBJbnNwZWN0b3JTdHls
ZTo6Y3JlYXRlKGlkLCBzdHlsZSwgdGhpcyk7CisgICAgcmV0dXJuIEluc3BlY3RvclN0eWxlOjpj
cmVhdGUoaWQsICpzdHlsZSwgdGhpcyk7CiB9CiAKIEluc3BlY3RvckNTU0lkIEluc3BlY3RvclN0
eWxlU2hlZXQ6OnJ1bGVPclN0eWxlSWQoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0
CkBAIC0xNDcyLDI2ICsxNDcxLDI1IEBAIHZvaWQgSW5zcGVjdG9yU3R5bGVTaGVldDo6Y29sbGVj
dEZsYXRSdWxlcyhSZWZQdHI8Q1NTUnVsZUxpc3Q+JiYgcnVsZUxpc3QsIENTU1N0CiAgICAgfQog
fQogCi1SZWY8SW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCwgY29uc3QgU3RyaW5nJiBpZCwgUmVmUHRyPEVsZW1lbnQ+JiYgZWxlbWVudCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3Rl
bmVyKQorUmVmPEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gSW5zcGVjdG9yU3R5
bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQsIGNvbnN0IFN0cmluZyYgaWQsIFJlZjxTdHlsZWRFbGVtZW50PiYmIGVsZW1lbnQsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBs
aXN0ZW5lcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGUocGFnZUFnZW50LCBpZCwgV1RGTW92ZShlbGVtZW50KSwgb3JpZ2luLCBs
aXN0ZW5lcikpOwogfQogCi1JbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2Vu
dCwgY29uc3QgU3RyaW5nJiBpZCwgUmVmUHRyPEVsZW1lbnQ+JiYgZWxlbWVudCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3Rl
bmVyKQorSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIGNvbnN0IFN0
cmluZyYgaWQsIFJlZjxTdHlsZWRFbGVtZW50PiYmIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbiBvcmlnaW4sIExpc3RlbmVyKiBsaXN0ZW5lcikKICAg
ICA6IEluc3BlY3RvclN0eWxlU2hlZXQocGFnZUFnZW50LCBpZCwgbnVsbHB0ciwgb3JpZ2luLCBT
dHJpbmcoKSwgbGlzdGVuZXIpCiAgICAgLCBtX2VsZW1lbnQoV1RGTW92ZShlbGVtZW50KSkKICAg
ICAsIG1fcnVsZVNvdXJjZURhdGEobnVsbHB0cikKICAgICAsIG1faXNTdHlsZVRleHRWYWxpZChm
YWxzZSkKIHsKLSAgICBBU1NFUlQobV9lbGVtZW50KTsKICAgICBtX2luc3BlY3RvclN0eWxlID0g
SW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JDU1NJZChpZCwgMCksIGlubGluZVN0eWxl
KCksIHRoaXMpOwotICAgIG1fc3R5bGVUZXh0ID0gbV9lbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQo
KSA/IG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKCJzdHlsZSIpLnN0cmluZygpIDogU3RyaW5nKCk7
CisgICAgbV9zdHlsZVRleHQgPSBtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZSgic3R5bGUiKS5zdHJp
bmcoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmRpZE1v
ZGlmeUVsZW1lbnRBdHRyaWJ1dGUoKQogewogICAgIG1faXNTdHlsZVRleHRWYWxpZCA9IGZhbHNl
OwotICAgIGlmIChtX2VsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpICYmIG1fZWxlbWVudC0+Y3Nz
b21TdHlsZSgpICE9IG1faW5zcGVjdG9yU3R5bGUtPmNzc1N0eWxlKCkpCisgICAgaWYgKCZtX2Vs
ZW1lbnQtPmNzc29tU3R5bGUoKSAhPSAmbV9pbnNwZWN0b3JTdHlsZS0+Y3NzU3R5bGUoKSkKICAg
ICAgICAgbV9pbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0eWxlOjpjcmVhdGUoSW5zcGVjdG9y
Q1NTSWQoaWQoKSwgMCksIGlubGluZVN0eWxlKCksIHRoaXMpOwogICAgIG1fcnVsZVNvdXJjZURh
dGEgPSBudWxscHRyOwogfQpAQCAtMTUwNyw3ICsxNTA1LDcgQEAgRXhjZXB0aW9uT3I8U3RyaW5n
PiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OnRleHQoKSBjb25zdAogCiBFeGNl
cHRpb25Pcjx2b2lkPiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OnNldFN0eWxl
VGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewot
ICAgIEFTU0VSVF9VTlVTRUQoc3R5bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOworICAgIEFT
U0VSVF9VTlVTRUQoc3R5bGUsIHN0eWxlID09ICZpbmxpbmVTdHlsZSgpKTsKIAogICAgIHsKICAg
ICAgICAgSW5zcGVjdG9yQ1NTQWdlbnQ6OklubGluZVN0eWxlT3ZlcnJpZGVTY29wZSBvdmVycmlk
ZVNjb3BlKG1fZWxlbWVudC0+ZG9jdW1lbnQoKSk7CkBAIC0xNTQ0LDkgKzE1NDIsNiBAQCBib29s
IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6ZW5zdXJlUGFyc2VkRGF0YVJlYWR5
KCkKICAgICBpZiAobV9ydWxlU291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBpZiAoIW1fZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQogICAgIG1fcnVsZVNvdXJjZURhdGEgPSBydWxlU291cmNlRGF0YSgpOwogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMTU1Nyw3ICsxNTUyLDcgQEAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBJ
bnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Omluc3BlY3RvclN0eWxlRm9ySWQoY28K
ICAgICByZXR1cm4gbV9pbnNwZWN0b3JTdHlsZS5jb3B5UmVmKCk7CiB9CiAKLUNTU1N0eWxlRGVj
bGFyYXRpb24qIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6aW5saW5lU3R5bGUo
KSBjb25zdAorQ1NTU3R5bGVEZWNsYXJhdGlvbiYgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjppbmxpbmVTdHlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZWxlbWVudC0+Y3Nz
b21TdHlsZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmgKaW5kZXggZGY5NWQxY2U1MjA3YWUyNDBhMzZkYjVlMjQ0NmJjY2FiYTlkYzdjZC4u
MmYzMWYzMGI5N2JlNDhiY2I4NWVmN2I4YjY1NzQ3ZDAyOGM1MGI4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCkBAIC0xMjIsMTAgKzEyMiwx
MCBAQCBzdHJ1Y3QgSW5zcGVjdG9yU3R5bGVQcm9wZXJ0eSB7CiAKIGNsYXNzIEluc3BlY3RvclN0
eWxlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yU3R5bGU+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEluc3BlY3RvclN0eWxlPiBjcmVhdGUoY29uc3QgSW5zcGVjdG9yQ1NT
SWQmIHN0eWxlSWQsIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmLCBJbnNwZWN0b3JTdHls
ZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KTsKKyAgICBzdGF0aWMgUmVmPEluc3BlY3RvclN0eWxl
PiBjcmVhdGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFJlZjxDU1NTdHlsZURlY2xh
cmF0aW9uPiYmLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KTsKICAgICB+
SW5zcGVjdG9yU3R5bGUoKTsKIAotICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIGNzc1N0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQorICAgIENTU1N0eWxlRGVjbGFyYXRpb24m
IGNzc1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQogICAgIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvclN0eWxlKCkg
Y29uc3Q7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4gYnVpbGRBcnJheUZvckNvbXB1
dGVkU3R5bGUoKSBjb25zdDsKIApAQCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIElu
c3BlY3RvclN0eWxlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBSZWZQdHI8Q1NTU3R5
bGVEZWNsYXJhdGlvbj4mJiwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCk7
CisgICAgSW5zcGVjdG9yU3R5bGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFJlZjxD
U1NTdHlsZURlY2xhcmF0aW9uPiYmLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNo
ZWV0KTsKIAogICAgIHZvaWQgcG9wdWxhdGVBbGxQcm9wZXJ0aWVzKFZlY3RvcjxJbnNwZWN0b3JT
dHlsZVByb3BlcnR5PiogcmVzdWx0KSBjb25zdDsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZT4gc3R5bGVXaXRoUHJvcGVydGllcygpIGNvbnN0OwpAQCAtMTQzLDcg
KzE0Myw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbG9uZ2hhbmRQcm9wZXJ0aWVz
KGNvbnN0IFN0cmluZyYgc2hvcnRoYW5kUHJvcGVydHkpIGNvbnN0OwogCiAgICAgSW5zcGVjdG9y
Q1NTSWQgbV9zdHlsZUlkOwotICAgIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBtX3N0eWxl
OworICAgIFJlZjxDU1NTdHlsZURlY2xhcmF0aW9uPiBtX3N0eWxlOwogICAgIEluc3BlY3RvclN0
eWxlU2hlZXQqIG1fcGFyZW50U3R5bGVTaGVldDsKIH07CiAKQEAgLTIyOSwxNyArMjI5LDE3IEBA
IHByaXZhdGU6CiAKIGNsYXNzIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3JTdHlsZVNoZWV0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZT4gY3JlYXRlKEluc3BlY3RvclBhZ2VB
Z2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4sIExpc3RlbmVyKik7CisgICAgc3RhdGljIFJl
ZjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU+IGNyZWF0ZShJbnNwZWN0b3JQYWdl
QWdlbnQqLCBjb25zdCBTdHJpbmcmIGlkLCBSZWY8U3R5bGVkRWxlbWVudD4mJiwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luLCBMaXN0ZW5lciopOwogCiAgICAgdm9p
ZCBkaWRNb2RpZnlFbGVtZW50QXR0cmlidXRlKCk7CiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiB0
ZXh0KCkgY29uc3QgZmluYWw7Ci0gICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVGb3JJZChj
b25zdCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNvbnN0IGZpbmFsIHsgQVNTRVJUX1VOVVNFRChpZCwg
IWlkLm9yZGluYWwoKSk7IHJldHVybiBpbmxpbmVTdHlsZSgpOyB9CisgICAgQ1NTU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNvbnN0IGZpbmFs
IHsgQVNTRVJUX1VOVVNFRChpZCwgIWlkLm9yZGluYWwoKSk7IHJldHVybiAmaW5saW5lU3R5bGUo
KTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxl
KEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYm
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4sIExpc3RlbmVyKik7
CisgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKEluc3BlY3RvclBhZ2VBZ2Vu
dCosIGNvbnN0IFN0cmluZyYgaWQsIFJlZjxTdHlsZWRFbGVtZW50PiYmLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4sIExpc3RlbmVyKik7CiAKICAgICBEb2N1bWVu
dCogb3duZXJEb2N1bWVudCgpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxDU1NSdWxlU291cmNl
RGF0YT4gcnVsZVNvdXJjZURhdGFGb3IoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpIGNvbnN0
IGZpbmFsIHsgQVNTRVJUX1VOVVNFRChzdHlsZSwgc3R5bGUgPT0gaW5saW5lU3R5bGUoKSk7IHJl
dHVybiBtX3J1bGVTb3VyY2VEYXRhOyB9CisgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBy
dWxlU291cmNlRGF0YUZvcihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3QgZmluYWwg
eyBBU1NFUlRfVU5VU0VEKHN0eWxlLCBzdHlsZSA9PSAmaW5saW5lU3R5bGUoKSk7IHJldHVybiBt
X3J1bGVTb3VyY2VEYXRhOyB9CiAgICAgdW5zaWduZWQgcnVsZUluZGV4QnlTdHlsZShDU1NTdHls
ZURlY2xhcmF0aW9uKikgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIGJvb2wgZW5zdXJl
UGFyc2VkRGF0YVJlYWR5KCkgZmluYWw7CiAgICAgUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNw
ZWN0b3JTdHlsZUZvcklkKGNvbnN0IEluc3BlY3RvckNTU0lkJikgZmluYWw7CkBAIC0yNDksMTEg
KzI0OSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+
PiBsaW5lRW5kaW5ncygpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgotICAgIENTU1N0eWxlRGVj
bGFyYXRpb24qIGlubGluZVN0eWxlKCkgY29uc3Q7CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiYg
aW5saW5lU3R5bGUoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIGVsZW1lbnRTdHlsZVRleHQo
KSBjb25zdDsKICAgICBSZWY8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1bGVTb3VyY2VEYXRhKCkgY29u
c3Q7CiAKLSAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OworICAgIFJlZjxTdHlsZWRFbGVt
ZW50PiBtX2VsZW1lbnQ7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBtX3J1bGVTb3Vy
Y2VEYXRhOwogICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gbV9pbnNwZWN0b3JTdHlsZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaWRsIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuaWRsCmluZGV4IGZjYjY0YWVkYzI4ODVhOGUxNTI1ZjFmOTBj
ODJmYmQ0ZTliMWQ5ZTAuLjQyZTIwZmUyZjg0Y2M4YTlmYWM0ZjIzZWQ3MTMwYWRhZWVjNjA4N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5pZGwKQEAgLTMwLDcgKzMwLDYgQEAKICAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHhtbHNwYWNlOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0Fu
aW1hdGVkU3RyaW5nIGNsYXNzTmFtZTsKLSAgICBbSW1wbGVtZW50ZWRBcz1jc3NvbVN0eWxlXSBy
ZWFkb25seSBhdHRyaWJ1dGUgQ1NTU3R5bGVEZWNsYXJhdGlvbiBzdHlsZTsKIAogICAgIGF0dHJp
YnV0ZSBsb25nIHRhYkluZGV4OwogCkBAIC00NCw0ICs0Myw1IEBACiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZ01hcCBkYXRhc2V0OwogfTsKIAorU1ZHRWxlbWVudCBpbXBsZW1lbnRz
IEVsZW1lbnRDU1NJbmxpbmVTdHlsZTsKIFNWR0VsZW1lbnQgaW1wbGVtZW50cyBHbG9iYWxFdmVu
dEhhbmRsZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRWxlbWVudC5tbQppbmRleCA2ZDE4M2M5M2Zj
M2M1MGRmNGM5MWZiNjk3NmRkZTIzNDkwZmJhOTJhLi5lN2FhZTdkOGJhNGY1NmQyMTk0YWUyODRl
YzY1YmMzNWI4MWU5YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRWxl
bWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRWxlbWVudC5tbQpAQCAtNDEs
NiArNDEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9OYW1lTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTm9kZUxpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1N0eWxlZEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFk
Q2hlY2suaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oPgogCkBA
IC03Miw3ICs3Myw4IEBAIC0gKE5TU3RyaW5nICopdGFnTmFtZQogLSAoRE9NQ1NTU3R5bGVEZWNs
YXJhdGlvbiAqKXN0eWxlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOwotICAgIHJldHVybiBraXQodW53cmFwKCpzZWxmKS5jc3NvbVN0eWxlKCkpOworICAgIGF1
dG8mIGVsZW1lbnQgPSB1bndyYXAoKnNlbGYpOworICAgIHJldHVybiBpczxXZWJDb3JlOjpTdHls
ZWRFbGVtZW50PihlbGVtZW50KSA/IGtpdCgmZG93bmNhc3Q8V2ViQ29yZTo6U3R5bGVkRWxlbWVu
dD4oZWxlbWVudCkuY3Nzb21TdHlsZSgpKSA6IG51bGxwdHI7CiB9CiAKIC0gKGludClvZmZzZXRM
ZWZ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0KaW5kZXggMjY2ZGI0OTA2ODhkNjEyNjNmNGFiMDBjYjM2MzhjMGM4ZTc1NmMyNi4u
MjQ5Zjk1MGE1ODU5OGVkOWM3MzU5MjQ3Y2RlNGFmNjBmNTg4ODFlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMjU0
LDcgKzI1NCw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKFN0eWxl
UHJvcGVydGllcyogc3R5bGUsIFJhbmdlKiByYW5nZSkKIHsKICAgICBSZWY8TXV0YWJsZVN0eWxl
UHJvcGVydGllcz4gbXV0YWJsZVN0eWxlKHN0eWxlLT5pc011dGFibGUoKSA/IFJlZjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPihzdGF0aWNfY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJj4oKnN0
eWxlKSkgOiBzdHlsZS0+bXV0YWJsZUNvcHkoKSk7CiAgICAgcmV0dXJuIFtbbV93ZWJWaWV3IF9l
ZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3Ci0gICAgICAgIHNob3Vs
ZEFwcGx5U3R5bGU6a2l0KG11dGFibGVTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigp
KSB0b0VsZW1lbnRzSW5ET01SYW5nZTpraXQocmFuZ2UpXTsKKyAgICAgICAgc2hvdWxkQXBwbHlT
dHlsZTpraXQoJm11dGFibGVTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpKSB0b0Vs
ZW1lbnRzSW5ET01SYW5nZTpraXQocmFuZ2UpXTsKIH0KIAogc3RhdGljIHZvaWQgdXBkYXRlRm9u
dFBhbmVsKFdlYlZpZXcgKndlYlZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQppbmRleCA1ODE5NWVlMzY1OWIxZGNkM2Y5NWRjMjNkYjEyYjc4NTQ3YjI0MjE1Li4zNjg1ZTJj
MDZmMDU2ZjU2MTE2Y2Y0ZTRiMzhmYTQxN2IzNjk2Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KQEAgLTkyMSw3ICs5MjEsNyBAQCAtIChET01DU1NTdHlsZURlY2xhcmF0
aW9uICopX3R5cGluZ1N0eWxlCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IHR5
cGluZ1N0eWxlID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuY29weVR5cGluZ1N0
eWxlKCk7CiAgICAgaWYgKCF0eXBpbmdTdHlsZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBy
ZXR1cm4ga2l0KHR5cGluZ1N0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkpOworICAg
IHJldHVybiBraXQoJnR5cGluZ1N0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkpOwog
fQogCiAtICh2b2lkKV9zZXRUeXBpbmdTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0
eWxlIHdpdGhVbmRvQWN0aW9uOihFZGl0QWN0aW9uKXVuZG9BY3Rpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQppbmRleCA5NWUwZWVlMDUwMDhjYzcwOTVlNGJjYjA0ZDNhZTMzZjI0
MTc1NmY1Li5mMGIzY2VkMjg4N2JmYzZlMWM4YjJmNzA3NzhkYWYzNjBjZTA5YjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yMTA1LDcgKzIxMDUsNyBAQCAtIChET01D
U1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGVBdFNlbGVjdGlvblN0YXJ0CiAgICAgYXV0byogc3R5
bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCk7CiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICByZXR1cm4ga2l0KHN0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9u
KCkpOworICAgIHJldHVybiBraXQoJnN0eWxlLT5lbnN1cmVDU1NTdHlsZURlY2xhcmF0aW9uKCkp
OwogfQogCiAtIChOU1VJbnRlZ2VyKV9yZW5kZXJUcmVlU2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29y
ZUNsYXNzZXMuY3BwCmluZGV4IDkxZmUzNjRlOTUxZTc2N2JiYzFkNTg5MTQwNGU5YjczMDUyZDk2
NDkuLjFlNzEzMGVkNDNhYTQzNDAzNGViNTY4Yjg0YjM2ZWIwZDUzNjcwOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1JhbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdHlsZWRF
bGVtZW50Lmg+CiAKICNpbmNsdWRlIDxpbml0Z3VpZC5oPgogLy8gezNCMEMwRUZGLTQ3OEItNGIw
Yi04MjkwLUQyMzIxRTA4RTIzRX0KQEAgLTEzNTAsMTQgKzEzNTEsMTAgQEAgSFJFU1VMVCBET01F
bGVtZW50OjpzdHlsZShfQ09NX091dHB0cl9vcHRfIElET01DU1NTdHlsZURlY2xhcmF0aW9uKiog
cmVzdWx0KQogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogICAg
ICpyZXN1bHQgPSBudWxscHRyOwotICAgIGlmICghbV9lbGVtZW50KQotICAgICAgICByZXR1cm4g
RV9GQUlMOwotCi0gICAgV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUgPSBtX2Vs
ZW1lbnQtPmNzc29tU3R5bGUoKTsKLSAgICBpZiAoIXN0eWxlKQorICAgIGlmICghaXM8V2ViQ29y
ZTo6U3R5bGVkRWxlbWVudD4obV9lbGVtZW50KSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAot
ICAgICpyZXN1bHQgPSBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGVJbnN0YW5jZShzdHls
ZSk7CisgICAgKnJlc3VsdCA9IERPTUNTU1N0eWxlRGVjbGFyYXRpb246OmNyZWF0ZUluc3RhbmNl
KCZkb3duY2FzdDxXZWJDb3JlOjpTdHlsZWRFbGVtZW50PigqbV9lbGVtZW50KS5jc3NvbVN0eWxl
KCkpOwogICAgIHJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudC5jcHAKaW5kZXggNTlhMTVkMzM5ZDQ5
NGYyZTIzZmI1MGUyODQxNTU1YWQ0Yzg3MGVkZS4uYjU2NzVhMGI0NGZiZDVjZWZiMWJhNjA0ZDZj
MzVjOGYwMjJkM2Q5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUVs
ZW1lbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiR09iamVjdEV2ZW50TGlzdGVu
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdHlsZWRFbGVtZW50
Lmg+CiAjaW5jbHVkZSAiV2ViS2l0RE9NQXR0clByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRE
T01DU1NTdHlsZURlY2xhcmF0aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTUNsaWVu
dFJlY3RMaXN0UHJpdmF0ZS5oIgpAQCAtMTA0OSw5ICsxMDUwLDEwIEBAIFdlYktpdERPTUNTU1N0
eWxlRGVjbGFyYXRpb24qIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfc3R5bGUoV2ViS2l0RE9NRWxl
bWVudCogc2VsCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRUxFTUVOVChzZWxmKSwgMCk7
Ci0gICAgV2ViQ29yZTo6RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbj4gZ29iamVjdFJlc3VsdCA9IFdURjo6
Z2V0UHRyKGl0ZW0tPmNzc29tU3R5bGUoKSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmpl
Y3RSZXN1bHQuZ2V0KCkpOworICAgIGF1dG8mIGl0ZW0gPSAqV2ViS2l0Ojpjb3JlKHNlbGYpOwor
ICAgIGlmICghaXM8V2ViQ29yZTo6U3R5bGVkRWxlbWVudD4oaXRlbSkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBXZWJLaXQ6OmtpdCgmZG93bmNhc3Q8V2ViQ29yZTo6U3R5
bGVkRWxlbWVudD4oaXRlbSkuY3Nzb21TdHlsZSgpKTsKIH0KIAogZ2NoYXIqIHdlYmtpdF9kb21f
ZWxlbWVudF9nZXRfaWQoV2ViS2l0RE9NRWxlbWVudCogc2VsZikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAppbmRleCBjOTk5ZWZmODZlZTg2M2VjNDcwNmM5YzE4NjQ2NzQ2NWNjNjU2OThkLi4zZmFl
ZTE5ZjFkYjdkYTgyNjE2MDAzZTExMzllY2NlZGFiOWY2ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZENo
YW5nZVNlbGVjdGVkUmFuZ2UoUmFuZ2UqIGZyb21SYW5nZSwgUmFuZ2UqIHRvUmFuZ2UKIGJvb2wg
V2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKFN0eWxlUHJvcGVydGllcyogc3R5bGUs
IFJhbmdlKiByYW5nZSkKIHsKICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gbXV0YWJs
ZVN0eWxlKHN0eWxlLT5pc011dGFibGUoKSA/IFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPihz
dGF0aWNfY2FzdDxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJj4oKnN0eWxlKSkgOiBzdHlsZS0+bXV0
YWJsZUNvcHkoKSk7Ci0gICAgYm9vbCByZXN1bHQgPSBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50KCkuc2hvdWxkQXBwbHlTdHlsZSgqbV9wYWdlLCBtdXRhYmxlU3R5bGUtPmVuc3Vy
ZUNTU1N0eWxlRGVjbGFyYXRpb24oKSwgcmFuZ2UpOworICAgIGJvb2wgcmVzdWx0ID0gbV9wYWdl
LT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLnNob3VsZEFwcGx5U3R5bGUoKm1fcGFnZSwg
Jm11dGFibGVTdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpLCByYW5nZSk7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ5ZDViNDMw
ZDU1OWMwOTgyODViMTk3ODkyY2RmZGQwYTU4M2UxM2YuLmMwNDFhYzZlMTI2ODM1ZDRmNzFjOThj
OTEwYmRlOTA1OGMxZDZjNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxNy0wNS0wNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgJ3N0eWxlJyBmcm9t
IEVsZW1lbnQgdG8gSFRNTEVsZW1lbnQgLyBTVkdFbGVtZW50IGFuZCBtYWtlIGl0IHNldHRhYmxl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzE3OTUK
KworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9yb2xlcy1leHBvc2VkLmh0bWw6CisgICAgICAgIEFkZCBudWxsIGNoZWNrIGZv
ciBlbGVtZW50LnN0eWxlLgorCisgICAgICAgICogZmFzdC9jc3MvRWxlbWVudC1zdHlsZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL0VsZW1lbnQtc3R5bGUuaHRtbDog
QWRkZWQuCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGZh
c3QvZm9ybXMvaW5wdXQtd2lkdGgtaGVpZ2h0LWF0dHJpYnV0ZXMtd2l0aG91dC1yZW5kZXJlci1s
b2FkZWQtaW1hZ2UtZXhwZWN0ZWQudHh0OgorICAgICAgICBSZWJhc2VsaW5lIHRlc3QgdGhhdCB3
YXMgc2V0dGluZyBIVE1MRWxlbWVudC5zdHlsZSB3aGljaCB3YXMgYSBuby1vcCB1bnRpbCB0aGlz
IHBhdGNoLiBOb3cgdGhhdCBpdCBhY3R1YWxseQorICAgICAgICBkb2VzIHNvbWV0aGluZywgdGhl
IGlucHV0IGVsZW1lbnQgYWN0dWFsbHkgbG9vc2VzIGl0cyByZW5kZXJlci4gVGhpcyBmb3VuZCBh
IGJ1ZyB3aGljaCBJIGZpeGVkIGluIHRoaXMKKyAgICAgICAgcGF0Y2guCisKKyAgICAgICAgKiBq
cy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgUmViYXNlbGluZSBhcyBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBoYXMgY2hh
bmdlZC4KKwogMjAxNy0wNS0wNyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW01lZGlhU3RyZWFtXSByMjE2MTk3IGNhdXNlZCBzb21lIHdlYnJ0YyB0ZXN0cyB0
byBmYWlsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3JvbGVzLWV4cG9z
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvcm9sZXMtZXhwb3NlZC5odG1sCmlu
ZGV4IGNiNzMyOTYyYTZjN2Y2YTU2ZmUyNDY3OWI3NjgzNWQyYjIzYTI5MTcuLjQ0NTYzNDU1ODRm
MjNhNzYwNDg5MjBhY2UwNDM3NDIwNDczZmVlNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvcm9sZXMtZXhwb3NlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvcm9sZXMtZXhwb3NlZC5odG1sCkBAIC00MzEsNyArNDMxLDggQEAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyICYmIHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgIGV4YW1w
bGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmV4Jyk7CiAgICAgZm9yICh2YXIgaSA9
IDAsIGMgPSBleGFtcGxlcy5sZW5ndGg7IGkgPCBjOyBpKyspIHsKICAgICAgICAgZWwgPSBleGFt
cGxlc1tpXTsKLSAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICAgICAgaWYg
KGVsLnN0eWxlKQorICAgICAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICB9
CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQt
c3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvRWxlbWVudC1zdHlsZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWUyNDYyODYwNzE4OGJkMzYzMjYxMjcxY2I1YTY4ZmM1
OTFmYmY4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQt
c3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCitQQVNTICdzdHlsZScgcHJvcGVy
dHkgbG9jYXRpb24gCitQQVNTICdzdHlsZScgcHJvcGVydHkgdHlwZSAKK1BBU1Mgc3R5bGUgc2hv
dWxkIGJlIHNldHRhYmxlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9FbGVt
ZW50LXN0eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9FbGVtZW50LXN0eWxlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDJiOWJjZWVmM2VlOWI4ZGQwNWI4ZWFjMTM3YjhmZjdmMzk2MDU4ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL0VsZW1lbnQtc3R5bGUuaHRtbApA
QCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGRp
diBpZD0idGVzdERpdiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZCI+PC9kaXY+Cis8c3Zn
IGlkPSJ0ZXN0U1ZHIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkIj48L2Rpdj4KKzxzY3Jp
cHQ+Cit0ZXN0KCgpID0+IHsKKyAgICBjb25zdCB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3REaXYiKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRlc3REaXYuX19wcm90b19fLCBI
VE1MRGl2RWxlbWVudC5wcm90b3R5cGUsICJ0ZXN0RGl2IGlzIGFuIEhUTUxEaXZFbGVtZW50Iik7
CisgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUodGVzdERpdiwgInN0eWxlIiwgIkhUTUxFbGVtZW50
IGhhcyAnc3R5bGUnIGF0dHJpYnV0ZSIpOworICAgIGFzc2VydF9vd25fcHJvcGVydHkoSFRNTEVs
ZW1lbnQucHJvdG90eXBlLCAic3R5bGUiLCAiJ3N0eWxlJyBpcyBvbiBIVE1MRWxlbWVudCBwcm90
b3R5cGUiKTsKKworICAgIGNvbnN0IHRlc3RTVkcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGVzdFNWRyIpOworICAgIGFzc2VydF9lcXVhbHModGVzdFNWRy5fX3Byb3RvX18sIFNWR1NWR0Vs
ZW1lbnQucHJvdG90eXBlLCAidGVzdFNWRyBpcyBhbiBTVkdTVkdFbGVtZW50Iik7CisgICAgYXNz
ZXJ0X2lkbF9hdHRyaWJ1dGUodGVzdFNWRywgInN0eWxlIiwgIlNWR0VsZW1lbnQgaGFzICdzdHls
ZScgYXR0cmlidXRlIik7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShTVkdFbGVtZW50LnByb3Rv
dHlwZSwgInN0eWxlIiwgIidzdHlsZScgaXMgb24gU1ZHRWxlbWVudCBwcm90b3R5cGUiKTsKKwor
ICAgIGFzc2VydF9ub3RfZXhpc3RzKCJFbGVtZW50LnByb3RvdHlwZSIsICJzdHlsZSIsICInc3R5
bGUnIGlzIG5vdCBvbiBFbGVtZW50IHByb3RvdHlwZSIpOworfSwgIidzdHlsZScgcHJvcGVydHkg
bG9jYXRpb24iKTsKKwordGVzdCgoKSA9PiB7CisgICAgY29uc3QgdGVzdERpdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RGl2Iik7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXN0RGl2LnN0
eWxlLl9fcHJvdG9fXywgQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUsICJIVE1MRWxlbWVu
dC5zdHlsZSB0eXBlIik7CisKKyAgICBjb25zdCB0ZXN0U1ZHID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3RTVkciKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRlc3RTVkcuc3R5bGUuX19wcm90
b19fLCBDU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSwgIlNWR0VsZW1lbnQuc3R5bGUgdHlw
ZSIpOworfSwgIidzdHlsZScgcHJvcGVydHkgdHlwZSIpOworCit0ZXN0KCgpID0+IHsKKyAgICBj
b25zdCB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3REaXYiKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHRlc3REaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yLCAicmVkIiwgIkhUTUxF
bGVtZW50LnN0eWxlIGdldHRlciIpOworICAgIGFzc2VydF9yZWFkb25seSh0ZXN0RGl2LCAic3R5
bGUiLCAiSFRNTEVsZW1lbnQuc3R5bGUgaXMgcmVhZG9ubHkiKTsKKyAgICB0ZXN0RGl2LnN0eWxl
ID0gImJhY2tncm91bmQtY29sb3I6IGdyZWVuIjsKKyAgICBhc3NlcnRfZXF1YWxzKHRlc3REaXYu
c3R5bGUuYmFja2dyb3VuZENvbG9yLCAiZ3JlZW4iLCAiSFRNTEVsZW1lbnQuc3R5bGUgc2V0dGVy
Iik7CisKKyAgICBjb25zdCB0ZXN0U1ZHID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RT
VkciKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRlc3RTVkcuc3R5bGUuYmFja2dyb3VuZENvbG9yLCAi
cmVkIiwgIlNWR0VsZW1lbnQuc3R5bGUgZ2V0dGVyIik7CisgICAgYXNzZXJ0X3JlYWRvbmx5KHRl
c3RTVkcsICJzdHlsZSIsICJTVkdFbGVtZW50LnN0eWxlIGlzIHJlYWRvbmx5Iik7CisgICAgdGVz
dFNWRy5zdHlsZSA9ICJiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiI7CisgICAgYXNzZXJ0X2VxdWFs
cyh0ZXN0U1ZHLnN0eWxlLmJhY2tncm91bmRDb2xvciwgImdyZWVuIiwgIlNWR0VsZW1lbnQuc3R5
bGUgc2V0dGVyIik7Cit9LCAic3R5bGUgc2hvdWxkIGJlIHNldHRhYmxlIik7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5w
dXQtd2lkdGgtaGVpZ2h0LWF0dHJpYnV0ZXMtd2l0aG91dC1yZW5kZXJlci1sb2FkZWQtaW1hZ2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC13aWR0aC1oZWlnaHQt
YXR0cmlidXRlcy13aXRob3V0LXJlbmRlcmVyLWxvYWRlZC1pbWFnZS1leHBlY3RlZC50eHQKaW5k
ZXggZjUzMDk1NGNiMjU0YmUyODVhY2RhODQzYTMxN2JmMDAzYTFmNWFlZC4uN2FjYmJkMzFiNTQ0
ZjkxNDY3Yjk0NTAzZDBlNjY5MzhhZWUyN2M0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9pbnB1dC13aWR0aC1oZWlnaHQtYXR0cmlidXRlcy13aXRob3V0LXJlbmRlcmVyLWxv
YWRlZC1pbWFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1
dC13aWR0aC1oZWlnaHQtYXR0cmlidXRlcy13aXRob3V0LXJlbmRlcmVyLWxvYWRlZC1pbWFnZS1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi0KIFBBU1MgZS53aWR0aCBpcyAxNgogUEFTUyBl
LmhlaWdodCBpcyAxNgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbS1zdGF0aWMtcHJvcGVydHktZm9yLWluLWl0ZXJhdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1m
b3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCAwNzZmMDljMzY1NDE5OTJmZWQ1MjAw
MzMxODU1MWZiYTVkY2JmODQyLi45YjhlMjdkMjNlMDBmMzIzNmJlOTIxMWZhZGY5YTU2M2M1ZTdj
YmQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1m
b3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9t
LXN0YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dApAQCAtNDYsNiAr
NDYsNyBAQCBQQVNTIGFbImNvbnRlbnRFZGl0YWJsZSJdIGlzIGluaGVyaXQKIFBBU1MgYVsiaXND
b250ZW50RWRpdGFibGUiXSBpcyBmYWxzZQogUEFTUyBhWyJzcGVsbGNoZWNrIl0gaXMgdHJ1ZQog
UEFTUyBhWyJkYXRhc2V0Il0gaXMgW29iamVjdCBET01TdHJpbmdNYXBdCitQQVNTIGFbInN0eWxl
Il0gaXMgW29iamVjdCBDU1NTdHlsZURlY2xhcmF0aW9uXQogUEFTUyBhWyJvbmFib3J0Il0gaXMg
bnVsbAogUEFTUyBhWyJvbmJsdXIiXSBpcyBudWxsCiBQQVNTIGFbIm9uY2FucGxheSJdIGlzIG51
bGwKQEAgLTExNCw3ICsxMTUsNiBAQCBQQVNTIGFbImNsYXNzTGlzdCJdIGlzCiBQQVNTIGFbInNs
b3QiXSBpcyAKIFBBU1MgYVsiYXR0cmlidXRlcyJdIGlzIFtvYmplY3QgTmFtZWROb2RlTWFwXQog
UEFTUyBhWyJzaGFkb3dSb290Il0gaXMgbnVsbAotUEFTUyBhWyJzdHlsZSJdIGlzIFtvYmplY3Qg
Q1NTU3R5bGVEZWNsYXJhdGlvbl0KIFBBU1MgYVsic2Nyb2xsVG9wIl0gaXMgMAogUEFTUyBhWyJz
Y3JvbGxMZWZ0Il0gaXMgMAogUEFTUyBhWyJzY3JvbGxXaWR0aCJdIGlzIDAK
</data>

          </attachment>
      

    </bug>

</bugzilla>