<?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>142688</bug_id>
          
          <creation_ts>2015-03-13 19:45:17 -0700</creation_ts>
          <short_desc>REGRESSION(r181483): Caused use-after-free on many tests (Requested by ap on #webkit).</short_desc>
          <delta_ts>2015-03-13 19:51:04 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>142506</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>andersca</cc>
    
    <cc>conrad_shultz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1077107</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-13 19:45:17 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/181483 broke the build:
Caused use-after-free on many tests (Requested by ap 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>1077109</commentid>
    <comment_count>1</comment_count>
      <attachid>248636</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-13 19:45:50 -0700</bug_when>
    <thetext>Created attachment 248636
ROLLOUT of r181483

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>1077111</commentid>
    <comment_count>2</comment_count>
      <attachid>248636</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-13 19:51:01 -0700</bug_when>
    <thetext>Comment on attachment 248636
ROLLOUT of r181483

Clearing flags on attachment: 248636

Committed r181494: &lt;http://trac.webkit.org/changeset/181494&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1077112</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-13 19:51:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248636</attachid>
            <date>2015-03-13 19:45:50 -0700</date>
            <delta_ts>2015-03-13 19:51:01 -0700</delta_ts>
            <desc>ROLLOUT of r181483</desc>
            <filename>bug-142688-20150313194523.patch</filename>
            <type>text/plain</type>
            <size>66489</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkzZTQ1M2EyNTE3ZjVm
NmE0YTcwOTc0ZTE4MWY5NzczYTEyNWVhNC4uNzgxOTU2NjgxYzlhNDFlMzBkYjE1NWY2MTU1ZWNm
NmRiNTBjZmU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTAzLTEzICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTgxNDgzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQyNjg4CisKKyAgICAgICAgQ2F1c2VkIHVzZS1hZnRlci1mcmVlIG9u
IG1hbnkgdGVzdHMgKFJlcXVlc3RlZCBieSBhcCBvbgorICAgICAgICAjd2Via2l0KS4KKworICAg
ICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkFsbG93IGNsaWVudHMgdG8gc2Vs
ZWN0aXZlbHkgZGlzYWJsZSBwbHVnLWlucyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MjUwNgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xODE0ODMKKwogMjAxNS0wMy0xMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgQ2FjaGUgZ2x5cGggd2lkdGhzIHRvIEdseXBoUGFnZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCBiYWM1NjMzYzg1M2Q4ZmQ2YjI3OWE0NTNjMzgxZTM1YzRkNzZmNGFk
Li4yNjM0ZmQ1NDdmOTY2MTY1NDM2N2NjNGI1MWIzOTJkYjA4ZDUzNjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDMtMTMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODE0
ODMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2
ODgKKworICAgICAgICBDYXVzZWQgdXNlLWFmdGVyLWZyZWUgb24gbWFueSB0ZXN0cyAoUmVxdWVz
dGVkIGJ5IGFwIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5n
ZXNldDoKKworICAgICAgICAiQWxsb3cgY2xpZW50cyB0byBzZWxlY3RpdmVseSBkaXNhYmxlIHBs
dWctaW5zIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQyNTA2CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4MTQ4Mwor
CiAyMDE1LTAzLTEzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtNYWNdIEVuYWJsZSBXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwppbmRleCAzYmNmN2JjNmQ0MDhjMmVlMDM1Y2IzYTJhZDFiZmYzMzk3OGE1OGQyLi4wMWQ5NjA5
Y2IwMjAxOTg0MzYzNDFmMjhkOWZkMTFmMjI0MDExZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTUtMDMtMTMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODE0ODMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI2ODgKKworICAg
ICAgICBDYXVzZWQgdXNlLWFmdGVyLWZyZWUgb24gbWFueSB0ZXN0cyAoUmVxdWVzdGVkIGJ5IGFw
IG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKwor
ICAgICAgICAiQWxsb3cgY2xpZW50cyB0byBzZWxlY3RpdmVseSBkaXNhYmxlIHBsdWctaW5zIgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTA2Cisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4MTQ4MworCiAyMDE1LTAz
LTEwICBDb25yYWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+CiAKICAgICAgICAg
QWxsb3cgY2xpZW50cyB0byBzZWxlY3RpdmVseSBkaXNhYmxlIHBsdWctaW5zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMzM1MzUwNzA3MGNkNmJkNmEwNDY2MWQzOTA5ZTA3NDIyYjU2YzBjZi4uNTI0NzAxZGI2ZGM2
NGNmOWU4N2I3Y2Q2OTIzN2NkZDNhYjhjNmFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDE1LTAzLTEzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTgxNDgzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNjg4CisKKyAgICAgICAgQ2F1c2Vk
IHVzZS1hZnRlci1mcmVlIG9uIG1hbnkgdGVzdHMgKFJlcXVlc3RlZCBieSBhcCBvbgorICAgICAg
ICAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkFs
bG93IGNsaWVudHMgdG8gc2VsZWN0aXZlbHkgZGlzYWJsZSBwbHVnLWlucyIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjUwNgorICAgICAgICBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xODE0ODMKKwogMjAxNS0wMy0xMyAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBFbmFibGUg
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcAppbmRleCBhZTNkODQyNWY5NjEyZjU5ZTYwNDFlYjIzNzMzOTg5MWQ3OTBlMTMyLi40
MGMxNTFiYzEzMDIwNWVjMDYyMDQ3MWJjYjc2OWVmNDVkMzYzMTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCBSZWZQdHI8RG9j
dW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5
cGUsIEZyYW1lKiBmcgogCiAgICAgLy8gUERGIGlzIG9uZSBpbWFnZSB0eXBlIGZvciB3aGljaCBh
IHBsdWdpbiBjYW4gb3ZlcnJpZGUgYnVpbHQtaW4gc3VwcG9ydC4KICAgICAvLyBXZSBkbyBub3Qg
d2FudCBRdWlja1RpbWUgdG8gdGFrZSBvdmVyIGFsbCBpbWFnZSB0eXBlcywgb2J2aW91c2x5Lgot
ICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk9yUG9zdFNjcmlwdE1JTUVUeXBlKHR5cGUp
ICYmIHBsdWdpbkRhdGEgJiYgcGx1Z2luRGF0YS0+c3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5cGUo
dHlwZSwgYWxsb3dlZFBsdWdpblR5cGVzKSkKKyAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNQ
REZPclBvc3RTY3JpcHRNSU1FVHlwZSh0eXBlKSAmJiBwbHVnaW5EYXRhICYmIHBsdWdpbkRhdGEt
PnN1cHBvcnRzTWltZVR5cGUodHlwZSwgYWxsb3dlZFBsdWdpblR5cGVzKSkKICAgICAgICAgcmV0
dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CiAgICAgaWYgKEltYWdlOjpz
dXBwb3J0c1R5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVhdGUo
KmZyYW1lLCB1cmwpOwpAQCAtMzQ4LDcgKzM0OCw3IEBAIFJlZlB0cjxEb2N1bWVudD4gRE9NSW1w
bGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZy
CiAgICAgLy8gRXZlcnl0aGluZyBlbHNlIGV4Y2VwdCB0ZXh0L3BsYWluIGNhbiBiZSBvdmVycmlk
ZGVuIGJ5IHBsdWdpbnMuIEluIHBhcnRpY3VsYXIsIEFkb2JlIFNWRyBWaWV3ZXIgc2hvdWxkIGJl
IHVzZWQgZm9yIFNWRywgaWYgaW5zdGFsbGVkLgogICAgIC8vIERpc2FsbG93aW5nIHBsdWctaW5z
IHRvIHVzZSB0ZXh0L3BsYWluIHByZXZlbnRzIHBsdWctaW5zIGZyb20gaGlqYWNraW5nIGEgZnVu
ZGFtZW50YWwgdHlwZSB0aGF0IHRoZSBicm93c2VyIGlzIGV4cGVjdGVkIHRvIGhhbmRsZSwKICAg
ICAvLyBhbmQgYWxzbyBzZXJ2ZXMgYXMgYW4gb3B0aW1pemF0aW9uIHRvIHByZXZlbnQgbG9hZGlu
ZyB0aGUgcGx1Zy1pbiBkYXRhYmFzZSBpbiB0aGUgY29tbW9uIGNhc2UuCi0gICAgaWYgKHR5cGUg
IT0gInRleHQvcGxhaW4iICYmICgocGx1Z2luRGF0YSAmJiBwbHVnaW5EYXRhLT5zdXBwb3J0c1dl
YlZpc2libGVNaW1lVHlwZSh0eXBlLCBhbGxvd2VkUGx1Z2luVHlwZXMpKSB8fCAoZnJhbWUgJiYg
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KHR5
cGUpKSkpCisgICAgaWYgKHR5cGUgIT0gInRleHQvcGxhaW4iICYmICgocGx1Z2luRGF0YSAmJiBw
bHVnaW5EYXRhLT5zdXBwb3J0c01pbWVUeXBlKHR5cGUsIGFsbG93ZWRQbHVnaW5UeXBlcykpIHx8
IChmcmFtZSAmJiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkQWx3YXlzVXNlUGx1Z2lu
RG9jdW1lbnQodHlwZSkpKSkKICAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50OjpjcmVhdGUo
ZnJhbWUsIHVybCk7CiAgICAgaWYgKGlzVGV4dE1JTUVUeXBlKHR5cGUpKQogICAgICAgICByZXR1
cm4gVGV4dERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YmZyYW1lTG9hZGVyLmNwcAppbmRleCBiMGZkNTJmNWJlMmMyODUzNmZmNTVmNGFhMTMxNzA1
NzU2N2Q3ZDAwLi5iY2FhOThkOWY2NzViZGZlNTc2NTkxMWZkNjg0YmEzYjM2YWUxMzJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKQEAgLTE2NywxMSArMTY3LDgg
QEAgc3RhdGljIFN0cmluZyBmaW5kUGx1Z2luTUlNRVR5cGVGcm9tVVJMKFBhZ2UqIHBhZ2UsIGNv
bnN0IFN0cmluZyYgdXJsKQogCiAgICAgY29uc3QgUGx1Z2luRGF0YSYgcGx1Z2luRGF0YSA9IHBh
Z2UtPnBsdWdpbkRhdGEoKTsKIAotICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lczsKLSAg
ICBWZWN0b3I8c2l6ZV90PiBtaW1lUGx1Z2luSW5kaWNlczsKLSAgICBwbHVnaW5EYXRhLmdldFdl
YlZpc2libGVNaW1lc0FuZFBsdWdpbkluZGljZXMobWltZXMsIG1pbWVQbHVnaW5JbmRpY2VzKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGNvbnN0IE1pbWVDbGFzc0luZm8mIG1pbWVDbGFzc0luZm8gPSBtaW1lc1tpXTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBsdWdpbkRhdGEubWltZXMoKS5zaXplKCk7ICsraSkgeworICAg
ICAgICBjb25zdCBNaW1lQ2xhc3NJbmZvJiBtaW1lQ2xhc3NJbmZvID0gcGx1Z2luRGF0YS5taW1l
cygpW2ldOwogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1pbWVDbGFzc0luZm8uZXh0
ZW5zaW9ucy5zaXplKCk7ICsraikgewogICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGV4dGVuc2lvbiwgbWltZUNsYXNzSW5mby5leHRlbnNpb25zW2pdKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbWltZUNsYXNzSW5mby50eXBlOwpAQCAtMTk0LDcgKzE5MSw3IEBAIHN0YXRpYyB2
b2lkIGxvZ1BsdWdpblJlcXVlc3QoUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiB1CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU3RyaW5n
IHBsdWdpbkZpbGUgPSBwYWdlLT5wbHVnaW5EYXRhKCkucGx1Z2luRmlsZUZvcldlYlZpc2libGVN
aW1lVHlwZShuZXdNSU1FVHlwZSk7CisgICAgU3RyaW5nIHBsdWdpbkZpbGUgPSBwYWdlLT5wbHVn
aW5EYXRhKCkucGx1Z2luRmlsZUZvck1pbWVUeXBlKG5ld01JTUVUeXBlKTsKICAgICBTdHJpbmcg
ZGVzY3JpcHRpb24gPSAhcGx1Z2luRmlsZSA/IG5ld01JTUVUeXBlIDogcGx1Z2luRmlsZTsKIAog
ICAgIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50JiBkaWFnbm9zdGljTG9nZ2luZ0NsaWVudCA9IHBh
Z2UtPm1haW5GcmFtZSgpLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCk7CkBAIC0zNzAsNyArMzY3
LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6c2hvdWxkVXNlUGx1Z2luKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib28KICAgICAvLyBBbGxvdyBvdGhlciBwbHVnLWlu
cyB0byB3aW4gb3ZlciBRdWlja1RpbWUgYmVjYXVzZSBpZiB0aGUgdXNlciBoYXMgaW5zdGFsbGVk
IGEgcGx1Zy1pbiB0aGF0CiAgICAgLy8gY2FuIGhhbmRsZSBUSUZGICh3aGljaCBRdWlja1RpbWUg
Y2FuIGFsc28gaGFuZGxlKSB0aGV5IHByb2JhYmx5IGludGVuZGVkIHRvIG92ZXJyaWRlIFFULgog
ICAgIGlmIChtX2ZyYW1lLnBhZ2UoKSAmJiAobWltZVR5cGUgPT0gImltYWdlL3RpZmYiIHx8IG1p
bWVUeXBlID09ICJpbWFnZS90aWYiIHx8IG1pbWVUeXBlID09ICJpbWFnZS94LXRpZmYiKSkgewot
ICAgICAgICBTdHJpbmcgcGx1Z2luTmFtZSA9IG1fZnJhbWUucGFnZSgpLT5wbHVnaW5EYXRhKCku
cGx1Z2luTmFtZUZvcldlYlZpc2libGVNaW1lVHlwZShtaW1lVHlwZSk7CisgICAgICAgIFN0cmlu
ZyBwbHVnaW5OYW1lID0gbV9mcmFtZS5wYWdlKCktPnBsdWdpbkRhdGEoKS5wbHVnaW5OYW1lRm9y
TWltZVR5cGUobWltZVR5cGUpOwogICAgICAgICBpZiAoIXBsdWdpbk5hbWUuaXNFbXB0eSgpICYm
ICFwbHVnaW5OYW1lLmNvbnRhaW5zKCJRdWlja1RpbWUiLCBmYWxzZSkpIAogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0
cmF0ZWdpZXMuaAppbmRleCA0ZTYyNWZiYzcyMWI4MGNjZDU4NDk5ZTcxNTgxZTQyNzBkZGFhMmQy
Li43NDBiY2ZkMWQxNjc0ODk4NGE5ZmM2NjVhOTYxNGFhY2Q3ZDdlZjI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtODgsNyArODgsNyBAQCBw
cml2YXRlOgogICAgIFBsdWdpblN0cmF0ZWd5KiBtX3BsdWdpblN0cmF0ZWd5OwogfTsKIAotV0VC
Q09SRV9FWFBPUlQgUGxhdGZvcm1TdHJhdGVnaWVzKiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKTsKK1Bs
YXRmb3JtU3RyYXRlZ2llcyogcGxhdGZvcm1TdHJhdGVnaWVzKCk7CiBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFBsYXRmb3JtU3RyYXRlZ2llcyhQbGF0Zm9ybVN0cmF0ZWdpZXMqKTsKIGJvb2wgaGFz
UGxhdGZvcm1TdHJhdGVnaWVzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL0RPTU1pbWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5
cGUuY3BwCmluZGV4IGUyOGE4YTBiMWJmMWVhOTczZTdiYmZmZGUxMTE0ZWY5ZjFiY2I4OTIuLjNl
MWVmOWFmNTQyYmQ1YWE2OWIzODU2YjViOTI1ZjMyNTcyMmU1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvRE9NTWltZVR5cGUuY3BwCkBAIC00Miw3ICs0Miw3IEBAIERPTU1pbWVUeXBlOjp+RE9N
TWltZVR5cGUoKQogewogfQogCi1TdHJpbmcgRE9NTWltZVR5cGU6OnR5cGUoKSBjb25zdAorY29u
c3QgU3RyaW5nICZET01NaW1lVHlwZTo6dHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1pbWVD
bGFzc0luZm8oKS50eXBlOwogfQpAQCAtNjAsMjggKzYwLDE3IEBAIFN0cmluZyBET01NaW1lVHlw
ZTo6c3VmZml4ZXMoKSBjb25zdAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAK
LVN0cmluZyBET01NaW1lVHlwZTo6ZGVzY3JpcHRpb24oKSBjb25zdAorY29uc3QgU3RyaW5nICZE
T01NaW1lVHlwZTo6ZGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtaW1lQ2xhc3NJ
bmZvKCkuZGVzYzsKIH0KIAotTWltZUNsYXNzSW5mbyBET01NaW1lVHlwZTo6bWltZUNsYXNzSW5m
bygpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVzOwotICAgIFZlY3Rv
cjxzaXplX3Q+IG1pbWVQbHVnaW5JbmRpY2VzOwotICAgIG1fcGx1Z2luRGF0YS0+Z2V0V2ViVmlz
aWJsZU1pbWVzQW5kUGx1Z2luSW5kaWNlcyhtaW1lcywgbWltZVBsdWdpbkluZGljZXMpOwotICAg
IHJldHVybiBtaW1lc1ttX2luZGV4XTsKLX0KLQogUGFzc1JlZlB0cjxET01QbHVnaW4+IERPTU1p
bWVUeXBlOjplbmFibGVkUGx1Z2luKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1f
ZnJhbWUtPnBhZ2UoKSB8fCAhbV9mcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5z
dWJmcmFtZUxvYWRlcigpLmFsbG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4p
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lczsK
LSAgICBWZWN0b3I8c2l6ZV90PiBtaW1lUGx1Z2luSW5kaWNlczsKLSAgICBtX3BsdWdpbkRhdGEt
PmdldFdlYlZpc2libGVNaW1lc0FuZFBsdWdpbkluZGljZXMobWltZXMsIG1pbWVQbHVnaW5JbmRp
Y2VzKTsKLSAgICByZXR1cm4gRE9NUGx1Z2luOjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgpLCBt
X2ZyYW1lLCBtaW1lUGx1Z2luSW5kaWNlc1ttX2luZGV4XSk7CisgICAgcmV0dXJuIERPTVBsdWdp
bjo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgbV9mcmFtZSwgbV9wbHVnaW5EYXRhLT5taW1l
UGx1Z2luSW5kaWNlcygpW21faW5kZXhdKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZS5oCmluZGV4IGEwOTAzYTJjNGVhMTFlZTVhZjYx
ZjRhYmY3NDI1MzY3YmQ1NDM4OTUuLjUwODNlMjQ5YmYxNzQ2NGVjOWMyN2RkNmZjMmRjMjVmZmI5
M2MzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmgKQEAgLTM3LDEzICszNywx
MyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxET01NaW1lVHlwZT4gY3JlYXRlKFBhc3NSZWZQ
dHI8UGx1Z2luRGF0YT4gcGx1Z2luRGF0YSwgRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBpbmRleCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01NaW1lVHlwZShwbHVnaW5EYXRhLCBmcmFtZSwgaW5k
ZXgpKTsgfQogICAgIH5ET01NaW1lVHlwZSgpOwogCi0gICAgU3RyaW5nIHR5cGUoKSBjb25zdDsK
KyAgICBjb25zdCBTdHJpbmcgJnR5cGUoKSBjb25zdDsKICAgICBTdHJpbmcgc3VmZml4ZXMoKSBj
b25zdDsKLSAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcg
JmRlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxET01QbHVnaW4+IGVuYWJsZWRQ
bHVnaW4oKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBNaW1lQ2xhc3NJbmZvIG1pbWVDbGFzc0lu
Zm8oKSBjb25zdDsKKyAgICBjb25zdCBNaW1lQ2xhc3NJbmZvJiBtaW1lQ2xhc3NJbmZvKCkgY29u
c3QgeyByZXR1cm4gbV9wbHVnaW5EYXRhLT5taW1lcygpW21faW5kZXhdOyB9CiAKICAgICBET01N
aW1lVHlwZShQYXNzUmVmUHRyPFBsdWdpbkRhdGE+LCBGcmFtZSosIHVuc2lnbmVkIGluZGV4KTsK
ICAgICBSZWZQdHI8UGx1Z2luRGF0YT4gbV9wbHVnaW5EYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAKaW5kZXggMGUxNGZkM2I0MTI1ZjMyMWNkNjZjY2I2
ZDU1YWQ4ZWM1MGYxMWRiZS4uNmIyYzQzOWMzZTRlNjg1ZTlkMTA3ZWJiM2M4ZTI2Y2UyNzc0MDAw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCkBAIC00
OCwxMSArNDgsNyBAQCB1bnNpZ25lZCBET01NaW1lVHlwZUFycmF5OjpsZW5ndGgoKSBjb25zdAog
ICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBnZXRQbHVnaW5EYXRhKCk7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm4gMDsKLQotICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lczsKLSAg
ICBWZWN0b3I8c2l6ZV90PiBtaW1lUGx1Z2luSW5kaWNlczsKLSAgICBkYXRhLT5nZXRXZWJWaXNp
YmxlTWltZXNBbmRQbHVnaW5JbmRpY2VzKG1pbWVzLCBtaW1lUGx1Z2luSW5kaWNlcyk7Ci0gICAg
cmV0dXJuIG1pbWVzLnNpemUoKTsKKyAgICByZXR1cm4gZGF0YS0+bWltZXMoKS5zaXplKCk7CiB9
CiAKIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+IERPTU1pbWVUeXBlQXJyYXk6Oml0ZW0odW5zaWdu
ZWQgaW5kZXgpCkBAIC02MCwxMSArNTYsNyBAQCBQYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBET01N
aW1lVHlwZUFycmF5OjppdGVtKHVuc2lnbmVkIGluZGV4KQogICAgIFBsdWdpbkRhdGEqIGRhdGEg
PSBnZXRQbHVnaW5EYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gMDsKLQot
ICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lczsKLSAgICBWZWN0b3I8c2l6ZV90PiBtaW1l
UGx1Z2luSW5kaWNlczsKLSAgICBkYXRhLT5nZXRXZWJWaXNpYmxlTWltZXNBbmRQbHVnaW5JbmRp
Y2VzKG1pbWVzLCBtaW1lUGx1Z2luSW5kaWNlcyk7Ci0KKyAgICBjb25zdCBWZWN0b3I8TWltZUNs
YXNzSW5mbz4mIG1pbWVzID0gZGF0YS0+bWltZXMoKTsKICAgICBpZiAoaW5kZXggPj0gbWltZXMu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0
ZShkYXRhLCBtX2ZyYW1lLCBpbmRleCk7CkBAIC03NSwxMCArNjcsNyBAQCBib29sIERPTU1pbWVU
eXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5
TmFtZSkKICAgICBQbHVnaW5EYXRhICpkYXRhID0gZ2V0UGx1Z2luRGF0YSgpOwogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBWZWN0b3I8TWltZUNsYXNzSW5mbz4gbWlt
ZXM7Ci0gICAgVmVjdG9yPHNpemVfdD4gbWltZVBsdWdpbkluZGljZXM7Ci0gICAgZGF0YS0+Z2V0
V2ViVmlzaWJsZU1pbWVzQW5kUGx1Z2luSW5kaWNlcyhtaW1lcywgbWltZVBsdWdpbkluZGljZXMp
OworICAgIGNvbnN0IFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiYgbWltZXMgPSBkYXRhLT5taW1lcygp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtaW1lcy5zaXplKCk7ICsraSkgewogICAg
ICAgICBpZiAobWltZXNbaV0udHlwZSA9PSBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTkxLDEwICs4MCw3IEBAIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+IERPTU1p
bWVUeXBlQXJyYXk6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5CiAgICAg
UGx1Z2luRGF0YSAqZGF0YSA9IGdldFBsdWdpbkRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybiAwOwotCi0gICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVzOwotICAgIFZl
Y3RvcjxzaXplX3Q+IG1pbWVQbHVnaW5JbmRpY2VzOwotICAgIGRhdGEtPmdldFdlYlZpc2libGVN
aW1lc0FuZFBsdWdpbkluZGljZXMobWltZXMsIG1pbWVQbHVnaW5JbmRpY2VzKTsKKyAgICBjb25z
dCBWZWN0b3I8TWltZUNsYXNzSW5mbz4mIG1pbWVzID0gZGF0YS0+bWltZXMoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1p
bWVzW2ldLnR5cGUgPT0gcHJvcGVydHlOYW1lKQogICAgICAgICAgICAgcmV0dXJuIERPTU1pbWVU
eXBlOjpjcmVhdGUoZGF0YSwgbV9mcmFtZSwgaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdp
bi5jcHAKaW5kZXggZjI0ODhiYzc0MTRmZDUxMzFiNmNlZjA2N2JmZDE3YzQ0MDNiZTEzYi4uM2Zl
OTE3ZjU2ZjlhZDU2YjYxYWE1NTVjNGIwZDVkOGNhZjk5YjMwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvRE9NUGx1Z2luLmNwcApAQCAtNTYsMjMgKzU2LDE2IEBAIHVuc2lnbmVkIERPTVBsdWdpbjo6
bGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gcGx1Z2luSW5mbygpLm1pbWVzLnNpemUoKTsKIH0K
IAotUGx1Z2luSW5mbyBET01QbHVnaW46OnBsdWdpbkluZm8oKSBjb25zdAotewotICAgIHJldHVy
biBtX3BsdWdpbkRhdGEtPndlYlZpc2libGVQbHVnaW5zKClbbV9pbmRleF07Ci19Ci0KIFBhc3NS
ZWZQdHI8RE9NTWltZVR5cGU+IERPTVBsdWdpbjo6aXRlbSh1bnNpZ25lZCBpbmRleCkKIHsKICAg
ICBpZiAoaW5kZXggPj0gcGx1Z2luSW5mbygpLm1pbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBNaW1lQ2xhc3NJbmZvIG1pbWUgPSBwbHVnaW5JbmZvKCkubWltZXNbaW5kZXhd
OworICAgIGNvbnN0IE1pbWVDbGFzc0luZm8mIG1pbWUgPSBwbHVnaW5JbmZvKCkubWltZXNbaW5k
ZXhdOwogCi0gICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVzOwotICAgIFZlY3RvcjxzaXpl
X3Q+IG1pbWVQbHVnaW5JbmRpY2VzOwotICAgIG1fcGx1Z2luRGF0YS0+Z2V0V2ViVmlzaWJsZU1p
bWVzQW5kUGx1Z2luSW5kaWNlcyhtaW1lcywgbWltZVBsdWdpbkluZGljZXMpOworICAgIGNvbnN0
IFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiYgbWltZXMgPSBtX3BsdWdpbkRhdGEtPm1pbWVzKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGlmIChtaW1lc1tpXSA9PSBtaW1lICYmIG1pbWVQbHVnaW5JbmRpY2VzW2ldID09IG1faW5kZXgp
CisgICAgICAgIGlmIChtaW1lc1tpXSA9PSBtaW1lICYmIG1fcGx1Z2luRGF0YS0+bWltZVBsdWdp
bkluZGljZXMoKVtpXSA9PSBtX2luZGV4KQogICAgICAgICAgICAgcmV0dXJuIERPTU1pbWVUeXBl
OjpjcmVhdGUobV9wbHVnaW5EYXRhLmdldCgpLCBtX2ZyYW1lLCBpKTsKICAgICB9CiAgICAgcmV0
dXJuIDA7CkBAIC04MCw5ICs3Myw3IEBAIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+IERPTVBsdWdp
bjo6aXRlbSh1bnNpZ25lZCBpbmRleCkKIAogYm9vbCBET01QbHVnaW46OmNhbkdldEl0ZW1zRm9y
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKLSAgICBWZWN0b3I8TWlt
ZUNsYXNzSW5mbz4gbWltZXM7Ci0gICAgVmVjdG9yPHNpemVfdD4gbWltZVBsdWdpbkluZGljZXM7
Ci0gICAgbV9wbHVnaW5EYXRhLT5nZXRXZWJWaXNpYmxlTWltZXNBbmRQbHVnaW5JbmRpY2VzKG1p
bWVzLCBtaW1lUGx1Z2luSW5kaWNlcyk7CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+
JiBtaW1lcyA9IG1fcGx1Z2luRGF0YS0+bWltZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbWltZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGlmIChtaW1lc1tpXS50eXBlID09IHBy
b3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTEsOSArODIsNyBAQCBi
b29sIERPTVBsdWdpbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcHJv
cGVydHlOYW1lKQogCiBQYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBET01QbHVnaW46Om5hbWVkSXRl
bShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKLSAgICBWZWN0b3I8TWltZUNs
YXNzSW5mbz4gbWltZXM7Ci0gICAgVmVjdG9yPHNpemVfdD4gbWltZVBsdWdpbkluZGljZXM7Ci0g
ICAgbV9wbHVnaW5EYXRhLT5nZXRXZWJWaXNpYmxlTWltZXNBbmRQbHVnaW5JbmRpY2VzKG1pbWVz
LCBtaW1lUGx1Z2luSW5kaWNlcyk7CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBt
aW1lcyA9IG1fcGx1Z2luRGF0YS0+bWltZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbWltZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGlmIChtaW1lc1tpXS50eXBlID09IHByb3Bl
cnR5TmFtZSkKICAgICAgICAgICAgIHJldHVybiBET01NaW1lVHlwZTo6Y3JlYXRlKG1fcGx1Z2lu
RGF0YS5nZXQoKSwgbV9mcmFtZSwgaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL0RPTVBsdWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaAppbmRl
eCA1MjIwOThlNzVhMjhkODcwOGY4NDcxYThmNGZkNTIzYTk2OTNiZmQxLi4xMjVjYTI2MjQ2YmY0
MzQyN2UyZWJkYTUyMGRmM2ViMTk2NzZmZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL0RPTVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2lu
LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+
IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSk7CiAKIHByaXZhdGU6
Ci0gICAgUGx1Z2luSW5mbyBwbHVnaW5JbmZvKCkgY29uc3Q7CisgICAgY29uc3QgUGx1Z2luSW5m
byYgcGx1Z2luSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRGF0YS0+cGx1Z2lucygpW21f
aW5kZXhdOyB9CiAKICAgICBET01QbHVnaW4oUGx1Z2luRGF0YSosIEZyYW1lKiwgdW5zaWduZWQg
aW5kZXgpOwogICAgIFJlZlB0cjxQbHVnaW5EYXRhPiBtX3BsdWdpbkRhdGE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCmluZGV4IDEyZTUxYTk3MzM5ZDhjYjk2MmEw
MTU4YTVhNGViYWYyOGE1MzU5YjMuLjgxNWVhMjU0ZTI1ZTYyNWIzYjI3MmY2MDMyY2U0NjE2NjI2
MmZmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCkBAIC00
OCw4ICs0OCw3IEBAIHVuc2lnbmVkIERPTVBsdWdpbkFycmF5OjpsZW5ndGgoKSBjb25zdAogICAg
IFBsdWdpbkRhdGEqIGRhdGEgPSBwbHVnaW5EYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm4gMDsKLQotICAgIHJldHVybiBkYXRhLT53ZWJWaXNpYmxlUGx1Z2lucygpLnNpemUo
KTsKKyAgICByZXR1cm4gZGF0YS0+cGx1Z2lucygpLnNpemUoKTsKIH0KIAogUGFzc1JlZlB0cjxE
T01QbHVnaW4+IERPTVBsdWdpbkFycmF5OjppdGVtKHVuc2lnbmVkIGluZGV4KQpAQCAtNTcsOCAr
NTYsNyBAQCBQYXNzUmVmUHRyPERPTVBsdWdpbj4gRE9NUGx1Z2luQXJyYXk6Oml0ZW0odW5zaWdu
ZWQgaW5kZXgpCiAgICAgUGx1Z2luRGF0YSogZGF0YSA9IHBsdWdpbkRhdGEoKTsKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+
JiBwbHVnaW5zID0gZGF0YS0+d2ViVmlzaWJsZVBsdWdpbnMoKTsKKyAgICBjb25zdCBWZWN0b3I8
UGx1Z2luSW5mbz4mIHBsdWdpbnMgPSBkYXRhLT5wbHVnaW5zKCk7CiAgICAgaWYgKGluZGV4ID49
IHBsdWdpbnMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gRE9NUGx1Z2lu
OjpjcmVhdGUoZGF0YSwgbV9mcmFtZSwgaW5kZXgpOwpAQCAtNjksOCArNjcsNyBAQCBib29sIERP
TVBsdWdpbkFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUpCiAgICAgUGx1Z2luRGF0YSogZGF0YSA9IHBsdWdpbkRhdGEoKTsKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+
JiBwbHVnaW5zID0gZGF0YS0+d2ViVmlzaWJsZVBsdWdpbnMoKTsKKyAgICBjb25zdCBWZWN0b3I8
UGx1Z2luSW5mbz4mIHBsdWdpbnMgPSBkYXRhLT5wbHVnaW5zKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKHBsdWdpbnNb
aV0ubmFtZSA9PSBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTgz
LDggKzgwLDcgQEAgUGFzc1JlZlB0cjxET01QbHVnaW4+IERPTVBsdWdpbkFycmF5OjpuYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUKICAgICBQbHVnaW5EYXRhKiBkYXRh
ID0gcGx1Z2luRGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMgPSBkYXRhLT53ZWJWaXNpYmxlUGx1
Z2lucygpOworICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucyA9IGRhdGEtPnBs
dWdpbnMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsr
aSkgewogICAgICAgICBpZiAocGx1Z2luc1tpXS5uYW1lID09IHByb3BlcnR5TmFtZSkKICAgICAg
ICAgICAgIHJldHVybiBET01QbHVnaW46OmNyZWF0ZShkYXRhLCBtX2ZyYW1lLCBpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3BwCmluZGV4IGQyODIxYWI0YzAyNGRjYzAxMDVjNGRm
YjVjZDcyMTJiNzQ1MjA3OWEuLjZkZDRlYWFkYjkxZTRhZTdlNTc3MzVhMjY3ZTcwYmUxOWRlZWU2
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNwcApAQCAtMiw3ICsyLDcgQEAK
ICAgICBDb3B5cmlnaHQgKEMpIDIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDAgRGFuaWVsIE1vbGtlbnRpbiAobW9sa2VudGluQGtkZS5vcmcp
CiAgICAgQ29weXJpZ2h0IChDKSAyMDAwIFN0ZWZhbiBTY2hpbWFuc2tpIChzY2hpbW1pQGtkZS5v
cmcpCi0gICAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDE1
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgog
ICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTMxLDc1ICszMSw0OCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFBsdWdpbkRhdGE6OlBsdWdpbkRhdGEoY29uc3QgUGFnZSogcGFnZSkKIHsKLSAg
ICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOworICAgIGluaXRQbHVnaW5zKHBhZ2UpOwogCi0gICAg
bV9wYWdlID0gcGFnZTsKLSAgICBpbml0UGx1Z2lucygpOwotfQotCi1WZWN0b3I8UGx1Z2luSW5m
bz4gUGx1Z2luRGF0YTo6d2ViVmlzaWJsZVBsdWdpbnMoKSBjb25zdAotewotICAgIFZlY3RvcjxQ
bHVnaW5JbmZvPiBwbHVnaW5zOwotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5TdHJh
dGVneSgpLT5nZXRXZWJWaXNpYmxlUGx1Z2luSW5mbyhtX3BhZ2UsIHBsdWdpbnMpOwotICAgIHJl
dHVybiBwbHVnaW5zOwotfQotCi12b2lkIFBsdWdpbkRhdGE6OmdldFdlYlZpc2libGVNaW1lc0Fu
ZFBsdWdpbkluZGljZXMoVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcywgVmVjdG9yPHNpemVf
dD4mIG1pbWVQbHVnaW5JbmRpY2VzKSBjb25zdAotewotICAgIEFTU0VSVF9BUkcobWltZXMsIG1p
bWVzLmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUX0FSRyhtaW1lUGx1Z2luSW5kaWNlcywgbWltZVBs
dWdpbkluZGljZXMuaXNFbXB0eSgpKTsKLQotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYg
cGx1Z2lucyA9IHdlYlZpc2libGVQbHVnaW5zKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgUGx1Z2luSW5mbyYgcGx1
Z2luID0gcGx1Z2luc1tpXTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wbHVnaW5z
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFBsdWdpbkluZm8mIHBsdWdpbiA9IG1fcGx1
Z2luc1tpXTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHBsdWdpbi5taW1lcy5z
aXplKCk7ICsraikgewotICAgICAgICAgICAgbWltZXMuYXBwZW5kKHBsdWdpbi5taW1lc1tqXSk7
Ci0gICAgICAgICAgICBtaW1lUGx1Z2luSW5kaWNlcy5hcHBlbmQoaSk7CisgICAgICAgICAgICBt
X21pbWVzLmFwcGVuZChwbHVnaW4ubWltZXNbal0pOworICAgICAgICAgICAgbV9taW1lUGx1Z2lu
SW5kaWNlcy5hcHBlbmQoaSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLWJvb2wgUGx1Z2luRGF0
YTo6c3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgQWxsb3dlZFBsdWdpblR5cGVzIGFsbG93ZWRQbHVnaW5UeXBlcykgY29uc3QKK2Jvb2wgUGx1
Z2luRGF0YTo6c3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBB
bGxvd2VkUGx1Z2luVHlwZXMgYWxsb3dlZFBsdWdpblR5cGVzKSBjb25zdAogewotICAgIFZlY3Rv
cjxNaW1lQ2xhc3NJbmZvPiBtaW1lczsKLSAgICBWZWN0b3I8c2l6ZV90PiBtaW1lUGx1Z2luSW5k
aWNlczsKLSAgICBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMgPSB3ZWJWaXNpYmxl
UGx1Z2lucygpOwotICAgIGdldFdlYlZpc2libGVNaW1lc0FuZFBsdWdpbkluZGljZXMobWltZXMs
IG1pbWVQbHVnaW5JbmRpY2VzKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtaW1l
cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobWltZXNbaV0udHlwZSA9PSBtaW1lVHlwZSAm
JiAoYWxsb3dlZFBsdWdpblR5cGVzID09IEFsbFBsdWdpbnMgfHwgcGx1Z2luc1ttaW1lUGx1Z2lu
SW5kaWNlc1tpXV0uaXNBcHBsaWNhdGlvblBsdWdpbikpCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbWltZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbWltZXNbaV0udHlw
ZSA9PSBtaW1lVHlwZSAmJiAoYWxsb3dlZFBsdWdpblR5cGVzID09IEFsbFBsdWdpbnMgfHwgbV9w
bHVnaW5zW21fbWltZVBsdWdpbkluZGljZXNbaV1dLmlzQXBwbGljYXRpb25QbHVnaW4pKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotY29u
c3QgUGx1Z2luSW5mbyogUGx1Z2luRGF0YTo6cGx1Z2luSW5mb0ZvcldlYlZpc2libGVNaW1lVHlw
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAorY29uc3QgUGx1Z2luSW5mbyogUGx1Z2lu
RGF0YTo6cGx1Z2luSW5mb0Zvck1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0
CiB7Ci0gICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVzOwotICAgIFZlY3RvcjxzaXplX3Q+
IG1pbWVQbHVnaW5JbmRpY2VzOwotICAgIGNvbnN0IFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lu
cyA9IHdlYlZpc2libGVQbHVnaW5zKCk7Ci0gICAgZ2V0V2ViVmlzaWJsZU1pbWVzQW5kUGx1Z2lu
SW5kaWNlcyhtaW1lcywgbWltZVBsdWdpbkluZGljZXMpOwotCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1pbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IE1pbWVDbGFzc0lu
Zm8mIGluZm8gPSBtaW1lc1tpXTsKLQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21p
bWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IE1pbWVDbGFzc0luZm8mIGluZm8gPSBt
X21pbWVzW2ldOworICAgIAogICAgICAgICBpZiAoaW5mby50eXBlID09IG1pbWVUeXBlKQotICAg
ICAgICAgICAgcmV0dXJuICZwbHVnaW5zW21pbWVQbHVnaW5JbmRpY2VzW2ldXTsKKyAgICAgICAg
ICAgIHJldHVybiAmbV9wbHVnaW5zW21fbWltZVBsdWdpbkluZGljZXNbaV1dOwogICAgIH0KIAog
ICAgIHJldHVybiAwOwogfQogCi1TdHJpbmcgUGx1Z2luRGF0YTo6cGx1Z2luTmFtZUZvcldlYlZp
c2libGVNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAorU3RyaW5nIFBsdWdp
bkRhdGE6OnBsdWdpbk5hbWVGb3JNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25z
dAogewotICAgIGlmIChjb25zdCBQbHVnaW5JbmZvKiBpbmZvID0gcGx1Z2luSW5mb0ZvcldlYlZp
c2libGVNaW1lVHlwZShtaW1lVHlwZSkpCisgICAgaWYgKGNvbnN0IFBsdWdpbkluZm8qIGluZm8g
PSBwbHVnaW5JbmZvRm9yTWltZVR5cGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4gaW5mby0+
bmFtZTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBQbHVnaW5EYXRhOjpwbHVn
aW5GaWxlRm9yV2ViVmlzaWJsZU1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0
CitTdHJpbmcgUGx1Z2luRGF0YTo6cGx1Z2luRmlsZUZvck1pbWVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpIGNvbnN0CiB7Ci0gICAgaWYgKGNvbnN0IFBsdWdpbkluZm8qIGluZm8gPSBwbHVn
aW5JbmZvRm9yV2ViVmlzaWJsZU1pbWVUeXBlKG1pbWVUeXBlKSkKKyAgICBpZiAoY29uc3QgUGx1
Z2luSW5mbyogaW5mbyA9IHBsdWdpbkluZm9Gb3JNaW1lVHlwZShtaW1lVHlwZSkpCiAgICAgICAg
IHJldHVybiBpbmZvLT5maWxlOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KQEAgLTEwOSwxMSAr
ODIsMTEgQEAgdm9pZCBQbHVnaW5EYXRhOjpyZWZyZXNoKCkKICAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGx1Z2luU3RyYXRlZ3koKS0+cmVmcmVzaFBsdWdpbnMoKTsKIH0KIAotdm9pZCBQbHVn
aW5EYXRhOjppbml0UGx1Z2lucygpCit2b2lkIFBsdWdpbkRhdGE6OmluaXRQbHVnaW5zKGNvbnN0
IFBhZ2UqIHBhZ2UpCiB7CiAgICAgQVNTRVJUKG1fcGx1Z2lucy5pc0VtcHR5KCkpOwotCi0gICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBsdWdpblN0cmF0ZWd5KCktPmdldFBsdWdpbkluZm8obV9w
YWdlLCBtX3BsdWdpbnMpOworICAgIAorICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5T
dHJhdGVneSgpLT5nZXRQbHVnaW5JbmZvKHBhZ2UsIG1fcGx1Z2lucyk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKaW5kZXggOTgxNjg0ZDRmNWM0NDM2YTE1MTI2OWQ0YTYy
ZmY0Yzc1NzNmYjE2ZS4uMWYyNjY3OWU5N2FkN2VjNWViZjQ0NDU1ZDJhZTA1ZmI0ODRiMTViNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKQEAgLTI5LDI0ICsyOSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBhZ2U7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKIAotZW51bSBQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5IDogdWludDhfdCB7Ci0gICAgLy8gTm8gY2xpZW50LXNwZWNp
ZmljIHBsdWctaW4gbG9hZCBwb2xpY3kgaGFzIGJlZW4gZGVmaW5lZC4gVGhlIHBsdWctaW4gc2hv
dWxkIGJlIHZpc2libGUgaW4gbmF2aWdhdG9yLnBsdWdpbnMgYW5kIFdlYktpdCBzaG91bGQgc3lu
Y2hyb25vdXNseQotICAgIC8vIGFzayB0aGUgY2xpZW50IHdoZXRoZXIgdGhlIHBsdWctaW4gc2hv
dWxkIGJlIGxvYWRlZC4KLSAgICBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5VW5kZWZpbmVkID0gMCwK
LQotICAgIC8vIFRoZSBwbHVnLWluIG1vZHVsZSBzaG91bGQgYmUgYmxvY2tlZCBmcm9tIGJlaW5n
IGluc3RhbnRpYXRlZC4gVGhlIHBsdWctaW4gc2hvdWxkIGJlIGhpZGRlbiBpbiBuYXZpZ2F0b3Iu
cGx1Z2lucy4KLSAgICBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QmxvY2ssCi0KLSAgICAvLyBXZWJL
aXQgc2hvdWxkIHN5bmNocm9ub3VzbHkgYXNrIHRoZSBjbGllbnQgd2hldGhlciB0aGUgcGx1Zy1p
biBzaG91bGQgYmUgbG9hZGVkLiBUaGUgcGx1Zy1pbiBzaG91bGQgYmUgdmlzaWJsZSBpbiBuYXZp
Z2F0b3IucGx1Z2lucy4KLSAgICBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QXNrLAotCi0gICAgLy8g
VGhlIHBsdWctaW4gbW9kdWxlIG1heSBiZSBsb2FkZWQgaWYgV2ViS2l0IGlzIG5vdCBibG9ja2lu
ZyBpdC4KLSAgICBQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3csCi0KLSAgICAvLyBUaGUgcGx1
Zy1pbiBtb2R1bGUgc2hvdWxkIGJlIGxvYWRlZCBpcnJlc3BlY3RpdmUgb2Ygd2hldGhlciBXZWJL
aXQgaGFzIGFza2VkIGl0IHRvIGJlIGJsb2NrZWQuCi0gICAgUGx1Z2luTG9hZENsaWVudFBvbGlj
eUFsbG93QWx3YXlzLAotfTsKLQogc3RydWN0IE1pbWVDbGFzc0luZm8gewogICAgIFN0cmluZyB0
eXBlOwogICAgIFN0cmluZyBkZXNjOwpAQCAtNjQsMTMgKzQ2LDYgQEAgc3RydWN0IFBsdWdpbklu
Zm8gewogICAgIFN0cmluZyBkZXNjOwogICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lczsK
ICAgICBib29sIGlzQXBwbGljYXRpb25QbHVnaW47Ci0KLSAgICBQbHVnaW5Mb2FkQ2xpZW50UG9s
aWN5IGNsaWVudExvYWRQb2xpY3k7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgU3RyaW5nIGJ1
bmRsZUlkZW50aWZpZXI7Ci0gICAgU3RyaW5nIHZlcnNpb25TdHJpbmc7Ci0jZW5kaWYKIH07CiAK
IC8vIEZJWE1FOiBtZXJnZSB3aXRoIFBsdWdpbkRhdGFiYXNlIGluIHRoZSBmdXR1cmUKQEAgLTc5
LDM1ICs1NCwzOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQbHVnaW5EYXRhPiBjcmVhdGUo
Y29uc3QgUGFnZSogcGFnZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbHVnaW5EYXRhKHBhZ2Up
KTsgfQogCiAgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbHVnaW5zOyB9Ci0gICAgVmVjdG9yPFBsdWdpbkluZm8+IHdlYlZpc2libGVQbHVn
aW5zKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRXZWJWaXNpYmxlTWltZXNB
bmRQbHVnaW5JbmRpY2VzKFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiYsIFZlY3RvcjxzaXplX3Q+Jikg
Y29uc3Q7CisgICAgY29uc3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcygpIGNvbnN0IHsg
cmV0dXJuIG1fbWltZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbWltZVBsdWdpbklu
ZGljZXMoKSBjb25zdCB7IHJldHVybiBtX21pbWVQbHVnaW5JbmRpY2VzOyB9CiAKICAgICBlbnVt
IEFsbG93ZWRQbHVnaW5UeXBlcyB7CiAgICAgICAgIEFsbFBsdWdpbnMsCiAgICAgICAgIE9ubHlB
cHBsaWNhdGlvblBsdWdpbnMKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdXBw
b3J0c1dlYlZpc2libGVNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBBbGxv
d2VkUGx1Z2luVHlwZXMpIGNvbnN0OwotICAgIFN0cmluZyBwbHVnaW5OYW1lRm9yV2ViVmlzaWJs
ZU1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0OwotICAgIFN0cmluZyBwbHVn
aW5GaWxlRm9yV2ViVmlzaWJsZU1pbWVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBBbGxvd2VkUGx1Z2luVHlwZXMpIGNvbnN0OworICAgIFN0cmluZyBw
bHVnaW5OYW1lRm9yTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CisgICAg
U3RyaW5nIHBsdWdpbkZpbGVGb3JNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25z
dDsKIAogICAgIHN0YXRpYyB2b2lkIHJlZnJlc2goKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBQbHVnaW5EYXRhKGNvbnN0IFBhZ2UqKTsKLSAgICB2b2lkIGluaXRQbHVnaW5zKCk7Ci0gICAg
Y29uc3QgUGx1Z2luSW5mbyogcGx1Z2luSW5mb0ZvcldlYlZpc2libGVNaW1lVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKKyAgICB2b2lkIGluaXRQbHVnaW5zKGNvbnN0IFBhZ2Uq
KTsKKyAgICBjb25zdCBQbHVnaW5JbmZvKiBwbHVnaW5JbmZvRm9yTWltZVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICNpZiBkZWZpbmVkIEVOQUJMRV9X
RUJfUkVQTEFZICYmIEVOQUJMRV9XRUJfUkVQTEFZCi0gICAgUGx1Z2luRGF0YShWZWN0b3I8UGx1
Z2luSW5mbz4gcGx1Z2lucykKKyAgICBQbHVnaW5EYXRhKFZlY3RvcjxQbHVnaW5JbmZvPiBwbHVn
aW5zLCBWZWN0b3I8TWltZUNsYXNzSW5mbz4gbWltZXMsIFZlY3RvcjxzaXplX3Q+IGluZGljZXMp
CiAgICAgICAgIDogbV9wbHVnaW5zKHBsdWdpbnMpCisgICAgICAgICwgbV9taW1lcyhtaW1lcykK
KyAgICAgICAgLCBtX21pbWVQbHVnaW5JbmRpY2VzKGluZGljZXMpCiAgICAgewogICAgIH0KICNl
bmRpZgogCi0gICAgY29uc3QgUGFnZSogbV9wYWdlOwogICAgIFZlY3RvcjxQbHVnaW5JbmZvPiBt
X3BsdWdpbnM7CisgICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1fbWltZXM7CisgICAgVmVjdG9y
PHNpemVfdD4gbV9taW1lUGx1Z2luSW5kaWNlczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luU3RyYXRlZ3kuaAppbmRleCAzYTQwY2ViMmI0MzcxYmIwNTJhMGFiZTk0YzM0MTNk
MTEyZmUwZTU0Li4wNWQxOTlmMjA2OGI0NmM0MmE2OWJlOGQzNjkwMzFjNWUyOTE4YmVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmF0ZWd5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJhdGVneS5oCkBAIC0zNiwxMSArMzYsNiBAQCBj
bGFzcyBQbHVnaW5TdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQ
bHVnaW5zKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFBhZ2Uq
LCBWZWN0b3I8UGx1Z2luSW5mbz4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFdlYlZpc2li
bGVQbHVnaW5JbmZvKGNvbnN0IFBhZ2UqLCBWZWN0b3I8UGx1Z2luSW5mbz4mKSA9IDA7Ci0jaWYg
UExBVEZPUk0oTUFDKQotICAgIHZpcnR1YWwgdm9pZCBzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
KFBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5n
JiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpID0gMDsKLSNlbmRpZgog
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGx1Z2luU3RyYXRlZ3koKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9TZXJpYWxpemF0aW9uTWV0aG9kcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuY3BwCmluZGV4IDcyMzZhYzFh
MjJlYWRlMzJjZTk5YzdmYWUyYjkxMjNmOWIyM2JlYmQuLjY2OWExMDFjMzljM2FiNmFkMTM1ZWFh
OGNhNzMxMzJiZDRjMGRiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9TZXJp
YWxpemF0aW9uTWV0aG9kcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1NlcmlhbGl6
YXRpb25NZXRob2RzLmNwcApAQCAtNTMsNyArNTMsNiBAQCB1c2luZyBXZWJDb3JlOjpQbGF0Zm9y
bU1vdXNlRXZlbnQ7CiB1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ7CiB1c2luZyBX
ZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eTsKIHVzaW5nIFdlYkNvcmU6OlBs
dWdpbkRhdGE7Ci11c2luZyBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5OwogdXNpbmcg
V2ViQ29yZTo6UGx1Z2luSW5mbzsKIHVzaW5nIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOwogdXNp
bmcgV2ViQ29yZTo6VVJMOwpAQCAtNDM4LDE4ICs0MzcsMjMgQEAgYm9vbCBFbmNvZGluZ1RyYWl0
czxQbGF0Zm9ybVdoZWVsRXZlbnQ+OjpkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmIGVuY29kZWRE
YXRhLAogCiBFbmNvZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8UGx1Z2luRGF0YT46OmVuY29kZVZh
bHVlKFJlZlB0cjxQbHVnaW5EYXRhPiBpbnB1dCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBuZWVk
cyB0byB3b3JrIGluIHRlcm1zIG9mIHdlYi12aXNpYmxlIHBsdWctaW5zLgogICAgIEVuY29kZWRW
YWx1ZSBlbmNvZGVkRGF0YSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlT2JqZWN0KCk7CiAKKyAgICBW
ZWN0b3I8dWludDMyX3Q+IGNhc3RlZE1pbWVQbHVnaW5JbmRpY2VzKGlucHV0LT5taW1lUGx1Z2lu
SW5kaWNlcygpLnNpemUoKSk7CisgICAgZm9yICh1aW50MzJfdCBpbmRleCA6IGlucHV0LT5taW1l
UGx1Z2luSW5kaWNlcygpKQorICAgICAgICBjYXN0ZWRNaW1lUGx1Z2luSW5kaWNlcy5hcHBlbmQo
V1RGOjpzYWZlQ2FzdDx1aW50MzJfdD4oaW5kZXgpKTsKKwogICAgIEVOQ09ERV9UWVBFX1dJVEhf
S0VZKGVuY29kZWREYXRhLCBWZWN0b3I8UGx1Z2luSW5mbz4sIHBsdWdpbnMsIGlucHV0LT5wbHVn
aW5zKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBWZWN0b3I8TWlt
ZUNsYXNzSW5mbz4sIG1pbWVzLCBpbnB1dC0+bWltZXMoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lU
SF9LRVkoZW5jb2RlZERhdGEsIFZlY3Rvcjx1aW50MzJfdD4sIG1pbWVQbHVnaW5JbmRpY2VzLCBj
YXN0ZWRNaW1lUGx1Z2luSW5kaWNlcyk7CiAKICAgICByZXR1cm4gZW5jb2RlZERhdGE7CiB9CiAK
IGNsYXNzIERlc2VyaWFsaXplZFBsdWdpbkRhdGEgOiBwdWJsaWMgUGx1Z2luRGF0YSB7CiBwdWJs
aWM6Ci0gICAgRGVzZXJpYWxpemVkUGx1Z2luRGF0YShWZWN0b3I8UGx1Z2luSW5mbz4gcGx1Z2lu
cykKLSAgICAgICAgOiBQbHVnaW5EYXRhKHBsdWdpbnMpCisgICAgRGVzZXJpYWxpemVkUGx1Z2lu
RGF0YShWZWN0b3I8UGx1Z2luSW5mbz4gcGx1Z2lucywgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1p
bWVzLCBWZWN0b3I8c2l6ZV90PiBpbmRpY2VzKQorICAgICAgICA6IFBsdWdpbkRhdGEocGx1Z2lu
cywgbWltZXMsIGluZGljZXMpCiAgICAgewogICAgIH0KIH07CkBAIC00NTcsOSArNDYxLDE0IEBA
IHB1YmxpYzoKIGJvb2wgRW5jb2RpbmdUcmFpdHM8UGx1Z2luRGF0YT46OmRlY29kZVZhbHVlKEVu
Y29kZWRWYWx1ZSYgZW5jb2RlZERhdGEsIFJlZlB0cjxQbHVnaW5EYXRhPiYgaW5wdXQpCiB7CiAg
ICAgREVDT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFZlY3RvcjxQbHVnaW5JbmZvPiwg
cGx1Z2lucyk7CisgICAgREVDT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFZlY3RvcjxN
aW1lQ2xhc3NJbmZvPiwgbWltZXMpOworICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRE
YXRhLCBWZWN0b3I8dWludDMyX3Q+LCBtaW1lUGx1Z2luSW5kaWNlcyk7CisKKyAgICBWZWN0b3I8
c2l6ZV90PiBjYXN0ZWRNaW1lUGx1Z2luSW5kaWNlcyhtaW1lUGx1Z2luSW5kaWNlcy5zaXplKCkp
OworICAgIGZvciAodWludDMyX3QgaW5kZXggOiBtaW1lUGx1Z2luSW5kaWNlcykKKyAgICAgICAg
Y2FzdGVkTWltZVBsdWdpbkluZGljZXMuYXBwZW5kKFdURjo6c2FmZUNhc3Q8c2l6ZV90PihpbmRl
eCkpOwogCi0gICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gd29yayBpbiB0ZXJtcyBvZiB3ZWIt
dmlzaWJsZSBwbHVnLWlucy4KLSAgICBpbnB1dCA9IGFkb3B0UmVmKG5ldyBEZXNlcmlhbGl6ZWRQ
bHVnaW5EYXRhKHBsdWdpbnMpKTsKKyAgICBpbnB1dCA9IGFkb3B0UmVmKG5ldyBEZXNlcmlhbGl6
ZWRQbHVnaW5EYXRhKHBsdWdpbnMsIG1pbWVzLCBjYXN0ZWRNaW1lUGx1Z2luSW5kaWNlcykpOwog
CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC00NzQsMTEgKzQ4Myw2IEBAIEVuY29kZWRWYWx1ZSBF
bmNvZGluZ1RyYWl0czxQbHVnaW5JbmZvPjo6ZW5jb2RlVmFsdWUoY29uc3QgUGx1Z2luSW5mbyYg
aW5wdXQpCiAgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFN0cmluZywgZGVz
YywgaW5wdXQuZGVzYyk7CiAgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFZl
Y3RvcjxNaW1lQ2xhc3NJbmZvPiwgbWltZXMsIGlucHV0Lm1pbWVzKTsKICAgICBFTkNPREVfVFlQ
RV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgYm9vbCwgaXNBcHBsaWNhdGlvblBsdWdpbiwgaW5wdXQu
aXNBcHBsaWNhdGlvblBsdWdpbik7Ci0gICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERh
dGEsIFBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGNsaWVudExvYWRQb2xpY3ksIHN0YXRpY19jYXN0
PFBsdWdpbkxvYWRDbGllbnRQb2xpY3k+KGlucHV0LmNsaWVudExvYWRQb2xpY3kpKTsKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFN0cmlu
ZywgYnVuZGxlSWRlbnRpZmllciwgaW5wdXQuYnVuZGxlSWRlbnRpZmllcik7Ci0gICAgRU5DT0RF
X1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFN0cmluZywgdmVyc2lvblN0cmluZywgaW5wdXQu
dmVyc2lvblN0cmluZyk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBlbmNvZGVkRGF0YTsKIH0KQEAg
LTQ5MywxMSArNDk3LDYgQEAgYm9vbCBFbmNvZGluZ1RyYWl0czxQbHVnaW5JbmZvPjo6ZGVjb2Rl
VmFsdWUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkRGF0YSwgUGx1Z2luSW4KICAgICBERUNPREVfVFlQ
RV9XSVRIX0tFWV9UT19MVkFMVUUoZW5jb2RlZERhdGEsIFN0cmluZywgZGVzYywgaW5mby5kZXNj
KTsKICAgICBERUNPREVfVFlQRV9XSVRIX0tFWV9UT19MVkFMVUUoZW5jb2RlZERhdGEsIFZlY3Rv
cjxNaW1lQ2xhc3NJbmZvPiwgbWltZXMsIGluZm8ubWltZXMpOwogICAgIERFQ09ERV9UWVBFX1dJ
VEhfS0VZX1RPX0xWQUxVRShlbmNvZGVkRGF0YSwgYm9vbCwgaXNBcHBsaWNhdGlvblBsdWdpbiwg
aW5mby5pc0FwcGxpY2F0aW9uUGx1Z2luKTsKLSAgICBERUNPREVfVFlQRV9XSVRIX0tFWV9UT19M
VkFMVUUoZW5jb2RlZERhdGEsIFBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGNsaWVudExvYWRQb2xp
Y3ksIGluZm8uY2xpZW50TG9hZFBvbGljeSk7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIERFQ09E
RV9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShlbmNvZGVkRGF0YSwgU3RyaW5nLCBidW5kbGVJZGVu
dGlmaWVyLCBpbnB1dC5idW5kbGVJZGVudGlmaWVyKTsKLSAgICBERUNPREVfVFlQRV9XSVRIX0tF
WV9UT19MVkFMVUUoZW5jb2RlZERhdGEsIFN0cmluZywgdmVyc2lvblN0cmluZywgaW5wdXQudmVy
c2lvblN0cmluZyk7Ci0jZW5kaWYKIAogICAgIGlucHV0ID0gaW5mbzsKICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9XZWJJbnB1dHMuanNvbiBiL1Nv
dXJjZS9XZWJDb3JlL3JlcGxheS9XZWJJbnB1dHMuanNvbgppbmRleCA3ZDliNTQ0OTVjNzhjNzgy
NzlkNzM3Njc5MTdlN2Q5N2Q3NzYwZjljLi5iMTcyMzFlM2E0NTAyMGI3NDlhYzY0ZTI4NGNhNTRh
ZjFmMDhiYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvV2ViSW5wdXRzLmpz
b24KKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1dlYklucHV0cy5qc29uCkBAIC02NywxMyAr
NjcsNiBAQAogICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGx1Z2lucy9QbHVnaW5EYXRhLmgi
CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJuYW1lIjog
IlBsdWdpbkxvYWRDbGllbnRQb2xpY3kiLCAibW9kZSI6ICJTQ0FMQVIiLCAic3RvcmFnZSI6ICJ1
aW50OF90IiwKLSAgICAgICAgICAgICAgICAiZmxhZ3MiOiBbIkVOVU0iXSwKLSAgICAgICAgICAg
ICAgICAidmFsdWVzIjogWyJQbHVnaW5Mb2FkQ2xpZW50UG9saWN5VW5kZWZpbmVkIiwgIlBsdWdp
bkxvYWRDbGllbnRQb2xpY3lCbG9jayIsICJQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QXNrIiwgIlBs
dWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvdyIsICJQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3dB
bHdheXMiXSwKLSAgICAgICAgICAgICAgICAiaGVhZGVyIjogInBsdWdpbnMvUGx1Z2luRGF0YS5o
IgotICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1l
IjogIlNjcm9sbERpcmVjdGlvbiIsICJtb2RlIjogIlNDQUxBUiIsICJzdG9yYWdlIjogInVpbnQ4
X3QiLAogICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAogICAgICAgICAgICAgICAg
ICJ2YWx1ZXMiOiBbIlNjcm9sbFVwIiwgIlNjcm9sbERvd24iLCAiU2Nyb2xsTGVmdCIsICJTY3Jv
bGxSaWdodCJdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNl
UGx1Z2luUGFja2FnZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdp
blBhY2thZ2UubW0KaW5kZXggOWRkNWFhYWRhZmNiNGVhZWYyNDk1ZWY1MTg3MjBkN2RlNzIxNTI5
MS4uYTQ4MjBkODA5ZjRiNzdkYzI0Y2Q2OWRmMmM1ZDVlOGFkNGIxZDRiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCkBAIC0yNDks
MTEgKzI0OSw2IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aEJ5UmVzb2x2aW5nU3ltbGlua3NBbmRB
bGlhc2VzKE5TU3RyaW5nICp0aGVQYXRoKQogICAgIHBsdWdpbkluZm8uZGVzYyA9IGRlc2NyaXB0
aW9uOwogCiAgICAgcGx1Z2luSW5mby5pc0FwcGxpY2F0aW9uUGx1Z2luID0gZmFsc2U7Ci0gICAg
cGx1Z2luSW5mby5jbGllbnRMb2FkUG9saWN5ID0gUGx1Z2luTG9hZENsaWVudFBvbGljeVVuZGVm
aW5lZDsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgcGx1Z2luSW5mby5idW5kbGVJZGVudGlmaWVy
ID0gc2VsZi5idW5kbGVJZGVudGlmaWVyOwotICAgIHBsdWdpbkluZm8udmVyc2lvblN0cmluZyA9
IHNlbGYuYnVuZGxlVmVyc2lvbjsKLSNlbmRpZgogCiAgICAgcmV0dXJuIFlFUzsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5QYWNrYWdl
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2Uu
bW0KaW5kZXggNWU0NWMxYTgzYTBhNDEzODBkY2Q3OTBiYzhkNTk0ZWQyNGJhOWYyMi4uMTkwNmVm
MzY3ZGI1NGE2Y2EyYThiZDE0NTMzODIyYTkxMmU2NmI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UubW0KQEAgLTE0Niwx
MiArMTQ2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgcGx1Z2luSW5mby5uYW1l
ID0gdGhlTmFtZTsKIAogICAgIHBsdWdpbkluZm8uaXNBcHBsaWNhdGlvblBsdWdpbiA9IGZhbHNl
OwotICAgIHBsdWdpbkluZm8uY2xpZW50TG9hZFBvbGljeSA9IFBsdWdpbkxvYWRDbGllbnRQb2xp
Y3lVbmRlZmluZWQ7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIHBsdWdpbkluZm8uYnVuZGxlSWRl
bnRpZmllciA9IHNlbGYuYnVuZGxlSWRlbnRpZmllcjsKLSAgICBwbHVnaW5JbmZvLnZlcnNpb25T
dHJpbmcgPSBzZWxmLmJ1bmRsZVZlcnNpb247Ci0jZW5kaWYKLQorICAgIAogICAgIFtzZWxmIGNs
b3NlUmVzb3VyY2VGaWxlOnJlc1JlZl07CiAgICAgCiAgICAgcmV0dXJuIFlFUzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgKaW5kZXggOGU0OGQ4ZjZmYTBkNzA3YjdmNzQ4YzI2MjFlOGQ1YWY4NzM3NjEyMy4uM2Q1
NjhmZGE2OTUzOTgxYmQ3OTdlZWVhMTBjN2UyNzc5YzEyMzk4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
QEAgLTYyLDExICs2Miw2IEBAIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6UGx1Z2luU3RyYXRl
Z3kKICAgICB2aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFdlYlZpc2li
bGVQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4mKSBvdmVycmlkZTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgdmlydHVhbCB2b2lkIHNl
dFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSBvdmVycmlkZTsKLSNl
bmRpZgogCiAgICAgLy8gV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRl
ZmF1bHQgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggOWJiMzQ0MmIxODVj
ZmVmNzI1ODJlYTg1ODk0MDJhNjNlODM1NjAxNS4uZTc1ZjBjN2M2MjJhYTJkYTAwNGViMjNiN2Ji
OGI4Y2E3NmJjOTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTI4LDIxICsxMjgsNiBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5mbyhjb25zdCBQYWdlKiBwYWdl
LCBWZWN0b3I8UGx1Z2luSW5mbz4mCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0K
IAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFdlYlZpc2libGVQbHVnaW5JbmZvKGNv
bnN0IFBhZ2UqIHBhZ2UsIFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucykKLXsKLSAgICBnZXRQ
bHVnaW5JbmZvKHBhZ2UsIHBsdWdpbnMpOwotfQotCi0jaWYgUExBVEZPUk0oTUFDKQotdm9pZCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koUGx1Z2luTG9h
ZENsaWVudFBvbGljeSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikKLXsKLX0KLQotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNsZWFyUGx1Z2luQ2xpZW50
UG9saWNpZXMoKQotewotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCiB7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0
eXBlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA5N2EyMWUyMjlh
ZTFjYWVkNGU2ZjU1YzRiZTRlNTViYzc2NWJiYjdlLi5mOTg0MGJlNjllMGEzNGNkMTU1YmZkY2Q4
OWEzYmZiYjRkZjUzZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAg
LTk3OSw4ICs5NzksOCBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2Uo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogICAgIGlmIChXZWJDb3JlOjpET01JbXBsZW1lbnRh
dGlvbjo6aXNUZXh0TUlNRVR5cGUobWltZVR5cGUpCiAgICAgICAgIHx8IEltYWdlOjpzdXBwb3J0
c1R5cGUobWltZVR5cGUpCi0gICAgICAgIHx8IChwbHVnaW5EYXRhICYmIHBsdWdpbkRhdGEtPnN1
cHBvcnRzV2ViVmlzaWJsZU1pbWVUeXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5z
KSAmJiBmcmFtZS0+bG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5hbGxvd1BsdWdpbnMoTm90QWJv
dXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKLSAgICAgICAgfHwgKHBsdWdpbkRhdGEgJiYgcGx1Z2lu
RGF0YS0+c3VwcG9ydHNXZWJWaXNpYmxlTWltZVR5cGUobWltZVR5cGUsIFBsdWdpbkRhdGE6Ok9u
bHlBcHBsaWNhdGlvblBsdWdpbnMpKSkKKyAgICAgICAgfHwgKHBsdWdpbkRhdGEgJiYgcGx1Z2lu
RGF0YS0+c3VwcG9ydHNNaW1lVHlwZShtaW1lVHlwZSwgUGx1Z2luRGF0YTo6QWxsUGx1Z2lucykg
JiYgZnJhbWUtPmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5zKE5vdEFib3V0
VG9JbnN0YW50aWF0ZVBsdWdpbikpCisgICAgICAgIHx8IChwbHVnaW5EYXRhICYmIHBsdWdpbkRh
dGEtPnN1cHBvcnRzTWltZVR5cGUobWltZVR5cGUsIFBsdWdpbkRhdGE6Ok9ubHlBcHBsaWNhdGlv
blBsdWdpbnMpKSkKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgcmV0dXJuIFlFUzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCmluZGV4IGIxZTRkNTQwNGUwNjEwNDMzMWIxZjBlOGM4NDc4YTYxZjU5MDQ2
NTEuLmEzMjA5OWI0NTMyNWFkNWJhMDU3NzlmMjM1MGI3YTI4ZTdlM2FiNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcApAQCAtMTM0LDggKzEzNCwzIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6CiAg
ICAgICAgIG91dFBsdWdpbnNbaV0gPSBpbmZvOwogICAgIH0KIH0KLQotdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFdlYlZpc2libGVQbHVnaW5JbmZvKGNvbnN0IFBhZ2UqIHBhZ2UsIFZl
Y3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucykKLXsKLSAgICBnZXRQbHVnaW5JbmZvKHBhZ2UsIHBs
dWdpbnMpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlNjE3YTM2NWVjYjI2YjkzZjg2ZTllMmI2
OGNiM2QxYTk3OTZjYjAxLi44YTdjZDBmNGEzOWFmMGIxN2YxYzMxY2ZiYmE3OTBhODE4Njk3MjU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsNyArNTUsNiBAQCBwcml2YXRlOgogICAgIC8vIFdl
YkNvcmU6OlBsdWdpblN0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCk7
CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZl
Y3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRXZWJWaXNp
YmxlUGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+Jik7CiB9OwogCiAjZW5kaWYgLy8gV2ViUGxhdGZvcm1TdHJhdGVnaWVzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAKaW5kZXggZTkwNWY4MzA4N2NkNDcxNTk1YjdhOTY3OGRkZjU3NzE4MjA4MTVi
MS4uMzU4MTg0OTdiZmFhNWE3NGZhOTY4YjIzMDNjYThlMTJiZmY1NGM0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKQEAgLTI2MjksOCArMjYyOSw4IEBAIGJvb2wgV2ViVmlldzo6Y2FuU2hvd01JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgICAgIHx8IE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkTWVkaWFNSU1FVHlwZShtaW1lVHlwZSk7CiAKICAgICBpZiAoIWNhblNob3cg
JiYgbV9wYWdlKSB7Ci0gICAgICAgIGNhblNob3cgPSAobV9wYWdlLT5wbHVnaW5EYXRhKCkuc3Vw
cG9ydHNXZWJWaXNpYmxlTWltZVR5cGUobWltZVR5cGUsIFBsdWdpbkRhdGE6OkFsbFBsdWdpbnMp
ICYmIGFsbG93UGx1Z2lucykKLSAgICAgICAgICAgIHx8IG1fcGFnZS0+cGx1Z2luRGF0YSgpLnN1
cHBvcnRzV2ViVmlzaWJsZU1pbWVUeXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpPbmx5QXBwbGlj
YXRpb25QbHVnaW5zKTsKKyAgICAgICAgY2FuU2hvdyA9IChtX3BhZ2UtPnBsdWdpbkRhdGEoKS5z
dXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKSAmJiBhbGxv
d1BsdWdpbnMpCisgICAgICAgICAgICB8fCBtX3BhZ2UtPnBsdWdpbkRhdGEoKS5zdXBwb3J0c01p
bWVUeXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRpb25QbHVnaW5zKTsKICAg
ICB9CiAKICAgICBpZiAoIWNhblNob3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1
bGVNYWMubW0KaW5kZXggZTZjZjgxYTVlZmZkOTNiYmQzNmE1ZmU0ZjU3NWMyZTg5NGM2NTVkNC4u
YTUwYzUwZTI0ZmUzZDAyOTUzZWE5MmEwZmYwNTI4MjhhNTY0MDE4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9k
dWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21h
Yy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQpAQCAtMzk5LDEyICszOTksNyBAQCBib29sIE5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgUGx1Z2luTW9kdWxlSQogICAgICAgICBwbHVnaW4uaW5mby5kZXNjID0gcGx1Z2luLmluZm8u
ZmlsZTsKIAogICAgIHBsdWdpbi5pbmZvLmlzQXBwbGljYXRpb25QbHVnaW4gPSBmYWxzZTsKLSAg
ICBwbHVnaW4uaW5mby5jbGllbnRMb2FkUG9saWN5ID0gUGx1Z2luTG9hZENsaWVudFBvbGljeVVu
ZGVmaW5lZDsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgcGx1Z2luLmluZm8uYnVuZGxlSWRlbnRp
ZmllciA9IHBsdWdpbi5idW5kbGVJZGVudGlmaWVyOwotICAgIHBsdWdpbi5pbmZvLnZlcnNpb25T
dHJpbmcgPSBwbHVnaW4udmVyc2lvblN0cmluZzsKLSNlbmRpZgotCisgICAgCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggZGU0NDJlODkwZWIyZWViNGY5NjY2YTcwN2E2MmEzMDQ4MDVkOWI4MS4u
NGNlOWJmMGQ3MjQ5YTc4MzY1NzgxOGRmODViOTQxNDk5ZjBkNmRlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTU2NiwxOCArNTY2
LDkgQEAgYm9vbCBBcmd1bWVudENvZGVyPE1pbWVDbGFzc0luZm8+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBNaW1lQ2xhc3NJbmYKIAogdm9pZCBBcmd1bWVudENvZGVyPFBsdWdp
bkluZm8+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQbHVnaW5JbmZv
JiBwbHVnaW5JbmZvKQogewotICAgIGVuY29kZXIgPDwgcGx1Z2luSW5mby5uYW1lOwotICAgIGVu
Y29kZXIgPDwgcGx1Z2luSW5mby5maWxlOwotICAgIGVuY29kZXIgPDwgcGx1Z2luSW5mby5kZXNj
OwotICAgIGVuY29kZXIgPDwgcGx1Z2luSW5mby5taW1lczsKLSAgICBlbmNvZGVyIDw8IHBsdWdp
bkluZm8uaXNBcHBsaWNhdGlvblBsdWdpbjsKLSAgICBlbmNvZGVyLmVuY29kZUVudW0ocGx1Z2lu
SW5mby5jbGllbnRMb2FkUG9saWN5KTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgZW5jb2RlciA8
PCBwbHVnaW5JbmZvLmJ1bmRsZUlkZW50aWZpZXI7Ci0gICAgZW5jb2RlciA8PCBwbHVnaW5JbmZv
LnZlcnNpb25TdHJpbmc7Ci0jZW5kaWYKKyAgICBlbmNvZGVyIDw8IHBsdWdpbkluZm8ubmFtZSA8
PCBwbHVnaW5JbmZvLmZpbGUgPDwgcGx1Z2luSW5mby5kZXNjIDw8IHBsdWdpbkluZm8ubWltZXMg
PDwgcGx1Z2luSW5mby5pc0FwcGxpY2F0aW9uUGx1Z2luOwogfQotCisgICAgCiBib29sIEFyZ3Vt
ZW50Q29kZXI8UGx1Z2luSW5mbz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBs
dWdpbkluZm8mIHBsdWdpbkluZm8pCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbHVnaW5J
bmZvLm5hbWUpKQpAQCAtNTkwLDE1ICs1ODEsNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGx1Z2lu
SW5mbz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBsdWdpbkluZm8mIHBsdQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbHVnaW5JbmZv
LmlzQXBwbGljYXRpb25QbHVnaW4pKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUGx1Z2lu
TG9hZENsaWVudFBvbGljeSBjbGllbnRMb2FkUG9saWN5OwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKGNsaWVudExvYWRQb2xpY3kpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExB
VEZPUk0oTUFDKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGx1Z2luSW5mby5idW5kbGVJZGVu
dGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGx1Z2luSW5mby52ZXJzaW9uU3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlm
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCA5MWEzMzYxODVkMWQ3MjNj
NjQ4ZmIyZmM2YTRmNjljM2ZlYzk1NjdkLi42ZGY1YTQ3ZGRhZGYzMTk4ZjU0YmFiNTNhMWFjYmRi
YzY2YmMxMTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNDQsMTAgKzE0NCw2IEBAIHZvaWQgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgaGFzU2VsZWN0aW9uU2VydmljZXM7CiAgICAgZW5j
b2RlciA8PCBoYXNSaWNoQ29udGVudFNlcnZpY2VzOwogI2VuZGlmCi0KLSNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKLSAgICBlbmNvZGVyIDw8IHBsdWdpbkxvYWRDbGllbnRQb2xpY2ll
czsKLSNlbmRpZgogfQogCiBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKQEAgLTMwNiwxMSArMzAyLDYgQEAgYm9vbCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdl
YlByb2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGx1Z2lu
TG9hZENsaWVudFBvbGljaWVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggYzk5YzNmMmNmYTYxMTdlZmY5NTAxMTZi
ZTcyOWMyMGIyOTExZTU2OS4uODY2NDgyMzNlOTM5NGUyNGQxMzY2NDBhNWZkYzNkZTdhZWU2MjQz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC0xNjcsMTAgKzE2Nyw2IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzIHsKICAgICBib29sIGhhc1NlbGVjdGlvblNlcnZpY2VzOwogICAgIGJvb2wg
aGFzUmljaENvbnRlbnRTZXJ2aWNlczsKICNlbmRpZgotCi0jaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCi0gICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFN0
cmluZywgdWludDhfdD4+PiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7Ci0jZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QVBJQ2FzdC5oCmluZGV4IGYxOGU4YjkzNWM1ZDUxNTEyYTMxOTJjZDBmODAxOTU4Y2MzOTk2NDku
LjQ4ODViZGQ5MTNjYzg0ZmM2NGFkNTdmMjRjMzlkY2NiODFmZDY3MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNs
dWRlICJXZWJHcmFtbWFyRGV0YWlsLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9QbHVnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKQEAgLTQ4MywyNSArNDgyLDYgQEAgaW5saW5l
IFdLUGx1Z2luTG9hZFBvbGljeSB0b1dLUGx1Z2luTG9hZFBvbGljeShQbHVnaW5Nb2R1bGVMb2Fk
UG9saWN5IHBsdWdpbk1vZHUKICAgICByZXR1cm4ga1dLUGx1Z2luTG9hZFBvbGljeUJsb2NrZWQ7
CiB9CiAKLWlubGluZSBXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3kgdG9XS1BsdWdpbkxvYWRDbGll
bnRQb2xpY3koV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSBQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5KQotewotICAgIHN3aXRjaCAoUGx1Z2luTG9hZENsaWVudFBvbGljeSkgewotICAgIGNh
c2UgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeVVuZGVmaW5lZDoKLSAgICAgICAgcmV0
dXJuIGtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lVbmRlZmluZWQ7Ci0gICAgY2FzZSBXZWJDb3Jl
OjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QmxvY2s6Ci0gICAgICAgIHJldHVybiBrV0tQbHVnaW5M
b2FkQ2xpZW50UG9saWN5QmxvY2s7Ci0gICAgY2FzZSBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5QXNrOgotICAgICAgICByZXR1cm4ga1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUFzazsK
LSAgICBjYXNlIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvdzoKLSAgICAgICAg
cmV0dXJuIGtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvdzsKLSAgICBjYXNlIFdlYkNvcmU6
OlBsdWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvd0Fsd2F5czoKLSAgICAgICAgcmV0dXJuIGtXS1Bs
dWdpbkxvYWRDbGllbnRQb2xpY3lBbGxvd0Fsd2F5czsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4ga1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUJsb2NrOwot
fQotCiBpbmxpbmUgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSB0b1BsdWdpbk1vZHVsZUxvYWRQb2xp
Y3koV0tQbHVnaW5Mb2FkUG9saWN5IHBsdWdpbkxvYWRQb2xpY3kpCiB7CiAgICAgc3dpdGNoIChw
bHVnaW5Mb2FkUG9saWN5KSB7CkBAIC01MTcsMjUgKzQ5Nyw2IEBAIGlubGluZSBQbHVnaW5Nb2R1
bGVMb2FkUG9saWN5IHRvUGx1Z2luTW9kdWxlTG9hZFBvbGljeShXS1BsdWdpbkxvYWRQb2xpY3kg
cGx1Z2luCiAgICAgcmV0dXJuIFBsdWdpbk1vZHVsZUJsb2NrZWQ7CiB9CiAKLWlubGluZSBXZWJD
b3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IHRvUGx1Z2luTG9hZENsaWVudFBvbGljeShXS1Bs
dWdpbkxvYWRDbGllbnRQb2xpY3kgcGx1Z2luTG9hZENsaWVudFBvbGljeSkKLXsKLSAgICBzd2l0
Y2ggKHBsdWdpbkxvYWRDbGllbnRQb2xpY3kpIHsKLSAgICBjYXNlIGtXS1BsdWdpbkxvYWRDbGll
bnRQb2xpY3lVbmRlZmluZWQ6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5VW5kZWZpbmVkOwotICAgIGNhc2Uga1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUJs
b2NrOgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeUJsb2Nr
OwotICAgIGNhc2Uga1dLUGx1Z2luTG9hZENsaWVudFBvbGljeUFzazoKLSAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3lBc2s7Ci0gICAgY2FzZSBrV0tQbHVnaW5M
b2FkQ2xpZW50UG9saWN5QWxsb3c6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5QWxsb3c7Ci0gICAgY2FzZSBrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxs
b3dBbHdheXM6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
QWxsb3dBbHdheXM7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3lCbG9jazsKLX0KLQogaW5saW5lIFdl
YkNvcmU6OldlYkdMTG9hZFBvbGljeSB0b1dlYkdMTG9hZFBvbGljeShXS1dlYkdMTG9hZFBvbGlj
eSB3ZWJHTExvYWRQb2xpY3kpCiB7CiAgICAgc3dpdGNoICh3ZWJHTExvYWRQb2xpY3kpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BsdWdpbkxvYWRQb2xp
Y3kuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BsdWdpbkxvYWRQb2xpY3ku
aAppbmRleCBhYzgyOTlkMDBmYjExM2ExMjA3OTVkYWMyMmUwZGI5OWRmM2NjOTE0Li43MTU5MzVh
MjA0OThmNDQ5MzgzZjM5M2VkYTVkNTU3ZWQyZWZhZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQbHVnaW5Mb2FkUG9saWN5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGx1Z2luTG9hZFBvbGljeS5oCkBAIC00MCwxNCArNDAs
NiBAQCBlbnVtIHsKIH07CiB0eXBlZGVmIHVpbnQzMl90IFdLUGx1Z2luTG9hZFBvbGljeTsKIAot
ZW51bSBXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3kgewotICAgIGtXS1BsdWdpbkxvYWRDbGllbnRQ
b2xpY3lVbmRlZmluZWQgPSAwLAotICAgIGtXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3lCbG9jaywK
LSAgICBrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QXNrLAotICAgIGtXS1BsdWdpbkxvYWRDbGll
bnRQb2xpY3lBbGxvdywKLSAgICBrV0tQbHVnaW5Mb2FkQ2xpZW50UG9saWN5QWxsb3dBbHdheXMs
Ci19OwotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaAppbmRl
eCAzYzUxMDFiMzI3YTFkMDRkNzJmNmE3MWU3ZTViNDJmZjE4NzQxYzVhLi42YjNmZGYyNGRmYjIx
ZmNkZGQxYThmZTExZjNjNTgxMDc4NGU3YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMuaApAQCAtMjcsNyAr
MjcsNiBAQAogI2RlZmluZSBXS0NvbnRleHRQcml2YXRlTWFjX2gKIAogI2luY2x1ZGUgPFdlYktp
dC9XS0Jhc2UuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tQbHVnaW5Mb2FkUG9saWN5Lmg+CiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0zOCw5ICszNyw2IEBAIFdLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFNldFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQoV0tDb250ZXh0UmVm
IGNvbnRleHQsIGJvb2wKIAogV0tfRVhQT1JUIGJvb2wgV0tDb250ZXh0SXNQbHVnSW5VcGRhdGVB
dmFpbGFibGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIHBsdWdJbkJ1bmRsZUlk
ZW50aWZpZXIpOwogCi1XS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRQbHVnaW5Mb2FkQ2xpZW50
UG9saWN5KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BsdWdpbkxvYWRDbGllbnRQb2xpY3kgcG9s
aWN5LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBidW5kbGVJZGVudGlmaWVyLCBXS1N0
cmluZ1JlZiB2ZXJzaW9uU3RyaW5nKTsKLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENsZWFyUGx1
Z2luQ2xpZW50UG9saWNpZXMoV0tDb250ZXh0UmVmIGNvbnRleHQpOwotCiBXS19FWFBPUlQgV0tE
aWN0aW9uYXJ5UmVmIFdLQ29udGV4dENvcHlQbHVnSW5JbmZvRm9yQnVuZGxlSWRlbnRpZmllcihX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgcGx1Z0luQnVuZGxlSWRlbnRpZmllcik7
CiAKIHR5cGVkZWYgdm9pZCAoXldLQ29udGV4dEdldEluZm9Gb3JJbnN0YWxsZWRQbHVnSW5zQmxv
Y2spKFdLQXJyYXlSZWYsIFdLRXJyb3JSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCmluZGV4IGVmMmUy
NGQ4OTRkYWIxMmM5OGRkZWNiYWVmMDI3NjQwNTU5YThjNDEuLjdhNzYyMzgyYWEyNTc4ZmRkN2Nl
MDc5OWRiYjY0OTQ2YjY1NzcwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9tYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW0KQEAgLTUyLDIwICs1Miw2
IEBAIGJvb2wgV0tDb250ZXh0SXNQbHVnSW5VcGRhdGVBdmFpbGFibGUoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYsIFdLU3RyaW5nUmVmIHBsdWdJCiAjZW5kaWYKIH0KIAotdm9pZCBXS0NvbnRleHRT
ZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BsdWdp
bkxvYWRDbGllbnRQb2xpY3kgcG9saWN5LCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiBi
dW5kbGVJZGVudGlmaWVyLCBXS1N0cmluZ1JlZiB2ZXJzaW9uU3RyaW5nKQotewotI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c2V0UGx1Z2lu
TG9hZENsaWVudFBvbGljeSh0b1BsdWdpbkxvYWRDbGllbnRQb2xpY3kocG9saWN5KSwgdG9XVEZT
dHJpbmcoaG9zdCksIHRvV1RGU3RyaW5nKGJ1bmRsZUlkZW50aWZpZXIpLCB0b1dURlN0cmluZyh2
ZXJzaW9uU3RyaW5nKSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBXS0NvbnRleHRDbGVhclBsdWdpbkNs
aWVudFBvbGljaWVzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQotewotI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQotICAgIHRvSW1wbChjb250ZXh0UmVmKS0+Y2xlYXJQbHVnaW5DbGll
bnRQb2xpY2llcygpOwotI2VuZGlmCi19Ci0KIFdLRGljdGlvbmFyeVJlZiBXS0NvbnRleHRDb3B5
UGx1Z0luSW5mb0ZvckJ1bmRsZUlkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdL
U3RyaW5nUmVmIHBsdWdJbkJ1bmRsZUlkZW50aWZpZXJSZWYpCiB7CiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCBlZjA5NmYxODBmZmE5ZmYzMTgyYWU4N2VkZjI0NjJiNzQ3NDUxMWViLi44ZjNm
OTE4OTRhZDA0NDI4ZTJlYzkzZGY4Y2UwN2EzNzVjYTNlN2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTY4MywxMCArNjgzLDYgQEAgV2ViUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgc2Vy
dmljZUNvbnRyb2xsZXIucmVmcmVzaEV4aXN0aW5nU2VydmljZXMoKTsKICNlbmRpZgogCi0jaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgcGFyYW1ldGVycy5wbHVnaW5Mb2FkQ2xp
ZW50UG9saWNpZXMgPSBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llczsKLSNlbmRpZgotCiAjaWYg
T1MoTElOVVgpCiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGll
ZkxvZ2dpbmcgPSB0cnVlOwogI2VuZGlmCkBAIC0xNDIyLDMzICsxNDE4LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGx1Z2luSW5mb1N0b3JlRGlkTG9hZFBsdWdpbnMoUGx1Z2luSW5mb1N0b3Jl
KiBzdG9yZSkKIAogICAgIG1fY2xpZW50LnBsdWdJbkluZm9ybWF0aW9uQmVjYW1lQXZhaWxhYmxl
KHRoaXMsIEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUocGx1Z2lucykpLmdldCgpKTsKIH0K
LQotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3Jl
OjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IHBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25z
dCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykK
LXsKLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBIYXNoTWFwPFN0cmluZywg
SGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+PiBwb2xpY2llc0J5SWRlbnRpZmllcjsKLSAgICBpZiAo
bV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuY29udGFpbnMoaG9zdCkpCi0gICAgICAgIHBvbGlj
aWVzQnlJZGVudGlmaWVyID0gbV9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMuZ2V0KGhvc3QpOwot
Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ4X3Q+IHZlcnNpb25zVG9Qb2xpY2llczsKLSAgICBp
ZiAocG9saWNpZXNCeUlkZW50aWZpZXIuY29udGFpbnMoYnVuZGxlSWRlbnRpZmllcikpCi0gICAg
ICAgIHZlcnNpb25zVG9Qb2xpY2llcyA9IHBvbGljaWVzQnlJZGVudGlmaWVyLmdldChidW5kbGVJ
ZGVudGlmaWVyKTsKLQotICAgIHZlcnNpb25zVG9Qb2xpY2llcy5zZXQodmVyc2lvblN0cmluZywg
cG9saWN5KTsKLSAgICBwb2xpY2llc0J5SWRlbnRpZmllci5zZXQoYnVuZGxlSWRlbnRpZmllciwg
dmVyc2lvbnNUb1BvbGljaWVzKTsKLSAgICBtX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcy5zZXQo
aG9zdCwgcG9saWNpZXNCeUlkZW50aWZpZXIpOwotI2VuZGlmCi0KLSAgICBzZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kocG9s
aWN5LCBob3N0LCBidW5kbGVJZGVudGlmaWVyLCB2ZXJzaW9uU3RyaW5nKSk7Ci19Ci0KLXZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQotewotI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIG1fcGx1Z2luTG9hZENsaWVudFBvbGljaWVzLmNs
ZWFyKCk7Ci0jZW5kaWYKLSAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKSk7Ci19CiAjZW5kaWYKICAgICAKIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnNldE1lbW9yeUNhY2hlRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNDM1ZjUxNzkzYWFh
Y2MwZmZmNjg5ZTUyOGE1MDJkYTNlNGUwMWFhNS4uMDk2MDUzMWUwYTI1MWMwYTZiMzJkZTczOWMy
YTJmNzRkN2M2OTc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKQEAgLTE4Myw5ICsxODMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBZGRpdGlvbmFsUGx1
Z2luc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKIAogICAgIFBsdWdpbkluZm9TdG9yZSYgcGx1
Z2luSW5mb1N0b3JlKCkgeyByZXR1cm4gbV9wbHVnaW5JbmZvU3RvcmU7IH0KLQotICAgIHZvaWQg
c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKTsKLSAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9s
aWNpZXMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKQEAgLTU0Mywx
MCArNTQwLDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAg
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fZW5jb2RlZENvbnRlbnRFeHRlbnNpb25zOwogI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBIYXNoTWFwPFN0cmlu
ZywgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCB1aW50OF90Pj4+IG1fcGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzOwotI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpp
bmRleCAzYzk2NTU4ZGJlMjYyNTkwY2Y1ZTcwNGUxNjc3N2E1ZDNiOGQwOWExLi4wYWM5MTkyZWMw
NjgxYjU0OWM4OTFmYThkYWM3YTBhMTMwMTRjMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtNTM5LDcgKzUzOSw2IEBA
IFBsdWdpbkluZm8gUERGUGx1Z2luOjpwbHVnaW5JbmZvKCkKICAgICBQbHVnaW5JbmZvIGluZm87
CiAgICAgaW5mby5uYW1lID0gYnVpbHRJblBERlBsdWdpbk5hbWUoKTsKICAgICBpbmZvLmlzQXBw
bGljYXRpb25QbHVnaW4gPSB0cnVlOwotICAgIGluZm8uY2xpZW50TG9hZFBvbGljeSA9IFBsdWdp
bkxvYWRDbGllbnRQb2xpY3lVbmRlZmluZWQ7CiAKICAgICBNaW1lQ2xhc3NJbmZvIHBkZk1pbWVD
bGFzc0luZm87CiAgICAgcGRmTWltZUNsYXNzSW5mby50eXBlID0gImFwcGxpY2F0aW9uL3BkZiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDllODU3MmUzM2FjMGU3ZWM0
YjdhNDU4ZDNiMjA5MDkzODk5NjRhYWQuLjYzODZiMzYyZmY1NGY3NzgwNThhNDQ3OTZjMjZhMzk3
ZDJlYzMwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xNDQ3LDEx
ICsxNDQ3LDggQEAgc3RhdGljIGJvb2wgcGx1Z2luU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgUGx1
Z2luRGF0YSYgcGx1Z2luRGF0YSwgY29uc3QgU3RyaW5nJgogewogICAgIEFTU0VSVChleHRlbnNp
b24ubG93ZXIoKSA9PSBleHRlbnNpb24pOwogCi0gICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1p
bWVzOwotICAgIFZlY3RvcjxzaXplX3Q+IG1pbWVQbHVnaW5JbmRpY2VzOwotICAgIHBsdWdpbkRh
dGEuZ2V0V2ViVmlzaWJsZU1pbWVzQW5kUGx1Z2luSW5kaWNlcyhtaW1lcywgbWltZVBsdWdpbklu
ZGljZXMpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWltZXMuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgY29uc3QgTWltZUNsYXNzSW5mbyYgbWltZUNsYXNzSW5mbyA9IG1pbWVzW2ldOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGx1Z2luRGF0YS5taW1lcygpLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGNvbnN0IE1pbWVDbGFzc0luZm8mIG1pbWVDbGFzc0luZm8gPSBwbHVnaW5E
YXRhLm1pbWVzKClbaV07CiAKICAgICAgICAgaWYgKG1pbWVDbGFzc0luZm8uZXh0ZW5zaW9ucy5j
b250YWlucyhleHRlbnNpb24pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDg2LDkg
KzE0ODMsOSBAQCBPYmplY3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0
Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgYm9vbCBwbHVnSW5TdXBwb3J0
c01JTUVUeXBlID0gZmFsc2U7CiAgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCkpIHsKICAgICAgICAgY29uc3QgUGx1Z2luRGF0YSYgcGx1Z2luRGF0YSA9IHdlYlBhZ2Ut
PmNvcmVQYWdlKCktPnBsdWdpbkRhdGEoKTsKLSAgICAgICAgaWYgKHBsdWdpbkRhdGEuc3VwcG9y
dHNXZWJWaXNpYmxlTWltZVR5cGUobWltZVR5cGUsIFBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpICYm
IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmFsbG93
UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pKQorICAgICAgICBpZiAocGx1Z2lu
RGF0YS5zdXBwb3J0c01pbWVUeXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKSAm
JiB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc3ViZnJhbWVMb2FkZXIoKS5hbGxv
d1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKSkKICAgICAgICAgICAgIHBsdWdJ
blN1cHBvcnRzTUlNRVR5cGUgPSB0cnVlOwotICAgICAgICBlbHNlIGlmIChwbHVnaW5EYXRhLnN1
cHBvcnRzV2ViVmlzaWJsZU1pbWVUeXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpPbmx5QXBwbGlj
YXRpb25QbHVnaW5zKSkKKyAgICAgICAgZWxzZSBpZiAocGx1Z2luRGF0YS5zdXBwb3J0c01pbWVU
eXBlKG1pbWVUeXBlLCBQbHVnaW5EYXRhOjpPbmx5QXBwbGljYXRpb25QbHVnaW5zKSkKICAgICAg
ICAgICAgIHBsdWdJblN1cHBvcnRzTUlNRVR5cGUgPSB0cnVlOwogICAgIH0KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCAyMzY4ODBhYWEwN2M5YmUyMjgzNmFk
NjIyZDgzNjYzMjBjOGQ4MzM3Li5lM2Y0MmRmNWQyYTViZWU4MzU2YmJhNTMyZTUwY2MxYjM4M2Y5
OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJT
dHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CkBAIC0yNjcsOCArMjY2
LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkKIHZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2Uq
IHBhZ2UsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYgcGx1Z2lucykKIHsKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOwotICAg
IHBvcHVsYXRlUGx1Z2luQ2FjaGUoKnBhZ2UpOworICAgIHBvcHVsYXRlUGx1Z2luQ2FjaGUoKTsK
IAogICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmFs
bG93UGx1Z2lucyhOb3RBYm91dFRvSW5zdGFudGlhdGVQbHVnaW4pKSB7CiAgICAgICAgIHBsdWdp
bnMgPSBtX2NhY2hlZFBsdWdpbnM7CkBAIC0yODIsMTAzICsyODAsMjAgQEAgdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSogcGFnZSwg
VmVjdG9yPFdlYkMKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIH0KIAot
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFdlYlZpc2libGVQbHVnaW5JbmZvKGNvbnN0
IFBhZ2UqIHBhZ2UsIFZlY3RvcjxQbHVnaW5JbmZvPiYgcGx1Z2lucykKLXsKLSAgICBBU1NFUlRf
QVJHKHBhZ2UsIHBhZ2UpOwotICAgIEFTU0VSVF9BUkcocGx1Z2lucywgcGx1Z2lucy5pc0VtcHR5
KCkpOwotCi0gICAgZ2V0UGx1Z2luSW5mbyhwYWdlLCBwbHVnaW5zKTsKLQotI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBmb3IgKGludDMyX3QgaSA9IHBsdWdpbnMuc2l6ZSgpIC0gMTsgaSA+PSAwOyAt
LWkpIHsKLSAgICAgICAgUGx1Z2luSW5mbyYgaW5mbyA9IHBsdWdpbnMuYXQoaSk7Ci0gICAgICAg
IFBsdWdpbkxvYWRDbGllbnRQb2xpY3kgY2xpZW50UG9saWN5ID0gaW5mby5jbGllbnRMb2FkUG9s
aWN5OwotICAgICAgICAvLyBBbGxvdyBidWlsdC1pbiBwbHVnaW5zLiBBbHNvIHRlbnRhdGl2ZWx5
IGFsbG93IHBsdWdpbnMgdGhhdCB0aGUgY2xpZW50IG1pZ2h0IGxhdGVyIHNlbGVjdGl2ZWx5IHBl
cm1pdC4KLSAgICAgICAgaWYgKGluZm8uaXNBcHBsaWNhdGlvblBsdWdpbiB8fCBjbGllbnRQb2xp
Y3kgPT0gUGx1Z2luTG9hZENsaWVudFBvbGljeUFzaykKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgIGlmIChjbGllbnRQb2xpY3kgPT0gUGx1Z2luTG9hZENsaWVudFBvbGljeUJsb2Nr
KQotICAgICAgICAgICAgcGx1Z2lucy5yZW1vdmUoaSk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLSNp
ZiBQTEFURk9STShNQUMpCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0UGx1Z2luTG9h
ZENsaWVudFBvbGljeShQbHVnaW5Mb2FkQ2xpZW50UG9saWN5IGNsaWVudFBvbGljeSwgY29uc3Qg
U3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvblN0cmluZykKLXsKLSAgICBTdHJpbmcgaG9zdFRvU2V0ID0gaG9zdC5pc051bGwo
KSB8fCAhaG9zdC5sZW5ndGgoKSA/ICIqIiA6IGhvc3Q7Ci0gICAgU3RyaW5nIGJ1bmRsZUlkZW50
aWZpZXJUb1NldCA9IGJ1bmRsZUlkZW50aWZpZXIuaXNOdWxsKCkgfHwgIWJ1bmRsZUlkZW50aWZp
ZXIubGVuZ3RoKCkgPyAiKiIgOiBidW5kbGVJZGVudGlmaWVyOwotICAgIFN0cmluZyB2ZXJzaW9u
U3RyaW5nVG9TZXQgPSB2ZXJzaW9uU3RyaW5nLmlzTnVsbCgpIHx8ICF2ZXJzaW9uU3RyaW5nLmxl
bmd0aCgpID8gIioiIDogdmVyc2lvblN0cmluZzsKLQotICAgIFBsdWdpblBvbGljeU1hcHNCeUlk
ZW50aWZpZXIgcG9saWNpZXNCeUlkZW50aWZpZXI7Ci0gICAgaWYgKG1faG9zdHNUb1BsdWdpbklk
ZW50aWZpZXJEYXRhLmNvbnRhaW5zKGhvc3RUb1NldCkpCi0gICAgICAgIHBvbGljaWVzQnlJZGVu
dGlmaWVyID0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuZ2V0KGhvc3RUb1NldCk7Ci0K
LSAgICBQbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXNCeUJ1bmRsZVZlcnNpb24gdmVyc2lvbnNUb1Bv
bGljaWVzOwotICAgIGlmIChwb2xpY2llc0J5SWRlbnRpZmllci5jb250YWlucyhidW5kbGVJZGVu
dGlmaWVyVG9TZXQpKQotICAgICAgICB2ZXJzaW9uc1RvUG9saWNpZXMgPSBwb2xpY2llc0J5SWRl
bnRpZmllci5nZXQoYnVuZGxlSWRlbnRpZmllclRvU2V0KTsKLQotICAgIHZlcnNpb25zVG9Qb2xp
Y2llcy5zZXQodmVyc2lvblN0cmluZ1RvU2V0LCBjbGllbnRQb2xpY3kpOwotICAgIHBvbGljaWVz
QnlJZGVudGlmaWVyLnNldChidW5kbGVJZGVudGlmaWVyVG9TZXQsIHZlcnNpb25zVG9Qb2xpY2ll
cyk7Ci0gICAgbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuc2V0KGhvc3RUb1NldCwgcG9s
aWNpZXNCeUlkZW50aWZpZXIpOwotfQotCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y2xl
YXJQbHVnaW5DbGllbnRQb2xpY2llcygpCisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
Cit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cG9wdWxhdGVQbHVnaW5DYWNoZSgpCiB7Ci0g
ICAgbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuY2xlYXIoKTsKLX0KLQotI2VuZGlmCisg
ICAgaWYgKG1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRlZCkKKyAgICAgICAgcmV0dXJuOwogCi0jaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0jaWYgUExBVEZPUk0oTUFDKQotYm9vbCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KGNvbnN0IFN0
cmluZyYgaG9zdCwgY29uc3QgUGx1Z2luSW5mbyYgaW5mbywgUGx1Z2luTG9hZENsaWVudFBvbGlj
eSYgcG9saWN5KSBjb25zdAotewotICAgIFN0cmluZyBob3N0VG9Mb29rVXAgPSBob3N0OwotICAg
IGlmICghbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGEuY29udGFpbnMoaG9zdFRvTG9va1Vw
KSkKLSAgICAgICAgaG9zdFRvTG9va1VwID0gIioiOwotICAgIGlmICghbV9ob3N0c1RvUGx1Z2lu
SWRlbnRpZmllckRhdGEuY29udGFpbnMoaG9zdFRvTG9va1VwKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgUGx1Z2luUG9saWN5TWFwc0J5SWRlbnRpZmllciBwb2xpY2llc0J5SWRlbnRp
ZmllciA9IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmdldChob3N0VG9Mb29rVXApOwot
ICAgIFN0cmluZyBpZGVudGlmaWVyID0gaW5mby5idW5kbGVJZGVudGlmaWVyOwotICAgIGlmICgh
aWRlbnRpZmllciB8fCAhcG9saWNpZXNCeUlkZW50aWZpZXIuY29udGFpbnMoaWRlbnRpZmllcikp
Ci0gICAgICAgIGlkZW50aWZpZXIgPSAiKiI7Ci0gICAgaWYgKCFwb2xpY2llc0J5SWRlbnRpZmll
ci5jb250YWlucyhpZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUGx1
Z2luTG9hZENsaWVudFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uIHZlcnNpb25zVG9Qb2xpY2llcyA9
IHBvbGljaWVzQnlJZGVudGlmaWVyLmdldChpZGVudGlmaWVyKTsKLSAgICBTdHJpbmcgdmVyc2lv
biA9IGluZm8udmVyc2lvblN0cmluZzsKLSAgICBpZiAoIXZlcnNpb24gfHwgIXZlcnNpb25zVG9Q
b2xpY2llcy5jb250YWlucyh2ZXJzaW9uKSkKLSAgICAgICAgdmVyc2lvbiA9ICIqIjsKLSAgICBp
ZiAoIXZlcnNpb25zVG9Qb2xpY2llcy5jb250YWlucyh2ZXJzaW9uKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcG9saWN5ID0gdmVyc2lvbnNUb1BvbGljaWVzLmdldCh2ZXJzaW9uKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCi0KLXZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpwb3B1bGF0ZVBsdWdpbkNhY2hlKGNvbnN0IFdlYkNvcmU6OlBh
Z2UmIHBhZ2UpCi17Ci0gICAgaWYgKCFtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQpIHsKLSAgICAg
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5zKG1fc2hvdWxk
UmVmcmVzaFBsdWdpbnMpLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5zOjpS
ZXBseShtX2NhY2hlZFBsdWdpbnMsIG1fY2FjaGVkQXBwbGljYXRpb25QbHVnaW5zKSwgMCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9zaG91bGRSZWZyZXNoUGx1Z2lucyA9IGZh
bHNlOwotICAgICAgICBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQgPSB0cnVlOwotICAgIH0KKyAg
ICBBU1NFUlQobV9jYWNoZWRQbHVnaW5zLmlzRW1wdHkoKSk7CisgICAgCisgICAgLy8gRklYTUU6
IFNob3VsZCB3ZSBkbyBzb21ldGhpbmcgaW4gY2FzZSBvZiBlcnJvciBoZXJlPworICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2lucyhtX3Nob3VsZFJlZnJlc2hQ
bHVnaW5zKSwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luczo6UmVwbHkobV9j
YWNoZWRQbHVnaW5zLCBtX2NhY2hlZEFwcGxpY2F0aW9uUGx1Z2lucyksIDApKQorICAgICAgICBy
ZXR1cm47CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgU3RyaW5nIHBhZ2VIb3N0ID0gcGFnZS5t
YWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZVVSTCgpLmhvc3Qo
KTsKLSAgICBmb3IgKFBsdWdpbkluZm8mIGluZm8gOiBtX2NhY2hlZFBsdWdpbnMpIHsKLSAgICAg
ICAgUGx1Z2luTG9hZENsaWVudFBvbGljeSBjbGllbnRQb2xpY3k7Ci0gICAgICAgIGlmIChwbHVn
aW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChwYWdlSG9zdCwgaW5mbywgY2xpZW50UG9saWN5KSkK
LSAgICAgICAgICAgIGluZm8uY2xpZW50TG9hZFBvbGljeSA9IGNsaWVudFBvbGljeTsKLSAgICB9
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKLSNlbmRpZiAvLyBub3QgUExBVEZPUk0o
TUFDKQorICAgIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMgPSBmYWxzZTsKKyAgICBtX3BsdWdpbkNh
Y2hlSXNQb3B1bGF0ZWQgPSB0cnVlOwogfQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAzYjJmY2IxYjQx
MmI0MjBlNWJjMWMwYjBmODczNmRhNDE2NTE2NzEwLi5hZmEwYmExNDFhNTJhMGVmYTI3ZGU3YjZi
MmY1YTg0OTBlNzczNjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTMx
LDcgKzMxLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmRTdHJhdGVneS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TdHJhdGVnaWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
bHVnaW5TdHJhdGVneS5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjgsMTUgKzY3LDYg
QEAgcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneQogICAgIHZpcnR1YWwg
dm9pZCByZWZyZXNoUGx1Z2lucygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVn
aW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4m
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0V2ViVmlzaWJsZVBsdWdpbkluZm8oY29u
c3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpIG92ZXJyaWRl
OwotCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFdlYkNv
cmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+IFBsdWdpbkxvYWRDbGllbnRQb2xpY2llc0J5QnVu
ZGxlVmVyc2lvbjsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBQbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXNCeUJ1bmRsZVZlcnNpb24+IFBsdWdpblBvbGljeU1hcHNCeUlkZW50aWZpZXI7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJDb3JlOjpQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYgYnVu
ZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpIG92ZXJyaWRlOwotI2Vu
ZGlmCiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKICNpZiBQTEFURk9STShJ
T1MpCkBAIC0xMDksMTYgKzk5LDExIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKICAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSBpbXBsZW1lbnRhdGlv
bi4KLSAgICB2b2lkIHBvcHVsYXRlUGx1Z2luQ2FjaGUoY29uc3QgV2ViQ29yZTo6UGFnZSYpOwor
ICAgIHZvaWQgcG9wdWxhdGVQbHVnaW5DYWNoZSgpOwogICAgIGJvb2wgbV9wbHVnaW5DYWNoZUlz
UG9wdWxhdGVkOwogICAgIGJvb2wgbV9zaG91bGRSZWZyZXNoUGx1Z2luczsKICAgICBWZWN0b3I8
V2ViQ29yZTo6UGx1Z2luSW5mbz4gbV9jYWNoZWRQbHVnaW5zOwogICAgIFZlY3RvcjxXZWJDb3Jl
OjpQbHVnaW5JbmZvPiBtX2NhY2hlZEFwcGxpY2F0aW9uUGx1Z2luczsKLQotI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBIYXNoTWFwPFN0cmluZywgUGx1Z2luUG9saWN5TWFwc0J5SWRlbnRpZmllcj4g
bV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRhdGE7Ci0gICAgYm9vbCBwbHVnaW5Mb2FkQ2xpZW50
UG9saWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpQbHVnaW5JbmZvJiwg
V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSYpIGNvbnN0OwotI2VuZGlmIC8vIFBMQVRG
T1JNKE1BQykKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4ZjNm
YmE1ZDdkODdhYmM3ZDk2M2Q3ODEyY2Y4YmEyNjE3MDNhYWVmLi5lOWRjNzgxZDgxZjY0YWNmNTIw
YzhhZjI2OTc3YmRmMDg2Y2RjMzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00NDI2LDExICs0NDI2LDExIEBAIGJvb2wgV2ViUGFnZTo6
Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0CiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgY29uc3QgUGx1Z2luRGF0YSYgcGx1Z2luRGF0YSA9IG1fcGFnZS0+
cGx1Z2luRGF0YSgpOwotICAgIGlmIChwbHVnaW5EYXRhLnN1cHBvcnRzV2ViVmlzaWJsZU1pbWVU
eXBlKE1JTUVUeXBlLCBQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKSAmJiBjb3JlUGFnZSgpLT5tYWlu
RnJhbWUoKS5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmFsbG93UGx1Z2lucyhOb3RBYm91dFRv
SW5zdGFudGlhdGVQbHVnaW4pKQorICAgIGlmIChwbHVnaW5EYXRhLnN1cHBvcnRzTWltZVR5cGUo
TUlNRVR5cGUsIFBsdWdpbkRhdGE6OkFsbFBsdWdpbnMpICYmIGNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLmxvYWRlcigpLnN1YmZyYW1lTG9hZGVyKCkuYWxsb3dQbHVnaW5zKE5vdEFib3V0VG9JbnN0
YW50aWF0ZVBsdWdpbikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gV2UgY2FuIHVz
ZSBhcHBsaWNhdGlvbiBwbHVnaW5zIGV2ZW4gaWYgcGx1Z2lucyBhcmVuJ3QgZW5hYmxlZC4KLSAg
ICBpZiAocGx1Z2luRGF0YS5zdXBwb3J0c1dlYlZpc2libGVNaW1lVHlwZShNSU1FVHlwZSwgUGx1
Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lucykpCisgICAgaWYgKHBsdWdpbkRhdGEuc3Vw
cG9ydHNNaW1lVHlwZShNSU1FVHlwZSwgUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lu
cykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmJjZTYzZDdjOGM2ODhjMGM0YzQx
M2JlZjcyNzAxMTY5YmMwYTljMi4uZjE4MGM5YTVmMjk1ZmI5YjdiZjNhYTkxNzZkZTNlZjg4M2Ey
YWRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zODQs
MTUgKzM4NCw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgICAgIEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXRQYXJlbnRQcm9jZXNzSW5mb3JtYXRpb24o
cHJlc2VudGVyQXBwbGljYXRpb25QaWQoKSwgYXVkaXREYXRhKTsKICAgICB9CiAjZW5kaWYKLQot
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKSAmJiBQTEFURk9STShNQUMpCi0gICAgZm9y
IChjb25zdCBhdXRvJiBob3N0S2V5VmFsdWUgOiBwYXJhbWV0ZXJzLnBsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcykgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGJ1bmRsZUlkZW50aWZpZXJLZXlW
YWx1ZSA6IGhvc3RLZXlWYWx1ZS52YWx1ZSkgewotICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiB2ZXJzaW9uU3RyaW5nS2V5VmFsdWUgOiBidW5kbGVJZGVudGlmaWVyS2V5VmFsdWUudmFsdWUp
Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBsdWdpblN0cmF0ZWd5KCkt
PnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koc3RhdGljX2Nhc3Q8UGx1Z2luTG9hZENsaWVudFBv
bGljeT4odmVyc2lvblN0cmluZ0tleVZhbHVlLnZhbHVlKSwgaG9zdEtleVZhbHVlLmtleSwgYnVu
ZGxlSWRlbnRpZmllcktleVZhbHVlLmtleSwgdmVyc2lvblN0cmluZ0tleVZhbHVlLmtleSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKIH0KIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CkBAIC04NzEsMjAgKzg2Miw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkUmVjZWl2ZVVz
ZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0CiAgICAgcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6OlBsdWdJ
bkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24ocGx1Z0luT3JpZ2luSGFzaCwgc2Vzc2lvbklEKSwg
MCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6c2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSh1aW50
OF90IHBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykKLXsKLSNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkgJiYgUExBVEZPUk0oTUFDKQotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wbHVnaW5TdHJhdGVneSgpLT5zZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHN0YXRpY19jYXN0
PFBsdWdpbkxvYWRDbGllbnRQb2xpY3k+KHBvbGljeSksIGhvc3QsIGJ1bmRsZUlkZW50aWZpZXIs
IHZlcnNpb25TdHJpbmcpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJQbHVn
aW5DbGllbnRQb2xpY2llcygpCi17Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpICYm
IFBMQVRGT1JNKE1BQykKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGx1Z2luU3RyYXRlZ3ko
KS0+Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpOwotI2VuZGlmCi19Ci0KIHN0YXRpYyB2b2lk
IGZyb21Db3VudGVkU2V0VG9IYXNoTWFwKFR5cGVDb3VudFNldCogY291bnRlZFNldCwgSGFzaE1h
cDxTdHJpbmcsIHVpbnQ2NF90PiYgbWFwKQogewogICAgIFR5cGVDb3VudFNldDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gY291bnRlZFNldC0+ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCmluZGV4IGE2MjA2OTI3MmU3ZWJiZTFhZWMxNGJkNTc3M2E5OGIzOTc2OTkyMWMu
LjlkNmM1ZTE1Y2RkMGY2ZWQwZmY3ZTI1NTU0ZmE4YmEwMDNhN2EzZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMjMsOCArMTIzLDYgQEAgcHVibGljOgogICAg
IGJvb2wgc2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihXZWJQYWdlJiwgY29uc3QgU3Ry
aW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7CiAgICAgdm9pZCBwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3Ry
aW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHBsdWdJbkRpZFJlY2Vp
dmVVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcm
IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklE
KTsKLSAgICB2b2lkIHNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3kodWludDhfdCBwb2xpY3ksIGNv
bnN0IFN0cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHZlcnNpb25TdHJpbmcpOwotICAgIHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2ll
cygpOwogCiAgICAgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9mdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBhMTM3NjgxYTI1ZGE3YTMx
ZTY1ZTk0OTY4MGZlYTQ3OTMzYzFiZTlkLi42NzdkNGJhMjUxNzM5MDE2MTAxZDJiZmNjZDkyNmM2
MDg1ZWU3NGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC01Niw4ICs1Niw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIERpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godWludDMy
X3QgaGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1lLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luRGVmYXVsdEhhc2hlcyhIYXNoTWFw
PHVpbnQzMl90LGRvdWJsZT4gaGFzaGVzKQogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2lu
SGFzaGVzKEhhc2hNYXA8V2ViQ29yZTo6U2Vzc2lvbklELCBIYXNoTWFwPHVpbnQzMl90LGRvdWJs
ZT4+IGhhc2hlcykKLSAgICBTZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5KHVpbnQ4X3QgcG9saWN5
LCBTdHJpbmcgaG9zdCwgU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXIsIFN0cmluZyB2ZXJzaW9uU3Ry
aW5nKQotICAgIENsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKQogCiAgICAgdm9pZCBTdGFydE1l
bW9yeVNhbXBsZXIoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FtcGxlTG9nRmls
ZUhhbmRsZSwgU3RyaW5nIHNhbXBsZUxvZ0ZpbGVQYXRoLCBkb3VibGUgaW50ZXJ2YWwpOwogICAg
IHZvaWQgU3RvcE1lbW9yeVNhbXBsZXIoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>