<?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>219481</bug_id>
          
          <creation_ts>2020-12-02 21:07:49 -0800</creation_ts>
          <short_desc>Determine the WheelScrollGestureState on the main thread before passing it to ScrollingCoordinator</short_desc>
          <delta_ts>2020-12-03 00:00:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>jamesr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1711601</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-02 21:07:49 -0800</bug_when>
    <thetext>Determine the WheelScrollGestureState on the main thread before passing it to ScrollingCoordinator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711603</commentid>
    <comment_count>1</comment_count>
      <attachid>415274</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-02 21:14:11 -0800</bug_when>
    <thetext>Created attachment 415274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711605</commentid>
    <comment_count>2</comment_count>
      <attachid>415275</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-02 21:26:33 -0800</bug_when>
    <thetext>Created attachment 415275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711610</commentid>
    <comment_count>3</comment_count>
      <attachid>415277</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-02 22:04:54 -0800</bug_when>
    <thetext>Created attachment 415277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711615</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-02 23:59:10 -0800</bug_when>
    <thetext>Committed r270389: &lt;https://trac.webkit.org/changeset/270389&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415277.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711616</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-03 00:00:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/71927104&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415274</attachid>
            <date>2020-12-02 21:14:11 -0800</date>
            <delta_ts>2020-12-02 21:28:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219481-20201202211410.patch</filename>
            <type>text/plain</type>
            <size>36667</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRhYzEzZTcyZWRiMjkx
NzBlZDJkYjBkZTdkMTM1ZjAxNGRmNGI0Ni4uNmU2NGIyNTcwZGRkZmQwNTJiN2JiYTQyZjAzMTFj
ZTc2NzFlMzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTEyLTAyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIERldGVybWluZSB0
aGUgV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBwYXNz
aW5nIGl0IHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXhpbmcgd2Via2l0Lm9yZy9iLzIxODc2NCByZXF1aXJl
cyB0aGF0IHdlIHN0b3JlIHN0YXRlIGZvciBhIGdpdmVuIHNlcmllcyBvZiB3aGVlbCBldmVudHMK
KyAgICAgICAgcmVsYXRlZCB0byB3aGV0aGVyIHRoZSAiYmVnaW4iIGV2ZW50IGhhZCBwcmV2ZW50
RGVmYXVsdCgpIGNhbGxlZCBvbiBpdCAoaS5lLiB3YXMgY2FuY2VsZWQpLgorICAgICAgICBQcmV2
aW91c2x5IGNvZGUgd2FzIGRlc2lnbmVkIHRvIHByb3BhZ2F0ZSBPcHRpb25TZXQ8RXZlbnRIYW5k
bGluZz4gYXJvdW5kLCBhbmQgdXNlIGl0IHRvIGNvbXB1dGUKKyAgICAgICAgV2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGUgaW4gYm90aCBFdmVudEhhbmRsZXIgYW5kIFNjcm9sbGluZ1RyZWUgY29kZS4g
SG93ZXZlciwgd2UgY2FuCisgICAgICAgIGNvbXB1dGUgV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUg
anVzdCBvbmNlIGluIEV2ZW50SGFuZGxlciwgYW5kIHBhc3MgaXQgdG8gU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuCisKKyAgICAgICAgVG8gYWNoaWV2ZSB0aGlzLCBhZGQgYSBib3R0bGVuZWNrIGluIHRo
ZSBmb3JtIG9mIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEo
KQorICAgICAgICBhbmQgYmVmb3JlIGNhbGxpbmcgdGhlIFNjcm9sbGFibGVBcmVhIGZ1bmN0aW9u
IChpbXBsZW1lbnRhdGlvbiBvZiB3aGljaCBjYW4gY2FsbCBTY3JvbGxpbmdDb29yZGluYXRvciks
CisgICAgICAgIGNvbXB1dGUgV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgZnJvbSBPcHRpb25TZXQ8
RXZlbnRIYW5kbGluZz4uIFRoaXMgcmVxdWlyZWQgbWFraW5nCisgICAgICAgIGhhbmRsZVdoZWVs
RXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkgYSBtZW1iZXIgZnVuY3Rpb24uCisKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpoYW5k
bGVXaGVlbEV2ZW50UGhhc2VJblNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OmRp
ZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVudEhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNs
b3NpbmdCb3gpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpo
YW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5o
OgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZCk6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp3aGVlbEV2ZW50V2Fz
UHJvY2Vzc2VkQnlNYWluVGhyZWFkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJlYWRl
ZFNjcm9sbGluZ1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdU
cmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVh
ZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmg6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdoZWVsRXZl
bnRGb3JTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JN
YWM6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVu
dEZvclNjcm9sbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvck5p
Y29zaWE6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoYW5kbGVXaGVlbEV2ZW50Rm9y
U2Nyb2xsaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKwogMjAyMC0x
Mi0wMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBP
cHRpbWl6ZSBwYWRkaW5nIGluIEV2ZW50SGFuZGxlciBhbmQgcGxhdGZvcm0gZXZlbnQgY2xhc3Nl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGI4NTRiY2Q2NzA2NzVmMzI5
MDI2NjEyNGMzOTdhOGNmNzI3YmM2NDAuLmZlMzdkNzI5NTEyMzdjMTYwOWViMmNlMGNlOTBkZTcx
NWY0YzhjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI5MSw3NiAr
MjkxLDYgQEAgc3RhdGljIGlubGluZSBTY3JvbGxHcmFudWxhcml0eSB3aGVlbEdyYW51bGFyaXR5
VG9TY3JvbGxHcmFudWxhcml0eSh1bnNpZ25lZCBkZWwKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lk
IGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNj
cm9sbGFibGVBcmVhLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQotewotI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlOjpNYXlCZWdpbiB8fCB3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2U6OkNhbmNlbGxlZCkKLSAgICAgICAgc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0
b3IoKS5oYW5kbGVXaGVlbEV2ZW50UGhhc2Uod2hlZWxFdmVudC5waGFzZSgpKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHNjcm9sbGFibGVBcmVhKTsKLSAgICBVTlVTRURfUEFSQU0od2hlZWxF
dmVudCk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIGJvb2wgZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJl
YShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQpCi17Ci0gICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3aGVl
bEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgpKTsK
LSAgICBib29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQgYWJz
b2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBkaWRI
YW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRh
WCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFi
c29sdXRlRGVsdGEpOwotICAgIAotICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjph
YnMod2hlZWxFdmVudC5kZWx0YVkoKSkpCi0gICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0g
c2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFZKCkgPiAwID8gU2Nyb2xsRG93
biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7Ci0gICAgCi0g
ICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7Ci19Ci0KLXN0YXRpYyBib29sIGhhbmRsZVdo
ZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3Qg
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50
SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCi17Ci0gICAgYm9vbCBzaG91bGRIYW5kbGVFdmVudCA9
IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKLSNpZiBFTkFCTEUo
V0hFRUxfRVZFTlRfTEFUQ0hJTkcpCi0gICAgc2hvdWxkSGFuZGxlRXZlbnQgfD0gd2hlZWxFdmVu
dC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpFbmRlZDsKLSNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQotICAgIHNob3VsZEhhbmRsZUV2ZW50IHw9IHdoZWVsRXZlbnQubW9t
ZW50dW1QaGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpFbmRlZDsKLSNlbmRpZgot
I2VuZGlmCi0gICAgaWYgKCFzdGFydE5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIFJlbmRlckJveCYgaW5pdGlhbEVuY2xvc2luZ0JveCA9IHN0YXJ0Tm9kZS0+
cmVuZGVyZXIoKS0+ZW5jbG9zaW5nQm94KCk7Ci0KLSAgICAvLyBSZW5kZXJMaXN0Qm94IGlzIHNw
ZWNpYWwgYmVjYXVzZSBpdCdzIGEgU2Nyb2xsYWJsZUFyZWEgdGhhdCB0aGUgc2Nyb2xsaW5nIHRy
ZWUgZG9lc24ndCBrbm93IGFib3V0LgotICAgIGlmIChpczxSZW5kZXJMaXN0Qm94Pihpbml0aWFs
RW5jbG9zaW5nQm94KSkKLSAgICAgICAgaGFuZGxlV2hlZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxl
QXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxF
dmVudCk7Ci0KLSAgICBpZiAoIXNob3VsZEhhbmRsZUV2ZW50KQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoaXM8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCkpCi0g
ICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRvd25jYXN0PFJlbmRlckxp
c3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50KTsKLQotICAgIFJlbmRlckJv
eCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0aWFsRW5jbG9zaW5nQm94OwotICAgIHdoaWxl
IChjdXJyZW50RW5jbG9zaW5nQm94KSB7Ci0gICAgICAgIGlmIChSZW5kZXJMYXllciogYm94TGF5
ZXIgPSBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXllcigpKSB7Ci0gICAgICAgICAgICBhdXRvIHBs
YXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50LnVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCk7Ci0gICAg
ICAgICAgICBib29sIHNjcm9sbGluZ1dhc0hhbmRsZWQ7Ci0gICAgICAgICAgICBpZiAocGxhdGZv
cm1FdmVudCkgewotICAgICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2
ZW50LT5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0
aCgpLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwot
ICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBib3hMYXllci0+aGFuZGxlV2hl
ZWxFdmVudEZvclNjcm9sbGluZyhjb3BpZWRFdmVudCwgZXZlbnRIYW5kbGluZyk7Ci0gICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Ny
b2xsSW5TY3JvbGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQpOwotCi0gICAgICAgICAg
ICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQotCi0gICAgICAgIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSBjdXJyZW50RW5jbG9z
aW5nQm94LT5jb250YWluaW5nQmxvY2soKTsKLSAgICAgICAgaWYgKCFjdXJyZW50RW5jbG9zaW5n
Qm94IHx8IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmlzUmVuZGVyVmlldygpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiAoRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpKQogc3RhdGljIGJvb2wgc2hv
dWxkR2VzdHVyZXNUcmlnZ2VyQWN0aXZlKCkKIHsKQEAgLTI3ODcsNyArMjcxNyw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGV2ZW50CiAgICAgLy8gV2UgZG8gYW5vdGhlciBjaGVjayBvbiB0aGUgZnJh
bWUgdmlldyBiZWNhdXNlIHRoZSBldmVudCBoYW5kbGVyIGNhbiBydW4gSlMgd2hpY2ggcmVzdWx0
cyBpbiB0aGUgZnJhbWUgZ2V0dGluZyBkZXN0cm95ZWQuCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0g
bV9mcmFtZS52aWV3KCk7CiAgICAgCi0gICAgYm9vbCBkaWRIYW5kbGVFdmVudCA9IHZpZXcgPyB2
aWV3LT5oYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGV2ZW50LCBldmVudEhhbmRsaW5nKSA6
IGZhbHNlOworICAgIGJvb2wgZGlkSGFuZGxlRXZlbnQgPSB2aWV3ID8gaGFuZGxlV2hlZWxFdmVu
dEluU2Nyb2xsYWJsZUFyZWEoZXZlbnQsICp2aWV3LCBldmVudEhhbmRsaW5nKSA6IGZhbHNlOwog
ICAgIG1faXNIYW5kbGluZ1doZWVsRXZlbnQgPSBmYWxzZTsKICAgICByZXR1cm4gZGlkSGFuZGxl
RXZlbnQ7CiB9CkBAIC0yODY1LDEyICsyNzk1LDE1IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpjb21w
bGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgY29u
CiAgICAgcmV0dXJuIHBsYXRmb3JtQ29tcGxldGVQbGF0Zm9ybVdpZGdldFdoZWVsRXZlbnQoZXZl
bnQsICp3aWRnZXQuZ2V0KCksIHNjcm9sbGFibGVBcmVhKTsKIH0KIAotYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0
aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcykKK2Jvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3Np
bmdTdGVwcykKIHsKKyAgICBpZiAod2hlZWxFdmVudC5pc0dlc3R1cmVTdGFydCgpKQorICAgICAg
ICBtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlID0gV1RGOjpudWxsb3B0OworCiAgICAgT3B0aW9u
U2V0PEV2ZW50SGFuZGxpbmc+IGhhbmRsaW5nOwotICAgIGJvb2wgaGFuZGxlZCA9IGhhbmRsZVdo
ZWVsRXZlbnRJbnRlcm5hbChldmVudCwgcHJvY2Vzc2luZ1N0ZXBzLCBoYW5kbGluZyk7CisgICAg
Ym9vbCBoYW5kbGVkID0gaGFuZGxlV2hlZWxFdmVudEludGVybmFsKHdoZWVsRXZlbnQsIHByb2Nl
c3NpbmdTdGVwcywgaGFuZGxpbmcpOwogICAgIC8vIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1h
aW5UaHJlYWQoKSBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gY2FsbGVkIHZpYSBwZXJmb3JtRGVmYXVs
dFdoZWVsRXZlbnRIYW5kbGluZygpLCBidXQgdGhpcyBlbnN1cmVzIHRoYXQgaXQncyBhbHdheXMg
Y2FsbGVkIGlmIHRoYXQgY29kZSBwYXRoIGRvZXNuJ3QgcnVuLgotICAgIHdoZWVsRXZlbnRXYXNQ
cm9jZXNzZWRCeU1haW5UaHJlYWQoZXZlbnQsIGhhbmRsaW5nKTsKKyAgICB3aGVlbEV2ZW50V2Fz
UHJvY2Vzc2VkQnlNYWluVGhyZWFkKHdoZWVsRXZlbnQsIGhhbmRsaW5nKTsKICAgICByZXR1cm4g
aGFuZGxlZDsKIH0KIApAQCAtMjk3NCw2ICsyOTA3LDkxIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
T3B0CiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKIH0KIAorc3RhdGljIHZvaWQgaGFuZGxlV2hl
ZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFy
ZWEsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok1h
eUJlZ2luIHx8IHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6
Q2FuY2VsbGVkKQorICAgICAgICBzY3JvbGxhYmxlQXJlYS5zY3JvbGxBbmltYXRvcigpLmhhbmRs
ZVdoZWVsRXZlbnRQaGFzZSh3aGVlbEV2ZW50LnBoYXNlKCkpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oc2Nyb2xsYWJsZUFyZWEpOworICAgIFVOVVNFRF9QQVJBTSh3aGVlbEV2ZW50KTsKKyNl
bmRpZgorfQorCitzdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKFNjcm9sbGFi
bGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK3sK
KyAgICBTY3JvbGxHcmFudWxhcml0eSBzY3JvbGxHcmFudWxhcml0eSA9IHdoZWVsR3JhbnVsYXJp
dHlUb1Njcm9sbEdyYW51bGFyaXR5KHdoZWVsRXZlbnQuZGVsdGFNb2RlKCkpOworICAgIGJvb2wg
ZGlkSGFuZGxlV2hlZWxFdmVudCA9IGZhbHNlOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRh
ID0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVgoKSkpCisgICAgICAgIGRpZEhhbmRsZVdoZWVs
RXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFYKCkgPiAwID8g
U2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0
YSk7CisKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQu
ZGVsdGFZKCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVh
LnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwg
c2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOworCisgICAgcmV0dXJuIGRpZEhhbmRs
ZVdoZWVsRXZlbnQ7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5B
cHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25z
dCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBl
dmVudEhhbmRsaW5nKQoreworICAgIGJvb2wgc2hvdWxkSGFuZGxlRXZlbnQgPSB3aGVlbEV2ZW50
LmRlbHRhWCgpIHx8IHdoZWVsRXZlbnQuZGVsdGFZKCk7CisjaWYgRU5BQkxFKFdIRUVMX0VWRU5U
X0xBVENISU5HKQorICAgIHNob3VsZEhhbmRsZUV2ZW50IHw9IHdoZWVsRXZlbnQucGhhc2UoKSA9
PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6RW5kZWQ7CisjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKKyAgICBzaG91bGRIYW5kbGVFdmVudCB8PSB3aGVlbEV2ZW50Lm1vbWVudHVtUGhhc2Uo
KSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6RW5kZWQ7CisjZW5kaWYKKyNlbmRpZgorICAg
IGlmICghc3RhcnROb2RlLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBSZW5kZXJCb3gmIGluaXRpYWxFbmNsb3NpbmdCb3ggPSBzdGFydE5vZGUtPnJlbmRlcmVyKCkt
PmVuY2xvc2luZ0JveCgpOworCisgICAgLy8gUmVuZGVyTGlzdEJveCBpcyBzcGVjaWFsIGJlY2F1
c2UgaXQncyBhIFNjcm9sbGFibGVBcmVhIHRoYXQgdGhlIHNjcm9sbGluZyB0cmVlIGRvZXNuJ3Qg
a25vdyBhYm91dC4KKyAgICBpZiAoaXM8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0Jv
eCkpCisgICAgICAgIGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoZG93bmNh
c3Q8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOworCisg
ICAgaWYgKCFzaG91bGRIYW5kbGVFdmVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKGlzPFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpKQorICAgICAgICByZXR1
cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0
aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxFdmVudCk7CisKKyAgICBSZW5kZXJCb3gqIGN1cnJlbnRF
bmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2luZ0JveDsKKyAgICB3aGlsZSAoY3VycmVudEVu
Y2xvc2luZ0JveCkgeworICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGJveExheWVyID0gY3VycmVu
dEVuY2xvc2luZ0JveC0+bGF5ZXIoKSkgeworICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50
ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOworICAgICAgICAgICAgYm9v
bCBzY3JvbGxpbmdXYXNIYW5kbGVkOworICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQpIHsK
KyAgICAgICAgICAgICAgICBhdXRvIGNvcGllZEV2ZW50ID0gcGxhdGZvcm1FdmVudC0+Y29weVdp
dGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVy
ZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpLCBmaWx0ZXJlZFZlbG9jaXR5KTsKKyAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFy
ZWEoY29waWVkRXZlbnQsICpib3hMYXllciwgZXZlbnRIYW5kbGluZyk7CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5T
Y3JvbGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQpOworCisgICAgICAgICAgICBpZiAo
c2Nyb2xsaW5nV2FzSGFuZGxlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSBjdXJyZW50RW5jbG9zaW5nQm94
LT5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgaWYgKCFjdXJyZW50RW5jbG9zaW5nQm94IHx8
IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmlzUmVuZGVyVmlldygpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIHdoZWVsRXZlbnQsIFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCit7CisgICAgYXV0byBnZXN0dXJlU3RhdGUg
PSB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZSh3aGVlbEV2ZW50LCBldmVudEhhbmRsaW5nKTsKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkV2ZW50SGFuZGxlcjo6aGFu
ZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoKSAtIGV2ZW50SGFuZGxpbmcgIiA8PCBldmVu
dEhhbmRsaW5nIDw8ICIgLT4gZ2VzdHVyZSBzdGF0ZSAiIDw8IGdlc3R1cmVTdGF0ZSk7CisgICAg
cmV0dXJuIHNjcm9sbGFibGVBcmVhLmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxF
dmVudCwgZ2VzdHVyZVN0YXRlKTsKK30KKworT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU+IEV2ZW50SGFuZGxlcjo6dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5k
bGluZykKK3sKKyAgICBpZiAoIW1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgJiYgd2hlZWxFdmVu
dC5pc0dlc3R1cmVTdGFydCgpICYmIGV2ZW50SGFuZGxpbmcuY29udGFpbnMoRXZlbnRIYW5kbGlu
Zzo6RGlzcGF0Y2hlZFRvRE9NKSkKKyAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA9
IGV2ZW50SGFuZGxpbmcuY29udGFpbnMoRXZlbnRIYW5kbGluZzo6RGVmYXVsdFByZXZlbnRlZCkg
PyBXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcgOiBXaGVlbFNjcm9sbEdlc3R1cmVT
dGF0ZTo6Tm9uQmxvY2tpbmc7CisKKyAgICByZXR1cm4gbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0
ZTsKK30KKwogdm9pZCBFdmVudEhhbmRsZXI6OmNsZWFyTGF0Y2hlZFN0YXRlKCkKIHsKICAgICBh
dXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CkBAIC0zMDMyLDcgKzMwNTAsNyBAQCB2b2lkIEV2
ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUqIHN0YXJ0Tm9kZSwgV2hl
ZWxFdmVudCYgd2hlZWxFdgogICAgICAgICBhdXRvIHBsYXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50
LnVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCk7CiAgICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50KSB7
CiAgICAgICAgICAgICBhdXRvIGNvcGllZEV2ZW50ID0gcGxhdGZvcm1FdmVudC0+Y29weVdpdGhE
ZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRQ
bGF0Zm9ybURlbHRhLmhlaWdodCgpLCBmaWx0ZXJlZFZlbG9jaXR5KTsKLSAgICAgICAgICAgIGlm
IChsYXRjaGVkU2Nyb2xsZXItPmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29waWVkRXZl
bnQsIGV2ZW50SGFuZGxpbmcpKQorICAgICAgICAgICAgaWYgKGhhbmRsZVdoZWVsRXZlbnRJblNj
cm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAqbGF0Y2hlZFNjcm9sbGVyLCBldmVudEhhbmRsaW5n
KSkKICAgICAgICAgICAgICAgICB3aGVlbEV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmlu
ZGV4IDRlYmI1N2QwYTA2OTg5ZmQ4ZjM3MjNiZDRhYTU2ODUxNWU2YzFlNzkuLjdlMmI3NzRkZjY0
ZDM2OTU1NWNiZTlkNzc0ZDE0NWRlNGI4MWM3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaApAQCAtNDY0LDYgKzQ2NCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1doZWVs
RXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQ
dHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxXaWRnZXQ+JiwgY29uc3Qg
V2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAorICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudElu
QXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50
JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6
ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKKworICAgIGJv
b2wgaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgU2Nyb2xsYWJsZUFyZWEmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOworICAgIE9w
dGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOworCiAg
ICAgYm9vbCBwbGF0Zm9ybUNvbXBsZXRlUGxhdGZvcm1XaWRnZXRXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdpZGdldCYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJs
ZUFyZWE+Jik7CiAKICAgICB2b2lkIGRlZmF1bHRTcGFjZUV2ZW50SGFuZGxlcihLZXlib2FyZEV2
ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMzk1OTljOWVlYzFiYjViMDI5
NzRjYzI0MjBlMTZjMjlkMDNjMmY2Mi4uNTVmMTFiMWRjYzUzM2I0NGE0ODExY2JhZDBmYThhM2Fk
ZWY4NjNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNTA5OCw3ICs1MDk4LDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCYgd2lkZ2V0KQogICAgIFNjcm9s
bFZpZXc6OnJlbW92ZUNoaWxkKHdpZGdldCk7CiB9CiAKLWJvb2wgRnJhbWVWaWV3OjpoYW5kbGVX
aGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCitib29sIEZyYW1lVmll
dzo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3Rh
dGUpCiB7CiAgICAgLy8gTm90ZSB0aGF0IHRvIGFsbG93IGZvciBydWJiZXItYmFuZCBvdmVyLXNj
cm9sbCBiZWhhdmlvciwgZXZlbiBub24tc2Nyb2xsYWJsZSB2aWV3cwogICAgIC8vIHNob3VsZCBo
YW5kbGUgd2hlZWwgZXZlbnRzLgpAQCAtNTEyOCwxMSArNTEyOCwxMSBAQCBib29sIEZyYW1lVmll
dzo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbgogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAgaWYgKGF1dG8gc2Ny
b2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKSB7CiAgICAg
ICAgIGlmIChzY3JvbGxpbmdDb29yZGluYXRvci0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFt
ZVZpZXcoKnRoaXMpKQotICAgICAgICAgICAgcmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5o
YW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKHdoZWVsRXZlbnQsIHNjcm9sbGluZ05vZGVJRCgp
LCBldmVudEhhbmRsaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRv
ci0+aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyh3aGVlbEV2ZW50LCBzY3JvbGxpbmdOb2Rl
SUQoKSwgZ2VzdHVyZVN0YXRlKTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBTY3JvbGxh
YmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyh3aGVlbEV2ZW50LCBldmVudEhh
bmRsaW5nKTsKKyAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JT
Y3JvbGxpbmcod2hlZWxFdmVudCwgZ2VzdHVyZVN0YXRlKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6
OmlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCBj
YTAwOGY4MTEwMTY2NDUxZmMxZTJjMGM3MTViYzczNzViNjQzOWZiLi44YzViODQ4MTM5YmFkYzky
YjA0MzkyZTJlOTc4MDk5ZDM3NDE2ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTU2
NSw3ICs1NjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBleGlzdHMgZm9yIHBv
cnRzIHRoYXQgbmVlZCB0byBoYW5kbGUgd2hlZWwgZXZlbnRzIG1hbnVhbGx5LgogICAgIC8vIE9u
IE1hYyBXZWJLaXQxIHRoZSB1bmRlcmx5aW5nIE5TU2Nyb2xsVmlldyBqdXN0IGRvZXMgdGhlIHNj
cm9sbGluZywgYnV0IG9uIG1vc3Qgb3RoZXIgcGxhdGZvcm1zCiAgICAgLy8gd2UgbmVlZCB0aGlz
IGZ1bmN0aW9uIGluIG9yZGVyIHRvIGRvIHRoZSBzY3JvbGwgb3Vyc2VsdmVzLgotICAgIGJvb2wg
aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBP
cHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pIGZpbmFsOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVu
dEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZT4pIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
Y3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggMDQ2NDI3YjY4Zjc0Y2VmMGY4ZDYw
ZDExOTNlNDM4MGE4MTcxNGVjMC4uNGEwZWZlZDdjMmRlYzc5YjVmMzFlNWU3MTY4OTc4MmI3MTYx
ZTFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQpAQCAt
MTUwLDEwICsxNTAsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6d2hlZWxFdmVudChOU0V2ZW50ICpl
dmVudCkKICAgICBhdXRvIHdoZWVsRXZlbnQgPSBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRl
UGxhdGZvcm1XaGVlbEV2ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS5wbGF0Zm9ybVBhZ2VDbGll
bnQoKSk7CiAgICAgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3Np
bmdTdGVwcyA9IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9s
bGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvckJsb2NraW5nRE9N
RXZlbnREaXNwYXRjaCB9OwogCi0gICAgaWYgKHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSkK
LSAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA9IFdURjo6bnVsbG9wdDsKLSAgICBl
bHNlIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6OkNo
YW5nZWQgfHwgd2hlZWxFdmVudC5tb21lbnR1bVBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50
UGhhc2U6OkNoYW5nZWQpIHsKLSAgICAgICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS53aGVlbEV2
ZW50R2VzdHVyZXNCZWNvbWVOb25CbG9ja2luZygpICYmIG1fd2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGUgJiYgKm1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgPT0gV2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU6Ok5vbkJsb2NraW5nKQorICAgIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2U6OkNoYW5nZWQgfHwgd2hlZWxFdmVudC5tb21lbnR1bVBoYXNlKCkgPT0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6OkNoYW5nZWQpIHsKKyAgICAgICAgaWYgKG1fZnJhbWUu
c2V0dGluZ3MoKS53aGVlbEV2ZW50R2VzdHVyZXNCZWNvbWVOb25CbG9ja2luZygpICYmIG1fd2hl
ZWxTY3JvbGxHZXN0dXJlU3RhdGUudmFsdWVPcihXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6Qmxv
Y2tpbmcpID09IFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpOb25CbG9ja2luZykKICAgICAgICAg
ICAgIHByb2Nlc3NpbmdTdGVwcyA9IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRo
cmVhZEZvclNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZv
ck5vbkJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9OwogICAgIH0KICAgICByZXR1cm4gaGFuZGxl
V2hlZWxFdmVudCh3aGVlbEV2ZW50LCBwcm9jZXNzaW5nU3RlcHMpOwpAQCAtOTQ4LDcgKzk0Niw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsCiAKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFNj
cm9sbExhdGNoaW5nLCBzdHJlYW0gPDwgIiBzZW5kaW5nIHRvIHZpZXcgIiA8PCAqdmlldyk7CiAK
LSAgICAgICAgYm9vbCBkaWRIYW5kbGVXaGVlbEV2ZW50ID0gdmlldy0+aGFuZGxlV2hlZWxFdmVu
dEZvclNjcm9sbGluZyh3aGVlbEV2ZW50LCBldmVudEhhbmRsaW5nKTsKKyAgICAgICAgYm9vbCBk
aWRIYW5kbGVXaGVlbEV2ZW50ID0gaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEod2hl
ZWxFdmVudCwgKnZpZXcsIGV2ZW50SGFuZGxpbmcpOwogICAgICAgICAvLyBJZiB0aGUgcGxhdGZv
cm0gd2lkZ2V0IGlzIGhhbmRsaW5nIHRoZSBldmVudCwgd2UgYWx3YXlzIHdhbnQgdG8gcmV0dXJu
IGZhbHNlLgogICAgICAgICBpZiAodmlldy0+cGxhdGZvcm1XaWRnZXQoKSkKICAgICAgICAgICAg
IGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKQEAgLTk1Nyw3ICs5NTUsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbAogICAgICAgICByZXR1cm4gZGlkSGFuZGxlV2hlZWxFdmVudDsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBkaWRIYW5kbGVFdmVudCA9IHZpZXctPmhhbmRsZVdoZWVsRXZl
bnRGb3JTY3JvbGxpbmcod2hlZWxFdmVudCwgZXZlbnRIYW5kbGluZyk7CisgICAgYm9vbCBkaWRI
YW5kbGVFdmVudCA9IGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKHdoZWVsRXZlbnQs
ICp2aWV3LCBldmVudEhhbmRsaW5nKTsKICAgICBtX2lzSGFuZGxpbmdXaGVlbEV2ZW50ID0gZmFs
c2U7CiAgICAgcmV0dXJuIGRpZEhhbmRsZUV2ZW50OwogfQpAQCAtOTcyLDEzICs5NzAsMTIgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JgogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwog
CisgICAgdXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUod2hlZWxFdmVudCwgZXZlbnRIYW5kbGluZyk7
CisKICAgICBpZiAoYXV0byBzY3JvbGxpbmdDb29yZGluYXRvciA9IG1fZnJhbWUucGFnZSgpLT5z
Y3JvbGxpbmdDb29yZGluYXRvcigpKSB7CiAgICAgICAgIGlmIChzY3JvbGxpbmdDb29yZGluYXRv
ci0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoKnZpZXcpKQotICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQo
d2hlZWxFdmVudCwgZXZlbnRIYW5kbGluZyk7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZCh3aGVlbEV2ZW50LCBtX3do
ZWVsU2Nyb2xsR2VzdHVyZVN0YXRlKTsKICAgICB9Ci0KLSAgICBpZiAod2hlZWxFdmVudC5pc0dl
c3R1cmVTdGFydCgpICYmIGV2ZW50SGFuZGxpbmcuY29udGFpbnMoRXZlbnRIYW5kbGluZzo6RGlz
cGF0Y2hlZFRvRE9NKSkKLSAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA9IGV2ZW50
SGFuZGxpbmcuY29udGFpbnMoRXZlbnRIYW5kbGluZzo6RGVmYXVsdFByZXZlbnRlZCkgPyBXaGVl
bFNjcm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcgOiBXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6
Tm9uQmxvY2tpbmc7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh3aGVlbEV2ZW50KTsKICAgICBV
TlVTRURfUEFSQU0oZXZlbnRIYW5kbGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBlODU2MjgzMDRiOTcyY2Nm
YzA3YmIwYTRkNmVmMjFlNWJjYTc2OWE1Li44OGZhNDNlZWY1NDQwZjM1NzhjMTU5NTMzOGY5ZGQ1
ODEyMTVmNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTEyNyw4ICsxMjcsOCBAQCBwdWJsaWM6CiAgICAgLy8g
VGhlc2UgdmlydHVhbCBmdW5jdGlvbnMgYXJlIGN1cnJlbnRseSB1bmlxdWUgdG8gdGhlIHRocmVh
ZGVkIHNjcm9sbGluZyBhcmNoaXRlY3R1cmUuIAogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmVl
U3RhdGVJZk5lZWRlZCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRp
b25VcGRhdGUoU2Nyb2xsYWJsZUFyZWEmLCBjb25zdCBJbnRQb2ludCYsIFNjcm9sbFR5cGUgPSBT
Y3JvbGxUeXBlOjpQcm9ncmFtbWF0aWMsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6
OkNsYW1wZWQpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVs
RXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsaW5nTm9k
ZUlELCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmLCBTY3JvbGxpbmdOb2RlSUQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3Nl
ZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZT4pIHsgfQogCiAgICAgLy8gQ3JlYXRlIGFuIHVucGFyZW50ZWQgbm9k
ZS4KICAgICB2aXJ0dWFsIFNjcm9sbGluZ05vZGVJRCBjcmVhdGVOb2RlKFNjcm9sbGluZ05vZGVU
eXBlLCBTY3JvbGxpbmdOb2RlSUQgbmV3Tm9kZUlEKSB7IHJldHVybiBuZXdOb2RlSUQ7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5n
VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGlu
Z1RyZWUuY3BwCmluZGV4IGQ2ZWQ2YmE5ODU4MmQ5ZmRhMTI5MDU1OTJmNzIwYzgyZDU2NjBhZTIu
LjU5N2U0Njc3MmU5NDE3ZjcyMmM2ZGI5M2IzYWQxMTAzMTQwODBhMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNw
cApAQCAtNjQsNyArNjQsNyBAQCBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtVwogICAgIHJldHVybiBT
Y3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVw
cyk7CiB9CiAKLWJvb2wgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0
ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xs
aW5nTm9kZUlEIHRhcmdldE5vZGVJRCwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KQorYm9vbCBU
aHJlYWRlZFNjcm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRBZnRlck1haW5UaHJlYWQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxpbmdOb2RlSUQgdGFyZ2V0
Tm9kZUlELCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pCiB7CiAgICAgTE9HX1dJ
VEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJUaHJlYWRlZFNjcm9sbGluZ1RyZWU6Omhh
bmRsZVdoZWVsRXZlbnRBZnRlck1haW5UaHJlYWQgIiA8PCB3aGVlbEV2ZW50IDw8ICIgbm9kZSAi
IDw8IHRhcmdldE5vZGVJRCk7CiAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBUaHJlYWRlZFNjcm9s
bGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRBZnRlck1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1X
aGVlbEUKICAgICByZXR1cm4gcmVzdWx0Lndhc0hhbmRsZWQ7CiB9CiAKLXZvaWQgVGhyZWFkZWRT
Y3JvbGxpbmdUcmVlOjp3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPikKK3ZvaWQgVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlOjp3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikK
IHsKICAgICAvLyBGSVhNRTogU2V0IHN0YXRlIGJhc2VkIG9uIEV2ZW50SGFuZGxpbmcgZmxhZ3Mu
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNj
cm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Ny
b2xsaW5nVHJlZS5oCmluZGV4IGVmMTEzOTlkZjYyNDA4MGM4OWNkYTZlNGI5MjQ0YjUxZDgwYWE2
OGIuLjkzNWZkN2RjY2VlNjFjMjQzZmE5NDEwYzljYzgwMzVhZWRiNTVjNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5o
CkBAIC00Nyw4ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3Vs
dCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxX
aGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPikgb3ZlcnJpZGU7CiAKLSAgICBib29sIGhhbmRsZVdo
ZWVsRXZlbnRBZnRlck1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xs
aW5nTm9kZUlELCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOwotICAgIHZvaWQgd2hlZWxFdmVu
dFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRp
b25TZXQ8RXZlbnRIYW5kbGluZz4pOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEFmdGVyTWFp
blRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxpbmdOb2RlSUQsIE9wdGlv
bmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPik7CisgICAgdm9pZCB3aGVlbEV2ZW50V2FzUHJv
Y2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvbmFsPFdo
ZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPik7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaAppbmRleCAyMWZlZGE5MWJiZTNlMzVlYWQzMGQ2YjQ1
YzY3NTJjZjFhMWZhYjA0Li5kY2IwNzc4YjQ5ZjIxM2U1YmVkYTZjNGE2NTk3YmIwN2M2OWM2ZDc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaApAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpIGZpbmFsOwogCiAgICAgLy8gSGFuZGxlIHRo
ZSB3aGVlbCBldmVudCBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZC4gUmV0dXJucyB3aGV0aGVyIHRo
ZSBldmVudCB3YXMgaGFuZGxlZCBvciBub3QuCi0gICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9y
U2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGluZ05vZGVJRCwgT3B0
aW9uU2V0PEV2ZW50SGFuZGxpbmc+KSBmaW5hbDsKLSAgICB2b2lkIHdoZWVsRXZlbnRXYXNQcm9j
ZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2
ZW50SGFuZGxpbmc+KSBmaW5hbDsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxp
bmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsaW5nTm9kZUlELCBPcHRpb25hbDxX
aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pIGZpbmFsOworICAgIHZvaWQgd2hlZWxFdmVudFdhc1By
b2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxX
aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pIGZpbmFsOwogCiBwcml2YXRlOgogICAgIHZvaWQgc2No
ZWR1bGVUcmVlU3RhdGVDb21taXQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQppbmRl
eCBmZmMyM2JlZjNiZmNmODIwMDliMTIyNDhmYTczNDcyYjU3ZTRjNGI5Li45MWFkNzUwOTM1NzIz
YzllOTE1YjFjNzk1N2Q4YjI1ZjRmNmNkYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCkBA
IC03Myw3ICs3Myw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OnBhZ2VEZXN0cm95
ZWQoKQogICAgIH0pOwogfQogCi1ib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpoYW5kbGVX
aGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCwgU2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGVJRCwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+
IGV2ZW50SGFuZGxpbmcpCitib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpoYW5kbGVXaGVl
bEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwg
U2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGVJRCwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJl
U3RhdGU+IGdlc3R1cmVTdGF0ZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IEFTU0VSVChtX3BhZ2UpOwpAQCAtODEsMTEgKzgxLDExIEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRp
bmF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVl
bEV2CiAgICAgaWYgKHNjcm9sbGluZ1RyZWUoKS0+d2lsbFdoZWVsRXZlbnRTdGFydFN3aXBlR2Vz
dHVyZSh3aGVlbEV2ZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTE9HX1dJVEhf
U1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFu
ZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyAtIHNlbmRpbmcgZXZlbnQgdG8gc2Nyb2xsaW5nIHRo
cmVhZCwgbm9kZSAiIDw8IHRhcmdldE5vZGVJRCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9s
bGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVu
dEZvclNjcm9sbGluZyAtIHNlbmRpbmcgZXZlbnQgdG8gc2Nyb2xsaW5nIHRocmVhZCwgbm9kZSAi
IDw8IHRhcmdldE5vZGVJRCA8PCAiIGdlc3R1cmVTdGF0ZSAiIDw8IGdlc3R1cmVTdGF0ZSk7CiAg
ICAgCiAgICAgUmVmUHRyPFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4gdGhyZWFkZWRTY3JvbGxpbmdU
cmVlID0gZG93bmNhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPihzY3JvbGxpbmdUcmVlKCkpOwot
ICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW3RocmVhZGVkU2Nyb2xsaW5nVHJlZSwgd2hl
ZWxFdmVudCwgdGFyZ2V0Tm9kZUlELCBldmVudEhhbmRsaW5nXSB7Ci0gICAgICAgIHRocmVhZGVk
U2Nyb2xsaW5nVHJlZS0+aGFuZGxlV2hlZWxFdmVudEFmdGVyTWFpblRocmVhZCh3aGVlbEV2ZW50
LCB0YXJnZXROb2RlSUQsIGV2ZW50SGFuZGxpbmcpOworICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlz
cGF0Y2goW3RocmVhZGVkU2Nyb2xsaW5nVHJlZSwgd2hlZWxFdmVudCwgdGFyZ2V0Tm9kZUlELCBn
ZXN0dXJlU3RhdGVdIHsKKyAgICAgICAgdGhyZWFkZWRTY3JvbGxpbmdUcmVlLT5oYW5kbGVXaGVl
bEV2ZW50QWZ0ZXJNYWluVGhyZWFkKHdoZWVsRXZlbnQsIHRhcmdldE5vZGVJRCwgZ2VzdHVyZVN0
YXRlKTsKICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk2LDEzICs5NiwxMyBAQCBz
dGF0aWMgdWludDY0X3QgbmV4dERlZmVySWRlbnRpZmllcigpCiAgICAgcmV0dXJuICsrZGVmZXJJ
ZGVudGlmaWVyOwogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjp3aGVlbEV2ZW50
V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGRlZmF1bHRIYW5kbGluZykKK3ZvaWQgU2Ny
b2xsaW5nQ29vcmRpbmF0b3JNYWM6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25hbDxXaGVlbFNjcm9s
bEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQogewogICAgIGF1dG8gZGVmZXJyZXIgPSBXaGVl
bEV2ZW50VGVzdE1vbml0b3JDb21wbGV0aW9uRGVmZXJyZXIgeyBtX3BhZ2UtPndoZWVsRXZlbnRU
ZXN0TW9uaXRvcigpLmdldCgpLCByZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPihuZXh0RGVmZXJJZGVudGlmaWVyKCkpLCBXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OlJlcG9ydERPTUV2ZW50SGFuZGxpbmcgfTsKIAogICAgIFJlZlB0
cjxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+IHRocmVhZGVkU2Nyb2xsaW5nVHJlZSA9IGRvd25jYXN0
PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xsaW5nVHJlZSgpKTsKLSAgICBTY3JvbGxpbmdU
aHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUsIHdoZWVsRXZlbnQsIGRlZmF1
bHRIYW5kbGluZywgZGVmZXJyZXIgPSBXVEZNb3ZlKGRlZmVycmVyKV0gewotICAgICAgICB0aHJl
YWRlZFNjcm9sbGluZ1RyZWUtPndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQod2hl
ZWxFdmVudCwgZGVmYXVsdEhhbmRsaW5nKTsKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNo
KFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUsIHdoZWVsRXZlbnQsIGdlc3R1cmVTdGF0ZSwgZGVmZXJy
ZXIgPSBXVEZNb3ZlKGRlZmVycmVyKV0geworICAgICAgICB0aHJlYWRlZFNjcm9sbGluZ1RyZWUt
PndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQod2hlZWxFdmVudCwgZ2VzdHVyZVN0
YXRlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEu
Y3BwCmluZGV4IDJkMjE1ZmI4YWQ1ZWMxOWY3NGQ3YTU4MTgxOGRkM2VkNGIwNGIxMjYuLmQwMWM2
ZTc5NjE4YTA1NDk1ZmQxNzg1MWVjNWRhYWExODA1MmRjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAKQEAgLTY5LDIyICs2OSwyMiBAQCB2b2lkIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yTmljb3NpYTo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKQogICAgIG1fc2Ny
b2xsaW5nU3RhdGVUcmVlQ29tbWl0dGVyVGltZXIuc3RvcCgpOwogfQogCi1ib29sIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGluZ05vZGVJRCB0YXJnZXROb2Rl
LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKK2Jvb2wgU2Nyb2xsaW5n
Q29vcmRpbmF0b3JOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGUs
IE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKICAgICBBU1NFUlQo
c2Nyb2xsaW5nVHJlZSgpKTsKIAotICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW3RocmVh
ZGVkU2Nyb2xsaW5nVHJlZSA9IG1ha2VSZWYoZG93bmNhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVl
Pigqc2Nyb2xsaW5nVHJlZSgpKSksIHdoZWVsRXZlbnQsIHRhcmdldE5vZGUsIGV2ZW50SGFuZGxp
bmddIHsKLSAgICAgICAgdGhyZWFkZWRTY3JvbGxpbmdUcmVlLT5oYW5kbGVXaGVlbEV2ZW50QWZ0
ZXJNYWluVGhyZWFkKHdoZWVsRXZlbnQsIHRhcmdldE5vZGUsIGV2ZW50SGFuZGxpbmcpOworICAg
IFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW3RocmVhZGVkU2Nyb2xsaW5nVHJlZSA9IG1ha2VS
ZWYoZG93bmNhc3Q8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPigqc2Nyb2xsaW5nVHJlZSgpKSksIHdo
ZWVsRXZlbnQsIHRhcmdldE5vZGUsIGdlc3R1cmVTdGF0ZV0geworICAgICAgICB0aHJlYWRlZFNj
cm9sbGluZ1RyZWUtPmhhbmRsZVdoZWVsRXZlbnRBZnRlck1haW5UaHJlYWQod2hlZWxFdmVudCwg
dGFyZ2V0Tm9kZSwgZ2VzdHVyZVN0YXRlKTsKICAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWE6OndoZWVsRXZlbnRXYXNQcm9jZXNz
ZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRp
b25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3JOaWNvc2lhOjp3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJl
U3RhdGU+IGdlc3R1cmVTdGF0ZSkKIHsKLSAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFt0
aHJlYWRlZFNjcm9sbGluZ1RyZWUgPSBtYWtlUmVmKGRvd25jYXN0PFRocmVhZGVkU2Nyb2xsaW5n
VHJlZT4oKnNjcm9sbGluZ1RyZWUoKSkpLCB3aGVlbEV2ZW50LCBldmVudEhhbmRsaW5nXSB7Ci0g
ICAgICAgIHRocmVhZGVkU2Nyb2xsaW5nVHJlZS0+d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFp
blRocmVhZCh3aGVlbEV2ZW50LCBldmVudEhhbmRsaW5nKTsKKyAgICBTY3JvbGxpbmdUaHJlYWQ6
OmRpc3BhdGNoKFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUgPSBtYWtlUmVmKGRvd25jYXN0PFRocmVh
ZGVkU2Nyb2xsaW5nVHJlZT4oKnNjcm9sbGluZ1RyZWUoKSkpLCB3aGVlbEV2ZW50LCBnZXN0dXJl
U3RhdGVdIHsKKyAgICAgICAgdGhyZWFkZWRTY3JvbGxpbmdUcmVlLT53aGVlbEV2ZW50V2FzUHJv
Y2Vzc2VkQnlNYWluVGhyZWFkKHdoZWVsRXZlbnQsIGdlc3R1cmVTdGF0ZSk7CiAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5oCmluZGV4IGEzOWE2MDQ0MjA2
ZDIxZTk2NGUyMjZiZWFmMzJiNjVkODE3Yjg0ZTUuLmE4NjBlMmVmMzE4OTc0MzM0Y2Y0Y2E0YjRm
MjU0NDg1MGM4MTgyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuaApA
QCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbW1pdFRyZWVTdGF0ZUlmTmVl
ZGVkKCkgb3ZlcnJpZGU7CiAKLSAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmco
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsaW5nTm9kZUlELCBPcHRpb25TZXQ8RXZl
bnRIYW5kbGluZz4pIG92ZXJyaWRlOwotICAgIHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5
TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5k
bGluZz4pIG92ZXJyaWRlOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxpbmdOb2RlSUQsIE9wdGlvbmFsPFdoZWVs
U2Nyb2xsR2VzdHVyZVN0YXRlPikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aGVlbEV2ZW50V2FzUHJv
Y2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvbmFsPFdo
ZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBz
Y2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IDgwMTY2YTUyMjI4NDVhNzM0ZTkwNmEzZjNjOWJh
Y2M5Njg1ODE3MWMuLjkwNDJiNWMxODJmOWQ4NWFiZWJkMTkzYjVlZjFkMDkxNjkyYzJjMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTIwMyw3ICsy
MDMsNyBAQCB2b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQoY29uc3Qg
U2Nyb2xsUG9zaXRpb24mIHBvc2l0aW9uKQogICAgICAgICBzY3JvbGxBbmltYXRvcigpLm5vdGlm
eUNvbnRlbnRBcmVhU2Nyb2xsZWQoc2Nyb2xsUG9zaXRpb24oKSAtIG9sZFBvc2l0aW9uKTsKIH0K
IAotYm9vbCBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxFdmVudEhhbmRsaW5n
PikKK2Jvb2wgU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25hbDxXaGVlbFNjcm9sbEdl
c3R1cmVTdGF0ZT4pCiB7CiAgICAgaWYgKCFpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5oCmluZGV4IDVhNzM4Yjg4NmQwZjIzMDAyOGViZTQ5NmU3ZTAwMzFjOTQwNDY5NTQuLmVk
ZjQ3MmY0NGNmYjVkY2ZlNzRiNjY3ODk4ODM2NzZlZTkxNDAzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBTY3JvbGxB
bmltYXRvcjsKIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CiAKLWVu
dW0gY2xhc3MgRXZlbnRIYW5kbGluZyA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFdoZWVsU2Nyb2xs
R2VzdHVyZVN0YXRlIDogdWludDhfdDsKIAogaW5saW5lIGludCBvZmZzZXRGb3JPcmllbnRhdGlv
bihTY3JvbGxPZmZzZXQgb2Zmc2V0LCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
IHsKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIC8vIGV4cGVjdCBpdCB0byBoYXBwZW4g
c29tZXRpbWUgaW4gdGhlIGZ1dHVyZS4KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9sbFBv
c2l0aW9uVXBkYXRlKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiwgU2Nyb2xsVHlwZSA9IFNjcm9sbFR5
cGU6OlVzZXIsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hl
ZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8
RXZlbnRIYW5kbGluZz4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBoYW5kbGVX
aGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvbmFs
PFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPik7CiAKICAgICBib29sIHVzZXNTY3JvbGxTbmFwKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDhl
ZDUzMmU4N2Q5ZDY4MWQyYzRlYzkwYjE4MTNlYzI4MDg0YWMzMjEuLmIzMjE3NzA1ZmNlMjhlNjMw
YmViYzUzYzQzNjI4OWU2Yjg4NjNmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcApAQCAtMzE2NSw3ICszMTY1LDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxh
eWVyOjpzY3JvbGxpbmdOb2RlSUQoKSBjb25zdAogICAgIHJldHVybiBiYWNraW5nKCktPnNjcm9s
bGluZ05vZGVJREZvclJvbGUoU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZTo6U2Nyb2xsaW5nKTsKIH0K
IAotYm9vbCBSZW5kZXJMYXllcjo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBl
dmVudEhhbmRsaW5nKQorYm9vbCBSZW5kZXJMYXllcjo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9s
bGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFdoZWVs
U2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCiB7CiAgICAgaWYgKCFpc1Njcm9sbGFi
bGVPclJ1YmJlcmJhbmRhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNzMsMTEg
KzMxNzMsMTEgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGlu
Zyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXYKICNpZiBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKQogICAgIGlmICh1c2VzQXN5bmNTY3JvbGxpbmcoKSAmJiBzY3JvbGxpbmdOb2RlSUQo
KSkgewogICAgICAgICBpZiAoYXV0byogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBwYWdlKCkuc2Ny
b2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGlu
YXRvci0+aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyh3aGVlbEV2ZW50LCBzY3JvbGxpbmdO
b2RlSUQoKSwgZXZlbnRIYW5kbGluZyk7CisgICAgICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxFdmVudCwgc2Nyb2xs
aW5nTm9kZUlEKCksIGdlc3R1cmVTdGF0ZSk7CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4g
U2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxFdmVudCwg
ZXZlbnRIYW5kbGluZyk7CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2
ZW50Rm9yU2Nyb2xsaW5nKHdoZWVsRXZlbnQsIGdlc3R1cmVTdGF0ZSk7CiB9CiAKIEludFJlY3Qg
UmVuZGVyTGF5ZXI6OnZpc2libGVDb250ZW50UmVjdEludGVybmFsKFZpc2libGVDb250ZW50UmVj
dEluY2x1ZGVzU2Nyb2xsYmFycyBzY3JvbGxiYXJJbmNsdXNpb24sIFZpc2libGVDb250ZW50UmVj
dEJlaGF2aW9yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRl
eCBhYWVkMTUyZTFiZDEyNzE4N2RkZmI1OTlhYzFjZTgyNzdhMGU1YTg1Li42NjI2ODJmZDE1NTU2
ZjRkNGQ5OGI4YTgxNTIwNmJlMDRiMDllM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaApAQCAtNDkzLDcgKzQ5Myw3IEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXIqIHZl
cnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV92QmFyLmdldCgpOyB9CiAg
ICAgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3QgZmluYWw7
CiAKLSAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KSBmaW5hbDsKKyAgICBib29sIGhh
bmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0
aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKICAgICBib29sIGlzU2Nyb2xs
YWJsZU9yUnViYmVyYmFuZGFibGUoKSBmaW5hbDsKICAgICBib29sIGhhc1Njcm9sbGFibGVPclJ1
YmJlcmJhbmRhYmxlQW5jZXN0b3IoKSBmaW5hbDsKICAgICBib29sIHVzZURhcmtBcHBlYXJhbmNl
KCkgY29uc3QgZmluYWw7Cg==
</data>
<flag name="commit-queue"
          id="432447"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415275</attachid>
            <date>2020-12-02 21:26:33 -0800</date>
            <delta_ts>2020-12-02 22:42:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219481-20201202212632.patch</filename>
            <type>text/plain</type>
            <size>37346</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRhYzEzZTcyZWRiMjkx
