<?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>217523</bug_id>
          
          <creation_ts>2020-10-09 11:14:58 -0700</creation_ts>
          <short_desc>Refactor wheel event coalescing into its own class</short_desc>
          <delta_ts>2020-10-09 14:01:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1696276</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-09 11:14:58 -0700</bug_when>
    <thetext>Refactor wheel event coalescing into its own class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696280</commentid>
    <comment_count>1</comment_count>
      <attachid>410955</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-09 11:21:31 -0700</bug_when>
    <thetext>Created attachment 410955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696281</commentid>
    <comment_count>2</comment_count>
      <attachid>410955</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-09 11:24:51 -0700</bug_when>
    <thetext>Comment on attachment 410955
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/WebWheelEventCoalescer.cpp:37
&gt; +static const unsigned wheelEventQueueSizeThreshold = 10;

constexpr please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696286</commentid>
    <comment_count>3</comment_count>
      <attachid>410956</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-09 11:39:01 -0700</bug_when>
    <thetext>Created attachment 410956
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696297</commentid>
    <comment_count>4</comment_count>
      <attachid>410960</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-09 12:09:10 -0700</bug_when>
    <thetext>Created attachment 410960
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696350</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-09 13:55:42 -0700</bug_when>
    <thetext>I will move WebWheelEventCoalescer.cpp to WebKit/Shared</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696352</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-09 14:00:47 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/268287/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696353</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-09 14:01:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/70152324&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410955</attachid>
            <date>2020-10-09 11:21:31 -0700</date>
            <delta_ts>2020-10-09 11:42:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217523-20201009112131.patch</filename>
            <type>text/plain</type>
            <size>28274</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBiMmFhZWUzZjRlOTk4
