<?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>220851</bug_id>
          
          <creation_ts>2021-01-22 02:25:01 -0800</creation_ts>
          <short_desc>Finish introduction of RenderLayerScrollableArea: remove remaining glue code from RenderLayer</short_desc>
          <delta_ts>2021-01-25 14:32:19 -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>Layout and Rendering</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>
          
          <blocked>60305</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>samuel_white</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1721529</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2021-01-22 02:25:01 -0800</bug_when>
    <thetext>Finish introduction of RenderLayerScrollableArea: remove remaining glue code from RenderLayer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721533</commentid>
    <comment_count>1</comment_count>
      <attachid>418124</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2021-01-22 02:34:01 -0800</bug_when>
    <thetext>Created attachment 418124
Patch, v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721698</commentid>
    <comment_count>2</comment_count>
      <attachid>418174</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2021-01-22 13:14:25 -0800</bug_when>
    <thetext>Created attachment 418174
Patch, v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721726</commentid>
    <comment_count>3</comment_count>
      <attachid>418174</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-22 14:50:05 -0800</bug_when>
    <thetext>Comment on attachment 418174
Patch, v2

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

&gt; Source/WebCore/page/EventHandler.cpp:1499
&gt; +                    return layer-&gt;renderer().shouldPlaceBlockDirectionScrollbarOnLeft() ? southWestResizeCursor() : southEastResizeCursor();

Isn&apos;t layer-&gt;renderer() just renderer?

&gt; Source/WebCore/page/FrameView.cpp:2601
&gt; +            if (auto* scrollableLayer = renderView-&gt;layer()-&gt;scrollableArea())
&gt; +                scrollableLayer-&gt;updateLayerPositionsAfterDocumentScroll();

Is it a scrollableLayer or scrollableArea? Pick one! I think all of these would read better as layerScrollableArea or just scrollableArea</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721754</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2021-01-22 15:50:09 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Isn&apos;t layer-&gt;renderer() just renderer?
Fixed.

&gt; &gt; Source/WebCore/page/FrameView.cpp:2601
&gt; &gt; +            if (auto* scrollableLayer = renderView-&gt;layer()-&gt;scrollableArea())
&gt; &gt; +                scrollableLayer-&gt;updateLayerPositionsAfterDocumentScroll();
&gt; 
&gt; Is it a scrollableLayer or scrollableArea? Pick one! I think all of these
&gt; would read better as layerScrollableArea or just scrollableArea
Okay, I propose to prepare a follow-up patch that consistently uses the &apos;scrollableArea&apos; naming scheme instead of &apos;scrollableLayer&apos; or variations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721771</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2021-01-22 16:18:40 -0800</bug_when>
    <thetext>As discused on Slack, I&apos;ll prepare another polished version of the patch including the variable renames (s/scrollableLayer/scrollableArea/ in many places).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721773</commentid>
    <comment_count>6</comment_count>
      <attachid>418195</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2021-01-22 16:20:05 -0800</bug_when>
    <thetext>Created attachment 418195
Patch, v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722281</commentid>
    <comment_count>7</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2021-01-25 14:31:19 -0800</bug_when>
    <thetext>Committed r271814: &lt;https://trac.webkit.org/changeset/r271814&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722283</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-25 14:32:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/73588759&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418124</attachid>
            <date>2021-01-22 02:34:01 -0800</date>
            <delta_ts>2021-01-22 13:14:19 -0800</delta_ts>
            <desc>Patch, v1</desc>
            <filename>bug-220851-20210122113359.patch</filename>
            <type>text/plain</type>
            <size>45049</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFmMmQzMThkODQzNDkz
NmU1MDhiMTFjN2I4ZTFkODg1YWYyZDYwZC4uMGRmM2E2OTFiMTUxMWY3YTkxMzhlMjQ2ZDA0YjYy
NzFkZWNhNDMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTAxLTIyICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIEZpbmlz
aCBpbnRyb2R1Y3Rpb24gb2YgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTogcmVtb3ZlIHJlbWFp
bmluZyBnbHVlIGNvZGUgZnJvbSBSZW5kZXJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwODUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBsYXN0IHJlbWFpbmluZyBnbHVlIGNv
ZGUgZnJvbSBSZW5kZXJMYXllciwgdGhhdCB3YXMgYWRkZWQKKyAgICAgICAgaW4gcjI3MTU1OSB0
byBtaW5pbWl6ZSB0aGUgcGF0Y2ggc2l6ZS4gQWZ0ZXIgdGhpcyBwYXRjaCBhbGwgY2FsbCBzaXRl
cworICAgICAgICB1c2UgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYSBkaXJlY3RseSwgcmVtb3Zp
bmcgdGhlIG5lZWQgZm9yIHByb3h5CisgICAgICAgIG1ldGhvZHMgaW4gUmVuZGVyTGF5ZXIgdGhh
dCBmb3J3YXJkIHRvIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuCisKKyAgICAgICAgVGhlIGRl
Y2FkZSBvbGQgYnVnIDYwMzA1IChTZXBhcmF0ZSBzY3JvbGxpbmcgY29kZSBvdXQgb2YgUmVuZGVy
TGF5ZXIpCisgICAgICAgIGlzIGZpbmFsbHkgY2xvc2VkLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6c2Nyb2xsVG8gY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudDo6cmVuZGVyTWFycXVl
ZSBjb25zdCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlTGF5ZXJQb3NpdGlv
bnNBZnRlclNjcm9sbGluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpzY3JvbGxMZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6c2Nyb2xsVG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwV2hl
ZWxFdmVudE1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRTY3JvbGxM
ZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2V0U2Nyb2xsVG9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojp2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbExheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6bG9naWNhbFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OnBhblNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbFBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUJhY2tncm91
bmRJc0tub3duVG9CZU9ic2N1cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b3Zl
cmZsb3dDbGlwUmVjdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21w
dXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29uc3RyYWluaW5nUmVjdEZvclN0aWNreVBvc2l0aW9uIGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbE9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJh
ck9uTGVmdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
bWFycXVlZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckRvY3VtZW50U2Nyb2xsKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXRQb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhblNjcm9sbEZyb21Qb2lu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUG9zaXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9s
bGluZ01heVJldmVhbEJhY2tncm91bmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6Omhhc1Njcm9sbGFibGVIb3Jpem9udGFsT3ZlcmZsb3cgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhhc1Njcm9sbGFibGVWZXJ0
aWNhbE92ZXJmbG93IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjp2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGwpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU92ZXJmbG93
VGlsZWRCYWNraW5nQ292ZXJhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNr
aW5nOjpjb21wdXRlUGFyZW50R3JhcGhpY3NMYXllclJlY3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNsaXBwaW5nU3RhY2tMYXllckdlb21ldHJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cmVxdWlyZXNIb3Jpem9u
dGFsU2Nyb2xsYmFyTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpyZXF1aXJlc1Njcm9sbENvcm5lckxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBvc2l0aW9uT3ZlcmZsb3dDb250
cm9sc0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENv
bnRlbnRzTmVlZERpc3BsYXlJblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWFycXVlZTo6dGltZXJGaXJlZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNjcm9sbCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxvZ2ljYWxTY3JvbGwpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKwogMjAyMS0wMS0xOSAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBDb250
aW51ZSByZW1vdmluZyBnbHVlIGNvZGUgZnJvbSBSZW5kZXJMYXllciB0aGF0IHdhcyByZWNlbnRs
eSBhZGRlZCBpbiByMjcxNTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjFjNGYw
YTdhNTczMzFhYzViOTQ1YzJkOWQ3Y2UxZDA1MmVlZDAyOS4uY2UxODE1MGYyMDk0Y2ZjNmFkNTYx
NTQxOTE3ZGY1ZDFmNjEzZTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDIxLTAxLTIyICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBp
Z2FsaWEuY29tPgorCisgICAgICAgIEZpbmlzaCBpbnRyb2R1Y3Rpb24gb2YgUmVuZGVyTGF5ZXJT
Y3JvbGxhYmxlQXJlYTogcmVtb3ZlIHJlbWFpbmluZyBnbHVlIGNvZGUgZnJvbSBSZW5kZXJMYXll
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwODUx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3Zl
IHRoZSBsYXN0IHJlbWFpbmluZyBnbHVlIGNvZGUgZnJvbSBSZW5kZXJMYXllciwgdGhhdCB3YXMg
YWRkZWQKKyAgICAgICAgaW4gcjI3MTU1OSB0byBtaW5pbWl6ZSB0aGUgcGF0Y2ggc2l6ZS4gQWZ0
ZXIgdGhpcyBwYXRjaCBhbGwgY2FsbCBzaXRlcworICAgICAgICB1c2UgUmVuZGVyTGF5ZXJTY3Jv
bGxhYmxlQXJlYSBkaXJlY3RseSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIHByb3h5CisgICAgICAg
IG1ldGhvZHMgaW4gUmVuZGVyTGF5ZXIgdGhhdCBmb3J3YXJkIHRvIFJlbmRlckxheWVyU2Nyb2xs
YWJsZUFyZWEuCisKKyAgICAgICAgVGhlIGRlY2FkZSBvbGQgYnVnIDYwMzA1IChTZXBhcmF0ZSBz
Y3JvbGxpbmcgY29kZSBvdXQgb2YgUmVuZGVyTGF5ZXIpCisgICAgICAgIGlzIGZpbmFsbHkgY2xv
c2VkLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBE
T00vRE9NSFRNTC5tbToKKyAgICAgICAgKC1bRE9NSFRNTEVsZW1lbnQgc2Nyb2xsWE9mZnNldF0p
OgorICAgICAgICAoLVtET01IVE1MRWxlbWVudCBzY3JvbGxZT2Zmc2V0XSk6CisgICAgICAgICgt
W0RPTUhUTUxFbGVtZW50IHNldFNjcm9sbFhPZmZzZXQ6c2Nyb2xsWU9mZnNldDphZGp1c3RGb3JJ
T1NDYXJldDpdKToKKwogMjAyMS0wMS0yMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgW0FwcGxlIFBheV0gdXNlIHRoZSBmaXJzdCBpdGVtIGluIGBzaGlwcGlu
Z09wdGlvbnNgIGV2ZW4gd2hlbiBpdCdzIG5vdCBgc2VsZWN0ZWRgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAppbmRleCA0ODcyNzAzZTNiZjljMjdjOGVhYTYwMTRiZDgyZWRjMGQxZDI1MTdhLi44NTcwOWQ4
NTM0MDcxMzVkZjJhODAzOTJiZTMzMGVhYThjOTlmN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTM5MjAsNyArMzkyMCw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2Ny
b2xsVG8oY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBGSVhNRTogaXMgcG9pbnQgYSBTY3JvbGxPZmZzZXQgb3IgU2Nyb2xsUG9zaXRpb24/IFRl
c3QgaW4gUlRMIG92ZXJmbG93LgotICAgIGJveC5sYXllcigpLT5lbnN1cmVMYXllclNjcm9sbGFi
bGVBcmVhKCktPnNjcm9sbFRvT2Zmc2V0KHBvaW50KTsKKyAgICBBU1NFUlQoYm94LmxheWVyKCkp
OworICAgIEFTU0VSVChib3gubGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSk7CisgICAgYm94Lmxh
eWVyKCktPnNjcm9sbGFibGVBcmVhKCktPnNjcm9sbFRvT2Zmc2V0KHBvaW50KTsKIH0KIAogI2lm
IEVOQUJMRShNQVRITUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJx
dWVlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5j
cHAKaW5kZXggMGFkZjdkMTY0ZTJlNGUyYjBmYjExM2YwM2ExYmQzYTczYzI3MTI3NS4uMmY4Y2I2
OWJlMzcwZjRmYjZhMjRkZDYwMzAyNDg1NzhjNzUwODM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNs
dWRlICJSZW5kZXJNYXJxdWVlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4K
IApAQCAtMTc1LDcgKzE3NiwxMCBAQCBSZW5kZXJNYXJxdWVlKiBIVE1MTWFycXVlZUVsZW1lbnQ6
OnJlbmRlck1hcnF1ZWUoKSBjb25zdAogewogICAgIGlmICghcmVuZGVyZXIoKSB8fCAhcmVuZGVy
ZXIoKS0+aGFzTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHJl
bmRlckJveE1vZGVsT2JqZWN0KCktPmxheWVyKCktPm1hcnF1ZWUoKTsKKyAgICBhdXRvKiBzY3Jv
bGxhYmxlTGF5ZXIgPSByZW5kZXJCb3hNb2RlbE9iamVjdCgpLT5sYXllcigpLT5zY3JvbGxhYmxl
QXJlYSgpOworICAgIGlmICghc2Nyb2xsYWJsZUxheWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gc2Nyb2xsYWJsZUxheWVyLT5tYXJxdWVlKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2Zjg2
ZmEyODY1ZDFlNjI3NjdhMDM3Yjk0MGMwYzJmMjUzODU0Y2I1Li5kZTljNzM3NWY4YzI5OWYyNjhl
ZTczZWQ4YjI2YTMwZWJmNjg0MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CkBAIC0xNDk2LDcgKzE0OTYsNyBAQCBPcHRpb25hbDxDdXJzb3I+IEV2ZW50SGFuZGxlcjo6c2Vs
ZWN0Q3Vyc29yKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBzaAogICAgICAgICAg
ICAgaWYgKGF1dG8qIGxheWVyID0gZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4oKnJl
bmRlcmVyKS5sYXllcigpKSB7CiAgICAgICAgICAgICAgICAgaW5SZXNpemVyID0gbGF5ZXItPmlz
UG9pbnRJblJlc2l6ZUNvbnRyb2wocm91bmRlZEludFBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkp
KTsKICAgICAgICAgICAgICAgICBpZiAoaW5SZXNpemVyKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbGF5ZXItPnNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSA/
IHNvdXRoV2VzdFJlc2l6ZUN1cnNvcigpIDogc291dGhFYXN0UmVzaXplQ3Vyc29yKCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsYXllci0+cmVuZGVyZXIoKS5zaG91bGRQbGFjZUJsb2Nr
RGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgPyBzb3V0aFdlc3RSZXNpemVDdXJzb3IoKSA6IHNv
dXRoRWFzdFJlc2l6ZUN1cnNvcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3NmFlNmY5OGJiNWNkNjNlZjkzNmU0NjUwYWQ0ZWIw
MDQ3NzgxNjliLi4yNzI0NDZhYTNmODgyZjcwZDNlYWM3YTA1YmRkODEzMTZlZmFlMTA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yNTk3LDcgKzI1OTcsOCBAQCB2b2lkIEZyYW1l
Vmlldzo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGluZygpCiAgICAgaWYgKCFsYXlv
dXRDb250ZXh0KCkuaXNMYXlvdXROZXN0ZWQoKSAmJiBoYXNWaWV3cG9ydENvbnN0cmFpbmVkT2Jq
ZWN0cygpKSB7CiAgICAgICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVu
ZGVyVmlldygpKSB7CiAgICAgICAgICAgICB1cGRhdGVXaWRnZXRQb3NpdGlvbnMoKTsKLSAgICAg
ICAgICAgIHJlbmRlclZpZXctPmxheWVyKCktPnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJEb2N1
bWVudFNjcm9sbCgpOworICAgICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVMYXllciA9IHJl
bmRlclZpZXctPmxheWVyKCktPnNjcm9sbGFibGVBcmVhKCkpCisgICAgICAgICAgICAgICAgc2Ny
b2xsYWJsZUxheWVyLT51cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyRG9jdW1lbnRTY3JvbGwoKTsK
ICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKaW5kZXggYTc5ZWRlMTNiN2VlY2I1ZTA2YTE2NTI1NGU5N2RiYTMwNzIyMTM3
Ni4uZTQ2Y2IyM2ZiZWRhMzEzYTEyZWI1ZTYyMzQzZjhmYzdmNjAyOTkzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTM0OSw3ICszNDksOCBA
QCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5
b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLAogCiAgICAgaWYgKCFzdHlsZSgpLmF1dG9XcmFwKCkg
JiYgY2hpbGRyZW5JbmxpbmUoKSkgewogICAgICAgICAvLyBBIGhvcml6b250YWwgbWFycXVlZSB3
aXRoIGlubGluZSBjaGlsZHJlbiBoYXMgbm8gbWluaW11bSB3aWR0aC4KLSAgICAgICAgaWYgKGxh
eWVyKCkgJiYgbGF5ZXIoKS0+bWFycXVlZSgpICYmIGxheWVyKCktPm1hcnF1ZWUoKS0+aXNIb3Jp
em9udGFsKCkpCisgICAgICAgIGF1dG8qIHNjcm9sbGFibGVMYXllciA9IGxheWVyKCkgPyBsYXll
cigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKHNjcm9sbGFibGVM
YXllciAmJiBzY3JvbGxhYmxlTGF5ZXItPm1hcnF1ZWUoKSAmJiBzY3JvbGxhYmxlTGF5ZXItPm1h
cnF1ZWUoKS0+aXNIb3Jpem9udGFsKCkpCiAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSAw
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAwNzVl
MjdhZThiYjUzMDJjYWVmMmM4ZTMzZjFhNGNhNzI1YjViMTUwLi40NmE1OGU1NTg3ODljNjJiZWYz
NDU0NWY4NzJmNGE5YjJlZDhmNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcApAQCAtMzIwLDEwICszMjAsMTIgQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdl
KFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUKICAgICAv
LyBJZiBvdXIgem9vbSBmYWN0b3IgY2hhbmdlcyBhbmQgd2UgaGF2ZSBhIGRlZmluZWQgc2Nyb2xs
TGVmdC9Ub3AsIHdlIG5lZWQgdG8gYWRqdXN0IHRoYXQgdmFsdWUgaW50byB0aGUKICAgICAvLyBu
ZXcgem9vbWVkIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpICYm
IGxheWVyKCkgJiYgb2xkU3R5bGUgJiYgb2xkU3R5bGUtPmVmZmVjdGl2ZVpvb20oKSAhPSBuZXdT
dHlsZS5lZmZlY3RpdmVab29tKCkpIHsKLSAgICAgICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9z
aXRpb24gPSBsYXllcigpLT5zY3JvbGxQb3NpdGlvbigpOwotICAgICAgICBmbG9hdCB6b29tU2Nh
bGVGYWN0b3IgPSBuZXdTdHlsZS5lZmZlY3RpdmVab29tKCkgLyBvbGRTdHlsZS0+ZWZmZWN0aXZl
Wm9vbSgpOwotICAgICAgICBzY3JvbGxQb3NpdGlvbi5zY2FsZSh6b29tU2NhbGVGYWN0b3IpOwot
ICAgICAgICBsYXllcigpLT5zZXRQb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRp
b24pOworICAgICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIoKS0+c2Nyb2xs
YWJsZUFyZWEoKSkgeworICAgICAgICAgICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24g
PSBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgICAgICBmbG9hdCB6
b29tU2NhbGVGYWN0b3IgPSBuZXdTdHlsZS5lZmZlY3RpdmVab29tKCkgLyBvbGRTdHlsZS0+ZWZm
ZWN0aXZlWm9vbSgpOworICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24uc2NhbGUoem9vbVNjYWxl
RmFjdG9yKTsKKyAgICAgICAgICAgIHNjcm9sbGFibGVMYXllci0+c2V0UG9zdExheW91dFNjcm9s
bFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIE91
ciBvcGFxdWVuZXNzIG1pZ2h0IGhhdmUgY2hhbmdlZCB3aXRob3V0IHRyaWdnZXJpbmcgbGF5b3V0
LgpAQCAtNTcyLDEyICs1NzQsMTQgQEAgaW50IFJlbmRlckJveDo6c2Nyb2xsSGVpZ2h0KCkgY29u
c3QKIAogaW50IFJlbmRlckJveDo6c2Nyb2xsTGVmdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhh
c092ZXJmbG93Q2xpcCgpICYmIGxheWVyKCkgPyBsYXllcigpLT5zY3JvbGxQb3NpdGlvbigpLngo
KSA6IDA7CisgICAgYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIoKSA/IGxheWVyKCktPnNj
cm9sbGFibGVBcmVhKCkgOiBudWxscHRyOworICAgIHJldHVybiAoaGFzT3ZlcmZsb3dDbGlwKCkg
JiYgc2Nyb2xsYWJsZUxheWVyKSA/IHNjcm9sbGFibGVMYXllci0+c2Nyb2xsUG9zaXRpb24oKS54
KCkgOiAwOwogfQogCiBpbnQgUmVuZGVyQm94OjpzY3JvbGxUb3AoKSBjb25zdAogewotICAgIHJl
dHVybiBoYXNPdmVyZmxvd0NsaXAoKSAmJiBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsUG9zaXRp
b24oKS55KCkgOiAwOworICAgIGF1dG8qIHNjcm9sbGFibGVMYXllciA9IGxheWVyKCkgPyBsYXll
cigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gKGhhc092ZXJmbG93
Q2xpcCgpICYmIHNjcm9sbGFibGVMYXllcikgPyBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbFBvc2l0
aW9uKCkueSgpIDogMDsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OnJlc2V0TG9naWNhbEhlaWdodEJl
Zm9yZUxheW91dElmTmVlZGVkKCkKQEAgLTU4NiwzOCArNTkwLDQyIEBAIHZvaWQgUmVuZGVyQm94
OjpyZXNldExvZ2ljYWxIZWlnaHRCZWZvcmVMYXlvdXRJZk5lZWRlZCgpCiAgICAgICAgIHNldExv
Z2ljYWxIZWlnaHQoMF9sdSk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldHVwV2hlZWxFdmVudE1vbml0
b3IoUmVuZGVyTGF5ZXImIGxheWVyKQorc3RhdGljIHZvaWQgc2V0dXBXaGVlbEV2ZW50TW9uaXRv
cihSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlTGF5ZXIpCiB7Ci0gICAgUGFn
ZSYgcGFnZSA9IGxheWVyLnJlbmRlcmVyKCkucGFnZSgpOworICAgIFBhZ2UmIHBhZ2UgPSBzY3Jv
bGxhYmxlTGF5ZXIubGF5ZXIoKS5yZW5kZXJlcigpLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UuaXNN
b25pdG9yaW5nV2hlZWxFdmVudHMoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8qIHNjcm9s
bGFibGVMYXllciA9IGxheWVyLnNjcm9sbGFibGVBcmVhKCk7Ci0gICAgQVNTRVJUKHNjcm9sbGFi
bGVMYXllcik7Ci0gICAgc2Nyb2xsYWJsZUxheWVyLT5zY3JvbGxBbmltYXRvcigpLnNldFdoZWVs
RXZlbnRUZXN0TW9uaXRvcihwYWdlLndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKTsKKyAgICBzY3Jv
bGxhYmxlTGF5ZXIuc2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFn
ZS53aGVlbEV2ZW50VGVzdE1vbml0b3IoKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpzZXRTY3Jv
bGxMZWZ0KGludCBuZXdMZWZ0LCBjb25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgaWYgKCFoYXNPdmVyZmxvd0NsaXAoKSB8fCAhbGF5ZXIoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIHNldHVwV2hlZWxFdmVudE1vbml0b3IoKmxheWVyKCkpOwotICAgIGxh
eWVyKCktPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsVG9YUG9zaXRpb24obmV3
TGVmdCwgb3B0aW9ucyk7CisgICAgYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIoKS0+c2Ny
b2xsYWJsZUFyZWEoKTsKKyAgICBBU1NFUlQoc2Nyb2xsYWJsZUxheWVyKTsKKyAgICBzZXR1cFdo
ZWVsRXZlbnRNb25pdG9yKCpzY3JvbGxhYmxlTGF5ZXIpOworICAgIHNjcm9sbGFibGVMYXllci0+
c2Nyb2xsVG9YUG9zaXRpb24obmV3TGVmdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94
OjpzZXRTY3JvbGxUb3AoaW50IG5ld1RvcCwgY29uc3QgU2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRp
b25zJiBvcHRpb25zKQogewogICAgIGlmICghaGFzT3ZlcmZsb3dDbGlwKCkgfHwgIWxheWVyKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBzZXR1cFdoZWVsRXZlbnRNb25pdG9yKCpsYXllcigpKTsK
LSAgICBsYXllcigpLT5lbnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCktPnNjcm9sbFRvWVBvc2l0
aW9uKG5ld1RvcCwgb3B0aW9ucyk7CisgICAgYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIo
KS0+c2Nyb2xsYWJsZUFyZWEoKTsKKyAgICBBU1NFUlQoc2Nyb2xsYWJsZUxheWVyKTsKKyAgICBz
ZXR1cFdoZWVsRXZlbnRNb25pdG9yKCpzY3JvbGxhYmxlTGF5ZXIpOworICAgIHNjcm9sbGFibGVM
YXllci0+c2Nyb2xsVG9ZUG9zaXRpb24obmV3VG9wLCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZW5k
ZXJCb3g6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBwb3NpdGlvbiwg
Y29uc3QgU2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICgh
aGFzT3ZlcmZsb3dDbGlwKCkgfHwgIWxheWVyKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXR1
cFdoZWVsRXZlbnRNb25pdG9yKCpsYXllcigpKTsKLSAgICBsYXllcigpLT5lbnN1cmVMYXllclNj
cm9sbGFibGVBcmVhKCktPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uLCBvcHRpb25zKTsKKyAg
ICBhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBsYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpOworICAg
IEFTU0VSVChzY3JvbGxhYmxlTGF5ZXIpOworICAgIHNldHVwV2hlZWxFdmVudE1vbml0b3IoKnNj
cm9sbGFibGVMYXllcik7CisgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRTY3JvbGxQb3NpdGlvbihw
b3NpdGlvbiwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCkgY29uc3QKQEAgLTgzNSwxMiArODQzLDE4IEBAIGJvb2wgUmVuZGVyQm94OjppbmNsdWRlSG9y
aXpvbnRhbFNjcm9sbGJhclNpemUoKSBjb25zdAogCiBpbnQgUmVuZGVyQm94Ojp2ZXJ0aWNhbFNj
cm9sbGJhcldpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5jbHVkZVZlcnRpY2FsU2Nyb2xs
YmFyU2l6ZSgpID8gbGF5ZXIoKS0+dmVydGljYWxTY3JvbGxiYXJXaWR0aCgpIDogMDsKKyAgICBh
dXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEo
KSA6IG51bGxwdHI7CisgICAgaWYgKCFzY3JvbGxhYmxlTGF5ZXIpCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiBpbmNsdWRlVmVydGljYWxTY3JvbGxiYXJTaXplKCkgPyBzY3JvbGxhYmxl
TGF5ZXItPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKSA6IDA7CiB9CiAKIGludCBSZW5kZXJCb3g6
Omhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBpbmNsdWRl
SG9yaXpvbnRhbFNjcm9sbGJhclNpemUoKSA/IGxheWVyKCktPmhvcml6b250YWxTY3JvbGxiYXJI
ZWlnaHQoKSA6IDA7CisgICAgYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIoKSA/IGxheWVy
KCktPnNjcm9sbGFibGVBcmVhKCkgOiBudWxscHRyOworICAgIGlmICghc2Nyb2xsYWJsZUxheWVy
KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gaW5jbHVkZUhvcml6b250YWxTY3JvbGxi
YXJTaXplKCkgPyBzY3JvbGxhYmxlTGF5ZXItPmhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoKSA6
IDA7CiB9CiAKIGludCBSZW5kZXJCb3g6OmludHJpbnNpY1Njcm9sbGJhckxvZ2ljYWxXaWR0aCgp
IGNvbnN0CkBAIC04NjMsOCArODc3LDggQEAgaW50IFJlbmRlckJveDo6aW50cmluc2ljU2Nyb2xs
YmFyTG9naWNhbFdpZHRoKCkgY29uc3QKIAogYm9vbCBSZW5kZXJCb3g6OnNjcm9sbExheWVyKFNj
cm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBm
bG9hdCBtdWx0aXBsaWVyLCBFbGVtZW50Kiogc3RvcEVsZW1lbnQpCiB7Ci0gICAgUmVuZGVyTGF5
ZXIqIGJveExheWVyID0gbGF5ZXIoKTsKLSAgICBpZiAoYm94TGF5ZXIgJiYgYm94TGF5ZXItPnNj
cm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVyKSkgeworICAgIGF1dG8qIGJv
eExheWVyU2Nyb2xsYWJsZSA9IGxheWVyKCkgPyBsYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpIDog
bnVsbHB0cjsKKyAgICBpZiAoYm94TGF5ZXJTY3JvbGxhYmxlICYmIGJveExheWVyU2Nyb2xsYWJs
ZS0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIG11bHRpcGxpZXIpKSB7CiAgICAgICAg
IGlmIChzdG9wRWxlbWVudCkKICAgICAgICAgICAgICpzdG9wRWxlbWVudCA9IGVsZW1lbnQoKTsK
IApAQCAtODk2LDEyICs5MTAsMTMgQEAgYm9vbCBSZW5kZXJCb3g6OmxvZ2ljYWxTY3JvbGwoU2Ny
b2xsTG9naWNhbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXQKICAgICAKICAg
ICBSZW5kZXJMYXllciogbCA9IGxheWVyKCk7CiAgICAgaWYgKGwpIHsKKyAgICAgICAgYXV0byog
Ym94TGF5ZXJTY3JvbGxhYmxlID0gbC0+c2Nyb2xsYWJsZUFyZWEoKTsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICAgICAgLy8gT24gTWFjIG9ubHkgd2UgcmVzZXQgdGhlIGlubGluZSBkaXJlY3Rp
b24gcG9zaXRpb24gd2hlbiBkb2luZyBhIGRvY3VtZW50IHNjcm9sbCAoZS5nLiwgaGl0dGluZyBI
b21lL0VuZCkuCiAgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBTY3JvbGxCeURvY3VtZW50KQot
ICAgICAgICAgICAgc2Nyb2xsZWQgPSBsLT5zY3JvbGwobG9naWNhbFRvUGh5c2ljYWwoU2Nyb2xs
SW5saW5lRGlyZWN0aW9uQmFja3dhcmQsIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCksIHN0eWxl
KCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSksIFNjcm9sbEJ5RG9jdW1lbnQsIG11bHRp
cGxpZXIpOworICAgICAgICAgICAgc2Nyb2xsZWQgPSBib3hMYXllclNjcm9sbGFibGUtPnNjcm9s
bChsb2dpY2FsVG9QaHlzaWNhbChTY3JvbGxJbmxpbmVEaXJlY3Rpb25CYWNrd2FyZCwgaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgp
KSwgU2Nyb2xsQnlEb2N1bWVudCwgbXVsdGlwbGllcik7CiAjZW5kaWYKLSAgICAgICAgaWYgKGwt
PnNjcm9sbChsb2dpY2FsVG9QaHlzaWNhbChkaXJlY3Rpb24sIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCksIHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSksIGdyYW51bGFyaXR5
LCBtdWx0aXBsaWVyKSkKKyAgICAgICAgaWYgKGJveExheWVyU2Nyb2xsYWJsZS0+c2Nyb2xsKGxv
Z2ljYWxUb1BoeXNpY2FsKGRpcmVjdGlvbiwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgc3R5
bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSwgZ3JhbnVsYXJpdHksIG11bHRpcGxp
ZXIpKQogICAgICAgICAgICAgc2Nyb2xsZWQgPSB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYg
KHNjcm9sbGVkKSB7CkBAIC0xMDI3LDggKzEwNDIsOCBAQCBSZW5kZXJCb3gqIFJlbmRlckJveDo6
ZmluZEF1dG9zY3JvbGxhYmxlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAKIHZvaWQgUmVuZGVy
Qm94OjpwYW5TY3JvbGwoY29uc3QgSW50UG9pbnQmIHNvdXJjZSkKIHsKLSAgICBpZiAobGF5ZXIo
KSkKLSAgICAgICAgbGF5ZXIoKS0+cGFuU2Nyb2xsRnJvbVBvaW50KHNvdXJjZSk7CisgICAgaWYg
KGF1dG8qIHNjcm9sbGFibGVMYXllciA9IGxheWVyKCkgPyBsYXllcigpLT5zY3JvbGxhYmxlQXJl
YSgpIDogbnVsbHB0cikKKyAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5wYW5TY3JvbGxGcm9tUG9p
bnQoc291cmNlKTsKIH0KIAogYm9vbCBSZW5kZXJCb3g6OmNhblVzZU92ZXJsYXlTY3JvbGxiYXJz
KCkgY29uc3QKQEAgLTEwNTcsNyArMTA3MiwxMSBAQCBTY3JvbGxQb3NpdGlvbiBSZW5kZXJCb3g6
OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgMCwgMCB9OwogCiAgICAg
QVNTRVJUKGhhc0xheWVyKCkpOwotICAgIHJldHVybiBsYXllcigpLT5zY3JvbGxQb3NpdGlvbigp
OworICAgIGF1dG8qIHNjcm9sbGFibGVMYXllciA9IGxheWVyKCktPnNjcm9sbGFibGVBcmVhKCk7
CisgICAgaWYgKCFzY3JvbGxhYmxlTGF5ZXIpCisgICAgICAgIHJldHVybiB7IDAsIDAgfTsKKwor
ICAgIHJldHVybiBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbFBvc2l0aW9uKCk7CiB9CiAKIExheW91
dFNpemUgUmVuZGVyQm94OjpjYWNoZWRTaXplRm9yT3ZlcmZsb3dDbGlwKCkgY29uc3QKQEAgLTE2
MjEsOSArMTY0MCwxMCBAQCBib29sIFJlbmRlckJveDo6Y29tcHV0ZUJhY2tncm91bmRJc0tub3du
VG9CZU9ic2N1cmVkKGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZgogICAgIGlmICghZ2V0QmFj
a2dyb3VuZFBhaW50ZWRFeHRlbnQocGFpbnRPZmZzZXQsIGJhY2tncm91bmRSZWN0KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+c2Nyb2xs
aW5nTWF5UmV2ZWFsQmFja2dyb3VuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICBp
ZiAoYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIoKSA/IGxheWVyKCktPnNjcm9sbGFibGVB
cmVhKCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbGlu
Z01heVJldmVhbEJhY2tncm91bmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CiAgICAgcmV0dXJuIGZvcmVncm91bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChiYWNrZ3JvdW5k
UmVjdCwgYmFja2dyb3VuZE9ic2N1cmF0aW9uVGVzdE1heERlcHRoKTsKIH0KIApAQCAtMTk0MCwx
MCArMTk2MCwxMCBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6b3ZlcmZsb3dDbGlwUmVjdChjb25z
dCBMYXlvdXRQb2ludCYgbG9jYXRpb24sIFJlbmRlckZyYWdtZQogICAgIGNsaXBSZWN0LnNldFNp
emUoY2xpcFJlY3Quc2l6ZSgpIC0gTGF5b3V0U2l6ZShib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdo
dCgpLCBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpKSk7CiAKICAgICAvLyBTdWJ0cmFjdCBv
dXQgc2Nyb2xsYmFycyBpZiB3ZSBoYXZlIHRoZW0uCi0gICAgaWYgKGxheWVyKCkpIHsKKyAgICBp
ZiAoYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIoKSA/IGxheWVyKCktPnNjcm9sbGFibGVB
cmVhKCkgOiBudWxscHRyKSB7CiAgICAgICAgIGlmIChzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9u
U2Nyb2xsYmFyT25MZWZ0KCkpCi0gICAgICAgICAgICBjbGlwUmVjdC5tb3ZlKGxheWVyKCktPnZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGgocmVsZXZhbmN5KSwgMCk7Ci0gICAgICAgIGNsaXBSZWN0LmNv
bnRyYWN0KGxheWVyKCktPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgocmVsZXZhbmN5KSwgbGF5ZXIo
KS0+aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodChyZWxldmFuY3kpKTsKKyAgICAgICAgICAgIGNs
aXBSZWN0Lm1vdmUoc2Nyb2xsYWJsZUxheWVyLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKHJlbGV2
YW5jeSksIDApOworICAgICAgICBjbGlwUmVjdC5jb250cmFjdChzY3JvbGxhYmxlTGF5ZXItPnZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGgocmVsZXZhbmN5KSwgc2Nyb2xsYWJsZUxheWVyLT5ob3Jpem9u
dGFsU2Nyb2xsYmFySGVpZ2h0KHJlbGV2YW5jeSkpOwogICAgIH0KIAogICAgIHJldHVybiBjbGlw
UmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCmluZGV4IDgzODI1NmMxMWVmMjRmZTRiZmRjYTdkNmRmMTM2OTRkYmZlZDhmZDAuLjVh
MjU5MTYxYjFkY2E2MTM2ZjhhNjliZDczNzhlMjZhNzMyOWVhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNTEsNiArNTEs
NyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNr
aW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlJlbmRlck11bHRpQ29sdW1uRmxv
dy5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cu
aCIKQEAgLTQ4OSw4ICs0OTAsMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0
ZVN0aWNreVBvc2l0aW9uQ29uc3RyYWludHMoU3RpY2t5UG9zaXRpb25WaWV3cG8KICAgICAgICAg
RmxvYXRQb2ludCBjb250YWluZXJMb2NhdGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3RvciA9
IGNvbnRhaW5lclJlY3RSZWxhdGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3IubG9jYXRpb24oKSAtCiAg
ICAgICAgICAgICBGbG9hdFNpemUoZW5jbG9zaW5nQ2xpcHBpbmdCb3guYm9yZGVyTGVmdCgpICsg
ZW5jbG9zaW5nQ2xpcHBpbmdCb3gucGFkZGluZ0xlZnQoKSwKICAgICAgICAgICAgIGVuY2xvc2lu
Z0NsaXBwaW5nQm94LmJvcmRlclRvcCgpICsgZW5jbG9zaW5nQ2xpcHBpbmdCb3gucGFkZGluZ1Rv
cCgpKTsKLSAgICAgICAgaWYgKCZlbmNsb3NpbmdDbGlwcGluZ0JveCAhPSBjb250YWluaW5nQmxv
Y2spCi0gICAgICAgICAgICBjb250YWluZXJMb2NhdGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNl
c3RvciArPSBlbmNsb3NpbmdDbGlwcGluZ0xheWVyLT5zY3JvbGxPZmZzZXQoKTsKKyAgICAgICAg
aWYgKCZlbmNsb3NpbmdDbGlwcGluZ0JveCAhPSBjb250YWluaW5nQmxvY2spIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlRW5jbG9zaW5nQ2xpcHBpbmdMYXllciA9IGVuY2xvc2lu
Z0NsaXBwaW5nTGF5ZXItPnNjcm9sbGFibGVBcmVhKCkpCisgICAgICAgICAgICAgICAgY29udGFp
bmVyTG9jYXRpb25SZWxhdGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3IgKz0gc2Nyb2xsYWJsZUVuY2xv
c2luZ0NsaXBwaW5nTGF5ZXItPnNjcm9sbE9mZnNldCgpOworICAgICAgICB9CiAgICAgICAgIGNv
bnRhaW5lclJlY3RSZWxhdGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3Iuc2V0TG9jYXRpb24oY29udGFp
bmVyTG9jYXRpb25SZWxhdGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3IpOwogICAgIH0KICAgICBjb25z
dHJhaW50cy5zZXRDb250YWluaW5nQmxvY2tSZWN0KGNvbnRhaW5lclJlY3RSZWxhdGl2ZVRvU2Ny
b2xsaW5nQW5jZXN0b3IpOwpAQCAtNTA3LDggKzUxMCwxMCBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0Ojpjb21wdXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyhTdGlja3lQb3NpdGlvblZp
ZXdwbwogICAgIGlmIChlbmNsb3NpbmdDbGlwcGluZ0xheWVyKSB7CiAgICAgICAgIHN0aWNreUxv
Y2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yIC09IEZsb2F0U2l6ZShlbmNsb3NpbmdD
bGlwcGluZ0JveC5ib3JkZXJMZWZ0KCkgKyBlbmNsb3NpbmdDbGlwcGluZ0JveC5wYWRkaW5nTGVm
dCgpLAogICAgICAgICAgICAgZW5jbG9zaW5nQ2xpcHBpbmdCb3guYm9yZGVyVG9wKCkgKyBlbmNs
b3NpbmdDbGlwcGluZ0JveC5wYWRkaW5nVG9wKCkpOwotICAgICAgICBpZiAoJmVuY2xvc2luZ0Ns
aXBwaW5nQm94ICE9IGNvbnRhaW5pbmdCbG9jaykKLSAgICAgICAgICAgIHN0aWNreUxvY2F0aW9u
UmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yICs9IGVuY2xvc2luZ0NsaXBwaW5nTGF5ZXItPnNj
cm9sbE9mZnNldCgpOworICAgICAgICBpZiAoJmVuY2xvc2luZ0NsaXBwaW5nQm94ICE9IGNvbnRh
aW5pbmdCbG9jaykgeworICAgICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVFbmNsb3NpbmdD
bGlwcGluZ0xheWVyID0gZW5jbG9zaW5nQ2xpcHBpbmdMYXllci0+c2Nyb2xsYWJsZUFyZWEoKSkK
KyAgICAgICAgICAgICAgICBzdGlja3lMb2NhdGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3Rv
ciArPSBzY3JvbGxhYmxlRW5jbG9zaW5nQ2xpcHBpbmdMYXllci0+c2Nyb2xsT2Zmc2V0KCk7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgLy8gRklYTUU6IEZvciBub3csIGFzc3VtZSB0aGF0IHx0aGlz
fCBpcyBub3QgdHJhbnNmb3JtZWQuCiAgICAgc3RpY2t5Qm94UmVsYXRpdmVUb1Njcm9sbGluZ0Fu
ZWNzdG9yLnNldExvY2F0aW9uKHN0aWNreUxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2Vz
dG9yKTsKQEAgLTU0NywxMSArNTUyLDE0IEBAIEZsb2F0UmVjdCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6Y29uc3RyYWluaW5nUmVjdEZvclN0aWNreVBvc2l0aW9uKCkgY29uc3QKIAogICAgICAgICBG
bG9hdFJlY3QgY29uc3RyYWluaW5nUmVjdCA9IGVuY2xvc2luZ0NsaXBwaW5nQm94LmxvY2FsVG9D
b250YWluZXJRdWFkKEZsb2F0UmVjdChjbGlwUmVjdCksICZ2aWV3KCkpLmJvdW5kaW5nQm94KCk7
CiAKLSAgICAgICAgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXQgPSBGbG9hdFBvaW50KCkgKyBlbmNs
b3NpbmdDbGlwcGluZ0xheWVyLT5zY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgYXV0byogc2Nyb2xs
YWJsZUVuY2xvc2luZ0NsaXBwaW5nTGF5ZXIgPSBlbmNsb3NpbmdDbGlwcGluZ0xheWVyLT5zY3Jv
bGxhYmxlQXJlYSgpOworICAgICAgICBGbG9hdFBvaW50IHNjcm9sbE9mZnNldDsKKyAgICAgICAg
aWYgKHNjcm9sbGFibGVFbmNsb3NpbmdDbGlwcGluZ0xheWVyKQorICAgICAgICAgICAgc2Nyb2xs
T2Zmc2V0ID0gRmxvYXRQb2ludCgpICsgc2Nyb2xsYWJsZUVuY2xvc2luZ0NsaXBwaW5nTGF5ZXIt
PnNjcm9sbE9mZnNldCgpOwogCiAgICAgICAgIGZsb2F0IHNjcm9sbGJhck9mZnNldCA9IDA7Ci0g
ICAgICAgIGlmIChlbmNsb3NpbmdDbGlwcGluZ0JveC5oYXNMYXllcigpICYmIGVuY2xvc2luZ0Ns
aXBwaW5nQm94LnNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSkKLSAg
ICAgICAgICAgIHNjcm9sbGJhck9mZnNldCA9IGVuY2xvc2luZ0NsaXBwaW5nQm94LmxheWVyKCkt
PnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUpOworICAg
ICAgICBpZiAoZW5jbG9zaW5nQ2xpcHBpbmdCb3guaGFzTGF5ZXIoKSAmJiBlbmNsb3NpbmdDbGlw
cGluZ0JveC5zaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgJiYgc2Ny
b2xsYWJsZUVuY2xvc2luZ0NsaXBwaW5nTGF5ZXIpCisgICAgICAgICAgICBzY3JvbGxiYXJPZmZz
ZXQgPSBzY3JvbGxhYmxlRW5jbG9zaW5nQ2xpcHBpbmdMYXllci0+dmVydGljYWxTY3JvbGxiYXJX
aWR0aChJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSk7CiAKICAgICAgICAgY29uc3RyYWluaW5n
UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KHNjcm9sbE9mZnNldC54KCkgKyBzY3JvbGxiYXJP
ZmZzZXQsIHNjcm9sbE9mZnNldC55KCkpKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cmFpbmluZ1Jl
Y3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBjMzI0YjE2
NzNlMTQ1NjRiOWE0ZGJkNjFlM2RmZjEwMWY1ZWExODlhLi5lOGM1ZDVjOGJjNzcxMjBlYzYxZmE2
YzM2Nzc2ZjI5MzZkYTNhYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKQEAgLTM3Niw5NCArMzc2LDYgQEAgUmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcigpCiAg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZW5kZXJlcigpLnJl
bmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpIHx8ICFmaXJzdENoaWxkKCkpOwogfQogCi0vLyBTdGFy
dCBvZiB0ZW1wb3JhcnkgZ2x1ZSBjb2RlIHRvIGhlbHAgbGFuZGluZyB3ZWJraXQub3JnL2IvNjAz
MDUgKHNwbGl0IFJlbmRlckxheWVyIGludG8gUmVuZGVyTGF5ZXIvUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYSkKLVNjcm9sbE9mZnNldCBSZW5kZXJMYXllcjo6c2Nyb2xsT2Zmc2V0KCkgY29uc3QK
LXsKLSAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKLSAgICAgICAgcmV0dXJuIG1fc2Nyb2xsYWJs
ZUFyZWEtPnNjcm9sbE9mZnNldCgpOwotICAgIHJldHVybiB7IDAsIDAgfTsKLX0KLQotYm9vbCBS
ZW5kZXJMYXllcjo6c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVmdCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHJlbmRlcmVyKCkuc2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNj
cm9sbGJhck9uTGVmdCgpOwotfQotCi1SZW5kZXJNYXJxdWVlKiBSZW5kZXJMYXllcjo6bWFycXVl
ZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIHJldHVybiBt
X3Njcm9sbGFibGVBcmVhLT5tYXJxdWVlKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJEb2N1bWVudFNjcm9sbCgp
Ci17Ci0gICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEt
PnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJEb2N1bWVudFNjcm9sbCgpOwotfQotCi12b2lkIFJl
bmRlckxheWVyOjpzZXRQb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24oT3B0aW9uYWw8U2Nyb2xsUG9z
aXRpb24+IHBvc2l0aW9uKQotewotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQotICAgICAgICBt
X3Njcm9sbGFibGVBcmVhLT5zZXRQb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOwot
fQotCi12b2lkIFJlbmRlckxheWVyOjpwYW5TY3JvbGxGcm9tUG9pbnQoY29uc3QgSW50UG9pbnQm
IHBvaW50KQotewotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQotICAgICAgICBtX3Njcm9sbGFi
bGVBcmVhLT5wYW5TY3JvbGxGcm9tUG9pbnQocG9pbnQpOwotfQotCi1TY3JvbGxQb3NpdGlvbiBS
ZW5kZXJMYXllcjo6c2Nyb2xsUG9zaXRpb24oKSBjb25zdAotewotICAgIGlmIChtX3Njcm9sbGFi
bGVBcmVhKQotICAgICAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24o
KTsKLSAgICByZXR1cm4gU2Nyb2xsUG9zaXRpb24oKTsKLX0KLQotYm9vbCBSZW5kZXJMYXllcjo6
c2Nyb2xsaW5nTWF5UmV2ZWFsQmFja2dyb3VuZCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2Nyb2xs
YWJsZUFyZWEpCi0gICAgICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxpbmdNYXlS
ZXZlYWxCYWNrZ3JvdW5kKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbmRlckxh
eWVyOjpoYXNTY3JvbGxhYmxlSG9yaXpvbnRhbE92ZXJmbG93KCkgY29uc3QKLXsKLSAgICBpZiAo
bV9zY3JvbGxhYmxlQXJlYSkKLSAgICAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEtPmhhc1Nj
cm9sbGFibGVIb3Jpem9udGFsT3ZlcmZsb3coKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJv
b2wgUmVuZGVyTGF5ZXI6Omhhc1Njcm9sbGFibGVWZXJ0aWNhbE92ZXJmbG93KCkgY29uc3QKLXsK
LSAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKLSAgICAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWEtPmhhc1Njcm9sbGFibGVWZXJ0aWNhbE92ZXJmbG93KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1pbnQgUmVuZGVyTGF5ZXI6OnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoT3ZlcmxheVNjcm9s
bGJhclNpemVSZWxldmFuY3kgcmVsZXZhbmN5KSBjb25zdAotewotICAgIGlmIChtX3Njcm9sbGFi
bGVBcmVhKQotICAgICAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxi
YXJXaWR0aChyZWxldmFuY3kpOwotICAgIHJldHVybiAwOwotfQotCi1pbnQgUmVuZGVyTGF5ZXI6
Omhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kg
cmVsZXZhbmN5KSBjb25zdAotewotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQotICAgICAgICBy
ZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodChyZWxldmFu
Y3kpOwotICAgIHJldHVybiAwOwotfQotCi1ib29sIFJlbmRlckxheWVyOjpzY3JvbGwoU2Nyb2xs
RGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGZsb2F0
IG11bHRpcGxpZXIpCi17Ci0gICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIHJldHVy
biBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlw
bGllcik7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotLy8gRW5kIG9mIHRlbXBvcmFyeSBnbHVlIGNv
ZGUKLQogdm9pZCBSZW5kZXJMYXllcjo6YWRkQ2hpbGQoUmVuZGVyTGF5ZXImIGNoaWxkLCBSZW5k
ZXJMYXllciogYmVmb3JlQ2hpbGQpCiB7CiAgICAgUmVuZGVyTGF5ZXIqIHByZXZTaWJsaW5nID0g
YmVmb3JlQ2hpbGQgPyBiZWZvcmVDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkgOiBsYXN0Q2hpbGQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggNzVmYWE4NWJhNThh
NTk3MmYxYTU1Njc5ZGJhYWQ1ZWE5YWQ1MDU1Yi4uOTBiOTgyNWQ1YmY5YzY2OTY3Njc1ZTIzNzQ1
NzAzYWE0Y2UwNTc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAg
LTE1OSwyMiArMTU5LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJlbmRlckxheWVy
U2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYSogZW5zdXJlTGF5ZXJTY3JvbGxhYmxlQXJlYSgp
OwogCi0gICAgLy8gU3RhcnQgb2YgdGVtcG9yYXJ5IGdsdWUgY29kZSB0byBoZWxwIGxhbmRpbmcg
d2Via2l0Lm9yZy9iLzYwMzA1IChzcGxpdCBSZW5kZXJMYXllciBpbnRvIFJlbmRlckxheWVyL1Jl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWEpCi0gICAgV0VCQ09SRV9FWFBPUlQgU2Nyb2xsT2Zmc2V0
IHNjcm9sbE9mZnNldCgpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlv
blNjcm9sbGJhck9uTGVmdCgpIGNvbnN0OwotICAgIFJlbmRlck1hcnF1ZWUqIG1hcnF1ZWUoKSBj
b25zdDsKLSAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJEb2N1bWVudFNjcm9sbCgp
OwotICAgIHZvaWQgc2V0UG9zdExheW91dFNjcm9sbFBvc2l0aW9uKE9wdGlvbmFsPFNjcm9sbFBv
c2l0aW9uPik7Ci0gICAgdm9pZCBwYW5TY3JvbGxGcm9tUG9pbnQoY29uc3QgSW50UG9pbnQmKTsK
LSAgICBTY3JvbGxQb3NpdGlvbiBzY3JvbGxQb3NpdGlvbigpIGNvbnN0OwotICAgIGJvb2wgc2Ny
b2xsaW5nTWF5UmV2ZWFsQmFja2dyb3VuZCgpIGNvbnN0OwotICAgIGJvb2wgaGFzU2Nyb2xsYWJs
ZUhvcml6b250YWxPdmVyZmxvdygpIGNvbnN0OwotICAgIGJvb2wgaGFzU2Nyb2xsYWJsZVZlcnRp
Y2FsT3ZlcmZsb3coKSBjb25zdDsKLSAgICBpbnQgdmVydGljYWxTY3JvbGxiYXJXaWR0aChPdmVy
bGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSA9IElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplKSBj
b25zdDsKLSAgICBpbnQgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodChPdmVybGF5U2Nyb2xsYmFy
U2l6ZVJlbGV2YW5jeSA9IElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplKSBjb25zdDsKLSAgICBi
b29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0
aXBsaWVyID0gMSk7Ci0gICAgLy8gRW5kIG9mIHRlbXBvcmFyeSBnbHVlIGNvZGUKLQogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gQ2FsbGVkIGJlZm9yZSB0aGUgcmVuZGVyZXIncyB3
aWRnZXQgKGlmIGFueSkgaGFzIGJlZW4gbnVsbGVkIG91dC4KICAgICB2b2lkIHdpbGxCZURlc3Ry
b3llZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAppbmRleCA4OTA5YTdmMDFlOTMwOTBkMjgxYzc2YWViNmU5NWVhNWFmYjc2OTcxLi43ZmVl
Yjg4Mzg5NTNjYTBlMWNiYjAyYmRiNGQ0ZmQ1MDJiYjI1M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNDE5LDExICs0MTksMTMg
QEAgc3RhdGljIFRpbGVkQmFja2luZzo6VGlsZUNvdmVyYWdlIGNvbXB1dGVPdmVyZmxvd1RpbGVk
QmFja2luZ0NvdmVyYWdlKGNvbnN0IFJlbmQKICAgICBUaWxlZEJhY2tpbmc6OlRpbGVDb3ZlcmFn
ZSB0aWxlQ292ZXJhZ2UgPSBUaWxlZEJhY2tpbmc6OkNvdmVyYWdlRm9yVmlzaWJsZUFyZWE7CiAg
ICAgYm9vbCB1c2VNaW5pbWFsVGlsZXNEdXJpbmdMaXZlUmVzaXplID0gZnJhbWVWaWV3LmluTGl2
ZVJlc2l6ZSgpOwogICAgIGlmICghdXNlTWluaW1hbFRpbGVzRHVyaW5nTGl2ZVJlc2l6ZSkgewot
ICAgICAgICBpZiAobGF5ZXIuaGFzU2Nyb2xsYWJsZUhvcml6b250YWxPdmVyZmxvdygpKQotICAg
ICAgICAgICAgdGlsZUNvdmVyYWdlIHw9IFRpbGVkQmFja2luZzo6Q292ZXJhZ2VGb3JIb3Jpem9u
dGFsU2Nyb2xsaW5nOworICAgICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIu
c2Nyb2xsYWJsZUFyZWEoKSkgeworICAgICAgICAgICAgaWYgKHNjcm9sbGFibGVMYXllci0+aGFz
U2Nyb2xsYWJsZUhvcml6b250YWxPdmVyZmxvdygpKQorICAgICAgICAgICAgICAgIHRpbGVDb3Zl
cmFnZSB8PSBUaWxlZEJhY2tpbmc6OkNvdmVyYWdlRm9ySG9yaXpvbnRhbFNjcm9sbGluZzsKIAot
ICAgICAgICBpZiAobGF5ZXIuaGFzU2Nyb2xsYWJsZVZlcnRpY2FsT3ZlcmZsb3coKSkKLSAgICAg
ICAgICAgIHRpbGVDb3ZlcmFnZSB8PSBUaWxlZEJhY2tpbmc6OkNvdmVyYWdlRm9yVmVydGljYWxT
Y3JvbGxpbmc7CisgICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUxheWVyLT5oYXNTY3JvbGxhYmxl
VmVydGljYWxPdmVyZmxvdygpKQorICAgICAgICAgICAgICAgIHRpbGVDb3ZlcmFnZSB8PSBUaWxl
ZEJhY2tpbmc6OkNvdmVyYWdlRm9yVmVydGljYWxTY3JvbGxpbmc7CisgICAgICAgIH0KICAgICB9
CiAgICAgcmV0dXJuIHRpbGVDb3ZlcmFnZTsKIH0KQEAgLTEyMjksOSArMTIzMSwxMiBAQCBMYXlv
dXRSZWN0IFJlbmRlckxheWVyQmFja2luZzo6Y29tcHV0ZVBhcmVudEdyYXBoaWNzTGF5ZXJSZWN0
KGNvbnN0IFJlbmRlckxheWVyKgogICAgIH0KIAogICAgIGlmIChjb21wb3NpdGVkQW5jZXN0b3It
Pmhhc0NvbXBvc2l0ZWRTY3JvbGxhYmxlT3ZlcmZsb3coKSkgeworICAgICAgICBhdXRvKiBzY3Jv
bGxhYmxlQ29tcG9zaXRlZEFuY2VzdG9yID0gY29tcG9zaXRlZEFuY2VzdG9yLT5zY3JvbGxhYmxl
QXJlYSgpOworICAgICAgICBBU1NFUlQoc2Nyb2xsYWJsZUNvbXBvc2l0ZWRBbmNlc3Rvcik7CisK
ICAgICAgICAgTGF5b3V0UmVjdCBhbmNlc3RvckNvbXBvc2l0ZWRCb3VuZHMgPSBhbmNlc3RvckJh
Y2tpbmctPmNvbXBvc2l0ZWRCb3VuZHMoKTsKICAgICAgICAgTGF5b3V0UmVjdCBzY3JvbGxDb250
YWluZXJCb3ggPSBzY3JvbGxDb250YWluZXJMYXllckJveChhbmNlc3RvclJlbmRlckJveCk7Ci0g
ICAgICAgIFNjcm9sbE9mZnNldCBzY3JvbGxPZmZzZXQgPSBjb21wb3NpdGVkQW5jZXN0b3ItPnNj
cm9sbE9mZnNldCgpOworICAgICAgICBTY3JvbGxPZmZzZXQgc2Nyb2xsT2Zmc2V0ID0gc2Nyb2xs
YWJsZUNvbXBvc2l0ZWRBbmNlc3Rvci0+c2Nyb2xsT2Zmc2V0KCk7CiAgICAgICAgIHBhcmVudEdy
YXBoaWNzTGF5ZXJSZWN0ID0gTGF5b3V0UmVjdCgoc2Nyb2xsQ29udGFpbmVyQm94LmxvY2F0aW9u
KCkgLSB0b0xheW91dFNpemUoYW5jZXN0b3JDb21wb3NpdGVkQm91bmRzLmxvY2F0aW9uKCkpIC0g
dG9MYXlvdXRTaXplKHNjcm9sbE9mZnNldCkpLCBzY3JvbGxDb250YWluZXJCb3guc2l6ZSgpKTsK
ICAgICB9CiAKQEAgLTEzNjgsNyArMTM3MywxMCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
dXBkYXRlR2VvbWV0cnkoY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0ZWRBbmNlc3RvcikKICAg
ICAgICAgbV9zY3JvbGxDb250YWluZXJMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChzY3Jv
bGxDb250YWluZXJCb3gubG9jYXRpb24oKSAtIHBhcmVudExheWVyQm91bmRzLmxvY2F0aW9uKCkp
KTsKICAgICAgICAgbV9zY3JvbGxDb250YWluZXJMYXllci0+c2V0U2l6ZShyb3VuZGVkSW50U2l6
ZShMYXlvdXRTaXplKHNjcm9sbENvbnRhaW5lckJveC53aWR0aCgpLCBzY3JvbGxDb250YWluZXJC
b3guaGVpZ2h0KCkpKSk7CiAKLSAgICAgICAgU2Nyb2xsT2Zmc2V0IHNjcm9sbE9mZnNldCA9IG1f
b3duaW5nTGF5ZXIuc2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIGF1dG8qIHNjcm9sbGFibGVMYXll
ciA9IG1fb3duaW5nTGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKTsKKyAgICAgICAgQVNTRVJUKHNjcm9s
bGFibGVMYXllcik7CisKKyAgICAgICAgU2Nyb2xsT2Zmc2V0IHNjcm9sbE9mZnNldCA9IHNjcm9s
bGFibGVMYXllci0+c2Nyb2xsT2Zmc2V0KCk7CiAgICAgICAgIHVwZGF0ZVNjcm9sbE9mZnNldChz
Y3JvbGxPZmZzZXQpOwogCiAgICAgICAgIEZsb2F0U2l6ZSBvbGRTY3JvbGxpbmdMYXllck9mZnNl
dCA9IG1fc2Nyb2xsQ29udGFpbmVyTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpOwpAQCAtMTM4
Miw3ICsxMzkwLDkgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdlb21ldHJ5KGNv
bnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGVkQW5jZXN0b3IpCiAKICAgICAgICAgYm9vbCBwYWRk
aW5nQm94T2Zmc2V0Q2hhbmdlZCA9IG9sZFNjcm9sbGluZ0xheWVyT2Zmc2V0ICE9IG1fc2Nyb2xs
Q29udGFpbmVyTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpOwogCi0gICAgICAgIEludFNpemUg
c2Nyb2xsU2l6ZShtX293bmluZ0xheWVyLnNjcm9sbFdpZHRoKCksIG1fb3duaW5nTGF5ZXIuc2Ny
b2xsSGVpZ2h0KCkpOworICAgICAgICBJbnRTaXplIHNjcm9sbFNpemU7CisgICAgICAgIGlmIChz
Y3JvbGxhYmxlTGF5ZXIpCisgICAgICAgICAgICBzY3JvbGxTaXplID0gSW50U2l6ZShzY3JvbGxh
YmxlTGF5ZXItPnNjcm9sbFdpZHRoKCksIHNjcm9sbGFibGVMYXllci0+c2Nyb2xsSGVpZ2h0KCkp
OwogICAgICAgICBpZiAoc2Nyb2xsU2l6ZSAhPSBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2l6
ZSgpIHx8IHBhZGRpbmdCb3hPZmZzZXRDaGFuZ2VkKQogICAgICAgICAgICAgbV9zY3JvbGxlZENv
bnRlbnRzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogCkBAIC0xOTEzLDcgKzE5MjMsOSBAQCB2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ2xpcHBpbmdTdGFja0xheWVyR2VvbWV0cnko
TGF5ZXJBbmNlc3RvckNsaXBwaW5nUwogICAgICAgICBlbnRyeS5jbGlwcGluZ0xheWVyLT5zZXRT
aXplKHNuYXBwZWRDbGlwcGluZ0xheWVyUmVjdC5zaXplKCkpOwogCiAgICAgICAgIGlmIChlbnRy
eS5jbGlwRGF0YS5pc092ZXJmbG93U2Nyb2xsKSB7Ci0gICAgICAgICAgICBTY3JvbGxPZmZzZXQg
c2Nyb2xsT2Zmc2V0ID0gZW50cnkuY2xpcERhdGEuY2xpcHBpbmdMYXllciA/IGVudHJ5LmNsaXBE
YXRhLmNsaXBwaW5nTGF5ZXItPnNjcm9sbE9mZnNldCgpIDogU2Nyb2xsT2Zmc2V0KCk7CisgICAg
ICAgICAgICBTY3JvbGxPZmZzZXQgc2Nyb2xsT2Zmc2V0OworICAgICAgICAgICAgaWYgKGF1dG8q
IHNjcm9sbGFibGVMYXllciA9IGVudHJ5LmNsaXBEYXRhLmNsaXBwaW5nTGF5ZXIgPyBlbnRyeS5j
bGlwRGF0YS5jbGlwcGluZ0xheWVyLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cikKKyAgICAg
ICAgICAgICAgICBzY3JvbGxPZmZzZXQgPSBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbE9mZnNldCgp
OwogCiAgICAgICAgICAgICBlbnRyeS5jbGlwcGluZ0xheWVyLT5zZXRCb3VuZHNPcmlnaW4oc2Ny
b2xsT2Zmc2V0KTsKICAgICAgICAgICAgIGxhc3RDbGlwTGF5ZXJSZWN0Lm1vdmVCeSgtc2Nyb2xs
T2Zmc2V0KTsKQEAgLTIwMTgsNyArMjAzMCw2IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpy
ZXF1aXJlc0hvcml6b250YWxTY3JvbGxiYXJMYXllcigpIGNvbnN0CiAgICAgaWYgKGF1dG8qIHNj
cm9sbGFibGVMYXllciA9IG1fb3duaW5nTGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKSkKICAgICAgICAg
cmV0dXJuIHJlcXVpcmVzTGF5ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYWJsZUxheWVyLT5ob3Jpem9u
dGFsU2Nyb2xsYmFyKCkpOwogICAgIHJldHVybiBmYWxzZTsKLQogfQogCiBib29sIFJlbmRlckxh
eWVyQmFja2luZzo6cmVxdWlyZXNWZXJ0aWNhbFNjcm9sbGJhckxheWVyKCkgY29uc3QKQEAgLTIw
MzMsMTQgKzIwNDQsMTQgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnJlcXVpcmVzU2Nyb2xs
Q29ybmVyTGF5ZXIoKSBjb25zdAogICAgIGlmICghaXM8UmVuZGVyQm94PihtX293bmluZ0xheWVy
LnJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGNvcm5lclJl
Y3QgPSBtX293bmluZ0xheWVyLm92ZXJmbG93Q29udHJvbHNSZWN0cygpLnNjcm9sbENvcm5lck9y
UmVzaXplclJlY3QoKTsKLSAgICBpZiAoY29ybmVyUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQogICAgIGF1dG8qIHNjcm9sbGFibGVMYXllciA9IG1fb3duaW5nTGF5ZXIu
c2Nyb2xsYWJsZUFyZWEoKTsKICAgICBpZiAoIXNjcm9sbGFibGVMYXllcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCisgICAgYXV0byBjb3JuZXJSZWN0ID0gc2Nyb2xsYWJsZUxheWVyLT5vdmVy
Zmxvd0NvbnRyb2xzUmVjdHMoKS5zY3JvbGxDb3JuZXJPclJlc2l6ZXJSZWN0KCk7CisgICAgaWYg
KGNvcm5lclJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBhdXRv
IHZlcnRpY2FsU2Nyb2xsYmFyID0gc2Nyb2xsYWJsZUxheWVyLT52ZXJ0aWNhbFNjcm9sbGJhcigp
OwogICAgIGF1dG8gc2Nyb2xsYmFyID0gdmVydGljYWxTY3JvbGxiYXIgPyB2ZXJ0aWNhbFNjcm9s
bGJhciA6IHNjcm9sbGFibGVMYXllci0+aG9yaXpvbnRhbFNjcm9sbGJhcigpOwogICAgIHJldHVy
biByZXF1aXJlc0xheWVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7CkBAIC0yMDc4LDExICsyMDg5
LDExIEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5
ZXJzKGJvb2wgbmVlZHNIb3Jpem9udGFsU2Nyb2xsCiAgICAgbGF5ZXJzQ2hhbmdlZCB8PSBjcmVh
dGVPckRlc3Ryb3lMYXllcihtX2xheWVyRm9yU2Nyb2xsQ29ybmVyLCBuZWVkc1Njcm9sbENvcm5l
ckxheWVyLCB0cnVlLCAic2Nyb2xsIGNvcm5lciIpOwogCiAgICAgaWYgKGF1dG8qIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gbV9vd25pbmdMYXllci5wYWdlKCkuc2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KSkgewotICAgICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBtX293bmluZ0xheWVyLnNj
cm9sbGFibGVBcmVhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVMYXllciA9IG1f
b3duaW5nTGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKSkgewogICAgICAgICAgICAgaWYgKGhvcml6b250
YWxTY3JvbGxiYXJMYXllckNoYW5nZWQpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKnNjcm9sbGFibGVB
cmVhLCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgqc2Nyb2xsYWJs
ZUxheWVyLCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKICAgICAgICAgICAgIGlmICh2ZXJ0aWNhbFNj
cm9sbGJhckxheWVyQ2hhbmdlZCkKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRv
ci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgqc2Nyb2xsYWJsZUFyZWEs
IFZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRv
ci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgqc2Nyb2xsYWJsZUxheWVy
LCBWZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIxMTMsOCArMjEy
NCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvbHNM
YXllcnMoKQogICAgIH07CiAKICAgICAvLyBUaGVzZSByZWN0cyBhcmUgcmVsYXRpdmUgdG8gdGhl
IGJvcmRlckJveFJlY3QuCi0gICAgYXV0byByZWN0cyA9IG1fb3duaW5nTGF5ZXIub3ZlcmZsb3dD
b250cm9sc1JlY3RzKCk7Ci0KKyAgICBhdXRvIHJlY3RzID0gc2Nyb2xsYWJsZUxheWVyLT5vdmVy
Zmxvd0NvbnRyb2xzUmVjdHMoKTsKICAgICBpZiAoYXV0byogbGF5ZXIgPSBsYXllckZvckhvcml6
b250YWxTY3JvbGxiYXIoKSkgewogICAgICAgICBwb3NpdGlvblNjcm9sbGJhckxheWVyKCpsYXll
ciwgcmVjdHMuaG9yaXpvbnRhbFNjcm9sbGJhciwgcGFkZGluZ0JveEluc2V0KTsKICAgICAgICAg
bGF5ZXItPnNldERyYXdzQ29udGVudChzY3JvbGxhYmxlTGF5ZXItPmhvcml6b250YWxTY3JvbGxi
YXIoKSAmJiAhbGF5ZXItPnVzZXNDb250ZW50c0xheWVyKCkpOwpAQCAtMzEwMSw3ICszMTExLDEw
IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0
KGNvbnN0IExheW91dFJlY3QmIHIsIEdyYXBoCiAKICAgICBpZiAobV9zY3JvbGxlZENvbnRlbnRz
TGF5ZXIgJiYgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPmRyYXdzQ29udGVudCgpKSB7CiAgICAg
ICAgIEZsb2F0UmVjdCBsYXllckRpcnR5UmVjdCA9IHBpeGVsU25hcHBlZFJlY3RGb3JQYWludGlu
ZzsKLSAgICAgICAgbGF5ZXJEaXJ0eVJlY3QubW92ZSgtbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIt
Pm9mZnNldEZyb21SZW5kZXJlcigpICsgdG9MYXlvdXRTaXplKG1fb3duaW5nTGF5ZXIuc2Nyb2xs
T2Zmc2V0KCkpIC0gbV9zdWJwaXhlbE9mZnNldEZyb21SZW5kZXJlcik7CisgICAgICAgIFNjcm9s
bE9mZnNldCBzY3JvbGxPZmZzZXQ7CisgICAgICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlTGF5ZXIg
PSBtX293bmluZ0xheWVyLnNjcm9sbGFibGVBcmVhKCkpCisgICAgICAgICAgICBzY3JvbGxPZmZz
ZXQgPSBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbE9mZnNldCgpOworICAgICAgICBsYXllckRpcnR5
UmVjdC5tb3ZlKC1tX3Njcm9sbGVkQ29udGVudHNMYXllci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCkg
KyB0b0xheW91dFNpemUoc2Nyb2xsT2Zmc2V0KSAtIG1fc3VicGl4ZWxPZmZzZXRGcm9tUmVuZGVy
ZXIpOwogICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KGxheWVyRGlydHlSZWN0LCBzaG91bGRDbGlwKTsKICAgICB9CiB9CkBAIC0zNDQ3LDcgKzM0
NjAsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFw
aGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaAogICAgICAgICBhdXRvKiBzY3JvbGxhYmxl
TGF5ZXIgPSBtX293bmluZ0xheWVyLnNjcm9sbGFibGVBcmVhKCk7CiAgICAgICAgIEFTU0VSVChz
Y3JvbGxhYmxlTGF5ZXIpOwogCi0gICAgICAgIGF1dG8gY29ybmVyUmVjdCA9IG1fb3duaW5nTGF5
ZXIub3ZlcmZsb3dDb250cm9sc1JlY3RzKCkuc2Nyb2xsQ29ybmVyT3JSZXNpemVyUmVjdCgpOwor
ICAgICAgICBhdXRvIGNvcm5lclJlY3QgPSBzY3JvbGxhYmxlTGF5ZXItPm92ZXJmbG93Q29udHJv
bHNSZWN0cygpLnNjcm9sbENvcm5lck9yUmVzaXplclJlY3QoKTsKICAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBjb250ZXh0LnRy
YW5zbGF0ZSgtY29ybmVyUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgTGF5b3V0UmVjdCB0cmFu
c2Zvcm1lZENsaXAgPSBMYXlvdXRSZWN0KGNsaXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCmluZGV4IGM3ZmM2NmM3MDEzYjdl
OGRlNmFhMDZjNDMxM2JkMjlhODE4NTFhZTMuLmZjYTc4YWRhYzRjMjI2ODA4YTBlOGM5YWRmYWY3
OTY3ZjJjNzljNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTE3Niw5ICsxNzYsMTAgQEAgdm9pZCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3Qg
UmVuZGVyU3QKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUgPSBzdHlsZSgpOwogICAg
IGlmIChvbGRTdHlsZSAmJiBzY3JvbGxTbmFwQ29udGFpbmVyUmVxdWlyZXNVcGRhdGVGb3JTdHls
ZVVwZGF0ZSgqb2xkU3R5bGUsIG5ld1N0eWxlKSkgewogICAgICAgICBpZiAoUmVuZGVyTGF5ZXIq
IHJlbmRlckxheWVyID0gbGF5ZXIoKSkgewotICAgICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUxh
eWVyID0gcmVuZGVyTGF5ZXItPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKTsKLSAgICAgICAg
ICAgIHNjcm9sbGFibGVMYXllci0+dXBkYXRlU25hcE9mZnNldHMoKTsKLSAgICAgICAgICAgIHNj
cm9sbGFibGVMYXllci0+dXBkYXRlU2Nyb2xsU25hcFN0YXRlKCk7CisgICAgICAgICAgICBpZiAo
YXV0byogc2Nyb2xsYWJsZUxheWVyID0gcmVuZGVyTGF5ZXItPnNjcm9sbGFibGVBcmVhKCkpIHsK
KyAgICAgICAgICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnVwZGF0ZVNuYXBPZmZzZXRzKCk7Cisg
ICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT51cGRhdGVTY3JvbGxTbmFwU3RhdGUoKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChpc0JvZHkoKSB8fCBpc0RvY3VtZW50
RWxlbWVudFJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0g
dmlldygpLmZyYW1lVmlldygpOwogICAgICAgICAgICAgZnJhbWVWaWV3LnVwZGF0ZVNuYXBPZmZz
ZXRzKCk7CkBAIC0xOTYsOSArMTk3LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6
c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0CiAgICAg
ICAgIGlmIChzY3JvbGxTbmFwQm94ICYmIHNjcm9sbFNuYXBCb3gtPmxheWVyKCkpIHsKICAgICAg
ICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHNjcm9sbFNuYXBCb3gtPnN0eWxlKCk7
CiAgICAgICAgICAgICBpZiAoc3R5bGUuc2Nyb2xsU25hcFR5cGUoKS5zdHJpY3RuZXNzICE9IFNj
cm9sbFNuYXBTdHJpY3RuZXNzOjpOb25lKSB7Ci0gICAgICAgICAgICAgICAgYXV0byogc2Nyb2xs
YWJsZUxheWVyID0gc2Nyb2xsU25hcEJveC0+bGF5ZXIoKS0+ZW5zdXJlTGF5ZXJTY3JvbGxhYmxl
QXJlYSgpOwotICAgICAgICAgICAgICAgIHNjcm9sbGFibGVMYXllci0+dXBkYXRlU25hcE9mZnNl
dHMoKTsKLSAgICAgICAgICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnVwZGF0ZVNjcm9sbFNuYXBT
dGF0ZSgpOworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBzY3Jv
bGxTbmFwQm94LT5sYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHNjcm9sbGFibGVMYXllci0+dXBkYXRlU25hcE9mZnNldHMoKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2Nyb2xsYWJsZUxheWVyLT51cGRhdGVTY3JvbGxTbmFwU3RhdGUoKTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbFNuYXBCb3gtPmlzQm9keSgpIHx8
IHNjcm9sbFNuYXBCb3gtPmlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSkKICAgICAgICAgICAg
ICAgICAgICAgc2Nyb2xsU25hcEJveC0+dmlldygpLmZyYW1lVmlldygpLnVwZGF0ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yU2Nyb2xsU25hcFByb3BlcnRpZXMoKTsKICAgICAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAppbmRleCA2OTE2NmIyZGFlOWUx
YzAyM2VjMjE5MjllZDBkYjJhNTJjMTBmMDdkLi40YzI4MzU2ODQ5MTE0MTI3MjkyNjM4ZDA5MjZm
ZTAxM2QzMmI4NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWFycXVlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUu
Y3BwCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKCkK
ICAgICAgICAgYm9vbCBwb3NpdGl2ZSA9IHJhbmdlID4gMDsKICAgICAgICAgaW50IGNsaWVudFNp
emUgPSAoaXNIb3Jpem9udGFsKCkgPyByb3VuZFRvSW50KG1fbGF5ZXItPnJlbmRlckJveCgpLT5j
bGllbnRXaWR0aCgpKSA6IHJvdW5kVG9JbnQobV9sYXllci0+cmVuZGVyQm94KCktPmNsaWVudEhl
aWdodCgpKSk7CiAgICAgICAgIGludCBpbmNyZW1lbnQgPSBhYnMoaW50VmFsdWVGb3JMZW5ndGgo
bV9sYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLm1hcnF1ZWVJbmNyZW1lbnQoKSwgY2xpZW50U2l6
ZSkpOwotICAgICAgICBpbnQgY3VycmVudFBvcyA9IChpc0hvcml6b250YWwoKSA/IG1fbGF5ZXIt
PnNjcm9sbE9mZnNldCgpLngoKSA6IG1fbGF5ZXItPnNjcm9sbE9mZnNldCgpLnkoKSk7CisgICAg
ICAgIGludCBjdXJyZW50UG9zID0gKGlzSG9yaXpvbnRhbCgpID8gc2Nyb2xsYWJsZUxheWVyLT5z
Y3JvbGxPZmZzZXQoKS54KCkgOiBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbE9mZnNldCgpLnkoKSk7
CiAgICAgICAgIG5ld1BvcyA9ICBjdXJyZW50UG9zICsgKGFkZEluY3JlbWVudCA/IGluY3JlbWVu
dCA6IC1pbmNyZW1lbnQpOwogICAgICAgICBpZiAocG9zaXRpdmUpCiAgICAgICAgICAgICBuZXdQ
b3MgPSBzdGQ6Om1pbihuZXdQb3MsIGVuZFBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKaW5kZXggYzk5
MjJjYjNhZTAzY2UwZjU2MDQyMGExOGYwOGNhNjcyMTc5YjVmYi4uOTk3NjJjZDMwMjQ5ZDllM2Qx
MDQxMjY2MzhhN2MyYzgyZTAzNmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5n
cy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJTY3Jv
bGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlJl
bmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtMzk3LDE5ICszOTgsMjAg
QEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNldFNjcm9sbFRvcChpbnQgbmV3
VG9wLCBjb25zdCBTY3JvbGxQb3NpdGlvbkMKIAogYm9vbCBSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0
eSBncmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciwgRWxlbWVudCoqIHN0b3BFbGVtZW50LCBS
ZW5kZXJCb3gqIHN0YXJ0Qm94LCBjb25zdCBJbnRQb2ludCYgd2hlZWxFdmVudEFic29sdXRlUG9p
bnQpCiB7Ci0gICAgUmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrKiByZW5kZXJlciA9IGlubmVy
VGV4dEVsZW1lbnQoKS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvKiByZW5kZXJlciA9IGlubmVyVGV4
dEVsZW1lbnQoKS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcmVuZGVyZXItPmxheWVyKCk7Ci0g
ICAgaWYgKGxheWVyICYmIGxheWVyLT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVs
dGlwbGllcikpCisgICAgYXV0byogYm94TGF5ZXJTY3JvbGxhYmxlID0gcmVuZGVyZXItPmxheWVy
KCkgPyByZW5kZXJlci0+bGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSA6IG51bGxwdHI7CisgICAg
aWYgKGJveExheWVyU2Nyb2xsYWJsZSAmJiBib3hMYXllclNjcm9sbGFibGUtPnNjcm9sbChkaXJl
Y3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgcmV0dXJuIFJlbmRlckJsb2NrRmxvdzo6c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHks
IG11bHRpcGxpZXIsIHN0b3BFbGVtZW50LCBzdGFydEJveCwgd2hlZWxFdmVudEFic29sdXRlUG9p
bnQpOwogfQogCiBib29sIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bG9naWNhbFNjcm9s
bChTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIsIEVsZW1lbnQqKiBzdG9wRWxlbWVudCkKIHsKLSAg
ICBSZW5kZXJMYXllciogbGF5ZXIgPSBpbm5lclRleHRFbGVtZW50KCktPnJlbmRlcmVyKCktPmxh
eWVyKCk7Ci0gICAgaWYgKGxheWVyICYmIGxheWVyLT5zY3JvbGwobG9naWNhbFRvUGh5c2ljYWwo
ZGlyZWN0aW9uLCBzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCksIHN0eWxlKCkuaXNG
bGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSksIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVyKSkKKyAg
ICBhdXRvKiBsYXllciA9IGlubmVyVGV4dEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+bGF5ZXIoKTsK
KyAgICBhdXRvKiBib3hMYXllclNjcm9sbGFibGUgPSBsYXllciA/IGxheWVyLT5zY3JvbGxhYmxl
QXJlYSgpIDogbnVsbHB0cjsKKyAgICBpZiAoYm94TGF5ZXJTY3JvbGxhYmxlICYmIGJveExheWVy
U2Nyb2xsYWJsZS0+c2Nyb2xsKGxvZ2ljYWxUb1BoeXNpY2FsKGRpcmVjdGlvbiwgc3R5bGUoKS5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdN
b2RlKCkpLCBncmFudWxhcml0eSwgbXVsdGlwbGllcikpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIHJldHVybiBSZW5kZXJCbG9ja0Zsb3c6OmxvZ2ljYWxTY3JvbGwoZGlyZWN0aW9uLCBncmFu
dWxhcml0eSwgbXVsdGlwbGllciwgc3RvcEVsZW1lbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGMxZThmZDkzMTM1ZjYzYjQ1YzFk
OWJlNWNjZmZkY2FjNTY1MDI4ZGQuLjM5Y2FhOTA4MDFmMzBjZjZhNTI3ZjUzOTk1YjM4OWNmNDBk
NDkzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHAKQEAgLTYzMCwxNCArNjMwLDE2IEBAIHN0YXRpYyB2b2lkIHdyaXRlTGF5ZXIoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwgY29uc3QgTGF5b3V0UmVjCiAgICAgfQog
CiAgICAgaWYgKGxheWVyLnJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkpIHsKLSAgICAgICAg
aWYgKGxheWVyLnNjcm9sbE9mZnNldCgpLngoKSkKLSAgICAgICAgICAgIHRzIDw8ICIgc2Nyb2xs
WCAiIDw8IGxheWVyLnNjcm9sbE9mZnNldCgpLngoKTsKLSAgICAgICAgaWYgKGxheWVyLnNjcm9s
bE9mZnNldCgpLnkoKSkKLSAgICAgICAgICAgIHRzIDw8ICIgc2Nyb2xsWSAiIDw8IGxheWVyLnNj
cm9sbE9mZnNldCgpLnkoKTsKLSAgICAgICAgaWYgKGxheWVyLnJlbmRlckJveCgpICYmIHJvdW5k
VG9JbnQobGF5ZXIucmVuZGVyQm94KCktPmNsaWVudFdpZHRoKCkpICE9IGxheWVyLnNjcm9sbFdp
ZHRoKCkpCi0gICAgICAgICAgICB0cyA8PCAiIHNjcm9sbFdpZHRoICIgPDwgbGF5ZXIuc2Nyb2xs
V2lkdGgoKTsKLSAgICAgICAgaWYgKGxheWVyLnJlbmRlckJveCgpICYmIHJvdW5kVG9JbnQobGF5
ZXIucmVuZGVyQm94KCktPmNsaWVudEhlaWdodCgpKSAhPSBsYXllci5zY3JvbGxIZWlnaHQoKSkK
LSAgICAgICAgICAgIHRzIDw8ICIgc2Nyb2xsSGVpZ2h0ICIgPDwgbGF5ZXIuc2Nyb2xsSGVpZ2h0
KCk7CisgICAgICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBsYXllci5zY3JvbGxhYmxl
QXJlYSgpKSB7CisgICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUxheWVyLT5zY3JvbGxPZmZzZXQo
KS54KCkpCisgICAgICAgICAgICAgICAgdHMgPDwgIiBzY3JvbGxYICIgPDwgc2Nyb2xsYWJsZUxh
eWVyLT5zY3JvbGxPZmZzZXQoKS54KCk7CisgICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUxheWVy
LT5zY3JvbGxPZmZzZXQoKS55KCkpCisgICAgICAgICAgICAgICAgdHMgPDwgIiBzY3JvbGxZICIg
PDwgc2Nyb2xsYWJsZUxheWVyLT5zY3JvbGxPZmZzZXQoKS55KCk7CisgICAgICAgICAgICBpZiAo
bGF5ZXIucmVuZGVyQm94KCkgJiYgcm91bmRUb0ludChsYXllci5yZW5kZXJCb3goKS0+Y2xpZW50
V2lkdGgoKSkgIT0gc2Nyb2xsYWJsZUxheWVyLT5zY3JvbGxXaWR0aCgpKQorICAgICAgICAgICAg
ICAgIHRzIDw8ICIgc2Nyb2xsV2lkdGggIiA8PCBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbFdpZHRo
KCk7CisgICAgICAgICAgICBpZiAobGF5ZXIucmVuZGVyQm94KCkgJiYgcm91bmRUb0ludChsYXll
ci5yZW5kZXJCb3goKS0+Y2xpZW50SGVpZ2h0KCkpICE9IHNjcm9sbGFibGVMYXllci0+c2Nyb2xs
SGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgdHMgPDwgIiBzY3JvbGxIZWlnaHQgIiA8PCBzY3Jv
bGxhYmxlTGF5ZXItPnNjcm9sbEhlaWdodCgpOworICAgICAgICB9CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgICAgICBTY3JvbGxiYXJUaGVtZSYgc2Nyb2xsYmFyVGhlbWUgPSBTY3JvbGxiYXJUaGVt
ZTo6dGhlbWUoKTsKICAgICAgICAgaWYgKCFzY3JvbGxiYXJUaGVtZS5pc01vY2tUaGVtZSgpICYm
IGxheWVyLnNjcm9sbGFibGVBcmVhKCkgJiYgbGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKS0+aGFzVmVy
dGljYWxTY3JvbGxiYXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUwubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTC5tbQpp
bmRleCBiZDM5OWE2YzIwZmUyZGFlNGYzMmE3MjE0N2QwNjI1MGZjMjQzYjM4Li5iZDNiMTE4YWIy
Mjg2NjAwYWJhOWU3MDdkMzNhOWUwNWZlNDU3YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NSFRNTC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTC5tbQpAQCAtNzgsNyArNzgsMTQgQEAgLSAoaW50KXNjcm9sbFhPZmZzZXQKICAg
ICBpZiAoIWlzPFdlYkNvcmU6OlJlbmRlckJveD4oKnJlbmRlcmVyKSB8fCAhcmVuZGVyZXItPmhh
c092ZXJmbG93Q2xpcCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBkb3duY2Fz
dDxXZWJDb3JlOjpSZW5kZXJCb3g+KCpyZW5kZXJlcikubGF5ZXIoKS0+c2Nyb2xsT2Zmc2V0KCku
eCgpOworICAgIGF1dG8qIGxheWVyID0gZG93bmNhc3Q8V2ViQ29yZTo6UmVuZGVyQm94PigqcmVu
ZGVyZXIpLmxheWVyKCk7CisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
YXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXItPnNjcm9sbGFibGVBcmVhKCk7CisgICAgaWYg
KCFzY3JvbGxhYmxlTGF5ZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHNjcm9s
bGFibGVMYXllci0+c2Nyb2xsT2Zmc2V0KCkueCgpOwogfQogCiAtIChpbnQpc2Nyb2xsWU9mZnNl
dApAQCAtOTIsNyArOTksMTQgQEAgLSAoaW50KXNjcm9sbFlPZmZzZXQKICAgICBpZiAoIWlzPFdl
YkNvcmU6OlJlbmRlckJveD4oKnJlbmRlcmVyKSB8fCAhcmVuZGVyZXItPmhhc092ZXJmbG93Q2xp
cCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBkb3duY2FzdDxXZWJDb3JlOjpS
ZW5kZXJCb3g+KCpyZW5kZXJlcikubGF5ZXIoKS0+c2Nyb2xsT2Zmc2V0KCkueSgpOworICAgIGF1
dG8qIGxheWVyID0gZG93bmNhc3Q8V2ViQ29yZTo6UmVuZGVyQm94PigqcmVuZGVyZXIpLmxheWVy
KCk7CisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgYXV0byogc2Nyb2xs
YWJsZUxheWVyID0gbGF5ZXItPnNjcm9sbGFibGVBcmVhKCk7CisgICAgaWYgKCFzY3JvbGxhYmxl
TGF5ZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHNjcm9sbGFibGVMYXllci0+
c2Nyb2xsT2Zmc2V0KCkueSgpOwogfQogCiAtICh2b2lkKXNldFNjcm9sbFhPZmZzZXQ6KGludCl4
IHNjcm9sbFlPZmZzZXQ6KGludCl5CkBAIC0xMTIsOCArMTI2LDggQEAgLSAodm9pZClzZXRTY3Jv
bGxYT2Zmc2V0OihpbnQpeCBzY3JvbGxZT2Zmc2V0OihpbnQpeSBhZGp1c3RGb3JJT1NDYXJldDoo
Qk9PTClhZGoKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byogbGF5ZXIgPSBkb3duY2FzdDxX
ZWJDb3JlOjpSZW5kZXJCb3g+KCpyZW5kZXJlcikubGF5ZXIoKTsKLSAgICBBU1NFUlQobGF5ZXIp
OwotCisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuOwogICAgIGF1dG8qIHNjcm9sbGFi
bGVMYXllciA9IGxheWVyLT5lbnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCk7CiAKICAgICBpZiAo
YWRqdXN0Rm9ySU9TQ2FyZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418174</attachid>
            <date>2021-01-22 13:14:25 -0800</date>
            <delta_ts>2021-01-22 16:19:59 -0800</delta_ts>
            <desc>Patch, v2</desc>
            <filename>bug-220851-20210122221423.patch</filename>
            <type>text/plain</type>
            <size>45087</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGYzN2YzZDFiOGY2NWIy
MTAyZTA0N2MwNDQzMzQ0MjViZWIzNGI2NC4uZWFlMjZlZjE2MTc5MGQzZDkwMGRlMTk4ODVjYzA0
MWI0ZjMwZTRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDIxLTAxLTIyICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIEZpbmlz
aCBpbnRyb2R1Y3Rpb24gb2YgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTogcmVtb3ZlIHJlbWFp
bmluZyBnbHVlIGNvZGUgZnJvbSBSZW5kZXJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwODUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBsYXN0IHJlbWFpbmluZyBnbHVlIGNv
ZGUgZnJvbSBSZW5kZXJMYXllciwgdGhhdCB3YXMgYWRkZWQKKyAgICAgICAgaW4gcjI3MTU1OSB0
byBtaW5pbWl6ZSB0aGUgcGF0Y2ggc2l6ZS4gQWZ0ZXIgdGhpcyBwYXRjaCBhbGwgY2FsbCBzaXRl
cworICAgICAgICB1c2UgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYSBkaXJlY3RseSwgcmVtb3Zp
bmcgdGhlIG5lZWQgZm9yIHByb3h5CisgICAgICAgIG1ldGhvZHMgaW4gUmVuZGVyTGF5ZXIgdGhh
dCBmb3J3YXJkIHRvIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuCisKKyAgICAgICAgVGhlIGRl
Y2FkZSBvbGQgYnVnIDYwMzA1IChTZXBhcmF0ZSBzY3JvbGxpbmcgY29kZSBvdXQgb2YgUmVuZGVy
TGF5ZXIpCisgICAgICAgIGlzIGZpbmFsbHkgY2xvc2VkLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6c2Nyb2xsVG8gY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudDo6cmVuZGVyTWFycXVl
ZSBjb25zdCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDdXJzb3IpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlTGF5ZXJQb3NpdGlv
bnNBZnRlclNjcm9sbGluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpzY3JvbGxMZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6c2Nyb2xsVG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwV2hl
ZWxFdmVudE1vbml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRTY3JvbGxM
ZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2V0U2Nyb2xsVG9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94Ojp2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbExheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6bG9naWNhbFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OnBhblNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbFBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUJhY2tncm91
bmRJc0tub3duVG9CZU9ic2N1cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b3Zl
cmZsb3dDbGlwUmVjdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21w
dXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29uc3RyYWluaW5nUmVjdEZvclN0aWNreVBvc2l0aW9uIGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbE9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJh
ck9uTGVmdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
bWFycXVlZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckRvY3VtZW50U2Nyb2xsKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXRQb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhblNjcm9sbEZyb21Qb2lu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUG9zaXRp
b24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9s
bGluZ01heVJldmVhbEJhY2tncm91bmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6Omhhc1Njcm9sbGFibGVIb3Jpem9udGFsT3ZlcmZsb3cgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhhc1Njcm9sbGFibGVWZXJ0
aWNhbE92ZXJmbG93IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjp2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGwpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU92ZXJmbG93
VGlsZWRCYWNraW5nQ292ZXJhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNr
aW5nOjpjb21wdXRlUGFyZW50R3JhcGhpY3NMYXllclJlY3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNsaXBwaW5nU3RhY2tMYXllckdlb21ldHJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cmVxdWlyZXNIb3Jpem9u
dGFsU2Nyb2xsYmFyTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpyZXF1aXJlc1Njcm9sbENvcm5lckxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBvc2l0aW9uT3ZlcmZsb3dDb250
cm9sc0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENv
bnRlbnRzTmVlZERpc3BsYXlJblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWFycXVlZTo6dGltZXJGaXJlZCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnNjcm9sbCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxvZ2ljYWxTY3JvbGwpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKwogMjAyMS0wMS0yMiAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEF2b2lkIGR1cGxpY2F0ZSBjYWxj
dWxhdGlvbnMgaW4gUmVuZGVyQmxvY2s6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjFjNGYwYTdhNTczMzFhYzViOTQ1YzJkOWQ3
Y2UxZDA1MmVlZDAyOS4uY2UxODE1MGYyMDk0Y2ZjNmFkNTYxNTQxOTE3ZGY1ZDFmNjEzZTQ5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTAxLTIy
ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAg
IEZpbmlzaCBpbnRyb2R1Y3Rpb24gb2YgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTogcmVtb3Zl
IHJlbWFpbmluZyBnbHVlIGNvZGUgZnJvbSBSZW5kZXJMYXllcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwODUxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBsYXN0IHJlbWFpbmluZyBn
bHVlIGNvZGUgZnJvbSBSZW5kZXJMYXllciwgdGhhdCB3YXMgYWRkZWQKKyAgICAgICAgaW4gcjI3
MTU1OSB0byBtaW5pbWl6ZSB0aGUgcGF0Y2ggc2l6ZS4gQWZ0ZXIgdGhpcyBwYXRjaCBhbGwgY2Fs
bCBzaXRlcworICAgICAgICB1c2UgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYSBkaXJlY3RseSwg
cmVtb3ZpbmcgdGhlIG5lZWQgZm9yIHByb3h5CisgICAgICAgIG1ldGhvZHMgaW4gUmVuZGVyTGF5
ZXIgdGhhdCBmb3J3YXJkIHRvIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuCisKKyAgICAgICAg
VGhlIGRlY2FkZSBvbGQgYnVnIDYwMzA1IChTZXBhcmF0ZSBzY3JvbGxpbmcgY29kZSBvdXQgb2Yg
UmVuZGVyTGF5ZXIpCisgICAgICAgIGlzIGZpbmFsbHkgY2xvc2VkLgorCisgICAgICAgIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBET00vRE9NSFRNTC5tbToKKyAgICAg
ICAgKC1bRE9NSFRNTEVsZW1lbnQgc2Nyb2xsWE9mZnNldF0pOgorICAgICAgICAoLVtET01IVE1M
RWxlbWVudCBzY3JvbGxZT2Zmc2V0XSk6CisgICAgICAgICgtW0RPTUhUTUxFbGVtZW50IHNldFNj
cm9sbFhPZmZzZXQ6c2Nyb2xsWU9mZnNldDphZGp1c3RGb3JJT1NDYXJldDpdKToKKwogMjAyMS0w
MS0yMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgW0FwcGxl
IFBheV0gdXNlIHRoZSBmaXJzdCBpdGVtIGluIGBzaGlwcGluZ09wdGlvbnNgIGV2ZW4gd2hlbiBp
dCdzIG5vdCBgc2VsZWN0ZWRgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA0ODcyNzAzZTNiZjlj
MjdjOGVhYTYwMTRiZDgyZWRjMGQxZDI1MTdhLi44NTcwOWQ4NTM0MDcxMzVkZjJhODAzOTJiZTMz
MGVhYThjOTlmN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTM5MjAsNyArMzkyMCw5IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2Nyb2xsVG8oY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogaXMgcG9pbnQg
YSBTY3JvbGxPZmZzZXQgb3IgU2Nyb2xsUG9zaXRpb24/IFRlc3QgaW4gUlRMIG92ZXJmbG93Lgot
ICAgIGJveC5sYXllcigpLT5lbnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCktPnNjcm9sbFRvT2Zm
c2V0KHBvaW50KTsKKyAgICBBU1NFUlQoYm94LmxheWVyKCkpOworICAgIEFTU0VSVChib3gubGF5
ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSk7CisgICAgYm94LmxheWVyKCktPnNjcm9sbGFibGVBcmVh
KCktPnNjcm9sbFRvT2Zmc2V0KHBvaW50KTsKIH0KIAogI2lmIEVOQUJMRShNQVRITUwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKaW5kZXggMGFkZjdkMTY0ZTJl
NGUyYjBmYjExM2YwM2ExYmQzYTczYzI3MTI3NS4uMmY4Y2I2OWJlMzcwZjRmYjZhMjRkZDYwMzAy
NDg1NzhjNzUwODM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVl
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2luY2x1ZGUg
IlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJSZW5kZXJNYXJxdWVlLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtMTc1LDcgKzE3NiwxMCBA
QCBSZW5kZXJNYXJxdWVlKiBIVE1MTWFycXVlZUVsZW1lbnQ6OnJlbmRlck1hcnF1ZWUoKSBjb25z
dAogewogICAgIGlmICghcmVuZGVyZXIoKSB8fCAhcmVuZGVyZXIoKS0+aGFzTGF5ZXIoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHJlbmRlckJveE1vZGVsT2JqZWN0KCkt
PmxheWVyKCktPm1hcnF1ZWUoKTsKKyAgICBhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSByZW5kZXJC
b3hNb2RlbE9iamVjdCgpLT5sYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpOworICAgIGlmICghc2Ny
b2xsYWJsZUxheWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc2Nyb2xs
YWJsZUxheWVyLT5tYXJxdWVlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2Zjg2ZmEyODY1ZDFlNjI3NjdhMDM3Yjk0
MGMwYzJmMjUzODU0Y2I1Li5kZTljNzM3NWY4YzI5OWYyNjhlZTczZWQ4YjI2YTMwZWJmNjg0MWY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xNDk2LDcgKzE0OTYsNyBA
QCBPcHRpb25hbDxDdXJzb3I+IEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKGNvbnN0IEhpdFRl
c3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBzaAogICAgICAgICAgICAgaWYgKGF1dG8qIGxheWVyID0g
ZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4oKnJlbmRlcmVyKS5sYXllcigpKSB7CiAg
ICAgICAgICAgICAgICAgaW5SZXNpemVyID0gbGF5ZXItPmlzUG9pbnRJblJlc2l6ZUNvbnRyb2wo
cm91bmRlZEludFBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkpKTsKICAgICAgICAgICAgICAgICBp
ZiAoaW5SZXNpemVyKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGF5ZXItPnNob3VsZFBs
YWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSA/IHNvdXRoV2VzdFJlc2l6ZUN1cnNv
cigpIDogc291dGhFYXN0UmVzaXplQ3Vyc29yKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsYXllci0+cmVuZGVyZXIoKS5zaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25M
ZWZ0KCkgPyBzb3V0aFdlc3RSZXNpemVDdXJzb3IoKSA6IHNvdXRoRWFzdFJlc2l6ZUN1cnNvcigp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCA3NmFlNmY5OGJiNWNkNjNlZjkzNmU0NjUwYWQ0ZWIwMDQ3NzgxNjliLi4yNzI0NDZhYTNm
ODgyZjcwZDNlYWM3YTA1YmRkODEzMTZlZmFlMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC0yNTk3LDcgKzI1OTcsOCBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlTGF5ZXJQb3Np
dGlvbnNBZnRlclNjcm9sbGluZygpCiAgICAgaWYgKCFsYXlvdXRDb250ZXh0KCkuaXNMYXlvdXRO
ZXN0ZWQoKSAmJiBoYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKSB7CiAgICAgICAgIGlm
IChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpKSB7CiAgICAgICAg
ICAgICB1cGRhdGVXaWRnZXRQb3NpdGlvbnMoKTsKLSAgICAgICAgICAgIHJlbmRlclZpZXctPmxh
eWVyKCktPnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJEb2N1bWVudFNjcm9sbCgpOworICAgICAg
ICAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVMYXllciA9IHJlbmRlclZpZXctPmxheWVyKCktPnNj
cm9sbGFibGVBcmVhKCkpCisgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT51cGRhdGVM
YXllclBvc2l0aW9uc0FmdGVyRG9jdW1lbnRTY3JvbGwoKTsKICAgICAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggYTc5
ZWRlMTNiN2VlY2I1ZTA2YTE2NTI1NGU5N2RiYTMwNzIyMTM3Ni4uZTQ2Y2IyM2ZiZWRhMzEzYTEy
ZWI1ZTYyMzQzZjhmYzdmNjAyOTkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAKQEAgLTM0OSw3ICszNDksOCBAQCB2b2lkIFJlbmRlckJsb2NrRmxv
dzo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdp
ZHRoLAogCiAgICAgaWYgKCFzdHlsZSgpLmF1dG9XcmFwKCkgJiYgY2hpbGRyZW5JbmxpbmUoKSkg
ewogICAgICAgICAvLyBBIGhvcml6b250YWwgbWFycXVlZSB3aXRoIGlubGluZSBjaGlsZHJlbiBo
YXMgbm8gbWluaW11bSB3aWR0aC4KLSAgICAgICAgaWYgKGxheWVyKCkgJiYgbGF5ZXIoKS0+bWFy
cXVlZSgpICYmIGxheWVyKCktPm1hcnF1ZWUoKS0+aXNIb3Jpem9udGFsKCkpCisgICAgICAgIGF1
dG8qIHNjcm9sbGFibGVMYXllciA9IGxheWVyKCkgPyBsYXllcigpLT5zY3JvbGxhYmxlQXJlYSgp
IDogbnVsbHB0cjsKKyAgICAgICAgaWYgKHNjcm9sbGFibGVMYXllciAmJiBzY3JvbGxhYmxlTGF5
ZXItPm1hcnF1ZWUoKSAmJiBzY3JvbGxhYmxlTGF5ZXItPm1hcnF1ZWUoKS0+aXNIb3Jpem9udGFs
KCkpCiAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSAwOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAwNzVlMjdhZThiYjUzMDJjYWVmMmM4ZTMz
ZjFhNGNhNzI1YjViMTUwLi5hODlkZGIxZDFhY2U1NzQwMDNmZGQ2ZjMxNWUzZDQ0NDRlNjkxYjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMzIwLDEwICszMjAs
MTIgQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUKICAgICAvLyBJZiBvdXIgem9vbSBmYWN0b3Ig
Y2hhbmdlcyBhbmQgd2UgaGF2ZSBhIGRlZmluZWQgc2Nyb2xsTGVmdC9Ub3AsIHdlIG5lZWQgdG8g
YWRqdXN0IHRoYXQgdmFsdWUgaW50byB0aGUKICAgICAvLyBuZXcgem9vbWVkIGNvb3JkaW5hdGUg
c3BhY2UuCiAgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpICYmIGxheWVyKCkgJiYgb2xkU3R5bGUg
JiYgb2xkU3R5bGUtPmVmZmVjdGl2ZVpvb20oKSAhPSBuZXdTdHlsZS5lZmZlY3RpdmVab29tKCkp
IHsKLSAgICAgICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24gPSBsYXllcigpLT5zY3Jv
bGxQb3NpdGlvbigpOwotICAgICAgICBmbG9hdCB6b29tU2NhbGVGYWN0b3IgPSBuZXdTdHlsZS5l
ZmZlY3RpdmVab29tKCkgLyBvbGRTdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOwotICAgICAgICBzY3Jv
bGxQb3NpdGlvbi5zY2FsZSh6b29tU2NhbGVGYWN0b3IpOwotICAgICAgICBsYXllcigpLT5zZXRQ
b3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOworICAgICAgICBpZiAoYXV0
byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSkgeworICAgICAg
ICAgICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxhYmxlTGF5ZXItPnNj
cm9sbFBvc2l0aW9uKCk7CisgICAgICAgICAgICBmbG9hdCB6b29tU2NhbGVGYWN0b3IgPSBuZXdT
dHlsZS5lZmZlY3RpdmVab29tKCkgLyBvbGRTdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOworICAgICAg
ICAgICAgc2Nyb2xsUG9zaXRpb24uc2NhbGUoem9vbVNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAg
IHNjcm9sbGFibGVMYXllci0+c2V0UG9zdExheW91dFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0
aW9uKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIE91ciBvcGFxdWVuZXNzIG1pZ2h0IGhh
dmUgY2hhbmdlZCB3aXRob3V0IHRyaWdnZXJpbmcgbGF5b3V0LgpAQCAtNTcyLDEyICs1NzQsMTQg
QEAgaW50IFJlbmRlckJveDo6c2Nyb2xsSGVpZ2h0KCkgY29uc3QKIAogaW50IFJlbmRlckJveDo6
c2Nyb2xsTGVmdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc092ZXJmbG93Q2xpcCgpICYmIGxh
eWVyKCkgPyBsYXllcigpLT5zY3JvbGxQb3NpdGlvbigpLngoKSA6IDA7CisgICAgYXV0byogc2Ny
b2xsYWJsZUxheWVyID0gbGF5ZXIoKSA/IGxheWVyKCktPnNjcm9sbGFibGVBcmVhKCkgOiBudWxs
cHRyOworICAgIHJldHVybiAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgc2Nyb2xsYWJsZUxheWVyKSA/
IHNjcm9sbGFibGVMYXllci0+c2Nyb2xsUG9zaXRpb24oKS54KCkgOiAwOwogfQogCiBpbnQgUmVu
ZGVyQm94OjpzY3JvbGxUb3AoKSBjb25zdAogewotICAgIHJldHVybiBoYXNPdmVyZmxvd0NsaXAo
KSAmJiBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsUG9zaXRpb24oKS55KCkgOiAwOworICAgIGF1
dG8qIHNjcm9sbGFibGVMYXllciA9IGxheWVyKCkgPyBsYXllcigpLT5zY3JvbGxhYmxlQXJlYSgp
IDogbnVsbHB0cjsKKyAgICByZXR1cm4gKGhhc092ZXJmbG93Q2xpcCgpICYmIHNjcm9sbGFibGVM
YXllcikgPyBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbFBvc2l0aW9uKCkueSgpIDogMDsKIH0KIAog
dm9pZCBSZW5kZXJCb3g6OnJlc2V0TG9naWNhbEhlaWdodEJlZm9yZUxheW91dElmTmVlZGVkKCkK
QEAgLTU4NiwzOCArNTkwLDQyIEBAIHZvaWQgUmVuZGVyQm94OjpyZXNldExvZ2ljYWxIZWlnaHRC
ZWZvcmVMYXlvdXRJZk5lZWRlZCgpCiAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoMF9sdSk7CiB9
CiAKLXN0YXRpYyB2b2lkIHNldHVwV2hlZWxFdmVudE1vbml0b3IoUmVuZGVyTGF5ZXImIGxheWVy
KQorc3RhdGljIHZvaWQgc2V0dXBXaGVlbEV2ZW50TW9uaXRvcihSZW5kZXJMYXllclNjcm9sbGFi
bGVBcmVhJiBzY3JvbGxhYmxlTGF5ZXIpCiB7Ci0gICAgUGFnZSYgcGFnZSA9IGxheWVyLnJlbmRl
cmVyKCkucGFnZSgpOworICAgIFBhZ2UmIHBhZ2UgPSBzY3JvbGxhYmxlTGF5ZXIubGF5ZXIoKS5y
ZW5kZXJlcigpLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UuaXNNb25pdG9yaW5nV2hlZWxFdmVudHMo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8qIHNjcm9sbGFibGVMYXllciA9IGxheWVyLnNj
cm9sbGFibGVBcmVhKCk7Ci0gICAgQVNTRVJUKHNjcm9sbGFibGVMYXllcik7Ci0gICAgc2Nyb2xs
YWJsZUxheWVyLT5zY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0TW9uaXRvcihwYWdl
LndoZWVsRXZlbnRUZXN0TW9uaXRvcigpKTsKKyAgICBzY3JvbGxhYmxlTGF5ZXIuc2Nyb2xsQW5p
bWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFnZS53aGVlbEV2ZW50VGVzdE1vbml0
b3IoKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpzZXRTY3JvbGxMZWZ0KGludCBuZXdMZWZ0LCBj
b25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFo
YXNPdmVyZmxvd0NsaXAoKSB8fCAhbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNldHVw
V2hlZWxFdmVudE1vbml0b3IoKmxheWVyKCkpOwotICAgIGxheWVyKCktPmVuc3VyZUxheWVyU2Ny
b2xsYWJsZUFyZWEoKS0+c2Nyb2xsVG9YUG9zaXRpb24obmV3TGVmdCwgb3B0aW9ucyk7CisgICAg
YXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKTsKKyAgICBB
U1NFUlQoc2Nyb2xsYWJsZUxheWVyKTsKKyAgICBzZXR1cFdoZWVsRXZlbnRNb25pdG9yKCpzY3Jv
bGxhYmxlTGF5ZXIpOworICAgIHNjcm9sbGFibGVMYXllci0+c2Nyb2xsVG9YUG9zaXRpb24obmV3
TGVmdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpzZXRTY3JvbGxUb3AoaW50IG5l
d1RvcCwgY29uc3QgU2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGlmICghaGFzT3ZlcmZsb3dDbGlwKCkgfHwgIWxheWVyKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBzZXR1cFdoZWVsRXZlbnRNb25pdG9yKCpsYXllcigpKTsKLSAgICBsYXllcigpLT5lbnN1cmVM
YXllclNjcm9sbGFibGVBcmVhKCktPnNjcm9sbFRvWVBvc2l0aW9uKG5ld1RvcCwgb3B0aW9ucyk7
CisgICAgYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKTsK
KyAgICBBU1NFUlQoc2Nyb2xsYWJsZUxheWVyKTsKKyAgICBzZXR1cFdoZWVsRXZlbnRNb25pdG9y
KCpzY3JvbGxhYmxlTGF5ZXIpOworICAgIHNjcm9sbGFibGVMYXllci0+c2Nyb2xsVG9ZUG9zaXRp
b24obmV3VG9wLCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OnNldFNjcm9sbFBvc2l0
aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgU2Nyb2xsUG9zaXRpb25D
aGFuZ2VPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghaGFzT3ZlcmZsb3dDbGlwKCkgfHwg
IWxheWVyKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBzZXR1cFdoZWVsRXZlbnRNb25pdG9yKCps
YXllcigpKTsKLSAgICBsYXllcigpLT5lbnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCktPnNldFNj
cm9sbFBvc2l0aW9uKHBvc2l0aW9uLCBvcHRpb25zKTsKKyAgICBhdXRvKiBzY3JvbGxhYmxlTGF5
ZXIgPSBsYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpOworICAgIEFTU0VSVChzY3JvbGxhYmxlTGF5
ZXIpOworICAgIHNldHVwV2hlZWxFdmVudE1vbml0b3IoKnNjcm9sbGFibGVMYXllcik7CisgICAg
c2Nyb2xsYWJsZUxheWVyLT5zZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbiwgb3B0aW9ucyk7CiB9
CiAKIHZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKQEAgLTgzNSwxMiAr
ODQzLDE4IEBAIGJvb2wgUmVuZGVyQm94OjppbmNsdWRlSG9yaXpvbnRhbFNjcm9sbGJhclNpemUo
KSBjb25zdAogCiBpbnQgUmVuZGVyQm94Ojp2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gaW5jbHVkZVZlcnRpY2FsU2Nyb2xsYmFyU2l6ZSgpID8gbGF5ZXIoKS0+
dmVydGljYWxTY3JvbGxiYXJXaWR0aCgpIDogMDsKKyAgICBhdXRvKiBzY3JvbGxhYmxlTGF5ZXIg
PSBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSA6IG51bGxwdHI7CisgICAgaWYg
KCFzY3JvbGxhYmxlTGF5ZXIpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBpbmNsdWRl
VmVydGljYWxTY3JvbGxiYXJTaXplKCkgPyBzY3JvbGxhYmxlTGF5ZXItPnZlcnRpY2FsU2Nyb2xs
YmFyV2lkdGgoKSA6IDA7CiB9CiAKIGludCBSZW5kZXJCb3g6Omhvcml6b250YWxTY3JvbGxiYXJI
ZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBpbmNsdWRlSG9yaXpvbnRhbFNjcm9sbGJhclNp
emUoKSA/IGxheWVyKCktPmhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoKSA6IDA7CisgICAgYXV0
byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIoKSA/IGxheWVyKCktPnNjcm9sbGFibGVBcmVhKCkg
OiBudWxscHRyOworICAgIGlmICghc2Nyb2xsYWJsZUxheWVyKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gaW5jbHVkZUhvcml6b250YWxTY3JvbGxiYXJTaXplKCkgPyBzY3JvbGxhYmxl
TGF5ZXItPmhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoKSA6IDA7CiB9CiAKIGludCBSZW5kZXJC
b3g6OmludHJpbnNpY1Njcm9sbGJhckxvZ2ljYWxXaWR0aCgpIGNvbnN0CkBAIC04NjMsOCArODc3
LDggQEAgaW50IFJlbmRlckJveDo6aW50cmluc2ljU2Nyb2xsYmFyTG9naWNhbFdpZHRoKCkgY29u
c3QKIAogYm9vbCBSZW5kZXJCb3g6OnNjcm9sbExheWVyKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rp
b24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyLCBFbGVt
ZW50Kiogc3RvcEVsZW1lbnQpCiB7Ci0gICAgUmVuZGVyTGF5ZXIqIGJveExheWVyID0gbGF5ZXIo
KTsKLSAgICBpZiAoYm94TGF5ZXIgJiYgYm94TGF5ZXItPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51
bGFyaXR5LCBtdWx0aXBsaWVyKSkgeworICAgIGF1dG8qIGJveExheWVyU2Nyb2xsYWJsZSA9IGxh
eWVyKCkgPyBsYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cjsKKyAgICBpZiAoYm94
TGF5ZXJTY3JvbGxhYmxlICYmIGJveExheWVyU2Nyb2xsYWJsZS0+c2Nyb2xsKGRpcmVjdGlvbiwg
Z3JhbnVsYXJpdHksIG11bHRpcGxpZXIpKSB7CiAgICAgICAgIGlmIChzdG9wRWxlbWVudCkKICAg
ICAgICAgICAgICpzdG9wRWxlbWVudCA9IGVsZW1lbnQoKTsKIApAQCAtODk0LDE0ICs5MDgsMTMg
QEAgYm9vbCBSZW5kZXJCb3g6OmxvZ2ljYWxTY3JvbGwoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiBk
aXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXQKIHsKICAgICBib29sIHNjcm9sbGVkID0gZmFsc2U7
CiAgICAgCi0gICAgUmVuZGVyTGF5ZXIqIGwgPSBsYXllcigpOwotICAgIGlmIChsKSB7CisgICAg
aWYgKGF1dG8qIGJveExheWVyU2Nyb2xsYWJsZSA9IGxheWVyKCkgPyBsYXllcigpLT5zY3JvbGxh
YmxlQXJlYSgpIDogbnVsbHB0cikgewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICAvLyBP
biBNYWMgb25seSB3ZSByZXNldCB0aGUgaW5saW5lIGRpcmVjdGlvbiBwb3NpdGlvbiB3aGVuIGRv
aW5nIGEgZG9jdW1lbnQgc2Nyb2xsIChlLmcuLCBoaXR0aW5nIEhvbWUvRW5kKS4KICAgICAgICAg
aWYgKGdyYW51bGFyaXR5ID09IFNjcm9sbEJ5RG9jdW1lbnQpCi0gICAgICAgICAgICBzY3JvbGxl
ZCA9IGwtPnNjcm9sbChsb2dpY2FsVG9QaHlzaWNhbChTY3JvbGxJbmxpbmVEaXJlY3Rpb25CYWNr
d2FyZCwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NX
cml0aW5nTW9kZSgpKSwgU2Nyb2xsQnlEb2N1bWVudCwgbXVsdGlwbGllcik7CisgICAgICAgICAg
ICBzY3JvbGxlZCA9IGJveExheWVyU2Nyb2xsYWJsZS0+c2Nyb2xsKGxvZ2ljYWxUb1BoeXNpY2Fs
KFNjcm9sbElubGluZURpcmVjdGlvbkJhY2t3YXJkLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
LCBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpLCBTY3JvbGxCeURvY3VtZW50
LCBtdWx0aXBsaWVyKTsKICNlbmRpZgotICAgICAgICBpZiAobC0+c2Nyb2xsKGxvZ2ljYWxUb1Bo
eXNpY2FsKGRpcmVjdGlvbiwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgc3R5bGUoKS5pc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSwgZ3JhbnVsYXJpdHksIG11bHRpcGxpZXIpKQorICAg
ICAgICBpZiAoYm94TGF5ZXJTY3JvbGxhYmxlLT5zY3JvbGwobG9naWNhbFRvUGh5c2ljYWwoZGly
ZWN0aW9uLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nr
c1dyaXRpbmdNb2RlKCkpLCBncmFudWxhcml0eSwgbXVsdGlwbGllcikpCiAgICAgICAgICAgICBz
Y3JvbGxlZCA9IHRydWU7CiAgICAgICAgIAogICAgICAgICBpZiAoc2Nyb2xsZWQpIHsKQEAgLTEw
MjcsOCArMTA0MCw4IEBAIFJlbmRlckJveCogUmVuZGVyQm94OjpmaW5kQXV0b3Njcm9sbGFibGUo
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAogdm9pZCBSZW5kZXJCb3g6OnBhblNjcm9sbChjb25z
dCBJbnRQb2ludCYgc291cmNlKQogewotICAgIGlmIChsYXllcigpKQotICAgICAgICBsYXllcigp
LT5wYW5TY3JvbGxGcm9tUG9pbnQoc291cmNlKTsKKyAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUxh
eWVyID0gbGF5ZXIoKSA/IGxheWVyKCktPnNjcm9sbGFibGVBcmVhKCkgOiBudWxscHRyKQorICAg
ICAgICBzY3JvbGxhYmxlTGF5ZXItPnBhblNjcm9sbEZyb21Qb2ludChzb3VyY2UpOwogfQogCiBi
b29sIFJlbmRlckJveDo6Y2FuVXNlT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdApAQCAtMTA1Nyw3
ICsxMDcwLDExIEBAIFNjcm9sbFBvc2l0aW9uIFJlbmRlckJveDo6c2Nyb2xsUG9zaXRpb24oKSBj
b25zdAogICAgICAgICByZXR1cm4geyAwLCAwIH07CiAKICAgICBBU1NFUlQoaGFzTGF5ZXIoKSk7
Ci0gICAgcmV0dXJuIGxheWVyKCktPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgYXV0byogc2Nyb2xs
YWJsZUxheWVyID0gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKTsKKyAgICBpZiAoIXNjcm9sbGFi
bGVMYXllcikKKyAgICAgICAgcmV0dXJuIHsgMCwgMCB9OworCisgICAgcmV0dXJuIHNjcm9sbGFi
bGVMYXllci0+c2Nyb2xsUG9zaXRpb24oKTsKIH0KIAogTGF5b3V0U2l6ZSBSZW5kZXJCb3g6OmNh
Y2hlZFNpemVGb3JPdmVyZmxvd0NsaXAoKSBjb25zdApAQCAtMTYyMSw5ICsxNjM4LDEwIEBAIGJv
b2wgUmVuZGVyQm94Ojpjb21wdXRlQmFja2dyb3VuZElzS25vd25Ub0JlT2JzY3VyZWQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2ZmCiAgICAgaWYgKCFnZXRCYWNrZ3JvdW5kUGFpbnRlZEV4dGVu
dChwYWludE9mZnNldCwgYmFja2dyb3VuZFJlY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoaGFzTGF5ZXIoKSAmJiBsYXllcigpLT5zY3JvbGxpbmdNYXlSZXZlYWxCYWNrZ3Jv
dW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgIGlmIChhdXRvKiBzY3JvbGxhYmxl
TGF5ZXIgPSBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSA6IG51bGxwdHIpIHsK
KyAgICAgICAgaWYgKHNjcm9sbGFibGVMYXllci0+c2Nyb2xsaW5nTWF5UmV2ZWFsQmFja2dyb3Vu
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICByZXR1cm4gZm9yZWdy
b3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGJhY2tncm91bmRSZWN0LCBiYWNrZ3JvdW5kT2Jz
Y3VyYXRpb25UZXN0TWF4RGVwdGgpOwogfQogCkBAIC0xOTQwLDEwICsxOTU4LDEwIEBAIExheW91
dFJlY3QgUmVuZGVyQm94OjpvdmVyZmxvd0NsaXBSZWN0KGNvbnN0IExheW91dFBvaW50JiBsb2Nh
dGlvbiwgUmVuZGVyRnJhZ21lCiAgICAgY2xpcFJlY3Quc2V0U2l6ZShjbGlwUmVjdC5zaXplKCkg
LSBMYXlvdXRTaXplKGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCksIGJvcmRlclRvcCgpICsg
Ym9yZGVyQm90dG9tKCkpKTsKIAogICAgIC8vIFN1YnRyYWN0IG91dCBzY3JvbGxiYXJzIGlmIHdl
IGhhdmUgdGhlbS4KLSAgICBpZiAobGF5ZXIoKSkgeworICAgIGlmIChhdXRvKiBzY3JvbGxhYmxl
TGF5ZXIgPSBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSA6IG51bGxwdHIpIHsK
ICAgICAgICAgaWYgKHNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSkK
LSAgICAgICAgICAgIGNsaXBSZWN0Lm1vdmUobGF5ZXIoKS0+dmVydGljYWxTY3JvbGxiYXJXaWR0
aChyZWxldmFuY3kpLCAwKTsKLSAgICAgICAgY2xpcFJlY3QuY29udHJhY3QobGF5ZXIoKS0+dmVy
dGljYWxTY3JvbGxiYXJXaWR0aChyZWxldmFuY3kpLCBsYXllcigpLT5ob3Jpem9udGFsU2Nyb2xs
YmFySGVpZ2h0KHJlbGV2YW5jeSkpOworICAgICAgICAgICAgY2xpcFJlY3QubW92ZShzY3JvbGxh
YmxlTGF5ZXItPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgocmVsZXZhbmN5KSwgMCk7CisgICAgICAg
IGNsaXBSZWN0LmNvbnRyYWN0KHNjcm9sbGFibGVMYXllci0+dmVydGljYWxTY3JvbGxiYXJXaWR0
aChyZWxldmFuY3kpLCBzY3JvbGxhYmxlTGF5ZXItPmhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQo
cmVsZXZhbmN5KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGNsaXBSZWN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggODM4MjU2
YzExZWYyNGZlNGJmZGNhN2Q2ZGYxMzY5NGRiZmVkOGZkMC4uNWEyNTkxNjFiMWRjYTYxMzZmOGE2
OWJkNzM3OGUyNmE3MzI5ZWExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKICNpbmNsdWRlICJS
ZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhLmgiCiAjaW5jbHVkZSAiUmVuZGVyTXVsdGlDb2x1bW5GbG93LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGFibGUuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgpAQCAtNDg5LDggKzQ5MCwx
MCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlU3RpY2t5UG9zaXRpb25Db25z
dHJhaW50cyhTdGlja3lQb3NpdGlvblZpZXdwbwogICAgICAgICBGbG9hdFBvaW50IGNvbnRhaW5l
ckxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yID0gY29udGFpbmVyUmVjdFJlbGF0
aXZlVG9TY3JvbGxpbmdBbmNlc3Rvci5sb2NhdGlvbigpIC0KICAgICAgICAgICAgIEZsb2F0U2l6
ZShlbmNsb3NpbmdDbGlwcGluZ0JveC5ib3JkZXJMZWZ0KCkgKyBlbmNsb3NpbmdDbGlwcGluZ0Jv
eC5wYWRkaW5nTGVmdCgpLAogICAgICAgICAgICAgZW5jbG9zaW5nQ2xpcHBpbmdCb3guYm9yZGVy
VG9wKCkgKyBlbmNsb3NpbmdDbGlwcGluZ0JveC5wYWRkaW5nVG9wKCkpOwotICAgICAgICBpZiAo
JmVuY2xvc2luZ0NsaXBwaW5nQm94ICE9IGNvbnRhaW5pbmdCbG9jaykKLSAgICAgICAgICAgIGNv
bnRhaW5lckxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yICs9IGVuY2xvc2luZ0Ns
aXBwaW5nTGF5ZXItPnNjcm9sbE9mZnNldCgpOworICAgICAgICBpZiAoJmVuY2xvc2luZ0NsaXBw
aW5nQm94ICE9IGNvbnRhaW5pbmdCbG9jaykgeworICAgICAgICAgICAgaWYgKGF1dG8qIHNjcm9s
bGFibGVFbmNsb3NpbmdDbGlwcGluZ0xheWVyID0gZW5jbG9zaW5nQ2xpcHBpbmdMYXllci0+c2Ny
b2xsYWJsZUFyZWEoKSkKKyAgICAgICAgICAgICAgICBjb250YWluZXJMb2NhdGlvblJlbGF0aXZl
VG9TY3JvbGxpbmdBbmNlc3RvciArPSBzY3JvbGxhYmxlRW5jbG9zaW5nQ2xpcHBpbmdMYXllci0+
c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIH0KICAgICAgICAgY29udGFpbmVyUmVjdFJlbGF0aXZl
VG9TY3JvbGxpbmdBbmNlc3Rvci5zZXRMb2NhdGlvbihjb250YWluZXJMb2NhdGlvblJlbGF0aXZl
VG9TY3JvbGxpbmdBbmNlc3Rvcik7CiAgICAgfQogICAgIGNvbnN0cmFpbnRzLnNldENvbnRhaW5p
bmdCbG9ja1JlY3QoY29udGFpbmVyUmVjdFJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3Rvcik7CkBA
IC01MDcsOCArNTEwLDEwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVTdGlj
a3lQb3NpdGlvbkNvbnN0cmFpbnRzKFN0aWNreVBvc2l0aW9uVmlld3BvCiAgICAgaWYgKGVuY2xv
c2luZ0NsaXBwaW5nTGF5ZXIpIHsKICAgICAgICAgc3RpY2t5TG9jYXRpb25SZWxhdGl2ZVRvU2Ny
b2xsaW5nQW5jZXN0b3IgLT0gRmxvYXRTaXplKGVuY2xvc2luZ0NsaXBwaW5nQm94LmJvcmRlckxl
ZnQoKSArIGVuY2xvc2luZ0NsaXBwaW5nQm94LnBhZGRpbmdMZWZ0KCksCiAgICAgICAgICAgICBl
bmNsb3NpbmdDbGlwcGluZ0JveC5ib3JkZXJUb3AoKSArIGVuY2xvc2luZ0NsaXBwaW5nQm94LnBh
ZGRpbmdUb3AoKSk7Ci0gICAgICAgIGlmICgmZW5jbG9zaW5nQ2xpcHBpbmdCb3ggIT0gY29udGFp
bmluZ0Jsb2NrKQotICAgICAgICAgICAgc3RpY2t5TG9jYXRpb25SZWxhdGl2ZVRvU2Nyb2xsaW5n
QW5jZXN0b3IgKz0gZW5jbG9zaW5nQ2xpcHBpbmdMYXllci0+c2Nyb2xsT2Zmc2V0KCk7CisgICAg
ICAgIGlmICgmZW5jbG9zaW5nQ2xpcHBpbmdCb3ggIT0gY29udGFpbmluZ0Jsb2NrKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUVuY2xvc2luZ0NsaXBwaW5nTGF5ZXIgPSBlbmNs
b3NpbmdDbGlwcGluZ0xheWVyLT5zY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICAgICAgICAgIHN0
aWNreUxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yICs9IHNjcm9sbGFibGVFbmNs
b3NpbmdDbGlwcGluZ0xheWVyLT5zY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgfQogICAgIH0KICAg
ICAvLyBGSVhNRTogRm9yIG5vdywgYXNzdW1lIHRoYXQgfHRoaXN8IGlzIG5vdCB0cmFuc2Zvcm1l
ZC4KICAgICBzdGlja3lCb3hSZWxhdGl2ZVRvU2Nyb2xsaW5nQW5lY3N0b3Iuc2V0TG9jYXRpb24o
c3RpY2t5TG9jYXRpb25SZWxhdGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3IpOwpAQCAtNTQ3LDExICs1
NTIsMTQgQEAgRmxvYXRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb25zdHJhaW5pbmdSZWN0
Rm9yU3RpY2t5UG9zaXRpb24oKSBjb25zdAogCiAgICAgICAgIEZsb2F0UmVjdCBjb25zdHJhaW5p
bmdSZWN0ID0gZW5jbG9zaW5nQ2xpcHBpbmdCb3gubG9jYWxUb0NvbnRhaW5lclF1YWQoRmxvYXRS
ZWN0KGNsaXBSZWN0KSwgJnZpZXcoKSkuYm91bmRpbmdCb3goKTsKIAotICAgICAgICBGbG9hdFBv
aW50IHNjcm9sbE9mZnNldCA9IEZsb2F0UG9pbnQoKSArIGVuY2xvc2luZ0NsaXBwaW5nTGF5ZXIt
PnNjcm9sbE9mZnNldCgpOworICAgICAgICBhdXRvKiBzY3JvbGxhYmxlRW5jbG9zaW5nQ2xpcHBp
bmdMYXllciA9IGVuY2xvc2luZ0NsaXBwaW5nTGF5ZXItPnNjcm9sbGFibGVBcmVhKCk7CisgICAg
ICAgIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0OworICAgICAgICBpZiAoc2Nyb2xsYWJsZUVuY2xv
c2luZ0NsaXBwaW5nTGF5ZXIpCisgICAgICAgICAgICBzY3JvbGxPZmZzZXQgPSBGbG9hdFBvaW50
KCkgKyBzY3JvbGxhYmxlRW5jbG9zaW5nQ2xpcHBpbmdMYXllci0+c2Nyb2xsT2Zmc2V0KCk7CiAK
ICAgICAgICAgZmxvYXQgc2Nyb2xsYmFyT2Zmc2V0ID0gMDsKLSAgICAgICAgaWYgKGVuY2xvc2lu
Z0NsaXBwaW5nQm94Lmhhc0xheWVyKCkgJiYgZW5jbG9zaW5nQ2xpcHBpbmdCb3guc2hvdWxkUGxh
Y2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVmdCgpKQotICAgICAgICAgICAgc2Nyb2xsYmFy
T2Zmc2V0ID0gZW5jbG9zaW5nQ2xpcHBpbmdCb3gubGF5ZXIoKS0+dmVydGljYWxTY3JvbGxiYXJX
aWR0aChJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSk7CisgICAgICAgIGlmIChlbmNsb3NpbmdD
bGlwcGluZ0JveC5oYXNMYXllcigpICYmIGVuY2xvc2luZ0NsaXBwaW5nQm94LnNob3VsZFBsYWNl
QmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSAmJiBzY3JvbGxhYmxlRW5jbG9zaW5nQ2xp
cHBpbmdMYXllcikKKyAgICAgICAgICAgIHNjcm9sbGJhck9mZnNldCA9IHNjcm9sbGFibGVFbmNs
b3NpbmdDbGlwcGluZ0xheWVyLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKElnbm9yZU92ZXJsYXlT
Y3JvbGxiYXJTaXplKTsKIAogICAgICAgICBjb25zdHJhaW5pbmdSZWN0LnNldExvY2F0aW9uKEZs
b2F0UG9pbnQoc2Nyb2xsT2Zmc2V0LngoKSArIHNjcm9sbGJhck9mZnNldCwgc2Nyb2xsT2Zmc2V0
LnkoKSkpOwogICAgICAgICByZXR1cm4gY29uc3RyYWluaW5nUmVjdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGMzMjRiMTY3M2UxNDU2NGI5YTRkYmQ2MWUz
ZGZmMTAxZjVlYTE4OWEuLmU4YzVkNWM4YmM3NzEyMGVjNjFmYTZjMzY3NzZmMjkzNmRhM2FjNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzc2LDk0ICsz
NzYsNiBAQCBSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKCkKICAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHJlbmRlcmVyKCkucmVuZGVyVHJlZUJlaW5nRGVzdHJv
eWVkKCkgfHwgIWZpcnN0Q2hpbGQoKSk7CiB9CiAKLS8vIFN0YXJ0IG9mIHRlbXBvcmFyeSBnbHVl
IGNvZGUgdG8gaGVscCBsYW5kaW5nIHdlYmtpdC5vcmcvYi82MDMwNSAoc3BsaXQgUmVuZGVyTGF5
ZXIgaW50byBSZW5kZXJMYXllci9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhKQotU2Nyb2xsT2Zm
c2V0IFJlbmRlckxheWVyOjpzY3JvbGxPZmZzZXQoKSBjb25zdAotewotICAgIGlmIChtX3Njcm9s
bGFibGVBcmVhKQotICAgICAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsT2Zmc2V0
KCk7Ci0gICAgcmV0dXJuIHsgMCwgMCB9OwotfQotCi1ib29sIFJlbmRlckxheWVyOjpzaG91bGRQ
bGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
cmVuZGVyZXIoKS5zaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCk7Ci19
Ci0KLVJlbmRlck1hcnF1ZWUqIFJlbmRlckxheWVyOjptYXJxdWVlKCkgY29uc3QKLXsKLSAgICBp
ZiAobV9zY3JvbGxhYmxlQXJlYSkKLSAgICAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEtPm1h
cnF1ZWUoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBSZW5kZXJMYXllcjo6dXBk
YXRlTGF5ZXJQb3NpdGlvbnNBZnRlckRvY3VtZW50U2Nyb2xsKCkKLXsKLSAgICBpZiAobV9zY3Jv
bGxhYmxlQXJlYSkKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+dXBkYXRlTGF5ZXJQb3NpdGlv
bnNBZnRlckRvY3VtZW50U2Nyb2xsKCk7Ci19Ci0KLXZvaWQgUmVuZGVyTGF5ZXI6OnNldFBvc3RM
YXlvdXRTY3JvbGxQb3NpdGlvbihPcHRpb25hbDxTY3JvbGxQb3NpdGlvbj4gcG9zaXRpb24pCi17
Ci0gICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNl
dFBvc3RMYXlvdXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbik7Ci19Ci0KLXZvaWQgUmVuZGVyTGF5
ZXI6OnBhblNjcm9sbEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCi17Ci0gICAgaWYg
KG1fc2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnBhblNjcm9sbEZy
b21Qb2ludChwb2ludCk7Ci19Ci0KLVNjcm9sbFBvc2l0aW9uIFJlbmRlckxheWVyOjpzY3JvbGxQ
b3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIHJl
dHVybiBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIHJldHVybiBTY3Jv
bGxQb3NpdGlvbigpOwotfQotCi1ib29sIFJlbmRlckxheWVyOjpzY3JvbGxpbmdNYXlSZXZlYWxC
YWNrZ3JvdW5kKCkgY29uc3QKLXsKLSAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKLSAgICAgICAg
cmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbGluZ01heVJldmVhbEJhY2tncm91bmQoKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgUmVuZGVyTGF5ZXI6Omhhc1Njcm9sbGFibGVI
b3Jpem9udGFsT3ZlcmZsb3coKSBjb25zdAotewotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQot
ICAgICAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS0+aGFzU2Nyb2xsYWJsZUhvcml6b250YWxP
dmVyZmxvdygpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBSZW5kZXJMYXllcjo6aGFz
U2Nyb2xsYWJsZVZlcnRpY2FsT3ZlcmZsb3coKSBjb25zdAotewotICAgIGlmIChtX3Njcm9sbGFi
bGVBcmVhKQotICAgICAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS0+aGFzU2Nyb2xsYWJsZVZl
cnRpY2FsT3ZlcmZsb3coKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWludCBSZW5kZXJMYXll
cjo6dmVydGljYWxTY3JvbGxiYXJXaWR0aChPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSBy
ZWxldmFuY3kpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIHJl
dHVybiBtX3Njcm9sbGFibGVBcmVhLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKHJlbGV2YW5jeSk7
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBSZW5kZXJMYXllcjo6aG9yaXpvbnRhbFNjcm9sbGJh
ckhlaWdodChPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3kpIGNvbnN0Ci17
Ci0gICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIHJldHVybiBtX3Njcm9sbGFibGVB
cmVhLT5ob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KHJlbGV2YW5jeSk7Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLWJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9u
LCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllcikKLXsKLSAg
ICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKLSAgICAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEt
PnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVyKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0vLyBFbmQgb2YgdGVtcG9yYXJ5IGdsdWUgY29kZQotCiB2b2lkIFJlbmRlckxh
eWVyOjphZGRDaGlsZChSZW5kZXJMYXllciYgY2hpbGQsIFJlbmRlckxheWVyKiBiZWZvcmVDaGls
ZCkKIHsKICAgICBSZW5kZXJMYXllciogcHJldlNpYmxpbmcgPSBiZWZvcmVDaGlsZCA/IGJlZm9y
ZUNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSA6IGxhc3RDaGlsZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA3NWZhYTg1YmE1OGE1OTcyZjFhNTU2NzlkYmFhZDVl
YTlhZDUwNTViLi45MGI5ODI1ZDViZjljNjY5Njc2NzVlMjM3NDU3MDNhYTRjZTA1NzdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMTU5LDIyICsxNTksNiBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYSogc2Ny
b2xsYWJsZUFyZWEoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhKiBlbnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCk7CiAKLSAgICAvLyBTdGFydCBv
ZiB0ZW1wb3JhcnkgZ2x1ZSBjb2RlIHRvIGhlbHAgbGFuZGluZyB3ZWJraXQub3JnL2IvNjAzMDUg
KHNwbGl0IFJlbmRlckxheWVyIGludG8gUmVuZGVyTGF5ZXIvUmVuZGVyTGF5ZXJTY3JvbGxhYmxl
QXJlYSkKLSAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxPZmZzZXQgc2Nyb2xsT2Zmc2V0KCkgY29u
c3Q7Ci0gICAgYm9vbCBzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkg
Y29uc3Q7Ci0gICAgUmVuZGVyTWFycXVlZSogbWFycXVlZSgpIGNvbnN0OwotICAgIHZvaWQgdXBk
YXRlTGF5ZXJQb3NpdGlvbnNBZnRlckRvY3VtZW50U2Nyb2xsKCk7Ci0gICAgdm9pZCBzZXRQb3N0
TGF5b3V0U2Nyb2xsUG9zaXRpb24oT3B0aW9uYWw8U2Nyb2xsUG9zaXRpb24+KTsKLSAgICB2b2lk
IHBhblNjcm9sbEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYpOwotICAgIFNjcm9sbFBvc2l0aW9u
IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBzY3JvbGxpbmdNYXlSZXZlYWxCYWNr
Z3JvdW5kKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNTY3JvbGxhYmxlSG9yaXpvbnRhbE92ZXJmbG93
KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNTY3JvbGxhYmxlVmVydGljYWxPdmVyZmxvdygpIGNvbnN0
OwotICAgIGludCB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKE92ZXJsYXlTY3JvbGxiYXJTaXplUmVs
ZXZhbmN5ID0gSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUpIGNvbnN0OwotICAgIGludCBob3Jp
em9udGFsU2Nyb2xsYmFySGVpZ2h0KE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdu
b3JlT3ZlcmxheVNjcm9sbGJhclNpemUpIGNvbnN0OwotICAgIGJvb2wgc2Nyb2xsKFNjcm9sbERp
cmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAxKTsKLSAgICAv
LyBFbmQgb2YgdGVtcG9yYXJ5IGdsdWUgY29kZQotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAvLyBDYWxsZWQgYmVmb3JlIHRoZSByZW5kZXJlcidzIHdpZGdldCAoaWYgYW55KSBoYXMg
YmVlbiBudWxsZWQgb3V0LgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDg5MDlhN2Yw
MWU5MzA5MGQyODFjNzZhZWI2ZTk1ZWE1YWZiNzY5NzEuLjdmZWViODgzODk1M2NhMGUxY2JiMDJi
ZGI0ZDRmZDUwMmJiMjUzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCkBAIC00MTksMTEgKzQxOSwxMyBAQCBzdGF0aWMgVGlsZWRCYWNr
aW5nOjpUaWxlQ292ZXJhZ2UgY29tcHV0ZU92ZXJmbG93VGlsZWRCYWNraW5nQ292ZXJhZ2UoY29u
c3QgUmVuZAogICAgIFRpbGVkQmFja2luZzo6VGlsZUNvdmVyYWdlIHRpbGVDb3ZlcmFnZSA9IFRp
bGVkQmFja2luZzo6Q292ZXJhZ2VGb3JWaXNpYmxlQXJlYTsKICAgICBib29sIHVzZU1pbmltYWxU
aWxlc0R1cmluZ0xpdmVSZXNpemUgPSBmcmFtZVZpZXcuaW5MaXZlUmVzaXplKCk7CiAgICAgaWYg
KCF1c2VNaW5pbWFsVGlsZXNEdXJpbmdMaXZlUmVzaXplKSB7Ci0gICAgICAgIGlmIChsYXllci5o
YXNTY3JvbGxhYmxlSG9yaXpvbnRhbE92ZXJmbG93KCkpCi0gICAgICAgICAgICB0aWxlQ292ZXJh
Z2UgfD0gVGlsZWRCYWNraW5nOjpDb3ZlcmFnZUZvckhvcml6b250YWxTY3JvbGxpbmc7CisgICAg
ICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBsYXllci5zY3JvbGxhYmxlQXJlYSgpKSB7
CisgICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUxheWVyLT5oYXNTY3JvbGxhYmxlSG9yaXpvbnRh
bE92ZXJmbG93KCkpCisgICAgICAgICAgICAgICAgdGlsZUNvdmVyYWdlIHw9IFRpbGVkQmFja2lu
Zzo6Q292ZXJhZ2VGb3JIb3Jpem9udGFsU2Nyb2xsaW5nOwogCi0gICAgICAgIGlmIChsYXllci5o
YXNTY3JvbGxhYmxlVmVydGljYWxPdmVyZmxvdygpKQotICAgICAgICAgICAgdGlsZUNvdmVyYWdl
IHw9IFRpbGVkQmFja2luZzo6Q292ZXJhZ2VGb3JWZXJ0aWNhbFNjcm9sbGluZzsKKyAgICAgICAg
ICAgIGlmIChzY3JvbGxhYmxlTGF5ZXItPmhhc1Njcm9sbGFibGVWZXJ0aWNhbE92ZXJmbG93KCkp
CisgICAgICAgICAgICAgICAgdGlsZUNvdmVyYWdlIHw9IFRpbGVkQmFja2luZzo6Q292ZXJhZ2VG
b3JWZXJ0aWNhbFNjcm9sbGluZzsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdGlsZUNv
dmVyYWdlOwogfQpAQCAtMTIyOSw5ICsxMjMxLDEyIEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXJC
YWNraW5nOjpjb21wdXRlUGFyZW50R3JhcGhpY3NMYXllclJlY3QoY29uc3QgUmVuZGVyTGF5ZXIq
CiAgICAgfQogCiAgICAgaWYgKGNvbXBvc2l0ZWRBbmNlc3Rvci0+aGFzQ29tcG9zaXRlZFNjcm9s
bGFibGVPdmVyZmxvdygpKSB7CisgICAgICAgIGF1dG8qIHNjcm9sbGFibGVDb21wb3NpdGVkQW5j
ZXN0b3IgPSBjb21wb3NpdGVkQW5jZXN0b3ItPnNjcm9sbGFibGVBcmVhKCk7CisgICAgICAgIEFT
U0VSVChzY3JvbGxhYmxlQ29tcG9zaXRlZEFuY2VzdG9yKTsKKwogICAgICAgICBMYXlvdXRSZWN0
IGFuY2VzdG9yQ29tcG9zaXRlZEJvdW5kcyA9IGFuY2VzdG9yQmFja2luZy0+Y29tcG9zaXRlZEJv
dW5kcygpOwogICAgICAgICBMYXlvdXRSZWN0IHNjcm9sbENvbnRhaW5lckJveCA9IHNjcm9sbENv
bnRhaW5lckxheWVyQm94KGFuY2VzdG9yUmVuZGVyQm94KTsKLSAgICAgICAgU2Nyb2xsT2Zmc2V0
IHNjcm9sbE9mZnNldCA9IGNvbXBvc2l0ZWRBbmNlc3Rvci0+c2Nyb2xsT2Zmc2V0KCk7CisgICAg
ICAgIFNjcm9sbE9mZnNldCBzY3JvbGxPZmZzZXQgPSBzY3JvbGxhYmxlQ29tcG9zaXRlZEFuY2Vz
dG9yLT5zY3JvbGxPZmZzZXQoKTsKICAgICAgICAgcGFyZW50R3JhcGhpY3NMYXllclJlY3QgPSBM
YXlvdXRSZWN0KChzY3JvbGxDb250YWluZXJCb3gubG9jYXRpb24oKSAtIHRvTGF5b3V0U2l6ZShh
bmNlc3RvckNvbXBvc2l0ZWRCb3VuZHMubG9jYXRpb24oKSkgLSB0b0xheW91dFNpemUoc2Nyb2xs
T2Zmc2V0KSksIHNjcm9sbENvbnRhaW5lckJveC5zaXplKCkpOwogICAgIH0KIApAQCAtMTM2OCw3
ICsxMzczLDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHZW9tZXRyeShjb25z
dCBSZW5kZXJMYXllciogY29tcG9zaXRlZEFuY2VzdG9yKQogICAgICAgICBtX3Njcm9sbENvbnRh
aW5lckxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KHNjcm9sbENvbnRhaW5lckJveC5sb2Nh
dGlvbigpIC0gcGFyZW50TGF5ZXJCb3VuZHMubG9jYXRpb24oKSkpOwogICAgICAgICBtX3Njcm9s
bENvbnRhaW5lckxheWVyLT5zZXRTaXplKHJvdW5kZWRJbnRTaXplKExheW91dFNpemUoc2Nyb2xs
Q29udGFpbmVyQm94LndpZHRoKCksIHNjcm9sbENvbnRhaW5lckJveC5oZWlnaHQoKSkpKTsKIAot
ICAgICAgICBTY3JvbGxPZmZzZXQgc2Nyb2xsT2Zmc2V0ID0gbV9vd25pbmdMYXllci5zY3JvbGxP
ZmZzZXQoKTsKKyAgICAgICAgYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbV9vd25pbmdMYXllci5z
Y3JvbGxhYmxlQXJlYSgpOworICAgICAgICBBU1NFUlQoc2Nyb2xsYWJsZUxheWVyKTsKKworICAg
ICAgICBTY3JvbGxPZmZzZXQgc2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsYWJsZUxheWVyLT5zY3JvbGxP
ZmZzZXQoKTsKICAgICAgICAgdXBkYXRlU2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldCk7CiAKICAg
ICAgICAgRmxvYXRTaXplIG9sZFNjcm9sbGluZ0xheWVyT2Zmc2V0ID0gbV9zY3JvbGxDb250YWlu
ZXJMYXllci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCk7CkBAIC0xMzgyLDcgKzEzOTAsOSBAQCB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR2VvbWV0cnkoY29uc3QgUmVuZGVyTGF5ZXIqIGNv
bXBvc2l0ZWRBbmNlc3RvcikKIAogICAgICAgICBib29sIHBhZGRpbmdCb3hPZmZzZXRDaGFuZ2Vk
ID0gb2xkU2Nyb2xsaW5nTGF5ZXJPZmZzZXQgIT0gbV9zY3JvbGxDb250YWluZXJMYXllci0+b2Zm
c2V0RnJvbVJlbmRlcmVyKCk7CiAKLSAgICAgICAgSW50U2l6ZSBzY3JvbGxTaXplKG1fb3duaW5n
TGF5ZXIuc2Nyb2xsV2lkdGgoKSwgbV9vd25pbmdMYXllci5zY3JvbGxIZWlnaHQoKSk7CisgICAg
ICAgIEludFNpemUgc2Nyb2xsU2l6ZTsKKyAgICAgICAgaWYgKHNjcm9sbGFibGVMYXllcikKKyAg
ICAgICAgICAgIHNjcm9sbFNpemUgPSBJbnRTaXplKHNjcm9sbGFibGVMYXllci0+c2Nyb2xsV2lk
dGgoKSwgc2Nyb2xsYWJsZUxheWVyLT5zY3JvbGxIZWlnaHQoKSk7CiAgICAgICAgIGlmIChzY3Jv
bGxTaXplICE9IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLT5zaXplKCkgfHwgcGFkZGluZ0JveE9m
ZnNldENoYW5nZWQpCiAgICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2V0TmVl
ZHNEaXNwbGF5KCk7CiAKQEAgLTE5MTMsNyArMTkyMyw5IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp1cGRhdGVDbGlwcGluZ1N0YWNrTGF5ZXJHZW9tZXRyeShMYXllckFuY2VzdG9yQ2xpcHBp
bmdTCiAgICAgICAgIGVudHJ5LmNsaXBwaW5nTGF5ZXItPnNldFNpemUoc25hcHBlZENsaXBwaW5n
TGF5ZXJSZWN0LnNpemUoKSk7CiAKICAgICAgICAgaWYgKGVudHJ5LmNsaXBEYXRhLmlzT3ZlcmZs
b3dTY3JvbGwpIHsKLSAgICAgICAgICAgIFNjcm9sbE9mZnNldCBzY3JvbGxPZmZzZXQgPSBlbnRy
eS5jbGlwRGF0YS5jbGlwcGluZ0xheWVyID8gZW50cnkuY2xpcERhdGEuY2xpcHBpbmdMYXllci0+
c2Nyb2xsT2Zmc2V0KCkgOiBTY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgICAgIFNjcm9sbE9mZnNl
dCBzY3JvbGxPZmZzZXQ7CisgICAgICAgICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUxheWVyID0g
ZW50cnkuY2xpcERhdGEuY2xpcHBpbmdMYXllciA/IGVudHJ5LmNsaXBEYXRhLmNsaXBwaW5nTGF5
ZXItPnNjcm9sbGFibGVBcmVhKCkgOiBudWxscHRyKQorICAgICAgICAgICAgICAgIHNjcm9sbE9m
ZnNldCA9IHNjcm9sbGFibGVMYXllci0+c2Nyb2xsT2Zmc2V0KCk7CiAKICAgICAgICAgICAgIGVu
dHJ5LmNsaXBwaW5nTGF5ZXItPnNldEJvdW5kc09yaWdpbihzY3JvbGxPZmZzZXQpOwogICAgICAg
ICAgICAgbGFzdENsaXBMYXllclJlY3QubW92ZUJ5KC1zY3JvbGxPZmZzZXQpOwpAQCAtMjAxOCw3
ICsyMDMwLDYgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnJlcXVpcmVzSG9yaXpvbnRhbFNj
cm9sbGJhckxheWVyKCkgY29uc3QKICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbV9v
d25pbmdMYXllci5zY3JvbGxhYmxlQXJlYSgpKQogICAgICAgICByZXR1cm4gcmVxdWlyZXNMYXll
ckZvclNjcm9sbGJhcihzY3JvbGxhYmxlTGF5ZXItPmhvcml6b250YWxTY3JvbGxiYXIoKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwotCiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpyZXF1aXJl
c1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoKSBjb25zdApAQCAtMjAzMywxNCArMjA0NCwxNCBAQCBi
b29sIFJlbmRlckxheWVyQmFja2luZzo6cmVxdWlyZXNTY3JvbGxDb3JuZXJMYXllcigpIGNvbnN0
CiAgICAgaWYgKCFpczxSZW5kZXJCb3g+KG1fb3duaW5nTGF5ZXIucmVuZGVyZXIoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gY29ybmVyUmVjdCA9IG1fb3duaW5nTGF5ZXIu
b3ZlcmZsb3dDb250cm9sc1JlY3RzKCkuc2Nyb2xsQ29ybmVyT3JSZXNpemVyUmVjdCgpOwotICAg
IGlmIChjb3JuZXJSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAg
YXV0byogc2Nyb2xsYWJsZUxheWVyID0gbV9vd25pbmdMYXllci5zY3JvbGxhYmxlQXJlYSgpOwog
ICAgIGlmICghc2Nyb2xsYWJsZUxheWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBh
dXRvIGNvcm5lclJlY3QgPSBzY3JvbGxhYmxlTGF5ZXItPm92ZXJmbG93Q29udHJvbHNSZWN0cygp
LnNjcm9sbENvcm5lck9yUmVzaXplclJlY3QoKTsKKyAgICBpZiAoY29ybmVyUmVjdC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGF1dG8gdmVydGljYWxTY3JvbGxiYXIg
PSBzY3JvbGxhYmxlTGF5ZXItPnZlcnRpY2FsU2Nyb2xsYmFyKCk7CiAgICAgYXV0byBzY3JvbGxi
YXIgPSB2ZXJ0aWNhbFNjcm9sbGJhciA/IHZlcnRpY2FsU2Nyb2xsYmFyIDogc2Nyb2xsYWJsZUxh
eWVyLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CiAgICAgcmV0dXJuIHJlcXVpcmVzTGF5ZXJGb3JT
Y3JvbGxiYXIoc2Nyb2xsYmFyKTsKQEAgLTIwNzgsMTEgKzIwODksMTEgQEAgYm9vbCBSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoYm9vbCBuZWVkc0hvcml6
b250YWxTY3JvbGwKICAgICBsYXllcnNDaGFuZ2VkIHw9IGNyZWF0ZU9yRGVzdHJveUxheWVyKG1f
bGF5ZXJGb3JTY3JvbGxDb3JuZXIsIG5lZWRzU2Nyb2xsQ29ybmVyTGF5ZXIsIHRydWUsICJzY3Jv
bGwgY29ybmVyIik7CiAKICAgICBpZiAoYXV0byogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBtX293
bmluZ0xheWVyLnBhZ2UoKS5zY3JvbGxpbmdDb29yZGluYXRvcigpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiBzY3JvbGxhYmxlQXJlYSA9IG1fb3duaW5nTGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKSkgewor
ICAgICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbV9vd25pbmdMYXllci5zY3JvbGxh
YmxlQXJlYSgpKSB7CiAgICAgICAgICAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbGJhckxheWVyQ2hh
bmdlZCkKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFy
ZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgqc2Nyb2xsYWJsZUFyZWEsIEhvcml6b250YWxTY3Jv
bGxiYXIpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxl
QXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCpzY3JvbGxhYmxlTGF5ZXIsIEhvcml6b250YWxT
Y3JvbGxiYXIpOwogICAgICAgICAgICAgaWYgKHZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2Vk
KQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKCpzY3JvbGxhYmxlQXJlYSwgVmVydGljYWxTY3JvbGxiYXIp
OworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKCpzY3JvbGxhYmxlTGF5ZXIsIFZlcnRpY2FsU2Nyb2xsYmFy
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjExMyw4ICsyMTI0LDcgQEAgdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm9sc0xheWVycygpCiAgICAgfTsKIAog
ICAgIC8vIFRoZXNlIHJlY3RzIGFyZSByZWxhdGl2ZSB0byB0aGUgYm9yZGVyQm94UmVjdC4KLSAg
ICBhdXRvIHJlY3RzID0gbV9vd25pbmdMYXllci5vdmVyZmxvd0NvbnRyb2xzUmVjdHMoKTsKLQor
ICAgIGF1dG8gcmVjdHMgPSBzY3JvbGxhYmxlTGF5ZXItPm92ZXJmbG93Q29udHJvbHNSZWN0cygp
OwogICAgIGlmIChhdXRvKiBsYXllciA9IGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7
CiAgICAgICAgIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXIoKmxheWVyLCByZWN0cy5ob3Jpem9udGFs
U2Nyb2xsYmFyLCBwYWRkaW5nQm94SW5zZXQpOwogICAgICAgICBsYXllci0+c2V0RHJhd3NDb250
ZW50KHNjcm9sbGFibGVMYXllci0+aG9yaXpvbnRhbFNjcm9sbGJhcigpICYmICFsYXllci0+dXNl
c0NvbnRlbnRzTGF5ZXIoKSk7CkBAIC0zMTAxLDcgKzMxMTEsMTAgQEAgdm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYg
ciwgR3JhcGgKIAogICAgIGlmIChtX3Njcm9sbGVkQ29udGVudHNMYXllciAmJiBtX3Njcm9sbGVk
Q29udGVudHNMYXllci0+ZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgRmxvYXRSZWN0IGxheWVy
RGlydHlSZWN0ID0gcGl4ZWxTbmFwcGVkUmVjdEZvclBhaW50aW5nOwotICAgICAgICBsYXllckRp
cnR5UmVjdC5tb3ZlKC1tX3Njcm9sbGVkQ29udGVudHNMYXllci0+b2Zmc2V0RnJvbVJlbmRlcmVy
KCkgKyB0b0xheW91dFNpemUobV9vd25pbmdMYXllci5zY3JvbGxPZmZzZXQoKSkgLSBtX3N1YnBp
eGVsT2Zmc2V0RnJvbVJlbmRlcmVyKTsKKyAgICAgICAgU2Nyb2xsT2Zmc2V0IHNjcm9sbE9mZnNl
dDsKKyAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVMYXllciA9IG1fb3duaW5nTGF5ZXIuc2Ny
b2xsYWJsZUFyZWEoKSkKKyAgICAgICAgICAgIHNjcm9sbE9mZnNldCA9IHNjcm9sbGFibGVMYXll
ci0+c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIGxheWVyRGlydHlSZWN0Lm1vdmUoLW1fc2Nyb2xs
ZWRDb250ZW50c0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIoKSArIHRvTGF5b3V0U2l6ZShzY3Jv
bGxPZmZzZXQpIC0gbV9zdWJwaXhlbE9mZnNldEZyb21SZW5kZXJlcik7CiAgICAgICAgIG1fc2Ny
b2xsZWRDb250ZW50c0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QobGF5ZXJEaXJ0eVJlY3Qs
IHNob3VsZENsaXApOwogICAgIH0KIH0KQEAgLTM0NDcsNyArMzQ2MCw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNz
TGF5ZXIsIEdyYXBoCiAgICAgICAgIGF1dG8qIHNjcm9sbGFibGVMYXllciA9IG1fb3duaW5nTGF5
ZXIuc2Nyb2xsYWJsZUFyZWEoKTsKICAgICAgICAgQVNTRVJUKHNjcm9sbGFibGVMYXllcik7CiAK
LSAgICAgICAgYXV0byBjb3JuZXJSZWN0ID0gbV9vd25pbmdMYXllci5vdmVyZmxvd0NvbnRyb2xz
UmVjdHMoKS5zY3JvbGxDb3JuZXJPclJlc2l6ZXJSZWN0KCk7CisgICAgICAgIGF1dG8gY29ybmVy
UmVjdCA9IHNjcm9sbGFibGVMYXllci0+b3ZlcmZsb3dDb250cm9sc1JlY3RzKCkuc2Nyb2xsQ29y
bmVyT3JSZXNpemVyUmVjdCgpOwogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1jb3JuZXJSZWN0
LmxvY2F0aW9uKCkpOwogICAgICAgICBMYXlvdXRSZWN0IHRyYW5zZm9ybWVkQ2xpcCA9IExheW91
dFJlY3QoY2xpcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggYzdmYzY2YzcwMTNiN2U4ZGU2YWEwNmM0MzEzYmQyOWE4
MTg1MWFlMy4uZmNhNzhhZGFjNGMyMjY4MDhhMGU4YzlhZGZhZjc5NjdmMmM3OWM0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNw
cApAQCAtMTc2LDkgKzE3NiwxMCBAQCB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdAogICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBuZXdTdHlsZSA9IHN0eWxlKCk7CiAgICAgaWYgKG9sZFN0eWxlICYmIHNj
cm9sbFNuYXBDb250YWluZXJSZXF1aXJlc1VwZGF0ZUZvclN0eWxlVXBkYXRlKCpvbGRTdHlsZSwg
bmV3U3R5bGUpKSB7CiAgICAgICAgIGlmIChSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSBsYXll
cigpKSB7Ci0gICAgICAgICAgICBhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSByZW5kZXJMYXllci0+
ZW5zdXJlTGF5ZXJTY3JvbGxhYmxlQXJlYSgpOwotICAgICAgICAgICAgc2Nyb2xsYWJsZUxheWVy
LT51cGRhdGVTbmFwT2Zmc2V0cygpOwotICAgICAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT51cGRh
dGVTY3JvbGxTbmFwU3RhdGUoKTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlTGF5
ZXIgPSByZW5kZXJMYXllci0+c2Nyb2xsYWJsZUFyZWEoKSkgeworICAgICAgICAgICAgICAgIHNj
cm9sbGFibGVMYXllci0+dXBkYXRlU25hcE9mZnNldHMoKTsKKyAgICAgICAgICAgICAgICBzY3Jv
bGxhYmxlTGF5ZXItPnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOworICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgaWYgKGlzQm9keSgpIHx8IGlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSkg
ewogICAgICAgICAgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSB2aWV3KCkuZnJhbWVWaWV3KCk7
CiAgICAgICAgICAgICBmcmFtZVZpZXcudXBkYXRlU25hcE9mZnNldHMoKTsKQEAgLTE5Niw5ICsx
OTcsMTAgQEAgdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3QKICAgICAgICAgaWYgKHNjcm9sbFNuYXBC
b3ggJiYgc2Nyb2xsU25hcEJveC0+bGF5ZXIoKSkgewogICAgICAgICAgICAgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlID0gc2Nyb2xsU25hcEJveC0+c3R5bGUoKTsKICAgICAgICAgICAgIGlmIChz
dHlsZS5zY3JvbGxTbmFwVHlwZSgpLnN0cmljdG5lc3MgIT0gU2Nyb2xsU25hcFN0cmljdG5lc3M6
Ok5vbmUpIHsKLSAgICAgICAgICAgICAgICBhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBzY3JvbGxT
bmFwQm94LT5sYXllcigpLT5lbnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCk7Ci0gICAgICAgICAg
ICAgICAgc2Nyb2xsYWJsZUxheWVyLT51cGRhdGVTbmFwT2Zmc2V0cygpOwotICAgICAgICAgICAg
ICAgIHNjcm9sbGFibGVMYXllci0+dXBkYXRlU2Nyb2xsU25hcFN0YXRlKCk7CisgICAgICAgICAg
ICAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVMYXllciA9IHNjcm9sbFNuYXBCb3gtPmxheWVyKCkt
PnNjcm9sbGFibGVBcmVhKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUxheWVy
LT51cGRhdGVTbmFwT2Zmc2V0cygpOworICAgICAgICAgICAgICAgICAgICBzY3JvbGxhYmxlTGF5
ZXItPnVwZGF0ZVNjcm9sbFNuYXBTdGF0ZSgpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBpZiAoc2Nyb2xsU25hcEJveC0+aXNCb2R5KCkgfHwgc2Nyb2xsU25hcEJveC0+aXNE
b2N1bWVudEVsZW1lbnRSZW5kZXJlcigpKQogICAgICAgICAgICAgICAgICAgICBzY3JvbGxTbmFw
Qm94LT52aWV3KCkuZnJhbWVWaWV3KCkudXBkYXRlU2Nyb2xsaW5nQ29vcmRpbmF0b3JTY3JvbGxT
bmFwUHJvcGVydGllcygpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1hcnF1ZWUuY3BwCmluZGV4IDY5MTY2YjJkYWU5ZTFjMDIzZWMyMTkyOWVkMGRiMmE1
MmMxMGYwN2QuLjRjMjgzNTY4NDkxMTQxMjcyOTI2MzhkMDkyNmZlMDEzZDMyYjg2NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAKQEAgLTI4Miw3ICsyODIs
NyBAQCB2b2lkIFJlbmRlck1hcnF1ZWU6OnRpbWVyRmlyZWQoKQogICAgICAgICBib29sIHBvc2l0
aXZlID0gcmFuZ2UgPiAwOwogICAgICAgICBpbnQgY2xpZW50U2l6ZSA9IChpc0hvcml6b250YWwo
KSA/IHJvdW5kVG9JbnQobV9sYXllci0+cmVuZGVyQm94KCktPmNsaWVudFdpZHRoKCkpIDogcm91
bmRUb0ludChtX2xheWVyLT5yZW5kZXJCb3goKS0+Y2xpZW50SGVpZ2h0KCkpKTsKICAgICAgICAg
aW50IGluY3JlbWVudCA9IGFicyhpbnRWYWx1ZUZvckxlbmd0aChtX2xheWVyLT5yZW5kZXJlcigp
LnN0eWxlKCkubWFycXVlZUluY3JlbWVudCgpLCBjbGllbnRTaXplKSk7Ci0gICAgICAgIGludCBj
dXJyZW50UG9zID0gKGlzSG9yaXpvbnRhbCgpID8gbV9sYXllci0+c2Nyb2xsT2Zmc2V0KCkueCgp
IDogbV9sYXllci0+c2Nyb2xsT2Zmc2V0KCkueSgpKTsKKyAgICAgICAgaW50IGN1cnJlbnRQb3Mg
PSAoaXNIb3Jpem9udGFsKCkgPyBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbE9mZnNldCgpLngoKSA6
IHNjcm9sbGFibGVMYXllci0+c2Nyb2xsT2Zmc2V0KCkueSgpKTsKICAgICAgICAgbmV3UG9zID0g
IGN1cnJlbnRQb3MgKyAoYWRkSW5jcmVtZW50ID8gaW5jcmVtZW50IDogLWluY3JlbWVudCk7CiAg
ICAgICAgIGlmIChwb3NpdGl2ZSkKICAgICAgICAgICAgIG5ld1BvcyA9IHN0ZDo6bWluKG5ld1Bv
cywgZW5kUG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCBjOTkyMmNiM2FlMDNjZTBmNTYwNDIw
YTE4ZjA4Y2E2NzIxNzliNWZiLi45OTc2MmNkMzAyNDlkOWUzZDEwNDEyNjYzOGE3YzJjODJlMDM2
ZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhpdFRl
c3RSZXN1bHQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCkBAIC0zOTcsMTkgKzM5OCwyMCBAQCB2b2lkIFJlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZTo6c2V0U2Nyb2xsVG9wKGludCBuZXdUb3AsIGNvbnN0IFNjcm9sbFBv
c2l0aW9uQwogCiBib29sIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2Nyb2xsKFNjcm9s
bERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9h
dCBtdWx0aXBsaWVyLCBFbGVtZW50Kiogc3RvcEVsZW1lbnQsIFJlbmRlckJveCogc3RhcnRCb3gs
IGNvbnN0IEludFBvaW50JiB3aGVlbEV2ZW50QWJzb2x1dGVQb2ludCkKIHsKLSAgICBSZW5kZXJU
ZXh0Q29udHJvbElubmVyQmxvY2sqIHJlbmRlcmVyID0gaW5uZXJUZXh0RWxlbWVudCgpLT5yZW5k
ZXJlcigpOworICAgIGF1dG8qIHJlbmRlcmVyID0gaW5uZXJUZXh0RWxlbWVudCgpLT5yZW5kZXJl
cigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBSZW5k
ZXJMYXllciogbGF5ZXIgPSByZW5kZXJlci0+bGF5ZXIoKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5
ZXItPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVyKSkKKyAgICBhdXRv
KiBib3hMYXllclNjcm9sbGFibGUgPSByZW5kZXJlci0+bGF5ZXIoKSA/IHJlbmRlcmVyLT5sYXll
cigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cjsKKyAgICBpZiAoYm94TGF5ZXJTY3JvbGxh
YmxlICYmIGJveExheWVyU2Nyb2xsYWJsZS0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHks
IG11bHRpcGxpZXIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gUmVuZGVyQmxv
Y2tGbG93OjpzY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGllciwgc3RvcEVs
ZW1lbnQsIHN0YXJ0Qm94LCB3aGVlbEV2ZW50QWJzb2x1dGVQb2ludCk7CiB9CiAKIGJvb2wgUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpsb2dpY2FsU2Nyb2xsKFNjcm9sbExvZ2ljYWxEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgbXVs
dGlwbGllciwgRWxlbWVudCoqIHN0b3BFbGVtZW50KQogewotICAgIFJlbmRlckxheWVyKiBsYXll
ciA9IGlubmVyVGV4dEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+bGF5ZXIoKTsKLSAgICBpZiAobGF5
ZXIgJiYgbGF5ZXItPnNjcm9sbChsb2dpY2FsVG9QaHlzaWNhbChkaXJlY3Rpb24sIHN0eWxlKCku
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5n
TW9kZSgpKSwgZ3JhbnVsYXJpdHksIG11bHRpcGxpZXIpKQorICAgIGF1dG8qIGxheWVyID0gaW5u
ZXJUZXh0RWxlbWVudCgpLT5yZW5kZXJlcigpLT5sYXllcigpOworICAgIGF1dG8qIGJveExheWVy
U2Nyb2xsYWJsZSA9IGxheWVyID8gbGF5ZXItPnNjcm9sbGFibGVBcmVhKCkgOiBudWxscHRyOwor
ICAgIGlmIChib3hMYXllclNjcm9sbGFibGUgJiYgYm94TGF5ZXJTY3JvbGxhYmxlLT5zY3JvbGwo
bG9naWNhbFRvUGh5c2ljYWwoZGlyZWN0aW9uLCBzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCksIHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSksIGdyYW51bGFyaXR5
LCBtdWx0aXBsaWVyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIFJlbmRlckJs
b2NrRmxvdzo6bG9naWNhbFNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVy
LCBzdG9wRWxlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKaW5kZXggYzFlOGZkOTMxMzVmNjNiNDVjMWQ5YmU1Y2NmZmRjYWM1NjUwMjhk
ZC4uMzljYWE5MDgwMWYzMGNmNmE1MjdmNTM5OTViMzg5Y2Y0MGQ0OTNhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNjMwLDE0ICs2MzAs
MTYgQEAgc3RhdGljIHZvaWQgd3JpdGVMYXllcihUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVy
TGF5ZXImIGxheWVyLCBjb25zdCBMYXlvdXRSZWMKICAgICB9CiAKICAgICBpZiAobGF5ZXIucmVu
ZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSkgewotICAgICAgICBpZiAobGF5ZXIuc2Nyb2xsT2Zm
c2V0KCkueCgpKQotICAgICAgICAgICAgdHMgPDwgIiBzY3JvbGxYICIgPDwgbGF5ZXIuc2Nyb2xs
T2Zmc2V0KCkueCgpOwotICAgICAgICBpZiAobGF5ZXIuc2Nyb2xsT2Zmc2V0KCkueSgpKQotICAg
ICAgICAgICAgdHMgPDwgIiBzY3JvbGxZICIgPDwgbGF5ZXIuc2Nyb2xsT2Zmc2V0KCkueSgpOwot
ICAgICAgICBpZiAobGF5ZXIucmVuZGVyQm94KCkgJiYgcm91bmRUb0ludChsYXllci5yZW5kZXJC
b3goKS0+Y2xpZW50V2lkdGgoKSkgIT0gbGF5ZXIuc2Nyb2xsV2lkdGgoKSkKLSAgICAgICAgICAg
IHRzIDw8ICIgc2Nyb2xsV2lkdGggIiA8PCBsYXllci5zY3JvbGxXaWR0aCgpOwotICAgICAgICBp
ZiAobGF5ZXIucmVuZGVyQm94KCkgJiYgcm91bmRUb0ludChsYXllci5yZW5kZXJCb3goKS0+Y2xp
ZW50SGVpZ2h0KCkpICE9IGxheWVyLnNjcm9sbEhlaWdodCgpKQotICAgICAgICAgICAgdHMgPDwg
IiBzY3JvbGxIZWlnaHQgIiA8PCBsYXllci5zY3JvbGxIZWlnaHQoKTsKKyAgICAgICAgaWYgKGF1
dG8qIHNjcm9sbGFibGVMYXllciA9IGxheWVyLnNjcm9sbGFibGVBcmVhKCkpIHsKKyAgICAgICAg
ICAgIGlmIChzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbE9mZnNldCgpLngoKSkKKyAgICAgICAgICAg
ICAgICB0cyA8PCAiIHNjcm9sbFggIiA8PCBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbE9mZnNldCgp
LngoKTsKKyAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbE9mZnNldCgpLnko
KSkKKyAgICAgICAgICAgICAgICB0cyA8PCAiIHNjcm9sbFkgIiA8PCBzY3JvbGxhYmxlTGF5ZXIt
PnNjcm9sbE9mZnNldCgpLnkoKTsKKyAgICAgICAgICAgIGlmIChsYXllci5yZW5kZXJCb3goKSAm
JiByb3VuZFRvSW50KGxheWVyLnJlbmRlckJveCgpLT5jbGllbnRXaWR0aCgpKSAhPSBzY3JvbGxh
YmxlTGF5ZXItPnNjcm9sbFdpZHRoKCkpCisgICAgICAgICAgICAgICAgdHMgPDwgIiBzY3JvbGxX
aWR0aCAiIDw8IHNjcm9sbGFibGVMYXllci0+c2Nyb2xsV2lkdGgoKTsKKyAgICAgICAgICAgIGlm
IChsYXllci5yZW5kZXJCb3goKSAmJiByb3VuZFRvSW50KGxheWVyLnJlbmRlckJveCgpLT5jbGll
bnRIZWlnaHQoKSkgIT0gc2Nyb2xsYWJsZUxheWVyLT5zY3JvbGxIZWlnaHQoKSkKKyAgICAgICAg
ICAgICAgICB0cyA8PCAiIHNjcm9sbEhlaWdodCAiIDw8IHNjcm9sbGFibGVMYXllci0+c2Nyb2xs
SGVpZ2h0KCk7CisgICAgICAgIH0KICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIFNjcm9sbGJh
clRoZW1lJiBzY3JvbGxiYXJUaGVtZSA9IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpOwogICAgICAg
ICBpZiAoIXNjcm9sbGJhclRoZW1lLmlzTW9ja1RoZW1lKCkgJiYgbGF5ZXIuc2Nyb2xsYWJsZUFy
ZWEoKSAmJiBsYXllci5zY3JvbGxhYmxlQXJlYSgpLT5oYXNWZXJ0aWNhbFNjcm9sbGJhcigpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MLm1tCmluZGV4IGJkMzk5YTZjMjBmZTJk
YWU0ZjMyYTcyMTQ3ZDA2MjUwZmMyNDNiMzguLmJkM2IxMThhYjIyODY2MDBhYmE5ZTcwN2QzM2E5
ZTA1ZmU0NTdiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MLm1tCkBAIC03
OCw3ICs3OCwxNCBAQCAtIChpbnQpc2Nyb2xsWE9mZnNldAogICAgIGlmICghaXM8V2ViQ29yZTo6
UmVuZGVyQm94PigqcmVuZGVyZXIpIHx8ICFyZW5kZXJlci0+aGFzT3ZlcmZsb3dDbGlwKCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRvd25jYXN0PFdlYkNvcmU6OlJlbmRlckJv
eD4oKnJlbmRlcmVyKS5sYXllcigpLT5zY3JvbGxPZmZzZXQoKS54KCk7CisgICAgYXV0byogbGF5
ZXIgPSBkb3duY2FzdDxXZWJDb3JlOjpSZW5kZXJCb3g+KCpyZW5kZXJlcikubGF5ZXIoKTsKKyAg
ICBpZiAoIWxheWVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICBhdXRvKiBzY3JvbGxhYmxlTGF5
ZXIgPSBsYXllci0+c2Nyb2xsYWJsZUFyZWEoKTsKKyAgICBpZiAoIXNjcm9sbGFibGVMYXllcikK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gc2Nyb2xsYWJsZUxheWVyLT5zY3JvbGxP
ZmZzZXQoKS54KCk7CiB9CiAKIC0gKGludClzY3JvbGxZT2Zmc2V0CkBAIC05Miw3ICs5OSwxNCBA
QCAtIChpbnQpc2Nyb2xsWU9mZnNldAogICAgIGlmICghaXM8V2ViQ29yZTo6UmVuZGVyQm94Pigq
cmVuZGVyZXIpIHx8ICFyZW5kZXJlci0+aGFzT3ZlcmZsb3dDbGlwKCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIGRvd25jYXN0PFdlYkNvcmU6OlJlbmRlckJveD4oKnJlbmRlcmVy
KS5sYXllcigpLT5zY3JvbGxPZmZzZXQoKS55KCk7CisgICAgYXV0byogbGF5ZXIgPSBkb3duY2Fz
dDxXZWJDb3JlOjpSZW5kZXJCb3g+KCpyZW5kZXJlcikubGF5ZXIoKTsKKyAgICBpZiAoIWxheWVy
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBsYXllci0+
c2Nyb2xsYWJsZUFyZWEoKTsKKyAgICBpZiAoIXNjcm9sbGFibGVMYXllcikKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gc2Nyb2xsYWJsZUxheWVyLT5zY3JvbGxPZmZzZXQoKS55KCk7
CiB9CiAKIC0gKHZvaWQpc2V0U2Nyb2xsWE9mZnNldDooaW50KXggc2Nyb2xsWU9mZnNldDooaW50
KXkKQEAgLTExMiw4ICsxMjYsOCBAQCAtICh2b2lkKXNldFNjcm9sbFhPZmZzZXQ6KGludCl4IHNj
cm9sbFlPZmZzZXQ6KGludCl5IGFkanVzdEZvcklPU0NhcmV0OihCT09MKWFkagogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvKiBsYXllciA9IGRvd25jYXN0PFdlYkNvcmU6OlJlbmRlckJveD4o
KnJlbmRlcmVyKS5sYXllcigpOwotICAgIEFTU0VSVChsYXllcik7Ci0KKyAgICBpZiAoIWxheWVy
KQorICAgICAgICByZXR1cm47CiAgICAgYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXItPmVu
c3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKTsKIAogICAgIGlmIChhZGp1c3RGb3JJT1NDYXJldCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418195</attachid>
            <date>2021-01-22 16:20:05 -0800</date>
            <delta_ts>2021-01-25 12:59:46 -0800</delta_ts>
            <desc>Patch, v3</desc>
            <filename>bug-220851-20210123012003.patch</filename>
            <type>text/plain</type>
            <size>71911</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFiZjhmOTI1N2NjMDQ3
YmE2MjUxOTQyYWU2ZDU5MTU2NjcyZDYxNC4uM2E4NzYzMjRiNWUyZGE1MzMyNjg2NDZhOWMxMWQ2
N2ZjMTQ3MGYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIxLTAxLTIyICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIEZpbmlz
aCBpbnRyb2R1Y3Rpb24gb2YgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTogcmVtb3ZlIHJlbWFp
bmluZyBnbHVlIGNvZGUgZnJvbSBSZW5kZXJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwODUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBsYXN0IHJlbWFpbmluZyBnbHVlIGNv
ZGUgZnJvbSBSZW5kZXJMYXllciwgdGhhdCB3YXMgYWRkZWQKKyAgICAgICAgaW4gcjI3MTU1OSB0
byBtaW5pbWl6ZSB0aGUgcGF0Y2ggc2l6ZS4gQWZ0ZXIgdGhpcyBwYXRjaCBhbGwgY2FsbCBzaXRl
cworICAgICAgICB1c2UgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYSBkaXJlY3RseSwgcmVtb3Zp
bmcgdGhlIG5lZWQgZm9yIHByb3h5CisgICAgICAgIG1ldGhvZHMgaW4gUmVuZGVyTGF5ZXIgdGhh
dCBmb3J3YXJkIHRvIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuCisKKyAgICAgICAgVGhlIGRl
Y2FkZSBvbGQgYnVnIDYwMzA1IChTZXBhcmF0ZSBzY3JvbGxpbmcgY29kZSBvdXQgb2YgUmVuZGVy
TGF5ZXIpCisgICAgICAgIGlzIGZpbmFsbHkgY2xvc2VkLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6c2Nyb2xsVG8gY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJldmVhbFNlbGVjdGlvbik6
CisgICAgICAgICogaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1hcnF1ZWVFbGVtZW50OjpyZW5kZXJNYXJxdWVlIGNvbnN0KToKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNl
bGVjdEN1cnNvcik6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVMYXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKToKKyAg
ICAgICAgKiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNj
cm9sbEluRGlyZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL2lvcy9GcmFtZUlPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpvdmVyZmxvd1Njcm9sbFBvc2l0aW9uQ2hhbmdlZEZvck5vZGUp
OgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnNjcm9sbGFibGVBcmVhRm9yQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmlzUG9pbnRJbk92ZXJmbG93
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlv
biBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lk
dGhzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94OjpzY3JvbGxMZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6c2Nyb2xsVG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNldHVwV2hlZWxFdmVudE1v
bml0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRTY3JvbGxMZWZ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2V0U2Nyb2xsVG9wKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojp2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6bG9naWNhbFNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhblNj
cm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnNjcm9sbFBvc2l0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUJhY2tncm91bmRJc0tub3du
VG9CZU9ic2N1cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6b3ZlcmZsb3dDbGlw
UmVjdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlU3RpY2t5
UG9zaXRpb25Db25zdHJhaW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6Y29uc3RyYWluaW5nUmVjdEZvclN0aWNreVBvc2l0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZU92ZXJmbG93VGlsZWRCYWNraW5nQ292ZXJhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wdXRlUGFyZW50R3JhcGhp
Y3NMYXllclJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5n
Ojp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZVNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OnVwZGF0ZUNsaXBwaW5nU3RhY2tMYXllckdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cmVxdWlyZXNIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZXF1aXJlc1ZlcnRp
Y2FsU2Nyb2xsYmFyTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpyZXF1aXJlc1Njcm9sbENvcm5lckxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVkRGlz
cGxheUluUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50
SW50b0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbGlu
Z05vZGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1
cGRhdGVTY3JvbGxpbmdOb2RlRm9yU2Nyb2xsaW5nUm9sZSk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lXZWJLaXRTY3JvbGxpbmdMYXllckNvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxpbmdMYXll
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnBhaW50T3ZlcmZsb3dDb250
cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzY3Jv
bGxCeVJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpoYXNTY3JvbGxhYmxlT3JSdWJiZXJi
YW5kYWJsZUFuY2VzdG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjpzdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXJxdWVlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZTo6c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZTo6bG9naWNhbFNjcm9sbCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwOgorCiAyMDIxLTAxLTIyICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggdW5kZXIgRkZURnJhbWU6OmZmdFNldHVwRm9y
U2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjFjNGYwYTdhNTczMzFhYzVi
OTQ1YzJkOWQ3Y2UxZDA1MmVlZDAyOS4uZTg2MjVkNDAxYjBkNWQzMzQ0Njk4ZDdkNjgyZWUwNGZm
MGQ5ODBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisy
MDIxLTAxLTIyICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgor
CisgICAgICAgIEZpbmlzaCBpbnRyb2R1Y3Rpb24gb2YgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YTogcmVtb3ZlIHJlbWFpbmluZyBnbHVlIGNvZGUgZnJvbSBSZW5kZXJMYXllcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwODUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBsYXN0IHJl
bWFpbmluZyBnbHVlIGNvZGUgZnJvbSBSZW5kZXJMYXllciwgdGhhdCB3YXMgYWRkZWQKKyAgICAg
ICAgaW4gcjI3MTU1OSB0byBtaW5pbWl6ZSB0aGUgcGF0Y2ggc2l6ZS4gQWZ0ZXIgdGhpcyBwYXRj
aCBhbGwgY2FsbCBzaXRlcworICAgICAgICB1c2UgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYSBk
aXJlY3RseSwgcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIHByb3h5CisgICAgICAgIG1ldGhvZHMgaW4g
UmVuZGVyTGF5ZXIgdGhhdCBmb3J3YXJkIHRvIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuCisK
KyAgICAgICAgVGhlIGRlY2FkZSBvbGQgYnVnIDYwMzA1IChTZXBhcmF0ZSBzY3JvbGxpbmcgY29k
ZSBvdXQgb2YgUmVuZGVyTGF5ZXIpCisgICAgICAgIGlzIGZpbmFsbHkgY2xvc2VkLgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBET00vRE9NSFRNTC5t
bToKKyAgICAgICAgKC1bRE9NSFRNTEVsZW1lbnQgc2Nyb2xsWE9mZnNldF0pOgorICAgICAgICAo
LVtET01IVE1MRWxlbWVudCBzY3JvbGxZT2Zmc2V0XSk6CisgICAgICAgICgtW0RPTUhUTUxFbGVt
ZW50IHNldFNjcm9sbFhPZmZzZXQ6c2Nyb2xsWU9mZnNldDphZGp1c3RGb3JJT1NDYXJldDpdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc2Ny
b2xsRE9NUmFuZ2VUb1Zpc2libGU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9zY3JvbGxET01S
YW5nZVRvVmlzaWJsZTp3aXRoSW5zZXQ6XSk6CisKIDIwMjEtMDEtMjEgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtBcHBsZSBQYXldIHVzZSB0aGUgZmlyc3Qg
aXRlbSBpbiBgc2hpcHBpbmdPcHRpb25zYCBldmVuIHdoZW4gaXQncyBub3QgYHNlbGVjdGVkYApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGFkNGRkMTE5NWY1NjgzMzNiNjFiZTZhYWEz
MzQxNjE5ZTM4MmNiODEuLjk3NTJmOTUxN2U0ZDRiNTA3NzJhNTNlMzQzZWY1NWM0MGI4ZDkzM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wMS0y
MiAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AaWdhbGlhLmNvbT4KKworICAgICAg
ICBGaW5pc2ggaW50cm9kdWN0aW9uIG9mIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6IHJlbW92
ZSByZW1haW5pbmcgZ2x1ZSBjb2RlIGZyb20gUmVuZGVyTGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg1MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgbGFzdCByZW1haW5pbmcg
Z2x1ZSBjb2RlIGZyb20gUmVuZGVyTGF5ZXIsIHRoYXQgd2FzIGFkZGVkCisgICAgICAgIGluIHIy
NzE1NTkgdG8gbWluaW1pemUgdGhlIHBhdGNoIHNpemUuIEFmdGVyIHRoaXMgcGF0Y2ggYWxsIGNh
bGwgc2l0ZXMKKyAgICAgICAgdXNlIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEgZGlyZWN0bHks
IHJlbW92aW5nIHRoZSBuZWVkIGZvciBwcm94eQorICAgICAgICBtZXRob2RzIGluIFJlbmRlckxh
eWVyIHRoYXQgZm9yd2FyZCB0byBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLgorCisgICAgICAg
IFRoZSBkZWNhZGUgb2xkIGJ1ZyA2MDMwNSAoU2VwYXJhdGUgc2Nyb2xsaW5nIGNvZGUgb3V0IG9m
IFJlbmRlckxheWVyKQorICAgICAgICBpcyBmaW5hbGx5IGNsb3NlZC4KKworICAgICAgICBDb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJWaWV3OjpnZXN0dXJlKToKKwogMjAyMS0wMS0xOCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8
bnppbW1lcm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBDb250aW51ZSByZW1vdmluZyBnbHVl
IGNvZGUgZnJvbSBSZW5kZXJMYXllciB0aGF0IHdhcyByZWNlbnRseSBhZGRlZCBpbiByMjcxNTU5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA0ODcyNzAzZTNiZjljMjdjOGVhYTYwMTRiZDgyZWRj
MGQxZDI1MTdhLi44NTcwOWQ4NTM0MDcxMzVkZjJhODAzOTJiZTMzMGVhYThjOTlmN2IyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKQEAgLTM5MjAsNyArMzkyMCw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6c2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogaXMgcG9pbnQgYSBTY3JvbGxPZmZzZXQgb3Ig
U2Nyb2xsUG9zaXRpb24/IFRlc3QgaW4gUlRMIG92ZXJmbG93LgotICAgIGJveC5sYXllcigpLT5l
bnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCktPnNjcm9sbFRvT2Zmc2V0KHBvaW50KTsKKyAgICBB
U1NFUlQoYm94LmxheWVyKCkpOworICAgIEFTU0VSVChib3gubGF5ZXIoKS0+c2Nyb2xsYWJsZUFy
ZWEoKSk7CisgICAgYm94LmxheWVyKCktPnNjcm9sbGFibGVBcmVhKCktPnNjcm9sbFRvT2Zmc2V0
KHBvaW50KTsKIH0KIAogI2lmIEVOQUJMRShNQVRITUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IDZjZGMxMzIwNDBiOGQ0Mjk4ZjFlOTcyZDFlNDQxN2Rl
NDNkZjNiMzguLmNhZmMxNDRlYWM2OTlkYTczZGM5OGUyZmY1ZWY1ZDYyYWU5MTUyZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0yMzgyLDEwICsyMzgy
LDEwIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnJldmVhbFNlbGVjdGlvbihTZWxlY3Rpb25SZXZl
YWxNb2RlIHJldmVhbE1vZGUsIGNvbnN0IFNjcm9sCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgaWYgKFJlbmRlckxheWVyKiBsYXllciA9IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkt
PnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCkpIHsKICAgICAgICAgICAgIGlmICghbV9zY3Jv
bGxpbmdTdXBwcmVzc0NvdW50KSB7Ci0gICAgICAgICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUxh
eWVyID0gbGF5ZXItPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKTsKLSAgICAgICAgICAgICAg
ICBzY3JvbGxhYmxlTGF5ZXItPnNldEFkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZyh0cnVl
KTsKKyAgICAgICAgICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IGxheWVyLT5lbnN1cmVM
YXllclNjcm9sbGFibGVBcmVhKCk7CisgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNl
dEFkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZyh0cnVlKTsKICAgICAgICAgICAgICAgICBs
YXllci0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCBpbnNpZGVGaXhlZCwgeyByZXZlYWxNb2Rl
LCBhbGlnbm1lbnQsIGFsaWdubWVudCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6
WWVzIH0pOwotICAgICAgICAgICAgICAgIHNjcm9sbGFibGVMYXllci0+c2V0QWRqdXN0Rm9ySU9T
Q2FyZXRXaGVuU2Nyb2xsaW5nKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxhYmxlQXJl
YS0+c2V0QWRqdXN0Rm9ySU9TQ2FyZXRXaGVuU2Nyb2xsaW5nKGZhbHNlKTsKICAgICAgICAgICAg
ICAgICB1cGRhdGVBcHBlYXJhbmNlKCk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZG9jdW1lbnQt
PnBhZ2UoKSkKICAgICAgICAgICAgICAgICAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUo
KS5jbGllbnQoKS5ub3RpZnlSZXZlYWxlZFNlbGVjdGlvbkJ5U2Nyb2xsaW5nRnJhbWUoKm1fZG9j
dW1lbnQtPmZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFy
cXVlZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQu
Y3BwCmluZGV4IDBhZGY3ZDE2NGUyZTRlMmIwZmIxMTNmMDNhMWJkM2E3M2MyNzEyNzUuLjUyM2Nj
MWE2MGVjY2U4MGY0N2FmZmZjZTViOTY3MWEwNDRlNTdkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTWFycXVlZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CiAKQEAgLTE3NSw3ICsxNzYsMTAgQEAgUmVuZGVyTWFycXVlZSogSFRNTE1hcnF1ZWVFbGVtZW50
OjpyZW5kZXJNYXJxdWVlKCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIXJlbmRl
cmVyKCktPmhhc0xheWVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBy
ZW5kZXJCb3hNb2RlbE9iamVjdCgpLT5sYXllcigpLT5tYXJxdWVlKCk7CisgICAgYXV0byogc2Ny
b2xsYWJsZUFyZWEgPSByZW5kZXJCb3hNb2RlbE9iamVjdCgpLT5sYXllcigpLT5zY3JvbGxhYmxl
QXJlYSgpOworICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBzY3JvbGxhYmxlQXJlYS0+bWFycXVlZSgpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNmY4NmZh
Mjg2NWQxZTYyNzY3YTAzN2I5NDBjMGMyZjI1Mzg1NGNiNS4uMTU4OWI5NTYzMjgzYWQ1MDliNzY4
Nzg5YmIyN2MyNDhiNjE4NmU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMTQ5MywxMSArMTQ5MywxMCBAQCBPcHRpb25hbDxDdXJzb3I+IEV2ZW50SGFuZGxlcjo6c2Vs
ZWN0Q3Vyc29yKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBzaAogICAgICAgICBi
b29sIGluUmVzaXplciA9IGZhbHNlOwogICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXIt
Pmhhc0xheWVyKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXaXRoIHJpZ2h0LWFsaWduZWQg
dGV4dCBpbiBhIGJveCwgdGhlIHJlbmRlcmVyIGhlcmUgaXMgdXN1YWxseSBhIFJlbmRlclRleHQs
IHdoaWNoIHByZXZlbnRzIHNob3dpbmcgdGhlIHJlc2l6ZSBjdXJzb3I6IHdlYmtpdC5vcmcvYi8y
MTA5MzUuCi0gICAgICAgICAgICBpZiAoYXV0byogbGF5ZXIgPSBkb3duY2FzdDxSZW5kZXJMYXll
ck1vZGVsT2JqZWN0PigqcmVuZGVyZXIpLmxheWVyKCkpIHsKLSAgICAgICAgICAgICAgICBpblJl
c2l6ZXIgPSBsYXllci0+aXNQb2ludEluUmVzaXplQ29udHJvbChyb3VuZGVkSW50UG9pbnQocmVz
dWx0LmxvY2FsUG9pbnQoKSkpOwotICAgICAgICAgICAgICAgIGlmIChpblJlc2l6ZXIpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsYXllci0+c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNj
cm9sbGJhck9uTGVmdCgpID8gc291dGhXZXN0UmVzaXplQ3Vyc29yKCkgOiBzb3V0aEVhc3RSZXNp
emVDdXJzb3IoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIGxheWVyUmVuZGVy
ZXIgPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqcmVuZGVyZXIpOworICAgICAg
ICAgICAgaW5SZXNpemVyID0gbGF5ZXJSZW5kZXJlci5sYXllcigpLT5pc1BvaW50SW5SZXNpemVD
b250cm9sKHJvdW5kZWRJbnRQb2ludChyZXN1bHQubG9jYWxQb2ludCgpKSk7CisgICAgICAgICAg
ICBpZiAoaW5SZXNpemVyKQorICAgICAgICAgICAgICAgIHJldHVybiBsYXllclJlbmRlcmVyLnNo
b3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSA/IHNvdXRoV2VzdFJlc2l6
ZUN1cnNvcigpIDogc291dGhFYXN0UmVzaXplQ3Vyc29yKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoKGVkaXRhYmxlIHx8IChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNUZXh0KCkgJiYgbm9k
ZS0+Y2FuU3RhcnRTZWxlY3Rpb24oKSkpICYmICFpblJlc2l6ZXIgJiYgIXJlc3VsdC5zY3JvbGxi
YXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3NmFlNmY5OGJiNWNkNjNlZjkz
NmU0NjUwYWQ0ZWIwMDQ3NzgxNjliLi43NzEwYTVjMGNjZjk5YjRmNWFjYzhlYjZjYjU5MDNhNTRk
MzZjNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yNTk3LDcgKzI1OTcsOCBA
QCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbGluZygpCiAg
ICAgaWYgKCFsYXlvdXRDb250ZXh0KCkuaXNMYXlvdXROZXN0ZWQoKSAmJiBoYXNWaWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0cygpKSB7CiAgICAgICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3
ID0gdGhpcy0+cmVuZGVyVmlldygpKSB7CiAgICAgICAgICAgICB1cGRhdGVXaWRnZXRQb3NpdGlv
bnMoKTsKLSAgICAgICAgICAgIHJlbmRlclZpZXctPmxheWVyKCktPnVwZGF0ZUxheWVyUG9zaXRp
b25zQWZ0ZXJEb2N1bWVudFNjcm9sbCgpOworICAgICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGFi
bGVBcmVhID0gcmVuZGVyVmlldy0+bGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAg
ICAgICAgICBzY3JvbGxhYmxlQXJlYS0+dXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlckRvY3VtZW50
U2Nyb2xsKCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlh
bE5hdmlnYXRpb24uY3BwCmluZGV4IDgwOWJjMTkxMzQ3MDA3ODc0MzU5MzY4NDViNmNkYTU5MzVl
NWExZGEuLjQ5ZjhhYjdkOTVjMzBiZDYwZDA4YjVlYjk0NjdlOGIzYThkZDEwNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCkBAIC0zOTUsOCArMzk1LDggQEAg
Ym9vbCBzY3JvbGxJbkRpcmVjdGlvbihOb2RlKiBjb250YWluZXIsIEZvY3VzRGlyZWN0aW9uIGRp
cmVjdGlvbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmIChhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBjb250YWluZXItPnJlbmRlckJveCgpLT5lbmNs
b3NpbmdMYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpKQotICAgICAgICAgICAgc2Nyb2xsYWJsZUxh
eWVyLT5zY3JvbGxCeVJlY3Vyc2l2ZWx5KEludFNpemUoZHgsIGR5KSk7CisgICAgICAgIGlmIChh
dXRvKiBzY3JvbGxhYmxlQXJlYSA9IGNvbnRhaW5lci0+cmVuZGVyQm94KCktPmVuY2xvc2luZ0xh
eWVyKCktPnNjcm9sbGFibGVBcmVhKCkpCisgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c2Ny
b2xsQnlSZWN1cnNpdmVseShJbnRTaXplKGR4LCBkeSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KaW5kZXggYzk3MDg3ZmZlNDVh
NzFhM2I3NWMzZWQxOWVkZTM5MmRhOGZjZjM4OS4uYTQ5YzEzMWI0NjIxMGUzMGMyYTc1YTRiMDMz
OTMxNmYxMTE1ZTEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KQEAgLTgyMywx
NCArODIzLDE0IEBAIHZvaWQgRnJhbWU6Om92ZXJmbG93U2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9y
Tm9kZShjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIE5vZGUqCiAgICAgYXV0byogbGF5ZXIgPSBk
b3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oKnJlbmRlcmVyKS5sYXllcigpOwogICAgIGlm
ICghbGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBs
YXllci0+ZW5zdXJlTGF5ZXJTY3JvbGxhYmxlQXJlYSgpOworICAgIGF1dG8qIHNjcm9sbGFibGVB
cmVhID0gbGF5ZXItPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKTsKIAotICAgIGF1dG8gb2xk
U2Nyb2xsVHlwZSA9IHNjcm9sbGFibGVMYXllci0+Y3VycmVudFNjcm9sbFR5cGUoKTsKLSAgICBz
Y3JvbGxhYmxlTGF5ZXItPnNldEN1cnJlbnRTY3JvbGxUeXBlKGlzVXNlclNjcm9sbCA/IFNjcm9s
bFR5cGU6OlVzZXIgOiBTY3JvbGxUeXBlOjpQcm9ncmFtbWF0aWMpOwotICAgIHNjcm9sbGFibGVM
YXllci0+c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKHBvc2l0aW9uKTsKLSAgICBzY3Jv
bGxhYmxlTGF5ZXItPnNldEN1cnJlbnRTY3JvbGxUeXBlKG9sZFNjcm9sbFR5cGUpOworICAgIGF1
dG8gb2xkU2Nyb2xsVHlwZSA9IHNjcm9sbGFibGVBcmVhLT5jdXJyZW50U2Nyb2xsVHlwZSgpOwor
ICAgIHNjcm9sbGFibGVBcmVhLT5zZXRDdXJyZW50U2Nyb2xsVHlwZShpc1VzZXJTY3JvbGwgPyBT
Y3JvbGxUeXBlOjpVc2VyIDogU2Nyb2xsVHlwZTo6UHJvZ3JhbW1hdGljKTsKKyAgICBzY3JvbGxh
YmxlQXJlYS0+c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKHBvc2l0aW9uKTsKKyAgICBz
Y3JvbGxhYmxlQXJlYS0+c2V0Q3VycmVudFNjcm9sbFR5cGUob2xkU2Nyb2xsVHlwZSk7CiAKLSAg
ICBzY3JvbGxhYmxlTGF5ZXItPmRpZEVuZFNjcm9sbCgpOyAvLyBGSVhNRTogU2hvdWxkIHdlIGFs
d2F5cyBjYWxsIHRoaXM/CisgICAgc2Nyb2xsYWJsZUFyZWEtPmRpZEVuZFNjcm9sbCgpOyAvLyBG
SVhNRTogU2hvdWxkIHdlIGFsd2F5cyBjYWxsIHRoaXM/CiB9CiAKIHZvaWQgRnJhbWU6OnJlc2V0
QWxsR2VvbG9jYXRpb25QZXJtaXNzaW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50
SGFuZGxlck1hYy5tbQppbmRleCAxZDRjODYxMTc2ZmVkZWYyMDY0ZTIyMDIzNjM5MDE0NTYzODQx
ZDZhLi5iMjQ5ZTRmNGZkOTkyYjRlNjFhZTdmZWY5MDAwOGY1NjhmOTEwZTliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC03OTIsMTAgKzc5Miw4IEBA
IHN0YXRpYyBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWFGb3JCb3goUmVuZGVyQm94JiBi
b3gpCiAgICAgaWYgKGlzPFJlbmRlckxpc3RCb3g+KGJveCkpCiAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxSZW5kZXJMaXN0Qm94PigmYm94KTsKIAotICAgIGlmIChib3gubGF5ZXIoKSkgewotICAg
ICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUxheWVyID0gYm94LmxheWVyKCktPnNjcm9sbGFibGVB
cmVhKCkpCi0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsYWJsZUxheWVyOwotICAgIH0KKyAgICBp
ZiAoYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBib3gubGF5ZXIoKSA/IGJveC5sYXllcigpLT5zY3Jv
bGxhYmxlQXJlYSgpIDogbnVsbHB0cikKKyAgICAgICAgcmV0dXJuIHNjcm9sbGFibGVBcmVhOwog
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAppbmRleCBiNjZjZDk0ZmQ5ZjIwMWMwY2FlNzM3ZTY2OTUzMTEyNjA0NDFkNzNmLi5k
MzM4YTczYmU0ZjQ0MDBlOGIyZDkyM2RiOGQ2MTIxZWViMzJhM2IzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTIwMDYsOCArMjAwNiw4IEBAIGJvb2wgUmVu
ZGVyQmxvY2s6OmlzUG9pbnRJbk92ZXJmbG93Q29udHJvbChIaXRUZXN0UmVzdWx0JiByZXN1bHQs
IGNvbnN0IExheW91dFBvCiB7CiAgICAgaWYgKCFzY3JvbGxzT3ZlcmZsb3coKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBsYXllcigpID8g
bGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSA6IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBzY3Jv
bGxhYmxlTGF5ZXItPmhpdFRlc3RPdmVyZmxvd0NvbnRyb2xzKHJlc3VsdCwgcm91bmRlZEludFBv
aW50KGxvY2F0aW9uSW5Db250YWluZXIgLSB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQp
KSk7CisgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbGF5ZXIoKSA/IGxheWVyKCktPnNj
cm9sbGFibGVBcmVhKCkgOiBudWxscHRyKQorICAgICAgICByZXR1cm4gc2Nyb2xsYWJsZUFyZWEt
PmhpdFRlc3RPdmVyZmxvd0NvbnRyb2xzKHJlc3VsdCwgcm91bmRlZEludFBvaW50KGxvY2F0aW9u
SW5Db250YWluZXIgLSB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpKSk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC0yNTEwLDE2ICsyNTEwLDE2IEBAIGludCBSZW5kZXJCbG9jazo6
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGlu
ZSwgTGluCiAgICAgICAgICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVu
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgICAgIGF1dG8qIHNj
cm9sbGFibGVMYXllciA9IGxheWVyKCkgPyBsYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVs
bHB0cjsKLSAgICAgICAgICAgIGlmICghc2Nyb2xsYWJsZUxheWVyKQorICAgICAgICAgICAgYXV0
byogc2Nyb2xsYWJsZUFyZWEgPSBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSA6
IG51bGxwdHI7CisgICAgICAgICAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgaWYgKHNjcm9sbGFibGVMYXllci0+bWFy
cXVlZSgpKQorICAgICAgICAgICAgaWYgKHNjcm9sbGFibGVBcmVhLT5tYXJxdWVlKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0g
SG9yaXpvbnRhbExpbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNjcm9sbGFibGVMYXllci0+
dmVydGljYWxTY3JvbGxiYXIoKSB8fCBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbE9mZnNldCgpLnko
KTsKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGxhYmxlTGF5ZXItPmhvcml6b250YWxTY3JvbGxi
YXIoKSB8fCBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbE9mZnNldCgpLngoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsU2Nyb2xsYmFyKCkgfHwgc2Nyb2xs
YWJsZUFyZWEtPnNjcm9sbE9mZnNldCgpLnkoKTsKKyAgICAgICAgICAgIHJldHVybiBzY3JvbGxh
YmxlQXJlYS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpIHx8IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxP
ZmZzZXQoKS54KCk7CiAgICAgICAgIH07CiAKICAgICAgICAgT3B0aW9uYWw8aW50PiBiYXNlbGlu
ZVBvcyA9IGlnbm9yZUJhc2VsaW5lKCkgPyBPcHRpb25hbDxpbnQ+KCkgOiBpbmxpbmVCbG9ja0Jh
c2VsaW5lKGRpcmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCmluZGV4IGE3OWVkZTEzYjdlZWNiNWUwNmExNjUyNTRlOTdkYmEzMDcyMjEzNzYu
Ljg5OGQ0MjZmZDkzNjg3M2I2ZDU0MGQ2ZjljMDkwNzNlMTJkMjE0ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zNDksNyArMzQ5LDggQEAg
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91
dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwKIAogICAgIGlmICghc3R5bGUoKS5hdXRvV3JhcCgpICYm
IGNoaWxkcmVuSW5saW5lKCkpIHsKICAgICAgICAgLy8gQSBob3Jpem9udGFsIG1hcnF1ZWUgd2l0
aCBpbmxpbmUgY2hpbGRyZW4gaGFzIG5vIG1pbmltdW0gd2lkdGguCi0gICAgICAgIGlmIChsYXll
cigpICYmIGxheWVyKCktPm1hcnF1ZWUoKSAmJiBsYXllcigpLT5tYXJxdWVlKCktPmlzSG9yaXpv
bnRhbCgpKQorICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IGxheWVyKCkgPyBsYXllcigp
LT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKHNjcm9sbGFibGVBcmVh
ICYmIHNjcm9sbGFibGVBcmVhLT5tYXJxdWVlKCkgJiYgc2Nyb2xsYWJsZUFyZWEtPm1hcnF1ZWUo
KS0+aXNIb3Jpem9udGFsKCkpCiAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSAwOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAwNzVlMjdhZThi
YjUzMDJjYWVmMmM4ZTMzZjFhNGNhNzI1YjViMTUwLi45MTJlMjhlYmE4NmQzYjI0ZTJiN2EyZTQ2
NTAxYjkwMmE1M2FmMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApA
QCAtMzIwLDEwICszMjAsMTIgQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUKICAgICAvLyBJZiBv
dXIgem9vbSBmYWN0b3IgY2hhbmdlcyBhbmQgd2UgaGF2ZSBhIGRlZmluZWQgc2Nyb2xsTGVmdC9U
b3AsIHdlIG5lZWQgdG8gYWRqdXN0IHRoYXQgdmFsdWUgaW50byB0aGUKICAgICAvLyBuZXcgem9v
bWVkIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpICYmIGxheWVy
KCkgJiYgb2xkU3R5bGUgJiYgb2xkU3R5bGUtPmVmZmVjdGl2ZVpvb20oKSAhPSBuZXdTdHlsZS5l
ZmZlY3RpdmVab29tKCkpIHsKLSAgICAgICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24g
PSBsYXllcigpLT5zY3JvbGxQb3NpdGlvbigpOwotICAgICAgICBmbG9hdCB6b29tU2NhbGVGYWN0
b3IgPSBuZXdTdHlsZS5lZmZlY3RpdmVab29tKCkgLyBvbGRTdHlsZS0+ZWZmZWN0aXZlWm9vbSgp
OwotICAgICAgICBzY3JvbGxQb3NpdGlvbi5zY2FsZSh6b29tU2NhbGVGYWN0b3IpOwotICAgICAg
ICBsYXllcigpLT5zZXRQb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOwor
ICAgICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBsYXllcigpLT5zY3JvbGxhYmxlQXJl
YSgpKSB7CisgICAgICAgICAgICBTY3JvbGxQb3NpdGlvbiBzY3JvbGxQb3NpdGlvbiA9IHNjcm9s
bGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOworICAgICAgICAgICAgZmxvYXQgem9vbVNjYWxl
RmFjdG9yID0gbmV3U3R5bGUuZWZmZWN0aXZlWm9vbSgpIC8gb2xkU3R5bGUtPmVmZmVjdGl2ZVpv
b20oKTsKKyAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uLnNjYWxlKHpvb21TY2FsZUZhY3Rvcik7
CisgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c2V0UG9zdExheW91dFNjcm9sbFBvc2l0aW9u
KHNjcm9sbFBvc2l0aW9uKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIE91ciBvcGFxdWVu
ZXNzIG1pZ2h0IGhhdmUgY2hhbmdlZCB3aXRob3V0IHRyaWdnZXJpbmcgbGF5b3V0LgpAQCAtNTcy
LDEyICs1NzQsMTQgQEAgaW50IFJlbmRlckJveDo6c2Nyb2xsSGVpZ2h0KCkgY29uc3QKIAogaW50
IFJlbmRlckJveDo6c2Nyb2xsTGVmdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc092ZXJmbG93
Q2xpcCgpICYmIGxheWVyKCkgPyBsYXllcigpLT5zY3JvbGxQb3NpdGlvbigpLngoKSA6IDA7Cisg
ICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFy
ZWEoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIChoYXNPdmVyZmxvd0NsaXAoKSAmJiBzY3JvbGxh
YmxlQXJlYSkgPyBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKS54KCkgOiAwOwogfQog
CiBpbnQgUmVuZGVyQm94OjpzY3JvbGxUb3AoKSBjb25zdAogewotICAgIHJldHVybiBoYXNPdmVy
Zmxvd0NsaXAoKSAmJiBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsUG9zaXRpb24oKS55KCkgOiAw
OworICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbGF5ZXIoKSA/IGxheWVyKCktPnNjcm9sbGFi
bGVBcmVhKCkgOiBudWxscHRyOworICAgIHJldHVybiAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgc2Ny
b2xsYWJsZUFyZWEpID8gc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCkueSgpIDogMDsK
IH0KIAogdm9pZCBSZW5kZXJCb3g6OnJlc2V0TG9naWNhbEhlaWdodEJlZm9yZUxheW91dElmTmVl
ZGVkKCkKQEAgLTU4NiwzOCArNTkwLDQyIEBAIHZvaWQgUmVuZGVyQm94OjpyZXNldExvZ2ljYWxI
ZWlnaHRCZWZvcmVMYXlvdXRJZk5lZWRlZCgpCiAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoMF9s
dSk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldHVwV2hlZWxFdmVudE1vbml0b3IoUmVuZGVyTGF5ZXIm
IGxheWVyKQorc3RhdGljIHZvaWQgc2V0dXBXaGVlbEV2ZW50TW9uaXRvcihSZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICBQYWdlJiBwYWdlID0gbGF5ZXIu
cmVuZGVyZXIoKS5wYWdlKCk7CisgICAgUGFnZSYgcGFnZSA9IHNjcm9sbGFibGVBcmVhLmxheWVy
KCkucmVuZGVyZXIoKS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlLmlzTW9uaXRvcmluZ1doZWVsRXZl
bnRzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBsYXll
ci5zY3JvbGxhYmxlQXJlYSgpOwotICAgIEFTU0VSVChzY3JvbGxhYmxlTGF5ZXIpOwotICAgIHNj
cm9sbGFibGVMYXllci0+c2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3Io
cGFnZS53aGVlbEV2ZW50VGVzdE1vbml0b3IoKSk7CisgICAgc2Nyb2xsYWJsZUFyZWEuc2Nyb2xs
QW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFnZS53aGVlbEV2ZW50VGVzdE1v
bml0b3IoKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpzZXRTY3JvbGxMZWZ0KGludCBuZXdMZWZ0
LCBjb25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KCFoYXNPdmVyZmxvd0NsaXAoKSB8fCAhbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNl
dHVwV2hlZWxFdmVudE1vbml0b3IoKmxheWVyKCkpOwotICAgIGxheWVyKCktPmVuc3VyZUxheWVy
U2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsVG9YUG9zaXRpb24obmV3TGVmdCwgb3B0aW9ucyk7Cisg
ICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBsYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpOworICAg
IEFTU0VSVChzY3JvbGxhYmxlQXJlYSk7CisgICAgc2V0dXBXaGVlbEV2ZW50TW9uaXRvcigqc2Ny
b2xsYWJsZUFyZWEpOworICAgIHNjcm9sbGFibGVBcmVhLT5zY3JvbGxUb1hQb3NpdGlvbihuZXdM
ZWZ0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OnNldFNjcm9sbFRvcChpbnQgbmV3
VG9wLCBjb25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
aWYgKCFoYXNPdmVyZmxvd0NsaXAoKSB8fCAhbGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IHNldHVwV2hlZWxFdmVudE1vbml0b3IoKmxheWVyKCkpOwotICAgIGxheWVyKCktPmVuc3VyZUxh
eWVyU2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsVG9ZUG9zaXRpb24obmV3VG9wLCBvcHRpb25zKTsK
KyAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IGxheWVyKCktPnNjcm9sbGFibGVBcmVhKCk7Cisg
ICAgQVNTRVJUKHNjcm9sbGFibGVBcmVhKTsKKyAgICBzZXR1cFdoZWVsRXZlbnRNb25pdG9yKCpz
Y3JvbGxhYmxlQXJlYSk7CisgICAgc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFRvWVBvc2l0aW9uKG5l
d1RvcCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpzZXRTY3JvbGxQb3NpdGlvbihj
b25zdCBTY3JvbGxQb3NpdGlvbiYgcG9zaXRpb24sIGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdl
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIWhhc092ZXJmbG93Q2xpcCgpIHx8ICFsYXll
cigpKQogICAgICAgICByZXR1cm47Ci0gICAgc2V0dXBXaGVlbEV2ZW50TW9uaXRvcigqbGF5ZXIo
KSk7Ci0gICAgbGF5ZXIoKS0+ZW5zdXJlTGF5ZXJTY3JvbGxhYmxlQXJlYSgpLT5zZXRTY3JvbGxQ
b3NpdGlvbihwb3NpdGlvbiwgb3B0aW9ucyk7CisgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBs
YXllcigpLT5zY3JvbGxhYmxlQXJlYSgpOworICAgIEFTU0VSVChzY3JvbGxhYmxlQXJlYSk7Cisg
ICAgc2V0dXBXaGVlbEV2ZW50TW9uaXRvcigqc2Nyb2xsYWJsZUFyZWEpOworICAgIHNjcm9sbGFi
bGVBcmVhLT5zZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbiwgb3B0aW9ucyk7CiB9CiAKIHZvaWQg
UmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKQEAgLTgzNSwxMiArODQzLDE4IEBA
IGJvb2wgUmVuZGVyQm94OjppbmNsdWRlSG9yaXpvbnRhbFNjcm9sbGJhclNpemUoKSBjb25zdAog
CiBpbnQgUmVuZGVyQm94Ojp2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gaW5jbHVkZVZlcnRpY2FsU2Nyb2xsYmFyU2l6ZSgpID8gbGF5ZXIoKS0+dmVydGljYWxT
Y3JvbGxiYXJXaWR0aCgpIDogMDsKKyAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IGxheWVyKCkg
PyBsYXllcigpLT5zY3JvbGxhYmxlQXJlYSgpIDogbnVsbHB0cjsKKyAgICBpZiAoIXNjcm9sbGFi
bGVBcmVhKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gaW5jbHVkZVZlcnRpY2FsU2Ny
b2xsYmFyU2l6ZSgpID8gc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKSA6
IDA7CiB9CiAKIGludCBSZW5kZXJCb3g6Omhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoKSBjb25z
dAogewotICAgIHJldHVybiBpbmNsdWRlSG9yaXpvbnRhbFNjcm9sbGJhclNpemUoKSA/IGxheWVy
KCktPmhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoKSA6IDA7CisgICAgYXV0byogc2Nyb2xsYWJs
ZUFyZWEgPSBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSA6IG51bGxwdHI7Cisg
ICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGlu
Y2x1ZGVIb3Jpem9udGFsU2Nyb2xsYmFyU2l6ZSgpID8gc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250
YWxTY3JvbGxiYXJIZWlnaHQoKSA6IDA7CiB9CiAKIGludCBSZW5kZXJCb3g6OmludHJpbnNpY1Nj
cm9sbGJhckxvZ2ljYWxXaWR0aCgpIGNvbnN0CkBAIC04NjMsOCArODc3LDggQEAgaW50IFJlbmRl
ckJveDo6aW50cmluc2ljU2Nyb2xsYmFyTG9naWNhbFdpZHRoKCkgY29uc3QKIAogYm9vbCBSZW5k
ZXJCb3g6OnNjcm9sbExheWVyKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyLCBFbGVtZW50Kiogc3RvcEVsZW1l
bnQpCiB7Ci0gICAgUmVuZGVyTGF5ZXIqIGJveExheWVyID0gbGF5ZXIoKTsKLSAgICBpZiAoYm94
TGF5ZXIgJiYgYm94TGF5ZXItPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0aXBs
aWVyKSkgeworICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbGF5ZXIoKSA/IGxheWVyKCktPnNj
cm9sbGFibGVBcmVhKCkgOiBudWxscHRyOworICAgIGlmIChzY3JvbGxhYmxlQXJlYSAmJiBzY3Jv
bGxhYmxlQXJlYS0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIG11bHRpcGxpZXIpKSB7
CiAgICAgICAgIGlmIChzdG9wRWxlbWVudCkKICAgICAgICAgICAgICpzdG9wRWxlbWVudCA9IGVs
ZW1lbnQoKTsKIApAQCAtODk0LDE0ICs5MDgsMTMgQEAgYm9vbCBSZW5kZXJCb3g6OmxvZ2ljYWxT
Y3JvbGwoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXQK
IHsKICAgICBib29sIHNjcm9sbGVkID0gZmFsc2U7CiAgICAgCi0gICAgUmVuZGVyTGF5ZXIqIGwg
PSBsYXllcigpOwotICAgIGlmIChsKSB7CisgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhID0g
bGF5ZXIoKSA/IGxheWVyKCktPnNjcm9sbGFibGVBcmVhKCkgOiBudWxscHRyKSB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgICAgIC8vIE9uIE1hYyBvbmx5IHdlIHJlc2V0IHRoZSBpbmxpbmUg
ZGlyZWN0aW9uIHBvc2l0aW9uIHdoZW4gZG9pbmcgYSBkb2N1bWVudCBzY3JvbGwgKGUuZy4sIGhp
dHRpbmcgSG9tZS9FbmQpLgogICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gU2Nyb2xsQnlEb2N1
bWVudCkKLSAgICAgICAgICAgIHNjcm9sbGVkID0gbC0+c2Nyb2xsKGxvZ2ljYWxUb1BoeXNpY2Fs
KFNjcm9sbElubGluZURpcmVjdGlvbkJhY2t3YXJkLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgp
LCBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpLCBTY3JvbGxCeURvY3VtZW50
LCBtdWx0aXBsaWVyKTsKKyAgICAgICAgICAgIHNjcm9sbGVkID0gc2Nyb2xsYWJsZUFyZWEtPnNj
cm9sbChsb2dpY2FsVG9QaHlzaWNhbChTY3JvbGxJbmxpbmVEaXJlY3Rpb25CYWNrd2FyZCwgaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9k
ZSgpKSwgU2Nyb2xsQnlEb2N1bWVudCwgbXVsdGlwbGllcik7CiAjZW5kaWYKLSAgICAgICAgaWYg
KGwtPnNjcm9sbChsb2dpY2FsVG9QaHlzaWNhbChkaXJlY3Rpb24sIGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCksIHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSksIGdyYW51bGFy
aXR5LCBtdWx0aXBsaWVyKSkKKyAgICAgICAgaWYgKHNjcm9sbGFibGVBcmVhLT5zY3JvbGwobG9n
aWNhbFRvUGh5c2ljYWwoZGlyZWN0aW9uLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpLCBzdHls
ZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpLCBncmFudWxhcml0eSwgbXVsdGlwbGll
cikpCiAgICAgICAgICAgICBzY3JvbGxlZCA9IHRydWU7CiAgICAgICAgIAogICAgICAgICBpZiAo
c2Nyb2xsZWQpIHsKQEAgLTEwMjcsOCArMTA0MCw4IEBAIFJlbmRlckJveCogUmVuZGVyQm94Ojpm
aW5kQXV0b3Njcm9sbGFibGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAogdm9pZCBSZW5kZXJC
b3g6OnBhblNjcm9sbChjb25zdCBJbnRQb2ludCYgc291cmNlKQogewotICAgIGlmIChsYXllcigp
KQotICAgICAgICBsYXllcigpLT5wYW5TY3JvbGxGcm9tUG9pbnQoc291cmNlKTsKKyAgICBpZiAo
YXV0byogc2Nyb2xsYWJsZUFyZWEgPSBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEo
KSA6IG51bGxwdHIpCisgICAgICAgIHNjcm9sbGFibGVBcmVhLT5wYW5TY3JvbGxGcm9tUG9pbnQo
c291cmNlKTsKIH0KIAogYm9vbCBSZW5kZXJCb3g6OmNhblVzZU92ZXJsYXlTY3JvbGxiYXJzKCkg
Y29uc3QKQEAgLTEwNTcsNyArMTA3MCwxMSBAQCBTY3JvbGxQb3NpdGlvbiBSZW5kZXJCb3g6OnNj
cm9sbFBvc2l0aW9uKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgMCwgMCB9OwogCiAgICAgQVNT
RVJUKGhhc0xheWVyKCkpOwotICAgIHJldHVybiBsYXllcigpLT5zY3JvbGxQb3NpdGlvbigpOwor
ICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKTsKKyAg
ICBpZiAoIXNjcm9sbGFibGVBcmVhKQorICAgICAgICByZXR1cm4geyAwLCAwIH07CisKKyAgICBy
ZXR1cm4gc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCk7CiB9CiAKIExheW91dFNpemUg
UmVuZGVyQm94OjpjYWNoZWRTaXplRm9yT3ZlcmZsb3dDbGlwKCkgY29uc3QKQEAgLTE2MjEsOSAr
MTYzOCwxMCBAQCBib29sIFJlbmRlckJveDo6Y29tcHV0ZUJhY2tncm91bmRJc0tub3duVG9CZU9i
c2N1cmVkKGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZgogICAgIGlmICghZ2V0QmFja2dyb3Vu
ZFBhaW50ZWRFeHRlbnQocGFpbnRPZmZzZXQsIGJhY2tncm91bmRSZWN0KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+c2Nyb2xsaW5nTWF5
UmV2ZWFsQmFja2dyb3VuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICBpZiAoYXV0
byogc2Nyb2xsYWJsZUFyZWEgPSBsYXllcigpID8gbGF5ZXIoKS0+c2Nyb2xsYWJsZUFyZWEoKSA6
IG51bGxwdHIpIHsKKyAgICAgICAgaWYgKHNjcm9sbGFibGVBcmVhLT5zY3JvbGxpbmdNYXlSZXZl
YWxCYWNrZ3JvdW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIHJl
dHVybiBmb3JlZ3JvdW5kSXNLbm93blRvQmVPcGFxdWVJblJlY3QoYmFja2dyb3VuZFJlY3QsIGJh
Y2tncm91bmRPYnNjdXJhdGlvblRlc3RNYXhEZXB0aCk7CiB9CiAKQEAgLTE5NDAsMTAgKzE5NTgs
MTAgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om92ZXJmbG93Q2xpcFJlY3QoY29uc3QgTGF5b3V0
UG9pbnQmIGxvY2F0aW9uLCBSZW5kZXJGcmFnbWUKICAgICBjbGlwUmVjdC5zZXRTaXplKGNsaXBS
ZWN0LnNpemUoKSAtIExheW91dFNpemUoYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKSwgYm9y
ZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSkpOwogCiAgICAgLy8gU3VidHJhY3Qgb3V0IHNjcm9s
bGJhcnMgaWYgd2UgaGF2ZSB0aGVtLgotICAgIGlmIChsYXllcigpKSB7CisgICAgaWYgKGF1dG8q
IHNjcm9sbGFibGVBcmVhID0gbGF5ZXIoKSA/IGxheWVyKCktPnNjcm9sbGFibGVBcmVhKCkgOiBu
dWxscHRyKSB7CiAgICAgICAgIGlmIChzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFy
T25MZWZ0KCkpCi0gICAgICAgICAgICBjbGlwUmVjdC5tb3ZlKGxheWVyKCktPnZlcnRpY2FsU2Ny
b2xsYmFyV2lkdGgocmVsZXZhbmN5KSwgMCk7Ci0gICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0KGxh
eWVyKCktPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgocmVsZXZhbmN5KSwgbGF5ZXIoKS0+aG9yaXpv
bnRhbFNjcm9sbGJhckhlaWdodChyZWxldmFuY3kpKTsKKyAgICAgICAgICAgIGNsaXBSZWN0Lm1v
dmUoc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgocmVsZXZhbmN5KSwgMCk7
CisgICAgICAgIGNsaXBSZWN0LmNvbnRyYWN0KHNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbFNjcm9s
bGJhcldpZHRoKHJlbGV2YW5jeSksIHNjcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsU2Nyb2xsYmFy
SGVpZ2h0KHJlbGV2YW5jeSkpOwogICAgIH0KIAogICAgIHJldHVybiBjbGlwUmVjdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4
IDgzODI1NmMxMWVmMjRmZTRiZmRjYTdkNmRmMTM2OTRkYmZlZDhmZDAuLjFjOWEwNDM0YWY5Y2Uy
ZDgwNDRkNWRhZTAwYTE3MTU4ODU5MDY2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1
ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJTY3Jv
bGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlJlbmRlck11bHRpQ29sdW1uRmxvdy5oIgogI2luY2x1
ZGUgIlJlbmRlclRhYmxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIKQEAgLTQ4OSw4
ICs0OTAsMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZVN0aWNreVBvc2l0
aW9uQ29uc3RyYWludHMoU3RpY2t5UG9zaXRpb25WaWV3cG8KICAgICAgICAgRmxvYXRQb2ludCBj
b250YWluZXJMb2NhdGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3RvciA9IGNvbnRhaW5lclJl
Y3RSZWxhdGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3IubG9jYXRpb24oKSAtCiAgICAgICAgICAgICBG
bG9hdFNpemUoZW5jbG9zaW5nQ2xpcHBpbmdCb3guYm9yZGVyTGVmdCgpICsgZW5jbG9zaW5nQ2xp
cHBpbmdCb3gucGFkZGluZ0xlZnQoKSwKICAgICAgICAgICAgIGVuY2xvc2luZ0NsaXBwaW5nQm94
LmJvcmRlclRvcCgpICsgZW5jbG9zaW5nQ2xpcHBpbmdCb3gucGFkZGluZ1RvcCgpKTsKLSAgICAg
ICAgaWYgKCZlbmNsb3NpbmdDbGlwcGluZ0JveCAhPSBjb250YWluaW5nQmxvY2spCi0gICAgICAg
ICAgICBjb250YWluZXJMb2NhdGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3RvciArPSBlbmNs
b3NpbmdDbGlwcGluZ0xheWVyLT5zY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgaWYgKCZlbmNsb3Np
bmdDbGlwcGluZ0JveCAhPSBjb250YWluaW5nQmxvY2spIHsKKyAgICAgICAgICAgIGlmIChhdXRv
KiBzY3JvbGxhYmxlQXJlYSA9IGVuY2xvc2luZ0NsaXBwaW5nTGF5ZXItPnNjcm9sbGFibGVBcmVh
KCkpCisgICAgICAgICAgICAgICAgY29udGFpbmVyTG9jYXRpb25SZWxhdGl2ZVRvU2Nyb2xsaW5n
QW5jZXN0b3IgKz0gc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbE9mZnNldCgpOworICAgICAgICB9CiAg
ICAgICAgIGNvbnRhaW5lclJlY3RSZWxhdGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3Iuc2V0TG9jYXRp
b24oY29udGFpbmVyTG9jYXRpb25SZWxhdGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3IpOwogICAgIH0K
ICAgICBjb25zdHJhaW50cy5zZXRDb250YWluaW5nQmxvY2tSZWN0KGNvbnRhaW5lclJlY3RSZWxh
dGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3IpOwpAQCAtNTA3LDggKzUxMCwxMCBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyhTdGlja3lQ
b3NpdGlvblZpZXdwbwogICAgIGlmIChlbmNsb3NpbmdDbGlwcGluZ0xheWVyKSB7CiAgICAgICAg
IHN0aWNreUxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yIC09IEZsb2F0U2l6ZShl
bmNsb3NpbmdDbGlwcGluZ0JveC5ib3JkZXJMZWZ0KCkgKyBlbmNsb3NpbmdDbGlwcGluZ0JveC5w
YWRkaW5nTGVmdCgpLAogICAgICAgICAgICAgZW5jbG9zaW5nQ2xpcHBpbmdCb3guYm9yZGVyVG9w
KCkgKyBlbmNsb3NpbmdDbGlwcGluZ0JveC5wYWRkaW5nVG9wKCkpOwotICAgICAgICBpZiAoJmVu
Y2xvc2luZ0NsaXBwaW5nQm94ICE9IGNvbnRhaW5pbmdCbG9jaykKLSAgICAgICAgICAgIHN0aWNr
eUxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yICs9IGVuY2xvc2luZ0NsaXBwaW5n
TGF5ZXItPnNjcm9sbE9mZnNldCgpOworICAgICAgICBpZiAoJmVuY2xvc2luZ0NsaXBwaW5nQm94
ICE9IGNvbnRhaW5pbmdCbG9jaykgeworICAgICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVB
cmVhID0gZW5jbG9zaW5nQ2xpcHBpbmdMYXllci0+c2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAg
ICAgICAgICBzdGlja3lMb2NhdGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3RvciArPSBzY3Jv
bGxhYmxlQXJlYS0+c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIH0KICAgICB9CiAgICAgLy8gRklY
TUU6IEZvciBub3csIGFzc3VtZSB0aGF0IHx0aGlzfCBpcyBub3QgdHJhbnNmb3JtZWQuCiAgICAg
c3RpY2t5Qm94UmVsYXRpdmVUb1Njcm9sbGluZ0FuZWNzdG9yLnNldExvY2F0aW9uKHN0aWNreUxv
Y2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yKTsKQEAgLTU0NywxMSArNTUyLDE0IEBA
IEZsb2F0UmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29uc3RyYWluaW5nUmVjdEZvclN0aWNr
eVBvc2l0aW9uKCkgY29uc3QKIAogICAgICAgICBGbG9hdFJlY3QgY29uc3RyYWluaW5nUmVjdCA9
IGVuY2xvc2luZ0NsaXBwaW5nQm94LmxvY2FsVG9Db250YWluZXJRdWFkKEZsb2F0UmVjdChjbGlw
UmVjdCksICZ2aWV3KCkpLmJvdW5kaW5nQm94KCk7CiAKLSAgICAgICAgRmxvYXRQb2ludCBzY3Jv
bGxPZmZzZXQgPSBGbG9hdFBvaW50KCkgKyBlbmNsb3NpbmdDbGlwcGluZ0xheWVyLT5zY3JvbGxP
ZmZzZXQoKTsKKyAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBlbmNsb3NpbmdDbGlwcGlu
Z0xheWVyLT5zY3JvbGxhYmxlQXJlYSgpOworICAgICAgICBGbG9hdFBvaW50IHNjcm9sbE9mZnNl
dDsKKyAgICAgICAgaWYgKHNjcm9sbGFibGVBcmVhKQorICAgICAgICAgICAgc2Nyb2xsT2Zmc2V0
ID0gRmxvYXRQb2ludCgpICsgc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbE9mZnNldCgpOwogCiAgICAg
ICAgIGZsb2F0IHNjcm9sbGJhck9mZnNldCA9IDA7Ci0gICAgICAgIGlmIChlbmNsb3NpbmdDbGlw
cGluZ0JveC5oYXNMYXllcigpICYmIGVuY2xvc2luZ0NsaXBwaW5nQm94LnNob3VsZFBsYWNlQmxv
Y2tEaXJlY3Rpb25TY3JvbGxiYXJPbkxlZnQoKSkKLSAgICAgICAgICAgIHNjcm9sbGJhck9mZnNl
dCA9IGVuY2xvc2luZ0NsaXBwaW5nQm94LmxheWVyKCktPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgo
SWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUpOworICAgICAgICBpZiAoZW5jbG9zaW5nQ2xpcHBp
bmdCb3guaGFzTGF5ZXIoKSAmJiBlbmNsb3NpbmdDbGlwcGluZ0JveC5zaG91bGRQbGFjZUJsb2Nr
RGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgJiYgc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgICAg
ICBzY3JvbGxiYXJPZmZzZXQgPSBzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxiYXJXaWR0
aChJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSk7CiAKICAgICAgICAgY29uc3RyYWluaW5nUmVj
dC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KHNjcm9sbE9mZnNldC54KCkgKyBzY3JvbGxiYXJPZmZz
ZXQsIHNjcm9sbE9mZnNldC55KCkpKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cmFpbmluZ1JlY3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBjMzI0YjE2NzNl
MTQ1NjRiOWE0ZGJkNjFlM2RmZjEwMWY1ZWExODlhLi4wMzQ3ZWY0YzM0ODFiYmQ2Y2VmODhjOTc0
YmQ2Y2Y0NWRkMmM3MjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKQEAgLTM3Niw5NCArMzc2LDYgQEAgUmVuZGVyTGF5ZXI6On5SZW5kZXJMYXllcigpCiAgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZW5kZXJlcigpLnJlbmRl
clRyZWVCZWluZ0Rlc3Ryb3llZCgpIHx8ICFmaXJzdENoaWxkKCkpOwogfQogCi0vLyBTdGFydCBv
ZiB0ZW1wb3JhcnkgZ2x1ZSBjb2RlIHRvIGhlbHAgbGFuZGluZyB3ZWJraXQub3JnL2IvNjAzMDUg
KHNwbGl0IFJlbmRlckxheWVyIGludG8gUmVuZGVyTGF5ZXIvUmVuZGVyTGF5ZXJTY3JvbGxhYmxl
QXJlYSkKLVNjcm9sbE9mZnNldCBSZW5kZXJMYXllcjo6c2Nyb2xsT2Zmc2V0KCkgY29uc3QKLXsK
LSAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKLSAgICAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWEtPnNjcm9sbE9mZnNldCgpOwotICAgIHJldHVybiB7IDAsIDAgfTsKLX0KLQotYm9vbCBSZW5k
ZXJMYXllcjo6c2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVmdCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHJlbmRlcmVyKCkuc2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9s
bGJhck9uTGVmdCgpOwotfQotCi1SZW5kZXJNYXJxdWVlKiBSZW5kZXJMYXllcjo6bWFycXVlZSgp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIHJldHVybiBtX3Nj
cm9sbGFibGVBcmVhLT5tYXJxdWVlKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQg
UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJEb2N1bWVudFNjcm9sbCgpCi17
Ci0gICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnVw
ZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJEb2N1bWVudFNjcm9sbCgpOwotfQotCi12b2lkIFJlbmRl
ckxheWVyOjpzZXRQb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24oT3B0aW9uYWw8U2Nyb2xsUG9zaXRp
b24+IHBvc2l0aW9uKQotewotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQotICAgICAgICBtX3Nj
cm9sbGFibGVBcmVhLT5zZXRQb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOwotfQot
Ci12b2lkIFJlbmRlckxheWVyOjpwYW5TY3JvbGxGcm9tUG9pbnQoY29uc3QgSW50UG9pbnQmIHBv
aW50KQotewotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQotICAgICAgICBtX3Njcm9sbGFibGVB
cmVhLT5wYW5TY3JvbGxGcm9tUG9pbnQocG9pbnQpOwotfQotCi1TY3JvbGxQb3NpdGlvbiBSZW5k
ZXJMYXllcjo6c2Nyb2xsUG9zaXRpb24oKSBjb25zdAotewotICAgIGlmIChtX3Njcm9sbGFibGVB
cmVhKQotICAgICAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKTsK
LSAgICByZXR1cm4gU2Nyb2xsUG9zaXRpb24oKTsKLX0KLQotYm9vbCBSZW5kZXJMYXllcjo6c2Ny
b2xsaW5nTWF5UmV2ZWFsQmFja2dyb3VuZCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2Nyb2xsYWJs
ZUFyZWEpCi0gICAgICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxpbmdNYXlSZXZl
YWxCYWNrZ3JvdW5kKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlbmRlckxheWVy
OjpoYXNTY3JvbGxhYmxlSG9yaXpvbnRhbE92ZXJmbG93KCkgY29uc3QKLXsKLSAgICBpZiAobV9z
Y3JvbGxhYmxlQXJlYSkKLSAgICAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEtPmhhc1Njcm9s
bGFibGVIb3Jpem9udGFsT3ZlcmZsb3coKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
UmVuZGVyTGF5ZXI6Omhhc1Njcm9sbGFibGVWZXJ0aWNhbE92ZXJmbG93KCkgY29uc3QKLXsKLSAg
ICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKLSAgICAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEt
Pmhhc1Njcm9sbGFibGVWZXJ0aWNhbE92ZXJmbG93KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1pbnQgUmVuZGVyTGF5ZXI6OnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoT3ZlcmxheVNjcm9sbGJh
clNpemVSZWxldmFuY3kgcmVsZXZhbmN5KSBjb25zdAotewotICAgIGlmIChtX3Njcm9sbGFibGVB
cmVhKQotICAgICAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxiYXJX
aWR0aChyZWxldmFuY3kpOwotICAgIHJldHVybiAwOwotfQotCi1pbnQgUmVuZGVyTGF5ZXI6Omhv
cml6b250YWxTY3JvbGxiYXJIZWlnaHQoT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgcmVs
ZXZhbmN5KSBjb25zdAotewotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQotICAgICAgICByZXR1
cm4gbV9zY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodChyZWxldmFuY3kp
OwotICAgIHJldHVybiAwOwotfQotCi1ib29sIFJlbmRlckxheWVyOjpzY3JvbGwoU2Nyb2xsRGly
ZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGZsb2F0IG11
bHRpcGxpZXIpCi17Ci0gICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIHJldHVybiBt
X3Njcm9sbGFibGVBcmVhLT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGll
cik7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotLy8gRW5kIG9mIHRlbXBvcmFyeSBnbHVlIGNvZGUK
LQogdm9pZCBSZW5kZXJMYXllcjo6YWRkQ2hpbGQoUmVuZGVyTGF5ZXImIGNoaWxkLCBSZW5kZXJM
YXllciogYmVmb3JlQ2hpbGQpCiB7CiAgICAgUmVuZGVyTGF5ZXIqIHByZXZTaWJsaW5nID0gYmVm
b3JlQ2hpbGQgPyBiZWZvcmVDaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkgOiBsYXN0Q2hpbGQoKTsK
QEAgLTI0ODQsNyArMjM5Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2li
bGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkCiAgICAgfTsKIAog
ICAgIGlmIChhbGxvd3NDdXJyZW50U2Nyb2xsKCkpIHsKLSAgICAgICAgYXV0byogc2Nyb2xsYWJs
ZUxheWVyID0gZW5zdXJlTGF5ZXJTY3JvbGxhYmxlQXJlYSgpOworICAgICAgICBhdXRvKiBzY3Jv
bGxhYmxlQXJlYSA9IGVuc3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKTsKIAogICAgICAgICAvLyBE
b24ndCBzY3JvbGwgdG8gcmV2ZWFsIGFuIG92ZXJmbG93IGxheWVyIHRoYXQgaXMgcmVzdHJpY3Rl
ZCBieSB0aGUgLXdlYmtpdC1saW5lLWNsYW1wIHByb3BlcnR5LgogICAgICAgICAvLyBUaGlzIHdp
bGwgcHJldmVudCB1cyBmcm9tIHJldmVhbGluZyB0ZXh0IGhpZGRlbiBieSB0aGUgc2xpZGVyIGlu
IFNhZmFyaSBSU1MuCkBAIC0yNDk5LDEzICsyNDExLDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNj
cm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGlu
c2lkCiAgICAgICAgIGlmIChib3gtPnNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3JvbGxiYXJP
bkxlZnQoKSkgewogICAgICAgICAgICAgLy8gRm9yIGRpcmVjdGlvbjogcnRsOyB3cml0aW5nLW1v
ZGU6IGhvcml6b250YWwtdGIgYm94LCB0aGUgc2Nyb2xsIGJhciBpcyBvbiB0aGUgbGVmdCBzaWRl
LiBUaGUgdmlzaWJsZSByZWN0CiAgICAgICAgICAgICAvLyBzdGFydHMgZnJvbSB0aGUgcmlnaHQg
c2lkZSBvZiBzY3JvbGwgYmFyLiBTbyB0aGUgeCBvZiBsb2NhbEV4cG9zZVJlY3Qgc2hvdWxkIHN0
YXJ0IGZyb20gdGhlIHNhbWUgcG9zaXRpb24gdG9vLgotICAgICAgICAgICAgbG9jYWxFeHBvc2VS
ZWN0Lm1vdmVCeShMYXlvdXRQb2ludCgtc2Nyb2xsYWJsZUxheWVyLT52ZXJ0aWNhbFNjcm9sbGJh
cldpZHRoKCksIDApKTsKKyAgICAgICAgICAgIGxvY2FsRXhwb3NlUmVjdC5tb3ZlQnkoTGF5b3V0
UG9pbnQoLXNjcm9sbGFibGVBcmVhLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCksIDApKTsKICAg
ICAgICAgfQogICAgICAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzKDBfbHUsIDBfbHUsIGJveC0+
Y2xpZW50V2lkdGgoKSwgYm94LT5jbGllbnRIZWlnaHQoKSk7CiAgICAgICAgIGV4cGFuZFNjcm9s
bFJlY3RUb1Zpc2libGVUYXJnZXRSZWN0VG9JbmNsdWRlU2Nyb2xsUGFkZGluZyhib3gsIGxheWVy
Qm91bmRzLCBsb2NhbEV4cG9zZVJlY3QpOwogICAgICAgICBMYXlvdXRSZWN0IHJldmVhbFJlY3Qg
PSBnZXRSZWN0VG9FeHBvc2UobGF5ZXJCb3VuZHMsIGxvY2FsRXhwb3NlUmVjdCwgaW5zaWRlRml4
ZWQsIG9wdGlvbnMuYWxpZ25YLCBvcHRpb25zLmFsaWduWSk7CiAKLSAgICAgICAgaWYgKGF1dG8g
cmVzdWx0ID0gc2Nyb2xsYWJsZUxheWVyLT51cGRhdGVTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3Np
dGlvbkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50KGJveC0+ZWxlbWVudCgpKSwgcmV2ZWFsUmVjdCwg
bG9jYWxFeHBvc2VSZWN0KSkKKyAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gc2Nyb2xsYWJsZUFy
ZWEtPnVwZGF0ZVNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uc0ZvckVs
ZW1lbnQoYm94LT5lbGVtZW50KCkpLCByZXZlYWxSZWN0LCBsb2NhbEV4cG9zZVJlY3QpKQogICAg
ICAgICAgICAgbmV3UmVjdCA9IHJlc3VsdC52YWx1ZSgpOwogICAgIH0gZWxzZSBpZiAoIXBhcmVu
dExheWVyKSB7CiAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50ID0g
cmVuZGVyZXIoKS5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuaAppbmRleCA3NWZhYTg1YmE1OGE1OTcyZjFhNTU2NzlkYmFhZDVlYTlh
ZDUwNTViLi45MGI5ODI1ZDViZjljNjY5Njc2NzVlMjM3NDU3MDNhYTRjZTA1NzdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtMTU5LDIyICsxNTksNiBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYSogc2Nyb2xs
YWJsZUFyZWEoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJMYXllclNjcm9sbGFi
bGVBcmVhKiBlbnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCk7CiAKLSAgICAvLyBTdGFydCBvZiB0
ZW1wb3JhcnkgZ2x1ZSBjb2RlIHRvIGhlbHAgbGFuZGluZyB3ZWJraXQub3JnL2IvNjAzMDUgKHNw
bGl0IFJlbmRlckxheWVyIGludG8gUmVuZGVyTGF5ZXIvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YSkKLSAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxPZmZzZXQgc2Nyb2xsT2Zmc2V0KCkgY29uc3Q7
Ci0gICAgYm9vbCBzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCkgY29u
c3Q7Ci0gICAgUmVuZGVyTWFycXVlZSogbWFycXVlZSgpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRl
TGF5ZXJQb3NpdGlvbnNBZnRlckRvY3VtZW50U2Nyb2xsKCk7Ci0gICAgdm9pZCBzZXRQb3N0TGF5
b3V0U2Nyb2xsUG9zaXRpb24oT3B0aW9uYWw8U2Nyb2xsUG9zaXRpb24+KTsKLSAgICB2b2lkIHBh
blNjcm9sbEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYpOwotICAgIFNjcm9sbFBvc2l0aW9uIHNj
cm9sbFBvc2l0aW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBzY3JvbGxpbmdNYXlSZXZlYWxCYWNrZ3Jv
dW5kKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNTY3JvbGxhYmxlSG9yaXpvbnRhbE92ZXJmbG93KCkg
Y29uc3Q7Ci0gICAgYm9vbCBoYXNTY3JvbGxhYmxlVmVydGljYWxPdmVyZmxvdygpIGNvbnN0Owot
ICAgIGludCB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZh
bmN5ID0gSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUpIGNvbnN0OwotICAgIGludCBob3Jpem9u
dGFsU2Nyb2xsYmFySGVpZ2h0KE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdub3Jl
T3ZlcmxheVNjcm9sbGJhclNpemUpIGNvbnN0OwotICAgIGJvb2wgc2Nyb2xsKFNjcm9sbERpcmVj
dGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAxKTsKLSAgICAvLyBF
bmQgb2YgdGVtcG9yYXJ5IGdsdWUgY29kZQotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAvLyBDYWxsZWQgYmVmb3JlIHRoZSByZW5kZXJlcidzIHdpZGdldCAoaWYgYW55KSBoYXMgYmVl
biBudWxsZWQgb3V0LgogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDg5MDlhN2YwMWU5
MzA5MGQyODFjNzZhZWI2ZTk1ZWE1YWZiNzY5NzEuLmFkNGU4ZGQ5ZDcxYmFjMWE5MjE5MmRhN2Fl
NmExOWQ0MzRhNzE5ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCkBAIC00MTksMTEgKzQxOSwxMyBAQCBzdGF0aWMgVGlsZWRCYWNraW5n
OjpUaWxlQ292ZXJhZ2UgY29tcHV0ZU92ZXJmbG93VGlsZWRCYWNraW5nQ292ZXJhZ2UoY29uc3Qg
UmVuZAogICAgIFRpbGVkQmFja2luZzo6VGlsZUNvdmVyYWdlIHRpbGVDb3ZlcmFnZSA9IFRpbGVk
QmFja2luZzo6Q292ZXJhZ2VGb3JWaXNpYmxlQXJlYTsKICAgICBib29sIHVzZU1pbmltYWxUaWxl
c0R1cmluZ0xpdmVSZXNpemUgPSBmcmFtZVZpZXcuaW5MaXZlUmVzaXplKCk7CiAgICAgaWYgKCF1
c2VNaW5pbWFsVGlsZXNEdXJpbmdMaXZlUmVzaXplKSB7Ci0gICAgICAgIGlmIChsYXllci5oYXNT
Y3JvbGxhYmxlSG9yaXpvbnRhbE92ZXJmbG93KCkpCi0gICAgICAgICAgICB0aWxlQ292ZXJhZ2Ug
fD0gVGlsZWRCYWNraW5nOjpDb3ZlcmFnZUZvckhvcml6b250YWxTY3JvbGxpbmc7CisgICAgICAg
IGlmIChhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IGxheWVyLnNjcm9sbGFibGVBcmVhKCkpIHsKKyAg
ICAgICAgICAgIGlmIChzY3JvbGxhYmxlQXJlYS0+aGFzU2Nyb2xsYWJsZUhvcml6b250YWxPdmVy
ZmxvdygpKQorICAgICAgICAgICAgICAgIHRpbGVDb3ZlcmFnZSB8PSBUaWxlZEJhY2tpbmc6OkNv
dmVyYWdlRm9ySG9yaXpvbnRhbFNjcm9sbGluZzsKIAotICAgICAgICBpZiAobGF5ZXIuaGFzU2Ny
b2xsYWJsZVZlcnRpY2FsT3ZlcmZsb3coKSkKLSAgICAgICAgICAgIHRpbGVDb3ZlcmFnZSB8PSBU
aWxlZEJhY2tpbmc6OkNvdmVyYWdlRm9yVmVydGljYWxTY3JvbGxpbmc7CisgICAgICAgICAgICBp
ZiAoc2Nyb2xsYWJsZUFyZWEtPmhhc1Njcm9sbGFibGVWZXJ0aWNhbE92ZXJmbG93KCkpCisgICAg
ICAgICAgICAgICAgdGlsZUNvdmVyYWdlIHw9IFRpbGVkQmFja2luZzo6Q292ZXJhZ2VGb3JWZXJ0
aWNhbFNjcm9sbGluZzsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdGlsZUNvdmVyYWdl
OwogfQpAQCAtMTIyOSw5ICsxMjMxLDEyIEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXJCYWNraW5n
Ojpjb21wdXRlUGFyZW50R3JhcGhpY3NMYXllclJlY3QoY29uc3QgUmVuZGVyTGF5ZXIqCiAgICAg
fQogCiAgICAgaWYgKGNvbXBvc2l0ZWRBbmNlc3Rvci0+aGFzQ29tcG9zaXRlZFNjcm9sbGFibGVP
dmVyZmxvdygpKSB7CisgICAgICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gY29tcG9zaXRlZEFu
Y2VzdG9yLT5zY3JvbGxhYmxlQXJlYSgpOworICAgICAgICBBU1NFUlQoc2Nyb2xsYWJsZUFyZWEp
OworCiAgICAgICAgIExheW91dFJlY3QgYW5jZXN0b3JDb21wb3NpdGVkQm91bmRzID0gYW5jZXN0
b3JCYWNraW5nLT5jb21wb3NpdGVkQm91bmRzKCk7CiAgICAgICAgIExheW91dFJlY3Qgc2Nyb2xs
Q29udGFpbmVyQm94ID0gc2Nyb2xsQ29udGFpbmVyTGF5ZXJCb3goYW5jZXN0b3JSZW5kZXJCb3gp
OwotICAgICAgICBTY3JvbGxPZmZzZXQgc2Nyb2xsT2Zmc2V0ID0gY29tcG9zaXRlZEFuY2VzdG9y
LT5zY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgU2Nyb2xsT2Zmc2V0IHNjcm9sbE9mZnNldCA9IHNj
cm9sbGFibGVBcmVhLT5zY3JvbGxPZmZzZXQoKTsKICAgICAgICAgcGFyZW50R3JhcGhpY3NMYXll
clJlY3QgPSBMYXlvdXRSZWN0KChzY3JvbGxDb250YWluZXJCb3gubG9jYXRpb24oKSAtIHRvTGF5
b3V0U2l6ZShhbmNlc3RvckNvbXBvc2l0ZWRCb3VuZHMubG9jYXRpb24oKSkgLSB0b0xheW91dFNp
emUoc2Nyb2xsT2Zmc2V0KSksIHNjcm9sbENvbnRhaW5lckJveC5zaXplKCkpOwogICAgIH0KIApA
QCAtMTM2OCw3ICsxMzczLDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHZW9t
ZXRyeShjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRlZEFuY2VzdG9yKQogICAgICAgICBtX3Nj
cm9sbENvbnRhaW5lckxheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KHNjcm9sbENvbnRhaW5l
ckJveC5sb2NhdGlvbigpIC0gcGFyZW50TGF5ZXJCb3VuZHMubG9jYXRpb24oKSkpOwogICAgICAg
ICBtX3Njcm9sbENvbnRhaW5lckxheWVyLT5zZXRTaXplKHJvdW5kZWRJbnRTaXplKExheW91dFNp
emUoc2Nyb2xsQ29udGFpbmVyQm94LndpZHRoKCksIHNjcm9sbENvbnRhaW5lckJveC5oZWlnaHQo
KSkpKTsKIAotICAgICAgICBTY3JvbGxPZmZzZXQgc2Nyb2xsT2Zmc2V0ID0gbV9vd25pbmdMYXll
ci5zY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBtX293bmlu
Z0xheWVyLnNjcm9sbGFibGVBcmVhKCk7CisgICAgICAgIEFTU0VSVChzY3JvbGxhYmxlQXJlYSk7
CisKKyAgICAgICAgU2Nyb2xsT2Zmc2V0IHNjcm9sbE9mZnNldCA9IHNjcm9sbGFibGVBcmVhLT5z
Y3JvbGxPZmZzZXQoKTsKICAgICAgICAgdXBkYXRlU2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldCk7
CiAKICAgICAgICAgRmxvYXRTaXplIG9sZFNjcm9sbGluZ0xheWVyT2Zmc2V0ID0gbV9zY3JvbGxD
b250YWluZXJMYXllci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCk7CkBAIC0xMzgyLDcgKzEzOTAsOSBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR2VvbWV0cnkoY29uc3QgUmVuZGVyTGF5
ZXIqIGNvbXBvc2l0ZWRBbmNlc3RvcikKIAogICAgICAgICBib29sIHBhZGRpbmdCb3hPZmZzZXRD
aGFuZ2VkID0gb2xkU2Nyb2xsaW5nTGF5ZXJPZmZzZXQgIT0gbV9zY3JvbGxDb250YWluZXJMYXll
ci0+b2Zmc2V0RnJvbVJlbmRlcmVyKCk7CiAKLSAgICAgICAgSW50U2l6ZSBzY3JvbGxTaXplKG1f
b3duaW5nTGF5ZXIuc2Nyb2xsV2lkdGgoKSwgbV9vd25pbmdMYXllci5zY3JvbGxIZWlnaHQoKSk7
CisgICAgICAgIEludFNpemUgc2Nyb2xsU2l6ZTsKKyAgICAgICAgaWYgKHNjcm9sbGFibGVBcmVh
KQorICAgICAgICAgICAgc2Nyb2xsU2l6ZSA9IEludFNpemUoc2Nyb2xsYWJsZUFyZWEtPnNjcm9s
bFdpZHRoKCksIHNjcm9sbGFibGVBcmVhLT5zY3JvbGxIZWlnaHQoKSk7CiAgICAgICAgIGlmIChz
Y3JvbGxTaXplICE9IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLT5zaXplKCkgfHwgcGFkZGluZ0Jv
eE9mZnNldENoYW5nZWQpCiAgICAgICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllci0+c2V0
TmVlZHNEaXNwbGF5KCk7CiAKQEAgLTE0OTEsMTcgKzE1MDEsMTcgQEAgdm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6OnNldExvY2F0aW9uT2ZTY3JvbGxlZENvbnRlbnRzKFNjcm9sbE9mZnNldCBzY3Jv
bGxPZmZzZXQKIAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZVNjcm9sbE9mZnNldChT
Y3JvbGxPZmZzZXQgc2Nyb2xsT2Zmc2V0KQogewotICAgIGF1dG8qIHNjcm9sbGFibGVMYXllciA9
IG1fb3duaW5nTGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKTsKLSAgICBBU1NFUlQoc2Nyb2xsYWJsZUxh
eWVyKTsKKyAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IG1fb3duaW5nTGF5ZXIuc2Nyb2xsYWJs
ZUFyZWEoKTsKKyAgICBBU1NFUlQoc2Nyb2xsYWJsZUFyZWEpOwogCi0gICAgaWYgKHNjcm9sbGFi
bGVMYXllci0+Y3VycmVudFNjcm9sbFR5cGUoKSA9PSBTY3JvbGxUeXBlOjpVc2VyKSB7CisgICAg
aWYgKHNjcm9sbGFibGVBcmVhLT5jdXJyZW50U2Nyb2xsVHlwZSgpID09IFNjcm9sbFR5cGU6OlVz
ZXIpIHsKICAgICAgICAgLy8gSWYgc2Nyb2xsaW5nIGlzIGhhcHBlbmluZyBleHRlcm5hbGx5LCB3
ZSBkb24ndCB3YW50IHRvIHRvdWNoIHRoZSBsYXllciBib3VuZHMgb3JpZ2luIGhlcmUgYmVjYXVz
ZSB0aGF0IHdpbGwgY2F1c2Ugaml0dGVyLgogICAgICAgICBzZXRMb2NhdGlvbk9mU2Nyb2xsZWRD
b250ZW50cyhzY3JvbGxPZmZzZXQsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMp
OwotICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnNldFJlcXVpcmVzU2Nyb2xsUG9zaXRpb25SZWNv
bmNpbGlhdGlvbih0cnVlKTsKKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNldFJlcXVpcmVzU2Ny
b2xsUG9zaXRpb25SZWNvbmNpbGlhdGlvbih0cnVlKTsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBOb3RlIHRoYXQgd2UgaW1wbGVtZW50IHRoZSBjb250ZW50cyBvZmZzZXQgdmlhIHRoZSBib3Vu
ZHMgb3JpZ2luIG9uIHRoaXMgbGF5ZXIsIHJhdGhlciB0aGFuIGEgcG9zaXRpb24gb24gdGhlIHN1
YmxheWVyLgogICAgICAgICBzZXRMb2NhdGlvbk9mU2Nyb2xsZWRDb250ZW50cyhzY3JvbGxPZmZz
ZXQsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCk7Ci0gICAgICAgIHNjcm9sbGFi
bGVMYXllci0+c2V0UmVxdWlyZXNTY3JvbGxQb3NpdGlvblJlY29uY2lsaWF0aW9uKGZhbHNlKTsK
KyAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNldFJlcXVpcmVzU2Nyb2xsUG9zaXRpb25SZWNvbmNp
bGlhdGlvbihmYWxzZSk7CiAgICAgfQogCiAgICAgQVNTRVJUKG1fc2Nyb2xsZWRDb250ZW50c0xh
eWVyLT5wb3NpdGlvbigpLmlzWmVybygpKTsKQEAgLTE5MTMsNyArMTkyMyw5IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDbGlwcGluZ1N0YWNrTGF5ZXJHZW9tZXRyeShMYXllckFu
Y2VzdG9yQ2xpcHBpbmdTCiAgICAgICAgIGVudHJ5LmNsaXBwaW5nTGF5ZXItPnNldFNpemUoc25h
cHBlZENsaXBwaW5nTGF5ZXJSZWN0LnNpemUoKSk7CiAKICAgICAgICAgaWYgKGVudHJ5LmNsaXBE
YXRhLmlzT3ZlcmZsb3dTY3JvbGwpIHsKLSAgICAgICAgICAgIFNjcm9sbE9mZnNldCBzY3JvbGxP
ZmZzZXQgPSBlbnRyeS5jbGlwRGF0YS5jbGlwcGluZ0xheWVyID8gZW50cnkuY2xpcERhdGEuY2xp
cHBpbmdMYXllci0+c2Nyb2xsT2Zmc2V0KCkgOiBTY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgICAg
IFNjcm9sbE9mZnNldCBzY3JvbGxPZmZzZXQ7CisgICAgICAgICAgICBpZiAoYXV0byogc2Nyb2xs
YWJsZUFyZWEgPSBlbnRyeS5jbGlwRGF0YS5jbGlwcGluZ0xheWVyID8gZW50cnkuY2xpcERhdGEu
Y2xpcHBpbmdMYXllci0+c2Nyb2xsYWJsZUFyZWEoKSA6IG51bGxwdHIpCisgICAgICAgICAgICAg
ICAgc2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbE9mZnNldCgpOwogCiAgICAg
ICAgICAgICBlbnRyeS5jbGlwcGluZ0xheWVyLT5zZXRCb3VuZHNPcmlnaW4oc2Nyb2xsT2Zmc2V0
KTsKICAgICAgICAgICAgIGxhc3RDbGlwTGF5ZXJSZWN0Lm1vdmVCeSgtc2Nyb2xsT2Zmc2V0KTsK
QEAgLTIwMTUsMTYgKzIwMjcsMTUgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnJlcXVpcmVz
TGF5ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpIGNvbnN0CiAKIGJvb2wgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpyZXF1aXJlc0hvcml6b250YWxTY3JvbGxiYXJMYXllcigpIGNvbnN0
CiB7Ci0gICAgaWYgKGF1dG8qIHNjcm9sbGFibGVMYXllciA9IG1fb3duaW5nTGF5ZXIuc2Nyb2xs
YWJsZUFyZWEoKSkKLSAgICAgICAgcmV0dXJuIHJlcXVpcmVzTGF5ZXJGb3JTY3JvbGxiYXIoc2Ny
b2xsYWJsZUxheWVyLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkpOworICAgIGlmIChhdXRvKiBzY3Jv
bGxhYmxlQXJlYSA9IG1fb3duaW5nTGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0
dXJuIHJlcXVpcmVzTGF5ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxT
Y3JvbGxiYXIoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwotCiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjpyZXF1aXJlc1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoKSBjb25zdAogewotICAgIGlm
IChhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBtX293bmluZ0xheWVyLnNjcm9sbGFibGVBcmVhKCkp
Ci0gICAgICAgIHJldHVybiByZXF1aXJlc0xheWVyRm9yU2Nyb2xsYmFyKHNjcm9sbGFibGVMYXll
ci0+dmVydGljYWxTY3JvbGxiYXIoKSk7CisgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhID0g
bV9vd25pbmdMYXllci5zY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1cm4gcmVxdWlyZXNM
YXllckZvclNjcm9sbGJhcihzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxiYXIoKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yMDMzLDE2ICsyMDQ0LDE2IEBAIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjpyZXF1aXJlc1Njcm9sbENvcm5lckxheWVyKCkgY29uc3QKICAgICBpZiAo
IWlzPFJlbmRlckJveD4obV9vd25pbmdMYXllci5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYXV0byBjb3JuZXJSZWN0ID0gbV9vd25pbmdMYXllci5vdmVyZmxvd0Nv
bnRyb2xzUmVjdHMoKS5zY3JvbGxDb3JuZXJPclJlc2l6ZXJSZWN0KCk7Ci0gICAgaWYgKGNvcm5l
clJlY3QuaXNFbXB0eSgpKQorICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbV9vd25pbmdMYXll
ci5zY3JvbGxhYmxlQXJlYSgpOworICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGF1dG8qIHNjcm9sbGFibGVMYXllciA9IG1fb3duaW5nTGF5ZXIu
c2Nyb2xsYWJsZUFyZWEoKTsKLSAgICBpZiAoIXNjcm9sbGFibGVMYXllcikKKyAgICBhdXRvIGNv
cm5lclJlY3QgPSBzY3JvbGxhYmxlQXJlYS0+b3ZlcmZsb3dDb250cm9sc1JlY3RzKCkuc2Nyb2xs
Q29ybmVyT3JSZXNpemVyUmVjdCgpOworICAgIGlmIChjb3JuZXJSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB2ZXJ0aWNhbFNjcm9sbGJhciA9IHNjcm9s
bGFibGVMYXllci0+dmVydGljYWxTY3JvbGxiYXIoKTsKLSAgICBhdXRvIHNjcm9sbGJhciA9IHZl
cnRpY2FsU2Nyb2xsYmFyID8gdmVydGljYWxTY3JvbGxiYXIgOiBzY3JvbGxhYmxlTGF5ZXItPmhv
cml6b250YWxTY3JvbGxiYXIoKTsKKyAgICBhdXRvIHZlcnRpY2FsU2Nyb2xsYmFyID0gc2Nyb2xs
YWJsZUFyZWEtPnZlcnRpY2FsU2Nyb2xsYmFyKCk7CisgICAgYXV0byBzY3JvbGxiYXIgPSB2ZXJ0
aWNhbFNjcm9sbGJhciA/IHZlcnRpY2FsU2Nyb2xsYmFyIDogc2Nyb2xsYWJsZUFyZWEtPmhvcml6
b250YWxTY3JvbGxiYXIoKTsKICAgICByZXR1cm4gcmVxdWlyZXNMYXllckZvclNjcm9sbGJhcihz
Y3JvbGxiYXIpOwogfQogCkBAIC0yMDkxLDggKzIxMDIsOCBAQCBib29sIFJlbmRlckxheWVyQmFj
a2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyhib29sIG5lZWRzSG9yaXpvbnRhbFNj
cm9sbAogCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xz
TGF5ZXJzKCkKIHsKLSAgICBhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBtX293bmluZ0xheWVyLnNj
cm9sbGFibGVBcmVhKCk7Ci0gICAgaWYgKCFzY3JvbGxhYmxlTGF5ZXIgfHwgIXNjcm9sbGFibGVM
YXllci0+aGFzU2Nyb2xsYmFycygpKQorICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbV9vd25p
bmdMYXllci5zY3JvbGxhYmxlQXJlYSgpOworICAgIGlmICghc2Nyb2xsYWJsZUFyZWEgfHwgIXNj
cm9sbGFibGVBcmVhLT5oYXNTY3JvbGxiYXJzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBG
SVhNRTogU2hvdWxkIGRvIGRldmljZS1waXhlbCBzbmFwcGluZy4KICAgICBhdXRvIGJveCA9IHJl
bmRlckJveCgpOwpAQCAtMjExMywxNiArMjEyNCwxNSBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCkKICAgICB9OwogCiAgICAgLy8gVGhl
c2UgcmVjdHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBib3JkZXJCb3hSZWN0LgotICAgIGF1dG8gcmVj
dHMgPSBtX293bmluZ0xheWVyLm92ZXJmbG93Q29udHJvbHNSZWN0cygpOwotCisgICAgYXV0byBy
ZWN0cyA9IHNjcm9sbGFibGVBcmVhLT5vdmVyZmxvd0NvbnRyb2xzUmVjdHMoKTsKICAgICBpZiAo
YXV0byogbGF5ZXIgPSBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkgewogICAgICAgICBw
b3NpdGlvblNjcm9sbGJhckxheWVyKCpsYXllciwgcmVjdHMuaG9yaXpvbnRhbFNjcm9sbGJhciwg
cGFkZGluZ0JveEluc2V0KTsKLSAgICAgICAgbGF5ZXItPnNldERyYXdzQ29udGVudChzY3JvbGxh
YmxlTGF5ZXItPmhvcml6b250YWxTY3JvbGxiYXIoKSAmJiAhbGF5ZXItPnVzZXNDb250ZW50c0xh
eWVyKCkpOworICAgICAgICBsYXllci0+c2V0RHJhd3NDb250ZW50KHNjcm9sbGFibGVBcmVhLT5o
b3Jpem9udGFsU2Nyb2xsYmFyKCkgJiYgIWxheWVyLT51c2VzQ29udGVudHNMYXllcigpKTsKICAg
ICB9CiAKICAgICBpZiAoYXV0byogbGF5ZXIgPSBsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkp
IHsKICAgICAgICAgcG9zaXRpb25TY3JvbGxiYXJMYXllcigqbGF5ZXIsIHJlY3RzLnZlcnRpY2Fs
U2Nyb2xsYmFyLCBwYWRkaW5nQm94SW5zZXQpOwotICAgICAgICBsYXllci0+c2V0RHJhd3NDb250
ZW50KHNjcm9sbGFibGVMYXllci0+dmVydGljYWxTY3JvbGxiYXIoKSAmJiAhbGF5ZXItPnVzZXND
b250ZW50c0xheWVyKCkpOworICAgICAgICBsYXllci0+c2V0RHJhd3NDb250ZW50KHNjcm9sbGFi
bGVBcmVhLT52ZXJ0aWNhbFNjcm9sbGJhcigpICYmICFsYXllci0+dXNlc0NvbnRlbnRzTGF5ZXIo
KSk7CiAgICAgfQogCiAgICAgaWYgKGF1dG8qIGxheWVyID0gbGF5ZXJGb3JTY3JvbGxDb3JuZXIo
KSkgewpAQCAtMzEwMSw3ICszMTExLDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRD
b250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IExheW91dFJlY3QmIHIsIEdyYXBoCiAKICAg
ICBpZiAobV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIgJiYgbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIt
PmRyYXdzQ29udGVudCgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCBsYXllckRpcnR5UmVjdCA9IHBp
eGVsU25hcHBlZFJlY3RGb3JQYWludGluZzsKLSAgICAgICAgbGF5ZXJEaXJ0eVJlY3QubW92ZSgt
bV9zY3JvbGxlZENvbnRlbnRzTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpICsgdG9MYXlvdXRT
aXplKG1fb3duaW5nTGF5ZXIuc2Nyb2xsT2Zmc2V0KCkpIC0gbV9zdWJwaXhlbE9mZnNldEZyb21S
ZW5kZXJlcik7CisgICAgICAgIFNjcm9sbE9mZnNldCBzY3JvbGxPZmZzZXQ7CisgICAgICAgIGlm
IChhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IG1fb3duaW5nTGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKSkK
KyAgICAgICAgICAgIHNjcm9sbE9mZnNldCA9IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxPZmZzZXQo
KTsKKyAgICAgICAgbGF5ZXJEaXJ0eVJlY3QubW92ZSgtbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIt
Pm9mZnNldEZyb21SZW5kZXJlcigpICsgdG9MYXlvdXRTaXplKHNjcm9sbE9mZnNldCkgLSBtX3N1
YnBpeGVsT2Zmc2V0RnJvbVJlbmRlcmVyKTsKICAgICAgICAgbV9zY3JvbGxlZENvbnRlbnRzTGF5
ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChsYXllckRpcnR5UmVjdCwgc2hvdWxkQ2xpcCk7CiAg
ICAgfQogfQpAQCAtMzE0Nyw4ICszMTYwLDggQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBh
aW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXAKICAg
ICAgICAgaWYgKCZsYXllciA9PSAmbV9vd25pbmdMYXllcikgewogICAgICAgICAgICAgbGF5ZXIu
cGFpbnRMYXllckNvbnRlbnRzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiAK
LSAgICAgICAgICAgIGF1dG8qIHNjcm9sbGFibGVMYXllciA9IGxheWVyLnNjcm9sbGFibGVBcmVh
KCk7Ci0gICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUxheWVyICYmIHNjcm9sbGFibGVMYXllci0+
Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkgJiYgIWV2ZW50UmVnaW9uQ29udGV4dCkK
KyAgICAgICAgICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbGF5ZXIuc2Nyb2xsYWJsZUFyZWEo
KTsKKyAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlQXJlYSAmJiBzY3JvbGxhYmxlQXJlYS0+Y29u
dGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKCkgJiYgIWV2ZW50UmVnaW9uQ29udGV4dCkKICAg
ICAgICAgICAgICAgICBsYXllci5wYWludExheWVyQ29udGVudHMoY29udGV4dCwgcGFpbnRpbmdJ
bmZvLCBwYWludEZsYWdzIHwgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFnOjpQYWludGluZ092
ZXJsYXlTY3JvbGxiYXJzKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBsYXllci5wYWlu
dExheWVyV2l0aEVmZmVjdHMoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKQEAg
LTM0MzQsMjYgKzM0NDcsMjYgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVu
dHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGgKICAgICAgICAgICAg
IHBhaW50RGVidWdPdmVybGF5cyhncmFwaGljc0xheWVyLCBjb250ZXh0KTsKIAogICAgIH0gZWxz
ZSBpZiAoZ3JhcGhpY3NMYXllciA9PSBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkgewot
ICAgICAgICBhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBtX293bmluZ0xheWVyLnNjcm9sbGFibGVB
cmVhKCk7Ci0gICAgICAgIEFTU0VSVChzY3JvbGxhYmxlTGF5ZXIpOworICAgICAgICBhdXRvKiBz
Y3JvbGxhYmxlQXJlYSA9IG1fb3duaW5nTGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKTsKKyAgICAgICAg
QVNTRVJUKHNjcm9sbGFibGVBcmVhKTsKIAotICAgICAgICBwYWludFNjcm9sbGJhcihzY3JvbGxh
YmxlTGF5ZXItPmhvcml6b250YWxTY3JvbGxiYXIoKSwgY29udGV4dCwgZGlydHlSZWN0KTsKKyAg
ICAgICAgcGFpbnRTY3JvbGxiYXIoc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxTY3JvbGxiYXIo
KSwgY29udGV4dCwgZGlydHlSZWN0KTsKICAgICB9IGVsc2UgaWYgKGdyYXBoaWNzTGF5ZXIgPT0g
bGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpKSB7Ci0gICAgICAgIGF1dG8qIHNjcm9sbGFibGVM
YXllciA9IG1fb3duaW5nTGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKTsKLSAgICAgICAgQVNTRVJUKHNj
cm9sbGFibGVMYXllcik7CisgICAgICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbV9vd25pbmdM
YXllci5zY3JvbGxhYmxlQXJlYSgpOworICAgICAgICBBU1NFUlQoc2Nyb2xsYWJsZUFyZWEpOwog
Ci0gICAgICAgIHBhaW50U2Nyb2xsYmFyKHNjcm9sbGFibGVMYXllci0+dmVydGljYWxTY3JvbGxi
YXIoKSwgY29udGV4dCwgZGlydHlSZWN0KTsKKyAgICAgICAgcGFpbnRTY3JvbGxiYXIoc2Nyb2xs
YWJsZUFyZWEtPnZlcnRpY2FsU2Nyb2xsYmFyKCksIGNvbnRleHQsIGRpcnR5UmVjdCk7CiAgICAg
fSBlbHNlIGlmIChncmFwaGljc0xheWVyID09IGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkpIHsKLSAg
ICAgICAgYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbV9vd25pbmdMYXllci5zY3JvbGxhYmxlQXJl
YSgpOwotICAgICAgICBBU1NFUlQoc2Nyb2xsYWJsZUxheWVyKTsKKyAgICAgICAgYXV0byogc2Ny
b2xsYWJsZUFyZWEgPSBtX293bmluZ0xheWVyLnNjcm9sbGFibGVBcmVhKCk7CisgICAgICAgIEFT
U0VSVChzY3JvbGxhYmxlQXJlYSk7CiAKLSAgICAgICAgYXV0byBjb3JuZXJSZWN0ID0gbV9vd25p
bmdMYXllci5vdmVyZmxvd0NvbnRyb2xzUmVjdHMoKS5zY3JvbGxDb3JuZXJPclJlc2l6ZXJSZWN0
KCk7CisgICAgICAgIGF1dG8gY29ybmVyUmVjdCA9IHNjcm9sbGFibGVBcmVhLT5vdmVyZmxvd0Nv
bnRyb2xzUmVjdHMoKS5zY3JvbGxDb3JuZXJPclJlc2l6ZXJSZWN0KCk7CiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgY29udGV4
dC50cmFuc2xhdGUoLWNvcm5lclJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIExheW91dFJlY3Qg
dHJhbnNmb3JtZWRDbGlwID0gTGF5b3V0UmVjdChjbGlwKTsKICAgICAgICAgdHJhbnNmb3JtZWRD
bGlwLm1vdmVCeShjb3JuZXJSZWN0LmxvY2F0aW9uKCkpOwotICAgICAgICBzY3JvbGxhYmxlTGF5
ZXItPnBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIEludFBvaW50KCksIHNuYXBwZWRJbnRSZWN0
KHRyYW5zZm9ybWVkQ2xpcCkpOwotICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnBhaW50UmVzaXpl
cihjb250ZXh0LCBJbnRQb2ludCgpLCB0cmFuc2Zvcm1lZENsaXApOworICAgICAgICBzY3JvbGxh
YmxlQXJlYS0+cGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgSW50UG9pbnQoKSwgc25hcHBlZElu
dFJlY3QodHJhbnNmb3JtZWRDbGlwKSk7CisgICAgICAgIHNjcm9sbGFibGVBcmVhLT5wYWludFJl
c2l6ZXIoY29udGV4dCwgSW50UG9pbnQoKSwgdHJhbnNmb3JtZWRDbGlwKTsKICAgICB9CiAjaWZu
ZGVmIE5ERUJVRwogICAgIHJlbmRlcmVyKCkucGFnZSgpLnNldElzUGFpbnRpbmcoZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAppbmRleCBmYWJiMmI1MTMzZjUxYTMzN2QxYjc0ZmY3M2M0NTc2MGI3MTgyZjU3Li45YzgwOTQ3
ODg0OGNkMDk4YWM0OGFiMzA0YjI2YzYyMDZkZGFhNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtNDY2OSw4ICs0NjY5
LDggQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhcmVudFJlbGF0aXZlU2Ny
b2xsYWJsZVJlY3QoY29uc3QgUmVuZGVyTGF5ZXIKIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgUmVu
ZGVyTGF5ZXImIGxheWVyLCBTY3JvbGxpbmdDb29yZGluYXRvciYgc2Nyb2xsaW5nQ29vcmRpbmF0
b3IpCiB7Ci0gICAgYXV0byogc2Nyb2xsYWJsZUxheWVyID0gbGF5ZXIuc2Nyb2xsYWJsZUFyZWEo
KTsKLSAgICBBU1NFUlQoc2Nyb2xsYWJsZUxheWVyKTsKKyAgICBhdXRvKiBzY3JvbGxhYmxlQXJl
YSA9IGxheWVyLnNjcm9sbGFibGVBcmVhKCk7CisgICAgQVNTRVJUKHNjcm9sbGFibGVBcmVhKTsK
IAogICAgIGlmIChsYXllci5pc1JlbmRlclZpZXdMYXllcigpKSB7CiAgICAgICAgIEZyYW1lVmll
dyYgZnJhbWVWaWV3ID0gbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpOwpAQCAtNDY4Myw3ICs0Njgz
LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGVMYXll
cnMoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgUmUKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0
b3Iuc2V0Tm9kZUxheWVycyhub2RlSUQsIHsgYmFja2luZy5ncmFwaGljc0xheWVyKCksCiAgICAg
ICAgICAgICBiYWNraW5nLnNjcm9sbENvbnRhaW5lckxheWVyKCksIGJhY2tpbmcuc2Nyb2xsZWRD
b250ZW50c0xheWVyKCksCiAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAot
ICAgICAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIo
KSwgc2Nyb2xsYWJsZUxheWVyLT5sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkgfSk7CisgICAg
ICAgICAgICBzY3JvbGxhYmxlQXJlYS0+bGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCksIHNj
cm9sbGFibGVBcmVhLT5sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkgfSk7CiAgICAgfQogfQog
CkBAIC00NzIyLDggKzQ3MjIsOCBAQCBTY3JvbGxpbmdOb2RlSUQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVTY3JvbGxpbmdOb2RlRm9yU2Nyb2xsaW5nUm9sZShSZW5kZQogICAgICAgICAg
ICAgdXBkYXRlU2Nyb2xsaW5nTm9kZUxheWVycyhuZXdOb2RlSUQsIGxheWVyLCAqc2Nyb2xsaW5n
Q29vcmRpbmF0b3IpOwogCiAgICAgICAgIGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5n
ZUZsYWdzOjpMYXllckdlb21ldHJ5ICYmIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQpIHsKLSAgICAg
ICAgICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBsYXllci5zY3JvbGxhYmxlQXJlYSgp
KQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRTY3JvbGxpbmdOb2Rl
U2Nyb2xsYWJsZUFyZWFHZW9tZXRyeShuZXdOb2RlSUQsICpzY3JvbGxhYmxlTGF5ZXIpOworICAg
ICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbGF5ZXIuc2Nyb2xsYWJsZUFyZWEo
KSkKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0U2Nyb2xsaW5nTm9k
ZVNjcm9sbGFibGVBcmVhR2VvbWV0cnkobmV3Tm9kZUlELCAqc2Nyb2xsYWJsZUFyZWEpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC01MDM4LDE0ICs1MDM4LDE0IEBAIHZvaWQgTGVnYWN5V2ViS2l0
U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsaW5nTGF5ZXIoUmVuZGVyTGF5
ZXImIGxhCiAgICAgYXV0byogYmFja2luZyA9IGxheWVyLmJhY2tpbmcoKTsKICAgICBBU1NFUlQo
YmFja2luZyk7CiAKLSAgICBhdXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBsYXllci5zY3JvbGxhYmxl
QXJlYSgpOwotICAgIEFTU0VSVChzY3JvbGxhYmxlTGF5ZXIpOworICAgIGF1dG8qIHNjcm9sbGFi
bGVBcmVhID0gbGF5ZXIuc2Nyb2xsYWJsZUFyZWEoKTsKKyAgICBBU1NFUlQoc2Nyb2xsYWJsZUFy
ZWEpOwogCi0gICAgYm9vbCBhbGxvd0hvcml6b250YWxTY3JvbGxiYXIgPSAhc2Nyb2xsYWJsZUxh
eWVyLT5ob3Jpem9udGFsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgpOwotICAgIGJvb2wgYWxsb3dW
ZXJ0aWNhbFNjcm9sbGJhciA9ICFzY3JvbGxhYmxlTGF5ZXItPnZlcnRpY2FsU2Nyb2xsYmFySGlk
ZGVuQnlTdHlsZSgpOworICAgIGJvb2wgYWxsb3dIb3Jpem9udGFsU2Nyb2xsYmFyID0gIXNjcm9s
bGFibGVBcmVhLT5ob3Jpem9udGFsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZSgpOworICAgIGJvb2wg
YWxsb3dWZXJ0aWNhbFNjcm9sbGJhciA9ICFzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxi
YXJIaWRkZW5CeVN0eWxlKCk7CiAKICAgICBtX2Nocm9tZUNsaWVudC5hZGRPclVwZGF0ZVNjcm9s
bGluZ0xheWVyKGxheWVyLnJlbmRlcmVyKCkuZWxlbWVudCgpLCBiYWNraW5nLT5zY3JvbGxDb250
YWluZXJMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIGJhY2tpbmctPnNjcm9sbGVkQ29udGVudHNM
YXllcigpLT5wbGF0Zm9ybUxheWVyKCksCi0gICAgICAgIHNjcm9sbGFibGVMYXllci0+cmVhY2hh
YmxlVG90YWxDb250ZW50c1NpemUoKSwgYWxsb3dIb3Jpem9udGFsU2Nyb2xsYmFyLCBhbGxvd1Zl
cnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnJlYWNoYWJsZVRvdGFs
Q29udGVudHNTaXplKCksIGFsbG93SG9yaXpvbnRhbFNjcm9sbGJhciwgYWxsb3dWZXJ0aWNhbFNj
cm9sbGJhcik7CiB9CiAKIHZvaWQgTGVnYWN5V2ViS2l0U2Nyb2xsaW5nTGF5ZXJDb29yZGluYXRv
cjo6cmVnaXN0ZXJBbGxTY3JvbGxpbmdMYXllcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCmluZGV4IGM3ZmM2NmM3MDEzYjdl
OGRlNmFhMDZjNDMxM2JkMjlhODE4NTFhZTMuLmFkZTY1NzQ1ZmM5NzVmZGIzNTk4M2U4OWMxMDQ4
NDdlZDhlZDVlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTE3Niw5ICsxNzYsMTAgQEAgdm9pZCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3Qg
UmVuZGVyU3QKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUgPSBzdHlsZSgpOwogICAg
IGlmIChvbGRTdHlsZSAmJiBzY3JvbGxTbmFwQ29udGFpbmVyUmVxdWlyZXNVcGRhdGVGb3JTdHls
ZVVwZGF0ZSgqb2xkU3R5bGUsIG5ld1N0eWxlKSkgewogICAgICAgICBpZiAoUmVuZGVyTGF5ZXIq
IHJlbmRlckxheWVyID0gbGF5ZXIoKSkgewotICAgICAgICAgICAgYXV0byogc2Nyb2xsYWJsZUxh
eWVyID0gcmVuZGVyTGF5ZXItPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKTsKLSAgICAgICAg
ICAgIHNjcm9sbGFibGVMYXllci0+dXBkYXRlU25hcE9mZnNldHMoKTsKLSAgICAgICAgICAgIHNj
cm9sbGFibGVMYXllci0+dXBkYXRlU2Nyb2xsU25hcFN0YXRlKCk7CisgICAgICAgICAgICBpZiAo
YXV0byogc2Nyb2xsYWJsZUFyZWEgPSByZW5kZXJMYXllci0+c2Nyb2xsYWJsZUFyZWEoKSkgewor
ICAgICAgICAgICAgICAgIHNjcm9sbGFibGVBcmVhLT51cGRhdGVTbmFwT2Zmc2V0cygpOworICAg
ICAgICAgICAgICAgIHNjcm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxTbmFwU3RhdGUoKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChpc0JvZHkoKSB8fCBpc0RvY3VtZW50RWxl
bWVudFJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gdmll
dygpLmZyYW1lVmlldygpOwogICAgICAgICAgICAgZnJhbWVWaWV3LnVwZGF0ZVNuYXBPZmZzZXRz
KCk7CkBAIC0xOTYsOSArMTk3LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0CiAgICAgICAg
IGlmIChzY3JvbGxTbmFwQm94ICYmIHNjcm9sbFNuYXBCb3gtPmxheWVyKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHNjcm9sbFNuYXBCb3gtPnN0eWxlKCk7CiAg
ICAgICAgICAgICBpZiAoc3R5bGUuc2Nyb2xsU25hcFR5cGUoKS5zdHJpY3RuZXNzICE9IFNjcm9s
bFNuYXBTdHJpY3RuZXNzOjpOb25lKSB7Ci0gICAgICAgICAgICAgICAgYXV0byogc2Nyb2xsYWJs
ZUxheWVyID0gc2Nyb2xsU25hcEJveC0+bGF5ZXIoKS0+ZW5zdXJlTGF5ZXJTY3JvbGxhYmxlQXJl
YSgpOwotICAgICAgICAgICAgICAgIHNjcm9sbGFibGVMYXllci0+dXBkYXRlU25hcE9mZnNldHMo
KTsKLSAgICAgICAgICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnVwZGF0ZVNjcm9sbFNuYXBTdGF0
ZSgpOworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbFNu
YXBCb3gtPmxheWVyKCktPnNjcm9sbGFibGVBcmVhKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
c2Nyb2xsYWJsZUFyZWEtPnVwZGF0ZVNuYXBPZmZzZXRzKCk7CisgICAgICAgICAgICAgICAgICAg
IHNjcm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxTbmFwU3RhdGUoKTsKKyAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbFNuYXBCb3gtPmlzQm9keSgpIHx8IHNjcm9s
bFNuYXBCb3gtPmlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICAg
ICAgc2Nyb2xsU25hcEJveC0+dmlldygpLmZyYW1lVmlldygpLnVwZGF0ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yU2Nyb2xsU25hcFByb3BlcnRpZXMoKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApp
bmRleCAyMDhkZjFiODI4YjM3Y2NlMDEzMWQ3MWEwMmU0ZmZhOWQ0MWM1YjkwLi5iMDBmODM5ZmU0
NDQzNTg2ZTc4Y2FjMmE1ZjYyM2VlNzFhZDZkYzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0xMjQ4LDgg
KzEyNDgsOCBAQCB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnBhaW50T3ZlcmZsb3dD
b250cm9scyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgICAgIGlmICghcGFpbnRpbmdS
b290KQogICAgICAgICAgICAgcGFpbnRpbmdSb290ID0gcmVuZGVyZXIudmlldygpLmxheWVyKCk7
CiAKLSAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVMYXllciA9IHBhaW50aW5nUm9vdC0+c2Ny
b2xsYWJsZUFyZWEoKSkKLSAgICAgICAgICAgIHNjcm9sbGFibGVMYXllci0+c2V0Q29udGFpbnNE
aXJ0eU92ZXJsYXlTY3JvbGxiYXJzKHRydWUpOworICAgICAgICBpZiAoYXV0byogc2Nyb2xsYWJs
ZUFyZWEgPSBwYWludGluZ1Jvb3QtPnNjcm9sbGFibGVBcmVhKCkpCisgICAgICAgICAgICBzY3Jv
bGxhYmxlQXJlYS0+c2V0Q29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKHRydWUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNzQ4LDggKzE3NDgsOCBAQCB2b2lkIFJlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbEJ5UmVjdXJzaXZlbHkoY29uc3QgSW50U2l6ZSYgZGVs
dGEsIFNjcm9sbAogICAgICAgICBpZiAoIXJlbWFpbmluZ1Njcm9sbE9mZnNldC5pc1plcm8oKSAm
JiByZW5kZXJlci5wYXJlbnQoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2tpcHMg
c2Nyb2xsYWJsZSBmcmFtZXMuCiAgICAgICAgICAgICBpZiAoYXV0byogZW5jbG9zaW5nU2Nyb2xs
YWJsZUxheWVyID0gbV9sYXllci5lbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoSW5jbHVkZVNlbGZP
ck5vdDo6RXhjbHVkZVNlbGYsIENyb3NzRnJhbWVCb3VuZGFyaWVzOjpZZXMpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVMYXllciA9IGVuY2xvc2luZ1Njcm9sbGFibGVM
YXllci0+c2Nyb2xsYWJsZUFyZWEoKSkKLSAgICAgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUxh
eWVyLT5zY3JvbGxCeVJlY3Vyc2l2ZWx5KHJlbWFpbmluZ1Njcm9sbE9mZnNldCwgc2Nyb2xsZWRB
cmVhKTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBlbmNsb3Np
bmdTY3JvbGxhYmxlTGF5ZXItPnNjcm9sbGFibGVBcmVhKCkpCisgICAgICAgICAgICAgICAgICAg
IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxCeVJlY3Vyc2l2ZWx5KHJlbWFpbmluZ1Njcm9sbE9mZnNl
dCwgc2Nyb2xsZWRBcmVhKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcmVuZGVyZXIu
ZnJhbWUoKS5ldmVudEhhbmRsZXIoKS51cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCBkMmIwNjI3YzRkZjli
ZGM4OGRmZjc1MDk5MzEyODNlMjMwYzg3ZjBhLi40Y2M0MmNkZTRjZjgzZGViZTM3ODhiZTYwYmRm
OWY5MjE0OTRkMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwCkBAIC04OTcsOCArODk3LDggQEAgYm9vbCBSZW5kZXJMaXN0Qm94Ojppc1Njcm9sbGFibGVP
clJ1YmJlcmJhbmRhYmxlKCkKIAogYm9vbCBSZW5kZXJMaXN0Qm94OjpoYXNTY3JvbGxhYmxlT3JS
dWJiZXJiYW5kYWJsZUFuY2VzdG9yKCkKIHsKLSAgICBpZiAoYXV0byogc2Nyb2xsYWJsZUxheWVy
ID0gZW5jbG9zaW5nTGF5ZXIoKSA/IGVuY2xvc2luZ0xheWVyKCktPnNjcm9sbGFibGVBcmVhKCkg
OiBudWxscHRyKQotICAgICAgICByZXR1cm4gc2Nyb2xsYWJsZUxheWVyLT5oYXNTY3JvbGxhYmxl
T3JSdWJiZXJiYW5kYWJsZUFuY2VzdG9yKCk7CisgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVh
ID0gZW5jbG9zaW5nTGF5ZXIoKSA/IGVuY2xvc2luZ0xheWVyKCktPnNjcm9sbGFibGVBcmVhKCkg
OiBudWxscHRyKQorICAgICAgICByZXR1cm4gc2Nyb2xsYWJsZUFyZWEtPmhhc1Njcm9sbGFibGVP
clJ1YmJlcmJhbmRhYmxlQW5jZXN0b3IoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAppbmRleCA2OTE2NmIyZGFlOWUx
YzAyM2VjMjE5MjllZDBkYjJhNTJjMTBmMDdkLi5kNDBhNDdjZjZjYjM4NjY2YzllZjViMTQzZmVh
ZGU4NzAxMjhjZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWFycXVlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUu
Y3BwCkBAIC0xNzQsMTUgKzE3NCwxNSBAQCB2b2lkIFJlbmRlck1hcnF1ZWU6OnN0YXJ0KCkKICAg
ICBpZiAobV90aW1lci5pc0FjdGl2ZSgpIHx8IG1fbGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS5t
YXJxdWVlSW5jcmVtZW50KCkuaXNaZXJvKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8q
IHNjcm9sbGFibGVMYXllciA9IG1fbGF5ZXItPnNjcm9sbGFibGVBcmVhKCk7Ci0gICAgQVNTRVJU
KHNjcm9sbGFibGVMYXllcik7CisgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBtX2xheWVyLT5z
Y3JvbGxhYmxlQXJlYSgpOworICAgIEFTU0VSVChzY3JvbGxhYmxlQXJlYSk7CiAKICAgICBhdXRv
IGRldGFpbHMgPSBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnM6OmNyZWF0ZVByb2dyYW1tYXRp
Y1VuY2xhbXBlZCgpOwogICAgIGlmICghbV9zdXNwZW5kZWQgJiYgIW1fc3RvcHBlZCkgewogICAg
ICAgICBpZiAoaXNIb3Jpem9udGFsKCkpCi0gICAgICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnNj
cm9sbFRvT2Zmc2V0KFNjcm9sbE9mZnNldChtX3N0YXJ0LCAwKSwgZGV0YWlscyk7CisgICAgICAg
ICAgICBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsVG9PZmZzZXQoU2Nyb2xsT2Zmc2V0KG1fc3RhcnQs
IDApLCBkZXRhaWxzKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2Nyb2xsYWJsZUxheWVy
LT5zY3JvbGxUb09mZnNldChTY3JvbGxPZmZzZXQoMCwgbV9zdGFydCksIGRldGFpbHMpOworICAg
ICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFRvT2Zmc2V0KFNjcm9sbE9mZnNldCgwLCBt
X3N0YXJ0KSwgZGV0YWlscyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9zdXNwZW5kZWQgPSBm
YWxzZTsKICAgICAgICAgbV9zdG9wcGVkID0gZmFsc2U7CkBAIC0yNTEsMTUgKzI1MSwxNSBAQCB2
b2lkIFJlbmRlck1hcnF1ZWU6OnRpbWVyRmlyZWQoKQogICAgIGlmIChtX2xheWVyLT5yZW5kZXJl
cigpLnZpZXcoKS5uZWVkc0xheW91dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBz
Y3JvbGxhYmxlTGF5ZXIgPSBtX2xheWVyLT5zY3JvbGxhYmxlQXJlYSgpOwotICAgIEFTU0VSVChz
Y3JvbGxhYmxlTGF5ZXIpOworICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbV9sYXllci0+c2Ny
b2xsYWJsZUFyZWEoKTsKKyAgICBBU1NFUlQoc2Nyb2xsYWJsZUFyZWEpOwogCiAgICAgaWYgKG1f
cmVzZXQpIHsKICAgICAgICAgbV9yZXNldCA9IGZhbHNlOwogICAgICAgICBpZiAoaXNIb3Jpem9u
dGFsKCkpCi0gICAgICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnNjcm9sbFRvWE9mZnNldChtX3N0
YXJ0KTsKKyAgICAgICAgICAgIHNjcm9sbGFibGVBcmVhLT5zY3JvbGxUb1hPZmZzZXQobV9zdGFy
dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNjcm9sbGFibGVMYXllci0+c2Nyb2xsVG9Z
T2Zmc2V0KG1fc3RhcnQpOworICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFRvWU9m
ZnNldChtX3N0YXJ0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTI4Miw3ICsy
ODIsNyBAQCB2b2lkIFJlbmRlck1hcnF1ZWU6OnRpbWVyRmlyZWQoKQogICAgICAgICBib29sIHBv
c2l0aXZlID0gcmFuZ2UgPiAwOwogICAgICAgICBpbnQgY2xpZW50U2l6ZSA9IChpc0hvcml6b250
YWwoKSA/IHJvdW5kVG9JbnQobV9sYXllci0+cmVuZGVyQm94KCktPmNsaWVudFdpZHRoKCkpIDog
cm91bmRUb0ludChtX2xheWVyLT5yZW5kZXJCb3goKS0+Y2xpZW50SGVpZ2h0KCkpKTsKICAgICAg
ICAgaW50IGluY3JlbWVudCA9IGFicyhpbnRWYWx1ZUZvckxlbmd0aChtX2xheWVyLT5yZW5kZXJl
cigpLnN0eWxlKCkubWFycXVlZUluY3JlbWVudCgpLCBjbGllbnRTaXplKSk7Ci0gICAgICAgIGlu
dCBjdXJyZW50UG9zID0gKGlzSG9yaXpvbnRhbCgpID8gbV9sYXllci0+c2Nyb2xsT2Zmc2V0KCku
eCgpIDogbV9sYXllci0+c2Nyb2xsT2Zmc2V0KCkueSgpKTsKKyAgICAgICAgaW50IGN1cnJlbnRQ
b3MgPSAoaXNIb3Jpem9udGFsKCkgPyBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsT2Zmc2V0KCkueCgp
IDogc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbE9mZnNldCgpLnkoKSk7CiAgICAgICAgIG5ld1BvcyA9
ICBjdXJyZW50UG9zICsgKGFkZEluY3JlbWVudCA/IGluY3JlbWVudCA6IC1pbmNyZW1lbnQpOwog
ICAgICAgICBpZiAocG9zaXRpdmUpCiAgICAgICAgICAgICBuZXdQb3MgPSBzdGQ6Om1pbihuZXdQ
b3MsIGVuZFBvaW50KTsKQEAgLTI5OSw5ICsyOTksOSBAQCB2b2lkIFJlbmRlck1hcnF1ZWU6OnRp
bWVyRmlyZWQoKQogICAgIH0KICAgICAKICAgICBpZiAoaXNIb3Jpem9udGFsKCkpCi0gICAgICAg
IHNjcm9sbGFibGVMYXllci0+c2Nyb2xsVG9YT2Zmc2V0KG5ld1Bvcyk7CisgICAgICAgIHNjcm9s
bGFibGVBcmVhLT5zY3JvbGxUb1hPZmZzZXQobmV3UG9zKTsKICAgICBlbHNlCi0gICAgICAgIHNj
cm9sbGFibGVMYXllci0+c2Nyb2xsVG9ZT2Zmc2V0KG5ld1Bvcyk7CisgICAgICAgIHNjcm9sbGFi
bGVBcmVhLT5zY3JvbGxUb1lPZmZzZXQobmV3UG9zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCBjOTkyMmNiM2FlMDNjZTBmNTYwNDIwYTE4ZjA4Y2E2
NzIxNzliNWZiLi4xNDI1ZTM2MGY2ZTAwYzk0YzY1OWI5MmJkMWZkYjIyOTlmMDBmZGU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIu
aCIKKyNpbmNsdWRlICJSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCkBAIC0zOTcsMTkgKzM5OCwyMCBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6c2V0U2Nyb2xsVG9wKGludCBuZXdUb3AsIGNvbnN0IFNjcm9sbFBvc2l0aW9uQwog
CiBib29sIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2Nyb2xsKFNjcm9sbERpcmVjdGlv
biBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBs
aWVyLCBFbGVtZW50Kiogc3RvcEVsZW1lbnQsIFJlbmRlckJveCogc3RhcnRCb3gsIGNvbnN0IElu
dFBvaW50JiB3aGVlbEV2ZW50QWJzb2x1dGVQb2ludCkKIHsKLSAgICBSZW5kZXJUZXh0Q29udHJv
bElubmVyQmxvY2sqIHJlbmRlcmVyID0gaW5uZXJUZXh0RWxlbWVudCgpLT5yZW5kZXJlcigpOwor
ICAgIGF1dG8qIHJlbmRlcmVyID0gaW5uZXJUZXh0RWxlbWVudCgpLT5yZW5kZXJlcigpOwogICAg
IGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBSZW5kZXJMYXllciog
bGF5ZXIgPSByZW5kZXJlci0+bGF5ZXIoKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPnNjcm9s
bChkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVyKSkKKyAgICBhdXRvKiBzY3JvbGxh
YmxlQXJlYSA9IHJlbmRlcmVyLT5sYXllcigpID8gcmVuZGVyZXItPmxheWVyKCktPnNjcm9sbGFi
bGVBcmVhKCkgOiBudWxscHRyOworICAgIGlmIChzY3JvbGxhYmxlQXJlYSAmJiBzY3JvbGxhYmxl
QXJlYS0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIG11bHRpcGxpZXIpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gUmVuZGVyQmxvY2tGbG93OjpzY3JvbGwoZGlyZWN0
aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGllciwgc3RvcEVsZW1lbnQsIHN0YXJ0Qm94LCB3aGVl
bEV2ZW50QWJzb2x1dGVQb2ludCk7CiB9CiAKIGJvb2wgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjpsb2dpY2FsU2Nyb2xsKFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3Jv
bGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciwgRWxlbWVudCoqIHN0
b3BFbGVtZW50KQogewotICAgIFJlbmRlckxheWVyKiBsYXllciA9IGlubmVyVGV4dEVsZW1lbnQo
KS0+cmVuZGVyZXIoKS0+bGF5ZXIoKTsKLSAgICBpZiAobGF5ZXIgJiYgbGF5ZXItPnNjcm9sbChs
b2dpY2FsVG9QaHlzaWNhbChkaXJlY3Rpb24sIHN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSwgZ3JhbnVsYXJpdHks
IG11bHRpcGxpZXIpKQorICAgIGF1dG8qIGxheWVyID0gaW5uZXJUZXh0RWxlbWVudCgpLT5yZW5k
ZXJlcigpLT5sYXllcigpOworICAgIGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbGF5ZXIgPyBsYXll
ci0+c2Nyb2xsYWJsZUFyZWEoKSA6IG51bGxwdHI7CisgICAgaWYgKHNjcm9sbGFibGVBcmVhICYm
IHNjcm9sbGFibGVBcmVhLT5zY3JvbGwobG9naWNhbFRvUGh5c2ljYWwoZGlyZWN0aW9uLCBzdHls
ZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCksIHN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3Jp
dGluZ01vZGUoKSksIGdyYW51bGFyaXR5LCBtdWx0aXBsaWVyKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgcmV0dXJuIFJlbmRlckJsb2NrRmxvdzo6bG9naWNhbFNjcm9sbChkaXJlY3Rpb24s
IGdyYW51bGFyaXR5LCBtdWx0aXBsaWVyLCBzdG9wRWxlbWVudCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYzFlOGZkOTMxMzVmNjNi
NDVjMWQ5YmU1Y2NmZmRjYWM1NjUwMjhkZC4uYzQ5MzZhMjZjZjRiMjgwYzQ3Y2UwZDg4YzIzMjBm
MmZkZTk2MzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcApAQCAtNjMwLDE0ICs2MzAsMTYgQEAgc3RhdGljIHZvaWQgd3JpdGVMYXllcihUZXh0
U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBjb25zdCBMYXlvdXRSZWMKICAg
ICB9CiAKICAgICBpZiAobGF5ZXIucmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSkgewotICAg
ICAgICBpZiAobGF5ZXIuc2Nyb2xsT2Zmc2V0KCkueCgpKQotICAgICAgICAgICAgdHMgPDwgIiBz
Y3JvbGxYICIgPDwgbGF5ZXIuc2Nyb2xsT2Zmc2V0KCkueCgpOwotICAgICAgICBpZiAobGF5ZXIu
c2Nyb2xsT2Zmc2V0KCkueSgpKQotICAgICAgICAgICAgdHMgPDwgIiBzY3JvbGxZICIgPDwgbGF5
ZXIuc2Nyb2xsT2Zmc2V0KCkueSgpOwotICAgICAgICBpZiAobGF5ZXIucmVuZGVyQm94KCkgJiYg
cm91bmRUb0ludChsYXllci5yZW5kZXJCb3goKS0+Y2xpZW50V2lkdGgoKSkgIT0gbGF5ZXIuc2Ny
b2xsV2lkdGgoKSkKLSAgICAgICAgICAgIHRzIDw8ICIgc2Nyb2xsV2lkdGggIiA8PCBsYXllci5z
Y3JvbGxXaWR0aCgpOwotICAgICAgICBpZiAobGF5ZXIucmVuZGVyQm94KCkgJiYgcm91bmRUb0lu
dChsYXllci5yZW5kZXJCb3goKS0+Y2xpZW50SGVpZ2h0KCkpICE9IGxheWVyLnNjcm9sbEhlaWdo
dCgpKQotICAgICAgICAgICAgdHMgPDwgIiBzY3JvbGxIZWlnaHQgIiA8PCBsYXllci5zY3JvbGxI
ZWlnaHQoKTsKKyAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGFibGVBcmVhID0gbGF5ZXIuc2Nyb2xs
YWJsZUFyZWEoKSkgeworICAgICAgICAgICAgaWYgKHNjcm9sbGFibGVBcmVhLT5zY3JvbGxPZmZz
ZXQoKS54KCkpCisgICAgICAgICAgICAgICAgdHMgPDwgIiBzY3JvbGxYICIgPDwgc2Nyb2xsYWJs
ZUFyZWEtPnNjcm9sbE9mZnNldCgpLngoKTsKKyAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlQXJl
YS0+c2Nyb2xsT2Zmc2V0KCkueSgpKQorICAgICAgICAgICAgICAgIHRzIDw8ICIgc2Nyb2xsWSAi
IDw8IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxPZmZzZXQoKS55KCk7CisgICAgICAgICAgICBpZiAo
bGF5ZXIucmVuZGVyQm94KCkgJiYgcm91bmRUb0ludChsYXllci5yZW5kZXJCb3goKS0+Y2xpZW50
V2lkdGgoKSkgIT0gc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFdpZHRoKCkpCisgICAgICAgICAgICAg
ICAgdHMgPDwgIiBzY3JvbGxXaWR0aCAiIDw8IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxXaWR0aCgp
OworICAgICAgICAgICAgaWYgKGxheWVyLnJlbmRlckJveCgpICYmIHJvdW5kVG9JbnQobGF5ZXIu
cmVuZGVyQm94KCktPmNsaWVudEhlaWdodCgpKSAhPSBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsSGVp
Z2h0KCkpCisgICAgICAgICAgICAgICAgdHMgPDwgIiBzY3JvbGxIZWlnaHQgIiA8PCBzY3JvbGxh
YmxlQXJlYS0+c2Nyb2xsSGVpZ2h0KCk7CisgICAgICAgIH0KICNpZiBQTEFURk9STShNQUMpCiAg
ICAgICAgIFNjcm9sbGJhclRoZW1lJiBzY3JvbGxiYXJUaGVtZSA9IFNjcm9sbGJhclRoZW1lOjp0
aGVtZSgpOwogICAgICAgICBpZiAoIXNjcm9sbGJhclRoZW1lLmlzTW9ja1RoZW1lKCkgJiYgbGF5
ZXIuc2Nyb2xsYWJsZUFyZWEoKSAmJiBsYXllci5zY3JvbGxhYmxlQXJlYSgpLT5oYXNWZXJ0aWNh
bFNjcm9sbGJhcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MLm1tCmluZGV4
IGJkMzk5YTZjMjBmZTJkYWU0ZjMyYTcyMTQ3ZDA2MjUwZmMyNDNiMzguLjhkNmQ3YThmM2FjZjdm
NzdiM2VlYjJiMGFlNmY5MmVmNjk0NDcyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MLm1tCkBAIC03OCw3ICs3OCwxNCBAQCAtIChpbnQpc2Nyb2xsWE9mZnNldAogICAgIGlm
ICghaXM8V2ViQ29yZTo6UmVuZGVyQm94PigqcmVuZGVyZXIpIHx8ICFyZW5kZXJlci0+aGFzT3Zl
cmZsb3dDbGlwKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRvd25jYXN0PFdl
YkNvcmU6OlJlbmRlckJveD4oKnJlbmRlcmVyKS5sYXllcigpLT5zY3JvbGxPZmZzZXQoKS54KCk7
CisgICAgYXV0byogbGF5ZXIgPSBkb3duY2FzdDxXZWJDb3JlOjpSZW5kZXJCb3g+KCpyZW5kZXJl
cikubGF5ZXIoKTsKKyAgICBpZiAoIWxheWVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICBhdXRv
KiBzY3JvbGxhYmxlQXJlYSA9IGxheWVyLT5zY3JvbGxhYmxlQXJlYSgpOworICAgIGlmICghc2Ny
b2xsYWJsZUFyZWEpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHNjcm9sbGFibGVB
cmVhLT5zY3JvbGxPZmZzZXQoKS54KCk7CiB9CiAKIC0gKGludClzY3JvbGxZT2Zmc2V0CkBAIC05
Miw3ICs5OSwxNCBAQCAtIChpbnQpc2Nyb2xsWU9mZnNldAogICAgIGlmICghaXM8V2ViQ29yZTo6
UmVuZGVyQm94PigqcmVuZGVyZXIpIHx8ICFyZW5kZXJlci0+aGFzT3ZlcmZsb3dDbGlwKCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRvd25jYXN0PFdlYkNvcmU6OlJlbmRlckJv
eD4oKnJlbmRlcmVyKS5sYXllcigpLT5zY3JvbGxPZmZzZXQoKS55KCk7CisgICAgYXV0byogbGF5
ZXIgPSBkb3duY2FzdDxXZWJDb3JlOjpSZW5kZXJCb3g+KCpyZW5kZXJlcikubGF5ZXIoKTsKKyAg
ICBpZiAoIWxheWVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICBhdXRvKiBzY3JvbGxhYmxlQXJl
YSA9IGxheWVyLT5zY3JvbGxhYmxlQXJlYSgpOworICAgIGlmICghc2Nyb2xsYWJsZUFyZWEpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHNjcm9sbGFibGVBcmVhLT5zY3JvbGxPZmZz
ZXQoKS55KCk7CiB9CiAKIC0gKHZvaWQpc2V0U2Nyb2xsWE9mZnNldDooaW50KXggc2Nyb2xsWU9m
ZnNldDooaW50KXkKQEAgLTExMiwxOCArMTI2LDE4IEBAIC0gKHZvaWQpc2V0U2Nyb2xsWE9mZnNl
dDooaW50KXggc2Nyb2xsWU9mZnNldDooaW50KXkgYWRqdXN0Rm9ySU9TQ2FyZXQ6KEJPT0wpYWRq
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8qIGxheWVyID0gZG93bmNhc3Q8V2ViQ29yZTo6
UmVuZGVyQm94PigqcmVuZGVyZXIpLmxheWVyKCk7Ci0gICAgQVNTRVJUKGxheWVyKTsKLQotICAg
IGF1dG8qIHNjcm9sbGFibGVMYXllciA9IGxheWVyLT5lbnN1cmVMYXllclNjcm9sbGFibGVBcmVh
KCk7CisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIHNjcm9sbGFi
bGVBcmVhID0gbGF5ZXItPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKTsKIAogICAgIGlmIChh
ZGp1c3RGb3JJT1NDYXJldCkKLSAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRBZGp1c3RGb3JJ
T1NDYXJldFdoZW5TY3JvbGxpbmcodHJ1ZSk7CisgICAgICAgIHNjcm9sbGFibGVBcmVhLT5zZXRB
ZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcodHJ1ZSk7CiAKICAgICBhdXRvIHNjcm9sbFBv
c2l0aW9uQ2hhbmdlT3B0aW9ucyA9IFdlYkNvcmU6OlNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9u
czo6Y3JlYXRlUHJvZ3JhbW1hdGljKCk7CiAgICAgc2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25z
LmNsYW1waW5nID0gV2ViQ29yZTo6U2Nyb2xsQ2xhbXBpbmc6OlVuY2xhbXBlZDsKLSAgICBzY3Jv
bGxhYmxlTGF5ZXItPnNjcm9sbFRvT2Zmc2V0KFdlYkNvcmU6OlNjcm9sbE9mZnNldCh4LCB5KSwg
c2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zKTsKKyAgICBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xs
VG9PZmZzZXQoV2ViQ29yZTo6U2Nyb2xsT2Zmc2V0KHgsIHkpLCBzY3JvbGxQb3NpdGlvbkNoYW5n
ZU9wdGlvbnMpOwogICAgIGlmIChhZGp1c3RGb3JJT1NDYXJldCkKLSAgICAgICAgc2Nyb2xsYWJs
ZUxheWVyLT5zZXRBZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcoZmFsc2UpOworICAgICAg
ICBzY3JvbGxhYmxlQXJlYS0+c2V0QWRqdXN0Rm9ySU9TQ2FyZXRXaGVuU2Nyb2xsaW5nKGZhbHNl
KTsKIH0KIAogLSAodm9pZClhYnNvbHV0ZVBvc2l0aW9uOihpbnQgKil4IDooaW50ICopeSA6KGlu
dCAqKXcgOihpbnQgKiloCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQppbmRleCA0YWQ5YmFjZGY3NzdjOTlkOTI0Nzk4OTk2ZjRjYTU1ZmVmZDA0ZmJiLi5kZTI0
OTY4OGFiNjhmNzk4OTAyMDg0NzhmNmFjNDM0ZmVjYTA5ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTc0MiwxMCArNzQyLDEwIEBAIC0gKHZv
aWQpX3Njcm9sbERPTVJhbmdlVG9WaXNpYmxlOihET01SYW5nZSAqKXJhbmdlCiAjZWxzZQogICAg
ICAgICBhdXRvKiBsYXllciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIo
KTsKICAgICAgICAgaWYgKGxheWVyKSB7Ci0gICAgICAgICAgICBhdXRvKiBzY3JvbGxhYmxlTGF5
ZXIgPSBsYXllci0+ZW5zdXJlTGF5ZXJTY3JvbGxhYmxlQXJlYSgpOwotICAgICAgICAgICAgc2Ny
b2xsYWJsZUxheWVyLT5zZXRBZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcodHJ1ZSk7Cisg
ICAgICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IGxheWVyLT5lbnN1cmVMYXllclNjcm9s
bGFibGVBcmVhKCk7CisgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c2V0QWRqdXN0Rm9ySU9T
Q2FyZXRXaGVuU2Nyb2xsaW5nKHRydWUpOwogICAgICAgICAgICAgc3RhcnROb2RlLT5yZW5kZXJl
cigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmFuZ2VS
ZWN0KSwgaW5zaWRlRml4ZWQsIHsgV2ViQ29yZTo6U2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFs
LCBXZWJDb3JlOjpTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFdlYkNvcmU6
OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2hvdWxkQWxs
b3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzIH0pOwotICAgICAgICAgICAgc2Nyb2xsYWJsZUxh
eWVyLT5zZXRBZGp1c3RGb3JJT1NDYXJldFdoZW5TY3JvbGxpbmcoZmFsc2UpOworICAgICAgICAg
ICAgc2Nyb2xsYWJsZUFyZWEtPnNldEFkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZyhmYWxz
ZSk7CiAgICAgICAgICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5zZXRDYXJl
dFJlY3ROZWVkc1VwZGF0ZSgpOwogICAgICAgICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2Vs
ZWN0aW9uKCkudXBkYXRlQXBwZWFyYW5jZSgpOwogICAgICAgICB9CkBAIC03NjMsMTAgKzc2Mywx
MCBAQCAtICh2b2lkKV9zY3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9NUmFuZ2UgKilyYW5nZSB3
aXRoSW5zZXQ6KENHRmxvYXQpaW5zZXQKICAgICBpZiAoc3RhcnROb2RlICYmIHN0YXJ0Tm9kZS0+
cmVuZGVyZXIoKSkgewogICAgICAgICBhdXRvKiBsYXllciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIo
KS0+ZW5jbG9zaW5nTGF5ZXIoKTsKICAgICAgICAgaWYgKGxheWVyKSB7Ci0gICAgICAgICAgICBh
dXRvKiBzY3JvbGxhYmxlTGF5ZXIgPSBsYXllci0+ZW5zdXJlTGF5ZXJTY3JvbGxhYmxlQXJlYSgp
OwotICAgICAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRBZGp1c3RGb3JJT1NDYXJldFdoZW5T
Y3JvbGxpbmcodHJ1ZSk7CisgICAgICAgICAgICBhdXRvKiBzY3JvbGxhYmxlQXJlYSA9IGxheWVy
LT5lbnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCk7CisgICAgICAgICAgICBzY3JvbGxhYmxlQXJl
YS0+c2V0QWRqdXN0Rm9ySU9TQ2FyZXRXaGVuU2Nyb2xsaW5nKHRydWUpOwogICAgICAgICAgICAg
c3RhcnROb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKFdlYkNvcmU6OmVuY2xv
c2luZ0ludFJlY3QocmFuZ2VSZWN0KSwgaW5zaWRlRml4ZWQsIHsgV2ViQ29yZTo6U2VsZWN0aW9u
UmV2ZWFsTW9kZTo6UmV2ZWFsLCBXZWJDb3JlOjpTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdl
SWZOZWVkZWQsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwg
V2ViQ29yZTo6U2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzfSk7Ci0gICAgICAg
ICAgICBzY3JvbGxhYmxlTGF5ZXItPnNldEFkanVzdEZvcklPU0NhcmV0V2hlblNjcm9sbGluZyhm
YWxzZSk7CisgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYS0+c2V0QWRqdXN0Rm9ySU9TQ2FyZXRX
aGVuU2Nyb2xsaW5nKGZhbHNlKTsKIAogICAgICAgICAgICAgYXV0byBjb3JlRnJhbWUgPSBjb3Jl
KHNlbGYpOwogICAgICAgICAgICAgaWYgKGNvcmVGcmFtZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAppbmRleCA3YzBiYjQ5MWIzNTE1ZWYzNzA2NTVhYjIyZTFiMDMxMWVjZjc2YWQ1
Li41MWM4Y2YxZjI2NTcwZDAyMjJjOTY0YzJlMWZhM2UxM2NmMzIwNWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMjAzOSwxOCArMjAzOSwxOCBAQCBib29sIFdlYlZpZXc6
Omdlc3R1cmUoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICAgICAgZmxvYXQgc2Nh
bGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvcigpOwogICAgICAgICBJbnRTaXplIGxvZ2ljYWxT
Y3JvbGxEZWx0YSgtZGVsdGFYICogc2NhbGVGYWN0b3IsIC1kZWx0YVkgKiBzY2FsZUZhY3Rvcik7
CiAKLSAgICAgICAgUmVuZGVyTGF5ZXIqIHNjcm9sbGFibGVMYXllciA9IG51bGxwdHI7CisgICAg
ICAgIFJlbmRlckxheWVyKiBzY3JvbGxhYmxlQXJlYSA9IG51bGxwdHI7CiAgICAgICAgIGlmICht
X2dlc3R1cmVUYXJnZXROb2RlICYmIG1fZ2VzdHVyZVRhcmdldE5vZGUtPnJlbmRlcmVyKCkpIHsK
ICAgICAgICAgICAgIGlmIChhdXRvKiBsYXllciA9IG1fZ2VzdHVyZVRhcmdldE5vZGUtPnJlbmRl
cmVyKCktPmVuY2xvc2luZ0xheWVyKCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUxheWVy
ID0gbGF5ZXItPmVuY2xvc2luZ1Njcm9sbGFibGVMYXllcihJbmNsdWRlU2VsZk9yTm90OjpFeGNs
dWRlU2VsZiwgQ3Jvc3NGcmFtZUJvdW5kYXJpZXM6Olllcyk7CisgICAgICAgICAgICAgICAgc2Ny
b2xsYWJsZUFyZWEgPSBsYXllci0+ZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKEluY2x1ZGVTZWxm
T3JOb3Q6OkV4Y2x1ZGVTZWxmLCBDcm9zc0ZyYW1lQm91bmRhcmllczo6WWVzKTsKICAgICAgICAg
fQogCi0gICAgICAgIGlmICghc2Nyb2xsYWJsZUxheWVyKSB7CisgICAgICAgIGlmICghc2Nyb2xs
YWJsZUFyZWEpIHsKICAgICAgICAgICAgIC8vIFdlIG1pZ2h0IGRpcmVjdGx5IGhpdCB0aGUgZG9j
dW1lbnQgd2l0aG91dCBoaXR0aW5nIGFueSBub2RlcwogICAgICAgICAgICAgY29yZUZyYW1lLT52
aWV3KCktPnNjcm9sbEJ5KGxvZ2ljYWxTY3JvbGxEZWx0YSk7CiAgICAgICAgICAgICBzY3JvbGxl
ZEFyZWEgPSBjb3JlRnJhbWUtPnZpZXcoKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBz
Y3JvbGxhYmxlTGF5ZXItPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsQnlSZWN1
cnNpdmVseShsb2dpY2FsU2Nyb2xsRGVsdGEsICZzY3JvbGxlZEFyZWEpOworICAgICAgICAgICAg
c2Nyb2xsYWJsZUFyZWEtPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsQnlSZWN1
cnNpdmVseShsb2dpY2FsU2Nyb2xsRGVsdGEsICZzY3JvbGxlZEFyZWEpOwogCiAgICAgICAgIGlm
ICghKFVwZGF0ZVBhbm5pbmdGZWVkYmFja1B0cigpICYmIEJlZ2luUGFubmluZ0ZlZWRiYWNrUHRy
KCkgJiYgRW5kUGFubmluZ0ZlZWRiYWNrUHRyKCkpKSB7CiAgICAgICAgICAgICBDbG9zZUdlc3R1
cmVJbmZvSGFuZGxlUHRyKCkoZ2VzdHVyZUhhbmRsZSk7Cg==
</data>
<flag name="review"
          id="436096"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>