<?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>225390</bug_id>
          
          <creation_ts>2021-05-05 03:22:32 -0700</creation_ts>
          <short_desc>Use WeakHashSet instead of HashSet of raw pointers in Document and SVGDocumentExtensions</short_desc>
          <delta_ts>2021-05-06 02:30:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225440</see_also>
          <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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1756886</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-05 03:22:32 -0700</bug_when>
    <thetext>In Document and SVGDocumentExtensions, there are a few HashSet of elements. Use WeakHashSet instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756887</commentid>
    <comment_count>1</comment_count>
      <attachid>427751</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-05 03:32:28 -0700</bug_when>
    <thetext>Created attachment 427751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756888</commentid>
    <comment_count>2</comment_count>
      <attachid>427751</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-05 03:33:57 -0700</bug_when>
    <thetext>Comment on attachment 427751
Patch

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

&gt; Source/WebCore/svg/SVGDocumentExtensions.h:88
&gt;      HashMap&lt;SVGElement*, std::unique_ptr&lt;HashSet&lt;SVGElement*&gt;&gt;&gt; m_elementDependencies;

I&apos;d address this in a separate patch since it&apos;s a bit more involved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756918</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-05 06:14:35 -0700</bug_when>
    <thetext>Committed r277013 (237329@main): &lt;https://commits.webkit.org/237329@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427751.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756919</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-05 06:15:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/77554370&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427751</attachid>
            <date>2021-05-05 03:32:28 -0700</date>
            <delta_ts>2021-05-05 06:14:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225390-20210505033228.patch</filename>
            <type>text/plain</type>
            <size>27195</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE1MDI1YTg0YjJlMTUw