ZTZkNzY3ODliM2Y4NmQ4ZjAyY2M2ZGQwNi4uYmU3MTUxZGMxODA3YjczYTZlNTllZDAwMGQzMmJm
OGUyOTUxNTljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTEwLTA5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHdo
ZWVsIGV2ZW50IGNvYWxlc2NpbmcgaW50byBpdHMgb3duIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvcnQgdGhlIFRleHRTdHJlYW0gb3V0
cHV0dGVyLgorCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50Lmg6CisKIDIw
MjAtMTAtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
aW1wbGVtZW50YXRpb24gZm9yIEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlJ3MgY3VycmVudEZyYW1l
IC8gY3VycmVudFRpbWUgLyBzYW1wbGVSYXRlIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWQyYTNi
OTViMWFlZTQ5NmU1ZTQwYjRkMjc1N2EzNGRhZDA3ZmU5OS4uNmJkYTBjOTYxZTkxOWNjMGViMTRh
M2JiMjA3NGIxMjMyMmY2YjYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAyMC0xMC0w
OSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZh
Y3RvciB3aGVlbCBldmVudCBjb2FsZXNjaW5nIGludG8gaXRzIG93biBjbGFzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBXZWJQYWdlUHJv
eHkgaGFkIHNvbWUgY29uZnVzaW5nIGNvZGUgZm9yIGNvYWxlc2Npbmcgd2hlZWwgZXZlbnRzLCBm
aXJzdCBhZGRlZCBpbiByMTE2NDY2LgorICAgICAgICBUbyBwcmVwYXJlIHRoaXMgY29kZSBmb3Ig
cGFydGlhbCByZS11c2UgaW4gYW5vdGhlciBwbGFjZSwgZmFjdG9yIGl0IGludG8gaXRzIG93biBj
bGFzcywgV2ViV2hlZWxFdmVudENvYWxlc2Nlci4KKworICAgICAgICBXZWJXaGVlbEV2ZW50Q29h
bGVzY2VyIGhvbGRzIGEgcXVldWUgb2YgcGVuZGluZyBOYXRpdmVXZWJXaGVlbEV2ZW50cywgYW5k
IGEgcXVldWUgb2Ygc2VxdWVuY2VzIG9mCisgICAgICAgIE5hdGl2ZVdlYldoZWVsRXZlbnRzLCB3
aGVyZSBlYWNoIHNlcXVlbmNlIGhhcyBiZWVuIGNvYWxlc2NlZCBpbnRvIGEgc2luZ2xlIFdlYldl
ZWxFdmVudCB3aGljaCB3YXMKKyAgICAgICAgc2VudCB0byB0aGUgV2ViIFByb2Nlc3MuCisKKyAg
ICAgICAgV2hlbiB0aGUgVUkgcHJvY2VzcyByZWNlaXZlcyBhIG1lc3NhZ2UgYmFjayBmcm9tIHRo
ZSBXZWIgUHJvY2VzcywgaXQgY2FsbHMgdGFrZU9sZGVzdEV2ZW50QmVpbmdQcm9jZXNzZWQoKQor
ICAgICAgICB3aGljaCByZW1vdmVzIHRoZSBmaXJzdCBzZXF1ZW5jZSBmcm9tIG1fZXZlbnRzQmVp
bmdQcm9jZXNzZWQuIFRoaXMgY29kZSBoYXMgdG8gdHJhY2sgTmF0aXZlV2ViV2hlZWxFdmVudHMs
IGJlY2F1c2UKKyAgICAgICAgd2UgbmVlZCB0byBkaWcgdGhlIE5TRXZlbnQgb3V0IG9mIHRoZSBO
YXRpdmVXZWJXaGVlbEV2ZW50IGF0IHRoaXMgc3RhZ2UuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9M
b2dnaW5nLmg6IEFkZCBhIFdoZWVsRXZlbnRzIGxvZyBjaGFubmVsLgorICAgICAgICAqIFNoYXJl
ZC9OYXRpdmVXZWJXaGVlbEV2ZW50Lmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
d2hlZWxFdmVudENvYWxlc2Nlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
UmVjZWl2ZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRl
QWZ0ZXJQcm9jZXNzRXhpdGVkKToKKyAgICAgICAgKFdlYktpdDo6Y2FuQ29hbGVzY2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0Ojpjb2FsZXNjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OmNvYWxlc2NlZFdoZWVsRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvdWxkUHJvY2Vzc1doZWVsRXZlbnROb3cgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudENvYWxlc2Nl
cjo6Y2FuQ29hbGVzY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2ZW50Q29hbGVzY2Vy
Ojpjb2FsZXNjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnRDb2FsZXNjZXI6OnNo
b3VsZERpc3BhdGNoRXZlbnROb3cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2
ZW50Q29hbGVzY2VyOjpuZXh0RXZlbnRUb0Rpc3BhdGNoKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
V2hlZWxFdmVudENvYWxlc2Nlcjo6c2hvdWxkRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYldoZWVsRXZlbnRDb2FsZXNjZXI6OnRha2VPbGRlc3RFdmVudEJlaW5nUHJvY2Vzc2Vk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6Y2xlYXIpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOjpoYXNFdmVudHNCZWlu
Z1Byb2Nlc3NlZCBjb25zdCk6CisKIDIwMjAtMTAtMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdW5kYW50IHJlbmRlcmluZyB1cGRhdGVzIGNh
biBiZSBzY2hlZHVsZWQgZnJvbSBpbnNpZGUgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKaW5kZXggZTA5YTZhNmI5
MjNmYTAxMDIxMTg0ZTUyNzUzNDY1ZjRmMjIzY2Y2Yy4uYzQ4ZWRiNDU2NjczNzVjODM3OWFiMGU1
MmU1MjQwMWRjY2VkNGQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1X
aGVlbEV2ZW50LmgKQEAgLTI3MCw3ICsyNzAsNyBAQCBpbmxpbmUgRmxvYXRQb2ludCBQbGF0Zm9y
bVdoZWVsRXZlbnQ6OnN3aXBlVmVsb2NpdHkoKSBjb25zdAogCiAjZW5kaWYgLy8gRU5BQkxFKEtJ
TkVUSUNfU0NST0xMSU5HKQogCi1XVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci1XVEY6OlRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcyk7CitX
RUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CitXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgV2hlZWxFdmVudFByb2Nlc3NpbmdT
dGVwcyk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgK
aW5kZXggNzI5MzEzMjM5ZDVkNWExYjlhZjA4YWQ3ZjQ1NGQ2ZmI5NGVhYWQ2MC4uMzI1YTQ2ZmZj
NTk5NDE5NDExMjQ5Njg2ZGY3YWM1MmViYTliYTExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5n
LmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKFZpc2libGVSZWN0cykg
XAogICAgIE0oV2ViR0wpIFwKICAgICBNKFdlYlJUQykgXAorICAgIE0oV2hlZWxFdmVudHMpIFwK
IAogV0VCS0lUMl9MT0dfQ0hBTk5FTFMoREVDTEFSRV9MT0dfQ0hBTk5FTCkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oCmluZGV4IGRmNDI0MmIwNzM5YzgzOGI2
NGM3YzcxZjI0ZTFmZTA2OWI0ZjQwMDUuLmFhOWNiMGU0NDhjNjg0NjI5Y2M1NzNhYWZkMjcwYjll
NTM2MmQ1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYldoZWVs
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpZiBVU0UoQVBQS0lUKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIE9CSkNfQ0xBU1MgTlNWaWV3OworT0JKQ19DTEFTUyBOU0V2ZW50OwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBiYzJjNDk0M2FlYmU1Y2NhZjhiOTQ3
ZWQ3MWFlMDMwZjRmMzJkOTgzLi43MWI0NTI0MzNkYzIxZDMzZDU4ZWY3MjExMjk1OGEzNmJiZjU3
OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKQEAgLTY2Nyw2ICs2NjcsNyBAQCBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZU92ZXJsYXkuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxl
clByb3h5LmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAK
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVbmRvU3RlcC5jcHAKK1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcAogCiBXZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmNwcAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDhkZmFiOWVjMjgz
ODg0ZTFlYTRlMDgwYjIwNWUzZTkzYTZiZDQ0Zi4uMzY5M2E5ODIyYTcxNWQyNDM4NjdjNTZlMjcz
MWM5ZThkNTk1MjMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0xMzcsNiArMTM3LDcgQEAKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCiAj
aW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJW
aWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJXaGVlbEV2ZW50Q29h
bGVzY2VyLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQWRDbGlja0F0dHJpYnV0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5o
PgpAQCAtMjYxMyw3MCArMjYxNCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmbHVzaFBlbmRpbmdN
b3VzZUV2ZW50Q2FsbGJhY2tzKCkKICAgICBtX2NhbGxiYWNrSGFuZGxlcnNBZnRlclByb2Nlc3Np
bmdQZW5kaW5nTW91c2VFdmVudHMuY2xlYXIoKTsKIH0KIAotI2lmIE1FUkdFX1dIRUVMX0VWRU5U
Uwotc3RhdGljIGJvb2wgY2FuQ29hbGVzY2UoY29uc3QgV2ViV2hlZWxFdmVudCYgYSwgY29uc3Qg
V2ViV2hlZWxFdmVudCYgYikKLXsKLSAgICBpZiAoYS5wb3NpdGlvbigpICE9IGIucG9zaXRpb24o
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLmdsb2JhbFBvc2l0aW9uKCkgIT0g
Yi5nbG9iYWxQb3NpdGlvbigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEubW9k
aWZpZXJzKCkgIT0gYi5tb2RpZmllcnMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
IChhLmdyYW51bGFyaXR5KCkgIT0gYi5ncmFudWxhcml0eSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKGEucGhhc2UoKSAhPSBiLnBoYXNlKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5tb21lbnR1bVBoYXNlKCkgIT0gYi5t
b21lbnR1bVBoYXNlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5oYXNQcmVj
aXNlU2Nyb2xsaW5nRGVsdGFzKCkgIT0gYi5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0
YXRpYyBXZWJXaGVlbEV2ZW50IGNvYWxlc2NlKGNvbnN0IFdlYldoZWVsRXZlbnQmIGEsIGNvbnN0
IFdlYldoZWVsRXZlbnQmIGIpCi17Ci0gICAgQVNTRVJUKGNhbkNvYWxlc2NlKGEsIGIpKTsKLQot
ICAgIEZsb2F0U2l6ZSBtZXJnZWREZWx0YSA9IGEuZGVsdGEoKSArIGIuZGVsdGEoKTsKLSAgICBG
bG9hdFNpemUgbWVyZ2VkV2hlZWxUaWNrcyA9IGEud2hlZWxUaWNrcygpICsgYi53aGVlbFRpY2tz
KCk7Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBGbG9hdFNpemUgbWVyZ2VkVW5hY2NlbGVy
YXRlZFNjcm9sbGluZ0RlbHRhID0gYS51bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEoKSArIGIu
dW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhKCk7Ci0KLSAgICByZXR1cm4gV2ViV2hlZWxFdmVu
dChXZWJFdmVudDo6V2hlZWwsIGIucG9zaXRpb24oKSwgYi5nbG9iYWxQb3NpdGlvbigpLCBtZXJn
ZWREZWx0YSwgbWVyZ2VkV2hlZWxUaWNrcywgYi5ncmFudWxhcml0eSgpLCBiLmRpcmVjdGlvbklu
dmVydGVkRnJvbURldmljZSgpLCBiLnBoYXNlKCksIGIubW9tZW50dW1QaGFzZSgpLCBiLmhhc1By
ZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSwgYi5zY3JvbGxDb3VudCgpLCBtZXJnZWRVbmFjY2VsZXJh
dGVkU2Nyb2xsaW5nRGVsdGEsIGIubW9kaWZpZXJzKCksIGIudGltZXN0YW1wKCkpOwotI2Vsc2UK
LSAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIGIucG9zaXRpb24oKSwg
Yi5nbG9iYWxQb3NpdGlvbigpLCBtZXJnZWREZWx0YSwgbWVyZ2VkV2hlZWxUaWNrcywgYi5ncmFu
dWxhcml0eSgpLCBiLm1vZGlmaWVycygpLCBiLnRpbWVzdGFtcCgpKTsKLSNlbmRpZgotfQotI2Vu
ZGlmIC8vIE1FUkdFX1dIRUVMX0VWRU5UUwotCi1zdGF0aWMgV2ViV2hlZWxFdmVudCBjb2FsZXNj
ZWRXaGVlbEV2ZW50KERlcXVlPE5hdGl2ZVdlYldoZWVsRXZlbnQ+JiBxdWV1ZSwgVmVjdG9yPE5h
dGl2ZVdlYldoZWVsRXZlbnQ+JiBjb2FsZXNjZWRFdmVudHMpCi17Ci0gICAgQVNTRVJUKCFxdWV1
ZS5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChjb2FsZXNjZWRFdmVudHMuaXNFbXB0eSgpKTsKLQot
I2lmIE1FUkdFX1dIRUVMX0VWRU5UUwotICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQgZmlyc3RFdmVu
dCA9IHF1ZXVlLnRha2VGaXJzdCgpOwotICAgIGNvYWxlc2NlZEV2ZW50cy5hcHBlbmQoZmlyc3RF
dmVudCk7Ci0KLSAgICBXZWJXaGVlbEV2ZW50IGV2ZW50ID0gZmlyc3RFdmVudDsKLSAgICB3aGls
ZSAoIXF1ZXVlLmlzRW1wdHkoKSAmJiBjYW5Db2FsZXNjZShldmVudCwgcXVldWUuZmlyc3QoKSkp
IHsKLSAgICAgICAgTmF0aXZlV2ViV2hlZWxFdmVudCBmaXJzdEV2ZW50ID0gcXVldWUudGFrZUZp
cnN0KCk7Ci0gICAgICAgIGNvYWxlc2NlZEV2ZW50cy5hcHBlbmQoZmlyc3RFdmVudCk7Ci0gICAg
ICAgIGV2ZW50ID0gY29hbGVzY2UoZXZlbnQsIGZpcnN0RXZlbnQpOwotICAgIH0KLQotICAgIHJl
dHVybiBldmVudDsKLSNlbHNlCi0gICAgd2hpbGUgKCFxdWV1ZS5pc0VtcHR5KCkpCi0gICAgICAg
IGNvYWxlc2NlZEV2ZW50cy5hcHBlbmQocXVldWUudGFrZUZpcnN0KCkpOwotICAgIHJldHVybiBj
b2FsZXNjZWRFdmVudHMubGFzdCgpOwotI2VuZGlmCi19Ci0KIHZvaWQgV2ViUGFnZVByb3h5Ojpo
YW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmIGV2ZW50KQogewogI2lm
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKENPQ09BKQpAQCAtMjY4OSwzMCAr
MjYyNiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBOYXRp
dmVXZWJXaGVlbEV2ZW50JiBldmVudCkKIAogICAgIGNsb3NlT3ZlcmxheWVkVmlld3MoKTsKIAot
ICAgIGlmICghbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgbV93aGVlbEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKLSAgICAgICAgaWYgKCFzaG91
bGRQcm9jZXNzV2hlZWxFdmVudE5vdyhldmVudCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIC8vIFRoZSBxdWV1ZSBoYXMgdG9vIG1hbnkgd2hlZWwgZXZlbnRzLCBzbyBwdXNoIGEgbmV3
IGV2ZW50LgorICAgIGlmICh3aGVlbEV2ZW50Q29hbGVzY2VyKCkuc2hvdWxkRGlzcGF0Y2hFdmVu
dChldmVudCkpIHsKKyAgICAgICAgYXV0byBldmVudCA9IHdoZWVsRXZlbnRDb2FsZXNjZXIoKS5u
ZXh0RXZlbnRUb0Rpc3BhdGNoKCk7CisgICAgICAgIHNlbmRXaGVlbEV2ZW50KCpldmVudCk7CiAg
ICAgfQotCi0gICAgaWYgKCFtX3doZWVsRXZlbnRRdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
cHJvY2Vzc05leHRRdWV1ZWRXaGVlbEV2ZW50KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBhdXRvIGNvYWxlc2NlZFdoZWVsRXZlbnQgPSBtYWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVX
ZWJXaGVlbEV2ZW50Pj4oKTsKLSAgICBjb2FsZXNjZWRXaGVlbEV2ZW50LT5hcHBlbmQoZXZlbnQp
OwotICAgIG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuYXBwZW5kKFdURk1vdmUoY29h
bGVzY2VkV2hlZWxFdmVudCkpOwotICAgIHNlbmRXaGVlbEV2ZW50KGV2ZW50KTsKLX0KLQotdm9p
ZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCgpCi17Ci0gICAgYXV0
byBuZXh0Q29hbGVzY2VkRXZlbnQgPSBtYWtlVW5pcXVlPFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2
ZW50Pj4oKTsKLSAgICBXZWJXaGVlbEV2ZW50IG5leHRXaGVlbEV2ZW50ID0gY29hbGVzY2VkV2hl
ZWxFdmVudChtX3doZWVsRXZlbnRRdWV1ZSwgKm5leHRDb2FsZXNjZWRFdmVudC5nZXQoKSk7Ci0g
ICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQoV1RGTW92ZShuZXh0Q29h
bGVzY2VkRXZlbnQpKTsKLSAgICBzZW5kV2hlZWxFdmVudChuZXh0V2hlZWxFdmVudCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JiBl
dmVudCkKQEAgLTI3MzYsMjUgKzI2NTMsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbmRXaGVl
bEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZW50KQogICAgIG1fcHJvY2Vzcy0+aXNSZXNw
b25zaXZlV2l0aExhenlTdG9wKCk7CiB9CiAKLWJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGRQcm9j
ZXNzV2hlZWxFdmVudE5vdyhjb25zdCBXZWJXaGVlbEV2ZW50JiBldmVudCkgY29uc3QKK1dlYldo
ZWVsRXZlbnRDb2FsZXNjZXImIFdlYlBhZ2VQcm94eTo6d2hlZWxFdmVudENvYWxlc2NlcigpCiB7
Ci0jaWYgUExBVEZPUk0oR1RLKQotICAgIC8vIERvbid0IHF1ZXVlIGV2ZW50cyByZXByZXNlbnRp
bmcgYSBub24tdHJpdmlhbCBzY3JvbGxpbmcgcGhhc2UgdG8KLSAgICAvLyBhdm9pZCBoYXZpbmcg
dGhlbSB0cmFwcGVkIGluIHRoZSBxdWV1ZSwgcG90ZW50aWFsbHkgcHJldmVudGluZyBhCi0gICAg
Ly8gc2Nyb2xsaW5nIHNlc3Npb24gdG8gYmVnaW5uaW5nIG9yIGVuZCBjb3JyZWN0bHkuCi0gICAg
Ly8gVGhpcyBpcyBvbmx5IG5lZWRlZCBieSBwbGF0Zm9ybXMgd2hvc2UgV2ViV2hlZWxFdmVudCBo
YXMgdGhpcyBwaGFzZQotICAgIC8vIGluZm9ybWF0aW9uIChDb2NvYSBhbmQgR1RLKykgYnV0IENv
Y29hIHdhcyBmaW5lIHdpdGhvdXQgaXQuCi0gICAgaWYgKGV2ZW50LnBoYXNlKCkgPT0gV2ViV2hl
ZWxFdmVudDo6UGhhc2U6OlBoYXNlTm9uZQotICAgICAgICB8fCBldmVudC5waGFzZSgpID09IFdl
YldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZUNoYW5nZWQKLSAgICAgICAgfHwgZXZlbnQubW9tZW50
dW1QaGFzZSgpID09IFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZU5vbmUKLSAgICAgICAgfHwg
ZXZlbnQubW9tZW50dW1QaGFzZSgpID09IFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZUNoYW5n
ZWQpCi0gICAgICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXZlbnQp
OwotI2VuZGlmCi0gICAgaWYgKG1fd2hlZWxFdmVudFF1ZXVlLnNpemUoKSA+PSB3aGVlbEV2ZW50
UXVldWVTaXplVGhyZXNob2xkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFtX3doZWVsRXZlbnRDb2FsZXNjZXIpCisgICAgICAgIG1fd2hlZWxFdmVu
dENvYWxlc2NlciA9IG1ha2VVbmlxdWU8V2ViV2hlZWxFdmVudENvYWxlc2Nlcj4oKTsKKworICAg
IHJldHVybiAqbV93aGVlbEV2ZW50Q29hbGVzY2VyOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6
aGFzUXVldWVkS2V5RXZlbnQoKSBjb25zdApAQCAtNjk4NCw3ICs2ODg4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRs
ZWQpCiAKICAgICAgICAgLy8gUmV0aXJlIHRoZSBsYXN0IHNlbnQgZXZlbnQgbm93IHRoYXQgV2Vi
UHJvY2VzcyBpcyBkb25lIGhhbmRsaW5nIGl0LgogICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJv
Y2VzcywgIW1fbW91c2VFdmVudFF1ZXVlLmlzRW1wdHkoKSk7Ci0gICAgICAgIE5hdGl2ZVdlYk1v
dXNlRXZlbnQgZXZlbnQgPSBtX21vdXNlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKKyAgICAgICAg
YXV0byBldmVudCA9IG1fbW91c2VFdmVudFF1ZXVlLnRha2VGaXJzdCgpOwogICAgICAgICBNRVNT
QUdFX0NIRUNLKG1fcHJvY2VzcywgdHlwZSA9PSBldmVudC50eXBlKCkpOwogCiAgICAgICAgIGlm
ICghbV9tb3VzZUV2ZW50UXVldWUuaXNFbXB0eSgpKSB7CkBAIC03MDAwLDE4ICs2OTA0LDE3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwg
Ym9vbCBoYW5kbGVkKQogICAgIH0KIAogICAgIGNhc2UgV2ViRXZlbnQ6OldoZWVsOiB7Ci0gICAg
ICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCAhbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2
ZW50cy5pc0VtcHR5KCkpOwotCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8TmF0aXZl
V2ViV2hlZWxFdmVudD4+IG9sZGVzdENvYWxlc2NlZEV2ZW50ID0gbV9jdXJyZW50bHlQcm9jZXNz
ZWRXaGVlbEV2ZW50cy50YWtlRmlyc3QoKTsKKyAgICAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nl
c3MsIHdoZWVsRXZlbnRDb2FsZXNjZXIoKS5oYXNFdmVudHNCZWluZ1Byb2Nlc3NlZCgpKTsKKyAg
ICAgICAgYXV0byBvbGRlc3RQcm9jZXNzZWRFdmVudCA9IHdoZWVsRXZlbnRDb2FsZXNjZXIoKS50
YWtlT2xkZXN0RXZlbnRCZWluZ1Byb2Nlc3NlZCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBEaXNw
YXRjaCBhZGRpdGlvbmFsIGV2ZW50cyB0byB0aGUgZGlkTm90SGFuZGxlV2hlZWxFdmVudCBjbGll
bnQgZnVuY3Rpb24uCiAgICAgICAgIGlmICghaGFuZGxlZCkgewotICAgICAgICAgICAgbV91aUNs
aWVudC0+ZGlkTm90SGFuZGxlV2hlZWxFdmVudCh0aGlzLCBvbGRlc3RDb2FsZXNjZWRFdmVudC0+
bGFzdCgpKTsKLSAgICAgICAgICAgIHBhZ2VDbGllbnQoKS53aGVlbEV2ZW50V2FzTm90SGFuZGxl
ZEJ5V2ViQ29yZShvbGRlc3RDb2FsZXNjZWRFdmVudC0+bGFzdCgpKTsKKyAgICAgICAgICAgIG1f
dWlDbGllbnQtPmRpZE5vdEhhbmRsZVdoZWVsRXZlbnQodGhpcywgb2xkZXN0UHJvY2Vzc2VkRXZl
bnQpOworICAgICAgICAgICAgcGFnZUNsaWVudCgpLndoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlX
ZWJDb3JlKG9sZGVzdFByb2Nlc3NlZEV2ZW50KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgh
bV93aGVlbEV2ZW50UXVldWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcHJvY2Vzc05leHRRdWV1
ZWRXaGVlbEV2ZW50KCk7CisgICAgICAgIGlmIChhdXRvIGV2ZW50VG9TZW5kID0gd2hlZWxFdmVu
dENvYWxlc2NlcigpLm5leHRFdmVudFRvRGlzcGF0Y2goKSkKKyAgICAgICAgICAgIHNlbmRXaGVl
bEV2ZW50KCpldmVudFRvU2VuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNzAyMiw4
ICs2OTI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBv
cGFxdWVUeXBlLCBib29sIGhhbmRsZWQpCiAgICAgICAgIExPRyhLZXlIYW5kbGluZywgIldlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50OiAlcyAocXVldWUgZW1wdHkgJWQpIiwgd2ViS2V5Ym9h
cmRFdmVudFR5cGVTdHJpbmcodHlwZSksIG1fa2V5RXZlbnRRdWV1ZS5pc0VtcHR5KCkpOwogCiAg
ICAgICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCAhbV9rZXlFdmVudFF1ZXVlLmlzRW1wdHko
KSk7Ci0gICAgICAgIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQgZXZlbnQgPSBtX2tleUV2ZW50UXVl
dWUudGFrZUZpcnN0KCk7Ci0KKyAgICAgICAgYXV0byBldmVudCA9IG1fa2V5RXZlbnRRdWV1ZS50
YWtlRmlyc3QoKTsKICAgICAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIHR5cGUgPT0gZXZl
bnQudHlwZSgpKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTcwNTcsOCArNjk1OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9v
bCBoYW5kbGVkKQogICAgIGNhc2UgV2ViRXZlbnQ6Okdlc3R1cmVDaGFuZ2U6CiAgICAgY2FzZSBX
ZWJFdmVudDo6R2VzdHVyZUVuZDogewogICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcywg
IW1fZ2VzdHVyZUV2ZW50UXVldWUuaXNFbXB0eSgpKTsKLSAgICAgICAgTmF0aXZlV2ViR2VzdHVy
ZUV2ZW50IGV2ZW50ID0gbV9nZXN0dXJlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKLQorICAgICAg
ICBhdXRvIGV2ZW50ID0gbV9nZXN0dXJlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKICAgICAgICAg
TUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIHR5cGUgPT0gZXZlbnQudHlwZSgpKTsKIAogICAgICAg
ICBpZiAoIWhhbmRsZWQpCkBAIC03MDc5LDggKzY5ODAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCkKICAgICBj
YXNlIFdlYkV2ZW50OjpUb3VjaEVuZDoKICAgICBjYXNlIFdlYkV2ZW50OjpUb3VjaENhbmNlbDog
ewogICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgIW1fdG91Y2hFdmVudFF1ZXVlLmlz
RW1wdHkoKSk7Ci0gICAgICAgIFF1ZXVlZFRvdWNoRXZlbnRzIHF1ZXVlZEV2ZW50cyA9IG1fdG91
Y2hFdmVudFF1ZXVlLnRha2VGaXJzdCgpOwotCisgICAgICAgIGF1dG8gcXVldWVkRXZlbnRzID0g
bV90b3VjaEV2ZW50UXVldWUudGFrZUZpcnN0KCk7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0sobV9w
cm9jZXNzLCB0eXBlID09IHF1ZXVlZEV2ZW50cy5mb3J3YXJkZWRFdmVudC50eXBlKCkpOwogCiAg
ICAgICAgIHBhZ2VDbGllbnQoKS5kb25lV2l0aFRvdWNoRXZlbnQocXVldWVkRXZlbnRzLmZvcndh
cmRlZEV2ZW50LCBoYW5kbGVkKTsKQEAgLTc3MDQsOCArNzYwNCw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
biB0ZXJtaW5hCiAgICAgLy8gQ2FuJ3QgZXhwZWN0IERpZFJlY2VpdmVFdmVudCBub3RpZmljYXRp
b25zIGZyb20gYSBjcmFzaGVkIHdlYiBwcm9jZXNzLgogICAgIG1fbW91c2VFdmVudFF1ZXVlLmNs
ZWFyKCk7CiAgICAgbV9rZXlFdmVudFF1ZXVlLmNsZWFyKCk7Ci0gICAgbV93aGVlbEV2ZW50UXVl
dWUuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzLmNsZWFyKCk7
CisgICAgaWYgKG1fd2hlZWxFdmVudENvYWxlc2NlcikKKyAgICAgICAgbV93aGVlbEV2ZW50Q29h
bGVzY2VyLT5jbGVhcigpOworCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIUVOQUJMRShJ
T1NfVE9VQ0hfRVZFTlRTKQogICAgIG1fdG91Y2hFdmVudFF1ZXVlLmNsZWFyKCk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZTQ3Y2I1ZTQxZjM5ZGRi
NzlmZDUxZDc1MWY5M2FlZjNkY2JjMjU1YS4uYjU5NGVkODZkZGI2YTU1ODQ3NTg3ZTkyYzUwMDYx
ZmY0Nzk1NzQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMy
Niw2ICszMjYsNyBAQCBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyOwogY2xhc3MgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk7CiBjbGFzcyBXZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2
ZXI7CiBjbGFzcyBXZWJXaGVlbEV2ZW50OworY2xhc3MgV2ViV2hlZWxFdmVudENvYWxlc2NlcjsK
IGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIHN0cnVjdCBXZWJCYWNrRm9yd2FyZExpc3RDb3Vu
dHM7CkBAIC0yMjI4LDkgKzIyMjksOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRSZW5kZXJU
cmVlU2l6ZSh1aW50NjRfdCB0cmVlU2l6ZSkgeyBtX3JlbmRlclRyZWVTaXplID0gdHJlZVNpemU7
IH0KIAotICAgIHZvaWQgcHJvY2Vzc05leHRRdWV1ZWRXaGVlbEV2ZW50KCk7CiAgICAgdm9pZCBz
ZW5kV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50Jik7Ci0gICAgYm9vbCBzaG91bGRQcm9j
ZXNzV2hlZWxFdmVudE5vdyhjb25zdCBXZWJXaGVlbEV2ZW50JikgY29uc3Q7CisKKyAgICBXZWJX
aGVlbEV2ZW50Q29hbGVzY2VyJiB3aGVlbEV2ZW50Q29hbGVzY2VyKCk7CiAKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogICAgIHZvaWQgdXBkYXRlVG91Y2hFdmVudFRyYWNraW5nKGNvbnN0IFdl
YlRvdWNoRXZlbnQmKTsKQEAgLTI1NzQsMTAgKzI1NzUsMTAgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fc2hvdWxkU3VwcHJlc3NTT0F1dGhvcml6YXRpb25JbkFsbE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbiB7IGZhbHNlIH07CiAjZW5kaWYKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJXaGVlbEV2
ZW50Q29hbGVzY2VyPiBtX3doZWVsRXZlbnRDb2FsZXNjZXI7CisKICAgICBEZXF1ZTxOYXRpdmVX
ZWJNb3VzZUV2ZW50PiBtX21vdXNlRXZlbnRRdWV1ZTsKICAgICBEZXF1ZTxOYXRpdmVXZWJLZXli
b2FyZEV2ZW50PiBtX2tleUV2ZW50UXVldWU7Ci0gICAgRGVxdWU8TmF0aXZlV2ViV2hlZWxFdmVu
dD4gbV93aGVlbEV2ZW50UXVldWU7Ci0gICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxO
YXRpdmVXZWJXaGVlbEV2ZW50Pj4+IG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHM7CiAj
aWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKICAgICBEZXF1ZTxOYXRpdmVXZWJHZXN0dXJl
RXZlbnQ+IG1fZ2VzdHVyZUV2ZW50UXVldWU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNkYTgzYzNhNmUxODIwMDk4NDVh
NGM4NmIwNDhhOWUzYThjN2JiYWUuLmJjYzBhZmEwZjczODM4YjgxNDU5NjkxOTQ3Yjc4MDNhNjJi
YjcxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjIzNiw2ICsyMjM2LDggQEAKIAkJMEY5MzFDMUIxOEM1NzExOTAwREJBN0MzIC8q
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkzMUMxQjE4QzU3MTE5
MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjY1
OTIyMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGQkI3MTlEMjUyRDZFMzUwMEQ2M0Q3NyAvKiBXZWJXaGVlbEV2ZW50Q29hbGVz
Y2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkJCNzE5RTI1MkQ2RTM2MDBENjNENzcgLyog
V2ViV2hlZWxFdmVudENvYWxlc2Nlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJXaGVlbEV2ZW50Q29h
bGVzY2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA4NTZFMTg3Q0UwQTkw
MDc4MEQ4NiAvKiBfX2luaXRfXy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IF9faW5pdF9fLnB5OyBw
YXRoID0gd2Via2l0L19faW5pdF9fLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkMwODU2RjE4N0NFMEE5MDA3ODBEODYgLyogbWVzc2FnZXMucHkgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUg
PSBtZXNzYWdlcy5weTsgcGF0aCA9IHdlYmtpdC9tZXNzYWdlcy5weTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZDMDg1NzAxODdDRTBBOTAwNzgwRDg2IC8qIG1vZGVsLnB5ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cHl0aG9uOyBuYW1lID0gbW9kZWwucHk7IHBhdGggPSB3ZWJraXQvbW9kZWwucHk7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODk4LDYgKzg5MDAsOCBAQAogCQkJCTUxRDEyNDJCMUU2
RDQxQkMwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCAqLywKIAkJCQk1MUQx
MjQyMTFFNkQzNDlBMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcCAqLywKIAkJ
CQk1MUQxMjQyMjFFNkQzNDlBMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lVGFza1Byb3h5LmggKi8s
CisJCQkJMEZCQjcxOUQyNTJENkUzNTAwRDYzRDc3IC8qIFdlYldoZWVsRXZlbnRDb2FsZXNjZXIu
Y3BwICovLAorCQkJCTBGQkI3MTlFMjUyRDZFMzYwMEQ2M0Q3NyAvKiBXZWJXaGVlbEV2ZW50Q29h
bGVzY2VyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdlYlBhZ2U7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViV2hlZWxFdmVudENvYWxlc2Nlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmIxMDg1NGEwM2Rj
ZGNkNDVmYzJmYjE0NjRhNmRmNDQ4MWNlZmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5jcHAKQEAgLTAs
MCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViV2hlZWxFdmVudENvYWxlc2Nlci5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJFdmVudENvbnZlcnNpb24u
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCisvLyBSZXByZXNlbnRzIHRoZSBudW1iZXIgb2Ygd2hlZWwgZXZlbnRzIHdlIGNhbiBob2xk
IGluIHRoZSBxdWV1ZSBiZWZvcmUgd2Ugc3RhcnQgcHVzaGluZyB0aGVtIHByZWVtcHRpdmVseS4K
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCB3aGVlbEV2ZW50UXVldWVTaXplVGhyZXNob2xkID0gMTA7
CisKK3N0YXRpYyBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0
cywgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK3sKKyAgICB0cyA8PCBwbGF0Zm9y
bSh3aGVlbEV2ZW50KTsKKyAgICByZXR1cm4gdHM7Cit9CisKK2Jvb2wgV2ViV2hlZWxFdmVudENv
YWxlc2Nlcjo6Y2FuQ29hbGVzY2UoY29uc3QgV2ViV2hlZWxFdmVudCYgYSwgY29uc3QgV2ViV2hl
ZWxFdmVudCYgYikKK3sKKyAgICBpZiAoYS5wb3NpdGlvbigpICE9IGIucG9zaXRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhLmdsb2JhbFBvc2l0aW9uKCkgIT0gYi5nbG9i
YWxQb3NpdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEubW9kaWZpZXJz
KCkgIT0gYi5tb2RpZmllcnMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhLmdy
YW51bGFyaXR5KCkgIT0gYi5ncmFudWxhcml0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGEucGhhc2UoKSAhPSBiLnBoYXNlKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5tb21lbnR1bVBoYXNlKCkgIT0gYi5tb21lbnR1
bVBoYXNlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5oYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzKCkgIT0gYi5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1dlYldoZWVs
RXZlbnQgV2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6Y29hbGVzY2UoY29uc3QgV2ViV2hlZWxFdmVu
dCYgYSwgY29uc3QgV2ViV2hlZWxFdmVudCYgYikKK3sKKyAgICBBU1NFUlQoY2FuQ29hbGVzY2Uo
YSwgYikpOworCisgICAgYXV0byBtZXJnZWREZWx0YSA9IGEuZGVsdGEoKSArIGIuZGVsdGEoKTsK
KyAgICBhdXRvIG1lcmdlZFdoZWVsVGlja3MgPSBhLndoZWVsVGlja3MoKSArIGIud2hlZWxUaWNr
cygpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYXV0byBtZXJnZWRVbmFjY2VsZXJhdGVk
U2Nyb2xsaW5nRGVsdGEgPSBhLnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YSgpICsgYi51bmFj
Y2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEoKTsKKworICAgIHJldHVybiBXZWJXaGVlbEV2ZW50KFdl
YkV2ZW50OjpXaGVlbCwgYi5wb3NpdGlvbigpLCBiLmdsb2JhbFBvc2l0aW9uKCksIG1lcmdlZERl
bHRhLCBtZXJnZWRXaGVlbFRpY2tzLCBiLmdyYW51bGFyaXR5KCksIGIuZGlyZWN0aW9uSW52ZXJ0
ZWRGcm9tRGV2aWNlKCksIGIucGhhc2UoKSwgYi5tb21lbnR1bVBoYXNlKCksIGIuaGFzUHJlY2lz
ZVNjcm9sbGluZ0RlbHRhcygpLCBiLnNjcm9sbENvdW50KCksIG1lcmdlZFVuYWNjZWxlcmF0ZWRT
Y3JvbGxpbmdEZWx0YSwgYi5tb2RpZmllcnMoKSwgYi50aW1lc3RhbXAoKSk7CisjZWxzZQorICAg
IHJldHVybiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgYi5wb3NpdGlvbigpLCBiLmds
b2JhbFBvc2l0aW9uKCksIG1lcmdlZERlbHRhLCBtZXJnZWRXaGVlbFRpY2tzLCBiLmdyYW51bGFy
aXR5KCksIGIubW9kaWZpZXJzKCksIGIudGltZXN0YW1wKCkpOworI2VuZGlmCit9CisKK2Jvb2wg
V2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6c2hvdWxkRGlzcGF0Y2hFdmVudE5vdyhjb25zdCBXZWJX
aGVlbEV2ZW50JiBldmVudCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShHVEspCisgICAgLy8gRG9u
J3QgcXVldWUgZXZlbnRzIHJlcHJlc2VudGluZyBhIG5vbi10cml2aWFsIHNjcm9sbGluZyBwaGFz
ZSB0bworICAgIC8vIGF2b2lkIGhhdmluZyB0aGVtIHRyYXBwZWQgaW4gdGhlIHF1ZXVlLCBwb3Rl
bnRpYWxseSBwcmV2ZW50aW5nIGEKKyAgICAvLyBzY3JvbGxpbmcgc2Vzc2lvbiB0byBiZWdpbm5p
bmcgb3IgZW5kIGNvcnJlY3RseS4KKyAgICAvLyBUaGlzIGlzIG9ubHkgbmVlZGVkIGJ5IHBsYXRm
b3JtcyB3aG9zZSBXZWJXaGVlbEV2ZW50IGhhcyB0aGlzIHBoYXNlCisgICAgLy8gaW5mb3JtYXRp
b24gKENvY29hIGFuZCBHVEsrKSBidXQgQ29jb2Egd2FzIGZpbmUgd2l0aG91dCBpdC4KKyAgICBp
ZiAoZXZlbnQucGhhc2UoKSA9PSBXZWJXaGVlbEV2ZW50OjpQaGFzZTo6UGhhc2VOb25lCisgICAg
ICAgIHx8IGV2ZW50LnBoYXNlKCkgPT0gV2ViV2hlZWxFdmVudDo6UGhhc2U6OlBoYXNlQ2hhbmdl
ZAorICAgICAgICB8fCBldmVudC5tb21lbnR1bVBoYXNlKCkgPT0gV2ViV2hlZWxFdmVudDo6UGhh
c2U6OlBoYXNlTm9uZQorICAgICAgICB8fCBldmVudC5tb21lbnR1bVBoYXNlKCkgPT0gV2ViV2hl
ZWxFdmVudDo6UGhhc2U6OlBoYXNlQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShldmVudCk7CisjZW5kaWYKKworICAgIHJldHVybiBtX3doZWVs
RXZlbnRRdWV1ZS5zaXplKCkgPj0gd2hlZWxFdmVudFF1ZXVlU2l6ZVRocmVzaG9sZDsKK30KKwor
T3B0aW9uYWw8V2ViV2hlZWxFdmVudD4gV2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6bmV4dEV2ZW50
VG9EaXNwYXRjaCgpCit7CisgICAgaWYgKG1fd2hlZWxFdmVudFF1ZXVlLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gY29hbGVzY2VkRXZlbnQgPSBt
X3doZWVsRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKKworICAgIGF1dG8gY29hbGVzY2VkU2VxdWVu
Y2UgPSBtYWtlVW5pcXVlPENvYWxlc2NlZEV2ZW50U2VxdWVuY2U+KCk7CisgICAgY29hbGVzY2Vk
U2VxdWVuY2UtPmFwcGVuZChjb2FsZXNjZWRFdmVudCk7CisKKyAgICBXZWJXaGVlbEV2ZW50IGNv
YWxlc2NlZFdlYkV2ZW50ID0gY29hbGVzY2VkRXZlbnQ7CisKKyAgICB3aGlsZSAoIW1fd2hlZWxF
dmVudFF1ZXVlLmlzRW1wdHkoKSAmJiBjYW5Db2FsZXNjZShjb2FsZXNjZWRXZWJFdmVudCwgbV93
aGVlbEV2ZW50UXVldWUuZmlyc3QoKSkpIHsKKyAgICAgICAgYXV0byBmaXJzdEV2ZW50ID0gbV93
aGVlbEV2ZW50UXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgIGNvYWxlc2NlZFNlcXVlbmNlLT5h
cHBlbmQoZmlyc3RFdmVudCk7CisgICAgICAgIGNvYWxlc2NlZFdlYkV2ZW50ID0gY29hbGVzY2Uo
Y29hbGVzY2VkV2ViRXZlbnQsIGZpcnN0RXZlbnQpOworICAgIH0KKworI2lmICFMT0dfRElTQUJM
RUQKKyAgICBpZiAoY29hbGVzY2VkU2VxdWVuY2UtPnNpemUoKSA+IDEpCisgICAgICAgIExPR19X
SVRIX1NUUkVBTShXaGVlbEV2ZW50cywgc3RyZWFtIDw8ICJXZWJXaGVlbEV2ZW50Q29hbGVzY2Vy
Ojp3aGVlbEV2ZW50V2l0aENvYWxlc2NpbmcgY29hbHNlc2NlZCAiIDw8ICpjb2FsZXNjZWRTZXF1
ZW5jZSA8PCAiIGludG8gIiA8PCBjb2FsZXNjZWRXZWJFdmVudCk7CisjZW5kaWYKKworICAgIG1f
ZXZlbnRzQmVpbmdQcm9jZXNzZWQuYXBwZW5kKFdURk1vdmUoY29hbGVzY2VkU2VxdWVuY2UpKTsK
KyAgICByZXR1cm4gY29hbGVzY2VkV2ViRXZlbnQ7Cit9CisKK2Jvb2wgV2ViV2hlZWxFdmVudENv
YWxlc2Nlcjo6c2hvdWxkRGlzcGF0Y2hFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBl
dmVudCkKK3sKKyAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudHMsIHN0cmVhbSA8PCAiV2Vi
V2hlZWxFdmVudENvYWxlc2Nlcjo6c2hvdWxkRGlzcGF0Y2hFdmVudCAiIDw8IGV2ZW50IDw8ICIg
KCIgPDwgbV93aGVlbEV2ZW50UXVldWUuc2l6ZSgpIDw8ICIgZXZlbnRzIGluIHRoZSBxdWV1ZSwg
IiA8PCBtX2V2ZW50c0JlaW5nUHJvY2Vzc2VkLnNpemUoKSA8PCAiIGV2ZW50IHNlcXVlbmNlcyBi
ZWluZyBwcm9jZXNzZWQpIik7CisKKyAgICBtX3doZWVsRXZlbnRRdWV1ZS5hcHBlbmQoZXZlbnQp
OworCisgICAgaWYgKCFtX2V2ZW50c0JlaW5nUHJvY2Vzc2VkLmlzRW1wdHkoKSkgeworICAgICAg
ICBpZiAoIXNob3VsZERpc3BhdGNoRXZlbnROb3cobV93aGVlbEV2ZW50UXVldWUubGFzdCgpKSkg
eworICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRzLCBzdHJlYW0gPDwgIldl
YldoZWVsRXZlbnRDb2FsZXNjZXI6OnNob3VsZERpc3BhdGNoRXZlbnQgLSAgIiA8PCBtX3doZWVs
RXZlbnRRdWV1ZS5zaXplKCkgPDwgIiBldmVudHMgcXVldWVkOyBub3QgZGlzcGF0Y2hpbmciKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGUgcXVl
dWUgaGFzIHRvbyBtYW55IHdoZWVsIGV2ZW50cywgc28gcHVzaCBhIG5ldyBldmVudC4KKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworTmF0aXZlV2ViV2hlZWxFdmVudCBXZWJXaGVlbEV2
ZW50Q29hbGVzY2VyOjp0YWtlT2xkZXN0RXZlbnRCZWluZ1Byb2Nlc3NlZCgpCit7CisgICAgQVNT
RVJUKGhhc0V2ZW50c0JlaW5nUHJvY2Vzc2VkKCkpOworICAgIGF1dG8gb2xkZXN0U2VxdWVuY2Ug
PSBtX2V2ZW50c0JlaW5nUHJvY2Vzc2VkLnRha2VGaXJzdCgpOworICAgIHJldHVybiBvbGRlc3RT
ZXF1ZW5jZS0+bGFzdCgpOworfQorCit2b2lkIFdlYldoZWVsRXZlbnRDb2FsZXNjZXI6OmNsZWFy
KCkKK3sKKyAgICBtX3doZWVsRXZlbnRRdWV1ZS5jbGVhcigpOworICAgIG1fZXZlbnRzQmVpbmdQ
cm9jZXNzZWQuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJXaGVlbEV2ZW50Q29hbGVzY2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJXaGVlbEV2ZW50Q29hbGVz
Y2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTllZGRmNDIyY2E4ZGViNjI4ZDgyNzRmYzRkYTE1YmE3MjkyOTc1
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YldoZWVsRXZlbnRDb2FsZXNjZXIuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCisjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYldoZWVsRXZlbnRDb2FsZXNjZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIC8vIElmIHRoaXMgcmV0dXJucyB0cnVlLCB1c2Ug
bmV4dEV2ZW50VG9EaXNwYXRjaCgpIHRvIGdldCB0aGUgZXZlbnQgdG8gZGlzcGF0Y2guCisgICAg
Ym9vbCBzaG91bGREaXNwYXRjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKTsKKyAg
ICBPcHRpb25hbDxXZWJXaGVlbEV2ZW50PiBuZXh0RXZlbnRUb0Rpc3BhdGNoKCk7CisgICAgCisg
ICAgTmF0aXZlV2ViV2hlZWxFdmVudCB0YWtlT2xkZXN0RXZlbnRCZWluZ1Byb2Nlc3NlZCgpOwor
CisgICAgYm9vbCBoYXNFdmVudHNCZWluZ1Byb2Nlc3NlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2V2
ZW50c0JlaW5nUHJvY2Vzc2VkLmlzRW1wdHkoKTsgfQorICAgIAorICAgIHZvaWQgY2xlYXIoKTsK
KworcHJpdmF0ZToKKyAgICB1c2luZyBDb2FsZXNjZWRFdmVudFNlcXVlbmNlID0gVmVjdG9yPE5h
dGl2ZVdlYldoZWVsRXZlbnQ+OworCisgICAgc3RhdGljIGJvb2wgY2FuQ29hbGVzY2UoY29uc3Qg
V2ViV2hlZWxFdmVudCYsIGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKKyAgICBzdGF0aWMgV2ViV2hl
ZWxFdmVudCBjb2FsZXNjZShjb25zdCBXZWJXaGVlbEV2ZW50JiwgY29uc3QgV2ViV2hlZWxFdmVu
dCYpOworCisgICAgYm9vbCBzaG91bGREaXNwYXRjaEV2ZW50Tm93KGNvbnN0IFdlYldoZWVsRXZl
bnQmKSBjb25zdDsKKworICAgIERlcXVlPE5hdGl2ZVdlYldoZWVsRXZlbnQsIDI+IG1fd2hlZWxF
dmVudFF1ZXVlOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxDb2FsZXNjZWRFdmVudFNlcXVl
bmNlPj4gbV9ldmVudHNCZWluZ1Byb2Nlc3NlZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAo=
</data>
<flag name="review"
          id="427054"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="427056"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410956</attachid>
            <date>2020-10-09 11:39:01 -0700</date>
            <delta_ts>2020-10-09 12:10:13 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-217523-20201009113900.patch</filename>
            <type>text/plain</type>
            <size>28671</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBiMmFhZWUzZjRlOTk4
