<?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>184000</bug_id>
          
          <creation_ts>2018-03-25 21:57:18 -0700</creation_ts>
          <short_desc>REGRESSION(r229954): Caused many layout tests to crash on Apple High Sierra, Sierra, iOS Simulator and GTK Linux Debug test bots (Requested by dydz on #webkit).</short_desc>
          <delta_ts>2018-03-25 22:01:17 -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>
          
          <blocked>183969</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1409227</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-25 21:57:18 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/229954 broke the build:
Caused many layout tests to crash on Apple High Sierra, Sierra, iOS Simulator and GTK Linux Debug test bots (Requested by dydz on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409229</commentid>
    <comment_count>1</comment_count>
      <attachid>336504</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-25 21:57:49 -0700</bug_when>
    <thetext>Created attachment 336504
ROLLOUT of r229954

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409230</commentid>
    <comment_count>2</comment_count>
      <attachid>336504</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-25 22:00:08 -0700</bug_when>
    <thetext>Comment on attachment 336504
ROLLOUT of r229954

Clearing flags on attachment: 336504

Committed r229966: &lt;https://trac.webkit.org/changeset/229966&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409231</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-25 22:00:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1409232</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-25 22:01:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/38854002&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336504</attachid>
            <date>2018-03-25 21:57:49 -0700</date>
            <delta_ts>2018-03-25 22:00:08 -0700</delta_ts>
            <desc>ROLLOUT of r229954</desc>
            <filename>bug-184000-20180326005748.patch</filename>
            <type>text/plain</type>
            <size>122575</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5OTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFhYjJiOTllM2M5NzU0
ZTY5MzA2M2Y5MGMwOGEyM2NjOTllZmM3Zi4uMDM4YjQxMTNiMzRhOGYwY2Q2NzYxNDA3MjZhYjgz
ODhiNzQ4ZTU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTAzLTI1ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjI5OTU0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg0MDAwCisKKyAgICAgICAgQ2F1c2VkIG1hbnkgbGF5b3V0IHRlc3Rz
IHRvIGNyYXNoIG9uIEFwcGxlIEhpZ2ggU2llcnJhLAorICAgICAgICBTaWVycmEsIGlPUyBTaW11
bGF0b3IgYW5kIEdUSyBMaW51eCBEZWJ1ZyB0ZXN0IGJvdHMgKFJlcXVlc3RlZAorICAgICAgICBi
eSBkeWR6IG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAg
ICAgICAiVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNl
IFdvcmtlcgorICAgICAgICBjb2RlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8yMjk5NTQKKwogMjAxOC0wMy0yMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBjb21wbGV0aW9uIGhhbmRsZXJzIGZvciBS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZUFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDU5MmM0N2Q5MTU4ZGI1ODdmMmM0M2JlODkzZDJkNmZhZWU3NmYx
MjQuLjBjZmM2YmNjYWY3MDMzOTYxMDMyNWIwYjI5MDBkOWU2YTMzMjgxMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTgtMDMtMjUgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjk5NTQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQwMDAKKwor
ICAgICAgICBDYXVzZWQgbWFueSBsYXlvdXQgdGVzdHMgdG8gY3Jhc2ggb24gQXBwbGUgSGlnaCBT
aWVycmEsCisgICAgICAgIFNpZXJyYSwgaU9TIFNpbXVsYXRvciBhbmQgR1RLIExpbnV4IERlYnVn
IHRlc3QgYm90cyAoUmVxdWVzdGVkCisgICAgICAgIGJ5IGR5ZHogb24gI3dlYmtpdCkuCisKKyAg
ICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJVc2UgU2VjdXJpdHlPcmlnaW5E
YXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29ya2VyCisgICAgICAgIGNvZGUiCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM5NjkKKyAg
ICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIyOTk1NAorCiAyMDE4LTAz
LTIzICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBBdXRvbWF0
aW9uOiByZW1vdmUgdW5uZWNlc3NhcnkgbWVtYmVyIHZhcmlhYmxlIFdlYkF1dG9tYXRpb25TZXNz
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDdmMmFlOTVlMWVjNTQ2NmVjM2EzZWVlYjFkM2Uz
Y2JjNGFjZGIxMjkuLjUyNTY2NDlmNzIwNjIzMzVmNGYxYjZjOTViYjFkMGY4OWVmOTIzMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDMtMjUgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMjk5NTQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODQwMDAKKworICAgICAgICBDYXVzZWQgbWFueSBsYXlvdXQgdGVzdHMgdG8g
Y3Jhc2ggb24gQXBwbGUgSGlnaCBTaWVycmEsCisgICAgICAgIFNpZXJyYSwgaU9TIFNpbXVsYXRv
ciBhbmQgR1RLIExpbnV4IERlYnVnIHRlc3QgYm90cyAoUmVxdWVzdGVkCisgICAgICAgIGJ5IGR5
ZHogb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAg
ICJVc2UgU2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5IGluIFNlcnZpY2UgV29y
a2VyCisgICAgICAgIGNvZGUiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODM5NjkKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzIyOTk1NAorCiAyMDE4LTAzLTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBtb3JlIGNvbnNpc3RlbnRseSBpbiBT
ZXJ2aWNlIFdvcmtlciBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOWY3YWZi
YzlhOTE5ODM4NDhlY2RiOWU3MTZiMTZmOTZiOGY4MDM0Ny4uMjY2NjEzODMyYjIwMzFkZWQzMTk2
YWM2ZjlmOTZjYWY2NTQxMWUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE5IEBACisyMDE4LTAzLTI1ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0
Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjI5OTU0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MDAwCisKKyAgICAg
ICAgQ2F1c2VkIG1hbnkgbGF5b3V0IHRlc3RzIHRvIGNyYXNoIG9uIEFwcGxlIEhpZ2ggU2llcnJh
LAorICAgICAgICBTaWVycmEsIGlPUyBTaW11bGF0b3IgYW5kIEdUSyBMaW51eCBEZWJ1ZyB0ZXN0
IGJvdHMgKFJlcXVlc3RlZAorICAgICAgICBieSBkeWR6IG9uICN3ZWJraXQpLgorCisgICAgICAg
IFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiVXNlIFNlY3VyaXR5T3JpZ2luRGF0YSBt
b3JlIGNvbnNpc3RlbnRseSBpbiBTZXJ2aWNlIFdvcmtlcgorICAgICAgICBjb2RlIgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzOTY5CisgICAgICAg
IGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMjk5NTQKKwogMjAxOC0wMy0yNCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBTZWN1cml0eU9y
aWdpbkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2VydmljZSBXb3JrZXIgY29kZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDIyMTY5YzY4YTk3NTQ4N2IwZmE5MmZhMTNjNDA4ZGQ1
NmMzMmFjY2QuLmE3YjkyMjBhMjc5ZTc2MDYyZGIzOGMzYTU0Zjg0ZmNhYWZmZjRiYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wMy0yNSAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjIyOTk1NC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4NDAwMAorCisgICAgICAgIENhdXNlZCBtYW55IGxheW91dCB0ZXN0
cyB0byBjcmFzaCBvbiBBcHBsZSBIaWdoIFNpZXJyYSwKKyAgICAgICAgU2llcnJhLCBpT1MgU2lt
dWxhdG9yIGFuZCBHVEsgTGludXggRGVidWcgdGVzdCBib3RzIChSZXF1ZXN0ZWQKKyAgICAgICAg
YnkgZHlkeiBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAg
ICAgICAgIlVzZSBTZWN1cml0eU9yaWdpbkRhdGEgbW9yZSBjb25zaXN0ZW50bHkgaW4gU2Vydmlj
ZSBXb3JrZXIKKyAgICAgICAgY29kZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4Mzk2OQorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMjI5OTU0CisKIDIwMTgtMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBVc2UgU2VjdXJpdHlPcmlnaW5EYXRhIG1vcmUgY29uc2lzdGVudGx5
IGluIFNlcnZpY2UgV29ya2VyIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAyN2U4ZjAyOTNjMDgzZjc0ODcyMWY1MmU1Y2Ri
NjY2ZWY5MWI3OGZlLi4zZjVmYjkzYjM5Yzk5MTM4OGUwMDRlNzQ5YjA0ZDkyYTVlZjliZTUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3Bw
CkBAIC00OSw3ICs0OSw3IEBAIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBET01DYWNoZVN0
b3JhZ2U6Om9yaWdpbigpIGNvbnN0CiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gQ2xpZW50T3JpZ2luIHsgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT50b3BPcmlnaW4oKS5kYXRhKCksIG9yaWdpbi0+ZGF0YSgpIH07CisgICAgcmV0
dXJuIENsaWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dG9wT3JpZ2luKCkpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSB9OwogfQogCiBzdGF0aWMgdm9pZCBkb1Nl
cXVlbnRpYWxNYXRjaChzaXplX3QgaW5kZXgsIFZlY3RvcjxSZWY8RE9NQ2FjaGU+PiYmIGNhY2hl
cywgRE9NQ2FjaGU6OlJlcXVlc3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRp
b25zLCBET01DYWNoZTo6TWF0Y2hDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IGEyYmQ0NGNj
NjJiYWY5MmQxZGQwMTE5OWNmY2FhMTFkMmYzYjZlZWIuLmNiZjQzYjQyZmZiZjg3MDNjOGU4Mzcz
NWIxYjc1ZDJhODQ4MzlmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5jcHAKQEAgLTY1Miw3ICs2NTIsNyBAQCBTdHJpbmcgQ0RNOjpzdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBkb2N1bWVudC0+c2VjdXJpdHlP
cmlnaW4oKS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkp
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IDc3
YzM3NzE5ODExODE5ZTIwYzcwYmYxY2ZhY2NmNmE4NDJlMzIxNjEuLmQ1YWNlZGFlMzYzNWI3ODcx
ZTdlMTRjMTIyOTA5M2FiMDg4ZWNmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTY5Nyw3ICs2
OTcsNyBAQCBTdHJpbmcgTWVkaWFLZXlTZXNzaW9uOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFi
YXNlSWRlbnRpZmllcigpKTsKIH0KIAogYm9vbCBNZWRpYUtleVNlc3Npb246Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNw
cAppbmRleCA3M2YyZDI2MmRkOGZkMTFkNWJlNmFiOGMyZmM5NjZmZDlkMWMwNTY3Li43ZWZiNzlk
NTUzZmNmODY4ODc2NTk3MzBkZDhkZGQ0NTIzYmQ1NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dl
YktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJpbmcgV2ViS2l0
TWVkaWFLZXlTZXNzaW9uOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKICAgICBp
ZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChz
dG9yYWdlRGlyZWN0b3J5LCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJp
dHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKIH0KIAogYm9vbCBXZWJLaXRNZWRpYUtleVNlc3Npb246Omhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
Y3BwCmluZGV4IGQ3ZTQ3MjdjMDU4ZjA4ZDM0ODVjNTE0ZmJiNWY3YmY4NzczNGIwNTQuLjVhMmI2
ZWNkYTlkNzM4NzI3NDE1MWQzYjA0ODNjM2VhZjhlNzc0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC05MSw3ICs5MSw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbkludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0
eUVycm9yLCBBU0NJSUxpdGVyYWwoIklEQkZhY3Rvcnkub3BlbigpIGNhbGxlZCBpbiBhbiBpbnZh
bGlkIHNlY3VyaXR5IGNvbnRleHQiKSB9OwogCiAgICAgQVNTRVJUKGNvbnRleHQuc2VjdXJpdHlP
cmlnaW4oKSk7Ci0gICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGRhdGFiYXNlSWRlbnRpZmllcihu
YW1lLCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCktPmRhdGEo
KSB9LCBTZWN1cml0eU9yaWdpbkRhdGEgeyBjb250ZXh0LnRvcE9yaWdpbigpLmRhdGEoKSB9KTsK
KyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgZGF0YWJhc2VJZGVudGlmaWVyKG5hbWUsIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpjb250ZXh0LnNlY3VyaXR5T3JpZ2lu
KCkpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihjb250ZXh0LnRvcE9y
aWdpbigpKSk7CiAgICAgaWYgKCFkYXRhYmFzZUlkZW50aWZpZXIuaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIklEQkZhY3Rvcnku
b3BlbigpIGNhbGxlZCB3aXRoIGFuIGludmFsaWQgc2VjdXJpdHkgb3JpZ2luIikgfTsKIApAQCAt
MTExLDcgKzExMSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1ZXN0Pj4gSURCRmFj
dG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29uCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTZWN1cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoIklEQkZhY3RvcnkuZGVsZXRl
RGF0YWJhc2UoKSBjYWxsZWQgaW4gYW4gaW52YWxpZCBzZWN1cml0eSBjb250ZXh0IikgfTsKIAog
ICAgIEFTU0VSVChjb250ZXh0LnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIElEQkRhdGFiYXNlSWRl
bnRpZmllciBkYXRhYmFzZUlkZW50aWZpZXIobmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29u
dGV4dC5zZWN1cml0eU9yaWdpbigpLT5kYXRhKCkgfSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29u
dGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSk7CisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGRh
dGFiYXNlSWRlbnRpZmllcihuYW1lLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqY29udGV4dC5zZWN1cml0eU9yaWdpbigpKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4oY29udGV4dC50b3BPcmlnaW4oKSkpOwogICAgIGlmICghZGF0YWJhc2VJ
ZGVudGlmaWVyLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJv
ciwgQVNDSUlMaXRlcmFsKCJJREJGYWN0b3J5LmRlbGV0ZURhdGFiYXNlKCkgY2FsbGVkIHdpdGgg
YW4gaW52YWxpZCBzZWN1cml0eSBvcmlnaW4iKSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9T
ZXJ2ZXIuY3BwCmluZGV4IDJiMGZkYzUyNGI0NWI2MDZmZDRiNTlkZmIyMTlhNDUzMjExNjgyNTEu
LjllNWVlYTI5ZWE1YjdjYmZjMWQyNWY4NDdkNDJhM2UyMTk4NTIwZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG1h
aW5GcmFtZU8KIAogICAgIG1fZ2V0QWxsRGF0YWJhc2VOYW1lc0NhbGxiYWNrcy5hZGQoKytjYWxs
YmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICBtX2RlbGVnYXRlLT5nZXRBbGxEYXRh
YmFzZU5hbWVzKG1haW5GcmFtZU9yaWdpbi5kYXRhKCksIG9wZW5pbmdPcmlnaW4uZGF0YSgpLCBj
YWxsYmFja0lEKTsKKyAgICBtX2RlbGVnYXRlLT5nZXRBbGxEYXRhYmFzZU5hbWVzKFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1haW5GcmFtZU9yaWdpbiksIFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9wZW5pbmdPcmlnaW4pLCBjYWxsYmFja0lE
KTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFt
ZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFiYXNlTmFt
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
CmluZGV4IDQ2MWUwMWE5M2IzZDk3YTc4OTgyM2Q1M2M5MjNlMWU5MGQ1M2FkZmYuLmRkNzVhM2Q0
ZDVhOTA3NDQwMDY5MTI2MDQ2Zjc0NmYxZGM3NzBmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC03NjcsOSArNzY3LDkgQEAgVmVj
dG9yPFN0cmluZz4gRGF0YWJhc2U6OnRhYmxlTmFtZXMoKQogU2VjdXJpdHlPcmlnaW5EYXRhIERh
dGFiYXNlOjpzZWN1cml0eU9yaWdpbigpCiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpCi0gICAgICAgIHJldHVybiBtX2NvbnRleHRUaHJlYWRT
ZWN1cml0eU9yaWdpbi0+ZGF0YSgpOworICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4obV9jb250ZXh0VGhyZWFkU2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OwogICAgIGlmIChkYXRhYmFzZVRocmVhZCgpLmdldFRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuIG1fZGF0YWJhc2VUaHJlYWRTZWN1cml0eU9yaWdpbi0+ZGF0
YSgpOworICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4obV9kYXRhYmFzZVRocmVhZFNlY3VyaXR5T3JpZ2luLmdldCgpKTsKICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKaW5kZXggNDk3MTMxYzI3MGI0OTg4
YzI4MDYxMjM2NGRlNGU5MmM3YmRhNGY5OC4uZDJhNjVlMmVmNDZmMWM5NWUxNDU1NGVhZjY3NDM2
NzI4ZjVhNGVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcApAQCAtMjA5LDkgKzIwOSw5IEBAIHZvaWQgRGF0YWJh
c2VDb250ZXh0OjpkYXRhYmFzZUV4Y2VlZGVkUXVvdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBEYXRh
YmFzZURldGFpbHMKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkpOwogfQogCi1jb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIERhdGFiYXNl
Q29udGV4dDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorU2VjdXJpdHlPcmlnaW5EYXRhIERhdGFi
YXNlQ29udGV4dDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogewotICAgIHJldHVybiBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKTsKKyAgICByZXR1cm4g
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7CiB9CiAKIGJvb2wgRGF0YWJhc2VDb250ZXh0Ojpp
c0NvbnRleHRUaHJlYWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmgKaW5kZXggZDE4NjQ0ODg4ZmZhZWUwODlhOGRl
OGQxMjM1MzllNDcyOTEwOTIzZC4uNGMzYzQ2MzYzNWU0ZmMzZTExMTc0N2Y3NWEwYzExMDNkM2Fm
YzlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlQ29udGV4dC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRhdGFi
YXNlRXhjZWVkZWRRdW90YShjb25zdCBTdHJpbmcmIG5hbWUsIERhdGFiYXNlRGV0YWlscyk7CiAK
ICAgICB1c2luZyBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OworICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCiAgICAgYm9vbCBpc0Nv
bnRleHRUaHJlYWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IGJiZjQ0OTNiN2U5YTNjNTIz
YTNiOTllZjFkOGE5NDA3ZmM5NTNiYjUuLmI0YWRjNjYyODA3YzBkNTJlNDI3YWRmYTUxZmI3Mjgx
Y2JkYTczYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTI0OCw3ICsyNDgsNyBAQCBTdHJpbmcgRGF0YWJh
c2VNYW5hZ2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNv
bnN0IFN0cmluZwogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5mdWxsUGF0aEZv
ckRhdGFiYXNlKG9yaWdpbi5kYXRhKCksIG5hbWUsIGNyZWF0ZUlmRG9lc05vdEV4aXN0KTsKKyAg
ICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5mdWxsUGF0aEZvckRhdGFiYXNl
KFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbiksIG5hbWUsIGNy
ZWF0ZUlmRG9lc05vdEV4aXN0KTsKIH0KIAogRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlTWFuYWdl
cjo6ZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0eU9y
aWdpbiYgb3JpZ2luKQpAQCAtMjYzLDcgKzI2Myw3IEBAIERhdGFiYXNlRGV0YWlscyBEYXRhYmFz
ZU1hbmFnZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2Vj
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0
b24oKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihuYW1lLCBvcmlnaW4uZGF0YSgpKTsKKyAgICBy
ZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZXRhaWxzRm9yTmFtZUFuZE9yaWdp
bihuYW1lLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihvcmlnaW4pKTsK
IH0KIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmxvZ0Vycm9yTWVzc2FnZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA3ZjlmZWIxNGU3Y2RmNDdhN2UzZTlmMzdh
M2QxY2QyZWRhMTAxMzhlLi5hZDM2MjU4MjM4MzUxMGY2M2JlNGFlNGY2NWI3NTFiMjY0YWRmOTM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI2MTEsNyAr
MjYxMSw3IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIGlmIChzdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIGRvY3VtZW50KCku
c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwg
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQoKS5zZWN1cml0
eU9yaWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6d2Via2l0U2V0TWVkaWFLZXlzKFdlYktpdE1lZGlhS2V5cyogbWVkaWFLZXlzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDdkNjMyZGEzZWMzYTU0ZWRmNTQwZjQ5NDAwNGI2Yjlj
YzVkY2ExODQuLjBkMjVkYTAwMzNhNjRlMjE0MDgxNzYyODg3YWRkMjIxODQ0OWQ2NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8U3RvcmFnZUFy
ZWE+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKEVycm9yU3RyaW5n
JiBlcnJvcgogICAgIH0KIAogICAgIGlmICghaXNMb2NhbFN0b3JhZ2UpCi0gICAgICAgIHJldHVy
biBtX3BhZ2VBZ2VudC0+cGFnZSgpLnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVhKHRhcmdl
dEZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSk7CisgICAgICAgIHJl
dHVybiBtX3BhZ2VBZ2VudC0+cGFnZSgpLnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VBcmVhKFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRhcmdldEZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpKSk7CiAgICAgcmV0dXJuIG1fcGFnZUFnZW50LT5wYWdlKCku
c3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKCkubG9jYWxTdG9yYWdlQXJlYSgqdGFyZ2V0RnJhbWUt
PmRvY3VtZW50KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmlu
ZGV4IDFlZDNjYjE0MWFiMzc0MWQzMGEwOGEzNmVlZjUyNGU1ZDBhZWYwZjguLmQ4ODUwZmZhYTUw
NTBiMGRjZWQyMjdiYWIwNTA0ZjBmNjE4M2UyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwCkBAIC0zNzQsNyArMzc0LDcgQEAgY2xhc3MgRW1wdHlTdG9yYWdlTmFtZXNw
YWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyIHsKICAg
ICAgICAgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFN0b3JhZ2VUeXBlOjpMb2NhbDsgfQogICAgICAgICBzaXplX3QgbWVtb3J5Qnl0ZXNVc2VkQnlD
YWNoZSgpIGZpbmFsIHsgcmV0dXJuIDA7IH0KLSAgICAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsIHsgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luOyByZXR1cm4gb3JpZ2luLmdldCgpOyB9CisgICAg
ICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHsgfTsgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgRW1wdHlTdG9yYWdlTmFtZXNwYWNlIGZp
bmFsIDogcHVibGljIFN0b3JhZ2VOYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
ZmYyOTM4OTk3MDZkZTg5NWNlZjc1MDNjMGU4NTdmYWQyZmUxMjhkNi4uOWMxY2MzODBhMTFhYzZk
MzgxNGY3MzQxMmJhMDE0ODEwZjAwYzllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC00MzAs
NyArNDMwLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FsY3VsYXRlUXVvdGFG
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWcKICAgICBpZiAoc3RhdGVtZW50LnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRl
bWVudC5iaW5kVGV4dCgxLCBvcmlnaW4uZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAg
ICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlP
cmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgaW50IHJlc3VsdCA9IHN0
YXRlbWVudC5zdGVwKCk7CiAKICAgICAvLyBSZXR1cm4gdGhlIHF1b3RhLCBvciBpZiBpdCB3YXMg
bnVsbCB0aGUgZGVmYXVsdC4KQEAgLTQ1OCw3ICs0NTgsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpjYWxjdWxhdGVVc2FnZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiog
b3JpZwogICAgIGlmIChzdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDEsIG9yaWdpbi0+ZGF0YSgp
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9yaWdpbikuZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwogICAgIGludCByZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpOwogCiAgICAgaWYgKHJl
c3VsdCA9PSBTUUxJVEVfUk9XKSB7CkBAIC01MDEsNyArNTAxLDcgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6Y2FsY3VsYXRlUmVtYWluaW5nU2l6ZUZvck9yaWdpbkV4Y2x1ZGluZ0Nh
Y2hlKGNvbnMKICAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRlbWVudC5iaW5kVGV4dCgxLCBvcmlnaW4uZGF0
YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBzdGF0ZW1lbnQuYmluZFRleHQoMSwgU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50
aWZpZXIoKSk7CiAgICAgaWYgKGV4Y2x1ZGluZ0NhY2hlSWRlbnRpZmllciAhPSAwKQogICAgICAg
ICBzdGF0ZW1lbnQuYmluZEludDY0KDIsIGV4Y2x1ZGluZ0NhY2hlSWRlbnRpZmllcik7CiAgICAg
aW50IHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCk7CkBAIC01MzcsNyArNTM3LDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oY29uc3Qg
U2VjdXJpdHlPcmlnaW4qIG8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdXBkYXRlU3Rh
dGVtZW50LmJpbmRJbnQ2NCgxLCBxdW90YSk7Ci0gICAgdXBkYXRlU3RhdGVtZW50LmJpbmRUZXh0
KDIsIG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICB1cGRhdGVTdGF0
ZW1lbnQuYmluZFRleHQoMiwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
Km9yaWdpbikuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogCiAgICAgcmV0dXJuIGV4ZWN1dGVTdGF0
ZW1lbnQodXBkYXRlU3RhdGVtZW50KTsKIH0KQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwLCBH
cm91cFN0b3JhZ2VJRAogCiAgICAgc3RhdGVtZW50LmJpbmRJbnQ2NCgxLCB1cmxIb3N0SGFzaChn
cm91cC0+bWFuaWZlc3RVUkwoKSkpOwogICAgIHN0YXRlbWVudC5iaW5kVGV4dCgyLCBncm91cC0+
bWFuaWZlc3RVUkwoKSk7Ci0gICAgc3RhdGVtZW50LmJpbmRUZXh0KDMsIGdyb3VwLT5vcmlnaW4o
KS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIHN0YXRlbWVudC5iaW5kVGV4dCgz
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihncm91cC0+b3JpZ2luKCkp
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgIGlmICghZXhlY3V0ZVN0YXRlbWVudChzdGF0
ZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05NTcsNyArOTU3LDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4pCiAgICAgaWYgKGluc2VydE9yaWdpblN0YXRlbWVudC5wcmVwYXJlKCkg
IT0gU1FMSVRFX09LKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnNlcnRPcmlnaW5T
dGF0ZW1lbnQuYmluZFRleHQoMSwgb3JpZ2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkp
OworICAgIGluc2VydE9yaWdpblN0YXRlbWVudC5iaW5kVGV4dCgxLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAg
ICAgaW5zZXJ0T3JpZ2luU3RhdGVtZW50LmJpbmRJbnQ2NCgyLCBtX2RlZmF1bHRPcmlnaW5RdW90
YSk7CiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KGluc2VydE9yaWdpblN0YXRlbWVudCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyZDQy
M2NmNGZkMzY1MjIwOTVhNDhiMzRhNzljZDBiOGNmZTc0MGFlLi4zMWZiOTVjNGM2MjI2ZGFlN2M3
MTllMGM4MTJhYTIwNmNhYjAzNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC04
NzQsNyArODc0LDcgQEAgRXhjZXB0aW9uT3I8U3RvcmFnZSo+IERPTVdpbmRvdzo6c2Vzc2lvblN0
b3JhZ2UoKSBjb25zdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBhdXRvIHN0b3JhZ2VBcmVhID0gcGFnZS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFy
ZWEoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKKyAgICBhdXRvIHN0b3JhZ2VB
cmVhID0gcGFnZS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEoU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKTsKICAg
ICBtX3Nlc3Npb25TdG9yYWdlID0gU3RvcmFnZTo6Y3JlYXRlKG1fZnJhbWUsIFdURk1vdmUoc3Rv
cmFnZUFyZWEpKTsKICAgICByZXR1cm4gbV9zZXNzaW9uU3RvcmFnZS5nZXQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNjkzZThmOTE1NjcyYzdkNTNlZTli
NzM2NzM4NGFiZTBmMjJhODhmYy4uNmQyMzBiOWMzODAyNzY2OWQ1OGY5NGQ4ZjMyZDgzZTQzOTNk
ZDllMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTE0NSwxMyAr
MTQ1LDE1IEBAIGJvb2wgc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoY29uc3Qg
VVJMJiB1cmwpCiB9CiAKIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBVUkwm
IHVybCkKLSAgICA6IG1fZGF0YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwodXJsKSkKKyAg
ICA6IG1fcHJvdG9jb2wgeyB1cmwucHJvdG9jb2woKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkg
OiB1cmwucHJvdG9jb2woKS50b1N0cmluZygpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgfQor
ICAgICwgbV9ob3N0IHsgdXJsLmhvc3QoKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwu
aG9zdCgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgfQorICAgICwgbV9wb3J0IHsgdXJsLnBv
cnQoKSB9CiB7Ci0gICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0cyBhcyBtX2RhdGEuaG9zdCwg
YnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KLSAgICBtX2RvbWFpbiA9IG1fZGF0YS5ob3N0Owor
ICAgIC8vIGRvY3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2FuIGJlIHNldCBi
eSB0aGUgRE9NLgorICAgIG1fZG9tYWluID0gbV9ob3N0OwogCi0gICAgaWYgKG1fZGF0YS5wb3J0
ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX2RhdGEucG9ydC52YWx1ZSgpLCBtX2RhdGEu
cHJvdG9jb2wpKQotICAgICAgICBtX2RhdGEucG9ydCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAo
bV9wb3J0ICYmIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3BvcnQudmFsdWUoKSwgbV9wcm90
b2NvbCkpCisgICAgICAgIG1fcG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1
bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmlnaW5zIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4K
ICAgICBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyA9IGlzTG9jYWwoKTsKQEAgLTE2NCw3ICsxNjYs
OCBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB9CiAK
IFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbigpCi0gICAgOiBtX2RhdGEgeyBlbXB0eVN0
cmluZygpLCBlbXB0eVN0cmluZygpLCBzdGQ6Om51bGxvcHQgfQorICAgIDogbV9wcm90b2NvbCB7
IGVtcHR5U3RyaW5nKCkgfQorICAgICwgbV9ob3N0IHsgZW1wdHlTdHJpbmcoKSB9CiAgICAgLCBt
X2RvbWFpbiB7IGVtcHR5U3RyaW5nKCkgfQogICAgICwgbV9pc1VuaXF1ZSB7IHRydWUgfQogICAg
ICwgbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkgeyBJc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6
OlllcyB9CkBAIC0xNzIsOSArMTc1LDExIEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdp
bigpCiB9CiAKIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbiogb3RoZXIpCi0gICAgOiBtX2RhdGEgeyBvdGhlci0+bV9kYXRhLmlzb2xhdGVkQ29weSgp
IH0KKyAgICA6IG1fcHJvdG9jb2wgeyBvdGhlci0+bV9wcm90b2NvbC5pc29sYXRlZENvcHkoKSB9
CisgICAgLCBtX2hvc3QgeyBvdGhlci0+bV9ob3N0Lmlzb2xhdGVkQ29weSgpIH0KICAgICAsIG1f
ZG9tYWluIHsgb3RoZXItPm1fZG9tYWluLmlzb2xhdGVkQ29weSgpIH0KICAgICAsIG1fZmlsZVBh
dGggeyBvdGhlci0+bV9maWxlUGF0aC5pc29sYXRlZENvcHkoKSB9CisgICAgLCBtX3BvcnQgeyBv
dGhlci0+bV9wb3J0IH0KICAgICAsIG1faXNVbmlxdWUgeyBvdGhlci0+bV9pc1VuaXF1ZSB9CiAg
ICAgLCBtX3VuaXZlcnNhbEFjY2VzcyB7IG90aGVyLT5tX3VuaXZlcnNhbEFjY2VzcyB9CiAgICAg
LCBtX2RvbWFpbldhc1NldEluRE9NIHsgb3RoZXItPm1fZG9tYWluV2FzU2V0SW5ET00gfQpAQCAt
MjIzLDcgKzIyOCw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzUG90ZW50aWFsbHlUcnVzdHdv
cnRoeSgpIGNvbnN0CiAgICAgLy8gVGhpcyBjb2RlIGlzIHVzaW5nIGFuIGVudW0gaW5zdGVhZCBv
ZiBhbiBzdGQ6Om9wdGlvbmFsIGZvciB0aHJlYWQtc2FmZXR5LiBXb3JzdCBjYXNlIHNjZW5hcmlv
LCBzZXZlcmFsIHRocmVhZCB3aWxsIHJlYWQKICAgICAvLyAnVW5rbm93bicgdmFsdWUgY29uY3Vy
cmVudGx5IGFuZCB0aGV5J2xsIGFsbCBjYWxsIHNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0
d29ydGh5KCkgYW5kIGdldCB0aGUgc2FtZSByZXN1bHQuCiAgICAgaWYgKG1faXNQb3RlbnRpYWxs
eVRydXN0d29ydGh5ID09IElzUG90ZW50aWFsbHlUcnVzdHdvcnRoeTo6VW5rbm93bikKLSAgICAg
ICAgbV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkgPSBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlU
cnVzdHdvcnRoeShtX2RhdGEucHJvdG9jb2wsIG1fZGF0YS5ob3N0KSA/IElzUG90ZW50aWFsbHlU
cnVzdHdvcnRoeTo6WWVzIDogSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpObzsKKyAgICAgICAg
bV9pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkgPSBzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVz
dHdvcnRoeShtX3Byb3RvY29sLCBtX2hvc3QpID8gSXNQb3RlbnRpYWxseVRydXN0d29ydGh5OjpZ
ZXMgOiBJc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6Ok5vOwogICAgIHJldHVybiBtX2lzUG90ZW50
aWFsbHlUcnVzdHdvcnRoeSA9PSBJc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHk6OlllczsKIH0KIApA
QCAtMjcyLDkgKzI3Nyw5IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBT
ZWN1cml0eU9yaWdpbiYgb3RoZXIpIGNvbnN0CiAgICAgLy8gdGhpcyBpcyBhIHNlY3VyaXR5IHZ1
bG5lcmFiaWxpdHkuCiAKICAgICBib29sIGNhbkFjY2VzcyA9IGZhbHNlOwotICAgIGlmIChtX2Rh
dGEucHJvdG9jb2wgPT0gb3RoZXIubV9kYXRhLnByb3RvY29sKSB7CisgICAgaWYgKG1fcHJvdG9j
b2wgPT0gb3RoZXIubV9wcm90b2NvbCkgewogICAgICAgICBpZiAoIW1fZG9tYWluV2FzU2V0SW5E
T00gJiYgIW90aGVyLm1fZG9tYWluV2FzU2V0SW5ET00pIHsKLSAgICAgICAgICAgIGlmIChtX2Rh
dGEuaG9zdCA9PSBvdGhlci5tX2RhdGEuaG9zdCAmJiBtX2RhdGEucG9ydCA9PSBvdGhlci5tX2Rh
dGEucG9ydCkKKyAgICAgICAgICAgIGlmIChtX2hvc3QgPT0gb3RoZXIubV9ob3N0ICYmIG1fcG9y
dCA9PSBvdGhlci5tX3BvcnQpCiAgICAgICAgICAgICAgICAgY2FuQWNjZXNzID0gdHJ1ZTsKICAg
ICAgICAgfSBlbHNlIGlmIChtX2RvbWFpbldhc1NldEluRE9NICYmIG90aGVyLm1fZG9tYWluV2Fz
U2V0SW5ET00pIHsKICAgICAgICAgICAgIGlmIChtX2RvbWFpbiA9PSBvdGhlci5tX2RvbWFpbikK
QEAgLTM1OCw3ICszNjMsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0
IFVSTCYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmICFQTEFURk9STShJ
T1MpCi0gICAgaWYgKG1fZGF0YS5wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9jYWxGaWxl
KCkgJiYgIUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwgdXJsLmZp
bGVTeXN0ZW1QYXRoKCkpKQorICAgIGlmIChtX3Byb3RvY29sID09ICJmaWxlIiAmJiB1cmwuaXNM
b2NhbEZpbGUoKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShtX2ZpbGVQYXRo
LCB1cmwuZmlsZVN5c3RlbVBhdGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgog
CkBAIC0zNzEsNyArMzc2LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25z
dCBVUkwmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIGNhblJlcXVlc3QodXJsKTsKIAogICAg
IGlmIChTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRl
ZChwcm90b2NvbCkpCi0gICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fZGF0
YS5wcm90b2NvbCwgcHJvdG9jb2wpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hp
dGVMaXN0ZWQodGhpcywgdXJsKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobV9wcm90b2NvbCwgcHJvdG9jb2wpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJM
V2hpdGVMaXN0ZWQodGhpcywgdXJsKTsKIAogICAgIGlmIChTZWN1cml0eVBvbGljeTo6cmVzdHJp
Y3RBY2Nlc3NUb0xvY2FsKCkgJiYgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNMb2NhbChwcm90b2NvbCkpCiAgICAgICAgIHJldHVybiBjYW5Mb2FkTG9jYWxSZXNvdXJjZXMo
KSB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKHRoaXMsIHVybCk7
CkBAIC00NTYsNyArNDYxLDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpkb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbigpIGNvbnN0CiAgICAgaWYgKGlzSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1
cm4gaG9zdCgpOwogCi0gICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRQYXJ0aXRpb25DYWNo
ZUZvclVSTFNjaGVtZShtX2RhdGEucHJvdG9jb2wpKQorICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkUGFydGl0aW9uQ2FjaGVGb3JVUkxTY2hlbWUobV9wcm90b2NvbCkpCiAgICAgICAgIHJl
dHVybiBob3N0KCk7CiAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTQ3MCwyMSArNDc1
LDM1IEBAIHZvaWQgU2VjdXJpdHlPcmlnaW46OnNldEVuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9u
KCkKIAogYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNMb2NhbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwobV9kYXRhLnByb3Rv
Y29sKTsKKyAgICByZXR1cm4gU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNM
b2NhbChtX3Byb3RvY29sKTsKIH0KIAogU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygp
IGNvbnN0CiB7CiAgICAgaWYgKGlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIm51bGwiKTsKLSAgICBpZiAobV9kYXRhLnByb3RvY29sID09ICJmaWxlIiAmJiBtX2VuZm9y
Y2VzRmlsZVBhdGhTZXBhcmF0aW9uKQorICAgIGlmIChtX3Byb3RvY29sID09ICJmaWxlIiAmJiBt
X2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uKQogICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJudWxsIik7CiAgICAgcmV0dXJuIHRvUmF3U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBTZWN1cml0
eU9yaWdpbjo6dG9SYXdTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGEudG9TdHJp
bmcoKTsKKyAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpCisgICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoImZpbGU6Ly8iKTsKKworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIHJl
c3VsdC5yZXNlcnZlQ2FwYWNpdHkobV9wcm90b2NvbC5sZW5ndGgoKSArIG1faG9zdC5sZW5ndGgo
KSArIDEwKTsKKyAgICByZXN1bHQuYXBwZW5kKG1fcHJvdG9jb2wpOworICAgIHJlc3VsdC5hcHBl
bmRMaXRlcmFsKCI6Ly8iKTsKKyAgICByZXN1bHQuYXBwZW5kKG1faG9zdCk7CisKKyAgICBpZiAo
bV9wb3J0KSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJzonKTsKKyAgICAgICAgcmVzdWx0LmFw
cGVuZE51bWJlcihtX3BvcnQudmFsdWUoKSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC50
b1N0cmluZygpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgYXJlT3JpZ2luc01hdGNoaW5nKGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4xLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
MikKQEAgLTUzMyw3ICs1NTIsNyBAQCBSZWY8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJgogICAgIFN0cmlu
ZyBkZWNvZGVkSG9zdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKICAgICBhdXRv
IG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8i
KSk7CiAgICAgaWYgKHBvcnQgJiYgIWlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJv
dG9jb2wpKQotICAgICAgICBvcmlnaW4tPm1fZGF0YS5wb3J0ID0gcG9ydDsKKyAgICAgICAgb3Jp
Z2luLT5tX3BvcnQgPSBwb3J0OwogICAgIHJldHVybiBvcmlnaW47CiB9CiAKQEAgLTU1Niw3ICs1
NzUsMTMgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6ZXF1YWwoY29uc3QgU2VjdXJpdHlPcmlnaW4q
IG90aGVyKSBjb25zdAogCiBib29sIFNlY3VyaXR5T3JpZ2luOjppc1NhbWVTY2hlbWVIb3N0UG9y
dChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZGF0YSAh
PSBvdGhlci5tX2RhdGEpCisgICAgaWYgKG1faG9zdCAhPSBvdGhlci5tX2hvc3QpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3Byb3RvY29sICE9IG90aGVyLm1fcHJvdG9jb2wp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX3BvcnQgIT0gb3RoZXIubV9wb3J0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaXNMb2NhbCgpICYmICFwYXNzZXNG
aWxlQ2hlY2sob3RoZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDZl
NzkwOTAwNmM4YjIyYzE2MWZmZGVlM2RmZmE0MGVmYmRmM2RjN2YuLjY0ODFhMzg4MmMxZGVkMWRh
OTFlMzQzNWI0YTAyY2IzZTUzMzBmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzksMTAgKzc4LDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldERvbWFpbkZyb21ET00oY29uc3QgU3RyaW5nJiBuZXdEb21haW4pOwog
ICAgIGJvb2wgZG9tYWluV2FzU2V0SW5ET00oKSBjb25zdCB7IHJldHVybiBtX2RvbWFpbldhc1Nl
dEluRE9NOyB9CiAKLSAgICBjb25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLnByb3RvY29sOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLmhvc3Q7IH0KKyAgICBjb25zdCBTdHJpbmcmIHByb3RvY29sKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm90b2NvbDsgfQorICAgIGNvbnN0IFN0cmluZyYgaG9zdCgpIGNvbnN0IHsgcmV0
dXJuIG1faG9zdDsgfQogICAgIGNvbnN0IFN0cmluZyYgZG9tYWluKCkgY29uc3QgeyByZXR1cm4g
bV9kb21haW47IH0KLSAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLnBvcnQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KCkg
Y29uc3QgeyByZXR1cm4gbV9wb3J0OyB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYSBnaXZl
biBVUkwgaXMgc2VjdXJlLCBiYXNlZCBlaXRoZXIgZGlyZWN0bHkgb24gaXRzCiAgICAgLy8gb3du
IHByb3RvY29sLCBvciwgd2hlbiByZWxldmFudCwgb24gdGhlIHByb3RvY29sIG9mIGl0cyAiaW5u
ZXIgVVJMIgpAQCAtMjA2LDggKzIwNSw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGlz
TG9jYWxIb3N0T3JMb29wYmFja0lQQWRkcmVzcyhjb25zdCBTdHJpbmcmIGhvc3QpOwogCi0gICAg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9
Ci0KIHByaXZhdGU6CiAgICAgU2VjdXJpdHlPcmlnaW4oKTsKICAgICBleHBsaWNpdCBTZWN1cml0
eU9yaWdpbihjb25zdCBVUkwmKTsKQEAgLTIxOCwxNCArMjE1LDE2IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBUaGlzIG1ldGhvZCBjaGVja3MgdGhhdCB0aGUgc2NoZW1lIGZvciB0aGlzIG9yaWdpbiBp
cyBhbiBIVFRQLWZhbWlseQogICAgIC8vIHNjaGVtZSwgZS5nLiBIVFRQIGFuZCBIVFRQUy4KLSAg
ICBib29sIGlzSFRUUEZhbWlseSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5wcm90b2NvbCA9PSAi
aHR0cCIgfHwgbV9kYXRhLnByb3RvY29sID09ICJodHRwcyI7IH0KKyAgICBib29sIGlzSFRUUEZh
bWlseSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdG9jb2wgPT0gImh0dHAiIHx8IG1fcHJvdG9jb2wg
PT0gImh0dHBzIjsgfQogICAgIAogICAgIGVudW0gU2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eSB7
IEFsd2F5c0FsbG93RnJvbVRoaXJkUGFydHksIE1heWJlQWxsb3dGcm9tVGhpcmRQYXJ0eSB9Owog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuQWNjZXNzU3RvcmFnZShjb25zdCBTZWN1cml0eU9y
aWdpbiosIFNob3VsZEFsbG93RnJvbVRoaXJkUGFydHkgPSBNYXliZUFsbG93RnJvbVRoaXJkUGFy
dHkpIGNvbnN0OwogCi0gICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fZGF0YTsKKyAgICBTdHJpbmcg
bV9wcm90b2NvbDsKKyAgICBTdHJpbmcgbV9ob3N0OwogICAgIFN0cmluZyBtX2RvbWFpbjsKICAg
ICBTdHJpbmcgbV9maWxlUGF0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBtX3BvcnQ7
CiAgICAgYm9vbCBtX2lzVW5pcXVlIHsgZmFsc2UgfTsKICAgICBib29sIG1fdW5pdmVyc2FsQWNj
ZXNzIHsgZmFsc2UgfTsKICAgICBib29sIG1fZG9tYWluV2FzU2V0SW5ET00geyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDJhYWM4ZWU4
ZDNiZGIwYjVhZGQ4NjMxNTA1NDUwMjY0YzFjMjc1OTIuLmU5MGFiODIxZjc4ZmQ1NTZmZjU2ODdk
MzBlOWYyZjc2MGIzOTY0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5jcHAKQEAgLTMyLDMyICszMiwzNyBAQAogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6dG9TdHJpbmcoKSBjb25zdAorU2VjdXJpdHlPcmln
aW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICBpZiAocHJvdG9jb2wgPT0gImZpbGUi
KQotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJmaWxlOi8vIik7CisgICAgU2VjdXJpdHlP
cmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YTsKKworICAgIHNlY3VyaXR5T3JpZ2luRGF0YS5w
cm90b2NvbCA9IHNlY3VyaXR5T3JpZ2luLnByb3RvY29sKCk7CisgICAgc2VjdXJpdHlPcmlnaW5E
YXRhLmhvc3QgPSBzZWN1cml0eU9yaWdpbi5ob3N0KCk7CisgICAgc2VjdXJpdHlPcmlnaW5EYXRh
LnBvcnQgPSBzZWN1cml0eU9yaWdpbi5wb3J0KCk7CisKKyAgICByZXR1cm4gc2VjdXJpdHlPcmln
aW5EYXRhOworfQogCi0gICAgaWYgKCFwb3J0KQotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhw
cm90b2NvbCwgIjovLyIsIGhvc3QpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCAi
Oi8vIiwgaG9zdCwgJzonLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKnBvcnQpKTsKK1N0cmluZyBT
ZWN1cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWFrZVN0
cmluZyhwcm90b2NvbCwgIjovLyIsIGhvc3QsICI6IiwgU3RyaW5nOjpudW1iZXIocG9ydC52YWx1
ZV9vcigwKSkpOwogfQogCiBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRnJhbWUoRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVy
biBTZWN1cml0eU9yaWdpbkRhdGEgeyB9OworICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5E
YXRhKCk7CiAgICAgCi0gICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3Vt
ZW50KQotICAgICAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgfTsKKyAgICAgICAgcmV0
dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSgpOwogCi0gICAgcmV0dXJuIGRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpLmRhdGEoKTsKKyAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpOwogfQogCiBSZWY8U2VjdXJp
dHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luRGF0YTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggNzk5MDIzOWM4ZGRhYzIz
OWJiMzkyYmU0NGVjNDIyYzAzMTUyYmM2Zi4uNWY1NWY5NDJiODFmY2ZlMDBiZmQ0M2JjMTA5OTZm
M2NkYzI0NzE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBA
IC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiVVJMLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NDUsMTUgKzQ1LDggQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAgICAgewogICAgIH0K
ICAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU2VjdXJpdHlPcmlnaW5EYXRhIGZyb21T
ZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBTZWN1cml0eU9yaWdpbkRhdGEgZnJvbUZyYW1lKEZyYW1lKik7Ci0gICAgc3RhdGlj
IFNlY3VyaXR5T3JpZ2luRGF0YSBmcm9tVVJMKGNvbnN0IFVSTCYgdXJsKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YSB7Ci0gICAgICAgICAgICB1cmwucHJvdG9jb2wo
KS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwucHJvdG9jb2woKS50b1N0cmluZygpLmNv
bnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCksCi0gICAgICAgICAgICB1cmwuaG9zdCgpLmlzTnVsbCgp
ID8gZW1wdHlTdHJpbmcoKSA6IHVybC5ob3N0KCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSwK
LSAgICAgICAgICAgIHVybC5wb3J0KCkKLSAgICAgICAgfTsKLSAgICB9CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWEuaAppbmRleCA5NzMyYjY2YzdhZjg1NWFmOGVmM2Zh
NjdjYzBjYWQ5NDkwYjg2NDAwLi41MzQxY2E2NWU4OGZjNzI4Mzc2MGVkYWFjNWI2ZThmZmE4ZDA0
MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYS5oCkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIHsgfQogCi0gICAgdmlydHVhbCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgPSAwOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDY5YzFiMzM1MzA4YmJmY2Q5
N2JhNDg1NjUzZTE2YTZjOTc1OTVjNGYuLjhjNGFmNDJmOGFhMTk1YjNjNmYyYzE0NWMyODhjODBk
ZDI4OTRhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmxvY2FsU3RvcmFnZUFyZWEoRG9jdW1lbnQmIGRvY3Vt
ZW4KICAgICBlbHNlCiAgICAgICAgIHN0b3JhZ2VOYW1lc3BhY2UgPSAmbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKCk7CiAKLSAgICByZXR1cm4gc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFnZUFyZWEoZG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOworICAgIHJldHVybiBzdG9yYWdlTmFtZXNw
YWNlLT5zdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihk
b2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSk7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2UmIFN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcjo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA0ZmMyMzNmNjJiN2E5NzJhZGE3Y2U3MmI0MTRkMTAz
OGRmZjJmZGQ4Li5hYThhNTJlZGM5ZTdiN2I1YzhjMjdkY2JjMGNjNjYyYjhkYWU5OGJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC00MzI0LDcgKzQzMjQsNyBAQCB2b2lk
IEludGVybmFsczo6Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbihET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJgogICAgICAgICBpZiAoIW1fY2FjaGVTdG9yYWdlQ29ubmVjdGlv
bikKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKENsaWVudE9yaWdpbiB7IGRvY3VtZW50LT50
b3BPcmlnaW4oKS5kYXRhKCksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9LCBb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvICYmIHJlc3VsdCkgbXV0YWJsZSB7Cisg
ICAgbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uLT5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKENs
aWVudE9yaWdpbiB7IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3Vt
ZW50LT50b3BPcmlnaW4oKSksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKSB9LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldIChhdXRvICYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCAhcmVzdWx0KTsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAKaW5kZXggYWIwMDdjOTJiNDdlZDc3ZmQ3ZTE4ODAwOWFlNTU0N2NhZjNkNDJj
ZC4uMjUwMTE0ZWYyNTBlZmZhNGU0NmQ5ZDE2MTYzNzQ5NWU1ZDllMmQ0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAg
Q09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFkZFJlZ2lzdHJhdGlvbjogUmVnaXN0
ZXJpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZp
ZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCiAgICAgam9iRGF0YS5jbGllbnRDcmVh
dGlvblVSTCA9IGNvbnRleHQtPnVybCgpOwotICAgIGpvYkRhdGEudG9wT3JpZ2luID0gY29udGV4
dC0+dG9wT3JpZ2luKCkuZGF0YSgpOworICAgIGpvYkRhdGEudG9wT3JpZ2luID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29udGV4dC0+dG9wT3JpZ2luKCkpOwogICAg
IGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjsKICAgICBqb2JE
YXRhLnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwogCkBAIC0xOTYsNyArMTk2LDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgVVJM
JiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIGpvYkRh
dGEobV9zd0Nvbm5lY3Rpb24tPnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGNvbnRleHRJ
ZGVudGlmaWVyKCkpOwogICAgIGpvYkRhdGEuY2xpZW50Q3JlYXRpb25VUkwgPSBjb250ZXh0LT51
cmwoKTsKLSAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IGNvbnRleHQtPnRvcE9yaWdpbigpLmRhdGEo
KTsKKyAgICBqb2JEYXRhLnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3Vy
aXR5T3JpZ2luKGNvbnRleHQtPnRvcE9yaWdpbigpKTsKICAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2
aWNlV29ya2VySm9iVHlwZTo6VW5yZWdpc3RlcjsKICAgICBqb2JEYXRhLnNjb3BlVVJMID0gc2Nv
cGVVUkw7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAKICAg
ICBTZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhKG1fc3dDb25uZWN0aW9uLT5zZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcigpLCBjb250ZXh0SWRlbnRpZmllcigpKTsKICAgICBqb2JEYXRhLmNs
aWVudENyZWF0aW9uVVJMID0gY29udGV4dC51cmwoKTsKLSAgICBqb2JEYXRhLnRvcE9yaWdpbiA9
IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpOworICAgIGpvYkRhdGEudG9wT3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oY29udGV4dC50b3BPcmlnaW4oKSk7
CiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZTsKICAgICBq
b2JEYXRhLnNjb3BlVVJMID0gc2NvcGVVUkw7CiAgICAgam9iRGF0YS5zY3JpcHRVUkwgPSBzY3Jp
cHRVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5kZXggMWMzZDc0NmIyM2RiOTNl
MzU2ZjIyZTYzMTIwYjFjZDRmNGNkYjBjOS4uYjg0YzY2ZThmNWVlMzJkOGJhNzg1ZDQxZjgyM2Q2
MzhmMmU4OGUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcApAQCAtNzcsMTIgKzc3
LDEzIEBAIGJvb2wgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6b3JpZ2luSXNNYXRjaGlu
Zyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvCiAgICAgcmV0dXJuIHByb3RvY29sSG9zdEFu
ZFBvcnRBcmVFcXVhbChjbGllbnRVUkwsIG1fc2NvcGUpOwogfQogCi1ib29sIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXk6OnJlbGF0ZXNUb09yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIHNlY3VyaXR5T3JpZ2luKSBjb25zdAorYm9vbCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5OjpyZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QK
IHsKLSAgICBpZiAobV90b3BPcmlnaW4gPT0gc2VjdXJpdHlPcmlnaW4pCisgICAgaWYgKG1fdG9w
T3JpZ2luID09IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbikp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbVVSTChtX3Njb3BlKSA9PSBzZWN1cml0eU9yaWdpbjsKKyAgICBhdXRvIHNjb3BlT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3Njb3BlKTsKKyAgICByZXR1cm4gc2NvcGVPcmln
aW4tPmlzU2FtZU9yaWdpbkFzKG9yaWdpbik7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyIHNlcGFy
YXRvckNoYXJhY3RlciA9ICdfJzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCmluZGV4IDcxMGY0
MTJiNDcyZDhmMTc0MmUwYmVlNDhkNTAyYmU4OWE5YTAzOTkuLjIzOWEzMDBiMTdmYWU3OGUxMTdm
YWNlZWE0OTBlNWEzYTUyMjk1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaApAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiBzY29wZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2NvcGU7IH0KICAgICB2b2lkIHNldFNjb3BlKFVSTCYmIHNjb3BlKSB7IG1fc2NvcGUgPSBX
VEZNb3ZlKHNjb3BlKTsgfQogCi0gICAgYm9vbCByZWxhdGVzVG9PcmlnaW4oY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJikgY29uc3Q7CisgICAgYm9vbCByZWxhdGVzVG9PcmlnaW4oY29uc3QgU2Vj
dXJpdHlPcmlnaW4mKSBjb25zdDsKIAogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuY3BwCmluZGV4IGYwMWZiMTYxY2U4Yzg0
ODVkNTYyNjJlYjZhYzY3MTQxNGRjMDJjNDEuLjVlYTQ1Yjk1NWRmZjU3NDMyNzVkNWQwMDcxOWYy
ZWMyZGQ4NGI4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dPcmlnaW5TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV09yaWdpblN0b3JlLmNwcApAQCAtMzIsMTcgKzMyLDE3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTV09yaWdpblN0b3JlOjphZGQoY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBvcmlnaW4pCit2b2lkIFNXT3JpZ2luU3RvcmU6OmFkZChjb25zdCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKQogewotICAgICsrbV9vcmlnaW5Db3VudHMuZW5zdXJlKG9yaWdpbiwg
WyZdIHsKKyAgICArK21fb3JpZ2luQ291bnRzLmVuc3VyZShvcmlnaW4udG9TdHJpbmcoKSwgWyZd
IHsKICAgICAgICAgYWRkVG9TdG9yZShvcmlnaW4pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgU1dPcmlnaW5TdG9yZTo6cmVtb3ZlKGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luKQordm9pZCBTV09yaWdpblN0b3JlOjpyZW1vdmUo
Y29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
cmlnaW5Db3VudHMuZmluZChvcmlnaW4pOworICAgIGF1dG8gaXRlcmF0b3IgPSBtX29yaWdpbkNv
dW50cy5maW5kKG9yaWdpbi50b1N0cmluZygpKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9v
cmlnaW5Db3VudHMuZW5kKCkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX29yaWdpbkNvdW50cy5l
bmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTQsOSArNTQsOSBAQCB2b2lkIFNXT3JpZ2luU3Rv
cmU6OnJlbW92ZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKICAgICByZW1vdmVG
cm9tU3RvcmUob3JpZ2luKTsKIH0KIAotdm9pZCBTV09yaWdpblN0b3JlOjpjbGVhcihjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKK3ZvaWQgU1dPcmlnaW5TdG9yZTo6Y2xlYXIoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBtX29yaWdpbkNvdW50cy5yZW1vdmUo
b3JpZ2luKTsKKyAgICBtX29yaWdpbkNvdW50cy5yZW1vdmUob3JpZ2luLnRvU3RyaW5nKCkpOwog
ICAgIHJlbW92ZUZyb21TdG9yZShvcmlnaW4pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXT3JpZ2luU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCmluZGV4IGNiMjhiMzk0
MTk5MjlmYzJkYWQ0ZWI3YmQ3ZGVjZWUyMDlkOTRjYTEuLmUxMWU0NTExZmUxOTgwOGY2OGZkYWZk
NDE3MWRjODA5Y2ZiOGVhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dPcmlnaW5TdG9yZS5oCkBAIC0yNywyOSArMjcsMzIgQEAKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworCiBjbGFzcyBTV09yaWdpblN0b3JlIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TV09yaWdp
blN0b3JlKCkgPSBkZWZhdWx0OwogCi0gICAgdm9pZCBhZGQoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJik7Ci0gICAgdm9pZCByZW1vdmUoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7Ci0gICAg
dm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKKyAgICB2b2lkIGFkZChjb25z
dCBTZWN1cml0eU9yaWdpbiYpOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
Jik7CisgICAgdm9pZCBjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbiYpOwogICAgIHZvaWQgY2xl
YXJBbGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRDb21wbGV0ZSgpID0gMDsKIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgYWRkVG9TdG9yZShjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21TdG9yZShjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZFRvU3RvcmUoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21TdG9yZShjb25z
dCBTZWN1cml0eU9yaWdpbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTdG9yZSgpID0g
MDsKIAotICAgIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCB1aW50NjRfdD4gbV9vcmlnaW5D
b3VudHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX29yaWdpbkNvdW50czsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggYTBiN2ZjMmU4MTQxN2E3ZjNhYzgx
MTFkOGE0NzM0YWUwYjRkYjhiNS4uYmVlZjBlMzFjMjcxYTlhY2E2NWE5ZDEzYjc5NzFhZDI0YzMx
NDQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKQEAgLTE1MywxMiArMTUzLDEyIEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lz
dHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0
CiAgICAgYXV0byBhZGRSZXN1bHQyID0gbV9yZWdpc3RyYXRpb25zQnlJRC5hZGQocmVnaXN0cmF0
aW9uUHRyLT5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvblB0cik7CiAgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQyLCBhZGRSZXN1bHQyLmlzTmV3RW50cnkpOwogCi0gICAgbV9vcmlnaW5TdG9y
ZS0+YWRkKGtleS50b3BPcmlnaW4oKSk7CisgICAgbV9vcmlnaW5TdG9yZS0+YWRkKGtleS50b3BP
cmlnaW4oKS5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6cmVtb3ZlUmVn
aXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSkKIHsKLSAg
ICBhdXRvIHRvcE9yaWdpbiA9IGtleS50b3BPcmlnaW4oKTsKKyAgICBhdXRvIHRvcE9yaWdpbiA9
IGtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpOwogICAgIGF1dG8gcmVnaXN0cmF0aW9u
ID0gbV9yZWdpc3RyYXRpb25zLnRha2Uoa2V5KTsKICAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsK
ICAgICBib29sIHdhc1JlbW92ZWQgPSBtX3JlZ2lzdHJhdGlvbnNCeUlELnJlbW92ZShyZWdpc3Ry
YXRpb24tPmlkZW50aWZpZXIoKSk7CkBAIC0yMDUsMjkgKzIwNSwyOSBAQCB2b2lkIFNXU2VydmVy
OjpjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiAgICAgbV9yZWdpc3RyYXRpb25TdG9yZS5jbGVhckFsbChXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmNsZWFyKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgU1dTZXJ2ZXI6OmNsZWFyKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmln
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoIW1faW1wb3J0Q29tcGxldGVkKSB7Ci0gICAgICAgIG1fY2xlYXJDb21wbGV0aW9uQ2Fs
bGJhY2tzLmFwcGVuZChbdGhpcywgc2VjdXJpdHlPcmlnaW4sIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBtX2NsZWFy
Q29tcGxldGlvbkNhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIG9yaWdpbiA9IG1ha2VSZWYob3JpZ2lu
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbXBvcnRDb21wbGV0ZWQpOwotICAgICAgICAg
ICAgY2xlYXIoc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgICAgIGNsZWFyKG9yaWdpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
ICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fam9iUXVldWVzLnJlbW92
ZUlmKFsmXShhdXRvJiBrZXlBbmRWYWx1ZSkgewotICAgICAgICByZXR1cm4ga2V5QW5kVmFsdWUu
a2V5LnJlbGF0ZXNUb09yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgICAgIHJldHVybiBrZXlB
bmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbik7CiAgICAgfSk7CiAKICAgICBWZWN0
b3I8U1dTZXJ2ZXJSZWdpc3RyYXRpb24qPiByZWdpc3RyYXRpb25zVG9SZW1vdmU7CiAgICAgZm9y
IChhdXRvJiBrZXlBbmRWYWx1ZSA6IG1fcmVnaXN0cmF0aW9ucykgewotICAgICAgICBpZiAoa2V5
QW5kVmFsdWUua2V5LnJlbGF0ZXNUb09yaWdpbihzZWN1cml0eU9yaWdpbikpCisgICAgICAgIGlm
IChrZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKG9yaWdpbikpCiAgICAgICAgICAgICBy
ZWdpc3RyYXRpb25zVG9SZW1vdmUuYXBwZW5kKGtleUFuZFZhbHVlLnZhbHVlLmdldCgpKTsKICAg
ICB9CiAKICAgICBmb3IgKGF1dG8mIGNvbnRleHREYXRhcyA6IG1fcGVuZGluZ0NvbnRleHREYXRh
cy52YWx1ZXMoKSkgewogICAgICAgICBjb250ZXh0RGF0YXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZd
KGF1dG8mIGNvbnRleHREYXRhKSB7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dERhdGEucmVn
aXN0cmF0aW9uLmtleS5yZWxhdGVzVG9PcmlnaW4oc2VjdXJpdHlPcmlnaW4pOworICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHREYXRhLnJlZ2lzdHJhdGlvbi5rZXkucmVsYXRlc1RvT3JpZ2luKG9y
aWdpbik7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtNDk4LDEwICs0OTgsMTAgQEAgdm9pZCBT
V1NlcnZlcjo6dXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXImIGoKIAogdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRh
KFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiB7Ci0gICAgYXV0byBzZWN1cml0eU9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChkYXRhLnNjcmlwdFVSTCk7Ci0gICAg
YXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlv
bkZvck9yaWdpbihzZWN1cml0eU9yaWdpbik7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKGRhdGEuc2NyaXB0VVJMKTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9yT3JpZ2luKG9yaWdpbik7CiAg
ICAgaWYgKCFjb25uZWN0aW9uKSB7Ci0gICAgICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5lbnN1
cmUoV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIFtdIHsKKyAgICAgICAgbV9wZW5kaW5nQ29udGV4
dERhdGFzLmVuc3VyZShXVEZNb3ZlKG9yaWdpbiksIFtdIHsKICAgICAgICAgICAgIHJldHVybiBW
ZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiB7IH07CiAgICAgICAgIH0pLml0ZXJhdG9y
LT52YWx1ZS5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTUxMiwx
MSArNTEyLDExIEBAIHZvaWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQogCiB2b2lkIFNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRD
b25uZWN0aW9uKQogewotICAgIGF1dG8gcGVuZGluZ0NvbnRleHREYXRhcyA9IG1fcGVuZGluZ0Nv
bnRleHREYXRhcy50YWtlKGNvbnRleHRDb25uZWN0aW9uLnNlY3VyaXR5T3JpZ2luKCkpOworICAg
IGF1dG8gcGVuZGluZ0NvbnRleHREYXRhcyA9IG1fcGVuZGluZ0NvbnRleHREYXRhcy50YWtlKCZj
b250ZXh0Q29ubmVjdGlvbi5vcmlnaW4oKSk7CiAgICAgZm9yIChhdXRvJiBkYXRhIDogcGVuZGlu
Z0NvbnRleHREYXRhcykKICAgICAgICAgaW5zdGFsbENvbnRleHREYXRhKGRhdGEpOwogCi0gICAg
YXV0byBzZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMgPSBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0
cy50YWtlKGNvbnRleHRDb25uZWN0aW9uLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIGF1dG8gc2Vy
dmljZVdvcmtlclJ1blJlcXVlc3RzID0gbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMudGFrZSgm
Y29udGV4dENvbm5lY3Rpb24ub3JpZ2luKCkpOwogICAgIGZvciAoYXV0byYgaXRlbSA6IHNlcnZp
Y2VXb3JrZXJSdW5SZXF1ZXN0cykgewogICAgICAgICBib29sIHN1Y2Nlc3MgPSBydW5TZXJ2aWNl
V29ya2VyKGl0ZW0ua2V5KTsKICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGl0ZW0udmFs
dWUpCkBAIC02NDEsMTEgKzY0MSwxMSBAQCB2b2lkIFNXU2VydmVyOjp0ZXJtaW5hdGVXb3JrZXJJ
bnRlcm5hbChTV1NlcnZlcldvcmtlciYgd29ya2VyLCBUZXJtaW5hdGlvbk1vZGUgbQogICAgIH07
CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzRm9yT3JpZ2luQXNUZXJtaW5hdGVk
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIFNXU2VydmVy
OjptYXJrQWxsV29ya2Vyc0Zvck9yaWdpbkFzVGVybWluYXRlZChjb25zdCBTZWN1cml0eU9yaWdp
biYgb3JpZ2luKQogewogICAgIFZlY3RvcjxTV1NlcnZlcldvcmtlcio+IHRlcm1pbmF0ZWRXb3Jr
ZXJzOwogICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtl
cnMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHdvcmtlci0+c2VjdXJpdHlPcmlnaW4oKSA9PSBz
ZWN1cml0eU9yaWdpbikKKyAgICAgICAgaWYgKG9yaWdpbi5pc1NhbWVTY2hlbWVIb3N0UG9ydCh3
b3JrZXItPnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICAgICAgdGVybWluYXRlZFdvcmtlcnMu
YXBwZW5kKHdvcmtlci5wdHIoKSk7CiAgICAgfQogICAgIGZvciAoYXV0byYgdGVybWluYXRlZFdv
cmtlciA6IHRlcm1pbmF0ZWRXb3JrZXJzKQpAQCAtNzc5LDcgKzc3OSw3IEBAIHZvaWQgU1dTZXJ2
ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xp
ZW50T3JpZ2luLCBTCiAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVdvcmtlcih3b3JrZXIp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFtX2NsaWVudHNCeVNlY3VyaXR5T3Jp
Z2luLmNvbnRhaW5zKGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4pKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNv
bm5lY3Rpb25Gb3JPcmlnaW4oY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbikpCisgICAgICAgICAg
ICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmNvbm5lY3Rpb25Gb3JPcmlnaW4oY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9y
aWdpbigpKSkKICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbk1heU5v
TG9uZ2VyQmVOZWVkZWQoKTsKICAgICAgICAgICAgIH0KIApAQCAtODA1LDkgKzgwNSw5IEBAIHZv
aWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAgbV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0
aW9uLnJlbW92ZShyZWdpc3RyYXRpb25JdGVyYXRvcik7CiB9CiAKLWJvb2wgU1dTZXJ2ZXI6Om5l
ZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIHNlY3VyaXR5T3JpZ2luKSBjb25zdAorYm9vbCBTV1NlcnZlcjo6bmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4p
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY2xpZW50c0J5U2VjdXJpdHlPcmlnaW4uY29udGFpbnMo
c2VjdXJpdHlPcmlnaW4pOworICAgIHJldHVybiBtX2NsaWVudHNCeVNlY3VyaXR5T3JpZ2luLmNv
bnRhaW5zKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbikpOwog
fQogCiB2b2lkIFNXU2VydmVyOjpyZXNvbHZlUmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0cyhTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGMxM2Y0ODI0NzMzNzJlMjZlZmM4
NDc2NDc5N2ZlZmE2YWIyMGVlOTQuLjYwNmRiNDZhZDAyN2NmMWJjNTVhZjc3MWI4ODI3ZjEwMDIz
NDUyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudElkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJSZWdpc3RyYXRpb25TdG9yZS5oIgogI2luY2x1ZGUgIlNXU2VydmVyV29y
a2VyLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCisjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW5IYXNoLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudERhdGEuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJKb2IuaCIKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
flNXU2VydmVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQWxsKFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFy
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgU1dTZXJ2ZXJSZWdp
c3RyYXRpb24qIGdldFJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5Jik7CiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVy
UmVnaXN0cmF0aW9uPiYmKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gc2VydmljZVdvcmtlckNsaWVudFdpdGhP
cmlnaW5CeUlEKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJXb3JrZXIqIGFj
dGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtBbGxXb3JrZXJzRm9yT3Jp
Z2luQXNUZXJtaW5hdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mKTsKICAgICAKICAgICBDb25uZWN0aW9uKiBnZXRDb25uZWN0aW9uKFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gbV9jb25uZWN0aW9u
cy5nZXQoaWRlbnRpZmllcik7IH0KICAgICBTV09yaWdpblN0b3JlJiBvcmlnaW5TdG9yZSgpIHsg
cmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMoRnVuY3Rpb248
dm9pZChjb25zdCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CiAKICAgICBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQotICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJikgY29uc3Q7CiAKICAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXkoKSB7IG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNz
VGVybWluYXRpb25EZWxheSA9IHRydWU7IH0KIApAQCAtMjI5LDggKzIyOSw4IEBAIHByaXZhdGU6
CiAKICAgICBVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4gbV9vcmlnaW5TdG9yZTsKICAgICBSZWdp
c3RyYXRpb25TdG9yZSBtX3JlZ2lzdHJhdGlvblN0b3JlOwotICAgIEhhc2hNYXA8U2VjdXJpdHlP
cmlnaW5EYXRhLCBWZWN0b3I8U2VydmljZVdvcmtlckNvbnRleHREYXRhPj4gbV9wZW5kaW5nQ29u
dGV4dERhdGFzOwotICAgIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBIYXNoTWFwPFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBWZWN0b3I8UnVuU2VydmljZVdvcmtlckNhbGxiYWNrPj4+IG1f
c2VydmljZVdvcmtlclJ1blJlcXVlc3RzOworICAgIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiwgVmVjdG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+IG1fcGVuZGluZ0NvbnRleHRE
YXRhczsKKyAgICBIYXNoTWFwPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4sIEhhc2hNYXA8U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFZlY3RvcjxSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2s+Pj4gbV9z
ZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHM7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7
CiAgICAgYm9vbCBtX2ltcG9ydENvbXBsZXRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3Vs
ZERpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDNjMjYxNzJmMzJm
NWIxMDE5MTgxYjc3ZTFlOTY4OGMxOTAwMmY0MGEuLjZhYTVhMmE5ZmJkMjM2NjM5YjU3NDQwMjJj
YjM4MjYyOWUxYjVkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIlNXU2VydmVyLmgiCiAjaW5jbHVkZSAi
U1dTZXJ2ZXJXb3JrZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzks
MjkgKzQwLDI5IEBAIHN0YXRpYyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVy
IGdlbmVyYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkCiAgICAgcmV0dXJuIGdlbmVyYXRl
T2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyVHlw
ZT4oKTsKIH0KIAotc3RhdGljIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24qPiYgYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpCitzdGF0aWMgSGFz
aE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24q
PiYgYWxsQ29ubmVjdGlvbnNCeU9yaWdpbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24q
Pj4gY29ubmVjdGlvbnNCeU9yaWdpbjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qPj4g
Y29ubmVjdGlvbnNCeU9yaWdpbjsKICAgICByZXR1cm4gY29ubmVjdGlvbnNCeU9yaWdpbjsKIH0K
IAotU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxTZWN1cml0
eU9yaWdpbj4mJiBvcmlnaW4pCiAgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllcigpKQotICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1
cml0eU9yaWdpbikKKyAgICAsIG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IGFsbENvbm5lY3Rpb25zQnlPcmlnaW4oKS5hZGQobV9zZWN1cml0eU9yaWdpbiwg
dGhpcyk7CisgICAgYXV0byByZXN1bHQgPSBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkuYWRkKG1f
b3JpZ2luLmNvcHlSZWYoKSwgdGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5KTsKIH0KIAogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGFsbENvbm5lY3Rp
b25zQnlPcmlnaW4oKS5yZW1vdmUobV9zZWN1cml0eU9yaWdpbik7CisgICAgYXV0byByZXN1bHQg
PSBhbGxDb25uZWN0aW9uc0J5T3JpZ2luKCkucmVtb3ZlKG1fb3JpZ2luLnB0cigpKTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIH0KIAotU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Gb3JPcmlnaW4o
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbikKK1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uRm9y
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgcmV0dXJuIGFsbENv
bm5lY3Rpb25zQnlPcmlnaW4oKS5nZXQoc2VjdXJpdHlPcmlnaW4pOworICAgIHJldHVybiBhbGxD
b25uZWN0aW9uc0J5T3JpZ2luKCkuZ2V0KCZjb25zdF9jYXN0PFNlY3VyaXR5T3JpZ2luJj4ob3Jp
Z2luKSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250
ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggMmU2MDRlZjJjYjU0N2MxNWQ1MzhjZGQ4
N2Y4NWQ4OWVjODJlYjU3MC4uNmYxMDJiYzUyNWI3MGQwNTM0ZTdmNzEwYTQ0ZjI1OTk4MzZhYTli
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0yNyw3ICsyNyw3
IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbkRhdGEuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgpAQCAtNzQsMTggKzc0
LDE4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hdGNoQWxsKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xh
aW0odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
IAotICAgIHN0YXRpYyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbm5lY3Rpb25Gb3JP
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgc3RhdGljIFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiogY29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biYpOwogCi0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW47IH0KKyAgICBTZWN1cml0eU9yaWdpbiYgb3Jp
Z2luKCkgeyByZXR1cm4gbV9vcmlnaW4uZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjb25u
ZWN0aW9uTWF5Tm9Mb25nZXJCZU5lZWRlZCgpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oUmVmPFNlY3VyaXR5T3JpZ2luPiYmKTsKIAogcHJpdmF0ZToKICAg
ICBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAg
ICBTZWN1cml0eU9yaWdpbkRhdGEgbV9zZWN1cml0eU9yaWdpbjsKKyAgICBSZWY8U2VjdXJpdHlP
cmlnaW4+IG1fb3JpZ2luOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcAppbmRleCAxNTliY2U2NjlmMWNiOWIyZTZiOTRmMzljNmNkMjYxMjcxMmU2YzExLi45MGEx
OWE1ODJkNDBlY2Y5YzI1MjYzMDUxMDY1OTFkYTQwN2Q3MTllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApA
QCAtODUsMTQgKzg1LDE0IEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZSgpCiBjb25z
dCBDbGllbnRPcmlnaW4mIFNXU2VydmVyV29ya2VyOjpvcmlnaW4oKSBjb25zdAogewogICAgIGlm
ICghbV9vcmlnaW4pCi0gICAgICAgIG1fb3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgbV9yZWdpc3Ry
YXRpb25LZXkudG9wT3JpZ2luKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChtX2RhdGEu
c2NyaXB0VVJMKSB9OworICAgICAgICBtX29yaWdpbiA9IENsaWVudE9yaWdpbiB7IG1fcmVnaXN0
cmF0aW9uS2V5LnRvcE9yaWdpbigpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fZGF0YS5zY3JpcHRVUkwpKSB9OwogCiAgICAg
cmV0dXJuICptX29yaWdpbjsKIH0KIAotY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBTV1NlcnZl
cldvcmtlcjo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAorUmVmPFNlY3VyaXR5T3JpZ2luPiBTV1Nl
cnZlcldvcmtlcjo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogewotICAgIHJldHVybiBvcmlnaW4o
KS5jbGllbnRPcmlnaW47CisgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRh
LnNjcmlwdFVSTCk7CiB9CiAKIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogU1dTZXJ2ZXJX
b3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCBkOTNmNTAwMGFhYjll
YjAxYmU0Y2I4YzRkZDBhYjFiNjNmZDg2ZGVhLi5jYzA3NTljNjE2ZWY4ZTgyNGEyN2VmZmM3NDFh
NTkzYzVmZmZiYWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgog
ICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSgpIGNvbnN0OwogCiAgICAg
Y29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmVmPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbigpIGNvbnN0Owog
CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0
Q29ubmVjdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDAxNzJjM2I0
MTliODFmMTVkM2Y3ODlhZDhlOGQ2ZjNhZjk4OTFkNTguLjBlN2Q4MGNiZjg1ZWIxZGFjZmNkZGY1
NTIzYTcxODMwNjQ3YzY3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC04Nyw3
ICs4Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJv
b2w+KHNvdXJjZU9yaWdpbik7CiAgICAgaWYgKHNvdXJjZU9yaWdpbikKLSAgICAgICAgZW5jb2Rl
ciA8PCBzb3VyY2VPcmlnaW4tPmRhdGEoKTsKKyAgICAgICAgZW5jb2RlciA8PCBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqc291cmNlT3JpZ2luKTsKICAgICBlbmNvZGVy
LmVuY29kZUVudW0obW9kZSk7CiAgICAgZW5jb2RlciA8PCBjc3BSZXNwb25zZUhlYWRlcnM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5S
ZWYuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5j
cHAKaW5kZXggYmNmOTU1YTY2Y2I3NjgwNTQyYzJjZmNhZGNjNGYzZjBiZDUzZDE1MS4uM2M0YjQy
NDZlODEyMDg3YjMwZTM2YmFmYzE2OGVmNDY2M2M3MGE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgV0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlKFdLU3RyaW5nUmVm
IHByb3RvY29sLCBXS1N0cmluZ1JlZiBob3MKIAogV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdp
bkNvcHlEYXRhYmFzZUlkZW50aWZpZXIoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdp
bikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2Vj
dXJpdHlPcmlnaW4oKS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIHJldHVybiB0
b0NvcGllZEFQSShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdp
bih0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpKS5kYXRhYmFzZUlkZW50
aWZpZXIoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLU2VjdXJpdHlPcmlnaW5Db3B5VG9TdHJpbmco
V0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0
b3JlLmNwcAppbmRleCAwNGNiZjIxYjNlN2FhYTYzMWI1MjUzYTdkNTk2M2RjNDg3ZTk5ZDc2Li45
ZGNhZDk0YmZmMjI2ZDRhMDllMDJlMGMxYTUwMjE3YjVhMWEwY2Y4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
T3JpZ2luU3RvcmUuY3BwCkBAIC00MSwxMyArNDEsMTMgQEAgV2ViU1dPcmlnaW5TdG9yZTo6V2Vi
U1dPcmlnaW5TdG9yZSgpCiB7CiB9CiAKLXZvaWQgV2ViU1dPcmlnaW5TdG9yZTo6YWRkVG9TdG9y
ZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKK3ZvaWQgV2ViU1dPcmlnaW5TdG9y
ZTo6YWRkVG9TdG9yZShjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogewogICAgIG1fc3Rv
cmUuc2NoZWR1bGVBZGRpdGlvbihjb21wdXRlU2hhcmVkU3RyaW5nSGFzaChvcmlnaW4udG9TdHJp
bmcoKSkpOwogICAgIG1fc3RvcmUuZmx1c2hQZW5kaW5nQ2hhbmdlcygpOwogfQogCi12b2lkIFdl
YlNXT3JpZ2luU3RvcmU6OnJlbW92ZUZyb21TdG9yZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbikKK3ZvaWQgV2ViU1dPcmlnaW5TdG9yZTo6cmVtb3ZlRnJvbVN0b3JlKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgbV9zdG9yZS5zY2hlZHVsZVJlbW92YWwoY29t
cHV0ZVNoYXJlZFN0cmluZ0hhc2gob3JpZ2luLnRvU3RyaW5nKCkpKTsKICAgICBtX3N0b3JlLmZs
dXNoUGVuZGluZ0NoYW5nZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5oCmluZGV4IDJkMjlm
NTYwOTU4NGYxMDIwOWU4MDZjZDEwNmFkNzY4ZDBiNDM5NWYuLjdmOGM5ODcxMWMyNWRhZTg2ZmVi
ZWZjMDg4YzA5YjUyODlmMTdmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuaApAQCAtMzEs
NiArMzEsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NXT3JpZ2luU3RvcmUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTZWN1cml0eU9y
aWdpbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjsKQEAgLTQ2LDggKzUwLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHNlbmRT
dG9yZUhhbmRsZShXZWJTV1NlcnZlckNvbm5lY3Rpb24mKTsKIAotICAgIHZvaWQgYWRkVG9TdG9y
ZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBmaW5hbDsKLSAgICB2b2lkIHJl
bW92ZUZyb21TdG9yZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBmaW5hbDsK
KyAgICB2b2lkIGFkZFRvU3RvcmUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKSBmaW5h
bDsKKyAgICB2b2lkIHJlbW92ZUZyb21TdG9yZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biYpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJTdG9yZSgpIGZpbmFsOwogCiAgICAgLy8gU2hhcmVk
U3RyaW5nSGFzaFN0b3JlOjpDbGllbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCmluZGV4IDM4YzM5OTFlZWZkMWFlZWJlYzU1NzJmOTA4MWFjNGRhMTZkYTZlMzguLjUw
MGY5NDliYzE3ZmRjNTZmOTA2MGU1ZDQ3NDMzYTVjZjUzMDM2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGQKIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5T
ZXJ2ZXIoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogewotICAgIGF1dG8gc2VjdXJp
dHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoam9iRGF0YS5zY3JpcHRVUkwp
OworICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRh
dGEuc2NyaXB0VVJMKTsKICAgICBpZiAoIVN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAg
U3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24oc2VjdXJpdHlPcmlnaW4sIHNlcnZlcigpLnNlc3Npb25JRCgpKTsKIApAQCAtMjg3LDcgKzI4
Nyw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKHVpbnQ2
NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkCiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9w
T3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQogewotICAgIGF1dG8gY2xpZW50T3JpZ2lu
ID0gQ2xpZW50T3JpZ2luIHsgV1RGTW92ZSh0b3BPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21VUkwoZGF0YS51cmwpIH07CisgICAgYXV0byBjbGllbnRPcmlnaW4gPSBDbGllbnRPcmln
aW4geyBXVEZNb3ZlKHRvcE9yaWdpbiksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGF0YS51cmwpKSB9OwogICAgIG1fY2xpZW50
T3JpZ2lucy5hZGQoZGF0YS5pZGVudGlmaWVyLCBjbGllbnRPcmlnaW4pOwogICAgIHNlcnZlcigp
LnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChXVEZNb3ZlKGNsaWVudE9yaWdpbiksIFdURk1v
dmUoZGF0YSksIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAppbmRleCAwMGI3ZmM3YzgzOThhM2IzMjhkZjU4ZmIyNjhhMDdhOTJkODE4YWY3Li4xNDg1
MGFjZGY2ZjFmYmU4ODk1ZDkzMDVkMDUxMzQ2Zjk5ODJkODhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMzcsOCArMzcsOCBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbikKLSAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihz
ZWN1cml0eU9yaWdpbikKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbihXVEZNb3ZlKG9yaWdpbikpCiAgICAgLCBtX2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShj
b25uZWN0aW9uKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaAppbmRleCBlOWMzOTg4YzkzNmViOGViZDgyODFkMmI3YzMxODJjMzI4ZDk5
NTJlLi5iYjEwYmRlZjkyY2VmYTU2MmE3OGQ4Zjk1MjFkYzM4ZTcxZGJjNjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCiBwcml2YXRlOgotICAgIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBleHBsaWNpdCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBSZWY8
SVBDOjpDb25uZWN0aW9uPiYmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggZjg1NzI0
ZWE2ZmU2ZmM1OGU5YmQ0NDJiMTFjMTA2ZmE3M2RlNjc2Yy4uZGQ0ODhjNmZkZmY4MWM2NjI1YmI5
MTBkMjA3ODM1YzIxNjg5ZWE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTExMywyNCArMTEzLDIzIEBAIHZvaWQgU3RvcmFnZVBy
b2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0
UHJvY2Vzc1dhc0Nsb3NlZChSZWY8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiYmIHNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24pCiB7Ci0gICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5zZWN1cml0eU9yaWdpbigpOwotCiAgICAgc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZCgpOwotICAgIG1fc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHNlY3VyaXR5T3JpZ2luKTsKKyAgICBtX3NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25zLnJlbW92ZSgmc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+b3Jp
Z2luKCkpOwogCiAgICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygp
KQotICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JPcmlnaW5Bc1Rlcm1pbmF0ZWQo
c2VjdXJpdHlPcmlnaW4pOworICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNGb3JPcmln
aW5Bc1Rlcm1pbmF0ZWQoc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+b3JpZ2luKCkpOwogCi0g
ICAgaWYgKG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihzZWN1cml0eU9y
aWdpbikpIHsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24tPm9yaWdpbigpOworICAgIGlmIChuZWVkc1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Gb3JPcmlnaW4ob3JpZ2luKSkgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29y
a2VyLCAiQ29ubmVjdGlvbiB0byBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHdhcyBjbG9zZWQgYnV0
IGlzIHN0aWxsIG5lZWRlZCwgcmVsYXVuY2hpbmcgaXQiKTsKLSAgICAgICAgY3JlYXRlU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihzZWN1cml0eU9yaWdpbiwgc3RkOjpudWxsb3B0KTsKKyAgICAg
ICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihvcmlnaW4sIHN0ZDo6bnVsbG9wdCk7
CiAgICAgfQogfQogCi1ib29sIFN0b3JhZ2VQcm9jZXNzOjpuZWVkc1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25Gb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdp
bikgY29uc3QKK2Jvb2wgU3RvcmFnZVByb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbkZvck9yaWdpbihTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdAogewogICAgIHJldHVy
biBXVEY6OmFueU9mKG1fc3dTZXJ2ZXJzLnZhbHVlcygpLCBbJl0oYXV0byYgc3dTZXJ2ZXIpIHsK
LSAgICAgICAgcmV0dXJuIHN3U2VydmVyLT5uZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25G
b3JPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOworICAgICAgICByZXR1cm4gc3dTZXJ2ZXItPm5lZWRz
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihvcmlnaW4pOwogICAgIH0pOwogfQog
I2VuZGlmCkBAIC0yNTEsNyArMjUwLDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6cGVyZm9ybU5l
eHRTdG9yYWdlVGFzaygpCiAgICAgdGFzay5wZXJmb3JtVGFzaygpOwogfQogCi12b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpjcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihib29sIGlzU2Vy
dmljZVdvcmtlclByb2Nlc3MsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5
T3JpZ2luKQordm9pZCBTdG9yYWdlUHJvY2Vzczo6Y3JlYXRlU3RvcmFnZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBvcmlnaW5EYXRhKQogewogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQog
ICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0
aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKQEAgLTI3NSw4ICsyNzQsOSBAQCB2b2lk
IFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihib29s
IGlzU2VydmljZVdvcmtlclBybwogICAgIGlmIChpc1NlcnZpY2VXb3JrZXJQcm9jZXNzICYmICFt
X3N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9ucy5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNT
RVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSk7CiAgICAgICAg
IEFTU0VSVChtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbik7Ci0g
ICAgICAgIGF1dG8gY29udGV4dENvbm5lY3Rpb24gPSBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmNyZWF0ZShzZWN1cml0eU9yaWdpbiwgbV9zdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbnMubGFzdCgpLT5jb25uZWN0aW9uKCkpOwotICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuYWRkKFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBj
b250ZXh0Q29ubmVjdGlvbi5jb3B5UmVmKCkpOworICAgICAgICBhdXRvIG9yaWdpbiA9IG9yaWdp
bkRhdGEuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICAgICAgYXV0byBjb250ZXh0Q29ubmVjdGlvbiA9
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y3JlYXRlKG9yaWdpbi5jb3B5UmVmKCks
IG1fc3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmxhc3QoKS0+Y29ubmVjdGlvbigpKTsK
KyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25zLmFk
ZChXVEZNb3ZlKG9yaWdpbiksIGNvbnRleHRDb25uZWN0aW9uLmNvcHlSZWYoKSk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICAg
ICAgbV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24gPSBmYWxzZTsK
QEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogI2VuZGlmCiB9CiAK
LXZvaWQgU3RvcmFnZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRh
VHlwZXMsIGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBzZWN1cml0eU9yaWdpbnMs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiYgc2VjdXJpdHlPcmlnaW5EYXRhcywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBh
dXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlz
LCBjYWxsYmFja0lEXSgpIHsKICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JP
cmlnaW5zKGNhbGxiYWNrSUQpLCAwKTsKQEAgLTM0OCwxNCArMzQ4LDE0IEBAIHZvaWQgU3RvcmFn
ZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIE9wdGlvCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbnMpKSB7CiAgICAgICAgIGF1dG8mIHNlcnZlciA9IHN3U2VydmVyRm9yU2Vzc2lvbihzZXNz
aW9uSUQpOwotICAgICAgICBmb3IgKGF1dG8mIHNlY3VyaXR5T3JpZ2luIDogc2VjdXJpdHlPcmln
aW5zKQotICAgICAgICAgICAgc2VydmVyLmNsZWFyKHNlY3VyaXR5T3JpZ2luLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAg
Zm9yIChhdXRvJiBvcmlnaW5EYXRhIDogc2VjdXJpdHlPcmlnaW5EYXRhcykKKyAgICAgICAgICAg
IHNlcnZlci5jbGVhcihvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCksIFtjYWxsYmFja0FnZ3Jl
Z2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIH0KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgaWYgKCF3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6SW5kZXhlZERCRGF0YWJhc2VzKSkKLSAgICAg
ICAgaWRiU2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5z
KHNlY3VyaXR5T3JpZ2lucywgW2NhbGxiYWNrQWdncmVnYXRvciA9IFdURk1vdmUoY2FsbGJhY2tB
Z2dyZWdhdG9yKV0geyB9KTsKKyAgICAgICAgaWRiU2VydmVyKHNlc3Npb25JRCkuY2xvc2VBbmRE
ZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKHNlY3VyaXR5T3JpZ2luRGF0YXMsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBXVEZNb3ZlKGNhbGxiYWNrQWdncmVnYXRvcildIHsgfSk7CiAjZW5kaWYKIH0K
IApAQCAtNDU1LDIxICs0NTUsMjEgQEAgV2ViU1dPcmlnaW5TdG9yZSYgU3RvcmFnZVByb2Nlc3M6
OnN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb24KICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViU1dPcmlnaW5TdG9yZSY+KHN3U2VydmVyRm9yU2Vzc2lvbihzZXNz
aW9uSUQpLm9yaWdpblN0b3JlKCkpOwogfQogCi1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24qIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCitXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24qIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Rm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAg
cmV0dXJuIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNlY3VyaXR5T3JpZ2luKTsK
KyAgICByZXR1cm4gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9ucy5nZXQoJmNvbnN0X2Nhc3Q8
U2VjdXJpdHlPcmlnaW4mPihvcmlnaW4pKTsKIH0KIAotdm9pZCBTdG9yYWdlUHJvY2Vzczo6Y3Jl
YXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQpCit2
b2lkIFN0b3JhZ2VQcm9jZXNzOjpjcmVhdGVTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKGNvbnN0
IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNl
c3Npb25JRCkKIHsKICAgICBpZiAobV93YWl0aW5nRm9yU2VydmVyVG9Db250ZXh0UHJvY2Vzc0Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX3dhaXRpbmdGb3JTZXJ2ZXJU
b0NvbnRleHRQcm9jZXNzQ29ubmVjdGlvbiA9IHRydWU7CiAgICAgaWYgKHNlc3Npb25JRCkKLSAg
ICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVBy
b2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9j
ZXNzRm9yRXhwbGljaXRTZXNzaW9uKHNlY3VyaXR5T3JpZ2luLCAqc2Vzc2lvbklEKSwgMCk7Cisg
ICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQ
cm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJv
Y2Vzc0ZvckV4cGxpY2l0U2Vzc2lvbihTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbihvcmlnaW4pLCAqc2Vzc2lvbklEKSwgMCk7CiAgICAgZWxzZQotICAgICAgICBwYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzc1Byb3h5OjpF
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3Moc2VjdXJpdHlP
cmlnaW4pLCAwKTsKKyAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6U3RvcmFnZVByb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub1N0b3JhZ2VQcm9jZXNzKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KG9yaWdpbikpLCAwKTsKIH0KIAogdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmFpbEZldGNoKFNX
U2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IGZldGNoSWRlbnRpZmllcikKQEAgLTUzNywxNSArNTM3LDE1IEBAIHZvaWQgU3RvcmFn
ZVByb2Nlc3M6OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uJiBjb25uZWN0CiAKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnN3Q29udGV4dENvbm5lY3Rpb25N
YXlOb0xvbmdlckJlTmVlZGVkKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbikKIHsKLSAgICBhdXRvJiBzZWN1cml0eU9yaWdpbiA9IHNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uc2VjdXJpdHlPcmlnaW4oKTsKLSAgICBpZiAobmVlZHNTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uRm9yT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKKyAgICBhdXRv
JiBvcmlnaW4gPSBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm9yaWdpbigpOworICAgIGlmIChu
ZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JPcmlnaW4ob3JpZ2luKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2Vy
IHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVybWluYXRpbmcgaXQiKTsKICAgICBzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLnRlcm1pbmF0ZSgpOwogCiAgICAgc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jb25uZWN0aW9uQ2xvc2VkKCk7Ci0gICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9ucy5yZW1vdmUoc2VjdXJpdHlPcmlnaW4pOworICAgIG1fc2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbnMucmVtb3ZlKCZvcmlnaW4pOwogfQogCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaXNh
YmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAppbmRleCAyMDc4YTEzMTA3Mzk4NThj
YzRiMjdjMmM1YjMxNzNjYzVmNGE5ZWU0Li5kMTJmZTMxNmU5ZjI2MTc5Zjc0NTRhNzFjNzljOWZm
YTM5YzA2YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvSURCQmFja2luZ1N0b3JlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
REJTZXJ2ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VySWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtl
clR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VbmlxdWVJREJEYXRhYmFzZS5oPgpAQCAtNDUs
NiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTV1NlcnZlcjsKIGNsYXNzIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHM7CitzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyOwogfQogCkBAIC05Myw4ICs5NCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiogc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmKTsKLSAgICB2b2lkIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgc3RkOjpvcHRpb25hbDxQ
QUw6OlNlc3Npb25JRD4pOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogc2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYpOworICAgIHZvaWQgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYsIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsK
IAogICAgIFdlYkNvcmU6OlNXU2VydmVyJiBzd1NlcnZlckZvclNlc3Npb24oUEFMOjpTZXNzaW9u
SUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uJik7CkBAIC0xNDksNyArMTUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc2FibGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKIAogICAgIFdlYlNXT3JpZ2lu
U3RvcmUmIHN3T3JpZ2luU3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKLSAgICBib29s
IG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKKyAgICBib29sIG5lZWRzU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbkZvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGNvbnN0OwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBh
dGgpOwpAQCAtMTc2LDcgKzE3Nyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIHZvaWQgZGlkQ3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IElQQzo6QXR0YWNobWVudCYpOwogCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEsIFJlZjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+PiBtX3NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb25zOworICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiwgUmVmPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4+IG1fc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbnM7CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JTZXJ2ZXJUb0NvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Nob3VsZERpc2FibGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgeyBmYWxzZSB9OwogICAgIEhhc2hNYXA8
UEFMOjpTZXNzaW9uSUQsIFN0cmluZz4gbV9zd0RhdGFiYXNlUGF0aHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCmluZGV4IDk2YjEzZDE3ODU0NDVjMzk3
MzNiMmYwNDhhNjBmMjAyMTUwOGM4YzguLjAzMTllNWFlZDNmZmMwYTM3MDlkNGY3NWY2ZDc5Njg2
MmI2NWRhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFt
ZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8u
Y3BwCkBAIC00NSw3ICs0NSw3IEBAIFJlZjxGcmFtZUluZm8+IEZyYW1lSW5mbzo6Y3JlYXRlKGNv
bnN0IFdlYktpdDo6V2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFdlYkNvCiAgICAgZnJhbWVJ
bmZvRGF0YS5pc01haW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZyYW1lKCk7CiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHVzZSB0aGUgZnVsbCByZXF1ZXN0IG9mIHRoZSBmcmFtZSwgbm90IGp1c3Qg
dGhlIFVSTC4KICAgICBmcmFtZUluZm9EYXRhLnJlcXVlc3QgPSBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QoZnJhbWUudXJsKCkpOwotICAgIGZyYW1lSW5mb0RhdGEuc2VjdXJpdHlPcmlnaW4gPSBz
ZWN1cml0eU9yaWdpbi5kYXRhKCk7CisgICAgZnJhbWVJbmZvRGF0YS5zZWN1cml0eU9yaWdpbiA9
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKTsKICAgICBmcmFtZUluZm9EYXRhLmZyYW1lSUQgPSBmcmFtZS5mcmFtZUlEKCk7CiAK
ICAgICByZXR1cm4gY3JlYXRlKGZyYW1lSW5mb0RhdGEsIGZyYW1lLnBhZ2UoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuY3BwCmluZGV4IGVlODdhYzE5MTUwNjA2YjRlYjgzYTgzZGQ3YWYzYjI3YjAyNzc4
M2MuLmZhYjYwYWZiNmI0OGI5M2Q4NWExM2I3YzU5Njc1N2I4NDM5NjAwMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgV0tBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclJlCiAg
ICAgYXV0byYgd2Vic2l0ZURhdGFTdG9yZSA9IHRvSW1wbChyZWludGVycHJldF9jYXN0PFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZj4oYXBwbGljYXRpb25DYWNoZU1hbmFnZXIpKS0+d2Vic2l0ZURhdGFT
dG9yZSgpOwogCiAgICAgV2Vic2l0ZURhdGFSZWNvcmQgZGF0YVJlY29yZDsKLSAgICBkYXRhUmVj
b3JkLmFkZChXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlLCB0b0lt
cGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCkpOworICAgIGRhdGFSZWNvcmQuYWRk
KFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvSW1wbChvcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpKSk7CiAKICAgICB3ZWJzaXRlRGF0YVN0b3JlLnJlbW92ZURhdGEoV2Vic2l0
ZURhdGFUeXBlOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSwgeyBkYXRhUmVjb3JkIH0sIFtd
IHsgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tl
eVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA0ZTM5ZGFkODJhNTIyNWI5ZDlkZDI0
ZWY4MWZhOGFmNzUzYTM1YjE0Li5mMTBkNjMzMWQ3YjdkNTIyZDc1YTQ0YjNmMzY0NTM4ZmUxODEz
ZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
S2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUmVmCiAgICAgaWYgKCFzdG9yYWdlTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc3RvcmFnZU1hbmFnZXItPmRlbGV0ZUxvY2FsU3RvcmFnZUVudHJpZXNGb3JPcmlnaW4o
dG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKKyAgICBzdG9yYWdlTWFu
YWdlci0+ZGVsZXRlTG9jYWxTdG9yYWdlRW50cmllc0Zvck9yaWdpbihXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlP
cmlnaW4oKSkpOwogfQogCiB2b2lkIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckRlbGV0ZUFsbEVu
dHJpZXMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmIGtleVZhbHVlU3RvcmFnZU1hbmFnZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2Fj
aGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VD
YWNoZU1hbmFnZXIuY3BwCmluZGV4IDZiMTZjMmEwNWMyNWJkNDBiMTkwODFiOTBkZGQ5ZmZiMTFi
NTg3ZjAuLjIzYWE0ZDEzZDQxMzNmZGU4OWJlNGRjMGMxNGViOTk4MGY4YTllODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1h
bmFnZXIuY3BwCkBAIC03MiwxNCArNzIsMTQgQEAgdm9pZCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2Vy
Q2xlYXJDYWNoZUZvck9yaWdpbihXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWEKIAog
ICAgIHsKICAgICAgICAgV2Vic2l0ZURhdGFSZWNvcmQgZGF0YVJlY29yZDsKLSAgICAgICAgZGF0
YVJlY29yZC5hZGQoV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgdG9JbXBsKG9yaWdpbikt
PnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKTsKKyAgICAgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0
ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4odG9JbXBsKG9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkpKTsKIAogICAg
ICAgICBkYXRhUmVjb3Jkcy5hcHBlbmQoZGF0YVJlY29yZCk7CiAgICAgfQogCiAgICAgaWYgKGNh
Y2hlc1RvQ2xlYXIgPT0gV0tSZXNvdXJjZUNhY2hlc1RvQ2xlYXJBbGwpIHsKICAgICAgICAgV2Vi
c2l0ZURhdGFSZWNvcmQgZGF0YVJlY29yZDsKLSAgICAgICAgZGF0YVJlY29yZC5hZGQoV2Vic2l0
ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIHRvSW1wbChvcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmRh
dGEoKSk7CisgICAgICAgIGRhdGFSZWNvcmQuYWRkKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hl
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b0ltcGwo
b3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkpOwogCiAgICAgICAgIGRhdGFSZWNvcmRzLmFwcGVu
ZChkYXRhUmVjb3JkKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCBjYTI5YWFmYjFiYzliNDI0
ODI2ZThhODg3NDJmZjRjZDUyYmEwMDhkLi42NjUwYjU4MzVkM2Y3N2Q2MzUwNWIwZDIyMzUzMjZl
MzBmMmFkMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVJlbW92ZUFsbEZldGNoQ2FjaGVzKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNoQ2FjaGVGb3JP
cmlnaW4oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTZWN1cml0eU9yaWdp
blJlZiBvcmlnaW4sIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJlbW92ZUZldGNo
Q2FjaGVSZW1vdmFsRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0
YVJlY29yZCBkYXRhUmVjb3JkOwotICAgIGRhdGFSZWNvcmQuYWRkKFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlOjpET01DYWNoZSwgV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkpOworICAgIGRhdGFSZWNvcmQuYWRkKFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlOjpE
T01DYWNoZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
V2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKSkpOwogICAgIFZlY3RvcjxX
ZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiBkYXRhUmVjb3JkcyA9IHsgV1RGTW92ZShkYXRhUmVj
b3JkKSB9OwogCiAgICAgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlw
ZXMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZTo6RE9NQ2FjaGU7CkBAIC00ODAsNyArNDgwLDcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVHZXRGZXRjaENhY2hlU2l6ZUZvck9yaWdpbihXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3IKICAgICBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMgPSBXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hP
cHRpb246OkNvbXB1dGVTaXplczsKIAogICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PndlYnNpdGVEYXRhU3RvcmUoKS5mZXRjaERhdGEoV2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU6OkRP
TUNhY2hlLCBmZXRjaE9wdGlvbnMsIFtvcmlnaW4sIGNvbnRleHQsIGNhbGxiYWNrXSAoYXV0byBk
YXRhUmVjb3JkcykgewotICAgICAgICBhdXRvIG9yaWdpbkRhdGEgPSBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChvcmlnaW4pLT5zdHJpbmco
KSktPmRhdGEoKTsKKyAgICAgICAgYXV0byBvcmlnaW5EYXRhID0gV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcoV2ViS2l0Ojp0b0ltcGwob3JpZ2luKS0+c3RyaW5nKCkpKTsKICAgICAg
ICAgZm9yIChhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKICAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgcmVjb3JkT3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKG9yaWdpbkRhdGEgPT0gcmVjb3JkT3JpZ2luKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGI2MTkwNGMwODk5YTM4MWQ0MWMzMmQzNjQzMmM5NzU5N2M1NjgxODcuLmNhZWVlYzNiMTI2
NDE2MDI1N2M3MDU5Yzg5NzFlZGZkNDIzMDk1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC00MiwxNiArNDIs
MTYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1S
ZWY8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4gU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6
Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwb29sLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luLCBXZWJzaXRlRGF0YVN0b3JlJiBzdG9yZSkKK1JlZjxTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5PiBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vz
c1Bvb2wmIHBvb2wsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdlYnNpdGVEYXRhU3Rv
cmUmIHN0b3JlKQogewotICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkgeyBwb29sLCBzZWN1cml0eU9yaWdpbiwgc3RvcmUgfSk7CisgICAgYXV0
byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7IHBvb2ws
IFdURk1vdmUob3JpZ2luKSwgc3RvcmUgfSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAgICBy
ZXR1cm4gcHJveHk7CiB9CiAKLVNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OlNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHBvb2wsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhU3RvcmUmIHN0b3JlKQorU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eTo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9v
bCYgcG9vbCwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgV2Vic2l0ZURhdGFTdG9yZSYg
c3RvcmUpCiAgICAgOiBXZWJQcm9jZXNzUHJveHkgeyBwb29sLCBzdG9yZSB9Ci0gICAgLCBtX3Nl
Y3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQorICAgICwgbV9vcmlnaW4oV1RGTW92ZShvcmln
aW4pKQogICAgICwgbV9zZXJ2aWNlV29ya2VyUGFnZUlEKGdlbmVyYXRlUGFnZUlEKCkpCiB7CiB9
CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6Z2V0TGF1
bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmCiAgICAgV2ViUHJvY2Vz
c1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKGxhdW5jaE9wdGlvbnMpOwogCiAgICAgbGF1bmNoT3B0
aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5hZGQoQVNDSUlMaXRlcmFsKCJzZXJ2aWNlLXdv
cmtlci1wcm9jZXNzIiksIEFTQ0lJTGl0ZXJhbCgiMSIpKTsKLSAgICBsYXVuY2hPcHRpb25zLmV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLmFkZChBU0NJSUxpdGVyYWwoInNlY3VyaXR5LW9yaWdpbiIp
LCBzZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCkpOworICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJ
bml0aWFsaXphdGlvbkRhdGEuYWRkKEFTQ0lJTGl0ZXJhbCgic2VjdXJpdHktb3JpZ2luIiksIG9y
aWdpbigpLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6
OnN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBzdGQ6Om9wdGlvbmFsPFBB
TDo6U2Vzc2lvbklEPiBpbml0aWFsU2Vzc2lvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCmluZGV4IDMzNTFiNzQwOTRiZTQ3
ZTgzMGUzOTdjNDA2ODFiYWEwODI5OGI1YTMuLjFjNzcwYjFhZDkzNWY0Njk0ZThjYzA2YjNjMmRl
NWY3ZDk2MTE4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW4uaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5OwpAQCAtMzYsNyArMzYsNyBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIAog
Y2xhc3MgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJQcm9jZXNz
UHJveHkgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlclByb2Nlc3NQcm94
eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAgICAgflNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkoKTsKIAogICAgIHN0YXRpYyBib29sIGhhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhj
b25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpOwpAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1
cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIAotICAg
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSB7IHJl
dHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIG9y
aWdpbigpIHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9CiAgICAgdWludDY0X3QgcGFnZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAKIHByaXZhdGU6CkBAIC01
Niw5ICs1Niw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclByb2Nlc3Mo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoV2Vi
UHJvY2Vzc1Bvb2wmLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYnNpdGVEYXRh
U3RvcmUmKTsKIAotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBtX3NlY3VyaXR5T3Jp
Z2luOworICAgIFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47CiAgICAgdWlu
dDY0X3QgbV9zZXJ2aWNlV29ya2VyUGFnZUlEIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKaW5k
ZXggNTRhMDc5MjliZWI4NWE3NmM2YzI5NmY4NGJkODY4NDlmZTRjYWQwZi4uOWU3ODhmNDc0NzBl
NmU0ZWFiMWZmYTkxMDUzNWJiMDk3NzNiYTMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjIsMTUg
KzEyMiwxNSBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFN0b3JhZ2VQcm9jZXNzQ29u
bmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2NlcwogICAgIH0KIAogICAgIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOwotICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBzZWN1
cml0eU9yaWdpbjsKKyAgICBTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luOwogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBpZiAoaXM8U2VydmljZVdvcmtlclByb2Nlc3NQcm94eT4od2Vi
UHJvY2Vzc1Byb3h5KSkgewogICAgICAgICBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gdHJ1ZTsK
LSAgICAgICAgc2VjdXJpdHlPcmlnaW4gPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5Pih3ZWJQcm9jZXNzUHJveHkpLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAgIG9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvd25jYXN0PFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHk+KHdlYlByb2Nlc3NQcm94eSkub3JpZ2luKCkpOwogICAgIH0KICNl
bmRpZgogCi0gICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkNyZWF0ZVN0b3JhZ2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKGlzU2VydmljZVdvcmtlclByb2Nlc3MsIHNlY3VyaXR5T3Jp
Z2luKSwgMCwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkpOworICAgIHNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpDcmVhdGVT
dG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihpc1NlcnZpY2VXb3JrZXJQcm9jZXNzLCBvcmln
aW4pLCAwLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0Zv
clN5bmNSZXBseSk7CiB9CiAKIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBD
OjpDb25uZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCAyZGU3ZGJhMjhiYzgyZTAyYzEyNjAyZjBkZjFkNThjM2U0NDc1ZTc3Li4zNTFiZjZh
YjI2YjZlZWZkODNmYTk2MjdhOGU0Yzc2NjIxYTA3ZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01OTEsMTEgKzU5MSwxMiBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzdG9yYWdlUHJvY2Vzc0NyYXNoZWQoU3RvcmFnZVByb2Nlc3NQcm94eSogc3Rv
cmFnZVByb2Nlc3NQcgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9j
ZXNzKFN0b3JhZ2VQcm9jZXNzUHJveHkmIHByb3h5LCBTZWN1cml0eU9yaWdpbkRhdGEmJiBzZWN1
cml0eU9yaWdpbiwgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKQordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub1N0b3Jh
Z2VQcm9jZXNzKFN0b3JhZ2VQcm9jZXNzUHJveHkmIHByb3h5LCBTZWN1cml0eU9yaWdpbkRhdGEm
JiBvcmlnaW5EYXRhLCBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChwcm94eSwgJnByb3h5ID09IG1fc3RvcmFnZVByb2Nlc3MpOwog
Ci0gICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhzZWN1cml0eU9yaWdp
bikpCisgICAgYXV0byBvcmlnaW4gPSBvcmlnaW5EYXRhLnNlY3VyaXR5T3JpZ2luKCk7CisgICAg
aWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhvcmlnaW4ucHRyKCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX21heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMuY2xl
YXIoKTsKQEAgLTYxMyw4ICs2MTQsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoU3RvcmFnZVBybwogICAgIGlm
IChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQogICAgICAgICBzZW5kVG9BbGxQ
cm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dHMgeyB9KTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcywgc2VjdXJpdHlPcmlnaW4sICp3ZWJzaXRl
RGF0YVN0b3JlKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUoc2Vj
dXJpdHlPcmlnaW4pLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpKTsKKyAgICBhdXRv
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojpj
cmVhdGUoKnRoaXMsIG9yaWdpbi5jb3B5UmVmKCksICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKG9yaWdpbi5jb3B5UmVmKCksIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkucHRyKCkpOwogCiAgICAgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsK
ICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCAq
d2Vic2l0ZURhdGFTdG9yZSk7CkBAIC05ODksNyArOTkwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChpczxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
PigqcHJvY2VzcykpIHsKLSAgICAgICAgYXV0byogcmVtb3ZlZFByb2Nlc3MgPSBtX3NlcnZpY2VX
b3JrZXJQcm9jZXNzZXMudGFrZShkb3duY2FzdDxTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Pigq
cHJvY2Vzcykuc2VjdXJpdHlPcmlnaW4oKSk7CisgICAgICAgIGF1dG8qIHJlbW92ZWRQcm9jZXNz
ID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UoJmRvd25jYXN0PFNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHk+KCpwcm9jZXNzKS5vcmlnaW4oKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
cmVtb3ZlZFByb2Nlc3MsIHJlbW92ZWRQcm9jZXNzID09IHByb2Nlc3MpOwogICAgICAgICB1cGRh
dGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIH0KQEAgLTE4NzcsOSArMTg3OCw5IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICAgICAgaWYgKCFt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpICYmIG1fZm9yZWdyb3VuZFdlYlByb2Nl
c3NDb3VudGVyLnZhbHVlKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gYmV0
dGVyIHRoYW4gdGhpcyBvbmNlIHdlIGhhdmUgcHJvY2VzcyBwZXIgb3JpZ2luLgogICAgICAgICAg
ICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nl
c3Nlcy52YWx1ZXMoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0g
c2VydmljZVdvcmtlclByb2Nlc3MtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgICAgICAgICAgICAg
aWYgKCFtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5z
KHNlY3VyaXR5T3JpZ2luKSkKLSAgICAgICAgICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5z
Rm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoc2VjdXJpdHlPcmlnaW4sIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICAg
ICAgICAgICAgICBhdXRvJiBvcmlnaW4gPSBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+b3JpZ2luKCk7
CisgICAgICAgICAgICAgICAgaWYgKCFtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmNvbnRhaW5zKCZvcmlnaW4pKQorICAgICAgICAgICAgICAgICAgICBtX2ZvcmVn
cm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZCgmb3JpZ2luLCBzZXJ2aWNl
V29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2JhY2tncm91bmRUb2tlbnNGb3JTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLmNsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xODg3LDkgKzE4
ODgsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAg
ICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSAmJiBtX2JhY2tn
cm91bmRXZWJQcm9jZXNzQ291bnRlci52YWx1ZSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
V2UgY2FuIGRvIGJldHRlciB0aGFuIHRoaXMgb25jZSB3ZSBoYXZlIHByb2Nlc3MgcGVyIG9yaWdp
bi4KICAgICAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBzZWN1
cml0eU9yaWdpbiA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5zZWN1cml0eU9yaWdpbigpOwotICAg
ICAgICAgICAgICAgIGlmICghbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nl
c3Nlcy5jb250YWlucyhzZWN1cml0eU9yaWdpbikpCi0gICAgICAgICAgICAgICAgICAgIG1fYmFj
a2dyb3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKHNlY3VyaXR5T3JpZ2lu
LCBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgICAgICAgICAgICAgYXV0byYgb3JpZ2luID0gc2VydmljZVdvcmtlclByb2Nl
c3MtPm9yaWdpbigpOworICAgICAgICAgICAgICAgIGlmICghbV9iYWNrZ3JvdW5kVG9rZW5zRm9y
U2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucygmb3JpZ2luKSkKKyAgICAgICAgICAgICAg
ICAgICAgbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoJm9y
aWdpbiwgc2VydmljZVdvcmtlclByb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9mb3JlZ3JvdW5kVG9rZW5z
Rm9yU2VydmljZVdvcmtlclByb2Nlc3Nlcy5jbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggODk1ZmMzMzY5ODBh
OGIzZDM4NzI1MDAwNmM0MTZjODhiYzI1ZWEwYS4uNDU3ZjRjNGIxNDM4MGY2ZWQzY2I2MmYxYzVm
MzY4MTBiMTU4MDA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CkBAIC0zMzUsNyArMzM1LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vz
cyhTdG9yYWdlUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIHN0
ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKICAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQp
IGNvbnN0OwotICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CisgICAgY29uc3QgSGFzaE1hcDxS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZp
Y2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZp
Y2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFsbG93c0FueVNTTENlcnRpZmljYXRlRm9y
U2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVG
b3JTZXJ2aWNlV29ya2VyOyB9CiAgICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyVXNlckFnZW50
KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKQEAgLTUxNyw3ICs1MTcsNyBAQCBwcml2YXRlOgog
CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlIHsgbnVsbHB0ciB9
OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+IG1fc2VydmljZVdvcmtl
clByb2Nlc3NlczsKKyAgICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4s
IFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAg
ICAgYm9vbCBtX3dhaXRpbmdGb3JXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24geyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGREaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5IHsgZmFsc2UgfTsKQEAgLTY3Nyw4ICs2NzcsOCBAQCBwcml2YXRlOgog
ICAgIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuIG1fZm9yZWdyb3Vu
ZFRva2VuRm9yTmV0d29ya1Byb2Nlc3M7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kVG9rZW5Gb3JOZXR3b3JrUHJvY2VzczsKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEsIFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuPiBtX2ZvcmVn
cm91bmRUb2tlbnNGb3JTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwotICAgIEhhc2hNYXA8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhLCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbj4gbV9iYWNrZ3JvdW5kVG9rZW5zRm9yU2VydmljZVdvcmtlclByb2Nlc3NlczsKKyAg
ICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFByb2Nlc3NUaHJvdHRs
ZXI6OkZvcmVncm91bmRBY3Rpdml0eVRva2VuPiBtX2ZvcmVncm91bmRUb2tlbnNGb3JTZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzOworICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luPiwgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+IG1fYmFja2dy
b3VuZFRva2Vuc0ZvclNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7CiAjZW5kaWYKICNlbmRpZgogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggN2Y3MDJlMThlYjNhNjdkYmU0NzZlNjkzYTBmNDIwZDEzYjRjZjc2OS4u
ZmQ0ODA0ZGNiYmYzNTRkZmNiMzllZDBlOWNkZTc5OGZlMTI5MTg2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAg
LTYwMiw3ICs2MDIsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2NhbFN0b3JhZ2VPcmln
aW5EZXRhaWxzKEZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxMb2NhbFN0bwogICAgIH0pOwogfQogCi12
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCit2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0
YSYmIHNlY3VyaXR5T3JpZ2luKQogewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvcGllZE9yaWdpbiA9IHNlY3VyaXR5T3JpZ2lu
Lmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBmb3IgKGF1dG8mIGxvY2FsU3Rv
cmFnZU5hbWVzcGFjZSA6IG1fbG9jYWxTdG9yYWdlTmFtZXNwYWNlcy52YWx1ZXMoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaApp
bmRleCA4NDIzYjk5MzQ1ZjhkOTExNzA3ZTBmOGI1YzVmZTZhZDA0MGUyMzM3Li4yYjFmOGRlYjZh
YmQyOWQ0NTNiNTQzODQ5MTcyMzQwODYzNmI3NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCkBAIC02Myw3ICs2Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVNlc3Npb25TdG9yYWdlRW50cmllc0Zvck9yaWdpbnMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBGdW5jdGlvbjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmln
aW5zKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB2b2lkIGRlbGV0ZUxvY2FsU3RvcmFnZUVudHJp
ZXNGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJik7CisgICAgdm9p
ZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmKTsKIAogICAgIHZvaWQgZGVsZXRlTG9jYWxTdG9yYWdlT3JpZ2luc01vZGlmaWVk
U2luY2UoV2FsbFRpbWUsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcik7CiAg
ICAgdm9pZCBkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDBmOWU5YWMwNDQ3MzlkOTM1YTUyODI4
MWU3NTRhODZkYTI2YTg2MDUuLmMyMTQzZmRkZWM1YTYxYTQwZTg2NWE1NmRjOTliMGE5YjIxMTE2
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpmZXRjaERhdGFBbmRBcHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRh
VHlwZXMsIE8KICAgICAgICAgICAgIFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAg
ICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkgZW50cnkgeyBvcmlnaW4tPmRhdGEoKSwgV2Vic2l0
ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIDAgfTsKKyAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6
RW50cnkgZW50cnkgeyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbigqb3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIDAgfTsKICAgICAgICAg
ICAgICAgICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OmZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRh
dGFUeXBlcywgTwogCiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsK
ICAgICAgICAgICAgICAgICB1aW50NjRfdCBzaXplID0gZmV0Y2hPcHRpb25zLmNvbnRhaW5zKFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcykgPyBzdG9yYWdlLT5kaXNrVXNhZ2VG
b3JPcmlnaW4oKm9yaWdpbikgOiAwOwotICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhOjpFbnRy
eSBlbnRyeSB7IG9yaWdpbi0+ZGF0YSgpLCBXZWJzaXRlRGF0YVR5cGU6Ok9mZmxpbmVXZWJBcHBs
aWNhdGlvbkNhY2hlLCBzaXplIH07CisgICAgICAgICAgICAgICAgV2Vic2l0ZURhdGE6OkVudHJ5
IGVudHJ5IHsgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4o
Km9yaWdpbiksIFdlYnNpdGVEYXRhVHlwZTo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUsIHNp
emUgfTsKIAogICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdURk1v
dmUoZW50cnkpKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IDAxZjEzNTdhODg2MzI3MDI3YWQxNjVmMWYw
M2U4MjIzMGI0OTVkMTMuLjkzYjkzNmZlNWEyMWM1MDRlYjMzMWFjMTVlN2UzNTRmMGQwNjc0Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOjpzdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlvbihHZW9sb2NhdGlvbgogCiAgICAgU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwog
Ci0gICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lKGdlb2xvY2F0aW9uSUQsIHdlYkZyYW1lLT5mcmFtZUlEKCks
IG9yaWdpbi5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKKyAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJh
bWUoZ2VvbG9jYXRpb25JRCwgd2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSkpOwogfQog
CiB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5jZWxSZXF1ZXN0
Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcAppbmRleCA4ZjVkNjFiZjcxYzcyMjI2YTdiMDkxZTNkYjM5NDc4YmZkM2FmM2Jj
Li41YjMwZjM4NzM5MzNiMGMxMDA0NmMyZDZjOWY4Zjg4MzA5MGYxNWNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcApAQCAtNjkzLDcgKzY5Myw3IEBAIFdLQXJyYXlSZWYgV0tCdW5kbGVQ
YWdlQ29weU9yaWdpbnNXaXRoQXBwbGljYXRpb25DYWNoZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSkK
ICAgICBvcmlnaW5JZGVudGlmaWVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG9yaWdpbnMuc2l6
ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykKLSAgICAgICAg
b3JpZ2luSWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVhdGUob3Jp
Z2luLT5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpKTsKKyAgICAgICAgb3JpZ2luSWRlbnRp
ZmllcnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKm9yaWdpbikuZGF0YWJhc2VJZGVudGlm
aWVyKCkpKTsKIAogICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUo
b3JpZ2luSWRlbnRpZmllcnMpKS5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAppbmRleCA5Y2NhY2UwNTc3YzdmYmM4ZmY1NzA2
YmRmYWQ5M2U0MzdjYzZlMWYzLi5lNGQzN2EyMzZjY2MwMmZiNDU4NGI2ZTM2YjFiYzQ4ZDk1OGU3
NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6c2VuZFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgdQogICAgIEFTU0VSVCh3
ZWJGcmFtZSk7CiAKICAgICBhdXRvKiB0b3BMZXZlbERvY3VtZW50T3JpZ2luID0gdXNlclJlcXVl
c3QudG9wTGV2ZWxEb2N1bWVudE9yaWdpbigpOwotICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJlcXVlc3RVc2VyTWVkaWFQZXJtaXNzaW9uRm9yRnJhbWUocmVxdWVzdElE
LCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCB1c2VyUmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudE9yaWdp
bigpLT5kYXRhKCksIHRvcExldmVsRG9jdW1lbnRPcmlnaW4tPmRhdGEoKSwgdXNlclJlcXVlc3Qu
cmVxdWVzdCgpKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVx
dWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZShyZXF1ZXN0SUQsIHdlYkZyYW1lLT5mcmFt
ZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp1c2VyUmVxdWVz
dC51c2VyTWVkaWFEb2N1bWVudE9yaWdpbigpKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oKnRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCB1c2VyUmVxdWVzdC5yZXF1ZXN0
KCkpKTsKIH0KIAogdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OmNhbmNl
bFVzZXJNZWRpYVJlcXVlc3QoVXNlck1lZGlhUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTE4Miw3ICsx
ODIsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6ZW51bWVyYXRl
TWVkaWFEZXZpY2VzKE1lZGlhRGV2aWNlc0VudW1lcgogCiAgICAgU2VjdXJpdHlPcmlnaW4qIHRv
cExldmVsRG9jdW1lbnRPcmlnaW4gPSByZXF1ZXN0LnRvcExldmVsRG9jdW1lbnRPcmlnaW4oKTsK
ICAgICBBU1NFUlQodG9wTGV2ZWxEb2N1bWVudE9yaWdpbik7Ci0gICAgbV9wYWdlLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUocmVxdWVz
dElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCByZXF1ZXN0LnVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
KCktPmRhdGEoKSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbi0+ZGF0YSgpKSk7CisgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJh
bWUocmVxdWVzdElELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbigqcmVxdWVzdC51c2VyTWVkaWFEb2N1bWVudE9yaWdpbigpKSwgU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnRvcExldmVsRG9jdW1lbnRPcmln
aW4pKSk7CiB9CiAKIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpjYW5j
ZWxNZWRpYURldmljZXNFbnVtZXJhdGlvbihXZWJDb3JlOjpNZWRpYURldmljZXNFbnVtZXJhdGlv
blJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCA1ODk4NDAyYzMxNDlj
Y2IzNDkzNzE2MzZiMDcyMWE2MWY5Nzk0Zjc2Li4xZTIyMTJlMDU4ZWFlODE0NDU0ZGJmYmJkOTZl
MzU3OWJlYzUxZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNp
bmNsdWRlICJXZWJTV09yaWdpblRhYmxlLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoUmVzdWx0Lmg+CkBAIC05Niw3
ICs5NSw3IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkCiAKIHZvaWQgV2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4m
IHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50IHsgdG9wT3JpZ2luLmRhdGEoKSwgZGF0YSwgY29udHJvbGxpbmdT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciB9KTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCB7IFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKHRvcE9yaWdpbiksIGRhdGEsIGNv
bnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfSk7CiB9CiAKIHZv
aWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChE
b2N1bWVudElkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIpCkBAIC0xNTQsNyArMTUzLDcgQEAg
dm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiB0b3BPcmlnaW4sIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJ1
bk9yRGVsYXlUYXNrRm9ySW1wb3J0KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCB0b3BPcmlnaW4gPSB0b3BPcmlnaW4uZGF0YSgpLCBjbGllbnRVUkxdKCkgbXV0YWJsZSB7Cisg
ICAgcnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2lu
KHRvcE9yaWdpbiksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsKICAgICAgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9ICsrbV9wcmV2aW91c0NhbGxiYWNrSWRlbnRpZmllcjsKICAgICAgICAgbV9vbmdv
aW5nTWF0Y2hSZWdpc3RyYXRpb25UYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFj
aykpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246Ok1hdGNo
UmVnaXN0cmF0aW9uKGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CkBAIC0xNzMs
NyArMTcyLDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3RyYXRpb25S
ZWFkeShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2kKIHsKICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAgIG1fb25nb2luZ1Jl
Z2lzdHJhdGlvblJlYWR5VGFza3MuYWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRp
b25SZWFkeShjYWxsYmFja0lELCB0b3BPcmlnaW4uZGF0YSgpLCBjbGllbnRVUkwpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFk
eShjYWxsYmFja0lELCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbih0b3BP
cmlnaW4pLCBjbGllbnRVUkwpKTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJl
Z2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSkKQEAgLTE5Miw3ICsxOTEsNyBA
QCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyhjb25zdCBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
cnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIHRvcE9yaWdpbiA9IHRvcE9yaWdpbi5kYXRhKCksIGNsaWVudFVSTF0oKSBtdXRhYmxlIHsK
KyAgICBydW5PckRlbGF5VGFza0ZvckltcG9ydChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgdG9wT3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4odG9wT3JpZ2luKSwgY2xpZW50VVJMXSgpIG11dGFibGUgewogICAgICAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gKyttX3ByZXZpb3VzQ2FsbGJhY2tJZGVudGlmaWVyOwogICAgICAgICBtX29u
Z29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3MuYWRkKGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJh
Y2spKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpHZXRS
ZWdpc3RyYXRpb25zKGNhbGxiYWNrSUQsIHRvcE9yaWdpbiwgY2xpZW50VVJMKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCmluZGV4IGQ0ZWVlMzJjOWRiOTE3MmNmYzkwNGIwZWY0ZGI2NGIzNjYyNGQw
MWIuLjQ3YjRkYmI4MjNiNWFlYWExZDdlMzA1ZDgyYTNlYzNhMTc5NzkwNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCkBAIC03MzEsMTcgKzczMSwxNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6
ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZQogICAgIEFTU0VSVCh3ZWJGcmFtZSk7CiAgICAgCiAgICAgYXV0byYgb3JpZ2luID0gZnJhbWUu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBhdXRvJiBvcmlnaW5EYXRhID0gb3Jp
Z2luLmRhdGEoKTsKKyAgICBhdXRvIG9yaWdpbkRhdGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihvcmlnaW4pOwogICAgIGF1dG8mIHRyYWNrZXIgPSBEYXRhYmFzZVRy
YWNrZXI6OnNpbmdsZXRvbigpOwogICAgIGF1dG8gY3VycmVudFF1b3RhID0gdHJhY2tlci5xdW90
YShvcmlnaW5EYXRhKTsKICAgICBhdXRvIGN1cnJlbnRPcmlnaW5Vc2FnZSA9IHRyYWNrZXIudXNh
Z2Uob3JpZ2luRGF0YSk7CiAgICAgdWludDY0X3QgbmV3UXVvdGEgPSAwOwotICAgIFJlZlB0cjxB
UEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2lu
RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIFJlZlB0
cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50
aWZpZXIoKSktPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIG5ld1F1b3RhID0gbV9wYWdlLmluamVj
dGVkQnVuZGxlVUlDbGllbnQoKS5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKCZtX3BhZ2UsIHNlY3Vy
aXR5T3JpZ2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRldGFpbHMuZGlzcGxheU5hbWUoKSwgY3Vy
cmVudFF1b3RhLCBjdXJyZW50T3JpZ2luVXNhZ2UsIGRldGFpbHMuY3VycmVudFVzYWdlKCksIGRl
dGFpbHMuZXhwZWN0ZWRVc2FnZSgpKTsKIAogICAgIGlmICghbmV3UXVvdGEpIHsKICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoCi0gICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNl
UXVvdGEod2ViRnJhbWUtPmZyYW1lSUQoKSwgb3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIo
KSwgZGF0YWJhc2VOYW1lLCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3Vy
cmVudE9yaWdpblVzYWdlLCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVk
VXNhZ2UoKSksCisgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERh
dGFiYXNlUXVvdGEod2ViRnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
U2VjdXJpdHlPcmlnaW4ob3JpZ2luKS5kYXRhYmFzZUlkZW50aWZpZXIoKSwgZGF0YWJhc2VOYW1l
LCBkZXRhaWxzLmRpc3BsYXlOYW1lKCksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdl
LCBkZXRhaWxzLmN1cnJlbnRVc2FnZSgpLCBkZXRhaWxzLmV4cGVjdGVkVXNhZ2UoKSksCiAgICAg
ICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OlJl
cGx5KG5ld1F1b3RhKSwgbV9wYWdlLnBhZ2VJRCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6
OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CiAgICAg
fQogCkBAIC03NjYsNyArNzY2LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwKIAogICAgIHVp
bnQ2NF90IG5ld1F1b3RhID0gMDsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYygKLSAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShvcmlnaW4uZGF0YSgpLmRh
dGFiYXNlSWRlbnRpZmllcigpLCBjdXJyZW50UXVvdGEsIHRvdGFsQnl0ZXNOZWVkZWQpLAorICAg
ICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG9yaWdpbikuZGF0
YWJhc2VJZGVudGlmaWVyKCksIGN1cnJlbnRRdW90YSwgdG90YWxCeXRlc05lZWRlZCksCiAgICAg
ICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGE6OlJlcGx5KG5ld1F1b3RhKSwgbV9wYWdlLnBhZ2VJRCgpLCBTZWNvbmRzOjppbmZpbml0
eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVu
ZCk7CiAKICAgICBjYWNoZVN0b3JhZ2Uuc3RvcmVVcGRhdGVkUXVvdGFGb3JPcmlnaW4oJm9yaWdp
biwgbmV3UXVvdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZWU4Mzk3
Y2I1ZWZhNTcyMmVkYzdkZDNkZGJmN2U0MTdlY2Y2OGRjOS4uM2ZiYjE3ZDEyNTI1OTJmY2Q5ODNj
YWM2NmQ2NzhmZWEyODNhMmZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC04NDUsNyArODQ1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBGcmFtZUluZm9E
YXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YTsKICAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEuaXNNYWluRnJhbWUgPSBuYXZpZ2F0aW9uQWN0aW9uLmluaXRpYXRlZEJ5TWFpbkZyYW1lKCkg
PT0gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllczsKICAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChzb3VyY2VEb2N1bWVudC51cmwoKSk7Ci0gICAg
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLnNlY3VyaXR5T3JpZ2luID0gc291cmNlRG9jdW1lbnQu
c2VjdXJpdHlPcmlnaW4oKS5kYXRhKCk7CisgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLnNl
Y3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oc291
cmNlRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgaWYgKG9yaWdpbmF0aW5nRnJhbWUp
CiAgICAgICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEID0gb3JpZ2luYXRpbmdG
cmFtZS0+ZnJhbWVJRCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggNmM3ZmM5ODNhNjVhOTU5MGI1ZWQ4NDI3ODc0ODg1NzEzNDU5MGY5Ny4uYjZmZGYwYTdi
Y2RlYzQzM2E2ZDgwMzc0NjUzZjdhNDVhMWNlN2FkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtMTI3Myw3ICsxMjczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpm
ZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNp
dGVEYXQKIHsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6Ok1lbW9yeUNhY2hlKSkgewogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IE1lbW9yeUNh
Y2hlOjpzaW5nbGV0b24oKS5vcmlnaW5zV2l0aENhY2hlKHNlc3Npb25JRCkpCi0gICAgICAgICAg
ICB3ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4t
PmRhdGEoKSwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKKyAgICAgICAgICAg
IHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGU6
Ok1lbW9yeUNhY2hlLCAwIH0pOwogICAgIH0KIAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAppbmRl
eCA1ZDVjMmJjMDVmYzYwYzRlMmY3MGNjYmFhZDkwYjc5NTU1MmQ4MWI1Li5jMzBkZmVkMzhhZjU0
Mjc1NDQ1MjQ3YzFmMjYyNDc2NTdkYTFkOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTEyMiw5ICsx
MjIsOSBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZUlmSWRsZSgpCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgU3Rv
cmFnZUFyZWFJbXBsOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CitXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgU3RvcmFnZUFyZWFJbXBsOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fc3RvcmFnZUFyZWFNYXAtPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpOworICAgIHJl
dHVybiBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3N0
b3JhZ2VBcmVhTWFwLT5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5oCmluZGV4IDE2NWFmNDRkOTAxOGI5YjlkMTNmNzNmY2U4NDQ3MzkyY2QxODM0
MmUuLjQzM2M0ODczODNjNDgzNjM1YWM2ZjMyNDQ2NTUzNThiZWY1NzQ5ODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5o
CkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3Vu
dCgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsKLSAgICBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB1aW50NjRfdCBtX3N0b3JhZ2VBcmVhSUQ7CiAgICAgUmVmPFN0b3Jh
Z2VBcmVhTWFwPiBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDQ3MTNhYzRiN2Ux
Yzc4ZTEzMjJmNDlmMmI1NWZjODM5MjY1YjgxMGQuLmEyNjUwZDFiM2ViZmM3MjhjMjc1ZWUwMTBi
ZmVhM2EyNjhiMGI4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTc0LDE0ICs3NCwxNCBAQCBTdG9yYWdl
QXJlYU1hcDo6U3RvcmFnZUFyZWFNYXAoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1l
c3BhY2UsIFJlZjxXZWJDbwogICAgIGNhc2UgU3RvcmFnZVR5cGU6OkxvY2FsOgogICAgIGNhc2Ug
U3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsOgogICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW4q
IHRvcExldmVsT3JpZ2luID0gc3RvcmFnZU5hbWVzcGFjZS0+dG9wTGV2ZWxPcmlnaW4oKSkKLSAg
ICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3Bh
Y2VJRCgpLCB0b3BMZXZlbE9yaWdpbi0+ZGF0YSgpLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkp
LCAwKTsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VNYXAobV9zdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3Jh
Z2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigq
dG9wTGV2ZWxPcmlnaW4pLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbiht
X3NlY3VyaXR5T3JpZ2luKSksIDApOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlTG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBz
dG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSwgbV9zZWN1cml0eU9yaWdpbi0+
ZGF0YSgpKSwgMCk7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRl
TG9jYWxTdG9yYWdlTWFwKG1fc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdl
TmFtZXNwYWNlSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4obV9z
ZWN1cml0eU9yaWdpbikpLCAwKTsKIAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RvcmFn
ZVR5cGU6OlNlc3Npb246Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpDcmVhdGVT
ZXNzaW9uU3RvcmFnZU1hcChtX3N0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZS0+c3RvcmFn
ZU5hbWVzcGFjZUlEKCksIG1fc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSksIDApOworICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAobV9zdG9yYWdl
TWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VOYW1lc3BhY2VJRCgpLCBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSksIDApOwogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsOgpAQCAt
MzUyLDcgKzM1Miw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU2Vzc2lvblN0b3Jh
Z2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjCiAgICAgICAgIGZyYW1lcy5h
cHBlbmQoZnJhbWUpOwogICAgIH0KIAotICAgIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3Bh
dGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcygqcGFnZSwgZnJhbWVzLCBrZXksIG9sZFZh
bHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpOworICAg
IFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0Zy
YW1lcygqcGFnZSwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgdXJsU3RyaW5nLCBT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKSk7
CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnQodWlu
dDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKQpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoTG9j
YWxTdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3Rv
cmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2VHcm91cCwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdW
YWx1ZSwgdXJsU3RyaW5nLCBtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkpOworICAgIFN0b3JhZ2VF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMocGFnZUdy
b3VwLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcsIFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1fc2VjdXJpdHlPcmlnaW4pKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMmYxY2Qw
N2E3YWRkMWU2YTUwZThhMjg5YWI5YWViYjczYTE3NGExMC4uMjFmZDU4NzA4ODAxYzA4ZjZjMTU2
ZjA5NTRjODg2M2QwNDZlOTFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6flN0b3JhZ2VOYW1lc3BhY2VJbXBsKCkKIAog
dm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6ZGlkRGVzdHJveVN0b3JhZ2VBcmVhTWFwKFN0b3Jh
Z2VBcmVhTWFwJiBtYXApCiB7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKG1hcC5zZWN1
cml0eU9yaWdpbigpLmRhdGEoKSk7CisgICAgbV9zdG9yYWdlQXJlYU1hcHMucmVtb3ZlKFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKG1hcC5zZWN1cml0eU9yaWdpbigpKSk7
CiB9CiAKIFJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VB
cmVhKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4pCkBAIC0xNzcsNyAr
MTc3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgeyB9CiAg
ICAgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgeyB9CiAKLSAgICBjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QKKyAgICBTZWN1cml0eU9yaWdpbkRhdGEg
c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2VjdXJpdHlP
cmlnaW5EYXRhOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdl
QXJlYUltcGwuaAppbmRleCAzODZkNDhkOTkwMjZiYzFiMTcxZGExYmU2ZDY2NDNmZjA0MDZmZDg5
Li4xNjQ3NzIyNzg0Y2JhNGNlM2FkYmYxZTEyMmFhYmYwZTYwMzk1ZWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCkBAIC02MSw3ICs2MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQorICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSBzZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2VjdXJpdHlPcmln
aW47IH0KIAogICAgIFJlZjxTdG9yYWdlQXJlYUltcGw+IGNvcHkoKTsKICAgICB2b2lkIGNsb3Nl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApp
bmRleCBkZGJkYjIyZWEwZmEwZGM0YjFjYmQ1YTZmYzZmODg2NWI4YWVhMTA3Li5kNWU1Zjc0Nzdl
ODMzZDI0Y2ViM2JhMTkyOGYxZDFjMTY5MmZlYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTYzNyw3ICs2MzcsNyBAQCBsb25nIGxv
bmcgU3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQogCiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKIAotICAgIFN0
cmluZyBwYXRoID0gZGF0YWJhc2VQYXRoRm9yT3JpZ2luKG9yaWdpbi0+ZGF0YSgpLmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKKyAgICBTdHJpbmcgcGF0aCA9IGRhdGFiYXNlUGF0aEZvck9yaWdpbihT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2luKS5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFz
ZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNl
TWFuYWdlci5tbQppbmRleCAwMDUxZjU4MmRkNTQ2MmZkZmU1ZmY4MzdlMGMxOWEwNjQwMTA3ZDM1
Li43NmMyOGY0ZGRiZjc0OWVmMGRhYjIxOTA0OGNlZDIxMmE5ZDAwYmRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQpA
QCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5UGF0
aCgpOwogewogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIFZlY3Rv
cjxTdHJpbmc+IG5hbWVWZWN0b3IgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRhdGFi
YXNlTmFtZXMoW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gbmFt
ZVZlY3RvciA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VOYW1lcyhTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqW29yaWdpbiBfY29yZV0pKTsKICAg
ICBOU011dGFibGVBcnJheSAqbmFtZXMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5Om5hbWVWZWN0b3Iuc2l6ZSgpXTsKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1l
VmVjdG9yKQogICAgICAgICBbbmFtZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKW5hbWVdOwpAQCAt
MTQyLDEyICsxNDIsMTIgQEAgc3RhdGljIE5TU3RyaW5nICpkYXRhYmFzZXNEaXJlY3RvcnlQYXRo
KCk7CiAKIC0gKEJPT0wpZGVsZXRlT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgog
ewotICAgIHJldHVybiBvcmlnaW4gJiYgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5kZWxl
dGVPcmlnaW4oW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7CisgICAgcmV0dXJuIG9yaWdpbiAmJiBE
YXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbigqW29yaWdpbiBfY29yZV0pKTsKIH0KIAogLSAoQk9PTClk
ZWxldGVEYXRhYmFzZTooTlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXIgd2l0aE9yaWdpbjoo
V2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KIHsKLSAgICByZXR1cm4gb3JpZ2luICYmIERhdGFi
YXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlRGF0YWJhc2UoW29yaWdpbiBfY29yZV0tPmRh
dGEoKSwgZGF0YWJhc2VJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gb3JpZ2luICYmIERhdGFiYXNl
VHJhY2tlcjo6c2luZ2xldG9uKCkuZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tU2VjdXJpdHlPcmlnaW4oKltvcmlnaW4gX2NvcmVdKSwgZGF0YWJhc2VJZGVudGlmaWVyKTsK
IH0KIAogLy8gRm9yIER1bXBSZW5kZXJUcmVlIHN1cHBvcnQgb25seQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIu
bW0KaW5kZXggMTA4YzUyODdmOTA3ZTgxYTYxYTAxYWE3MjQyM2M5NjA3OTUwYmM5NS4uOWI4NDE4
NjAyZTU5YTFjYTlmMmNjOWU0ODhiNjhkZTY2NmNiMjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLm1t
CkBAIC01MywxMiArNTMsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC0gKHVuc2ln
bmVkIGxvbmcgbG9uZyl1c2FnZQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmds
ZXRvbigpLnVzYWdlKFtfb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsKKyAgICByZXR1cm4gRGF0YWJh
c2VUcmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1
cml0eU9yaWdpbigqW19vcmlnaW4gX2NvcmVdKSk7CiB9CiAKIC0gKHVuc2lnbmVkIGxvbmcgbG9u
ZylxdW90YQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnF1b3Rh
KFtfb3JpZ2luIF9jb3JlXS0+ZGF0YSgpKTsKKyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpz
aW5nbGV0b24oKS5xdW90YShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigq
W19vcmlnaW4gX2NvcmVdKSk7CiB9CiAKIC8vIElmIHRoZSBxdW90YSBpcyBzZXQgdG8gYSB2YWx1
ZSBsb3dlciB0aGFuIHRoZSBjdXJyZW50IHVzYWdlLCB0aGF0IHF1b3RhIHdpbGwKQEAgLTY2LDcg
KzY2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAvLyBwcmV2ZW50IG5ldyBkYXRhIGZy
b20gYmVpbmcgYWRkZWQgdG8gZGF0YWJhc2VzIGluIHRoYXQgb3JpZ2luLgogLSAodm9pZClzZXRR
dW90YToodW5zaWduZWQgbG9uZyBsb25nKXF1b3RhCiB7Ci0gICAgRGF0YWJhc2VUcmFja2VyOjpz
aW5nbGV0b24oKS5zZXRRdW90YShbX29yaWdpbiBfY29yZV0tPmRhdGEoKSwgcXVvdGEpOworICAg
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0UXVvdGEoU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tU2VjdXJpdHlPcmlnaW4oKltfb3JpZ2luIF9jb3JlXSksIHF1b3RhKTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdl
TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1h
bmFnZXIubW0KaW5kZXggNmU1N2VjYjM0ODliNWEyZDQ3NGZhODVlY2FlZTdkNjcyYjVjMzhkYy4u
OWE2ODljYTU1OTQ3M2VkM2IwMTU0YWE5NWNlYzZlNTFmYTlhN2Q3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tCkBAIC04
NCw3ICs4NCw3IEBAIE5TU3RyaW5nICogY29uc3QgV2ViU3RvcmFnZURpZE1vZGlmeU9yaWdpbk5v
dGlmaWNhdGlvbiA9IEAiV2ViU3RvcmFnZURpZE1vZGlmeU9yCiAKIC0gKHZvaWQpZGVsZXRlT3Jp
Z2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgogewotICAgIFdlYktpdDo6U3RvcmFnZVRy
YWNrZXI6OnRyYWNrZXIoKS5kZWxldGVPcmlnaW4oW29yaWdpbiBfY29yZV0tPmRhdGEoKSk7Cisg
ICAgV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqW29yaWdpbiBfY29yZV0pKTsKIH0KIAog
LSAodW5zaWduZWQgbG9uZyBsb25nKWRpc2tVc2FnZUZvck9yaWdpbjooV2ViU2VjdXJpdHlPcmln
aW4gKilvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggNGU0YzEzZGZiNzNhYjY0YWVl
OTdkN2EzNzM5NTEzYWU0OTI0MjlmYy4uNGY0MjQ4MzdkZWE4YTlhMmM0ZDU3Y2FmNmM4M2RhYWY4
NGU3MmE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KQEAgLTcxLDcgKzcxLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIC0gKE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyCiB7
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkt
PmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4q
PihfcHJpdmF0ZSkpLmRhdGFiYXNlSWRlbnRpZmllcigpOwogfQogCiAjaWYgUExBVEZPUk0oSU9T
KQpAQCAtMTY5LDE3ICsxNjksMTcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC0gKHVu
c2lnbmVkIGxvbmcgbG9uZyl1c2FnZQogewotICAgIHJldHVybiBEYXRhYmFzZVRyYWNrZXI6OnNp
bmdsZXRvbigpLnVzYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0
ZSktPmRhdGEoKSk7CisgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkudXNh
Z2UoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnJlaW50ZXJwcmV0X2Nh
c3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkpKTsKIH0KIAogLSAodW5zaWduZWQgbG9uZyBs
b25nKXF1b3RhCiB7Ci0gICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVv
dGEocmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+ZGF0YSgpKTsK
KyAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9y
aWdpbio+KF9wcml2YXRlKSkpOwogfQogCiAtICh2b2lkKXNldFF1b3RhOih1bnNpZ25lZCBsb25n
IGxvbmcpcXVvdGEKIHsKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3Rh
KHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSktPmRhdGEoKSwgcXVv
dGEpOworICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0UXVvdGEoU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKnJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlP
cmlnaW4qPihfcHJpdmF0ZSkpLCBxdW90YSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDM2MDU2MjM1ODQ5MWI1MmQ0
NTRmNWYzYzYxZjEzMzYxYmU4ODM0ZTkuLmZiNTQ0MDgwMjBhMDcyMzVhZjZhZTRlNDVjYmYyMWEy
OTQ4ZTRhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIEhSRVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpk
YXRhYmFzZXNXaXRoT3JpZ2luKF9Jbl9vcHRfIElXZWJTZWN1cml0eU9yaWdpbiogb3JpCiAgICAg
aWYgKCF3ZWJTZWN1cml0eU9yaWdpbikKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1
dG8gZGF0YWJhc2VOYW1lcyA9IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGF0YWJhc2VO
YW1lcyh3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpKTsKKyAgICBh
dXRvIGRhdGFiYXNlTmFtZXMgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRhdGFiYXNl
TmFtZXMoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oKndlYlNlY3VyaXR5
T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpKSk7CiAKICAgICBDT01QdHI8Q09NRW51bVZhcmlhbnQ8
VmVjdG9yPFN0cmluZz4+PiBlbnVtVmFyaWFudChBZG9wdENPTSwgQ09NRW51bVZhcmlhbnQ8VmVj
dG9yPFN0cmluZz4+OjphZG9wdChkYXRhYmFzZU5hbWVzKSk7CiAKQEAgLTMxMSw3ICszMTEsNyBA
QCBIUkVTVUxUIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlT3JpZ2luKF9Jbl9vcHRfIElXZWJT
ZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgIGlmICghd2ViU2VjdXJpdHlPcmlnaW4pCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRl
bGV0ZU9yaWdpbih3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YSgpKTsK
KyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZU9yaWdpbihTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqd2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5
T3JpZ2luKCkpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMzMxLDcgKzMzMSw3IEBAIEhS
RVNVTFQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVEYXRhYmFzZShfSW5fIEJTVFIgZGF0YWJh
c2VOYW1lLCBfSW5fb3B0XyBJV2ViCiAgICAgaWYgKCF3ZWJTZWN1cml0eU9yaWdpbikKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuZGVs
ZXRlRGF0YWJhc2Uod2ViU2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCktPmRhdGEoKSwg
U3RyaW5nKGRhdGFiYXNlTmFtZSwgU3lzU3RyaW5nTGVuKGRhdGFiYXNlTmFtZSkpKTsKKyAgICBE
YXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCp3ZWJTZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmln
aW4oKSksIFN0cmluZyhkYXRhYmFzZU5hbWUsIFN5c1N0cmluZ0xlbihkYXRhYmFzZU5hbWUpKSk7
CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTM5Niw3ICszOTYsNyBAQCBIUkVTVUxUIFdlYkRh
dGFiYXNlTWFuYWdlcjo6c2V0UXVvdGEoX0luXyBCU1RSIG9yaWdpbiwgdW5zaWduZWQgbG9uZyBs
b25nIHF1b3RhKQogICAgIGlmICh0aGlzICE9IHNfc2hhcmVkV2ViRGF0YWJhc2VNYW5hZ2VyKQog
ICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24o
KS5zZXRRdW90YShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvcmlnaW4pLT5kYXRh
KCksIHF1b3RhKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKG9yaWdpbikpLCBxdW90YSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA4MWIy
NjlmYzQyMGM1OWNjNmVmNWQ5OTJmYzc2Y2M0OWIwZWEwZmI4Li45MDZjYmJhNTFkYzc1NDliYjcz
ZWRmMjU3M2YyYWZhZTAyM2RjMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgSFJFU1VMVCBXZWJTZWN1cml0
eU9yaWdpbjo6dXNhZ2UoX091dF8gdW5zaWduZWQgbG9uZyBsb25nKiByZXN1bHQpCiAgICAgaWYg
KCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gRGF0
YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS51c2FnZShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCkp
OworICAgICpyZXN1bHQgPSBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnVzYWdlKFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCptX3NlY3VyaXR5T3JpZ2luKSk7CiAK
ICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTE0MCwxMyArMTQwLDEzIEBAIEhSRVNVTFQgV2ViU2Vj
dXJpdHlPcmlnaW46OnF1b3RhKF9PdXRfIHVuc2lnbmVkIGxvbmcgbG9uZyogcmVzdWx0KQogICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnJlc3VsdCA9
IERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkucXVvdGEobV9zZWN1cml0eU9yaWdpbi0+ZGF0
YSgpKTsKKyAgICAqcmVzdWx0ID0gRGF0YWJhc2VUcmFja2VyOjpzaW5nbGV0b24oKS5xdW90YShT
ZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqbV9zZWN1cml0eU9yaWdpbikp
OwogICAgIHJldHVybiBTX09LOwogfQogICAgICAgICAKIEhSRVNVTFQgV2ViU2VjdXJpdHlPcmln
aW46OnNldFF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgCiB7Ci0gICAgRGF0YWJhc2VU
cmFja2VyOjpzaW5nbGV0b24oKS5zZXRRdW90YShtX3NlY3VyaXR5T3JpZ2luLT5kYXRhKCksIHF1
b3RhKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNldFF1b3RhKFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCptX3NlY3VyaXR5T3JpZ2luKSwgcXVvdGEp
OwogCiAgICAgcmV0dXJuIFNfT0s7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>