<?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>178182</bug_id>
          
          <creation_ts>2017-10-11 12:31:18 -0700</creation_ts>
          <short_desc>REGRESSION(r223113): Reintroduced 20% regression on Kraken (Requested by rniwa on #webkit).</short_desc>
          <delta_ts>2017-10-12 08:46: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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>177586</blocked>
    
    <blocked>178050</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1359331</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-11 12:31:18 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/223113 broke the build:
Reintroduced 20% regression on Kraken (Requested by rniwa 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>1359334</commentid>
    <comment_count>1</comment_count>
      <attachid>323447</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-11 12:31:32 -0700</bug_when>
    <thetext>Created attachment 323447
ROLLOUT of r223113

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>1359337</commentid>
    <comment_count>2</comment_count>
      <attachid>323447</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-11 12:33:52 -0700</bug_when>
    <thetext>Comment on attachment 323447
ROLLOUT of r223113

Clearing flags on attachment: 323447

Committed r223202: &lt;https://trac.webkit.org/changeset/223202&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359338</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-11 12:33:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359346</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-11 12:56:35 -0700</bug_when>
    <thetext>Was this initiated because of Kraken or because of Kraken and other bernchmarks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359348</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-11 12:58:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/34939565&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359350</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-11 13:01:14 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #4)
&gt; Was this initiated because of Kraken or because of Kraken and other
&gt; bernchmarks?

When this patch got landed, 20% Kraken regression came up back on bots, and at the same time, we also observed Speedometer on iOS to regress by 2-4%. We&apos;ve confirmed Speedometer to progress by the same amount when the initial patch got rolled out and regress again when the patch got re-landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359365</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-11 13:34:41 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #6)
&gt; (In reply to Filip Pizlo from comment #4)
&gt; &gt; Was this initiated because of Kraken or because of Kraken and other
&gt; &gt; bernchmarks?
&gt; 
&gt; When this patch got landed, 20% Kraken regression came up back on bots,

You mean one bot.

&gt; and
&gt; at the same time, we also observed Speedometer on iOS to regress by 2-4%.
&gt; We&apos;ve confirmed Speedometer to progress by the same amount when the initial
&gt; patch got rolled out and regress again when the patch got re-landed.

Kraken is not really a big focus, and it&apos;s not correct to say that we have a 20% regression without precisely qualifying that in fact, most iOS devices see no regression from that change.  I hope you agree with me that if you tell someone that something is X% regressed when in reality it is only X% regressed on one device and 0% regressed everywhere else, that this creates an unnecessary sense of urgency.

On the other hand, I agree with you the Speedometer is important and if it&apos;s true that all Speedo bots saw 2-4% regressions, then we should roll this out.

But if Speedometer is like Kraken in the sense that some bots see this and some don&apos;t then I&apos;m not sure that an immediate rollout is super productive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359391</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-10-11 14:43:38 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #7)
&gt; (In reply to Ryosuke Niwa from comment #6)
&gt; &gt; (In reply to Filip Pizlo from comment #4)
&gt; &gt; &gt; Was this initiated because of Kraken or because of Kraken and other
&gt; &gt; &gt; bernchmarks?
&gt; &gt; 
&gt; &gt; When this patch got landed, 20% Kraken regression came up back on bots,
&gt; 
&gt; You mean one bot.
&gt; 
&gt; &gt; and
&gt; &gt; at the same time, we also observed Speedometer on iOS to regress by 2-4%.
&gt; &gt; We&apos;ve confirmed Speedometer to progress by the same amount when the initial
&gt; &gt; patch got rolled out and regress again when the patch got re-landed.
&gt; 
&gt; Kraken is not really a big focus, and it&apos;s not correct to say that we have a
&gt; 20% regression without precisely qualifying that in fact, most iOS devices
&gt; see no regression from that change.  I hope you agree with me that if you
&gt; tell someone that something is X% regressed when in reality it is only X%
&gt; regressed on one device and 0% regressed everywhere else, that this creates
&gt; an unnecessary sense of urgency.

Right, I agree with you there.

&gt; On the other hand, I agree with you the Speedometer is important and if it&apos;s
&gt; true that all Speedo bots saw 2-4% regressions, then we should roll this out.
&gt; 
&gt; But if Speedometer is like Kraken in the sense that some bots see this and
&gt; some don&apos;t then I&apos;m not sure that an immediate rollout is super productive.

We saw on multiple bots. I&apos;ll send you links by an email.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359603</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-10-12 08:46:04 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #8)
&gt; (In reply to Filip Pizlo from comment #7)
&gt; &gt; (In reply to Ryosuke Niwa from comment #6)
&gt; &gt; &gt; (In reply to Filip Pizlo from comment #4)
&gt; &gt; &gt; &gt; Was this initiated because of Kraken or because of Kraken and other
&gt; &gt; &gt; &gt; bernchmarks?
&gt; &gt; &gt; 
&gt; &gt; &gt; When this patch got landed, 20% Kraken regression came up back on bots,
&gt; &gt; 
&gt; &gt; You mean one bot.
&gt; &gt; 
&gt; &gt; &gt; and
&gt; &gt; &gt; at the same time, we also observed Speedometer on iOS to regress by 2-4%.
&gt; &gt; &gt; We&apos;ve confirmed Speedometer to progress by the same amount when the initial
&gt; &gt; &gt; patch got rolled out and regress again when the patch got re-landed.
&gt; &gt; 
&gt; &gt; Kraken is not really a big focus, and it&apos;s not correct to say that we have a
&gt; &gt; 20% regression without precisely qualifying that in fact, most iOS devices
&gt; &gt; see no regression from that change.  I hope you agree with me that if you
&gt; &gt; tell someone that something is X% regressed when in reality it is only X%
&gt; &gt; regressed on one device and 0% regressed everywhere else, that this creates
&gt; &gt; an unnecessary sense of urgency.
&gt; 
&gt; Right, I agree with you there.
&gt; 
&gt; &gt; On the other hand, I agree with you the Speedometer is important and if it&apos;s
&gt; &gt; true that all Speedo bots saw 2-4% regressions, then we should roll this out.
&gt; &gt; 
&gt; &gt; But if Speedometer is like Kraken in the sense that some bots see this and
&gt; &gt; some don&apos;t then I&apos;m not sure that an immediate rollout is super productive.
&gt; 
&gt; We saw on multiple bots. I&apos;ll send you links by an email.

We discussed over e-mail.  I&apos;m going to roll this back in.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323447</attachid>
            <date>2017-10-11 12:31:32 -0700</date>
            <delta_ts>2017-10-11 12:33:52 -0700</delta_ts>
            <desc>ROLLOUT of r223113</desc>
            <filename>bug-178182-20171011153131.patch</filename>
            <type>text/plain</type>
            <size>49368</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
OTViZDE0OWRiODVhMTEwZjdiMmZjYTU5OGU3MDAzOTVmNTViYjAzLi45NjY5ZjRkOGNmMDE5OGQ0
Yzk1YWFlODkzNzY1ZjUzYmM4MmVjZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNy0xMC0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzExMyBhbmQgcjIy
MzEyMS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
ODE4MgorCisgICAgICAgIFJlaW50cm9kdWNlZCAyMCUgcmVncmVzc2lvbiBvbiBLcmFrZW4gKFJl
cXVlc3RlZCBieSBybml3YSBvbgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRl
ZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJFbmFibGUgZ2lnYWNhZ2Ugb24gaU9TIgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NTg2CisgICAgICAg
IGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMjMxMTMKKworICAgICAgICAiVXNl
IG9uZSB2aXJ0dWFsIGFsbG9jYXRpb24gZm9yIGFsbCBnaWdhY2FnZXMgYW5kIHRoZWlyCisgICAg
ICAgIHJ1bndheXMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzgwNTAKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIy
MzEyMQorCiAyMDE3LTEwLTExICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgog
CiAgICAgICAgIFVwZGF0ZSBKYXZhU2NyaXB0Q29yZS91Y2QvQ2FzZUZvbGRpbmcudHh0IHRvIFVu
aWNvZGUgZGF0YWJhc2UgMTAuMApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
IGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IDY3ZjJhMWFkYTFkMTY0MDhmNDQ3ODNl
YTdmZGExNDE0MTUxOWUzMmMuLmUwODA2ZjE0Mzk1OTA1ZTUxMGI4ODM2ZmNmMzkxZTMwMzBkNTA4
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0xMC0xMSAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjIyMzExMyBhbmQgcjIyMzEyMS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODE4MgorCisgICAgICAgIFJlaW50cm9kdWNlZCAyMCUgcmVn
cmVzc2lvbiBvbiBLcmFrZW4gKFJlcXVlc3RlZCBieSBybml3YSBvbgorICAgICAgICAjd2Via2l0
KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJFbmFibGUgZ2ln
YWNhZ2Ugb24gaU9TIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc3NTg2CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8y
MjMxMTMKKworICAgICAgICAiVXNlIG9uZSB2aXJ0dWFsIGFsbG9jYXRpb24gZm9yIGFsbCBnaWdh
Y2FnZXMgYW5kIHRoZWlyCisgICAgICAgIHJ1bndheXMiCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgwNTAKKyAgICAgICAgaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzIyMzEyMQorCiAyMDE3LTEwLTA3ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIG9uZSB2aXJ0dWFsIGFsbG9jYXRpb24gZm9y
IGFsbCBnaWdhY2FnZXMgYW5kIHRoZWlyIHJ1bndheXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCAyMjgwMjE1NGI4MDI1ZmJmYWQ3NTAyZjFj
NTZiZDg1ZmRmMTE5MjFkLi42NmI4MTM2ZGNiOWJiNjFiMTUyZjljMTFiYmU1MTllYjJjNDEwYmU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC0xMTk5NCw3ICsxMTk5NCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgTFZhbHVlIGNhZ2VkKEdp
Z2FjYWdlOjpLaW5kIGtpbmQsIExWYWx1ZSBwdHIpCiAgICAgewotICAgICAgICBpZiAoIUdpZ2Fj
YWdlOjppc0VuYWJsZWQoa2luZCkpCisgICAgICAgIGlmICghR2lnYWNhZ2U6OnNob3VsZEJlRW5h
YmxlZCgpKQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKICAgICAgICAgCiAgICAgICAgIGlmIChr
aW5kID09IEdpZ2FjYWdlOjpQcmltaXRpdmUgJiYgR2lnYWNhZ2U6OmNhblByaW1pdGl2ZUdpZ2Fj
YWdlQmVEaXNhYmxlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuaAppbmRleCBlMWU0YTViZmY2YzJjOGJlZWZjOGM1NjkxYmY0MDIyNmM0NWU1ZDllLi5m
M2I2MjEzNTgxMWZmOTBkMDg3NTM3ZjY0NWU2MWZlNTgwMjUwYzAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTEzMTQsNyArMTMxNCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNhZ2UoR2lnYWNhZ2U6OktpbmQga2luZCwgR1BSUmVnIHN0b3JhZ2Up
CiAgICAgewogI2lmIEdJR0FDQUdFX0VOQUJMRUQKLSAgICAgICAgaWYgKCFHaWdhY2FnZTo6aXNF
bmFibGVkKGtpbmQpKQorICAgICAgICBpZiAoIUdpZ2FjYWdlOjpzaG91bGRCZUVuYWJsZWQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIGFuZFB0cihUcnVzdGVkSW1t
UHRyKEdpZ2FjYWdlOjptYXNrKGtpbmQpKSwgc3RvcmFnZSk7CkBAIC0xMzI4LDcgKzEzMjgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6S2luZCBraW5k
LCBHUFJSZWcgc3RvcmFnZSwgR1BSUmVnIHNjcmF0Y2gpCiAgICAgewogI2lmIEdJR0FDQUdFX0VO
QUJMRUQKLSAgICAgICAgaWYgKCFHaWdhY2FnZTo6aXNFbmFibGVkKGtpbmQpKQorICAgICAgICBp
ZiAoIUdpZ2FjYWdlOjpzaG91bGRCZUVuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCiAgICAgICAgIGlmIChraW5kICE9IEdpZ2FjYWdlOjpQcmltaXRpdmUgfHwgR2lnYWNh
Z2U6OmlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtNjQucmIgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgppbmRleCBlODA2Zjk5MWI1YTU2ZjcxMjg5ZGJk
Mjk3ZDIyMjNiOTM2OTE2ZDgwLi5lYWQ0ODkxMzNhNjhlZDcyYmY2NTQ1ODMyYjExOWJjODJlZjc5
MDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5y
YgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgpAQCAtMjYw
LDMxICsyNjAsNiBAQCBkZWYgYXJtNjRMb3dlck1hbGZvcm1lZExvYWRTdG9yZUFkZHJlc3Nlcyhs
aXN0KQogICAgIG5ld0xpc3QKIGVuZAogCi1kZWYgYXJtNjRMb3dlckxhYmVsUmVmZXJlbmNlcyhs
aXN0KQotICAgIG5ld0xpc3QgPSBbXQotICAgIGxpc3QuZWFjaCB7Ci0gICAgICAgIHwgbm9kZSB8
Ci0gICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KLSAgICAgICAgICAgIGNhc2Ugbm9k
ZS5vcGNvZGUKLSAgICAgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRpcyIsICJsb2FkcCIsICJs
b2FkcSIsICJsb2FkYiIsICJsb2FkYnMiLCAibG9hZGgiLCAibG9hZGhzIgotICAgICAgICAgICAg
ICAgIGxhYmVsUmVmID0gbm9kZS5vcGVyYW5kc1swXQotICAgICAgICAgICAgICAgIGlmIGxhYmVs
UmVmLmlzX2E/IExhYmVsUmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5u
ZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAiZ2xvYmFsYWRkciIsIFtMYWJlbFJlZmVyZW5j
ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCBsYWJlbFJlZi5sYWJlbCksIHRtcF0pCi0gICAgICAgICAg
ICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5vZGUub3Bj
b2RlLCBbQWRkcmVzcy5uZXcobm9kZS5jb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcobm9k
ZS5jb2RlT3JpZ2luLCBsYWJlbFJlZi5vZmZzZXQpKSwgbm9kZS5vcGVyYW5kc1sxXV0pCi0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKLSAg
ICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuZXdM
aXN0IDw8IG5vZGUKLSAgICAgICAgICAgIGVuZAotICAgICAgICBlbHNlCi0gICAgICAgICAgICBu
ZXdMaXN0IDw8IG5vZGUKLSAgICAgICAgZW5kCi0gICAgfQotICAgIG5ld0xpc3QKLWVuZAotCiAj
IFdvcmthcm91bmQgZm9yIENvcnRleC1BNTMgZXJyYXR1bSAoODM1NzY5KQogZGVmIGFybTY0Q29y
dGV4QTUzRml4ODM1NzY5KGxpc3QpCiAgICAgbmV3TGlzdCA9IFtdCkBAIC0zMjEsNyArMjk2LDYg
QEAgY2xhc3MgU2VxdWVuY2UKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VySGFyZEJyYW5jaE9w
czY0KHJlc3VsdCkKICAgICAgICAgcmVzdWx0ID0gcmlzY0xvd2VyU2hpZnRPcHMocmVzdWx0KQog
ICAgICAgICByZXN1bHQgPSBhcm02NExvd2VyTWFsZm9ybWVkTG9hZFN0b3JlQWRkcmVzc2VzKHJl
c3VsdCkKLSAgICAgICAgcmVzdWx0ID0gYXJtNjRMb3dlckxhYmVsUmVmZXJlbmNlcyhyZXN1bHQp
CiAgICAgICAgIHJlc3VsdCA9IHJpc2NMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhyZXN1bHQpIHsK
ICAgICAgICAgICAgIHwgbm9kZSwgYWRkcmVzcyB8CiAgICAgICAgICAgICBjYXNlIG5vZGUub3Bj
b2RlCkBAIC05MzAsMTUgKzkwNCw2IEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICAk
YXNtLnB1dFN0cigiI2lmIENQVShBUk02NF9DT1JURVhBNTMpIikKICAgICAgICAgICAgICRhc20u
cHV0cyAibm9wIgogICAgICAgICAgICAgJGFzbS5wdXRTdHIoIiNlbmRpZiIpCi0gICAgICAgIHdo
ZW4gImdsb2JhbGFkZHIiCi0gICAgICAgICAgICB1aWQgPSAkYXNtLm5ld1VJRAotICAgICAgICAg
ICAgJGFzbS5wdXRzICJMX29mZmxpbmVhc21fbG9oX2FkcnBfI3t1aWR9OiIKLSAgICAgICAgICAg
ICRhc20ucHV0cyAiYWRycCAje29wZXJhbmRzWzFdLmFybTY0T3BlcmFuZCg6cHRyKX0sICN7b3Bl
cmFuZHNbMF0uYXNtTGFiZWx9QEdPVFBBR0UiCi0gICAgICAgICAgICAkYXNtLnB1dHMgIkxfb2Zm
bGluZWFzbV9sb2hfbGRyXyN7dWlkfToiCi0gICAgICAgICAgICAkYXNtLnB1dHMgImxkciAje29w
ZXJhbmRzWzFdLmFybTY0T3BlcmFuZCg6cHRyKX0sIFsje29wZXJhbmRzWzFdLmFybTY0T3BlcmFu
ZCg6cHRyKX0sICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9QEdPVFBBR0VPRkZdIgotICAgICAgICAg
ICAgJGFzbS5kZWZlckFjdGlvbiB7Ci0gICAgICAgICAgICAgICAgJGFzbS5wdXRzICIubG9oIEFk
cnBMZHJHb3QgTF9vZmZsaW5lYXNtX2xvaF9hZHJwXyN7dWlkfSwgTF9vZmZsaW5lYXNtX2xvaF9s
ZHJfI3t1aWR9IgotICAgICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsb3dl
ckRlZmF1bHQKICAgICAgICAgZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9hc20ucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20u
cmIKaW5kZXggMDI0MDQ5YjY2MDY3NWM4N2M4MTFmYjVhZjEyZjlmYjA2MmY1NTcyMi4uOGQ3NjU2
NTFhZDIyMzExN2IxZjkxMjNhY2FhMzI3ZWZjMWZiM2QwMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FzbS5yYgpAQCAtNDYsOCArNDYsNiBAQCBjbGFzcyBBc3NlbWJsZXIKICAg
ICAgICAgQGNvZGVPcmlnaW4gPSBuaWwKICAgICAgICAgQG51bUxvY2FsTGFiZWxzID0gMAogICAg
ICAgICBAbnVtR2xvYmFsTGFiZWxzID0gMAotICAgICAgICBAZGVmZXJyZWRBY3Rpb25zID0gW10K
LSAgICAgICAgQGNvdW50ID0gMAogCiAgICAgICAgIEBuZXdsaW5lU3BhY2VyU3RhdGUgPSA6bm9u
ZQogICAgICAgICBAbGFzdGxhYmVsID0gIiIKQEAgLTc1LDIzICs3MywxMCBAQCBjbGFzcyBBc3Nl
bWJsZXIKICAgICAgICAgICAgIHB1dHNQcm9jRW5kSWZOZWVkZWQKICAgICAgICAgZW5kCiAgICAg
ICAgIHB1dHNMYXN0Q29tbWVudAotICAgICAgICBAZGVmZXJyZWRBY3Rpb25zLmVhY2ggewotICAg
ICAgICAgICAgfCBhY3Rpb24gfAotICAgICAgICAgICAgYWN0aW9uLmNhbGwoKQotICAgICAgICB9
CiAgICAgICAgIEBvdXRwLnB1dHMgIk9GRkxJTkVfQVNNX0VORCIgaWYgISRlbWl0V2luQXNtCiAg
ICAgICAgIEBzdGF0ZSA9IDpjcHAKICAgICBlbmQKICAgICAKLSAgICBkZWYgZGVmZXJBY3Rpb24o
JnByb2MpCi0gICAgICAgIEBkZWZlcnJlZEFjdGlvbnMgPDwgcHJvYwotICAgIGVuZAotICAgIAot
ICAgIGRlZiBuZXdVSUQKLSAgICAgICAgQGNvdW50ICs9IDEKLSAgICAgICAgQGNvdW50Ci0gICAg
ZW5kCi0gICAgCiAgICAgZGVmIGluQXNtCiAgICAgICAgIGVudGVyQXNtCiAgICAgICAgIHlpZWxk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlv
bnMucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIK
aW5kZXggOWRkNGRjNzA3OGUxNWE4OTZlNWM4ODMxNGY0YmEwYzcyNmZjZmMzMC4uYmJmY2U3MTkz
YjNjMzcwNTE3YTZlMTA4OWZkZWRiOGMyNjAxMWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgpAQCAtMjY3LDggKzI2Nyw3IEBAIEFS
TV9JTlNUUlVDVElPTlMgPQogQVJNNjRfSU5TVFJVQ1RJT05TID0KICAgICBbCiAgICAgICJwY3J0
b2FkZHIiLCAgICMgQWRkcmVzcyBmcm9tIFBDIHJlbGF0aXZlIG9mZnNldCAtIGFkciBpbnN0cnVj
dGlvbgotICAgICAibm9wRml4Q29ydGV4QTUzRXJyODM1NzY5IiwgIyBub3Agb24gQ29ydGV4LUE1
MyAobm90aGluZyBvdGhlcndpc2UpCi0gICAgICJnbG9iYWxhZGRyIgorICAgICAibm9wRml4Q29y
dGV4QTUzRXJyODM1NzY5IiAjIG5vcCBvbiBDb3J0ZXgtQTUzIChub3RoaW5nIG90aGVyd2lzZSkK
ICAgICBdCiAKIFJJU0NfSU5TVFJVQ1RJT05TID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKaW5kZXggZWUz
YWI5OTIxZTI4MGMzMjdjNDZhNWEyNGExMzNlNmNlNGJhZmJmMy4uM2ZhYjY5ZjBhZDVmZmQwZjk4
NzEyMjA5ZmVmMWVmNmVmYTU5NGIzOCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL2JtYWxsb2MvQ01ha2VMaXN0cy50eHQKQEAgLTgsMTMgKzgs
MTEgQEAgc2V0KGJtYWxsb2NfU09VUkNFUwogICAgIGJtYWxsb2MvQWxsb2NhdG9yLmNwcAogICAg
IGJtYWxsb2MvQXZhaWxhYmxlTWVtb3J5LmNwcAogICAgIGJtYWxsb2MvQ2FjaGUuY3BwCi0gICAg
Ym1hbGxvYy9DcnlwdG9SYW5kb20uY3BwCiAgICAgYm1hbGxvYy9EZWFsbG9jYXRvci5jcHAKICAg
ICBibWFsbG9jL0RlYnVnSGVhcC5jcHAKICAgICBibWFsbG9jL0Vudmlyb25tZW50LmNwcAogICAg
IGJtYWxsb2MvR2lnYWNhZ2UuY3BwCiAgICAgYm1hbGxvYy9IZWFwLmNwcAotICAgIGJtYWxsb2Mv
SGVhcEtpbmQuY3BwCiAgICAgYm1hbGxvYy9MYXJnZU1hcC5jcHAKICAgICBibWFsbG9jL0xvZ2dp
bmcuY3BwCiAgICAgYm1hbGxvYy9PYmplY3RUeXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY2NGZkOWYyNTlkNDE5ZmY0
NjZhNWJlNTQ4MmFjMjVjMTcxZDkyYmUuLmM5MDc2MGEzZGI1YzYwNjE0MzMyOWIwYmZjODY5YWU0
YzcwNmQyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE1LDkgKzE1LDYgQEAKIAkJMEY1QkYxNTIxRjIyRTE1NzAwMjlEOTFE
IC8qIFNjYXZlbmdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjVCRjE1MDFGMjJFMTU3MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmNwcCAqLzsgfTsK
IAkJMEY1QkYxNTMxRjIyRTE1NzAwMjlEOTFEIC8qIFNjYXZlbmdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1QkYxNTExRjIyRTE1NzAwMjlEOTFE
IC8qIFNjYXZlbmdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGNUJGMTczMUYyM0M1NzEwMDI5RDkxRCAvKiBCRXhwb3J0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCRjE3MjFGMjNDNTcxMDAy
OUQ5MUQgLyogQkV4cG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTBGNzRCOTNFMUY4OTcxM0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzRCOTNDMUY4
OTcxM0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uaCAqLzsgfTsKLQkJMEY3NEI5M0YxRjg5NzEz
RTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc0QjkzRDFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFu
ZG9tLmNwcCAqLzsgfTsKLQkJMEZENTU3MzMxRjdFREI3QjAwQjFGMEEzIC8qIEhlYXBLaW5kLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDU1NzMy
MUY3RURCN0IwMEIxRjBBMyAvKiBIZWFwS2luZC5jcHAgKi87IH07CiAJCTE0MDAyNzQ5MThGODlD
MTMwMDExNUM5NyAvKiBIZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNERBMzIwQzE4ODc1QjA5MDA3MjY5RTAgLyogSGVhcC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MDAyNzRBMThGODlDMjMw
MDExNUM5NyAvKiBWTUhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0NEY3QkZDMThCRkM1MTcwMDM1MzdGMyAvKiBWTUhlYXAuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDBGQTAwMzE5Q0U0MjlD
MDBGRkQzQzggLyogQnVtcFJhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNDBGQTAwMjE5Q0U0MjlDMDBGRkQzQzggLyogQnVtcFJhbmdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkzLDkgKzkw
LDYgQEAKIAkJMEY1QkYxNTAxRjIyRTE1NzAwMjlEOTFEIC8qIFNjYXZlbmdlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBTY2F2ZW5nZXIuY3BwOyBwYXRoID0gYm1hbGxvYy9TY2F2ZW5nZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVCRjE1MTFGMjJFMTU3MDAyOUQ5MUQg
LyogU2NhdmVuZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjYXZlbmdlci5oOyBwYXRoID0gYm1hbGxv
Yy9TY2F2ZW5nZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QkYxNzIxRjIz
QzU3MTAwMjlEOTFEIC8qIEJFeHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQkV4cG9ydC5oOyBwYXRo
ID0gYm1hbGxvYy9CRXhwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNzRC
OTNDMUY4OTcxM0UwMEI5MzVEMyAvKiBDcnlwdG9SYW5kb20uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQ3J5cHRvUmFuZG9tLmg7IHBhdGggPSBibWFsbG9jL0NyeXB0b1JhbmRv
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjc0QjkzRDFGODk3MTNFMDBCOTM1
RDMgLyogQ3J5cHRvUmFuZG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IENyeXB0b1JhbmRvbS5jcHA7IHBhdGggPSBibWFsbG9jL0NyeXB0b1JhbmRvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRDU1NzMyMUY3RURCN0IwMEIxRjBBMyAvKiBI
ZWFwS2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIZWFwS2lu
ZC5jcHA7IHBhdGggPSBibWFsbG9jL0hlYXBLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTQwRkEwMDIxOUNFNDI5QzAwRkZEM0M4IC8qIEJ1bXBSYW5nZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCdW1wUmFuZ2UuaDsgcGF0aCA9IGJtYWxsb2MvQnVt
cFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MEZBMDA0MTlDRTRCNjgw
MEZGRDNDOCAvKiBMaW5lTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTGluZU1ldGFkYXRhLmg7IHBhdGggPSBibWFsbG9jL0xpbmVNZXRhZGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDEwNUU4MzE4RTE0Mzc0MDAzQTEwNkUgLyogT2JqZWN0
VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBPYmplY3RUeXBl
LmNwcDsgcGF0aCA9IGJtYWxsb2MvT2JqZWN0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yOTIsMTAgKzI4Niw3IEBACiAJCQkJMEY1QkYxNzIxRjIzQzU3MTAwMjlEOTFE
IC8qIEJFeHBvcnQuaCAqLywKIAkJCQkxNDEzRTQ2MDE4OURDRTFFMDA1NDZENjggLyogQklubGlu
ZS5oICovLAogCQkJCTE0QzkxOUM4MThGQ0M1OUYwMDI4REI0MyAvKiBCUGxhdGZvcm0uaCAqLywK
LQkJCQkwRjc0QjkzRDFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmNwcCAqLywKLQkJ
CQkwRjc0QjkzQzFGODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmggKi8sCiAJCQkJMTRE
OURCNDUxN0YyNDQ3MTAwRUFBQjc5IC8qIEZpeGVkVmVjdG9yLmggKi8sCi0JCQkJMEZENTU3MzIx
RjdFREI3QjAwQjFGMEEzIC8qIEhlYXBLaW5kLmNwcCAqLywKIAkJCQkwRjVCRjE0NjFGMjJBOEIx
MDAyOUQ5MUQgLyogSGVhcEtpbmQuaCAqLywKIAkJCQkxNDFEOUFGRjFDOEU1MUMwMDAwQUJCQTAg
LyogTGlzdC5oICovLAogCQkJCTQ0MjZFMjdFMUM4MzhFRTAwMDhFQjA0MiAvKiBMb2dnaW5nLmNw
cCAqLywKQEAgLTM0OCw3ICszMzksNiBAQAogCQkJCTE0QzkxOUM5MThGQ0M1OUYwMDI4REI0MyAv
KiBCUGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0MjZFMjgzMUM4Mzk1NDcwMDhFQjA0
MiAvKiBCU29mdExpbmtpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3ODlDMThGNDhENEEw
MDk1MDcwMiAvKiBCdW1wQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjc0QjkzRTFG
ODk3MTNFMDBCOTM1RDMgLyogQ3J5cHRvUmFuZG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDBG
QTAwMzE5Q0U0MjlDMDBGRkQzQzggLyogQnVtcFJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NERENzg5OTE4RjQ4RDRBMDA5NTA3MDIgLyogQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
N0RDNkUzMUNBNUI3MEIwMDcyNEU4RCAvKiBDaHVuay5oIGluIEhlYWRlcnMgKi8sCkBAIC00NjYs
NyArNDU2LDYgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKIAkJCQkwRjVCRjE1MjFGMjJFMTU3MDAyOUQ5MUQgLyogU2NhdmVuZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTBGRDU1NzMzMUY3RURCN0IwMEIxRjBBMyAvKiBIZWFwS2luZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxNEYyNzFDMzE4RUEzOTc4MDA4QzE1MkYgLyogQWxsb2NhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTY1OTlDNUNDMUVDM0YxNTkwMEEyRjdCQiAvKiBBdmFpbGFi
bGVNZW1vcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRGMjcxQzQxOEVBMzk3QjAwOEMxNTJG
IC8qIENhY2hlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDc0LDcgKzQ2Myw2IEBACiAJCQkJMTQy
QjQ0MzYxRTI4MzlFNzAwMURBNkU5IC8qIERlYnVnSGVhcC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDg5NUQ5MTFBM0EzMTlDMDAwNjIzNUQgLyogRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTRGMjcxQzcxOEVBMzk5MDAwOEMxNTJGIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJMEY3NEI5M0YxRjg5NzEzRTAwQjkzNUQzIC8qIENyeXB0b1JhbmRvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjVCRjE0RjFGMjJERUFGMDAyOUQ5MUQgLyogR2lnYWNhZ2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0QzA3RjQxQzdCNzAyNjAwNTFCQjZBIC8qIExhcmdlTWFw
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ0MjZFMjgwMUM4MzhFRTAwMDhFQjA0MiAvKiBMb2dn
aW5nLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9CQXNzZXJ0LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JBc3NlcnQuaAppbmRleCA2MTk0
ZTE4OWYzNjAwZWRmN2IwNjEzM2ViY2Y5NmVhOGM3YzkzMjAyLi5lMTYyYWM0YWU4MTViZWNkYjdl
ZWE4NWU5ZGU1Yzk5YWE5N2I2NzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0JBc3NlcnQuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JBc3NlcnQuaApAQCAtNTYs
MTQgKzU2LDE0IEBACiAKICNkZWZpbmUgQkNSQVNIKCkgZG8geyBcCiAgICAgKihpbnQqKTB4YmJh
ZGJlZWYgPSAwOyBcCi19IHdoaWxlICgwKQorfSB3aGlsZSAoMCk7CiAKICNlbmRpZiAvLyBkZWZp
bmVkKE5ERUJVRykgJiYgQk9TKERBUldJTikKIAogI2RlZmluZSBCQVNTRVJUX0lNUEwoeCkgZG8g
eyBcCiAgICAgaWYgKCEoeCkpIFwKICAgICAgICAgQkNSQVNIKCk7IFwKLX0gd2hpbGUgKDApCit9
IHdoaWxlICgwKTsKIAogI2RlZmluZSBSRUxFQVNFX0JBU1NFUlQoeCkgQkFTU0VSVF9JTVBMKHgp
CiAKQEAgLTgyLDcgKzgyLDcgQEAKICAgICAgICAgQkxPR19FUlJPUigiQVNTRVJUSU9OIEZBSUxF
RDogIiAjeCAiIDo6ICIgZm9ybWF0LCAjI19fVkFfQVJHU19fKTsgXAogICAgICAgICBCQ1JBU0go
KTsgXAogICAgIH0gXAotfSB3aGlsZSAoMCkKK30gd2hpbGUgKDApOwogI2VuZGlmCiAKICNkZWZp
bmUgVU5VU0VEKHgpICgodm9pZCl4KQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9DYWNoZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NhY2hlLmNwcAppbmRleCBjOTdi
OTA5NWZiNjczYjdmNzQyNDcxZjY4MTg2OWNmYzRjMWE5MzUzLi4yNmY0MjAyZWU1ZGQ1MjdhOTMy
OGVhNGQ2ZDlmMmNiYjNmYmY5MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NhY2hlLmNwcApAQCAtMzUs
OCArMzUsNiBAQCB2b2lkIENhY2hlOjpzY2F2ZW5nZShIZWFwS2luZCBoZWFwS2luZCkKICAgICBQ
ZXJIZWFwS2luZDxDYWNoZT4qIGNhY2hlcyA9IFBlclRocmVhZDxQZXJIZWFwS2luZDxDYWNoZT4+
OjpnZXRGYXN0Q2FzZSgpOwogICAgIGlmICghY2FjaGVzKQogICAgICAgICByZXR1cm47Ci0gICAg
aWYgKCFpc0FjdGl2ZUhlYXBLaW5kKGhlYXBLaW5kKSkKLSAgICAgICAgcmV0dXJuOwogCiAgICAg
Y2FjaGVzLT5hdChoZWFwS2luZCkuYWxsb2NhdG9yKCkuc2NhdmVuZ2UoKTsKICAgICBjYWNoZXMt
PmF0KGhlYXBLaW5kKS5kZWFsbG9jYXRvcigpLnNjYXZlbmdlKCk7CkBAIC01MCwyNyArNDgsMjcg
QEAgQ2FjaGU6OkNhY2hlKEhlYXBLaW5kIGhlYXBLaW5kKQogCiBCTk9fSU5MSU5FIHZvaWQqIENh
Y2hlOjp0cnlBbGxvY2F0ZVNsb3dDYXNlTnVsbENhY2hlKEhlYXBLaW5kIGhlYXBLaW5kLCBzaXpl
X3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gUGVyVGhyZWFkPFBlckhlYXBLaW5kPENhY2hlPj46Omdl
dFNsb3dDYXNlKCktPmF0KG1hcFRvQWN0aXZlSGVhcEtpbmQoaGVhcEtpbmQpKS5hbGxvY2F0b3Io
KS50cnlBbGxvY2F0ZShzaXplKTsKKyAgICByZXR1cm4gUGVyVGhyZWFkPFBlckhlYXBLaW5kPENh
Y2hlPj46OmdldFNsb3dDYXNlKCktPmF0KGhlYXBLaW5kKS5hbGxvY2F0b3IoKS50cnlBbGxvY2F0
ZShzaXplKTsKIH0KIAogQk5PX0lOTElORSB2b2lkKiBDYWNoZTo6YWxsb2NhdGVTbG93Q2FzZU51
bGxDYWNoZShIZWFwS2luZCBoZWFwS2luZCwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIFBl
clRocmVhZDxQZXJIZWFwS2luZDxDYWNoZT4+OjpnZXRTbG93Q2FzZSgpLT5hdChtYXBUb0FjdGl2
ZUhlYXBLaW5kKGhlYXBLaW5kKSkuYWxsb2NhdG9yKCkuYWxsb2NhdGUoc2l6ZSk7CisgICAgcmV0
dXJuIFBlclRocmVhZDxQZXJIZWFwS2luZDxDYWNoZT4+OjpnZXRTbG93Q2FzZSgpLT5hdChoZWFw
S2luZCkuYWxsb2NhdG9yKCkuYWxsb2NhdGUoc2l6ZSk7CiB9CiAKIEJOT19JTkxJTkUgdm9pZCog
Q2FjaGU6OmFsbG9jYXRlU2xvd0Nhc2VOdWxsQ2FjaGUoSGVhcEtpbmQgaGVhcEtpbmQsIHNpemVf
dCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBQZXJUaHJlYWQ8UGVySGVh
cEtpbmQ8Q2FjaGU+Pjo6Z2V0U2xvd0Nhc2UoKS0+YXQobWFwVG9BY3RpdmVIZWFwS2luZChoZWFw
S2luZCkpLmFsbG9jYXRvcigpLmFsbG9jYXRlKGFsaWdubWVudCwgc2l6ZSk7CisgICAgcmV0dXJu
IFBlclRocmVhZDxQZXJIZWFwS2luZDxDYWNoZT4+OjpnZXRTbG93Q2FzZSgpLT5hdChoZWFwS2lu
ZCkuYWxsb2NhdG9yKCkuYWxsb2NhdGUoYWxpZ25tZW50LCBzaXplKTsKIH0KIAogQk5PX0lOTElO
RSB2b2lkIENhY2hlOjpkZWFsbG9jYXRlU2xvd0Nhc2VOdWxsQ2FjaGUoSGVhcEtpbmQgaGVhcEtp
bmQsIHZvaWQqIG9iamVjdCkKIHsKLSAgICBQZXJUaHJlYWQ8UGVySGVhcEtpbmQ8Q2FjaGU+Pjo6
Z2V0U2xvd0Nhc2UoKS0+YXQobWFwVG9BY3RpdmVIZWFwS2luZChoZWFwS2luZCkpLmRlYWxsb2Nh
dG9yKCkuZGVhbGxvY2F0ZShvYmplY3QpOworICAgIFBlclRocmVhZDxQZXJIZWFwS2luZDxDYWNo
ZT4+OjpnZXRTbG93Q2FzZSgpLT5hdChoZWFwS2luZCkuZGVhbGxvY2F0b3IoKS5kZWFsbG9jYXRl
KG9iamVjdCk7CiB9CiAKIEJOT19JTkxJTkUgdm9pZCogQ2FjaGU6OnJlYWxsb2NhdGVTbG93Q2Fz
ZU51bGxDYWNoZShIZWFwS2luZCBoZWFwS2luZCwgdm9pZCogb2JqZWN0LCBzaXplX3QgbmV3U2l6
ZSkKIHsKLSAgICByZXR1cm4gUGVyVGhyZWFkPFBlckhlYXBLaW5kPENhY2hlPj46OmdldFNsb3dD
YXNlKCktPmF0KG1hcFRvQWN0aXZlSGVhcEtpbmQoaGVhcEtpbmQpKS5hbGxvY2F0b3IoKS5yZWFs
bG9jYXRlKG9iamVjdCwgbmV3U2l6ZSk7CisgICAgcmV0dXJuIFBlclRocmVhZDxQZXJIZWFwS2lu
ZDxDYWNoZT4+OjpnZXRTbG93Q2FzZSgpLT5hdChoZWFwS2luZCkuYWxsb2NhdG9yKCkucmVhbGxv
Y2F0ZShvYmplY3QsIG5ld1NpemUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYg
LS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NhY2hlLmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0NhY2hlLmgKaW5kZXggYzQxNGVjODdhZDhlNGMyZDI0NzkyNTcwNDc3NjE0Zjc1ZDM4
YTZmYS4uZjI3YzA0ZGY4OTRjN2JkNzA1Yjk1OTRlMzMyZDk4MTYwNTRjZDExOSAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DYWNoZS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvQ2FjaGUuaApAQCAtNjgsNyArNjgsNyBAQCBpbmxpbmUgdm9pZCogQ2FjaGU6OnRyeUFs
bG9jYXRlKEhlYXBLaW5kIGhlYXBLaW5kLCBzaXplX3Qgc2l6ZSkKICAgICBQZXJIZWFwS2luZDxD
YWNoZT4qIGNhY2hlcyA9IFBlclRocmVhZDxQZXJIZWFwS2luZDxDYWNoZT4+OjpnZXRGYXN0Q2Fz
ZSgpOwogICAgIGlmICghY2FjaGVzKQogICAgICAgICByZXR1cm4gdHJ5QWxsb2NhdGVTbG93Q2Fz
ZU51bGxDYWNoZShoZWFwS2luZCwgc2l6ZSk7Ci0gICAgcmV0dXJuIGNhY2hlcy0+YXQobWFwVG9B
Y3RpdmVIZWFwS2luZEFmdGVyRW5zdXJpbmdHaWdhY2FnZShoZWFwS2luZCkpLmFsbG9jYXRvcigp
LnRyeUFsbG9jYXRlKHNpemUpOworICAgIHJldHVybiBjYWNoZXMtPmF0KGhlYXBLaW5kKS5hbGxv
Y2F0b3IoKS50cnlBbGxvY2F0ZShzaXplKTsKIH0KIAogaW5saW5lIHZvaWQqIENhY2hlOjphbGxv
Y2F0ZShIZWFwS2luZCBoZWFwS2luZCwgc2l6ZV90IHNpemUpCkBAIC03Niw3ICs3Niw3IEBAIGlu
bGluZSB2b2lkKiBDYWNoZTo6YWxsb2NhdGUoSGVhcEtpbmQgaGVhcEtpbmQsIHNpemVfdCBzaXpl
KQogICAgIFBlckhlYXBLaW5kPENhY2hlPiogY2FjaGVzID0gUGVyVGhyZWFkPFBlckhlYXBLaW5k
PENhY2hlPj46OmdldEZhc3RDYXNlKCk7CiAgICAgaWYgKCFjYWNoZXMpCiAgICAgICAgIHJldHVy
biBhbGxvY2F0ZVNsb3dDYXNlTnVsbENhY2hlKGhlYXBLaW5kLCBzaXplKTsKLSAgICByZXR1cm4g
Y2FjaGVzLT5hdChtYXBUb0FjdGl2ZUhlYXBLaW5kQWZ0ZXJFbnN1cmluZ0dpZ2FjYWdlKGhlYXBL
aW5kKSkuYWxsb2NhdG9yKCkuYWxsb2NhdGUoc2l6ZSk7CisgICAgcmV0dXJuIGNhY2hlcy0+YXQo
aGVhcEtpbmQpLmFsbG9jYXRvcigpLmFsbG9jYXRlKHNpemUpOwogfQogCiBpbmxpbmUgdm9pZCog
Q2FjaGU6OnRyeUFsbG9jYXRlKEhlYXBLaW5kIGhlYXBLaW5kLCBzaXplX3QgYWxpZ25tZW50LCBz
aXplX3Qgc2l6ZSkKQEAgLTg0LDcgKzg0LDcgQEAgaW5saW5lIHZvaWQqIENhY2hlOjp0cnlBbGxv
Y2F0ZShIZWFwS2luZCBoZWFwS2luZCwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUKICAg
ICBQZXJIZWFwS2luZDxDYWNoZT4qIGNhY2hlcyA9IFBlclRocmVhZDxQZXJIZWFwS2luZDxDYWNo
ZT4+OjpnZXRGYXN0Q2FzZSgpOwogICAgIGlmICghY2FjaGVzKQogICAgICAgICByZXR1cm4gYWxs
b2NhdGVTbG93Q2FzZU51bGxDYWNoZShoZWFwS2luZCwgYWxpZ25tZW50LCBzaXplKTsKLSAgICBy
ZXR1cm4gY2FjaGVzLT5hdChtYXBUb0FjdGl2ZUhlYXBLaW5kQWZ0ZXJFbnN1cmluZ0dpZ2FjYWdl
KGhlYXBLaW5kKSkuYWxsb2NhdG9yKCkudHJ5QWxsb2NhdGUoYWxpZ25tZW50LCBzaXplKTsKKyAg
ICByZXR1cm4gY2FjaGVzLT5hdChoZWFwS2luZCkuYWxsb2NhdG9yKCkudHJ5QWxsb2NhdGUoYWxp
Z25tZW50LCBzaXplKTsKIH0KIAogaW5saW5lIHZvaWQqIENhY2hlOjphbGxvY2F0ZShIZWFwS2lu
ZCBoZWFwS2luZCwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCkBAIC05Miw3ICs5Miw3
IEBAIGlubGluZSB2b2lkKiBDYWNoZTo6YWxsb2NhdGUoSGVhcEtpbmQgaGVhcEtpbmQsIHNpemVf
dCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQogICAgIFBlckhlYXBLaW5kPENhY2hlPiogY2FjaGVz
ID0gUGVyVGhyZWFkPFBlckhlYXBLaW5kPENhY2hlPj46OmdldEZhc3RDYXNlKCk7CiAgICAgaWYg
KCFjYWNoZXMpCiAgICAgICAgIHJldHVybiBhbGxvY2F0ZVNsb3dDYXNlTnVsbENhY2hlKGhlYXBL
aW5kLCBhbGlnbm1lbnQsIHNpemUpOwotICAgIHJldHVybiBjYWNoZXMtPmF0KG1hcFRvQWN0aXZl
SGVhcEtpbmRBZnRlckVuc3VyaW5nR2lnYWNhZ2UoaGVhcEtpbmQpKS5hbGxvY2F0b3IoKS5hbGxv
Y2F0ZShhbGlnbm1lbnQsIHNpemUpOworICAgIHJldHVybiBjYWNoZXMtPmF0KGhlYXBLaW5kKS5h
bGxvY2F0b3IoKS5hbGxvY2F0ZShhbGlnbm1lbnQsIHNpemUpOwogfQogCiBpbmxpbmUgdm9pZCBD
YWNoZTo6ZGVhbGxvY2F0ZShIZWFwS2luZCBoZWFwS2luZCwgdm9pZCogb2JqZWN0KQpAQCAtMTAw
LDcgKzEwMCw3IEBAIGlubGluZSB2b2lkIENhY2hlOjpkZWFsbG9jYXRlKEhlYXBLaW5kIGhlYXBL
aW5kLCB2b2lkKiBvYmplY3QpCiAgICAgUGVySGVhcEtpbmQ8Q2FjaGU+KiBjYWNoZXMgPSBQZXJU
aHJlYWQ8UGVySGVhcEtpbmQ8Q2FjaGU+Pjo6Z2V0RmFzdENhc2UoKTsKICAgICBpZiAoIWNhY2hl
cykKICAgICAgICAgcmV0dXJuIGRlYWxsb2NhdGVTbG93Q2FzZU51bGxDYWNoZShoZWFwS2luZCwg
b2JqZWN0KTsKLSAgICByZXR1cm4gY2FjaGVzLT5hdChtYXBUb0FjdGl2ZUhlYXBLaW5kQWZ0ZXJF
bnN1cmluZ0dpZ2FjYWdlKGhlYXBLaW5kKSkuZGVhbGxvY2F0b3IoKS5kZWFsbG9jYXRlKG9iamVj
dCk7CisgICAgcmV0dXJuIGNhY2hlcy0+YXQoaGVhcEtpbmQpLmRlYWxsb2NhdG9yKCkuZGVhbGxv
Y2F0ZShvYmplY3QpOwogfQogCiBpbmxpbmUgdm9pZCogQ2FjaGU6OnJlYWxsb2NhdGUoSGVhcEtp
bmQgaGVhcEtpbmQsIHZvaWQqIG9iamVjdCwgc2l6ZV90IG5ld1NpemUpCkBAIC0xMDgsNyArMTA4
LDcgQEAgaW5saW5lIHZvaWQqIENhY2hlOjpyZWFsbG9jYXRlKEhlYXBLaW5kIGhlYXBLaW5kLCB2
b2lkKiBvYmplY3QsIHNpemVfdCBuZXdTaXplKQogICAgIFBlckhlYXBLaW5kPENhY2hlPiogY2Fj
aGVzID0gUGVyVGhyZWFkPFBlckhlYXBLaW5kPENhY2hlPj46OmdldEZhc3RDYXNlKCk7CiAgICAg
aWYgKCFjYWNoZXMpCiAgICAgICAgIHJldHVybiByZWFsbG9jYXRlU2xvd0Nhc2VOdWxsQ2FjaGUo
aGVhcEtpbmQsIG9iamVjdCwgbmV3U2l6ZSk7Ci0gICAgcmV0dXJuIGNhY2hlcy0+YXQobWFwVG9B
Y3RpdmVIZWFwS2luZEFmdGVyRW5zdXJpbmdHaWdhY2FnZShoZWFwS2luZCkpLmFsbG9jYXRvcigp
LnJlYWxsb2NhdGUob2JqZWN0LCBuZXdTaXplKTsKKyAgICByZXR1cm4gY2FjaGVzLT5hdChoZWFw
S2luZCkuYWxsb2NhdG9yKCkucmVhbGxvY2F0ZShvYmplY3QsIG5ld1NpemUpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Ny
eXB0b1JhbmRvbS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NyeXB0b1JhbmRvbS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MDNkZDJmNTRhYTUyNDFjNWNlZWRiMTBi
ZDJmNmRmZThhMTYwMmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DcnlwdG9SYW5kb20uY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW5jbHVkZSAiQ3J5cHRvUmFuZG9tLmgiCi0KLSNpbmNsdWRlICJCQXNzZXJ0
LmgiCi0jaW5jbHVkZSAiQlBsYXRmb3JtLmgiCi0jaW5jbHVkZSA8bXV0ZXg+Ci0KLSNpZiAhQk9T
KERBUldJTikKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVk
ZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotI2lmIEJPUyhEQVJXSU4pCi10eXBlZGVmIHN0cnVjdCBf
X0NDUmFuZG9tKiBDQ1JhbmRvbVJlZjsKLQotZXh0ZXJuICJDIiB7Ci1leHRlcm4gY29uc3QgQ0NS
YW5kb21SZWYga0NDUmFuZG9tRGVmYXVsdDsKLWludCBDQ1JhbmRvbUNvcHlCeXRlcyhDQ1JhbmRv
bVJlZiBybmQsIHZvaWQgKmJ5dGVzLCBzaXplX3QgY291bnQpOwotfQotI2VuZGlmCi0KLW5hbWVz
cGFjZSBibWFsbG9jIHsKLQotdm9pZCBjcnlwdG9SYW5kb20odW5zaWduZWQgY2hhciogYnVmZmVy
LCBzaXplX3QgbGVuZ3RoKQotewotI2lmIEJPUyhEQVJXSU4pCi0gICAgUkVMRUFTRV9CQVNTRVJU
KCFDQ1JhbmRvbUNvcHlCeXRlcyhrQ0NSYW5kb21EZWZhdWx0LCBidWZmZXIsIGxlbmd0aCkpOwot
I2Vsc2UKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RhdGljIGlu
dCBmZDsKLSAgICBzdGQ6OmNhbGxfb25jZSgKLSAgICAgICAgb25jZUZsYWcsCi0gICAgICAgIFtd
IHsKLSAgICAgICAgICAgIGludCByZXQgPSAwOwotICAgICAgICAgICAgZG8gewotICAgICAgICAg
ICAgICAgIHJldCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZLCAwKTsKLSAgICAgICAg
ICAgIH0gd2hpbGUgKHJldCA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7Ci0gICAgICAgICAgICBS
RUxFQVNFX0JBU1NFUlQocmV0ID49IDApOwotICAgICAgICAgICAgZmQgPSByZXQ7Ci0gICAgICAg
IH0pOwotICAgIHNzaXplX3QgYW1vdW50UmVhZCA9IDA7Ci0gICAgd2hpbGUgKHN0YXRpY19jYXN0
PHNpemVfdD4oYW1vdW50UmVhZCkgPCBsZW5ndGgpIHsKLSAgICAgICAgc3NpemVfdCBjdXJyZW50
UmVhZCA9IHJlYWQoZmQsIGJ1ZmZlciArIGFtb3VudFJlYWQsIGxlbmd0aCAtIGFtb3VudFJlYWQp
OwotICAgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBib3RoIEVBR0FJTiBhbmQgRUlOVFIg
c2luY2Ugb24gc29tZSBzeXN0ZW1zIC9kZXYvdXJhbmRvbQotICAgICAgICAvLyBpcyBibG9ja2lu
ZyBhbmQgb24gb3RoZXJzIGl0IGlzIG5vbi1ibG9ja2luZy4KLSAgICAgICAgaWYgKGN1cnJlbnRS
ZWFkID09IC0xKQotICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKGVycm5vID09IEVBR0FJTiB8
fCBlcnJubyA9PSBFSU5UUik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFtb3VudFJlYWQg
Kz0gY3VycmVudFJlYWQ7Ci0gICAgfQotI2VuZGlmCi19Ci0KLX0gLy8gbmFtZXNwYWNlIGJtYWxs
b2MKLQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DcnlwdG9SYW5kb20uaCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRvUmFuZG9tLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE2Y2FjNWYwNmY3MzQ0ZGM2YmQ2YjIzODUxODRlNTJhOGQ1MTYyMzguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9DcnlwdG9SYW5kb20uaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0KLW5hbWVz
cGFjZSBibWFsbG9jIHsKLQotdm9pZCBjcnlwdG9SYW5kb20odW5zaWduZWQgY2hhciogYnVmZmVy
LCBzaXplX3QgbGVuZ3RoKTsKLQotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0dpZ2FjYWdlLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCmlu
ZGV4IDZhNzcyODI1ZjcwZmUwMTE4MmQ5N2EyNmFmMDY4OGQ2MTE0ZDBkYTEuLjQ2M2VmMTYwNjM1
OWY5NWZhZThiNTJmMGU4NzExNDE2MzVjZTg3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvR2lnYWNhZ2UuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNh
Z2UuY3BwCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbmNsdWRlICJHaWdhY2FnZS5oIgogCi0jaW5j
bHVkZSAiQ3J5cHRvUmFuZG9tLmgiCiAjaW5jbHVkZSAiRW52aXJvbm1lbnQuaCIKICNpbmNsdWRl
ICJQZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiVk1BbGxvY2F0ZS5oIgpAQCAtMzQsMjQgKzMzLDEy
IEBACiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1ZGUgPG11dGV4PgogCi0jaWYgQkNQVShBUk02
NCkKLS8vIEZJWE1FOiBUaGVyZSBpcyBubyBnb29kIHJlYXNvbiBmb3IgQVJNNjQgdG8gYmUgc3Bl
Y2lhbC4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc2MDUK
LSNkZWZpbmUgR0lHQUNBR0VfUlVOV0FZIDAKLSNlbHNlCi0vLyBGSVhNRTogQ29uc2lkZXIgbWFr
aW5nIHRoaXMgMzJHQiwgaW4gY2FzZSB1bnNpZ25lZCAzMi1iaXQgaW5kaWNlcyBmaW5kIHRoZWly
IHdheSBpbnRvIGluZGV4ZWQgYWNjZXNzZXMuCi0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1MDYyCi0jZGVmaW5lIEdJR0FDQUdFX1JVTldBWSAoMTZsbHUgKiAx
MDI0ICogMTAyNCAqIDEwMjQpCi0jZW5kaWYKLQogY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbR0lH
QUNBR0VfQkFTRV9QVFJTX1NJWkVdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoR0lHQUNBR0VfQkFT
RV9QVFJTX1NJWkUpKSk7CiAKIHVzaW5nIG5hbWVzcGFjZSBibWFsbG9jOwogCiBuYW1lc3BhY2Ug
R2lnYWNhZ2UgewogCi1ib29sIGdfd2FzRW5hYmxlZDsKLQogbmFtZXNwYWNlIHsKIAogYm9vbCBz
X2lzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZDsKQEAgLTgyLDYgKzY5LDggQEAg
cHVibGljOgogICAgIH0KIH07CiAKK30gLy8gYW5vbnltb3VzIG5hbWVzcGNlCisKIHN0cnVjdCBD
YWxsYmFjayB7CiAgICAgQ2FsbGJhY2soKSB7IH0KICAgICAKQEAgLTEwMSw4ICs5MCw2IEBAIHN0
cnVjdCBQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tzIHsKICAgICBWZWN0b3I8Q2FsbGJhY2s+IGNh
bGxiYWNrczsKIH07CiAKLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCiB2b2lkIGVuc3VyZUdp
Z2FjYWdlKCkKIHsKICNpZiBHSUdBQ0FHRV9FTkFCTEVECkBAIC0xMTMsNjEgKzEwMCwyMCBAQCB2
b2lkIGVuc3VyZUdpZ2FjYWdlKCkKICAgICAgICAgICAgIGlmICghc2hvdWxkQmVFbmFibGVkKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBLaW5k
IHNodWZmbGVkS2luZHNbbnVtS2luZHNdOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bUtpbmRzOyArK2kpCi0gICAgICAgICAgICAgICAgc2h1ZmZsZWRLaW5kc1tpXSA9
IHN0YXRpY19jYXN0PEtpbmQ+KGkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBXZSBq
dXN0IGdvIGFoZWFkIGFuZCBhc3N1bWUgdGhhdCA2NCBiaXRzIGlzIGVub3VnaCByYW5kb21uZXNz
LiBUaGF0J3MgdHJpdmlhbGx5IHRydWUgcmlnaHQKLSAgICAgICAgICAgIC8vIG5vdywgYnV0IHdv
dWxkIHN0b3AgYmVpbmcgdHJ1ZSBpZiB3ZSB3ZW50IGNyYXp5IHdpdGggZ2lnYWNhZ2VzLiBCYXNl
ZCBvbiBteSBtYXRoLCAyMSBpcyB0aGUKLSAgICAgICAgICAgIC8vIGxhcmdlc3QgdmFsdWUgb2Yg
biBzbyB0aGF0IG4hIDw9IDJeNjQuCi0gICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KG51bUtpbmRz
IDw9IDIxLCAidG9vIG1hbnkga2luZHMiKTsKLSAgICAgICAgICAgIHVpbnQ2NF90IHJhbmRvbTsK
LSAgICAgICAgICAgIGNyeXB0b1JhbmRvbShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIq
PigmcmFuZG9tKSwgc2l6ZW9mKHJhbmRvbSkpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbnVtS2luZHM7IGktLTspIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaW1pdCA9IGkg
KyAxOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGogPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cmFuZG9tICUgbGltaXQpOwotICAgICAgICAgICAgICAgIHJhbmRvbSAvPSBsaW1pdDsKLSAgICAg
ICAgICAgICAgICBzdGQ6OnN3YXAoc2h1ZmZsZWRLaW5kc1tpXSwgc2h1ZmZsZWRLaW5kc1tqXSk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8gYWxpZ25UbyA9IFtdIChLaW5kIGtp
bmQsIHNpemVfdCB0b3RhbFNpemUpIC0+IHNpemVfdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25tZW50KGtpbmQpLCB0b3RhbFNpemUpOwotICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgIGF1dG8gYnVtcCA9IFtdIChLaW5kIGtpbmQsIHNpemVfdCB0
b3RhbFNpemUpIC0+IHNpemVfdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsU2l6ZSAr
IHNpemUoa2luZCk7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBz
aXplX3QgdG90YWxTaXplID0gMDsKLSAgICAgICAgICAgIHNpemVfdCBtYXhBbGlnbm1lbnQgPSAw
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKEtpbmQga2luZCA6IHNodWZmbGVkS2lu
ZHMpIHsKLSAgICAgICAgICAgICAgICB0b3RhbFNpemUgPSBidW1wKGtpbmQsIGFsaWduVG8oa2lu
ZCwgdG90YWxTaXplKSk7Ci0gICAgICAgICAgICAgICAgbWF4QWxpZ25tZW50ID0gc3RkOjptYXgo
bWF4QWxpZ25tZW50LCBhbGlnbm1lbnQoa2luZCkpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgdG90YWxTaXplICs9IEdJR0FDQUdFX1JVTldBWTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgLy8gRklYTUU6IFJhbmRvbWl6ZSB3aGVyZSB0aGlzIGdvZXMuCi0gICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MjQ1Ci0gICAgICAgICAg
ICB2b2lkKiBiYXNlID0gdHJ5Vk1BbGxvY2F0ZShtYXhBbGlnbm1lbnQsIHRvdGFsU2l6ZSk7Ci0g
ICAgICAgICAgICBpZiAoIWJhc2UpIHsKLSAgICAgICAgICAgICAgICBpZiAoR0lHQUNBR0VfQUxM
T0NBVElPTl9DQU5fRkFJTCkgewotICAgICAgICAgICAgICAgICAgICB2bURlYWxsb2NhdGUoYmFz
ZSwgdG90YWxTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZBVEFMOiBDb3VsZCBub3Qg
YWxsb2NhdGUgZ2lnYWNhZ2UgbWVtb3J5IHdpdGggbWF4QWxpZ25tZW50ID0gJWx1LCB0b3RhbFNp
emUgPSAlbHUuXG4iLCBtYXhBbGlnbm1lbnQsIHRvdGFsU2l6ZSk7Ci0gICAgICAgICAgICAgICAg
QkNSQVNIKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2bURlYWxsb2NhdGVQaHlzaWNh
bFBhZ2VzKGJhc2UsIHRvdGFsU2l6ZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHNpemVf
dCBuZXh0Q2FnZSA9IDA7Ci0gICAgICAgICAgICBmb3IgKEtpbmQga2luZCA6IHNodWZmbGVkS2lu
ZHMpIHsKLSAgICAgICAgICAgICAgICBuZXh0Q2FnZSA9IGFsaWduVG8oa2luZCwgbmV4dENhZ2Up
OwotICAgICAgICAgICAgICAgIGJhc2VQdHIoa2luZCkgPSByZWludGVycHJldF9jYXN0PGNoYXIq
PihiYXNlKSArIG5leHRDYWdlOwotICAgICAgICAgICAgICAgIG5leHRDYWdlID0gYnVtcChraW5k
LCBuZXh0Q2FnZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmb3JFYWNoS2luZCgKKyAg
ICAgICAgICAgICAgICBbJl0gKEtpbmQga2luZCkgeworICAgICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogUmFuZG9taXplIHdoZXJlIHRoaXMgZ29lcy4KKyAgICAgICAgICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTI0NQorICAgICAgICAg
ICAgICAgICAgICBiYXNlUHRyKGtpbmQpID0gdHJ5Vk1BbGxvY2F0ZShhbGlnbm1lbnQoa2luZCks
IHRvdGFsU2l6ZShraW5kKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYmFzZVB0cihraW5k
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGQVRBTDogQ291
bGQgbm90IGFsbG9jYXRlICVzIGdpZ2FjYWdlLlxuIiwgbmFtZShraW5kKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBCQ1JBU0goKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdl
cyhiYXNlUHRyKGtpbmQpLCB0b3RhbFNpemUoa2luZCkpOworICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBwcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpOwotICAg
ICAgICAgICAgZ193YXNFbmFibGVkID0gdHJ1ZTsKICAgICAgICAgfSk7CiAjZW5kaWYgLy8gR0lH
QUNBR0VfRU5BQkxFRAogfQpAQCAtMjQxLDI3ICsxODcsNyBAQCBib29sIGlzRGlzYWJsaW5nUHJp
bWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpCiAKIGJvb2wgc2hvdWxkQmVFbmFibGVkKCkKIHsKLSAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RhdGljIGJvb2wgY2FjaGVk
OwotICAgIHN0ZDo6Y2FsbF9vbmNlKAotICAgICAgICBvbmNlRmxhZywKLSAgICAgICAgW10gewot
ICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBHSUdBQ0FHRV9FTkFCTEVEICYmICFQZXJQcm9jZXNz
PEVudmlyb25tZW50Pjo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpOwotICAgICAgICAgICAg
aWYgKCFyZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAoY2hhciogZ2lnYWNhZ2VFbmFibGVkID0gZ2V0ZW52KCJHSUdBQ0FHRV9FTkFC
TEVEIikpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXN0cmNhc2VjbXAoZ2lnYWNhZ2VFbmFibGVk
LCAibm8iKSB8fCAhc3RyY2FzZWNtcChnaWdhY2FnZUVuYWJsZWQsICJmYWxzZSIpIHx8ICFzdHJj
YXNlY21wKGdpZ2FjYWdlRW5hYmxlZCwgIjAiKSkgewotICAgICAgICAgICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIldhcm5pbmc6IGRpc2FibGluZyBnaWdhY2FnZSBiZWNhdXNlIEdJR0FDQUdF
X0VOQUJMRUQ9JXMhXG4iLCBnaWdhY2FnZUVuYWJsZWQpOwotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJjYXNlY21wKGdpZ2FjYWdlRW5h
YmxlZCwgInllcyIpICYmIHN0cmNhc2VjbXAoZ2lnYWNhZ2VFbmFibGVkLCAidHJ1ZSIpICYmIHN0
cmNhc2VjbXAoZ2lnYWNhZ2VFbmFibGVkLCAiMSIpKQotICAgICAgICAgICAgICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIldhcm5pbmc6IGludmFsaWQgYXJndW1lbnQgdG8gR0lHQUNBR0VfRU5BQkxF
RDogJXNcbiIsIGdpZ2FjYWdlRW5hYmxlZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIGNhY2hlZCA9IHRydWU7Ci0gICAgICAgIH0pOwotICAgIAotICAgIHJldHVy
biBjYWNoZWQ7CisgICAgcmV0dXJuIEdJR0FDQUdFX0VOQUJMRUQgJiYgIVBlclByb2Nlc3M8RW52
aXJvbm1lbnQ+OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEdpZ2FjYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdl
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgKaW5kZXggMTgxYTdlNjI0Y2Uw
MDhjOTc1MTA3OTBmMjVkZjI1ZTI2NjkxN2I0OC4uM2I3NTc5YmI2N2QwYjFjNzcwNTk4MTFhMTM2
NWRlYzdiYzAxZGU2YSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2Fn
ZS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaApAQCAtMzIsMTkgKzMy
LDkgQEAKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPGludHR5cGVzLmg+CiAKLSNpZiBC
Q1BVKEFSTTY0KQotLy8gRklYTUU6IFRoaXMgY2FuIHByb2JhYmx5IGJlIGEgbG90IGJpZ2dlciBv
biBpT1MuIEkganVzdCBoYXZlbid0IHRyaWVkIHRvIG1ha2UgaXQgYmlnZ2VyIHlldC4KLS8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc2MDUKLSNkZWZpbmUgUFJJ
TUlUSVZFX0dJR0FDQUdFX1NJWkUgMHg0MDAwMDAwMGxsdQotI2RlZmluZSBKU1ZBTFVFX0dJR0FD
QUdFX1NJWkUgMHg0MDAwMDAwMGxsdQotI2RlZmluZSBTVFJJTkdfR0lHQUNBR0VfU0laRSAweDQw
MDAwMDAwbGx1Ci0jZGVmaW5lIEdJR0FDQUdFX0FMTE9DQVRJT05fQ0FOX0ZBSUwgMQotI2Vsc2UK
ICNkZWZpbmUgUFJJTUlUSVZFX0dJR0FDQUdFX1NJWkUgMHg4MDAwMDAwMDBsbHUKICNkZWZpbmUg
SlNWQUxVRV9HSUdBQ0FHRV9TSVpFIDB4NDAwMDAwMDAwbGx1CiAjZGVmaW5lIFNUUklOR19HSUdB
Q0FHRV9TSVpFIDB4NDAwMDAwMDAwbGx1Ci0jZGVmaW5lIEdJR0FDQUdFX0FMTE9DQVRJT05fQ0FO
X0ZBSUwgMAotI2VuZGlmCiAKICNkZWZpbmUgR0lHQUNBR0VfU0laRV9UT19NQVNLKHNpemUpICgo
c2l6ZSkgLSAxKQogCkBAIC01MiwyNSArNDIsMjcgQEAKICNkZWZpbmUgSlNWQUxVRV9HSUdBQ0FH
RV9NQVNLIEdJR0FDQUdFX1NJWkVfVE9fTUFTSyhKU1ZBTFVFX0dJR0FDQUdFX1NJWkUpCiAjZGVm
aW5lIFNUUklOR19HSUdBQ0FHRV9NQVNLIEdJR0FDQUdFX1NJWkVfVE9fTUFTSyhTVFJJTkdfR0lH
QUNBR0VfU0laRSkKIAotI2lmIChCT1MoREFSV0lOKSAmJiAoQkNQVShBUk02NCkgfHwgQkNQVShY
ODZfNjQpKSkgfHwgKEJPUyhMSU5VWCkgJiYgQkNQVShYODZfNjQpKQorLy8gRklYTUU6IENvbnNp
ZGVyIG1ha2luZyB0aGlzIDMyR0IsIGluIGNhc2UgdW5zaWduZWQgMzItYml0IGluZGljZXMgZmlu
ZCB0aGVpciB3YXkgaW50byBpbmRleGVkIGFjY2Vzc2VzLgorLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTA2MgorI2RlZmluZSBQUklNSVRJVkVfR0lHQUNBR0Vf
UlVOV0FZICgxNmxsdSAqIDEwMjQgKiAxMDI0ICogMTAyNCkKKworLy8gRklYTUU6IFJlY29uc2lk
ZXIgdGhpcy4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5
MjEKKyNkZWZpbmUgSlNWQUxVRV9HSUdBQ0FHRV9SVU5XQVkgMAorI2RlZmluZSBTVFJJTkdfR0lH
QUNBR0VfUlVOV0FZIDAKKworI2lmIChCT1MoREFSV0lOKSB8fCBCT1MoTElOVVgpKSAmJiBCQ1BV
KFg4Nl82NCkKICNkZWZpbmUgR0lHQUNBR0VfRU5BQkxFRCAxCiAjZWxzZQogI2RlZmluZSBHSUdB
Q0FHRV9FTkFCTEVEIDAKICNlbmRpZgogCi0jaWYgQkNQVShBUk02NCkKLSNkZWZpbmUgR0lHQUNB
R0VfQkFTRV9QVFJTX1NJWkUgMTYzODQKLSNlbHNlCi0jZGVmaW5lIEdJR0FDQUdFX0JBU0VfUFRS
U19TSVpFIDQwOTYKLSNlbmRpZgorI2RlZmluZSBHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRSA4MTky
CiAKIGV4dGVybiAiQyIgQkVYUE9SVCBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9C
QVNFX1BUUlNfU0laRV0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZChHSUdBQ0FHRV9CQVNFX1BUUlNf
U0laRSkpKTsKIAogbmFtZXNwYWNlIEdpZ2FjYWdlIHsKIAotZXh0ZXJuIEJFWFBPUlQgYm9vbCBn
X3dhc0VuYWJsZWQ7Ci1CSU5MSU5FIGJvb2wgd2FzRW5hYmxlZCgpIHsgcmV0dXJuIGdfd2FzRW5h
YmxlZDsgfQotCiBzdHJ1Y3QgQmFzZVB0cnMgewogICAgIHZvaWQqIHByaW1pdGl2ZTsKICAgICB2
b2lkKiBqc1ZhbHVlOwpAQCAtODMsOCArNzUsNiBAQCBlbnVtIEtpbmQgewogICAgIFN0cmluZwog
fTsKIAotc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1LaW5kcyA9IDM7Ci0KIEJFWFBPUlQg
dm9pZCBlbnN1cmVHaWdhY2FnZSgpOwogCiBCRVhQT1JUIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdp
Z2FjYWdlKCk7CkBAIC0xMzcsMTEgKzEyNyw2IEBAIEJJTkxJTkUgdm9pZComIGJhc2VQdHIoS2lu
ZCBraW5kKQogICAgIHJldHVybiBiYXNlUHRyKGJhc2VQdHJzKCksIGtpbmQpOwogfQogCi1CSU5M
SU5FIGJvb2wgaXNFbmFibGVkKEtpbmQga2luZCkKLXsKLSAgICByZXR1cm4gISFiYXNlUHRyKGtp
bmQpOwotfQotCiBCSU5MSU5FIHNpemVfdCBzaXplKEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2gg
KGtpbmQpIHsKQEAgLTE2Niw2ICsxNTEsMjUgQEAgQklOTElORSBzaXplX3QgbWFzayhLaW5kIGtp
bmQpCiAgICAgcmV0dXJuIEdJR0FDQUdFX1NJWkVfVE9fTUFTSyhzaXplKGtpbmQpKTsKIH0KIAor
QklOTElORSBzaXplX3QgcnVud2F5KEtpbmQga2luZCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsK
KyAgICBjYXNlIFByaW1pdGl2ZToKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4o
UFJJTUlUSVZFX0dJR0FDQUdFX1JVTldBWSk7CisgICAgY2FzZSBKU1ZhbHVlOgorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihKU1ZBTFVFX0dJR0FDQUdFX1JVTldBWSk7CisgICAg
Y2FzZSBTdHJpbmc6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KFNUUklOR19H
SUdBQ0FHRV9SVU5XQVkpOworICAgIH0KKyAgICBCQ1JBU0goKTsKKyAgICByZXR1cm4gMDsKK30K
KworQklOTElORSBzaXplX3QgdG90YWxTaXplKEtpbmQga2luZCkKK3sKKyAgICByZXR1cm4gc2l6
ZShraW5kKSArIHJ1bndheShraW5kKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KIHZv
aWQgZm9yRWFjaEtpbmQoY29uc3QgRnVuYyYgZnVuYykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3Bw
CmluZGV4IDRhY2ViMjZmYjkzN2MxMDRiNDUyODZiNTM3YTliMjk1ZTBkOTBmNjAuLjFjMTcxMGMw
NzMwNmFkNTg3ZTE3YWNmOTU2MTczNjkxYTczY2RjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNw
cApAQCAtMTc3LDggKzE3Nyw2IEBAIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZUxpbmVDYWNoZShzdGQ6
OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgTGluZUNhY2hlJiBsaW5lQ2FjCiAKIHZvaWQgSGVh
cDo6YWxsb2NhdGVTbWFsbENodW5rKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2ss
IHNpemVfdCBwYWdlQ2xhc3MpCiB7Ci0gICAgUkVMRUFTRV9CQVNTRVJUKGlzQWN0aXZlSGVhcEtp
bmQobV9raW5kKSk7Ci0gICAgCiAgICAgc2l6ZV90IHBhZ2VTaXplID0gYm1hbGxvYzo6cGFnZVNp
emUocGFnZUNsYXNzKTsKIAogICAgIENodW5rKiBjaHVuayA9IFsmXSgpIHsKQEAgLTIyMyw4ICsy
MjEsNiBAQCB2b2lkIEhlYXA6OmRlYWxsb2NhdGVTbWFsbENodW5rKENodW5rKiBjaHVuaywgc2l6
ZV90IHBhZ2VDbGFzcykKIAogU21hbGxQYWdlKiBIZWFwOjphbGxvY2F0ZVNtYWxsUGFnZShzdGQ6
OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBzaXplX3Qgc2l6ZUNsYXNzLCBMaW5lQ2Fj
aGUmIGxpbmVDYWNoZSkKIHsKLSAgICBSRUxFQVNFX0JBU1NFUlQoaXNBY3RpdmVIZWFwS2luZCht
X2tpbmQpKTsKLQogICAgIGlmICghbGluZUNhY2hlW3NpemVDbGFzc10uaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbGluZUNhY2hlW3NpemVDbGFzc10ucG9wRnJvbnQoKTsKIApAQCAtMzA0LDgg
KzMwMCw2IEBAIHZvaWQgSGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU1ldGFkYXRhKAog
ICAgIEJ1bXBBbGxvY2F0b3ImIGFsbG9jYXRvciwgQnVtcFJhbmdlQ2FjaGUmIHJhbmdlQ2FjaGUs
CiAgICAgTGluZUNhY2hlJiBsaW5lQ2FjaGUpCiB7Ci0gICAgUkVMRUFTRV9CQVNTRVJUKGlzQWN0
aXZlSGVhcEtpbmQobV9raW5kKSk7Ci0KICAgICBTbWFsbFBhZ2UqIHBhZ2UgPSBhbGxvY2F0ZVNt
YWxsUGFnZShsb2NrLCBzaXplQ2xhc3MsIGxpbmVDYWNoZSk7CiAgICAgU21hbGxMaW5lKiBsaW5l
cyA9IHBhZ2UtPmJlZ2luKCk7CiAgICAgQkFTU0VSVChwYWdlLT5oYXNGcmVlTGluZXMobG9jaykp
OwpAQCAtMzY4LDggKzM2Miw2IEBAIHZvaWQgSGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNC
eU9iamVjdCgKICAgICBCdW1wQWxsb2NhdG9yJiBhbGxvY2F0b3IsIEJ1bXBSYW5nZUNhY2hlJiBy
YW5nZUNhY2hlLAogICAgIExpbmVDYWNoZSYgbGluZUNhY2hlKQogewotICAgIFJFTEVBU0VfQkFT
U0VSVChpc0FjdGl2ZUhlYXBLaW5kKG1fa2luZCkpOwotCiAgICAgc2l6ZV90IHNpemUgPSBhbGxv
Y2F0b3Iuc2l6ZSgpOwogICAgIFNtYWxsUGFnZSogcGFnZSA9IGFsbG9jYXRlU21hbGxQYWdlKGxv
Y2ssIHNpemVDbGFzcywgbGluZUNhY2hlKTsKICAgICBCQVNTRVJUKHBhZ2UtPmhhc0ZyZWVMaW5l
cyhsb2NrKSk7CkBAIC00MjIsOCArNDE0LDYgQEAgdm9pZCBIZWFwOjphbGxvY2F0ZVNtYWxsQnVt
cFJhbmdlc0J5T2JqZWN0KAogCiBMYXJnZVJhbmdlIEhlYXA6OnNwbGl0QW5kQWxsb2NhdGUoTGFy
Z2VSYW5nZSYgcmFuZ2UsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplLCBBbGxvY2F0aW9u
S2luZCBhbGxvY2F0aW9uS2luZCkKIHsKLSAgICBSRUxFQVNFX0JBU1NFUlQoaXNBY3RpdmVIZWFw
S2luZChtX2tpbmQpKTsKLQogICAgIExhcmdlUmFuZ2UgcHJldjsKICAgICBMYXJnZVJhbmdlIG5l
eHQ7CiAKQEAgLTQ3MSw4ICs0NjEsNiBAQCBMYXJnZVJhbmdlIEhlYXA6OnNwbGl0QW5kQWxsb2Nh
dGUoTGFyZ2VSYW5nZSYgcmFuZ2UsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaQogCiB2b2lk
KiBIZWFwOjp0cnlBbGxvY2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBz
aXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgQWxsb2NhdGlvbktpbmQgYWxsb2NhdGlvbktp
bmQpCiB7Ci0gICAgUkVMRUFTRV9CQVNTRVJUKGlzQWN0aXZlSGVhcEtpbmQobV9raW5kKSk7Ci0K
ICAgICBCQVNTRVJUKGlzUG93ZXJPZlR3byhhbGlnbm1lbnQpKTsKICAgICAKICAgICBpZiAobV9k
ZWJ1Z0hlYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBLaW5kLmNw
cCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcEtpbmQuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyMzQzYjk1ODdjNDA3NGEwMDFlNTI2ZTgzMjRiYzMyNmE1MDdkY2U3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSGVhcEtpbmQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAi
SGVhcEtpbmQuaCIKLQotbmFtZXNwYWNlIGJtYWxsb2MgewotCi1ib29sIGlzQWN0aXZlSGVhcEtp
bmQoSGVhcEtpbmQga2luZCkKLXsKLSAgICBHaWdhY2FnZTo6ZW5zdXJlR2lnYWNhZ2UoKTsKLSAg
ICByZXR1cm4gaXNBY3RpdmVIZWFwS2luZEFmdGVyRW5zdXJpbmdHaWdhY2FnZShraW5kKTsKLX0K
LQotSGVhcEtpbmQgbWFwVG9BY3RpdmVIZWFwS2luZChIZWFwS2luZCBraW5kKQotewotICAgIEdp
Z2FjYWdlOjplbnN1cmVHaWdhY2FnZSgpOwotICAgIHJldHVybiBtYXBUb0FjdGl2ZUhlYXBLaW5k
QWZ0ZXJFbnN1cmluZ0dpZ2FjYWdlKGtpbmQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBibWFsbG9j
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBLaW5kLmggYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0hlYXBLaW5kLmgKaW5kZXggOTVhZmNlMzk2ZDU2MDg1ZjMzZWQ3ZWU1
OTMzMjc4NWY1NTA1YTU2OS4uZmU4NzYyZGY4ZjJjODA1MTNjNTlmOWJlN2RiMzFhYjJkMTE3YTky
NSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwS2luZC5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcEtpbmQuaApAQCAtODUsMzcgKzg1LDUgQEAgQklOTElO
RSBIZWFwS2luZCBoZWFwS2luZChHaWdhY2FnZTo6S2luZCBraW5kKQogICAgIHJldHVybiBIZWFw
S2luZDo6UHJpbWFyeTsKIH0KIAotQklOTElORSBib29sIGlzQWN0aXZlSGVhcEtpbmRBZnRlckVu
c3VyaW5nR2lnYWNhZ2UoSGVhcEtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAg
ICBjYXNlIEhlYXBLaW5kOjpQcmltaXRpdmVHaWdhY2FnZToKLSAgICBjYXNlIEhlYXBLaW5kOjpK
U1ZhbHVlR2lnYWNhZ2U6Ci0gICAgY2FzZSBIZWFwS2luZDo6U3RyaW5nR2lnYWNhZ2U6Ci0gICAg
ICAgIGlmIChHaWdhY2FnZTo6d2FzRW5hYmxlZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci19Ci0KLUJFWFBPUlQgYm9vbCBpc0FjdGl2ZUhlYXBLaW5kKEhlYXBLaW5kKTsK
LQotQklOTElORSBIZWFwS2luZCBtYXBUb0FjdGl2ZUhlYXBLaW5kQWZ0ZXJFbnN1cmluZ0dpZ2Fj
YWdlKEhlYXBLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBIZWFw
S2luZDo6UHJpbWl0aXZlR2lnYWNhZ2U6Ci0gICAgY2FzZSBIZWFwS2luZDo6SlNWYWx1ZUdpZ2Fj
YWdlOgotICAgIGNhc2UgSGVhcEtpbmQ6OlN0cmluZ0dpZ2FjYWdlOgotICAgICAgICBpZiAoR2ln
YWNhZ2U6Ondhc0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBraW5kOwotICAgICAgICBy
ZXR1cm4gSGVhcEtpbmQ6OlByaW1hcnk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGtp
bmQ7Ci0gICAgfQotfQotCi1CRVhQT1JUIEhlYXBLaW5kIG1hcFRvQWN0aXZlSGVhcEtpbmQoSGVh
cEtpbmQpOwotCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2Nh
dmVuZ2VyLmNwcAppbmRleCBiMTFhMDZjNTY5M2Q0Mzc2NGMwYzU0NGRkZmFjMzg1ZTM4YzMxMDE5
Li5hYzJhNjY4M2IxMTliZTliNDc5YmViNjQxNGU1YTRjYTVkZmNmOGYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9TY2F2ZW5nZXIuY3BwCkBAIC0xMTcsMTEgKzExNyw4IEBAIHZvaWQgU2NhdmVuZ2Vy
OjpzY2hlZHVsZShzaXplX3QgYnl0ZXMpCiB2b2lkIFNjYXZlbmdlcjo6c2NhdmVuZ2UoKQogewog
ICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBudW1IZWFwczsgaS0tOykgewotICAgICAgICBpZiAoIWlzQWN0
aXZlSGVhcEtpbmQoc3RhdGljX2Nhc3Q8SGVhcEtpbmQ+KGkpKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOworICAgIGZvciAodW5zaWduZWQgaSA9IG51bUhlYXBzOyBpLS07KQogICAgICAgICBQZXJQ
cm9jZXNzPFBlckhlYXBLaW5kPEhlYXA+Pjo6Z2V0KCktPmF0KGkpLnNjYXZlbmdlKGxvY2spOwot
ICAgIH0KIH0KIAogdm9pZCBTY2F2ZW5nZXI6OnRocmVhZEVudHJ5UG9pbnQoU2NhdmVuZ2VyKiBz
Y2F2ZW5nZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL2JtYWxsb2MuaCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvYm1hbGxvYy5oCmluZGV4IGQxMzE3MzQ0Y2Q5MWZjYjk5
NzZhZTU5NmY4Y2E5YjUwZmI5ZGY0OWUuLjVkNmRkMjE4YzAyZDNiNGNmMTQxZjlmYjk5NDk4NjBk
ZDNiNTRlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvYm1hbGxvYy5oCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvYm1hbGxvYy5oCkBAIC02OCw3ICs2OCw2IEBAIGlu
bGluZSB2b2lkKiByZWFsbG9jKHZvaWQqIG9iamVjdCwgc2l6ZV90IG5ld1NpemUsIEhlYXBLaW5k
IGtpbmQgPSBIZWFwS2luZDo6UHJpCiAvLyBSZXR1cm5zIG51bGwgZm9yIGZhaWx1cmUKIGlubGlu
ZSB2b2lkKiB0cnlMYXJnZU1lbWFsaWduVmlydHVhbChzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qg
c2l6ZSwgSGVhcEtpbmQga2luZCA9IEhlYXBLaW5kOjpQcmltYXJ5KQogewotICAgIGtpbmQgPSBt
YXBUb0FjdGl2ZUhlYXBLaW5kKGtpbmQpOwogICAgIEhlYXAmIGhlYXAgPSBQZXJQcm9jZXNzPFBl
ckhlYXBLaW5kPEhlYXA+Pjo6Z2V0KCktPmF0KGtpbmQpOwogICAgIHN0ZDo6bG9ja19ndWFyZDxT
dGF0aWNNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsKICAgICByZXR1cm4gaGVhcC5hbGxvY2F0
ZUxhcmdlKGxvY2ssIGFsaWdubWVudCwgc2l6ZSwgQWxsb2NhdGlvbktpbmQ6OlZpcnR1YWwpOwpA
QCAtODEsNyArODAsNiBAQCBpbmxpbmUgdm9pZCBmcmVlKHZvaWQqIG9iamVjdCwgSGVhcEtpbmQg
a2luZCA9IEhlYXBLaW5kOjpQcmltYXJ5KQogCiBpbmxpbmUgdm9pZCBmcmVlTGFyZ2VWaXJ0dWFs
KHZvaWQqIG9iamVjdCwgSGVhcEtpbmQga2luZCA9IEhlYXBLaW5kOjpQcmltYXJ5KQogewotICAg
IGtpbmQgPSBtYXBUb0FjdGl2ZUhlYXBLaW5kKGtpbmQpOwogICAgIEhlYXAmIGhlYXAgPSBQZXJQ
cm9jZXNzPFBlckhlYXBLaW5kPEhlYXA+Pjo6Z2V0KCktPmF0KGtpbmQpOwogICAgIHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsKICAgICBoZWFwLmRlYWxs
b2NhdGVMYXJnZShsb2NrLCBvYmplY3QsIEFsbG9jYXRpb25LaW5kOjpWaXJ0dWFsKTsKQEAgLTEw
Miw3ICsxMDAsNiBAQCBpbmxpbmUgdm9pZCBzY2F2ZW5nZSgpCiAKIGlubGluZSBib29sIGlzRW5h
YmxlZChIZWFwS2luZCBraW5kID0gSGVhcEtpbmQ6OlByaW1hcnkpCiB7Ci0gICAga2luZCA9IG1h
cFRvQWN0aXZlSGVhcEtpbmQoa2luZCk7CiAgICAgc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRl
eD4gbG9jayhIZWFwOjptdXRleCgpKTsKICAgICByZXR1cm4gIVBlclByb2Nlc3M8UGVySGVhcEtp
bmQ8SGVhcD4+OjpnZXRGYXN0Q2FzZSgpLT5hdChraW5kKS5kZWJ1Z0hlYXAoKTsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyN2YxOTJlMmIx
ODRlYjEyZWZiOTA0OTU3MzZlMTU0ZDQ5YTkxY2E4Li4zY2JkYmM3MTQzYzYyNWU5YzMzZGY0OWEz
YmI4ZjY2MzAzMjZlN2UwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMTAtMTEgIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyMjMxMTMgYW5kIHIyMjMxMjEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzgxODIKKworICAgICAgICBSZWludHJvZHVjZWQgMjAlIHJlZ3Jlc3Np
b24gb24gS3Jha2VuIChSZXF1ZXN0ZWQgYnkgcm5pd2Egb24KKyAgICAgICAgI3dlYmtpdCkuCisK
KyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAiRW5hYmxlIGdpZ2FjYWdl
IG9uIGlPUyIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NzU4NgorICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjIzMTEz
CisKKyAgICAgICAgIlVzZSBvbmUgdmlydHVhbCBhbGxvY2F0aW9uIGZvciBhbGwgZ2lnYWNhZ2Vz
IGFuZCB0aGVpcgorICAgICAgICBydW53YXlzIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MDUwCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8yMjMxMjEKKwogMjAxNy0xMC0xMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBTYW5pdGl6ZSBVUkwgaW4gcGFzdGVib2FyZCBmb3Igb3Ro
ZXIgYXBwbGljYXRpb25zIGFuZCBjcm9zcyBvcmlnaW4gY29udGVudApkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1z
dHJlc3MtdGVzdHMKaW5kZXggNGE3MDdjNzYyZjVmMzVjYjI5MDM2N2MzZjFjOTMxZDYwMzYyZDAy
My4uNDIxMDk2NGIxOWM3YzE2MzJiMmRjMDQzMGUzMzAyZDUzMGM2ZjI4MSAxMDA3NTUKLS0tIGEv
VG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1
bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC01MTMsNyArNTEzLDcgQEAgZGVmIGJhc2VPdXRwdXROYW1l
KGtpbmQpCiAgICAgIiN7JGNvbGxlY3Rpb25OYW1lfS8jeyRiZW5jaG1hcmt9LiN7a2luZH0iCiBl
bmQKIAotZGVmIGFkZFJ1bkNvbW1hbmQoa2luZCwgY29tbWFuZCwgb3V0cHV0SGFuZGxlciwgZXJy
b3JIYW5kbGVyLCAqYWRkaXRpb25hbEVudikKK2RlZiBhZGRSdW5Db21tYW5kKGtpbmQsIGNvbW1h
bmQsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlcikKICAgICAkZGlkQWRkUnVuQ29tbWFuZCA9
IHRydWUKICAgICBuYW1lID0gYmFzZU91dHB1dE5hbWUoa2luZCkKICAgICBpZiAkZmlsdGVyIGFu
ZCBuYW1lICF+ICRmaWx0ZXIKQEAgLTUyMiw3ICs1MjIsNiBAQCBkZWYgYWRkUnVuQ29tbWFuZChr
aW5kLCBjb21tYW5kLCBvdXRwdXRIYW5kbGVyLCBlcnJvckhhbmRsZXIsICphZGRpdGlvbmFsRW52
KQogICAgIHBsYW4gPSBQbGFuLm5ldygKICAgICAgICAgJGJlbmNobWFya0RpcmVjdG9yeSwgY29t
bWFuZCwgIiN7JGNvbGxlY3Rpb25OYW1lfS8jeyRiZW5jaG1hcmt9IiwgbmFtZSwgb3V0cHV0SGFu
ZGxlciwKICAgICAgICAgZXJyb3JIYW5kbGVyKQotICAgIHBsYW4uYWRkaXRpb25hbEVudi5wdXNo
KCphZGRpdGlvbmFsRW52KQogICAgIGlmICRudW1DaGlsZFByb2Nlc3NlcyA+IDEgYW5kICRydW5D
b21tYW5kT3B0aW9uc1s6aXNTbG93XQogICAgICAgICAkcnVubGlzdC51bnNoaWZ0IHBsYW4KICAg
ICBlbHNlCkBAIC0xMzA4LDE2ICsxMzA3LDggQEAgZGVmIGRlZmF1bHRSdW5Nb3ppbGxhVGVzdCht
b2RlLCAqZXh0cmFGaWxlcykKICAgICBlbmQKIGVuZAogCi1kZWYgcnVuTm9pc3lUZXN0SW1wbChr
aW5kLCBvcHRpb25zLCBhZGRpdGlvbmFsRW52KQotICAgIGFkZFJ1bkNvbW1hbmQoa2luZCwgW3Bh
dGhUb1ZNLnRvX3NdICsgQkFTRV9PUFRJT05TICsgb3B0aW9ucyArIFskYmVuY2htYXJrLnRvX3Nd
LCBub2lzeU91dHB1dEhhbmRsZXIsIG5vaXN5RXJyb3JIYW5kbGVyLCAqYWRkaXRpb25hbEVudikK
LWVuZAotCiBkZWYgcnVuTm9pc3lUZXN0KGtpbmQsICpvcHRpb25zKQotICAgIHJ1bk5vaXN5VGVz
dEltcGwoa2luZCwgb3B0aW9ucywgW10pCi1lbmQKLQotZGVmIHJ1bk5vaXN5VGVzdFdpdGhFbnYo
a2luZCwgKmFkZGl0aW9uYWxFbnYpCi0gICAgcnVuTm9pc3lUZXN0SW1wbChraW5kLCBbXSwgYWRk
aXRpb25hbEVudikKKyAgICBhZGRSdW5Db21tYW5kKGtpbmQsIFtwYXRoVG9WTS50b19zXSArIEJB
U0VfT1BUSU9OUyArIG9wdGlvbnMgKyBbJGJlbmNobWFyay50b19zXSwgbm9pc3lPdXRwdXRIYW5k
bGVyLCBub2lzeUVycm9ySGFuZGxlcikKIGVuZAogCiBkZWYgcnVuTm9pc3lUZXN0RGVmYXVsdApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0
ZXItZGVmYXVsdC5yYiBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cnVieS9qc2Mtc3RyZXNzLXRlc3Qt
d3JpdGVyLWRlZmF1bHQucmIKaW5kZXggMDU1M2YyZWFkZDNmNzJmMDZmM2YzMmE3MmM1MzNkMmJk
YzIyOWU3NS4uYWVkNTczNmUyZmI2MWJkZmUyY2RlOTdhYTVlYTEzMWQyODYwMDU4NCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRydWJ5L2pzYy1zdHJlc3MtdGVzdC13cml0ZXItZGVm
YXVsdC5yYgorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHJ1YnkvanNjLXN0cmVzcy10ZXN0LXdy
aXRlci1kZWZhdWx0LnJiCkBAIC0yMTUsNyArMjE1LDcgQEAgZGVmIGNoYWtyYVBhc3NGYWlsRXJy
b3JIYW5kbGVyCiBlbmQKIAogY2xhc3MgUGxhbgotICAgIGF0dHJfcmVhZGVyIDpkaXJlY3Rvcnks
IDphcmd1bWVudHMsIDpmYW1pbHksIDpuYW1lLCA6b3V0cHV0SGFuZGxlciwgOmVycm9ySGFuZGxl
ciwgOmFkZGl0aW9uYWxFbnYKKyAgICBhdHRyX3JlYWRlciA6ZGlyZWN0b3J5LCA6YXJndW1lbnRz
LCA6ZmFtaWx5LCA6bmFtZSwgOm91dHB1dEhhbmRsZXIsIDplcnJvckhhbmRsZXIKICAgICBhdHRy
X2FjY2Vzc29yIDppbmRleAogICAgIAogICAgIGRlZiBpbml0aWFsaXplKGRpcmVjdG9yeSwgYXJn
dW1lbnRzLCBmYW1pbHksIG5hbWUsIG91dHB1dEhhbmRsZXIsIGVycm9ySGFuZGxlcikKQEAgLTIy
Niw3ICsyMjYsNiBAQCBjbGFzcyBQbGFuCiAgICAgICAgIEBvdXRwdXRIYW5kbGVyID0gb3V0cHV0
SGFuZGxlcgogICAgICAgICBAZXJyb3JIYW5kbGVyID0gZXJyb3JIYW5kbGVyCiAgICAgICAgIEBp
c1Nsb3cgPSAhISRydW5Db21tYW5kT3B0aW9uc1s6aXNTbG93XQotICAgICAgICBAYWRkaXRpb25h
bEVudiA9IFtdCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIHNoZWxsQ29tbWFuZApAQCAtMjM0LDcg
KzIzMyw3IEBAIGNsYXNzIFBsYW4KICAgICAgICAgIyBpbiB0aGUgc3Vic2hlbGwgd2hlbiB3ZSBy
ZXR1cm4gd2Ugd2lsbCBiZSBpbiBvdXIgb3JpZ2luYWwgZGlyZWN0b3J5LiBUaGlzIGlzIG5pY2Ug
YmVjYXVzZSB3ZSBkb24ndAogICAgICAgICAjIGhhdmUgdG8gYmVuZCBvdmVyIGJhY2t3YXJkcyB0
byBkbyB0aGluZ3MgcmVsYXRpdmUgdG8gdGhlIHJvb3QuCiAgICAgICAgIHNjcmlwdCA9ICIoY2Qg
Li4vI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBkaXJlY3RvcnkudG9fcyl9ICYmICgiCi0gICAg
ICAgICgkZW52VmFycyArIGFkZGl0aW9uYWxFbnYpLmVhY2ggeyB8dmFyfCBzY3JpcHQgKz0gImV4
cG9ydCAiIDw8IHZhciA8PCAiOyAiIH0KKyAgICAgICAgJGVudlZhcnMuZWFjaCB7IHx2YXJ8IHNj
cmlwdCArPSAiZXhwb3J0ICIgPDwgdmFyIDw8ICI7ICIgfQogICAgICAgICBzY3JpcHQgKz0gIlwi
JEBcIiAiICsgZXNjYXBlQWxsKEBhcmd1bWVudHMpICsgIikpIgogICAgICAgICByZXR1cm4gc2Ny
aXB0CiAgICAgZW5kCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDJjMjE1ZDIzM2QyMzA4ZDBkNDM3ZTY2NmI2ZjgyYzIyYTY1YjRjN2QuLmE3
N2M3ODBjZDJkYTQ2MDQzYzQwYzNkYzQ3Y2M4ZTIyMjRlYzI0YjIgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MTctMTAtMTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjMxMTMgYW5kIHIyMjMxMjEuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxODIKKworICAgICAg
ICBSZWludHJvZHVjZWQgMjAlIHJlZ3Jlc3Npb24gb24gS3Jha2VuIChSZXF1ZXN0ZWQgYnkgcm5p
d2Egb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0czoK
KworICAgICAgICAiRW5hYmxlIGdpZ2FjYWdlIG9uIGlPUyIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzU4NgorICAgICAgICBodHRwczovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjIzMTEzCisKKyAgICAgICAgIlVzZSBvbmUgdmlydHVhbCBh
bGxvY2F0aW9uIGZvciBhbGwgZ2lnYWNhZ2VzIGFuZCB0aGVpcgorICAgICAgICBydW53YXlzIgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MDUwCisg
ICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMjMxMjEKKwogMjAxNy0x
MC0xMSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNh
YmxlIHRlc3QyNjIgbmFtZWQgY2FwdHVyZSBncm91cCB0ZXN0cyB3aXRoIGRpcmVjdCB1bmljb2Rl
IG5hbWVzIGFuZCB3aXRoIHJlZmVyZW5jZXMgYmVmb3JlIGRlZmluaXRpb25zCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9kaXNhYmxlLWdpZ2FjYWdlLWFycmF5cy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2Rpc2FibGUtZ2lnYWNhZ2UtYXJyYXlzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyMTJmYjFlZTcxMjI4YjA5MjdlNDY1N2NkYzg0NDdlNGQ1YzA4ZTBmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvc3RyZXNzL2Rpc2Fi
bGUtZ2lnYWNhZ2UtYXJyYXlzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotLy9A
IHJ1bk5vaXN5VGVzdFdpdGhFbnYgImRpc2FibGUtZ2lnYWNhZ2UiLCAiR0lHQUNBR0VfRU5BQkxF
RD0wIgotCi0oZnVuY3Rpb24oKSB7Ci0gICAgZnVuY3Rpb24gZm9vKGFycmF5LCBpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFycmF5W2ldOwotICAgIH0KLSAgICAKLSAgICBub0lubGluZShmb28p
OwotICAgIAotICAgIHZhciBhcnJheSA9IG5ldyBBcnJheSgxMDAwKTsKLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKQotICAgICAgICBhcnJheVtpXSA9IDUgLSBpOwot
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Ci0gICAgICAgIHZhciByZXN1bHQg
PSAwOwotICAgICAgICB2YXIgZXhwZWN0ZWRSZXN1bHQgPSAwOwotICAgICAgICBmb3IgKHZhciBq
ID0gMDsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICByZXN1bHQgKz0gZm9v
KGFycmF5LCBqKTsKLSAgICAgICAgICAgIGV4cGVjdGVkUmVzdWx0ICs9IDUgLSBqOwotICAgICAg
ICB9Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gZXhwZWN0ZWRSZXN1bHQpCi0gICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCByZXN1bHQ6ICIgKyByZXN1bHQpOwotICAgIH0KLX0pKCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9kaXNhYmxlLWdpZ2FjYWdlLXN0cmluZ3MuanMgYi9K
U1Rlc3RzL3N0cmVzcy9kaXNhYmxlLWdpZ2FjYWdlLXN0cmluZ3MuanMKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDc2MWQwNjc2OWY3NjJlMmIxNzM3MTEwZjg3ZDY0YjIwZjI1OGU0NWUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy9z
dHJlc3MvZGlzYWJsZS1naWdhY2FnZS1zdHJpbmdzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjUg
KzAsMCBAQAotLy9AIHJ1bk5vaXN5VGVzdFdpdGhFbnYgImRpc2FibGUtZ2lnYWNhZ2UiLCAiR0lH
QUNBR0VfRU5BQkxFRD0wIgotCi0oZnVuY3Rpb24oKSB7Ci0gICAgZnVuY3Rpb24gZm9vKGFycmF5
LCBpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFycmF5LmNoYXJDb2RlQXQoaSk7Ci0gICAgfQot
ICAgIAotICAgIG5vSW5saW5lKGZvbyk7Ci0gICAgCi0gICAgdmFyIGFycmF5ID0gIiI7Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkKLSAgICAgICAgYXJyYXkgKz0g
U3RyaW5nLmZyb21DaGFyQ29kZSg1IC0gaSk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
OyArK2kpIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9IDA7Ci0gICAgICAgIHZhciBleHBlY3RlZFJl
c3VsdCA9IDA7Ci0gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXJyYXkubGVuZ3RoOyArK2op
IHsKLSAgICAgICAgICAgIHJlc3VsdCArPSBmb28oYXJyYXksIGopOwotICAgICAgICAgICAgZXhw
ZWN0ZWRSZXN1bHQgKz0gNSAtIGo7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdCAhPSBl
eHBlY3RlZFJlc3VsdCkKLSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIHJlc3VsdDog
IiArIHJlc3VsdCk7Ci0gICAgfQotfSkoKTsKLQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
ZGlzYWJsZS1naWdhY2FnZS10eXBlZC1hcnJheXMuanMgYi9KU1Rlc3RzL3N0cmVzcy9kaXNhYmxl
LWdpZ2FjYWdlLXR5cGVkLWFycmF5cy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzY2M2MxZTU5YzNhYjU0ZjIwN2I3ZmRhMDU5M2ZhZjZhMTQwNDEyYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9kaXNhYmxlLWdp
Z2FjYWdlLXR5cGVkLWFycmF5cy5qcworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8v
QCBydW5Ob2lzeVRlc3RXaXRoRW52ICJkaXNhYmxlLWdpZ2FjYWdlIiwgIkdJR0FDQUdFX0VOQUJM
RUQ9MCIKLQotKGZ1bmN0aW9uKCkgewotICAgIGZ1bmN0aW9uIGZvbyhhcnJheSwgaSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhcnJheVtpXTsKLSAgICB9Ci0gICAgCi0gICAgbm9JbmxpbmUoZm9v
KTsKLSAgICAKLSAgICB2YXIgYXJyYXkgPSBuZXcgSW50MzJBcnJheSgxMDAwKTsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKQotICAgICAgICBhcnJheVtpXSA9IDUg
LSBpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7Ci0gICAgICAgIHZhciBy
ZXN1bHQgPSAwOwotICAgICAgICB2YXIgZXhwZWN0ZWRSZXN1bHQgPSAwOwotICAgICAgICBmb3Ig
KHZhciBqID0gMDsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICByZXN1bHQg
Kz0gZm9vKGFycmF5LCBqKTsKLSAgICAgICAgICAgIGV4cGVjdGVkUmVzdWx0ICs9IDUgLSBqOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gZXhwZWN0ZWRSZXN1bHQpCi0gICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCByZXN1bHQ6ICIgKyByZXN1bHQpOwotICAgIH0KLX0p
KCk7Ci0K
</data>

          </attachment>
      

    </bug>

</bugzilla>