NzBlZDJkYjBkZTdkMTM1ZjAxNGRmNGI0Ni4uNmU2NGIyNTcwZGRkZmQwNTJiN2JiYTQyZjAzMTFj
ZTc2NzFlMzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTEyLTAyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIERldGVybWluZSB0
aGUgV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBwYXNz
aW5nIGl0IHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXhpbmcgd2Via2l0Lm9yZy9iLzIxODc2NCByZXF1aXJl
cyB0aGF0IHdlIHN0b3JlIHN0YXRlIGZvciBhIGdpdmVuIHNlcmllcyBvZiB3aGVlbCBldmVudHMK
KyAgICAgICAgcmVsYXRlZCB0byB3aGV0aGVyIHRoZSAiYmVnaW4iIGV2ZW50IGhhZCBwcmV2ZW50
RGVmYXVsdCgpIGNhbGxlZCBvbiBpdCAoaS5lLiB3YXMgY2FuY2VsZWQpLgorICAgICAgICBQcmV2
aW91c2x5IGNvZGUgd2FzIGRlc2lnbmVkIHRvIHByb3BhZ2F0ZSBPcHRpb25TZXQ8RXZlbnRIYW5k
bGluZz4gYXJvdW5kLCBhbmQgdXNlIGl0IHRvIGNvbXB1dGUKKyAgICAgICAgV2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGUgaW4gYm90aCBFdmVudEhhbmRsZXIgYW5kIFNjcm9sbGluZ1RyZWUgY29kZS4g
SG93ZXZlciwgd2UgY2FuCisgICAgICAgIGNvbXB1dGUgV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUg
anVzdCBvbmNlIGluIEV2ZW50SGFuZGxlciwgYW5kIHBhc3MgaXQgdG8gU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuCisKKyAgICAgICAgVG8gYWNoaWV2ZSB0aGlzLCBhZGQgYSBib3R0bGVuZWNrIGluIHRo
ZSBmb3JtIG9mIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEo
KQorICAgICAgICBhbmQgYmVmb3JlIGNhbGxpbmcgdGhlIFNjcm9sbGFibGVBcmVhIGZ1bmN0aW9u
IChpbXBsZW1lbnRhdGlvbiBvZiB3aGljaCBjYW4gY2FsbCBTY3JvbGxpbmdDb29yZGluYXRvciks
CisgICAgICAgIGNvbXB1dGUgV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgZnJvbSBPcHRpb25TZXQ8
RXZlbnRIYW5kbGluZz4uIFRoaXMgcmVxdWlyZWQgbWFraW5nCisgICAgICAgIGhhbmRsZVdoZWVs
RXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkgYSBtZW1iZXIgZnVuY3Rpb24uCisKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpoYW5k
bGVXaGVlbEV2ZW50UGhhc2VJblNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OmRp
ZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVudEhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNs
b3NpbmdCb3gpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpo
YW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5o
OgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZCk6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp3aGVlbEV2ZW50V2Fz
UHJvY2Vzc2VkQnlNYWluVGhyZWFkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJlYWRl
ZFNjcm9sbGluZ1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdU
cmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVh
ZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmg6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdoZWVsRXZl
bnRGb3JTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JN
YWM6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVu
dEZvclNjcm9sbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvck5p
Y29zaWE6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoYW5kbGVXaGVlbEV2ZW50Rm9y
U2Nyb2xsaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKwogMjAyMC0x
Mi0wMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBP
cHRpbWl6ZSBwYWRkaW5nIGluIEV2ZW50SGFuZGxlciBhbmQgcGxhdGZvcm0gZXZlbnQgY2xhc3Nl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGI4NTRiY2Q2NzA2NzVmMzI5
MDI2NjEyNGMzOTdhOGNmNzI3YmM2NDAuLmZlMzdkNzI5NTEyMzdjMTYwOWViMmNlMGNlOTBkZTcx
NWY0YzhjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI5MSw3NiAr
MjkxLDYgQEAgc3RhdGljIGlubGluZSBTY3JvbGxHcmFudWxhcml0eSB3aGVlbEdyYW51bGFyaXR5
VG9TY3JvbGxHcmFudWxhcml0eSh1bnNpZ25lZCBkZWwKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lk
IGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNj
cm9sbGFibGVBcmVhLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQotewotI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlOjpNYXlCZWdpbiB8fCB3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2U6OkNhbmNlbGxlZCkKLSAgICAgICAgc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0
b3IoKS5oYW5kbGVXaGVlbEV2ZW50UGhhc2Uod2hlZWxFdmVudC5waGFzZSgpKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHNjcm9sbGFibGVBcmVhKTsKLSAgICBVTlVTRURfUEFSQU0od2hlZWxF
dmVudCk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIGJvb2wgZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJl
YShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQpCi17Ci0gICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3aGVl
bEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgpKTsK
LSAgICBib29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQgYWJz
b2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBkaWRI
YW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRh
WCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFi
c29sdXRlRGVsdGEpOwotICAgIAotICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjph
YnMod2hlZWxFdmVudC5kZWx0YVkoKSkpCi0gICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0g
c2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFZKCkgPiAwID8gU2Nyb2xsRG93
biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7Ci0gICAgCi0g
ICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7Ci19Ci0KLXN0YXRpYyBib29sIGhhbmRsZVdo
ZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3Qg
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50
SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCi17Ci0gICAgYm9vbCBzaG91bGRIYW5kbGVFdmVudCA9
IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKLSNpZiBFTkFCTEUo
V0hFRUxfRVZFTlRfTEFUQ0hJTkcpCi0gICAgc2hvdWxkSGFuZGxlRXZlbnQgfD0gd2hlZWxFdmVu
dC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpFbmRlZDsKLSNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQotICAgIHNob3VsZEhhbmRsZUV2ZW50IHw9IHdoZWVsRXZlbnQubW9t
ZW50dW1QaGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpFbmRlZDsKLSNlbmRpZgot
I2VuZGlmCi0gICAgaWYgKCFzdGFydE5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIFJlbmRlckJveCYgaW5pdGlhbEVuY2xvc2luZ0JveCA9IHN0YXJ0Tm9kZS0+
cmVuZGVyZXIoKS0+ZW5jbG9zaW5nQm94KCk7Ci0KLSAgICAvLyBSZW5kZXJMaXN0Qm94IGlzIHNw
ZWNpYWwgYmVjYXVzZSBpdCdzIGEgU2Nyb2xsYWJsZUFyZWEgdGhhdCB0aGUgc2Nyb2xsaW5nIHRy
ZWUgZG9lc24ndCBrbm93IGFib3V0LgotICAgIGlmIChpczxSZW5kZXJMaXN0Qm94Pihpbml0aWFs
RW5jbG9zaW5nQm94KSkKLSAgICAgICAgaGFuZGxlV2hlZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxl
QXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxF
dmVudCk7Ci0KLSAgICBpZiAoIXNob3VsZEhhbmRsZUV2ZW50KQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoaXM8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCkpCi0g
ICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRvd25jYXN0PFJlbmRlckxp
c3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50KTsKLQotICAgIFJlbmRlckJv
eCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0aWFsRW5jbG9zaW5nQm94OwotICAgIHdoaWxl
IChjdXJyZW50RW5jbG9zaW5nQm94KSB7Ci0gICAgICAgIGlmIChSZW5kZXJMYXllciogYm94TGF5
ZXIgPSBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXllcigpKSB7Ci0gICAgICAgICAgICBhdXRvIHBs
YXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50LnVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCk7Ci0gICAg
ICAgICAgICBib29sIHNjcm9sbGluZ1dhc0hhbmRsZWQ7Ci0gICAgICAgICAgICBpZiAocGxhdGZv
cm1FdmVudCkgewotICAgICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2
ZW50LT5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0
aCgpLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwot
ICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBib3hMYXllci0+aGFuZGxlV2hl
ZWxFdmVudEZvclNjcm9sbGluZyhjb3BpZWRFdmVudCwgZXZlbnRIYW5kbGluZyk7Ci0gICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Ny
b2xsSW5TY3JvbGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQpOwotCi0gICAgICAgICAg
ICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQotCi0gICAgICAgIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSBjdXJyZW50RW5jbG9z
aW5nQm94LT5jb250YWluaW5nQmxvY2soKTsKLSAgICAgICAgaWYgKCFjdXJyZW50RW5jbG9zaW5n
Qm94IHx8IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmlzUmVuZGVyVmlldygpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiAoRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpKQogc3RhdGljIGJvb2wgc2hv
dWxkR2VzdHVyZXNUcmlnZ2VyQWN0aXZlKCkKIHsKQEAgLTI3ODcsNyArMjcxNyw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGV2ZW50CiAgICAgLy8gV2UgZG8gYW5vdGhlciBjaGVjayBvbiB0aGUgZnJh
bWUgdmlldyBiZWNhdXNlIHRoZSBldmVudCBoYW5kbGVyIGNhbiBydW4gSlMgd2hpY2ggcmVzdWx0
cyBpbiB0aGUgZnJhbWUgZ2V0dGluZyBkZXN0cm95ZWQuCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0g
bV9mcmFtZS52aWV3KCk7CiAgICAgCi0gICAgYm9vbCBkaWRIYW5kbGVFdmVudCA9IHZpZXcgPyB2
aWV3LT5oYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGV2ZW50LCBldmVudEhhbmRsaW5nKSA6
IGZhbHNlOworICAgIGJvb2wgZGlkSGFuZGxlRXZlbnQgPSB2aWV3ID8gaGFuZGxlV2hlZWxFdmVu
dEluU2Nyb2xsYWJsZUFyZWEoZXZlbnQsICp2aWV3LCBldmVudEhhbmRsaW5nKSA6IGZhbHNlOwog
ICAgIG1faXNIYW5kbGluZ1doZWVsRXZlbnQgPSBmYWxzZTsKICAgICByZXR1cm4gZGlkSGFuZGxl
RXZlbnQ7CiB9CkBAIC0yODY1LDEyICsyNzk1LDE1IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpjb21w
bGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgY29u
CiAgICAgcmV0dXJuIHBsYXRmb3JtQ29tcGxldGVQbGF0Zm9ybVdpZGdldFdoZWVsRXZlbnQoZXZl
bnQsICp3aWRnZXQuZ2V0KCksIHNjcm9sbGFibGVBcmVhKTsKIH0KIAotYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0
aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcykKK2Jvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3Np
bmdTdGVwcykKIHsKKyAgICBpZiAod2hlZWxFdmVudC5pc0dlc3R1cmVTdGFydCgpKQorICAgICAg
ICBtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlID0gV1RGOjpudWxsb3B0OworCiAgICAgT3B0aW9u
U2V0PEV2ZW50SGFuZGxpbmc+IGhhbmRsaW5nOwotICAgIGJvb2wgaGFuZGxlZCA9IGhhbmRsZVdo
ZWVsRXZlbnRJbnRlcm5hbChldmVudCwgcHJvY2Vzc2luZ1N0ZXBzLCBoYW5kbGluZyk7CisgICAg
Ym9vbCBoYW5kbGVkID0gaGFuZGxlV2hlZWxFdmVudEludGVybmFsKHdoZWVsRXZlbnQsIHByb2Nl
c3NpbmdTdGVwcywgaGFuZGxpbmcpOwogICAgIC8vIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1h
aW5UaHJlYWQoKSBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gY2FsbGVkIHZpYSBwZXJmb3JtRGVmYXVs
dFdoZWVsRXZlbnRIYW5kbGluZygpLCBidXQgdGhpcyBlbnN1cmVzIHRoYXQgaXQncyBhbHdheXMg
Y2FsbGVkIGlmIHRoYXQgY29kZSBwYXRoIGRvZXNuJ3QgcnVuLgotICAgIHdoZWVsRXZlbnRXYXNQ
cm9jZXNzZWRCeU1haW5UaHJlYWQoZXZlbnQsIGhhbmRsaW5nKTsKKyAgICB3aGVlbEV2ZW50V2Fz
UHJvY2Vzc2VkQnlNYWluVGhyZWFkKHdoZWVsRXZlbnQsIGhhbmRsaW5nKTsKICAgICByZXR1cm4g
aGFuZGxlZDsKIH0KIApAQCAtMjk3NCw2ICsyOTA3LDkxIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
T3B0CiAgICAgcmV0dXJuIGhhbmRsZWRFdmVudDsKIH0KIAorc3RhdGljIHZvaWQgaGFuZGxlV2hl
ZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFy
ZWEsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok1h
eUJlZ2luIHx8IHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6
Q2FuY2VsbGVkKQorICAgICAgICBzY3JvbGxhYmxlQXJlYS5zY3JvbGxBbmltYXRvcigpLmhhbmRs
ZVdoZWVsRXZlbnRQaGFzZSh3aGVlbEV2ZW50LnBoYXNlKCkpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oc2Nyb2xsYWJsZUFyZWEpOworICAgIFVOVVNFRF9QQVJBTSh3aGVlbEV2ZW50KTsKKyNl
bmRpZgorfQorCitzdGF0aWMgYm9vbCBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKFNjcm9sbGFi
bGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK3sK
KyAgICBTY3JvbGxHcmFudWxhcml0eSBzY3JvbGxHcmFudWxhcml0eSA9IHdoZWVsR3JhbnVsYXJp
dHlUb1Njcm9sbEdyYW51bGFyaXR5KHdoZWVsRXZlbnQuZGVsdGFNb2RlKCkpOworICAgIGJvb2wg
ZGlkSGFuZGxlV2hlZWxFdmVudCA9IGZhbHNlOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRh
ID0gc3RkOjphYnMod2hlZWxFdmVudC5kZWx0YVgoKSkpCisgICAgICAgIGRpZEhhbmRsZVdoZWVs
RXZlbnQgfD0gc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFYKCkgPiAwID8g
U2Nyb2xsUmlnaHQgOiBTY3JvbGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0
YSk7CisKKyAgICBpZiAoZmxvYXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQu
ZGVsdGFZKCkpKQorICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVh
LnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwg
c2Nyb2xsR3JhbnVsYXJpdHksIGFic29sdXRlRGVsdGEpOworCisgICAgcmV0dXJuIGRpZEhhbmRs
ZVdoZWVsRXZlbnQ7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5B
cHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25z
dCBGbG9hdFNpemUmIGZpbHRlcmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBl
dmVudEhhbmRsaW5nKQoreworICAgIGJvb2wgc2hvdWxkSGFuZGxlRXZlbnQgPSB3aGVlbEV2ZW50
LmRlbHRhWCgpIHx8IHdoZWVsRXZlbnQuZGVsdGFZKCk7CisjaWYgRU5BQkxFKFdIRUVMX0VWRU5U
X0xBVENISU5HKQorICAgIHNob3VsZEhhbmRsZUV2ZW50IHw9IHdoZWVsRXZlbnQucGhhc2UoKSA9
PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6RW5kZWQ7CisjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKKyAgICBzaG91bGRIYW5kbGVFdmVudCB8PSB3aGVlbEV2ZW50Lm1vbWVudHVtUGhhc2Uo
KSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6RW5kZWQ7CisjZW5kaWYKKyNlbmRpZgorICAg
IGlmICghc3RhcnROb2RlLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBSZW5kZXJCb3gmIGluaXRpYWxFbmNsb3NpbmdCb3ggPSBzdGFydE5vZGUtPnJlbmRlcmVyKCkt
PmVuY2xvc2luZ0JveCgpOworCisgICAgLy8gUmVuZGVyTGlzdEJveCBpcyBzcGVjaWFsIGJlY2F1
c2UgaXQncyBhIFNjcm9sbGFibGVBcmVhIHRoYXQgdGhlIHNjcm9sbGluZyB0cmVlIGRvZXNuJ3Qg
a25vdyBhYm91dC4KKyAgICBpZiAoaXM8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0Jv
eCkpCisgICAgICAgIGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoZG93bmNh
c3Q8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOworCisg
ICAgaWYgKCFzaG91bGRIYW5kbGVFdmVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKGlzPFJlbmRlckxpc3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpKQorICAgICAgICByZXR1
cm4gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0
aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxFdmVudCk7CisKKyAgICBSZW5kZXJCb3gqIGN1cnJlbnRF
bmNsb3NpbmdCb3ggPSAmaW5pdGlhbEVuY2xvc2luZ0JveDsKKyAgICB3aGlsZSAoY3VycmVudEVu
Y2xvc2luZ0JveCkgeworICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGJveExheWVyID0gY3VycmVu
dEVuY2xvc2luZ0JveC0+bGF5ZXIoKSkgeworICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50
ID0gd2hlZWxFdmVudC51bmRlcmx5aW5nUGxhdGZvcm1FdmVudCgpOworICAgICAgICAgICAgYm9v
bCBzY3JvbGxpbmdXYXNIYW5kbGVkOworICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQpIHsK
KyAgICAgICAgICAgICAgICBhdXRvIGNvcGllZEV2ZW50ID0gcGxhdGZvcm1FdmVudC0+Y29weVdp
dGhEZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVy
ZWRQbGF0Zm9ybURlbHRhLmhlaWdodCgpLCBmaWx0ZXJlZFZlbG9jaXR5KTsKKyAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFy
ZWEoY29waWVkRXZlbnQsICpib3hMYXllciwgZXZlbnRIYW5kbGluZyk7CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5T
Y3JvbGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQpOworCisgICAgICAgICAgICBpZiAo
c2Nyb2xsaW5nV2FzSGFuZGxlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSBjdXJyZW50RW5jbG9zaW5nQm94
LT5jb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgaWYgKCFjdXJyZW50RW5jbG9zaW5nQm94IHx8
IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmlzUmVuZGVyVmlldygpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIHdoZWVsRXZlbnQsIFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCit7CisgICAgYXV0byBnZXN0dXJlU3RhdGUg
PSB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZSh3aGVlbEV2ZW50LCBldmVudEhhbmRsaW5nKTsKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkV2ZW50SGFuZGxlcjo6aGFu
ZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoKSAtIGV2ZW50SGFuZGxpbmcgIiA8PCBldmVu
dEhhbmRsaW5nIDw8ICIgLT4gZ2VzdHVyZSBzdGF0ZSAiIDw8IGdlc3R1cmVTdGF0ZSk7CisgICAg
cmV0dXJuIHNjcm9sbGFibGVBcmVhLmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxF
dmVudCwgZ2VzdHVyZVN0YXRlKTsKK30KKworT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU+IEV2ZW50SGFuZGxlcjo6dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5k
bGluZykKK3sKKyAgICBpZiAoIW1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgJiYgd2hlZWxFdmVu
dC5pc0dlc3R1cmVTdGFydCgpICYmIGV2ZW50SGFuZGxpbmcuY29udGFpbnMoRXZlbnRIYW5kbGlu
Zzo6RGlzcGF0Y2hlZFRvRE9NKSkKKyAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA9
IGV2ZW50SGFuZGxpbmcuY29udGFpbnMoRXZlbnRIYW5kbGluZzo6RGVmYXVsdFByZXZlbnRlZCkg
PyBXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcgOiBXaGVlbFNjcm9sbEdlc3R1cmVT
dGF0ZTo6Tm9uQmxvY2tpbmc7CisKKyAgICByZXR1cm4gbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0
ZTsKK30KKwogdm9pZCBFdmVudEhhbmRsZXI6OmNsZWFyTGF0Y2hlZFN0YXRlKCkKIHsKICAgICBh
dXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CkBAIC0zMDMyLDcgKzMwNTAsNyBAQCB2b2lkIEV2
ZW50SGFuZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUqIHN0YXJ0Tm9kZSwgV2hl
ZWxFdmVudCYgd2hlZWxFdgogICAgICAgICBhdXRvIHBsYXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50
LnVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCk7CiAgICAgICAgIGlmIChwbGF0Zm9ybUV2ZW50KSB7
CiAgICAgICAgICAgICBhdXRvIGNvcGllZEV2ZW50ID0gcGxhdGZvcm1FdmVudC0+Y29weVdpdGhE
ZWx0YXNBbmRWZWxvY2l0eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRQ
bGF0Zm9ybURlbHRhLmhlaWdodCgpLCBmaWx0ZXJlZFZlbG9jaXR5KTsKLSAgICAgICAgICAgIGlm
IChsYXRjaGVkU2Nyb2xsZXItPmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29waWVkRXZl
bnQsIGV2ZW50SGFuZGxpbmcpKQorICAgICAgICAgICAgaWYgKGhhbmRsZVdoZWVsRXZlbnRJblNj
cm9sbGFibGVBcmVhKGNvcGllZEV2ZW50LCAqbGF0Y2hlZFNjcm9sbGVyLCBldmVudEhhbmRsaW5n
KSkKICAgICAgICAgICAgICAgICB3aGVlbEV2ZW50LnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmlu
ZGV4IDRlYmI1N2QwYTA2OTg5ZmQ4ZjM3MjNiZDRhYTU2ODUxNWU2YzFlNzkuLjdiNjY5YTdlM2U5
MDhhMDhmMDE3OTY2ZDQ0ZTc1ODUyN2VmZThjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaApAQCAtNDY0LDYgKzQ2NCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1doZWVs
RXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdlYWtQ
dHI8U2Nyb2xsYWJsZUFyZWE+Jik7CiAgICAgYm9vbCBjb21wbGV0ZVdpZGdldFdoZWVsRXZlbnQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2Vha1B0cjxXaWRnZXQ+JiwgY29uc3Qg
V2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKIAorICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudElu
QXBwcm9wcmlhdGVFbmNsb3NpbmdCb3goTm9kZSogc3RhcnROb2RlLCBjb25zdCBXaGVlbEV2ZW50
JiwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEsIGNvbnN0IEZsb2F0U2l6
ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKKworICAgIGJv
b2wgaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgU2Nyb2xsYWJsZUFyZWEmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOworICAgIE9w
dGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiB1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOworCiAg
ICAgYm9vbCBwbGF0Zm9ybUNvbXBsZXRlUGxhdGZvcm1XaWRnZXRXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYsIGNvbnN0IFdpZGdldCYsIGNvbnN0IFdlYWtQdHI8U2Nyb2xsYWJs
ZUFyZWE+Jik7CiAKICAgICB2b2lkIGRlZmF1bHRTcGFjZUV2ZW50SGFuZGxlcihLZXlib2FyZEV2
ZW50Jik7CkBAIC01NDEsNiArNTQ2LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIFNlbGVjdGlvbklu
aXRpYXRpb25TdGF0ZSA6IHVpbnQ4X3QgeyBIYXZlTm90U3RhcnRlZFNlbGVjdGlvbiwgUGxhY2Vk
Q2FyZXQsIEV4dGVuZGVkU2VsZWN0aW9uIH07CiAgICAgU2VsZWN0aW9uSW5pdGlhdGlvblN0YXRl
IG1fc2VsZWN0aW9uSW5pdGlhdGlvblN0YXRlIHsgSGF2ZU5vdFN0YXJ0ZWRTZWxlY3Rpb24gfTsK
ICAgICBJbW1lZGlhdGVBY3Rpb25TdGFnZSBtX2ltbWVkaWF0ZUFjdGlvblN0YWdlIHsgSW1tZWRp
YXRlQWN0aW9uU3RhZ2U6Ok5vbmUgfTsKKyAgICBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVT
dGF0ZT4gbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBt
X2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudDsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVt
ZW50VW5kZXJNb3VzZTsKQEAgLTYxNCw3ICs2MjAsNiBAQCBwcml2YXRlOgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgTlNWaWV3ICptX21vdXNlRG93blZpZXcgeyBudWxscHRyIH07Ci0gICAg
T3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IG1fd2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU7CiAgICAgYm9vbCBtX3NlbmRpbmdFdmVudFRvU3VidmlldyB7IGZhbHNlIH07CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDM5NTk5YzllZWMxYmI1YjAyOTc0Y2My
NDIwZTE2YzI5ZDAzYzJmNjIuLjU1ZjExYjFkY2M1MzNiNDRhNDgxMWNiYWQwZmE4YTNhZGVmODYz
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTUwOTgsNyArNTA5OCw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpyZW1vdmVDaGlsZChXaWRnZXQmIHdpZGdldCkKICAgICBTY3JvbGxWaWV3
OjpyZW1vdmVDaGlsZCh3aWRnZXQpOwogfQogCi1ib29sIEZyYW1lVmlldzo6aGFuZGxlV2hlZWxF
dmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9w
dGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBGcmFtZVZpZXc6Omhh
bmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVl
bEV2ZW50LCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQog
ewogICAgIC8vIE5vdGUgdGhhdCB0byBhbGxvdyBmb3IgcnViYmVyLWJhbmQgb3Zlci1zY3JvbGwg
YmVoYXZpb3IsIGV2ZW4gbm9uLXNjcm9sbGFibGUgdmlld3MKICAgICAvLyBzaG91bGQgaGFuZGxl
IHdoZWVsIGV2ZW50cy4KQEAgLTUxMjgsMTEgKzUxMjgsMTEgQEAgYm9vbCBGcmFtZVZpZXc6Omhh
bmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVl
bEV2ZW4KICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIGlmIChhdXRvIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkgewogICAgICAgICBp
ZiAoc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3
KCp0aGlzKSkKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+aGFuZGxl
V2hlZWxFdmVudEZvclNjcm9sbGluZyh3aGVlbEV2ZW50LCBzY3JvbGxpbmdOb2RlSUQoKSwgZXZl
bnRIYW5kbGluZyk7CisgICAgICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmhh
bmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxFdmVudCwgc2Nyb2xsaW5nTm9kZUlEKCks
IGdlc3R1cmVTdGF0ZSk7CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gU2Nyb2xsYWJsZUFy
ZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxFdmVudCwgZXZlbnRIYW5kbGlu
Zyk7CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xs
aW5nKHdoZWVsRXZlbnQsIGdlc3R1cmVTdGF0ZSk7CiB9CiAKIGJvb2wgRnJhbWVWaWV3Ojppc1Zl
cnRpY2FsRG9jdW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggY2EwMDhm
ODExMDE2NjQ1MWZjMWUyYzBjNzE1YmM3Mzc1YjY0MzlmYi4uOGM1Yjg0ODEzOWJhZGM5MmIwNDM5
MmUyZTk3ODA5OWQzNzQxNmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC01NjUsNyAr
NTY1LDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gZXhpc3RzIGZvciBwb3J0cyB0
aGF0IG5lZWQgdG8gaGFuZGxlIHdoZWVsIGV2ZW50cyBtYW51YWxseS4KICAgICAvLyBPbiBNYWMg
V2ViS2l0MSB0aGUgdW5kZXJseWluZyBOU1Njcm9sbFZpZXcganVzdCBkb2VzIHRoZSBzY3JvbGxp
bmcsIGJ1dCBvbiBtb3N0IG90aGVyIHBsYXRmb3JtcwogICAgIC8vIHdlIG5lZWQgdGhpcyBmdW5j
dGlvbiBpbiBvcmRlciB0byBkbyB0aGUgc2Nyb2xsIG91cnNlbHZlcy4KLSAgICBib29sIGhhbmRs
ZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9u
U2V0PEV2ZW50SGFuZGxpbmc+KSBmaW5hbDsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JT
Y3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8V2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGU+KSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDA0NjQyN2I2OGY3NGNlZjBmOGQ2MGQxMTkz
ZTQzODBhODE3MTRlYzAuLjRhMGVmZWQ3YzJkZWM3OWI1ZjMxZTVlNzE2ODk3ODJiNzE2MWUxY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTE1MCwx
MCArMTUwLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OndoZWVsRXZlbnQoTlNFdmVudCAqZXZlbnQp
CiAgICAgYXV0byB3aGVlbEV2ZW50ID0gUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRm
b3JtV2hlZWxFdmVudChldmVudCwgcGFnZS0+Y2hyb21lKCkucGxhdGZvcm1QYWdlQ2xpZW50KCkp
OwogICAgIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3Rl
cHMgPSB7IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcs
IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JCbG9ja2luZ0RPTUV2ZW50
RGlzcGF0Y2ggfTsKIAotICAgIGlmICh3aGVlbEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkpCi0gICAg
ICAgIG1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgPSBXVEY6Om51bGxvcHQ7Ci0gICAgZWxzZSBp
ZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDaGFuZ2Vk
IHx8IHdoZWVsRXZlbnQubW9tZW50dW1QaGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
OjpDaGFuZ2VkKSB7Ci0gICAgICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkud2hlZWxFdmVudEdl
c3R1cmVzQmVjb21lTm9uQmxvY2tpbmcoKSAmJiBtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlICYm
ICptX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlID09IFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpO
b25CbG9ja2luZykKKyAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlOjpDaGFuZ2VkIHx8IHdoZWVsRXZlbnQubW9tZW50dW1QaGFzZSgpID09IFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlOjpDaGFuZ2VkKSB7CisgICAgICAgIGlmIChtX2ZyYW1lLnNldHRp
bmdzKCkud2hlZWxFdmVudEdlc3R1cmVzQmVjb21lTm9uQmxvY2tpbmcoKSAmJiBtX3doZWVsU2Ny
b2xsR2VzdHVyZVN0YXRlLnZhbHVlT3IoV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6OkJsb2NraW5n
KSA9PSBXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6Tm9uQmxvY2tpbmcpCiAgICAgICAgICAgICBw
cm9jZXNzaW5nU3RlcHMgPSB7IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRG
b3JTY3JvbGxpbmcsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JOb25C
bG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2ggfTsKICAgICB9CiAgICAgcmV0dXJuIGhhbmRsZVdoZWVs
RXZlbnQod2hlZWxFdmVudCwgcHJvY2Vzc2luZ1N0ZXBzKTsKQEAgLTk0OCw3ICs5NDYsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbAogCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxM
YXRjaGluZywgc3RyZWFtIDw8ICIgc2VuZGluZyB0byB2aWV3ICIgPDwgKnZpZXcpOwogCi0gICAg
ICAgIGJvb2wgZGlkSGFuZGxlV2hlZWxFdmVudCA9IHZpZXctPmhhbmRsZVdoZWVsRXZlbnRGb3JT
Y3JvbGxpbmcod2hlZWxFdmVudCwgZXZlbnRIYW5kbGluZyk7CisgICAgICAgIGJvb2wgZGlkSGFu
ZGxlV2hlZWxFdmVudCA9IGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKHdoZWVsRXZl
bnQsICp2aWV3LCBldmVudEhhbmRsaW5nKTsKICAgICAgICAgLy8gSWYgdGhlIHBsYXRmb3JtIHdp
ZGdldCBpcyBoYW5kbGluZyB0aGUgZXZlbnQsIHdlIGFsd2F5cyB3YW50IHRvIHJldHVybiBmYWxz
ZS4KICAgICAgICAgaWYgKHZpZXctPnBsYXRmb3JtV2lkZ2V0KCkpCiAgICAgICAgICAgICBkaWRI
YW5kbGVXaGVlbEV2ZW50ID0gZmFsc2U7CkBAIC05NTcsNyArOTU1LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWwKICAgICAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7CiAgICAgfQog
ICAgIAotICAgIGJvb2wgZGlkSGFuZGxlRXZlbnQgPSB2aWV3LT5oYW5kbGVXaGVlbEV2ZW50Rm9y
U2Nyb2xsaW5nKHdoZWVsRXZlbnQsIGV2ZW50SGFuZGxpbmcpOworICAgIGJvb2wgZGlkSGFuZGxl
RXZlbnQgPSBoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYSh3aGVlbEV2ZW50LCAqdmll
dywgZXZlbnRIYW5kbGluZyk7CiAgICAgbV9pc0hhbmRsaW5nV2hlZWxFdmVudCA9IGZhbHNlOwog
ICAgIHJldHVybiBkaWRIYW5kbGVFdmVudDsKIH0KQEAgLTk3MiwxMyArOTcwLDEyIEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjp3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAorICAg
IHVwZGF0ZVdoZWVsR2VzdHVyZVN0YXRlKHdoZWVsRXZlbnQsIGV2ZW50SGFuZGxpbmcpOworCiAg
ICAgaWYgKGF1dG8gc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Nyb2xs
aW5nQ29vcmRpbmF0b3IoKSkgewogICAgICAgICBpZiAoc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNv
b3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KCp2aWV3KSkKLSAgICAgICAgICAgIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yLT53aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKHdoZWVs
RXZlbnQsIGV2ZW50SGFuZGxpbmcpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQod2hlZWxFdmVudCwgbV93aGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZSk7CiAgICAgfQotCi0gICAgaWYgKHdoZWVsRXZlbnQuaXNHZXN0dXJl
U3RhcnQoKSAmJiBldmVudEhhbmRsaW5nLmNvbnRhaW5zKEV2ZW50SGFuZGxpbmc6OkRpc3BhdGNo
ZWRUb0RPTSkpCi0gICAgICAgIG1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgPSBldmVudEhhbmRs
aW5nLmNvbnRhaW5zKEV2ZW50SGFuZGxpbmc6OkRlZmF1bHRQcmV2ZW50ZWQpID8gV2hlZWxTY3Jv
bGxHZXN0dXJlU3RhdGU6OkJsb2NraW5nIDogV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6Ok5vbkJs
b2NraW5nOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0od2hlZWxFdmVudCk7CiAgICAgVU5VU0VE
X1BBUkFNKGV2ZW50SGFuZGxpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggZTg1NjI4MzA0Yjk3MmNjZmMwN2Ji
MGE0ZDZlZjIxZTViY2E3NjlhNS4uODhmYTQzZWVmNTQ0MGYzNTc4YzE1OTUzMzhmOWRkNTgxMjE1
ZjU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5oCkBAIC0xMjcsOCArMTI3LDggQEAgcHVibGljOgogICAgIC8vIFRoZXNl
IHZpcnR1YWwgZnVuY3Rpb25zIGFyZSBjdXJyZW50bHkgdW5pcXVlIHRvIHRoZSB0aHJlYWRlZCBz
Y3JvbGxpbmcgYXJjaGl0ZWN0dXJlLiAKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJlZVN0YXRl
SWZOZWVkZWQoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBk
YXRlKFNjcm9sbGFibGVBcmVhJiwgY29uc3QgSW50UG9pbnQmLCBTY3JvbGxUeXBlID0gU2Nyb2xs
VHlwZTo6UHJvZ3JhbW1hdGljLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9sbENsYW1waW5nOjpDbGFt
cGVkKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50
Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGluZ05vZGVJRCwg
T3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPikgeyB9CisgICAgdmlydHVhbCBib29s
IGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jiwg
U2Nyb2xsaW5nTm9kZUlELCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1h
aW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8V2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGU+KSB7IH0KIAogICAgIC8vIENyZWF0ZSBhbiB1bnBhcmVudGVkIG5vZGUuCiAg
ICAgdmlydHVhbCBTY3JvbGxpbmdOb2RlSUQgY3JlYXRlTm9kZShTY3JvbGxpbmdOb2RlVHlwZSwg
U2Nyb2xsaW5nTm9kZUlEIG5ld05vZGVJRCkgeyByZXR1cm4gbmV3Tm9kZUlEOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVl
LmNwcAppbmRleCBkNmVkNmJhOTg1ODJkOWZkYTEyOTA1NTkyZjcyMGM4MmQ1NjYwYWUyLi41OTdl
NDY3NzJlOTQxN2Y3MjJjNmRiOTNiM2FkMTEwMzE0MDgwYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFRocmVhZGVkU2Nyb2xsaW5n
VHJlZTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVcKICAgICByZXR1cm4gU2Nyb2xs
aW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBwcm9jZXNzaW5nU3RlcHMpOwog
fQogCi1ib29sIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudEFmdGVyTWFp
blRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGluZ05v
ZGVJRCB0YXJnZXROb2RlSUQsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPikKK2Jvb2wgVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGVJ
RCwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KQogewogICAgIExPR19XSVRIX1NU
UkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVX
aGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkICIgPDwgd2hlZWxFdmVudCA8PCAiIG5vZGUgIiA8PCB0
YXJnZXROb2RlSUQpOwogCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgVGhyZWFkZWRTY3JvbGxpbmdU
cmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxF
CiAgICAgcmV0dXJuIHJlc3VsdC53YXNIYW5kbGVkOwogfQogCi12b2lkIFRocmVhZGVkU2Nyb2xs
aW5nVHJlZTo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pCit2b2lkIFRocmVhZGVkU2Ny
b2xsaW5nVHJlZTo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pCiB7CiAg
ICAgLy8gRklYTUU6IFNldCBzdGF0ZSBiYXNlZCBvbiBFdmVudEhhbmRsaW5nIGZsYWdzLgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGlu
Z1RyZWUuaAppbmRleCBlZjExMzk5ZGY2MjQwODBjODljZGE2ZTRiOTI0NGI1MWQ4MGFhNjhiLi45
MzVmZDdkY2NlZTYxYzI0M2ZhOTQxMGM5Y2M4MDM1YWVkYjU1YzZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaApAQCAt
NDcsOCArNDcsOCBAQCBwdWJsaWM6CiAKICAgICBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8V2hlZWxF
dmVudFByb2Nlc3NpbmdTdGVwcz4pIG92ZXJyaWRlOwogCi0gICAgYm9vbCBoYW5kbGVXaGVlbEV2
ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGluZ05v
ZGVJRCwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKLSAgICB2b2lkIHdoZWVsRXZlbnRXYXNQ
cm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRBZnRlck1haW5UaHJl
YWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsaW5nTm9kZUlELCBPcHRpb25hbDxX
aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pOworICAgIHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3Nl
ZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZT4pOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdD
b29yZGluYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLmgKaW5kZXggMjFmZWRhOTFiYmUzZTM1ZWFkMzBkNmI0NWM2NzUy
Y2YxYTFmYWIwNC4uZGNiMDc3OGI0OWYyMTNlNWJlZGE2YzRhNjU5N2JiMDdjNjljNmQ3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLmgKQEAgLTQxLDggKzQxLDggQEAgcHVibGljOgogICAgIHZvaWQg
Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKSBmaW5hbDsKIAogICAgIC8vIEhhbmRsZSB0aGUgd2hl
ZWwgZXZlbnQgb24gdGhlIHNjcm9sbGluZyB0aHJlYWQuIFJldHVybnMgd2hldGhlciB0aGUgZXZl
bnQgd2FzIGhhbmRsZWQgb3Igbm90LgotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEZvclNjcm9s
bGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxpbmdOb2RlSUQsIE9wdGlvblNl
dDxFdmVudEhhbmRsaW5nPikgZmluYWw7Ci0gICAgdm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2Vk
QnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhh
bmRsaW5nPikgZmluYWw7CisgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGluZ05vZGVJRCwgT3B0aW9uYWw8V2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKKyAgICB2b2lkIHdoZWVsRXZlbnRXYXNQcm9jZXNz
ZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8V2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxl
VHJlZVN0YXRlQ29tbWl0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KaW5kZXggZmZj
MjNiZWYzYmZjZjgyMDA5YjEyMjQ4ZmE3MzQ3MmI1N2U0YzRiOS4uOTFhZDc1MDkzNTcyM2M5ZTkx
NWIxYzc5NTdkOGIyNWY0ZjZjZGEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpAQCAtNzMs
NyArNzMsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpwYWdlRGVzdHJveWVkKCkK
ICAgICB9KTsKIH0KIAotYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxF
dmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNj
cm9sbGluZ05vZGVJRCB0YXJnZXROb2RlSUQsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVu
dEhhbmRsaW5nKQorYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVu
dEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9s
bGluZ05vZGVJRCB0YXJnZXROb2RlSUQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiBnZXN0dXJlU3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NF
UlQobV9wYWdlKTsKQEAgLTgxLDExICs4MSwxMSBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWFjOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdgog
ICAgIGlmIChzY3JvbGxpbmdUcmVlKCktPndpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUo
d2hlZWxFdmVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExPR19XSVRIX1NUUkVB
TShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdo
ZWVsRXZlbnRGb3JTY3JvbGxpbmcgLSBzZW5kaW5nIGV2ZW50IHRvIHNjcm9sbGluZyB0aHJlYWQs
IG5vZGUgIiA8PCB0YXJnZXROb2RlSUQpOworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcs
IHN0cmVhbSA8PCAiU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnRGb3JT
Y3JvbGxpbmcgLSBzZW5kaW5nIGV2ZW50IHRvIHNjcm9sbGluZyB0aHJlYWQsIG5vZGUgIiA8PCB0
YXJnZXROb2RlSUQgPDwgIiBnZXN0dXJlU3RhdGUgIiA8PCBnZXN0dXJlU3RhdGUpOwogICAgIAog
ICAgIFJlZlB0cjxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+IHRocmVhZGVkU2Nyb2xsaW5nVHJlZSA9
IGRvd25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xsaW5nVHJlZSgpKTsKLSAgICBT
Y3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUsIHdoZWVsRXZl
bnQsIHRhcmdldE5vZGVJRCwgZXZlbnRIYW5kbGluZ10gewotICAgICAgICB0aHJlYWRlZFNjcm9s
bGluZ1RyZWUtPmhhbmRsZVdoZWVsRXZlbnRBZnRlck1haW5UaHJlYWQod2hlZWxFdmVudCwgdGFy
Z2V0Tm9kZUlELCBldmVudEhhbmRsaW5nKTsKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNo
KFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUsIHdoZWVsRXZlbnQsIHRhcmdldE5vZGVJRCwgZ2VzdHVy
ZVN0YXRlXSB7CisgICAgICAgIHRocmVhZGVkU2Nyb2xsaW5nVHJlZS0+aGFuZGxlV2hlZWxFdmVu
dEFmdGVyTWFpblRocmVhZCh3aGVlbEV2ZW50LCB0YXJnZXROb2RlSUQsIGdlc3R1cmVTdGF0ZSk7
CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NiwxMyArOTYsMTMgQEAgc3RhdGlj
IHVpbnQ2NF90IG5leHREZWZlcklkZW50aWZpZXIoKQogICAgIHJldHVybiArK2RlZmVySWRlbnRp
ZmllcjsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6d2hlZWxFdmVudFdhc1By
b2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBkZWZhdWx0SGFuZGxpbmcpCit2b2lkIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yTWFjOjp3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0
dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKIHsKICAgICBhdXRvIGRlZmVycmVyID0gV2hlZWxFdmVu
dFRlc3RNb25pdG9yQ29tcGxldGlvbkRlZmVycmVyIHsgbV9wYWdlLT53aGVlbEV2ZW50VGVzdE1v
bml0b3IoKS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNj
cm9sbGFibGVBcmVhSWRlbnRpZmllcj4obmV4dERlZmVySWRlbnRpZmllcigpKSwgV2hlZWxFdmVu
dFRlc3RNb25pdG9yOjpSZXBvcnRET01FdmVudEhhbmRsaW5nIH07CiAKICAgICBSZWZQdHI8VGhy
ZWFkZWRTY3JvbGxpbmdUcmVlPiB0aHJlYWRlZFNjcm9sbGluZ1RyZWUgPSBkb3duY2FzdDxUaHJl
YWRlZFNjcm9sbGluZ1RyZWU+KHNjcm9sbGluZ1RyZWUoKSk7Ci0gICAgU2Nyb2xsaW5nVGhyZWFk
OjpkaXNwYXRjaChbdGhyZWFkZWRTY3JvbGxpbmdUcmVlLCB3aGVlbEV2ZW50LCBkZWZhdWx0SGFu
ZGxpbmcsIGRlZmVycmVyID0gV1RGTW92ZShkZWZlcnJlcildIHsKLSAgICAgICAgdGhyZWFkZWRT
Y3JvbGxpbmdUcmVlLT53aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKHdoZWVsRXZl
bnQsIGRlZmF1bHRIYW5kbGluZyk7CisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChbdGhy
ZWFkZWRTY3JvbGxpbmdUcmVlLCB3aGVlbEV2ZW50LCBnZXN0dXJlU3RhdGUsIGRlZmVycmVyID0g
V1RGTW92ZShkZWZlcnJlcildIHsKKyAgICAgICAgdGhyZWFkZWRTY3JvbGxpbmdUcmVlLT53aGVl
bEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKHdoZWVsRXZlbnQsIGdlc3R1cmVTdGF0ZSk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcApp
bmRleCAyZDIxNWZiOGFkNWVjMTlmNzRkN2E1ODE4MThkZDNlZDRiMDRiMTI2Li5kMDFjNmU3OTYx
OGEwNTQ5NWZkMTc4NTFlYzVkYWFhMTgwNTJkYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29y
ZGluYXRvck5pY29zaWEuY3BwCkBAIC02OSwyMiArNjksMjIgQEAgdm9pZCBTY3JvbGxpbmdDb29y
ZGluYXRvck5pY29zaWE6OmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKCkKICAgICBtX3Njcm9sbGlu
Z1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyLnN0b3AoKTsKIH0KIAotYm9vbCBTY3JvbGxpbmdDb29y
ZGluYXRvck5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxpbmdOb2RlSUQgdGFyZ2V0Tm9kZSwgT3B0
aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCitib29sIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGluZ05vZGVJRCB0YXJnZXROb2RlLCBPcHRp
b25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAgICAgQVNTRVJUKHNjcm9s
bGluZ1RyZWUoKSk7CiAKLSAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRlZFNj
cm9sbGluZ1RyZWUgPSBtYWtlUmVmKGRvd25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oKnNj
cm9sbGluZ1RyZWUoKSkpLCB3aGVlbEV2ZW50LCB0YXJnZXROb2RlLCBldmVudEhhbmRsaW5nXSB7
Ci0gICAgICAgIHRocmVhZGVkU2Nyb2xsaW5nVHJlZS0+aGFuZGxlV2hlZWxFdmVudEFmdGVyTWFp
blRocmVhZCh3aGVlbEV2ZW50LCB0YXJnZXROb2RlLCBldmVudEhhbmRsaW5nKTsKKyAgICBTY3Jv
bGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUgPSBtYWtlUmVmKGRv
d25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oKnNjcm9sbGluZ1RyZWUoKSkpLCB3aGVlbEV2
ZW50LCB0YXJnZXROb2RlLCBnZXN0dXJlU3RhdGVdIHsKKyAgICAgICAgdGhyZWFkZWRTY3JvbGxp
bmdUcmVlLT5oYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKHdoZWVsRXZlbnQsIHRhcmdl
dE5vZGUsIGdlc3R1cmVTdGF0ZSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhOjp3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlN
YWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Tmljb3NpYTo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiBnZXN0dXJlU3RhdGUpCiB7Ci0gICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChbdGhyZWFk
ZWRTY3JvbGxpbmdUcmVlID0gbWFrZVJlZihkb3duY2FzdDxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+
KCpzY3JvbGxpbmdUcmVlKCkpKSwgd2hlZWxFdmVudCwgZXZlbnRIYW5kbGluZ10gewotICAgICAg
ICB0aHJlYWRlZFNjcm9sbGluZ1RyZWUtPndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJl
YWQod2hlZWxFdmVudCwgZXZlbnRIYW5kbGluZyk7CisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNw
YXRjaChbdGhyZWFkZWRTY3JvbGxpbmdUcmVlID0gbWFrZVJlZihkb3duY2FzdDxUaHJlYWRlZFNj
cm9sbGluZ1RyZWU+KCpzY3JvbGxpbmdUcmVlKCkpKSwgd2hlZWxFdmVudCwgZ2VzdHVyZVN0YXRl
XSB7CisgICAgICAgIHRocmVhZGVkU2Nyb2xsaW5nVHJlZS0+d2hlZWxFdmVudFdhc1Byb2Nlc3Nl
ZEJ5TWFpblRocmVhZCh3aGVlbEV2ZW50LCBnZXN0dXJlU3RhdGUpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yTmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuaAppbmRleCBhMzlhNjA0NDIwNmQyMWU5
NjRlMjI2YmVhZjMyYjY1ZDgxN2I4NGU1Li5hODYwZTJlZjMxODk3NDMzNGNmNGNhNGI0ZjI1NDQ4
NTBjODE4MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmgKQEAgLTQ0
LDggKzQ0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgp
IG92ZXJyaWRlOwogCi0gICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGluZ05vZGVJRCwgT3B0aW9uU2V0PEV2ZW50SGFu
ZGxpbmc+KSBvdmVycmlkZTsKLSAgICB2b2lkIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5U
aHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+
KSBvdmVycmlkZTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsaW5nTm9kZUlELCBPcHRpb25hbDxXaGVlbFNjcm9s
bEdlc3R1cmVTdGF0ZT4pIG92ZXJyaWRlOworICAgIHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3Nl
ZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZT4pIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1
bGVUcmVlU3RhdGVDb21taXQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcAppbmRleCA4MDE2NmE1MjIyODQ1YTczNGU5MDZhM2YzYzliYWNjOTY4
NTgxNzFjLi45MDQyYjVjMTgyZjlkODVhYmViZDE5M2I1ZWYxZDA5MTY5MmMyYzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0yMDMsNyArMjAzLDcg
QEAgdm9pZCBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKGNvbnN0IFNjcm9s
bFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5ub3RpZnlDb250
ZW50QXJlYVNjcm9sbGVkKHNjcm9sbFBvc2l0aW9uKCkgLSBvbGRQb3NpdGlvbik7CiB9CiAKLWJv
b2wgU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pCiti
b29sIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJl
U3RhdGU+KQogewogICAgIGlmICghaXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aAppbmRleCA1YTczOGI4ODZkMGYyMzAwMjhlYmU0OTZlN2UwMDMxYzk0MDQ2OTU0Li5lZGY0NzJm
NDRjZmI1ZGNmZTc0YjY2Nzg5ODgzNjc2ZWU5MTQwMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgU2Nyb2xsQW5pbWF0
b3I7CiBjbGFzcyBHcmFwaGljc0xheWVyOwogY2xhc3MgVGlsZWRCYWNraW5nOwogCi1lbnVtIGNs
YXNzIEV2ZW50SGFuZGxpbmcgOiB1aW50OF90OworZW51bSBjbGFzcyBXaGVlbFNjcm9sbEdlc3R1
cmVTdGF0ZSA6IHVpbnQ4X3Q7CiAKIGlubGluZSBpbnQgb2Zmc2V0Rm9yT3JpZW50YXRpb24oU2Ny
b2xsT2Zmc2V0IG9mZnNldCwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24pCiB7CkBA
IC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAvLyBleHBlY3QgaXQgdG8gaGFwcGVuIHNvbWV0
aW1lIGluIHRoZSBmdXR1cmUuCiAgICAgdmlydHVhbCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlv
blVwZGF0ZShjb25zdCBTY3JvbGxQb3NpdGlvbiYsIFNjcm9sbFR5cGUgPSBTY3JvbGxUeXBlOjpV
c2VyLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkKSB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZl
bnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50
SGFuZGxpbmc+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxF
dmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVl
bFNjcm9sbEdlc3R1cmVTdGF0ZT4pOwogCiAgICAgYm9vbCB1c2VzU2Nyb2xsU25hcCgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA4ZWQ1MzJl
ODdkOWQ2ODFkMmM0ZWM5MGIxODEzZWMyODA4NGFjMzIxLi5iMzIxNzcwNWZjZTI4ZTYzMGJlYmM1
M2M0MzYyODllNmI4ODYzZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKQEAgLTMxNjUsNyArMzE2NSw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllcjo6
c2Nyb2xsaW5nTm9kZUlEKCkgY29uc3QKICAgICByZXR1cm4gYmFja2luZygpLT5zY3JvbGxpbmdO
b2RlSURGb3JSb2xlKFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlNjcm9sbGluZyk7CiB9CiAKLWJv
b2wgUmVuZGVyTGF5ZXI6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRI
YW5kbGluZykKK2Jvb2wgUmVuZGVyTGF5ZXI6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmco
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25hbDxXaGVlbFNjcm9s
bEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQogewogICAgIGlmICghaXNTY3JvbGxhYmxlT3JS
dWJiZXJiYW5kYWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTczLDExICszMTcz
LDExIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElO
RykKICAgICBpZiAodXNlc0FzeW5jU2Nyb2xsaW5nKCkgJiYgc2Nyb2xsaW5nTm9kZUlEKCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZSgpLnNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxFdmVudCwgc2Nyb2xsaW5nTm9kZUlE
KCksIGV2ZW50SGFuZGxpbmcpOworICAgICAgICAgICAgcmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT5oYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKHdoZWVsRXZlbnQsIHNjcm9sbGluZ05v
ZGVJRCgpLCBnZXN0dXJlU3RhdGUpOwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIFNjcm9s
bGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKHdoZWVsRXZlbnQsIGV2ZW50
SGFuZGxpbmcpOworICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudEZv
clNjcm9sbGluZyh3aGVlbEV2ZW50LCBnZXN0dXJlU3RhdGUpOwogfQogCiBJbnRSZWN0IFJlbmRl
ckxheWVyOjp2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJbmNs
dWRlc1Njcm9sbGJhcnMgc2Nyb2xsYmFySW5jbHVzaW9uLCBWaXNpYmxlQ29udGVudFJlY3RCZWhh
dmlvcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggYWFl
ZDE1MmUxYmQxMjcxODdkZGZiNTk5YWMxY2U4Mjc3YTBlNWE4NS4uNjYyNjgyZmQxNTU1NmY0ZDRk
OThiOGE4MTUyMDZiZTA0YjA5ZTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKQEAgLTQ5Myw3ICs0OTMsNyBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyKiB2ZXJ0aWNh
bFNjcm9sbGJhcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdkJhci5nZXQoKTsgfQogICAgIFNj
cm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IGZpbmFsOwogCi0g
ICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPikgZmluYWw7CisgICAgYm9vbCBoYW5kbGVX
aGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvbmFs
PFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPikgZmluYWw7CiAgICAgYm9vbCBpc1Njcm9sbGFibGVP
clJ1YmJlcmJhbmRhYmxlKCkgZmluYWw7CiAgICAgYm9vbCBoYXNTY3JvbGxhYmxlT3JSdWJiZXJi
YW5kYWJsZUFuY2VzdG9yKCkgZmluYWw7CiAgICAgYm9vbCB1c2VEYXJrQXBwZWFyYW5jZSgpIGNv
bnN0IGZpbmFsOwo=
</data>
<flag name="commit-queue"
          id="432452"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415277</attachid>
            <date>2020-12-02 22:04:54 -0800</date>
            <delta_ts>2020-12-02 23:59:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219481-20201202220453.patch</filename>
            <type>text/plain</type>
            <size>40906</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRhYzEzZTcyZWRiMjkx
NzBlZDJkYjBkZTdkMTM1ZjAxNGRmNGI0Ni4uNmU2NGIyNTcwZGRkZmQwNTJiN2JiYTQyZjAzMTFj
ZTc2NzFlMzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTEyLTAyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIERldGVybWluZSB0
aGUgV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBwYXNz
aW5nIGl0IHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXhpbmcgd2Via2l0Lm9yZy9iLzIxODc2NCByZXF1aXJl
cyB0aGF0IHdlIHN0b3JlIHN0YXRlIGZvciBhIGdpdmVuIHNlcmllcyBvZiB3aGVlbCBldmVudHMK
KyAgICAgICAgcmVsYXRlZCB0byB3aGV0aGVyIHRoZSAiYmVnaW4iIGV2ZW50IGhhZCBwcmV2ZW50
RGVmYXVsdCgpIGNhbGxlZCBvbiBpdCAoaS5lLiB3YXMgY2FuY2VsZWQpLgorICAgICAgICBQcmV2
aW91c2x5IGNvZGUgd2FzIGRlc2lnbmVkIHRvIHByb3BhZ2F0ZSBPcHRpb25TZXQ8RXZlbnRIYW5k
bGluZz4gYXJvdW5kLCBhbmQgdXNlIGl0IHRvIGNvbXB1dGUKKyAgICAgICAgV2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGUgaW4gYm90aCBFdmVudEhhbmRsZXIgYW5kIFNjcm9sbGluZ1RyZWUgY29kZS4g
SG93ZXZlciwgd2UgY2FuCisgICAgICAgIGNvbXB1dGUgV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUg
anVzdCBvbmNlIGluIEV2ZW50SGFuZGxlciwgYW5kIHBhc3MgaXQgdG8gU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuCisKKyAgICAgICAgVG8gYWNoaWV2ZSB0aGlzLCBhZGQgYSBib3R0bGVuZWNrIGluIHRo
ZSBmb3JtIG9mIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEo
KQorICAgICAgICBhbmQgYmVmb3JlIGNhbGxpbmcgdGhlIFNjcm9sbGFibGVBcmVhIGZ1bmN0aW9u
IChpbXBsZW1lbnRhdGlvbiBvZiB3aGljaCBjYW4gY2FsbCBTY3JvbGxpbmdDb29yZGluYXRvciks
CisgICAgICAgIGNvbXB1dGUgV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgZnJvbSBPcHRpb25TZXQ8
RXZlbnRIYW5kbGluZz4uIFRoaXMgcmVxdWlyZWQgbWFraW5nCisgICAgICAgIGhhbmRsZVdoZWVs
RXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KCkgYSBtZW1iZXIgZnVuY3Rpb24uCisKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpoYW5k
bGVXaGVlbEV2ZW50UGhhc2VJblNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OmRp
ZFNjcm9sbEluU2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVBcmVhKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVudEhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlV2hlZWxFdmVudEluQXBwcm9wcmlhdGVFbmNs
b3NpbmdCb3gpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAg
ICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpo
YW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5o
OgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZCk6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp3aGVlbEV2ZW50V2Fz
UHJvY2Vzc2VkQnlNYWluVGhyZWFkKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJlYWRl
ZFNjcm9sbGluZ1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdU
cmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVh
ZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmg6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmg6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdoZWVsRXZl
bnRGb3JTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JN
YWM6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVu
dEZvclNjcm9sbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvck5p
Y29zaWE6OndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcpOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoYW5kbGVXaGVlbEV2ZW50Rm9y
U2Nyb2xsaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKwogMjAyMC0x
Mi0wMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBP
cHRpbWl6ZSBwYWRkaW5nIGluIEV2ZW50SGFuZGxlciBhbmQgcGxhdGZvcm0gZXZlbnQgY2xhc3Nl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGI4NTRiY2Q2NzA2NzVmMzI5
MDI2NjEyNGMzOTdhOGNmNzI3YmM2NDAuLjAzZjBiOWQ2ODEyZWI5Mzc2OTZmNjI0ZWU3NzI1ZDgy
NGUwZGVhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI5MSw3NiAr
MjkxLDYgQEAgc3RhdGljIGlubGluZSBTY3JvbGxHcmFudWxhcml0eSB3aGVlbEdyYW51bGFyaXR5
VG9TY3JvbGxHcmFudWxhcml0eSh1bnNpZ25lZCBkZWwKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lk
IGhhbmRsZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNj
cm9sbGFibGVBcmVhLCBjb25zdCBXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQotewotI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVu
dFBoYXNlOjpNYXlCZWdpbiB8fCB3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2U6OkNhbmNlbGxlZCkKLSAgICAgICAgc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsQW5pbWF0
b3IoKS5oYW5kbGVXaGVlbEV2ZW50UGhhc2Uod2hlZWxFdmVudC5waGFzZSgpKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHNjcm9sbGFibGVBcmVhKTsKLSAgICBVTlVTRURfUEFSQU0od2hlZWxF
dmVudCk7Ci0jZW5kaWYKLX0KLQotc3RhdGljIGJvb2wgZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJl
YShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQpCi17Ci0gICAgU2Nyb2xsR3JhbnVsYXJpdHkgc2Nyb2xsR3JhbnVsYXJpdHkgPSB3aGVl
bEdyYW51bGFyaXR5VG9TY3JvbGxHcmFudWxhcml0eSh3aGVlbEV2ZW50LmRlbHRhTW9kZSgpKTsK
LSAgICBib29sIGRpZEhhbmRsZVdoZWVsRXZlbnQgPSBmYWxzZTsKLSAgICBpZiAoZmxvYXQgYWJz
b2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFYKCkpKQotICAgICAgICBkaWRI
YW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50LmRlbHRh
WCgpID4gMCA/IFNjcm9sbFJpZ2h0IDogU2Nyb2xsTGVmdCwgc2Nyb2xsR3JhbnVsYXJpdHksIGFi
c29sdXRlRGVsdGEpOwotICAgIAotICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjph
YnMod2hlZWxFdmVudC5kZWx0YVkoKSkpCi0gICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0g
c2Nyb2xsYWJsZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFZKCkgPiAwID8gU2Nyb2xsRG93
biA6IFNjcm9sbFVwLCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7Ci0gICAgCi0g
ICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7Ci19Ci0KLXN0YXRpYyBib29sIGhhbmRsZVdo
ZWVsRXZlbnRJbkFwcHJvcHJpYXRlRW5jbG9zaW5nQm94KE5vZGUqIHN0YXJ0Tm9kZSwgY29uc3Qg
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJlZFBsYXRmb3Jt
RGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyZWRWZWxvY2l0eSwgT3B0aW9uU2V0PEV2ZW50
SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCi17Ci0gICAgYm9vbCBzaG91bGRIYW5kbGVFdmVudCA9
IHdoZWVsRXZlbnQuZGVsdGFYKCkgfHwgd2hlZWxFdmVudC5kZWx0YVkoKTsKLSNpZiBFTkFCTEUo
V0hFRUxfRVZFTlRfTEFUQ0hJTkcpCi0gICAgc2hvdWxkSGFuZGxlRXZlbnQgfD0gd2hlZWxFdmVu
dC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpFbmRlZDsKLSNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQotICAgIHNob3VsZEhhbmRsZUV2ZW50IHw9IHdoZWVsRXZlbnQubW9t
ZW50dW1QaGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpFbmRlZDsKLSNlbmRpZgot
I2VuZGlmCi0gICAgaWYgKCFzdGFydE5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIFJlbmRlckJveCYgaW5pdGlhbEVuY2xvc2luZ0JveCA9IHN0YXJ0Tm9kZS0+
cmVuZGVyZXIoKS0+ZW5jbG9zaW5nQm94KCk7Ci0KLSAgICAvLyBSZW5kZXJMaXN0Qm94IGlzIHNw
ZWNpYWwgYmVjYXVzZSBpdCdzIGEgU2Nyb2xsYWJsZUFyZWEgdGhhdCB0aGUgc2Nyb2xsaW5nIHRy
ZWUgZG9lc24ndCBrbm93IGFib3V0LgotICAgIGlmIChpczxSZW5kZXJMaXN0Qm94Pihpbml0aWFs
RW5jbG9zaW5nQm94KSkKLSAgICAgICAgaGFuZGxlV2hlZWxFdmVudFBoYXNlSW5TY3JvbGxhYmxl
QXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwgd2hlZWxF
dmVudCk7Ci0KLSAgICBpZiAoIXNob3VsZEhhbmRsZUV2ZW50KQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoaXM8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCkpCi0g
ICAgICAgIHJldHVybiBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKGRvd25jYXN0PFJlbmRlckxp
c3RCb3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpLCB3aGVlbEV2ZW50KTsKLQotICAgIFJlbmRlckJv
eCogY3VycmVudEVuY2xvc2luZ0JveCA9ICZpbml0aWFsRW5jbG9zaW5nQm94OwotICAgIHdoaWxl
IChjdXJyZW50RW5jbG9zaW5nQm94KSB7Ci0gICAgICAgIGlmIChSZW5kZXJMYXllciogYm94TGF5
ZXIgPSBjdXJyZW50RW5jbG9zaW5nQm94LT5sYXllcigpKSB7Ci0gICAgICAgICAgICBhdXRvIHBs
YXRmb3JtRXZlbnQgPSB3aGVlbEV2ZW50LnVuZGVybHlpbmdQbGF0Zm9ybUV2ZW50KCk7Ci0gICAg
ICAgICAgICBib29sIHNjcm9sbGluZ1dhc0hhbmRsZWQ7Ci0gICAgICAgICAgICBpZiAocGxhdGZv
cm1FdmVudCkgewotICAgICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2
ZW50LT5jb3B5V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0
aCgpLCBmaWx0ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwot
ICAgICAgICAgICAgICAgIHNjcm9sbGluZ1dhc0hhbmRsZWQgPSBib3hMYXllci0+aGFuZGxlV2hl
ZWxFdmVudEZvclNjcm9sbGluZyhjb3BpZWRFdmVudCwgZXZlbnRIYW5kbGluZyk7Ci0gICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Ny
b2xsSW5TY3JvbGxhYmxlQXJlYSgqYm94TGF5ZXIsIHdoZWVsRXZlbnQpOwotCi0gICAgICAgICAg
ICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQotCi0gICAgICAgIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSBjdXJyZW50RW5jbG9z
aW5nQm94LT5jb250YWluaW5nQmxvY2soKTsKLSAgICAgICAgaWYgKCFjdXJyZW50RW5jbG9zaW5n
Qm94IHx8IGN1cnJlbnRFbmNsb3NpbmdCb3gtPmlzUmVuZGVyVmlldygpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KICNpZiAoRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPU19GQU1JTFkpKQogc3RhdGljIGJvb2wgc2hv
dWxkR2VzdHVyZXNUcmlnZ2VyQWN0aXZlKCkKIHsKQEAgLTI3ODcsNyArMjcxNyw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIGV2ZW50CiAgICAgLy8gV2UgZG8gYW5vdGhlciBjaGVjayBvbiB0aGUgZnJh
bWUgdmlldyBiZWNhdXNlIHRoZSBldmVudCBoYW5kbGVyIGNhbiBydW4gSlMgd2hpY2ggcmVzdWx0
cyBpbiB0aGUgZnJhbWUgZ2V0dGluZyBkZXN0cm95ZWQuCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0g
bV9mcmFtZS52aWV3KCk7CiAgICAgCi0gICAgYm9vbCBkaWRIYW5kbGVFdmVudCA9IHZpZXcgPyB2
aWV3LT5oYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGV2ZW50LCBldmVudEhhbmRsaW5nKSA6
IGZhbHNlOworICAgIGJvb2wgZGlkSGFuZGxlRXZlbnQgPSB2aWV3ID8gaGFuZGxlV2hlZWxFdmVu
dEluU2Nyb2xsYWJsZUFyZWEoZXZlbnQsICp2aWV3LCBldmVudEhhbmRsaW5nKSA6IGZhbHNlOwog
ICAgIG1faXNIYW5kbGluZ1doZWVsRXZlbnQgPSBmYWxzZTsKICAgICByZXR1cm4gZGlkSGFuZGxl
RXZlbnQ7CiB9CkBAIC0yODY1LDEyICsyNzk1LDE3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpjb21w
bGV0ZVdpZGdldFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgY29u
CiAgICAgcmV0dXJuIHBsYXRmb3JtQ29tcGxldGVQbGF0Zm9ybVdpZGdldFdoZWVsRXZlbnQoZXZl
bnQsICp3aWRnZXQuZ2V0KCksIHNjcm9sbGFibGVBcmVhKTsKIH0KIAotYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0
aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcykKK2Jvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3Np
bmdTdGVwcykKIHsKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCisgICAgaWYgKHdoZWVs
RXZlbnQuaXNHZXN0dXJlU3RhcnQoKSkKKyAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0
ZSA9IFdURjo6bnVsbG9wdDsKKyNlbmRpZgorCiAgICAgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+
IGhhbmRsaW5nOwotICAgIGJvb2wgaGFuZGxlZCA9IGhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbChl
dmVudCwgcHJvY2Vzc2luZ1N0ZXBzLCBoYW5kbGluZyk7CisgICAgYm9vbCBoYW5kbGVkID0gaGFu
ZGxlV2hlZWxFdmVudEludGVybmFsKHdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVwcywgaGFuZGxp
bmcpOwogICAgIC8vIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQoKSBtYXkgaGF2
ZSBhbHJlYWR5IGJlZW4gY2FsbGVkIHZpYSBwZXJmb3JtRGVmYXVsdFdoZWVsRXZlbnRIYW5kbGlu
ZygpLCBidXQgdGhpcyBlbnN1cmVzIHRoYXQgaXQncyBhbHdheXMgY2FsbGVkIGlmIHRoYXQgY29k
ZSBwYXRoIGRvZXNuJ3QgcnVuLgotICAgIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJl
YWQoZXZlbnQsIGhhbmRsaW5nKTsKKyAgICB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhy
ZWFkKHdoZWVsRXZlbnQsIGhhbmRsaW5nKTsKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KIApAQCAt
Mjk3NCw2ICsyOTA5LDk3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50
ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwgT3B0CiAgICAgcmV0dXJuIGhh
bmRsZWRFdmVudDsKIH0KIAorc3RhdGljIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlSW5TY3Jv
bGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIGNvbnN0IFdoZWVsRXZl
bnQmIHdoZWVsRXZlbnQpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmICh3aGVlbEV2ZW50
LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok1heUJlZ2luIHx8IHdoZWVsRXZl
bnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2FuY2VsbGVkKQorICAgICAg
ICBzY3JvbGxhYmxlQXJlYS5zY3JvbGxBbmltYXRvcigpLmhhbmRsZVdoZWVsRXZlbnRQaGFzZSh3
aGVlbEV2ZW50LnBoYXNlKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2Nyb2xsYWJsZUFy
ZWEpOworICAgIFVOVVNFRF9QQVJBTSh3aGVlbEV2ZW50KTsKKyNlbmRpZgorfQorCitzdGF0aWMg
Ym9vbCBkaWRTY3JvbGxJblNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxl
QXJlYSwgY29uc3QgV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK3sKKyAgICBTY3JvbGxHcmFudWxh
cml0eSBzY3JvbGxHcmFudWxhcml0eSA9IHdoZWVsR3JhbnVsYXJpdHlUb1Njcm9sbEdyYW51bGFy
aXR5KHdoZWVsRXZlbnQuZGVsdGFNb2RlKCkpOworICAgIGJvb2wgZGlkSGFuZGxlV2hlZWxFdmVu
dCA9IGZhbHNlOworICAgIGlmIChmbG9hdCBhYnNvbHV0ZURlbHRhID0gc3RkOjphYnMod2hlZWxF
dmVudC5kZWx0YVgoKSkpCisgICAgICAgIGRpZEhhbmRsZVdoZWVsRXZlbnQgfD0gc2Nyb2xsYWJs
ZUFyZWEuc2Nyb2xsKHdoZWVsRXZlbnQuZGVsdGFYKCkgPiAwID8gU2Nyb2xsUmlnaHQgOiBTY3Jv
bGxMZWZ0LCBzY3JvbGxHcmFudWxhcml0eSwgYWJzb2x1dGVEZWx0YSk7CisKKyAgICBpZiAoZmxv
YXQgYWJzb2x1dGVEZWx0YSA9IHN0ZDo6YWJzKHdoZWVsRXZlbnQuZGVsdGFZKCkpKQorICAgICAg
ICBkaWRIYW5kbGVXaGVlbEV2ZW50IHw9IHNjcm9sbGFibGVBcmVhLnNjcm9sbCh3aGVlbEV2ZW50
LmRlbHRhWSgpID4gMCA/IFNjcm9sbERvd24gOiBTY3JvbGxVcCwgc2Nyb2xsR3JhbnVsYXJpdHks
IGFic29sdXRlRGVsdGEpOworCisgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZlbnQ7Cit9CisK
K2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2lu
Z0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLCBjb25zdCBGbG9hdFNpemUmIGZpbHRl
cmVkVmVsb2NpdHksIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorewor
ICAgIGJvb2wgc2hvdWxkSGFuZGxlRXZlbnQgPSB3aGVlbEV2ZW50LmRlbHRhWCgpIHx8IHdoZWVs
RXZlbnQuZGVsdGFZKCk7CisjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQorICAgIHNo
b3VsZEhhbmRsZUV2ZW50IHw9IHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZTo6RW5kZWQ7CisjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKKyAgICBzaG91bGRI
YW5kbGVFdmVudCB8PSB3aGVlbEV2ZW50Lm1vbWVudHVtUGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZTo6RW5kZWQ7CisjZW5kaWYKKyNlbmRpZgorICAgIGlmICghc3RhcnROb2RlLT5y
ZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZW5kZXJCb3gmIGluaXRp
YWxFbmNsb3NpbmdCb3ggPSBzdGFydE5vZGUtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0JveCgpOwor
CisgICAgLy8gUmVuZGVyTGlzdEJveCBpcyBzcGVjaWFsIGJlY2F1c2UgaXQncyBhIFNjcm9sbGFi
bGVBcmVhIHRoYXQgdGhlIHNjcm9sbGluZyB0cmVlIGRvZXNuJ3Qga25vdyBhYm91dC4KKyAgICBp
ZiAoaXM8UmVuZGVyTGlzdEJveD4oaW5pdGlhbEVuY2xvc2luZ0JveCkpCisgICAgICAgIGhhbmRs
ZVdoZWVsRXZlbnRQaGFzZUluU2Nyb2xsYWJsZUFyZWEoZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4o
aW5pdGlhbEVuY2xvc2luZ0JveCksIHdoZWVsRXZlbnQpOworCisgICAgaWYgKCFzaG91bGRIYW5k
bGVFdmVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzPFJlbmRlckxpc3RC
b3g+KGluaXRpYWxFbmNsb3NpbmdCb3gpKQorICAgICAgICByZXR1cm4gZGlkU2Nyb2xsSW5TY3Jv
bGxhYmxlQXJlYShkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pihpbml0aWFsRW5jbG9zaW5nQm94KSwg
d2hlZWxFdmVudCk7CisKKyAgICBSZW5kZXJCb3gqIGN1cnJlbnRFbmNsb3NpbmdCb3ggPSAmaW5p
dGlhbEVuY2xvc2luZ0JveDsKKyAgICB3aGlsZSAoY3VycmVudEVuY2xvc2luZ0JveCkgeworICAg
ICAgICBpZiAoUmVuZGVyTGF5ZXIqIGJveExheWVyID0gY3VycmVudEVuY2xvc2luZ0JveC0+bGF5
ZXIoKSkgeworICAgICAgICAgICAgYXV0byBwbGF0Zm9ybUV2ZW50ID0gd2hlZWxFdmVudC51bmRl
cmx5aW5nUGxhdGZvcm1FdmVudCgpOworICAgICAgICAgICAgYm9vbCBzY3JvbGxpbmdXYXNIYW5k
bGVkOworICAgICAgICAgICAgaWYgKHBsYXRmb3JtRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIGNvcGllZEV2ZW50ID0gcGxhdGZvcm1FdmVudC0+Y29weVdpdGhEZWx0YXNBbmRWZWxvY2l0
eShmaWx0ZXJlZFBsYXRmb3JtRGVsdGEud2lkdGgoKSwgZmlsdGVyZWRQbGF0Zm9ybURlbHRhLmhl
aWdodCgpLCBmaWx0ZXJlZFZlbG9jaXR5KTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdXYXNI
YW5kbGVkID0gaGFuZGxlV2hlZWxFdmVudEluU2Nyb2xsYWJsZUFyZWEoY29waWVkRXZlbnQsICpi
b3hMYXllciwgZXZlbnRIYW5kbGluZyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdXYXNIYW5kbGVkID0gZGlkU2Nyb2xsSW5TY3JvbGxhYmxlQXJlYSgqYm94
TGF5ZXIsIHdoZWVsRXZlbnQpOworCisgICAgICAgICAgICBpZiAoc2Nyb2xsaW5nV2FzSGFuZGxl
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGN1
cnJlbnRFbmNsb3NpbmdCb3ggPSBjdXJyZW50RW5jbG9zaW5nQm94LT5jb250YWluaW5nQmxvY2so
KTsKKyAgICAgICAgaWYgKCFjdXJyZW50RW5jbG9zaW5nQm94IHx8IGN1cnJlbnRFbmNsb3NpbmdC
b3gtPmlzUmVuZGVyVmlldygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50
SW5TY3JvbGxhYmxlQXJlYShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2
ZW50SGFuZGxpbmcpCit7CisgICAgYXV0byBnZXN0dXJlU3RhdGUgPSB1cGRhdGVXaGVlbEdlc3R1
cmVTdGF0ZSh3aGVlbEV2ZW50LCBldmVudEhhbmRsaW5nKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0o
U2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudEluU2Ny
b2xsYWJsZUFyZWEoKSAtIGV2ZW50SGFuZGxpbmcgIiA8PCBldmVudEhhbmRsaW5nIDw8ICIgLT4g
Z2VzdHVyZSBzdGF0ZSAiIDw8IGdlc3R1cmVTdGF0ZSk7CisgICAgcmV0dXJuIHNjcm9sbGFibGVB
cmVhLmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxFdmVudCwgZ2VzdHVyZVN0YXRl
KTsKK30KKworT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IEV2ZW50SGFuZGxlcjo6
dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gZXZlbnRIYW5kbGluZykKK3sKKyNpZiBFTkFC
TEUoS0lORVRJQ19TQ1JPTExJTkcpCisgICAgaWYgKCFtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
ICYmIHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSAmJiBldmVudEhhbmRsaW5nLmNvbnRhaW5z
KEV2ZW50SGFuZGxpbmc6OkRpc3BhdGNoZWRUb0RPTSkpCisgICAgICAgIG1fd2hlZWxTY3JvbGxH
ZXN0dXJlU3RhdGUgPSBldmVudEhhbmRsaW5nLmNvbnRhaW5zKEV2ZW50SGFuZGxpbmc6OkRlZmF1
bHRQcmV2ZW50ZWQpID8gV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6OkJsb2NraW5nIDogV2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGU6Ok5vbkJsb2NraW5nOworCisgICAgcmV0dXJuIG1fd2hlZWxTY3Jv
bGxHZXN0dXJlU3RhdGU7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh3aGVlbEV2ZW50KTsKKyAg
ICBVTlVTRURfUEFSQU0oZXZlbnRIYW5kbGluZyk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyNlbmRpZgorfQorCiB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXJMYXRjaGVkU3RhdGUoKQogewog
ICAgIGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKQEAgLTMwMzIsNyArMzA1OCw3IEBAIHZv
aWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0V2hlZWxFdmVudEhhbmRsZXIoTm9kZSogc3RhcnROb2Rl
LCBXaGVlbEV2ZW50JiB3aGVlbEV2CiAgICAgICAgIGF1dG8gcGxhdGZvcm1FdmVudCA9IHdoZWVs
RXZlbnQudW5kZXJseWluZ1BsYXRmb3JtRXZlbnQoKTsKICAgICAgICAgaWYgKHBsYXRmb3JtRXZl
bnQpIHsKICAgICAgICAgICAgIGF1dG8gY29waWVkRXZlbnQgPSBwbGF0Zm9ybUV2ZW50LT5jb3B5
V2l0aERlbHRhc0FuZFZlbG9jaXR5KGZpbHRlcmVkUGxhdGZvcm1EZWx0YS53aWR0aCgpLCBmaWx0
ZXJlZFBsYXRmb3JtRGVsdGEuaGVpZ2h0KCksIGZpbHRlcmVkVmVsb2NpdHkpOwotICAgICAgICAg
ICAgaWYgKGxhdGNoZWRTY3JvbGxlci0+aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb3Bp
ZWRFdmVudCwgZXZlbnRIYW5kbGluZykpCisgICAgICAgICAgICBpZiAoaGFuZGxlV2hlZWxFdmVu
dEluU2Nyb2xsYWJsZUFyZWEoY29waWVkRXZlbnQsICpsYXRjaGVkU2Nyb2xsZXIsIGV2ZW50SGFu
ZGxpbmcpKQogICAgICAgICAgICAgICAgIHdoZWVsRXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgKaW5kZXggNGViYjU3ZDBhMDY5ODlmZDhmMzcyM2JkNGFhNTY4NTE1ZTZjMWU3OS4uYWQ4YTgz
YTU3ZDZkMGI2MDcxOGJlNzAwNjAwNjA1Y2QyMTUyYTBiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCkBAIC00NjQsNiArNDY0LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNz
V2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3Qg
V2Vha1B0cjxTY3JvbGxhYmxlQXJlYT4mKTsKICAgICBib29sIGNvbXBsZXRlV2lkZ2V0V2hlZWxF
dmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb25zdCBXZWFrUHRyPFdpZGdldD4mLCBj
b25zdCBXZWFrUHRyPFNjcm9sbGFibGVBcmVhPiYpOwogCisgICAgYm9vbCBoYW5kbGVXaGVlbEV2
ZW50SW5BcHByb3ByaWF0ZUVuY2xvc2luZ0JveChOb2RlKiBzdGFydE5vZGUsIGNvbnN0IFdoZWVs
RXZlbnQmLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlcmVkUGxhdGZvcm1EZWx0YSwgY29uc3QgRmxv
YXRTaXplJiBmaWx0ZXJlZFZlbG9jaXR5LCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pOworCisg
ICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYShjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmLCBTY3JvbGxhYmxlQXJlYSYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7Cisg
ICAgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IHVwZGF0ZVdoZWVsR2VzdHVyZVN0
YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPik7
CisKICAgICBib29sIHBsYXRmb3JtQ29tcGxldGVQbGF0Zm9ybVdpZGdldFdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uc3QgV2lkZ2V0JiwgY29uc3QgV2Vha1B0cjxTY3Jv
bGxhYmxlQXJlYT4mKTsKIAogICAgIHZvaWQgZGVmYXVsdFNwYWNlRXZlbnRIYW5kbGVyKEtleWJv
YXJkRXZlbnQmKTsKQEAgLTU4NCw2ICs1ODksMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFz
QWN0aXZlR2VzdHVyZSB7IGZhbHNlIH07CiAjZW5kaWYKIAorI2lmIEVOQUJMRShLSU5FVElDX1ND
Uk9MTElORykKKyAgICBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gbV93aGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYg
IUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIHVzaW5nIFRvdWNoVGFyZ2V0TWFwID0gSGFz
aE1hcDxpbnQsIFJlZlB0cjxFdmVudFRhcmdldD4+OwogICAgIFRvdWNoVGFyZ2V0TWFwIG1fb3Jp
Z2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0czsKQEAgLTYxNCw3ICs2MjMsNiBAQCBwcml2YXRlOgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgTlNWaWV3ICptX21vdXNlRG93blZpZXcgeyBudWxs
cHRyIH07Ci0gICAgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+IG1fd2hlZWxTY3Jv
bGxHZXN0dXJlU3RhdGU7CiAgICAgYm9vbCBtX3NlbmRpbmdFdmVudFRvU3VidmlldyB7IGZhbHNl
IH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDM5NTk5YzllZWMx
YmI1YjAyOTc0Y2MyNDIwZTE2YzI5ZDAzYzJmNjIuLjU1ZjExYjFkY2M1MzNiNDRhNDgxMWNiYWQw
ZmE4YTNhZGVmODYzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTUwOTgsNyAr
NTA5OCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVDaGlsZChXaWRnZXQmIHdpZGdldCkKICAg
ICBTY3JvbGxWaWV3OjpyZW1vdmVDaGlsZCh3aWRnZXQpOwogfQogCi1ib29sIEZyYW1lVmlldzo6
aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBG
cmFtZVZpZXc6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2Vz
dHVyZVN0YXRlKQogewogICAgIC8vIE5vdGUgdGhhdCB0byBhbGxvdyBmb3IgcnViYmVyLWJhbmQg
b3Zlci1zY3JvbGwgYmVoYXZpb3IsIGV2ZW4gbm9uLXNjcm9sbGFibGUgdmlld3MKICAgICAvLyBz
aG91bGQgaGFuZGxlIHdoZWVsIGV2ZW50cy4KQEAgLTUxMjgsMTEgKzUxMjgsMTEgQEAgYm9vbCBG
cmFtZVZpZXc6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW4KICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIGlmIChh
dXRvIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkg
ewogICAgICAgICBpZiAoc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvb3JkaW5hdGVzU2Nyb2xsaW5n
Rm9yRnJhbWVWaWV3KCp0aGlzKSkKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGlu
YXRvci0+aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyh3aGVlbEV2ZW50LCBzY3JvbGxpbmdO
b2RlSUQoKSwgZXZlbnRIYW5kbGluZyk7CisgICAgICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxFdmVudCwgc2Nyb2xs
aW5nTm9kZUlEKCksIGdlc3R1cmVTdGF0ZSk7CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4g
U2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxFdmVudCwg
ZXZlbnRIYW5kbGluZyk7CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2
ZW50Rm9yU2Nyb2xsaW5nKHdoZWVsRXZlbnQsIGdlc3R1cmVTdGF0ZSk7CiB9CiAKIGJvb2wgRnJh
bWVWaWV3Ojppc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgK
aW5kZXggY2EwMDhmODExMDE2NjQ1MWZjMWUyYzBjNzE1YmM3Mzc1YjY0MzlmYi4uOGM1Yjg0ODEz
OWJhZGM5MmIwNDM5MmUyZTk3ODA5OWQzNzQxNmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CkBAIC01NjUsNyArNTY1LDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gZXhpc3Rz
IGZvciBwb3J0cyB0aGF0IG5lZWQgdG8gaGFuZGxlIHdoZWVsIGV2ZW50cyBtYW51YWxseS4KICAg
ICAvLyBPbiBNYWMgV2ViS2l0MSB0aGUgdW5kZXJseWluZyBOU1Njcm9sbFZpZXcganVzdCBkb2Vz
IHRoZSBzY3JvbGxpbmcsIGJ1dCBvbiBtb3N0IG90aGVyIHBsYXRmb3JtcwogICAgIC8vIHdlIG5l
ZWQgdGhpcyBmdW5jdGlvbiBpbiBvcmRlciB0byBkbyB0aGUgc2Nyb2xsIG91cnNlbHZlcy4KLSAg
ICBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KSBmaW5hbDsKKyAgICBib29sIGhhbmRsZVdo
ZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8
V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDA0NjQyN2I2OGY3NGNl
ZjBmOGQ2MGQxMTkzZTQzODBhODE3MTRlYzAuLjRhMGVmZWQ3YzJkZWM3OWI1ZjMxZTVlNzE2ODk3
ODJiNzE2MWUxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMu
bW0KQEAgLTE1MCwxMCArMTUwLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OndoZWVsRXZlbnQoTlNF
dmVudCAqZXZlbnQpCiAgICAgYXV0byB3aGVlbEV2ZW50ID0gUGxhdGZvcm1FdmVudEZhY3Rvcnk6
OmNyZWF0ZVBsYXRmb3JtV2hlZWxFdmVudChldmVudCwgcGFnZS0+Y2hyb21lKCkucGxhdGZvcm1Q
YWdlQ2xpZW50KCkpOwogICAgIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBw
cm9jZXNzaW5nU3RlcHMgPSB7IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRG
b3JTY3JvbGxpbmcsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JCbG9j
a2luZ0RPTUV2ZW50RGlzcGF0Y2ggfTsKIAotICAgIGlmICh3aGVlbEV2ZW50LmlzR2VzdHVyZVN0
YXJ0KCkpCi0gICAgICAgIG1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgPSBXVEY6Om51bGxvcHQ7
Ci0gICAgZWxzZSBpZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlOjpDaGFuZ2VkIHx8IHdoZWVsRXZlbnQubW9tZW50dW1QaGFzZSgpID09IFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlOjpDaGFuZ2VkKSB7Ci0gICAgICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCku
d2hlZWxFdmVudEdlc3R1cmVzQmVjb21lTm9uQmxvY2tpbmcoKSAmJiBtX3doZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlICYmICptX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlID09IFdoZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlOjpOb25CbG9ja2luZykKKyAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDaGFuZ2VkIHx8IHdoZWVsRXZlbnQubW9tZW50dW1QaGFz
ZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDaGFuZ2VkKSB7CisgICAgICAgIGlmICht
X2ZyYW1lLnNldHRpbmdzKCkud2hlZWxFdmVudEdlc3R1cmVzQmVjb21lTm9uQmxvY2tpbmcoKSAm
JiBtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlLnZhbHVlT3IoV2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU6OkJsb2NraW5nKSA9PSBXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6Tm9uQmxvY2tpbmcpCiAg
ICAgICAgICAgICBwcm9jZXNzaW5nU3RlcHMgPSB7IFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6
Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5U
aHJlYWRGb3JOb25CbG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2ggfTsKICAgICB9CiAgICAgcmV0dXJu
IGhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgcHJvY2Vzc2luZ1N0ZXBzKTsKQEAgLTk0OCw3
ICs5NDYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxp
bmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbAogCiAgICAgICAgIExPR19XSVRIX1NU
UkVBTShTY3JvbGxMYXRjaGluZywgc3RyZWFtIDw8ICIgc2VuZGluZyB0byB2aWV3ICIgPDwgKnZp
ZXcpOwogCi0gICAgICAgIGJvb2wgZGlkSGFuZGxlV2hlZWxFdmVudCA9IHZpZXctPmhhbmRsZVdo
ZWVsRXZlbnRGb3JTY3JvbGxpbmcod2hlZWxFdmVudCwgZXZlbnRIYW5kbGluZyk7CisgICAgICAg
IGJvb2wgZGlkSGFuZGxlV2hlZWxFdmVudCA9IGhhbmRsZVdoZWVsRXZlbnRJblNjcm9sbGFibGVB
cmVhKHdoZWVsRXZlbnQsICp2aWV3LCBldmVudEhhbmRsaW5nKTsKICAgICAgICAgLy8gSWYgdGhl
IHBsYXRmb3JtIHdpZGdldCBpcyBoYW5kbGluZyB0aGUgZXZlbnQsIHdlIGFsd2F5cyB3YW50IHRv
IHJldHVybiBmYWxzZS4KICAgICAgICAgaWYgKHZpZXctPnBsYXRmb3JtV2lkZ2V0KCkpCiAgICAg
ICAgICAgICBkaWRIYW5kbGVXaGVlbEV2ZW50ID0gZmFsc2U7CkBAIC05NTcsNyArOTU1LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWwKICAgICAgICAgcmV0dXJuIGRpZEhhbmRsZVdoZWVsRXZl
bnQ7CiAgICAgfQogICAgIAotICAgIGJvb2wgZGlkSGFuZGxlRXZlbnQgPSB2aWV3LT5oYW5kbGVX
aGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKHdoZWVsRXZlbnQsIGV2ZW50SGFuZGxpbmcpOworICAgIGJv
b2wgZGlkSGFuZGxlRXZlbnQgPSBoYW5kbGVXaGVlbEV2ZW50SW5TY3JvbGxhYmxlQXJlYSh3aGVl
bEV2ZW50LCAqdmlldywgZXZlbnRIYW5kbGluZyk7CiAgICAgbV9pc0hhbmRsaW5nV2hlZWxFdmVu
dCA9IGZhbHNlOwogICAgIHJldHVybiBkaWRIYW5kbGVFdmVudDsKIH0KQEAgLTk3MiwxMyArOTcw
LDEyIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhy
ZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIHVwZGF0ZVdoZWVsR2VzdHVyZVN0YXRlKHdoZWVsRXZlbnQsIGV2ZW50SGFu
ZGxpbmcpOworCiAgICAgaWYgKGF1dG8gc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX2ZyYW1lLnBh
Z2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkgewogICAgICAgICBpZiAoc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KCp2aWV3KSkKLSAgICAg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT53aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWlu
VGhyZWFkKHdoZWVsRXZlbnQsIGV2ZW50SGFuZGxpbmcpOworICAgICAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJlYWQod2hlZWxFdmVu
dCwgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSk7CiAgICAgfQotCi0gICAgaWYgKHdoZWVsRXZl
bnQuaXNHZXN0dXJlU3RhcnQoKSAmJiBldmVudEhhbmRsaW5nLmNvbnRhaW5zKEV2ZW50SGFuZGxp
bmc6OkRpc3BhdGNoZWRUb0RPTSkpCi0gICAgICAgIG1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUg
PSBldmVudEhhbmRsaW5nLmNvbnRhaW5zKEV2ZW50SGFuZGxpbmc6OkRlZmF1bHRQcmV2ZW50ZWQp
ID8gV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6OkJsb2NraW5nIDogV2hlZWxTY3JvbGxHZXN0dXJl
U3RhdGU6Ok5vbkJsb2NraW5nOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0od2hlZWxFdmVudCk7
CiAgICAgVU5VU0VEX1BBUkFNKGV2ZW50SGFuZGxpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggZTg1NjI4MzA0
Yjk3MmNjZmMwN2JiMGE0ZDZlZjIxZTViY2E3NjlhNS4uODhmYTQzZWVmNTQ0MGYzNTc4YzE1OTUz
MzhmOWRkNTgxMjE1ZjU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC0xMjcsOCArMTI3LDggQEAgcHVibGljOgog
ICAgIC8vIFRoZXNlIHZpcnR1YWwgZnVuY3Rpb25zIGFyZSBjdXJyZW50bHkgdW5pcXVlIHRvIHRo
ZSB0aHJlYWRlZCBzY3JvbGxpbmcgYXJjaGl0ZWN0dXJlLiAKICAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0VHJlZVN0YXRlSWZOZWVkZWQoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9s
bFBvc2l0aW9uVXBkYXRlKFNjcm9sbGFibGVBcmVhJiwgY29uc3QgSW50UG9pbnQmLCBTY3JvbGxU
eXBlID0gU2Nyb2xsVHlwZTo6UHJvZ3JhbW1hdGljLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9sbENs
YW1waW5nOjpDbGFtcGVkKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5k
bGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9s
bGluZ05vZGVJRCwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPikgeyB9CisgICAg
dmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiwgU2Nyb2xsaW5nTm9kZUlELCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVT
dGF0ZT4pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRXYXNQ
cm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8
V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSB7IH0KIAogICAgIC8vIENyZWF0ZSBhbiB1bnBhcmVu
dGVkIG5vZGUuCiAgICAgdmlydHVhbCBTY3JvbGxpbmdOb2RlSUQgY3JlYXRlTm9kZShTY3JvbGxp
bmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5ld05vZGVJRCkgeyByZXR1cm4gbmV3Tm9kZUlE
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlR2VzdHVyZVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVHZXN0dXJlU3RhdGUuY3BwCmluZGV4IDQ3YWFiOWU3MTQ2OWFkYzFiNjU1NDJhNjcy
MTgxMjBhMzZjNzdhMDEuLmEzNDYxYTRhZWU4ZWVlNWIzZGFlZjBiNjQyMTliZjEzNjVjNTBlZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVH
ZXN0dXJlU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVHZXN0dXJlU3RhdGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFNjcm9sbGluZ1RyZWVH
ZXN0dXJlU3RhdGU6OlNjcm9sbGluZ1RyZWVHZXN0dXJlU3RhdGUoU2Nyb2xsaW5nVHJlZSYgc2Ny
b2xsaW5nVHJlCiAKIHZvaWQgU2Nyb2xsaW5nVHJlZUdlc3R1cmVTdGF0ZTo6cmVjZWl2ZWRXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCiB7Ci0gICAgaWYgKGV2ZW50
LmlzR2VzdHVyZUJlZ2luKCkpIHsKKyAgICBpZiAoZXZlbnQuaXNHZXN0dXJlU3RhcnQoKSkgewog
ICAgICAgICBjbGVhckFsbE5vZGVzKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVl
LmNwcAppbmRleCBkNmVkNmJhOTg1ODJkOWZkYTEyOTA1NTkyZjcyMGM4MmQ1NjYwYWUyLi41OTdl
NDY3NzJlOTQxN2Y3MjJjNmRiOTNiM2FkMTEwMzE0MDgwYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFRocmVhZGVkU2Nyb2xsaW5n
VHJlZTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVcKICAgICByZXR1cm4gU2Nyb2xs
aW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBwcm9jZXNzaW5nU3RlcHMpOwog
fQogCi1ib29sIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6aGFuZGxlV2hlZWxFdmVudEFmdGVyTWFp
blRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGluZ05v
ZGVJRCB0YXJnZXROb2RlSUQsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPikKK2Jvb2wgVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsaW5nTm9kZUlEIHRhcmdldE5vZGVJ
RCwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KQogewogICAgIExPR19XSVRIX1NU
UkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVX
aGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkICIgPDwgd2hlZWxFdmVudCA8PCAiIG5vZGUgIiA8PCB0
YXJnZXROb2RlSUQpOwogCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgVGhyZWFkZWRTY3JvbGxpbmdU
cmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxF
CiAgICAgcmV0dXJuIHJlc3VsdC53YXNIYW5kbGVkOwogfQogCi12b2lkIFRocmVhZGVkU2Nyb2xs
aW5nVHJlZTo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4pCit2b2lkIFRocmVhZGVkU2Ny
b2xsaW5nVHJlZTo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pCiB7CiAg
ICAgLy8gRklYTUU6IFNldCBzdGF0ZSBiYXNlZCBvbiBFdmVudEhhbmRsaW5nIGZsYWdzLgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGlu
Z1RyZWUuaAppbmRleCBlZjExMzk5ZGY2MjQwODBjODljZGE2ZTRiOTI0NGI1MWQ4MGFhNjhiLi45
MzVmZDdkY2NlZTYxYzI0M2ZhOTQxMGM5Y2M4MDM1YWVkYjU1YzZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaApAQCAt
NDcsOCArNDcsOCBAQCBwdWJsaWM6CiAKICAgICBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8V2hlZWxF
dmVudFByb2Nlc3NpbmdTdGVwcz4pIG92ZXJyaWRlOwogCi0gICAgYm9vbCBoYW5kbGVXaGVlbEV2
ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGluZ05v
ZGVJRCwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+KTsKLSAgICB2b2lkIHdoZWVsRXZlbnRXYXNQ
cm9jZXNzZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+KTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRBZnRlck1haW5UaHJl
YWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsaW5nTm9kZUlELCBPcHRpb25hbDxX
aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4pOworICAgIHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3Nl
ZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZT4pOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdD
b29yZGluYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLmgKaW5kZXggMjFmZWRhOTFiYmUzZTM1ZWFkMzBkNmI0NWM2NzUy
Y2YxYTFmYWIwNC4uZGNiMDc3OGI0OWYyMTNlNWJlZGE2YzRhNjU5N2JiMDdjNjljNmQ3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLmgKQEAgLTQxLDggKzQxLDggQEAgcHVibGljOgogICAgIHZvaWQg
Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKSBmaW5hbDsKIAogICAgIC8vIEhhbmRsZSB0aGUgd2hl
ZWwgZXZlbnQgb24gdGhlIHNjcm9sbGluZyB0aHJlYWQuIFJldHVybnMgd2hldGhlciB0aGUgZXZl
bnQgd2FzIGhhbmRsZWQgb3Igbm90LgotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudEZvclNjcm9s
bGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxpbmdOb2RlSUQsIE9wdGlvblNl
dDxFdmVudEhhbmRsaW5nPikgZmluYWw7Ci0gICAgdm9pZCB3aGVlbEV2ZW50V2FzUHJvY2Vzc2Vk
QnlNYWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvblNldDxFdmVudEhh
bmRsaW5nPikgZmluYWw7CisgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGluZ05vZGVJRCwgT3B0aW9uYWw8V2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKKyAgICB2b2lkIHdoZWVsRXZlbnRXYXNQcm9jZXNz
ZWRCeU1haW5UaHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8V2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxl
VHJlZVN0YXRlQ29tbWl0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KaW5kZXggZmZj
MjNiZWYzYmZjZjgyMDA5YjEyMjQ4ZmE3MzQ3MmI1N2U0YzRiOS4uOTFhZDc1MDkzNTcyM2M5ZTkx
NWIxYzc5NTdkOGIyNWY0ZjZjZGEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpAQCAtNzMs
NyArNzMsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpwYWdlRGVzdHJveWVkKCkK
ICAgICB9KTsKIH0KIAotYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxF
dmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNj
cm9sbGluZ05vZGVJRCB0YXJnZXROb2RlSUQsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBldmVu
dEhhbmRsaW5nKQorYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVu
dEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9s
bGluZ05vZGVJRCB0YXJnZXROb2RlSUQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiBnZXN0dXJlU3RhdGUpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NF
UlQobV9wYWdlKTsKQEAgLTgxLDExICs4MSwxMSBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWFjOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdgog
ICAgIGlmIChzY3JvbGxpbmdUcmVlKCktPndpbGxXaGVlbEV2ZW50U3RhcnRTd2lwZUdlc3R1cmUo
d2hlZWxFdmVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExPR19XSVRIX1NUUkVB
TShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdo
ZWVsRXZlbnRGb3JTY3JvbGxpbmcgLSBzZW5kaW5nIGV2ZW50IHRvIHNjcm9sbGluZyB0aHJlYWQs
IG5vZGUgIiA8PCB0YXJnZXROb2RlSUQpOworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcs
IHN0cmVhbSA8PCAiU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnRGb3JT
Y3JvbGxpbmcgLSBzZW5kaW5nIGV2ZW50IHRvIHNjcm9sbGluZyB0aHJlYWQsIG5vZGUgIiA8PCB0
YXJnZXROb2RlSUQgPDwgIiBnZXN0dXJlU3RhdGUgIiA8PCBnZXN0dXJlU3RhdGUpOwogICAgIAog
ICAgIFJlZlB0cjxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+IHRocmVhZGVkU2Nyb2xsaW5nVHJlZSA9
IGRvd25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oc2Nyb2xsaW5nVHJlZSgpKTsKLSAgICBT
Y3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUsIHdoZWVsRXZl
bnQsIHRhcmdldE5vZGVJRCwgZXZlbnRIYW5kbGluZ10gewotICAgICAgICB0aHJlYWRlZFNjcm9s
bGluZ1RyZWUtPmhhbmRsZVdoZWVsRXZlbnRBZnRlck1haW5UaHJlYWQod2hlZWxFdmVudCwgdGFy
Z2V0Tm9kZUlELCBldmVudEhhbmRsaW5nKTsKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNo
KFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUsIHdoZWVsRXZlbnQsIHRhcmdldE5vZGVJRCwgZ2VzdHVy
ZVN0YXRlXSB7CisgICAgICAgIHRocmVhZGVkU2Nyb2xsaW5nVHJlZS0+aGFuZGxlV2hlZWxFdmVu
dEFmdGVyTWFpblRocmVhZCh3aGVlbEV2ZW50LCB0YXJnZXROb2RlSUQsIGdlc3R1cmVTdGF0ZSk7
CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NiwxMyArOTYsMTMgQEAgc3RhdGlj
IHVpbnQ2NF90IG5leHREZWZlcklkZW50aWZpZXIoKQogICAgIHJldHVybiArK2RlZmVySWRlbnRp
ZmllcjsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6d2hlZWxFdmVudFdhc1By
b2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IE9wdGlvblNldDxFdmVudEhhbmRsaW5nPiBkZWZhdWx0SGFuZGxpbmcpCit2b2lkIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yTWFjOjp3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0
dXJlU3RhdGU+IGdlc3R1cmVTdGF0ZSkKIHsKICAgICBhdXRvIGRlZmVycmVyID0gV2hlZWxFdmVu
dFRlc3RNb25pdG9yQ29tcGxldGlvbkRlZmVycmVyIHsgbV9wYWdlLT53aGVlbEV2ZW50VGVzdE1v
bml0b3IoKS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNj
cm9sbGFibGVBcmVhSWRlbnRpZmllcj4obmV4dERlZmVySWRlbnRpZmllcigpKSwgV2hlZWxFdmVu
dFRlc3RNb25pdG9yOjpSZXBvcnRET01FdmVudEhhbmRsaW5nIH07CiAKICAgICBSZWZQdHI8VGhy
ZWFkZWRTY3JvbGxpbmdUcmVlPiB0aHJlYWRlZFNjcm9sbGluZ1RyZWUgPSBkb3duY2FzdDxUaHJl
YWRlZFNjcm9sbGluZ1RyZWU+KHNjcm9sbGluZ1RyZWUoKSk7Ci0gICAgU2Nyb2xsaW5nVGhyZWFk
OjpkaXNwYXRjaChbdGhyZWFkZWRTY3JvbGxpbmdUcmVlLCB3aGVlbEV2ZW50LCBkZWZhdWx0SGFu
ZGxpbmcsIGRlZmVycmVyID0gV1RGTW92ZShkZWZlcnJlcildIHsKLSAgICAgICAgdGhyZWFkZWRT
Y3JvbGxpbmdUcmVlLT53aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKHdoZWVsRXZl
bnQsIGRlZmF1bHRIYW5kbGluZyk7CisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChbdGhy
ZWFkZWRTY3JvbGxpbmdUcmVlLCB3aGVlbEV2ZW50LCBnZXN0dXJlU3RhdGUsIGRlZmVycmVyID0g
V1RGTW92ZShkZWZlcnJlcildIHsKKyAgICAgICAgdGhyZWFkZWRTY3JvbGxpbmdUcmVlLT53aGVl
bEV2ZW50V2FzUHJvY2Vzc2VkQnlNYWluVGhyZWFkKHdoZWVsRXZlbnQsIGdlc3R1cmVTdGF0ZSk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmNwcApp
bmRleCAyZDIxNWZiOGFkNWVjMTlmNzRkN2E1ODE4MThkZDNlZDRiMDRiMTI2Li5kMDFjNmU3OTYx
OGEwNTQ5NWZkMTc4NTFlYzVkYWFhMTgwNTJkYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdDb29y
ZGluYXRvck5pY29zaWEuY3BwCkBAIC02OSwyMiArNjksMjIgQEAgdm9pZCBTY3JvbGxpbmdDb29y
ZGluYXRvck5pY29zaWE6OmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKCkKICAgICBtX3Njcm9sbGlu
Z1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyLnN0b3AoKTsKIH0KIAotYm9vbCBTY3JvbGxpbmdDb29y
ZGluYXRvck5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBTY3JvbGxpbmdOb2RlSUQgdGFyZ2V0Tm9kZSwgT3B0
aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCitib29sIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIFNjcm9sbGluZ05vZGVJRCB0YXJnZXROb2RlLCBPcHRp
b25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZT4gZ2VzdHVyZVN0YXRlKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAgICAgQVNTRVJUKHNjcm9s
bGluZ1RyZWUoKSk7CiAKLSAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRlZFNj
cm9sbGluZ1RyZWUgPSBtYWtlUmVmKGRvd25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oKnNj
cm9sbGluZ1RyZWUoKSkpLCB3aGVlbEV2ZW50LCB0YXJnZXROb2RlLCBldmVudEhhbmRsaW5nXSB7
Ci0gICAgICAgIHRocmVhZGVkU2Nyb2xsaW5nVHJlZS0+aGFuZGxlV2hlZWxFdmVudEFmdGVyTWFp
blRocmVhZCh3aGVlbEV2ZW50LCB0YXJnZXROb2RlLCBldmVudEhhbmRsaW5nKTsKKyAgICBTY3Jv
bGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRlZFNjcm9sbGluZ1RyZWUgPSBtYWtlUmVmKGRv
d25jYXN0PFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4oKnNjcm9sbGluZ1RyZWUoKSkpLCB3aGVlbEV2
ZW50LCB0YXJnZXROb2RlLCBnZXN0dXJlU3RhdGVdIHsKKyAgICAgICAgdGhyZWFkZWRTY3JvbGxp
bmdUcmVlLT5oYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKHdoZWVsRXZlbnQsIHRhcmdl
dE5vZGUsIGdlc3R1cmVTdGF0ZSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhOjp3aGVlbEV2ZW50V2FzUHJvY2Vzc2VkQnlN
YWluVGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgT3B0aW9uU2V0
PEV2ZW50SGFuZGxpbmc+IGV2ZW50SGFuZGxpbmcpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Tmljb3NpYTo6d2hlZWxFdmVudFdhc1Byb2Nlc3NlZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
PiBnZXN0dXJlU3RhdGUpCiB7Ci0gICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChbdGhyZWFk
ZWRTY3JvbGxpbmdUcmVlID0gbWFrZVJlZihkb3duY2FzdDxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+
KCpzY3JvbGxpbmdUcmVlKCkpKSwgd2hlZWxFdmVudCwgZXZlbnRIYW5kbGluZ10gewotICAgICAg
ICB0aHJlYWRlZFNjcm9sbGluZ1RyZWUtPndoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5UaHJl
YWQod2hlZWxFdmVudCwgZXZlbnRIYW5kbGluZyk7CisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNw
YXRjaChbdGhyZWFkZWRTY3JvbGxpbmdUcmVlID0gbWFrZVJlZihkb3duY2FzdDxUaHJlYWRlZFNj
cm9sbGluZ1RyZWU+KCpzY3JvbGxpbmdUcmVlKCkpKSwgd2hlZWxFdmVudCwgZ2VzdHVyZVN0YXRl
XSB7CisgICAgICAgIHRocmVhZGVkU2Nyb2xsaW5nVHJlZS0+d2hlZWxFdmVudFdhc1Byb2Nlc3Nl
ZEJ5TWFpblRocmVhZCh3aGVlbEV2ZW50LCBnZXN0dXJlU3RhdGUpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yTmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdDb29yZGluYXRvck5pY29zaWEuaAppbmRleCBhMzlhNjA0NDIwNmQyMWU5
NjRlMjI2YmVhZjMyYjY1ZDgxN2I4NGU1Li5hODYwZTJlZjMxODk3NDMzNGNmNGNhNGI0ZjI1NDQ4
NTBjODE4MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTmljb3NpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOaWNvc2lhLmgKQEAgLTQ0
LDggKzQ0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgp
IG92ZXJyaWRlOwogCi0gICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYsIFNjcm9sbGluZ05vZGVJRCwgT3B0aW9uU2V0PEV2ZW50SGFu
ZGxpbmc+KSBvdmVycmlkZTsKLSAgICB2b2lkIHdoZWVsRXZlbnRXYXNQcm9jZXNzZWRCeU1haW5U
aHJlYWQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+
KSBvdmVycmlkZTsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiwgU2Nyb2xsaW5nTm9kZUlELCBPcHRpb25hbDxXaGVlbFNjcm9s
bEdlc3R1cmVTdGF0ZT4pIG92ZXJyaWRlOworICAgIHZvaWQgd2hlZWxFdmVudFdhc1Byb2Nlc3Nl
ZEJ5TWFpblRocmVhZChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25hbDxXaGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZT4pIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1
bGVUcmVlU3RhdGVDb21taXQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1XaGVlbEV2ZW50LmgKaW5kZXggZTlhOTc5NTY1YmIzNTAyYzZlMmRlYzE3N2RjNWNk
NzlhODYxOGJhZi4uZDY1OTU4NTNjMTlkNDUxZGVhMGFmYTg0MjQwNmE1ZTE3YzZlOGNkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTE1MCw3
ICsxNTAsNiBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIGJv
b2wgdXNlTGF0Y2hlZEV2ZW50RWxlbWVudCgpIGNvbnN0OwotICAgIGJvb2wgaXNHZXN0dXJlU3Rh
cnQoKSBjb25zdDsKICAgICBib29sIGlzR2VzdHVyZUNvbnRpbnVhdGlvbigpIGNvbnN0OyAvLyBU
aGUgZmluZ2Vycy1kb3duIHBhcnQgb2YgdGhlIGdlc3R1cmUgZXhjbHVkaW5nIG1vbWVudHVtLgog
ICAgIGJvb2wgc2hvdWxkUmVzZXRMYXRjaGluZygpIGNvbnN0OwogICAgIGJvb2wgaXNOb25HZXN0
dXJlRXZlbnQoKSBjb25zdDsKQEAgLTE2Myw3ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgUGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2UgcGhhc2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CiAgICAg
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgbW9tZW50dW1QaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9tZW50dW1QaGFzZTsgfQogCi0gICAgYm9vbCBpc0dlc3R1cmVCZWdpbigpIGNvbnN0OworICAg
IGJvb2wgaXNHZXN0dXJlU3RhcnQoKSBjb25zdDsKICAgICBib29sIGlzR2VzdHVyZUNhbmNlbCgp
IGNvbnN0OwogCiAgICAgYm9vbCBpc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSBjb25zdDsKQEAg
LTIxMiwxMSArMjExLDYgQEAgaW5saW5lIGJvb2wgUGxhdGZvcm1XaGVlbEV2ZW50Ojp1c2VMYXRj
aGVkRXZlbnRFbGVtZW50KCkgY29uc3QKICAgICAgICAgfHwgKG1fcGhhc2UgPT0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2U6OkVuZGVkICYmIG1fbW9tZW50dW1QaGFzZSA9PSBQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZTo6Tm9uZSk7CiB9CiAKLWlubGluZSBib29sIFBsYXRmb3JtV2hlZWxFdmVudDo6
aXNHZXN0dXJlU3RhcnQoKSBjb25zdAotewotICAgIHJldHVybiBtX3BoYXNlID09IFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlOjpCZWdhbiB8fCBtX3BoYXNlID09IFBsYXRmb3JtV2hlZWxFdmVudFBo
YXNlOjpNYXlCZWdpbjsKLX0KLQogaW5saW5lIGJvb2wgUGxhdGZvcm1XaGVlbEV2ZW50Ojppc0dl
c3R1cmVDb250aW51YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX3BoYXNlID09IFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlOjpDaGFuZ2VkOwpAQCAtMjQxLDEwICsyMzUsOSBAQCBpbmxpbmUg
Ym9vbCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OmlzRW5kT2ZNb21lbnR1bVNjcm9sbCgpIGNvbnN0CiAK
ICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAKLWlubGluZSBib29sIFBsYXRmb3JtV2hl
ZWxFdmVudDo6aXNHZXN0dXJlQmVnaW4oKSBjb25zdAoraW5saW5lIGJvb2wgUGxhdGZvcm1XaGVl
bEV2ZW50Ojppc0dlc3R1cmVTdGFydCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGhhc2UgPT0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok1heUJlZ2luCi0gICAgICAgIHx8IG1fcGhhc2UgPT0g
UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6OkJlZ2FuOworICAgIHJldHVybiBtX3BoYXNlID09IFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlOjpCZWdhbiB8fCBtX3BoYXNlID09IFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlOjpNYXlCZWdpbjsKIH0KIAogaW5saW5lIGJvb2wgUGxhdGZvcm1XaGVlbEV2ZW50
Ojppc0dlc3R1cmVDYW5jZWwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwCmluZGV4IDgwMTY2YTUyMjI4NDVhNzM0ZTkwNmEzZjNjOWJhY2M5Njg1ODE3
MWMuLjkwNDJiNWMxODJmOWQ4NWFiZWJkMTkzYjVlZjFkMDkxNjkyYzJjMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2
b2lkIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQoY29uc3QgU2Nyb2xsUG9z
aXRpb24mIHBvc2l0aW9uKQogICAgICAgICBzY3JvbGxBbmltYXRvcigpLm5vdGlmeUNvbnRlbnRB
cmVhU2Nyb2xsZWQoc2Nyb2xsUG9zaXRpb24oKSAtIG9sZFBvc2l0aW9uKTsKIH0KIAotYm9vbCBT
Y3JvbGxhYmxlQXJlYTo6aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlvblNldDxFdmVudEhhbmRsaW5nPikKK2Jvb2wg
U2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0
ZT4pCiB7CiAgICAgaWYgKCFpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCmlu
ZGV4IDVhNzM4Yjg4NmQwZjIzMDAyOGViZTQ5NmU3ZTAwMzFjOTQwNDY5NTQuLmVkZjQ3MmY0NGNm
YjVkY2ZlNzRiNjY3ODk4ODM2NzZlZTkxNDAzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBTY3JvbGxBbmltYXRvcjsK
IGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBUaWxlZEJhY2tpbmc7CiAKLWVudW0gY2xhc3Mg
RXZlbnRIYW5kbGluZyA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFdoZWVsU2Nyb2xsR2VzdHVyZVN0
YXRlIDogdWludDhfdDsKIAogaW5saW5lIGludCBvZmZzZXRGb3JPcmllbnRhdGlvbihTY3JvbGxP
ZmZzZXQgb2Zmc2V0LCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKQEAgLTg0
LDcgKzg0LDcgQEAgcHVibGljOgogICAgIC8vIGV4cGVjdCBpdCB0byBoYXBwZW4gc29tZXRpbWUg
aW4gdGhlIGZ1dHVyZS4KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBk
YXRlKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiwgU2Nyb2xsVHlwZSA9IFNjcm9sbFR5cGU6OlVzZXIs
IFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudEZv
clNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBPcHRpb25TZXQ8RXZlbnRIYW5k
bGluZz4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50
Rm9yU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIE9wdGlvbmFsPFdoZWVsU2Ny
b2xsR2VzdHVyZVN0YXRlPik7CiAKICAgICBib29sIHVzZXNTY3JvbGxTbmFwKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxDb250cm9sbGVyLm1t
CmluZGV4IGUxNTg0NTkwNGZiNmVmYWQ5YjBiMzAwYzdjYmIzZjczNDAyNDZmNjkuLjI3MDBhMmY5
YTk0MzczZmM4NzliN2JhM2ExMjc0MDk3OGRiNjllNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQpAQCAtNzY0LDcgKzc2NCw3IEBA
IGJvb2wgU2Nyb2xsQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYKIAogdm9pZCBTY3JvbGxDb250cm9sbGVyOjp1cGRhdGVH
ZXN0dXJlSW5Qcm9ncmVzc1N0YXRlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCkKIHsKLSAgICBpZiAod2hlZWxFdmVudC5pc0dlc3R1cmVCZWdpbigpIHx8IHdoZWVsRXZlbnQu
aXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKQorICAgIGlmICh3aGVlbEV2ZW50Lmlz
R2VzdHVyZVN0YXJ0KCkgfHwgd2hlZWxFdmVudC5pc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Ny
b2xsKCkpCiAgICAgICAgIG1faW5TY3JvbGxHZXN0dXJlID0gdHJ1ZTsKICAgICBlbHNlIGlmICh3
aGVlbEV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpIHx8IHdoZWVsRXZlbnQuaXNHZXN0
dXJlQ2FuY2VsKCkgfHwgd2hlZWxFdmVudC5pc0VuZE9mTW9tZW50dW1TY3JvbGwoKSkKICAgICAg
ICAgbV9pblNjcm9sbEdlc3R1cmUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCmluZGV4IDhlZDUzMmU4N2Q5ZDY4MWQyYzRlYzkwYjE4MTNlYzI4MDg0YWMz
MjEuLmIzMjE3NzA1ZmNlMjhlNjMwYmViYzUzYzQzNjI4OWU2Yjg4NjNmNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzE2NSw3ICszMTY1LDcgQEAgU2Ny
b2xsaW5nTm9kZUlEIFJlbmRlckxheWVyOjpzY3JvbGxpbmdOb2RlSUQoKSBjb25zdAogICAgIHJl
dHVybiBiYWNraW5nKCktPnNjcm9sbGluZ05vZGVJREZvclJvbGUoU2Nyb2xsQ29vcmRpbmF0aW9u
Um9sZTo6U2Nyb2xsaW5nKTsKIH0KIAotYm9vbCBSZW5kZXJMYXllcjo6aGFuZGxlV2hlZWxFdmVu
dEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIE9wdGlv
blNldDxFdmVudEhhbmRsaW5nPiBldmVudEhhbmRsaW5nKQorYm9vbCBSZW5kZXJMYXllcjo6aGFu
ZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQsIE9wdGlvbmFsPFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlPiBnZXN0dXJlU3RhdGUpCiB7
CiAgICAgaWYgKCFpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTMxNzMsMTEgKzMxNzMsMTEgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGFuZGxl
V2hlZWxFdmVudEZvclNjcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXYK
ICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIGlmICh1c2VzQXN5bmNTY3JvbGxpbmco
KSAmJiBzY3JvbGxpbmdOb2RlSUQoKSkgewogICAgICAgICBpZiAoYXV0byogc2Nyb2xsaW5nQ29v
cmRpbmF0b3IgPSBwYWdlKCkuc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHJl
dHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+aGFuZGxlV2hlZWxFdmVudEZvclNjcm9sbGluZyh3
aGVlbEV2ZW50LCBzY3JvbGxpbmdOb2RlSUQoKSwgZXZlbnRIYW5kbGluZyk7CisgICAgICAgICAg
ICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxp
bmcod2hlZWxFdmVudCwgc2Nyb2xsaW5nTm9kZUlEKCksIGdlc3R1cmVTdGF0ZSk7CiAgICAgfQog
I2VuZGlmCiAKLSAgICByZXR1cm4gU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZVdoZWVsRXZlbnRGb3JT
Y3JvbGxpbmcod2hlZWxFdmVudCwgZXZlbnRIYW5kbGluZyk7CisgICAgcmV0dXJuIFNjcm9sbGFi
bGVBcmVhOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU2Nyb2xsaW5nKHdoZWVsRXZlbnQsIGdlc3R1cmVT
dGF0ZSk7CiB9CiAKIEludFJlY3QgUmVuZGVyTGF5ZXI6OnZpc2libGVDb250ZW50UmVjdEludGVy
bmFsKFZpc2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycyBzY3JvbGxiYXJJbmNsdXNp
b24sIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaAppbmRleCBhYWVkMTUyZTFiZDEyNzE4N2RkZmI1OTlhYzFjZTgyNzdh
MGU1YTg1Li42NjI2ODJmZDE1NTU2ZjRkNGQ5OGI4YTgxNTIwNmJlMDRiMDllM2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDkzLDcgKzQ5Myw3IEBAIHB1Ymxp
YzoKICAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV92QmFyLmdldCgpOyB9CiAgICAgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFi
bGVBcmVhKCkgY29uc3QgZmluYWw7CiAKLSAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3Jv
bGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+
KSBmaW5hbDsKKyAgICBib29sIGhhbmRsZVdoZWVsRXZlbnRGb3JTY3JvbGxpbmcoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU+KSBmaW5h
bDsKICAgICBib29sIGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUoKSBmaW5hbDsKICAgICBi
b29sIGhhc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQW5jZXN0b3IoKSBmaW5hbDsKICAgICBi
b29sIHVzZURhcmtBcHBlYXJhbmNlKCkgY29uc3QgZmluYWw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>