<?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>314488</bug_id>
          
          <creation_ts>2026-05-09 12:26:11 -0700</creation_ts>
          <short_desc>[cleanup] Clean up aspect ratio API: move preferredAspectRatio() to RenderBox, rename FloatSize variant to preferredAspectRatioAsSize()</short_desc>
          <delta_ts>2026-05-10 19:08:11 -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>New Bugs</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2209374</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2026-05-09 12:26:11 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209376</commentid>
    <comment_count>1</comment_count>
      <attachid>479547</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-09 12:40:16 -0700</bug_when>
    <thetext>Created attachment 479547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209426</commentid>
    <comment_count>2</comment_count>
      <attachid>479565</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-09 19:02:52 -0700</bug_when>
    <thetext>Created attachment 479565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209427</commentid>
    <comment_count>3</comment_count>
      <attachid>479566</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-09 19:04:14 -0700</bug_when>
    <thetext>Created attachment 479566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209479</commentid>
    <comment_count>4</comment_count>
      <attachid>479571</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-10 06:27:25 -0700</bug_when>
    <thetext>Created attachment 479571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209480</commentid>
    <comment_count>5</comment_count>
      <attachid>479572</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-10 06:30:36 -0700</bug_when>
    <thetext>Created attachment 479572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209540</commentid>
    <comment_count>6</comment_count>
      <attachid>479581</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-10 17:43:01 -0700</bug_when>
    <thetext>Created attachment 479581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209542</commentid>
    <comment_count>7</comment_count>
      <attachid>479582</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-10 17:50:45 -0700</bug_when>
    <thetext>Created attachment 479582
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209545</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-05-10 19:07:14 -0700</bug_when>
    <thetext>Committed 312980@main (11d1bc9dcc96): &lt;https://commits.webkit.org/312980@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 479582.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2209546</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-05-10 19:08:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/176754609&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479547</attachid>
            <date>2026-05-09 12:40:16 -0700</date>
            <delta_ts>2026-05-09 19:02:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314488-20260509124015.patch</filename>
            <type>text/plain</type>
            <size>23237</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA4YjFjOGY2YWZjNzVjMTZkYmIyNzlhMWNiNTgzMDA4YTVkNzMyZGU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBNYXkgMjAyNiAxMjoyNzowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtjbGVhbnVw
XSBDbGVhbiB1cCBhc3BlY3QgcmF0aW8gQVBJOiBtb3ZlCiBwcmVmZXJyZWRBc3BlY3RSYXRpbygp
IHRvIFJlbmRlckJveCwgcmVuYW1lIEZsb2F0U2l6ZSB2YXJpYW50IHRvCiBwcmVmZXJyZWRBc3Bl
Y3RSYXRpb0FzU2l6ZSgpIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MTQ0ODgKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKIlByZWZlcnJlZCBhc3BlY3QgcmF0
aW8iIGlzIGEgQ1NTIFNpemluZyA0IHNwZWMgdGVybSB0aGF0IGFwcGxpZXMgdG8gYWxsIGJveGVz
LApub3QganVzdCByZXBsYWNlZCBlbGVtZW50cy4gUHJldmlvdXNseSwgdGhlIGRvdWJsZSBBUEkg
KGFzcGVjdFJhdGlvVmFsdWUpIGxpdmVkCm9uIFJlbmRlckJveCB3aGlsZSB0aGUgRmxvYXRTaXpl
IEFQSSAocHJlZmVycmVkQXNwZWN0UmF0aW8pIGxpdmVkIG9uClJlbmRlclJlcGxhY2VkLCBtYWtp
bmcgaXQgdW5jbGVhciB3aGljaCB0byBjYWxsIGFuZCB3aGVuLgoKTm93IGJvdGggcHJlZmVycmVk
QXNwZWN0UmF0aW8oKSAocmV0dXJucyBvcHRpb25hbDxkb3VibGU+KSBhbmQKcHJlZmVycmVkQXNw
ZWN0UmF0aW9Bc1NpemUoKSAocmV0dXJucyBGbG9hdFNpemUpIGFyZSB2aXJ0dWFsIG9uIFJlbmRl
ckJveC4KUmVwbGFjZWQgZWxlbWVudHMgb3ZlcnJpZGUgYm90aCB0byBhY2NvdW50IGZvciBpbnRy
aW5zaWMgcmF0aW9zIGFuZCB0aGUgImF1dG8iCmtleXdvcmQgaW4gYXNwZWN0LXJhdGlvLgoKVGhp
cyBlbGltaW5hdGVzIHRoZSBvbGQgYXNwZWN0UmF0aW9WYWx1ZSgpIGZ1bmN0aW9uIGFuZCBzaW1w
bGlmaWVzIGNhbGxlcnMgdGhhdAp3ZXJlIGRvaW5nIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNw
ZWN0UmF0aW9Eb3VibGUoKSAtIHRoZXkgbm93IGp1c3QgY2FsbApwcmVmZXJyZWRBc3BlY3RSYXRp
bygpIGRpcmVjdGx5LgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KFdlYkNvcmU6OlJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RS
YXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3Jk
TG9naWNhbFdpZHRocyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVTaXppbmdL
ZXl3b3JkTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZ0dlbmVyaWMgY29uc3QpOgooV2ViQ29yZTo6
UmVuZGVyQm94OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJC
b3g6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbyBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlv
IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6YXNwZWN0UmF0aW9WYWx1ZSBjb25zdCk6IERl
bGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oOgoqIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjppc1NWR1Jv
b3RXaXRoSW50cmluc2ljQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6
OnByZWZlcnJlZEFzcGVjdFJhdGlvRm9yRmxleEl0ZW0gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cHJlZmVy
cmVkQXNwZWN0UmF0aW9Bc1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnByZWZl
cnJlZEFzcGVjdFJhdGlvIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplc0Nv
bnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRl
clJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJS
ZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVu
ZGVyUmVwbGFjZWQ6OmNvbXB1dGVBc3BlY3RSYXRpb0FkanVzdGVkSW50cmluc2ljTG9naWNhbFdp
ZHRocyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0tl
eXdvcmRMb2dpY2FsV2lkdGhzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNw
cDoKKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUgY29u
c3QpOgooV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6
IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOgoqIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CihXZWJDb3JlOjpS
ZW5kZXJTVkdSb290OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpS
ZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSBjb25zdCk6CihXZWJDb3Jl
OjpSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQuCiog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHA6CihXZWJD
b3JlOjpMZWdhY3lSZW5kZXJTVkdSb290OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbyBjb25zdCk6
CihXZWJDb3JlOjpMZWdhY3lSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6
ZSBjb25zdCk6CihXZWJDb3JlOjpMZWdhY3lSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RS
YXRpbyBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdh
Y3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oOgotLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwICAgICAgICB8IDMzICsrKysrKysrKysrLS0tLS0tLS0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCAgICAgICAgICB8ICA1ICstLQogLi4uL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCAgIHwgIDggKystLS0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgICAgICB8ICA2ICsrLS0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oICAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwICAgfCAxOSArKysrKysrLS0tLQogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggICAgIHwgIDQgKystCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCAgICAgfCAgNiArKy0tCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmggICAgICAgfCAgMiArLQogLi4uL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCAgIHwgIDUgKystCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCAgfCAgMiArLQogLi4uL3N2Zy9sZWdh
Y3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAgICAgICAgIHwgIDUgKystCiAuLi4vc3ZnL2xlZ2Fj
eS9MZWdhY3lSZW5kZXJTVkdSb290LmggICAgICAgICAgfCAgMiArLQogMTMgZmlsZXMgY2hhbmdl
ZCwgNTUgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAppbmRleCBhYTg0MTIxOGU5YmQuLjYyMWEyY2NjYmZkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lk
IFJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RSYXRpbyhMYXlv
dXRVbml0JiBjb21wdXRlZE1pbgogICAgIC8vIGEgc2l6ZSBvZiB0aGUgaW5pdGlhbCBjb250YWlu
aW5nIGJsb2NrIGFuZCB0aGUg4oCcc3RyZXRjaC1maXTigJ0gc2l6aW5nIG9mIG5vbi1yZXBsYWNl
ZCBibG9ja3MgaWYgdGhleSBoYXZlIGRlZmluaXRlIHZhbHVlcy4KICAgICAvLyBTZWUgaHR0cHM6
Ly93d3cudzMub3JnL1RSL2Nzcy1zaXppbmctMy8jZGVmaW5pdGUKICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7Ci0gICAgQVNTRVJUKHN0eWxlVG9Vc2UuYXNwZWN0
UmF0aW8oKS5oYXNSYXRpbygpIHx8IChpczxSZW5kZXJSZXBsYWNlZD4oKnRoaXMpICYmIGRvd25j
YXN0PFJlbmRlclJlcGxhY2VkPigqdGhpcykucHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RS
YXRpb0RvdWJsZSgpKSk7CisgICAgQVNTRVJUKHN0eWxlVG9Vc2UuYXNwZWN0UmF0aW8oKS5oYXNS
YXRpbygpIHx8IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkpOwogICAgIGF1dG8gbG9naWNhbFNpemUg
PSBkaW1lbnNpb24gPT0gQ29uc3RyYWluRGltZW5zaW9uOjpXaWR0aCA/IHN0eWxlVG9Vc2UubG9n
aWNhbFdpZHRoKCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKTsKICAgICAvLyBodHRwczov
L3d3dy53My5vcmcvVFIvY3NzLXNpemluZy00LyNhc3BlY3QtcmF0aW8tbWluaW11bQogICAgIGlm
IChtaW5pbXVtU2l6ZVR5cGUgPT0gTWluaW11bVNpemVJc0F1dG9tYXRpY0NvbnRlbnRCYXNlZDo6
WWVzKSB7CkBAIC0yOTYwLDcgKzI5NjAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXl3b3JkPiB2
b2lkIFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhzKAogICAg
IH0KIAogICAgIGlmIChDaGVja2VkUHRyIHJlbmRlclJlcGxhY2VkID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlclJlcGxhY2VkPigqdGhpcykpIHsKLSAgICAgICAgYXV0byBwcmVmZXJyZWRSYXRpbyA9
IHJlbmRlclJlcGxhY2VkLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91Ymxl
KCk7CisgICAgICAgIGF1dG8gcHJlZmVycmVkUmF0aW8gPSByZW5kZXJSZXBsYWNlZC0+cHJlZmVy
cmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgICAgICBpZiAo
cHJlZmVycmVkUmF0aW8gJiYgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQoKSkg
ewogICAgICAgICAgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0
KGxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbFRvcCgpKTsKICAgICAgICAgICAgIGF1dG8gY29udGVu
dEJsb2NrU2l6ZSA9IHN0ZDo6bWF4KDBfbHUsIGNvbXB1dGVkVmFsdWVzLmV4dGVudCAtIGJvcmRl
ckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwpAQCAtMzY4NSw4ICszNjg1LDggQEAgdGVtcGxh
dGU8dHlwZW5hbWUgU2l6ZVR5cGU+IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94
Ojpjb21wdXRlU2l6aW5nS2UKICAgICAgICAgLy8gSWYgdGhhdCBoYXBwZW5zLCB0aGlzIGNvZGUg
d2lsbCBoYXZlIHRvIGNoYW5nZS4KICAgICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVySW1hZ2Ug
PSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+KHRoaXMpKSB7CiAgICAgICAgICAgICBhdXRv
IGNvbXB1dGVkRml4ZWRMb2dpY2FsV2lkdGggPSBzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLnRyeUZp
eGVkKCk7CisgICAgICAgICAgICBhdXRvIHByZWZlcnJlZFJhdGlvID0gcmVuZGVySW1hZ2UtPnBy
ZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRGaXhl
ZExvZ2ljYWxXaWR0aCAmJiAhc3R5bGUoKS5hc3BlY3RSYXRpbygpLmhhc1JhdGlvKCkpIHsKLSAg
ICAgICAgICAgICAgICBhdXRvIHByZWZlcnJlZFJhdGlvID0gcmVuZGVySW1hZ2UtPnByZWZlcnJl
ZEFzcGVjdFJhdGlvKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVIZWlnaHRGb3JS
YXRpbygKICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgp
LAogICAgICAgICAgICAgICAgICAgICBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpLApA
QCAtMzcwMSw4ICszNzAxLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgU2l6ZVR5cGU+IHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlU2l6aW5nS2UKICAgICAgICAgICAg
ICAgICAvLyB0aGUgYXNwZWN0IHJhdGlvLgogICAgICAgICAgICAgICAgIGlmICghaXNGbGV4SXRl
bSgpIHx8IGRvd25jYXN0PFJlbmRlckZsZXhpYmxlQm94PihwYXJlbnQoKSktPmlzSG9yaXpvbnRh
bEZsb3coKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAgICAg
ICBpZiAoYXV0byBvdmVycmlkaW5nV2lkdGggPSBvdmVycmlkaW5nQm9yZGVyQm94TG9naWNhbFdp
ZHRoKCk7IG92ZXJyaWRpbmdXaWR0aCAmJiAhcmVuZGVySW1hZ2UtPnByZWZlcnJlZEFzcGVjdFJh
dGlvKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZUhlaWdo
dEZvclJhdGlvKGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgYm9yZGVyQW5kUGFkZGlu
Z0xvZ2ljYWxIZWlnaHQoKSwgY29udGVudEJveExvZ2ljYWxXaWR0aCgqb3ZlcnJpZGluZ1dpZHRo
KSwgcmVuZGVySW1hZ2UtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCkudHJhbnNwb3NlZFNpemUoKS5h
c3BlY3RSYXRpbygpLCBCb3hTaXppbmc6OkNvbnRlbnRCb3gpOworICAgICAgICAgICAgICAgIGlm
IChhdXRvIG92ZXJyaWRpbmdXaWR0aCA9IG92ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsV2lkdGgo
KTsgb3ZlcnJpZGluZ1dpZHRoICYmICFwcmVmZXJyZWRSYXRpby5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXNvbHZlSGVpZ2h0Rm9yUmF0aW8oYm9yZGVyQW5kUGFkZGlu
Z0xvZ2ljYWxXaWR0aCgpLCBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpLCBjb250ZW50
Qm94TG9naWNhbFdpZHRoKCpvdmVycmlkaW5nV2lkdGgpLCBwcmVmZXJyZWRSYXRpby50cmFuc3Bv
c2VkU2l6ZSgpLmFzcGVjdFJhdGlvKCksIEJveFNpemluZzo6Q29udGVudEJveCk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBpZiAoYXV0
byBoZWlnaHQgPSBoZWlnaHRGcm9tQ3Jvc3NBeGlzT3ZlcnJpZGVBbmRBc3BlY3RSYXRpbygpKQpA
QCAtNTI4MSwyMSArNTI4MSwyNiBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2lj
YWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0CiB9CiAKIAotc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IFJlbmRlckJveDo6YXNwZWN0UmF0aW9WYWx1ZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gUmVuZGVyQm94OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAgaWYg
KENoZWNrZWRQdHIgcmVwbGFjZWRFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclJlcGxh
Y2VkPih0aGlzKSkKLSAgICAgICAgcmV0dXJuIHJlcGxhY2VkRWxlbWVudC0+cHJlZmVycmVkQXNw
ZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJh
dGlvKCkuaGFzUmF0aW8oKSkKICAgICAgICAgcmV0dXJuIHN0eWxlKCkubG9naWNhbEFzcGVjdFJh
dGlvKCk7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAorRmxvYXRTaXplIFJlbmRlckJveDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUo
KSBjb25zdAoreworICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSkKKyAg
ICAgICAgcmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0
aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQo
KS52YWx1ZSk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogc3RkOjpwYWlyPExheW91dFVuaXQsIExh
eW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21Bc3BlY3RS
YXRpbygpIGNvbnN0CiB7Ci0gICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1pblNpemUgPSBMYXlv
dXRVbml0KCk7Ci0gICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRVbml0
OjptYXgoKTsKLSAgICBhdXRvIGFzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW9WYWx1ZSgpOworICAg
IGF1dG8gdHJhbnNmZXJyZWRNaW5TaXplID0gTGF5b3V0VW5pdCB7IH07CisgICAgYXV0byB0cmFu
c2ZlcnJlZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKKyAgICBhdXRvIGFzcGVjdFJhdGlv
ID0gcHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQogICAgICAg
ICByZXR1cm4geyB0cmFuc2ZlcnJlZE1pblNpemUsIHRyYW5zZmVycmVkTWF4U2l6ZSB9OwogCkBA
IC01MzE0LDkgKzUzMTksOSBAQCBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVu
ZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNhbFdpZHRoRnJvbUFzcGVjdAogCiBzdGQ6OnBhaXI8
TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNhbEhl
aWdodEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJl
ZE1pblNpemUgPSBMYXlvdXRVbml0KCk7Ci0gICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1heFNp
emUgPSBMYXlvdXRVbml0OjptYXgoKTsKLSAgICBhdXRvIGFzcGVjdFJhdGlvID0gYXNwZWN0UmF0
aW9WYWx1ZSgpOworICAgIGF1dG8gdHJhbnNmZXJyZWRNaW5TaXplID0gTGF5b3V0VW5pdCB7IH07
CisgICAgYXV0byB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKKyAgICBh
dXRvIGFzcGVjdFJhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKICAgICBpZiAoIWFzcGVj
dFJhdGlvKQogICAgICAgICByZXR1cm4geyB0cmFuc2ZlcnJlZE1pblNpemUsIHRyYW5zZmVycmVk
TWF4U2l6ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggYmU4Zjgw
Njc5ODM0Li45ODU2MTc2YmRiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
QEAgLTYzOSw2ICs2MzksOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzSW50cmlu
c2ljQXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRv
bWljSW5saW5lKCkgJiYgKGlzSW1hZ2UoKSB8fCBpc1JlbmRlclZpZGVvKCkgfHwgaXNSZW5kZXJI
VE1MQ2FudmFzKCkgfHwgaXNSZW5kZXJWaWV3VHJhbnNpdGlvbkNhcHR1cmUoKSk7IH0KIAorICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29u
c3Q7CisgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBj
b25zdDsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlckJveChUeXBlLCBFbGVtZW50JiwgUmVuZGVy
U3R5bGUmJiwgT3B0aW9uU2V0PFR5cGVGbGFnPiA9IHsgfSwgVHlwZVNwZWNpZmljRmxhZ3MgPSB7
IH0pOwogICAgIFJlbmRlckJveChUeXBlLCBEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlv
blNldDxUeXBlRmxhZz4gPSB7IH0sIFR5cGVTcGVjaWZpY0ZsYWdzID0geyB9KTsKQEAgLTY4NCw4
ICs2ODcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBza2lwQ29udGFpbmluZ0Jsb2NrRm9yUGVy
Y2VudEhlaWdodENhbGN1bGF0aW9uKGNvbnN0IFJlbmRlckJveCYgY29udGFpbmluZ0Jsb2NrLCBi
b29sIGlzUGVycGVuZGljdWxhcldyaXRpbmdNb2RlKSBjb25zdDsKIAogICAgIHZvaWQgaW5jcmVt
ZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnRJZk5lZWRlZChjb25zdCBJbnRTaXplJik7Ci0K
LSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXNwZWN0UmF0aW9WYWx1ZSgpIGNvbnN0OwogICAg
IGJvb2wgTk9ERUxFVEUgc2hvdWxkSWdub3JlQXNwZWN0UmF0aW8oKSBjb25zdDsKICAgICBib29s
IHNob3VsZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8oKSBjb25zdDsKICAgICBi
b29sIGlzUmVzb2x2ZWFibGVTdHJldGNoU2l6ZShjb25zdCBhdXRvJiBzaXplKSBjb25zdCB7IHJl
dHVybiBzaXplLmlzU3RyZXRjaCgpICYmIGNvbnRhaW5pbmdCbG9ja0hhc0RlZmluaXRlQmxvY2tT
aXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCmluZGV4IDFmZWQ5NmQzODY4Ni4uZmJjYzZlMjdlN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTg3OSw3ICs4NzksNyBAQCBz
dGF0aWMgYm9vbCBpc1NWR1Jvb3RXaXRoSW50cmluc2ljQXNwZWN0UmF0aW8oY29uc3QgUmVuZGVy
Qm94JiBmbGV4SXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIEl0J3MgY29tbW9u
IGZvciBzb21lIHJlcGxhY2VkIGVsZW1lbnRzLCBzdWNoIGFzIFNWR3MsIHRvIGhhdmUgaW50cmlu
c2ljIGFzcGVjdCByYXRpb3MgYnV0IG5vIGludHJpbnNpYyBzaXplcy4KICAgICAvLyBUaGF0J3Mg
d2h5IGl0IGlzbid0IGVub3VnaCBqdXN0IHRvIGNoZWNrIGZvciBpbnRyaW5zaWMgc2l6ZXMgaW4g
dGhvc2UgY2FzZXMuCi0gICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRl
bSkucHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpID4gMDsKKyAgICBy
ZXR1cm4gZmxleEl0ZW0ucHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RSYXRpb0Rv
dWJsZSgpID4gMDsKIH07CiAKIHN0YXRpYyBib29sIGZsZXhJdGVtSGFzQXNwZWN0UmF0aW8oY29u
c3QgUmVuZGVyQm94JiBmbGV4SXRlbSkKQEAgLTEyNjIsMTEgKzEyNjIsMTEgQEAgZG91YmxlIFJl
bmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0ZvckZsZXhJdGVtKGNvbnN0IFJl
bmRlckJveCYgZmxleEkKICAgICBhdXRvIGZsZXhJdGVtQXNwZWN0UmF0aW8gPSBbJl0gewogICAg
ICAgICBhdXRvIGZsZXhJdGVtSW50cmluc2ljU2l6ZSA9IExheW91dFNpemUgeyBmbGV4SXRlbS5p
bnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbEhlaWdodCgp
IH07CiAgICAgICAgIGlmIChmbGV4SXRlbS5pc1JlbmRlck9yTGVnYWN5UmVuZGVyU1ZHUm9vdCgp
KQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSku
cHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOworICAgICAgICAgICAg
cmV0dXJuIGZsZXhJdGVtLnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9E
b3VibGUoKTsKICAgICAgICAgaWYgKGZsZXhJdGVtLnN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1Jh
dGlvKCkgfHwgKGZsZXhJdGVtLnN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygp
ICYmIGZsZXhJdGVtSW50cmluc2ljU2l6ZS5pc0VtcHR5KCkpKQogICAgICAgICAgICAgcmV0dXJu
IGZsZXhJdGVtLnN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCk7Ci0gICAgICAgIGlmIChhdXRv
KiByZXBsYWNlZEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJ
dGVtKSkKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlZEVsZW1lbnQtPnByZWZlcnJlZEFzcGVj
dFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKKyAgICAgICAgaWYgKGlzPFJlbmRlclJlcGxh
Y2VkPihmbGV4SXRlbSkpCisgICAgICAgICAgICByZXR1cm4gZmxleEl0ZW0ucHJlZmVycmVkQXNw
ZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogCiAgICAgICAgIEFTU0VSVChm
bGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gZmxleEl0
ZW0uaW50cmluc2ljTG9naWNhbFdpZHRoKCkudG9Eb3VibGUoKSAvIGZsZXhJdGVtLmludHJpbnNp
Y0xvZ2ljYWxIZWlnaHQoKS50b0RvdWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAKaW5kZXggNjdkMTM4ZjQwZWY4Li4xNWZhOGU4Zjk4MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtOTM4LDcgKzkzOCw3IEBAIHZvaWQg
UmVuZGVySW1hZ2U6OmxheW91dCgpCiAgICAgfQogfQogCi1GbG9hdFNpemUgUmVuZGVySW1hZ2U6
OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKK0Zsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJl
ZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAogewogICAgIEFTU0VSVCghc2hvdWxkQXBw
bHlTaXplQ29udGFpbm1lbnQoKSk7CiAKQEAgLTk1MCw3ICs5NTAsNyBAQCBGbG9hdFNpemUgUmVu
ZGVySW1hZ2U6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKICAgICB9CiAKICAgICBpZiAo
Q2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRkZWRTVkdSb290KCkpIHsKLSAgICAgICAgYXV0byBy
YXRpbyA9IHN2Z1Jvb3QtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisgICAgICAgIGF1dG8gcmF0
aW8gPSBzdmdSb290LT5wcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOwogICAgICAgICBpZiAo
IWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgIXJhdGlvLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJhdGlvID0gcmF0aW8udHJhbnNwb3NlZFNpemUoKTsKIApAQCAtOTYwLDcgKzk2MCw3IEBA
IEZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogICAg
ICAgICByZXR1cm4gcmF0aW87CiAgICAgfQogCi0gICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpw
cmVmZXJyZWRBc3BlY3RSYXRpbygpOworICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVy
cmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKIH0KIAogYm9vbCBSZW5kZXJJbWFnZTo6c2hvdWxkSW52
YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oCmluZGV4IDgzZDVlZDQ3NWNjNy4uZDQ2MDExMWNjNDAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc011bHRpUmVwcmVzZW50YXRpb25IRUlDKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIEZs
b2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6
ZSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6
CiAgICAgUmVuZGVySW1hZ2UoVHlwZSwgRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlvblNl
dDxSZXBsYWNlZEZsYWc+LCBTdHlsZTo6SW1hZ2UqID0gbnVsbHB0ciwgY29uc3QgZmxvYXQgaW1h
Z2VEZXZpY2VQaXhlbFJhdGlvID0gMS4wZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcAppbmRleCAzYTBmZTA2ZTQ2MWEuLjFjZGU3ZGFjZGE2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC01MDMsMTAgKzUw
MywxMCBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJh
aW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhGbAogewogICAgIGlmIChzaG91bGRBcHBseVNp
emVPcklubGluZVNpemVDb250YWlubWVudCgpKSB7CiAgICAgICAgIGludHJpbnNpY1NpemUgPSBG
bG9hdFNpemUgeyBpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdo
dCgpIH07Ci0gICAgICAgIGludHJpbnNpY1JhdGlvID0gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJl
ZEFzcGVjdFJhdGlvKCk7CisgICAgICAgIGludHJpbnNpY1JhdGlvID0gUmVuZGVyUmVwbGFjZWQ6
OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW50
cmluc2ljU2l6ZSA9IGNvbXB1dGVJbnRyaW5zaWNTaXplRm9yUmVuZGVyZXIoKnRoaXMpOwotICAg
ICAgICBpbnRyaW5zaWNSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisgICAgICAgIGlu
dHJpbnNpY1JhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKIAogICAgICAgICBh
dXRvIHNpemVUb0NhY2hlID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGludHJpbnNpY1Np
emUgOiBpbnRyaW5zaWNTaXplLnRyYW5zcG9zZWRTaXplKCk7CiAgICAgICAgIGlmIChlbWJlZGRl
ZFNWR1Jvb3QoKSAmJiBpc1JlbmRlcldpZGdldCgpKSB7CkBAIC01ODcsMTAgKzU4NywxNSBAQCBM
YXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0KGNvbnN0IExheW91
dFNpemUmIGludHJpbnNpY1NpemUpCiAgICAgcmV0dXJuIGZpbmFsUmVjdDsKIH0KIAotRmxvYXRT
aXplIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29u
c3QKIHsKLSAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUoaW50cmluc2ljTG9naWNh
bFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgRmxvYXRTaXplIHByZWZl
cnJlZEFzcGVjdFJhdGlvOworICAgIHJldHVybiBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgp
LmFzcGVjdFJhdGlvRG91YmxlKCk7Cit9CisKK0Zsb2F0U2l6ZSBSZW5kZXJSZXBsYWNlZDo6cHJl
ZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAoreworICAgIGF1dG8gaW50cmluc2ljU2l6
ZSA9IEZsb2F0U2l6ZSB7IGludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBpbnRyaW5zaWNMb2dpY2Fs
SGVpZ2h0KCkgfTsKKyAgICBhdXRvIHByZWZlcnJlZEFzcGVjdFJhdGlvID0gRmxvYXRTaXplIHsg
fTsKIAogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSkgewogICAgICAg
ICBwcmVmZXJyZWRBc3BlY3RSYXRpbyA9IEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxl
KCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xv
Z2ljYWxIZWlnaHQoKS52YWx1ZSk7CkBAIC02NDgsNyArNjUzLDcgQEAgdm9pZCBSZW5kZXJSZXBs
YWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExh
eW91dFVuaXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3R5bGUgPSB0aGlzLT5zdHls
ZSgpOwotICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlv
KCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKKyAgICBhdXRvIGNvbXB1dGVkQXNwZWN0UmF0aW8gPSBw
cmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAgICAgYXV0
byBjb21wdXRlZEludHJpbnNpY0xvZ2ljYWxXaWR0aCA9IG1pbkxvZ2ljYWxXaWR0aDsKIAogICAg
IGlmIChhdXRvIGZpeGVkTG9naWNhbEhlaWdodCA9IHN0eWxlLmxvZ2ljYWxIZWlnaHQoKS50cnlG
aXhlZCgpKQpAQCAtODI1LDcgKzgzMCw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJ
bnRyaW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsCiB7CiAg
ICAgaWYgKGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgJiYgIXN0eWxlKCkubG9naWNhbEhlaWdo
dCgpLmlzQXV0bygpKSB7CiAgICAgICAgIGlmIChhdXRvIGZpeGVkSGVpZ2h0ID0gc3R5bGUoKS5s
b2dpY2FsSGVpZ2h0KCkudHJ5Rml4ZWQoKSkgewotICAgICAgICAgICAgYXV0byBoZWlnaHREZXJp
dmVkV2lkdGggPSBMYXlvdXRVbml0IHsgZml4ZWRIZWlnaHQtPnJlc29sdmVab29tKHN0eWxlKCku
dXNlZFpvb21Gb3JMZW5ndGgoKSkgKiBwcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlv
RG91YmxlKCkgfTsKKyAgICAgICAgICAgIGF1dG8gaGVpZ2h0RGVyaXZlZFdpZHRoID0gTGF5b3V0
VW5pdCB7IGZpeGVkSGVpZ2h0LT5yZXNvbHZlWm9vbShzdHlsZSgpLnVzZWRab29tRm9yTGVuZ3Ro
KCkpICogcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RSYXRpb0RvdWJsZSgpIH07
CiAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBoZWlnaHREZXJpdmVkV2lkdGg7CiAgICAg
ICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBoZWlnaHREZXJpdmVkV2lkdGg7CiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4
IGViN2ZiZjQwZjY3OS4uNmVmYzRiYzRjOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVwbGFjZWQuaApAQCAtNTksNyArNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXBs
YWNlZE1heExvZ2ljYWxIZWlnaHRDb21wdXRlc0FzTm9uZSgpIGNvbnN0OwogCiAgICAgdmlydHVh
bCBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3Q7
CisKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25z
dCBvdmVycmlkZTsKKyAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBj
b25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIFJlbmRlclJlcGxhY2VkKFR5cGUsIEVs
ZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8UmVwbGFjZWRGbGFnPiA9IHsgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDg3NDNjMTI0MTgz
Ny4uOTA3MzFhZDVjMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcApAQCAtNDk4LDEzICs0OTgsMTMgQEAgUmVuZGVyUmVwbGFjZWQqIFJlbmRlcldpZGdldDo6
ZW1iZWRkZWRTVkdSb290KCkgY29uc3QKICAgICByZXR1cm4gZnJhbWVWaWV3ID8gZnJhbWVWaWV3
LT5lbWJlZGRlZFNWR1Jvb3QoKSA6IG51bGxwdHI7CiB9CiAKLUZsb2F0U2l6ZSBSZW5kZXJXaWRn
ZXQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKK0Zsb2F0U2l6ZSBSZW5kZXJXaWRnZXQ6
OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3QKIHsKICAgICBDaGVja2VkUHRyIHN2
Z1Jvb3QgPSBlbWJlZGRlZFNWR1Jvb3QoKTsKICAgICBpZiAoIXN2Z1Jvb3QpCi0gICAgICAgIHJl
dHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgcmV0
dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOwogCi0gICAg
YXV0byByYXRpbyA9IHN2Z1Jvb3QtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisgICAgYXV0byBy
YXRpbyA9IHN2Z1Jvb3QtPnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CiAgICAgaWYgKCFp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpICYmICFyYXRpby5pc0VtcHR5KCkpCiAgICAgICAgIHJh
dGlvID0gcmF0aW8udHJhbnNwb3NlZFNpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5oCmluZGV4IGU5MTE3ZDkxMjdiYS4uNzZiM2Q4ZjE3YWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIHNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBmaW5h
bDsKICAgICBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3QgZmluYWw7Ci0g
ICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CisgICAgRmxv
YXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3QgZmluYWw7CiAKICAgICB2
b2lkIHNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0YXRlKSBmaW5hbDsKICAgICB2b2lkIHNl
dE92ZXJsYXBUZXN0UmVzdWx0KGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggZTY5ODAyMTZkZTZmLi43OTBjNjk1NGUy
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cApAQCAtOTEsNyArOTEsNyBAQCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciogUmVuZGVyU1ZH
Um9vdDo6dmlld3BvcnRDb250YWluZXIoKSBjb25zdAogCiBib29sIFJlbmRlclNWR1Jvb3Q6Omhh
c0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcHJlZmVycmVkQXNw
ZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOworICAgIHJldHVybiBwcmVmZXJyZWRBc3Bl
Y3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiB9CiAKIEZsb2F0U2l6ZSBSZW5k
ZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CkBAIC0xMDUsNyArMTA1LDcg
QEAgRmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QK
ICAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKIH0KIAotRmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6
OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKK0Zsb2F0U2l6ZSBSZW5kZXJTVkdSb290Ojpw
cmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFzaG91bGRB
cHBseVNpemVDb250YWlubWVudCgpKTsKIApAQCAtMTMyLDcgKzEzMiw2IEBAIEZsb2F0U2l6ZSBS
ZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiAgICAgaWYgKHN0eWxl
KCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygpKQogICAgICAgICByZXR1cm4gRmxvYXRT
aXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZh
bHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsKICAgICByZXR1
cm4geyB9OwotCiB9CiAKIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aXNFbWJlZGRlZFRocm91Z2hTVkdJ
bWFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5oCmluZGV4IGY5Yjk4NjBmNDEwMy4uMDZlMGFjYzJkZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0VtYmVkZGVkVGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0RvY3VtZW50KCkg
Y29uc3Q7CiAKICAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdDsKLSAg
ICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKKyAgICBGbG9h
dFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdCBmaW5hbDsKICAgICBib29s
IGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGlzTGF5
b3V0U2l6ZUNoYW5nZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQ7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJl
bmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVn
YWN5UmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggZWJhYjU2YzhlM2JjLi5mNmYwYzVlMzI0NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRl
clNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xl
Z2FjeVJlbmRlclNWR1Jvb3QuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFNWR1NWR0VsZW1lbnQmIExl
Z2FjeVJlbmRlclNWR1Jvb3Q6OnN2Z1NWR0VsZW1lbnQoKSBjb25zdAogCiBib29sIExlZ2FjeVJl
bmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOworICAgIHJldHVy
biBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiB9CiAK
IEZsb2F0U2l6ZSBMZWdhY3lSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNv
bnN0CkBAIC05NCw3ICs5NCw3IEBAIEZsb2F0U2l6ZSBMZWdhY3lSZW5kZXJTVkdSb290Ojpjb21w
dXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGludHJpbnNpY1NpemU7CiB9CiAK
LUZsb2F0U2l6ZSBMZWdhY3lSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNv
bnN0CitGbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW9B
c1NpemUoKSBjb25zdAogewogICAgIEFTU0VSVCghc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQo
KSk7CiAKQEAgLTEyMSw3ICsxMjEsNiBAQCBGbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6
cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogICAgICAgICByZXR1cm4gKmludHJpbnNpY1Jh
dGlvVmFsdWU7CiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygp
KQogICAgICAgICByZXR1cm4gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3Bl
Y3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhl
aWdodCgpLnZhbHVlKTsKLQogICAgIHJldHVybiBwcmVmZXJyZWRBc3BlY3RSYXRpbzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVu
ZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5
UmVuZGVyU1ZHUm9vdC5oCmluZGV4IGUyYzFmZDllNjQyNS4uNDZjMTIwZGRhNDYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdS
b290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVu
ZGVyU1ZHUm9vdC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1iZWRk
ZWRUaHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSBjb25zdDsKIAogICAgIEZsb2F0
U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0OwotICAgIEZsb2F0U2l6ZSBwcmVmZXJy
ZWRBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3Bl
Y3RSYXRpb0FzU2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0
UmF0aW8oKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgaXNMYXlvdXRTaXplQ2hhbmdlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNMYXlvdXRTaXplQ2hhbmdlZDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479565</attachid>
            <date>2026-05-09 19:02:52 -0700</date>
            <delta_ts>2026-05-10 17:42:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314488-20260509190251.patch</filename>
            <type>text/plain</type>
            <size>25301</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBjODE1MzY2MGVlZGY2ZWUzNmUyNmY3MWFhODEyMTdhYWJmMjUzMzgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBNYXkgMjAyNiAxOTowMTo1NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIENsZWFuIHVw
IGFzcGVjdCByYXRpbyBBUEk6IG1vdmUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSB0bwogUmVuZGVy
Qm94LCByZW5hbWUgRmxvYXRTaXplIHZhcmlhbnQgdG8gcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1Np
emUoKQogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDQ4OAoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoiUHJlZmVycmVkIGFzcGVjdCByYXRpbyIgaXMgYSBD
U1MgU2l6aW5nIDQgc3BlYyB0ZXJtIHRoYXQgYXBwbGllcyB0byBhbGwgYm94ZXMsCm5vdCBqdXN0
IHJlcGxhY2VkIGVsZW1lbnRzLiBQcmV2aW91c2x5LCB0aGUgZG91YmxlIEFQSSAoYXNwZWN0UmF0
aW9WYWx1ZSkgbGl2ZWQKb24gUmVuZGVyQm94IHdoaWxlIHRoZSBGbG9hdFNpemUgQVBJIChwcmVm
ZXJyZWRBc3BlY3RSYXRpbykgbGl2ZWQgb24KUmVuZGVyUmVwbGFjZWQsIG1ha2luZyBpdCB1bmNs
ZWFyIHdoaWNoIHRvIGNhbGwgYW5kIHdoZW4uCgpOb3cgYm90aCBwcmVmZXJyZWRBc3BlY3RSYXRp
bygpIChyZXR1cm5zIG9wdGlvbmFsPGRvdWJsZT4pIGFuZApwcmVmZXJyZWRBc3BlY3RSYXRpb0Fz
U2l6ZSgpIChyZXR1cm5zIEZsb2F0U2l6ZSkgYXJlIHZpcnR1YWwgb24gUmVuZGVyQm94LgpSZXBs
YWNlZCBlbGVtZW50cyBvdmVycmlkZSBib3RoIHRvIGFjY291bnQgZm9yIGludHJpbnNpYyByYXRp
b3MgYW5kIHRoZSAiYXV0byIKa2V5d29yZCBpbiBhc3BlY3QtcmF0aW8uCgpUaGlzIGVsaW1pbmF0
ZXMgdGhlIG9sZCBhc3BlY3RSYXRpb1ZhbHVlKCkgZnVuY3Rpb24gYW5kIHNpbXBsaWZpZXMgY2Fs
bGVycyB0aGF0CndlcmUgZG9pbmcgcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0Rv
dWJsZSgpIC0gdGhleSBub3cganVzdCBjYWxsCnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgZGlyZWN0
bHkuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwOgooV2ViQ29yZTo6
UmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsTWluTWF4U2l6ZXNCeUFzcGVjdFJhdGlvIGNvbnN0
KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2FsV2lk
dGhzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVNpemluZ0tleXdvcmRMb2dp
Y2FsQ29udGVudEhlaWdodFVzaW5nR2VuZXJpYyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6
OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6cHJlZmVy
cmVkQXNwZWN0UmF0aW9Bc1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRl
TWluTWF4TG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxIZWlnaHRGcm9tQXNwZWN0UmF0aW8gY29uc3QpOgoo
V2ViQ29yZTo6UmVuZGVyQm94Ojphc3BlY3RSYXRpb1ZhbHVlIGNvbnN0KTogRGVsZXRlZC4KKiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmg6CiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKFdlYkNvcmU6OmlzU1ZHUm9vdFdpdGhJbnRy
aW5zaWNBc3BlY3RSYXRpbyk6CihXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVk
QXNwZWN0UmF0aW9Gb3JGbGV4SXRlbSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcDoKKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RS
YXRpb0FzU2l6ZSBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0
UmF0aW8gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CihX
ZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRC
eVRyYW5zZmVycmVkTWluTWF4U2l6ZXMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6
OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpw
cmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNl
ZDo6Y29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzIGNvbnN0
KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2lj
YWxXaWR0aHMgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgooV2ViQ29y
ZTo6UmVuZGVyV2lkZ2V0OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJXaWRnZXQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KTogRGVsZXRlZC4K
KiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0Lmg6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNWR1Jv
b3Q6Omhhc0ludHJpbnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jv
b3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNW
R1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OkxlZ2Fj
eVJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6
OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplIGNvbnN0KToK
KFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0
KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lS
ZW5kZXJTVkdSb290Lmg6Ci0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAgICAgICAgIHwgMzMgKysrKysrKysrKystLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oICAgICAgICAgIHwgIDUgKy0tCiAuLi4vV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwICAgfCAgOCArKy0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcCAgICAgIHwgIDggKystLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oICAgICAgICB8ICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwICAgfCAxOSArKysrKysrLS0tLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggICAgIHwgIDQgKystCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCAgICAgfCAgOCArKy0tLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5oICAgICAgIHwgIDIgKy0KIC4uLi9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgICB8ICA3ICsrLS0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oICB8ICAyICstCiAuLi4vc3ZnL2xlZ2FjeS9MZWdh
Y3lSZW5kZXJTVkdSb290LmNwcCAgICAgICAgfCAgNyArKy0tCiAuLi4vc3ZnL2xlZ2FjeS9MZWdh
Y3lSZW5kZXJTVkdSb290LmggICAgICAgICAgfCAgMiArLQogMTMgZmlsZXMgY2hhbmdlZCwgNTkg
aW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAppbmRleCA0MDIxMTUyYzljZWMuLmQ3NTNjZWQ4Yzg4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTcxMSw3ICs3MTEsNyBAQCB2b2lkIFJlbmRl
ckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RSYXRpbyhMYXlvdXRVbml0
JiBjb21wdXRlZE1pbgogICAgIC8vIGEgc2l6ZSBvZiB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJs
b2NrIGFuZCB0aGUg4oCcc3RyZXRjaC1maXTigJ0gc2l6aW5nIG9mIG5vbi1yZXBsYWNlZCBibG9j
a3MgaWYgdGhleSBoYXZlIGRlZmluaXRlIHZhbHVlcy4KICAgICAvLyBTZWUgaHR0cHM6Ly93d3cu
dzMub3JnL1RSL2Nzcy1zaXppbmctMy8jZGVmaW5pdGUKICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGVUb1VzZSA9IHN0eWxlKCk7Ci0gICAgQVNTRVJUKHN0eWxlVG9Vc2UuYXNwZWN0UmF0aW8o
KS5oYXNSYXRpbygpIHx8IChpczxSZW5kZXJSZXBsYWNlZD4oKnRoaXMpICYmIGRvd25jYXN0PFJl
bmRlclJlcGxhY2VkPigqdGhpcykucHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0Rv
dWJsZSgpKSk7CisgICAgQVNTRVJUKHN0eWxlVG9Vc2UuYXNwZWN0UmF0aW8oKS5oYXNSYXRpbygp
IHx8IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkpOwogICAgIGF1dG8gbG9naWNhbFNpemUgPSBkaW1l
bnNpb24gPT0gQ29uc3RyYWluRGltZW5zaW9uOjpXaWR0aCA/IHN0eWxlVG9Vc2UubG9naWNhbFdp
ZHRoKCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKTsKICAgICAvLyBodHRwczovL3d3dy53
My5vcmcvVFIvY3NzLXNpemluZy00LyNhc3BlY3QtcmF0aW8tbWluaW11bQogICAgIGlmIChtaW5p
bXVtU2l6ZVR5cGUgPT0gTWluaW11bVNpemVJc0F1dG9tYXRpY0NvbnRlbnRCYXNlZDo6WWVzKSB7
CkBAIC0yOTU3LDcgKzI5NTcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXl3b3JkPiB2b2lkIFJl
bmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhzKAogICAgICAgICAg
ICAgLy8gRm9yIHJlcGxhY2VkIGVsZW1lbnRzIHdpdGggYW4gaW50cmluc2ljIGFzcGVjdCByYXRp
byAoZS5nLiA8aW1nPikgYW5kIGEKICAgICAgICAgICAgIC8vIHNwZWNpZmllZCBibG9jayBzaXpl
LCBjb21wdXRlIHRoZSB0cmFuc2ZlcnJlZCBtaW4vbWF4LWNvbnRlbnQgaW5saW5lIHNpemUKICAg
ICAgICAgICAgIC8vIHRocm91Z2ggdGhlIGludHJpbnNpYyByYXRpbyByYXRoZXIgdGhhbiB1c2lu
ZyB0aGUgcmF3IG5hdHVyYWwgd2lkdGguCi0gICAgICAgICAgICBhdXRvIHByZWZlcnJlZFJhdGlv
ID0gcmVuZGVyUmVwbGFjZWQtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3Vi
bGUoKTsKKyAgICAgICAgICAgIGF1dG8gcHJlZmVycmVkUmF0aW8gPSByZW5kZXJSZXBsYWNlZC0+
cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgICAg
ICAgICAgaWYgKHByZWZlcnJlZFJhdGlvICYmIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzU3Bl
Y2lmaWVkKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNvbXB1dGVkVmFsdWVzID0gY29tcHV0
ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgpLCBsb2dpY2FsVG9wKCkpOwogICAgICAgICAg
ICAgICAgIGF1dG8gY29udGVudEJsb2NrU2l6ZSA9IHN0ZDo6bWF4KDBfbHUsIGNvbXB1dGVkVmFs
dWVzLmV4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwpAQCAtMzY4MSw4
ICszNjgxLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgU2l6ZVR5cGU+IHN0ZDo6b3B0aW9uYWw8TGF5
b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlU2l6aW5nS2UKICAgICAgICAgLy8gSWYgdGhhdCBo
YXBwZW5zLCB0aGlzIGNvZGUgd2lsbCBoYXZlIHRvIGNoYW5nZS4KICAgICAgICAgaWYgKENoZWNr
ZWRQdHIgcmVuZGVySW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+KHRoaXMpKSB7
CiAgICAgICAgICAgICBhdXRvIGNvbXB1dGVkRml4ZWRMb2dpY2FsV2lkdGggPSBzdHlsZSgpLmxv
Z2ljYWxXaWR0aCgpLnRyeUZpeGVkKCk7CisgICAgICAgICAgICBhdXRvIHByZWZlcnJlZFJhdGlv
ID0gcmVuZGVySW1hZ2UtPnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CiAgICAgICAgICAg
ICBpZiAoY29tcHV0ZWRGaXhlZExvZ2ljYWxXaWR0aCAmJiAhc3R5bGUoKS5hc3BlY3RSYXRpbygp
Lmhhc1JhdGlvKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHByZWZlcnJlZFJhdGlvID0gcmVu
ZGVySW1hZ2UtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc29sdmVIZWlnaHRGb3JSYXRpbygKICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQW5kUGFk
ZGluZ0xvZ2ljYWxXaWR0aCgpLAogICAgICAgICAgICAgICAgICAgICBib3JkZXJBbmRQYWRkaW5n
TG9naWNhbEhlaWdodCgpLApAQCAtMzY5Nyw4ICszNjk3LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUg
U2l6ZVR5cGU+IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlU2l6
aW5nS2UKICAgICAgICAgICAgICAgICAvLyB0aGUgYXNwZWN0IHJhdGlvLgogICAgICAgICAgICAg
ICAgIGlmICghaXNGbGV4SXRlbSgpIHx8IGRvd25jYXN0PFJlbmRlckZsZXhpYmxlQm94PihwYXJl
bnQoKSktPmlzSG9yaXpvbnRhbEZsb3coKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nV2lkdGggPSBvdmVycmlkaW5n
Qm9yZGVyQm94TG9naWNhbFdpZHRoKCk7IG92ZXJyaWRpbmdXaWR0aCAmJiAhcmVuZGVySW1hZ2Ut
PnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzb2x2ZUhlaWdodEZvclJhdGlvKGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgo
KSwgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwgY29udGVudEJveExvZ2ljYWxXaWR0
aCgqb3ZlcnJpZGluZ1dpZHRoKSwgcmVuZGVySW1hZ2UtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCku
dHJhbnNwb3NlZFNpemUoKS5hc3BlY3RSYXRpbygpLCBCb3hTaXppbmc6OkNvbnRlbnRCb3gpOwor
ICAgICAgICAgICAgICAgIGlmIChhdXRvIG92ZXJyaWRpbmdXaWR0aCA9IG92ZXJyaWRpbmdCb3Jk
ZXJCb3hMb2dpY2FsV2lkdGgoKTsgb3ZlcnJpZGluZ1dpZHRoICYmICFwcmVmZXJyZWRSYXRpby5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlSGVpZ2h0Rm9yUmF0
aW8oYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBib3JkZXJBbmRQYWRkaW5nTG9naWNh
bEhlaWdodCgpLCBjb250ZW50Qm94TG9naWNhbFdpZHRoKCpvdmVycmlkaW5nV2lkdGgpLCBwcmVm
ZXJyZWRSYXRpby50cmFuc3Bvc2VkU2l6ZSgpLmFzcGVjdFJhdGlvKCksIEJveFNpemluZzo6Q29u
dGVudEJveCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIH07CiAg
ICAgICAgICAgICBpZiAoYXV0byBoZWlnaHQgPSBoZWlnaHRGcm9tQ3Jvc3NBeGlzT3ZlcnJpZGVB
bmRBc3BlY3RSYXRpbygpKQpAQCAtNTI3NywyMSArNTI3NywyNiBAQCBMYXlvdXRVbml0IFJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0CiB9CiAKIAot
c3RkOjpvcHRpb25hbDxkb3VibGU+IFJlbmRlckJveDo6YXNwZWN0UmF0aW9WYWx1ZSgpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gUmVuZGVyQm94OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygp
IGNvbnN0CiB7Ci0gICAgaWYgKENoZWNrZWRQdHIgcmVwbGFjZWRFbGVtZW50ID0gZHluYW1pY0Rv
d25jYXN0PFJlbmRlclJlcGxhY2VkPih0aGlzKSkKLSAgICAgICAgcmV0dXJuIHJlcGxhY2VkRWxl
bWVudC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogICAgIGlm
IChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSkKICAgICAgICAgcmV0dXJuIHN0eWxl
KCkubG9naWNhbEFzcGVjdFJhdGlvKCk7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAorRmxvYXRTaXplIFJlbmRlckJveDo6cHJlZmVycmVk
QXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAoreworICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlv
KCkuaGFzUmF0aW8oKSkKKyAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9u
KHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RS
YXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogc3RkOjpw
YWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZU1pbk1heExvZ2lj
YWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAgTGF5b3V0VW5pdCB0cmFuc2Zl
cnJlZE1pblNpemUgPSBMYXlvdXRVbml0KCk7Ci0gICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1h
eFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKLSAgICBhdXRvIGFzcGVjdFJhdGlvID0gYXNwZWN0
UmF0aW9WYWx1ZSgpOworICAgIGF1dG8gdHJhbnNmZXJyZWRNaW5TaXplID0gTGF5b3V0VW5pdCB7
IH07CisgICAgYXV0byB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKKyAg
ICBhdXRvIGFzcGVjdFJhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKICAgICBpZiAoIWFz
cGVjdFJhdGlvKQogICAgICAgICByZXR1cm4geyB0cmFuc2ZlcnJlZE1pblNpemUsIHRyYW5zZmVy
cmVkTWF4U2l6ZSB9OwogCkBAIC01MzEwLDkgKzUzMTUsOSBAQCBzdGQ6OnBhaXI8TGF5b3V0VW5p
dCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNhbFdpZHRoRnJvbUFz
cGVjdAogCiBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21w
dXRlTWluTWF4TG9naWNhbEhlaWdodEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAgTGF5
b3V0VW5pdCB0cmFuc2ZlcnJlZE1pblNpemUgPSBMYXlvdXRVbml0KCk7Ci0gICAgTGF5b3V0VW5p
dCB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKLSAgICBhdXRvIGFzcGVj
dFJhdGlvID0gYXNwZWN0UmF0aW9WYWx1ZSgpOworICAgIGF1dG8gdHJhbnNmZXJyZWRNaW5TaXpl
ID0gTGF5b3V0VW5pdCB7IH07CisgICAgYXV0byB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRV
bml0OjptYXgoKTsKKyAgICBhdXRvIGFzcGVjdFJhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW8o
KTsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQogICAgICAgICByZXR1cm4geyB0cmFuc2ZlcnJlZE1p
blNpemUsIHRyYW5zZmVycmVkTWF4U2l6ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgKaW5kZXggYmU4ZjgwNjc5ODM0Li45ODU2MTc2YmRiODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmgKQEAgLTYzOSw2ICs2MzksOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBpc0Jsb2Nr
TGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lKCkgJiYgKGlzSW1hZ2UoKSB8fCBpc1JlbmRlclZp
ZGVvKCkgfHwgaXNSZW5kZXJIVE1MQ2FudmFzKCkgfHwgaXNSZW5kZXJWaWV3VHJhbnNpdGlvbkNh
cHR1cmUoKSk7IH0KIAorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHByZWZlcnJl
ZEFzcGVjdFJhdGlvKCkgY29uc3Q7CisgICAgdmlydHVhbCBGbG9hdFNpemUgcHJlZmVycmVkQXNw
ZWN0UmF0aW9Bc1NpemUoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlckJveChUeXBl
LCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9uU2V0PFR5cGVGbGFnPiA9IHsgfSwgVHlw
ZVNwZWNpZmljRmxhZ3MgPSB7IH0pOwogICAgIFJlbmRlckJveChUeXBlLCBEb2N1bWVudCYsIFJl
bmRlclN0eWxlJiYsIE9wdGlvblNldDxUeXBlRmxhZz4gPSB7IH0sIFR5cGVTcGVjaWZpY0ZsYWdz
ID0geyB9KTsKQEAgLTY4NCw4ICs2ODcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBza2lwQ29u
dGFpbmluZ0Jsb2NrRm9yUGVyY2VudEhlaWdodENhbGN1bGF0aW9uKGNvbnN0IFJlbmRlckJveCYg
Y29udGFpbmluZ0Jsb2NrLCBib29sIGlzUGVycGVuZGljdWxhcldyaXRpbmdNb2RlKSBjb25zdDsK
IAogICAgIHZvaWQgaW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnRJZk5lZWRlZChj
b25zdCBJbnRTaXplJik7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXNwZWN0UmF0aW9W
YWx1ZSgpIGNvbnN0OwogICAgIGJvb2wgTk9ERUxFVEUgc2hvdWxkSWdub3JlQXNwZWN0UmF0aW8o
KSBjb25zdDsKICAgICBib29sIHNob3VsZENvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0
aW8oKSBjb25zdDsKICAgICBib29sIGlzUmVzb2x2ZWFibGVTdHJldGNoU2l6ZShjb25zdCBhdXRv
JiBzaXplKSBjb25zdCB7IHJldHVybiBzaXplLmlzU3RyZXRjaCgpICYmIGNvbnRhaW5pbmdCbG9j
a0hhc0RlZmluaXRlQmxvY2tTaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDFmZWQ5NmQzODY4Ni4uZmJjYzZlMjdlN2I5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAg
LTg3OSw3ICs4NzksNyBAQCBzdGF0aWMgYm9vbCBpc1NWR1Jvb3RXaXRoSW50cmluc2ljQXNwZWN0
UmF0aW8oY29uc3QgUmVuZGVyQm94JiBmbGV4SXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIC8vIEl0J3MgY29tbW9uIGZvciBzb21lIHJlcGxhY2VkIGVsZW1lbnRzLCBzdWNoIGFzIFNW
R3MsIHRvIGhhdmUgaW50cmluc2ljIGFzcGVjdCByYXRpb3MgYnV0IG5vIGludHJpbnNpYyBzaXpl
cy4KICAgICAvLyBUaGF0J3Mgd2h5IGl0IGlzbid0IGVub3VnaCBqdXN0IHRvIGNoZWNrIGZvciBp
bnRyaW5zaWMgc2l6ZXMgaW4gdGhvc2UgY2FzZXMuCi0gICAgcmV0dXJuIGRvd25jYXN0PFJlbmRl
clJlcGxhY2VkPihmbGV4SXRlbSkucHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0Rv
dWJsZSgpID4gMDsKKyAgICByZXR1cm4gZmxleEl0ZW0ucHJlZmVycmVkQXNwZWN0UmF0aW9Bc1Np
emUoKS5hc3BlY3RSYXRpb0RvdWJsZSgpID4gMDsKIH07CiAKIHN0YXRpYyBib29sIGZsZXhJdGVt
SGFzQXNwZWN0UmF0aW8oY29uc3QgUmVuZGVyQm94JiBmbGV4SXRlbSkKQEAgLTEyNjIsMTEgKzEy
NjIsMTEgQEAgZG91YmxlIFJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0Zv
ckZsZXhJdGVtKGNvbnN0IFJlbmRlckJveCYgZmxleEkKICAgICBhdXRvIGZsZXhJdGVtQXNwZWN0
UmF0aW8gPSBbJl0gewogICAgICAgICBhdXRvIGZsZXhJdGVtSW50cmluc2ljU2l6ZSA9IExheW91
dFNpemUgeyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgZmxleEl0ZW0uaW50cmlu
c2ljTG9naWNhbEhlaWdodCgpIH07CiAgICAgICAgIGlmIChmbGV4SXRlbS5pc1JlbmRlck9yTGVn
YWN5UmVuZGVyU1ZHUm9vdCgpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJl
cGxhY2VkPihmbGV4SXRlbSkucHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJs
ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLnByZWZlcnJlZEFzcGVjdFJhdGlvQXNT
aXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICAgICAgaWYgKGZsZXhJdGVtLnN0eWxlKCku
YXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkgfHwgKGZsZXhJdGVtLnN0eWxlKCkuYXNwZWN0UmF0aW8o
KS5pc0F1dG9BbmRSYXRpbygpICYmIGZsZXhJdGVtSW50cmluc2ljU2l6ZS5pc0VtcHR5KCkpKQog
ICAgICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLnN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCk7
Ci0gICAgICAgIGlmIChhdXRvKiByZXBsYWNlZEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVu
ZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKSkKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlZEVsZW1l
bnQtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKKyAgICAgICAg
aWYgKGlzPFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkpCisgICAgICAgICAgICByZXR1cm4gZmxl
eEl0ZW0ucHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwog
CiAgICAgICAgIEFTU0VSVChmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkpOwogICAg
ICAgICByZXR1cm4gZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbFdpZHRoKCkudG9Eb3VibGUoKSAv
IGZsZXhJdGVtLmludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKS50b0RvdWJsZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZTE1MGEyMGQ3ZWQzLi5iNzU5NjQy
NDhmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtOTM4
LDEzICs5MzgsMTMgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0KCkKICAgICB9CiB9CiAKLUZs
b2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAorRmxvYXRT
aXplIFJlbmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0CiB7CiAg
ICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZy
b20gY29udGVudCwgYnV0IHRoZQogICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBDU1MgYXNw
ZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCiAgICAgLy8gYmFz
ZSBjbGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KICAgICBpZiAoc2hvdWxk
QXBwbHlTaXplQ29udGFpbm1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpw
cmVmZXJyZWRBc3BlY3RSYXRpbygpOworICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnBy
ZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CiAKICAgICAvLyBEb24ndCBjb21wdXRlIGFuIGlu
dHJpbnNpYyByYXRpbyB0byBwcmVzZXJ2ZSBoaXN0b3JpY2FsIFdlYktpdCBiZWhhdmlvciBpZiB3
ZSdyZSBwYWludGluZyBhbHQgdGV4dCBhbmQvb3IgYSBicm9rZW4gaW1hZ2UuCiAgICAgaWYgKHNo
b3VsZERpc3BsYXlCcm9rZW5JbWFnZUljb24oKSkgewpAQCAtOTU0LDcgKzk1NCw3IEBAIEZsb2F0
U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogICAgIH0KIAog
ICAgIGlmIChDaGVja2VkUHRyIHN2Z1Jvb3QgPSBlbWJlZGRlZFNWR1Jvb3QoKSkgewotICAgICAg
ICBhdXRvIHJhdGlvID0gc3ZnUm9vdC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICAgICAg
YXV0byByYXRpbyA9IHN2Z1Jvb3QtPnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CiAgICAg
ICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiAhcmF0aW8uaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmF0aW8gPSByYXRpby50cmFuc3Bvc2VkU2l6ZSgpOwogCkBAIC05NjQsNyAr
OTY0LDcgQEAgRmxvYXRTaXplIFJlbmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNv
bnN0CiAgICAgICAgIHJldHVybiByYXRpbzsKICAgICB9CiAKLSAgICByZXR1cm4gUmVuZGVyUmVw
bGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisgICAgcmV0dXJuIFJlbmRlclJlcGxhY2Vk
OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOwogfQogCiBib29sIFJlbmRlckltYWdlOjpz
aG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmgKaW5kZXggODNkNWVkNDc1Y2M3Li5kNDYwMTExY2M0MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC04NCw3ICs4NCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzTXVsdGlSZXByZXNlbnRhdGlvbkhFSUMoKSBjb25zdDsKICNlbmRpZgog
Ci0gICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CisgICAg
RmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3QgZmluYWw7CiAKIHBy
b3RlY3RlZDoKICAgICBSZW5kZXJJbWFnZShUeXBlLCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwg
T3B0aW9uU2V0PFJlcGxhY2VkRmxhZz4sIFN0eWxlOjpJbWFnZSogPSBudWxscHRyLCBjb25zdCBm
bG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8gPSAxLjBmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IGJiNjUzYTZjZjliZC4uZTg0MTE0ODQ0ZWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTUw
NCwxMCArNTA0LDEwIEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXpl
c0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKEZsCiB7CiAgICAgaWYgKHNob3Vs
ZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCkpIHsKICAgICAgICAgaW50cmluc2lj
U2l6ZSA9IEZsb2F0U2l6ZSB7IGludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBpbnRyaW5zaWNMb2dp
Y2FsSGVpZ2h0KCkgfTsKLSAgICAgICAgaW50cmluc2ljUmF0aW8gPSBSZW5kZXJSZXBsYWNlZDo6
cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgaW50cmluc2ljUmF0aW8gPSBSZW5kZXJS
ZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBpbnRyaW5zaWNTaXplID0gY29tcHV0ZUludHJpbnNpY1NpemVGb3JSZW5kZXJlcigqdGhp
cyk7Ci0gICAgICAgIGludHJpbnNpY1JhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAg
ICAgICAgaW50cmluc2ljUmF0aW8gPSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOwogCiAg
ICAgICAgIGF1dG8gc2l6ZVRvQ2FjaGUgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gaW50
cmluc2ljU2l6ZSA6IGludHJpbnNpY1NpemUudHJhbnNwb3NlZFNpemUoKTsKICAgICAgICAgaWYg
KGVtYmVkZGVkU1ZHUm9vdCgpICYmIGlzUmVuZGVyV2lkZ2V0KCkpIHsKQEAgLTU4OCwxMCArNTg4
LDE1IEBAIExheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OnJlcGxhY2VkQ29udGVudFJlY3QoY29u
c3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKICAgICByZXR1cm4gZmluYWxSZWN0OwogfQog
Ci1GbG9hdFNpemUgUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QK
K3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0
aW8oKSBjb25zdAogewotICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZShpbnRyaW5z
aWNMb2dpY2FsV2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpKTsKLSAgICBGbG9hdFNp
emUgcHJlZmVycmVkQXNwZWN0UmF0aW87CisgICAgcmV0dXJuIHByZWZlcnJlZEFzcGVjdFJhdGlv
QXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKK30KKworRmxvYXRTaXplIFJlbmRlclJlcGxh
Y2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0Cit7CisgICAgYXV0byBpbnRy
aW5zaWNTaXplID0gRmxvYXRTaXplIHsgaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNp
Y0xvZ2ljYWxIZWlnaHQoKSB9OworICAgIGF1dG8gcHJlZmVycmVkQXNwZWN0UmF0aW8gPSBGbG9h
dFNpemUgeyB9OwogCiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5oYXNSYXRpbygpKSB7
CiAgICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlvID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNp
b24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVj
dFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsKQEAgLTY0OSw3ICs2NTQsNyBAQCB2b2lkIFJl
bmRlclJlcGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxX
aWR0aHMoTGF5b3V0VW5pdAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdHlsZSA9IHRo
aXMtPnN0eWxlKCk7Ci0gICAgYXV0byBjb21wdXRlZEFzcGVjdFJhdGlvID0gcHJlZmVycmVkQXNw
ZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOworICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RS
YXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsK
ICAgICBhdXRvIGNvbXB1dGVkSW50cmluc2ljTG9naWNhbFdpZHRoID0gbWluTG9naWNhbFdpZHRo
OwogCiAgICAgaWYgKGF1dG8gZml4ZWRMb2dpY2FsSGVpZ2h0ID0gc3R5bGUubG9naWNhbEhlaWdo
dCgpLnRyeUZpeGVkKCkpCkBAIC04MjYsNyArODMxLDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2lj
YWwKIHsKICAgICBpZiAoaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSAmJiAhc3R5bGUoKS5sb2dp
Y2FsSGVpZ2h0KCkuaXNBdXRvKCkpIHsKICAgICAgICAgaWYgKGF1dG8gZml4ZWRIZWlnaHQgPSBz
dHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS50cnlGaXhlZCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGhl
aWdodERlcml2ZWRXaWR0aCA9IExheW91dFVuaXQgeyBmaXhlZEhlaWdodC0+cmVzb2x2ZVpvb20o
c3R5bGUoKS51c2VkWm9vbUZvckxlbmd0aCgpKSAqIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNw
ZWN0UmF0aW9Eb3VibGUoKSB9OworICAgICAgICAgICAgYXV0byBoZWlnaHREZXJpdmVkV2lkdGgg
PSBMYXlvdXRVbml0IHsgZml4ZWRIZWlnaHQtPnJlc29sdmVab29tKHN0eWxlKCkudXNlZFpvb21G
b3JMZW5ndGgoKSkgKiBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91
YmxlKCkgfTsKICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IGhlaWdodERlcml2ZWRXaWR0
aDsKICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IGhlaWdodERlcml2ZWRXaWR0aDsKICAg
ICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmgKaW5kZXggZWI3ZmJmNDBmNjc5Li42ZWZjNGJjNGM4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC01OSw3ICs1OSw5IEBAIHB1YmxpYzoKICAgICBi
b29sIHJlcGxhY2VkTWF4TG9naWNhbEhlaWdodENvbXB1dGVzQXNOb25lKCkgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8o
KSBjb25zdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwcmVmZXJyZWRBc3BlY3RSYXRp
bygpIGNvbnN0IG92ZXJyaWRlOworICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpb0Fz
U2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyUmVwbGFjZWQo
VHlwZSwgRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxSZXBsYWNlZEZsYWc+ID0g
eyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggOGYz
NGQ5NGY1YmQzLi42MWQ5ZjdmMmI3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuY3BwCkBAIC00OTgsMTkgKzQ5OCwxOSBAQCBSZW5kZXJSZXBsYWNlZCogUmVuZGVy
V2lkZ2V0OjplbWJlZGRlZFNWR1Jvb3QoKSBjb25zdAogICAgIHJldHVybiBmcmFtZVZpZXcgPyBm
cmFtZVZpZXctPmVtYmVkZGVkU1ZHUm9vdCgpIDogbnVsbHB0cjsKIH0KIAotRmxvYXRTaXplIFJl
bmRlcldpZGdldDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAorRmxvYXRTaXplIFJlbmRl
cldpZGdldDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAogewogICAgIC8vIFNp
emUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRl
bnQsIGJ1dCB0aGUKICAgICAvLyBhc3BlY3QgcmF0aW8gZnJvbSB0aGUgQ1NTIGFzcGVjdC1yYXRp
byBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFpbGFibGUgdmlhIHRoZQogICAgIC8vIGJhc2UgY2xhc3Mg
KHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1hZ2UgZGF0YSkuCiAgICAgaWYgKHNob3VsZEFwcGx5U2l6
ZUNvbnRhaW5tZW50KCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVk
QXNwZWN0UmF0aW8oKTsKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRB
c3BlY3RSYXRpb0FzU2l6ZSgpOwogCiAgICAgQ2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRkZWRT
VkdSb290KCk7CiAgICAgaWYgKCFzdmdSb290KQotICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFj
ZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNl
ZDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKIAotICAgIGF1dG8gcmF0aW8gPSBzdmdS
b290LT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpOworICAgIGF1dG8gcmF0aW8gPSBzdmdSb290LT5w
cmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOwogICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSAmJiAhcmF0aW8uaXNFbXB0eSgpKQogICAgICAgICByYXRpbyA9IHJhdGlvLnRyYW5z
cG9zZWRTaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAppbmRl
eCBlOTExN2Q5MTI3YmEuLjc2YjNkOGYxN2FlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJXaWRnZXQuaApAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91
bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3QgZmluYWw7CiAgICAgUmVuZGVyUmVw
bGFjZWQqIGVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0IGZpbmFsOwotICAgIEZsb2F0U2l6ZSBwcmVm
ZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRB
c3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBzZXRTZWxlY3Rpb25T
dGF0ZShIaWdobGlnaHRTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBzZXRPdmVybGFwVGVzdFJlc3Vs
dChib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuY3BwCmluZGV4IDc1ZjAyZjE4YTZkNy4uMTZlODgyMzMzYzI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTkxLDcgKzkxLDcg
QEAgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIqIFJlbmRlclNWR1Jvb3Q6OnZpZXdwb3J0Q29u
dGFpbmVyKCkgY29uc3QKIAogYm9vbCBSZW5kZXJTVkdSb290OjpoYXNJbnRyaW5zaWNBc3BlY3RS
YXRpbygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0
UmF0aW9Eb3VibGUoKTsKKyAgICByZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5h
c3BlY3RSYXRpb0RvdWJsZSgpOwogfQogCiBGbG9hdFNpemUgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0
ZUludHJpbnNpY1NpemUoKSBjb25zdApAQCAtMTA4LDEzICsxMDgsMTMgQEAgRmxvYXRTaXplIFJl
bmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKICAgICByZXR1cm4gaW50
cmluc2ljU2l6ZTsKIH0KIAotRmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVj
dFJhdGlvKCkgY29uc3QKK0Zsb2F0U2l6ZSBSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RS
YXRpb0FzU2l6ZSgpIGNvbnN0CiB7CiAgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2Vz
IGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0IHRoZQogICAgIC8vIGFzcGVj
dCByYXRpbyBmcm9tIHRoZSBDU1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2YWls
YWJsZSB2aWEgdGhlCiAgICAgLy8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBpbWFn
ZSBkYXRhKS4KICAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKLSAgICAgICAg
cmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOworICAgICAgICBy
ZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CiAKICAg
ICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSkKICAgICAgICAgcmV0dXJuIEZs
b2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgo
KS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CkBAIC0x
MzksNyArMTM5LDYgQEAgRmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJh
dGlvKCkgY29uc3QKICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzQXV0b0FuZFJhdGlv
KCkpCiAgICAgICAgIHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgpLmFz
cGVjdFJhdGlvTG9naWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2Fs
SGVpZ2h0KCkudmFsdWUpOwogICAgIHJldHVybiB7IH07Ci0KIH0KIAogYm9vbCBSZW5kZXJTVkdS
b290Ojppc0VtYmVkZGVkVGhyb3VnaFNWR0ltYWdlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggZjliOTg2MGY0MTAzLi4wNmUwYWNj
MmRlMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1iZWRkZWRUaHJvdWdoRnJh
bWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSBjb25zdDsKIAogICAgIEZsb2F0U2l6ZSBjb21wdXRl
SW50cmluc2ljU2l6ZSgpIGNvbnN0OwotICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRp
bygpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6
ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25z
dCBmaW5hbDsKIAogICAgIGJvb2wgaXNMYXlvdXRTaXplQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNMYXlvdXRTaXplQ2hhbmdlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAppbmRleCBlMDhj
YWFlMDNmM2IuLjQ1MzEyOWQ5NjU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgU1ZHU1ZHRWxlbWVudCYgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6c3ZnU1ZHRWxlbWVu
dCgpIGNvbnN0CiAKIGJvb2wgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNwZWN0
UmF0aW8oKSBjb25zdAogewotICAgIHJldHVybiBwcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVj
dFJhdGlvRG91YmxlKCk7CisgICAgcmV0dXJuIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCku
YXNwZWN0UmF0aW9Eb3VibGUoKTsKIH0KIAogRmxvYXRTaXplIExlZ2FjeVJlbmRlclNWR1Jvb3Q6
OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKQEAgLTk3LDEzICs5NywxMyBAQCBGbG9hdFNp
emUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAogICAg
IHJldHVybiBpbnRyaW5zaWNTaXplOwogfQogCi1GbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZHUm9v
dDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAorRmxvYXRTaXplIExlZ2FjeVJlbmRlclNW
R1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3QKIHsKICAgICAvLyBTaXpl
IGNvbnRhaW5tZW50IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50
LCBidXQgdGhlCiAgICAgLy8gYXNwZWN0IHJhdGlvIGZyb20gdGhlIENTUyBhc3BlY3QtcmF0aW8g
cHJvcGVydHkgaXMgc3RpbGwgYXZhaWxhYmxlIHZpYSB0aGUKICAgICAvLyBiYXNlIGNsYXNzICh3
aGljaCBkb2Vzbid0IHF1ZXJ5IGltYWdlIGRhdGEpLgogICAgIGlmIChzaG91bGRBcHBseVNpemVD
b250YWlubWVudCgpKQotICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFz
cGVjdFJhdGlvKCk7CisgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNw
ZWN0UmF0aW9Bc1NpemUoKTsKIAogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRp
bygpKQogICAgICAgICByZXR1cm4gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5h
c3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNh
bEhlaWdodCgpLnZhbHVlKTsKQEAgLTEyOCw3ICsxMjgsNiBAQCBGbG9hdFNpemUgTGVnYWN5UmVu
ZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogICAgICAgICByZXR1cm4g
KmludHJpbnNpY1JhdGlvVmFsdWU7CiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1
dG9BbmRSYXRpbygpKQogICAgICAgICByZXR1cm4gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24o
c3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJh
dGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsKLQogICAgIHJldHVybiBwcmVmZXJyZWRBc3BlY3RS
YXRpbzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdh
Y3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9s
ZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCmluZGV4IGUyYzFmZDllNjQyNS4uNDZjMTIwZGRh
NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdh
Y3lSZW5kZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdh
Y3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSBjb25zdDsK
IAogICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0OwotICAgIEZsb2F0
U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBw
cmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzSW50
cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgaXNMYXlvdXRTaXpl
Q2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNMYXlvdXRTaXplQ2hhbmdlZDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479566</attachid>
            <date>2026-05-09 19:04:14 -0700</date>
            <delta_ts>2026-05-10 06:24:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314488-20260509190413.patch</filename>
            <type>text/plain</type>
            <size>53310</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA3NDE0ZGI1Yzk3MTIyYTIzM2ViZWE1MDVjZTlkY2QyNTk0NDkzMDFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgOSBNYXkgMjAyNiAxOTowMzoxMSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIENsZWFuIHVw
IGFzcGVjdCByYXRpbyBBUEk6IG1vdmUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSB0bwogUmVuZGVy
Qm94LCByZW5hbWUgRmxvYXRTaXplIHZhcmlhbnQgdG8gcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1Np
emUoKQogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNDQ4OAoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpFV1MgKFBSIHdpdGggZGVwZW5kZW5jaWVzKS4KCiog
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHA6CihXZWJDb3JlOjpMb2NhbEZy
YW1lVmlldzo6Zm9yY2VMYXlvdXRQYXJlbnRWaWV3SWZOZWVkZWQpOgooV2ViQ29yZTo6TG9jYWxG
cmFtZVZpZXc6OmVtYmVkZGVkU1ZHUm9vdCBjb25zdCk6CihXZWJDb3JlOjpMb2NhbEZyYW1lVmll
dzo6ZW1iZWRkZWRDb250ZW50Qm94IGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0xvY2FsRnJhbWVWaWV3Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHA6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxNaW5NYXhTaXplc0J5
QXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2lj
S2V5d29yZExvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRl
U2l6aW5nS2V5d29yZExvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmdHZW5lcmljIGNvbnN0KToKKFdl
YkNvcmU6OlJlbmRlckJveDo6cHJlZmVycmVkQXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6
UmVuZGVyQm94OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSBjb25zdCk6CihXZWJDb3JlOjpS
ZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8gY29uc3Qp
OgooV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNhbEhlaWdodEZyb21Bc3Bl
Y3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmlzUmVuZGVyUmVwbGFjZWRXaXRo
SW50cmluc2ljUmF0aW8gY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVyQm94OjpyZXNv
bHZlQXNwZWN0UmF0aW8gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwOgooV2ViQ29yZTo6aXNTVkdSb290V2l0aEludHJpbnNpY0FzcGVjdFJhdGlvKToKKFdl
YkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0ZvckZsZXhJdGVt
IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgooV2Vi
Q29yZTo6UmVuZGVySW1hZ2U6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplIGNvbnN0KToKKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzIGNvbnN0
KToKKFdlYkNvcmU6OlJlbmRlckltYWdlOjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgooV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNTaXplIGNvbnN0KTogRGVsZXRlZC4KKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQu
CihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6ZW1iZWRkZWRDb250ZW50Qm94IGNvbnN0KTogRGVsZXRl
ZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgooV2ViQ29yZTo6aXNWaWRlb1dpdGhE
ZWZhdWx0T2JqZWN0U2l6ZSk6CihXZWJDb3JlOjpjb21wdXRlSW50cmluc2ljU2l6ZUZvclJlbmRl
cmVyKToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZXNDb25z
dHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJS
ZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVw
bGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRl
clJlcGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0
aHMgY29uc3QpOgooV2ViQ29yZTo6aGFzSW50cmluc2ljU2l6ZSk6CihXZWJDb3JlOjpSZW5kZXJS
ZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoIGNvbnN0KToKKFdlYkNvcmU6OlJl
bmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKFdlYkNv
cmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMg
Y29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVBc3BlY3RSYXRpb0luZm9y
bWF0aW9uRm9yUmVuZGVyQm94IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8gY29uc3QpOiBEZWxldGVkLgooV2ViQ29y
ZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplIGNvbnN0KTogRGVsZXRlZC4K
KFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjppbnRyaW5zaWNSYXRpbyBjb25zdCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CihXZWJDb3JlOjpS
ZW5kZXJSZXBsYWNlZDo6ZW1iZWRkZWRTVkdSb290IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJl
cGxhY2VkOjplbWJlZGRlZENvbnRlbnRCb3ggY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgooV2ViQ29yZTo6UmVuZGVyV2lkZ2V0Ojpz
aG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlcldp
ZGdldDo6ZW1iZWRkZWRTVkdSb290IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cHJl
ZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyV2lkZ2V0Ojpl
bWJlZGRlZENvbnRlbnRCb3ggY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwOgooV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNwZWN0
UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1Np
emUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW9B
c1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0
aW8gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJl
bmRlclNWR1Jvb3QuY3BwOgooV2ViQ29yZTo6TGVnYWN5UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmlu
c2ljQXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6TGVnYWN5UmVuZGVyU1ZHUm9vdDo6Y29t
cHV0ZUludHJpbnNpY1NpemUgY29uc3QpOgooV2ViQ29yZTo6TGVnYWN5UmVuZGVyU1ZHUm9vdDo6
cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUgY29uc3QpOgooV2ViQ29yZTo6TGVnYWN5UmVuZGVy
U1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW8gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgooV2ViQ29yZTo6U1ZHSW1hZ2U6
Om5hdGl2ZUltYWdlKToKKFdlYkNvcmU6OlNWR0ltYWdlOjplbWJlZGRlZFNWR1Jvb3QgY29uc3Qp
OgooV2ViQ29yZTo6U1ZHSW1hZ2U6OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6Ci0tLQogU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAgICAgICAgIHwgIDI4ICsrLS0KIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaCAgICAgICAgICB8ICAgMyArLQogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgICAgICAgIHwgIDU1ICsrKy0tLS0KIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCAgICAgICAgICB8ICAgNiArLQogLi4uL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCAgIHwgICA4ICstCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwICAgICAgfCAgNDQgKysrLS0tCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCAgICAgICAgfCAgIDYgKy0KIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgICB8IDE0MyArKysrKysrLS0t
LS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oICAgICB8
ICAxNyArLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwICAgICB8
ICAyOCArKystCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmggICAgICAg
fCAgIDMgKy0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgICB8
ICAxNiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggIHwg
ICA0ICstCiAuLi4vc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcCAgICAgICAgfCAg
MTYgKy0KIC4uLi9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuaCAgICAgICAgICB8ICAg
NCArLQogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCAgICAgIHwgICA4
ICstCiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCAgICAgICAgfCAgIDQg
Ky0KIDE3IGZpbGVzIGNoYW5nZWQsIDE4OSBpbnNlcnRpb25zKCspLCAyMDQgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcAppbmRleCBkZWRlNmI1MDQ1YTYu
LmM3YWYyNDhmMDkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1l
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5jcHAKQEAg
LTEyMTMsMjUgKzEyMTMsMTggQEAgdm9pZCBMb2NhbEZyYW1lVmlldzo6Zm9yY2VMYXlvdXRQYXJl
bnRWaWV3SWZOZWVkZWQoKQogICAgIGlmICghb3duZXJSZW5kZXJlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgQ2hlY2tlZFB0ciBjb250ZW50Qm94ID0gZW1iZWRkZWRDb250ZW50Qm94KCk7Ci0g
ICAgaWYgKCFjb250ZW50Qm94KQorICAgIENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZH
Um9vdCgpOworICAgIGlmICghc3ZnUm9vdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGF1
dG8qIHN2Z1Jvb3QgPSBkeW5hbWljRG93bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHUm9vdD4oY29udGVu
dEJveC5nZXQoKSkpIHsKLSAgICAgICAgaWYgKHN2Z1Jvb3QtPmV2ZXJIYWRMYXlvdXQoKSAmJiAh
c3ZnUm9vdC0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXV0byogc3ZnUm9vdCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJTVkdSb290Pihjb250
ZW50Qm94LmdldCgpKSkgewotICAgICAgICBpZiAoc3ZnUm9vdC0+ZXZlckhhZExheW91dCgpICYm
ICFzdmdSb290LT5uZWVkc0xheW91dCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBpZiAoc3ZnUm9vdC0+ZXZlckhhZExheW91dCgpICYmICFzdmdSb290LT5uZWVkc0xheW91dCgp
KQorICAgICAgICByZXR1cm47CiAKICAgICBMT0coTGF5b3V0LCAiTG9jYWxGcmFtZVZpZXcgJXAg
Zm9yY2VMYXlvdXRQYXJlbnRWaWV3SWZOZWVkZWQgc2NoZWR1bGluZyBsYXlvdXQgb24gcGFyZW50
IExvY2FsRnJhbWVWaWV3ICVwIiwgdGhpcywgJm93bmVyUmVuZGVyZXItPnZpZXcoKS5mcmFtZVZp
ZXcoKSk7CiAKICAgICAvLyBJZiB0aGUgZW1iZWRkZWQgU1ZHIGRvY3VtZW50IGFwcGVhcnMgdGhl
IGZpcnN0IHRpbWUsIHRoZSBvd25lclJlbmRlcmVyIGhhcyBhbHJlYWR5IGZpbmlzaGVkCiAgICAg
Ly8gbGF5b3V0IHdpdGhvdXQga25vd2luZyBhYm91dCB0aGUgZXhpc3RlbmNlIG9mIHRoZSBlbWJl
ZGRlZCBTVkcgZG9jdW1lbnQsIGJlY2F1c2UgUmVuZGVyUmVwbGFjZWQKLSAgICAvLyBlbWJlZGRl
ZENvbnRlbnRCb3goKSByZXR1cm5zIG51bGxwdHIsIGFzIGxvbmcgYXMgdGhlIGVtYmVkZGVkIGRv
Y3VtZW50IGlzbid0IGxvYWRlZCB5ZXQuIEJlZm9yZQorICAgIC8vIGVtYmVkZGVkU1ZHUm9vdCgp
IHJldHVybnMgbnVsbHB0ciwgYXMgbG9uZyBhcyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgaXNuJ3Qg
bG9hZGVkIHlldC4gQmVmb3JlCiAgICAgLy8gYm90aGVyaW5nIHRvIGxheSBvdXQgdGhlIFNWRyBk
b2N1bWVudCwgbWFyayB0aGUgb3duZXJSZW5kZXJlciBuZWVkaW5nIGxheW91dCBhbmQgYXNrIGl0
cwogICAgIC8vIExvY2FsRnJhbWVWaWV3IGZvciBhIGxheW91dC4gQWZ0ZXIgdGhhdCB0aGUgUmVu
ZGVyRW1iZWRkZWRPYmplY3QgKG93bmVyUmVuZGVyZXIpIGNhcnJpZXMgdGhlCiAgICAgLy8gY29y
cmVjdCBzaXplLCB3aGljaCBMZWdhY3lSZW5kZXJTVkdSb290Ojpjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsV2lkdGgvSGVpZ2h0IHJlbHkgb24sIHdoZW4gbGF5aW5nCkBAIC0xNTIwLDIyICsxNTEzLDE5
IEBAIGJvb2wgTG9jYWxGcmFtZVZpZXc6OnNob3VsZERlZmVyU2Nyb2xsVXBkYXRlQWZ0ZXJDb250
ZW50U2l6ZUNoYW5nZSgpCiAgICAgcmV0dXJuIChsYXlvdXRDb250ZXh0KCkubGF5b3V0UGhhc2Uo
KSA8IExvY2FsRnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6TGF5b3V0UGhhc2U6OkluUG9zdExheW91
dCkgJiYgKGxheW91dENvbnRleHQoKS5sYXlvdXRQaGFzZSgpICE9IExvY2FsRnJhbWVWaWV3TGF5
b3V0Q29udGV4dDo6TGF5b3V0UGhhc2U6Ok91dHNpZGVMYXlvdXQpOwogfQogCi1SZW5kZXJCb3gq
IExvY2FsRnJhbWVWaWV3OjplbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdAorUmVuZGVyUmVwbGFj
ZWQqIExvY2FsRnJhbWVWaWV3OjplbWJlZGRlZFNWR1Jvb3QoKSBjb25zdAogewogICAgIENoZWNr
ZWRQdHIgcmVuZGVyVmlldyA9IHRoaXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZp
ZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVuZGVyT2JqZWN0KiBmaXJzdENo
aWxkID0gcmVuZGVyVmlldy0+Zmlyc3RDaGlsZCgpOworICAgIGF1dG8qIGZpcnN0Q2hpbGQgPSBy
ZW5kZXJWaWV3LT5maXJzdENoaWxkKCk7CiAKLSAgICAvLyBDdXJlbnRseSBvbmx5IGVtYmVkZGVk
IFNWRyBkb2N1bWVudHMgcGFydGljaXBhdGUgaW4gdGhlIHNpemUtbmVnb3RpYXRpb24gbG9naWMu
CisgICAgLy8gQ3VycmVudGx5IG9ubHkgZW1iZWRkZWQgU1ZHIGRvY3VtZW50cyBwYXJ0aWNpcGF0
ZSBpbiB0aGUgc2l6ZS1uZWdvdGlhdGlvbiBsb2dpYy4KICAgICBpZiAoYXV0byogc3ZnUm9vdCA9
IGR5bmFtaWNEb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdSb290PihmaXJzdENoaWxkKSkKICAgICAg
ICAgcmV0dXJuIHN2Z1Jvb3Q7CiAKLSAgICBpZiAoYXV0byogc3ZnUm9vdCA9IGR5bmFtaWNEb3du
Y2FzdDxSZW5kZXJTVkdSb290PihmaXJzdENoaWxkKSkKLSAgICAgICAgcmV0dXJuIHN2Z1Jvb3Q7
Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZHluYW1pY0Rvd25jYXN0PFJlbmRl
clNWR1Jvb3Q+KGZpcnN0Q2hpbGQpOwogfQogCiB2b2lkIExvY2FsRnJhbWVWaWV3OjphZGRFbWJl
ZGRlZE9iamVjdFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0JiBlbWJlZGRlZE9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaAppbmRleCAxYjFjNzBiY2MyNDkuLjA1OTli
YTE2YjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaApAQCAtNjUsNiArNjUs
NyBAQCBjbGFzcyBSZW5kZXJFbWJlZGRlZE9iamVjdDsKIGNsYXNzIFJlbmRlckxheWVyOwogY2xh
c3MgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJl
bmRlclJlcGxhY2VkOwogY2xhc3MgUmVuZGVyU2Nyb2xsYmFyUGFydDsKIGNsYXNzIFJlbmRlclN0
eWxlOwogY2xhc3MgUmVuZGVyVmlldzsKQEAgLTU3OCw3ICs1NzksNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIE5PREVMRVRFIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3QgZmlu
YWw7CiAKLSAgICBSZW5kZXJCb3gqIGVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0OworICAgIFJl
bmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBjb25zdDsKICAgICAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFRyYWNrc1JlcGFpbnRzKGJvb2wpOwogICAgIGJvb2wgaXNUcmFja2lu
Z1JlcGFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9pc1RyYWNraW5nUmVwYWludHM7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggM2Q0MjQ2ZWM1M2I2Li5kNzUzY2Vk
OGM4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC03MTEsNyAr
NzExLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxNaW5NYXhTaXplc0J5QXNw
ZWN0UmF0aW8oTGF5b3V0VW5pdCYgY29tcHV0ZWRNaW4KICAgICAvLyBhIHNpemUgb2YgdGhlIGlu
aXRpYWwgY29udGFpbmluZyBibG9jayBhbmQgdGhlIOKAnHN0cmV0Y2gtZml04oCdIHNpemluZyBv
ZiBub24tcmVwbGFjZWQgYmxvY2tzIGlmIHRoZXkgaGF2ZSBkZWZpbml0ZSB2YWx1ZXMuCiAgICAg
Ly8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2l6aW5nLTMvI2RlZmluaXRlCiAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwotICAgIEFTU0VSVChzdHls
ZVRvVXNlLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSB8fCBpc1JlbmRlclJlcGxhY2VkV2l0aElu
dHJpbnNpY1JhdGlvKCkpOworICAgIEFTU0VSVChzdHlsZVRvVXNlLmFzcGVjdFJhdGlvKCkuaGFz
UmF0aW8oKSB8fCBwcmVmZXJyZWRBc3BlY3RSYXRpbygpKTsKICAgICBhdXRvIGxvZ2ljYWxTaXpl
ID0gZGltZW5zaW9uID09IENvbnN0cmFpbkRpbWVuc2lvbjo6V2lkdGggPyBzdHlsZVRvVXNlLmxv
Z2ljYWxXaWR0aCgpIDogc3R5bGVUb1VzZS5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgLy8gaHR0cHM6
Ly93d3cudzMub3JnL1RSL2Nzcy1zaXppbmctNC8jYXNwZWN0LXJhdGlvLW1pbmltdW0KICAgICBp
ZiAobWluaW11bVNpemVUeXBlID09IE1pbmltdW1TaXplSXNBdXRvbWF0aWNDb250ZW50QmFzZWQ6
OlllcykgewpAQCAtMjkzOSw3ICsyOTM5LDYgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmZpbGxB
dmFpbGFibGVNZWFzdXJlKExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBMYXkKICAg
ICByZXR1cm4gYXZhaWxhYmxlTG9naWNhbFdpZHRoIC0gbWFyZ2luU3RhcnQgLSBtYXJnaW5FbmQ7
CiB9CiAKLQogdGVtcGxhdGU8dHlwZW5hbWUgS2V5d29yZD4gdm9pZCBSZW5kZXJCb3g6OmNvbXB1
dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocyhLZXl3b3JkLCBMYXlvdXRVbml0IGJvcmRl
ckFuZFBhZGRpbmcsIExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4
TG9naWNhbFdpZHRoKSBjb25zdAogewogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjpzYW1lX2FzPEtl
eXdvcmQsIENTUzo6S2V5d29yZDo6TWluSW50cmluc2ljPikKQEAgLTI5NTQsMTQgKzI5NTMsMTcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5d29yZD4gdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVJbnRy
aW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocygKICAgICAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lk
dGggPSBzdGQ6Om1heChtaW5Mb2dpY2FsV2lkdGgsIG1pbkNoaWxkcmVuTG9naWNhbFdpZHRoKTsK
ICAgICAgICAgICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtYXhMb2dpY2FsV2lk
dGgsIG1heENoaWxkcmVuTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmIChpc1JlbmRlclJlcGxhY2VkV2l0aEludHJpbnNpY1JhdGlvKCkgJiYgc3R5bGUoKS5s
b2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQoKSkgeworICAgICAgICB9IGVsc2UgaWYgKENoZWNr
ZWRQdHIgcmVuZGVyUmVwbGFjZWQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KCp0
aGlzKSkgewogICAgICAgICAgICAgLy8gRm9yIHJlcGxhY2VkIGVsZW1lbnRzIHdpdGggYW4gaW50
cmluc2ljIGFzcGVjdCByYXRpbyAoZS5nLiA8aW1nPikgYW5kIGEKICAgICAgICAgICAgIC8vIHNw
ZWNpZmllZCBibG9jayBzaXplLCBjb21wdXRlIHRoZSB0cmFuc2ZlcnJlZCBtaW4vbWF4LWNvbnRl
bnQgaW5saW5lIHNpemUKICAgICAgICAgICAgIC8vIHRocm91Z2ggdGhlIGludHJpbnNpYyByYXRp
byByYXRoZXIgdGhhbiB1c2luZyB0aGUgcmF3IG5hdHVyYWwgd2lkdGguCi0gICAgICAgICAgICBh
dXRvIGludHJpbnNpY1JhdGlvID0gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KCp0aGlzKS5jb21w
dXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKLSAgICAgICAgICAgIGF1dG8gY29tcHV0ZWRWYWx1
ZXMgPSBjb21wdXRlTG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KCksIGxvZ2ljYWxUb3AoKSk7
Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRCbG9ja1NpemUgPSBzdGQ6Om1heCgwX2x1LCBjb21w
dXRlZFZhbHVlcy5leHRlbnQgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsKLSAg
ICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IG1heExvZ2ljYWxXaWR0aCA9IExheW91dFVuaXQo
Y29udGVudEJsb2NrU2l6ZSAqIGludHJpbnNpY1JhdGlvKTsKKyAgICAgICAgICAgIGF1dG8gcHJl
ZmVycmVkUmF0aW8gPSByZW5kZXJSZXBsYWNlZC0+cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUo
KS5hc3BlY3RSYXRpb0RvdWJsZSgpOworICAgICAgICAgICAgaWYgKHByZWZlcnJlZFJhdGlvICYm
IHN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzU3BlY2lmaWVkKCkpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIGNvbXB1dGVkVmFsdWVzID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdo
dCgpLCBsb2dpY2FsVG9wKCkpOworICAgICAgICAgICAgICAgIGF1dG8gY29udGVudEJsb2NrU2l6
ZSA9IHN0ZDo6bWF4KDBfbHUsIGNvbXB1dGVkVmFsdWVzLmV4dGVudCAtIGJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IG1h
eExvZ2ljYWxXaWR0aCA9IExheW91dFVuaXQoY29udGVudEJsb2NrU2l6ZSAqIHByZWZlcnJlZFJh
dGlvKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGNvbXB1dGVJbnRyaW5z
aWNLZXl3b3JkTG9naWNhbFdpZHRocyhtaW5Mb2dpY2FsV2lkdGgsIG1heExvZ2ljYWxXaWR0aCk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgY29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dp
Y2FsV2lkdGhzKG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKICAgICB9CkBAIC0z
Njc3LDE1ICszNjc5LDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFNpemVUeXBlPiBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVNpemluZ0tlCiAgICAgYXV0byBtaW5N
YXhDb250ZW50ID0gWyZdIC0+IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gewogICAgICAgICAv
LyBGSVhNRTogVGhlIENTUyBzaXppbmcgc3BlYyBpcyBjb25zaWRlcmluZyBjaGFuZ2luZyB3aGF0
IG1pbi1jb250ZW50L21heC1jb250ZW50IHNob3VsZCByZXNvbHZlIHRvLgogICAgICAgICAvLyBJ
ZiB0aGF0IGhhcHBlbnMsIHRoaXMgY29kZSB3aWxsIGhhdmUgdG8gY2hhbmdlLgotICAgICAgICBp
ZiAoYXV0byogcmVuZGVySW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1hZ2U+KHRoaXMp
KSB7CisgICAgICAgIGlmIChDaGVja2VkUHRyIHJlbmRlckltYWdlID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlckltYWdlPih0aGlzKSkgewogICAgICAgICAgICAgYXV0byBjb21wdXRlZEZpeGVkTG9n
aWNhbFdpZHRoID0gc3R5bGUoKS5sb2dpY2FsV2lkdGgoKS50cnlGaXhlZCgpOworICAgICAgICAg
ICAgYXV0byBwcmVmZXJyZWRSYXRpbyA9IHJlbmRlckltYWdlLT5wcmVmZXJyZWRBc3BlY3RSYXRp
b0FzU2l6ZSgpOwogICAgICAgICAgICAgaWYgKGNvbXB1dGVkRml4ZWRMb2dpY2FsV2lkdGggJiYg
IXN0eWxlKCkuYXNwZWN0UmF0aW8oKS5oYXNSYXRpbygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBpbnRyaW5zaWNSYXRpbyA9IHJlbmRlckltYWdlLT5pbnRyaW5zaWNSYXRpbygpOwogICAgICAg
ICAgICAgICAgIHJldHVybiByZXNvbHZlSGVpZ2h0Rm9yUmF0aW8oCiAgICAgICAgICAgICAgICAg
ICAgIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAg
Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgTGF5
b3V0VW5pdCB7IGNvbXB1dGVkRml4ZWRMb2dpY2FsV2lkdGgtPnJlc29sdmVab29tKHN0eWxlKCku
dXNlZFpvb21Gb3JMZW5ndGgoKSkgfSwKLSAgICAgICAgICAgICAgICAgICAgaW50cmluc2ljUmF0
aW8udHJhbnNwb3NlZFNpemUoKS5hc3BlY3RSYXRpbygpLAorICAgICAgICAgICAgICAgICAgICBw
cmVmZXJyZWRSYXRpby50cmFuc3Bvc2VkU2l6ZSgpLmFzcGVjdFJhdGlvKCksCiAgICAgICAgICAg
ICAgICAgICAgIEJveFNpemluZzo6Q29udGVudEJveAogICAgICAgICAgICAgICAgICk7CiAgICAg
ICAgICAgICB9CkBAIC0zNjk1LDggKzM2OTcsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTaXplVHlw
ZT4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVTaXppbmdLZQog
ICAgICAgICAgICAgICAgIC8vIHRoZSBhc3BlY3QgcmF0aW8uCiAgICAgICAgICAgICAgICAgaWYg
KCFpc0ZsZXhJdGVtKCkgfHwgZG93bmNhc3Q8UmVuZGVyRmxleGlibGVCb3g+KHBhcmVudCgpKS0+
aXNIb3Jpem9udGFsRmxvdygpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAg
ICAgICAgICAgICAgIGlmIChhdXRvIG92ZXJyaWRpbmdXaWR0aCA9IG92ZXJyaWRpbmdCb3JkZXJC
b3hMb2dpY2FsV2lkdGgoKTsgb3ZlcnJpZGluZ1dpZHRoICYmICFyZW5kZXJJbWFnZS0+aW50cmlu
c2ljUmF0aW8oKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZl
SGVpZ2h0Rm9yUmF0aW8oYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBib3JkZXJBbmRQ
YWRkaW5nTG9naWNhbEhlaWdodCgpLCBjb250ZW50Qm94TG9naWNhbFdpZHRoKCpvdmVycmlkaW5n
V2lkdGgpLCByZW5kZXJJbWFnZS0+aW50cmluc2ljUmF0aW8oKS50cmFuc3Bvc2VkU2l6ZSgpLmFz
cGVjdFJhdGlvKCksIEJveFNpemluZzo6Q29udGVudEJveCk7CisgICAgICAgICAgICAgICAgaWYg
KGF1dG8gb3ZlcnJpZGluZ1dpZHRoID0gb3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxXaWR0aCgp
OyBvdmVycmlkaW5nV2lkdGggJiYgIXByZWZlcnJlZFJhdGlvLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVIZWlnaHRGb3JSYXRpbyhib3JkZXJBbmRQYWRkaW5n
TG9naWNhbFdpZHRoKCksIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCksIGNvbnRlbnRC
b3hMb2dpY2FsV2lkdGgoKm92ZXJyaWRpbmdXaWR0aCksIHByZWZlcnJlZFJhdGlvLnRyYW5zcG9z
ZWRTaXplKCkuYXNwZWN0UmF0aW8oKSwgQm94U2l6aW5nOjpDb250ZW50Qm94KTsKICAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGlmIChhdXRv
IGhlaWdodCA9IGhlaWdodEZyb21Dcm9zc0F4aXNPdmVycmlkZUFuZEFzcGVjdFJhdGlvKCkpCkBA
IC01Mjc0LDI4ICs1Mjc2LDI3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNh
bFdpZHRoRnJvbUFzcGVjdFJhdGlvKCkgY29uc3QKICAgICByZXR1cm4gY29uc3RyYWluTG9naWNh
bFdpZHRoQnlNaW5NYXgobG9naWNhbFdpZHRoLCBjb250YWluZXJXaWR0aEluSW5saW5lRGlyZWN0
aW9uLCAqY29udGFpbmluZ0Jsb2NrKCksIEFsbG93SW50cmluc2ljOjpObyk7CiB9CiAKLWJvb2wg
UmVuZGVyQm94Ojppc1JlbmRlclJlcGxhY2VkV2l0aEludHJpbnNpY1JhdGlvKCkgY29uc3QKLXsK
LSAgICBpZiAoYXV0byogcmVwbGFjZWQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+
KHRoaXMpKQotICAgICAgICByZXR1cm4gcmVwbGFjZWQtPmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RS
YXRpbygpOwotICAgIHJldHVybiBmYWxzZTsKLX0KIAotc3RkOjpvcHRpb25hbDxkb3VibGU+IFJl
bmRlckJveDo6cmVzb2x2ZUFzcGVjdFJhdGlvKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBSZW5kZXJCb3g6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICBpZiAoYXV0
byogcmVwbGFjZWRFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclJlcGxhY2VkPih0aGlz
KSkgCi0gICAgICAgIHJldHVybiByZXBsYWNlZEVsZW1lbnQtPmNvbXB1dGVJbnRyaW5zaWNBc3Bl
Y3RSYXRpbygpOwogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSkKICAg
ICAgICAgcmV0dXJuIHN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCk7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAorRmxvYXRTaXplIFJl
bmRlckJveDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAoreworICAgIGlmIChz
dHlsZSgpLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSkKKyAgICAgICAgcmV0dXJuIEZsb2F0U2l6
ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1
ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CisgICAgcmV0dXJu
IHsgfTsKK30KKwogc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJveDo6
Y29tcHV0ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAg
TGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1pblNpemUgPSBMYXlvdXRVbml0KCk7Ci0gICAgTGF5b3V0
VW5pdCB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKLSAgICBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gYXNwZWN0UmF0aW8gPSByZXNvbHZlQXNwZWN0UmF0aW8oKTsKKyAgICBh
dXRvIHRyYW5zZmVycmVkTWluU2l6ZSA9IExheW91dFVuaXQgeyB9OworICAgIGF1dG8gdHJhbnNm
ZXJyZWRNYXhTaXplID0gTGF5b3V0VW5pdDo6bWF4KCk7CisgICAgYXV0byBhc3BlY3RSYXRpbyA9
IHByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CiAgICAgaWYgKCFhc3BlY3RSYXRpbykKICAgICAgICAg
cmV0dXJuIHsgdHJhbnNmZXJyZWRNaW5TaXplLCB0cmFuc2ZlcnJlZE1heFNpemUgfTsKIApAQCAt
NTMxNCw5ICs1MzE1LDkgQEAgc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRl
ckJveDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21Bc3BlY3QKIAogc3RkOjpwYWlyPExh
eW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxIZWln
aHRGcm9tQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRN
aW5TaXplID0gTGF5b3V0VW5pdCgpOwotICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNYXhTaXpl
ID0gTGF5b3V0VW5pdDo6bWF4KCk7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJh
dGlvID0gcmVzb2x2ZUFzcGVjdFJhdGlvKCk7CisgICAgYXV0byB0cmFuc2ZlcnJlZE1pblNpemUg
PSBMYXlvdXRVbml0IHsgfTsKKyAgICBhdXRvIHRyYW5zZmVycmVkTWF4U2l6ZSA9IExheW91dFVu
aXQ6Om1heCgpOworICAgIGF1dG8gYXNwZWN0UmF0aW8gPSBwcmVmZXJyZWRBc3BlY3RSYXRpbygp
OwogICAgIGlmICghYXNwZWN0UmF0aW8pCiAgICAgICAgIHJldHVybiB7IHRyYW5zZmVycmVkTWlu
U2l6ZSwgdHJhbnNmZXJyZWRNYXhTaXplIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guaAppbmRleCAxODc4YzdkZWZiZWUuLjk4NTYxNzZiZGI4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaApAQCAtNjM5LDYgKzYzOSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIGlzQmxvY2tM
ZXZlbFJlcGxhY2VkT3JBdG9taWNJbmxpbmUoKSAmJiAoaXNJbWFnZSgpIHx8IGlzUmVuZGVyVmlk
ZW8oKSB8fCBpc1JlbmRlckhUTUxDYW52YXMoKSB8fCBpc1JlbmRlclZpZXdUcmFuc2l0aW9uQ2Fw
dHVyZSgpKTsgfQogCisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcHJlZmVycmVk
QXNwZWN0UmF0aW8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3Bl
Y3RSYXRpb0FzU2l6ZSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyQm94KFR5cGUs
IEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8VHlwZUZsYWc+ID0geyB9LCBUeXBl
U3BlY2lmaWNGbGFncyA9IHsgfSk7CiAgICAgUmVuZGVyQm94KFR5cGUsIERvY3VtZW50JiwgUmVu
ZGVyU3R5bGUmJiwgT3B0aW9uU2V0PFR5cGVGbGFnPiA9IHsgfSwgVHlwZVNwZWNpZmljRmxhZ3Mg
PSB7IH0pOwpAQCAtNjg0LDEwICs2ODcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBza2lwQ29u
dGFpbmluZ0Jsb2NrRm9yUGVyY2VudEhlaWdodENhbGN1bGF0aW9uKGNvbnN0IFJlbmRlckJveCYg
Y29udGFpbmluZ0Jsb2NrLCBib29sIGlzUGVycGVuZGljdWxhcldyaXRpbmdNb2RlKSBjb25zdDsK
IAogICAgIHZvaWQgaW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnRJZk5lZWRlZChj
b25zdCBJbnRTaXplJik7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcmVzb2x2ZUFzcGVj
dFJhdGlvKCkgY29uc3Q7CiAgICAgYm9vbCBOT0RFTEVURSBzaG91bGRJZ25vcmVBc3BlY3RSYXRp
bygpIGNvbnN0OwotICAgIGJvb2wgaXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbygp
IGNvbnN0OwogICAgIGJvb2wgc2hvdWxkQ29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRp
bygpIGNvbnN0OwogICAgIGJvb2wgaXNSZXNvbHZlYWJsZVN0cmV0Y2hTaXplKGNvbnN0IGF1dG8m
IHNpemUpIGNvbnN0IHsgcmV0dXJuIHNpemUuaXNTdHJldGNoKCkgJiYgY29udGFpbmluZ0Jsb2Nr
SGFzRGVmaW5pdGVCbG9ja1NpemUoKTsgfQogICAgIGJvb2wgaXNVbnJlc29sdmVhYmxlU3RyZXRj
aFNpemUoY29uc3QgYXV0byYgc2l6ZSkgY29uc3QgeyByZXR1cm4gc2l6ZS5pc1N0cmV0Y2goKSAm
JiAhY29udGFpbmluZ0Jsb2NrSGFzRGVmaW5pdGVCbG9ja1NpemUoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggNzRiM2UwYjhkMmNh
Li5mYmNjNmUyN2U3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmNwcApAQCAtODc5LDcgKzg3OSw3IEBAIHN0YXRpYyBib29sIGlzU1ZHUm9vdFdp
dGhJbnRyaW5zaWNBc3BlY3RSYXRpbyhjb25zdCBSZW5kZXJCb3gmIGZsZXhJdGVtKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgLy8gSXQncyBjb21tb24gZm9yIHNvbWUgcmVwbGFjZWQgZWxl
bWVudHMsIHN1Y2ggYXMgU1ZHcywgdG8gaGF2ZSBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvcyBidXQg
bm8gaW50cmluc2ljIHNpemVzLgogICAgIC8vIFRoYXQncyB3aHkgaXQgaXNuJ3QgZW5vdWdoIGp1
c3QgdG8gY2hlY2sgZm9yIGludHJpbnNpYyBzaXplcyBpbiB0aG9zZSBjYXNlcy4KLSAgICByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKS5jb21wdXRlSW50cmluc2ljQXNw
ZWN0UmF0aW8oKSA+IDA7CisgICAgcmV0dXJuIGZsZXhJdGVtLnByZWZlcnJlZEFzcGVjdFJhdGlv
QXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKSA+IDA7CiB9OwogCiBzdGF0aWMgYm9vbCBmbGV4
SXRlbUhhc0FzcGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYgZmxleEl0ZW0pCkBAIC0xMjYyLDEx
ICsxMjYyLDExIEBAIGRvdWJsZSBSZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkQXNwZWN0UmF0
aW9Gb3JGbGV4SXRlbShjb25zdCBSZW5kZXJCb3gmIGZsZXhJCiAgICAgYXV0byBmbGV4SXRlbUFz
cGVjdFJhdGlvID0gWyZdIHsKICAgICAgICAgYXV0byBmbGV4SXRlbUludHJpbnNpY1NpemUgPSBM
YXlvdXRTaXplIHsgZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGZsZXhJdGVtLmlu
dHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OwogICAgICAgICBpZiAoZmxleEl0ZW0uaXNSZW5kZXJP
ckxlZ2FjeVJlbmRlclNWR1Jvb3QoKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5k
ZXJSZXBsYWNlZD4oZmxleEl0ZW0pLmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAg
ICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNw
ZWN0UmF0aW9Eb3VibGUoKTsKICAgICAgICAgaWYgKGZsZXhJdGVtLnN0eWxlKCkuYXNwZWN0UmF0
aW8oKS5pc1JhdGlvKCkgfHwgKGZsZXhJdGVtLnN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9B
bmRSYXRpbygpICYmIGZsZXhJdGVtSW50cmluc2ljU2l6ZS5pc0VtcHR5KCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZsZXhJdGVtLnN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCk7Ci0gICAgICAg
IGlmIChhdXRvKiByZXBsYWNlZEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFj
ZWQ+KGZsZXhJdGVtKSkKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlZEVsZW1lbnQtPmNvbXB1
dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOworICAgICAgICBpZiAoaXM8UmVuZGVyUmVwbGFjZWQ+
KGZsZXhJdGVtKSkKKyAgICAgICAgICAgIHJldHVybiBmbGV4SXRlbS5wcmVmZXJyZWRBc3BlY3RS
YXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAKICAgICAgICAgQVNTRVJUKGZsZXhJ
dGVtLmludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7CiAgICAgICAgIHJldHVybiBmbGV4SXRlbS5p
bnRyaW5zaWNMb2dpY2FsV2lkdGgoKS50b0RvdWJsZSgpIC8gZmxleEl0ZW0uaW50cmluc2ljTG9n
aWNhbEhlaWdodCgpLnRvRG91YmxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAppbmRleCA5YjIwOTk1YmIzZmIuLmI3NTk2NDI0OGYwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC05MzgsMjYgKzkzOCwxMyBAQCB2b2lkIFJl
bmRlckltYWdlOjpsYXlvdXQoKQogICAgIH0KIH0KIAotRmxvYXRTaXplIFJlbmRlckltYWdlOjpj
b21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CitGbG9hdFNpemUgUmVuZGVySW1hZ2U6OnByZWZl
cnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIXNob3VsZEFwcGx5
U2l6ZUNvbnRhaW5tZW50KCkpOwotICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IFJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpOwotCi0gICAgLy8gT3VyIGludHJpbnNpY1NpemUg
aXMgZW1wdHkgaWYgd2UncmUgcmVuZGVyaW5nIGdlbmVyYXRlZCBpbWFnZXMgd2l0aCByZWxhdGl2
ZSB3aWR0aC9oZWlnaHQuIEZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGludHJpbnNpYyBzaXplIHRvIHVz
ZS4KLSAgICBpZiAoaW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgJiYgKGltYWdlUmVzb3VyY2UoKS5p
bWFnZUhhc1JlbGF0aXZlV2lkdGgoKSB8fCBpbWFnZVJlc291cmNlKCkuaW1hZ2VIYXNSZWxhdGl2
ZUhlaWdodCgpKSkgewotICAgICAgICBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdCbG9jayA9IGlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpID8gY29udGFpbmVyKCkgOiB0aGlzLT5jb250YWluaW5nQmxv
Y2soKTsKLSAgICAgICAgaWYgKGF1dG8qIGJveCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+
KCpjb250YWluaW5nQmxvY2spKSB7Ci0gICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldFdpZHRo
KGJveC0+Y29udGVudEJveExvZ2ljYWxXaWR0aCgpKTsKLSAgICAgICAgICAgIGludHJpbnNpY1Np
emUuc2V0SGVpZ2h0KGJveC0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChBdmFpbGFibGVMb2dpY2Fs
SGVpZ2h0VHlwZTo6SW5jbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIHJldHVybiBpbnRyaW5zaWNTaXplOwotfQotCi1GbG9hdFNpemUgUmVuZGVySW1h
Z2U6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIXNob3VsZEFw
cGx5U2l6ZUNvbnRhaW5tZW50KCkpOworICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3Nl
cyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQsIGJ1dCB0aGUKKyAgICAvLyBhc3Bl
Y3QgcmF0aW8gZnJvbSB0aGUgQ1NTIGFzcGVjdC1yYXRpbyBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFp
bGFibGUgdmlhIHRoZQorICAgIC8vIGJhc2UgY2xhc3MgKHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1h
Z2UgZGF0YSkuCisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisgICAgICAg
IHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKIAog
ICAgIC8vIERvbid0IGNvbXB1dGUgYW4gaW50cmluc2ljIHJhdGlvIHRvIHByZXNlcnZlIGhpc3Rv
cmljYWwgV2ViS2l0IGJlaGF2aW9yIGlmIHdlJ3JlIHBhaW50aW5nIGFsdCB0ZXh0IGFuZC9vciBh
IGJyb2tlbiBpbWFnZS4KICAgICBpZiAoc2hvdWxkRGlzcGxheUJyb2tlbkltYWdlSWNvbigpKSB7
CkBAIC05NjYsMjEgKzk1MywzMiBAQCBGbG9hdFNpemUgUmVuZGVySW1hZ2U6OnByZWZlcnJlZEFz
cGVjdFJhdGlvKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgMS4wLCAxLjAgfTsKICAgICB9CiAK
LSAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisgICAg
aWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpKSB7CisgICAgICAgIGF1
dG8gcmF0aW8gPSBzdmdSb290LT5wcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOworICAgICAg
ICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgIXJhdGlvLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIHJhdGlvID0gcmF0aW8udHJhbnNwb3NlZFNpemUoKTsKKworICAgICAgICBpZiAo
c3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSB8fCAoc3R5bGUoKS5hc3BlY3RSYXRpbygp
LmlzQXV0b0FuZFJhdGlvKCkgJiYgcmF0aW8uaXNFbXB0eSgpKSkKKyAgICAgICAgICAgIHJhdGlv
ID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxX
aWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsK
KworICAgICAgICByZXR1cm4gcmF0aW87CisgICAgfQorCisgICAgcmV0dXJuIFJlbmRlclJlcGxh
Y2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOwogfQogCiBib29sIFJlbmRlckltYWdl
OjpzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3QKIHsKICAgICBpZiAoUmVu
ZGVyUmVwbGFjZWQ6OnNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGVtYmVkZGVkQ29udGVudEJveCgpOworICAgIHJldHVy
biBlbWJlZGRlZFNWR1Jvb3QoKTsKIH0KIAotUmVuZGVyQm94KiBSZW5kZXJJbWFnZTo6ZW1iZWRk
ZWRDb250ZW50Qm94KCkgY29uc3QKK1JlbmRlclJlcGxhY2VkKiBSZW5kZXJJbWFnZTo6ZW1iZWRk
ZWRTVkdSb290KCkgY29uc3QKIHsKICAgICBpZiAoUmVmUHRyIGNhY2hlZEltYWdlID0gdGhpcy0+
Y2FjaGVkSW1hZ2UoKSkgewogICAgICAgICBpZiAoUmVmUHRyIGltYWdlID0gZHluYW1pY0Rvd25j
YXN0PFNWR0ltYWdlPihjYWNoZWRJbWFnZS0+aW1hZ2UoKSkpCi0gICAgICAgICAgICByZXR1cm4g
aW1hZ2UtPmVtYmVkZGVkQ29udGVudEJveCgpOworICAgICAgICAgICAgcmV0dXJuIGltYWdlLT5l
bWJlZGRlZFNWR1Jvb3QoKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDJjZTc1NDk1MmFmZS4uZDQ2MDExMWNj
NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtODQsMTQgKzg0
LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzTXVsdGlSZXByZXNlbnRhdGlvbkhFSUMoKSBjb25z
dDsKICNlbmRpZgogCisgICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkg
Y29uc3QgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICBSZW5kZXJJbWFnZShUeXBlLCBFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9uU2V0PFJlcGxhY2VkRmxhZz4sIFN0eWxlOjpJbWFnZSog
PSBudWxscHRyLCBjb25zdCBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8gPSAxLjBmKTsKICAg
ICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRJbnZh
bGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3QgZmluYWw7Ci0gICAgUmVuZGVyQm94KiBlbWJl
ZGRlZENvbnRlbnRCb3goKSBjb25zdCBmaW5hbDsKLSAgICBGbG9hdFNpemUgY29tcHV0ZUludHJp
bnNpY1NpemUoKSBjb25zdCBmaW5hbDsKLSAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0
aW8oKSBjb25zdCBmaW5hbDsKKyAgICBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkg
Y29uc3QgZmluYWw7CiAgICAgYm9vbCBmb3JlZ3JvdW5kSXNLbm93blRvQmVPcGFxdWVJblJlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYgbG9jYWxSZWN0LCB1bnNpZ25lZCBtYXhEZXB0aFRvVGVzdCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZTo6RGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IGYwM2ExM2Y3ZWIxMC4uZTg0MTE0
ODQ0ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRvckJveC5oIgogI2luY2x1
ZGUgIklubGluZUl0ZXJhdG9yTGluZUJveElubGluZXMuaCIKICNpbmNsdWRlICJMYXlvdXRSZXBh
aW50ZXIuaCIKKyNpbmNsdWRlICJMZWdhY3lSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVkZSAiTGlu
ZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWUuaCIKICNpbmNsdWRlICJQb3NpdGlv
bmVkTGF5b3V0Q29uc3RyYWludHMuaCIKQEAgLTU2LDYgKzU3LDcgQEAKICNpbmNsdWRlICJSZW5k
ZXJPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUrR2V0dGVyc0lubGluZXMu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZStTZXR0ZXJzSW5saW5lcy5oIgorI2luY2x1ZGUgIlJl
bmRlclNWR1Jvb3QuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZGVvLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtNDY4LDY2ICs0NzAsNTUgQEAg
c3RhdGljIGJvb2wgaXNWaWRlb1dpdGhEZWZhdWx0T2JqZWN0U2l6ZShjb25zdCBSZW5kZXJSZXBs
YWNlZCogbWF5YmVWaWRlbykKICAgICBVTlVTRURfUEFSQU0obWF5YmVWaWRlbyk7CiAjZW5kaWYK
ICAgICByZXR1cm4gZmFsc2U7Ci19IAorfQogCi12b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRl
QXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChSZW5kZXJCb3gqIGNvbnRlbnRSZW5k
ZXJlciwgRmxvYXRTaXplJiBjb25zdHJhaW5lZFNpemUsIEZsb2F0U2l6ZSYgcHJlZmVycmVkQXNw
ZWN0UmF0aW8pIGNvbnN0CitzdGF0aWMgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXplRm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyUmVwbGFjZWQmIHJlcGxhY2VkUmVuZGVyZXIpCiB7Ci0gICAg
RmxvYXRTaXplIGludHJpbnNpY1NpemU7Ci0gICAgaWYgKHNob3VsZEFwcGx5U2l6ZU9ySW5saW5l
U2l6ZUNvbnRhaW5tZW50KCkpIHsKLSAgICAgICAgaW50cmluc2ljU2l6ZSA9IFJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpOwotICAgICAgICBwcmVmZXJyZWRBc3BlY3RSYXRp
byA9IFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOwotICAgIH0gZWxzZSBp
ZiAoY29udGVudFJlbmRlcmVyKSB7Ci0gICAgICAgIGJvb2wgY29udGVudElzUmVuZGVyUmVwbGFj
ZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlclJlcGxhY2VkID0gZHluYW1pY0Rv
d25jYXN0PFJlbmRlclJlcGxhY2VkPihjb250ZW50UmVuZGVyZXIpKSB7Ci0gICAgICAgICAgICBp
bnRyaW5zaWNTaXplID0gcmVuZGVyUmVwbGFjZWQtPmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7Ci0g
ICAgICAgICAgICBwcmVmZXJyZWRBc3BlY3RSYXRpbyA9IHJlbmRlclJlcGxhY2VkLT5wcmVmZXJy
ZWRBc3BlY3RSYXRpbygpOwotICAgICAgICAgICAgY29udGVudElzUmVuZGVyUmVwbGFjZWQgPSB0
cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRp
bygpIHx8IChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNBdXRvQW5kUmF0aW8oKSAmJiBwcmVmZXJy
ZWRBc3BlY3RSYXRpby5pc0VtcHR5KCkpKQotICAgICAgICAgICAgcHJlZmVycmVkQXNwZWN0UmF0
aW8gPSBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgpLmFzcGVjdFJhdGlvKCkud2lk
dGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpbygpLmhlaWdodCgpLnZhbHVlKTsKKyAgICBB
U1NFUlQoIXJlcGxhY2VkUmVuZGVyZXIuc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSk7Cisg
ICAgaWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IHJlcGxhY2VkUmVuZGVyZXIuZW1iZWRkZWRTVkdS
b290KCkpIHsKKyAgICAgICAgYXV0byBpbnRyaW5zaWNTaXplID0gWyZdIHsKKyAgICAgICAgICAg
IGlmIChDaGVja2VkUHRyIHJvb3QgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyU1ZHUm9vdD4oKnN2
Z1Jvb3QpKQorICAgICAgICAgICAgICAgIHJldHVybiByb290LT5jb21wdXRlSW50cmluc2ljU2l6
ZSgpOworICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PExlZ2FjeVJlbmRlclNWR1Jvb3Q+KCpz
dmdSb290KS5jb21wdXRlSW50cmluc2ljU2l6ZSgpOworICAgICAgICB9KCk7CisgICAgICAgIGlu
dHJpbnNpY1NpemUuc2NhbGUocmVwbGFjZWRSZW5kZXJlci5zdHlsZSgpLnVzZWRab29tKCkpOwor
ICAgICAgICBpZiAoQ2hlY2tlZFB0ciBpbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFn
ZT4ocmVwbGFjZWRSZW5kZXJlcikpCisgICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNjYWxlKGlt
YWdlLT5pbWFnZURldmljZVBpeGVsUmF0aW8oKSk7CisgICAgICAgIGlmICghcmVwbGFjZWRSZW5k
ZXJlci5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQorICAgICAgICAgICAgaW50cmluc2ljU2l6
ZSA9IGludHJpbnNpY1NpemUudHJhbnNwb3NlZFNpemUoKTsKKyAgICAgICAgcmV0dXJuIGludHJp
bnNpY1NpemU7CisgICAgfQogCi0gICAgICAgIC8vIEhhbmRsZSB6b29tICYgdmVydGljYWwgd3Jp
dGluZyBtb2RlcyBoZXJlLCBhcyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgZG9lc24ndCBrbm93IGFi
b3V0IHRoZW0uCi0gICAgICAgIGludHJpbnNpY1NpemUuc2NhbGUoc3R5bGUoKS51c2VkWm9vbSgp
KTsKKyAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUgeyByZXBsYWNlZFJlbmRlcmVy
LmludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCByZXBsYWNlZFJlbmRlcmVyLmludHJpbnNpY0xvZ2lj
YWxIZWlnaHQoKSB9OworICAgIGlmIChDaGVja2VkUHRyIGltYWdlID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlckltYWdlPihyZXBsYWNlZFJlbmRlcmVyKTsgaW1hZ2UgJiYgaW50cmluc2ljU2l6ZS5p
c0VtcHR5KCkgJiYgKGltYWdlLT5pbWFnZVJlc291cmNlKCkuaW1hZ2VIYXNSZWxhdGl2ZVdpZHRo
KCkgfHwgaW1hZ2UtPmltYWdlUmVzb3VyY2UoKS5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkpKSB7
CisgICAgICAgIENoZWNrZWRQdHIgY29udGFpbmluZ0Jsb2NrID0gcmVwbGFjZWRSZW5kZXJlci5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IHJlcGxhY2VkUmVuZGVyZXIuY29udGFpbmVyKCkgOiBy
ZXBsYWNlZFJlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpOworICAgICAgICBpZiAoQ2hlY2tlZFB0
ciBib3ggPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyQm94Pihjb250YWluaW5nQmxvY2spKSB7Cisg
ICAgICAgICAgICBpbnRyaW5zaWNTaXplLnNldFdpZHRoKGJveC0+Y29udGVudEJveExvZ2ljYWxX
aWR0aCgpKTsKKyAgICAgICAgICAgIGludHJpbnNpY1NpemUuc2V0SGVpZ2h0KGJveC0+YXZhaWxh
YmxlTG9naWNhbEhlaWdodChBdmFpbGFibGVMb2dpY2FsSGVpZ2h0VHlwZTo6SW5jbHVkZU1hcmdp
bkJvcmRlclBhZGRpbmcpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gaW50cmluc2lj
U2l6ZTsKK30KIAotICAgICAgICBpZiAoYXV0byogaW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVu
ZGVySW1hZ2U+KCp0aGlzKSkKLSAgICAgICAgICAgIGludHJpbnNpY1NpemUuc2NhbGUoaW1hZ2Ut
PmltYWdlRGV2aWNlUGl4ZWxSYXRpbygpKTsKK3ZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJ
bnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKEZsb2F0U2l6
ZSYgaW50cmluc2ljU2l6ZSwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgY29uc3QKK3sKKyAg
ICBpZiAoc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSkgeworICAgICAg
ICBpbnRyaW5zaWNTaXplID0gRmxvYXRTaXplIHsgaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGlu
dHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OworICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IFJlbmRl
clJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGludHJpbnNpY1NpemUgPSBjb21wdXRlSW50cmluc2ljU2l6ZUZvclJlbmRlcmVyKCp0
aGlzKTsKKyAgICAgICAgaW50cmluc2ljUmF0aW8gPSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6
ZSgpOwogCi0gICAgICAgIC8vIFVwZGF0ZSBvdXIgaW50cmluc2ljIHNpemUgdG8gbWF0Y2ggd2hh
dCB0aGUgY29udGVudCByZW5kZXJlciBoYXMgY29tcHV0ZWQsIHNvIHRoYXQgd2hlbiB3ZQotICAg
ICAgICAvLyBjb25zdHJhaW4gdGhlIHNpemUgYmVsb3csIHRoZSBjb3JyZWN0IGludHJpbnNpYyBz
aXplIHdpbGwgYmUgb2J0YWluZWQgZm9yIGNvbXBhcmlzb24gYWdhaW5zdAotICAgICAgICAvLyBt
aW4gYW5kIG1heCB3aWR0aHMuCi0gICAgICAgIGlmIChjb250ZW50SXNSZW5kZXJSZXBsYWNlZCAm
JiBpc1JlbmRlcldpZGdldCgpKSB7Ci0gICAgICAgICAgICAvLyBGb3IgUmVuZGVyV2lkZ2V0IGNv
bnRlbnQgKGUuZy4gPG9iamVjdD4gZW1iZWRkaW5nIGFuIFNWRyBkb2N1bWVudCksIGFsd2F5cyB1
cGRhdGUKLSAgICAgICAgICAgIC8vIG1faW50cmluc2ljU2l6ZSB0byByZWZsZWN0IGN1cnJlbnQg
aW50cmluc2ljIGRpbWVuc2lvbnMsIGFwcGx5aW5nIENTUyBkZWZhdWx0IGZhbGxiYWNrCi0gICAg
ICAgICAgICAvLyB2YWx1ZXMgKDMwMHgxNTApIGZvciBkaW1lbnNpb25zIHdpdGggbm8gaW50cmlu
c2ljIHZhbHVlIChlLmcuIHBlcmNlbnRhZ2Utc2l6ZWQgb3IKLSAgICAgICAgICAgIC8vIHJlbW92
ZWQgYXR0cmlidXRlcykuIFRoaXMgcHJldmVudHMgc3RhbGUgY2FjaGVkIHNpemVzIHdoZW4gYXR0
cmlidXRlcyBsaWtlIHdpZHRoL2hlaWdodAotICAgICAgICAgICAgLy8gYXJlIHJlbW92ZWQuIE5v
dGU6IHRoaXMgZG9lcyBub3QgYXBwbHkgdG8gUmVuZGVySW1hZ2UgKDxpbWcgc3JjPSJzdmciPiks
IHdoaWNoIG1hbmFnZXMKLSAgICAgICAgICAgIC8vIGl0cyBvd24gaW50cmluc2ljIHNpemUgdmlh
IHNldEludHJpbnNpY1NpemUoKSBkdXJpbmcgaW1hZ2UgbG9hZC4KLSAgICAgICAgICAgIGF1dG8g
c2l6ZVRvQ2FjaGUgPSBpbnRyaW5zaWNTaXplOworICAgICAgICBhdXRvIHNpemVUb0NhY2hlID0g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGludHJpbnNpY1NpemUgOiBpbnRyaW5zaWNTaXpl
LnRyYW5zcG9zZWRTaXplKCk7CisgICAgICAgIGlmIChlbWJlZGRlZFNWR1Jvb3QoKSAmJiBpc1Jl
bmRlcldpZGdldCgpKSB7CiAgICAgICAgICAgICBpZiAoIXNpemVUb0NhY2hlLndpZHRoKCkpCiAg
ICAgICAgICAgICAgICAgc2l6ZVRvQ2FjaGUuc2V0V2lkdGgoY0RlZmF1bHRXaWR0aCk7CiAgICAg
ICAgICAgICBpZiAoIXNpemVUb0NhY2hlLmhlaWdodCgpKQogICAgICAgICAgICAgICAgIHNpemVU
b0NhY2hlLnNldEhlaWdodChjRGVmYXVsdEhlaWdodCk7CiAgICAgICAgICAgICBtX2ludHJpbnNp
Y1NpemUgPSBMYXlvdXRTaXplKHNpemVUb0NhY2hlKTsKLSAgICAgICAgfSBlbHNlIGlmICghcHJl
ZmVycmVkQXNwZWN0UmF0aW8uaXNFbXB0eSgpICYmICFpbnRyaW5zaWNTaXplLmlzWmVybygpKQot
ICAgICAgICAgICAgbV9pbnRyaW5zaWNTaXplID0gTGF5b3V0U2l6ZShpbnRyaW5zaWNTaXplKTsK
LQotICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKLSAgICAgICAgICAg
IGlmICghcHJlZmVycmVkQXNwZWN0UmF0aW8uaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHBy
ZWZlcnJlZEFzcGVjdFJhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW8udHJhbnNwb3NlZFNpemUo
KTsKLSAgICAgICAgICAgIGludHJpbnNpY1NpemUgPSBpbnRyaW5zaWNTaXplLnRyYW5zcG9zZWRT
aXplKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpbnRyaW5zaWNTaXplID0g
Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKLSAgICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8gPSB0
aGlzLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpOwotICAgICAgICBpZiAoIXByZWZlcnJlZEFzcGVj
dFJhdGlvLmlzRW1wdHkoKSAmJiAhaW50cmluc2ljU2l6ZS5pc1plcm8oKSkKLSAgICAgICAgICAg
IG1faW50cmluc2ljU2l6ZSA9IExheW91dFNpemUoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IGludHJpbnNpY1NpemUgOiBpbnRyaW5zaWNTaXplLnRyYW5zcG9zZWRTaXplKCkpOworICAgICAg
ICB9IGVsc2UgaWYgKCFpbnRyaW5zaWNSYXRpby5pc0VtcHR5KCkgJiYgIWludHJpbnNpY1NpemUu
aXNaZXJvKCkpCisgICAgICAgICAgICBtX2ludHJpbnNpY1NpemUgPSBMYXlvdXRTaXplKHNpemVU
b0NhY2hlKTsKICAgICB9Ci0gICAgY29uc3RyYWluZWRTaXplID0gaW50cmluc2ljU2l6ZTsKLX0K
LQotdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRC
eVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoUmVuZGVyQm94KiBjb250ZW50UmVuZGVyZXIsIEZsb2F0
U2l6ZSYgaW50cmluc2ljU2l6ZSwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgY29uc3QKLXsK
LSAgICBjb21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChjb250ZW50UmVu
ZGVyZXIsIGludHJpbnNpY1NpemUsIGludHJpbnNpY1JhdGlvKTsKIAogICAgIC8vIE5vdyBjb25z
dHJhaW4gdGhlIGludHJpbnNpYyBzaXplIGFsb25nIGVhY2ggYXhpcyBhY2NvcmRpbmcgdG8gbWlu
aW11bSBhbmQgbWF4aW11bSB3aWR0aC9oZWlnaHRzIGFsb25nIHRoZQogICAgIC8vIG9wcG9zaXRl
IGF4aXMuIFNvIGZvciBleGFtcGxlIGEgbWF4aW11bSB3aWR0aCB0aGF0IHNocmlua3Mgb3VyIHdp
ZHRoIHdpbGwgcmVzdWx0IGluIHRoZSBoZWlnaHQgd2UgY29tcHV0ZSBoZXJlCkBAIC01OTcsMjcg
KzU4OCwxNSBAQCBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENvbnRlbnRSZWN0
KGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAgICAgcmV0dXJuIGZpbmFsUmVjdDsK
IH0KIAotZG91YmxlIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8o
KSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRB
c3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvOwotICAg
IEZsb2F0U2l6ZSBpbnRyaW5zaWNTaXplOwotICAgIGNvbXB1dGVBc3BlY3RSYXRpb0luZm9ybWF0
aW9uRm9yUmVuZGVyQm94KGVtYmVkZGVkQ29udGVudEJveCgpLCBpbnRyaW5zaWNTaXplLCBpbnRy
aW5zaWNSYXRpbyk7Ci0gICAgcmV0dXJuIGludHJpbnNpY1JhdGlvLmFzcGVjdFJhdGlvRG91Ymxl
KCk7CisgICAgcmV0dXJuIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9E
b3VibGUoKTsKIH0KIAotRmxvYXRTaXplIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2lj
U2l6ZSgpIGNvbnN0CitGbG9hdFNpemUgUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJh
dGlvQXNTaXplKCkgY29uc3QKIHsKLSAgICAvLyBJZiB0aGVyZSdzIGFuIGVtYmVkZGVkQ29udGVu
dEJveCgpIG9mIGEgcmVtb3RlLCByZWZlcmVuY2VkIGRvY3VtZW50IGF2YWlsYWJsZSwgdGhpcyBj
b2RlLXBhdGggc2hvdWxkIG5ldmVyIGJlIHVzZWQuCi0gICAgQVNTRVJUKCFlbWJlZGRlZENvbnRl
bnRCb3goKSB8fCBzaG91bGRBcHBseVNpemVPcklubGluZVNpemVDb250YWlubWVudCgpKTsKLSAg
ICByZXR1cm4geyBpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdo
dCgpIH07Ci19Ci0KLUZsb2F0U2l6ZSBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0
aW8oKSBjb25zdAotewotICAgIC8vIElmIHRoZXJlJ3MgYW4gZW1iZWRkZWRDb250ZW50Qm94KCkg
b2YgYSByZW1vdGUsIHJlZmVyZW5jZWQgZG9jdW1lbnQgYXZhaWxhYmxlLCB0aGlzIGNvZGUtcGF0
aCBzaG91bGQgbmV2ZXIgYmUgdXNlZC4KLSAgICBBU1NFUlQoIWVtYmVkZGVkQ29udGVudEJveCgp
IHx8IHNob3VsZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCkpOwotICAgIGF1dG8g
aW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZShpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50cmlu
c2ljTG9naWNhbEhlaWdodCgpKTsKLSAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW87
CisgICAgYXV0byBpbnRyaW5zaWNTaXplID0gRmxvYXRTaXplIHsgaW50cmluc2ljTG9naWNhbFdp
ZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OworICAgIGF1dG8gcHJlZmVycmVkQXNw
ZWN0UmF0aW8gPSBGbG9hdFNpemUgeyB9OwogCiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8o
KS5oYXNSYXRpbygpKSB7CiAgICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlvID0gRmxvYXRTaXpl
OjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVl
LCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsKQEAgLTY3NSw3ICs2
NTQsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0aW9BZGp1c3RlZElu
dHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdAogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAgYXV0byBjb21wdXRlZEFzcGVjdFJhdGlv
ID0gY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCk7CisgICAgYXV0byBjb21wdXRlZEFzcGVj
dFJhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RSYXRpb0RvdWJsZSgp
OwogICAgIGF1dG8gY29tcHV0ZWRJbnRyaW5zaWNMb2dpY2FsV2lkdGggPSBtaW5Mb2dpY2FsV2lk
dGg7CiAKICAgICBpZiAoYXV0byBmaXhlZExvZ2ljYWxIZWlnaHQgPSBzdHlsZS5sb2dpY2FsSGVp
Z2h0KCkudHJ5Rml4ZWQoKSkKQEAgLTY5OCwxMyArNjc3LDkgQEAgc3RhdGljIGlubGluZSBMYXlv
dXRVbml0IE5PREVMRVRFIHJlc29sdmVXaWR0aEZvclJhdGlvKExheW91dFVuaXQgYm9yZGVyQW5k
UGFkZGkKICAgICByZXR1cm4gTGF5b3V0VW5pdChsb2dpY2FsSGVpZ2h0ICogYXNwZWN0UmF0aW8p
OwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgTk9ERUxFVEUgaGFzSW50cmluc2ljU2l6ZShSZW5k
ZXJCb3gqY29udGVudFJlbmRlcmVyLCBib29sIGhhc0ludHJpbnNpY1dpZHRoLCBib29sIGhhc0lu
dHJpbnNpY0hlaWdodCApCitzdGF0aWMgaW5saW5lIGJvb2wgTk9ERUxFVEUgaGFzSW50cmluc2lj
U2l6ZShjb25zdCBSZW5kZXJSZXBsYWNlZCogc3ZnUm9vdCwgYm9vbCBoYXNJbnRyaW5zaWNXaWR0
aCwgYm9vbCBoYXNJbnRyaW5zaWNIZWlnaHQpCiB7Ci0gICAgaWYgKGhhc0ludHJpbnNpY1dpZHRo
ICYmIGhhc0ludHJpbnNpY0hlaWdodCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGhh
c0ludHJpbnNpY1dpZHRoIHx8IGhhc0ludHJpbnNpY0hlaWdodCkKLSAgICAgICAgcmV0dXJuIGNv
bnRlbnRSZW5kZXJlciAmJiBjb250ZW50UmVuZGVyZXItPmlzUmVuZGVyT3JMZWdhY3lSZW5kZXJT
VkdSb290KCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAoaGFzSW50cmluc2ljV2lk
dGggJiYgaGFzSW50cmluc2ljSGVpZ2h0KSB8fCAoKGhhc0ludHJpbnNpY1dpZHRoIHx8IGhhc0lu
dHJpbnNpY0hlaWdodCkgJiYgc3ZnUm9vdCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyUmVwbGFj
ZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkIHNo
b3VsZENvbXB1dGVQcmVmZXJyZWQpIGNvbnN0CkBAIC03MTUsMTIgKzY5MCwxMCBAQCBMYXlvdXRV
bml0IFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29t
cHV0ZVByZWZlcnJlZCBzaAogICAgIGlmIChzdHlsZS5sb2dpY2FsV2lkdGgoKS5pc0ludHJpbnNp
Y09yU3RyZXRjaCgpKQogICAgICAgICByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRo
UmVzcGVjdGluZ01pbk1heFdpZHRoKGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aFVzaW5nKHN0
eWxlLmxvZ2ljYWxXaWR0aCgpKSwgc2hvdWxkQ29tcHV0ZVByZWZlcnJlZCk7CiAKLSAgICBSZW5k
ZXJCb3gqIGNvbnRlbnRSZW5kZXJlciA9IGVtYmVkZGVkQ29udGVudEJveCgpOwotCiAgICAgLy8g
MTAuMy4yIElubGluZSwgcmVwbGFjZWQgZWxlbWVudHM6IGh0dHA6Ly93d3cudzMub3JnL1RSL0NT
UzIxL3Zpc3VkZXQuaHRtbCNpbmxpbmUtcmVwbGFjZWQtd2lkdGgKICAgICBGbG9hdFNpemUgaW50
cmluc2ljUmF0aW87CiAgICAgRmxvYXRTaXplIGNvbnN0cmFpbmVkU2l6ZTsKLSAgICBjb21wdXRl
SW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhjb250ZW50
UmVuZGVyZXIsIGNvbnN0cmFpbmVkU2l6ZSwgaW50cmluc2ljUmF0aW8pOworICAgIGNvbXB1dGVJ
bnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKGNvbnN0cmFp
bmVkU2l6ZSwgaW50cmluc2ljUmF0aW8pOwogCiAgICAgaWYgKHN0eWxlLmxvZ2ljYWxXaWR0aCgp
LmlzQXV0bygpKSB7CiAgICAgICAgIGJvb2wgY29tcHV0ZWRIZWlnaHRJc0F1dG8gPSBzdHlsZS5s
b2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCk7CkBAIC03MzAsNyArNzAzLDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQ
cmVmZXJyZWQgc2gKICAgICAgICAgLy8gRm9yIGZsZXggb3IgZ3JpZCBpdGVtcyB3aGVyZSB0aGUg
bG9naWNhbCBoZWlnaHQgaGFzIGJlZW4gb3ZlcnJpZGVuIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGF0
IHNpemUgdG8gY29tcHV0ZSB0aGUgcmVwbGFjZWQgd2lkdGggYXMgbG9uZyBhcyB0aGUgZmxleCBv
cgogICAgICAgICAvLyBncmlkIGl0ZW0gaGFzIGFuIGludHJpbnNpYyBzaXplLiBJdCBpcyBwb3Nz
aWJsZSAoaW5kZWVkLCBjb21tb24pIGZvciBhbiBTVkcgZ3JhcGhpYyB0byBoYXZlIGFuIGludHJp
bnNpYyBhc3BlY3QgcmF0aW8gYnV0IG5vdCB0byBoYXZlIGFuIGludHJpbnNpYwogICAgICAgICAv
LyB3aWR0aCBvciBoZWlnaHQuIFRoZXJlIGFyZSBhbHNvIGVsZW1lbnRzIHdpdGggaW50cmluc2lj
IHNpemVzIGJ1dCB3aXRob3V0IGludHJpbnNpYyByYXRpbyAobGlrZSBhbiBpZnJhbWUpLgotICAg
ICAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdodCA9ICghaW50cmluc2ljUmF0aW8u
aXNFbXB0eSgpICYmIChpc0ZsZXhJdGVtKCkgfHwgaXNHcmlkSXRlbSgpKSAmJiBoYXNJbnRyaW5z
aWNTaXplKGNvbnRlbnRSZW5kZXJlciwgaGFzSW50cmluc2ljV2lkdGgsIGhhc0ludHJpbnNpY0hl
aWdodCkgPyB0aGlzLT5vdmVycmlkaW5nQm9yZGVyQm94TG9naWNhbEhlaWdodCgpIDogc3RkOjpu
dWxsb3B0KSkKKyAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQgPSAoIWlu
dHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiAoaXNGbGV4SXRlbSgpIHx8IGlzR3JpZEl0ZW0oKSkg
JiYgaGFzSW50cmluc2ljU2l6ZShlbWJlZGRlZFNWR1Jvb3QoKSwgaGFzSW50cmluc2ljV2lkdGgs
IGhhc0ludHJpbnNpY0hlaWdodCkgPyB0aGlzLT5vdmVycmlkaW5nQm9yZGVyQm94TG9naWNhbEhl
aWdodCgpIDogc3RkOjpudWxsb3B0KSkKICAgICAgICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5nTWluTWF4V2lkdGgoY29udGVudEJveExvZ2ljYWxIZWln
aHQoKm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KSAqIGludHJpbnNpY1JhdGlvLmFzcGVjdFJhdGlv
RG91YmxlKCksIHNob3VsZENvbXB1dGVQcmVmZXJyZWQpOwogCiAgICAgICAgIC8vIElmICdoZWln
aHQnIGFuZCAnd2lkdGgnIGJvdGggaGF2ZSBjb21wdXRlZCB2YWx1ZXMgb2YgJ2F1dG8nIGFuZCB0
aGUgZWxlbWVudCBhbHNvIGhhcyBhbiBpbnRyaW5zaWMgd2lkdGgsIHRoZW4gdGhhdCBpbnRyaW5z
aWMgd2lkdGggaXMgdGhlIHVzZWQgdmFsdWUgb2YgJ3dpZHRoJy4KQEAgLTgxMywxOSArNzg2LDE3
IEBAIExheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWln
aHQoc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0CiAgICAgaWYgKGhhc1JlcGxhY2VkTG9naWNhbEhl
aWdodCgpKQogICAgICAgICByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJlc3Bl
Y3RpbmdNaW5NYXhIZWlnaHQoY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKHN0eWxl
KCkubG9naWNhbEhlaWdodCgpKSk7CiAKLSAgICBSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciA9
IGVtYmVkZGVkQ29udGVudEJveCgpOwotCiAgICAgLy8gMTAuNi4yIElubGluZSwgcmVwbGFjZWQg
ZWxlbWVudHM6IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNpbmxpbmUt
cmVwbGFjZWQtaGVpZ2h0CiAgICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvOwogICAgIEZsb2F0
U2l6ZSBjb25zdHJhaW5lZFNpemU7Ci0gICAgY29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWlu
ZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoY29udGVudFJlbmRlcmVyLCBjb25zdHJhaW5lZFNp
emUsIGludHJpbnNpY1JhdGlvKTsKKyAgICBjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5l
ZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhjb25zdHJhaW5lZFNpemUsIGludHJpbnNpY1JhdGlv
KTsKIAogICAgIGJvb2wgd2lkdGhJc0F1dG8gPSBzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzQXV0
bygpOwogICAgIGJvb2wgaGFzSW50cmluc2ljV2lkdGggPSBjb25zdHJhaW5lZFNpemUud2lkdGgo
KSA+IDAgfHwgKCFjb25zdHJhaW5lZFNpemUud2lkdGgoKSAmJiBzaG91bGRSZXNwZWN0WmVyb0lu
dHJpbnNpY1dpZHRoKCkpIHx8IHNob3VsZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50
KCk7CiAgICAgYm9vbCBoYXNJbnRyaW5zaWNIZWlnaHQgPSBjb25zdHJhaW5lZFNpemUuaGVpZ2h0
KCkgPiAwIHx8IHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCk7CiAKICAgICAvLyBTZWUgY29t
cHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgpIGZvciBhIHNpbWlsYXIgY2hlY2sgZm9yIGhlaWdo
dHMuCi0gICAgaWYgKGF1dG8gb3ZlcnJpZGluZ2xvZ2ljYWxXaWR0aCA9ICghaW50cmluc2ljUmF0
aW8uaXNFbXB0eSgpICYmIChpc0ZsZXhJdGVtKCkgfHwgaXNHcmlkSXRlbSgpKSAmJiBoYXNJbnRy
aW5zaWNTaXplKGNvbnRlbnRSZW5kZXJlciwgaGFzSW50cmluc2ljV2lkdGgsIGhhc0ludHJpbnNp
Y0hlaWdodCkgPyBvdmVycmlkaW5nQm9yZGVyQm94TG9naWNhbFdpZHRoKCkgOiBzdGQ6Om51bGxv
cHQpKQorICAgIGlmIChhdXRvIG92ZXJyaWRpbmdsb2dpY2FsV2lkdGggPSAoIWludHJpbnNpY1Jh
dGlvLmlzRW1wdHkoKSAmJiAoaXNGbGV4SXRlbSgpIHx8IGlzR3JpZEl0ZW0oKSkgJiYgaGFzSW50
cmluc2ljU2l6ZShlbWJlZGRlZFNWR1Jvb3QoKSwgaGFzSW50cmluc2ljV2lkdGgsIGhhc0ludHJp
bnNpY0hlaWdodCkgPyBvdmVycmlkaW5nQm9yZGVyQm94TG9naWNhbFdpZHRoKCkgOiBzdGQ6Om51
bGxvcHQpKQogICAgICAgICByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJlc3Bl
Y3RpbmdNaW5NYXhIZWlnaHQoY29udGVudEJveExvZ2ljYWxXaWR0aCgqb3ZlcnJpZGluZ2xvZ2lj
YWxXaWR0aCkgKiBpbnRyaW5zaWNSYXRpby50cmFuc3Bvc2VkU2l6ZSgpLmFzcGVjdFJhdGlvRG91
YmxlKCkpOwogCiAgICAgLy8gSWYgJ2hlaWdodCcgYW5kICd3aWR0aCcgYm90aCBoYXZlIGNvbXB1
dGVkIHZhbHVlcyBvZiAnYXV0bycgYW5kIHRoZSBlbGVtZW50IGFsc28gaGFzIGFuIGludHJpbnNp
YyBoZWlnaHQsIHRoZW4gdGhhdCBpbnRyaW5zaWMgaGVpZ2h0IGlzIHRoZSB1c2VkIHZhbHVlIG9m
ICdoZWlnaHQnLgpAQCAtODYwLDcgKzgzMSw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1
dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsCiB7
CiAgICAgaWYgKGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgJiYgIXN0eWxlKCkubG9naWNhbEhl
aWdodCgpLmlzQXV0bygpKSB7CiAgICAgICAgIGlmIChhdXRvIGZpeGVkSGVpZ2h0ID0gc3R5bGUo
KS5sb2dpY2FsSGVpZ2h0KCkudHJ5Rml4ZWQoKSkgewotICAgICAgICAgICAgYXV0byBoZWlnaHRE
ZXJpdmVkV2lkdGggPSBMYXlvdXRVbml0IHsgZml4ZWRIZWlnaHQtPnJlc29sdmVab29tKHN0eWxl
KCkudXNlZFpvb21Gb3JMZW5ndGgoKSkgKiBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKSB9
OworICAgICAgICAgICAgYXV0byBoZWlnaHREZXJpdmVkV2lkdGggPSBMYXlvdXRVbml0IHsgZml4
ZWRIZWlnaHQtPnJlc29sdmVab29tKHN0eWxlKCkudXNlZFpvb21Gb3JMZW5ndGgoKSkgKiBwcmVm
ZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCkgfTsKICAgICAgICAg
ICAgIG1pbkxvZ2ljYWxXaWR0aCA9IGhlaWdodERlcml2ZWRXaWR0aDsKICAgICAgICAgICAgIG1h
eExvZ2ljYWxXaWR0aCA9IGhlaWdodERlcml2ZWRXaWR0aDsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTEwNzEsMTQgKzEwNDIsNiBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpsYXlvdXRTaGFkb3dD
b250ZW50KGNvbnN0IExheW91dFNpemUmIG9sZFNpemUpCiAgICAgY2xlYXJDaGlsZE5lZWRzTGF5
b3V0KCk7CiB9CiAKLUZsb2F0U2l6ZSBSZW5kZXJSZXBsYWNlZDo6aW50cmluc2ljUmF0aW8oKSBj
b25zdAotewotICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNSYXRpbzsKLSAgICBGbG9hdFNpemUgY29u
c3RyYWluZWRTaXplOwotICAgIGNvbXB1dGVBc3BlY3RSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVy
Qm94KGVtYmVkZGVkQ29udGVudEJveCgpLCBjb25zdHJhaW5lZFNpemUsIGludHJpbnNpY1JhdGlv
KTsKLSAgICByZXR1cm4gaW50cmluc2ljUmF0aW87Ci19Ci0KIHZvaWQgUmVuZGVyUmVwbGFjZWQ6
OmNvbXB1dGVSZXBsYWNlZE91dE9mRmxvd1Bvc2l0aW9uZWRMb2dpY2FsV2lkdGgoTG9naWNhbEV4
dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QKIHsKICAgICBQb3NpdGlv
bmVkTGF5b3V0Q29uc3RyYWludHMgaW5saW5lQ29uc3RyYWludHMoKnRoaXMsIExvZ2ljYWxCb3hB
eGlzOjpJbmxpbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApp
bmRleCBhYjNmNDcxMGFhOTAuLjZlZmM0YmM0YzhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTQyLDEzICs0MiwxMCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzZXROZWVkc0xheW91dElmTmVlZGVkQWZ0ZXJJbnRyaW5zaWNTaXplQ2hhbmdlKCk7CiAKICAg
ICBMYXlvdXRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsKLSAgICBGbG9hdFNpemUg
aW50cmluc2ljUmF0aW8oKSBjb25zdDsKLSAgICAKKwogICAgIGJvb2wgaXNDb250ZW50TGlrZWx5
VmlzaWJsZUluVmlld3BvcnQoKTsKICAgICBib29sIHNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRX
aWR0aHMoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGRvdWJsZSBjb21wdXRlSW50cmluc2ljQXNw
ZWN0UmF0aW8oKSBjb25zdDsKLQogICAgIHZpcnR1YWwgYm9vbCBwYWludHNDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsSGVpZ2h0VXNpbmcoY29uc3QgU3R5bGU6OlByZWZlcnJlZFNpemUmIGxvZ2ljYWxIZWlnaHQp
IGNvbnN0OwpAQCAtNjEsNiArNTgsMTEgQEAgcHVibGljOgogICAgIGJvb2wgcmVwbGFjZWRNaW5M
b2dpY2FsSGVpZ2h0Q29tcHV0ZXNBc05vbmUoKSBjb25zdDsKICAgICBib29sIHJlcGxhY2VkTWF4
TG9naWNhbEhlaWdodENvbXB1dGVzQXNOb25lKCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIFJlbmRl
clJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CisK
KyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBv
dmVycmlkZTsKKyAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25z
dCBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlclJlcGxhY2VkKFR5cGUsIEVsZW1l
bnQmLCBSZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8UmVwbGFjZWRGbGFnPiA9IHsgfSk7CiAgICAg
UmVuZGVyUmVwbGFjZWQoVHlwZSwgRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIGNvbnN0IExheW91
dFNpemUmIGludHJpbnNpY1NpemUsIE9wdGlvblNldDxSZXBsYWNlZEZsYWc+ID0geyB9KTsKQEAg
LTc3LDkgKzc5LDYgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZTo6RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdDsKLQogICAgIHZv
aWQgc2V0SW50cmluc2ljU2l6ZShjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKSB7IG1f
aW50cmluc2ljU2l6ZSA9IGludHJpbnNpY1NpemU7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW50cmlu
c2ljU2l6ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVJbnRyaW5zaWNM
b2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTA2LDcgKzEwNSw2IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXB1dGVBc3BlY3RSYXRpb0FkanVzdGVkSW50cmluc2lj
TG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1h
eExvZ2ljYWxXaWR0aCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlbmRlckJveCogZW1iZWRkZWRD
b250ZW50Qm94KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJO
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlcGxhY2VkIl9zOyB9CiAKICAg
ICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CkBAIC0xMjEsOCArMTE5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhbkJlU2VsZWN0aW9uTGVh
ZigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIExheW91dFJlY3Qgc2Vs
ZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWlu
dENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIGZpbmFsOwotICAg
IHZvaWQgY29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goUmVuZGVyQm94
KiwgRmxvYXRTaXplJiBjb25zdHJhaW5lZFNpemUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8p
IGNvbnN0OwotICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5z
ZmVycmVkTWluTWF4U2l6ZXMoUmVuZGVyQm94KiBjb250ZW50UmVuZGVyZXIsIEZsb2F0U2l6ZSYg
Y29uc3RyYWluZWRTaXplLCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBjb25zdDsKKyAgICB2
b2lkIGNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNp
emVzKEZsb2F0U2l6ZSYgY29uc3RyYWluZWRTaXplLCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlv
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmF3U2VsZWN0aW9uVGludCgpIGNv
bnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRl
eCA0ZGE1MDhiNmE3M2EuLjYxZDlmN2YyYjc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAKQEAgLTQ4NywxNSArNDg3LDM3IEBAIGJvb2wgUmVuZGVyV2lkZ2V0
OjpzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3QKIHsKICAgICBpZiAoUmVu
ZGVyUmVwbGFjZWQ6OnNob3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGVtYmVkZGVkQ29udGVudEJveCgpOworICAgIHJldHVy
biBlbWJlZGRlZFNWR1Jvb3QoKTsKIH0KIAotUmVuZGVyQm94KiBSZW5kZXJXaWRnZXQ6OmVtYmVk
ZGVkQ29udGVudEJveCgpIGNvbnN0CitSZW5kZXJSZXBsYWNlZCogUmVuZGVyV2lkZ2V0OjplbWJl
ZGRlZFNWR1Jvb3QoKSBjb25zdAogewogICAgIGlmICghaXM8UmVuZGVyRW1iZWRkZWRPYmplY3Q+
KHRoaXMpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZWZQdHIgZnJhbWVWaWV3ID0g
ZHluYW1pY0Rvd25jYXN0PExvY2FsRnJhbWVWaWV3Pih3aWRnZXQoKSk7Ci0gICAgcmV0dXJuIGZy
YW1lVmlldyA/IGZyYW1lVmlldy0+ZW1iZWRkZWRDb250ZW50Qm94KCkgOiBudWxscHRyOworICAg
IHJldHVybiBmcmFtZVZpZXcgPyBmcmFtZVZpZXctPmVtYmVkZGVkU1ZHUm9vdCgpIDogbnVsbHB0
cjsKK30KKworRmxvYXRTaXplIFJlbmRlcldpZGdldDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1Np
emUoKSBjb25zdAoreworICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5z
aWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQsIGJ1dCB0aGUKKyAgICAvLyBhc3BlY3QgcmF0aW8g
ZnJvbSB0aGUgQ1NTIGFzcGVjdC1yYXRpbyBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFpbGFibGUgdmlh
IHRoZQorICAgIC8vIGJhc2UgY2xhc3MgKHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1hZ2UgZGF0YSku
CisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisgICAgICAgIHJldHVybiBS
ZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKKworICAgIENoZWNr
ZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpOworICAgIGlmICghc3ZnUm9vdCkKKyAg
ICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgp
OworCisgICAgYXV0byByYXRpbyA9IHN2Z1Jvb3QtPnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXpl
KCk7CisgICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSgpICYmICFyYXRpby5pc0VtcHR5
KCkpCisgICAgICAgIHJhdGlvID0gcmF0aW8udHJhbnNwb3NlZFNpemUoKTsKKworICAgIGlmIChz
dHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRpbygpIHx8IChzdHlsZSgpLmFzcGVjdFJhdGlvKCku
aXNBdXRvQW5kUmF0aW8oKSAmJiByYXRpby5pc0VtcHR5KCkpKQorICAgICAgICByYXRpbyA9IEZs
b2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgo
KS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CisKKyAg
ICByZXR1cm4gcmF0aW87CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAppbmRleCBlMDE3ODE2MjAwZGYuLjc2YjNkOGYxN2Fl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaApAQCAtOTEsNyArOTEs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCiAgICAg
Ym9vbCBzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3QgZmluYWw7Ci0gICAg
UmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3goKSBjb25zdCBmaW5hbDsKKyAgICBSZW5kZXJS
ZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3QgZmluYWw7CisgICAgRmxvYXRTaXplIHBy
ZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHNldFNl
bGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0YXRlKSBmaW5hbDsKICAgICB2b2lkIHNldE92ZXJsYXBU
ZXN0UmVzdWx0KGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggZGUyOTQzNjI0Mjk4Li4xNmU4ODIzMzNjMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtOTEs
MTIgKzkxLDE1IEBAIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKiBSZW5kZXJTVkdSb290Ojp2
aWV3cG9ydENvbnRhaW5lcigpIGNvbnN0CiAKIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aGFzSW50cmlu
c2ljQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljQXNw
ZWN0UmF0aW8oKTsKKyAgICByZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3Bl
Y3RSYXRpb0RvdWJsZSgpOwogfQogCiBGbG9hdFNpemUgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUlu
dHJpbnNpY1NpemUoKSBjb25zdAogewotICAgIEFTU0VSVF9JTVBMSUVTKHZpZXcoKS5mcmFtZVZp
ZXcoKS5sYXlvdXRDb250ZXh0KCkuaXNJblJlbmRlclRyZWVMYXlvdXQoKSwgIXNob3VsZEFwcGx5
U2l6ZUNvbnRhaW5tZW50KCkpOworICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBp
bnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQuCisgICAgLy8gVGhlIGJhc2UgY2xhc3Mg
cmV0dXJucyB2YWx1ZXMgZnJvbSB0aGUgY2FjaGUgLyBjb250YWluLWludHJpbnNpYy1zaXplIHdp
dGhvdXQgcXVlcnlpbmcgaW1hZ2UgZGF0YS4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFp
bm1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHsgaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJp
bnNpY0xvZ2ljYWxIZWlnaHQoKSB9OwogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9TVkcv
Y29vcmRzLmh0bWwjSW50cmluc2ljU2l6aW5nCiAgICAgRmxvYXRTaXplIGludHJpbnNpY1NpemUg
PSB7IHN2Z1NWR0VsZW1lbnQoKS5pbnRyaW5zaWNXaWR0aCgpLCBzdmdTVkdFbGVtZW50KCkuaW50
cmluc2ljSGVpZ2h0KCkgfTsKICAgICAvLyBUcmFuc3Bvc2UgZm9yIHZlcnRpY2FsIHdyaXRpbmcg
bW9kZQpAQCAtMTA1LDkgKzEwOCwxMyBAQCBGbG9hdFNpemUgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0
ZUludHJpbnNpY1NpemUoKSBjb25zdAogICAgIHJldHVybiBpbnRyaW5zaWNTaXplOwogfQogCi1G
bG9hdFNpemUgUmVuZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAorRmxv
YXRTaXplIFJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQoIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpOworICAgIC8vIFNp
emUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRl
bnQsIGJ1dCB0aGUKKyAgICAvLyBhc3BlY3QgcmF0aW8gZnJvbSB0aGUgQ1NTIGFzcGVjdC1yYXRp
byBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFpbGFibGUgdmlhIHRoZQorICAgIC8vIGJhc2UgY2xhc3Mg
KHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1hZ2UgZGF0YSkuCisgICAgaWYgKHNob3VsZEFwcGx5U2l6
ZUNvbnRhaW5tZW50KCkpCisgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVk
QXNwZWN0UmF0aW9Bc1NpemUoKTsKIAogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNS
YXRpbygpKQogICAgICAgICByZXR1cm4gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUo
KS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9n
aWNhbEhlaWdodCgpLnZhbHVlKTsKQEAgLTEzMiw3ICsxMzksNiBAQCBGbG9hdFNpemUgUmVuZGVy
U1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogICAgIGlmIChzdHlsZSgpLmFz
cGVjdFJhdGlvKCkuaXNBdXRvQW5kUmF0aW8oKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZTo6
bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwg
c3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CiAgICAgcmV0dXJuIHsg
fTsKLQogfQogCiBib29sIFJlbmRlclNWR1Jvb3Q6OmlzRW1iZWRkZWRUaHJvdWdoU1ZHSW1hZ2Uo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApp
bmRleCA2MTk3ZjU0ZmVlMWUuLjA2ZTBhY2MyZGUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogICAg
IGJvb2wgaXNFbWJlZGRlZFRocm91Z2hTVkdJbWFnZSgpIGNvbnN0OwogICAgIGJvb2wgaXNFbWJl
ZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpIGNvbnN0OwogCi0gICAgRmxv
YXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QgZmluYWw7Ci0gICAgRmxvYXRTaXpl
IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CisgICAgRmxvYXRTaXplIGNvbXB1
dGVJbnRyaW5zaWNTaXplKCkgY29uc3Q7CisgICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJh
dGlvQXNTaXplKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBoYXNJbnRyaW5zaWNBc3BlY3RSYXRp
bygpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBpc0xheW91dFNpemVDaGFuZ2VkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0xheW91dFNpemVDaGFuZ2VkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwCmlu
ZGV4IDM2ZDNlMzg1OWRiNi4uNDUzMTI5ZDk2NTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcApA
QCAtODEsMTIgKzgxLDE1IEBAIFNWR1NWR0VsZW1lbnQmIExlZ2FjeVJlbmRlclNWR1Jvb3Q6OnN2
Z1NWR0VsZW1lbnQoKSBjb25zdAogCiBib29sIExlZ2FjeVJlbmRlclNWR1Jvb3Q6Omhhc0ludHJp
bnNpY0FzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0Fz
cGVjdFJhdGlvKCk7CisgICAgcmV0dXJuIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNw
ZWN0UmF0aW9Eb3VibGUoKTsKIH0KIAogRmxvYXRTaXplIExlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNv
bXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKIHsKLSAgICBBU1NFUlRfSU1QTElFUyh2aWV3KCku
ZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmlzSW5SZW5kZXJUcmVlTGF5b3V0KCksICFzaG91
bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKKyAgICAvLyBTaXplIGNvbnRhaW5tZW50IHN1cHBy
ZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LgorICAgIC8vIFRoZSBiYXNl
IGNsYXNzIHJldHVybnMgdmFsdWVzIGZyb20gdGhlIGNhY2hlIC8gY29udGFpbi1pbnRyaW5zaWMt
c2l6ZSB3aXRob3V0IHF1ZXJ5aW5nIGltYWdlIGRhdGEuCisgICAgaWYgKHNob3VsZEFwcGx5U2l6
ZUNvbnRhaW5tZW50KCkpCisgICAgICAgIHJldHVybiB7IGludHJpbnNpY0xvZ2ljYWxXaWR0aCgp
LCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKICAgICBGbG9hdFNpemUgaW50cmluc2ljU2l6
ZSA9IHsgc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY1dpZHRoKCksIHN2Z1NWR0VsZW1lbnQoKS5p
bnRyaW5zaWNIZWlnaHQoKSB9OwogICAgIC8vIFRyYW5zcG9zZSBmb3IgdmVydGljYWwgd3JpdGlu
ZyBtb2RlCiAgICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQpAQCAtOTQsOSArOTcs
MTMgQEAgRmxvYXRTaXplIExlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXpl
KCkgY29uc3QKICAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKIH0KIAotRmxvYXRTaXplIExlZ2Fj
eVJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKK0Zsb2F0U2l6ZSBM
ZWdhY3lSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKCFzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKKyAgICAvLyBTaXpl
IGNvbnRhaW5tZW50IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50
LCBidXQgdGhlCisgICAgLy8gYXNwZWN0IHJhdGlvIGZyb20gdGhlIENTUyBhc3BlY3QtcmF0aW8g
cHJvcGVydHkgaXMgc3RpbGwgYXZhaWxhYmxlIHZpYSB0aGUKKyAgICAvLyBiYXNlIGNsYXNzICh3
aGljaCBkb2Vzbid0IHF1ZXJ5IGltYWdlIGRhdGEpLgorICAgIGlmIChzaG91bGRBcHBseVNpemVD
b250YWlubWVudCgpKQorICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFz
cGVjdFJhdGlvQXNTaXplKCk7CiAKICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0
aW8oKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCku
YXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2lj
YWxIZWlnaHQoKS52YWx1ZSk7CkBAIC0xMjEsNyArMTI4LDYgQEAgRmxvYXRTaXplIExlZ2FjeVJl
bmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKICAgICAgICAgcmV0dXJu
ICppbnRyaW5zaWNSYXRpb1ZhbHVlOwogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNB
dXRvQW5kUmF0aW8oKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9u
KHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RS
YXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7Ci0KICAgICByZXR1cm4gcHJlZmVycmVkQXNwZWN0
UmF0aW87CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVn
YWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
bGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuaAppbmRleCA1Mzk3NTA4NDRjOTEuLjQ2YzEyMGRk
YTQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVn
YWN5UmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVn
YWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuaApAQCAtNDUsOCArNDUsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0VtYmVkZGVkVGhyb3VnaFNWR0ltYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtYmVk
ZGVkVGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0RvY3VtZW50KCkgY29uc3Q7CiAKLSAgICBGbG9h
dFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsKLSAgICBGbG9hdFNpemUg
cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFNpemUgY29tcHV0
ZUludHJpbnNpY1NpemUoKSBjb25zdDsKKyAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0
aW9Bc1NpemUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0ludHJpbnNpY0FzcGVjdFJhdGlv
KCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGlzTGF5b3V0U2l6ZUNoYW5nZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDlhMGQ0ODI2YTY5MC4uODYyOWUwZWQyMTZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTI3Niw4ICsyNzYsOCBAQCBS
ZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBGbG9hdFNpemUm
IHNpemUsIGNvbnN0IERlc3RpbmF0aQogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9IG1fcGFnZS0+
c2V0dGluZ3MoKS5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKCkgPyBSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAKICAgICBIb3N0V2lu
ZG93KiBob3N0V2luZG93ID0gbnVsbHB0cjsKLSAgICBpZiAoQ2hlY2tlZFB0ciBjb250ZW50UmVu
ZGVyZXIgPSBlbWJlZGRlZENvbnRlbnRCb3goKSkKLSAgICAgICAgaG9zdFdpbmRvdyA9IGNvbnRl
bnRSZW5kZXJlci0+aG9zdFdpbmRvdygpOworICAgIGlmIChDaGVja2VkUHRyIHN2Z1Jvb3QgPSBl
bWJlZGRlZFNWR1Jvb3QoKSkKKyAgICAgICAgaG9zdFdpbmRvdyA9IHN2Z1Jvb3QtPmhvc3RXaW5k
b3coKTsKIAogICAgIFJlZlB0ciBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCkBA
IC0zOTIsMTIgKzM5MiwxMiBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlYwogICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLVJlbmRlckJveCogU1ZHSW1hZ2U6OmVtYmVk
ZGVkQ29udGVudEJveCgpIGNvbnN0CitSZW5kZXJSZXBsYWNlZCogU1ZHSW1hZ2U6OmVtYmVkZGVk
U1ZHUm9vdCgpIGNvbnN0CiB7CiAgICAgUmVmUHRyIHJvb3RFbGVtZW50ID0gdGhpcy0+cm9vdEVs
ZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyQm94Pihyb290RWxlbWVudC0+cmVuZGVyZXIoKSk7
CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihyb290RWxlbWVudC0+cmVuZGVy
ZXIoKSk7CiB9CiAKIExvY2FsRnJhbWVWaWV3KiBTVkdJbWFnZTo6ZnJhbWVWaWV3KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggZjQ1NzdkNWNmMDQyLi5m
NzQzYTM3MDMyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC0z
Niw3ICszNiw3IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIExv
Y2FsRnJhbWVWaWV3OwogY2xhc3MgUGFnZTsKLWNsYXNzIFJlbmRlckJveDsKK2NsYXNzIFJlbmRl
clJlcGxhY2VkOwogY2xhc3MgU1ZHU1ZHRWxlbWVudDsKIGNsYXNzIFNWR0ltYWdlQ2hyb21lQ2xp
ZW50OwogY2xhc3MgU1ZHSW1hZ2VGb3JDb250YWluZXI7CkBAIC00OCw3ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCB0cnlDcmVhdGVGcm9tRGF0YShzdGQ6
OnNwYW48Y29uc3QgdWludDhfdD4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNWR0lt
YWdlPiYmKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNEYXRhRGVjb2Rh
YmxlKGNvbnN0IFNldHRpbmdzJiwgc3RkOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKIAotICAgIFJl
bmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Q7CisgICAgUmVuZGVyUmVwbGFjZWQq
IGVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0OwogICAgIExvY2FsRnJhbWVWaWV3KiBOT0RFTEVURSBm
cmFtZVZpZXcoKSBjb25zdDsKIAogICAgIGJvb2wgaXNTVkdJbWFnZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0K
</data>
<flag name="commit-queue"
          id="500759"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479571</attachid>
            <date>2026-05-10 06:27:25 -0700</date>
            <delta_ts>2026-05-10 06:30:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314488-20260510062724.patch</filename>
            <type>text/plain</type>
            <size>41857</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBkNTQxZTk5ZGZkZWM0YjY0OWE2YTAwYmZlOWUxNmQxNmRlYjEzNTA3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFN1biwgMTAgTWF5IDIwMjYgMDY6MjY6MTMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBDbGVhbiB1
cCBhc3BlY3QgcmF0aW8gQVBJOiBtb3ZlIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgdG8KIFJlbmRl
ckJveCwgcmVuYW1lIEZsb2F0U2l6ZSB2YXJpYW50IHRvIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNT
aXplKCkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQ0ODgKClJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKRVdTIChQUiB3aXRoIGRlcGVuZGVuY2llcykuCgoq
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwOgooV2ViQ29yZTo6UmVuZGVy
Qm94Ojpjb25zdHJhaW5Mb2dpY2FsTWluTWF4U2l6ZXNCeUFzcGVjdFJhdGlvIGNvbnN0KToKKFdl
YkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhzIGNv
bnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZVNpemluZ0tleXdvcmRMb2dpY2FsQ29u
dGVudEhlaWdodFVzaW5nR2VuZXJpYyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OnByZWZl
cnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6cHJlZmVycmVkQXNw
ZWN0UmF0aW9Bc1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTWluTWF4
TG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6
Y29tcHV0ZU1pbk1heExvZ2ljYWxIZWlnaHRGcm9tQXNwZWN0UmF0aW8gY29uc3QpOgooV2ViQ29y
ZTo6UmVuZGVyQm94Ojppc1JlbmRlclJlcGxhY2VkV2l0aEludHJpbnNpY1JhdGlvIGNvbnN0KTog
RGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlckJveDo6cmVzb2x2ZUFzcGVjdFJhdGlvIGNvbnN0KTog
RGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmg6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKFdlYkNvcmU6OmlzU1ZH
Um9vdFdpdGhJbnRyaW5zaWNBc3BlY3RSYXRpbyk6CihXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJv
eDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Gb3JGbGV4SXRlbSBjb25zdCk6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwcmVm
ZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y29t
cHV0ZUludHJpbnNpY1NpemUgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6
OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwOgooV2ViQ29yZTo6aXNWaWRlb1dpdGhEZWZhdWx0T2JqZWN0U2l6ZSk6CihX
ZWJDb3JlOjpjb21wdXRlSW50cmluc2ljU2l6ZUZvclJlbmRlcmVyKToKKFdlYkNvcmU6OlJlbmRl
clJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRN
aW5NYXhTaXplcyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNw
ZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVj
dFJhdGlvQXNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlQXNw
ZWN0UmF0aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMgY29uc3QpOgooV2ViQ29yZTo6
UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aCBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCBjb25zdCk6
CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2Fs
V2lkdGhzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0
aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveCBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5k
ZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvIGNvbnN0KTogRGVsZXRlZC4K
KFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSBjb25zdCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6aW50cmluc2ljUmF0aW8gY29uc3QpOiBE
ZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oOgooV2Vi
Q29yZTo6UmVuZGVyUmVwbGFjZWQ6OmVtYmVkZGVkU1ZHUm9vdCBjb25zdCk6CiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CihXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6
OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0FzcGVj
dFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNT
aXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlv
QXNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJh
dGlvIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lS
ZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Omhhc0ludHJp
bnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNv
bXB1dGVJbnRyaW5zaWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6
OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRl
clNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290Lmg6Ci0tLQog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgICAgICAgIHwgIDU1ICsrKy0t
LS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCAgICAgICAgICB8ICAgNiAr
LQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCAgIHwgICA4ICst
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwICAgICAgfCAgMzggKysr
LS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oICAgICAgICB8ICAgNCAr
LQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCAgIHwgMTQ0ICsr
KysrKysrLS0tLS0tLS0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmggICAgIHwgIDE3ICstLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5j
cHAgICAgIHwgIDIyICsrKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5o
ICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5j
cHAgICB8ICAxNiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmggIHwgICA0ICstCiAuLi4vc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcCAgICAg
ICAgfCAgMTYgKy0KIC4uLi9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuaCAgICAgICAg
ICB8ICAgNCArLQogMTMgZmlsZXMgY2hhbmdlZCwgMTc4IGluc2VydGlvbnMoKyksIDE1NyBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDNkNDI0
NmVjNTNiNi4uZDc1M2NlZDhjODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcApAQCAtNzExLDcgKzcxMSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2Fs
TWluTWF4U2l6ZXNCeUFzcGVjdFJhdGlvKExheW91dFVuaXQmIGNvbXB1dGVkTWluCiAgICAgLy8g
YSBzaXplIG9mIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgYW5kIHRoZSDigJxzdHJldGNo
LWZpdOKAnSBzaXppbmcgb2Ygbm9uLXJlcGxhY2VkIGJsb2NrcyBpZiB0aGV5IGhhdmUgZGVmaW5p
dGUgdmFsdWVzLgogICAgIC8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNpemluZy0z
LyNkZWZpbml0ZQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlID0gc3R5bGUoKTsK
LSAgICBBU1NFUlQoc3R5bGVUb1VzZS5hc3BlY3RSYXRpbygpLmhhc1JhdGlvKCkgfHwgaXNSZW5k
ZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRpbygpKTsKKyAgICBBU1NFUlQoc3R5bGVUb1VzZS5h
c3BlY3RSYXRpbygpLmhhc1JhdGlvKCkgfHwgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSk7CiAgICAg
YXV0byBsb2dpY2FsU2l6ZSA9IGRpbWVuc2lvbiA9PSBDb25zdHJhaW5EaW1lbnNpb246OldpZHRo
ID8gc3R5bGVUb1VzZS5sb2dpY2FsV2lkdGgoKSA6IHN0eWxlVG9Vc2UubG9naWNhbEhlaWdodCgp
OwogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2l6aW5nLTQvI2FzcGVjdC1yYXRp
by1taW5pbXVtCiAgICAgaWYgKG1pbmltdW1TaXplVHlwZSA9PSBNaW5pbXVtU2l6ZUlzQXV0b21h
dGljQ29udGVudEJhc2VkOjpZZXMpIHsKQEAgLTI5MzksNyArMjkzOSw2IEBAIExheW91dFVuaXQg
UmVuZGVyQm94OjpmaWxsQXZhaWxhYmxlTWVhc3VyZShMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCwgTGF5CiAgICAgcmV0dXJuIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCAtIG1hcmdpblN0
YXJ0IC0gbWFyZ2luRW5kOwogfQogCi0KIHRlbXBsYXRlPHR5cGVuYW1lIEtleXdvcmQ+IHZvaWQg
UmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMoS2V5d29yZCwg
TGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nLCBMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgs
IExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3QKIHsKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6c2FtZV9hczxLZXl3b3JkLCBDU1M6OktleXdvcmQ6Ok1pbkludHJpbnNpYz4pCkBAIC0y
OTU0LDE0ICsyOTUzLDE3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleXdvcmQ+IHZvaWQgUmVuZGVy
Qm94Ojpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMoCiAgICAgICAgICAgICAg
ICAgbWluTG9naWNhbFdpZHRoID0gc3RkOjptYXgobWluTG9naWNhbFdpZHRoLCBtaW5DaGlsZHJl
bkxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgbWF4TG9naWNhbFdpZHRoID0gc3RkOjpt
YXgobWF4TG9naWNhbFdpZHRoLCBtYXhDaGlsZHJlbkxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNSYXRp
bygpICYmIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzU3BlY2lmaWVkKCkpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChDaGVja2VkUHRyIHJlbmRlclJlcGxhY2VkID0gZHluYW1pY0Rvd25jYXN0PFJl
bmRlclJlcGxhY2VkPigqdGhpcykpIHsKICAgICAgICAgICAgIC8vIEZvciByZXBsYWNlZCBlbGVt
ZW50cyB3aXRoIGFuIGludHJpbnNpYyBhc3BlY3QgcmF0aW8gKGUuZy4gPGltZz4pIGFuZCBhCiAg
ICAgICAgICAgICAvLyBzcGVjaWZpZWQgYmxvY2sgc2l6ZSwgY29tcHV0ZSB0aGUgdHJhbnNmZXJy
ZWQgbWluL21heC1jb250ZW50IGlubGluZSBzaXplCiAgICAgICAgICAgICAvLyB0aHJvdWdoIHRo
ZSBpbnRyaW5zaWMgcmF0aW8gcmF0aGVyIHRoYW4gdXNpbmcgdGhlIHJhdyBuYXR1cmFsIHdpZHRo
LgotICAgICAgICAgICAgYXV0byBpbnRyaW5zaWNSYXRpbyA9IGRvd25jYXN0PFJlbmRlclJlcGxh
Y2VkPigqdGhpcykuY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCk7Ci0gICAgICAgICAgICBh
dXRvIGNvbXB1dGVkVmFsdWVzID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgp
LCBsb2dpY2FsVG9wKCkpOwotICAgICAgICAgICAgYXV0byBjb250ZW50QmxvY2tTaXplID0gc3Rk
OjptYXgoMF9sdSwgY29tcHV0ZWRWYWx1ZXMuZXh0ZW50IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2lj
YWxIZWlnaHQoKSk7Ci0gICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBtYXhMb2dpY2FsV2lk
dGggPSBMYXlvdXRVbml0KGNvbnRlbnRCbG9ja1NpemUgKiBpbnRyaW5zaWNSYXRpbyk7CisgICAg
ICAgICAgICBhdXRvIHByZWZlcnJlZFJhdGlvID0gcmVuZGVyUmVwbGFjZWQtPnByZWZlcnJlZEFz
cGVjdFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKKyAgICAgICAgICAgIGlmIChw
cmVmZXJyZWRSYXRpbyAmJiBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1NwZWNpZmllZCgpKSB7
CisgICAgICAgICAgICAgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IGNvbXB1dGVMb2dpY2FsSGVp
Z2h0KGxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbFRvcCgpKTsKKyAgICAgICAgICAgICAgICBhdXRv
IGNvbnRlbnRCbG9ja1NpemUgPSBzdGQ6Om1heCgwX2x1LCBjb21wdXRlZFZhbHVlcy5leHRlbnQg
LSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBtaW5M
b2dpY2FsV2lkdGggPSBtYXhMb2dpY2FsV2lkdGggPSBMYXlvdXRVbml0KGNvbnRlbnRCbG9ja1Np
emUgKiBwcmVmZXJyZWRSYXRpbyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxXaWR0aHMobWluTG9naWNhbFdpZHRoLCBt
YXhMb2dpY2FsV2lkdGgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNvbXB1dGVJbnRy
aW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocyhtaW5Mb2dpY2FsV2lkdGgsIG1heExvZ2ljYWxXaWR0
aCk7CiAgICAgfQpAQCAtMzY3NywxNSArMzY3OSwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTaXpl
VHlwZT4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVTaXppbmdL
ZQogICAgIGF1dG8gbWluTWF4Q29udGVudCA9IFsmXSAtPiBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IHsKICAgICAgICAgLy8gRklYTUU6IFRoZSBDU1Mgc2l6aW5nIHNwZWMgaXMgY29uc2lkZXJp
bmcgY2hhbmdpbmcgd2hhdCBtaW4tY29udGVudC9tYXgtY29udGVudCBzaG91bGQgcmVzb2x2ZSB0
by4KICAgICAgICAgLy8gSWYgdGhhdCBoYXBwZW5zLCB0aGlzIGNvZGUgd2lsbCBoYXZlIHRvIGNo
YW5nZS4KLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlckltYWdlID0gZHluYW1pY0Rvd25jYXN0PFJl
bmRlckltYWdlPih0aGlzKSkgeworICAgICAgICBpZiAoQ2hlY2tlZFB0ciByZW5kZXJJbWFnZSA9
IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFnZT4odGhpcykpIHsKICAgICAgICAgICAgIGF1dG8g
Y29tcHV0ZWRGaXhlZExvZ2ljYWxXaWR0aCA9IHN0eWxlKCkubG9naWNhbFdpZHRoKCkudHJ5Rml4
ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gcHJlZmVycmVkUmF0aW8gPSByZW5kZXJJbWFnZS0+cHJl
ZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKICAgICAgICAgICAgIGlmIChjb21wdXRlZEZpeGVk
TG9naWNhbFdpZHRoICYmICFzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSkgewotICAg
ICAgICAgICAgICAgIGF1dG8gaW50cmluc2ljUmF0aW8gPSByZW5kZXJJbWFnZS0+aW50cmluc2lj
UmF0aW8oKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZUhlaWdodEZvclJhdGlvKAog
ICAgICAgICAgICAgICAgICAgICBib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCksCiAgICAg
ICAgICAgICAgICAgICAgIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCksCiAgICAgICAg
ICAgICAgICAgICAgIExheW91dFVuaXQgeyBjb21wdXRlZEZpeGVkTG9naWNhbFdpZHRoLT5yZXNv
bHZlWm9vbShzdHlsZSgpLnVzZWRab29tRm9yTGVuZ3RoKCkpIH0sCi0gICAgICAgICAgICAgICAg
ICAgIGludHJpbnNpY1JhdGlvLnRyYW5zcG9zZWRTaXplKCkuYXNwZWN0UmF0aW8oKSwKKyAgICAg
ICAgICAgICAgICAgICAgcHJlZmVycmVkUmF0aW8udHJhbnNwb3NlZFNpemUoKS5hc3BlY3RSYXRp
bygpLAogICAgICAgICAgICAgICAgICAgICBCb3hTaXppbmc6OkNvbnRlbnRCb3gKICAgICAgICAg
ICAgICAgICApOwogICAgICAgICAgICAgfQpAQCAtMzY5NSw4ICszNjk3LDggQEAgdGVtcGxhdGU8
dHlwZW5hbWUgU2l6ZVR5cGU+IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpj
b21wdXRlU2l6aW5nS2UKICAgICAgICAgICAgICAgICAvLyB0aGUgYXNwZWN0IHJhdGlvLgogICAg
ICAgICAgICAgICAgIGlmICghaXNGbGV4SXRlbSgpIHx8IGRvd25jYXN0PFJlbmRlckZsZXhpYmxl
Qm94PihwYXJlbnQoKSktPmlzSG9yaXpvbnRhbEZsb3coKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nV2lkdGggPSBv
dmVycmlkaW5nQm9yZGVyQm94TG9naWNhbFdpZHRoKCk7IG92ZXJyaWRpbmdXaWR0aCAmJiAhcmVu
ZGVySW1hZ2UtPmludHJpbnNpY1JhdGlvKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzb2x2ZUhlaWdodEZvclJhdGlvKGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lk
dGgoKSwgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwgY29udGVudEJveExvZ2ljYWxX
aWR0aCgqb3ZlcnJpZGluZ1dpZHRoKSwgcmVuZGVySW1hZ2UtPmludHJpbnNpY1JhdGlvKCkudHJh
bnNwb3NlZFNpemUoKS5hc3BlY3RSYXRpbygpLCBCb3hTaXppbmc6OkNvbnRlbnRCb3gpOworICAg
ICAgICAgICAgICAgIGlmIChhdXRvIG92ZXJyaWRpbmdXaWR0aCA9IG92ZXJyaWRpbmdCb3JkZXJC
b3hMb2dpY2FsV2lkdGgoKTsgb3ZlcnJpZGluZ1dpZHRoICYmICFwcmVmZXJyZWRSYXRpby5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlSGVpZ2h0Rm9yUmF0aW8o
Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhl
aWdodCgpLCBjb250ZW50Qm94TG9naWNhbFdpZHRoKCpvdmVycmlkaW5nV2lkdGgpLCBwcmVmZXJy
ZWRSYXRpby50cmFuc3Bvc2VkU2l6ZSgpLmFzcGVjdFJhdGlvKCksIEJveFNpemluZzo6Q29udGVu
dEJveCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIH07CiAgICAg
ICAgICAgICBpZiAoYXV0byBoZWlnaHQgPSBoZWlnaHRGcm9tQ3Jvc3NBeGlzT3ZlcnJpZGVBbmRB
c3BlY3RSYXRpbygpKQpAQCAtNTI3NCwyOCArNTI3NiwyNyBAQCBMYXlvdXRVbml0IFJlbmRlckJv
eDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0CiAgICAgcmV0dXJu
IGNvbnN0cmFpbkxvZ2ljYWxXaWR0aEJ5TWluTWF4KGxvZ2ljYWxXaWR0aCwgY29udGFpbmVyV2lk
dGhJbklubGluZURpcmVjdGlvbiwgKmNvbnRhaW5pbmdCbG9jaygpLCBBbGxvd0ludHJpbnNpYzo6
Tm8pOwogfQogCi1ib29sIFJlbmRlckJveDo6aXNSZW5kZXJSZXBsYWNlZFdpdGhJbnRyaW5zaWNS
YXRpbygpIGNvbnN0Ci17Ci0gICAgaWYgKGF1dG8qIHJlcGxhY2VkID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlclJlcGxhY2VkPih0aGlzKSkKLSAgICAgICAgcmV0dXJuIHJlcGxhY2VkLT5jb21wdXRl
SW50cmluc2ljQXNwZWN0UmF0aW8oKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19CiAKLXN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBSZW5kZXJCb3g6OnJlc29sdmVBc3BlY3RSYXRpbygpIGNvbnN0CitzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4gUmVuZGVyQm94OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0
CiB7Ci0gICAgaWYgKGF1dG8qIHJlcGxhY2VkRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5k
ZXJSZXBsYWNlZD4odGhpcykpIAotICAgICAgICByZXR1cm4gcmVwbGFjZWRFbGVtZW50LT5jb21w
dXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygp
Lmhhc1JhdGlvKCkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLmxvZ2ljYWxBc3BlY3RSYXRpbygp
OwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKK0Zsb2F0U2l6ZSBSZW5kZXJCb3g6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29u
c3QKK3sKKyAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmhhc1JhdGlvKCkpCisgICAgICAg
IHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgpLmFzcGVjdFJhdGlvTG9n
aWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsSGVpZ2h0KCkudmFs
dWUpOworICAgIHJldHVybiB7IH07Cit9CisKIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRV
bml0PiBSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8o
KSBjb25zdAogewotICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNaW5TaXplID0gTGF5b3V0VW5p
dCgpOwotICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRNYXhTaXplID0gTGF5b3V0VW5pdDo6bWF4
KCk7Ci0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlvID0gcmVzb2x2ZUFzcGVj
dFJhdGlvKCk7CisgICAgYXV0byB0cmFuc2ZlcnJlZE1pblNpemUgPSBMYXlvdXRVbml0IHsgfTsK
KyAgICBhdXRvIHRyYW5zZmVycmVkTWF4U2l6ZSA9IExheW91dFVuaXQ6Om1heCgpOworICAgIGF1
dG8gYXNwZWN0UmF0aW8gPSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpOwogICAgIGlmICghYXNwZWN0
UmF0aW8pCiAgICAgICAgIHJldHVybiB7IHRyYW5zZmVycmVkTWluU2l6ZSwgdHJhbnNmZXJyZWRN
YXhTaXplIH07CiAKQEAgLTUzMTQsOSArNTMxNSw5IEBAIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBM
YXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2FsV2lkdGhGcm9tQXNwZWN0
CiAKIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVN
aW5NYXhMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICBMYXlvdXRV
bml0IHRyYW5zZmVycmVkTWluU2l6ZSA9IExheW91dFVuaXQoKTsKLSAgICBMYXlvdXRVbml0IHRy
YW5zZmVycmVkTWF4U2l6ZSA9IExheW91dFVuaXQ6Om1heCgpOwotICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBhc3BlY3RSYXRpbyA9IHJlc29sdmVBc3BlY3RSYXRpbygpOworICAgIGF1dG8gdHJh
bnNmZXJyZWRNaW5TaXplID0gTGF5b3V0VW5pdCB7IH07CisgICAgYXV0byB0cmFuc2ZlcnJlZE1h
eFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKKyAgICBhdXRvIGFzcGVjdFJhdGlvID0gcHJlZmVy
cmVkQXNwZWN0UmF0aW8oKTsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQogICAgICAgICByZXR1cm4g
eyB0cmFuc2ZlcnJlZE1pblNpemUsIHRyYW5zZmVycmVkTWF4U2l6ZSB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggMTg3OGM3ZGVmYmVlLi45ODU2MTc2YmRiODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTYzOSw2ICs2MzksOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCB7
IHJldHVybiBpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lKCkgJiYgKGlzSW1hZ2Uo
KSB8fCBpc1JlbmRlclZpZGVvKCkgfHwgaXNSZW5kZXJIVE1MQ2FudmFzKCkgfHwgaXNSZW5kZXJW
aWV3VHJhbnNpdGlvbkNhcHR1cmUoKSk7IH0KIAorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3Q7CisgICAgdmlydHVhbCBGbG9hdFNp
emUgcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAg
IFJlbmRlckJveChUeXBlLCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9uU2V0PFR5cGVG
bGFnPiA9IHsgfSwgVHlwZVNwZWNpZmljRmxhZ3MgPSB7IH0pOwogICAgIFJlbmRlckJveChUeXBl
LCBEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxUeXBlRmxhZz4gPSB7IH0sIFR5
cGVTcGVjaWZpY0ZsYWdzID0geyB9KTsKQEAgLTY4NCwxMCArNjg3LDcgQEAgcHJvdGVjdGVkOgog
ICAgIGJvb2wgc2tpcENvbnRhaW5pbmdCbG9ja0ZvclBlcmNlbnRIZWlnaHRDYWxjdWxhdGlvbihj
b25zdCBSZW5kZXJCb3gmIGNvbnRhaW5pbmdCbG9jaywgYm9vbCBpc1BlcnBlbmRpY3VsYXJXcml0
aW5nTW9kZSkgY29uc3Q7CiAKICAgICB2b2lkIGluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhl
bENvdW50SWZOZWVkZWQoY29uc3QgSW50U2l6ZSYpOwotCi0gICAgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHJlc29sdmVBc3BlY3RSYXRpbygpIGNvbnN0OwogICAgIGJvb2wgTk9ERUxFVEUgc2hvdWxk
SWdub3JlQXNwZWN0UmF0aW8oKSBjb25zdDsKLSAgICBib29sIGlzUmVuZGVyUmVwbGFjZWRXaXRo
SW50cmluc2ljUmF0aW8oKSBjb25zdDsKICAgICBib29sIHNob3VsZENvbXB1dGVMb2dpY2FsV2lk
dGhGcm9tQXNwZWN0UmF0aW8oKSBjb25zdDsKICAgICBib29sIGlzUmVzb2x2ZWFibGVTdHJldGNo
U2l6ZShjb25zdCBhdXRvJiBzaXplKSBjb25zdCB7IHJldHVybiBzaXplLmlzU3RyZXRjaCgpICYm
IGNvbnRhaW5pbmdCbG9ja0hhc0RlZmluaXRlQmxvY2tTaXplKCk7IH0KICAgICBib29sIGlzVW5y
ZXNvbHZlYWJsZVN0cmV0Y2hTaXplKGNvbnN0IGF1dG8mIHNpemUpIGNvbnN0IHsgcmV0dXJuIHNp
emUuaXNTdHJldGNoKCkgJiYgIWNvbnRhaW5pbmdCbG9ja0hhc0RlZmluaXRlQmxvY2tTaXplKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmlu
ZGV4IDc0YjNlMGI4ZDJjYS4uZmJjYzZlMjdlN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTg3OSw3ICs4NzksNyBAQCBzdGF0aWMg
Ym9vbCBpc1NWR1Jvb3RXaXRoSW50cmluc2ljQXNwZWN0UmF0aW8oY29uc3QgUmVuZGVyQm94JiBm
bGV4SXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIEl0J3MgY29tbW9uIGZvciBz
b21lIHJlcGxhY2VkIGVsZW1lbnRzLCBzdWNoIGFzIFNWR3MsIHRvIGhhdmUgaW50cmluc2ljIGFz
cGVjdCByYXRpb3MgYnV0IG5vIGludHJpbnNpYyBzaXplcy4KICAgICAvLyBUaGF0J3Mgd2h5IGl0
IGlzbid0IGVub3VnaCBqdXN0IHRvIGNoZWNrIGZvciBpbnRyaW5zaWMgc2l6ZXMgaW4gdGhvc2Ug
Y2FzZXMuCi0gICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkuY29t
cHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCkgPiAwOworICAgIHJldHVybiBmbGV4SXRlbS5wcmVm
ZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCkgPiAwOwogfTsKIAog
c3RhdGljIGJvb2wgZmxleEl0ZW1IYXNBc3BlY3RSYXRpbyhjb25zdCBSZW5kZXJCb3gmIGZsZXhJ
dGVtKQpAQCAtMTI2MiwxMSArMTI2MiwxMSBAQCBkb3VibGUgUmVuZGVyRmxleGlibGVCb3g6OnBy
ZWZlcnJlZEFzcGVjdFJhdGlvRm9yRmxleEl0ZW0oY29uc3QgUmVuZGVyQm94JiBmbGV4SQogICAg
IGF1dG8gZmxleEl0ZW1Bc3BlY3RSYXRpbyA9IFsmXSB7CiAgICAgICAgIGF1dG8gZmxleEl0ZW1J
bnRyaW5zaWNTaXplID0gTGF5b3V0U2l6ZSB7IGZsZXhJdGVtLmludHJpbnNpY0xvZ2ljYWxXaWR0
aCgpLCBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKICAgICAgICAgaWYgKGZs
ZXhJdGVtLmlzUmVuZGVyT3JMZWdhY3lSZW5kZXJTVkdSb290KCkpCi0gICAgICAgICAgICByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKS5jb21wdXRlSW50cmluc2ljQXNw
ZWN0UmF0aW8oKTsKKyAgICAgICAgICAgIHJldHVybiBmbGV4SXRlbS5wcmVmZXJyZWRBc3BlY3RS
YXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAgICAgICAgIGlmIChmbGV4SXRlbS5z
dHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRpbygpIHx8IChmbGV4SXRlbS5zdHlsZSgpLmFzcGVj
dFJhdGlvKCkuaXNBdXRvQW5kUmF0aW8oKSAmJiBmbGV4SXRlbUludHJpbnNpY1NpemUuaXNFbXB0
eSgpKSkKICAgICAgICAgICAgIHJldHVybiBmbGV4SXRlbS5zdHlsZSgpLmxvZ2ljYWxBc3BlY3RS
YXRpbygpOwotICAgICAgICBpZiAoYXV0byogcmVwbGFjZWRFbGVtZW50ID0gZHluYW1pY0Rvd25j
YXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwbGFj
ZWRFbGVtZW50LT5jb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgaWYgKGlz
PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkpCisgICAgICAgICAgICByZXR1cm4gZmxleEl0ZW0u
cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RSYXRpb0RvdWJsZSgpOwogCiAgICAg
ICAgIEFTU0VSVChmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkpOwogICAgICAgICBy
ZXR1cm4gZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbFdpZHRoKCkudG9Eb3VibGUoKSAvIGZsZXhJ
dGVtLmludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKS50b0RvdWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggYTUzMGY0YmQzYjUyLi5iNzU5NjQyNDhmMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtOTM4LDI2ICs5
MzgsMTMgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0KCkKICAgICB9CiB9CiAKLUZsb2F0U2l6
ZSBSZW5kZXJJbWFnZTo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAorRmxvYXRTaXplIFJl
bmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKCFzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKLSAgICBhdXRvIGludHJpbnNpY1Np
emUgPSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKLQotICAgIC8vIE91
ciBpbnRyaW5zaWNTaXplIGlzIGVtcHR5IGlmIHdlJ3JlIHJlbmRlcmluZyBnZW5lcmF0ZWQgaW1h
Z2VzIHdpdGggcmVsYXRpdmUgd2lkdGgvaGVpZ2h0LiBGaWd1cmUgb3V0IHRoZSByaWdodCBpbnRy
aW5zaWMgc2l6ZSB0byB1c2UuCi0gICAgaWYgKGludHJpbnNpY1NpemUuaXNFbXB0eSgpICYmIChp
bWFnZVJlc291cmNlKCkuaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgfHwgaW1hZ2VSZXNvdXJjZSgp
LmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBjb250
YWluaW5nQmxvY2sgPSBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSA/IGNvbnRhaW5lcigpIDogdGhp
cy0+Y29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgICAgIGlmIChhdXRvKiBib3ggPSBkeW5hbWljRG93
bmNhc3Q8UmVuZGVyQm94PigqY29udGFpbmluZ0Jsb2NrKSkgewotICAgICAgICAgICAgaW50cmlu
c2ljU2l6ZS5zZXRXaWR0aChib3gtPmNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoKSk7Ci0gICAgICAg
ICAgICBpbnRyaW5zaWNTaXplLnNldEhlaWdodChib3gtPmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQo
QXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGU6OkluY2x1ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKLX0KLQotRmxv
YXRTaXplIFJlbmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKCFzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKKyAgICAvLyBTaXplIGNvbnRh
aW5tZW50IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LCBidXQg
dGhlCisgICAgLy8gYXNwZWN0IHJhdGlvIGZyb20gdGhlIENTUyBhc3BlY3QtcmF0aW8gcHJvcGVy
dHkgaXMgc3RpbGwgYXZhaWxhYmxlIHZpYSB0aGUKKyAgICAvLyBiYXNlIGNsYXNzICh3aGljaCBk
b2Vzbid0IHF1ZXJ5IGltYWdlIGRhdGEpLgorICAgIGlmIChzaG91bGRBcHBseVNpemVDb250YWlu
bWVudCgpKQorICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJh
dGlvQXNTaXplKCk7CiAKICAgICAvLyBEb24ndCBjb21wdXRlIGFuIGludHJpbnNpYyByYXRpbyB0
byBwcmVzZXJ2ZSBoaXN0b3JpY2FsIFdlYktpdCBiZWhhdmlvciBpZiB3ZSdyZSBwYWludGluZyBh
bHQgdGV4dCBhbmQvb3IgYSBicm9rZW4gaW1hZ2UuCiAgICAgaWYgKHNob3VsZERpc3BsYXlCcm9r
ZW5JbWFnZUljb24oKSkgewpAQCAtOTY2LDcgKzk1MywxOCBAQCBGbG9hdFNpemUgUmVuZGVySW1h
Z2U6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgMS4wLCAx
LjAgfTsKICAgICB9CiAKLSAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVj
dFJhdGlvKCk7CisgICAgaWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgp
KSB7CisgICAgICAgIGF1dG8gcmF0aW8gPSBzdmdSb290LT5wcmVmZXJyZWRBc3BlY3RSYXRpb0Fz
U2l6ZSgpOworICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgIXJhdGlv
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJhdGlvID0gcmF0aW8udHJhbnNwb3NlZFNpemUoKTsK
KworICAgICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSB8fCAoc3R5bGUo
KS5hc3BlY3RSYXRpbygpLmlzQXV0b0FuZFJhdGlvKCkgJiYgcmF0aW8uaXNFbXB0eSgpKSkKKyAg
ICAgICAgICAgIHJhdGlvID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3Bl
Y3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhl
aWdodCgpLnZhbHVlKTsKKworICAgICAgICByZXR1cm4gcmF0aW87CisgICAgfQorCisgICAgcmV0
dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOwogfQogCiBi
b29sIFJlbmRlckltYWdlOjpzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggNWVhZjkyYTYxNzZlLi5k
NDYwMTExY2M0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC04
NCwxNCArODQsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaXNNdWx0aVJlcHJlc2VudGF0aW9uSEVJ
QygpIGNvbnN0OwogI2VuZGlmCiAKKyAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW9B
c1NpemUoKSBjb25zdCBmaW5hbDsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlckltYWdlKFR5cGUs
IEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8UmVwbGFjZWRGbGFnPiwgU3R5bGU6
OkltYWdlKiA9IG51bGxwdHIsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbyA9IDEu
MGYpOwogICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNo
b3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBmaW5hbDsKICAgICBSZW5kZXJS
ZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3QgZmluYWw7Ci0gICAgRmxvYXRTaXplIGNv
bXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QgZmluYWw7Ci0gICAgRmxvYXRTaXplIHByZWZlcnJl
ZEFzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBmb3JlZ3JvdW5kSXNLbm93blRv
QmVPcGFxdWVJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxSZWN0LCB1bnNpZ25lZCBtYXhE
ZXB0aFRvVGVzdCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0eWxlV2lsbENoYW5nZShT
dHlsZTo6RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IGNjZmVh
YWU1NzdmMy4uMjJlZmNjODM0YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJJbmxpbmVJdGVyYXRv
ckJveC5oIgogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yTGluZUJveElubGluZXMuaCIKICNpbmNs
dWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKKyNpbmNsdWRlICJMZWdhY3lSZW5kZXJTVkdSb290Lmgi
CiAjaW5jbHVkZSAiTGluZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIkxvY2FsRnJhbWUuaCIKICNp
bmNsdWRlICJQb3NpdGlvbmVkTGF5b3V0Q29uc3RyYWludHMuaCIKQEAgLTU2LDYgKzU3LDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUr
R2V0dGVyc0lubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZStTZXR0ZXJzSW5saW5lcy5o
IgorI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgpAQCAtNDY4
LDYzICs0NzAsNzEgQEAgc3RhdGljIGJvb2wgaXNWaWRlb1dpdGhEZWZhdWx0T2JqZWN0U2l6ZShj
b25zdCBSZW5kZXJSZXBsYWNlZCogbWF5YmVWaWRlbykKICAgICBVTlVTRURfUEFSQU0obWF5YmVW
aWRlbyk7CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7Ci19IAorfQogCi12b2lkIFJlbmRlclJl
cGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChSZW5kZXJS
ZXBsYWNlZCogc3ZnUm9vdCwgRmxvYXRTaXplJiBjb25zdHJhaW5lZFNpemUsIEZsb2F0U2l6ZSYg
cHJlZmVycmVkQXNwZWN0UmF0aW8pIGNvbnN0CitzdGF0aWMgRmxvYXRTaXplIGNvbXB1dGVJbnRy
aW5zaWNTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyUmVwbGFjZWQmIHJlcGxhY2VkUmVuZGVy
ZXIpCit7CisgICAgQVNTRVJUKCFyZXBsYWNlZFJlbmRlcmVyLnNob3VsZEFwcGx5U2l6ZUNvbnRh
aW5tZW50KCkpOworCisgICAgaWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IHJlcGxhY2VkUmVuZGVy
ZXIuZW1iZWRkZWRTVkdSb290KCkpIHsKKyAgICAgICAgYXV0byBpbnRyaW5zaWNTaXplID0gWyZd
IHsKKyAgICAgICAgICAgIGlmIChDaGVja2VkUHRyIHJvb3QgPSBkeW5hbWljRG93bmNhc3Q8UmVu
ZGVyU1ZHUm9vdD4oKnN2Z1Jvb3QpKQorICAgICAgICAgICAgICAgIHJldHVybiByb290LT5jb21w
dXRlSW50cmluc2ljU2l6ZSgpOworICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PExlZ2FjeVJl
bmRlclNWR1Jvb3Q+KCpzdmdSb290KS5jb21wdXRlSW50cmluc2ljU2l6ZSgpOworICAgICAgICB9
KCk7CisKKyAgICAgICAgaW50cmluc2ljU2l6ZS5zY2FsZShyZXBsYWNlZFJlbmRlcmVyLnN0eWxl
KCkudXNlZFpvb20oKSk7CisgICAgICAgIGlmIChDaGVja2VkUHRyIHJlbmRlckltYWdlID0gZHlu
YW1pY0Rvd25jYXN0PFJlbmRlckltYWdlPihyZXBsYWNlZFJlbmRlcmVyKSkKKyAgICAgICAgICAg
IGludHJpbnNpY1NpemUuc2NhbGUocmVuZGVySW1hZ2UtPmltYWdlRGV2aWNlUGl4ZWxSYXRpbygp
KTsKKyAgICAgICAgaWYgKCFyZXBsYWNlZFJlbmRlcmVyLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkpCisgICAgICAgICAgICBpbnRyaW5zaWNTaXplID0gaW50cmluc2ljU2l6ZS50cmFuc3Bvc2Vk
U2l6ZSgpOworICAgICAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKKyAgICB9CisKKyAgICBpZiAo
Q2hlY2tlZFB0ciByZW5kZXJJbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFnZT4ocmVw
bGFjZWRSZW5kZXJlcikpIHsKKyAgICAgICAgYXV0byBpbnRyaW5zaWNTaXplID0gRmxvYXRTaXpl
IHsgcmVuZGVySW1hZ2UtPmludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCByZW5kZXJJbWFnZS0+aW50
cmluc2ljTG9naWNhbEhlaWdodCgpIH07CisgICAgICAgIC8vIE91ciBpbnRyaW5zaWNTaXplIGlz
IGVtcHR5IGlmIHdlJ3JlIHJlbmRlcmluZyBnZW5lcmF0ZWQgaW1hZ2VzIHdpdGggcmVsYXRpdmUg
d2lkdGgvaGVpZ2h0LiBGaWd1cmUgb3V0IHRoZSByaWdodCBpbnRyaW5zaWMgc2l6ZSB0byB1c2Uu
CisgICAgICAgIGlmIChpbnRyaW5zaWNTaXplLmlzRW1wdHkoKSAmJiAocmVuZGVySW1hZ2UtPmlt
YWdlUmVzb3VyY2UoKS5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSB8fCByZW5kZXJJbWFnZS0+aW1h
Z2VSZXNvdXJjZSgpLmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkpIHsKKyAgICAgICAgICAgIENo
ZWNrZWRQdHIgY29udGFpbmluZ0Jsb2NrID0gcmVuZGVySW1hZ2UtPmlzT3V0T2ZGbG93UG9zaXRp
b25lZCgpID8gcmVuZGVySW1hZ2UtPmNvbnRhaW5lcigpIDogcmVuZGVySW1hZ2UtPmNvbnRhaW5p
bmdCbG9jaygpOworICAgICAgICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyQm94ID0gZHluYW1p
Y0Rvd25jYXN0PFJlbmRlckJveD4oY29udGFpbmluZ0Jsb2NrKSkgeworICAgICAgICAgICAgICAg
IGludHJpbnNpY1NpemUuc2V0V2lkdGgocmVuZGVyQm94LT5jb250ZW50Qm94TG9naWNhbFdpZHRo
KCkpOworICAgICAgICAgICAgICAgIGludHJpbnNpY1NpemUuc2V0SGVpZ2h0KHJlbmRlckJveC0+
YXZhaWxhYmxlTG9naWNhbEhlaWdodChBdmFpbGFibGVMb2dpY2FsSGVpZ2h0VHlwZTo6SW5jbHVk
ZU1hcmdpbkJvcmRlclBhZGRpbmcpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gaW50cmluc2ljU2l6ZTsKKyAgICB9CisKKyAgICBpZiAoQ2hlY2tlZFB0ciByZW5k
ZXJXaWRnZXQgPWR5bmFtaWNEb3duY2FzdDxSZW5kZXJXaWRnZXQ+KHJlcGxhY2VkUmVuZGVyZXIp
KQorICAgICAgICByZXR1cm4geyByZXBsYWNlZFJlbmRlcmVyLmludHJpbnNpY0xvZ2ljYWxXaWR0
aCgpLCByZXBsYWNlZFJlbmRlcmVyLmludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OworCisgICAg
aWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJTVkdSb290Pihy
ZXBsYWNlZFJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIHN2Z1Jvb3QtPmNvbXB1dGVJbnRyaW5z
aWNTaXplKCk7CisKKyAgICBpZiAoQ2hlY2tlZFB0ciBsZWdhY3lTVkdSb290ID0gZHluYW1pY0Rv
d25jYXN0PExlZ2FjeVJlbmRlclNWR1Jvb3Q+KHJlcGxhY2VkUmVuZGVyZXIpKQorICAgICAgICBy
ZXR1cm4gbGVnYWN5U1ZHUm9vdC0+Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKKworICAgIHJldHVy
biB7IHJlcGxhY2VkUmVuZGVyZXIuaW50cmluc2ljTG9naWNhbFdpZHRoKCksIHJlcGxhY2VkUmVu
ZGVyZXIuaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07Cit9CisKK3ZvaWQgUmVuZGVyUmVwbGFj
ZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNp
emVzKEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykg
Y29uc3QKIHsKLSAgICBGbG9hdFNpemUgaW50cmluc2ljU2l6ZTsKICAgICBpZiAoc2hvdWxkQXBw
bHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSkgewotICAgICAgICBpbnRyaW5zaWNTaXpl
ID0gUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7Ci0gICAgICAgIHByZWZl
cnJlZEFzcGVjdFJhdGlvID0gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7
Ci0gICAgfSBlbHNlIGlmIChzdmdSb290KSB7Ci0gICAgICAgIGludHJpbnNpY1NpemUgPSBzdmdS
b290LT5jb21wdXRlSW50cmluc2ljU2l6ZSgpOwotICAgICAgICBwcmVmZXJyZWRBc3BlY3RSYXRp
byA9IHN2Z1Jvb3QtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7Ci0KLSAgICAgICAgaWYgKHN0eWxl
KCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkgfHwgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1
dG9BbmRSYXRpbygpICYmIHByZWZlcnJlZEFzcGVjdFJhdGlvLmlzRW1wdHkoKSkpCi0gICAgICAg
ICAgICBwcmVmZXJyZWRBc3BlY3RSYXRpbyA9IEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0
eWxlKCkuYXNwZWN0UmF0aW8oKS53aWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvKCku
aGVpZ2h0KCkudmFsdWUpOwotCi0gICAgICAgIC8vIEhhbmRsZSB6b29tICYgdmVydGljYWwgd3Jp
dGluZyBtb2RlcyBoZXJlLCBhcyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgZG9lc24ndCBrbm93IGFi
b3V0IHRoZW0uCi0gICAgICAgIGludHJpbnNpY1NpemUuc2NhbGUoc3R5bGUoKS51c2VkWm9vbSgp
KTsKLQotICAgICAgICBpZiAoYXV0byogaW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW1h
Z2U+KCp0aGlzKSkKLSAgICAgICAgICAgIGludHJpbnNpY1NpemUuc2NhbGUoaW1hZ2UtPmltYWdl
RGV2aWNlUGl4ZWxSYXRpbygpKTsKLQotICAgICAgICAvLyBVcGRhdGUgb3VyIGludHJpbnNpYyBz
aXplIHRvIG1hdGNoIHdoYXQgdGhlIGNvbnRlbnQgcmVuZGVyZXIgaGFzIGNvbXB1dGVkLCBzbyB0
aGF0IHdoZW4gd2UKLSAgICAgICAgLy8gY29uc3RyYWluIHRoZSBzaXplIGJlbG93LCB0aGUgY29y
cmVjdCBpbnRyaW5zaWMgc2l6ZSB3aWxsIGJlIG9idGFpbmVkIGZvciBjb21wYXJpc29uIGFnYWlu
c3QKLSAgICAgICAgLy8gbWluIGFuZCBtYXggd2lkdGhzLgotICAgICAgICBpZiAoaXNSZW5kZXJX
aWRnZXQoKSkgewotICAgICAgICAgICAgLy8gRm9yIFJlbmRlcldpZGdldCBjb250ZW50IChlLmcu
IDxvYmplY3Q+IGVtYmVkZGluZyBhbiBTVkcgZG9jdW1lbnQpLCBhbHdheXMgdXBkYXRlCi0gICAg
ICAgICAgICAvLyBtX2ludHJpbnNpY1NpemUgdG8gcmVmbGVjdCBjdXJyZW50IGludHJpbnNpYyBk
aW1lbnNpb25zLCBhcHBseWluZyBDU1MgZGVmYXVsdCBmYWxsYmFjawotICAgICAgICAgICAgLy8g
dmFsdWVzICgzMDB4MTUwKSBmb3IgZGltZW5zaW9ucyB3aXRoIG5vIGludHJpbnNpYyB2YWx1ZSAo
ZS5nLiBwZXJjZW50YWdlLXNpemVkIG9yCi0gICAgICAgICAgICAvLyByZW1vdmVkIGF0dHJpYnV0
ZXMpLiBUaGlzIHByZXZlbnRzIHN0YWxlIGNhY2hlZCBzaXplcyB3aGVuIGF0dHJpYnV0ZXMgbGlr
ZSB3aWR0aC9oZWlnaHQKLSAgICAgICAgICAgIC8vIGFyZSByZW1vdmVkLiBOb3RlOiB0aGlzIGRv
ZXMgbm90IGFwcGx5IHRvIFJlbmRlckltYWdlICg8aW1nIHNyYz0ic3ZnIj4pLCB3aGljaCBtYW5h
Z2VzCi0gICAgICAgICAgICAvLyBpdHMgb3duIGludHJpbnNpYyBzaXplIHZpYSBzZXRJbnRyaW5z
aWNTaXplKCkgZHVyaW5nIGltYWdlIGxvYWQuCi0gICAgICAgICAgICBhdXRvIHNpemVUb0NhY2hl
ID0gaW50cmluc2ljU2l6ZTsKKyAgICAgICAgaW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZSB7IGlu
dHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKKyAgICAg
ICAgaW50cmluc2ljUmF0aW8gPSBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW9B
c1NpemUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnRyaW5zaWNTaXplID0gY29tcHV0ZUlu
dHJpbnNpY1NpemVGb3JSZW5kZXJlcigqdGhpcyk7CisgICAgICAgIGludHJpbnNpY1JhdGlvID0g
cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKKworICAgICAgICBhdXRvIHNpemVUb0NhY2hl
ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGludHJpbnNpY1NpemUgOiBpbnRyaW5zaWNT
aXplLnRyYW5zcG9zZWRTaXplKCk7CisgICAgICAgIGlmIChlbWJlZGRlZFNWR1Jvb3QoKSAmJiBp
c1JlbmRlcldpZGdldCgpKSB7CiAgICAgICAgICAgICBpZiAoIXNpemVUb0NhY2hlLndpZHRoKCkp
CiAgICAgICAgICAgICAgICAgc2l6ZVRvQ2FjaGUuc2V0V2lkdGgoY0RlZmF1bHRXaWR0aCk7CiAg
ICAgICAgICAgICBpZiAoIXNpemVUb0NhY2hlLmhlaWdodCgpKQogICAgICAgICAgICAgICAgIHNp
emVUb0NhY2hlLnNldEhlaWdodChjRGVmYXVsdEhlaWdodCk7CiAgICAgICAgICAgICBtX2ludHJp
bnNpY1NpemUgPSBMYXlvdXRTaXplKHNpemVUb0NhY2hlKTsKLSAgICAgICAgfSBlbHNlIGlmICgh
cHJlZmVycmVkQXNwZWN0UmF0aW8uaXNFbXB0eSgpICYmICFpbnRyaW5zaWNTaXplLmlzWmVybygp
KQotICAgICAgICAgICAgbV9pbnRyaW5zaWNTaXplID0gTGF5b3V0U2l6ZShpbnRyaW5zaWNTaXpl
KTsKLQotICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKLSAgICAgICAg
ICAgIGlmICghcHJlZmVycmVkQXNwZWN0UmF0aW8uaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
IHByZWZlcnJlZEFzcGVjdFJhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW8udHJhbnNwb3NlZFNp
emUoKTsKLSAgICAgICAgICAgIGludHJpbnNpY1NpemUgPSBpbnRyaW5zaWNTaXplLnRyYW5zcG9z
ZWRTaXplKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpbnRyaW5zaWNTaXpl
ID0gY29tcHV0ZUludHJpbnNpY1NpemUoKTsKLSAgICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8g
PSB0aGlzLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpOwotICAgICAgICBpZiAoIXByZWZlcnJlZEFz
cGVjdFJhdGlvLmlzRW1wdHkoKSAmJiAhaW50cmluc2ljU2l6ZS5pc1plcm8oKSkKLSAgICAgICAg
ICAgIG1faW50cmluc2ljU2l6ZSA9IExheW91dFNpemUoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA/IGludHJpbnNpY1NpemUgOiBpbnRyaW5zaWNTaXplLnRyYW5zcG9zZWRTaXplKCkpOworICAg
ICAgICB9IGVsc2UgaWYgKCFpbnRyaW5zaWNSYXRpby5pc0VtcHR5KCkgJiYgIWludHJpbnNpY1Np
emUuaXNaZXJvKCkpCisgICAgICAgICAgICBtX2ludHJpbnNpY1NpemUgPSBMYXlvdXRTaXplKHNp
emVUb0NhY2hlKTsKICAgICB9Ci0gICAgY29uc3RyYWluZWRTaXplID0gaW50cmluc2ljU2l6ZTsK
LX0KLQotdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWlu
ZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoUmVuZGVyUmVwbGFjZWQqIHN2Z1Jvb3QsIEZsb2F0
U2l6ZSYgaW50cmluc2ljU2l6ZSwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgY29uc3QKLXsK
LSAgICBjb21wdXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChzdmdSb290LCBp
bnRyaW5zaWNTaXplLCBpbnRyaW5zaWNSYXRpbyk7CiAKICAgICAvLyBOb3cgY29uc3RyYWluIHRo
ZSBpbnRyaW5zaWMgc2l6ZSBhbG9uZyBlYWNoIGF4aXMgYWNjb3JkaW5nIHRvIG1pbmltdW0gYW5k
IG1heGltdW0gd2lkdGgvaGVpZ2h0cyBhbG9uZyB0aGUKICAgICAvLyBvcHBvc2l0ZSBheGlzLiBT
byBmb3IgZXhhbXBsZSBhIG1heGltdW0gd2lkdGggdGhhdCBzaHJpbmtzIG91ciB3aWR0aCB3aWxs
IHJlc3VsdCBpbiB0aGUgaGVpZ2h0IHdlIGNvbXB1dGUgaGVyZQpAQCAtNTk0LDI3ICs2MDQsMTUg
QEAgTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6cmVwbGFjZWRDb250ZW50UmVjdChjb25zdCBM
YXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQogICAgIHJldHVybiBmaW5hbFJlY3Q7CiB9CiAKLWRv
dWJsZSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QK
LXsKLSAgICBGbG9hdFNpemUgaW50cmluc2ljUmF0aW87Ci0gICAgRmxvYXRTaXplIGludHJpbnNp
Y1NpemU7Ci0gICAgY29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goZW1i
ZWRkZWRTVkdSb290KCksIGludHJpbnNpY1NpemUsIGludHJpbnNpY1JhdGlvKTsKLSAgICByZXR1
cm4gaW50cmluc2ljUmF0aW8uYXNwZWN0UmF0aW9Eb3VibGUoKTsKLX0KLQotRmxvYXRTaXplIFJl
bmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKIHsK
LSAgICAvLyBJZiB0aGVyZSdzIGFuIGVtYmVkZGVkU1ZHUm9vdCgpIG9mIGEgcmVtb3RlLCByZWZl
cmVuY2VkIGRvY3VtZW50IGF2YWlsYWJsZSwgdGhpcyBjb2RlLXBhdGggc2hvdWxkIG5ldmVyIGJl
IHVzZWQuCi0gICAgQVNTRVJUKCFlbWJlZGRlZFNWR1Jvb3QoKSB8fCBzaG91bGRBcHBseVNpemVP
cklubGluZVNpemVDb250YWlubWVudCgpKTsKLSAgICByZXR1cm4geyBpbnRyaW5zaWNMb2dpY2Fs
V2lkdGgoKSwgaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CisgICAgcmV0dXJuIHByZWZlcnJl
ZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKIH0KIAotRmxvYXRTaXpl
IFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CitGbG9hdFNpemUg
UmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3QKIHsKLSAg
ICAvLyBJZiB0aGVyZSdzIGFuIGVtYmVkZGVkU1ZHUm9vdCgpIG9mIGEgcmVtb3RlLCByZWZlcmVu
Y2VkIGRvY3VtZW50IGF2YWlsYWJsZSwgdGhpcyBjb2RlLXBhdGggc2hvdWxkIG5ldmVyIGJlIHVz
ZWQuCi0gICAgQVNTRVJUKCFlbWJlZGRlZFNWR1Jvb3QoKSB8fCBzaG91bGRBcHBseVNpemVPcklu
bGluZVNpemVDb250YWlubWVudCgpKTsKLSAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9hdFNp
emUoaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7Ci0g
ICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvOworICAgIGF1dG8gaW50cmluc2ljU2l6
ZSA9IEZsb2F0U2l6ZSB7IGludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBpbnRyaW5zaWNMb2dpY2Fs
SGVpZ2h0KCkgfTsKKyAgICBhdXRvIHByZWZlcnJlZEFzcGVjdFJhdGlvID0gRmxvYXRTaXplIHsg
fTsKIAogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSkgewogICAgICAg
ICBwcmVmZXJyZWRBc3BlY3RSYXRpbyA9IEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxl
KCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xv
Z2ljYWxIZWlnaHQoKS52YWx1ZSk7CkBAIC02NzIsNyArNjcwLDcgQEAgdm9pZCBSZW5kZXJSZXBs
YWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExh
eW91dFVuaXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3R5bGUgPSB0aGlzLT5zdHls
ZSgpOwotICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RSYXRpbyA9IGNvbXB1dGVJbnRyaW5zaWNBc3Bl
Y3RSYXRpbygpOworICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RSYXRpbyA9IHByZWZlcnJlZEFzcGVj
dFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICBhdXRvIGNvbXB1dGVkSW50
cmluc2ljTG9naWNhbFdpZHRoID0gbWluTG9naWNhbFdpZHRoOwogCiAgICAgaWYgKGF1dG8gZml4
ZWRMb2dpY2FsSGVpZ2h0ID0gc3R5bGUubG9naWNhbEhlaWdodCgpLnRyeUZpeGVkKCkpCkBAIC03
MTEsNyArNzA5LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2Vk
TG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2gKICAgICAvLyAxMC4zLjIgSW5s
aW5lLCByZXBsYWNlZCBlbGVtZW50czogaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRl
dC5odG1sI2lubGluZS1yZXBsYWNlZC13aWR0aAogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNSYXRp
bzsKICAgICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplOwotICAgIGNvbXB1dGVJbnRyaW5zaWNT
aXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKGVtYmVkZGVkU1ZHUm9vdCgp
LCBjb25zdHJhaW5lZFNpemUsIGludHJpbnNpY1JhdGlvKTsKKyAgICBjb21wdXRlSW50cmluc2lj
U2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhjb25zdHJhaW5lZFNpemUs
IGludHJpbnNpY1JhdGlvKTsKIAogICAgIGlmIChzdHlsZS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8o
KSkgewogICAgICAgICBib29sIGNvbXB1dGVkSGVpZ2h0SXNBdXRvID0gc3R5bGUubG9naWNhbEhl
aWdodCgpLmlzQXV0bygpOwpAQCAtODA3LDcgKzgwNSw3IEBAIExheW91dFVuaXQgUmVuZGVyUmVw
bGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0CiAgICAgLy8gMTAuNi4yIElubGluZSwgcmVwbGFjZWQgZWxlbWVudHM6IGh0dHA6Ly93d3cu
dzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNpbmxpbmUtcmVwbGFjZWQtaGVpZ2h0CiAgICAg
RmxvYXRTaXplIGludHJpbnNpY1JhdGlvOwogICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5lZFNpemU7
Ci0gICAgY29tcHV0ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4
U2l6ZXMoZW1iZWRkZWRTVkdSb290KCksIGNvbnN0cmFpbmVkU2l6ZSwgaW50cmluc2ljUmF0aW8p
OworICAgIGNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1h
eFNpemVzKGNvbnN0cmFpbmVkU2l6ZSwgaW50cmluc2ljUmF0aW8pOwogCiAgICAgYm9vbCB3aWR0
aElzQXV0byA9IHN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNBdXRvKCk7CiAgICAgYm9vbCBoYXNJ
bnRyaW5zaWNXaWR0aCA9IGNvbnN0cmFpbmVkU2l6ZS53aWR0aCgpID4gMCB8fCAoIWNvbnN0cmFp
bmVkU2l6ZS53aWR0aCgpICYmIHNob3VsZFJlc3BlY3RaZXJvSW50cmluc2ljV2lkdGgoKSkgfHwg
c2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKTsKQEAgLTg0OSw3ICs4NDcs
NyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxX
aWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogewogICAgIGlmIChoYXNJbnRyaW5zaWNBc3Bl
Y3RSYXRpbygpICYmICFzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8oKSkgewogICAgICAg
ICBpZiAoYXV0byBmaXhlZEhlaWdodCA9IHN0eWxlKCkubG9naWNhbEhlaWdodCgpLnRyeUZpeGVk
KCkpIHsKLSAgICAgICAgICAgIGF1dG8gaGVpZ2h0RGVyaXZlZFdpZHRoID0gTGF5b3V0VW5pdCB7
IGZpeGVkSGVpZ2h0LT5yZXNvbHZlWm9vbShzdHlsZSgpLnVzZWRab29tRm9yTGVuZ3RoKCkpICog
Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCkgfTsKKyAgICAgICAgICAgIGF1dG8gaGVpZ2h0
RGVyaXZlZFdpZHRoID0gTGF5b3V0VW5pdCB7IGZpeGVkSGVpZ2h0LT5yZXNvbHZlWm9vbShzdHls
ZSgpLnVzZWRab29tRm9yTGVuZ3RoKCkpICogcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5h
c3BlY3RSYXRpb0RvdWJsZSgpIH07CiAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBoZWln
aHREZXJpdmVkV2lkdGg7CiAgICAgICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBoZWlnaHREZXJp
dmVkV2lkdGg7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDYwLDE0ICsxMDU4LDYgQEAgdm9p
ZCBSZW5kZXJSZXBsYWNlZDo6bGF5b3V0U2hhZG93Q29udGVudChjb25zdCBMYXlvdXRTaXplJiBv
bGRTaXplKQogICAgIGNsZWFyQ2hpbGROZWVkc0xheW91dCgpOwogfQogCi1GbG9hdFNpemUgUmVu
ZGVyUmVwbGFjZWQ6OmludHJpbnNpY1JhdGlvKCkgY29uc3QKLXsKLSAgICBGbG9hdFNpemUgaW50
cmluc2ljUmF0aW87Ci0gICAgRmxvYXRTaXplIGNvbnN0cmFpbmVkU2l6ZTsKLSAgICBjb21wdXRl
QXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChlbWJlZGRlZFNWR1Jvb3QoKSwgY29u
c3RyYWluZWRTaXplLCBpbnRyaW5zaWNSYXRpbyk7Ci0gICAgcmV0dXJuIGludHJpbnNpY1JhdGlv
OwotfQotCiB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRPdXRPZkZsb3dQb3Np
dGlvbmVkTG9naWNhbFdpZHRoKExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHV0ZWRW
YWx1ZXMpIGNvbnN0CiB7CiAgICAgUG9zaXRpb25lZExheW91dENvbnN0cmFpbnRzIGlubGluZUNv
bnN0cmFpbnRzKCp0aGlzLCBMb2dpY2FsQm94QXhpczo6SW5saW5lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKaW5kZXggY2FmNzg4OWQ3YTEwLi42ZWZjNGJjNGM4
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC00Miwx
MyArNDIsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc2V0TmVlZHNMYXlvdXRJZk5lZWRlZEFmdGVy
SW50cmluc2ljU2l6ZUNoYW5nZSgpOwogCiAgICAgTGF5b3V0U2l6ZSBpbnRyaW5zaWNTaXplKCkg
Y29uc3QgZmluYWw7Ci0gICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvKCkgY29uc3Q7Ci0gICAg
CisKICAgICBib29sIGlzQ29udGVudExpa2VseVZpc2libGVJblZpZXdwb3J0KCk7CiAgICAgYm9v
bCBzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBkb3VibGUgY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3Q7Ci0KICAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIExh
eW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IFN0eWxlOjpQ
cmVmZXJyZWRTaXplJiBsb2dpY2FsSGVpZ2h0KSBjb25zdDsKQEAgLTYxLDYgKzU4LDExIEBAIHB1
YmxpYzoKICAgICBib29sIHJlcGxhY2VkTWluTG9naWNhbEhlaWdodENvbXB1dGVzQXNOb25lKCkg
Y29uc3Q7CiAgICAgYm9vbCByZXBsYWNlZE1heExvZ2ljYWxIZWlnaHRDb21wdXRlc0FzTm9uZSgp
IGNvbnN0OwogCisgICAgdmlydHVhbCBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IHBy
ZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRmxvYXRTaXplIHByZWZl
cnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisKIHByb3RlY3RlZDoKICAg
ICBSZW5kZXJSZXBsYWNlZChUeXBlLCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9uU2V0
PFJlcGxhY2VkRmxhZz4gPSB7IH0pOwogICAgIFJlbmRlclJlcGxhY2VkKFR5cGUsIEVsZW1lbnQm
LCBSZW5kZXJTdHlsZSYmLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplLCBPcHRpb25T
ZXQ8UmVwbGFjZWRGbGFnPiA9IHsgfSk7CkBAIC03Nyw5ICs3OSw2IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGU6OkRpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBjb21wdXRl
SW50cmluc2ljU2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgRmxvYXRTaXplIHByZWZlcnJlZEFz
cGVjdFJhdGlvKCkgY29uc3Q7Ci0KICAgICB2b2lkIHNldEludHJpbnNpY1NpemUoY29uc3QgTGF5
b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkgeyBtX2ludHJpbnNpY1NpemUgPSBpbnRyaW5zaWNTaXpl
OyB9CiAgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCk7CiAgICAgdmlydHVh
bCBib29sIGhhc1JlbGF0aXZlSW50cmluc2ljTG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KQEAgLTEwNiw3ICsxMDUsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21wdXRl
QXNwZWN0UmF0aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWlu
TG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0OwogCi0gICAg
dmlydHVhbCBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkgY29uc3QgeyByZXR1cm4g
MDsgfQogICAgIEFTQ0lJTGl0ZXJhbCByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlJlbmRlclJlcGxhY2VkIl9zOyB9CiAKICAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMjEsOCArMTE5LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIAogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNp
YmxlQ29udGVudCA9IHRydWUpIGZpbmFsOwotICAgIHZvaWQgY29tcHV0ZUFzcGVjdFJhdGlvSW5m
b3JtYXRpb25Gb3JSZW5kZXJCb3goUmVuZGVyUmVwbGFjZWQqLCBGbG9hdFNpemUmIGNvbnN0cmFp
bmVkU2l6ZSwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgY29uc3Q7Ci0gICAgdm9pZCBjb21w
dXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhSZW5k
ZXJSZXBsYWNlZCogc3ZnUm9vdCwgRmxvYXRTaXplJiBjb25zdHJhaW5lZFNpemUsIEZsb2F0U2l6
ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0OworICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY1NpemVz
Q29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoRmxvYXRTaXplJiBjb25zdHJhaW5l
ZFNpemUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0OwogCiAgICAgdmlydHVhbCBi
b29sIHNob3VsZERyYXdTZWxlY3Rpb25UaW50KCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IGU4Y2IwYTBlNDljYi4uNjFkOWY3ZjJi
Nzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtNDk4
LDQgKzQ5OCwyNiBAQCBSZW5kZXJSZXBsYWNlZCogUmVuZGVyV2lkZ2V0OjplbWJlZGRlZFNWR1Jv
b3QoKSBjb25zdAogICAgIHJldHVybiBmcmFtZVZpZXcgPyBmcmFtZVZpZXctPmVtYmVkZGVkU1ZH
Um9vdCgpIDogbnVsbHB0cjsKIH0KIAorRmxvYXRTaXplIFJlbmRlcldpZGdldDo6cHJlZmVycmVk
QXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAoreworICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3Vw
cHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQsIGJ1dCB0aGUKKyAgICAv
LyBhc3BlY3QgcmF0aW8gZnJvbSB0aGUgQ1NTIGFzcGVjdC1yYXRpbyBwcm9wZXJ0eSBpcyBzdGls
bCBhdmFpbGFibGUgdmlhIHRoZQorICAgIC8vIGJhc2UgY2xhc3MgKHdoaWNoIGRvZXNuJ3QgcXVl
cnkgaW1hZ2UgZGF0YSkuCisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisg
ICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUo
KTsKKworICAgIENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpOworICAgIGlm
ICghc3ZnUm9vdCkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3Bl
Y3RSYXRpb0FzU2l6ZSgpOworCisgICAgYXV0byByYXRpbyA9IHN2Z1Jvb3QtPnByZWZlcnJlZEFz
cGVjdFJhdGlvQXNTaXplKCk7CisgICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSgpICYm
ICFyYXRpby5pc0VtcHR5KCkpCisgICAgICAgIHJhdGlvID0gcmF0aW8udHJhbnNwb3NlZFNpemUo
KTsKKworICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRpbygpIHx8IChzdHlsZSgp
LmFzcGVjdFJhdGlvKCkuaXNBdXRvQW5kUmF0aW8oKSAmJiByYXRpby5pc0VtcHR5KCkpKQorICAg
ICAgICByYXRpbyA9IEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0
aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQo
KS52YWx1ZSk7CisKKyAgICByZXR1cm4gcmF0aW87Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAppbmRleCAzOWM0MGUzYmIw
NzQuLjc2YjNkOGYxN2FlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
aApAQCAtOTIsNiArOTIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRl
UHJlZmVycmVkV2lkdGhzKCkgY29uc3QgZmluYWw7CiAgICAgUmVuZGVyUmVwbGFjZWQqIGVtYmVk
ZGVkU1ZHUm9vdCgpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RS
YXRpb0FzU2l6ZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShI
aWdobGlnaHRTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBzZXRPdmVybGFwVGVzdFJlc3VsdChib29s
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
Y3BwCmluZGV4IGRlMjk0MzYyNDI5OC4uMTZlODgyMzMzYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTkxLDEyICs5MSwxNSBAQCBS
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciogUmVuZGVyU1ZHUm9vdDo6dmlld3BvcnRDb250YWlu
ZXIoKSBjb25zdAogCiBib29sIFJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0FzcGVjdFJhdGlv
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCk7Cisg
ICAgcmV0dXJuIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUo
KTsKIH0KIAogRmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkg
Y29uc3QKIHsKLSAgICBBU1NFUlRfSU1QTElFUyh2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29u
dGV4dCgpLmlzSW5SZW5kZXJUcmVlTGF5b3V0KCksICFzaG91bGRBcHBseVNpemVDb250YWlubWVu
dCgpKTsKKyAgICAvLyBTaXplIGNvbnRhaW5tZW50IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVu
c2lvbnMgZnJvbSBjb250ZW50LgorICAgIC8vIFRoZSBiYXNlIGNsYXNzIHJldHVybnMgdmFsdWVz
IGZyb20gdGhlIGNhY2hlIC8gY29udGFpbi1pbnRyaW5zaWMtc2l6ZSB3aXRob3V0IHF1ZXJ5aW5n
IGltYWdlIGRhdGEuCisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpCisgICAg
ICAgIHJldHVybiB7IGludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBpbnRyaW5zaWNMb2dpY2FsSGVp
Z2h0KCkgfTsKICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvU1ZHL2Nvb3Jkcy5odG1sI0lu
dHJpbnNpY1NpemluZwogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNTaXplID0geyBzdmdTVkdFbGVt
ZW50KCkuaW50cmluc2ljV2lkdGgoKSwgc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY0hlaWdodCgp
IH07CiAgICAgLy8gVHJhbnNwb3NlIGZvciB2ZXJ0aWNhbCB3cml0aW5nIG1vZGUKQEAgLTEwNSw5
ICsxMDgsMTMgQEAgRmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXpl
KCkgY29uc3QKICAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKIH0KIAotRmxvYXRTaXplIFJlbmRl
clNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKK0Zsb2F0U2l6ZSBSZW5kZXJT
VkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
KCFzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKTsKKyAgICAvLyBTaXplIGNvbnRhaW5tZW50
IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LCBidXQgdGhlCisg
ICAgLy8gYXNwZWN0IHJhdGlvIGZyb20gdGhlIENTUyBhc3BlY3QtcmF0aW8gcHJvcGVydHkgaXMg
c3RpbGwgYXZhaWxhYmxlIHZpYSB0aGUKKyAgICAvLyBiYXNlIGNsYXNzICh3aGljaCBkb2Vzbid0
IHF1ZXJ5IGltYWdlIGRhdGEpLgorICAgIGlmIChzaG91bGRBcHBseVNpemVDb250YWlubWVudCgp
KQorICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNT
aXplKCk7CiAKICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSkKICAgICAg
ICAgcmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9M
b2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52
YWx1ZSk7CkBAIC0xMzIsNyArMTM5LDYgQEAgRmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6OnByZWZl
cnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlz
QXV0b0FuZFJhdGlvKCkpCiAgICAgICAgIHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lv
bihzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0
UmF0aW9Mb2dpY2FsSGVpZ2h0KCkudmFsdWUpOwogICAgIHJldHVybiB7IH07Ci0KIH0KIAogYm9v
bCBSZW5kZXJTVkdSb290Ojppc0VtYmVkZGVkVGhyb3VnaFNWR0ltYWdlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggNjE5N2Y1NGZl
ZTFlLi4wNmUwYWNjMmRlMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5oCkBAIC00NSw4ICs0NSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1iZWRk
ZWRUaHJvdWdoU1ZHSW1hZ2UoKSBjb25zdDsKICAgICBib29sIGlzRW1iZWRkZWRUaHJvdWdoRnJh
bWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSBjb25zdDsKIAotICAgIEZsb2F0U2l6ZSBjb21wdXRl
SW50cmluc2ljU2l6ZSgpIGNvbnN0IGZpbmFsOwotICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3Bl
Y3RSYXRpbygpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6
ZSgpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5h
bDsKIAogICAgIGJvb2wgaXNMYXlvdXRTaXplQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNM
YXlvdXRTaXplQ2hhbmdlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAppbmRleCAzNmQzZTM4NTlk
YjYuLjQ1MzEyOWQ5NjU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTgxLDEyICs4MSwx
NSBAQCBTVkdTVkdFbGVtZW50JiBMZWdhY3lSZW5kZXJTVkdSb290OjpzdmdTVkdFbGVtZW50KCkg
Y29uc3QKIAogYm9vbCBMZWdhY3lSZW5kZXJTVkdSb290OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRp
bygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpOwor
ICAgIHJldHVybiBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91Ymxl
KCk7CiB9CiAKIEZsb2F0U2l6ZSBMZWdhY3lSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2lj
U2l6ZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUX0lNUExJRVModmlldygpLmZyYW1lVmlldygpLmxh
eW91dENvbnRleHQoKS5pc0luUmVuZGVyVHJlZUxheW91dCgpLCAhc2hvdWxkQXBwbHlTaXplQ29u
dGFpbm1lbnQoKSk7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNp
YyBkaW1lbnNpb25zIGZyb20gY29udGVudC4KKyAgICAvLyBUaGUgYmFzZSBjbGFzcyByZXR1cm5z
IHZhbHVlcyBmcm9tIHRoZSBjYWNoZSAvIGNvbnRhaW4taW50cmluc2ljLXNpemUgd2l0aG91dCBx
dWVyeWluZyBpbWFnZSBkYXRhLgorICAgIGlmIChzaG91bGRBcHBseVNpemVDb250YWlubWVudCgp
KQorICAgICAgICByZXR1cm4geyBpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50cmluc2ljTG9n
aWNhbEhlaWdodCgpIH07CiAgICAgRmxvYXRTaXplIGludHJpbnNpY1NpemUgPSB7IHN2Z1NWR0Vs
ZW1lbnQoKS5pbnRyaW5zaWNXaWR0aCgpLCBzdmdTVkdFbGVtZW50KCkuaW50cmluc2ljSGVpZ2h0
KCkgfTsKICAgICAvLyBUcmFuc3Bvc2UgZm9yIHZlcnRpY2FsIHdyaXRpbmcgbW9kZQogICAgIGlm
ICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKQEAgLTk0LDkgKzk3LDEzIEBAIEZsb2F0U2l6
ZSBMZWdhY3lSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0CiAgICAg
cmV0dXJuIGludHJpbnNpY1NpemU7CiB9CiAKLUZsb2F0U2l6ZSBMZWdhY3lSZW5kZXJTVkdSb290
OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CitGbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZH
Um9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAogewotICAgIEFTU0VSVCgh
c2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSk7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBz
dXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0IHRoZQorICAg
IC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBDU1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0
aWxsIGF2YWlsYWJsZSB2aWEgdGhlCisgICAgLy8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBx
dWVyeSBpbWFnZSBkYXRhKS4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkK
KyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6
ZSgpOwogCiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkpCiAgICAgICAg
IHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgpLmFzcGVjdFJhdGlvTG9n
aWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsSGVpZ2h0KCkudmFs
dWUpOwpAQCAtMTIxLDcgKzEyOCw2IEBAIEZsb2F0U2l6ZSBMZWdhY3lSZW5kZXJTVkdSb290Ojpw
cmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiAgICAgICAgIHJldHVybiAqaW50cmluc2ljUmF0
aW9WYWx1ZTsKICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzQXV0b0FuZFJhdGlvKCkp
CiAgICAgICAgIHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgpLmFzcGVj
dFJhdGlvTG9naWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsSGVp
Z2h0KCkudmFsdWUpOwotCiAgICAgcmV0dXJuIHByZWZlcnJlZEFzcGVjdFJhdGlvOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5k
ZXJTVkdSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lS
ZW5kZXJTVkdSb290LmgKaW5kZXggNTM5NzUwODQ0YzkxLi40NmMxMjBkZGE0NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jv
b3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5k
ZXJTVkdSb290LmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNFbWJlZGRl
ZFRocm91Z2hTVkdJbWFnZSgpIGNvbnN0OwogICAgIGJvb2wgaXNFbWJlZGRlZFRocm91Z2hGcmFt
ZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpIGNvbnN0OwogCi0gICAgRmxvYXRTaXplIGNvbXB1dGVJ
bnRyaW5zaWNTaXplKCkgY29uc3QgZmluYWw7Ci0gICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVj
dFJhdGlvKCkgY29uc3QgZmluYWw7CisgICAgRmxvYXRTaXplIGNvbXB1dGVJbnRyaW5zaWNTaXpl
KCkgY29uc3Q7CisgICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29u
c3QgZmluYWw7CiAgICAgYm9vbCBoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFs
OwogCiAgICAgYm9vbCBpc0xheW91dFNpemVDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xh
eW91dFNpemVDaGFuZ2VkOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479572</attachid>
            <date>2026-05-10 06:30:36 -0700</date>
            <delta_ts>2026-05-10 17:39:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314488-20260510063035.patch</filename>
            <type>text/plain</type>
            <size>54098</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBkYTI1YmQ0MGI5ZWI3MWFhODYwNzhhNDAwNDMyOTFhMTljZjY0Y2E4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFN1biwgMTAgTWF5IDIwMjYgMDY6Mjk6MzkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBDbGVhbiB1
cCBhc3BlY3QgcmF0aW8gQVBJOiBtb3ZlIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgdG8KIFJlbmRl
ckJveCwgcmVuYW1lIEZsb2F0U2l6ZSB2YXJpYW50IHRvIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNT
aXplKCkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQ0ODgKClJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKRVdTIChQUiB3aXRoIGRlcGVuZGVuY2llcykuCgoq
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwOgooV2ViQ29yZTo6TG9jYWxG
cmFtZVZpZXc6OmZvcmNlTGF5b3V0UGFyZW50Vmlld0lmTmVlZGVkKToKKFdlYkNvcmU6OkxvY2Fs
RnJhbWVWaWV3OjplbWJlZGRlZFNWR1Jvb3QgY29uc3QpOgooV2ViQ29yZTo6TG9jYWxGcmFtZVZp
ZXc6OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUv
cGFnZS9Mb2NhbEZyYW1lVmlldy5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwOgooV2ViQ29yZTo6UmVuZGVyQm94Ojpjb25zdHJhaW5Mb2dpY2FsTWluTWF4U2l6ZXNC
eUFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNp
Y0tleXdvcmRMb2dpY2FsV2lkdGhzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZVNpemluZ0tleXdvcmRMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nR2VuZXJpYyBjb25zdCk6CihX
ZWJDb3JlOjpSZW5kZXJCb3g6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6
OlJlbmRlckJveDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUgY29uc3QpOgooV2ViQ29yZTo6
UmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvIGNvbnN0
KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxIZWlnaHRGcm9tQXNw
ZWN0UmF0aW8gY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94Ojppc1JlbmRlclJlcGxhY2VkV2l0
aEludHJpbnNpY1JhdGlvIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OlJlbmRlckJveDo6cmVz
b2x2ZUFzcGVjdFJhdGlvIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcDoKKFdlYkNvcmU6OmlzU1ZHUm9vdFdpdGhJbnRyaW5zaWNBc3BlY3RSYXRpbyk6CihX
ZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Gb3JGbGV4SXRl
bSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSBjb25zdCk6CihX
ZWJDb3JlOjpSZW5kZXJJbWFnZTo6c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocyBjb25z
dCk6CihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6ZW1iZWRkZWRTVkdSb290IGNvbnN0KToKKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpjb21wdXRlSW50cmluc2ljU2l6ZSBjb25zdCk6IERlbGV0ZWQuCihX
ZWJDb3JlOjpSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0aW8gY29uc3QpOiBEZWxldGVk
LgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmVtYmVkZGVkQ29udGVudEJveCBjb25zdCk6IERlbGV0
ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKFdlYkNvcmU6OmlzVmlkZW9XaXRo
RGVmYXVsdE9iamVjdFNpemUpOgooV2ViQ29yZTo6Y29tcHV0ZUludHJpbnNpY1NpemVGb3JSZW5k
ZXJlcik6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemVzQ29u
c3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVy
UmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJl
cGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSBjb25zdCk6CihXZWJDb3JlOjpSZW5k
ZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRyaW5zaWNMb2dpY2FsV2lk
dGhzIGNvbnN0KToKKFdlYkNvcmU6Omhhc0ludHJpbnNpY1NpemUpOgooV2ViQ29yZTo6UmVuZGVy
UmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aCBjb25zdCk6CihXZWJDb3JlOjpS
ZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCBjb25zdCk6CihXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhz
IGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0aW9JbmZv
cm1hdGlvbkZvclJlbmRlckJveCBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpSZW5kZXJSZXBs
YWNlZDo6Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNv
cmU6OlJlbmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZSBjb25zdCk6IERlbGV0ZWQu
CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6aW50cmluc2ljUmF0aW8gY29uc3QpOiBEZWxldGVk
LgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oOgooV2ViQ29yZTo6
UmVuZGVyUmVwbGFjZWQ6OmVtYmVkZGVkU1ZHUm9vdCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJS
ZXBsYWNlZDo6ZW1iZWRkZWRDb250ZW50Qm94IGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6
c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJX
aWRnZXQ6OmVtYmVkZGVkU1ZHUm9vdCBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBy
ZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6
ZW1iZWRkZWRDb250ZW50Qm94IGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0FzcGVj
dFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNT
aXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlv
QXNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJh
dGlvIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lS
ZW5kZXJTVkdSb290LmNwcDoKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Omhhc0ludHJp
bnNpY0FzcGVjdFJhdGlvIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNv
bXB1dGVJbnRyaW5zaWNTaXplIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6
OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplIGNvbnN0KToKKFdlYkNvcmU6OkxlZ2FjeVJlbmRl
clNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290Lmg6CiogU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKFdlYkNvcmU6OlNWR0ltYWdl
OjpuYXRpdmVJbWFnZSk6CihXZWJDb3JlOjpTVkdJbWFnZTo6ZW1iZWRkZWRTVkdSb290IGNvbnN0
KToKKFdlYkNvcmU6OlNWR0ltYWdlOjplbWJlZGRlZENvbnRlbnRCb3ggY29uc3QpOiBEZWxldGVk
LgoqIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgotLS0KIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwICAgICAgICB8ICAyOCArLS0KIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuaCAgICAgICAgICB8ICAgMyArLQogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgICAgICAgIHwgIDU1ICsrKy0tLQogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oICAgICAgICAgIHwgICA2ICstCiAuLi4vV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwICAgfCAgIDggKy0KIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgICAgICB8ICA0NCArKystLQogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggICAgICAgIHwgICA2ICstCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwICAgfCAxNjMgKysrKysrKystLS0t
LS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCAgICAgfCAg
MTcgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwICAgICB8ICAy
OCArKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCAgICAgICB8ICAg
MyArLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCAgIHwgIDE2
ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCAgfCAgIDQg
Ky0KIC4uLi9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwICAgICAgICB8ICAxNiAr
LQogLi4uL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oICAgICAgICAgIHwgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwICAgICAgfCAgIDggKy0K
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oICAgICAgICB8ICAgNCArLQog
MTcgZmlsZXMgY2hhbmdlZCwgMjA3IGluc2VydGlvbnMoKyksIDIwNiBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTG9jYWxGcmFtZVZpZXcuY3BwCmluZGV4IGRlZGU2YjUwNDVhNi4uYzdh
ZjI0OGYwOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmNwcApAQCAtMTIx
MywyNSArMTIxMywxOCBAQCB2b2lkIExvY2FsRnJhbWVWaWV3Ojpmb3JjZUxheW91dFBhcmVudFZp
ZXdJZk5lZWRlZCgpCiAgICAgaWYgKCFvd25lclJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBDaGVja2VkUHRyIGNvbnRlbnRCb3ggPSBlbWJlZGRlZENvbnRlbnRCb3goKTsKLSAgICBp
ZiAoIWNvbnRlbnRCb3gpCisgICAgQ2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRkZWRTVkdSb290
KCk7CisgICAgaWYgKCFzdmdSb290KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYXV0byog
c3ZnUm9vdCA9IGR5bmFtaWNEb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdSb290Pihjb250ZW50Qm94
LmdldCgpKSkgewotICAgICAgICBpZiAoc3ZnUm9vdC0+ZXZlckhhZExheW91dCgpICYmICFzdmdS
b290LT5uZWVkc0xheW91dCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChhdXRvKiBzdmdSb290ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KGNvbnRlbnRC
b3guZ2V0KCkpKSB7Ci0gICAgICAgIGlmIChzdmdSb290LT5ldmVySGFkTGF5b3V0KCkgJiYgIXN2
Z1Jvb3QtPm5lZWRzTGF5b3V0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChzdmdSb290LT5ldmVySGFkTGF5b3V0KCkgJiYgIXN2Z1Jvb3QtPm5lZWRzTGF5b3V0KCkpCisg
ICAgICAgIHJldHVybjsKIAogICAgIExPRyhMYXlvdXQsICJMb2NhbEZyYW1lVmlldyAlcCBmb3Jj
ZUxheW91dFBhcmVudFZpZXdJZk5lZWRlZCBzY2hlZHVsaW5nIGxheW91dCBvbiBwYXJlbnQgTG9j
YWxGcmFtZVZpZXcgJXAiLCB0aGlzLCAmb3duZXJSZW5kZXJlci0+dmlldygpLmZyYW1lVmlldygp
KTsKIAogICAgIC8vIElmIHRoZSBlbWJlZGRlZCBTVkcgZG9jdW1lbnQgYXBwZWFycyB0aGUgZmly
c3QgdGltZSwgdGhlIG93bmVyUmVuZGVyZXIgaGFzIGFscmVhZHkgZmluaXNoZWQKICAgICAvLyBs
YXlvdXQgd2l0aG91dCBrbm93aW5nIGFib3V0IHRoZSBleGlzdGVuY2Ugb2YgdGhlIGVtYmVkZGVk
IFNWRyBkb2N1bWVudCwgYmVjYXVzZSBSZW5kZXJSZXBsYWNlZAotICAgIC8vIGVtYmVkZGVkQ29u
dGVudEJveCgpIHJldHVybnMgbnVsbHB0ciwgYXMgbG9uZyBhcyB0aGUgZW1iZWRkZWQgZG9jdW1l
bnQgaXNuJ3QgbG9hZGVkIHlldC4gQmVmb3JlCisgICAgLy8gZW1iZWRkZWRTVkdSb290KCkgcmV0
dXJucyBudWxscHRyLCBhcyBsb25nIGFzIHRoZSBlbWJlZGRlZCBkb2N1bWVudCBpc24ndCBsb2Fk
ZWQgeWV0LiBCZWZvcmUKICAgICAvLyBib3RoZXJpbmcgdG8gbGF5IG91dCB0aGUgU1ZHIGRvY3Vt
ZW50LCBtYXJrIHRoZSBvd25lclJlbmRlcmVyIG5lZWRpbmcgbGF5b3V0IGFuZCBhc2sgaXRzCiAg
ICAgLy8gTG9jYWxGcmFtZVZpZXcgZm9yIGEgbGF5b3V0LiBBZnRlciB0aGF0IHRoZSBSZW5kZXJF
bWJlZGRlZE9iamVjdCAob3duZXJSZW5kZXJlcikgY2FycmllcyB0aGUKICAgICAvLyBjb3JyZWN0
IHNpemUsIHdoaWNoIExlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxX
aWR0aC9IZWlnaHQgcmVseSBvbiwgd2hlbiBsYXlpbmcKQEAgLTE1MjAsMjIgKzE1MTMsMTkgQEAg
Ym9vbCBMb2NhbEZyYW1lVmlldzo6c2hvdWxkRGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRT
aXplQ2hhbmdlKCkKICAgICByZXR1cm4gKGxheW91dENvbnRleHQoKS5sYXlvdXRQaGFzZSgpIDwg
TG9jYWxGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpMYXlvdXRQaGFzZTo6SW5Qb3N0TGF5b3V0KSAm
JiAobGF5b3V0Q29udGV4dCgpLmxheW91dFBoYXNlKCkgIT0gTG9jYWxGcmFtZVZpZXdMYXlvdXRD
b250ZXh0OjpMYXlvdXRQaGFzZTo6T3V0c2lkZUxheW91dCk7CiB9CiAKLVJlbmRlckJveCogTG9j
YWxGcmFtZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CitSZW5kZXJSZXBsYWNlZCog
TG9jYWxGcmFtZVZpZXc6OmVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0CiB7CiAgICAgQ2hlY2tlZFB0
ciByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlmICghcmVuZGVyVmlldykK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZW5kZXJPYmplY3QqIGZpcnN0Q2hpbGQg
PSByZW5kZXJWaWV3LT5maXJzdENoaWxkKCk7CisgICAgYXV0byogZmlyc3RDaGlsZCA9IHJlbmRl
clZpZXctPmZpcnN0Q2hpbGQoKTsKIAotICAgIC8vIEN1cmVudGx5IG9ubHkgZW1iZWRkZWQgU1ZH
IGRvY3VtZW50cyBwYXJ0aWNpcGF0ZSBpbiB0aGUgc2l6ZS1uZWdvdGlhdGlvbiBsb2dpYy4KKyAg
ICAvLyBDdXJyZW50bHkgb25seSBlbWJlZGRlZCBTVkcgZG9jdW1lbnRzIHBhcnRpY2lwYXRlIGlu
IHRoZSBzaXplLW5lZ290aWF0aW9uIGxvZ2ljLgogICAgIGlmIChhdXRvKiBzdmdSb290ID0gZHlu
YW1pY0Rvd25jYXN0PExlZ2FjeVJlbmRlclNWR1Jvb3Q+KGZpcnN0Q2hpbGQpKQogICAgICAgICBy
ZXR1cm4gc3ZnUm9vdDsKIAotICAgIGlmIChhdXRvKiBzdmdSb290ID0gZHluYW1pY0Rvd25jYXN0
PFJlbmRlclNWR1Jvb3Q+KGZpcnN0Q2hpbGQpKQotICAgICAgICByZXR1cm4gc3ZnUm9vdDsKLQot
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBkeW5hbWljRG93bmNhc3Q8UmVuZGVyU1ZH
Um9vdD4oZmlyc3RDaGlsZCk7CiB9CiAKIHZvaWQgTG9jYWxGcmFtZVZpZXc6OmFkZEVtYmVkZGVk
T2JqZWN0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRPYmplY3QmIGVtYmVkZGVkT2JqZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCmluZGV4IDFiMWM3MGJjYzI0OS4uMDU5OWJhMTZi
MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRnJhbWVWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbEZyYW1lVmlldy5oCkBAIC02NSw2ICs2NSw3IEBA
IGNsYXNzIFJlbmRlckVtYmVkZGVkT2JqZWN0OwogY2xhc3MgUmVuZGVyTGF5ZXI7CiBjbGFzcyBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVy
UmVwbGFjZWQ7CiBjbGFzcyBSZW5kZXJTY3JvbGxiYXJQYXJ0OwogY2xhc3MgUmVuZGVyU3R5bGU7
CiBjbGFzcyBSZW5kZXJWaWV3OwpAQCAtNTc4LDcgKzU3OSw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgTk9ERUxFVEUgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMoKSBjb25zdCBmaW5hbDsK
IAotICAgIFJlbmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Q7CisgICAgUmVuZGVy
UmVwbGFjZWQqIGVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0OwogICAgIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0VHJhY2tzUmVwYWludHMoYm9vbCk7CiAgICAgYm9vbCBpc1RyYWNraW5nUmVw
YWludHMoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhY2tpbmdSZXBhaW50czsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAzZDQyNDZlYzUzYjYuLmQ3NTNjZWQ4Yzg4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTcxMSw3ICs3MTEs
NyBAQCB2b2lkIFJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RS
YXRpbyhMYXlvdXRVbml0JiBjb21wdXRlZE1pbgogICAgIC8vIGEgc2l6ZSBvZiB0aGUgaW5pdGlh
bCBjb250YWluaW5nIGJsb2NrIGFuZCB0aGUg4oCcc3RyZXRjaC1maXTigJ0gc2l6aW5nIG9mIG5v
bi1yZXBsYWNlZCBibG9ja3MgaWYgdGhleSBoYXZlIGRlZmluaXRlIHZhbHVlcy4KICAgICAvLyBT
ZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zaXppbmctMy8jZGVmaW5pdGUKICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGVUb1VzZSA9IHN0eWxlKCk7Ci0gICAgQVNTRVJUKHN0eWxlVG9V
c2UuYXNwZWN0UmF0aW8oKS5oYXNSYXRpbygpIHx8IGlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmlu
c2ljUmF0aW8oKSk7CisgICAgQVNTRVJUKHN0eWxlVG9Vc2UuYXNwZWN0UmF0aW8oKS5oYXNSYXRp
bygpIHx8IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkpOwogICAgIGF1dG8gbG9naWNhbFNpemUgPSBk
aW1lbnNpb24gPT0gQ29uc3RyYWluRGltZW5zaW9uOjpXaWR0aCA/IHN0eWxlVG9Vc2UubG9naWNh
bFdpZHRoKCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKTsKICAgICAvLyBodHRwczovL3d3
dy53My5vcmcvVFIvY3NzLXNpemluZy00LyNhc3BlY3QtcmF0aW8tbWluaW11bQogICAgIGlmICht
aW5pbXVtU2l6ZVR5cGUgPT0gTWluaW11bVNpemVJc0F1dG9tYXRpY0NvbnRlbnRCYXNlZDo6WWVz
KSB7CkBAIC0yOTM5LDcgKzI5MzksNiBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6ZmlsbEF2YWls
YWJsZU1lYXN1cmUoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIExheQogICAgIHJl
dHVybiBhdmFpbGFibGVMb2dpY2FsV2lkdGggLSBtYXJnaW5TdGFydCAtIG1hcmdpbkVuZDsKIH0K
IAotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXl3b3JkPiB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlu
dHJpbnNpY0tleXdvcmRMb2dpY2FsV2lkdGhzKEtleXdvcmQsIExheW91dFVuaXQgYm9yZGVyQW5k
UGFkZGluZywgTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dp
Y2FsV2lkdGgpIGNvbnN0CiB7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OnNhbWVfYXM8S2V5d29y
ZCwgQ1NTOjpLZXl3b3JkOjpNaW5JbnRyaW5zaWM+KQpAQCAtMjk1NCwxNCArMjk1MywxNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXl3b3JkPiB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNp
Y0tleXdvcmRMb2dpY2FsV2lkdGhzKAogICAgICAgICAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9
IHN0ZDo6bWF4KG1pbkxvZ2ljYWxXaWR0aCwgbWluQ2hpbGRyZW5Mb2dpY2FsV2lkdGgpOwogICAg
ICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1heExvZ2ljYWxXaWR0aCwg
bWF4Q2hpbGRyZW5Mb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ug
aWYgKGlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0aW8oKSAmJiBzdHlsZSgpLmxvZ2lj
YWxIZWlnaHQoKS5pc1NwZWNpZmllZCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoQ2hlY2tlZFB0
ciByZW5kZXJSZXBsYWNlZCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oKnRoaXMp
KSB7CiAgICAgICAgICAgICAvLyBGb3IgcmVwbGFjZWQgZWxlbWVudHMgd2l0aCBhbiBpbnRyaW5z
aWMgYXNwZWN0IHJhdGlvIChlLmcuIDxpbWc+KSBhbmQgYQogICAgICAgICAgICAgLy8gc3BlY2lm
aWVkIGJsb2NrIHNpemUsIGNvbXB1dGUgdGhlIHRyYW5zZmVycmVkIG1pbi9tYXgtY29udGVudCBp
bmxpbmUgc2l6ZQogICAgICAgICAgICAgLy8gdGhyb3VnaCB0aGUgaW50cmluc2ljIHJhdGlvIHJh
dGhlciB0aGFuIHVzaW5nIHRoZSByYXcgbmF0dXJhbCB3aWR0aC4KLSAgICAgICAgICAgIGF1dG8g
aW50cmluc2ljUmF0aW8gPSBkb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oKnRoaXMpLmNvbXB1dGVJ
bnRyaW5zaWNBc3BlY3RSYXRpbygpOwotICAgICAgICAgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbFRvcCgpKTsKLSAg
ICAgICAgICAgIGF1dG8gY29udGVudEJsb2NrU2l6ZSA9IHN0ZDo6bWF4KDBfbHUsIGNvbXB1dGVk
VmFsdWVzLmV4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOwotICAgICAg
ICAgICAgbWluTG9naWNhbFdpZHRoID0gbWF4TG9naWNhbFdpZHRoID0gTGF5b3V0VW5pdChjb250
ZW50QmxvY2tTaXplICogaW50cmluc2ljUmF0aW8pOworICAgICAgICAgICAgYXV0byBwcmVmZXJy
ZWRSYXRpbyA9IHJlbmRlclJlcGxhY2VkLT5wcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFz
cGVjdFJhdGlvRG91YmxlKCk7CisgICAgICAgICAgICBpZiAocHJlZmVycmVkUmF0aW8gJiYgc3R5
bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNTcGVjaWZpZWQoKSkgeworICAgICAgICAgICAgICAgIGF1
dG8gY29tcHV0ZWRWYWx1ZXMgPSBjb21wdXRlTG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KCks
IGxvZ2ljYWxUb3AoKSk7CisgICAgICAgICAgICAgICAgYXV0byBjb250ZW50QmxvY2tTaXplID0g
c3RkOjptYXgoMF9sdSwgY29tcHV0ZWRWYWx1ZXMuZXh0ZW50IC0gYm9yZGVyQW5kUGFkZGluZ0xv
Z2ljYWxIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgbWluTG9naWNhbFdpZHRoID0gbWF4TG9n
aWNhbFdpZHRoID0gTGF5b3V0VW5pdChjb250ZW50QmxvY2tTaXplICogcHJlZmVycmVkUmF0aW8p
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgY29tcHV0ZUludHJpbnNpY0tl
eXdvcmRMb2dpY2FsV2lkdGhzKG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBjb21wdXRlSW50cmluc2ljS2V5d29yZExvZ2ljYWxX
aWR0aHMobWluTG9naWNhbFdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpOwogICAgIH0KQEAgLTM2Nzcs
MTUgKzM2NzksMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU2l6ZVR5cGU+IHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlU2l6aW5nS2UKICAgICBhdXRvIG1pbk1heENv
bnRlbnQgPSBbJl0gLT4gc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiB7CiAgICAgICAgIC8vIEZJ
WE1FOiBUaGUgQ1NTIHNpemluZyBzcGVjIGlzIGNvbnNpZGVyaW5nIGNoYW5naW5nIHdoYXQgbWlu
LWNvbnRlbnQvbWF4LWNvbnRlbnQgc2hvdWxkIHJlc29sdmUgdG8uCiAgICAgICAgIC8vIElmIHRo
YXQgaGFwcGVucywgdGhpcyBjb2RlIHdpbGwgaGF2ZSB0byBjaGFuZ2UuCi0gICAgICAgIGlmIChh
dXRvKiByZW5kZXJJbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFnZT4odGhpcykpIHsK
KyAgICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVySW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVu
ZGVySW1hZ2U+KHRoaXMpKSB7CiAgICAgICAgICAgICBhdXRvIGNvbXB1dGVkRml4ZWRMb2dpY2Fs
V2lkdGggPSBzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLnRyeUZpeGVkKCk7CisgICAgICAgICAgICBh
dXRvIHByZWZlcnJlZFJhdGlvID0gcmVuZGVySW1hZ2UtPnByZWZlcnJlZEFzcGVjdFJhdGlvQXNT
aXplKCk7CiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRGaXhlZExvZ2ljYWxXaWR0aCAmJiAhc3R5
bGUoKS5hc3BlY3RSYXRpbygpLmhhc1JhdGlvKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGlu
dHJpbnNpY1JhdGlvID0gcmVuZGVySW1hZ2UtPmludHJpbnNpY1JhdGlvKCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc29sdmVIZWlnaHRGb3JSYXRpbygKICAgICAgICAgICAgICAgICAgICAg
Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLAogICAgICAgICAgICAgICAgICAgICBib3Jk
ZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICBMYXlvdXRV
bml0IHsgY29tcHV0ZWRGaXhlZExvZ2ljYWxXaWR0aC0+cmVzb2x2ZVpvb20oc3R5bGUoKS51c2Vk
Wm9vbUZvckxlbmd0aCgpKSB9LAotICAgICAgICAgICAgICAgICAgICBpbnRyaW5zaWNSYXRpby50
cmFuc3Bvc2VkU2l6ZSgpLmFzcGVjdFJhdGlvKCksCisgICAgICAgICAgICAgICAgICAgIHByZWZl
cnJlZFJhdGlvLnRyYW5zcG9zZWRTaXplKCkuYXNwZWN0UmF0aW8oKSwKICAgICAgICAgICAgICAg
ICAgICAgQm94U2l6aW5nOjpDb250ZW50Qm94CiAgICAgICAgICAgICAgICAgKTsKICAgICAgICAg
ICAgIH0KQEAgLTM2OTUsOCArMzY5Nyw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFNpemVUeXBlPiBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVNpemluZ0tlCiAgICAg
ICAgICAgICAgICAgLy8gdGhlIGFzcGVjdCByYXRpby4KICAgICAgICAgICAgICAgICBpZiAoIWlz
RmxleEl0ZW0oKSB8fCBkb3duY2FzdDxSZW5kZXJGbGV4aWJsZUJveD4ocGFyZW50KCkpLT5pc0hv
cml6b250YWxGbG93KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAg
ICAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ1dpZHRoID0gb3ZlcnJpZGluZ0JvcmRlckJveExv
Z2ljYWxXaWR0aCgpOyBvdmVycmlkaW5nV2lkdGggJiYgIXJlbmRlckltYWdlLT5pbnRyaW5zaWNS
YXRpbygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVIZWln
aHRGb3JSYXRpbyhib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRoKCksIGJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsSGVpZ2h0KCksIGNvbnRlbnRCb3hMb2dpY2FsV2lkdGgoKm92ZXJyaWRpbmdXaWR0
aCksIHJlbmRlckltYWdlLT5pbnRyaW5zaWNSYXRpbygpLnRyYW5zcG9zZWRTaXplKCkuYXNwZWN0
UmF0aW8oKSwgQm94U2l6aW5nOjpDb250ZW50Qm94KTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0
byBvdmVycmlkaW5nV2lkdGggPSBvdmVycmlkaW5nQm9yZGVyQm94TG9naWNhbFdpZHRoKCk7IG92
ZXJyaWRpbmdXaWR0aCAmJiAhcHJlZmVycmVkUmF0aW8uaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzb2x2ZUhlaWdodEZvclJhdGlvKGJvcmRlckFuZFBhZGRpbmdMb2dp
Y2FsV2lkdGgoKSwgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwgY29udGVudEJveExv
Z2ljYWxXaWR0aCgqb3ZlcnJpZGluZ1dpZHRoKSwgcHJlZmVycmVkUmF0aW8udHJhbnNwb3NlZFNp
emUoKS5hc3BlY3RSYXRpbygpLCBCb3hTaXppbmc6OkNvbnRlbnRCb3gpOwogICAgICAgICAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgaWYgKGF1dG8gaGVp
Z2h0ID0gaGVpZ2h0RnJvbUNyb3NzQXhpc092ZXJyaWRlQW5kQXNwZWN0UmF0aW8oKSkKQEAgLTUy
NzQsMjggKzUyNzYsMjcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lk
dGhGcm9tQXNwZWN0UmF0aW8oKSBjb25zdAogICAgIHJldHVybiBjb25zdHJhaW5Mb2dpY2FsV2lk
dGhCeU1pbk1heChsb2dpY2FsV2lkdGgsIGNvbnRhaW5lcldpZHRoSW5JbmxpbmVEaXJlY3Rpb24s
ICpjb250YWluaW5nQmxvY2soKSwgQWxsb3dJbnRyaW5zaWM6Ok5vKTsKIH0KIAotYm9vbCBSZW5k
ZXJCb3g6OmlzUmVuZGVyUmVwbGFjZWRXaXRoSW50cmluc2ljUmF0aW8oKSBjb25zdAotewotICAg
IGlmIChhdXRvKiByZXBsYWNlZCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4odGhp
cykpCi0gICAgICAgIHJldHVybiByZXBsYWNlZC0+Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlv
KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQogCi1zdGQ6Om9wdGlvbmFsPGRvdWJsZT4gUmVuZGVy
Qm94OjpyZXNvbHZlQXNwZWN0UmF0aW8oKSBjb25zdAorc3RkOjpvcHRpb25hbDxkb3VibGU+IFJl
bmRlckJveDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIGlmIChhdXRvKiBy
ZXBsYWNlZEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHRoaXMpKSAK
LSAgICAgICAgcmV0dXJuIHJlcGxhY2VkRWxlbWVudC0+Y29tcHV0ZUludHJpbnNpY0FzcGVjdFJh
dGlvKCk7CiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5oYXNSYXRpbygpKQogICAgICAg
ICByZXR1cm4gc3R5bGUoKS5sb2dpY2FsQXNwZWN0UmF0aW8oKTsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCitGbG9hdFNpemUgUmVuZGVy
Qm94OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0Cit7CisgICAgaWYgKHN0eWxl
KCkuYXNwZWN0UmF0aW8oKS5oYXNSYXRpbygpKQorICAgICAgICByZXR1cm4gRmxvYXRTaXplOjpu
YXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBz
dHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsKKyAgICByZXR1cm4geyB9
OworfQorCiBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21w
dXRlTWluTWF4TG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICBMYXlv
dXRVbml0IHRyYW5zZmVycmVkTWluU2l6ZSA9IExheW91dFVuaXQoKTsKLSAgICBMYXlvdXRVbml0
IHRyYW5zZmVycmVkTWF4U2l6ZSA9IExheW91dFVuaXQ6Om1heCgpOwotICAgIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBhc3BlY3RSYXRpbyA9IHJlc29sdmVBc3BlY3RSYXRpbygpOworICAgIGF1dG8g
dHJhbnNmZXJyZWRNaW5TaXplID0gTGF5b3V0VW5pdCB7IH07CisgICAgYXV0byB0cmFuc2ZlcnJl
ZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKKyAgICBhdXRvIGFzcGVjdFJhdGlvID0gcHJl
ZmVycmVkQXNwZWN0UmF0aW8oKTsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQogICAgICAgICByZXR1
cm4geyB0cmFuc2ZlcnJlZE1pblNpemUsIHRyYW5zZmVycmVkTWF4U2l6ZSB9OwogCkBAIC01MzE0
LDkgKzUzMTUsOSBAQCBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94
Ojpjb21wdXRlTWluTWF4TG9naWNhbFdpZHRoRnJvbUFzcGVjdAogCiBzdGQ6OnBhaXI8TGF5b3V0
VW5pdCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNhbEhlaWdodEZy
b21Bc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1pblNp
emUgPSBMYXlvdXRVbml0KCk7Ci0gICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1heFNpemUgPSBM
YXlvdXRVbml0OjptYXgoKTsKLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gYXNwZWN0UmF0aW8g
PSByZXNvbHZlQXNwZWN0UmF0aW8oKTsKKyAgICBhdXRvIHRyYW5zZmVycmVkTWluU2l6ZSA9IExh
eW91dFVuaXQgeyB9OworICAgIGF1dG8gdHJhbnNmZXJyZWRNYXhTaXplID0gTGF5b3V0VW5pdDo6
bWF4KCk7CisgICAgYXV0byBhc3BlY3RSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CiAg
ICAgaWYgKCFhc3BlY3RSYXRpbykKICAgICAgICAgcmV0dXJuIHsgdHJhbnNmZXJyZWRNaW5TaXpl
LCB0cmFuc2ZlcnJlZE1heFNpemUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CmluZGV4IDE4NzhjN2RlZmJlZS4uOTg1NjE3NmJkYjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCkBAIC02MzksNiArNjM5LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBi
b29sIGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gaXNCbG9ja0xldmVs
UmVwbGFjZWRPckF0b21pY0lubGluZSgpICYmIChpc0ltYWdlKCkgfHwgaXNSZW5kZXJWaWRlbygp
IHx8IGlzUmVuZGVySFRNTENhbnZhcygpIHx8IGlzUmVuZGVyVmlld1RyYW5zaXRpb25DYXB0dXJl
KCkpOyB9CiAKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwcmVmZXJyZWRBc3Bl
Y3RSYXRpbygpIGNvbnN0OworICAgIHZpcnR1YWwgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJh
dGlvQXNTaXplKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBSZW5kZXJCb3goVHlwZSwgRWxl
bWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxUeXBlRmxhZz4gPSB7IH0sIFR5cGVTcGVj
aWZpY0ZsYWdzID0geyB9KTsKICAgICBSZW5kZXJCb3goVHlwZSwgRG9jdW1lbnQmLCBSZW5kZXJT
dHlsZSYmLCBPcHRpb25TZXQ8VHlwZUZsYWc+ID0geyB9LCBUeXBlU3BlY2lmaWNGbGFncyA9IHsg
fSk7CkBAIC02ODQsMTAgKzY4Nyw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIHNraXBDb250YWlu
aW5nQmxvY2tGb3JQZXJjZW50SGVpZ2h0Q2FsY3VsYXRpb24oY29uc3QgUmVuZGVyQm94JiBjb250
YWluaW5nQmxvY2ssIGJvb2wgaXNQZXJwZW5kaWN1bGFyV3JpdGluZ01vZGUpIGNvbnN0OwogCiAg
ICAgdm9pZCBpbmNyZW1lbnRWaXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudElmTmVlZGVkKGNvbnN0
IEludFNpemUmKTsKLQotICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiByZXNvbHZlQXNwZWN0UmF0
aW8oKSBjb25zdDsKICAgICBib29sIE5PREVMRVRFIHNob3VsZElnbm9yZUFzcGVjdFJhdGlvKCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc1JlbmRlclJlcGxhY2VkV2l0aEludHJpbnNpY1JhdGlvKCkgY29u
c3Q7CiAgICAgYm9vbCBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1Jlc29sdmVhYmxlU3RyZXRjaFNpemUoY29uc3QgYXV0byYgc2l6
ZSkgY29uc3QgeyByZXR1cm4gc2l6ZS5pc1N0cmV0Y2goKSAmJiBjb250YWluaW5nQmxvY2tIYXNE
ZWZpbml0ZUJsb2NrU2l6ZSgpOyB9CiAgICAgYm9vbCBpc1VucmVzb2x2ZWFibGVTdHJldGNoU2l6
ZShjb25zdCBhdXRvJiBzaXplKSBjb25zdCB7IHJldHVybiBzaXplLmlzU3RyZXRjaCgpICYmICFj
b250YWluaW5nQmxvY2tIYXNEZWZpbml0ZUJsb2NrU2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA3NGIzZTBiOGQyY2EuLmZi
Y2M2ZTI3ZTdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwCkBAIC04NzksNyArODc5LDcgQEAgc3RhdGljIGJvb2wgaXNTVkdSb290V2l0aElu
dHJpbnNpY0FzcGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYgZmxleEl0ZW0pCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAvLyBJdCdzIGNvbW1vbiBmb3Igc29tZSByZXBsYWNlZCBlbGVtZW50
cywgc3VjaCBhcyBTVkdzLCB0byBoYXZlIGludHJpbnNpYyBhc3BlY3QgcmF0aW9zIGJ1dCBubyBp
bnRyaW5zaWMgc2l6ZXMuCiAgICAgLy8gVGhhdCdzIHdoeSBpdCBpc24ndCBlbm91Z2gganVzdCB0
byBjaGVjayBmb3IgaW50cmluc2ljIHNpemVzIGluIHRob3NlIGNhc2VzLgotICAgIHJldHVybiBk
b3duY2FzdDxSZW5kZXJSZXBsYWNlZD4oZmxleEl0ZW0pLmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RS
YXRpbygpID4gMDsKKyAgICByZXR1cm4gZmxleEl0ZW0ucHJlZmVycmVkQXNwZWN0UmF0aW9Bc1Np
emUoKS5hc3BlY3RSYXRpb0RvdWJsZSgpID4gMDsKIH07CiAKIHN0YXRpYyBib29sIGZsZXhJdGVt
SGFzQXNwZWN0UmF0aW8oY29uc3QgUmVuZGVyQm94JiBmbGV4SXRlbSkKQEAgLTEyNjIsMTEgKzEy
NjIsMTEgQEAgZG91YmxlIFJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0Zv
ckZsZXhJdGVtKGNvbnN0IFJlbmRlckJveCYgZmxleEkKICAgICBhdXRvIGZsZXhJdGVtQXNwZWN0
UmF0aW8gPSBbJl0gewogICAgICAgICBhdXRvIGZsZXhJdGVtSW50cmluc2ljU2l6ZSA9IExheW91
dFNpemUgeyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgZmxleEl0ZW0uaW50cmlu
c2ljTG9naWNhbEhlaWdodCgpIH07CiAgICAgICAgIGlmIChmbGV4SXRlbS5pc1JlbmRlck9yTGVn
YWN5UmVuZGVyU1ZHUm9vdCgpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclJl
cGxhY2VkPihmbGV4SXRlbSkuY29tcHV0ZUludHJpbnNpY0FzcGVjdFJhdGlvKCk7CisgICAgICAg
ICAgICByZXR1cm4gZmxleEl0ZW0ucHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RS
YXRpb0RvdWJsZSgpOwogICAgICAgICBpZiAoZmxleEl0ZW0uc3R5bGUoKS5hc3BlY3RSYXRpbygp
LmlzUmF0aW8oKSB8fCAoZmxleEl0ZW0uc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzQXV0b0FuZFJh
dGlvKCkgJiYgZmxleEl0ZW1JbnRyaW5zaWNTaXplLmlzRW1wdHkoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmxleEl0ZW0uc3R5bGUoKS5sb2dpY2FsQXNwZWN0UmF0aW8oKTsKLSAgICAgICAgaWYg
KGF1dG8qIHJlcGxhY2VkRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJSZXBsYWNlZD4o
ZmxleEl0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VkRWxlbWVudC0+Y29tcHV0ZUlu
dHJpbnNpY0FzcGVjdFJhdGlvKCk7CisgICAgICAgIGlmIChpczxSZW5kZXJSZXBsYWNlZD4oZmxl
eEl0ZW0pKQorICAgICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLnByZWZlcnJlZEFzcGVjdFJhdGlv
QXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKIAogICAgICAgICBBU1NFUlQoZmxleEl0ZW0u
aW50cmluc2ljTG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLmludHJp
bnNpY0xvZ2ljYWxXaWR0aCgpLnRvRG91YmxlKCkgLyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2Fs
SGVpZ2h0KCkudG9Eb3VibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCmluZGV4IDliMjA5OTViYjNmYi4uYjc1OTY0MjQ4ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTkzOCwyNiArOTM4LDEzIEBAIHZvaWQgUmVuZGVy
SW1hZ2U6OmxheW91dCgpCiAgICAgfQogfQogCi1GbG9hdFNpemUgUmVuZGVySW1hZ2U6OmNvbXB1
dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKK0Zsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVk
QXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAogewotICAgIEFTU0VSVCghc2hvdWxkQXBwbHlTaXpl
Q29udGFpbm1lbnQoKSk7Ci0gICAgYXV0byBpbnRyaW5zaWNTaXplID0gUmVuZGVyUmVwbGFjZWQ6
OmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7Ci0KLSAgICAvLyBPdXIgaW50cmluc2ljU2l6ZSBpcyBl
bXB0eSBpZiB3ZSdyZSByZW5kZXJpbmcgZ2VuZXJhdGVkIGltYWdlcyB3aXRoIHJlbGF0aXZlIHdp
ZHRoL2hlaWdodC4gRmlndXJlIG91dCB0aGUgcmlnaHQgaW50cmluc2ljIHNpemUgdG8gdXNlLgot
ICAgIGlmIChpbnRyaW5zaWNTaXplLmlzRW1wdHkoKSAmJiAoaW1hZ2VSZXNvdXJjZSgpLmltYWdl
SGFzUmVsYXRpdmVXaWR0aCgpIHx8IGltYWdlUmVzb3VyY2UoKS5pbWFnZUhhc1JlbGF0aXZlSGVp
Z2h0KCkpKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY29udGFpbmluZ0Jsb2NrID0gaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkgPyBjb250YWluZXIoKSA6IHRoaXMtPmNvbnRhaW5pbmdCbG9jaygp
OwotICAgICAgICBpZiAoYXV0byogYm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oKmNv
bnRhaW5pbmdCbG9jaykpIHsKLSAgICAgICAgICAgIGludHJpbnNpY1NpemUuc2V0V2lkdGgoYm94
LT5jb250ZW50Qm94TG9naWNhbFdpZHRoKCkpOwotICAgICAgICAgICAgaW50cmluc2ljU2l6ZS5z
ZXRIZWlnaHQoYm94LT5hdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEF2YWlsYWJsZUxvZ2ljYWxIZWln
aHRUeXBlOjpJbmNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZykpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGludHJpbnNpY1NpemU7Ci19Ci0KLUZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6
cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAotewotICAgIEFTU0VSVCghc2hvdWxkQXBwbHlT
aXplQ29udGFpbm1lbnQoKSk7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGlu
dHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0IHRoZQorICAgIC8vIGFzcGVjdCBy
YXRpbyBmcm9tIHRoZSBDU1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2YWlsYWJs
ZSB2aWEgdGhlCisgICAgLy8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBpbWFnZSBk
YXRhKS4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAgcmV0
dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOwogCiAgICAg
Ly8gRG9uJ3QgY29tcHV0ZSBhbiBpbnRyaW5zaWMgcmF0aW8gdG8gcHJlc2VydmUgaGlzdG9yaWNh
bCBXZWJLaXQgYmVoYXZpb3IgaWYgd2UncmUgcGFpbnRpbmcgYWx0IHRleHQgYW5kL29yIGEgYnJv
a2VuIGltYWdlLgogICAgIGlmIChzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkpIHsKQEAg
LTk2NiwyMSArOTUzLDMyIEBAIEZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0
UmF0aW8oKSBjb25zdAogICAgICAgICByZXR1cm4geyAxLjAsIDEuMCB9OwogICAgIH0KIAotICAg
IHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICBpZiAo
Q2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRkZWRTVkdSb290KCkpIHsKKyAgICAgICAgYXV0byBy
YXRpbyA9IHN2Z1Jvb3QtPnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CisgICAgICAgIGlm
ICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiAhcmF0aW8uaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmF0aW8gPSByYXRpby50cmFuc3Bvc2VkU2l6ZSgpOworCisgICAgICAgIGlmIChzdHls
ZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRpbygpIHx8IChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNB
dXRvQW5kUmF0aW8oKSAmJiByYXRpby5pc0VtcHR5KCkpKQorICAgICAgICAgICAgcmF0aW8gPSBG
bG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbFdpZHRo
KCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsSGVpZ2h0KCkudmFsdWUpOworCisg
ICAgICAgIHJldHVybiByYXRpbzsKKyAgICB9CisKKyAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6
OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CiB9CiAKIGJvb2wgUmVuZGVySW1hZ2U6OnNo
b3VsZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdAogewogICAgIGlmIChSZW5kZXJS
ZXBsYWNlZDo6c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICByZXR1cm4gZW1iZWRkZWRDb250ZW50Qm94KCk7CisgICAgcmV0dXJuIGVt
YmVkZGVkU1ZHUm9vdCgpOwogfQogCi1SZW5kZXJCb3gqIFJlbmRlckltYWdlOjplbWJlZGRlZENv
bnRlbnRCb3goKSBjb25zdAorUmVuZGVyUmVwbGFjZWQqIFJlbmRlckltYWdlOjplbWJlZGRlZFNW
R1Jvb3QoKSBjb25zdAogewogICAgIGlmIChSZWZQdHIgY2FjaGVkSW1hZ2UgPSB0aGlzLT5jYWNo
ZWRJbWFnZSgpKSB7CiAgICAgICAgIGlmIChSZWZQdHIgaW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8
U1ZHSW1hZ2U+KGNhY2hlZEltYWdlLT5pbWFnZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBpbWFn
ZS0+ZW1iZWRkZWRDb250ZW50Qm94KCk7CisgICAgICAgICAgICByZXR1cm4gaW1hZ2UtPmVtYmVk
ZGVkU1ZHUm9vdCgpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggMmNlNzU0OTUyYWZlLi5kNDYwMTExY2M0MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC04NCwxNCArODQsMTQg
QEAgcHVibGljOgogICAgIGJvb2wgaXNNdWx0aVJlcHJlc2VudGF0aW9uSEVJQygpIGNvbnN0Owog
I2VuZGlmCiAKKyAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25z
dCBmaW5hbDsKKwogcHJvdGVjdGVkOgogICAgIFJlbmRlckltYWdlKFR5cGUsIEVsZW1lbnQmLCBS
ZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8UmVwbGFjZWRGbGFnPiwgU3R5bGU6OkltYWdlKiA9IG51
bGxwdHIsIGNvbnN0IGZsb2F0IGltYWdlRGV2aWNlUGl4ZWxSYXRpbyA9IDEuMGYpOwogICAgIHZv
aWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZEludmFsaWRh
dGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBmaW5hbDsKLSAgICBSZW5kZXJCb3gqIGVtYmVkZGVk
Q29udGVudEJveCgpIGNvbnN0IGZpbmFsOwotICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2lj
U2l6ZSgpIGNvbnN0IGZpbmFsOwotICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygp
IGNvbnN0IGZpbmFsOworICAgIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGZvcmVncm91bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChjb25z
dCBMYXlvdXRSZWN0JiBsb2NhbFJlY3QsIHVuc2lnbmVkIG1heERlcHRoVG9UZXN0KSBjb25zdCBv
dmVycmlkZTsKIAogICAgIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlOjpEaWZmZXJlbmNlLCBj
b25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggZjAzYTEzZjdlYjEwLi4yMmVmY2M4MzRi
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIklubGluZUl0ZXJhdG9yQm94LmgiCiAjaW5jbHVkZSAi
SW5saW5lSXRlcmF0b3JMaW5lQm94SW5saW5lcy5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRl
ci5oIgorI2luY2x1ZGUgIkxlZ2FjeVJlbmRlclNWR1Jvb3QuaCIKICNpbmNsdWRlICJMaW5lU2Vs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9jYWxGcmFtZS5oIgogI2luY2x1ZGUgIlBvc2l0aW9uZWRM
YXlvdXRDb25zdHJhaW50cy5oIgpAQCAtNTYsNiArNTcsNyBAQAogI2luY2x1ZGUgIlJlbmRlck9i
amVjdElubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZStHZXR0ZXJzSW5saW5lcy5oIgog
I2luY2x1ZGUgIlJlbmRlclN0eWxlK1NldHRlcnNJbmxpbmVzLmgiCisjaW5jbHVkZSAiUmVuZGVy
U1ZHUm9vdC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlk
ZW8uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC00NjgsNjYgKzQ3MCw3MSBAQCBzdGF0
aWMgYm9vbCBpc1ZpZGVvV2l0aERlZmF1bHRPYmplY3RTaXplKGNvbnN0IFJlbmRlclJlcGxhY2Vk
KiBtYXliZVZpZGVvKQogICAgIFVOVVNFRF9QQVJBTShtYXliZVZpZGVvKTsKICNlbmRpZgogICAg
IHJldHVybiBmYWxzZTsKLX0gCit9CiAKLXZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVBc3Bl
Y3RSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVyQm94KFJlbmRlckJveCogY29udGVudFJlbmRlcmVy
LCBGbG9hdFNpemUmIGNvbnN0cmFpbmVkU2l6ZSwgRmxvYXRTaXplJiBwcmVmZXJyZWRBc3BlY3RS
YXRpbykgY29uc3QKK3N0YXRpYyBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemVGb3JSZW5k
ZXJlcihjb25zdCBSZW5kZXJSZXBsYWNlZCYgcmVwbGFjZWRSZW5kZXJlcikKIHsKLSAgICBGbG9h
dFNpemUgaW50cmluc2ljU2l6ZTsKLSAgICBpZiAoc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXpl
Q29udGFpbm1lbnQoKSkgewotICAgICAgICBpbnRyaW5zaWNTaXplID0gUmVuZGVyUmVwbGFjZWQ6
OmNvbXB1dGVJbnRyaW5zaWNTaXplKCk7Ci0gICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlvID0g
UmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7Ci0gICAgfSBlbHNlIGlmIChj
b250ZW50UmVuZGVyZXIpIHsKLSAgICAgICAgYm9vbCBjb250ZW50SXNSZW5kZXJSZXBsYWNlZCA9
IGZhbHNlOwotICAgICAgICBpZiAoYXV0byogcmVuZGVyUmVwbGFjZWQgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyUmVwbGFjZWQ+KGNvbnRlbnRSZW5kZXJlcikpIHsKLSAgICAgICAgICAgIGludHJp
bnNpY1NpemUgPSByZW5kZXJSZXBsYWNlZC0+Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKLSAgICAg
ICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlvID0gcmVuZGVyUmVwbGFjZWQtPnByZWZlcnJlZEFz
cGVjdFJhdGlvKCk7Ci0gICAgICAgICAgICBjb250ZW50SXNSZW5kZXJSZXBsYWNlZCA9IHRydWU7
CisgICAgQVNTRVJUKCFyZXBsYWNlZFJlbmRlcmVyLnNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50
KCkpOworCisgICAgaWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IHJlcGxhY2VkUmVuZGVyZXIuZW1i
ZWRkZWRTVkdSb290KCkpIHsKKyAgICAgICAgYXV0byBpbnRyaW5zaWNTaXplID0gWyZdIHsKKyAg
ICAgICAgICAgIGlmIChDaGVja2VkUHRyIHJvb3QgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyU1ZH
Um9vdD4oKnN2Z1Jvb3QpKQorICAgICAgICAgICAgICAgIHJldHVybiByb290LT5jb21wdXRlSW50
cmluc2ljU2l6ZSgpOworICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PExlZ2FjeVJlbmRlclNW
R1Jvb3Q+KCpzdmdSb290KS5jb21wdXRlSW50cmluc2ljU2l6ZSgpOworICAgICAgICB9KCk7CisK
KyAgICAgICAgaW50cmluc2ljU2l6ZS5zY2FsZShyZXBsYWNlZFJlbmRlcmVyLnN0eWxlKCkudXNl
ZFpvb20oKSk7CisgICAgICAgIGlmIChDaGVja2VkUHRyIHJlbmRlckltYWdlID0gZHluYW1pY0Rv
d25jYXN0PFJlbmRlckltYWdlPihyZXBsYWNlZFJlbmRlcmVyKSkKKyAgICAgICAgICAgIGludHJp
bnNpY1NpemUuc2NhbGUocmVuZGVySW1hZ2UtPmltYWdlRGV2aWNlUGl4ZWxSYXRpbygpKTsKKyAg
ICAgICAgaWYgKCFyZXBsYWNlZFJlbmRlcmVyLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisg
ICAgICAgICAgICBpbnRyaW5zaWNTaXplID0gaW50cmluc2ljU2l6ZS50cmFuc3Bvc2VkU2l6ZSgp
OworICAgICAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKKyAgICB9CisKKyAgICBpZiAoQ2hlY2tl
ZFB0ciByZW5kZXJJbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbWFnZT4ocmVwbGFjZWRS
ZW5kZXJlcikpIHsKKyAgICAgICAgYXV0byBpbnRyaW5zaWNTaXplID0gRmxvYXRTaXplIHsgcmVu
ZGVySW1hZ2UtPmludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCByZW5kZXJJbWFnZS0+aW50cmluc2lj
TG9naWNhbEhlaWdodCgpIH07CisgICAgICAgIC8vIE91ciBpbnRyaW5zaWNTaXplIGlzIGVtcHR5
IGlmIHdlJ3JlIHJlbmRlcmluZyBnZW5lcmF0ZWQgaW1hZ2VzIHdpdGggcmVsYXRpdmUgd2lkdGgv
aGVpZ2h0LiBGaWd1cmUgb3V0IHRoZSByaWdodCBpbnRyaW5zaWMgc2l6ZSB0byB1c2UuCisgICAg
ICAgIGlmIChpbnRyaW5zaWNTaXplLmlzRW1wdHkoKSAmJiAocmVuZGVySW1hZ2UtPmltYWdlUmVz
b3VyY2UoKS5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSB8fCByZW5kZXJJbWFnZS0+aW1hZ2VSZXNv
dXJjZSgpLmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSkpIHsKKyAgICAgICAgICAgIENoZWNrZWRQ
dHIgY29udGFpbmluZ0Jsb2NrID0gcmVuZGVySW1hZ2UtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
ID8gcmVuZGVySW1hZ2UtPmNvbnRhaW5lcigpIDogcmVuZGVySW1hZ2UtPmNvbnRhaW5pbmdCbG9j
aygpOworICAgICAgICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVyQm94ID0gZHluYW1pY0Rvd25j
YXN0PFJlbmRlckJveD4oY29udGFpbmluZ0Jsb2NrKSkgeworICAgICAgICAgICAgICAgIGludHJp
bnNpY1NpemUuc2V0V2lkdGgocmVuZGVyQm94LT5jb250ZW50Qm94TG9naWNhbFdpZHRoKCkpOwor
ICAgICAgICAgICAgICAgIGludHJpbnNpY1NpemUuc2V0SGVpZ2h0KHJlbmRlckJveC0+YXZhaWxh
YmxlTG9naWNhbEhlaWdodChBdmFpbGFibGVMb2dpY2FsSGVpZ2h0VHlwZTo6SW5jbHVkZU1hcmdp
bkJvcmRlclBhZGRpbmcpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAo
c3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSB8fCAoc3R5bGUoKS5hc3BlY3RSYXRpbygp
LmlzQXV0b0FuZFJhdGlvKCkgJiYgcHJlZmVycmVkQXNwZWN0UmF0aW8uaXNFbXB0eSgpKSkKLSAg
ICAgICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlvID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNp
b24oc3R5bGUoKS5hc3BlY3RSYXRpbygpLndpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0
aW8oKS5oZWlnaHQoKS52YWx1ZSk7Ci0KLSAgICAgICAgLy8gSGFuZGxlIHpvb20gJiB2ZXJ0aWNh
bCB3cml0aW5nIG1vZGVzIGhlcmUsIGFzIHRoZSBlbWJlZGRlZCBkb2N1bWVudCBkb2Vzbid0IGtu
b3cgYWJvdXQgdGhlbS4KLSAgICAgICAgaW50cmluc2ljU2l6ZS5zY2FsZShzdHlsZSgpLnVzZWRa
b29tKCkpOwotCi0gICAgICAgIGlmIChhdXRvKiBpbWFnZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5k
ZXJJbWFnZT4oKnRoaXMpKQotICAgICAgICAgICAgaW50cmluc2ljU2l6ZS5zY2FsZShpbWFnZS0+
aW1hZ2VEZXZpY2VQaXhlbFJhdGlvKCkpOwotCi0gICAgICAgIC8vIFVwZGF0ZSBvdXIgaW50cmlu
c2ljIHNpemUgdG8gbWF0Y2ggd2hhdCB0aGUgY29udGVudCByZW5kZXJlciBoYXMgY29tcHV0ZWQs
IHNvIHRoYXQgd2hlbiB3ZQotICAgICAgICAvLyBjb25zdHJhaW4gdGhlIHNpemUgYmVsb3csIHRo
ZSBjb3JyZWN0IGludHJpbnNpYyBzaXplIHdpbGwgYmUgb2J0YWluZWQgZm9yIGNvbXBhcmlzb24g
YWdhaW5zdAotICAgICAgICAvLyBtaW4gYW5kIG1heCB3aWR0aHMuCi0gICAgICAgIGlmIChjb250
ZW50SXNSZW5kZXJSZXBsYWNlZCAmJiBpc1JlbmRlcldpZGdldCgpKSB7Ci0gICAgICAgICAgICAv
LyBGb3IgUmVuZGVyV2lkZ2V0IGNvbnRlbnQgKGUuZy4gPG9iamVjdD4gZW1iZWRkaW5nIGFuIFNW
RyBkb2N1bWVudCksIGFsd2F5cyB1cGRhdGUKLSAgICAgICAgICAgIC8vIG1faW50cmluc2ljU2l6
ZSB0byByZWZsZWN0IGN1cnJlbnQgaW50cmluc2ljIGRpbWVuc2lvbnMsIGFwcGx5aW5nIENTUyBk
ZWZhdWx0IGZhbGxiYWNrCi0gICAgICAgICAgICAvLyB2YWx1ZXMgKDMwMHgxNTApIGZvciBkaW1l
bnNpb25zIHdpdGggbm8gaW50cmluc2ljIHZhbHVlIChlLmcuIHBlcmNlbnRhZ2Utc2l6ZWQgb3IK
LSAgICAgICAgICAgIC8vIHJlbW92ZWQgYXR0cmlidXRlcykuIFRoaXMgcHJldmVudHMgc3RhbGUg
Y2FjaGVkIHNpemVzIHdoZW4gYXR0cmlidXRlcyBsaWtlIHdpZHRoL2hlaWdodAotICAgICAgICAg
ICAgLy8gYXJlIHJlbW92ZWQuIE5vdGU6IHRoaXMgZG9lcyBub3QgYXBwbHkgdG8gUmVuZGVySW1h
Z2UgKDxpbWcgc3JjPSJzdmciPiksIHdoaWNoIG1hbmFnZXMKLSAgICAgICAgICAgIC8vIGl0cyBv
d24gaW50cmluc2ljIHNpemUgdmlhIHNldEludHJpbnNpY1NpemUoKSBkdXJpbmcgaW1hZ2UgbG9h
ZC4KLSAgICAgICAgICAgIGF1dG8gc2l6ZVRvQ2FjaGUgPSBpbnRyaW5zaWNTaXplOworICAgICAg
ICByZXR1cm4gaW50cmluc2ljU2l6ZTsKKyAgICB9CisKKyAgICBpZiAoQ2hlY2tlZFB0ciByZW5k
ZXJXaWRnZXQgPWR5bmFtaWNEb3duY2FzdDxSZW5kZXJXaWRnZXQ+KHJlcGxhY2VkUmVuZGVyZXIp
KQorICAgICAgICByZXR1cm4geyByZXBsYWNlZFJlbmRlcmVyLmludHJpbnNpY0xvZ2ljYWxXaWR0
aCgpLCByZXBsYWNlZFJlbmRlcmVyLmludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OworCisgICAg
aWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJTVkdSb290Pihy
ZXBsYWNlZFJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIHN2Z1Jvb3QtPmNvbXB1dGVJbnRyaW5z
aWNTaXplKCk7CisKKyAgICBpZiAoQ2hlY2tlZFB0ciBsZWdhY3lTVkdSb290ID0gZHluYW1pY0Rv
d25jYXN0PExlZ2FjeVJlbmRlclNWR1Jvb3Q+KHJlcGxhY2VkUmVuZGVyZXIpKQorICAgICAgICBy
ZXR1cm4gbGVnYWN5U1ZHUm9vdC0+Y29tcHV0ZUludHJpbnNpY1NpemUoKTsKKworICAgIHJldHVy
biB7IHJlcGxhY2VkUmVuZGVyZXIuaW50cmluc2ljTG9naWNhbFdpZHRoKCksIHJlcGxhY2VkUmVu
ZGVyZXIuaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07Cit9CisKK3ZvaWQgUmVuZGVyUmVwbGFj
ZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNp
emVzKEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykg
Y29uc3QKK3sKKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQo
KSkgeworICAgICAgICBpbnRyaW5zaWNTaXplID0gRmxvYXRTaXplIHsgaW50cmluc2ljTG9naWNh
bFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OworICAgICAgICBpbnRyaW5zaWNS
YXRpbyA9IFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGludHJpbnNpY1NpemUgPSBjb21wdXRlSW50cmluc2ljU2l6ZUZv
clJlbmRlcmVyKCp0aGlzKTsKKyAgICAgICAgaW50cmluc2ljUmF0aW8gPSBwcmVmZXJyZWRBc3Bl
Y3RSYXRpb0FzU2l6ZSgpOworCisgICAgICAgIGF1dG8gc2l6ZVRvQ2FjaGUgPSBpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gaW50cmluc2ljU2l6ZSA6IGludHJpbnNpY1NpemUudHJhbnNwb3Nl
ZFNpemUoKTsKKyAgICAgICAgaWYgKGVtYmVkZGVkU1ZHUm9vdCgpICYmIGlzUmVuZGVyV2lkZ2V0
KCkpIHsKICAgICAgICAgICAgIGlmICghc2l6ZVRvQ2FjaGUud2lkdGgoKSkKICAgICAgICAgICAg
ICAgICBzaXplVG9DYWNoZS5zZXRXaWR0aChjRGVmYXVsdFdpZHRoKTsKICAgICAgICAgICAgIGlm
ICghc2l6ZVRvQ2FjaGUuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgc2l6ZVRvQ2FjaGUuc2V0
SGVpZ2h0KGNEZWZhdWx0SGVpZ2h0KTsKICAgICAgICAgICAgIG1faW50cmluc2ljU2l6ZSA9IExh
eW91dFNpemUoc2l6ZVRvQ2FjaGUpOwotICAgICAgICB9IGVsc2UgaWYgKCFwcmVmZXJyZWRBc3Bl
Y3RSYXRpby5pc0VtcHR5KCkgJiYgIWludHJpbnNpY1NpemUuaXNaZXJvKCkpCi0gICAgICAgICAg
ICBtX2ludHJpbnNpY1NpemUgPSBMYXlvdXRTaXplKGludHJpbnNpY1NpemUpOwotCi0gICAgICAg
IGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewotICAgICAgICAgICAgaWYgKCFwcmVm
ZXJyZWRBc3BlY3RSYXRpby5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcHJlZmVycmVkQXNw
ZWN0UmF0aW8gPSBwcmVmZXJyZWRBc3BlY3RSYXRpby50cmFuc3Bvc2VkU2l6ZSgpOwotICAgICAg
ICAgICAgaW50cmluc2ljU2l6ZSA9IGludHJpbnNpY1NpemUudHJhbnNwb3NlZFNpemUoKTsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGludHJpbnNpY1NpemUgPSBjb21wdXRlSW50
cmluc2ljU2l6ZSgpOwotICAgICAgICBwcmVmZXJyZWRBc3BlY3RSYXRpbyA9IHRoaXMtPnByZWZl
cnJlZEFzcGVjdFJhdGlvKCk7Ci0gICAgICAgIGlmICghcHJlZmVycmVkQXNwZWN0UmF0aW8uaXNF
bXB0eSgpICYmICFpbnRyaW5zaWNTaXplLmlzWmVybygpKQotICAgICAgICAgICAgbV9pbnRyaW5z
aWNTaXplID0gTGF5b3V0U2l6ZShpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gaW50cmluc2lj
U2l6ZSA6IGludHJpbnNpY1NpemUudHJhbnNwb3NlZFNpemUoKSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoIWludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiAhaW50cmluc2ljU2l6ZS5pc1plcm8oKSkK
KyAgICAgICAgICAgIG1faW50cmluc2ljU2l6ZSA9IExheW91dFNpemUoc2l6ZVRvQ2FjaGUpOwog
ICAgIH0KLSAgICBjb25zdHJhaW5lZFNpemUgPSBpbnRyaW5zaWNTaXplOwotfQotCi12b2lkIFJl
bmRlclJlcGxhY2VkOjpjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJy
ZWRNaW5NYXhTaXplcyhSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciwgRmxvYXRTaXplJiBpbnRy
aW5zaWNTaXplLCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBjb25zdAotewotICAgIGNvbXB1
dGVBc3BlY3RSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVyQm94KGNvbnRlbnRSZW5kZXJlciwgaW50
cmluc2ljU2l6ZSwgaW50cmluc2ljUmF0aW8pOwogCiAgICAgLy8gTm93IGNvbnN0cmFpbiB0aGUg
aW50cmluc2ljIHNpemUgYWxvbmcgZWFjaCBheGlzIGFjY29yZGluZyB0byBtaW5pbXVtIGFuZCBt
YXhpbXVtIHdpZHRoL2hlaWdodHMgYWxvbmcgdGhlCiAgICAgLy8gb3Bwb3NpdGUgYXhpcy4gU28g
Zm9yIGV4YW1wbGUgYSBtYXhpbXVtIHdpZHRoIHRoYXQgc2hyaW5rcyBvdXIgd2lkdGggd2lsbCBy
ZXN1bHQgaW4gdGhlIGhlaWdodCB3ZSBjb21wdXRlIGhlcmUKQEAgLTU5NywyNyArNjA0LDE1IEBA
IExheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6OnJlcGxhY2VkQ29udGVudFJlY3QoY29uc3QgTGF5
b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKICAgICByZXR1cm4gZmluYWxSZWN0OwogfQogCi1kb3Vi
bGUgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0Ci17
Ci0gICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvOwotICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNT
aXplOwotICAgIGNvbXB1dGVBc3BlY3RSYXRpb0luZm9ybWF0aW9uRm9yUmVuZGVyQm94KGVtYmVk
ZGVkQ29udGVudEJveCgpLCBpbnRyaW5zaWNTaXplLCBpbnRyaW5zaWNSYXRpbyk7Ci0gICAgcmV0
dXJuIGludHJpbnNpY1JhdGlvLmFzcGVjdFJhdGlvRG91YmxlKCk7Ci19Ci0KLUZsb2F0U2l6ZSBS
ZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAorc3RkOjpvcHRpb25h
bDxkb3VibGU+IFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiB7
Ci0gICAgLy8gSWYgdGhlcmUncyBhbiBlbWJlZGRlZENvbnRlbnRCb3goKSBvZiBhIHJlbW90ZSwg
cmVmZXJlbmNlZCBkb2N1bWVudCBhdmFpbGFibGUsIHRoaXMgY29kZS1wYXRoIHNob3VsZCBuZXZl
ciBiZSB1c2VkLgotICAgIEFTU0VSVCghZW1iZWRkZWRDb250ZW50Qm94KCkgfHwgc2hvdWxkQXBw
bHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSk7Ci0gICAgcmV0dXJuIHsgaW50cmluc2lj
TG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OworICAgIHJldHVybiBw
cmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiB9CiAKLUZs
b2F0U2l6ZSBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAorRmxv
YXRTaXplIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0
CiB7Ci0gICAgLy8gSWYgdGhlcmUncyBhbiBlbWJlZGRlZENvbnRlbnRCb3goKSBvZiBhIHJlbW90
ZSwgcmVmZXJlbmNlZCBkb2N1bWVudCBhdmFpbGFibGUsIHRoaXMgY29kZS1wYXRoIHNob3VsZCBu
ZXZlciBiZSB1c2VkLgotICAgIEFTU0VSVCghZW1iZWRkZWRDb250ZW50Qm94KCkgfHwgc2hvdWxk
QXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSk7Ci0gICAgYXV0byBpbnRyaW5zaWNT
aXplID0gRmxvYXRTaXplKGludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLCBpbnRyaW5zaWNMb2dpY2Fs
SGVpZ2h0KCkpOwotICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbzsKKyAgICBhdXRv
IGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUgeyBpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50
cmluc2ljTG9naWNhbEhlaWdodCgpIH07CisgICAgYXV0byBwcmVmZXJyZWRBc3BlY3RSYXRpbyA9
IEZsb2F0U2l6ZSB7IH07CiAKICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmhhc1JhdGlv
KCkpIHsKICAgICAgICAgcHJlZmVycmVkQXNwZWN0UmF0aW8gPSBGbG9hdFNpemU6Om5hcnJvd1By
ZWNpc2lvbihzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCku
YXNwZWN0UmF0aW9Mb2dpY2FsSGVpZ2h0KCkudmFsdWUpOwpAQCAtNjc1LDcgKzY3MCw3IEBAIHZv
aWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVBc3BlY3RSYXRpb0FkanVzdGVkSW50cmluc2ljTG9n
aWNhbFdpZHRocyhMYXlvdXRVbml0CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0eWxl
ID0gdGhpcy0+c3R5bGUoKTsKLSAgICBhdXRvIGNvbXB1dGVkQXNwZWN0UmF0aW8gPSBjb21wdXRl
SW50cmluc2ljQXNwZWN0UmF0aW8oKTsKKyAgICBhdXRvIGNvbXB1dGVkQXNwZWN0UmF0aW8gPSBw
cmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAgICAgYXV0
byBjb21wdXRlZEludHJpbnNpY0xvZ2ljYWxXaWR0aCA9IG1pbkxvZ2ljYWxXaWR0aDsKIAogICAg
IGlmIChhdXRvIGZpeGVkTG9naWNhbEhlaWdodCA9IHN0eWxlLmxvZ2ljYWxIZWlnaHQoKS50cnlG
aXhlZCgpKQpAQCAtNjk4LDEzICs2OTMsOSBAQCBzdGF0aWMgaW5saW5lIExheW91dFVuaXQgTk9E
RUxFVEUgcmVzb2x2ZVdpZHRoRm9yUmF0aW8oTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaQogICAg
IHJldHVybiBMYXlvdXRVbml0KGxvZ2ljYWxIZWlnaHQgKiBhc3BlY3RSYXRpbyk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgYm9vbCBOT0RFTEVURSBoYXNJbnRyaW5zaWNTaXplKFJlbmRlckJveCpjb250
ZW50UmVuZGVyZXIsIGJvb2wgaGFzSW50cmluc2ljV2lkdGgsIGJvb2wgaGFzSW50cmluc2ljSGVp
Z2h0ICkKK3N0YXRpYyBpbmxpbmUgYm9vbCBOT0RFTEVURSBoYXNJbnRyaW5zaWNTaXplKGNvbnN0
IFJlbmRlclJlcGxhY2VkKiBzdmdSb290LCBib29sIGhhc0ludHJpbnNpY1dpZHRoLCBib29sIGhh
c0ludHJpbnNpY0hlaWdodCkKIHsKLSAgICBpZiAoaGFzSW50cmluc2ljV2lkdGggJiYgaGFzSW50
cmluc2ljSGVpZ2h0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaGFzSW50cmluc2lj
V2lkdGggfHwgaGFzSW50cmluc2ljSGVpZ2h0KQotICAgICAgICByZXR1cm4gY29udGVudFJlbmRl
cmVyICYmIGNvbnRlbnRSZW5kZXJlci0+aXNSZW5kZXJPckxlZ2FjeVJlbmRlclNWR1Jvb3QoKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIChoYXNJbnRyaW5zaWNXaWR0aCAmJiBoYXNJ
bnRyaW5zaWNIZWlnaHQpIHx8ICgoaGFzSW50cmluc2ljV2lkdGggfHwgaGFzSW50cmluc2ljSGVp
Z2h0KSAmJiBzdmdSb290KTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0
ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2hvdWxkQ29tcHV0
ZVByZWZlcnJlZCkgY29uc3QKQEAgLTcxNSwxMiArNzA2LDEwIEBAIExheW91dFVuaXQgUmVuZGVy
UmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVy
cmVkIHNoCiAgICAgaWYgKHN0eWxlLmxvZ2ljYWxXaWR0aCgpLmlzSW50cmluc2ljT3JTdHJldGNo
KCkpCiAgICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGhSZXNwZWN0aW5n
TWluTWF4V2lkdGgoY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoVXNpbmcoc3R5bGUubG9naWNh
bFdpZHRoKCkpLCBzaG91bGRDb21wdXRlUHJlZmVycmVkKTsKIAotICAgIFJlbmRlckJveCogY29u
dGVudFJlbmRlcmVyID0gZW1iZWRkZWRDb250ZW50Qm94KCk7Ci0KICAgICAvLyAxMC4zLjIgSW5s
aW5lLCByZXBsYWNlZCBlbGVtZW50czogaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRl
dC5odG1sI2lubGluZS1yZXBsYWNlZC13aWR0aAogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNSYXRp
bzsKICAgICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplOwotICAgIGNvbXB1dGVJbnRyaW5zaWNT
aXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzKGNvbnRlbnRSZW5kZXJlciwg
Y29uc3RyYWluZWRTaXplLCBpbnRyaW5zaWNSYXRpbyk7CisgICAgY29tcHV0ZUludHJpbnNpY1Np
emVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoY29uc3RyYWluZWRTaXplLCBp
bnRyaW5zaWNSYXRpbyk7CiAKICAgICBpZiAoc3R5bGUubG9naWNhbFdpZHRoKCkuaXNBdXRvKCkp
IHsKICAgICAgICAgYm9vbCBjb21wdXRlZEhlaWdodElzQXV0byA9IHN0eWxlLmxvZ2ljYWxIZWln
aHQoKS5pc0F1dG8oKTsKQEAgLTczMCw3ICs3MTksNyBAQCBMYXlvdXRVbml0IFJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCBz
aAogICAgICAgICAvLyBGb3IgZmxleCBvciBncmlkIGl0ZW1zIHdoZXJlIHRoZSBsb2dpY2FsIGhl
aWdodCBoYXMgYmVlbiBvdmVycmlkZW4gdGhlbiB3ZSBzaG91bGQgdXNlIHRoYXQgc2l6ZSB0byBj
b21wdXRlIHRoZSByZXBsYWNlZCB3aWR0aCBhcyBsb25nIGFzIHRoZSBmbGV4IG9yCiAgICAgICAg
IC8vIGdyaWQgaXRlbSBoYXMgYW4gaW50cmluc2ljIHNpemUuIEl0IGlzIHBvc3NpYmxlIChpbmRl
ZWQsIGNvbW1vbikgZm9yIGFuIFNWRyBncmFwaGljIHRvIGhhdmUgYW4gaW50cmluc2ljIGFzcGVj
dCByYXRpbyBidXQgbm90IHRvIGhhdmUgYW4gaW50cmluc2ljCiAgICAgICAgIC8vIHdpZHRoIG9y
IGhlaWdodC4gVGhlcmUgYXJlIGFsc28gZWxlbWVudHMgd2l0aCBpbnRyaW5zaWMgc2l6ZXMgYnV0
IHdpdGhvdXQgaW50cmluc2ljIHJhdGlvIChsaWtlIGFuIGlmcmFtZSkuCi0gICAgICAgIGlmIChh
dXRvIG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0ID0gKCFpbnRyaW5zaWNSYXRpby5pc0VtcHR5KCkg
JiYgKGlzRmxleEl0ZW0oKSB8fCBpc0dyaWRJdGVtKCkpICYmIGhhc0ludHJpbnNpY1NpemUoY29u
dGVudFJlbmRlcmVyLCBoYXNJbnRyaW5zaWNXaWR0aCwgaGFzSW50cmluc2ljSGVpZ2h0KSA/IHRo
aXMtPm92ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0KCkgOiBzdGQ6Om51bGxvcHQpKQor
ICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nTG9naWNhbEhlaWdodCA9ICghaW50cmluc2ljUmF0
aW8uaXNFbXB0eSgpICYmIChpc0ZsZXhJdGVtKCkgfHwgaXNHcmlkSXRlbSgpKSAmJiBoYXNJbnRy
aW5zaWNTaXplKGVtYmVkZGVkU1ZHUm9vdCgpLCBoYXNJbnRyaW5zaWNXaWR0aCwgaGFzSW50cmlu
c2ljSGVpZ2h0KSA/IHRoaXMtPm92ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0KCkgOiBz
dGQ6Om51bGxvcHQpKQogICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxX
aWR0aFJlc3BlY3RpbmdNaW5NYXhXaWR0aChjb250ZW50Qm94TG9naWNhbEhlaWdodCgqb3ZlcnJp
ZGluZ0xvZ2ljYWxIZWlnaHQpICogaW50cmluc2ljUmF0aW8uYXNwZWN0UmF0aW9Eb3VibGUoKSwg
c2hvdWxkQ29tcHV0ZVByZWZlcnJlZCk7CiAKICAgICAgICAgLy8gSWYgJ2hlaWdodCcgYW5kICd3
aWR0aCcgYm90aCBoYXZlIGNvbXB1dGVkIHZhbHVlcyBvZiAnYXV0bycgYW5kIHRoZSBlbGVtZW50
IGFsc28gaGFzIGFuIGludHJpbnNpYyB3aWR0aCwgdGhlbiB0aGF0IGludHJpbnNpYyB3aWR0aCBp
cyB0aGUgdXNlZCB2YWx1ZSBvZiAnd2lkdGgnLgpAQCAtODEzLDE5ICs4MDIsMTcgQEAgTGF5b3V0
VW5pdCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQKICAgICBpZiAoaGFzUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkpCiAg
ICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1h
eEhlaWdodChjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS5sb2dpY2Fs
SGVpZ2h0KCkpKTsKIAotICAgIFJlbmRlckJveCogY29udGVudFJlbmRlcmVyID0gZW1iZWRkZWRD
b250ZW50Qm94KCk7Ci0KICAgICAvLyAxMC42LjIgSW5saW5lLCByZXBsYWNlZCBlbGVtZW50czog
aHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1sI2lubGluZS1yZXBsYWNlZC1o
ZWlnaHQKICAgICBGbG9hdFNpemUgaW50cmluc2ljUmF0aW87CiAgICAgRmxvYXRTaXplIGNvbnN0
cmFpbmVkU2l6ZTsKLSAgICBjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNm
ZXJyZWRNaW5NYXhTaXplcyhjb250ZW50UmVuZGVyZXIsIGNvbnN0cmFpbmVkU2l6ZSwgaW50cmlu
c2ljUmF0aW8pOworICAgIGNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2Zl
cnJlZE1pbk1heFNpemVzKGNvbnN0cmFpbmVkU2l6ZSwgaW50cmluc2ljUmF0aW8pOwogCiAgICAg
Ym9vbCB3aWR0aElzQXV0byA9IHN0eWxlKCkubG9naWNhbFdpZHRoKCkuaXNBdXRvKCk7CiAgICAg
Ym9vbCBoYXNJbnRyaW5zaWNXaWR0aCA9IGNvbnN0cmFpbmVkU2l6ZS53aWR0aCgpID4gMCB8fCAo
IWNvbnN0cmFpbmVkU2l6ZS53aWR0aCgpICYmIHNob3VsZFJlc3BlY3RaZXJvSW50cmluc2ljV2lk
dGgoKSkgfHwgc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKTsKICAgICBi
b29sIGhhc0ludHJpbnNpY0hlaWdodCA9IGNvbnN0cmFpbmVkU2l6ZS5oZWlnaHQoKSA+IDAgfHwg
c2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKTsKIAogICAgIC8vIFNlZSBjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsSGVpZ2h0KCkgZm9yIGEgc2ltaWxhciBjaGVjayBmb3IgaGVpZ2h0cy4KLSAgICBp
ZiAoYXV0byBvdmVycmlkaW5nbG9naWNhbFdpZHRoID0gKCFpbnRyaW5zaWNSYXRpby5pc0VtcHR5
KCkgJiYgKGlzRmxleEl0ZW0oKSB8fCBpc0dyaWRJdGVtKCkpICYmIGhhc0ludHJpbnNpY1NpemUo
Y29udGVudFJlbmRlcmVyLCBoYXNJbnRyaW5zaWNXaWR0aCwgaGFzSW50cmluc2ljSGVpZ2h0KSA/
IG92ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsV2lkdGgoKSA6IHN0ZDo6bnVsbG9wdCkpCisgICAg
aWYgKGF1dG8gb3ZlcnJpZGluZ2xvZ2ljYWxXaWR0aCA9ICghaW50cmluc2ljUmF0aW8uaXNFbXB0
eSgpICYmIChpc0ZsZXhJdGVtKCkgfHwgaXNHcmlkSXRlbSgpKSAmJiBoYXNJbnRyaW5zaWNTaXpl
KGVtYmVkZGVkU1ZHUm9vdCgpLCBoYXNJbnRyaW5zaWNXaWR0aCwgaGFzSW50cmluc2ljSGVpZ2h0
KSA/IG92ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsV2lkdGgoKSA6IHN0ZDo6bnVsbG9wdCkpCiAg
ICAgICAgIHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0UmVzcGVjdGluZ01pbk1h
eEhlaWdodChjb250ZW50Qm94TG9naWNhbFdpZHRoKCpvdmVycmlkaW5nbG9naWNhbFdpZHRoKSAq
IGludHJpbnNpY1JhdGlvLnRyYW5zcG9zZWRTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKSk7CiAK
ICAgICAvLyBJZiAnaGVpZ2h0JyBhbmQgJ3dpZHRoJyBib3RoIGhhdmUgY29tcHV0ZWQgdmFsdWVz
IG9mICdhdXRvJyBhbmQgdGhlIGVsZW1lbnQgYWxzbyBoYXMgYW4gaW50cmluc2ljIGhlaWdodCwg
dGhlbiB0aGF0IGludHJpbnNpYyBoZWlnaHQgaXMgdGhlIHVzZWQgdmFsdWUgb2YgJ2hlaWdodCcu
CkBAIC04NjAsNyArODQ3LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNp
Y0tleXdvcmRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWwKIHsKICAgICBpZiAo
aGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSAmJiAhc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNB
dXRvKCkpIHsKICAgICAgICAgaWYgKGF1dG8gZml4ZWRIZWlnaHQgPSBzdHlsZSgpLmxvZ2ljYWxI
ZWlnaHQoKS50cnlGaXhlZCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGhlaWdodERlcml2ZWRXaWR0
aCA9IExheW91dFVuaXQgeyBmaXhlZEhlaWdodC0+cmVzb2x2ZVpvb20oc3R5bGUoKS51c2VkWm9v
bUZvckxlbmd0aCgpKSAqIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygpIH07CisgICAgICAg
ICAgICBhdXRvIGhlaWdodERlcml2ZWRXaWR0aCA9IExheW91dFVuaXQgeyBmaXhlZEhlaWdodC0+
cmVzb2x2ZVpvb20oc3R5bGUoKS51c2VkWm9vbUZvckxlbmd0aCgpKSAqIHByZWZlcnJlZEFzcGVj
dFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKSB9OwogICAgICAgICAgICAgbWluTG9n
aWNhbFdpZHRoID0gaGVpZ2h0RGVyaXZlZFdpZHRoOwogICAgICAgICAgICAgbWF4TG9naWNhbFdp
ZHRoID0gaGVpZ2h0RGVyaXZlZFdpZHRoOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA3MSwx
NCArMTA1OCw2IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OmxheW91dFNoYWRvd0NvbnRlbnQoY29u
c3QgTGF5b3V0U2l6ZSYgb2xkU2l6ZSkKICAgICBjbGVhckNoaWxkTmVlZHNMYXlvdXQoKTsKIH0K
IAotRmxvYXRTaXplIFJlbmRlclJlcGxhY2VkOjppbnRyaW5zaWNSYXRpbygpIGNvbnN0Ci17Ci0g
ICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvOwotICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5lZFNp
emU7Ci0gICAgY29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goZW1iZWRk
ZWRDb250ZW50Qm94KCksIGNvbnN0cmFpbmVkU2l6ZSwgaW50cmluc2ljUmF0aW8pOwotICAgIHJl
dHVybiBpbnRyaW5zaWNSYXRpbzsKLX0KLQogdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJl
cGxhY2VkT3V0T2ZGbG93UG9zaXRpb25lZExvZ2ljYWxXaWR0aChMb2dpY2FsRXh0ZW50Q29tcHV0
ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBjb25zdAogewogICAgIFBvc2l0aW9uZWRMYXlvdXRD
b25zdHJhaW50cyBpbmxpbmVDb25zdHJhaW50cygqdGhpcywgTG9naWNhbEJveEF4aXM6OklubGlu
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IGFiM2Y0
NzEwYWE5MC4uNmVmYzRiYzRjOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuaApAQCAtNDIsMTMgKzQyLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNldE5lZWRz
TGF5b3V0SWZOZWVkZWRBZnRlckludHJpbnNpY1NpemVDaGFuZ2UoKTsKIAogICAgIExheW91dFNp
emUgaW50cmluc2ljU2l6ZSgpIGNvbnN0IGZpbmFsOwotICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNS
YXRpbygpIGNvbnN0OwotICAgIAorCiAgICAgYm9vbCBpc0NvbnRlbnRMaWtlbHlWaXNpYmxlSW5W
aWV3cG9ydCgpOwogICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgZG91YmxlIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygp
IGNvbnN0OwotCiAgICAgdmlydHVhbCBib29sIHBhaW50c0NvbnRlbnQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRV
c2luZyhjb25zdCBTdHlsZTo6UHJlZmVycmVkU2l6ZSYgbG9naWNhbEhlaWdodCkgY29uc3Q7CkBA
IC02MSw2ICs1OCwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXBsYWNlZE1pbkxvZ2ljYWxIZWln
aHRDb21wdXRlc0FzTm9uZSgpIGNvbnN0OwogICAgIGJvb2wgcmVwbGFjZWRNYXhMb2dpY2FsSGVp
Z2h0Q29tcHV0ZXNBc05vbmUoKSBjb25zdDsKIAorICAgIHZpcnR1YWwgUmVuZGVyUmVwbGFjZWQq
IGVtYmVkZGVkU1ZHUm9vdCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPiBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0IG92ZXJyaWRl
OworCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyUmVwbGFjZWQoVHlwZSwgRWxlbWVudCYsIFJlbmRl
clN0eWxlJiYsIE9wdGlvblNldDxSZXBsYWNlZEZsYWc+ID0geyB9KTsKICAgICBSZW5kZXJSZXBs
YWNlZChUeXBlLCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgY29uc3QgTGF5b3V0U2l6ZSYgaW50
cmluc2ljU2l6ZSwgT3B0aW9uU2V0PFJlcGxhY2VkRmxhZz4gPSB7IH0pOwpAQCAtNzcsOSArNzks
NiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlOjpEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0OwotCiAgICAgdm9pZCBzZXRJbnRy
aW5zaWNTaXplKGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpIHsgbV9pbnRyaW5zaWNT
aXplID0gaW50cmluc2ljU2l6ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hh
bmdlZCgpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxhdGl2ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMDYsNyArMTA1LDYgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgY29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRyaW5zaWNMb2dpY2FsV2lk
dGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdp
ZHRoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3go
KSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgQVNDSUlMaXRlcmFsIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUmVwbGFjZWQiX3M7IH0KIAogICAgIGJvb2wgY2Fu
SGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTEyMSw4
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0
Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgZmluYWw7Ci0gICAgdm9pZCBjb21w
dXRlQXNwZWN0UmF0aW9JbmZvcm1hdGlvbkZvclJlbmRlckJveChSZW5kZXJCb3gqLCBGbG9hdFNp
emUmIGNvbnN0cmFpbmVkU2l6ZSwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgY29uc3Q7Ci0g
ICAgdm9pZCBjb21wdXRlSW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5N
YXhTaXplcyhSZW5kZXJCb3gqIGNvbnRlbnRSZW5kZXJlciwgRmxvYXRTaXplJiBjb25zdHJhaW5l
ZFNpemUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0OworICAgIHZvaWQgY29tcHV0
ZUludHJpbnNpY1NpemVzQ29uc3RyYWluZWRCeVRyYW5zZmVycmVkTWluTWF4U2l6ZXMoRmxvYXRT
aXplJiBjb25zdHJhaW5lZFNpemUsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0Owog
CiAgICAgdmlydHVhbCBib29sIHNob3VsZERyYXdTZWxlY3Rpb25UaW50KCkgY29uc3Q7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDRkYTUwOGI2
YTczYS4uNjFkOWY3ZjJiNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcApAQCAtNDg3LDE1ICs0ODcsMzcgQEAgYm9vbCBSZW5kZXJXaWRnZXQ6OnNob3VsZElu
dmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdAogewogICAgIGlmIChSZW5kZXJSZXBsYWNl
ZDo6c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICByZXR1cm4gZW1iZWRkZWRDb250ZW50Qm94KCk7CisgICAgcmV0dXJuIGVtYmVkZGVk
U1ZHUm9vdCgpOwogfQogCi1SZW5kZXJCb3gqIFJlbmRlcldpZGdldDo6ZW1iZWRkZWRDb250ZW50
Qm94KCkgY29uc3QKK1JlbmRlclJlcGxhY2VkKiBSZW5kZXJXaWRnZXQ6OmVtYmVkZGVkU1ZHUm9v
dCgpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxSZW5kZXJFbWJlZGRlZE9iamVjdD4odGhpcykpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0ciBmcmFtZVZpZXcgPSBkeW5hbWljRG93
bmNhc3Q8TG9jYWxGcmFtZVZpZXc+KHdpZGdldCgpKTsKLSAgICByZXR1cm4gZnJhbWVWaWV3ID8g
ZnJhbWVWaWV3LT5lbWJlZGRlZENvbnRlbnRCb3goKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGZy
YW1lVmlldyA/IGZyYW1lVmlldy0+ZW1iZWRkZWRTVkdSb290KCkgOiBudWxscHRyOworfQorCitG
bG9hdFNpemUgUmVuZGVyV2lkZ2V0OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0
Cit7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNp
b25zIGZyb20gY29udGVudCwgYnV0IHRoZQorICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBD
U1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCisgICAg
Ly8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KKyAgICBpZiAo
c2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxh
Y2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOworCisgICAgQ2hlY2tlZFB0ciBzdmdS
b290ID0gZW1iZWRkZWRTVkdSb290KCk7CisgICAgaWYgKCFzdmdSb290KQorICAgICAgICByZXR1
cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CisKKyAgICBh
dXRvIHJhdGlvID0gc3ZnUm9vdC0+cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKKyAgICBp
ZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgIXJhdGlvLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmF0aW8gPSByYXRpby50cmFuc3Bvc2VkU2l6ZSgpOworCisgICAgaWYgKHN0eWxlKCkuYXNw
ZWN0UmF0aW8oKS5pc1JhdGlvKCkgfHwgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRS
YXRpbygpICYmIHJhdGlvLmlzRW1wdHkoKSkpCisgICAgICAgIHJhdGlvID0gRmxvYXRTaXplOjpu
YXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBz
dHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsKKworICAgIHJldHVybiBy
YXRpbzsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5oCmluZGV4IGUwMTc4MTYyMDBkZi4uNzZiM2Q4ZjE3YWU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCkBAIC05MSw3ICs5MSw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKICAgICBib29sIHNob3Vs
ZEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMoKSBjb25zdCBmaW5hbDsKLSAgICBSZW5kZXJCb3gq
IGVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0IGZpbmFsOworICAgIFJlbmRlclJlcGxhY2VkKiBl
bWJlZGRlZFNWR1Jvb3QoKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNw
ZWN0UmF0aW9Bc1NpemUoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3Rh
dGUoSGlnaGxpZ2h0U3RhdGUpIGZpbmFsOwogICAgIHZvaWQgc2V0T3ZlcmxhcFRlc3RSZXN1bHQo
Ym9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcAppbmRleCBkZTI5NDM2MjQyOTguLjE2ZTg4MjMzM2MyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC05MSwxMiArOTEsMTUg
QEAgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIqIFJlbmRlclNWR1Jvb3Q6OnZpZXdwb3J0Q29u
dGFpbmVyKCkgY29uc3QKIAogYm9vbCBSZW5kZXJTVkdSb290OjpoYXNJbnRyaW5zaWNBc3BlY3RS
YXRpbygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNBc3BlY3RSYXRpbygp
OworICAgIHJldHVybiBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91
YmxlKCk7CiB9CiAKIEZsb2F0U2l6ZSBSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6
ZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUX0lNUExJRVModmlldygpLmZyYW1lVmlldygpLmxheW91
dENvbnRleHQoKS5pc0luUmVuZGVyVHJlZUxheW91dCgpLCAhc2hvdWxkQXBwbHlTaXplQ29udGFp
bm1lbnQoKSk7CisgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBk
aW1lbnNpb25zIGZyb20gY29udGVudC4KKyAgICAvLyBUaGUgYmFzZSBjbGFzcyByZXR1cm5zIHZh
bHVlcyBmcm9tIHRoZSBjYWNoZSAvIGNvbnRhaW4taW50cmluc2ljLXNpemUgd2l0aG91dCBxdWVy
eWluZyBpbWFnZSBkYXRhLgorICAgIGlmIChzaG91bGRBcHBseVNpemVDb250YWlubWVudCgpKQor
ICAgICAgICByZXR1cm4geyBpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50cmluc2ljTG9naWNh
bEhlaWdodCgpIH07CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL1NWRy9jb29yZHMuaHRt
bCNJbnRyaW5zaWNTaXppbmcKICAgICBGbG9hdFNpemUgaW50cmluc2ljU2l6ZSA9IHsgc3ZnU1ZH
RWxlbWVudCgpLmludHJpbnNpY1dpZHRoKCksIHN2Z1NWR0VsZW1lbnQoKS5pbnRyaW5zaWNIZWln
aHQoKSB9OwogICAgIC8vIFRyYW5zcG9zZSBmb3IgdmVydGljYWwgd3JpdGluZyBtb2RlCkBAIC0x
MDUsOSArMTA4LDEzIEBAIEZsb2F0U2l6ZSBSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2lj
U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGludHJpbnNpY1NpemU7CiB9CiAKLUZsb2F0U2l6ZSBS
ZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CitGbG9hdFNpemUgUmVu
ZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAogewotICAgIEFT
U0VSVCghc2hvdWxkQXBwbHlTaXplQ29udGFpbm1lbnQoKSk7CisgICAgLy8gU2l6ZSBjb250YWlu
bWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0IHRo
ZQorICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBDU1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5
IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCisgICAgLy8gYmFzZSBjbGFzcyAod2hpY2ggZG9l
c24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRp
b0FzU2l6ZSgpOwogCiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkpCiAg
ICAgICAgIHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgpLmFzcGVjdFJh
dGlvTG9naWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsSGVpZ2h0
KCkudmFsdWUpOwpAQCAtMTMyLDcgKzEzOSw2IEBAIEZsb2F0U2l6ZSBSZW5kZXJTVkdSb290Ojpw
cmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8o
KS5pc0F1dG9BbmRSYXRpbygpKQogICAgICAgICByZXR1cm4gRmxvYXRTaXplOjpuYXJyb3dQcmVj
aXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFz
cGVjdFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsKICAgICByZXR1cm4geyB9OwotCiB9CiAK
IGJvb2wgUmVuZGVyU1ZHUm9vdDo6aXNFbWJlZGRlZFRocm91Z2hTVkdJbWFnZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IDYxOTdm
NTRmZWUxZS4uMDZlMGFjYzJkZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuaApAQCAtNDUsOCArNDUsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Vt
YmVkZGVkVGhyb3VnaFNWR0ltYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtYmVkZGVkVGhyb3Vn
aEZyYW1lQ29udGFpbmluZ1NWR0RvY3VtZW50KCkgY29uc3Q7CiAKLSAgICBGbG9hdFNpemUgY29t
cHV0ZUludHJpbnNpY1NpemUoKSBjb25zdCBmaW5hbDsKLSAgICBGbG9hdFNpemUgcHJlZmVycmVk
QXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNp
Y1NpemUoKSBjb25zdDsKKyAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUo
KSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3Qg
ZmluYWw7CiAKICAgICBib29sIGlzTGF5b3V0U2l6ZUNoYW5nZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzTGF5b3V0U2l6ZUNoYW5nZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMzZkM2Uz
ODU5ZGI2Li40NTMxMjlkOTY1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwCkBAIC04MSwxMiAr
ODEsMTUgQEAgU1ZHU1ZHRWxlbWVudCYgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6c3ZnU1ZHRWxlbWVu
dCgpIGNvbnN0CiAKIGJvb2wgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNwZWN0
UmF0aW8oKSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRlSW50cmluc2ljQXNwZWN0UmF0aW8o
KTsKKyAgICByZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RSYXRpb0Rv
dWJsZSgpOwogfQogCiBGbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJp
bnNpY1NpemUoKSBjb25zdAogewotICAgIEFTU0VSVF9JTVBMSUVTKHZpZXcoKS5mcmFtZVZpZXco
KS5sYXlvdXRDb250ZXh0KCkuaXNJblJlbmRlclRyZWVMYXlvdXQoKSwgIXNob3VsZEFwcGx5U2l6
ZUNvbnRhaW5tZW50KCkpOworICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRy
aW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQuCisgICAgLy8gVGhlIGJhc2UgY2xhc3MgcmV0
dXJucyB2YWx1ZXMgZnJvbSB0aGUgY2FjaGUgLyBjb250YWluLWludHJpbnNpYy1zaXplIHdpdGhv
dXQgcXVlcnlpbmcgaW1hZ2UgZGF0YS4KKyAgICBpZiAoc2hvdWxkQXBwbHlTaXplQ29udGFpbm1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIHsgaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNp
Y0xvZ2ljYWxIZWlnaHQoKSB9OwogICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNTaXplID0geyBzdmdT
VkdFbGVtZW50KCkuaW50cmluc2ljV2lkdGgoKSwgc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY0hl
aWdodCgpIH07CiAgICAgLy8gVHJhbnNwb3NlIGZvciB2ZXJ0aWNhbCB3cml0aW5nIG1vZGUKICAg
ICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCkBAIC05NCw5ICs5NywxMyBAQCBGbG9h
dFNpemUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAog
ICAgIHJldHVybiBpbnRyaW5zaWNTaXplOwogfQogCi1GbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZH
Um9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAorRmxvYXRTaXplIExlZ2FjeVJlbmRl
clNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoIXNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50KCkpOworICAgIC8vIFNpemUgY29udGFpbm1l
bnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQsIGJ1dCB0aGUK
KyAgICAvLyBhc3BlY3QgcmF0aW8gZnJvbSB0aGUgQ1NTIGFzcGVjdC1yYXRpbyBwcm9wZXJ0eSBp
cyBzdGlsbCBhdmFpbGFibGUgdmlhIHRoZQorICAgIC8vIGJhc2UgY2xhc3MgKHdoaWNoIGRvZXNu
J3QgcXVlcnkgaW1hZ2UgZGF0YSkuCisgICAgaWYgKHNob3VsZEFwcGx5U2l6ZUNvbnRhaW5tZW50
KCkpCisgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW9B
c1NpemUoKTsKIAogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNSYXRpbygpKQogICAg
ICAgICByZXR1cm4gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRp
b0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhlaWdodCgp
LnZhbHVlKTsKQEAgLTEyMSw3ICsxMjgsNiBAQCBGbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZHUm9v
dDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogICAgICAgICByZXR1cm4gKmludHJpbnNp
Y1JhdGlvVmFsdWU7CiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRp
bygpKQogICAgICAgICByZXR1cm4gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5h
c3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNh
bEhlaWdodCgpLnZhbHVlKTsKLQogICAgIHJldHVybiBwcmVmZXJyZWRBc3BlY3RSYXRpbzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5
UmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVn
YWN5UmVuZGVyU1ZHUm9vdC5oCmluZGV4IDUzOTc1MDg0NGM5MS4uNDZjMTIwZGRhNDYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJT
VkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5
UmVuZGVyU1ZHUm9vdC5oCkBAIC00NSw4ICs0NSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1i
ZWRkZWRUaHJvdWdoU1ZHSW1hZ2UoKSBjb25zdDsKICAgICBib29sIGlzRW1iZWRkZWRUaHJvdWdo
RnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSBjb25zdDsKIAotICAgIEZsb2F0U2l6ZSBjb21w
dXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0IGZpbmFsOwotICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRB
c3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2lj
U2l6ZSgpIGNvbnN0OworICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgp
IGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCBm
aW5hbDsKIAogICAgIGJvb2wgaXNMYXlvdXRTaXplQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNMYXlvdXRTaXplQ2hhbmdlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKaW5kZXggOWEwZDQ4MjZhNjkwLi44NjI5ZTBlZDIxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMjc2LDggKzI3Niw4IEBAIFJlZlB0cjxOYXRp
dmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29u
c3QgRGVzdGluYXRpCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gbV9wYWdlLT5zZXR0aW5ncygp
LmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
IDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKIAogICAgIEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3cgPSBudWxscHRyOwotICAgIGlmIChDaGVja2VkUHRyIGNvbnRlbnRSZW5kZXJlciA9IGVt
YmVkZGVkQ29udGVudEJveCgpKQotICAgICAgICBob3N0V2luZG93ID0gY29udGVudFJlbmRlcmVy
LT5ob3N0V2luZG93KCk7CisgICAgaWYgKENoZWNrZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZH
Um9vdCgpKQorICAgICAgICBob3N0V2luZG93ID0gc3ZnUm9vdC0+aG9zdFdpbmRvdygpOwogCiAg
ICAgUmVmUHRyIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJp
bmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
OjpCR1JBOCwgaG9zdFdpbmRvdyk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKQEAgLTM5MiwxMiAr
MzkyLDEyIEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgcmV0dXJuIEltYWdlRHJhd1Jl
c3VsdDo6RGlkRHJhdzsKIH0KIAotUmVuZGVyQm94KiBTVkdJbWFnZTo6ZW1iZWRkZWRDb250ZW50
Qm94KCkgY29uc3QKK1JlbmRlclJlcGxhY2VkKiBTVkdJbWFnZTo6ZW1iZWRkZWRTVkdSb290KCkg
Y29uc3QKIHsKICAgICBSZWZQdHIgcm9vdEVsZW1lbnQgPSB0aGlzLT5yb290RWxlbWVudCgpOwog
ICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBkb3duY2FzdDxSZW5kZXJCb3g+KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKKyAgICByZXR1
cm4gZG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KHJvb3RFbGVtZW50LT5yZW5kZXJlcigpKTsKIH0K
IAogTG9jYWxGcmFtZVZpZXcqIFNWR0ltYWdlOjpmcmFtZVZpZXcoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCBmNDU3N2Q1Y2YwNDIuLmY3NDNhMzcwMzJh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTM2LDcgKzM2LDcg
QEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgTG9jYWxGcmFtZVZp
ZXc7CiBjbGFzcyBQYWdlOwotY2xhc3MgUmVuZGVyQm94OworY2xhc3MgUmVuZGVyUmVwbGFjZWQ7
CiBjbGFzcyBTVkdTVkdFbGVtZW50OwogY2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQ7CiBjbGFz
cyBTVkdJbWFnZUZvckNvbnRhaW5lcjsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHRyeUNyZWF0ZUZyb21EYXRhKHN0ZDo6c3Bhbjxjb25z
dCB1aW50OF90PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U1ZHSW1hZ2U+JiYpPiYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0RhdGFEZWNvZGFibGUoY29uc3Qg
U2V0dGluZ3MmLCBzdGQ6OnNwYW48Y29uc3QgdWludDhfdD4pOwogCi0gICAgUmVuZGVyQm94KiBl
bWJlZGRlZENvbnRlbnRCb3goKSBjb25zdDsKKyAgICBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRT
VkdSb290KCkgY29uc3Q7CiAgICAgTG9jYWxGcmFtZVZpZXcqIE5PREVMRVRFIGZyYW1lVmlldygp
IGNvbnN0OwogCiAgICAgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479581</attachid>
            <date>2026-05-10 17:43:01 -0700</date>
            <delta_ts>2026-05-10 17:50:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-314488-20260510174301.patch</filename>
            <type>text/plain</type>
            <size>25350</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA1ZTNjMjc0Y2Q1MzMyZmFiNmY1NWZlZDE1ZGY0YjExOWQ1ZTk0YWQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFN1biwgMTAgTWF5IDIwMjYgMTc6NDE6MzcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBDbGVhbiB1
cCBhc3BlY3QgcmF0aW8gQVBJOiBtb3ZlIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgdG8KIFJlbmRl
ckJveCwgcmVuYW1lIEZsb2F0U2l6ZSB2YXJpYW50IHRvIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNT
aXplKCkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQ0ODgKClJl
dmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKIlByZWZlcnJlZCBhc3BlY3QgcmF0aW8iIGlzIGEg
Q1NTIFNpemluZyA0IHNwZWMgdGVybSB0aGF0IGFwcGxpZXMgdG8gYWxsIGJveGVzLApub3QganVz
dCByZXBsYWNlZCBlbGVtZW50cy4gUHJldmlvdXNseSwgdGhlIGRvdWJsZSBBUEkgKGFzcGVjdFJh
dGlvVmFsdWUpIGxpdmVkCm9uIFJlbmRlckJveCB3aGlsZSB0aGUgRmxvYXRTaXplIEFQSSAocHJl
ZmVycmVkQXNwZWN0UmF0aW8pIGxpdmVkIG9uClJlbmRlclJlcGxhY2VkLCBtYWtpbmcgaXQgdW5j
bGVhciB3aGljaCB0byBjYWxsIGFuZCB3aGVuLgoKTm93IGJvdGggcHJlZmVycmVkQXNwZWN0UmF0
aW8oKSAocmV0dXJucyBvcHRpb25hbDxkb3VibGU+KSBhbmQKcHJlZmVycmVkQXNwZWN0UmF0aW9B
c1NpemUoKSAocmV0dXJucyBGbG9hdFNpemUpIGFyZSB2aXJ0dWFsIG9uIFJlbmRlckJveC4KUmVw
bGFjZWQgZWxlbWVudHMgb3ZlcnJpZGUgYm90aCB0byBhY2NvdW50IGZvciBpbnRyaW5zaWMgcmF0
aW9zIGFuZCB0aGUgImF1dG8iCmtleXdvcmQgaW4gYXNwZWN0LXJhdGlvLgoKVGhpcyBlbGltaW5h
dGVzIHRoZSBvbGQgYXNwZWN0UmF0aW9WYWx1ZSgpIGZ1bmN0aW9uIGFuZCBzaW1wbGlmaWVzIGNh
bGxlcnMgdGhhdAp3ZXJlIGRvaW5nIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9E
b3VibGUoKSAtIHRoZXkgbm93IGp1c3QgY2FsbApwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGRpcmVj
dGx5LgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKFdlYkNvcmU6
OlJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RSYXRpbyBjb25z
dCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdp
ZHRocyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVTaXppbmdLZXl3b3JkTG9n
aWNhbENvbnRlbnRIZWlnaHRVc2luZ0dlbmVyaWMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94
OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OnByZWZl
cnJlZEFzcGVjdFJhdGlvQXNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvIGNvbnN0KToK
KFdlYkNvcmU6OlJlbmRlckJveDo6YXNwZWN0UmF0aW9WYWx1ZSBjb25zdCk6IERlbGV0ZWQuCiog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjppc1NWR1Jvb3RXaXRoSW50
cmluc2ljQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJl
ZEFzcGVjdFJhdGlvRm9yRmxleEl0ZW0gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHA6CihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0
UmF0aW9Bc1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnByZWZlcnJlZEFzcGVj
dFJhdGlvIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgoo
V2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVk
QnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2Vk
OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6
cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFj
ZWQ6OmNvbXB1dGVBc3BlY3RSYXRpb0FkanVzdGVkSW50cmluc2ljTG9naWNhbFdpZHRocyBjb25z
dCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dp
Y2FsV2lkdGhzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKFdlYkNv
cmU6OlJlbmRlcldpZGdldDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUgY29uc3QpOgooV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CihXZWJDb3JlOjpSZW5kZXJTVkdS
b290OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJTVkdS
b290OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJT
VkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHA6CihXZWJDb3JlOjpMZWdh
Y3lSZW5kZXJTVkdSb290OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3Jl
OjpMZWdhY3lSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSBjb25zdCk6
CihXZWJDb3JlOjpMZWdhY3lSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25z
dCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5
UmVuZGVyU1ZHUm9vdC5oOgotLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwICAgICAgICB8IDMzICsrKysrKysrKysrLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaCAgICAgICAgICB8ICA1ICstLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmNwcCAgIHwgIDggKystLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAgICAgICB8ICA4ICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuaCAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcCAgIHwgMTkgKysrKysrKy0tLS0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oICAgICB8ICA0ICsrLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgICAgIHwgIDggKystLS0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCAgICAgICB8ICAyICstCiAuLi4vV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwICAgfCAgNyArKy0tCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCAgfCAgMiArLQogLi4uL3N2Zy9sZWdhY3kvTGVn
YWN5UmVuZGVyU1ZHUm9vdC5jcHAgICAgICAgIHwgIDcgKystLQogLi4uL3N2Zy9sZWdhY3kvTGVn
YWN5UmVuZGVyU1ZHUm9vdC5oICAgICAgICAgIHwgIDIgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDU5
IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggOGE1MTMzZmUzNmNjLi5hMjA1MzQ4MTgwNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC03MTEsNyArNzExLDcgQEAgdm9pZCBSZW5k
ZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxNaW5NYXhTaXplc0J5QXNwZWN0UmF0aW8oTGF5b3V0VW5p
dCYgY29tcHV0ZWRNaW4KICAgICAvLyBhIHNpemUgb2YgdGhlIGluaXRpYWwgY29udGFpbmluZyBi
bG9jayBhbmQgdGhlIOKAnHN0cmV0Y2gtZml04oCdIHNpemluZyBvZiBub24tcmVwbGFjZWQgYmxv
Y2tzIGlmIHRoZXkgaGF2ZSBkZWZpbml0ZSB2YWx1ZXMuCiAgICAgLy8gU2VlIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi9jc3Mtc2l6aW5nLTMvI2RlZmluaXRlCiAgICAgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwotICAgIEFTU0VSVChzdHlsZVRvVXNlLmFzcGVjdFJhdGlv
KCkuaGFzUmF0aW8oKSB8fCAoaXM8UmVuZGVyUmVwbGFjZWQ+KCp0aGlzKSAmJiBkb3duY2FzdDxS
ZW5kZXJSZXBsYWNlZD4oKnRoaXMpLnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9E
b3VibGUoKSkpOworICAgIEFTU0VSVChzdHlsZVRvVXNlLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8o
KSB8fCBwcmVmZXJyZWRBc3BlY3RSYXRpbygpKTsKICAgICBhdXRvIGxvZ2ljYWxTaXplID0gZGlt
ZW5zaW9uID09IENvbnN0cmFpbkRpbWVuc2lvbjo6V2lkdGggPyBzdHlsZVRvVXNlLmxvZ2ljYWxX
aWR0aCgpIDogc3R5bGVUb1VzZS5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgLy8gaHR0cHM6Ly93d3cu
dzMub3JnL1RSL2Nzcy1zaXppbmctNC8jYXNwZWN0LXJhdGlvLW1pbmltdW0KICAgICBpZiAobWlu
aW11bVNpemVUeXBlID09IE1pbmltdW1TaXplSXNBdXRvbWF0aWNDb250ZW50QmFzZWQ6Olllcykg
ewpAQCAtMjkzOSw3ICsyOTM5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5d29yZD4gdm9pZCBS
ZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocygKICAgICAgICAg
ICAgIC8vIEZvciByZXBsYWNlZCBlbGVtZW50cyB3aXRoIGFuIGludHJpbnNpYyBhc3BlY3QgcmF0
aW8gKGUuZy4gPGltZz4pIGFuZCBhCiAgICAgICAgICAgICAvLyBzcGVjaWZpZWQgYmxvY2sgc2l6
ZSwgY29tcHV0ZSB0aGUgdHJhbnNmZXJyZWQgbWluL21heC1jb250ZW50IGlubGluZSBzaXplCiAg
ICAgICAgICAgICAvLyB0aHJvdWdoIHRoZSBpbnRyaW5zaWMgcmF0aW8gcmF0aGVyIHRoYW4gdXNp
bmcgdGhlIHJhdyBuYXR1cmFsIHdpZHRoLgotICAgICAgICAgICAgYXV0byBwcmVmZXJyZWRSYXRp
byA9IHJlbmRlclJlcGxhY2VkLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91
YmxlKCk7CisgICAgICAgICAgICBhdXRvIHByZWZlcnJlZFJhdGlvID0gcmVuZGVyUmVwbGFjZWQt
PnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICAg
ICAgICAgIGlmIChwcmVmZXJyZWRSYXRpbyAmJiBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc1Nw
ZWNpZmllZCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IGNvbXB1
dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbFRvcCgpKTsKICAgICAgICAg
ICAgICAgICBhdXRvIGNvbnRlbnRCbG9ja1NpemUgPSBzdGQ6Om1heCgwX2x1LCBjb21wdXRlZFZh
bHVlcy5leHRlbnQgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsKQEAgLTM2NjMs
OCArMzY2Myw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFNpemVUeXBlPiBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVNpemluZ0tlCiAgICAgICAgIC8vIElmIHRoYXQg
aGFwcGVucywgdGhpcyBjb2RlIHdpbGwgaGF2ZSB0byBjaGFuZ2UuCiAgICAgICAgIGlmIChDaGVj
a2VkUHRyIHJlbmRlckltYWdlID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckltYWdlPih0aGlzKSkg
ewogICAgICAgICAgICAgYXV0byBjb21wdXRlZEZpeGVkTG9naWNhbFdpZHRoID0gc3R5bGUoKS5s
b2dpY2FsV2lkdGgoKS50cnlGaXhlZCgpOworICAgICAgICAgICAgYXV0byBwcmVmZXJyZWRSYXRp
byA9IHJlbmRlckltYWdlLT5wcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOwogICAgICAgICAg
ICAgaWYgKGNvbXB1dGVkRml4ZWRMb2dpY2FsV2lkdGggJiYgIXN0eWxlKCkuYXNwZWN0UmF0aW8o
KS5oYXNSYXRpbygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBwcmVmZXJyZWRSYXRpbyA9IHJl
bmRlckltYWdlLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpOwogICAgICAgICAgICAgICAgIHJldHVy
biByZXNvbHZlSGVpZ2h0Rm9yUmF0aW8oCiAgICAgICAgICAgICAgICAgICAgIGJvcmRlckFuZFBh
ZGRpbmdMb2dpY2FsV2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQW5kUGFkZGlu
Z0xvZ2ljYWxIZWlnaHQoKSwKQEAgLTM2NzksOCArMzY3OSw4IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFNpemVUeXBlPiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVNp
emluZ0tlCiAgICAgICAgICAgICAgICAgLy8gdGhlIGFzcGVjdCByYXRpby4KICAgICAgICAgICAg
ICAgICBpZiAoIWlzRmxleEl0ZW0oKSB8fCBkb3duY2FzdDxSZW5kZXJGbGV4aWJsZUJveD4ocGFy
ZW50KCkpLT5pc0hvcml6b250YWxGbG93KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gb3ZlcnJpZGluZ1dpZHRoID0gb3ZlcnJpZGlu
Z0JvcmRlckJveExvZ2ljYWxXaWR0aCgpOyBvdmVycmlkaW5nV2lkdGggJiYgIXJlbmRlckltYWdl
LT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc29sdmVIZWlnaHRGb3JSYXRpbyhib3JkZXJBbmRQYWRkaW5nTG9naWNhbFdpZHRo
KCksIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCksIGNvbnRlbnRCb3hMb2dpY2FsV2lk
dGgoKm92ZXJyaWRpbmdXaWR0aCksIHJlbmRlckltYWdlLT5wcmVmZXJyZWRBc3BlY3RSYXRpbygp
LnRyYW5zcG9zZWRTaXplKCkuYXNwZWN0UmF0aW8oKSwgQm94U2l6aW5nOjpDb250ZW50Qm94KTsK
KyAgICAgICAgICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nV2lkdGggPSBvdmVycmlkaW5nQm9y
ZGVyQm94TG9naWNhbFdpZHRoKCk7IG92ZXJyaWRpbmdXaWR0aCAmJiAhcHJlZmVycmVkUmF0aW8u
aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZUhlaWdodEZvclJh
dGlvKGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgYm9yZGVyQW5kUGFkZGluZ0xvZ2lj
YWxIZWlnaHQoKSwgY29udGVudEJveExvZ2ljYWxXaWR0aCgqb3ZlcnJpZGluZ1dpZHRoKSwgcHJl
ZmVycmVkUmF0aW8udHJhbnNwb3NlZFNpemUoKS5hc3BlY3RSYXRpbygpLCBCb3hTaXppbmc6OkNv
bnRlbnRCb3gpOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9Owog
ICAgICAgICAgICAgaWYgKGF1dG8gaGVpZ2h0ID0gaGVpZ2h0RnJvbUNyb3NzQXhpc092ZXJyaWRl
QW5kQXNwZWN0UmF0aW8oKSkKQEAgLTUyNTksMjEgKzUyNTksMjYgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8oKSBjb25zdAogfQogCiAK
LXN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBSZW5kZXJCb3g6OmFzcGVjdFJhdGlvVmFsdWUoKSBjb25z
dAorc3RkOjpvcHRpb25hbDxkb3VibGU+IFJlbmRlckJveDo6cHJlZmVycmVkQXNwZWN0UmF0aW8o
KSBjb25zdAogewotICAgIGlmIChDaGVja2VkUHRyIHJlcGxhY2VkRWxlbWVudCA9IGR5bmFtaWNE
b3duY2FzdDxSZW5kZXJSZXBsYWNlZD4odGhpcykpCi0gICAgICAgIHJldHVybiByZXBsYWNlZEVs
ZW1lbnQtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICBp
ZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmhhc1JhdGlvKCkpCiAgICAgICAgIHJldHVybiBzdHls
ZSgpLmxvZ2ljYWxBc3BlY3RSYXRpbygpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKK0Zsb2F0U2l6ZSBSZW5kZXJCb3g6OnByZWZlcnJl
ZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3QKK3sKKyAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRp
bygpLmhhc1JhdGlvKCkpCisgICAgICAgIHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lv
bihzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0
UmF0aW9Mb2dpY2FsSGVpZ2h0KCkudmFsdWUpOworICAgIHJldHVybiB7IH07Cit9CisKIHN0ZDo6
cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dp
Y2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIExheW91dFVuaXQgdHJhbnNm
ZXJyZWRNaW5TaXplID0gTGF5b3V0VW5pdCgpOwotICAgIExheW91dFVuaXQgdHJhbnNmZXJyZWRN
YXhTaXplID0gTGF5b3V0VW5pdDo6bWF4KCk7Ci0gICAgYXV0byBhc3BlY3RSYXRpbyA9IGFzcGVj
dFJhdGlvVmFsdWUoKTsKKyAgICBhdXRvIHRyYW5zZmVycmVkTWluU2l6ZSA9IExheW91dFVuaXQg
eyB9OworICAgIGF1dG8gdHJhbnNmZXJyZWRNYXhTaXplID0gTGF5b3V0VW5pdDo6bWF4KCk7Cisg
ICAgYXV0byBhc3BlY3RSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CiAgICAgaWYgKCFh
c3BlY3RSYXRpbykKICAgICAgICAgcmV0dXJuIHsgdHJhbnNmZXJyZWRNaW5TaXplLCB0cmFuc2Zl
cnJlZE1heFNpemUgfTsKIApAQCAtNTI5Miw5ICs1Mjk3LDkgQEAgc3RkOjpwYWlyPExheW91dFVu
aXQsIExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21B
c3BlY3QKIAogc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29t
cHV0ZU1pbk1heExvZ2ljYWxIZWlnaHRGcm9tQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIExh
eW91dFVuaXQgdHJhbnNmZXJyZWRNaW5TaXplID0gTGF5b3V0VW5pdCgpOwotICAgIExheW91dFVu
aXQgdHJhbnNmZXJyZWRNYXhTaXplID0gTGF5b3V0VW5pdDo6bWF4KCk7Ci0gICAgYXV0byBhc3Bl
Y3RSYXRpbyA9IGFzcGVjdFJhdGlvVmFsdWUoKTsKKyAgICBhdXRvIHRyYW5zZmVycmVkTWluU2l6
ZSA9IExheW91dFVuaXQgeyB9OworICAgIGF1dG8gdHJhbnNmZXJyZWRNYXhTaXplID0gTGF5b3V0
VW5pdDo6bWF4KCk7CisgICAgYXV0byBhc3BlY3RSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlv
KCk7CiAgICAgaWYgKCFhc3BlY3RSYXRpbykKICAgICAgICAgcmV0dXJuIHsgdHJhbnNmZXJyZWRN
aW5TaXplLCB0cmFuc2ZlcnJlZE1heFNpemUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCmluZGV4IGMyYzhlZjlmNzdlMC4uMjM5YzE3Y2M4MzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCkBAIC02MzcsNiArNjM3LDkgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1cm4gaXNCbG9j
a0xldmVsUmVwbGFjZWRPckF0b21pY0lubGluZSgpICYmIChpc0ltYWdlKCkgfHwgaXNSZW5kZXJW
aWRlbygpIHx8IGlzUmVuZGVySFRNTENhbnZhcygpIHx8IGlzUmVuZGVyVmlld1RyYW5zaXRpb25D
YXB0dXJlKCkpOyB9CiAKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBwcmVmZXJy
ZWRBc3BlY3RSYXRpbygpIGNvbnN0OworICAgIHZpcnR1YWwgRmxvYXRTaXplIHByZWZlcnJlZEFz
cGVjdFJhdGlvQXNTaXplKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBSZW5kZXJCb3goVHlw
ZSwgRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxUeXBlRmxhZz4gPSB7IH0sIFR5
cGVTcGVjaWZpY0ZsYWdzID0geyB9KTsKICAgICBSZW5kZXJCb3goVHlwZSwgRG9jdW1lbnQmLCBS
ZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8VHlwZUZsYWc+ID0geyB9LCBUeXBlU3BlY2lmaWNGbGFn
cyA9IHsgfSk7CkBAIC02ODIsOCArNjg1LDYgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgc2tpcENv
bnRhaW5pbmdCbG9ja0ZvclBlcmNlbnRIZWlnaHRDYWxjdWxhdGlvbihjb25zdCBSZW5kZXJCb3gm
IGNvbnRhaW5pbmdCbG9jaywgYm9vbCBpc1BlcnBlbmRpY3VsYXJXcml0aW5nTW9kZSkgY29uc3Q7
CiAKICAgICB2b2lkIGluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50SWZOZWVkZWQo
Y29uc3QgSW50U2l6ZSYpOwotCi0gICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGFzcGVjdFJhdGlv
VmFsdWUoKSBjb25zdDsKICAgICBib29sIE5PREVMRVRFIHNob3VsZElnbm9yZUFzcGVjdFJhdGlv
KCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRDb21wdXRlTG9naWNhbFdpZHRoRnJvbUFzcGVjdFJh
dGlvKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Jlc29sdmVhYmxlU3RyZXRjaFNpemUoY29uc3QgYXV0
byYgc2l6ZSkgY29uc3QgeyByZXR1cm4gc2l6ZS5pc1N0cmV0Y2goKSAmJiBjb250YWluaW5nQmxv
Y2tIYXNEZWZpbml0ZUJsb2NrU2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCAxZmVkOTZkMzg2ODYuLmZiY2M2ZTI3ZTdiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBA
IC04NzksNyArODc5LDcgQEAgc3RhdGljIGJvb2wgaXNTVkdSb290V2l0aEludHJpbnNpY0FzcGVj
dFJhdGlvKGNvbnN0IFJlbmRlckJveCYgZmxleEl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAvLyBJdCdzIGNvbW1vbiBmb3Igc29tZSByZXBsYWNlZCBlbGVtZW50cywgc3VjaCBhcyBT
VkdzLCB0byBoYXZlIGludHJpbnNpYyBhc3BlY3QgcmF0aW9zIGJ1dCBubyBpbnRyaW5zaWMgc2l6
ZXMuCiAgICAgLy8gVGhhdCdzIHdoeSBpdCBpc24ndCBlbm91Z2gganVzdCB0byBjaGVjayBmb3Ig
aW50cmluc2ljIHNpemVzIGluIHRob3NlIGNhc2VzLgotICAgIHJldHVybiBkb3duY2FzdDxSZW5k
ZXJSZXBsYWNlZD4oZmxleEl0ZW0pLnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9E
b3VibGUoKSA+IDA7CisgICAgcmV0dXJuIGZsZXhJdGVtLnByZWZlcnJlZEFzcGVjdFJhdGlvQXNT
aXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKSA+IDA7CiB9OwogCiBzdGF0aWMgYm9vbCBmbGV4SXRl
bUhhc0FzcGVjdFJhdGlvKGNvbnN0IFJlbmRlckJveCYgZmxleEl0ZW0pCkBAIC0xMjYyLDExICsx
MjYyLDExIEBAIGRvdWJsZSBSZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkQXNwZWN0UmF0aW9G
b3JGbGV4SXRlbShjb25zdCBSZW5kZXJCb3gmIGZsZXhJCiAgICAgYXV0byBmbGV4SXRlbUFzcGVj
dFJhdGlvID0gWyZdIHsKICAgICAgICAgYXV0byBmbGV4SXRlbUludHJpbnNpY1NpemUgPSBMYXlv
dXRTaXplIHsgZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGZsZXhJdGVtLmludHJp
bnNpY0xvZ2ljYWxIZWlnaHQoKSB9OwogICAgICAgICBpZiAoZmxleEl0ZW0uaXNSZW5kZXJPckxl
Z2FjeVJlbmRlclNWR1Jvb3QoKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJS
ZXBsYWNlZD4oZmxleEl0ZW0pLnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3Vi
bGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmbGV4SXRlbS5wcmVmZXJyZWRBc3BlY3RSYXRpb0Fz
U2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCk7CiAgICAgICAgIGlmIChmbGV4SXRlbS5zdHlsZSgp
LmFzcGVjdFJhdGlvKCkuaXNSYXRpbygpIHx8IChmbGV4SXRlbS5zdHlsZSgpLmFzcGVjdFJhdGlv
KCkuaXNBdXRvQW5kUmF0aW8oKSAmJiBmbGV4SXRlbUludHJpbnNpY1NpemUuaXNFbXB0eSgpKSkK
ICAgICAgICAgICAgIHJldHVybiBmbGV4SXRlbS5zdHlsZSgpLmxvZ2ljYWxBc3BlY3RSYXRpbygp
OwotICAgICAgICBpZiAoYXV0byogcmVwbGFjZWRFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PFJl
bmRlclJlcGxhY2VkPihmbGV4SXRlbSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZWRFbGVt
ZW50LT5wcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CisgICAgICAg
IGlmIChpczxSZW5kZXJSZXBsYWNlZD4oZmxleEl0ZW0pKQorICAgICAgICAgICAgcmV0dXJuIGZs
ZXhJdGVtLnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsK
IAogICAgICAgICBBU1NFUlQoZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbEhlaWdodCgpKTsKICAg
ICAgICAgcmV0dXJuIGZsZXhJdGVtLmludHJpbnNpY0xvZ2ljYWxXaWR0aCgpLnRvRG91YmxlKCkg
LyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkudG9Eb3VibGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDg3MGQwZDdmZGUxYS4uMzdhNmVk
MmFlOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTkz
OCwxMyArOTM4LDEzIEBAIHZvaWQgUmVuZGVySW1hZ2U6OmxheW91dCgpCiAgICAgfQogfQogCi1G
bG9hdFNpemUgUmVuZGVySW1hZ2U6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKK0Zsb2F0
U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAogewog
ICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBm
cm9tIGNvbnRlbnQsIGJ1dCB0aGUKICAgICAvLyBhc3BlY3QgcmF0aW8gZnJvbSB0aGUgQ1NTIGFz
cGVjdC1yYXRpbyBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFpbGFibGUgdmlhIHRoZQogICAgIC8vIGJh
c2UgY2xhc3MgKHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1hZ2UgZGF0YSkuCiAgICAgaWYgKHNob3Vs
ZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCkpCi0gICAgICAgIHJldHVybiBSZW5k
ZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgcmV0dXJuIFJlbmRl
clJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOwogCiAgICAgLy8gRG9uJ3Qg
Y29tcHV0ZSBhbiBpbnRyaW5zaWMgcmF0aW8gdG8gcHJlc2VydmUgaGlzdG9yaWNhbCBXZWJLaXQg
YmVoYXZpb3IgaWYgd2UncmUgcGFpbnRpbmcgYWx0IHRleHQgYW5kL29yIGEgYnJva2VuIGltYWdl
LgogICAgIGlmIChzaG91bGREaXNwbGF5QnJva2VuSW1hZ2VJY29uKCkpIHsKQEAgLTk1NCw3ICs5
NTQsNyBAQCBGbG9hdFNpemUgUmVuZGVySW1hZ2U6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29u
c3QKICAgICB9CiAKICAgICBpZiAoQ2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRkZWRTVkdSb290
KCkpIHsKLSAgICAgICAgYXV0byByYXRpbyA9IHN2Z1Jvb3QtPnByZWZlcnJlZEFzcGVjdFJhdGlv
KCk7CisgICAgICAgIGF1dG8gcmF0aW8gPSBzdmdSb290LT5wcmVmZXJyZWRBc3BlY3RSYXRpb0Fz
U2l6ZSgpOwogICAgICAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgIXJhdGlv
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJhdGlvID0gcmF0aW8udHJhbnNwb3NlZFNpemUoKTsK
IApAQCAtOTY0LDcgKzk2NCw3IEBAIEZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNw
ZWN0UmF0aW8oKSBjb25zdAogICAgICAgICByZXR1cm4gcmF0aW87CiAgICAgfQogCi0gICAgcmV0
dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOworICAgIHJldHVybiBS
ZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKIH0KIAogYm9vbCBS
ZW5kZXJJbWFnZTo6c2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDgzZDVlZDQ3NWNjNy4uZDQ2MDEx
MWNjNDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtODQsNyAr
ODQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc011bHRpUmVwcmVzZW50YXRpb25IRUlDKCkgY29u
c3Q7CiAjZW5kaWYKIAotICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0
IGZpbmFsOworICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0
IGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVySW1hZ2UoVHlwZSwgRWxlbWVudCYsIFJl
bmRlclN0eWxlJiYsIE9wdGlvblNldDxSZXBsYWNlZEZsYWc+LCBTdHlsZTo6SW1hZ2UqID0gbnVs
bHB0ciwgY29uc3QgZmxvYXQgaW1hZ2VEZXZpY2VQaXhlbFJhdGlvID0gMS4wZik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCA0YTYxZDkxOWYxNWIu
LmExYmYzNzY1NWMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwCkBAIC01MjAsMTAgKzUyMCwxMCBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRl
SW50cmluc2ljU2l6ZXNDb25zdHJhaW5lZEJ5VHJhbnNmZXJyZWRNaW5NYXhTaXplcyhGbAogewog
ICAgIGlmIChzaG91bGRBcHBseVNpemVPcklubGluZVNpemVDb250YWlubWVudCgpKSB7CiAgICAg
ICAgIGludHJpbnNpY1NpemUgPSBGbG9hdFNpemUgeyBpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwg
aW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07Ci0gICAgICAgIGludHJpbnNpY1JhdGlvID0gUmVu
ZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisgICAgICAgIGludHJpbnNpY1Jh
dGlvID0gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaW50cmluc2ljU2l6ZSA9IGNvbXB1dGVJbnRyaW5zaWNTaXplRm9y
UmVuZGVyZXIoKnRoaXMpOwotICAgICAgICBpbnRyaW5zaWNSYXRpbyA9IHByZWZlcnJlZEFzcGVj
dFJhdGlvKCk7CisgICAgICAgIGludHJpbnNpY1JhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW9B
c1NpemUoKTsKIAogICAgICAgICBhdXRvIHNpemVUb0NhY2hlID0gaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IGludHJpbnNpY1NpemUgOiBpbnRyaW5zaWNTaXplLnRyYW5zcG9zZWRTaXplKCk7
CiAgICAgICAgIGlmIChlbWJlZGRlZFNWR1Jvb3QoKSAmJiBpc1JlbmRlcldpZGdldCgpKSB7CkBA
IC02MDQsMTAgKzYwNCwxNSBAQCBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBsYWNlZENv
bnRlbnRSZWN0KGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAgICAgcmV0dXJuIGZp
bmFsUmVjdDsKIH0KIAotRmxvYXRTaXplIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RS
YXRpbygpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gUmVuZGVyUmVwbGFjZWQ6OnByZWZl
cnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAgICBhdXRvIGludHJpbnNpY1NpemUgPSBGbG9h
dFNpemUoaW50cmluc2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSk7
Ci0gICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlvOworICAgIHJldHVybiBwcmVmZXJy
ZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCk7Cit9CisKK0Zsb2F0U2l6
ZSBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAorewor
ICAgIGF1dG8gaW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZSB7IGludHJpbnNpY0xvZ2ljYWxXaWR0
aCgpLCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKKyAgICBhdXRvIHByZWZlcnJlZEFzcGVj
dFJhdGlvID0gRmxvYXRTaXplIHsgfTsKIAogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCku
aGFzUmF0aW8oKSkgewogICAgICAgICBwcmVmZXJyZWRBc3BlY3RSYXRpbyA9IEZsb2F0U2l6ZTo6
bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwg
c3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CkBAIC02NjUsNyArNjcw
LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUFzcGVjdFJhdGlvQWRqdXN0ZWRJbnRy
aW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwotICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RSYXRpbyA9
IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKKyAgICBhdXRvIGNv
bXB1dGVkQXNwZWN0UmF0aW8gPSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJh
dGlvRG91YmxlKCk7CiAgICAgYXV0byBjb21wdXRlZEludHJpbnNpY0xvZ2ljYWxXaWR0aCA9IG1p
bkxvZ2ljYWxXaWR0aDsKIAogICAgIGlmIChhdXRvIGZpeGVkTG9naWNhbEhlaWdodCA9IHN0eWxl
LmxvZ2ljYWxIZWlnaHQoKS50cnlGaXhlZCgpKQpAQCAtODQyLDcgKzg0Nyw3IEBAIHZvaWQgUmVu
ZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdpZHRocyhMYXlvdXRV
bml0JiBtaW5Mb2dpY2FsCiB7CiAgICAgaWYgKGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgJiYg
IXN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpKSB7CiAgICAgICAgIGlmIChhdXRvIGZp
eGVkSGVpZ2h0ID0gc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkudHJ5Rml4ZWQoKSkgewotICAgICAg
ICAgICAgYXV0byBoZWlnaHREZXJpdmVkV2lkdGggPSBMYXlvdXRVbml0IHsgZml4ZWRIZWlnaHQt
PnJlc29sdmVab29tKHN0eWxlKCkudXNlZFpvb21Gb3JMZW5ndGgoKSkgKiBwcmVmZXJyZWRBc3Bl
Y3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCkgfTsKKyAgICAgICAgICAgIGF1dG8gaGVpZ2h0
RGVyaXZlZFdpZHRoID0gTGF5b3V0VW5pdCB7IGZpeGVkSGVpZ2h0LT5yZXNvbHZlWm9vbShzdHls
ZSgpLnVzZWRab29tRm9yTGVuZ3RoKCkpICogcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5h
c3BlY3RSYXRpb0RvdWJsZSgpIH07CiAgICAgICAgICAgICBtaW5Mb2dpY2FsV2lkdGggPSBoZWln
aHREZXJpdmVkV2lkdGg7CiAgICAgICAgICAgICBtYXhMb2dpY2FsV2lkdGggPSBoZWlnaHREZXJp
dmVkV2lkdGg7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5oCmluZGV4IGViN2ZiZjQwZjY3OS4uNmVmYzRiYzRjOGZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtNTksNyArNTksOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCByZXBsYWNlZE1heExvZ2ljYWxIZWlnaHRDb21wdXRlc0FzTm9uZSgp
IGNvbnN0OwogCiAgICAgdmlydHVhbCBSZW5kZXJSZXBsYWNlZCogZW1iZWRkZWRTVkdSb290KCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgRmxvYXRTaXplIHByZWZlcnJl
ZEFzcGVjdFJhdGlvKCkgY29uc3Q7CisKKyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcHJlZmVy
cmVkQXNwZWN0UmF0aW8oKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFNpemUgcHJlZmVycmVk
QXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIFJl
bmRlclJlcGxhY2VkKFR5cGUsIEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBPcHRpb25TZXQ8UmVw
bGFjZWRGbGFnPiA9IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwCmluZGV4IGJlNTg3MzViNjBmNS4uZDlmZjVhMWQ3YzE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtNDk4LDE5ICs0OTgsMTkgQEAgUmVuZGVyUmVw
bGFjZWQqIFJlbmRlcldpZGdldDo6ZW1iZWRkZWRTVkdSb290KCkgY29uc3QKICAgICByZXR1cm4g
ZnJhbWVWaWV3ID8gZnJhbWVWaWV3LT5lbWJlZGRlZFNWR1Jvb3QoKSA6IG51bGxwdHI7CiB9CiAK
LUZsb2F0U2l6ZSBSZW5kZXJXaWRnZXQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKK0Zs
b2F0U2l6ZSBSZW5kZXJXaWRnZXQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3QK
IHsKICAgICAvLyBTaXplIGNvbnRhaW5tZW50IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lv
bnMgZnJvbSBjb250ZW50LCBidXQgdGhlCiAgICAgLy8gYXNwZWN0IHJhdGlvIGZyb20gdGhlIENT
UyBhc3BlY3QtcmF0aW8gcHJvcGVydHkgaXMgc3RpbGwgYXZhaWxhYmxlIHZpYSB0aGUKICAgICAv
LyBiYXNlIGNsYXNzICh3aGljaCBkb2Vzbid0IHF1ZXJ5IGltYWdlIGRhdGEpLgogICAgIGlmIChz
aG91bGRBcHBseVNpemVPcklubGluZVNpemVDb250YWlubWVudCgpKQotICAgICAgICByZXR1cm4g
UmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CisgICAgICAgIHJldHVybiBS
ZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKIAogICAgIENoZWNr
ZWRQdHIgc3ZnUm9vdCA9IGVtYmVkZGVkU1ZHUm9vdCgpOwogICAgIGlmICghc3ZnUm9vdCkKLSAg
ICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOworICAg
ICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7
CiAKLSAgICBhdXRvIHJhdGlvID0gc3ZnUm9vdC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAg
ICBhdXRvIHJhdGlvID0gc3ZnUm9vdC0+cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKICAg
ICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgJiYgIXJhdGlvLmlzRW1wdHkoKSkKICAg
ICAgICAgcmF0aW8gPSByYXRpby50cmFuc3Bvc2VkU2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmgKaW5kZXggZTkxMTdkOTEyN2JhLi43NmIzZDhmMTdhZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKQEAgLTkyLDcgKzkyLDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocygpIGNv
bnN0IGZpbmFsOwogICAgIFJlbmRlclJlcGxhY2VkKiBlbWJlZGRlZFNWR1Jvb3QoKSBjb25zdCBm
aW5hbDsKLSAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsK
KyAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdCBmaW5hbDsK
IAogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoSGlnaGxpZ2h0U3RhdGUpIGZpbmFsOwogICAg
IHZvaWQgc2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCA3NjY3YzdiMDIyMDcuLmY3
NWFhYzdmNGM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuY3BwCkBAIC05MSw3ICs5MSw3IEBAIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyKiBS
ZW5kZXJTVkdSb290Ojp2aWV3cG9ydENvbnRhaW5lcigpIGNvbnN0CiAKIGJvb2wgUmVuZGVyU1ZH
Um9vdDo6aGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIHJldHVybiBwcmVm
ZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlvRG91YmxlKCk7CisgICAgcmV0dXJuIHByZWZl
cnJlZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKIH0KIAogRmxvYXRT
aXplIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKQEAgLTEwOCwx
MyArMTA4LDEzIEBAIEZsb2F0U2l6ZSBSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGludHJpbnNpY1NpemU7CiB9CiAKLUZsb2F0U2l6ZSBSZW5k
ZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CitGbG9hdFNpemUgUmVuZGVy
U1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAogewogICAgIC8vIFNp
emUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRyaW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRl
bnQsIGJ1dCB0aGUKICAgICAvLyBhc3BlY3QgcmF0aW8gZnJvbSB0aGUgQ1NTIGFzcGVjdC1yYXRp
byBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFpbGFibGUgdmlhIHRoZQogICAgIC8vIGJhc2UgY2xhc3Mg
KHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1hZ2UgZGF0YSkuCiAgICAgaWYgKHNob3VsZEFwcGx5U2l6
ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNl
ZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2Vk
OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOwogCiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0
UmF0aW8oKS5pc1JhdGlvKCkpCiAgICAgICAgIHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNp
c2lvbihzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNw
ZWN0UmF0aW9Mb2dpY2FsSGVpZ2h0KCkudmFsdWUpOwpAQCAtMTM5LDcgKzEzOSw2IEBAIEZsb2F0
U2l6ZSBSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiAgICAgaWYg
KHN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygpKQogICAgICAgICByZXR1cm4g
RmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0
aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsKICAg
ICByZXR1cm4geyB9OwotCiB9CiAKIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aXNFbWJlZGRlZFRocm91
Z2hTVkdJbWFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5oCmluZGV4IGY5Yjk4NjBmNDEwMy4uMDZlMGFjYzJkZTE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtNDYsNyArNDYsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0VtYmVkZGVkVGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0RvY3Vt
ZW50KCkgY29uc3Q7CiAKICAgICBGbG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25z
dDsKLSAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKKyAg
ICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIGhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAKICAgICBib29s
IGlzTGF5b3V0U2l6ZUNoYW5nZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTGF5b3V0U2l6ZUNoYW5n
ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xl
Z2FjeVJlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdh
Y3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggNzZjODRmNTFkN2U4Li5lZjEyZWI2MWI3
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2Fj
eVJlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVn
YWN5L0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFNWR1NWR0VsZW1l
bnQmIExlZ2FjeVJlbmRlclNWR1Jvb3Q6OnN2Z1NWR0VsZW1lbnQoKSBjb25zdAogCiBib29sIExl
Z2FjeVJlbmRlclNWR1Jvb3Q6Omhhc0ludHJpbnNpY0FzcGVjdFJhdGlvKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgpOworICAg
IHJldHVybiBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCk7
CiB9CiAKIEZsb2F0U2l6ZSBMZWdhY3lSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljU2l6
ZSgpIGNvbnN0CkBAIC05NywxMyArOTcsMTMgQEAgRmxvYXRTaXplIExlZ2FjeVJlbmRlclNWR1Jv
b3Q6OmNvbXB1dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKICAgICByZXR1cm4gaW50cmluc2ljU2l6
ZTsKIH0KIAotRmxvYXRTaXplIExlZ2FjeVJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJh
dGlvKCkgY29uc3QKK0Zsb2F0U2l6ZSBMZWdhY3lSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3Bl
Y3RSYXRpb0FzU2l6ZSgpIGNvbnN0CiB7CiAgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVz
c2VzIGludHJpbnNpYyBkaW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0IHRoZQogICAgIC8vIGFz
cGVjdCByYXRpbyBmcm9tIHRoZSBDU1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2
YWlsYWJsZSB2aWEgdGhlCiAgICAgLy8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBp
bWFnZSBkYXRhKS4KICAgICBpZiAoc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1l
bnQoKSkKLSAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRp
bygpOworICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlv
QXNTaXplKCk7CiAKICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSkKICAg
ICAgICAgcmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0
aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQo
KS52YWx1ZSk7CkBAIC0xMjgsNyArMTI4LDYgQEAgRmxvYXRTaXplIExlZ2FjeVJlbmRlclNWR1Jv
b3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKICAgICAgICAgcmV0dXJuICppbnRyaW5z
aWNSYXRpb1ZhbHVlOwogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaXNBdXRvQW5kUmF0
aW8oKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCku
YXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2lj
YWxIZWlnaHQoKS52YWx1ZSk7Ci0KICAgICByZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW87CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2Fj
eVJlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xl
Z2FjeVJlbmRlclNWR1Jvb3QuaAppbmRleCBlMmMxZmQ5ZTY0MjUuLjQ2YzEyMGRkYTQ2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVy
U1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvbGVnYWN5L0xlZ2Fj
eVJlbmRlclNWR1Jvb3QuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Vt
YmVkZGVkVGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0RvY3VtZW50KCkgY29uc3Q7CiAKICAgICBG
bG9hdFNpemUgY29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdDsKLSAgICBGbG9hdFNpemUgcHJl
ZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKKyAgICBGbG9hdFNpemUgcHJlZmVycmVk
QXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGhhc0ludHJpbnNpY0Fz
cGVjdFJhdGlvKCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGlzTGF5b3V0U2l6ZUNoYW5nZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQ7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479582</attachid>
            <date>2026-05-10 17:50:45 -0700</date>
            <delta_ts>2026-05-10 19:07:15 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-314488-20260510175044.patch</filename>
            <type>text/plain</type>
            <size>25364</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAxYTFkZDRjNTcyZWM4NzMwZDMxZmMxOTkyMTExNTc2MTgzODQ1ZTk0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFN1biwgMTAgTWF5IDIwMjYgMTc6NDE6MzcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBDbGVhbiB1
cCBhc3BlY3QgcmF0aW8gQVBJOiBtb3ZlIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgdG8KIFJlbmRl
ckJveCwgcmVuYW1lIEZsb2F0U2l6ZSB2YXJpYW50IHRvIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNT
aXplKCkKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQ0ODgKClJl
dmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKIlByZWZlcnJlZCBhc3BlY3QgcmF0aW8iIGlzIGEg
Q1NTIFNpemluZyA0IHNwZWMgdGVybSB0aGF0IGFwcGxpZXMgdG8gYWxsIGJveGVzLApub3QganVz
dCByZXBsYWNlZCBlbGVtZW50cy4gUHJldmlvdXNseSwgdGhlIGRvdWJsZSBBUEkgKGFzcGVjdFJh
dGlvVmFsdWUpIGxpdmVkCm9uIFJlbmRlckJveCB3aGlsZSB0aGUgRmxvYXRTaXplIEFQSSAocHJl
ZmVycmVkQXNwZWN0UmF0aW8pIGxpdmVkIG9uClJlbmRlclJlcGxhY2VkLCBtYWtpbmcgaXQgdW5j
bGVhciB3aGljaCB0byBjYWxsIGFuZCB3aGVuLgoKTm93IGJvdGggcHJlZmVycmVkQXNwZWN0UmF0
aW8oKSAocmV0dXJucyBvcHRpb25hbDxkb3VibGU+KSBhbmQKcHJlZmVycmVkQXNwZWN0UmF0aW9B
c1NpemUoKSAocmV0dXJucyBGbG9hdFNpemUpIGFyZSB2aXJ0dWFsIG9uIFJlbmRlckJveC4KUmVw
bGFjZWQgZWxlbWVudHMgb3ZlcnJpZGUgYm90aCB0byBhY2NvdW50IGZvciBpbnRyaW5zaWMgcmF0
aW9zIGFuZCB0aGUgImF1dG8iCmtleXdvcmQgaW4gYXNwZWN0LXJhdGlvLgoKVGhpcyBlbGltaW5h
dGVzIHRoZSBvbGQgYXNwZWN0UmF0aW9WYWx1ZSgpIGZ1bmN0aW9uIGFuZCBzaW1wbGlmaWVzIGNh
bGxlcnMgdGhhdAp3ZXJlIGRvaW5nIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9E
b3VibGUoKSAtIHRoZXkgbm93IGp1c3QgY2FsbApwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGRpcmVj
dGx5LgoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKFdlYkNvcmU6
OlJlbmRlckJveDo6Y29uc3RyYWluTG9naWNhbE1pbk1heFNpemVzQnlBc3BlY3RSYXRpbyBjb25z
dCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNLZXl3b3JkTG9naWNhbFdp
ZHRocyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVTaXppbmdLZXl3b3JkTG9n
aWNhbENvbnRlbnRIZWlnaHRVc2luZ0dlbmVyaWMgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyQm94
OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJCb3g6OnByZWZl
cnJlZEFzcGVjdFJhdGlvQXNTaXplIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5k
ZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvIGNvbnN0KToK
KFdlYkNvcmU6OlJlbmRlckJveDo6YXNwZWN0UmF0aW9WYWx1ZSBjb25zdCk6IERlbGV0ZWQuCiog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oOgoqIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CihXZWJDb3JlOjppc1NWR1Jvb3RXaXRoSW50
cmluc2ljQXNwZWN0UmF0aW8pOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnByZWZlcnJl
ZEFzcGVjdFJhdGlvRm9yRmxleEl0ZW0gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHA6CihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0
UmF0aW9Bc1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnByZWZlcnJlZEFzcGVj
dFJhdGlvIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgoo
V2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVk
QnlUcmFuc2ZlcnJlZE1pbk1heFNpemVzIGNvbnN0KToKKFdlYkNvcmU6OlJlbmRlclJlcGxhY2Vk
OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6
cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUgY29uc3QpOgooV2ViQ29yZTo6UmVuZGVyUmVwbGFj
ZWQ6OmNvbXB1dGVBc3BlY3RSYXRpb0FkanVzdGVkSW50cmluc2ljTG9naWNhbFdpZHRocyBjb25z
dCk6CihXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dp
Y2FsV2lkdGhzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKFdlYkNv
cmU6OlJlbmRlcldpZGdldDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUgY29uc3QpOgooV2Vi
Q29yZTo6UmVuZGVyV2lkZ2V0OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQu
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oOgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CihXZWJDb3JlOjpSZW5kZXJTVkdS
b290OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJTVkdS
b290OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSBjb25zdCk6CihXZWJDb3JlOjpSZW5kZXJT
VkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290Lmg6CiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHA6CihXZWJDb3JlOjpMZWdh
Y3lSZW5kZXJTVkdSb290OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbyBjb25zdCk6CihXZWJDb3Jl
OjpMZWdhY3lSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSBjb25zdCk6
CihXZWJDb3JlOjpMZWdhY3lSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpbyBjb25z
dCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5
UmVuZGVyU1ZHUm9vdC5oOgotLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwICAgICAgICB8IDMzICsrKysrKysrKysrLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaCAgICAgICAgICB8ICA1ICstLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmNwcCAgIHwgIDggKystLS0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAgICAgICB8ICA4ICsrLS0tCiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuaCAgICAgICAgfCAgMiArLQogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcCAgIHwgMTkgKysrKysrKy0tLS0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oICAgICB8ICA0ICsrLQogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgICAgIHwgIDggKystLS0KIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCAgICAgICB8ICAyICstCiAuLi4vV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwICAgfCAgNyArKy0tCiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCAgfCAgMiArLQogLi4uL3N2Zy9sZWdhY3kvTGVn
YWN5UmVuZGVyU1ZHUm9vdC5jcHAgICAgICAgIHwgIDcgKystLQogLi4uL3N2Zy9sZWdhY3kvTGVn
YWN5UmVuZGVyU1ZHUm9vdC5oICAgICAgICAgIHwgIDIgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDU5
IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKaW5kZXggOGE1MTMzZmUzNmNjLi5iM2NkYTE2YmJiZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC03MTEsNyArNzExLDcgQEAgdm9pZCBSZW5k
ZXJCb3g6OmNvbnN0cmFpbkxvZ2ljYWxNaW5NYXhTaXplc0J5QXNwZWN0UmF0aW8oTGF5b3V0VW5p
dCYgY29tcHV0ZWRNaW4KICAgICAvLyBhIHNpemUgb2YgdGhlIGluaXRpYWwgY29udGFpbmluZyBi
bG9jayBhbmQgdGhlIOKAnHN0cmV0Y2gtZml04oCdIHNpemluZyBvZiBub24tcmVwbGFjZWQgYmxv
Y2tzIGlmIHRoZXkgaGF2ZSBkZWZpbml0ZSB2YWx1ZXMuCiAgICAgLy8gU2VlIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi9jc3Mtc2l6aW5nLTMvI2RlZmluaXRlCiAgICAgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlVG9Vc2UgPSBzdHlsZSgpOwotICAgIEFTU0VSVChzdHlsZVRvVXNlLmFzcGVjdFJhdGlv
KCkuaGFzUmF0aW8oKSB8fCAoaXM8UmVuZGVyUmVwbGFjZWQ+KCp0aGlzKSAmJiBkb3duY2FzdDxS
ZW5kZXJSZXBsYWNlZD4oKnRoaXMpLnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9E
b3VibGUoKSkpOworICAgIEFTU0VSVChzdHlsZVRvVXNlLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8o
KSB8fCBwcmVmZXJyZWRBc3BlY3RSYXRpbygpLnZhbHVlX29yKDAuMCkpOwogICAgIGF1dG8gbG9n
aWNhbFNpemUgPSBkaW1lbnNpb24gPT0gQ29uc3RyYWluRGltZW5zaW9uOjpXaWR0aCA/IHN0eWxl
VG9Vc2UubG9naWNhbFdpZHRoKCkgOiBzdHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKTsKICAgICAv
LyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXNpemluZy00LyNhc3BlY3QtcmF0aW8tbWluaW11
bQogICAgIGlmIChtaW5pbXVtU2l6ZVR5cGUgPT0gTWluaW11bVNpemVJc0F1dG9tYXRpY0NvbnRl
bnRCYXNlZDo6WWVzKSB7CkBAIC0yOTM5LDcgKzI5MzksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXl3b3JkPiB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2FsV2lk
dGhzKAogICAgICAgICAgICAgLy8gRm9yIHJlcGxhY2VkIGVsZW1lbnRzIHdpdGggYW4gaW50cmlu
c2ljIGFzcGVjdCByYXRpbyAoZS5nLiA8aW1nPikgYW5kIGEKICAgICAgICAgICAgIC8vIHNwZWNp
ZmllZCBibG9jayBzaXplLCBjb21wdXRlIHRoZSB0cmFuc2ZlcnJlZCBtaW4vbWF4LWNvbnRlbnQg
aW5saW5lIHNpemUKICAgICAgICAgICAgIC8vIHRocm91Z2ggdGhlIGludHJpbnNpYyByYXRpbyBy
YXRoZXIgdGhhbiB1c2luZyB0aGUgcmF3IG5hdHVyYWwgd2lkdGguCi0gICAgICAgICAgICBhdXRv
IHByZWZlcnJlZFJhdGlvID0gcmVuZGVyUmVwbGFjZWQtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCku
YXNwZWN0UmF0aW9Eb3VibGUoKTsKKyAgICAgICAgICAgIGF1dG8gcHJlZmVycmVkUmF0aW8gPSBy
ZW5kZXJSZXBsYWNlZC0+cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RSYXRpb0Rv
dWJsZSgpOwogICAgICAgICAgICAgaWYgKHByZWZlcnJlZFJhdGlvICYmIHN0eWxlKCkubG9naWNh
bEhlaWdodCgpLmlzU3BlY2lmaWVkKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNvbXB1dGVk
VmFsdWVzID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgpLCBsb2dpY2FsVG9w
KCkpOwogICAgICAgICAgICAgICAgIGF1dG8gY29udGVudEJsb2NrU2l6ZSA9IHN0ZDo6bWF4KDBf
bHUsIGNvbXB1dGVkVmFsdWVzLmV4dGVudCAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0
KCkpOwpAQCAtMzY2Myw4ICszNjYzLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgU2l6ZVR5cGU+IHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlU2l6aW5nS2UKICAgICAg
ICAgLy8gSWYgdGhhdCBoYXBwZW5zLCB0aGlzIGNvZGUgd2lsbCBoYXZlIHRvIGNoYW5nZS4KICAg
ICAgICAgaWYgKENoZWNrZWRQdHIgcmVuZGVySW1hZ2UgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVy
SW1hZ2U+KHRoaXMpKSB7CiAgICAgICAgICAgICBhdXRvIGNvbXB1dGVkRml4ZWRMb2dpY2FsV2lk
dGggPSBzdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLnRyeUZpeGVkKCk7CisgICAgICAgICAgICBhdXRv
IHByZWZlcnJlZFJhdGlvID0gcmVuZGVySW1hZ2UtPnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXpl
KCk7CiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRGaXhlZExvZ2ljYWxXaWR0aCAmJiAhc3R5bGUo
KS5hc3BlY3RSYXRpbygpLmhhc1JhdGlvKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIHByZWZl
cnJlZFJhdGlvID0gcmVuZGVySW1hZ2UtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc29sdmVIZWlnaHRGb3JSYXRpbygKICAgICAgICAgICAgICAgICAg
ICAgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLAogICAgICAgICAgICAgICAgICAgICBi
b3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpLApAQCAtMzY3OSw4ICszNjc5LDggQEAgdGVt
cGxhdGU8dHlwZW5hbWUgU2l6ZVR5cGU+IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVy
Qm94Ojpjb21wdXRlU2l6aW5nS2UKICAgICAgICAgICAgICAgICAvLyB0aGUgYXNwZWN0IHJhdGlv
LgogICAgICAgICAgICAgICAgIGlmICghaXNGbGV4SXRlbSgpIHx8IGRvd25jYXN0PFJlbmRlckZs
ZXhpYmxlQm94PihwYXJlbnQoKSktPmlzSG9yaXpvbnRhbEZsb3coKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBvdmVycmlkaW5nV2lk
dGggPSBvdmVycmlkaW5nQm9yZGVyQm94TG9naWNhbFdpZHRoKCk7IG92ZXJyaWRpbmdXaWR0aCAm
JiAhcmVuZGVySW1hZ2UtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZUhlaWdodEZvclJhdGlvKGJvcmRlckFuZFBhZGRp
bmdMb2dpY2FsV2lkdGgoKSwgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwgY29udGVu
dEJveExvZ2ljYWxXaWR0aCgqb3ZlcnJpZGluZ1dpZHRoKSwgcmVuZGVySW1hZ2UtPnByZWZlcnJl
ZEFzcGVjdFJhdGlvKCkudHJhbnNwb3NlZFNpemUoKS5hc3BlY3RSYXRpbygpLCBCb3hTaXppbmc6
OkNvbnRlbnRCb3gpOworICAgICAgICAgICAgICAgIGlmIChhdXRvIG92ZXJyaWRpbmdXaWR0aCA9
IG92ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsV2lkdGgoKTsgb3ZlcnJpZGluZ1dpZHRoICYmICFw
cmVmZXJyZWRSYXRpby5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNv
bHZlSGVpZ2h0Rm9yUmF0aW8oYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxXaWR0aCgpLCBib3JkZXJB
bmRQYWRkaW5nTG9naWNhbEhlaWdodCgpLCBjb250ZW50Qm94TG9naWNhbFdpZHRoKCpvdmVycmlk
aW5nV2lkdGgpLCBwcmVmZXJyZWRSYXRpby50cmFuc3Bvc2VkU2l6ZSgpLmFzcGVjdFJhdGlvKCks
IEJveFNpemluZzo6Q29udGVudEJveCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgICAgIH07CiAgICAgICAgICAgICBpZiAoYXV0byBoZWlnaHQgPSBoZWlnaHRGcm9tQ3Jv
c3NBeGlzT3ZlcnJpZGVBbmRBc3BlY3RSYXRpbygpKQpAQCAtNTI1OSwyMSArNTI1OSwyNiBAQCBM
YXlvdXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygp
IGNvbnN0CiB9CiAKIAotc3RkOjpvcHRpb25hbDxkb3VibGU+IFJlbmRlckJveDo6YXNwZWN0UmF0
aW9WYWx1ZSgpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gUmVuZGVyQm94OjpwcmVmZXJy
ZWRBc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAgaWYgKENoZWNrZWRQdHIgcmVwbGFjZWRFbGVt
ZW50ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclJlcGxhY2VkPih0aGlzKSkKLSAgICAgICAgcmV0
dXJuIHJlcGxhY2VkRWxlbWVudC0+cHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0Rv
dWJsZSgpOwogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSkKICAgICAg
ICAgcmV0dXJuIHN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCk7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAorRmxvYXRTaXplIFJlbmRl
ckJveDo6cHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdAoreworICAgIGlmIChzdHls
ZSgpLmFzcGVjdFJhdGlvKCkuaGFzUmF0aW8oKSkKKyAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZTo6
bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1ZSwg
c3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CisgICAgcmV0dXJuIHsg
fTsKK30KKwogc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29t
cHV0ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0gICAgTGF5
b3V0VW5pdCB0cmFuc2ZlcnJlZE1pblNpemUgPSBMYXlvdXRVbml0KCk7Ci0gICAgTGF5b3V0VW5p
dCB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKLSAgICBhdXRvIGFzcGVj
dFJhdGlvID0gYXNwZWN0UmF0aW9WYWx1ZSgpOworICAgIGF1dG8gdHJhbnNmZXJyZWRNaW5TaXpl
ID0gTGF5b3V0VW5pdCB7IH07CisgICAgYXV0byB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRV
bml0OjptYXgoKTsKKyAgICBhdXRvIGFzcGVjdFJhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW8o
KTsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQogICAgICAgICByZXR1cm4geyB0cmFuc2ZlcnJlZE1p
blNpemUsIHRyYW5zZmVycmVkTWF4U2l6ZSB9OwogCkBAIC01MjkyLDkgKzUyOTcsOSBAQCBzdGQ6
OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9n
aWNhbFdpZHRoRnJvbUFzcGVjdAogCiBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4g
UmVuZGVyQm94Ojpjb21wdXRlTWluTWF4TG9naWNhbEhlaWdodEZyb21Bc3BlY3RSYXRpbygpIGNv
bnN0CiB7Ci0gICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1pblNpemUgPSBMYXlvdXRVbml0KCk7
Ci0gICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsK
LSAgICBhdXRvIGFzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW9WYWx1ZSgpOworICAgIGF1dG8gdHJh
bnNmZXJyZWRNaW5TaXplID0gTGF5b3V0VW5pdCB7IH07CisgICAgYXV0byB0cmFuc2ZlcnJlZE1h
eFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKKyAgICBhdXRvIGFzcGVjdFJhdGlvID0gcHJlZmVy
cmVkQXNwZWN0UmF0aW8oKTsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQogICAgICAgICByZXR1cm4g
eyB0cmFuc2ZlcnJlZE1pblNpemUsIHRyYW5zZmVycmVkTWF4U2l6ZSB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggYzJjOGVmOWY3N2UwLi4yMzljMTdjYzgzOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTYzNyw2ICs2MzcsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCB7
IHJldHVybiBpc0Jsb2NrTGV2ZWxSZXBsYWNlZE9yQXRvbWljSW5saW5lKCkgJiYgKGlzSW1hZ2Uo
KSB8fCBpc1JlbmRlclZpZGVvKCkgfHwgaXNSZW5kZXJIVE1MQ2FudmFzKCkgfHwgaXNSZW5kZXJW
aWV3VHJhbnNpdGlvbkNhcHR1cmUoKSk7IH0KIAorICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3Q7CisgICAgdmlydHVhbCBGbG9hdFNp
emUgcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAg
IFJlbmRlckJveChUeXBlLCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9uU2V0PFR5cGVG
bGFnPiA9IHsgfSwgVHlwZVNwZWNpZmljRmxhZ3MgPSB7IH0pOwogICAgIFJlbmRlckJveChUeXBl
LCBEb2N1bWVudCYsIFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxUeXBlRmxhZz4gPSB7IH0sIFR5
cGVTcGVjaWZpY0ZsYWdzID0geyB9KTsKQEAgLTY4Miw4ICs2ODUsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgYm9vbCBza2lwQ29udGFpbmluZ0Jsb2NrRm9yUGVyY2VudEhlaWdodENhbGN1bGF0aW9uKGNv
bnN0IFJlbmRlckJveCYgY29udGFpbmluZ0Jsb2NrLCBib29sIGlzUGVycGVuZGljdWxhcldyaXRp
bmdNb2RlKSBjb25zdDsKIAogICAgIHZvaWQgaW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVs
Q291bnRJZk5lZWRlZChjb25zdCBJbnRTaXplJik7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4gYXNwZWN0UmF0aW9WYWx1ZSgpIGNvbnN0OwogICAgIGJvb2wgTk9ERUxFVEUgc2hvdWxkSWdu
b3JlQXNwZWN0UmF0aW8oKSBjb25zdDsKICAgICBib29sIHNob3VsZENvbXB1dGVMb2dpY2FsV2lk
dGhGcm9tQXNwZWN0UmF0aW8oKSBjb25zdDsKICAgICBib29sIGlzUmVzb2x2ZWFibGVTdHJldGNo
U2l6ZShjb25zdCBhdXRvJiBzaXplKSBjb25zdCB7IHJldHVybiBzaXplLmlzU3RyZXRjaCgpICYm
IGNvbnRhaW5pbmdCbG9ja0hhc0RlZmluaXRlQmxvY2tTaXplKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDFmZWQ5NmQzODY4Ni4u
ZmJjYzZlMjdlN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5jcHAKQEAgLTg3OSw3ICs4NzksNyBAQCBzdGF0aWMgYm9vbCBpc1NWR1Jvb3RXaXRo
SW50cmluc2ljQXNwZWN0UmF0aW8oY29uc3QgUmVuZGVyQm94JiBmbGV4SXRlbSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIC8vIEl0J3MgY29tbW9uIGZvciBzb21lIHJlcGxhY2VkIGVsZW1l
bnRzLCBzdWNoIGFzIFNWR3MsIHRvIGhhdmUgaW50cmluc2ljIGFzcGVjdCByYXRpb3MgYnV0IG5v
IGludHJpbnNpYyBzaXplcy4KICAgICAvLyBUaGF0J3Mgd2h5IGl0IGlzbid0IGVub3VnaCBqdXN0
IHRvIGNoZWNrIGZvciBpbnRyaW5zaWMgc2l6ZXMgaW4gdGhvc2UgY2FzZXMuCi0gICAgcmV0dXJu
IGRvd25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkucHJlZmVycmVkQXNwZWN0UmF0aW8o
KS5hc3BlY3RSYXRpb0RvdWJsZSgpID4gMDsKKyAgICByZXR1cm4gZmxleEl0ZW0ucHJlZmVycmVk
QXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RSYXRpb0RvdWJsZSgpID4gMDsKIH07CiAKIHN0YXRp
YyBib29sIGZsZXhJdGVtSGFzQXNwZWN0UmF0aW8oY29uc3QgUmVuZGVyQm94JiBmbGV4SXRlbSkK
QEAgLTEyNjIsMTEgKzEyNjIsMTEgQEAgZG91YmxlIFJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJy
ZWRBc3BlY3RSYXRpb0ZvckZsZXhJdGVtKGNvbnN0IFJlbmRlckJveCYgZmxleEkKICAgICBhdXRv
IGZsZXhJdGVtQXNwZWN0UmF0aW8gPSBbJl0gewogICAgICAgICBhdXRvIGZsZXhJdGVtSW50cmlu
c2ljU2l6ZSA9IExheW91dFNpemUgeyBmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwg
ZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbEhlaWdodCgpIH07CiAgICAgICAgIGlmIChmbGV4SXRl
bS5pc1JlbmRlck9yTGVnYWN5UmVuZGVyU1ZHUm9vdCgpKQotICAgICAgICAgICAgcmV0dXJuIGRv
d25jYXN0PFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkucHJlZmVycmVkQXNwZWN0UmF0aW8oKS5h
c3BlY3RSYXRpb0RvdWJsZSgpOworICAgICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLnByZWZlcnJl
ZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICAgICAgaWYgKGZs
ZXhJdGVtLnN0eWxlKCkuYXNwZWN0UmF0aW8oKS5pc1JhdGlvKCkgfHwgKGZsZXhJdGVtLnN0eWxl
KCkuYXNwZWN0UmF0aW8oKS5pc0F1dG9BbmRSYXRpbygpICYmIGZsZXhJdGVtSW50cmluc2ljU2l6
ZS5pc0VtcHR5KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZsZXhJdGVtLnN0eWxlKCkubG9naWNh
bEFzcGVjdFJhdGlvKCk7Ci0gICAgICAgIGlmIChhdXRvKiByZXBsYWNlZEVsZW1lbnQgPSBkeW5h
bWljRG93bmNhc3Q8UmVuZGVyUmVwbGFjZWQ+KGZsZXhJdGVtKSkKLSAgICAgICAgICAgIHJldHVy
biByZXBsYWNlZEVsZW1lbnQtPnByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3Vi
bGUoKTsKKyAgICAgICAgaWYgKGlzPFJlbmRlclJlcGxhY2VkPihmbGV4SXRlbSkpCisgICAgICAg
ICAgICByZXR1cm4gZmxleEl0ZW0ucHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RS
YXRpb0RvdWJsZSgpOwogCiAgICAgICAgIEFTU0VSVChmbGV4SXRlbS5pbnRyaW5zaWNMb2dpY2Fs
SGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gZmxleEl0ZW0uaW50cmluc2ljTG9naWNhbFdpZHRo
KCkudG9Eb3VibGUoKSAvIGZsZXhJdGVtLmludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKS50b0RvdWJs
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggODcwZDBk
N2ZkZTFhLi4zN2E2ZWQyYWU5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcApAQCAtOTM4LDEzICs5MzgsMTMgQEAgdm9pZCBSZW5kZXJJbWFnZTo6bGF5b3V0KCkK
ICAgICB9CiB9CiAKLUZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNwZWN0UmF0aW8o
KSBjb25zdAorRmxvYXRTaXplIFJlbmRlckltYWdlOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6
ZSgpIGNvbnN0CiB7CiAgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNp
YyBkaW1lbnNpb25zIGZyb20gY29udGVudCwgYnV0IHRoZQogICAgIC8vIGFzcGVjdCByYXRpbyBm
cm9tIHRoZSBDU1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEg
dGhlCiAgICAgLy8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBpbWFnZSBkYXRhKS4K
ICAgICBpZiAoc2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSkKLSAgICAg
ICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOworICAgICAg
ICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CiAK
ICAgICAvLyBEb24ndCBjb21wdXRlIGFuIGludHJpbnNpYyByYXRpbyB0byBwcmVzZXJ2ZSBoaXN0
b3JpY2FsIFdlYktpdCBiZWhhdmlvciBpZiB3ZSdyZSBwYWludGluZyBhbHQgdGV4dCBhbmQvb3Ig
YSBicm9rZW4gaW1hZ2UuCiAgICAgaWYgKHNob3VsZERpc3BsYXlCcm9rZW5JbWFnZUljb24oKSkg
ewpAQCAtOTU0LDcgKzk1NCw3IEBAIEZsb2F0U2l6ZSBSZW5kZXJJbWFnZTo6cHJlZmVycmVkQXNw
ZWN0UmF0aW8oKSBjb25zdAogICAgIH0KIAogICAgIGlmIChDaGVja2VkUHRyIHN2Z1Jvb3QgPSBl
bWJlZGRlZFNWR1Jvb3QoKSkgewotICAgICAgICBhdXRvIHJhdGlvID0gc3ZnUm9vdC0+cHJlZmVy
cmVkQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgYXV0byByYXRpbyA9IHN2Z1Jvb3QtPnByZWZlcnJl
ZEFzcGVjdFJhdGlvQXNTaXplKCk7CiAgICAgICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSAmJiAhcmF0aW8uaXNFbXB0eSgpKQogICAgICAgICAgICAgcmF0aW8gPSByYXRpby50cmFu
c3Bvc2VkU2l6ZSgpOwogCkBAIC05NjQsNyArOTY0LDcgQEAgRmxvYXRTaXplIFJlbmRlckltYWdl
OjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0CiAgICAgICAgIHJldHVybiByYXRpbzsKICAg
ICB9CiAKLSAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCk7
CisgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgp
OwogfQogCiBib29sIFJlbmRlckltYWdlOjpzaG91bGRJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhz
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggODNkNWVk
NDc1Y2M3Li5kNDYwMTExY2M0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTXVsdGlSZXByZXNlbnRh
dGlvbkhFSUMoKSBjb25zdDsKICNlbmRpZgogCi0gICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVj
dFJhdGlvKCkgY29uc3QgZmluYWw7CisgICAgRmxvYXRTaXplIHByZWZlcnJlZEFzcGVjdFJhdGlv
QXNTaXplKCkgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICBSZW5kZXJJbWFnZShUeXBl
LCBFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgT3B0aW9uU2V0PFJlcGxhY2VkRmxhZz4sIFN0eWxl
OjpJbWFnZSogPSBudWxscHRyLCBjb25zdCBmbG9hdCBpbWFnZURldmljZVBpeGVsUmF0aW8gPSAx
LjBmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4
IDRhNjFkOTE5ZjE1Yi4uYTFiZjM3NjU1YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTUyMCwxMCArNTIwLDEwIEBAIHZvaWQgUmVuZGVyUmVw
bGFjZWQ6OmNvbXB1dGVJbnRyaW5zaWNTaXplc0NvbnN0cmFpbmVkQnlUcmFuc2ZlcnJlZE1pbk1h
eFNpemVzKEZsCiB7CiAgICAgaWYgKHNob3VsZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5t
ZW50KCkpIHsKICAgICAgICAgaW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZSB7IGludHJpbnNpY0xv
Z2ljYWxXaWR0aCgpLCBpbnRyaW5zaWNMb2dpY2FsSGVpZ2h0KCkgfTsKLSAgICAgICAgaW50cmlu
c2ljUmF0aW8gPSBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICAg
ICAgaW50cmluc2ljUmF0aW8gPSBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW9B
c1NpemUoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpbnRyaW5zaWNTaXplID0gY29tcHV0ZUlu
dHJpbnNpY1NpemVGb3JSZW5kZXJlcigqdGhpcyk7Ci0gICAgICAgIGludHJpbnNpY1JhdGlvID0g
cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAgICAgICAgaW50cmluc2ljUmF0aW8gPSBwcmVmZXJy
ZWRBc3BlY3RSYXRpb0FzU2l6ZSgpOwogCiAgICAgICAgIGF1dG8gc2l6ZVRvQ2FjaGUgPSBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gaW50cmluc2ljU2l6ZSA6IGludHJpbnNpY1NpemUudHJh
bnNwb3NlZFNpemUoKTsKICAgICAgICAgaWYgKGVtYmVkZGVkU1ZHUm9vdCgpICYmIGlzUmVuZGVy
V2lkZ2V0KCkpIHsKQEAgLTYwNCwxMCArNjA0LDE1IEBAIExheW91dFJlY3QgUmVuZGVyUmVwbGFj
ZWQ6OnJlcGxhY2VkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkK
ICAgICByZXR1cm4gZmluYWxSZWN0OwogfQogCi1GbG9hdFNpemUgUmVuZGVyUmVwbGFjZWQ6OnBy
ZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8ZG91YmxlPiBSZW5kZXJS
ZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogewotICAgIGF1dG8gaW50cmlu
c2ljU2l6ZSA9IEZsb2F0U2l6ZShpbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSwgaW50cmluc2ljTG9n
aWNhbEhlaWdodCgpKTsKLSAgICBGbG9hdFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW87CisgICAg
cmV0dXJuIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsK
K30KKworRmxvYXRTaXplIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6
ZSgpIGNvbnN0Cit7CisgICAgYXV0byBpbnRyaW5zaWNTaXplID0gRmxvYXRTaXplIHsgaW50cmlu
c2ljTG9naWNhbFdpZHRoKCksIGludHJpbnNpY0xvZ2ljYWxIZWlnaHQoKSB9OworICAgIGF1dG8g
cHJlZmVycmVkQXNwZWN0UmF0aW8gPSBGbG9hdFNpemUgeyB9OwogCiAgICAgaWYgKHN0eWxlKCku
YXNwZWN0UmF0aW8oKS5oYXNSYXRpbygpKSB7CiAgICAgICAgIHByZWZlcnJlZEFzcGVjdFJhdGlv
ID0gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxX
aWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsK
QEAgLTY2NSw3ICs2NzAsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlQXNwZWN0UmF0
aW9BZGp1c3RlZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdAogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAgYXV0byBjb21wdXRl
ZEFzcGVjdFJhdGlvID0gcHJlZmVycmVkQXNwZWN0UmF0aW8oKS5hc3BlY3RSYXRpb0RvdWJsZSgp
OworICAgIGF1dG8gY29tcHV0ZWRBc3BlY3RSYXRpbyA9IHByZWZlcnJlZEFzcGVjdFJhdGlvQXNT
aXplKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKICAgICBhdXRvIGNvbXB1dGVkSW50cmluc2ljTG9n
aWNhbFdpZHRoID0gbWluTG9naWNhbFdpZHRoOwogCiAgICAgaWYgKGF1dG8gZml4ZWRMb2dpY2Fs
SGVpZ2h0ID0gc3R5bGUubG9naWNhbEhlaWdodCgpLnRyeUZpeGVkKCkpCkBAIC04NDIsNyArODQ3
LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZUludHJpbnNpY0tleXdvcmRMb2dpY2Fs
V2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWwKIHsKICAgICBpZiAoaGFzSW50cmluc2ljQXNw
ZWN0UmF0aW8oKSAmJiAhc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCkpIHsKICAgICAg
ICAgaWYgKGF1dG8gZml4ZWRIZWlnaHQgPSBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS50cnlGaXhl
ZCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGhlaWdodERlcml2ZWRXaWR0aCA9IExheW91dFVuaXQg
eyBmaXhlZEhlaWdodC0+cmVzb2x2ZVpvb20oc3R5bGUoKS51c2VkWm9vbUZvckxlbmd0aCgpKSAq
IHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKSB9OworICAgICAgICAg
ICAgYXV0byBoZWlnaHREZXJpdmVkV2lkdGggPSBMYXlvdXRVbml0IHsgZml4ZWRIZWlnaHQtPnJl
c29sdmVab29tKHN0eWxlKCkudXNlZFpvb21Gb3JMZW5ndGgoKSkgKiBwcmVmZXJyZWRBc3BlY3RS
YXRpb0FzU2l6ZSgpLmFzcGVjdFJhdGlvRG91YmxlKCkgfTsKICAgICAgICAgICAgIG1pbkxvZ2lj
YWxXaWR0aCA9IGhlaWdodERlcml2ZWRXaWR0aDsKICAgICAgICAgICAgIG1heExvZ2ljYWxXaWR0
aCA9IGhlaWdodERlcml2ZWRXaWR0aDsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKaW5kZXggZWI3ZmJmNDBmNjc5Li42ZWZjNGJj
NGM4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC01
OSw3ICs1OSw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlcGxhY2VkTWF4TG9naWNhbEhlaWdodENv
bXB1dGVzQXNOb25lKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFJlbmRlclJlcGxhY2VkKiBlbWJl
ZGRlZFNWR1Jvb3QoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBGbG9h
dFNpemUgcHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0IG92ZXJyaWRlOworICAgIEZsb2F0
U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90
ZWN0ZWQ6CiAgICAgUmVuZGVyUmVwbGFjZWQoVHlwZSwgRWxlbWVudCYsIFJlbmRlclN0eWxlJiYs
IE9wdGlvblNldDxSZXBsYWNlZEZsYWc+ID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAKaW5kZXggYmU1ODczNWI2MGY1Li5kOWZmNWExZDdjMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC00OTgsMTkgKzQ5OCwx
OSBAQCBSZW5kZXJSZXBsYWNlZCogUmVuZGVyV2lkZ2V0OjplbWJlZGRlZFNWR1Jvb3QoKSBjb25z
dAogICAgIHJldHVybiBmcmFtZVZpZXcgPyBmcmFtZVZpZXctPmVtYmVkZGVkU1ZHUm9vdCgpIDog
bnVsbHB0cjsKIH0KIAotRmxvYXRTaXplIFJlbmRlcldpZGdldDo6cHJlZmVycmVkQXNwZWN0UmF0
aW8oKSBjb25zdAorRmxvYXRTaXplIFJlbmRlcldpZGdldDo6cHJlZmVycmVkQXNwZWN0UmF0aW9B
c1NpemUoKSBjb25zdAogewogICAgIC8vIFNpemUgY29udGFpbm1lbnQgc3VwcHJlc3NlcyBpbnRy
aW5zaWMgZGltZW5zaW9ucyBmcm9tIGNvbnRlbnQsIGJ1dCB0aGUKICAgICAvLyBhc3BlY3QgcmF0
aW8gZnJvbSB0aGUgQ1NTIGFzcGVjdC1yYXRpbyBwcm9wZXJ0eSBpcyBzdGlsbCBhdmFpbGFibGUg
dmlhIHRoZQogICAgIC8vIGJhc2UgY2xhc3MgKHdoaWNoIGRvZXNuJ3QgcXVlcnkgaW1hZ2UgZGF0
YSkuCiAgICAgaWYgKHNob3VsZEFwcGx5U2l6ZU9ySW5saW5lU2l6ZUNvbnRhaW5tZW50KCkpCi0g
ICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKTsKKyAg
ICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgp
OwogCiAgICAgQ2hlY2tlZFB0ciBzdmdSb290ID0gZW1iZWRkZWRTVkdSb290KCk7CiAgICAgaWYg
KCFzdmdSb290KQotICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVj
dFJhdGlvKCk7CisgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVycmVkQXNwZWN0
UmF0aW9Bc1NpemUoKTsKIAotICAgIGF1dG8gcmF0aW8gPSBzdmdSb290LT5wcmVmZXJyZWRBc3Bl
Y3RSYXRpbygpOworICAgIGF1dG8gcmF0aW8gPSBzdmdSb290LT5wcmVmZXJyZWRBc3BlY3RSYXRp
b0FzU2l6ZSgpOwogICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSAmJiAhcmF0aW8u
aXNFbXB0eSgpKQogICAgICAgICByYXRpbyA9IHJhdGlvLnRyYW5zcG9zZWRTaXplKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAppbmRleCBlOTExN2Q5MTI3YmEuLjc2
YjNkOGYxN2FlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaApAQCAt
OTIsNyArOTIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlUHJlZmVy
cmVkV2lkdGhzKCkgY29uc3QgZmluYWw7CiAgICAgUmVuZGVyUmVwbGFjZWQqIGVtYmVkZGVkU1ZH
Um9vdCgpIGNvbnN0IGZpbmFsOwotICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygp
IGNvbnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgp
IGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShIaWdobGlnaHRTdGF0
ZSkgZmluYWw7CiAgICAgdm9pZCBzZXRPdmVybGFwVGVzdFJlc3VsdChib29sKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDc2
NjdjN2IwMjIwNy4uZjc1YWFjN2Y0YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgUmVuZGVyU1ZHVmlld3Bv
cnRDb250YWluZXIqIFJlbmRlclNWR1Jvb3Q6OnZpZXdwb3J0Q29udGFpbmVyKCkgY29uc3QKIAog
Ym9vbCBSZW5kZXJTVkdSb290OjpoYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHByZWZlcnJlZEFzcGVjdFJhdGlvKCkuYXNwZWN0UmF0aW9Eb3VibGUoKTsKKyAg
ICByZXR1cm4gcHJlZmVycmVkQXNwZWN0UmF0aW9Bc1NpemUoKS5hc3BlY3RSYXRpb0RvdWJsZSgp
OwogfQogCiBGbG9hdFNpemUgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBj
b25zdApAQCAtMTA4LDEzICsxMDgsMTMgQEAgRmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6OmNvbXB1
dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKICAgICByZXR1cm4gaW50cmluc2ljU2l6ZTsKIH0KIAot
RmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkgY29uc3QKK0Zs
b2F0U2l6ZSBSZW5kZXJTVkdSb290OjpwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0
CiB7CiAgICAgLy8gU2l6ZSBjb250YWlubWVudCBzdXBwcmVzc2VzIGludHJpbnNpYyBkaW1lbnNp
b25zIGZyb20gY29udGVudCwgYnV0IHRoZQogICAgIC8vIGFzcGVjdCByYXRpbyBmcm9tIHRoZSBD
U1MgYXNwZWN0LXJhdGlvIHByb3BlcnR5IGlzIHN0aWxsIGF2YWlsYWJsZSB2aWEgdGhlCiAgICAg
Ly8gYmFzZSBjbGFzcyAod2hpY2ggZG9lc24ndCBxdWVyeSBpbWFnZSBkYXRhKS4KICAgICBpZiAo
c2hvdWxkQXBwbHlTaXplT3JJbmxpbmVTaXplQ29udGFpbm1lbnQoKSkKLSAgICAgICAgcmV0dXJu
IFJlbmRlclJlcGxhY2VkOjpwcmVmZXJyZWRBc3BlY3RSYXRpbygpOworICAgICAgICByZXR1cm4g
UmVuZGVyUmVwbGFjZWQ6OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCk7CiAKICAgICBpZiAo
c3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzUmF0aW8oKSkKICAgICAgICAgcmV0dXJuIEZsb2F0U2l6
ZTo6bmFycm93UHJlY2lzaW9uKHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsV2lkdGgoKS52YWx1
ZSwgc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxIZWlnaHQoKS52YWx1ZSk7CkBAIC0xMzksNyAr
MTM5LDYgQEAgRmxvYXRTaXplIFJlbmRlclNWR1Jvb3Q6OnByZWZlcnJlZEFzcGVjdFJhdGlvKCkg
Y29uc3QKICAgICBpZiAoc3R5bGUoKS5hc3BlY3RSYXRpbygpLmlzQXV0b0FuZFJhdGlvKCkpCiAg
ICAgICAgIHJldHVybiBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihzdHlsZSgpLmFzcGVjdFJh
dGlvTG9naWNhbFdpZHRoKCkudmFsdWUsIHN0eWxlKCkuYXNwZWN0UmF0aW9Mb2dpY2FsSGVpZ2h0
KCkudmFsdWUpOwogICAgIHJldHVybiB7IH07Ci0KIH0KIAogYm9vbCBSZW5kZXJTVkdSb290Ojpp
c0VtYmVkZGVkVGhyb3VnaFNWR0ltYWdlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggZjliOTg2MGY0MTAzLi4wNmUwYWNjMmRlMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250
YWluaW5nU1ZHRG9jdW1lbnQoKSBjb25zdDsKIAogICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmlu
c2ljU2l6ZSgpIGNvbnN0OwotICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNv
bnN0IGZpbmFsOworICAgIEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgaGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5h
bDsKIAogICAgIGJvb2wgaXNMYXlvdXRTaXplQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNM
YXlvdXRTaXplQ2hhbmdlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL2xlZ2FjeS9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAppbmRleCA3NmM4NGY1MWQ3
ZTguLmVmMTJlYjYxYjcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTgxLDcgKzgxLDcg
QEAgU1ZHU1ZHRWxlbWVudCYgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6c3ZnU1ZHRWxlbWVudCgpIGNv
bnN0CiAKIGJvb2wgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6aGFzSW50cmluc2ljQXNwZWN0UmF0aW8o
KSBjb25zdAogewotICAgIHJldHVybiBwcmVmZXJyZWRBc3BlY3RSYXRpbygpLmFzcGVjdFJhdGlv
RG91YmxlKCk7CisgICAgcmV0dXJuIHByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkuYXNwZWN0
UmF0aW9Eb3VibGUoKTsKIH0KIAogRmxvYXRTaXplIExlZ2FjeVJlbmRlclNWR1Jvb3Q6OmNvbXB1
dGVJbnRyaW5zaWNTaXplKCkgY29uc3QKQEAgLTk3LDEzICs5NywxMyBAQCBGbG9hdFNpemUgTGVn
YWN5UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1NpemUoKSBjb25zdAogICAgIHJldHVy
biBpbnRyaW5zaWNTaXplOwogfQogCi1GbG9hdFNpemUgTGVnYWN5UmVuZGVyU1ZHUm9vdDo6cHJl
ZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAorRmxvYXRTaXplIExlZ2FjeVJlbmRlclNWR1Jvb3Q6
OnByZWZlcnJlZEFzcGVjdFJhdGlvQXNTaXplKCkgY29uc3QKIHsKICAgICAvLyBTaXplIGNvbnRh
aW5tZW50IHN1cHByZXNzZXMgaW50cmluc2ljIGRpbWVuc2lvbnMgZnJvbSBjb250ZW50LCBidXQg
dGhlCiAgICAgLy8gYXNwZWN0IHJhdGlvIGZyb20gdGhlIENTUyBhc3BlY3QtcmF0aW8gcHJvcGVy
dHkgaXMgc3RpbGwgYXZhaWxhYmxlIHZpYSB0aGUKICAgICAvLyBiYXNlIGNsYXNzICh3aGljaCBk
b2Vzbid0IHF1ZXJ5IGltYWdlIGRhdGEpLgogICAgIGlmIChzaG91bGRBcHBseVNpemVPcklubGlu
ZVNpemVDb250YWlubWVudCgpKQotICAgICAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OnByZWZl
cnJlZEFzcGVjdFJhdGlvKCk7CisgICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6cHJlZmVy
cmVkQXNwZWN0UmF0aW9Bc1NpemUoKTsKIAogICAgIGlmIChzdHlsZSgpLmFzcGVjdFJhdGlvKCku
aXNSYXRpbygpKQogICAgICAgICByZXR1cm4gRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oc3R5
bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFzcGVjdFJhdGlv
TG9naWNhbEhlaWdodCgpLnZhbHVlKTsKQEAgLTEyOCw3ICsxMjgsNiBAQCBGbG9hdFNpemUgTGVn
YWN5UmVuZGVyU1ZHUm9vdDo6cHJlZmVycmVkQXNwZWN0UmF0aW8oKSBjb25zdAogICAgICAgICBy
ZXR1cm4gKmludHJpbnNpY1JhdGlvVmFsdWU7CiAgICAgaWYgKHN0eWxlKCkuYXNwZWN0UmF0aW8o
KS5pc0F1dG9BbmRSYXRpbygpKQogICAgICAgICByZXR1cm4gRmxvYXRTaXplOjpuYXJyb3dQcmVj
aXNpb24oc3R5bGUoKS5hc3BlY3RSYXRpb0xvZ2ljYWxXaWR0aCgpLnZhbHVlLCBzdHlsZSgpLmFz
cGVjdFJhdGlvTG9naWNhbEhlaWdodCgpLnZhbHVlKTsKLQogICAgIHJldHVybiBwcmVmZXJyZWRB
c3BlY3RSYXRpbzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCmluZGV4IGUyYzFmZDllNjQyNS4uNDZj
MTIwZGRhNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL2xlZ2Fj
eS9MZWdhY3lSZW5kZXJTVkdSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9sZWdhY3kvTGVnYWN5UmVuZGVyU1ZHUm9vdC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSBj
b25zdDsKIAogICAgIEZsb2F0U2l6ZSBjb21wdXRlSW50cmluc2ljU2l6ZSgpIGNvbnN0OwotICAg
IEZsb2F0U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpbygpIGNvbnN0IGZpbmFsOworICAgIEZsb2F0
U2l6ZSBwcmVmZXJyZWRBc3BlY3RSYXRpb0FzU2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
aGFzSW50cmluc2ljQXNwZWN0UmF0aW8oKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgaXNMYXlv
dXRTaXplQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNMYXlvdXRTaXplQ2hhbmdlZDsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>