MjQwZjIxODE0M2IyMGVlNDA1OTQ2NGYxYy4uYTI2MDczNTQ1YzE5OThjNDI3MGZkZjNmMGUyNDU5
ZDBjYTVkMWU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIxLTA1LTA1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBXZWFrSGFzaFNldCBp
bnN0ZWFkIG9mIEhhc2hTZXQgb2YgcmF3IHBvaW50ZXMgaW4gRG9jdW1lbnQgYW5kIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI1MzkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVwbGFjZWQgRG9jdW1lbnQncyBtX2RvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrRWxl
bWVudHMgYW5kIG1fYXJ0aWNsZUVsZW1lbnRzIGFzIHdlbGwgYXMKKyAgICAgICAgU1ZHRG9jdW1l
bnRFeHRlbnNpb25zJ3MgbV90aW1lQ29udGFpbmVycyBhbmQgbV9zdmdGb250RmFjZUVsZW1lbnRz
IHdpdGggV2Vha0hhc2hTZXQuCisKKyAgICAgICAgQWxzbyBtb3ZlZCBtX3N2Z1VzZUVsZW1lbnRz
IGZyb20gRG9jdW1lbnQgdG8gU1ZHRG9jdW1lbnRFeHRlbnNpb25zIGFzIGEgV2Vha0hhc2hTZXQu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGRlbGV0ZXMgRG9jdW1lbnQ6Om1fbWVkaWFTdHJl
YW1TdGF0ZUNoYW5nZUVsZW1lbnRzIHdoaWNoIHdhcyBuZXZlciB1c2VkLAorICAgICAgICBtX21h
aW5BcnRpY2xlRWxlbWVudCBhIFdlYWtQdHIgaW5zdGVhZCBvZiBhIHJhdyBwb2ludGVyLCByZXBs
YWNlcyBTVkdEb2N1bWVudEV4dGVuc2lvbnMncworICAgICAgICBtX3JlYnVpbGRFbGVtZW50cywg
d2hpY2ggaXMgYSB0ZW1wb3JhcnkgVmVjdG9yIHVzZWQgZHVyaW5nIHRyZWUgbXV0YXRpb25zLCB3
aXRoIGEgVmVjdG9yCisgICAgICAgIG9mIFJlZnMgaW5zdGVhZCBvZiByYXcgcG9pbnRlcnMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBvYnNlcnZhYmxl
IGJlaGF2aW9yIGRpZmZlcmVuY2VzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOiBUaGUgcmVsZWFzZSBhc3NlcnQg
aXMgbW92ZWQgdG8gflNWR0RvY3VtZW50RXh0ZW5zaW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpyZXNvbHZlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3Bl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc3VtZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja3MpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVucmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNp
b25DYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZFNWR1VzZUVsZW1l
bnQpOiBNb3ZlZCB0byBTVkdEb2N1bWVudEV4dGVuc2lvbnMuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cmVtb3ZlU1ZHVXNlRWxlbWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJlZ2lzdGVyQXJ0aWNsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnVucmVnaXN0ZXJBcnRpY2xlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6dXBkYXRlTWFpbkFydGljbGVFbGVtZW50QWZ0ZXJMYXlvdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnByZXBhcmVDYW52YXNlc0ZvckRpc3BsYXlJZk5lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2xlYXJDYW52YXNQcmVwYXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6Y2FudmFzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6Y2FudmFzRGVzdHJveWVkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjogY29uc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENh
bnZhc0VsZW1lbnQ6On5IVE1MQ2FudmFzRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q2FudmFzRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENhbnZhc0VsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOgorICAgICAgICAqIHN0eWxl
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjph
ZGRDdXJyZW50U1ZHRm9udEZhY2VSdWxlcyk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6On5T
VkdEb2N1bWVudEV4dGVuc2lvbnMpOiBNb3ZlZCB0aGUgcmVsZWFzZSBhc3NlcnRpb24KKyAgICAg
ICAgZnJvbSB+RG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OmFkZFRpbWVDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjpyZW1vdmVUaW1lQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczo6YWRkVXNlRWxlbWVudFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZSk6
IE1vdmVkIGhlcmUKKyAgICAgICAgRG9jdW1lbnQ6OmFkZFNWR1VzZUVsZW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZVVzZUVsZW1lbnRXaXRoUGVu
ZGluZ1NoYWRvd1RyZWVVcGRhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczo6c3RhcnRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Rv
Y3VtZW50RXh0ZW5zaW9uczo6cGF1c2VBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0RvY3VtZW50RXh0ZW5zaW9uczo6dW5wYXVzZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpkaXNwYXRjaExvYWRFdmVudFRvT3V0ZXJtb3N0U1ZH
RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZWJ1
aWxkRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpj
bGVhclRhcmdldERlcGVuZGVuY2llcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OnJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVnaXN0ZXJTVkdGb250RmFjZUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp1bnJlZ2lzdGVy
U1ZHRm9udEZhY2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnVzZUVsZW1lbnRz
V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnN2Z0ZvbnRGYWNlRWxlbWVudHMgY29uc3QpOgor
ICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Vz
ZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Vz
ZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNl
RWxlbWVudDo6dXBkYXRlU2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVt
ZW50OjppbnZhbGlkYXRlU2hhZG93VHJlZSk6CisKIDIwMjEtMDUtMDQgIFBlbmcgTGl1ICA8cGVu
Zy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0gSW1wbGVtZW50IFNvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGU6OmJ1ZmZlckZ1bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
NWMwMjI2ZTY0MjRkZWY5YTNkZDQ4OGQ4YmZiNmMyNzY0OGIzNDM4Zi4uOWY1NjU0YzZkNmZlYWFm
ODAxODExZmZiMDM3ZmU0NzBjY2EwMGFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03
NzksNyArNzc5LDYgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAKICAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1fbGlzdHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQu
aXNFbXB0eSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KG1fY29sbGVjdGlvbnNJbnZhbGlkYXRlZEF0RG9jdW1lbnQuaXNFbXB0eSgpKTsKLSAgICBSRUxF
QVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKG1fc3ZnVXNlRWxlbWVudHMuaXNF
bXB0eSgpKTsKIAogICAgIGZvciAodW5zaWduZWQgY291bnQgOiBtX25vZGVMaXN0QW5kQ29sbGVj
dGlvbkNvdW50cykKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb3VudCwgIWNvdW50KTsKQEAgLTIw
MDcsOCArMjAwNiw4IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNvbHZlU3R5bGVU
eXBlIHR5cGUpCiAgICAgUmVuZGVyVmlldzo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yIHJlcGFp
bnRSZWdpb25BY2N1bXVsYXRvcihyZW5kZXJWaWV3KCkpOwogCiAgICAgLy8gRklYTUU6IERvIHRo
aXMgdXBkYXRlIHBlciB0cmVlIHNjb3BlLgotICAgIHsKLSAgICAgICAgYXV0byBlbGVtZW50cyA9
IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxTVkdVc2VFbGVtZW50Pj4obV9zdmdVc2VFbGVtZW50cyk7
CisgICAgaWYgKGF1dG8qIGV4dGVuc2lvbnMgPSBtX3N2Z0V4dGVuc2lvbnMuZ2V0KCkpIHsKKyAg
ICAgICAgYXV0byBlbGVtZW50cyA9IGNvcHlUb1ZlY3Rvck9mPFJlZjxTVkdVc2VFbGVtZW50Pj4o
ZXh0ZW5zaW9ucy0+dXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGUoKSk7CiAg
ICAgICAgIC8vIFdlIGNhbid0IGNsZWFyIG1fc3ZnVXNlRWxlbWVudHMgaGVyZSBiZWNhdXNlIHVw
ZGF0ZVNoYWRvd1RyZWUgbWF5IGVuZCB1cCBleGVjdXRpbmcgYXJiaXRyYXJ5IHNjcmlwdHMKICAg
ICAgICAgLy8gd2hpY2ggbWF5IGluc2VydCBuZXcgU1ZHIHVzZSBlbGVtZW50cyBvciByZW1vdmUg
ZXhpc3Rpbmcgb25lcyBpbnNpZGUgc3luYyBJUEMgdmlhIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9t
RWxlbWVudC4KICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpCkBAIC01NjQ4
LDggKzU2NDcsOCBAQCB2b2lkIERvY3VtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24g
cmVhc29uKQogCiAgICAgZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKTsKIAotICAgIGZvciAo
YXV0byogZWxlbWVudCA6IG1fZG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tFbGVtZW50cykKLSAg
ICAgICAgZWxlbWVudC0+cHJlcGFyZUZvckRvY3VtZW50U3VzcGVuc2lvbigpOworICAgIGZvciAo
YXV0byYgZWxlbWVudCA6IG1fZG9jdW1lbnRTdXNwZW5zaW9uQ2FsbGJhY2tFbGVtZW50cykKKyAg
ICAgICAgZWxlbWVudC5wcmVwYXJlRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCk7CiAKICNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIC8vIENsZWFyIHRoZSB1cGRhdGUgZmxhZyB0byBiZSBhYmxlIHRvIGNo
ZWNrIGlmIHRoZSB2aWV3cG9ydCBhcmd1bWVudHMgdXBkYXRlCkBAIC01Njk2LDcgKzU2OTUsNyBA
QCB2b2lkIERvY3VtZW50OjpyZXN1bWUoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAgICAg
aWYgKCFtX2lzU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8qIGVs
ZW1lbnQgOiBjb3B5VG9WZWN0b3IobV9kb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja0VsZW1lbnRz
KSkKKyAgICBmb3IgKGF1dG8gZWxlbWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZjxFbGVtZW50Pj4o
bV9kb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja0VsZW1lbnRzKSkKICAgICAgICAgZWxlbWVudC0+
cmVzdW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbigpOwogCiAgICAgaWYgKHJlbmRlclZpZXcoKSkK
QEAgLTU3MjYsMTIgKzU3MjUsMTIgQEAgdm9pZCBEb2N1bWVudDo6cmVzdW1lKFJlYXNvbkZvclN1
c3BlbnNpb24gcmVhc29uKQogCiB2b2lkIERvY3VtZW50OjpyZWdpc3RlckZvckRvY3VtZW50U3Vz
cGVuc2lvbkNhbGxiYWNrcyhFbGVtZW50JiBlbGVtZW50KQogewotICAgIG1fZG9jdW1lbnRTdXNw
ZW5zaW9uQ2FsbGJhY2tFbGVtZW50cy5hZGQoJmVsZW1lbnQpOworICAgIG1fZG9jdW1lbnRTdXNw
ZW5zaW9uQ2FsbGJhY2tFbGVtZW50cy5hZGQoZWxlbWVudCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6
OnVucmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja3MoRWxlbWVudCYgZWxlbWVu
dCkKIHsKLSAgICBtX2RvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrRWxlbWVudHMucmVtb3ZlKCZl
bGVtZW50KTsKKyAgICBtX2RvY3VtZW50U3VzcGVuc2lvbkNhbGxiYWNrRWxlbWVudHMucmVtb3Zl
KGVsZW1lbnQpOwogfQogCiBib29sIERvY3VtZW50OjphdWRpb1BsYXliYWNrUmVxdWlyZXNVc2Vy
R2VzdHVyZSgpIGNvbnN0CkBAIC02MDU0LDE4ICs2MDUzLDYgQEAgU1ZHRG9jdW1lbnRFeHRlbnNp
b25zJiBEb2N1bWVudDo6YWNjZXNzU1ZHRXh0ZW5zaW9ucygpCiAgICAgcmV0dXJuICptX3N2Z0V4
dGVuc2lvbnM7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OmFkZFNWR1VzZUVsZW1lbnQoU1ZHVXNlRWxl
bWVudCYgZWxlbWVudCkKLXsKLSAgICBhdXRvIHJlc3VsdCA9IG1fc3ZnVXNlRWxlbWVudHMuYWRk
KCZlbGVtZW50KTsKLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KHJlc3VsdC5pc05ld0VudHJ5KTsKLX0KLQotdm9pZCBEb2N1bWVudDo6cmVtb3ZlU1ZHVXNlRWxl
bWVudChTVkdVc2VFbGVtZW50JiBlbGVtZW50KQotewotICAgIG1fc3ZnVXNlRWxlbWVudHMucmVt
b3ZlKCZlbGVtZW50KTsKLSAgICAvLyBGSVhNRTogQXNzZXJ0IHRoYXQgZWxlbWVudCB3YXMgaW4g
bV9zdmdVc2VFbGVtZW50cyBvbmNlIHJlLWVudHJhbmN5IHRvIHVwZGF0ZSBzdHlsZSBhbmQgbGF5
b3V0IGhhdmUgYmVlbiByZW1vdmVkLgotfQotCiBib29sIERvY3VtZW50OjpoYXNTVkdSb290Tm9k
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYmIGRvY3VtZW50RWxl
bWVudCgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpOwpAQCAtODM0MiwxMiArODMyOSwx
MiBAQCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IERvY3VtZW50OjpmcmFtZUlEKCkgY29uc3QK
IAogdm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJBcnRpY2xlRWxlbWVudChFbGVtZW50JiBhcnRpY2xl
KQogewotICAgIG1fYXJ0aWNsZUVsZW1lbnRzLmFkZCgmYXJ0aWNsZSk7CisgICAgbV9hcnRpY2xl
RWxlbWVudHMuYWRkKGFydGljbGUpOwogfQogCiB2b2lkIERvY3VtZW50Ojp1bnJlZ2lzdGVyQXJ0
aWNsZUVsZW1lbnQoRWxlbWVudCYgYXJ0aWNsZSkKIHsKLSAgICBtX2FydGljbGVFbGVtZW50cy5y
ZW1vdmUoJmFydGljbGUpOworICAgIG1fYXJ0aWNsZUVsZW1lbnRzLnJlbW92ZShhcnRpY2xlKTsK
ICAgICBpZiAobV9tYWluQXJ0aWNsZUVsZW1lbnQgPT0gJmFydGljbGUpCiAgICAgICAgIG1fbWFp
bkFydGljbGVFbGVtZW50ID0gbnVsbHB0cjsKIH0KQEAgLTgzNjcsMjkgKzgzNTQsMjkgQEAgdm9p
ZCBEb2N1bWVudDo6dXBkYXRlTWFpbkFydGljbGVFbGVtZW50QWZ0ZXJMYXlvdXQoKQogCiAgICAg
bV9tYWluQXJ0aWNsZUVsZW1lbnQgPSBudWxscHRyOwogCi0gICAgYXV0byBudW1iZXJPZkFydGlj
bGVzID0gbV9hcnRpY2xlRWxlbWVudHMuc2l6ZSgpOworICAgIGF1dG8gbnVtYmVyT2ZBcnRpY2xl
cyA9IG1fYXJ0aWNsZUVsZW1lbnRzLmNvbXB1dGVTaXplKCk7CiAgICAgaWYgKCFudW1iZXJPZkFy
dGljbGVzIHx8IG51bWJlck9mQXJ0aWNsZXMgPiBtYXhOdW1iZXJPZkFydGljbGVzQmVmb3JlSWdu
b3JpbmdNYWluQ29udGVudEFydGljbGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEVsZW1lbnQq
IHRhbGxlc3RBcnRpY2xlID0gbnVsbHB0cjsKKyAgICBSZWZQdHI8RWxlbWVudD4gdGFsbGVzdEFy
dGljbGU7CiAgICAgZmxvYXQgdGFsbGVzdEFydGljbGVIZWlnaHQgPSAwOwogICAgIGZsb2F0IHRh
bGxlc3RBcnRpY2xlV2lkdGggPSAwOwogICAgIGZsb2F0IHNlY29uZFRhbGxlc3RBcnRpY2xlSGVp
Z2h0ID0gMDsKIAotICAgIGZvciAoYXV0byogYXJ0aWNsZSA6IG1fYXJ0aWNsZUVsZW1lbnRzKSB7
Ci0gICAgICAgIGF1dG8qIGJveCA9IGFydGljbGUtPnJlbmRlckJveCgpOworICAgIGZvciAoYXV0
byYgYXJ0aWNsZSA6IG1fYXJ0aWNsZUVsZW1lbnRzKSB7CisgICAgICAgIGF1dG8qIGJveCA9IGFy
dGljbGUucmVuZGVyQm94KCk7CiAgICAgICAgIGZsb2F0IGhlaWdodCA9IGJveCA/IGJveC0+aGVp
Z2h0KCkudG9GbG9hdCgpIDogMDsKICAgICAgICAgaWYgKGhlaWdodCA+PSB0YWxsZXN0QXJ0aWNs
ZUhlaWdodCkgewogICAgICAgICAgICAgc2Vjb25kVGFsbGVzdEFydGljbGVIZWlnaHQgPSB0YWxs
ZXN0QXJ0aWNsZUhlaWdodDsKICAgICAgICAgICAgIHRhbGxlc3RBcnRpY2xlSGVpZ2h0ID0gaGVp
Z2h0OwogICAgICAgICAgICAgdGFsbGVzdEFydGljbGVXaWR0aCA9IGJveCA/IGJveC0+d2lkdGgo
KS50b0Zsb2F0KCkgOiAwOwotICAgICAgICAgICAgdGFsbGVzdEFydGljbGUgPSBhcnRpY2xlOwor
ICAgICAgICAgICAgdGFsbGVzdEFydGljbGUgPSAmYXJ0aWNsZTsKICAgICAgICAgfSBlbHNlIGlm
IChoZWlnaHQgPj0gc2Vjb25kVGFsbGVzdEFydGljbGVIZWlnaHQpCiAgICAgICAgICAgICBzZWNv
bmRUYWxsZXN0QXJ0aWNsZUhlaWdodCA9IGhlaWdodDsKICAgICB9CiAKICAgICBpZiAobnVtYmVy
T2ZBcnRpY2xlcyA9PSAxKSB7Ci0gICAgICAgIG1fbWFpbkFydGljbGVFbGVtZW50ID0gdGFsbGVz
dEFydGljbGU7CisgICAgICAgIG1fbWFpbkFydGljbGVFbGVtZW50ID0gbWFrZVdlYWtQdHIodGFs
bGVzdEFydGljbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04NDAzLDcg
KzgzOTAsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVNYWluQXJ0aWNsZUVsZW1lbnRBZnRlckxh
eW91dCgpCiAgICAgaWYgKHRhbGxlc3RBcnRpY2xlV2lkdGggKiB0YWxsZXN0QXJ0aWNsZUhlaWdo
dCA8IG1pbmltdW1WaWV3cG9ydEFyZWFGYWN0b3IgKiAodmlld3BvcnRTaXplLndpZHRoKCkgKiB2
aWV3cG9ydFNpemUuaGVpZ2h0KCkpLnRvRmxvYXQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9tYWluQXJ0aWNsZUVsZW1lbnQgPSB0YWxsZXN0QXJ0aWNsZTsKKyAgICBtX21haW5BcnRpY2xl
RWxlbWVudCA9IG1ha2VXZWFrUHRyKHRhbGxlc3RBcnRpY2xlLmdldCgpKTsKIH0KIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCkBAIC04OTU3LDQwICs4OTQ0LDM5IEBAIHZv
aWQgRG9jdW1lbnQ6OnByZXBhcmVDYW52YXNlc0ZvckRpc3BsYXlJZk5lZWRlZCgpCiAgICAgLy8g
dGhhdCB3b3VsZCBtdXRhdGUgb3VyIG1fY2FudmFzZXNOZWVkaW5nRGlzcGxheVByZXBhcmF0aW9u
IGxpc3QuIEl0CiAgICAgLy8gd291bGQgYmUgbmljZSBpZiB0aGlzIGNvdWxkIGJlIGVuZm9yY2Vk
IHRvIHJlbW92ZSB0aGUgY29weVRvVmVjdG9yLgogCi0gICAgZm9yIChhdXRvKiBjYW52YXMgOiBj
b3B5VG9WZWN0b3IobV9jYW52YXNlc05lZWRpbmdEaXNwbGF5UHJlcGFyYXRpb24pKSB7CisgICAg
YXV0byBjYW52YXNlcyA9IGNvcHlUb1ZlY3Rvck9mPFJlZjxIVE1MQ2FudmFzRWxlbWVudD4+KG1f
Y2FudmFzZXNOZWVkaW5nRGlzcGxheVByZXBhcmF0aW9uKTsKKyAgICBtX2NhbnZhc2VzTmVlZGlu
Z0Rpc3BsYXlQcmVwYXJhdGlvbi5jbGVhcigpOworICAgIGZvciAoYXV0byYgY2FudmFzIDogY2Fu
dmFzZXMpIHsKICAgICAgICAgLy8gSG93ZXZlciwgaWYgdGhleSBhcmUgbm90IGluIHRoZSBkb2N1
bWVudCBib2R5LCB0aGVuIHRoZXkgd29uJ3QKICAgICAgICAgLy8gYmUgY29tcG9zaXRlZCBhbmQg
dGh1cyBkb24ndCBuZWVkIHByZXBhcmF0aW9uLiBVbmZvcnR1bmF0ZWx5IHRoZXkKICAgICAgICAg
Ly8gY2FuJ3QgdGVsbCBhdCB0aGUgdGltZSB0aGV5IHdlcmUgYWRkZWQgdG8gdGhlIGxpc3QsIHNp
bmNlIHRoZXkKICAgICAgICAgLy8gY291bGQgYmUgaW5zZXJ0ZWQgb3IgcmVtb3ZlZCBmcm9tIHRo
ZSBkb2N1bWVudCBib2R5IGFmdGVyd2FyZHMuCiAgICAgICAgIGlmICghY2FudmFzLT5pc0luVHJl
ZVNjb3BlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBhdXRvIHByb3RlY3Rl
ZENhbnZhcyA9IG1ha2VSZWYoKmNhbnZhcyk7Ci0gICAgICAgIHByb3RlY3RlZENhbnZhcy0+cHJl
cGFyZUZvckRpc3BsYXkoKTsKKyAgICAgICAgY2FudmFzLT5wcmVwYXJlRm9yRGlzcGxheSgpOwog
ICAgIH0KLSAgICBtX2NhbnZhc2VzTmVlZGluZ0Rpc3BsYXlQcmVwYXJhdGlvbi5jbGVhcigpOwog
fQogCi12b2lkIERvY3VtZW50OjpjbGVhckNhbnZhc1ByZXBhcmF0aW9uKEhUTUxDYW52YXNFbGVt
ZW50KiBjYW52YXMpCit2b2lkIERvY3VtZW50OjpjbGVhckNhbnZhc1ByZXBhcmF0aW9uKEhUTUxD
YW52YXNFbGVtZW50JiBjYW52YXMpCiB7CiAgICAgbV9jYW52YXNlc05lZWRpbmdEaXNwbGF5UHJl
cGFyYXRpb24ucmVtb3ZlKGNhbnZhcyk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmNhbnZhc0NoYW5n
ZWQoQ2FudmFzQmFzZSYgY2FudmFzQmFzZSwgY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYpCiB7
Ci0gICAgaWYgKGlzPEhUTUxDYW52YXNFbGVtZW50PihjYW52YXNCYXNlKSkgewotICAgICAgICBh
dXRvKiBjYW52YXMgPSBkb3duY2FzdDxIVE1MQ2FudmFzRWxlbWVudD4oJmNhbnZhc0Jhc2UpOwot
ICAgICAgICBpZiAoY2FudmFzLT5uZWVkc1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpKQotICAgICAg
ICAgICAgbV9jYW52YXNlc05lZWRpbmdEaXNwbGF5UHJlcGFyYXRpb24uYWRkKGNhbnZhcyk7Ci0g
ICAgfQorICAgIGlmICghaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UpKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+
KGNhbnZhc0Jhc2UpOworICAgIGlmIChjYW52YXMubmVlZHNQcmVwYXJhdGlvbkZvckRpc3BsYXko
KSkKKyAgICAgICAgbV9jYW52YXNlc05lZWRpbmdEaXNwbGF5UHJlcGFyYXRpb24uYWRkKGNhbnZh
cyk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmNhbnZhc0Rlc3Ryb3llZChDYW52YXNCYXNlJiBjYW52
YXNCYXNlKQogewotICAgIGlmIChpczxIVE1MQ2FudmFzRWxlbWVudD4oY2FudmFzQmFzZSkpIHsK
LSAgICAgICAgYXV0byogY2FudmFzID0gZG93bmNhc3Q8SFRNTENhbnZhc0VsZW1lbnQ+KCZjYW52
YXNCYXNlKTsKLSAgICAgICAgbV9jYW52YXNlc05lZWRpbmdEaXNwbGF5UHJlcGFyYXRpb24ucmVt
b3ZlKGNhbnZhcyk7Ci0gICAgfQorICAgIGlmICghaXM8SFRNTENhbnZhc0VsZW1lbnQ+KGNhbnZh
c0Jhc2UpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byYgY2FudmFzID0gZG93bmNhc3Q8SFRN
TENhbnZhc0VsZW1lbnQ+KGNhbnZhc0Jhc2UpOworICAgIG1fY2FudmFzZXNOZWVkaW5nRGlzcGxh
eVByZXBhcmF0aW9uLnJlbW92ZShjYW52YXMpOwogfQogCiBKU0M6OlZNJiBEb2N1bWVudDo6dm0o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBlY2M4YzdiNzQ4Mjk0MDgwYjZiYmQ1NjBkY2YyZDQ0
MmYxZTAyYmQ1Li4yZDc1YTYxN2NmNTNkZDg1ZjM2MmFjZTI3NGRkYzIyOTk5ZTk0Mzk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtMTE1MCwxMCArMTE1MCw2IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIHN2Z0V4dGVuc2lvbnMoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBTVkdEb2N1bWVudEV4dGVuc2lvbnMmIGFjY2Vzc1NWR0V4dGVu
c2lvbnMoKTsKIAotICAgIHZvaWQgYWRkU1ZHVXNlRWxlbWVudChTVkdVc2VFbGVtZW50Jik7Ci0g
ICAgdm9pZCByZW1vdmVTVkdVc2VFbGVtZW50KFNWR1VzZUVsZW1lbnQmKTsKLSAgICBIYXNoU2V0
PFNWR1VzZUVsZW1lbnQqPiBjb25zdCBzdmdVc2VFbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
c3ZnVXNlRWxlbWVudHM7IH0KLQogICAgIHZvaWQgaW5pdFNlY3VyaXR5Q29udGV4dCgpOwogICAg
IHZvaWQgaW5pdENvbnRlbnRTZWN1cml0eVBvbGljeSgpOwogCkBAIC0xNjExLDcgKzE2MDcsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgRnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2VsZWN0aW9uOyB9CiAKICAgICB2b2lkIHByZXBhcmVDYW52YXNlc0ZvckRpc3Bs
YXlJZk5lZWRlZCgpOwotICAgIHZvaWQgY2xlYXJDYW52YXNQcmVwYXJhdGlvbihIVE1MQ2FudmFz
RWxlbWVudCopOworICAgIHZvaWQgY2xlYXJDYW52YXNQcmVwYXJhdGlvbihIVE1MQ2FudmFzRWxl
bWVudCYpOwogICAgIHZvaWQgY2FudmFzQ2hhbmdlZChDYW52YXNCYXNlJiwgY29uc3QgT3B0aW9u
YWw8RmxvYXRSZWN0PiYpIGZpbmFsOwogICAgIHZvaWQgY2FudmFzUmVzaXplZChDYW52YXNCYXNl
JikgZmluYWwgeyB9OwogICAgIHZvaWQgY2FudmFzRGVzdHJveWVkKENhbnZhc0Jhc2UmKSBmaW5h
bDsKQEAgLTE4NTksMTIgKzE4NTUsMTEgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8WFBhdGhFdmFs
dWF0b3I+IG1feHBhdGhFdmFsdWF0b3I7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRG9jdW1l
bnRFeHRlbnNpb25zPiBtX3N2Z0V4dGVuc2lvbnM7Ci0gICAgSGFzaFNldDxTVkdVc2VFbGVtZW50
Kj4gbV9zdmdVc2VFbGVtZW50czsKIAogICAgIC8vIENvbGxlY3Rpb24gb2YgY2FudmFzIG9iamVj
dHMgdGhhdCBuZWVkIHRvIGRvIHdvcmsgYWZ0ZXIgdGhleSd2ZQogICAgIC8vIHJlbmRlcmVkIGJ1
dCBiZWZvcmUgY29tcG9zaXRpbmcsIGZvciB0aGUgbmV4dCBmcmFtZS4gVGhlIHNldCBpcwogICAg
IC8vIGNsZWFyZWQgYWZ0ZXIgdGhleSd2ZSBiZWVuIGNhbGxlZC4KLSAgICBIYXNoU2V0PEhUTUxD
YW52YXNFbGVtZW50Kj4gbV9jYW52YXNlc05lZWRpbmdEaXNwbGF5UHJlcGFyYXRpb247CisgICAg
V2Vha0hhc2hTZXQ8SFRNTENhbnZhc0VsZW1lbnQ+IG1fY2FudmFzZXNOZWVkaW5nRGlzcGxheVBy
ZXBhcmF0aW9uOwogCiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpCiAgICAgT3B0aW9uU2V0PENv
bG9yU2NoZW1lPiBtX2NvbG9yU2NoZW1lOwpAQCAtMTg3Myw3ICsxODY4LDcgQEAgcHJpdmF0ZToK
IAogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+PiBtX2Nzc0Nh
bnZhc0VsZW1lbnRzOwogCi0gICAgSGFzaFNldDxFbGVtZW50Kj4gbV9kb2N1bWVudFN1c3BlbnNp
b25DYWxsYmFja0VsZW1lbnRzOworICAgIFdlYWtIYXNoU2V0PEVsZW1lbnQ+IG1fZG9jdW1lbnRT
dXNwZW5zaW9uQ2FsbGJhY2tFbGVtZW50czsKIAogI2lmIEVOQUJMRShWSURFTykKICAgICBXZWFr
SGFzaFNldDxIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudHM7CkBAIC0xODg0LDggKzE4
NzksOCBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8SFRNTE1lZGlhRWxlbWVudD4gbV9tZWRpYUVs
ZW1lbnRTaG93aW5nVGV4dFRyYWNrOwogI2VuZGlmCiAKLSAgICBFbGVtZW50KiBtX21haW5BcnRp
Y2xlRWxlbWVudCB7IG51bGxwdHIgfTsKLSAgICBIYXNoU2V0PEVsZW1lbnQqPiBtX2FydGljbGVF
bGVtZW50czsKKyAgICBXZWFrUHRyPEVsZW1lbnQ+IG1fbWFpbkFydGljbGVFbGVtZW50OworICAg
IFdlYWtIYXNoU2V0PEVsZW1lbnQ+IG1fYXJ0aWNsZUVsZW1lbnRzOwogCiAgICAgSGFzaFNldDxW
aXNpYmlsaXR5Q2hhbmdlQ2xpZW50Kj4gbV92aXNpYmlsaXR5U3RhdGVDYWxsYmFja0NsaWVudHM7
CiAKQEAgLTIxMzEsNyArMjEyNiw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBl
bmRpbmdTY3JvbGxFdmVudFRhcmdldExpc3Q+IG1fcGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0TGlz
dDsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgSGFzaFNldDxIVE1MTWVkaWFFbGVt
ZW50Kj4gbV9tZWRpYVN0cmVhbVN0YXRlQ2hhbmdlRWxlbWVudHM7CiAgICAgU3RyaW5nIG1faWRI
YXNoU2FsdDsKICAgICBib29sIG1faGFzSGFkQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2sgeyBmYWxz
ZSB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmlu
ZGV4IGJjMDA0NDk2YWRhOTA1MzE2NWI2ZDEzODc1NmI0ZDc5OTQxNDQzMDIuLjQ4NDEzMTM1NjYx
OWVhOWE2Y2Y1ZTUzYTNhZmZkMjI3YTkzODE3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgSFRNTENhbnZhc0VsZW1lbnQ6
On5IVE1MQ2FudmFzRWxlbWVudCgpCiAgICAgLy8gZG93bmNhc3RzIHRoZSBDYW52YXNCYXNlIG9i
amVjdCB0byBIVE1MQ2FudmFzRWxlbWVudC4gVGhhdCBpbnZva2VzIHZpcnR1YWwgbWV0aG9kcywg
d2hpY2ggc2hvdWxkIGJlCiAgICAgLy8gYXZvaWRlZCBpbiBkZXN0cnVjdG9ycywgYnV0IHdvcmtz
IGFzIGxvbmcgYXMgaXQncyBkb25lIGJlZm9yZSBIVE1MQ2FudmFzRWxlbWVudCBkZXN0cnVjdHMg
Y29tcGxldGVseS4KICAgICBub3RpZnlPYnNlcnZlcnNDYW52YXNEZXN0cm95ZWQoKTsKLSAgICBk
b2N1bWVudCgpLmNsZWFyQ2FudmFzUHJlcGFyYXRpb24odGhpcyk7CisgICAgZG9jdW1lbnQoKS5j
bGVhckNhbnZhc1ByZXBhcmF0aW9uKCp0aGlzKTsKIAogICAgIG1fY29udGV4dCA9IG51bGxwdHI7
IC8vIEVuc3VyZSB0aGlzIGdvZXMgYXdheSBiZWZvcmUgdGhlIEltYWdlQnVmZmVyLgogICAgIHNl
dEltYWdlQnVmZmVyKG51bGxwdHIpOwpAQCAtMTA1NSw3ICsxMDU1LDcgQEAgdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6ZXZlbnRMaXN0ZW5lcnNEaWRDaGFuZ2UoKQogdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVu
dCYgbmV3RG9jdW1lbnQpCiB7CiAgICAgaWYgKG5lZWRzUHJlcGFyYXRpb25Gb3JEaXNwbGF5KCkp
IHsKLSAgICAgICAgb2xkRG9jdW1lbnQuY2xlYXJDYW52YXNQcmVwYXJhdGlvbih0aGlzKTsKKyAg
ICAgICAgb2xkRG9jdW1lbnQuY2xlYXJDYW52YXNQcmVwYXJhdGlvbigqdGhpcyk7CiAgICAgICAg
IHJlbW92ZU9ic2VydmVyKG9sZERvY3VtZW50KTsKICAgICAgICAgYWRkT2JzZXJ2ZXIobmV3RG9j
dW1lbnQpOwogICAgIH0KQEAgLTEwODAsNyArMTA4MCw3IEBAIE5vZGU6Okluc2VydGVkSW50b0Fu
Y2VzdG9yUmVzdWx0IEhUTUxDYW52YXNFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJbnNl
cnRpCiB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxU
eXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQog
ewogICAgIGlmIChuZWVkc1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpICYmIHJlbW92YWxUeXBlLmRp
c2Nvbm5lY3RlZEZyb21Eb2N1bWVudCkgewotICAgICAgICBvbGRQYXJlbnRPZlJlbW92ZWRUcmVl
LmRvY3VtZW50KCkuY2xlYXJDYW52YXNQcmVwYXJhdGlvbih0aGlzKTsKKyAgICAgICAgb2xkUGFy
ZW50T2ZSZW1vdmVkVHJlZS5kb2N1bWVudCgpLmNsZWFyQ2FudmFzUHJlcGFyYXRpb24oKnRoaXMp
OwogICAgICAgICByZW1vdmVPYnNlcnZlcihvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLmRvY3VtZW50
KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAw
MmIxZGY2OGVjYzMyN2VhMzYzMTNmMzY5YzQwNDgwYTcwNjE3MzcxLi5jMWRiZmZjZGM0NmMwNjlh
NDk1MWRjMDdmNDk5YTgzYTZhNGMwNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMTMwLDkgKzEzMCw5IEBAIFJlc29sdmVyOjpSZXNvbHZlcihEb2N1bWVudCYg
ZG9jdW1lbnQpCiB2b2lkIFJlc29sdmVyOjphZGRDdXJyZW50U1ZHRm9udEZhY2VSdWxlcygpCiB7
CiAgICAgaWYgKG1fZG9jdW1lbnQuc3ZnRXh0ZW5zaW9ucygpKSB7Ci0gICAgICAgIGNvbnN0IEhh
c2hTZXQ8U1ZHRm9udEZhY2VFbGVtZW50Kj4mIHN2Z0ZvbnRGYWNlRWxlbWVudHMgPSBtX2RvY3Vt
ZW50LnN2Z0V4dGVuc2lvbnMoKS0+c3ZnRm9udEZhY2VFbGVtZW50cygpOwotICAgICAgICBmb3Ig
KGF1dG8qIHN2Z0ZvbnRGYWNlRWxlbWVudCA6IHN2Z0ZvbnRGYWNlRWxlbWVudHMpCi0gICAgICAg
ICAgICBtX2RvY3VtZW50LmZvbnRTZWxlY3RvcigpLmFkZEZvbnRGYWNlUnVsZShzdmdGb250RmFj
ZUVsZW1lbnQtPmZvbnRGYWNlUnVsZSgpLCBzdmdGb250RmFjZUVsZW1lbnQtPmlzSW5Vc2VyQWdl
bnRTaGFkb3dUcmVlKCkpOworICAgICAgICBhdXRvJiBzdmdGb250RmFjZUVsZW1lbnRzID0gbV9k
b2N1bWVudC5zdmdFeHRlbnNpb25zKCktPnN2Z0ZvbnRGYWNlRWxlbWVudHMoKTsKKyAgICAgICAg
Zm9yIChhdXRvJiBzdmdGb250RmFjZUVsZW1lbnQgOiBzdmdGb250RmFjZUVsZW1lbnRzKQorICAg
ICAgICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5hZGRGb250RmFjZVJ1bGUoc3ZnRm9u
dEZhY2VFbGVtZW50LmZvbnRGYWNlUnVsZSgpLCBzdmdGb250RmFjZUVsZW1lbnQuaXNJblVzZXJB
Z2VudFNoYWRvd1RyZWUoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudEV4dGVuc2lvbnMuY3BwCmluZGV4IDI5ODM0ZGM3NGM2Zjc4YzU2MmE3YzQwYWI1YTU1
MWRhYWU3ZTA2MGEuLjU1YjVkNWFjZjMyNDJlYWI2NTcxOWIyNGYwNzljNGM2ODM1NzdmYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNNSUxUaW1lQ29udGFpbmVy
LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0ZvbnRGYWNlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlc0NhY2hlLmgiCiAjaW5jbHVkZSAiU1ZHU01JTEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCkBAIC00NiwxOCArNDcsMjEgQEAg
U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpTVkdEb2N1bWVudEV4dGVuc2lvbnMoRG9jdW1lbnQmIGRv
Y3VtZW50KQogewogfQogCi1TVkdEb2N1bWVudEV4dGVuc2lvbnM6On5TVkdEb2N1bWVudEV4dGVu
c2lvbnMoKSA9IGRlZmF1bHQ7CitTVkdEb2N1bWVudEV4dGVuc2lvbnM6On5TVkdEb2N1bWVudEV4
dGVuc2lvbnMoKQoreworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04obV91c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZS5jb21wdXRlc0VtcHR5
KCkpOworfQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkVGltZUNvbnRhaW5lcihT
VkdTVkdFbGVtZW50JiBlbGVtZW50KQogewotICAgIG1fdGltZUNvbnRhaW5lcnMuYWRkKCZlbGVt
ZW50KTsKKyAgICBtX3RpbWVDb250YWluZXJzLmFkZChlbGVtZW50KTsKICAgICBpZiAobV9hcmVB
bmltYXRpb25zUGF1c2VkKQogICAgICAgICBlbGVtZW50LnBhdXNlQW5pbWF0aW9ucygpOwogfQog
CiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVtb3ZlVGltZUNvbnRhaW5lcihTVkdTVkdF
bGVtZW50JiBlbGVtZW50KQogewotICAgIG1fdGltZUNvbnRhaW5lcnMucmVtb3ZlKCZlbGVtZW50
KTsKKyAgICBtX3RpbWVDb250YWluZXJzLnJlbW92ZShlbGVtZW50KTsKIH0KIAogdm9pZCBTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OmFkZFJlc291cmNlKGNvbnN0IEF0b21TdHJpbmcmIGlkLCBSZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYgcmVzb3VyY2UpCkBAIC04NSwxNCArODksMjcgQEAgUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVzb3VyY2VC
eUlkKGNvbnN0IEF0b21TdHJpbmcKICAgICByZXR1cm4gbV9yZXNvdXJjZXMuZ2V0KGlkKTsKIH0K
IAorCit2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkVXNlRWxlbWVudFdpdGhQZW5kaW5n
U2hhZG93VHJlZVVwZGF0ZShTVkdVc2VFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1dG8gcmVz
dWx0ID0gbV91c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZS5hZGQoZWxlbWVu
dCk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXN1bHQu
aXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVVc2VF
bGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKFNWR1VzZUVsZW1lbnQmIGVsZW1lbnQp
Cit7CisgICAgbV91c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZS5yZW1vdmUo
ZWxlbWVudCk7CisgICAgLy8gRklYTUU6IEFzc2VydCB0aGF0IGVsZW1lbnQgd2FzIGluIG1fc3Zn
VXNlRWxlbWVudHMgb25jZSByZS1lbnRyYW5jeSB0byB1cGRhdGUgc3R5bGUgYW5kIGxheW91dCBo
YXZlIGJlZW4gcmVtb3ZlZC4KK30KKworCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6c3Rh
cnRBbmltYXRpb25zKCkKIHsKICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSBldmVyeSAiVGltZSBD
b250YWluZXIiIHdpbGwgbmVlZCBhIHdheSB0byBsYXRjaCBvbiB0byBzb21lIGdsb2JhbCB0aW1l
cgogICAgIC8vIHN0YXJ0aW5nIGFuaW1hdGlvbnMgZm9yIGEgZG9jdW1lbnQgd2lsbCBkbyB0aGlz
ICJsYXRjaGluZyIKICAgICAvLyBGSVhNRTogV2UgaG9sZCBhIHJlZiBwb2ludGVycyB0byBwcmV2
ZW50IGEgc2hhZG93IHRyZWUgZnJvbSBnZXR0aW5nIHJlbW92ZWQgb3V0IGZyb20gdW5kZXJuZWF0
aCB1cy4KICAgICAvLyBJbiB0aGUgZnV0dXJlIHdlIHNob3VsZCByZWZhY3RvciB0aGUgdXNlLWVs
ZW1lbnQgdG8gYXZvaWQgdGhpcy4gU2VlIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzUzNzA0Ci0gICAg
VmVjdG9yPFJlZlB0cjxTVkdTVkdFbGVtZW50Pj4gdGltZUNvbnRhaW5lcnM7Ci0gICAgdGltZUNv
bnRhaW5lcnMuYXBwZW5kUmFuZ2UobV90aW1lQ29udGFpbmVycy5iZWdpbigpLCBtX3RpbWVDb250
YWluZXJzLmVuZCgpKTsKKyAgICBhdXRvIHRpbWVDb250YWluZXJzID0gY29weVRvVmVjdG9yT2Y8
UmVmPFNWR1NWR0VsZW1lbnQ+PihtX3RpbWVDb250YWluZXJzKTsKICAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiB0aW1lQ29udGFpbmVycykKICAgICAgICAgZWxlbWVudC0+dGltZUNvbnRhaW5lcigp
LmJlZ2luKCk7CiB9CkBAIC0xMDAsMjIgKzExNywyMCBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6c3RhcnRBbmltYXRpb25zKCkKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpwYXVz
ZUFuaW1hdGlvbnMoKQogewogICAgIGZvciAoYXV0byYgY29udGFpbmVyIDogbV90aW1lQ29udGFp
bmVycykKLSAgICAgICAgY29udGFpbmVyLT5wYXVzZUFuaW1hdGlvbnMoKTsKKyAgICAgICAgY29u
dGFpbmVyLnBhdXNlQW5pbWF0aW9ucygpOwogICAgIG1fYXJlQW5pbWF0aW9uc1BhdXNlZCA9IHRy
dWU7CiB9CiAKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp1bnBhdXNlQW5pbWF0aW9ucygp
CiB7CiAgICAgZm9yIChhdXRvJiBjb250YWluZXIgOiBtX3RpbWVDb250YWluZXJzKQotICAgICAg
ICBjb250YWluZXItPnVucGF1c2VBbmltYXRpb25zKCk7CisgICAgICAgIGNvbnRhaW5lci51bnBh
dXNlQW5pbWF0aW9ucygpOwogICAgIG1fYXJlQW5pbWF0aW9uc1BhdXNlZCA9IGZhbHNlOwogfQog
CiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6ZGlzcGF0Y2hMb2FkRXZlbnRUb091dGVybW9z
dFNWR0VsZW1lbnRzKCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFNWR1NWR0VsZW1lbnQ+PiB0aW1l
Q29udGFpbmVyczsKLSAgICB0aW1lQ29udGFpbmVycy5hcHBlbmRSYW5nZShtX3RpbWVDb250YWlu
ZXJzLmJlZ2luKCksIG1fdGltZUNvbnRhaW5lcnMuZW5kKCkpOwotCisgICAgYXV0byB0aW1lQ29u
dGFpbmVycyA9IGNvcHlUb1ZlY3Rvck9mPFJlZjxTVkdTVkdFbGVtZW50Pj4obV90aW1lQ29udGFp
bmVycyk7CiAgICAgZm9yIChhdXRvJiBjb250YWluZXIgOiB0aW1lQ29udGFpbmVycykgewogICAg
ICAgICBpZiAoIWNvbnRhaW5lci0+aXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTMwMiw4ICszMTcsOCBAQCB2b2lkIFNWR0RvY3VtZW50RXh0ZW5z
aW9uczo6cmVtb3ZlQWxsVGFyZ2V0UmVmZXJlbmNlc0ZvckVsZW1lbnQoU1ZHRWxlbWVudCYgcmVm
ZQogCiB2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6cmVidWlsZEVsZW1lbnRzKCkKIHsKLSAg
ICBWZWN0b3I8U1ZHRWxlbWVudCo+IHNoYWRvd1JlYnVpbGRFbGVtZW50cyA9IFdURk1vdmUobV9y
ZWJ1aWxkRWxlbWVudHMpOwotICAgIGZvciAoYXV0byogZWxlbWVudCA6IHNoYWRvd1JlYnVpbGRF
bGVtZW50cykKKyAgICBhdXRvIHNoYWRvd1JlYnVpbGRFbGVtZW50cyA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9yZWJ1aWxkRWxlbWVudHMsIHsgfSk7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogc2hhZG93
UmVidWlsZEVsZW1lbnRzKQogICAgICAgICBlbGVtZW50LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKFNW
R05hbWVzOjpocmVmQXR0cik7CiB9CiAKQEAgLTMxMyw3ICszMjgsNyBAQCB2b2lkIFNWR0RvY3Vt
ZW50RXh0ZW5zaW9uczo6Y2xlYXJUYXJnZXREZXBlbmRlbmNpZXMoU1ZHRWxlbWVudCYgcmVmZXJl
bmNlZEVsZW1lbgogICAgIGlmICghcmVmZXJlbmNpbmdFbGVtZW50cykKICAgICAgICAgcmV0dXJu
OwogICAgIGZvciAoYXV0byogZWxlbWVudCA6ICpyZWZlcmVuY2luZ0VsZW1lbnRzKSB7Ci0gICAg
ICAgIG1fcmVidWlsZEVsZW1lbnRzLmFwcGVuZChlbGVtZW50KTsKKyAgICAgICAgbV9yZWJ1aWxk
RWxlbWVudHMuYXBwZW5kKCplbGVtZW50KTsKICAgICAgICAgZWxlbWVudC0+Y2FsbENsZWFyVGFy
Z2V0KCk7CiAgICAgfQogfQpAQCAtMzM4LDE4ICszNTMsMTggQEAgdm9pZCBTVkdEb2N1bWVudEV4
dGVuc2lvbnM6OnJlYnVpbGRBbGxFbGVtZW50UmVmZXJlbmNlc0ZvclRhcmdldChTVkdFbGVtZW50
JiByZWYKIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVBbGxFbGVtZW50UmVmZXJl
bmNlc0ZvclRhcmdldChTVkdFbGVtZW50JiByZWZlcmVuY2VkRWxlbWVudCkKIHsKICAgICBtX2Vs
ZW1lbnREZXBlbmRlbmNpZXMucmVtb3ZlKCZyZWZlcmVuY2VkRWxlbWVudCk7Ci0gICAgbV9yZWJ1
aWxkRWxlbWVudHMucmVtb3ZlRmlyc3QoJnJlZmVyZW5jZWRFbGVtZW50KTsKKyAgICBtX3JlYnVp
bGRFbGVtZW50cy5yZW1vdmVGaXJzdChyZWZlcmVuY2VkRWxlbWVudCk7CiB9CiAKIHZvaWQgU1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjpyZWdpc3RlclNWR0ZvbnRGYWNlRWxlbWVudChTVkdGb250RmFj
ZUVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgbV9zdmdGb250RmFjZUVsZW1lbnRzLmFkZCgmZWxl
bWVudCk7CisgICAgbV9zdmdGb250RmFjZUVsZW1lbnRzLmFkZChlbGVtZW50KTsKIH0KIAogdm9p
ZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnVucmVnaXN0ZXJTVkdGb250RmFjZUVsZW1lbnQoU1ZH
Rm9udEZhY2VFbGVtZW50JiBlbGVtZW50KQogewotICAgIEFTU0VSVChtX3N2Z0ZvbnRGYWNlRWxl
bWVudHMuY29udGFpbnMoJmVsZW1lbnQpKTsKLSAgICBtX3N2Z0ZvbnRGYWNlRWxlbWVudHMucmVt
b3ZlKCZlbGVtZW50KTsKKyAgICBBU1NFUlQobV9zdmdGb250RmFjZUVsZW1lbnRzLmNvbnRhaW5z
KGVsZW1lbnQpKTsKKyAgICBtX3N2Z0ZvbnRGYWNlRWxlbWVudHMucmVtb3ZlKGVsZW1lbnQpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKaW5kZXgg
OTBmYzUwZGUyOGVjYjA3NzNmNmQ3MDdhMTA3OTM0YzQyZTc0NTJiOC4uOTgxZmJmN2I5ODU4MTc0
OWFkMmFhZTI5ZjUyZjFiYTU0NGI4MmU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1
bWVudEV4dGVuc2lvbnMuaApAQCAtNTAsNiArNTAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlUmVzb3VyY2UoY29uc3QgQXRvbVN0cmluZyYgaWQpOwogICAgIFJlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyKiByZXNvdXJjZUJ5SWQoY29uc3QgQXRvbVN0cmluZyYgaWQpIGNvbnN0OwogCisg
ICAgdm9pZCBhZGRVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKFNWR1VzZUVs
ZW1lbnQmKTsKKyAgICB2b2lkIHJlbW92ZVVzZUVsZW1lbnRXaXRoUGVuZGluZ1NoYWRvd1RyZWVV
cGRhdGUoU1ZHVXNlRWxlbWVudCYpOworICAgIGNvbnN0IFdlYWtIYXNoU2V0PFNWR1VzZUVsZW1l
bnQ+JiB1c2VFbGVtZW50c1dpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGU7IH0KKwogICAgIHZv
aWQgc3RhcnRBbmltYXRpb25zKCk7CiAgICAgdm9pZCBwYXVzZUFuaW1hdGlvbnMoKTsKICAgICB2
b2lkIHVucGF1c2VBbmltYXRpb25zKCk7CkBAIC03MCwyMSArNzQsMjIgQEAgcHVibGljOgogICAg
IHZvaWQgY2xlYXJUYXJnZXREZXBlbmRlbmNpZXMoU1ZHRWxlbWVudCYpOwogICAgIHZvaWQgcmVi
dWlsZEVsZW1lbnRzKCk7CiAKLSAgICBjb25zdCBIYXNoU2V0PFNWR0ZvbnRGYWNlRWxlbWVudCo+
JiBzdmdGb250RmFjZUVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdmdGb250RmFjZUVsZW1l
bnRzOyB9CisgICAgY29uc3QgV2Vha0hhc2hTZXQ8U1ZHRm9udEZhY2VFbGVtZW50PiYgc3ZnRm9u
dEZhY2VFbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fc3ZnRm9udEZhY2VFbGVtZW50czsgfQog
ICAgIHZvaWQgcmVnaXN0ZXJTVkdGb250RmFjZUVsZW1lbnQoU1ZHRm9udEZhY2VFbGVtZW50Jik7
CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1ZHRm9udEZhY2VFbGVtZW50KFNWR0ZvbnRGYWNlRWxlbWVu
dCYpOwogCiBwcml2YXRlOgogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwotICAgIEhhc2hTZXQ8
U1ZHU1ZHRWxlbWVudCo+IG1fdGltZUNvbnRhaW5lcnM7IC8vIEZvciBTVkcgMS4yIHN1cHBvcnQg
dGhpcyB3aWxsIG5lZWQgdG8gYmUgbWFkZSBtb3JlIGdlbmVyYWwuCi0gICAgSGFzaFNldDxTVkdG
b250RmFjZUVsZW1lbnQqPiBtX3N2Z0ZvbnRGYWNlRWxlbWVudHM7CisgICAgV2Vha0hhc2hTZXQ8
U1ZHU1ZHRWxlbWVudD4gbV90aW1lQ29udGFpbmVyczsgLy8gRm9yIFNWRyAxLjIgc3VwcG9ydCB0
aGlzIHdpbGwgbmVlZCB0byBiZSBtYWRlIG1vcmUgZ2VuZXJhbC4KKyAgICBXZWFrSGFzaFNldDxT
VkdGb250RmFjZUVsZW1lbnQ+IG1fc3ZnRm9udEZhY2VFbGVtZW50czsKICAgICBIYXNoTWFwPEF0
b21TdHJpbmcsIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKj4gbV9yZXNvdXJjZXM7CiAgICAg
SGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0VsZW1lbnRzPj4gbV9w
ZW5kaW5nUmVzb3VyY2VzOyAvLyBSZXNvdXJjZXMgdGhhdCBhcmUgcGVuZGluZy4KICAgICBIYXNo
TWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRWxlbWVudHM+PiBtX3BlbmRp
bmdSZXNvdXJjZXNGb3JSZW1vdmFsOyAvLyBSZXNvdXJjZXMgdGhhdCBhcmUgcGVuZGluZyBhbmQg
c2NoZWR1bGVkIGZvciByZW1vdmFsLgogICAgIEhhc2hNYXA8U1ZHRWxlbWVudCosIHN0ZDo6dW5p
cXVlX3B0cjxIYXNoU2V0PFNWR0VsZW1lbnQqPj4+IG1fZWxlbWVudERlcGVuZGVuY2llczsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUmVzb3VyY2VzQ2FjaGU+IG1fcmVzb3VyY2VzQ2FjaGU7CiAK
LSAgICBWZWN0b3I8U1ZHRWxlbWVudCo+IG1fcmVidWlsZEVsZW1lbnRzOworICAgIFZlY3RvcjxS
ZWY8U1ZHRWxlbWVudD4+IG1fcmVidWlsZEVsZW1lbnRzOworICAgIFdlYWtIYXNoU2V0PFNWR1Vz
ZUVsZW1lbnQ+IG1fdXNlRWxlbWVudHNXaXRoUGVuZGluZ1NoYWRvd1RyZWVVcGRhdGU7CiAgICAg
Ym9vbCBtX2FyZUFuaW1hdGlvbnNQYXVzZWQ7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmNwcAppbmRleCBmYTc1MzkyODc4MmEzYzQzZDNhMjQyMjJiOGY0ZmIzNzcxMTEx
MTEzLi5kMWRlNGZkYWZmYTNiNWUxOTdkYTFhNjY5ODRiNDQzNWE3YjQ3NGNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC05OSw3ICs5OSw3IEBAIE5vZGU6Okluc2VydGVk
SW50b0FuY2VzdG9yUmVzdWx0IFNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKElu
c2VydGlvblR5CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3Rvcihp
bnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7CiAgICAgaWYgKGluc2VydGlvblR5
cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkgewogICAgICAgICBpZiAobV9zaGFkb3dUcmVlTmVlZHNV
cGRhdGUpCi0gICAgICAgICAgICBkb2N1bWVudCgpLmFkZFNWR1VzZUVsZW1lbnQoKnRoaXMpOwor
ICAgICAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkuYWRkVXNlRWxlbWVu
dFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7CiAgICAgICAgIGludmFsaWRhdGVT
aGFkb3dUcmVlKCk7CiAgICAgICAgIC8vIEZJWE1FOiBNb3ZlIGJhY2sgdGhlIGNhbGwgdG8gdXBk
YXRlRXh0ZXJuYWxEb2N1bWVudCgpIGhlcmUgb25jZSBub3RpZnlGaW5pc2hlZCBpcyBtYWRlIGFs
d2F5cyBhc3luYy4KICAgICAgICAgcmV0dXJuIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpO
ZWVkc1Bvc3RJbnNlcnRpb25DYWxsYmFjazsKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFNWR1Vz
ZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENv
bnRhaW5lck5vZGUmCiAgICAgLy8gYW5kIFNWR1VzZUVsZW1lbnQ6OnVwZGF0ZUV4dGVybmFsRG9j
dW1lbnQgd2hpY2ggY2FsbHMgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKS4KICAgICBpZiAocmVtb3Zh
bFR5cGUuZGlzY29ubmVjdGVkRnJvbURvY3VtZW50KSB7CiAgICAgICAgIGlmIChtX3NoYWRvd1Ry
ZWVOZWVkc1VwZGF0ZSkKLSAgICAgICAgICAgIGRvY3VtZW50KCkucmVtb3ZlU1ZHVXNlRWxlbWVu
dCgqdGhpcyk7CisgICAgICAgICAgICBkb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5y
ZW1vdmVVc2VFbGVtZW50V2l0aFBlbmRpbmdTaGFkb3dUcmVlVXBkYXRlKCp0aGlzKTsKICAgICB9
CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBl
LCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVj
dGVkRnJvbURvY3VtZW50KSB7CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50
Ojp1cGRhdGVTaGFkb3dUcmVlKCkKIAogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIGRvY3VtZW50KCkucmVtb3ZlU1ZHVXNlRWxlbWVudCgqdGhpcyk7CisgICAg
ZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVtb3ZlVXNlRWxlbWVudFdpdGhQZW5k
aW5nU2hhZG93VHJlZVVwZGF0ZSgqdGhpcyk7CiAKICAgICBTdHJpbmcgdGFyZ2V0SUQ7CiAgICAg
YXV0byogdGFyZ2V0ID0gZmluZFRhcmdldCgmdGFyZ2V0SUQpOwpAQCAtNTI5LDcgKzUyOSw3IEBA
IHZvaWQgU1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZVNoYWRvd1RyZWUoKQogICAgIGludmFsaWRh
dGVTdHlsZUFuZFJlbmRlcmVyc0ZvclN1YnRyZWUoKTsKICAgICBpbnZhbGlkYXRlRGVwZW5kZW50
U2hhZG93VHJlZXMoKTsKICAgICBpZiAoaXNDb25uZWN0ZWQoKSkKLSAgICAgICAgZG9jdW1lbnQo
KS5hZGRTVkdVc2VFbGVtZW50KCp0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdF
eHRlbnNpb25zKCkuYWRkVXNlRWxlbWVudFdpdGhQZW5kaW5nU2hhZG93VHJlZVVwZGF0ZSgqdGhp
cyk7CiB9CiAKIHZvaWQgU1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZURlcGVuZGVudFNoYWRvd1Ry
ZWVzKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>