ZTZkNzY3ODliM2Y4NmQ4ZjAyY2M2ZGQwNi4uMmZiMmVmY2JiOGQyOTM1Nzc4OWFjZWIzMGQ1NDM2
ZTJlMTA3MDY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTEwLTA5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHdo
ZWVsIGV2ZW50IGNvYWxlc2NpbmcgaW50byBpdHMgb3duIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIEV4cG9ydCB0aGUgVGV4dFN0cmVhbSBvdXRwdXR0
ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKwogMjAyMC0x
MC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBpbXBs
ZW1lbnRhdGlvbiBmb3IgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUncyBjdXJyZW50RnJhbWUgLyBj
dXJyZW50VGltZSAvIHNhbXBsZVJhdGUgYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5ZDJhM2I5NWIx
YWVlNDk2ZTVlNDBiNGQyNzU3YTM0ZGFkMDdmZTk5Li44ZjM3ZWIxZGNlMDRiODc5Mzg1MTM2NGQ0
ZDYwODQ2NTUzYmMyYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTEwLTA5ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9y
IHdoZWVsIGV2ZW50IGNvYWxlc2NpbmcgaW50byBpdHMgb3duIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBTYW0gV2VpbmlnLgorICAgICAgICAKKyAgICAgICAgV2ViUGFnZVByb3h5IGhhZCBz
b21lIGNvbmZ1c2luZyBjb2RlIGZvciBjb2FsZXNjaW5nIHdoZWVsIGV2ZW50cywgZmlyc3QgYWRk
ZWQgaW4gcjExNjQ2Ni4KKyAgICAgICAgVG8gcHJlcGFyZSB0aGlzIGNvZGUgZm9yIHBhcnRpYWwg
cmUtdXNlIGluIGFub3RoZXIgcGxhY2UsIGZhY3RvciBpdCBpbnRvIGl0cyBvd24gY2xhc3MsIFdl
YldoZWVsRXZlbnRDb2FsZXNjZXIuCisKKyAgICAgICAgV2ViV2hlZWxFdmVudENvYWxlc2NlciBo
b2xkcyBhIHF1ZXVlIG9mIHBlbmRpbmcgTmF0aXZlV2ViV2hlZWxFdmVudHMsIGFuZCBhIHF1ZXVl
IG9mIHNlcXVlbmNlcyBvZgorICAgICAgICBOYXRpdmVXZWJXaGVlbEV2ZW50cywgd2hlcmUgZWFj
aCBzZXF1ZW5jZSBoYXMgYmVlbiBjb2FsZXNjZWQgaW50byBhIHNpbmdsZSBXZWJXZWVsRXZlbnQg
d2hpY2ggd2FzCisgICAgICAgIHNlbnQgdG8gdGhlIFdlYiBQcm9jZXNzLgorCisgICAgICAgIFdo
ZW4gdGhlIFVJIHByb2Nlc3MgcmVjZWl2ZXMgYSBtZXNzYWdlIGJhY2sgZnJvbSB0aGUgV2ViIFBy
b2Nlc3MsIGl0IGNhbGxzIHRha2VPbGRlc3RFdmVudEJlaW5nUHJvY2Vzc2VkKCkKKyAgICAgICAg
d2hpY2ggcmVtb3ZlcyB0aGUgZmlyc3Qgc2VxdWVuY2UgZnJvbSBtX2V2ZW50c0JlaW5nUHJvY2Vz
c2VkLiBUaGlzIGNvZGUgaGFzIHRvIHRyYWNrIE5hdGl2ZVdlYldoZWVsRXZlbnRzLCBiZWNhdXNl
CisgICAgICAgIHdlIG5lZWQgdG8gZGlnIHRoZSBOU0V2ZW50IG91dCBvZiB0aGUgTmF0aXZlV2Vi
V2hlZWxFdmVudCBhdCB0aGlzIHN0YWdlLgorCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5o
OiBBZGQgYSBXaGVlbEV2ZW50cyBsb2cgY2hhbm5lbC4KKyAgICAgICAgKiBTaGFyZWQvTmF0aXZl
V2ViV2hlZWxFdmVudC5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndoZWVsRXZl
bnRDb2FsZXNjZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJv
Y2Vzc0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OmNhbkNvYWxlc2NlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6Y29hbGVzY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0Ojpjb2Fs
ZXNjZWRXaGVlbEV2ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpwcm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNob3VsZFByb2Nlc3NXaGVlbEV2ZW50Tm93IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6b3Bl
cmF0b3I8PCk6CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnRDb2FsZXNjZXI6OmNhbkNv
YWxlc2NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6Y29hbGVz
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOjpzaG91bGREaXNw
YXRjaEV2ZW50Tm93IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudENvYWxl
c2Nlcjo6bmV4dEV2ZW50VG9EaXNwYXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZl
bnRDb2FsZXNjZXI6OnNob3VsZERpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJX
aGVlbEV2ZW50Q29hbGVzY2VyOjp0YWtlT2xkZXN0RXZlbnRCZWluZ1Byb2Nlc3NlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnRDb2FsZXNjZXI6OmNsZWFyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6aGFzRXZlbnRzQmVpbmdQcm9jZXNz
ZWQgY29uc3QpOgorCiAyMDIwLTEwLTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlZHVuZGFudCByZW5kZXJpbmcgdXBkYXRlcyBjYW4gYmUgc2No
ZWR1bGVkIGZyb20gaW5zaWRlIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGUwOWE2YTZiOTIzZmEwMTAy
MTE4NGU1Mjc1MzQ2NWY0ZjIyM2NmNmMuLmM0OGVkYjQ1NjY3Mzc1YzgzNzlhYjBlNTJlNTI0MDFk
Y2NlZDRkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCkBAIC0yNzAsNyArMjcwLDcgQEAgaW5saW5lIEZsb2F0UG9pbnQgUGxhdGZvcm1XaGVlbEV2
ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShLSU5FVElDX1ND
Uk9MTElORykKIAotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHMpOworV0VCQ09SRV9F
WFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHMpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDcy
OTMxMzIzOWQ1ZDVhMWI5YWYwOGFkN2Y0NTRkNmZiOTRlYWFkNjAuLjMyNWE0NmZmYzU5OTQxOTQx
MTI0OTY4NmRmN2FjNTJlYmE5YmExMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0x
MDAsNiArMTAwLDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgTShWaXNpYmxlUmVjdHMpIFwKICAgICBN
KFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKKyAgICBNKFdoZWVsRXZlbnRzKSBcCiAKIFdFQktJ
VDJfTE9HX0NIQU5ORUxTKERFQ0xBUkVfTE9HX0NIQU5ORUwpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAppbmRleCBkZjQyNDJiMDczOWM4MzhiNjRjN2M3MWYy
NGUxZmUwNjliNGY0MDA1Li5hYTljYjBlNDQ4YzY4NDYyOWNjNTczYWFmZDI3MGI5ZTUzNjJkNTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oCkBAIC0zMCw2
ICszMCw3IEBACiAjaWYgVVNFKEFQUEtJVCkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiBP
QkpDX0NMQVNTIE5TVmlldzsKK09CSkNfQ0xBU1MgTlNFdmVudDsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggYmMyYzQ5NDNhZWJlNWNjYWY4Yjk0N2VkNzFhZTAz
MGY0ZjMyZDk4My4uNzFiNDUyNDMzZGMyMWQzM2Q1OGVmNzIxMTI5NThhMzZiYmY1NzkyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CkBAIC02NjcsNiArNjY3LDcgQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VP
dmVybGF5LmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5j
cHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVW5kb1N0ZXAuY3BwCitXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViV2hlZWxF
dmVudENvYWxlc2Nlci5jcHAKIAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDA4ZGZhYjllYzI4Mzg4NGUxZWE0
ZTA4MGIyMDVlM2U5M2E2YmQ0NGYuLjQ3YTNiYTBkZWNkYmIwZTY2YTVjN2RkYjQ2ZjBiMThmOWQz
NTEyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTM3
LDYgKzEzNyw3IEBACiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVmlld0RpZE1v
dmVUb1dpbmRvd09ic2VydmVyLmgiCisjaW5jbHVkZSAiV2ViV2hlZWxFdmVudENvYWxlc2Nlci5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FkQ2xp
Y2tBdHRyaWJ1dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KQEAgLTI2
MTMsNzAgKzI2MTQsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmx1c2hQZW5kaW5nTW91c2VFdmVu
dENhbGxiYWNrcygpCiAgICAgbV9jYWxsYmFja0hhbmRsZXJzQWZ0ZXJQcm9jZXNzaW5nUGVuZGlu
Z01vdXNlRXZlbnRzLmNsZWFyKCk7CiB9CiAKLSNpZiBNRVJHRV9XSEVFTF9FVkVOVFMKLXN0YXRp
YyBib29sIGNhbkNvYWxlc2NlKGNvbnN0IFdlYldoZWVsRXZlbnQmIGEsIGNvbnN0IFdlYldoZWVs
RXZlbnQmIGIpCi17Ci0gICAgaWYgKGEucG9zaXRpb24oKSAhPSBiLnBvc2l0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5nbG9iYWxQb3NpdGlvbigpICE9IGIuZ2xvYmFs
UG9zaXRpb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLm1vZGlmaWVycygp
ICE9IGIubW9kaWZpZXJzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5ncmFu
dWxhcml0eSgpICE9IGIuZ3JhbnVsYXJpdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChhLnBoYXNlKCkgIT0gYi5waGFzZSgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEubW9tZW50dW1QaGFzZSgpICE9IGIubW9tZW50dW1Q
aGFzZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEuaGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhcygpICE9IGIuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgV2Vi
V2hlZWxFdmVudCBjb2FsZXNjZShjb25zdCBXZWJXaGVlbEV2ZW50JiBhLCBjb25zdCBXZWJXaGVl
bEV2ZW50JiBiKQotewotICAgIEFTU0VSVChjYW5Db2FsZXNjZShhLCBiKSk7Ci0KLSAgICBGbG9h
dFNpemUgbWVyZ2VkRGVsdGEgPSBhLmRlbHRhKCkgKyBiLmRlbHRhKCk7Ci0gICAgRmxvYXRTaXpl
IG1lcmdlZFdoZWVsVGlja3MgPSBhLndoZWVsVGlja3MoKSArIGIud2hlZWxUaWNrcygpOwotCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgRmxvYXRTaXplIG1lcmdlZFVuYWNjZWxlcmF0ZWRTY3Jv
bGxpbmdEZWx0YSA9IGEudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhKCkgKyBiLnVuYWNjZWxl
cmF0ZWRTY3JvbGxpbmdEZWx0YSgpOwotCi0gICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZl
bnQ6OldoZWVsLCBiLnBvc2l0aW9uKCksIGIuZ2xvYmFsUG9zaXRpb24oKSwgbWVyZ2VkRGVsdGEs
IG1lcmdlZFdoZWVsVGlja3MsIGIuZ3JhbnVsYXJpdHkoKSwgYi5kaXJlY3Rpb25JbnZlcnRlZEZy
b21EZXZpY2UoKSwgYi5waGFzZSgpLCBiLm1vbWVudHVtUGhhc2UoKSwgYi5oYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzKCksIGIuc2Nyb2xsQ291bnQoKSwgbWVyZ2VkVW5hY2NlbGVyYXRlZFNjcm9s
bGluZ0RlbHRhLCBiLm1vZGlmaWVycygpLCBiLnRpbWVzdGFtcCgpKTsKLSNlbHNlCi0gICAgcmV0
dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVsLCBiLnBvc2l0aW9uKCksIGIuZ2xvYmFs
UG9zaXRpb24oKSwgbWVyZ2VkRGVsdGEsIG1lcmdlZFdoZWVsVGlja3MsIGIuZ3JhbnVsYXJpdHko
KSwgYi5tb2RpZmllcnMoKSwgYi50aW1lc3RhbXAoKSk7Ci0jZW5kaWYKLX0KLSNlbmRpZiAvLyBN
RVJHRV9XSEVFTF9FVkVOVFMKLQotc3RhdGljIFdlYldoZWVsRXZlbnQgY29hbGVzY2VkV2hlZWxF
dmVudChEZXF1ZTxOYXRpdmVXZWJXaGVlbEV2ZW50PiYgcXVldWUsIFZlY3RvcjxOYXRpdmVXZWJX
aGVlbEV2ZW50PiYgY29hbGVzY2VkRXZlbnRzKQotewotICAgIEFTU0VSVCghcXVldWUuaXNFbXB0
eSgpKTsKLSAgICBBU1NFUlQoY29hbGVzY2VkRXZlbnRzLmlzRW1wdHkoKSk7Ci0KLSNpZiBNRVJH
RV9XSEVFTF9FVkVOVFMKLSAgICBOYXRpdmVXZWJXaGVlbEV2ZW50IGZpcnN0RXZlbnQgPSBxdWV1
ZS50YWtlRmlyc3QoKTsKLSAgICBjb2FsZXNjZWRFdmVudHMuYXBwZW5kKGZpcnN0RXZlbnQpOwot
Ci0gICAgV2ViV2hlZWxFdmVudCBldmVudCA9IGZpcnN0RXZlbnQ7Ci0gICAgd2hpbGUgKCFxdWV1
ZS5pc0VtcHR5KCkgJiYgY2FuQ29hbGVzY2UoZXZlbnQsIHF1ZXVlLmZpcnN0KCkpKSB7Ci0gICAg
ICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQgZmlyc3RFdmVudCA9IHF1ZXVlLnRha2VGaXJzdCgpOwot
ICAgICAgICBjb2FsZXNjZWRFdmVudHMuYXBwZW5kKGZpcnN0RXZlbnQpOwotICAgICAgICBldmVu
dCA9IGNvYWxlc2NlKGV2ZW50LCBmaXJzdEV2ZW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZXZl
bnQ7Ci0jZWxzZQotICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKQotICAgICAgICBjb2FsZXNj
ZWRFdmVudHMuYXBwZW5kKHF1ZXVlLnRha2VGaXJzdCgpKTsKLSAgICByZXR1cm4gY29hbGVzY2Vk
RXZlbnRzLmxhc3QoKTsKLSNlbmRpZgotfQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hl
ZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKIHsKICNpZiBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkKQEAgLTI2ODksMzAgKzI2MjYsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hl
ZWxFdmVudCYgZXZlbnQpCiAKICAgICBjbG9zZU92ZXJsYXllZFZpZXdzKCk7CiAKLSAgICBpZiAo
IW1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1f
d2hlZWxFdmVudFF1ZXVlLmFwcGVuZChldmVudCk7Ci0gICAgICAgIGlmICghc2hvdWxkUHJvY2Vz
c1doZWVsRXZlbnROb3coZXZlbnQpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAvLyBU
aGUgcXVldWUgaGFzIHRvbyBtYW55IHdoZWVsIGV2ZW50cywgc28gcHVzaCBhIG5ldyBldmVudC4K
LSAgICB9Ci0KLSAgICBpZiAoIW1fd2hlZWxFdmVudFF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAg
ICBwcm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZlbnQoKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlm
ICh3aGVlbEV2ZW50Q29hbGVzY2VyKCkuc2hvdWxkRGlzcGF0Y2hFdmVudChldmVudCkpIHsKKyAg
ICAgICAgYXV0byBldmVudCA9IHdoZWVsRXZlbnRDb2FsZXNjZXIoKS5uZXh0RXZlbnRUb0Rpc3Bh
dGNoKCk7CisgICAgICAgIHNlbmRXaGVlbEV2ZW50KCpldmVudCk7CiAgICAgfQotCi0gICAgYXV0
byBjb2FsZXNjZWRXaGVlbEV2ZW50ID0gbWFrZVVuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxF
dmVudD4+KCk7Ci0gICAgY29hbGVzY2VkV2hlZWxFdmVudC0+YXBwZW5kKGV2ZW50KTsKLSAgICBt
X2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzLmFwcGVuZChXVEZNb3ZlKGNvYWxlc2NlZFdo
ZWVsRXZlbnQpKTsKLSAgICBzZW5kV2hlZWxFdmVudChldmVudCk7Ci19Ci0KLXZvaWQgV2ViUGFn
ZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZlbnQoKQotewotICAgIGF1dG8gbmV4dENv
YWxlc2NlZEV2ZW50ID0gbWFrZVVuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7
Ci0gICAgV2ViV2hlZWxFdmVudCBuZXh0V2hlZWxFdmVudCA9IGNvYWxlc2NlZFdoZWVsRXZlbnQo
bV93aGVlbEV2ZW50UXVldWUsICpuZXh0Q29hbGVzY2VkRXZlbnQuZ2V0KCkpOwotICAgIG1fY3Vy
cmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuYXBwZW5kKFdURk1vdmUobmV4dENvYWxlc2NlZEV2
ZW50KSk7Ci0gICAgc2VuZFdoZWVsRXZlbnQobmV4dFdoZWVsRXZlbnQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VuZFdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpCkBA
IC0yNzM2LDI1ICsyNjUzLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kV2hlZWxFdmVudChj
b25zdCBXZWJXaGVlbEV2ZW50JiBldmVudCkKICAgICBtX3Byb2Nlc3MtPmlzUmVzcG9uc2l2ZVdp
dGhMYXp5U3RvcCgpOwogfQogCi1ib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkUHJvY2Vzc1doZWVs
RXZlbnROb3coY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpIGNvbnN0CitXZWJXaGVlbEV2ZW50
Q29hbGVzY2VyJiBXZWJQYWdlUHJveHk6OndoZWVsRXZlbnRDb2FsZXNjZXIoKQogewotI2lmIFBM
QVRGT1JNKEdUSykKLSAgICAvLyBEb24ndCBxdWV1ZSBldmVudHMgcmVwcmVzZW50aW5nIGEgbm9u
LXRyaXZpYWwgc2Nyb2xsaW5nIHBoYXNlIHRvCi0gICAgLy8gYXZvaWQgaGF2aW5nIHRoZW0gdHJh
cHBlZCBpbiB0aGUgcXVldWUsIHBvdGVudGlhbGx5IHByZXZlbnRpbmcgYQotICAgIC8vIHNjcm9s
bGluZyBzZXNzaW9uIHRvIGJlZ2lubmluZyBvciBlbmQgY29ycmVjdGx5LgotICAgIC8vIFRoaXMg
aXMgb25seSBuZWVkZWQgYnkgcGxhdGZvcm1zIHdob3NlIFdlYldoZWVsRXZlbnQgaGFzIHRoaXMg
cGhhc2UKLSAgICAvLyBpbmZvcm1hdGlvbiAoQ29jb2EgYW5kIEdUSyspIGJ1dCBDb2NvYSB3YXMg
ZmluZSB3aXRob3V0IGl0LgotICAgIGlmIChldmVudC5waGFzZSgpID09IFdlYldoZWVsRXZlbnQ6
OlBoYXNlOjpQaGFzZU5vbmUKLSAgICAgICAgfHwgZXZlbnQucGhhc2UoKSA9PSBXZWJXaGVlbEV2
ZW50OjpQaGFzZTo6UGhhc2VDaGFuZ2VkCi0gICAgICAgIHx8IGV2ZW50Lm1vbWVudHVtUGhhc2Uo
KSA9PSBXZWJXaGVlbEV2ZW50OjpQaGFzZTo6UGhhc2VOb25lCi0gICAgICAgIHx8IGV2ZW50Lm1v
bWVudHVtUGhhc2UoKSA9PSBXZWJXaGVlbEV2ZW50OjpQaGFzZTo6UGhhc2VDaGFuZ2VkKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKLSNlbmRp
ZgotICAgIGlmIChtX3doZWVsRXZlbnRRdWV1ZS5zaXplKCkgPj0gd2hlZWxFdmVudFF1ZXVlU2l6
ZVRocmVzaG9sZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghbV93aGVlbEV2ZW50Q29hbGVzY2VyKQorICAgICAgICBtX3doZWVsRXZlbnRDb2FsZXNj
ZXIgPSBtYWtlVW5pcXVlPFdlYldoZWVsRXZlbnRDb2FsZXNjZXI+KCk7CisKKyAgICByZXR1cm4g
Km1fd2hlZWxFdmVudENvYWxlc2NlcjsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6Omhhc1F1ZXVl
ZEtleUV2ZW50KCkgY29uc3QKQEAgLTY5ODQsNyArNjg4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogCiAg
ICAgICAgIC8vIFJldGlyZSB0aGUgbGFzdCBzZW50IGV2ZW50IG5vdyB0aGF0IFdlYlByb2Nlc3Mg
aXMgZG9uZSBoYW5kbGluZyBpdC4KICAgICAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsICFt
X21vdXNlRXZlbnRRdWV1ZS5pc0VtcHR5KCkpOwotICAgICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50
IGV2ZW50ID0gbV9tb3VzZUV2ZW50UXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgIGF1dG8gZXZl
bnQgPSBtX21vdXNlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKICAgICAgICAgTUVTU0FHRV9DSEVD
SyhtX3Byb2Nlc3MsIHR5cGUgPT0gZXZlbnQudHlwZSgpKTsKIAogICAgICAgICBpZiAoIW1fbW91
c2VFdmVudFF1ZXVlLmlzRW1wdHkoKSkgewpAQCAtNjk5NSwyMyArNjg5OSwyMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFu
ZGxlZCkKICAgICAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+bW91c2VFdmVudHNGbHVz
aGVkRm9yUGFnZSgqdGhpcyk7CiAgICAgICAgICAgICBkaWRGaW5pc2hQcm9jZXNzaW5nQWxsUGVu
ZGluZ01vdXNlRXZlbnRzKCk7CiAgICAgICAgIH0KLQogICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBjYXNlIFdlYkV2ZW50OjpXaGVlbDogewotICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJv
Y2VzcywgIW1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuaXNFbXB0eSgpKTsKLQotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PiBvbGRlc3RD
b2FsZXNjZWRFdmVudCA9IG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMudGFrZUZpcnN0
KCk7CisgICAgICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCB3aGVlbEV2ZW50Q29hbGVzY2Vy
KCkuaGFzRXZlbnRzQmVpbmdQcm9jZXNzZWQoKSk7CisgICAgICAgIGF1dG8gb2xkZXN0UHJvY2Vz
c2VkRXZlbnQgPSB3aGVlbEV2ZW50Q29hbGVzY2VyKCkudGFrZU9sZGVzdEV2ZW50QmVpbmdQcm9j
ZXNzZWQoKTsKIAogICAgICAgICAvLyBGSVhNRTogRGlzcGF0Y2ggYWRkaXRpb25hbCBldmVudHMg
dG8gdGhlIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQgY2xpZW50IGZ1bmN0aW9uLgogICAgICAgICBp
ZiAoIWhhbmRsZWQpIHsKLSAgICAgICAgICAgIG1fdWlDbGllbnQtPmRpZE5vdEhhbmRsZVdoZWVs
RXZlbnQodGhpcywgb2xkZXN0Q29hbGVzY2VkRXZlbnQtPmxhc3QoKSk7Ci0gICAgICAgICAgICBw
YWdlQ2xpZW50KCkud2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUob2xkZXN0Q29hbGVz
Y2VkRXZlbnQtPmxhc3QoKSk7CisgICAgICAgICAgICBtX3VpQ2xpZW50LT5kaWROb3RIYW5kbGVX
aGVlbEV2ZW50KHRoaXMsIG9sZGVzdFByb2Nlc3NlZEV2ZW50KTsKKyAgICAgICAgICAgIHBhZ2VD
bGllbnQoKS53aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShvbGRlc3RQcm9jZXNzZWRF
dmVudCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIW1fd2hlZWxFdmVudFF1ZXVlLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCgpOworICAgICAg
ICBpZiAoYXV0byBldmVudFRvU2VuZCA9IHdoZWVsRXZlbnRDb2FsZXNjZXIoKS5uZXh0RXZlbnRU
b0Rpc3BhdGNoKCkpCisgICAgICAgICAgICBzZW5kV2hlZWxFdmVudCgqZXZlbnRUb1NlbmQpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTcwMjIsOCArNjkyNCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVk
KQogICAgICAgICBMT0coS2V5SGFuZGxpbmcsICJXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVu
dDogJXMgKHF1ZXVlIGVtcHR5ICVkKSIsIHdlYktleWJvYXJkRXZlbnRUeXBlU3RyaW5nKHR5cGUp
LCBtX2tleUV2ZW50UXVldWUuaXNFbXB0eSgpKTsKIAogICAgICAgICBNRVNTQUdFX0NIRUNLKG1f
cHJvY2VzcywgIW1fa2V5RXZlbnRRdWV1ZS5pc0VtcHR5KCkpOwotICAgICAgICBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50IGV2ZW50ID0gbV9rZXlFdmVudFF1ZXVlLnRha2VGaXJzdCgpOwotCisgICAg
ICAgIGF1dG8gZXZlbnQgPSBtX2tleUV2ZW50UXVldWUudGFrZUZpcnN0KCk7CiAgICAgICAgIE1F
U1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCB0eXBlID09IGV2ZW50LnR5cGUoKSk7CiAKICNpZiBQTEFU
Rk9STShXSU4pCkBAIC03MDU3LDE1ICs2OTU4LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgIGNhc2Ug
V2ViRXZlbnQ6Okdlc3R1cmVDaGFuZ2U6CiAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZUVuZDog
ewogICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgIW1fZ2VzdHVyZUV2ZW50UXVldWUu
aXNFbXB0eSgpKTsKLSAgICAgICAgTmF0aXZlV2ViR2VzdHVyZUV2ZW50IGV2ZW50ID0gbV9nZXN0
dXJlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKLQorICAgICAgICBhdXRvIGV2ZW50ID0gbV9nZXN0
dXJlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKICAgICAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nl
c3MsIHR5cGUgPT0gZXZlbnQudHlwZSgpKTsKIAogICAgICAgICBpZiAoIWhhbmRsZWQpCiAgICAg
ICAgICAgICBwYWdlQ2xpZW50KCkuZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShl
dmVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBjYXNlIFdlYkV2ZW50OjpUb3VjaFN0YXJ0
OgpAQCAtNzA3OSw4ICs2OTc4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVu
dCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRsZWQpCiAgICAgY2FzZSBXZWJFdmVudDo6
VG91Y2hFbmQ6CiAgICAgY2FzZSBXZWJFdmVudDo6VG91Y2hDYW5jZWw6IHsKICAgICAgICAgTUVT
U0FHRV9DSEVDSyhtX3Byb2Nlc3MsICFtX3RvdWNoRXZlbnRRdWV1ZS5pc0VtcHR5KCkpOwotICAg
ICAgICBRdWV1ZWRUb3VjaEV2ZW50cyBxdWV1ZWRFdmVudHMgPSBtX3RvdWNoRXZlbnRRdWV1ZS50
YWtlRmlyc3QoKTsKLQorICAgICAgICBhdXRvIHF1ZXVlZEV2ZW50cyA9IG1fdG91Y2hFdmVudFF1
ZXVlLnRha2VGaXJzdCgpOwogICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgdHlwZSA9
PSBxdWV1ZWRFdmVudHMuZm9yd2FyZGVkRXZlbnQudHlwZSgpKTsKIAogICAgICAgICBwYWdlQ2xp
ZW50KCkuZG9uZVdpdGhUb3VjaEV2ZW50KHF1ZXVlZEV2ZW50cy5mb3J3YXJkZWRFdmVudCwgaGFu
ZGxlZCk7CkBAIC03NzA0LDggKzc2MDIsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0
ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFzb24gdGVybWluYQogICAg
IC8vIENhbid0IGV4cGVjdCBEaWRSZWNlaXZlRXZlbnQgbm90aWZpY2F0aW9ucyBmcm9tIGEgY3Jh
c2hlZCB3ZWIgcHJvY2Vzcy4KICAgICBtX21vdXNlRXZlbnRRdWV1ZS5jbGVhcigpOwogICAgIG1f
a2V5RXZlbnRRdWV1ZS5jbGVhcigpOwotICAgIG1fd2hlZWxFdmVudFF1ZXVlLmNsZWFyKCk7Ci0g
ICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5jbGVhcigpOworICAgIGlmIChtX3do
ZWVsRXZlbnRDb2FsZXNjZXIpCisgICAgICAgIG1fd2hlZWxFdmVudENvYWxlc2Nlci0+Y2xlYXIo
KTsKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFFTkFCTEUoSU9TX1RPVUNIX0VWRU5U
UykKICAgICBtX3RvdWNoRXZlbnRRdWV1ZS5jbGVhcigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGU0N2NiNWU0MWYzOWRkYjc5ZmQ1MWQ3NTFmOTNh
ZWYzZGNiYzI1NWEuLmI1OTRlZDg2ZGRiNmE1NTg0NzU4N2U5MmM1MDA2MWZmNDc5NTc0N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zMjYsNiArMzI2LDcgQEAg
Y2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OwogY2xhc3MgV2ViVmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyOwogY2xhc3MgV2Vi
V2hlZWxFdmVudDsKK2NsYXNzIFdlYldoZWVsRXZlbnRDb2FsZXNjZXI7CiBjbGFzcyBXZWJzaXRl
RGF0YVN0b3JlOwogCiBzdHJ1Y3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzOwpAQCAtMjIyOCw5
ICsyMjI5LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0UmVuZGVyVHJlZVNpemUodWludDY0
X3QgdHJlZVNpemUpIHsgbV9yZW5kZXJUcmVlU2l6ZSA9IHRyZWVTaXplOyB9CiAKLSAgICB2b2lk
IHByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCgpOwogICAgIHZvaWQgc2VuZFdoZWVsRXZlbnQo
Y29uc3QgV2ViV2hlZWxFdmVudCYpOwotICAgIGJvb2wgc2hvdWxkUHJvY2Vzc1doZWVsRXZlbnRO
b3coY29uc3QgV2ViV2hlZWxFdmVudCYpIGNvbnN0OworCisgICAgV2ViV2hlZWxFdmVudENvYWxl
c2NlciYgd2hlZWxFdmVudENvYWxlc2NlcigpOwogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
ICAgICB2b2lkIHVwZGF0ZVRvdWNoRXZlbnRUcmFja2luZyhjb25zdCBXZWJUb3VjaEV2ZW50Jik7
CkBAIC0yNTc0LDEwICsyNTc1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFN1cHBy
ZXNzU09BdXRob3JpemF0aW9uSW5BbGxOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24geyBmYWxzZSB9
OwogI2VuZGlmCiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViV2hlZWxFdmVudENvYWxlc2Nlcj4g
bV93aGVlbEV2ZW50Q29hbGVzY2VyOworCiAgICAgRGVxdWU8TmF0aXZlV2ViTW91c2VFdmVudD4g
bV9tb3VzZUV2ZW50UXVldWU7CiAgICAgRGVxdWU8TmF0aXZlV2ViS2V5Ym9hcmRFdmVudD4gbV9r
ZXlFdmVudFF1ZXVlOwotICAgIERlcXVlPE5hdGl2ZVdlYldoZWVsRXZlbnQ+IG1fd2hlZWxFdmVu
dFF1ZXVlOwotICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8TmF0aXZlV2ViV2hlZWxF
dmVudD4+PiBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzOwogI2lmIEVOQUJMRShNQUNf
R0VTVFVSRV9FVkVOVFMpCiAgICAgRGVxdWU8TmF0aXZlV2ViR2VzdHVyZUV2ZW50PiBtX2dlc3R1
cmVFdmVudFF1ZXVlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjZGE4M2MzYTZlMTgyMDA5ODQ1YTRjODZiMDQ4YTllM2E4
YzdiYmFlLi5iY2MwYWZhMGY3MzgzOGI4MTQ1OTY5MTk0N2I3ODAzYTYyYmI3MWZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyMzYs
NiArMjIzNiw4IEBACiAJCTBGOTMxQzFCMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzFDMUIxOEM1NzExOTAwREJCOEQ0IC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI2NTkyMjEyMDhCNERCMDA0
NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERyYXdpbmdBcmVhSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkJC
NzE5RDI1MkQ2RTM1MDBENjNENzcgLyogV2ViV2hlZWxFdmVudENvYWxlc2Nlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZCQjcxOUUyNTJENkUzNjAwRDYzRDc3IC8qIFdlYldoZWVsRXZlbnRD
b2FsZXNjZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2hlZWxFdmVudENvYWxlc2Nlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwODU2RTE4N0NFMEE5MDA3ODBEODYgLyogX19p
bml0X18ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBfX2luaXRfXy5weTsgcGF0aCA9IHdlYmtpdC9f
X2luaXRfXy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDg1NkYxODdDRTBB
OTAwNzgwRDg2IC8qIG1lc3NhZ2VzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gbWVzc2FnZXMucHk7
IHBhdGggPSB3ZWJraXQvbWVzc2FnZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGQzA4NTcwMTg3Q0UwQTkwMDc4MEQ4NiAvKiBtb2RlbC5weSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9
IG1vZGVsLnB5OyBwYXRoID0gd2Via2l0L21vZGVsLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODg5OCw2ICs4OTAwLDggQEAKIAkJCQk1MUQxMjQyQjFFNkQ0MUJDMDAyQjI4MjAg
LyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmggKi8sCiAJCQkJNTFEMTI0MjExRTZEMzQ5QTAw
MkIyODIwIC8qIFdlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgKi8sCiAJCQkJNTFEMTI0MjIxRTZE
MzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZVRhc2tQcm94eS5oICovLAorCQkJCTBGQkI3MTlE
MjUyRDZFMzUwMEQ2M0Q3NyAvKiBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcCAqLywKKwkJCQkw
RkJCNzE5RTI1MkQ2RTM2MDBENjNENzcgLyogV2ViV2hlZWxFdmVudENvYWxlc2Nlci5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBXZWJQYWdlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYldoZWVsRXZlbnRD
b2FsZXNjZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViV2hlZWxF
dmVudENvYWxlc2Nlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBiYTc0ODU3ZWIzMTcxNDY0NmFmZWE5ZTQy
ZGQwYjgxZTY0NWJkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwCkBAIC0wLDAgKzEsMTYxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYldoZWVsRXZlbnRD
b2FsZXNjZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJX
aGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiV2ViRXZlbnRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gUmVwcmVz
ZW50cyB0aGUgbnVtYmVyIG9mIHdoZWVsIGV2ZW50cyB3ZSBjYW4gaG9sZCBpbiB0aGUgcXVldWUg
YmVmb3JlIHdlIHN0YXJ0IHB1c2hpbmcgdGhlbSBwcmVlbXB0aXZlbHkuCitjb25zdGV4cHIgdW5z
aWduZWQgd2hlZWxFdmVudFF1ZXVlU2l6ZVRocmVzaG9sZCA9IDEwOworCitzdGF0aWMgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdlYldoZWVs
RXZlbnQmIHdoZWVsRXZlbnQpCit7CisgICAgdHMgPDwgcGxhdGZvcm0od2hlZWxFdmVudCk7Cisg
ICAgcmV0dXJuIHRzOworfQorCitib29sIFdlYldoZWVsRXZlbnRDb2FsZXNjZXI6OmNhbkNvYWxl
c2NlKGNvbnN0IFdlYldoZWVsRXZlbnQmIGEsIGNvbnN0IFdlYldoZWVsRXZlbnQmIGIpCit7Cisg
ICAgaWYgKGEucG9zaXRpb24oKSAhPSBiLnBvc2l0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoYS5nbG9iYWxQb3NpdGlvbigpICE9IGIuZ2xvYmFsUG9zaXRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhLm1vZGlmaWVycygpICE9IGIubW9kaWZpZXJz
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5ncmFudWxhcml0eSgpICE9IGIu
Z3JhbnVsYXJpdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIGlmIChhLnBoYXNlKCkgIT0gYi5waGFzZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKGEubW9tZW50dW1QaGFzZSgpICE9IGIubW9tZW50dW1QaGFzZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpICE9
IGIuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKKworICAgIHJldHVybiB0cnVlOworfQorCitXZWJXaGVlbEV2ZW50IFdlYldoZWVsRXZl
bnRDb2FsZXNjZXI6OmNvYWxlc2NlKGNvbnN0IFdlYldoZWVsRXZlbnQmIGEsIGNvbnN0IFdlYldo
ZWVsRXZlbnQmIGIpCit7CisgICAgQVNTRVJUKGNhbkNvYWxlc2NlKGEsIGIpKTsKKworICAgIGF1
dG8gbWVyZ2VkRGVsdGEgPSBhLmRlbHRhKCkgKyBiLmRlbHRhKCk7CisgICAgYXV0byBtZXJnZWRX
aGVlbFRpY2tzID0gYS53aGVlbFRpY2tzKCkgKyBiLndoZWVsVGlja3MoKTsKKworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIGF1dG8gbWVyZ2VkVW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhID0g
YS51bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEoKSArIGIudW5hY2NlbGVyYXRlZFNjcm9sbGlu
Z0RlbHRhKCk7CisKKyAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIGIu
cG9zaXRpb24oKSwgYi5nbG9iYWxQb3NpdGlvbigpLCBtZXJnZWREZWx0YSwgbWVyZ2VkV2hlZWxU
aWNrcywgYi5ncmFudWxhcml0eSgpLCBiLmRpcmVjdGlvbkludmVydGVkRnJvbURldmljZSgpLCBi
LnBoYXNlKCksIGIubW9tZW50dW1QaGFzZSgpLCBiLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMo
KSwgYi5zY3JvbGxDb3VudCgpLCBtZXJnZWRVbmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEsIGIu
bW9kaWZpZXJzKCksIGIudGltZXN0YW1wKCkpOworI2Vsc2UKKyAgICByZXR1cm4gV2ViV2hlZWxF
dmVudChXZWJFdmVudDo6V2hlZWwsIGIucG9zaXRpb24oKSwgYi5nbG9iYWxQb3NpdGlvbigpLCBt
ZXJnZWREZWx0YSwgbWVyZ2VkV2hlZWxUaWNrcywgYi5ncmFudWxhcml0eSgpLCBiLm1vZGlmaWVy
cygpLCBiLnRpbWVzdGFtcCgpKTsKKyNlbmRpZgorfQorCitib29sIFdlYldoZWVsRXZlbnRDb2Fs
ZXNjZXI6OnNob3VsZERpc3BhdGNoRXZlbnROb3coY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQp
IGNvbnN0Cit7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIC8vIERvbid0IHF1ZXVlIGV2ZW50cyBy
ZXByZXNlbnRpbmcgYSBub24tdHJpdmlhbCBzY3JvbGxpbmcgcGhhc2UgdG8KKyAgICAvLyBhdm9p
ZCBoYXZpbmcgdGhlbSB0cmFwcGVkIGluIHRoZSBxdWV1ZSwgcG90ZW50aWFsbHkgcHJldmVudGlu
ZyBhCisgICAgLy8gc2Nyb2xsaW5nIHNlc3Npb24gdG8gYmVnaW5uaW5nIG9yIGVuZCBjb3JyZWN0
bHkuCisgICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRlZCBieSBwbGF0Zm9ybXMgd2hvc2UgV2ViV2hl
ZWxFdmVudCBoYXMgdGhpcyBwaGFzZQorICAgIC8vIGluZm9ybWF0aW9uIChDb2NvYSBhbmQgR1RL
KykgYnV0IENvY29hIHdhcyBmaW5lIHdpdGhvdXQgaXQuCisgICAgaWYgKGV2ZW50LnBoYXNlKCkg
PT0gV2ViV2hlZWxFdmVudDo6UGhhc2U6OlBoYXNlTm9uZQorICAgICAgICB8fCBldmVudC5waGFz
ZSgpID09IFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZUNoYW5nZWQKKyAgICAgICAgfHwgZXZl
bnQubW9tZW50dW1QaGFzZSgpID09IFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZU5vbmUKKyAg
ICAgICAgfHwgZXZlbnQubW9tZW50dW1QaGFzZSgpID09IFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQ
aGFzZUNoYW5nZWQpCisgICAgICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oZXZlbnQpOworI2VuZGlmCisKKyAgICByZXR1cm4gbV93aGVlbEV2ZW50UXVldWUuc2l6ZSgp
ID49IHdoZWVsRXZlbnRRdWV1ZVNpemVUaHJlc2hvbGQ7Cit9CisKK09wdGlvbmFsPFdlYldoZWVs
RXZlbnQ+IFdlYldoZWVsRXZlbnRDb2FsZXNjZXI6Om5leHRFdmVudFRvRGlzcGF0Y2goKQorewor
ICAgIGlmIChtX3doZWVsRXZlbnRRdWV1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBhdXRvIGNvYWxlc2NlZEV2ZW50ID0gbV93aGVlbEV2ZW50UXVldWUu
dGFrZUZpcnN0KCk7CisKKyAgICBhdXRvIGNvYWxlc2NlZFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxD
b2FsZXNjZWRFdmVudFNlcXVlbmNlPigpOworICAgIGNvYWxlc2NlZFNlcXVlbmNlLT5hcHBlbmQo
Y29hbGVzY2VkRXZlbnQpOworCisgICAgV2ViV2hlZWxFdmVudCBjb2FsZXNjZWRXZWJFdmVudCA9
IGNvYWxlc2NlZEV2ZW50OworCisgICAgd2hpbGUgKCFtX3doZWVsRXZlbnRRdWV1ZS5pc0VtcHR5
KCkgJiYgY2FuQ29hbGVzY2UoY29hbGVzY2VkV2ViRXZlbnQsIG1fd2hlZWxFdmVudFF1ZXVlLmZp
cnN0KCkpKSB7CisgICAgICAgIGF1dG8gZmlyc3RFdmVudCA9IG1fd2hlZWxFdmVudFF1ZXVlLnRh
a2VGaXJzdCgpOworICAgICAgICBjb2FsZXNjZWRTZXF1ZW5jZS0+YXBwZW5kKGZpcnN0RXZlbnQp
OworICAgICAgICBjb2FsZXNjZWRXZWJFdmVudCA9IGNvYWxlc2NlKGNvYWxlc2NlZFdlYkV2ZW50
LCBmaXJzdEV2ZW50KTsKKyAgICB9CisKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKGNvYWxl
c2NlZFNlcXVlbmNlLT5zaXplKCkgPiAxKQorICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxF
dmVudHMsIHN0cmVhbSA8PCAiV2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6d2hlZWxFdmVudFdpdGhD
b2FsZXNjaW5nIGNvYWxzZXNjZWQgIiA8PCAqY29hbGVzY2VkU2VxdWVuY2UgPDwgIiBpbnRvICIg
PDwgY29hbGVzY2VkV2ViRXZlbnQpOworI2VuZGlmCisKKyAgICBtX2V2ZW50c0JlaW5nUHJvY2Vz
c2VkLmFwcGVuZChXVEZNb3ZlKGNvYWxlc2NlZFNlcXVlbmNlKSk7CisgICAgcmV0dXJuIGNvYWxl
c2NlZFdlYkV2ZW50OworfQorCitib29sIFdlYldoZWVsRXZlbnRDb2FsZXNjZXI6OnNob3VsZERp
c3BhdGNoRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCit7CisgICAgTE9H
X1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRzLCBzdHJlYW0gPDwgIldlYldoZWVsRXZlbnRDb2FsZXNj
ZXI6OnNob3VsZERpc3BhdGNoRXZlbnQgIiA8PCBldmVudCA8PCAiICgiIDw8IG1fd2hlZWxFdmVu
dFF1ZXVlLnNpemUoKSA8PCAiIGV2ZW50cyBpbiB0aGUgcXVldWUsICIgPDwgbV9ldmVudHNCZWlu
Z1Byb2Nlc3NlZC5zaXplKCkgPDwgIiBldmVudCBzZXF1ZW5jZXMgYmVpbmcgcHJvY2Vzc2VkKSIp
OworCisgICAgbV93aGVlbEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKKworICAgIGlmICghbV9l
dmVudHNCZWluZ1Byb2Nlc3NlZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFzaG91bGREaXNw
YXRjaEV2ZW50Tm93KG1fd2hlZWxFdmVudFF1ZXVlLmxhc3QoKSkpIHsKKyAgICAgICAgICAgIExP
R19XSVRIX1NUUkVBTShXaGVlbEV2ZW50cywgc3RyZWFtIDw8ICJXZWJXaGVlbEV2ZW50Q29hbGVz
Y2VyOjpzaG91bGREaXNwYXRjaEV2ZW50IC0gICIgPDwgbV93aGVlbEV2ZW50UXVldWUuc2l6ZSgp
IDw8ICIgZXZlbnRzIHF1ZXVlZDsgbm90IGRpc3BhdGNoaW5nIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgLy8gVGhlIHF1ZXVlIGhhcyB0b28gbWFueSB3
aGVlbCBldmVudHMsIHNvIHB1c2ggYSBuZXcgZXZlbnQuCisgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGxvZ2ljIGlzIGNvbmZ1c2luZywgYW5kIHBvc3NpYmx5IG5vdCBuZWNlc3NhcnkuCisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK05hdGl2ZVdlYldoZWVsRXZlbnQgV2ViV2hlZWxFdmVu
dENvYWxlc2Nlcjo6dGFrZU9sZGVzdEV2ZW50QmVpbmdQcm9jZXNzZWQoKQoreworICAgIEFTU0VS
VChoYXNFdmVudHNCZWluZ1Byb2Nlc3NlZCgpKTsKKyAgICBhdXRvIG9sZGVzdFNlcXVlbmNlID0g
bV9ldmVudHNCZWluZ1Byb2Nlc3NlZC50YWtlRmlyc3QoKTsKKyAgICByZXR1cm4gb2xkZXN0U2Vx
dWVuY2UtPmxhc3QoKTsKK30KKwordm9pZCBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOjpjbGVhcigp
Cit7CisgICAgbV93aGVlbEV2ZW50UXVldWUuY2xlYXIoKTsKKyAgICBtX2V2ZW50c0JlaW5nUHJv
Y2Vzc2VkLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViV2hlZWxFdmVudENvYWxlc2Nl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU5ZWRkZjQyMmNhOGRlYjYyOGQ4Mjc0ZmM0ZGExNWJhNzI5Mjk3NTEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJX
aGVlbEV2ZW50Q29hbGVzY2VyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICAvLyBJZiB0aGlzIHJldHVybnMgdHJ1ZSwgdXNlIG5l
eHRFdmVudFRvRGlzcGF0Y2goKSB0byBnZXQgdGhlIGV2ZW50IHRvIGRpc3BhdGNoLgorICAgIGJv
b2wgc2hvdWxkRGlzcGF0Y2hFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jik7CisgICAg
T3B0aW9uYWw8V2ViV2hlZWxFdmVudD4gbmV4dEV2ZW50VG9EaXNwYXRjaCgpOworICAgIAorICAg
IE5hdGl2ZVdlYldoZWVsRXZlbnQgdGFrZU9sZGVzdEV2ZW50QmVpbmdQcm9jZXNzZWQoKTsKKwor
ICAgIGJvb2wgaGFzRXZlbnRzQmVpbmdQcm9jZXNzZWQoKSBjb25zdCB7IHJldHVybiAhbV9ldmVu
dHNCZWluZ1Byb2Nlc3NlZC5pc0VtcHR5KCk7IH0KKyAgICAKKyAgICB2b2lkIGNsZWFyKCk7CisK
K3ByaXZhdGU6CisgICAgdXNpbmcgQ29hbGVzY2VkRXZlbnRTZXF1ZW5jZSA9IFZlY3RvcjxOYXRp
dmVXZWJXaGVlbEV2ZW50PjsKKworICAgIHN0YXRpYyBib29sIGNhbkNvYWxlc2NlKGNvbnN0IFdl
YldoZWVsRXZlbnQmLCBjb25zdCBXZWJXaGVlbEV2ZW50Jik7CisgICAgc3RhdGljIFdlYldoZWVs
RXZlbnQgY29hbGVzY2UoY29uc3QgV2ViV2hlZWxFdmVudCYsIGNvbnN0IFdlYldoZWVsRXZlbnQm
KTsKKworICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudE5vdyhjb25zdCBXZWJXaGVlbEV2ZW50
JikgY29uc3Q7CisKKyAgICBEZXF1ZTxOYXRpdmVXZWJXaGVlbEV2ZW50LCAyPiBtX3doZWVsRXZl
bnRRdWV1ZTsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8Q29hbGVzY2VkRXZlbnRTZXF1ZW5j
ZT4+IG1fZXZlbnRzQmVpbmdQcm9jZXNzZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="commit-queue"
          id="427060"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410960</attachid>
            <date>2020-10-09 12:09:10 -0700</date>
            <delta_ts>2020-10-09 13:23:57 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-217523-20201009120909.patch</filename>
            <type>text/plain</type>
            <size>28698</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBiMmFhZWUzZjRlOTk4
ZTZkNzY3ODliM2Y4NmQ4ZjAyY2M2ZGQwNi4uMmZiMmVmY2JiOGQyOTM1Nzc4OWFjZWIzMGQ1NDM2
ZTJlMTA3MDY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTEwLTA5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHdo
ZWVsIGV2ZW50IGNvYWxlc2NpbmcgaW50byBpdHMgb3duIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIEV4cG9ydCB0aGUgVGV4dFN0cmVhbSBvdXRwdXR0
ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKwogMjAyMC0x
MC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBpbXBs
ZW1lbnRhdGlvbiBmb3IgQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUncyBjdXJyZW50RnJhbWUgLyBj
dXJyZW50VGltZSAvIHNhbXBsZVJhdGUgYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5ZDJhM2I5NWIx
YWVlNDk2ZTVlNDBiNGQyNzU3YTM0ZGFkMDdmZTk5Li44ZjM3ZWIxZGNlMDRiODc5Mzg1MTM2NGQ0
ZDYwODQ2NTUzYmMyYjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTEwLTA5ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9y
IHdoZWVsIGV2ZW50IGNvYWxlc2NpbmcgaW50byBpdHMgb3duIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1MjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBTYW0gV2VpbmlnLgorICAgICAgICAKKyAgICAgICAgV2ViUGFnZVByb3h5IGhhZCBz
b21lIGNvbmZ1c2luZyBjb2RlIGZvciBjb2FsZXNjaW5nIHdoZWVsIGV2ZW50cywgZmlyc3QgYWRk
ZWQgaW4gcjExNjQ2Ni4KKyAgICAgICAgVG8gcHJlcGFyZSB0aGlzIGNvZGUgZm9yIHBhcnRpYWwg
cmUtdXNlIGluIGFub3RoZXIgcGxhY2UsIGZhY3RvciBpdCBpbnRvIGl0cyBvd24gY2xhc3MsIFdl
YldoZWVsRXZlbnRDb2FsZXNjZXIuCisKKyAgICAgICAgV2ViV2hlZWxFdmVudENvYWxlc2NlciBo
b2xkcyBhIHF1ZXVlIG9mIHBlbmRpbmcgTmF0aXZlV2ViV2hlZWxFdmVudHMsIGFuZCBhIHF1ZXVl
IG9mIHNlcXVlbmNlcyBvZgorICAgICAgICBOYXRpdmVXZWJXaGVlbEV2ZW50cywgd2hlcmUgZWFj
aCBzZXF1ZW5jZSBoYXMgYmVlbiBjb2FsZXNjZWQgaW50byBhIHNpbmdsZSBXZWJXZWVsRXZlbnQg
d2hpY2ggd2FzCisgICAgICAgIHNlbnQgdG8gdGhlIFdlYiBQcm9jZXNzLgorCisgICAgICAgIFdo
ZW4gdGhlIFVJIHByb2Nlc3MgcmVjZWl2ZXMgYSBtZXNzYWdlIGJhY2sgZnJvbSB0aGUgV2ViIFBy
b2Nlc3MsIGl0IGNhbGxzIHRha2VPbGRlc3RFdmVudEJlaW5nUHJvY2Vzc2VkKCkKKyAgICAgICAg
d2hpY2ggcmVtb3ZlcyB0aGUgZmlyc3Qgc2VxdWVuY2UgZnJvbSBtX2V2ZW50c0JlaW5nUHJvY2Vz
c2VkLiBUaGlzIGNvZGUgaGFzIHRvIHRyYWNrIE5hdGl2ZVdlYldoZWVsRXZlbnRzLCBiZWNhdXNl
CisgICAgICAgIHdlIG5lZWQgdG8gZGlnIHRoZSBOU0V2ZW50IG91dCBvZiB0aGUgTmF0aXZlV2Vi
V2hlZWxFdmVudCBhdCB0aGlzIHN0YWdlLgorCisgICAgICAgICogUGxhdGZvcm0vTG9nZ2luZy5o
OiBBZGQgYSBXaGVlbEV2ZW50cyBsb2cgY2hhbm5lbC4KKyAgICAgICAgKiBTaGFyZWQvTmF0aXZl
V2ViV2hlZWxFdmVudC5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhh
bmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndoZWVsRXZl
bnRDb2FsZXNjZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJv
Y2Vzc0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OmNhbkNvYWxlc2NlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6Y29hbGVzY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0Ojpjb2Fs
ZXNjZWRXaGVlbEV2ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpwcm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNob3VsZFByb2Nlc3NXaGVlbEV2ZW50Tm93IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6b3Bl
cmF0b3I8PCk6CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnRDb2FsZXNjZXI6OmNhbkNv
YWxlc2NlKToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6Y29hbGVz
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOjpzaG91bGREaXNw
YXRjaEV2ZW50Tm93IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudENvYWxl
c2Nlcjo6bmV4dEV2ZW50VG9EaXNwYXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZl
bnRDb2FsZXNjZXI6OnNob3VsZERpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJX
aGVlbEV2ZW50Q29hbGVzY2VyOjp0YWtlT2xkZXN0RXZlbnRCZWluZ1Byb2Nlc3NlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnRDb2FsZXNjZXI6OmNsZWFyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6aGFzRXZlbnRzQmVpbmdQcm9jZXNz
ZWQgY29uc3QpOgorCiAyMDIwLTEwLTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlZHVuZGFudCByZW5kZXJpbmcgdXBkYXRlcyBjYW4gYmUgc2No
ZWR1bGVkIGZyb20gaW5zaWRlIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGUwOWE2YTZiOTIzZmEwMTAy
MTE4NGU1Mjc1MzQ2NWY0ZjIyM2NmNmMuLmM0OGVkYjQ1NjY3Mzc1YzgzNzlhYjBlNTJlNTI0MDFk
Y2NlZDRkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCkBAIC0yNzAsNyArMjcwLDcgQEAgaW5saW5lIEZsb2F0UG9pbnQgUGxhdGZvcm1XaGVlbEV2
ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShLSU5FVElDX1ND
Uk9MTElORykKIAotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwotV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHMpOworV0VCQ09SRV9F
WFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHMpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDcy
OTMxMzIzOWQ1ZDVhMWI5YWYwOGFkN2Y0NTRkNmZiOTRlYWFkNjAuLjMyNWE0NmZmYzU5OTQxOTQx
MTI0OTY4NmRmN2FjNTJlYmE5YmExMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0x
MDAsNiArMTAwLDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgTShWaXNpYmxlUmVjdHMpIFwKICAgICBN
KFdlYkdMKSBcCiAgICAgTShXZWJSVEMpIFwKKyAgICBNKFdoZWVsRXZlbnRzKSBcCiAKIFdFQktJ
VDJfTE9HX0NIQU5ORUxTKERFQ0xBUkVfTE9HX0NIQU5ORUwpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL05hdGl2ZVdlYldoZWVsRXZlbnQuaAppbmRleCBkZjQyNDJiMDczOWM4MzhiNjRjN2M3MWYy
NGUxZmUwNjliNGY0MDA1Li5hYTljYjBlNDQ4YzY4NDYyOWNjNTczYWFmZDI3MGI5ZTUzNjJkNTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXRpdmVXZWJXaGVlbEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF0aXZlV2ViV2hlZWxFdmVudC5oCkBAIC0zMCw2
ICszMCw3IEBACiAjaWYgVVNFKEFQUEtJVCkKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiBP
QkpDX0NMQVNTIE5TVmlldzsKK09CSkNfQ0xBU1MgTlNFdmVudDsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggYmMyYzQ5NDNhZWJlNWNjYWY4Yjk0N2VkNzFhZTAz
MGY0ZjMyZDk4My4uNzFiNDUyNDMzZGMyMWQzM2Q1OGVmNzIxMTI5NThhMzZiYmY1NzkyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CkBAIC02NjcsNiArNjY3LDcgQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VP
dmVybGF5LmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5j
cHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVW5kb1N0ZXAuY3BwCitXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViV2hlZWxF
dmVudENvYWxlc2Nlci5jcHAKIAogV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5jcHAKIFdlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDA4ZGZhYjllYzI4Mzg4NGUxZWE0
ZTA4MGIyMDVlM2U5M2E2YmQ0NGYuLjQ3YTNiYTBkZWNkYmIwZTY2YTVjN2RkYjQ2ZjBiMThmOWQz
NTEyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTM3
LDYgKzEzNyw3IEBACiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVmlld0RpZE1v
dmVUb1dpbmRvd09ic2VydmVyLmgiCisjaW5jbHVkZSAiV2ViV2hlZWxFdmVudENvYWxlc2Nlci5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FkQ2xp
Y2tBdHRyaWJ1dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KQEAgLTI2
MTMsNzAgKzI2MTQsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmx1c2hQZW5kaW5nTW91c2VFdmVu
dENhbGxiYWNrcygpCiAgICAgbV9jYWxsYmFja0hhbmRsZXJzQWZ0ZXJQcm9jZXNzaW5nUGVuZGlu
Z01vdXNlRXZlbnRzLmNsZWFyKCk7CiB9CiAKLSNpZiBNRVJHRV9XSEVFTF9FVkVOVFMKLXN0YXRp
YyBib29sIGNhbkNvYWxlc2NlKGNvbnN0IFdlYldoZWVsRXZlbnQmIGEsIGNvbnN0IFdlYldoZWVs
RXZlbnQmIGIpCi17Ci0gICAgaWYgKGEucG9zaXRpb24oKSAhPSBiLnBvc2l0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5nbG9iYWxQb3NpdGlvbigpICE9IGIuZ2xvYmFs
UG9zaXRpb24oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLm1vZGlmaWVycygp
ICE9IGIubW9kaWZpZXJzKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5ncmFu
dWxhcml0eSgpICE9IGIuZ3JhbnVsYXJpdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChhLnBoYXNlKCkgIT0gYi5waGFzZSgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEubW9tZW50dW1QaGFzZSgpICE9IGIubW9tZW50dW1Q
aGFzZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGEuaGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhcygpICE9IGIuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgV2Vi
V2hlZWxFdmVudCBjb2FsZXNjZShjb25zdCBXZWJXaGVlbEV2ZW50JiBhLCBjb25zdCBXZWJXaGVl
bEV2ZW50JiBiKQotewotICAgIEFTU0VSVChjYW5Db2FsZXNjZShhLCBiKSk7Ci0KLSAgICBGbG9h
dFNpemUgbWVyZ2VkRGVsdGEgPSBhLmRlbHRhKCkgKyBiLmRlbHRhKCk7Ci0gICAgRmxvYXRTaXpl
IG1lcmdlZFdoZWVsVGlja3MgPSBhLndoZWVsVGlja3MoKSArIGIud2hlZWxUaWNrcygpOwotCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgRmxvYXRTaXplIG1lcmdlZFVuYWNjZWxlcmF0ZWRTY3Jv
bGxpbmdEZWx0YSA9IGEudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhKCkgKyBiLnVuYWNjZWxl
cmF0ZWRTY3JvbGxpbmdEZWx0YSgpOwotCi0gICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZl
bnQ6OldoZWVsLCBiLnBvc2l0aW9uKCksIGIuZ2xvYmFsUG9zaXRpb24oKSwgbWVyZ2VkRGVsdGEs
IG1lcmdlZFdoZWVsVGlja3MsIGIuZ3JhbnVsYXJpdHkoKSwgYi5kaXJlY3Rpb25JbnZlcnRlZEZy
b21EZXZpY2UoKSwgYi5waGFzZSgpLCBiLm1vbWVudHVtUGhhc2UoKSwgYi5oYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzKCksIGIuc2Nyb2xsQ291bnQoKSwgbWVyZ2VkVW5hY2NlbGVyYXRlZFNjcm9s
bGluZ0RlbHRhLCBiLm1vZGlmaWVycygpLCBiLnRpbWVzdGFtcCgpKTsKLSNlbHNlCi0gICAgcmV0
dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVsLCBiLnBvc2l0aW9uKCksIGIuZ2xvYmFs
UG9zaXRpb24oKSwgbWVyZ2VkRGVsdGEsIG1lcmdlZFdoZWVsVGlja3MsIGIuZ3JhbnVsYXJpdHko
KSwgYi5tb2RpZmllcnMoKSwgYi50aW1lc3RhbXAoKSk7Ci0jZW5kaWYKLX0KLSNlbmRpZiAvLyBN
RVJHRV9XSEVFTF9FVkVOVFMKLQotc3RhdGljIFdlYldoZWVsRXZlbnQgY29hbGVzY2VkV2hlZWxF
dmVudChEZXF1ZTxOYXRpdmVXZWJXaGVlbEV2ZW50PiYgcXVldWUsIFZlY3RvcjxOYXRpdmVXZWJX
aGVlbEV2ZW50PiYgY29hbGVzY2VkRXZlbnRzKQotewotICAgIEFTU0VSVCghcXVldWUuaXNFbXB0
eSgpKTsKLSAgICBBU1NFUlQoY29hbGVzY2VkRXZlbnRzLmlzRW1wdHkoKSk7Ci0KLSNpZiBNRVJH
RV9XSEVFTF9FVkVOVFMKLSAgICBOYXRpdmVXZWJXaGVlbEV2ZW50IGZpcnN0RXZlbnQgPSBxdWV1
ZS50YWtlRmlyc3QoKTsKLSAgICBjb2FsZXNjZWRFdmVudHMuYXBwZW5kKGZpcnN0RXZlbnQpOwot
Ci0gICAgV2ViV2hlZWxFdmVudCBldmVudCA9IGZpcnN0RXZlbnQ7Ci0gICAgd2hpbGUgKCFxdWV1
ZS5pc0VtcHR5KCkgJiYgY2FuQ29hbGVzY2UoZXZlbnQsIHF1ZXVlLmZpcnN0KCkpKSB7Ci0gICAg
ICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQgZmlyc3RFdmVudCA9IHF1ZXVlLnRha2VGaXJzdCgpOwot
ICAgICAgICBjb2FsZXNjZWRFdmVudHMuYXBwZW5kKGZpcnN0RXZlbnQpOwotICAgICAgICBldmVu
dCA9IGNvYWxlc2NlKGV2ZW50LCBmaXJzdEV2ZW50KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZXZl
bnQ7Ci0jZWxzZQotICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKQotICAgICAgICBjb2FsZXNj
ZWRFdmVudHMuYXBwZW5kKHF1ZXVlLnRha2VGaXJzdCgpKTsKLSAgICByZXR1cm4gY29hbGVzY2Vk
RXZlbnRzLmxhc3QoKTsKLSNlbmRpZgotfQotCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlV2hl
ZWxFdmVudChjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkKIHsKICNpZiBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShDT0NPQSkKQEAgLTI2ODksMzAgKzI2MjYsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hl
ZWxFdmVudCYgZXZlbnQpCiAKICAgICBjbG9zZU92ZXJsYXllZFZpZXdzKCk7CiAKLSAgICBpZiAo
IW1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1f
d2hlZWxFdmVudFF1ZXVlLmFwcGVuZChldmVudCk7Ci0gICAgICAgIGlmICghc2hvdWxkUHJvY2Vz
c1doZWVsRXZlbnROb3coZXZlbnQpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAvLyBU
aGUgcXVldWUgaGFzIHRvbyBtYW55IHdoZWVsIGV2ZW50cywgc28gcHVzaCBhIG5ldyBldmVudC4K
LSAgICB9Ci0KLSAgICBpZiAoIW1fd2hlZWxFdmVudFF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAg
ICBwcm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZlbnQoKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlm
ICh3aGVlbEV2ZW50Q29hbGVzY2VyKCkuc2hvdWxkRGlzcGF0Y2hFdmVudChldmVudCkpIHsKKyAg
ICAgICAgYXV0byBldmVudCA9IHdoZWVsRXZlbnRDb2FsZXNjZXIoKS5uZXh0RXZlbnRUb0Rpc3Bh
dGNoKCk7CisgICAgICAgIHNlbmRXaGVlbEV2ZW50KCpldmVudCk7CiAgICAgfQotCi0gICAgYXV0
byBjb2FsZXNjZWRXaGVlbEV2ZW50ID0gbWFrZVVuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxF
dmVudD4+KCk7Ci0gICAgY29hbGVzY2VkV2hlZWxFdmVudC0+YXBwZW5kKGV2ZW50KTsKLSAgICBt
X2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzLmFwcGVuZChXVEZNb3ZlKGNvYWxlc2NlZFdo
ZWVsRXZlbnQpKTsKLSAgICBzZW5kV2hlZWxFdmVudChldmVudCk7Ci19Ci0KLXZvaWQgV2ViUGFn
ZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZFdoZWVsRXZlbnQoKQotewotICAgIGF1dG8gbmV4dENv
YWxlc2NlZEV2ZW50ID0gbWFrZVVuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7
Ci0gICAgV2ViV2hlZWxFdmVudCBuZXh0V2hlZWxFdmVudCA9IGNvYWxlc2NlZFdoZWVsRXZlbnQo
bV93aGVlbEV2ZW50UXVldWUsICpuZXh0Q29hbGVzY2VkRXZlbnQuZ2V0KCkpOwotICAgIG1fY3Vy
cmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuYXBwZW5kKFdURk1vdmUobmV4dENvYWxlc2NlZEV2
ZW50KSk7Ci0gICAgc2VuZFdoZWVsRXZlbnQobmV4dFdoZWVsRXZlbnQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VuZFdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpCkBA
IC0yNzM2LDI1ICsyNjUzLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kV2hlZWxFdmVudChj
b25zdCBXZWJXaGVlbEV2ZW50JiBldmVudCkKICAgICBtX3Byb2Nlc3MtPmlzUmVzcG9uc2l2ZVdp
dGhMYXp5U3RvcCgpOwogfQogCi1ib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkUHJvY2Vzc1doZWVs
RXZlbnROb3coY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpIGNvbnN0CitXZWJXaGVlbEV2ZW50
Q29hbGVzY2VyJiBXZWJQYWdlUHJveHk6OndoZWVsRXZlbnRDb2FsZXNjZXIoKQogewotI2lmIFBM
QVRGT1JNKEdUSykKLSAgICAvLyBEb24ndCBxdWV1ZSBldmVudHMgcmVwcmVzZW50aW5nIGEgbm9u
LXRyaXZpYWwgc2Nyb2xsaW5nIHBoYXNlIHRvCi0gICAgLy8gYXZvaWQgaGF2aW5nIHRoZW0gdHJh
cHBlZCBpbiB0aGUgcXVldWUsIHBvdGVudGlhbGx5IHByZXZlbnRpbmcgYQotICAgIC8vIHNjcm9s
bGluZyBzZXNzaW9uIHRvIGJlZ2lubmluZyBvciBlbmQgY29ycmVjdGx5LgotICAgIC8vIFRoaXMg
aXMgb25seSBuZWVkZWQgYnkgcGxhdGZvcm1zIHdob3NlIFdlYldoZWVsRXZlbnQgaGFzIHRoaXMg
cGhhc2UKLSAgICAvLyBpbmZvcm1hdGlvbiAoQ29jb2EgYW5kIEdUSyspIGJ1dCBDb2NvYSB3YXMg
ZmluZSB3aXRob3V0IGl0LgotICAgIGlmIChldmVudC5waGFzZSgpID09IFdlYldoZWVsRXZlbnQ6
OlBoYXNlOjpQaGFzZU5vbmUKLSAgICAgICAgfHwgZXZlbnQucGhhc2UoKSA9PSBXZWJXaGVlbEV2
ZW50OjpQaGFzZTo6UGhhc2VDaGFuZ2VkCi0gICAgICAgIHx8IGV2ZW50Lm1vbWVudHVtUGhhc2Uo
KSA9PSBXZWJXaGVlbEV2ZW50OjpQaGFzZTo6UGhhc2VOb25lCi0gICAgICAgIHx8IGV2ZW50Lm1v
bWVudHVtUGhhc2UoKSA9PSBXZWJXaGVlbEV2ZW50OjpQaGFzZTo6UGhhc2VDaGFuZ2VkKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKLSNlbmRp
ZgotICAgIGlmIChtX3doZWVsRXZlbnRRdWV1ZS5zaXplKCkgPj0gd2hlZWxFdmVudFF1ZXVlU2l6
ZVRocmVzaG9sZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghbV93aGVlbEV2ZW50Q29hbGVzY2VyKQorICAgICAgICBtX3doZWVsRXZlbnRDb2FsZXNj
ZXIgPSBtYWtlVW5pcXVlPFdlYldoZWVsRXZlbnRDb2FsZXNjZXI+KCk7CisKKyAgICByZXR1cm4g
Km1fd2hlZWxFdmVudENvYWxlc2NlcjsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6Omhhc1F1ZXVl
ZEtleUV2ZW50KCkgY29uc3QKQEAgLTY5ODQsNyArNjg4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogCiAg
ICAgICAgIC8vIFJldGlyZSB0aGUgbGFzdCBzZW50IGV2ZW50IG5vdyB0aGF0IFdlYlByb2Nlc3Mg
aXMgZG9uZSBoYW5kbGluZyBpdC4KICAgICAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsICFt
X21vdXNlRXZlbnRRdWV1ZS5pc0VtcHR5KCkpOwotICAgICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50
IGV2ZW50ID0gbV9tb3VzZUV2ZW50UXVldWUudGFrZUZpcnN0KCk7CisgICAgICAgIGF1dG8gZXZl
bnQgPSBtX21vdXNlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKICAgICAgICAgTUVTU0FHRV9DSEVD
SyhtX3Byb2Nlc3MsIHR5cGUgPT0gZXZlbnQudHlwZSgpKTsKIAogICAgICAgICBpZiAoIW1fbW91
c2VFdmVudFF1ZXVlLmlzRW1wdHkoKSkgewpAQCAtNjk5NSwyMyArNjg5OSwyMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFu
ZGxlZCkKICAgICAgICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+bW91c2VFdmVudHNGbHVz
aGVkRm9yUGFnZSgqdGhpcyk7CiAgICAgICAgICAgICBkaWRGaW5pc2hQcm9jZXNzaW5nQWxsUGVu
ZGluZ01vdXNlRXZlbnRzKCk7CiAgICAgICAgIH0KLQogICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBjYXNlIFdlYkV2ZW50OjpXaGVlbDogewotICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJv
Y2VzcywgIW1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuaXNFbXB0eSgpKTsKLQotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPE5hdGl2ZVdlYldoZWVsRXZlbnQ+PiBvbGRlc3RD
b2FsZXNjZWRFdmVudCA9IG1fY3VycmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMudGFrZUZpcnN0
KCk7CisgICAgICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCB3aGVlbEV2ZW50Q29hbGVzY2Vy
KCkuaGFzRXZlbnRzQmVpbmdQcm9jZXNzZWQoKSk7CisgICAgICAgIGF1dG8gb2xkZXN0UHJvY2Vz
c2VkRXZlbnQgPSB3aGVlbEV2ZW50Q29hbGVzY2VyKCkudGFrZU9sZGVzdEV2ZW50QmVpbmdQcm9j
ZXNzZWQoKTsKIAogICAgICAgICAvLyBGSVhNRTogRGlzcGF0Y2ggYWRkaXRpb25hbCBldmVudHMg
dG8gdGhlIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQgY2xpZW50IGZ1bmN0aW9uLgogICAgICAgICBp
ZiAoIWhhbmRsZWQpIHsKLSAgICAgICAgICAgIG1fdWlDbGllbnQtPmRpZE5vdEhhbmRsZVdoZWVs
RXZlbnQodGhpcywgb2xkZXN0Q29hbGVzY2VkRXZlbnQtPmxhc3QoKSk7Ci0gICAgICAgICAgICBw
YWdlQ2xpZW50KCkud2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUob2xkZXN0Q29hbGVz
Y2VkRXZlbnQtPmxhc3QoKSk7CisgICAgICAgICAgICBtX3VpQ2xpZW50LT5kaWROb3RIYW5kbGVX
aGVlbEV2ZW50KHRoaXMsIG9sZGVzdFByb2Nlc3NlZEV2ZW50KTsKKyAgICAgICAgICAgIHBhZ2VD
bGllbnQoKS53aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShvbGRlc3RQcm9jZXNzZWRF
dmVudCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIW1fd2hlZWxFdmVudFF1ZXVlLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCgpOworICAgICAg
ICBpZiAoYXV0byBldmVudFRvU2VuZCA9IHdoZWVsRXZlbnRDb2FsZXNjZXIoKS5uZXh0RXZlbnRU
b0Rpc3BhdGNoKCkpCisgICAgICAgICAgICBzZW5kV2hlZWxFdmVudCgqZXZlbnRUb1NlbmQpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTcwMjIsOCArNjkyNCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVk
KQogICAgICAgICBMT0coS2V5SGFuZGxpbmcsICJXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVu
dDogJXMgKHF1ZXVlIGVtcHR5ICVkKSIsIHdlYktleWJvYXJkRXZlbnRUeXBlU3RyaW5nKHR5cGUp
LCBtX2tleUV2ZW50UXVldWUuaXNFbXB0eSgpKTsKIAogICAgICAgICBNRVNTQUdFX0NIRUNLKG1f
cHJvY2VzcywgIW1fa2V5RXZlbnRRdWV1ZS5pc0VtcHR5KCkpOwotICAgICAgICBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50IGV2ZW50ID0gbV9rZXlFdmVudFF1ZXVlLnRha2VGaXJzdCgpOwotCisgICAg
ICAgIGF1dG8gZXZlbnQgPSBtX2tleUV2ZW50UXVldWUudGFrZUZpcnN0KCk7CiAgICAgICAgIE1F
U1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCB0eXBlID09IGV2ZW50LnR5cGUoKSk7CiAKICNpZiBQTEFU
Rk9STShXSU4pCkBAIC03MDU3LDE1ICs2OTU4LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgIGNhc2Ug
V2ViRXZlbnQ6Okdlc3R1cmVDaGFuZ2U6CiAgICAgY2FzZSBXZWJFdmVudDo6R2VzdHVyZUVuZDog
ewogICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgIW1fZ2VzdHVyZUV2ZW50UXVldWUu
aXNFbXB0eSgpKTsKLSAgICAgICAgTmF0aXZlV2ViR2VzdHVyZUV2ZW50IGV2ZW50ID0gbV9nZXN0
dXJlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKLQorICAgICAgICBhdXRvIGV2ZW50ID0gbV9nZXN0
dXJlRXZlbnRRdWV1ZS50YWtlRmlyc3QoKTsKICAgICAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nl
c3MsIHR5cGUgPT0gZXZlbnQudHlwZSgpKTsKIAogICAgICAgICBpZiAoIWhhbmRsZWQpCiAgICAg
ICAgICAgICBwYWdlQ2xpZW50KCkuZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShl
dmVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBjYXNlIFdlYkV2ZW50OjpUb3VjaFN0YXJ0
OgpAQCAtNzA3OSw4ICs2OTc4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVu
dCh1aW50MzJfdCBvcGFxdWVUeXBlLCBib29sIGhhbmRsZWQpCiAgICAgY2FzZSBXZWJFdmVudDo6
VG91Y2hFbmQ6CiAgICAgY2FzZSBXZWJFdmVudDo6VG91Y2hDYW5jZWw6IHsKICAgICAgICAgTUVT
U0FHRV9DSEVDSyhtX3Byb2Nlc3MsICFtX3RvdWNoRXZlbnRRdWV1ZS5pc0VtcHR5KCkpOwotICAg
ICAgICBRdWV1ZWRUb3VjaEV2ZW50cyBxdWV1ZWRFdmVudHMgPSBtX3RvdWNoRXZlbnRRdWV1ZS50
YWtlRmlyc3QoKTsKLQorICAgICAgICBhdXRvIHF1ZXVlZEV2ZW50cyA9IG1fdG91Y2hFdmVudFF1
ZXVlLnRha2VGaXJzdCgpOwogICAgICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgdHlwZSA9
PSBxdWV1ZWRFdmVudHMuZm9yd2FyZGVkRXZlbnQudHlwZSgpKTsKIAogICAgICAgICBwYWdlQ2xp
ZW50KCkuZG9uZVdpdGhUb3VjaEV2ZW50KHF1ZXVlZEV2ZW50cy5mb3J3YXJkZWRFdmVudCwgaGFu
ZGxlZCk7CkBAIC03NzA0LDggKzc2MDIsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0
ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFzb24gdGVybWluYQogICAg
IC8vIENhbid0IGV4cGVjdCBEaWRSZWNlaXZlRXZlbnQgbm90aWZpY2F0aW9ucyBmcm9tIGEgY3Jh
c2hlZCB3ZWIgcHJvY2Vzcy4KICAgICBtX21vdXNlRXZlbnRRdWV1ZS5jbGVhcigpOwogICAgIG1f
a2V5RXZlbnRRdWV1ZS5jbGVhcigpOwotICAgIG1fd2hlZWxFdmVudFF1ZXVlLmNsZWFyKCk7Ci0g
ICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5jbGVhcigpOworICAgIGlmIChtX3do
ZWVsRXZlbnRDb2FsZXNjZXIpCisgICAgICAgIG1fd2hlZWxFdmVudENvYWxlc2Nlci0+Y2xlYXIo
KTsKKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFFTkFCTEUoSU9TX1RPVUNIX0VWRU5U
UykKICAgICBtX3RvdWNoRXZlbnRRdWV1ZS5jbGVhcigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGU0N2NiNWU0MWYzOWRkYjc5ZmQ1MWQ3NTFmOTNh
ZWYzZGNiYzI1NWEuLmI1OTRlZDg2ZGRiNmE1NTg0NzU4N2U5MmM1MDA2MWZmNDc5NTc0N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zMjYsNiArMzI2LDcgQEAg
Y2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OwogY2xhc3MgV2ViVmlld0RpZE1vdmVUb1dpbmRvd09ic2VydmVyOwogY2xhc3MgV2Vi
V2hlZWxFdmVudDsKK2NsYXNzIFdlYldoZWVsRXZlbnRDb2FsZXNjZXI7CiBjbGFzcyBXZWJzaXRl
RGF0YVN0b3JlOwogCiBzdHJ1Y3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzOwpAQCAtMjIyOCw5
ICsyMjI5LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0UmVuZGVyVHJlZVNpemUodWludDY0
X3QgdHJlZVNpemUpIHsgbV9yZW5kZXJUcmVlU2l6ZSA9IHRyZWVTaXplOyB9CiAKLSAgICB2b2lk
IHByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCgpOwogICAgIHZvaWQgc2VuZFdoZWVsRXZlbnQo
Y29uc3QgV2ViV2hlZWxFdmVudCYpOwotICAgIGJvb2wgc2hvdWxkUHJvY2Vzc1doZWVsRXZlbnRO
b3coY29uc3QgV2ViV2hlZWxFdmVudCYpIGNvbnN0OworCisgICAgV2ViV2hlZWxFdmVudENvYWxl
c2NlciYgd2hlZWxFdmVudENvYWxlc2NlcigpOwogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
ICAgICB2b2lkIHVwZGF0ZVRvdWNoRXZlbnRUcmFja2luZyhjb25zdCBXZWJUb3VjaEV2ZW50Jik7
CkBAIC0yNTc0LDEwICsyNTc1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFN1cHBy
ZXNzU09BdXRob3JpemF0aW9uSW5BbGxOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24geyBmYWxzZSB9
OwogI2VuZGlmCiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViV2hlZWxFdmVudENvYWxlc2Nlcj4g
bV93aGVlbEV2ZW50Q29hbGVzY2VyOworCiAgICAgRGVxdWU8TmF0aXZlV2ViTW91c2VFdmVudD4g
bV9tb3VzZUV2ZW50UXVldWU7CiAgICAgRGVxdWU8TmF0aXZlV2ViS2V5Ym9hcmRFdmVudD4gbV9r
ZXlFdmVudFF1ZXVlOwotICAgIERlcXVlPE5hdGl2ZVdlYldoZWVsRXZlbnQ+IG1fd2hlZWxFdmVu
dFF1ZXVlOwotICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8TmF0aXZlV2ViV2hlZWxF
dmVudD4+PiBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVsRXZlbnRzOwogI2lmIEVOQUJMRShNQUNf
R0VTVFVSRV9FVkVOVFMpCiAgICAgRGVxdWU8TmF0aXZlV2ViR2VzdHVyZUV2ZW50PiBtX2dlc3R1
cmVFdmVudFF1ZXVlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjZGE4M2MzYTZlMTgyMDA5ODQ1YTRjODZiMDQ4YTllM2E4
YzdiYmFlLi5iY2MwYWZhMGY3MzgzOGI4MTQ1OTY5MTk0N2I3ODAzYTYyYmI3MWZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIyMzYs
NiArMjIzNiw4IEBACiAJCTBGOTMxQzFCMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzFDMUIxOEM1NzExOTAwREJCOEQ0IC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI2NTkyMjEyMDhCNERCMDA0
NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERyYXdpbmdBcmVhSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkJC
NzE5RDI1MkQ2RTM1MDBENjNENzcgLyogV2ViV2hlZWxFdmVudENvYWxlc2Nlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEZCQjcxOUUyNTJENkUzNjAwRDYzRDc3IC8qIFdlYldoZWVsRXZlbnRD
b2FsZXNjZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViV2hlZWxFdmVudENvYWxlc2Nlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwODU2RTE4N0NFMEE5MDA3ODBEODYgLyogX19p
bml0X18ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBfX2luaXRfXy5weTsgcGF0aCA9IHdlYmtpdC9f
X2luaXRfXy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDg1NkYxODdDRTBB
OTAwNzgwRDg2IC8qIG1lc3NhZ2VzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gbWVzc2FnZXMucHk7
IHBhdGggPSB3ZWJraXQvbWVzc2FnZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGQzA4NTcwMTg3Q0UwQTkwMDc4MEQ4NiAvKiBtb2RlbC5weSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9
IG1vZGVsLnB5OyBwYXRoID0gd2Via2l0L21vZGVsLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODg5OCw2ICs4OTAwLDggQEAKIAkJCQk1MUQxMjQyQjFFNkQ0MUJDMDAyQjI4MjAg
LyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmggKi8sCiAJCQkJNTFEMTI0MjExRTZEMzQ5QTAw
MkIyODIwIC8qIFdlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgKi8sCiAJCQkJNTFEMTI0MjIxRTZE
MzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZVRhc2tQcm94eS5oICovLAorCQkJCTBGQkI3MTlE
MjUyRDZFMzUwMEQ2M0Q3NyAvKiBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcCAqLywKKwkJCQkw
RkJCNzE5RTI1MkQ2RTM2MDBENjNENzcgLyogV2ViV2hlZWxFdmVudENvYWxlc2Nlci5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBXZWJQYWdlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYldoZWVsRXZlbnRD
b2FsZXNjZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViV2hlZWxF
dmVudENvYWxlc2Nlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTU5NTlkZTM1YzM4NzlkZjNjZTQzMWQzZGQ3
YTdlNzdjZTllODk2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwCkBAIC0wLDAgKzEsMTYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYldoZWVsRXZlbnRD
b2FsZXNjZXIuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJX
aGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiV2ViRXZlbnRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gUmVwcmVz
ZW50cyB0aGUgbnVtYmVyIG9mIHdoZWVsIGV2ZW50cyB3ZSBjYW4gaG9sZCBpbiB0aGUgcXVldWUg
YmVmb3JlIHdlIHN0YXJ0IHB1c2hpbmcgdGhlbSBwcmVlbXB0aXZlbHkuCitjb25zdGV4cHIgdW5z
aWduZWQgd2hlZWxFdmVudFF1ZXVlU2l6ZVRocmVzaG9sZCA9IDEwOworCisjaWYgIUxPR19ESVNB
QkxFRAorc3RhdGljIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
IHRzLCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQoreworICAgIHRzIDw8IHBsYXRm
b3JtKHdoZWVsRXZlbnQpOworICAgIHJldHVybiB0czsKK30KKyNlbmRpZgorCitib29sIFdlYldo
ZWVsRXZlbnRDb2FsZXNjZXI6OmNhbkNvYWxlc2NlKGNvbnN0IFdlYldoZWVsRXZlbnQmIGEsIGNv
bnN0IFdlYldoZWVsRXZlbnQmIGIpCit7CisgICAgaWYgKGEucG9zaXRpb24oKSAhPSBiLnBvc2l0
aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5nbG9iYWxQb3NpdGlvbigp
ICE9IGIuZ2xvYmFsUG9zaXRpb24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChh
Lm1vZGlmaWVycygpICE9IGIubW9kaWZpZXJzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoYS5ncmFudWxhcml0eSgpICE9IGIuZ3JhbnVsYXJpdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChhLnBoYXNlKCkgIT0gYi5waGFz
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEubW9tZW50dW1QaGFzZSgpICE9
IGIubW9tZW50dW1QaGFzZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEuaGFz
UHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpICE9IGIuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAgIHJldHVybiB0cnVlOworfQor
CitXZWJXaGVlbEV2ZW50IFdlYldoZWVsRXZlbnRDb2FsZXNjZXI6OmNvYWxlc2NlKGNvbnN0IFdl
YldoZWVsRXZlbnQmIGEsIGNvbnN0IFdlYldoZWVsRXZlbnQmIGIpCit7CisgICAgQVNTRVJUKGNh
bkNvYWxlc2NlKGEsIGIpKTsKKworICAgIGF1dG8gbWVyZ2VkRGVsdGEgPSBhLmRlbHRhKCkgKyBi
LmRlbHRhKCk7CisgICAgYXV0byBtZXJnZWRXaGVlbFRpY2tzID0gYS53aGVlbFRpY2tzKCkgKyBi
LndoZWVsVGlja3MoKTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gbWVyZ2VkVW5h
Y2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhID0gYS51bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEo
KSArIGIudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhKCk7CisKKyAgICByZXR1cm4gV2ViV2hl
ZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIGIucG9zaXRpb24oKSwgYi5nbG9iYWxQb3NpdGlvbigp
LCBtZXJnZWREZWx0YSwgbWVyZ2VkV2hlZWxUaWNrcywgYi5ncmFudWxhcml0eSgpLCBiLmRpcmVj
dGlvbkludmVydGVkRnJvbURldmljZSgpLCBiLnBoYXNlKCksIGIubW9tZW50dW1QaGFzZSgpLCBi
Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSwgYi5zY3JvbGxDb3VudCgpLCBtZXJnZWRVbmFj
Y2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGEsIGIubW9kaWZpZXJzKCksIGIudGltZXN0YW1wKCkpOwor
I2Vsc2UKKyAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIGIucG9zaXRp
b24oKSwgYi5nbG9iYWxQb3NpdGlvbigpLCBtZXJnZWREZWx0YSwgbWVyZ2VkV2hlZWxUaWNrcywg
Yi5ncmFudWxhcml0eSgpLCBiLm1vZGlmaWVycygpLCBiLnRpbWVzdGFtcCgpKTsKKyNlbmRpZgor
fQorCitib29sIFdlYldoZWVsRXZlbnRDb2FsZXNjZXI6OnNob3VsZERpc3BhdGNoRXZlbnROb3co
Y29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oR1RLKQor
ICAgIC8vIERvbid0IHF1ZXVlIGV2ZW50cyByZXByZXNlbnRpbmcgYSBub24tdHJpdmlhbCBzY3Jv
bGxpbmcgcGhhc2UgdG8KKyAgICAvLyBhdm9pZCBoYXZpbmcgdGhlbSB0cmFwcGVkIGluIHRoZSBx
dWV1ZSwgcG90ZW50aWFsbHkgcHJldmVudGluZyBhCisgICAgLy8gc2Nyb2xsaW5nIHNlc3Npb24g
dG8gYmVnaW5uaW5nIG9yIGVuZCBjb3JyZWN0bHkuCisgICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRl
ZCBieSBwbGF0Zm9ybXMgd2hvc2UgV2ViV2hlZWxFdmVudCBoYXMgdGhpcyBwaGFzZQorICAgIC8v
IGluZm9ybWF0aW9uIChDb2NvYSBhbmQgR1RLKykgYnV0IENvY29hIHdhcyBmaW5lIHdpdGhvdXQg
aXQuCisgICAgaWYgKGV2ZW50LnBoYXNlKCkgPT0gV2ViV2hlZWxFdmVudDo6UGhhc2U6OlBoYXNl
Tm9uZQorICAgICAgICB8fCBldmVudC5waGFzZSgpID09IFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQ
aGFzZUNoYW5nZWQKKyAgICAgICAgfHwgZXZlbnQubW9tZW50dW1QaGFzZSgpID09IFdlYldoZWVs
RXZlbnQ6OlBoYXNlOjpQaGFzZU5vbmUKKyAgICAgICAgfHwgZXZlbnQubW9tZW50dW1QaGFzZSgp
ID09IFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZUNoYW5nZWQpCisgICAgICAgIHJldHVybiB0
cnVlOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXZlbnQpOworI2VuZGlmCisKKyAgICByZXR1
cm4gbV93aGVlbEV2ZW50UXVldWUuc2l6ZSgpID49IHdoZWVsRXZlbnRRdWV1ZVNpemVUaHJlc2hv
bGQ7Cit9CisKK09wdGlvbmFsPFdlYldoZWVsRXZlbnQ+IFdlYldoZWVsRXZlbnRDb2FsZXNjZXI6
Om5leHRFdmVudFRvRGlzcGF0Y2goKQoreworICAgIGlmIChtX3doZWVsRXZlbnRRdWV1ZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGNvYWxlc2Nl
ZEV2ZW50ID0gbV93aGVlbEV2ZW50UXVldWUudGFrZUZpcnN0KCk7CisKKyAgICBhdXRvIGNvYWxl
c2NlZFNlcXVlbmNlID0gbWFrZVVuaXF1ZTxDb2FsZXNjZWRFdmVudFNlcXVlbmNlPigpOworICAg
IGNvYWxlc2NlZFNlcXVlbmNlLT5hcHBlbmQoY29hbGVzY2VkRXZlbnQpOworCisgICAgV2ViV2hl
ZWxFdmVudCBjb2FsZXNjZWRXZWJFdmVudCA9IGNvYWxlc2NlZEV2ZW50OworCisgICAgd2hpbGUg
KCFtX3doZWVsRXZlbnRRdWV1ZS5pc0VtcHR5KCkgJiYgY2FuQ29hbGVzY2UoY29hbGVzY2VkV2Vi
RXZlbnQsIG1fd2hlZWxFdmVudFF1ZXVlLmZpcnN0KCkpKSB7CisgICAgICAgIGF1dG8gZmlyc3RF
dmVudCA9IG1fd2hlZWxFdmVudFF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICBjb2FsZXNjZWRT
ZXF1ZW5jZS0+YXBwZW5kKGZpcnN0RXZlbnQpOworICAgICAgICBjb2FsZXNjZWRXZWJFdmVudCA9
IGNvYWxlc2NlKGNvYWxlc2NlZFdlYkV2ZW50LCBmaXJzdEV2ZW50KTsKKyAgICB9CisKKyNpZiAh
TE9HX0RJU0FCTEVECisgICAgaWYgKGNvYWxlc2NlZFNlcXVlbmNlLT5zaXplKCkgPiAxKQorICAg
ICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudHMsIHN0cmVhbSA8PCAiV2ViV2hlZWxFdmVu
dENvYWxlc2Nlcjo6d2hlZWxFdmVudFdpdGhDb2FsZXNjaW5nIGNvYWxzZXNjZWQgIiA8PCAqY29h
bGVzY2VkU2VxdWVuY2UgPDwgIiBpbnRvICIgPDwgY29hbGVzY2VkV2ViRXZlbnQpOworI2VuZGlm
CisKKyAgICBtX2V2ZW50c0JlaW5nUHJvY2Vzc2VkLmFwcGVuZChXVEZNb3ZlKGNvYWxlc2NlZFNl
cXVlbmNlKSk7CisgICAgcmV0dXJuIGNvYWxlc2NlZFdlYkV2ZW50OworfQorCitib29sIFdlYldo
ZWVsRXZlbnRDb2FsZXNjZXI6OnNob3VsZERpc3BhdGNoRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hl
ZWxFdmVudCYgZXZlbnQpCit7CisgICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRzLCBzdHJl
YW0gPDwgIldlYldoZWVsRXZlbnRDb2FsZXNjZXI6OnNob3VsZERpc3BhdGNoRXZlbnQgIiA8PCBl
dmVudCA8PCAiICgiIDw8IG1fd2hlZWxFdmVudFF1ZXVlLnNpemUoKSA8PCAiIGV2ZW50cyBpbiB0
aGUgcXVldWUsICIgPDwgbV9ldmVudHNCZWluZ1Byb2Nlc3NlZC5zaXplKCkgPDwgIiBldmVudCBz
ZXF1ZW5jZXMgYmVpbmcgcHJvY2Vzc2VkKSIpOworCisgICAgbV93aGVlbEV2ZW50UXVldWUuYXBw
ZW5kKGV2ZW50KTsKKworICAgIGlmICghbV9ldmVudHNCZWluZ1Byb2Nlc3NlZC5pc0VtcHR5KCkp
IHsKKyAgICAgICAgaWYgKCFzaG91bGREaXNwYXRjaEV2ZW50Tm93KG1fd2hlZWxFdmVudFF1ZXVl
Lmxhc3QoKSkpIHsKKyAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50cywgc3Ry
ZWFtIDw8ICJXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOjpzaG91bGREaXNwYXRjaEV2ZW50IC0gICIg
PDwgbV93aGVlbEV2ZW50UXVldWUuc2l6ZSgpIDw8ICIgZXZlbnRzIHF1ZXVlZDsgbm90IGRpc3Bh
dGNoaW5nIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
Ly8gVGhlIHF1ZXVlIGhhcyB0b28gbWFueSB3aGVlbCBldmVudHMsIHNvIHB1c2ggYSBuZXcgZXZl
bnQuCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGlzIGNvbmZ1c2luZywgYW5kIHBvc3Np
Ymx5IG5vdCBuZWNlc3NhcnkuCisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK05hdGl2
ZVdlYldoZWVsRXZlbnQgV2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6dGFrZU9sZGVzdEV2ZW50QmVp
bmdQcm9jZXNzZWQoKQoreworICAgIEFTU0VSVChoYXNFdmVudHNCZWluZ1Byb2Nlc3NlZCgpKTsK
KyAgICBhdXRvIG9sZGVzdFNlcXVlbmNlID0gbV9ldmVudHNCZWluZ1Byb2Nlc3NlZC50YWtlRmly
c3QoKTsKKyAgICByZXR1cm4gb2xkZXN0U2VxdWVuY2UtPmxhc3QoKTsKK30KKwordm9pZCBXZWJX
aGVlbEV2ZW50Q29hbGVzY2VyOjpjbGVhcigpCit7CisgICAgbV93aGVlbEV2ZW50UXVldWUuY2xl
YXIoKTsKKyAgICBtX2V2ZW50c0JlaW5nUHJvY2Vzc2VkLmNsZWFyKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5ZWRkZjQyMmNhOGRl
YjYyOGQ4Mjc0ZmM0ZGExNWJhNzI5Mjk3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmgKQEAgLTAsMCAr
MSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTmF0aXZlV2Vi
V2hlZWxFdmVudC5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJXaGVlbEV2ZW50Q29h
bGVzY2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICAvLyBJ
ZiB0aGlzIHJldHVybnMgdHJ1ZSwgdXNlIG5leHRFdmVudFRvRGlzcGF0Y2goKSB0byBnZXQgdGhl
IGV2ZW50IHRvIGRpc3BhdGNoLgorICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudChjb25zdCBO
YXRpdmVXZWJXaGVlbEV2ZW50Jik7CisgICAgT3B0aW9uYWw8V2ViV2hlZWxFdmVudD4gbmV4dEV2
ZW50VG9EaXNwYXRjaCgpOworICAgIAorICAgIE5hdGl2ZVdlYldoZWVsRXZlbnQgdGFrZU9sZGVz
dEV2ZW50QmVpbmdQcm9jZXNzZWQoKTsKKworICAgIGJvb2wgaGFzRXZlbnRzQmVpbmdQcm9jZXNz
ZWQoKSBjb25zdCB7IHJldHVybiAhbV9ldmVudHNCZWluZ1Byb2Nlc3NlZC5pc0VtcHR5KCk7IH0K
KyAgICAKKyAgICB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgQ29hbGVzY2Vk
RXZlbnRTZXF1ZW5jZSA9IFZlY3RvcjxOYXRpdmVXZWJXaGVlbEV2ZW50PjsKKworICAgIHN0YXRp
YyBib29sIGNhbkNvYWxlc2NlKGNvbnN0IFdlYldoZWVsRXZlbnQmLCBjb25zdCBXZWJXaGVlbEV2
ZW50Jik7CisgICAgc3RhdGljIFdlYldoZWVsRXZlbnQgY29hbGVzY2UoY29uc3QgV2ViV2hlZWxF
dmVudCYsIGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKKworICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hF
dmVudE5vdyhjb25zdCBXZWJXaGVlbEV2ZW50JikgY29uc3Q7CisKKyAgICBEZXF1ZTxOYXRpdmVX
ZWJXaGVlbEV2ZW50LCAyPiBtX3doZWVsRXZlbnRRdWV1ZTsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1
ZV9wdHI8Q29hbGVzY2VkRXZlbnRTZXF1ZW5jZT4+IG1fZXZlbnRzQmVpbmdQcm9jZXNzZWQ7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>