Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Jul 2024 21:57:30 +0200
From:      Alex Samorukov <samm@freebsd.org>
To:        elastic@FreeBSD.org
Subject:   Beats update
Message-ID:  <69051943-d83f-4663-9a7a-fe6f1d096a26@freebsd.org>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------WqunSiK08hJ8YrcC72nHlyo1
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Dear elastic,

I found that beats8 port is broken due to go-sysinfo version which fails 
on gethost call on startup.

I patched port and updated it to the latest version. Patch is attached. 
Please update the port.

Oleksij

--------------WqunSiK08hJ8YrcC72nHlyo1
Content-Type: text/plain; charset=UTF-8; name="patch-beats.diff"
Content-Disposition: attachment; filename="patch-beats.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL3N5c3V0aWxzL2JlYXRzOC9NYWtlZmlsZSBiL3N5c3V0aWxzL2JlYXRz
OC9NYWtlZmlsZQppbmRleCA2M2MyMjg3ZjkxZTMuLjliOWY0NjI1OTczNCAxMDA2NDQKLS0t
IGEvc3lzdXRpbHMvYmVhdHM4L01ha2VmaWxlCisrKyBiL3N5c3V0aWxzL2JlYXRzOC9NYWtl
ZmlsZQpAQCAtMSw3ICsxLDYgQEAKIFBPUlROQU1FPQliZWF0cwogRElTVFZFUlNJT05QUkVG
SVg9CXYKLURJU1RWRVJTSU9OPQk4LjguMgotUE9SVFJFVklTSU9OPQk5CitESVNUVkVSU0lP
Tj0JOC4xNC4zCiBDQVRFR09SSUVTPQlzeXN1dGlscwogTUFTVEVSX1NJVEVTPQlodHRwczov
L3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vJHtHSF9BQ0NPVU5UfS8ke0dIX1BST0pFQ1R9
LyR7RElTVFZFUlNJT05GVUxMfS86Z29tb2QKIFBLR05BTUVTVUZGSVg/PQk4CmRpZmYgLS1n
aXQgYS9zeXN1dGlscy9iZWF0czgvZGlzdGluZm8gYi9zeXN1dGlscy9iZWF0czgvZGlzdGlu
Zm8KaW5kZXggN2Y2NDI5ZTExNjljLi4zM2QzMmU5NTQxMGIgMTAwNjQ0Ci0tLSBhL3N5c3V0
aWxzL2JlYXRzOC9kaXN0aW5mbworKysgYi9zeXN1dGlscy9iZWF0czgvZGlzdGluZm8KQEAg
LTEsMTUgKzEsNyBAQAotVElNRVNUQU1QID0gMTY4ODg5NDEzMgotU0hBMjU2IChnby9zeXN1
dGlsc19iZWF0czgvZWxhc3RpYy1iZWF0cy12OC44LjJfR0gwL2dvLm1vZCkgPSAyMzYzMGFh
NTQ4YWViYmUwMDIzNmIzYWQ2ZTE1NTA4YWNmZWM4ZGJhZTY4M2QwZDVlOTQ3NmU0OTc3Njkw
M2NjCi1TSVpFIChnby9zeXN1dGlsc19iZWF0czgvZWxhc3RpYy1iZWF0cy12OC44LjJfR0gw
L2dvLm1vZCkgPSAxOTMxNwotU0hBMjU2IChnby9zeXN1dGlsc19iZWF0czgvZWxhc3RpYy1i
ZWF0cy12OC44LjJfR0gwL2F1ZGl0YmVhdC04LjguMi1kYXJ3aW4teDg2XzY0LnRhci5neikg
PSBlNjBlNTEzMWMyMzQzMWY1YzA2Zjk4OWNkNGYxYTRmMjU0MGE4NjFiNzU5NjRkNjIxZGVh
OTc5NDk2YTllMWU5Ci1TSVpFIChnby9zeXN1dGlsc19iZWF0czgvZWxhc3RpYy1iZWF0cy12
OC44LjJfR0gwL2F1ZGl0YmVhdC04LjguMi1kYXJ3aW4teDg2XzY0LnRhci5neikgPSAyODM2
ODkzNQotU0hBMjU2IChnby9zeXN1dGlsc19iZWF0czgvZWxhc3RpYy1iZWF0cy12OC44LjJf
R0gwL2ZpbGViZWF0LTguOC4yLWRhcndpbi14ODZfNjQudGFyLmd6KSA9IGE3ZTEzMTM4N2My
NzdjOTIyM2M5YjIzNTZlOTQ0NDUwYzM4ZGJhYWVkZjA2OWEwNTIxY2E3NWI0MGYwYTZjNzQK
LVNJWkUgKGdvL3N5c3V0aWxzX2JlYXRzOC9lbGFzdGljLWJlYXRzLXY4LjguMl9HSDAvZmls
ZWJlYXQtOC44LjItZGFyd2luLXg4Nl82NC50YXIuZ3opID0gMzg2NjkzNjIKLVNIQTI1NiAo
Z28vc3lzdXRpbHNfYmVhdHM4L2VsYXN0aWMtYmVhdHMtdjguOC4yX0dIMC9oZWFydGJlYXQt
OC44LjItZGFyd2luLXg4Nl82NC50YXIuZ3opID0gMGNjMzU4NWI5ZTg1ZDA5NDQxYjc0NmEz
ZDgxMjg0OWY1MDcyN2QyZjU3ZjgyMWJmZWEwMWM5MzZkYzAwM2JiNAotU0laRSAoZ28vc3lz
dXRpbHNfYmVhdHM4L2VsYXN0aWMtYmVhdHMtdjguOC4yX0dIMC9oZWFydGJlYXQtOC44LjIt
ZGFyd2luLXg4Nl82NC50YXIuZ3opID0gMjgyNzgxMjUKLVNIQTI1NiAoZ28vc3lzdXRpbHNf
YmVhdHM4L2VsYXN0aWMtYmVhdHMtdjguOC4yX0dIMC9tZXRyaWNiZWF0LTguOC4yLWRhcndp
bi14ODZfNjQudGFyLmd6KSA9IDJkZTRjMWU2MDU3ZmE1YWFlMzU0YzUxMWY2ZDZhMDU1Mzkx
MzU3M2YyNjNkZmU1YTZlYTBjNWI0ZmI1OTExNmUKLVNJWkUgKGdvL3N5c3V0aWxzX2JlYXRz
OC9lbGFzdGljLWJlYXRzLXY4LjguMl9HSDAvbWV0cmljYmVhdC04LjguMi1kYXJ3aW4teDg2
XzY0LnRhci5neikgPSA0Mzc0Mzc2OQotU0hBMjU2IChnby9zeXN1dGlsc19iZWF0czgvZWxh
c3RpYy1iZWF0cy12OC44LjJfR0gwL3BhY2tldGJlYXQtOC44LjItZGFyd2luLXg4Nl82NC50
YXIuZ3opID0gZGJmNTk2NDNkZDA2YmM3NTY2MzI1OWIwMTFlOTgwMTAzZWU0NDgwMTdmYTc3
MzE2Mzc5Mjg0NGQ3MjZmYTk0ZAotU0laRSAoZ28vc3lzdXRpbHNfYmVhdHM4L2VsYXN0aWMt
YmVhdHMtdjguOC4yX0dIMC9wYWNrZXRiZWF0LTguOC4yLWRhcndpbi14ODZfNjQudGFyLmd6
KSA9IDI5NjUyMzkxCi1TSEEyNTYgKGdvL3N5c3V0aWxzX2JlYXRzOC9lbGFzdGljLWJlYXRz
LXY4LjguMl9HSDAvZWxhc3RpYy1iZWF0cy12OC44LjJfR0gwLnRhci5neikgPSA3Zjg1ZWY3
MGNmYTg0ZTk5NTlhODAzZTFjYzQ5MGQyYTNkZWE3YmQyMzkwMmUzYzk5MmJiZWFlYzlkOGRh
ZjBhCi1TSVpFIChnby9zeXN1dGlsc19iZWF0czgvZWxhc3RpYy1iZWF0cy12OC44LjJfR0gw
L2VsYXN0aWMtYmVhdHMtdjguOC4yX0dIMC50YXIuZ3opID0gMTE1NTk0Mjg4CitUSU1FU1RB
TVAgPSAxNzIwODk4MzIzCitTSEEyNTYgKGdvL3N5c3V0aWxzX2JlYXRzOC9lbGFzdGljLWJl
YXRzLXY4LjE0LjNfR0gwL2dvLm1vZCkgPSA1YWM1M2Q3MmVjMDQ3Njg1MjU3ZTMwNTA1NWE2
MWMwZmU1OGRkNjRmYTQ4MDk0MDFiY2E0ZTljZDgyMDc2NWQxCitTSVpFIChnby9zeXN1dGls
c19iZWF0czgvZWxhc3RpYy1iZWF0cy12OC4xNC4zX0dIMC9nby5tb2QpID0gMjIyODUKK1NI
QTI1NiAoZ28vc3lzdXRpbHNfYmVhdHM4L2VsYXN0aWMtYmVhdHMtdjguMTQuM19HSDAvZmls
ZWJlYXQtOC4xNC4zLWRhcndpbi14ODZfNjQudGFyLmd6KSA9IDQwZjFiOTEzZWFlZGU0M2Fm
Y2Y3M2NiNjY5YjRkYjU3Zjk4ZjExNDdmNTJmZGE3YmZlZTA3NTJlYjAzMjU2NTEKK1NJWkUg
KGdvL3N5c3V0aWxzX2JlYXRzOC9lbGFzdGljLWJlYXRzLXY4LjE0LjNfR0gwL2ZpbGViZWF0
LTguMTQuMy1kYXJ3aW4teDg2XzY0LnRhci5neikgPSA0NDIyNjAwNAorU0hBMjU2IChnby9z
eXN1dGlsc19iZWF0czgvZWxhc3RpYy1iZWF0cy12OC4xNC4zX0dIMC9lbGFzdGljLWJlYXRz
LXY4LjE0LjNfR0gwLnRhci5neikgPSAxNDZmY2QxZDdhOWVhOTUxZTM2MjY2MmM5ZDQzYmZk
NjViYmRmYWQzZTU4ZGMzMTU1NzNiZDZlNjIwNjVlOGZlCitTSVpFIChnby9zeXN1dGlsc19i
ZWF0czgvZWxhc3RpYy1iZWF0cy12OC4xNC4zX0dIMC9lbGFzdGljLWJlYXRzLXY4LjE0LjNf
R0gwLnRhci5neikgPSAxMTIyNTgwMjMKZGlmZiAtLWdpdCBhL3N5c3V0aWxzL2JlYXRzOC9m
aWxlcy9wYXRjaC1kZXYtdG9vbHNfbWFnZV9zZXR0aW5ncy5nbyBiL3N5c3V0aWxzL2JlYXRz
OC9maWxlcy9wYXRjaC1kZXYtdG9vbHNfbWFnZV9zZXR0aW5ncy5nbwppbmRleCBkYjhjOWVk
NGNiZTEuLjg2ZTQ3MGY5MDMxNSAxMDA2NDQKLS0tIGEvc3lzdXRpbHMvYmVhdHM4L2ZpbGVz
L3BhdGNoLWRldi10b29sc19tYWdlX3NldHRpbmdzLmdvCisrKyBiL3N5c3V0aWxzL2JlYXRz
OC9maWxlcy9wYXRjaC1kZXYtdG9vbHNfbWFnZV9zZXR0aW5ncy5nbwpAQCAtMSwyMCArMSwy
MCBAQAotLS0tIGRldi10b29scy9tYWdlL3NldHRpbmdzLmdvLm9yaWcJMjAyMi0wOS0yNyAx
MzoxOToyNyBVVEMKLSsrKyBkZXYtdG9vbHMvbWFnZS9zZXR0aW5ncy5nbwotQEAgLTMwLDcg
KzMwLDYgQEAgaW1wb3J0ICgKKy0tLSBkZXYtdG9vbHMvbWFnZS9zZXR0aW5ncy5nby5vcmln
CTIwMjQtMDctMDkgMDA6MDA6MzYuMDAwMDAwMDAwICswMjAwCisrKysgZGV2LXRvb2xzL21h
Z2Uvc2V0dGluZ3MuZ28JMjAyNC0wNy0xMyAyMToyNjoxOS4zODM3NjgwMDAgKzAyMDAKK0BA
IC0zMSw3ICszMSw2IEBACiAgCSJzeW5jIgogIAkidGltZSIKICAKIC0JImdpdGh1Yi5jb20v
bWFnZWZpbGUvbWFnZS9zaCIKLSAJImdpdGh1Yi5jb20vcGtnL2Vycm9ycyIKICAJImdvbGFu
Zy5vcmcveC90b29scy9nby92Y3MiCiAgCi1AQCAtMjQ5LDcgKzI0OCw4IEBAIHZhciAoCisg
CSJnaXRodWIuY29tL2VsYXN0aWMvYmVhdHMvdjcvZGV2LXRvb2xzL21hZ2UvZ290b29sIgor
QEAgLTI1MSw3ICsyNTAsOCBAQAogIGZ1bmMgQ29tbWl0SGFzaCgpIChzdHJpbmcsIGVycm9y
KSB7CiAgCXZhciBlcnIgZXJyb3IKICAJY29tbWl0SGFzaE9uY2UuRG8oZnVuYygpIHsKIC0J
CWNvbW1pdEhhc2gsIGVyciA9IHNoLk91dHB1dCgiZ2l0IiwgInJldi1wYXJzZSIsICJIRUFE
IikKICsJCWVyciA9IG5pbAotKwkJY29tbWl0SGFzaCA9ICIlJUJFQVRTVkVSU0lPTiUlIgor
KwkJY29tbWl0SGFzaCA9ICJ2OC4xNC4zIgogIAl9KQogIAlyZXR1cm4gY29tbWl0SGFzaCwg
ZXJyCiAgfQpkaWZmIC0tZ2l0IGEvc3lzdXRpbHMvYmVhdHM4L2ZpbGVzL3BhdGNoLWdvLXN5
c2luZm8gYi9zeXN1dGlscy9iZWF0czgvZmlsZXMvcGF0Y2gtZ28tc3lzaW5mbwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI0MGE1OTYzM2MzOAotLS0gL2Rl
di9udWxsCisrKyBiL3N5c3V0aWxzL2JlYXRzOC9maWxlcy9wYXRjaC1nby1zeXNpbmZvCkBA
IC0wLDAgKzEsMTMyNyBAQAorZGlmZiAtdXJOIHZlbmRvci5vcmlnL2dpdGh1Yi5jb20vZWxh
c3RpYy9nby1zeXNpbmZvL2ludGVybmFsL2Nnby9kaXNhYmxlZC5nbyB2ZW5kb3IvZ2l0aHVi
LmNvbS9lbGFzdGljL2dvLXN5c2luZm8vaW50ZXJuYWwvY2dvL2Rpc2FibGVkLmdvCistLS0g
dmVuZG9yLm9yaWcvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vaW50ZXJuYWwvY2dv
L2Rpc2FibGVkLmdvCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysg
dmVuZG9yL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL2ludGVybmFsL2Nnby9kaXNh
YmxlZC5nbwkyMDI0LTA3LTEzIDIwOjI4OjM2LjA2MDg4MjAwMCArMDIwMAorQEAgLTAsMCAr
MSwyMyBAQAorKy8vIExpY2Vuc2VkIHRvIEVsYXN0aWNzZWFyY2ggQi5WLiB1bmRlciBvbmUg
b3IgbW9yZSBjb250cmlidXRvcgorKy8vIGxpY2Vuc2UgYWdyZWVtZW50cy4gU2VlIHRoZSBO
T1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCisrLy8gdGhpcyB3b3JrIGZvciBhZGRpdGlv
bmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQKKysvLyBvd25lcnNoaXAuIEVs
YXN0aWNzZWFyY2ggQi5WLiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8geW91IHVuZGVyCisrLy8g
dGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBt
YXkKKysvLyBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRo
ZSBMaWNlbnNlLgorKy8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBh
dAorKy8vCisrLy8gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAorKy8vCisrLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn
cmVlZCB0byBpbiB3cml0aW5nLAorKy8vIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRo
ZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisrLy8gIkFTIElTIiBCQVNJUywgV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisrLy8gS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisrLy8gc3Bl
Y2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwor
Ky8vIHVuZGVyIHRoZSBMaWNlbnNlLgorKworKy8vZ286YnVpbGQgIWNnbworKworK3BhY2th
Z2UgY2dvCisrCisrLy8gRW5hYmxlZCBpcyB0cnVlIGlmIGNnbyB3YXMgZW5hYmxlZCBhdCBj
b21waWxlLXRpbWUuCisrY29uc3QgRW5hYmxlZCA9IGZhbHNlCitkaWZmIC11ck4gdmVuZG9y
Lm9yaWcvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vaW50ZXJuYWwvY2dvL2VuYWJs
ZWQuZ28gdmVuZG9yL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL2ludGVybmFsL2Nn
by9lbmFibGVkLmdvCistLS0gdmVuZG9yLm9yaWcvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5
c2luZm8vaW50ZXJuYWwvY2dvL2VuYWJsZWQuZ28JMTk3MC0wMS0wMSAwMTowMDowMC4wMDAw
MDAwMDAgKzAxMDAKKysrKyB2ZW5kb3IvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8v
aW50ZXJuYWwvY2dvL2VuYWJsZWQuZ28JMjAyNC0wNy0xMyAyMDoyODozNi4wNjA5NTMwMDAg
KzAyMDAKK0BAIC0wLDAgKzEsMjMgQEAKKysvLyBMaWNlbnNlZCB0byBFbGFzdGljc2VhcmNo
IEIuVi4gdW5kZXIgb25lIG9yIG1vcmUgY29udHJpYnV0b3IKKysvLyBsaWNlbnNlIGFncmVl
bWVudHMuIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAorKy8vIHRoaXMg
d29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0Cisr
Ly8gb3duZXJzaGlwLiBFbGFzdGljc2VhcmNoIEIuVi4gbGljZW5zZXMgdGhpcyBmaWxlIHRv
IHlvdSB1bmRlcgorKy8vIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOyB5b3UgbWF5CisrLy8gbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKysvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKysvLworKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKysvLworKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKysvLyBzb2Z0d2FyZSBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorKy8vICJB
UyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQor
Ky8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZQorKy8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQgbGltaXRhdGlvbnMKKysvLyB1bmRlciB0aGUgTGljZW5zZS4KKysKKysvL2dvOmJ1aWxk
IGNnbworKworK3BhY2thZ2UgY2dvCisrCisrLy8gRW5hYmxlZCBpcyB0cnVlIGlmIGNnbyB3
YXMgZW5hYmxlZCBhdCBjb21waWxlLXRpbWUuCisrY29uc3QgRW5hYmxlZCA9IHRydWUKK2Rp
ZmYgLXVyTiB2ZW5kb3Iub3JpZy9naXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9wcm92
aWRlcnMvZnJlZWJzZC9kZWZzX2ZyZWVic2QuZ28gdmVuZG9yL2dpdGh1Yi5jb20vZWxhc3Rp
Yy9nby1zeXNpbmZvL3Byb3ZpZGVycy9mcmVlYnNkL2RlZnNfZnJlZWJzZC5nbworLS0tIHZl
bmRvci5vcmlnL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3Byb3ZpZGVycy9mcmVl
YnNkL2RlZnNfZnJlZWJzZC5nbwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEw
MAorKysrIHZlbmRvci9naXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9wcm92aWRlcnMv
ZnJlZWJzZC9kZWZzX2ZyZWVic2QuZ28JMjAyNC0wNy0xMyAyMDoyODozNi4wNjUxMDYwMDAg
KzAyMDAKK0BAIC0wLDAgKzEsMzMgQEAKKysvLyBMaWNlbnNlZCB0byBFbGFzdGljc2VhcmNo
IEIuVi4gdW5kZXIgb25lIG9yIG1vcmUgY29udHJpYnV0b3IKKysvLyBsaWNlbnNlIGFncmVl
bWVudHMuIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAorKy8vIHRoaXMg
d29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0Cisr
Ly8gb3duZXJzaGlwLiBFbGFzdGljc2VhcmNoIEIuVi4gbGljZW5zZXMgdGhpcyBmaWxlIHRv
IHlvdSB1bmRlcgorKy8vIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAi
TGljZW5zZSIpOyB5b3UgbWF5CisrLy8gbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKysvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKysvLworKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcv
bGljZW5zZXMvTElDRU5TRS0yLjAKKysvLworKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKysvLyBzb2Z0d2FyZSBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorKy8vICJB
UyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQor
Ky8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2Ug
Zm9yIHRoZQorKy8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBh
bmQgbGltaXRhdGlvbnMKKysvLyB1bmRlciB0aGUgTGljZW5zZS4KKysKKysvL2dvOmJ1aWxk
IGlnbm9yZQorKy8vICtidWlsZCBpZ25vcmUKKysKKytwYWNrYWdlIGZyZWVic2QKKysKKysv
KgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8c3lzL3ZtbWV0ZXIuaD4K
KysjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKysjaW5jbHVkZSA8a3ZtLmg+CisrKi8KKytpbXBv
cnQgIkMiCisrCisrdHlwZSBrdm1Td2FwIEMuc3RydWN0X2t2bV9zd2FwCisrCisrdHlwZSBj
bG9ja0luZm8gQy5zdHJ1Y3RfY2xvY2tpbmZvCitkaWZmIC11ck4gdmVuZG9yLm9yaWcvZ2l0
aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vcHJvdmlkZXJzL2ZyZWVic2QvZG9jLmdvIHZl
bmRvci9naXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9wcm92aWRlcnMvZnJlZWJzZC9k
b2MuZ28KKy0tLSB2ZW5kb3Iub3JpZy9naXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9w
cm92aWRlcnMvZnJlZWJzZC9kb2MuZ28JMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAg
KzAxMDAKKysrKyB2ZW5kb3IvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vcHJvdmlk
ZXJzL2ZyZWVic2QvZG9jLmdvCTIwMjQtMDctMTMgMjA6Mjg6MzYuMDY1MjAzMDAwICswMjAw
CitAQCAtMCwwICsxLDIyIEBACisrLy8gTGljZW5zZWQgdG8gRWxhc3RpY3NlYXJjaCBCLlYu
IHVuZGVyIG9uZSBvciBtb3JlIGNvbnRyaWJ1dG9yCisrLy8gbGljZW5zZSBhZ3JlZW1lbnRz
LiBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGgKKysvLyB0aGlzIHdvcmsg
Zm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodAorKy8vIG93
bmVyc2hpcC4gRWxhc3RpY3NlYXJjaCBCLlYuIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byB5b3Ug
dW5kZXIKKysvLyB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsgeW91IG1heQorKy8vIG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisrLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisrLy8KKysvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisrLy8KKysvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisrLy8gc29mdHdhcmUgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKysvLyAiQVMgSVMi
IEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKysvLyBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUKKysvLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxp
bWl0YXRpb25zCisrLy8gdW5kZXIgdGhlIExpY2Vuc2UuCisrCisrLy8gUGFja2FnZSBmcmVl
YnNkIGltcGxlbWVudHMgdGhlIEhvc3RQcm92aWRlciBhbmQgUHJvY2Vzc1Byb3ZpZGVyIGlu
dGVyZmFjZXMKKysvLyBmb3IgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IEZyZWVCU0Qu
CisrcGFja2FnZSBmcmVlYnNkCisrCisrLy9nbzpnZW5lcmF0ZSBzaCAtYyAiZ28gdG9vbCBj
Z28gLWdvZGVmcyBkZWZzX2ZyZWVic2QuZ28gPiB6dHlwZXNfZnJlZWJzZC5nbyIKK2RpZmYg
LXVyTiB2ZW5kb3Iub3JpZy9naXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9wcm92aWRl
cnMvZnJlZWJzZC9ob3N0X2ZyZWVic2RfY2dvLmdvIHZlbmRvci9naXRodWIuY29tL2VsYXN0
aWMvZ28tc3lzaW5mby9wcm92aWRlcnMvZnJlZWJzZC9ob3N0X2ZyZWVic2RfY2dvLmdvCist
LS0gdmVuZG9yLm9yaWcvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vcHJvdmlkZXJz
L2ZyZWVic2QvaG9zdF9mcmVlYnNkX2Nnby5nbwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAw
MDAwMCArMDEwMAorKysrIHZlbmRvci9naXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9w
cm92aWRlcnMvZnJlZWJzZC9ob3N0X2ZyZWVic2RfY2dvLmdvCTIwMjQtMDctMTMgMjA6Mjg6
MzYuMDY1MzE3MDAwICswMjAwCitAQCAtMCwwICsxLDIzOCBAQAorKy8vIExpY2Vuc2VkIHRv
IEVsYXN0aWNzZWFyY2ggQi5WLiB1bmRlciBvbmUgb3IgbW9yZSBjb250cmlidXRvcgorKy8v
IGxpY2Vuc2UgYWdyZWVtZW50cy4gU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3
aXRoCisrLy8gdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGlu
ZyBjb3B5cmlnaHQKKysvLyBvd25lcnNoaXAuIEVsYXN0aWNzZWFyY2ggQi5WLiBsaWNlbnNl
cyB0aGlzIGZpbGUgdG8geW91IHVuZGVyCisrLy8gdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJz
aW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkKKysvLyBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKy8vIFlvdSBtYXkg
b2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKy8vCisrLy8gICAgIGh0dHA6Ly93
d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKy8vCisrLy8gVW5sZXNzIHJl
cXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorKy8v
IHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVk
IG9uIGFuCisrLy8gIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZCisrLy8gS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNl
ZSB0aGUgTGljZW5zZSBmb3IgdGhlCisrLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworKy8vIHVuZGVyIHRoZSBMaWNlbnNlLgor
KworKy8vZ286YnVpbGQgZnJlZWJzZCAmJiBjZ28KKysKKytwYWNrYWdlIGZyZWVic2QKKysK
KytpbXBvcnQgKAorKwkiY29udGV4dCIKKysJImVycm9ycyIKKysJIm9zIgorKwkicGF0aC9m
aWxlcGF0aCIKKysJInRpbWUiCisrCisrCSJnaXRodWIuY29tL3Byb21ldGhldXMvcHJvY2Zz
IgorKworKwkiZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vaW50ZXJuYWwvcmVnaXN0
cnkiCisrCSJnaXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9wcm92aWRlcnMvc2hhcmVk
IgorKwkiZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vdHlwZXMiCisrKQorKworK2Z1
bmMgaW5pdCgpIHsKKysJcmVnaXN0cnkuUmVnaXN0ZXIobmV3RnJlZUJTRFN5c3RlbSgpKQor
K30KKysKKyt0eXBlIGZyZWVic2RTeXN0ZW0gc3RydWN0e30KKysKKytmdW5jIG5ld0ZyZWVC
U0RTeXN0ZW0oKSBmcmVlYnNkU3lzdGVtIHsKKysJcmV0dXJuIGZyZWVic2RTeXN0ZW17fQor
K30KKysKKytmdW5jIChzIGZyZWVic2RTeXN0ZW0pIEhvc3QoKSAodHlwZXMuSG9zdCwgZXJy
b3IpIHsKKysJcmV0dXJuIG5ld0hvc3QoKQorK30KKysKKyt0eXBlIGhvc3Qgc3RydWN0IHsK
KysJcHJvY0ZTIHByb2NGUworKwlpbmZvICAgdHlwZXMuSG9zdEluZm8KKyt9CisrCisrZnVu
YyAoaCAqaG9zdCkgSW5mbygpIHR5cGVzLkhvc3RJbmZvIHsKKysJcmV0dXJuIGguaW5mbwor
K30KKysKKytmdW5jIChoICpob3N0KSBDUFVUaW1lKCkgKHR5cGVzLkNQVVRpbWVzLCBlcnJv
cikgeworKwljcHUgOj0gdHlwZXMuQ1BVVGltZXN7fQorKwlyIDo9ICZyZWFkZXJ7fQorKwly
LmNwdVRpbWUoJmNwdSkKKysJcmV0dXJuIGNwdSwgci5FcnIoKQorK30KKysKKytmdW5jICho
ICpob3N0KSBNZW1vcnkoKSAoKnR5cGVzLkhvc3RNZW1vcnlJbmZvLCBlcnJvcikgeworKwlt
IDo9ICZ0eXBlcy5Ib3N0TWVtb3J5SW5mb3t9CisrCXIgOj0gJnJlYWRlcnt9CisrCXIubWVt
SW5mbyhtKQorKwlyZXR1cm4gbSwgci5FcnIoKQorK30KKysKKytmdW5jIChoICpob3N0KSBG
UUROV2l0aENvbnRleHQoY3R4IGNvbnRleHQuQ29udGV4dCkgKHN0cmluZywgZXJyb3IpIHsK
KysJcmV0dXJuIHNoYXJlZC5GUUROV2l0aENvbnRleHQoY3R4KQorK30KKysKKytmdW5jICho
ICpob3N0KSBGUUROKCkgKHN0cmluZywgZXJyb3IpIHsKKysJcmV0dXJuIGguRlFETldpdGhD
b250ZXh0KGNvbnRleHQuQmFja2dyb3VuZCgpKQorK30KKysKKytmdW5jIG5ld0hvc3QoKSAo
Kmhvc3QsIGVycm9yKSB7CisrCWggOj0gJmhvc3R7fQorKwlyIDo9ICZyZWFkZXJ7fQorKwly
LmFyY2hpdGVjdHVyZShoKQorKwlyLmJvb3RUaW1lKGgpCisrCXIuaG9zdG5hbWUoaCkKKysJ
ci5uZXR3b3JrKGgpCisrCXIua2VybmVsVmVyc2lvbihoKQorKwlyLm9zKGgpCisrCXIudGlt
ZShoKQorKwlyLnVuaXF1ZUlEKGgpCisrCXJldHVybiBoLCByLkVycigpCisrfQorKworK3R5
cGUgcmVhZGVyIHN0cnVjdCB7CisrCWVycnMgW11lcnJvcgorK30KKysKKytmdW5jIChyICpy
ZWFkZXIpIGFkZEVycihlcnIgZXJyb3IpIGJvb2wgeworKwlpZiBlcnIgIT0gbmlsIHsKKysJ
CWlmICFlcnJvcnMuSXMoZXJyLCB0eXBlcy5FcnJOb3RJbXBsZW1lbnRlZCkgeworKwkJCXIu
ZXJycyA9IGFwcGVuZChyLmVycnMsIGVycikKKysJCX0KKysJCXJldHVybiB0cnVlCisrCX0K
KysJcmV0dXJuIGZhbHNlCisrfQorKworK2Z1bmMgKHIgKnJlYWRlcikgRXJyKCkgZXJyb3Ig
eworKwlyZXR1cm4gZXJyb3JzLkpvaW4oci5lcnJzLi4uKQorK30KKysKKytmdW5jIChyICpy
ZWFkZXIpIGNwdVRpbWUoY3B1ICp0eXBlcy5DUFVUaW1lcykgeworKwl0aW1lcywgZXJyIDo9
IGNwdVN0YXRlVGltZXMoKQorKwlpZiByLmFkZEVycihlcnIpIHsKKysJCXJldHVybgorKwl9
CisrCSpjcHUgPSAqdGltZXMKKyt9CisrCisrZnVuYyAociAqcmVhZGVyKSBtZW1JbmZvKG0g
KnR5cGVzLkhvc3RNZW1vcnlJbmZvKSB7CisrCS8vIE1lbW9yeSBjb3VudGVyIGNhbGN1bGF0
aW9uczoKKysJLy8gICB0b3RhbCA9IHBoeXNpY2FsIG1lbW9yeQorKwkvLyAgIHVzZWQgPSBh
Y3RpdmUgKyB3aXJlZAorKwkvLyAgIGZyZWUgPSBmcmVlCisrCS8vICAgYXZhaWxhYmxlID0g
YnVmZmVycyArIGluYWN0aXZlICsgY2FjaGUgKyBmcmVlCisrCisrCXBhZ2VTaXplLCBlcnIg
Oj0gcGFnZVNpemVCeXRlcygpCisrCWlmIHIuYWRkRXJyKGVycikgeworKwkJcmV0dXJuCisr
CX0KKysKKysJbS5Ub3RhbCA9IHRvdGFsUGh5c2ljYWxNZW0ocikKKysJYWN0aXZlUGFnZXMg
Oj0gYWN0aXZlUGFnZUNvdW50KHIpCisrCisrCW0uTWV0cmljcyA9IG1ha2UobWFwW3N0cmlu
Z111aW50NjQsIDYpCisrCW0uTWV0cmljc1siYWN0aXZlX2J5dGVzIl0gPSBhY3RpdmVQYWdl
cyAqIHBhZ2VTaXplCisrCisrCXdpcmVQYWdlcyA6PSB3aXJlUGFnZUNvdW50KHIpCisrCW0u
TWV0cmljc1sid2lyZWRfYnl0ZXMiXSA9IHdpcmVQYWdlcyAqIHBhZ2VTaXplCisrCisrCWlu
YWN0aXZlUGFnZXMgOj0gaW5hY3RpdmVQYWdlQ291bnQocikKKysJbS5NZXRyaWNzWyJpbmFj
dGl2ZV9ieXRlcyJdID0gaW5hY3RpdmVQYWdlcyAqIHBhZ2VTaXplCisrCisrCWNhY2hlUGFn
ZXMgOj0gY2FjaGVQYWdlQ291bnQocikKKysJbS5NZXRyaWNzWyJjYWNoZV9ieXRlcyJdID0g
Y2FjaGVQYWdlcyAqIHBhZ2VTaXplCisrCisrCWZyZWVQYWdlcyA6PSBmcmVlUGFnZUNvdW50
KHIpCisrCW0uTWV0cmljc1siZnJlZV9ieXRlcyJdID0gZnJlZVBhZ2VzICogcGFnZVNpemUK
KysKKysJYnVmZmVycyA6PSBidWZmZXJzVXNlZEJ5dGVzKHIpCisrCW0uTWV0cmljc1siYnVm
ZmVyX2J5dGVzIl0gPSBidWZmZXJzCisrCisrCW0uVXNlZCA9IChhY3RpdmVQYWdlcyArIHdp
cmVQYWdlcykgKiBwYWdlU2l6ZQorKwltLkZyZWUgPSBmcmVlUGFnZXMgKiBwYWdlU2l6ZQor
KwltLkF2YWlsYWJsZSA9IChpbmFjdGl2ZVBhZ2VzK2NhY2hlUGFnZXMrZnJlZVBhZ2VzKSpw
YWdlU2l6ZSArIGJ1ZmZlcnMKKysKKysJLy8gVmlydHVhbCAoc3dhcCkgTWVtb3J5CisrCXN3
YXAsIGVyciA6PSBrdm1HZXRTd2FwSW5mbygpCisrCWlmIHIuYWRkRXJyKGVycikgeworKwkJ
cmV0dXJuCisrCX0KKysKKysJbS5WaXJ0dWFsVG90YWwgPSB1aW50NjQoc3dhcC5Ub3RhbCkg
KiBwYWdlU2l6ZQorKwltLlZpcnR1YWxVc2VkID0gdWludDY0KHN3YXAuVXNlZCkgKiBwYWdl
U2l6ZQorKwltLlZpcnR1YWxGcmVlID0gbS5WaXJ0dWFsVG90YWwgLSBtLlZpcnR1YWxVc2Vk
CisrfQorKworK2Z1bmMgKHIgKnJlYWRlcikgYXJjaGl0ZWN0dXJlKGggKmhvc3QpIHsKKysJ
diwgZXJyIDo9IGFyY2hpdGVjdHVyZSgpCisrCWlmIHIuYWRkRXJyKGVycikgeworKwkJcmV0
dXJuCisrCX0KKysJaC5pbmZvLkFyY2hpdGVjdHVyZSA9IHYKKyt9CisrCisrZnVuYyAociAq
cmVhZGVyKSBib290VGltZShoICpob3N0KSB7CisrCXYsIGVyciA6PSBib290VGltZSgpCisr
CWlmIHIuYWRkRXJyKGVycikgeworKwkJcmV0dXJuCisrCX0KKysJaC5pbmZvLkJvb3RUaW1l
ID0gdgorK30KKysKKytmdW5jIChyICpyZWFkZXIpIGhvc3RuYW1lKGggKmhvc3QpIHsKKysJ
diwgZXJyIDo9IG9zLkhvc3RuYW1lKCkKKysJaWYgci5hZGRFcnIoZXJyKSB7CisrCQlyZXR1
cm4KKysJfQorKwloLmluZm8uSG9zdG5hbWUgPSB2CisrfQorKworK2Z1bmMgKHIgKnJlYWRl
cikgbmV0d29yayhoICpob3N0KSB7CisrCWlwcywgbWFjcywgZXJyIDo9IHNoYXJlZC5OZXR3
b3JrKCkKKysJaWYgci5hZGRFcnIoZXJyKSB7CisrCQlyZXR1cm4KKysJfQorKwloLmluZm8u
SVBzID0gaXBzCisrCWguaW5mby5NQUNzID0gbWFjcworK30KKysKKytmdW5jIChyICpyZWFk
ZXIpIGtlcm5lbFZlcnNpb24oaCAqaG9zdCkgeworKwl2LCBlcnIgOj0ga2VybmVsVmVyc2lv
bigpCisrCWlmIHIuYWRkRXJyKGVycikgeworKwkJcmV0dXJuCisrCX0KKysJaC5pbmZvLktl
cm5lbFZlcnNpb24gPSB2CisrfQorKworK2Z1bmMgKHIgKnJlYWRlcikgb3MoaCAqaG9zdCkg
eworKwl2LCBlcnIgOj0gb3BlcmF0aW5nU3lzdGVtKCkKKysJaWYgci5hZGRFcnIoZXJyKSB7
CisrCQlyZXR1cm4KKysJfQorKwloLmluZm8uT1MgPSB2CisrfQorKworK2Z1bmMgKHIgKnJl
YWRlcikgdGltZShoICpob3N0KSB7CisrCWguaW5mby5UaW1lem9uZSwgaC5pbmZvLlRpbWV6
b25lT2Zmc2V0U2VjID0gdGltZS5Ob3coKS5ab25lKCkKKyt9CisrCisrZnVuYyAociAqcmVh
ZGVyKSB1bmlxdWVJRChoICpob3N0KSB7CisrCXYsIGVyciA6PSBtYWNoaW5lSUQoKQorKwlp
ZiByLmFkZEVycihlcnIpIHsKKysJCXJldHVybgorKwl9CisrCWguaW5mby5VbmlxdWVJRCA9
IHYKKyt9CisrCisrdHlwZSBwcm9jRlMgc3RydWN0IHsKKysJcHJvY2ZzLkZTCisrCW1vdW50
UG9pbnQgc3RyaW5nCisrfQorKworK2Z1bmMgKGZzICpwcm9jRlMpIHBhdGgocCAuLi5zdHJp
bmcpIHN0cmluZyB7CisrCWVsZW0gOj0gYXBwZW5kKFtdc3RyaW5ne2ZzLm1vdW50UG9pbnR9
LCBwLi4uKQorKwlyZXR1cm4gZmlsZXBhdGguSm9pbihlbGVtLi4uKQorK30KK2RpZmYgLXVy
TiB2ZW5kb3Iub3JpZy9naXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9wcm92aWRlcnMv
ZnJlZWJzZC9ob3N0X2ZyZWVic2RfY2dvX3Rlc3QuZ28gdmVuZG9yL2dpdGh1Yi5jb20vZWxh
c3RpYy9nby1zeXNpbmZvL3Byb3ZpZGVycy9mcmVlYnNkL2hvc3RfZnJlZWJzZF9jZ29fdGVz
dC5nbworLS0tIHZlbmRvci5vcmlnL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3By
b3ZpZGVycy9mcmVlYnNkL2hvc3RfZnJlZWJzZF9jZ29fdGVzdC5nbwkxOTcwLTAxLTAxIDAx
OjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIHZlbmRvci9naXRodWIuY29tL2VsYXN0aWMv
Z28tc3lzaW5mby9wcm92aWRlcnMvZnJlZWJzZC9ob3N0X2ZyZWVic2RfY2dvX3Rlc3QuZ28J
MjAyNC0wNy0xMyAyMDoyODozNi4wNjUzODUwMDAgKzAyMDAKK0BAIC0wLDAgKzEsNTMgQEAK
KysvLyBMaWNlbnNlZCB0byBFbGFzdGljc2VhcmNoIEIuVi4gdW5kZXIgb25lIG9yIG1vcmUg
Y29udHJpYnV0b3IKKysvLyBsaWNlbnNlIGFncmVlbWVudHMuIFNlZSB0aGUgTk9USUNFIGZp
bGUgZGlzdHJpYnV0ZWQgd2l0aAorKy8vIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZv
cm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0CisrLy8gb3duZXJzaGlwLiBFbGFzdGljc2Vh
cmNoIEIuVi4gbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlvdSB1bmRlcgorKy8vIHRoZSBBcGFj
aGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5CisrLy8g
bm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5z
ZS4KKysvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKysvLwor
Ky8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKysv
LworKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8g
aW4gd3JpdGluZywKKysvLyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5z
ZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorKy8vICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FS
UkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorKy8vIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorKy8vIHNwZWNpZmljIGxh
bmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKysvLyB1bmRl
ciB0aGUgTGljZW5zZS4KKysKKysvL2dvOmJ1aWxkIGZyZWVic2QgJiYgY2dvCisrCisrcGFj
a2FnZSBmcmVlYnNkCisrCisraW1wb3J0ICgKKysJImVuY29kaW5nL2pzb24iCisrCSJ0ZXN0
aW5nIgorKworKwkiZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vaW50ZXJuYWwvcmVn
aXN0cnkiCisrKQorKworK3ZhciBfIHJlZ2lzdHJ5Lkhvc3RQcm92aWRlciA9IGZyZWVic2RT
eXN0ZW17fQorKworK2Z1bmMgVGVzdEhvc3QodCAqdGVzdGluZy5UKSB7CisrCWhvc3QsIGVy
ciA6PSBuZXdGcmVlQlNEU3lzdGVtKCkuSG9zdCgpCisrCWlmIGVyciAhPSBuaWwgeworKwkJ
dC5GYXRhbChlcnIpCisrCX0KKysKKysJdC5SdW4oIkluZm8iLCBmdW5jKHQgKnRlc3Rpbmcu
VCkgeworKwkJaW5mbyA6PSBob3N0LkluZm8oKQorKworKwkJZGF0YSwgXyA6PSBqc29uLk1h
cnNoYWxJbmRlbnQoaW5mbywgIiIsICIgICIpCisrCQl0LkxvZyhzdHJpbmcoZGF0YSkpCisr
CX0pCisrCisrCXQuUnVuKCJNZW1vcnkiLCBmdW5jKHQgKnRlc3RpbmcuVCkgeworKwkJbWVt
LCBlcnIgOj0gaG9zdC5NZW1vcnkoKQorKwkJaWYgZXJyICE9IG5pbCB7CisrCQkJdC5GYXRh
bChlcnIpCisrCQl9CisrCisrCQlkYXRhLCBfIDo9IGpzb24uTWFyc2hhbEluZGVudChtZW0s
ICIiLCAiICAiKQorKwkJdC5Mb2coc3RyaW5nKGRhdGEpKQorKwl9KQorK30KK2RpZmYgLXVy
TiB2ZW5kb3Iub3JpZy9naXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9wcm92aWRlcnMv
ZnJlZWJzZC9rdm1fZnJlZWJzZF9jZ28uZ28gdmVuZG9yL2dpdGh1Yi5jb20vZWxhc3RpYy9n
by1zeXNpbmZvL3Byb3ZpZGVycy9mcmVlYnNkL2t2bV9mcmVlYnNkX2Nnby5nbworLS0tIHZl
bmRvci5vcmlnL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3Byb3ZpZGVycy9mcmVl
YnNkL2t2bV9mcmVlYnNkX2Nnby5nbwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCAr
MDEwMAorKysrIHZlbmRvci9naXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9wcm92aWRl
cnMvZnJlZWJzZC9rdm1fZnJlZWJzZF9jZ28uZ28JMjAyNC0wNy0xMyAyMDoyODozNi4wNjU0
OTgwMDAgKzAyMDAKK0BAIC0wLDAgKzEsNTggQEAKKysvLyBMaWNlbnNlZCB0byBFbGFzdGlj
c2VhcmNoIEIuVi4gdW5kZXIgb25lIG9yIG1vcmUgY29udHJpYnV0b3IKKysvLyBsaWNlbnNl
IGFncmVlbWVudHMuIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAorKy8v
IHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJp
Z2h0CisrLy8gb3duZXJzaGlwLiBFbGFzdGljc2VhcmNoIEIuVi4gbGljZW5zZXMgdGhpcyBm
aWxlIHRvIHlvdSB1bmRlcgorKy8vIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAg
KHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5CisrLy8gbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0
IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKysvLyBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKysvLworKy8vICAgICBodHRwOi8vd3d3LmFwYWNo
ZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKysvLworKy8vIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKysvLyBzb2Z0d2Fy
ZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgor
Ky8vICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9G
IEFOWQorKy8vIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExp
Y2Vuc2UgZm9yIHRoZQorKy8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNz
aW9ucyBhbmQgbGltaXRhdGlvbnMKKysvLyB1bmRlciB0aGUgTGljZW5zZS4KKysKKysvL2dv
OmJ1aWxkIGZyZWVic2QgJiYgY2dvCisrCisrcGFja2FnZSBmcmVlYnNkCisrCisrLyoKKysj
Y2dvIExERkxBR1M6IC1sa3ZtCisrI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorKyNpbmNsdWRl
IDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorKworKyNpbmNsdWRl
IDxwYXRocy5oPgorKyNpbmNsdWRlIDxrdm0uaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+Cisr
Ki8KKytpbXBvcnQgIkMiCisrCisraW1wb3J0ICgKKysJImZtdCIKKysJInVuc2FmZSIKKysK
KysJImdvbGFuZy5vcmcveC9zeXMvdW5peCIKKyspCisrCisrLy8ga3ZtR2V0U3dhcEluZm8g
cmV0dXJucyBzd2FwIHN1bW1hcnkgc3RhdGlzdGljcyBmb3IgdGhlIHN5c3RlbS4gSXQgYWNj
ZXNzZXMKKysvLyB0aGUga2VybmVsIHZpcnR1YWwgbWVtb3J5IChrdm0pIGltYWdlcyBieSB1
c2luZyBsaWJrdm0uCisrZnVuYyBrdm1HZXRTd2FwSW5mbygpICgqa3ZtU3dhcCwgZXJyb3Ip
IHsKKysJLy8gT2J0YWluIGEgS1ZNIGZpbGUgZGVzY3JpcHRvci4KKysJdmFyIGVycnN0ciAq
Qy5jaGFyCisrCWtkIDo9IEMua3ZtX29wZW4obmlsLCBuaWwsIG5pbCwgdW5peC5PX1JET05M
WSwgZXJyc3RyKQorKwlpZiBlcnJzdHIgIT0gbmlsIHsKKysJCXJldHVybiBuaWwsIGZtdC5F
cnJvcmYoImZhaWxlZCBjYWxsaW5nIGt2bV9vcGVuOiAlcyIsIEMuR29TdHJpbmcoZXJyc3Ry
KSkKKysJfQorKwlkZWZlciBDLmt2bV9jbG9zZShrZCkKKysKKysJdmFyIHN3YXAga3ZtU3dh
cAorKwlpZiBuLCBlcnIgOj0gQy5rdm1fZ2V0c3dhcGluZm8oa2QsICgqQy5zdHJ1Y3Rfa3Zt
X3N3YXApKHVuc2FmZS5Qb2ludGVyKCZzd2FwKSksIDEsIDApOyBuICE9IDAgeworKwkJcmV0
dXJuIG5pbCwgZm10LkVycm9yZigiZmFpbGVkIHRvIGdldCBrdm1fZ2V0c3dhcGluZm86ICV3
IiwgZXJyKQorKwl9CisrCisrCXJldHVybiAmc3dhcCwgbmlsCisrfQorZGlmZiAtdXJOIHZl
bmRvci5vcmlnL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3Byb3ZpZGVycy9mcmVl
YnNkL3Byb2Nlc3NfZnJlZWJzZF9jZ28uZ28gdmVuZG9yL2dpdGh1Yi5jb20vZWxhc3RpYy9n
by1zeXNpbmZvL3Byb3ZpZGVycy9mcmVlYnNkL3Byb2Nlc3NfZnJlZWJzZF9jZ28uZ28KKy0t
LSB2ZW5kb3Iub3JpZy9naXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9wcm92aWRlcnMv
ZnJlZWJzZC9wcm9jZXNzX2ZyZWVic2RfY2dvLmdvCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAw
MDAwMDAwICswMTAwCisrKysgdmVuZG9yL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZv
L3Byb3ZpZGVycy9mcmVlYnNkL3Byb2Nlc3NfZnJlZWJzZF9jZ28uZ28JMjAyNC0wNy0xMyAy
MDoyODozNi4wNjU1NzgwMDAgKzAyMDAKK0BAIC0wLDAgKzEsMzg2IEBACisrLy8gTGljZW5z
ZWQgdG8gRWxhc3RpY3NlYXJjaCBCLlYuIHVuZGVyIG9uZSBvciBtb3JlIGNvbnRyaWJ1dG9y
CisrLy8gbGljZW5zZSBhZ3JlZW1lbnRzLiBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1
dGVkIHdpdGgKKysvLyB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVn
YXJkaW5nIGNvcHlyaWdodAorKy8vIG93bmVyc2hpcC4gRWxhc3RpY3NlYXJjaCBCLlYuIGxp
Y2Vuc2VzIHRoaXMgZmlsZSB0byB5b3UgdW5kZXIKKysvLyB0aGUgQXBhY2hlIExpY2Vuc2Us
IFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heQorKy8vIG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisrLy8gWW91
IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisrLy8KKysvLyAgICAgaHR0
cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisrLy8KKysvLyBVbmxl
c3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcs
CisrLy8gc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJp
YnV0ZWQgb24gYW4KKysvLyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1Ig
Q09ORElUSU9OUyBPRiBBTlkKKysvLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKysvLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl
cm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisrLy8gdW5kZXIgdGhlIExpY2Vu
c2UuCisrCisrLy9nbzpidWlsZCBmcmVlYnNkICYmIGNnbworKworK3BhY2thZ2UgZnJlZWJz
ZAorKworK2ltcG9ydCAiQyIKKysKKysvKgorKyNjZ28gTERGTEFHUzogLWxwcm9jc3RhdAor
KyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorKyNp
bmNsdWRlIDxzeXMvdGltZS5oPgorKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKysjaW5jbHVk
ZSA8c3lzL3F1ZXVlLmg+CisrI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKysjaW5jbHVkZSA8
c3lzL3VzZXIuaD4KKysKKysjaW5jbHVkZSA8bGlicHJvY3N0YXQuaD4KKysjaW5jbHVkZSA8
c3RyaW5nLmg+CisrCisrc3RydWN0IGtpbmZvX3Byb2MgZ2V0UHJvY0luZm9BdChzdHJ1Y3Qg
a2luZm9fcHJvYyAqcHJvY3MsIHVuc2lnbmVkIGludCBpbmRleCkgeworKyAgcmV0dXJuIHBy
b2NzW2luZGV4XTsKKyt9CisrCisrdW5zaWduZWQgaW50IGNvdW50QXJyYXlJdGVtcyhjaGFy
ICoqaXRlbXMpIHsKKysgIHVuc2lnbmVkIGludCBpID0gMDsKKysgIGZvciAoaSA9IDA7IGl0
ZW1zW2ldICE9IE5VTEw7ICsraSk7CisrICByZXR1cm4gaTsKKyt9CisrCisrY2hhciAqIGl0
ZW1BdEluZGV4KGNoYXIgKippdGVtcywgdW5zaWduZWQgaW50IGluZGV4KSB7CisrICByZXR1
cm4gaXRlbXNbaW5kZXhdOworK30KKysKKyt1bnNpZ25lZCBpbnQgY291bnRGaWxlU3RhdHMo
c3RydWN0IGZpbGVzdGF0X2xpc3QgKmhlYWQpIHsKKysgIHVuc2lnbmVkIGludCBjb3VudCA9
IDA7CisrICBzdHJ1Y3QgZmlsZXN0YXQgKmZzdDsKKysgIFNUQUlMUV9GT1JFQUNIKGZzdCwg
aGVhZCwgbmV4dCkgeworKyAgICArK2NvdW50OworKyAgfQorKworKyAgcmV0dXJuIGNvdW50
OworK30KKysKKyt2b2lkIGNvcHlGaWxlU3RhdHMoc3RydWN0IGZpbGVzdGF0X2xpc3QgKmhl
YWQsIHN0cnVjdCBmaWxlc3RhdCAqb3V0LCB1bnNpZ25lZCBpbnQgc2l6ZSkgeworKyAgdW5z
aWduZWQgaW50IGluZGV4ID0gMDsKKysgIHN0cnVjdCBmaWxlc3RhdCAqZnN0OworKyAgaWYg
KHNpemUgPT0gMCkgeworKyAgICAgIHJldHVybjsKKysgIH0KKysgIFNUQUlMUV9GT1JFQUNI
KGZzdCwgaGVhZCwgbmV4dCkgeworKyAgICBtZW1jcHkob3V0LCBmc3QsIHNpemVvZigqZnN0
KSk7CisrICAgICsrb3V0OworKyAgICAtLXNpemU7CisrICB9CisrfQorKyovCisraW1wb3J0
ICJDIgorKworK2ltcG9ydCAoCisrCSJlcnJvcnMiCisrCSJmbXQiCisrCSJvcyIKKysJInN0
cmNvbnYiCisrCSJzdHJpbmdzIgorKwkidGltZSIKKysKKysJImdpdGh1Yi5jb20vZWxhc3Rp
Yy9nby1zeXNpbmZvL3R5cGVzIgorKykKKysKKytmdW5jIGdldFByb2NJbmZvKG9wLCBhcmcg
aW50KSAoW11wcm9jZXNzLCBlcnJvcikgeworKwlwcm9jc3RhdCwgZXJyIDo9IEMucHJvY3N0
YXRfb3Blbl9zeXNjdGwoKQorKwlpZiBwcm9jc3RhdCA9PSBuaWwgeworKwkJcmV0dXJuIG5p
bCwgZm10LkVycm9yZigiZmFpbGVkIHRvIG9wZW4gcHJvY3N0YXQgc3lzY3RsOiAldyIsIGVy
cikKKysJfQorKwlkZWZlciBDLnByb2NzdGF0X2Nsb3NlKHByb2NzdGF0KQorKworKwl2YXIg
Y291bnQgQy51aW50ID0gMAorKwlrcHJvY3MsIGVyciA6PSBDLnByb2NzdGF0X2dldHByb2Nz
KHByb2NzdGF0LCBDLmludChvcCksIEMuaW50KGFyZyksICZjb3VudCkKKysJaWYga3Byb2Nz
ID09IG5pbCB7CisrCQlyZXR1cm4gbmlsLCBmbXQuRXJyb3JmKCJnZXRwcm9jcyBmYWlsZWQ6
ICV3IiwgZXJyKQorKwl9CisrCWRlZmVyIEMucHJvY3N0YXRfZnJlZXByb2NzKHByb2NzdGF0
LCBrcHJvY3MpCisrCisrCXByb2NzIDo9IG1ha2UoW11wcm9jZXNzLCBjb3VudCkKKysJdmFy
IGluZGV4IEMudWludAorKwlmb3IgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyBpbmRleCsr
IHsKKysJCXByb2MgOj0gQy5nZXRQcm9jSW5mb0F0KGtwcm9jcywgaW5kZXgpCisrCQlwcm9j
c1tpbmRleF0ua2luZm8gPSBwcm9jCisrCQlwcm9jc1tpbmRleF0ucGlkID0gaW50KHByb2Mu
a2lfcGlkKQorKwl9CisrCisrCXJldHVybiBwcm9jcywgbmlsCisrfQorKworK2Z1bmMgY29w
eUFycmF5KGZyb20gKipDLmNoYXIpIFtdc3RyaW5nIHsKKysJaWYgZnJvbSA9PSBuaWwgewor
KwkJcmV0dXJuIG5pbAorKwl9CisrCisrCWNvdW50IDo9IEMuY291bnRBcnJheUl0ZW1zKGZy
b20pCisrCW91dCA6PSBtYWtlKFtdc3RyaW5nLCBjb3VudCkKKysKKysJZm9yIGluZGV4IDo9
IEMudWludCgwKTsgaW5kZXggPCBjb3VudDsgaW5kZXgrKyB7CisrCQlvdXRbaW5kZXhdID0g
Qy5Hb1N0cmluZyhDLml0ZW1BdEluZGV4KGZyb20sIGluZGV4KSkKKysJfQorKworKwlyZXR1
cm4gb3V0CisrfQorKworK2Z1bmMgbWFrZU1hcChmcm9tIFtdc3RyaW5nKSBtYXBbc3RyaW5n
XXN0cmluZyB7CisrCW91dCA6PSBtYWtlKG1hcFtzdHJpbmddc3RyaW5nLCBsZW4oZnJvbSkp
CisrCisrCWZvciBfLCBlbnYgOj0gcmFuZ2UgZnJvbSB7CisrCQlwYXJ0cyA6PSBzdHJpbmdz
LlNwbGl0KGVudiwgIj0iKQorKwkJaWYgbGVuKHBhcnRzKSA+IDEgeworKwkJCW91dFtwYXJ0
c1swXV0gPSBwYXJ0c1sxXQorKwkJfQorKwl9CisrCisrCXJldHVybiBvdXQKKyt9CisrCisr
ZnVuYyBnZXRQcm9jRW52KHAgKnByb2Nlc3MpIChtYXBbc3RyaW5nXXN0cmluZywgZXJyb3Ip
IHsKKysJcHJvY3N0YXQsIGVyciA6PSBDLnByb2NzdGF0X29wZW5fc3lzY3RsKCkKKysKKysJ
aWYgcHJvY3N0YXQgPT0gbmlsIHsKKysJCXJldHVybiBuaWwsIGZtdC5FcnJvcmYoImZhaWxl
ZCB0byBvcGVuIHByb2NzdGF0IHN5c2N0bDogJXciLCBlcnIpCisrCX0KKysJZGVmZXIgQy5w
cm9jc3RhdF9jbG9zZShwcm9jc3RhdCkKKysKKysJZW52LCBlcnIgOj0gQy5wcm9jc3RhdF9n
ZXRlbnZ2KHByb2NzdGF0LCAmcC5raW5mbywgMCkKKysJZGVmZXIgQy5wcm9jc3RhdF9mcmVl
ZW52dihwcm9jc3RhdCkKKysKKysJcmV0dXJuIG1ha2VNYXAoY29weUFycmF5KGVudikpLCBl
cnIKKyt9CisrCisrZnVuYyBnZXRQcm9jQXJncyhwICpwcm9jZXNzKSAoW11zdHJpbmcsIGVy
cm9yKSB7CisrCXByb2NzdGF0LCBlcnIgOj0gQy5wcm9jc3RhdF9vcGVuX3N5c2N0bCgpCisr
CisrCWlmIHByb2NzdGF0ID09IG5pbCB7CisrCQlyZXR1cm4gbmlsLCBmbXQuRXJyb3JmKCJm
YWlsZWQgdG8gb3BlbiBwcm9jc3RhdCBzeXNjdGw6ICV3IiwgZXJyKQorKwl9CisrCWRlZmVy
IEMucHJvY3N0YXRfY2xvc2UocHJvY3N0YXQpCisrCisrCWFyZ3MsIGVyciA6PSBDLnByb2Nz
dGF0X2dldGFyZ3YocHJvY3N0YXQsICZwLmtpbmZvLCAwKQorKwlkZWZlciBDLnByb2NzdGF0
X2ZyZWVhcmd2KHByb2NzdGF0KQorKworKwlyZXR1cm4gY29weUFycmF5KGFyZ3MpLCBlcnIK
Kyt9CisrCisrZnVuYyBnZXRQcm9jUGF0aG5hbWUocCAqcHJvY2VzcykgKHN0cmluZywgZXJy
b3IpIHsKKysJcHJvY3N0YXQsIGVyciA6PSBDLnByb2NzdGF0X29wZW5fc3lzY3RsKCkKKysK
KysJaWYgcHJvY3N0YXQgPT0gbmlsIHsKKysJCXJldHVybiAiIiwgZm10LkVycm9yZigiZmFp
bGVkIHRvIG9wZW4gcHJvY3N0YXQgc3lzY3RsOiAldyIsIGVycikKKysJfQorKwlkZWZlciBD
LnByb2NzdGF0X2Nsb3NlKHByb2NzdGF0KQorKworKwljb25zdCBtYXhsZW4gPSB1aW50KDEw
MjQpCisrCW91dCA6PSBtYWtlKFtdQy5jaGFyLCBtYXhsZW4pCisrCWlmIHJlcywgZXJyIDo9
IEMucHJvY3N0YXRfZ2V0cGF0aG5hbWUocHJvY3N0YXQsICZwLmtpbmZvLCAmb3V0WzBdLCBD
LnVsb25nKG1heGxlbikpOyByZXMgIT0gMCB7CisrCQlyZXR1cm4gIiIsIGVycgorKwl9Cisr
CXJldHVybiBDLkdvU3RyaW5nKCZvdXRbMF0pLCBuaWwKKyt9CisrCisrZnVuYyBnZXRGaWxl
U3RhdHMoZmlsZVN0YXRzICpDLnN0cnVjdF9maWxlc3RhdF9saXN0KSBbXUMuc3RydWN0X2Zp
bGVzdGF0IHsKKysJY291bnQgOj0gQy5jb3VudEZpbGVTdGF0cyhmaWxlU3RhdHMpCisrCisr
CWlmIGNvdW50IDwgMSB7CisrCQlyZXR1cm4gbmlsCisrCX0KKysKKysJb3V0IDo9IG1ha2Uo
W11DLnN0cnVjdF9maWxlc3RhdCwgY291bnQpCisrCisrCUMuY29weUZpbGVTdGF0cyhmaWxl
U3RhdHMsICZvdXRbMF0sIGNvdW50KQorKwlyZXR1cm4gb3V0CisrfQorKworK2Z1bmMgZ2V0
UHJvY0NXRChwICpwcm9jZXNzKSAoc3RyaW5nLCBlcnJvcikgeworKwlwcm9jc3RhdCwgZXJy
IDo9IEMucHJvY3N0YXRfb3Blbl9zeXNjdGwoKQorKworKwlpZiBwcm9jc3RhdCA9PSBuaWwg
eworKwkJcmV0dXJuICIiLCBmbXQuRXJyb3JmKCJmYWlsZWQgdG8gb3BlbiBwcm9jc3RhdCBz
eXNjdGw6ICV3IiwgZXJyKQorKwl9CisrCWRlZmVyIEMucHJvY3N0YXRfY2xvc2UocHJvY3N0
YXQpCisrCisrCWZzLCBlcnIgOj0gQy5wcm9jc3RhdF9nZXRmaWxlcyhwcm9jc3RhdCwgJnAu
a2luZm8sIDApCisrCWlmIGZzID09IG5pbCB7CisrCQlyZXR1cm4gIiIsIGZtdC5FcnJvcmYo
ImZhaWxlZCB0byBnZXQgZmlsZXM6ICV3IiwgZXJyKQorKwl9CisrCisrCWRlZmVyIEMucHJv
Y3N0YXRfZnJlZWZpbGVzKHByb2NzdGF0LCBmcykKKysKKysJZmlsZXMgOj0gZ2V0RmlsZVN0
YXRzKGZzKQorKwlmb3IgXywgZiA6PSByYW5nZSBmaWxlcyB7CisrCQlpZiBmLmZzX3VmbGFn
cyA9PSBDLlBTX0ZTVF9VRkxBR19DRElSIHsKKysJCQlyZXR1cm4gQy5Hb1N0cmluZyhmLmZz
X3BhdGgpLCBuaWwKKysJCX0KKysJfQorKworKwlyZXR1cm4gIiIsIG5pbAorK30KKysKKyt0
eXBlIHByb2Nlc3Mgc3RydWN0IHsKKysJcGlkICAgaW50CisrCWtpbmZvIEMuc3RydWN0X2tp
bmZvX3Byb2MKKyt9CisrCisrZnVuYyB0aW1ldmFsVG9EdXJhdGlvbih0bSBDLnN0cnVjdF90
aW1ldmFsKSB0aW1lLkR1cmF0aW9uIHsKKysJcmV0dXJuIHRpbWUuRHVyYXRpb24odG0udHZf
c2VjKSp0aW1lLlNlY29uZCArCisrCQl0aW1lLkR1cmF0aW9uKHRtLnR2X3VzZWMpKnRpbWUu
TWljcm9zZWNvbmQKKyt9CisrCisrZnVuYyAocCAqcHJvY2VzcykgQ1BVVGltZSgpICh0eXBl
cy5DUFVUaW1lcywgZXJyb3IpIHsKKysJcHJvY3MsIGVyciA6PSBnZXRQcm9jSW5mbyhDLktF
Uk5fUFJPQ19QSUQsIHAuUElEKCkpCisrCWlmIGVyciAhPSBuaWwgeworKwkJcmV0dXJuIHR5
cGVzLkNQVVRpbWVze30sIGVycgorKwl9CisrCXAua2luZm8gPSBwcm9jc1swXS5raW5mbwor
KworKwlyZXR1cm4gdHlwZXMuQ1BVVGltZXN7CisrCQlVc2VyOiAgIHRpbWV2YWxUb0R1cmF0
aW9uKHAua2luZm8ua2lfcnVzYWdlLnJ1X3V0aW1lKSwKKysJCVN5c3RlbTogdGltZXZhbFRv
RHVyYXRpb24ocC5raW5mby5raV9ydXNhZ2UucnVfc3RpbWUpLAorKwl9LCBuaWwKKyt9Cisr
CisrZnVuYyAocCAqcHJvY2VzcykgSW5mbygpICh0eXBlcy5Qcm9jZXNzSW5mbywgZXJyb3Ip
IHsKKysJcHJvY3MsIGVyciA6PSBnZXRQcm9jSW5mbyhDLktFUk5fUFJPQ19QSUQsIHAuUElE
KCkpCisrCWlmIGVyciAhPSBuaWwgeworKwkJcmV0dXJuIHR5cGVzLlByb2Nlc3NJbmZve30s
IGVycgorKwl9CisrCXAua2luZm8gPSBwcm9jc1swXS5raW5mbworKworKwljd2QsIGVyciA6
PSBnZXRQcm9jQ1dEKHApCisrCWlmIGVyciAhPSBuaWwgeworKwkJcmV0dXJuIHR5cGVzLlBy
b2Nlc3NJbmZve30sIGVycgorKwl9CisrCisrCWFyZ3MsIGVyciA6PSBnZXRQcm9jQXJncyhw
KQorKwlpZiBlcnIgIT0gbmlsIHsKKysJCXJldHVybiB0eXBlcy5Qcm9jZXNzSW5mb3t9LCBl
cnIKKysJfQorKworKwlleGUsIF8gOj0gZ2V0UHJvY1BhdGhuYW1lKHApCisrCisrCXJldHVy
biB0eXBlcy5Qcm9jZXNzSW5mb3sKKysJCU5hbWU6ICAgICAgQy5Hb1N0cmluZygmcC5raW5m
by5raV9jb21tWzBdKSwKKysJCVBJRDogICAgICAgaW50KHAua2luZm8ua2lfcGlkKSwKKysJ
CVBQSUQ6ICAgICAgaW50KHAua2luZm8ua2lfcHBpZCksCisrCQlDV0Q6ICAgICAgIGN3ZCwK
KysJCUV4ZTogICAgICAgZXhlLAorKwkJQXJnczogICAgICBhcmdzLAorKwkJU3RhcnRUaW1l
OiB0aW1lLlVuaXgoaW50NjQocC5raW5mby5raV9zdGFydC50dl9zZWMpLCBpbnQ2NChwLmtp
bmZvLmtpX3N0YXJ0LnR2X3VzZWMpKjEwMDApLAorKwl9LCBuaWwKKyt9CisrCisrZnVuYyAo
cCAqcHJvY2VzcykgTWVtb3J5KCkgKHR5cGVzLk1lbW9yeUluZm8sIGVycm9yKSB7CisrCXBh
Z2VTaXplLCBlcnIgOj0gcGFnZVNpemVCeXRlcygpCisrCWlmIGVyciAhPSBuaWwgeworKwkJ
cmV0dXJuIHR5cGVzLk1lbW9yeUluZm97fSwgZXJyCisrCX0KKysKKysJcHJvY3MsIGVyciA6
PSBnZXRQcm9jSW5mbyhDLktFUk5fUFJPQ19QSUQsIHAuUElEKCkpCisrCWlmIGVyciAhPSBu
aWwgeworKwkJcmV0dXJuIHR5cGVzLk1lbW9yeUluZm97fSwgZXJyCisrCX0KKysJcC5raW5m
byA9IHByb2NzWzBdLmtpbmZvCisrCisrCXJldHVybiB0eXBlcy5NZW1vcnlJbmZveworKwkJ
UmVzaWRlbnQ6IHVpbnQ2NChwLmtpbmZvLmtpX3Jzc2l6ZSkgKiBwYWdlU2l6ZSwKKysJCVZp
cnR1YWw6ICB1aW50NjQocC5raW5mby5raV9zaXplKSwKKysJfSwgbmlsCisrfQorKworK2Z1
bmMgKHAgKnByb2Nlc3MpIFVzZXIoKSAodHlwZXMuVXNlckluZm8sIGVycm9yKSB7CisrCXBy
b2NzLCBlcnIgOj0gZ2V0UHJvY0luZm8oQy5LRVJOX1BST0NfUElELCBwLlBJRCgpKQorKwlp
ZiBlcnIgIT0gbmlsIHsKKysJCXJldHVybiB0eXBlcy5Vc2VySW5mb3t9LCBlcnIKKysJfQor
KworKwlwLmtpbmZvID0gcHJvY3NbMF0ua2luZm8KKysKKysJcmV0dXJuIHR5cGVzLlVzZXJJ
bmZveworKwkJVUlEOiAgc3RyY29udi5Gb3JtYXRVaW50KHVpbnQ2NChwLmtpbmZvLmtpX3J1
aWQpLCAxMCksCisrCQlFVUlEOiBzdHJjb252LkZvcm1hdFVpbnQodWludDY0KHAua2luZm8u
a2lfdWlkKSwgMTApLAorKwkJU1VJRDogc3RyY29udi5Gb3JtYXRVaW50KHVpbnQ2NChwLmtp
bmZvLmtpX3N2dWlkKSwgMTApLAorKwkJR0lEOiAgc3RyY29udi5Gb3JtYXRVaW50KHVpbnQ2
NChwLmtpbmZvLmtpX3JnaWQpLCAxMCksCisrCQlFR0lEOiBzdHJjb252LkZvcm1hdFVpbnQo
dWludDY0KHAua2luZm8ua2lfZ3JvdXBzWzBdKSwgMTApLAorKwkJU0dJRDogc3RyY29udi5G
b3JtYXRVaW50KHVpbnQ2NChwLmtpbmZvLmtpX3N2Z2lkKSwgMTApLAorKwl9LCBuaWwKKyt9
CisrCisrZnVuYyAocCAqcHJvY2VzcykgUElEKCkgaW50IHsKKysJcmV0dXJuIHAucGlkCisr
fQorKworK2Z1bmMgKHAgKnByb2Nlc3MpIE9wZW5IYW5kbGVzKCkgKFtdc3RyaW5nLCBlcnJv
cikgeworKwlwcm9jc3RhdCA6PSBDLnByb2NzdGF0X29wZW5fc3lzY3RsKCkKKysJaWYgcHJv
Y3N0YXQgPT0gbmlsIHsKKysJCXJldHVybiBuaWwsIGVycm9ycy5OZXcoImZhaWxlZCB0byBv
cGVuIHByb2NzdGF0IHN5c2N0bCIpCisrCX0KKysJZGVmZXIgQy5wcm9jc3RhdF9jbG9zZShw
cm9jc3RhdCkKKysKKysJZnMgOj0gQy5wcm9jc3RhdF9nZXRmaWxlcyhwcm9jc3RhdCwgJnAu
a2luZm8sIDApCisrCWRlZmVyIEMucHJvY3N0YXRfZnJlZWZpbGVzKHByb2NzdGF0LCBmcykK
KysKKysJZmlsZXMgOj0gZ2V0RmlsZVN0YXRzKGZzKQorKwluYW1lcyA6PSBtYWtlKFtdc3Ry
aW5nLCAwLCBsZW4oZmlsZXMpKQorKworKwlmb3IgXywgZmlsZSA6PSByYW5nZSBmaWxlcyB7
CisrCQlpZiBmaWxlLmZzX3R5cGUgPT0gMSB7CisrCQkJaWYgcGF0aCA6PSBDLkdvU3RyaW5n
KGZpbGUuZnNfcGF0aCk7IHBhdGggIT0gIiIgeworKwkJCQluYW1lcyA9IGFwcGVuZChuYW1l
cywgcGF0aCkKKysJCQl9CisrCQl9CisrCX0KKysKKysJcmV0dXJuIG5hbWVzLCBuaWwKKyt9
CisrCisrZnVuYyAocCAqcHJvY2VzcykgT3BlbkhhbmRsZUNvdW50KCkgKGludCwgZXJyb3Ip
IHsKKysJcHJvY3N0YXQgOj0gQy5wcm9jc3RhdF9vcGVuX3N5c2N0bCgpCisrCWlmIHByb2Nz
dGF0ID09IG5pbCB7CisrCQlyZXR1cm4gMCwgZXJyb3JzLk5ldygiZmFpbGVkIHRvIG9wZW4g
cHJvY3N0YXQgc3lzY3RsIikKKysJfQorKwlkZWZlciBDLnByb2NzdGF0X2Nsb3NlKHByb2Nz
dGF0KQorKworKwlmcyA6PSBDLnByb2NzdGF0X2dldGZpbGVzKHByb2NzdGF0LCAmcC5raW5m
bywgMCkKKysJZGVmZXIgQy5wcm9jc3RhdF9mcmVlZmlsZXMocHJvY3N0YXQsIGZzKQorKwly
ZXR1cm4gaW50KEMuY291bnRGaWxlU3RhdHMoZnMpKSwgbmlsCisrfQorKworK2Z1bmMgKHAg
KnByb2Nlc3MpIEVudmlyb25tZW50KCkgKG1hcFtzdHJpbmddc3RyaW5nLCBlcnJvcikgewor
KwlyZXR1cm4gZ2V0UHJvY0VudihwKQorK30KKysKKytmdW5jIChzIGZyZWVic2RTeXN0ZW0p
IFByb2Nlc3NlcygpIChbXXR5cGVzLlByb2Nlc3MsIGVycm9yKSB7CisrCXByb2NzLCBlcnIg
Oj0gZ2V0UHJvY0luZm8oQy5LRVJOX1BST0NfUFJPQywgMCkKKysJb3V0IDo9IG1ha2UoW110
eXBlcy5Qcm9jZXNzLCAwLCBsZW4ocHJvY3MpKQorKworKwlmb3IgXywgcHJvYyA6PSByYW5n
ZSBwcm9jcyB7CisrCQlvdXQgPSBhcHBlbmQob3V0LCAmcHJvY2Vzc3sKKysJCQlwaWQ6ICAg
cHJvYy5waWQsCisrCQkJa2luZm86IHByb2Mua2luZm8sCisrCQl9KQorKwl9CisrCisrCXJl
dHVybiBvdXQsIGVycgorK30KKysKKytmdW5jIChzIGZyZWVic2RTeXN0ZW0pIFByb2Nlc3Mo
cGlkIGludCkgKHR5cGVzLlByb2Nlc3MsIGVycm9yKSB7CisrCXJldHVybiAmcHJvY2Vzc3tw
aWQ6IHBpZH0sIG5pbAorK30KKysKKytmdW5jIChzIGZyZWVic2RTeXN0ZW0pIFNlbGYoKSAo
dHlwZXMuUHJvY2VzcywgZXJyb3IpIHsKKysJcmV0dXJuIHMuUHJvY2Vzcyhvcy5HZXRwaWQo
KSkKKyt9CisrCisrZnVuYyAocCAqcHJvY2VzcykgUGFyZW50KCkgKHR5cGVzLlByb2Nlc3Ms
IGVycm9yKSB7CisrCWluZm8sIGVyciA6PSBwLkluZm8oKQorKwlpZiBlcnIgIT0gbmlsIHsK
KysJCXJldHVybiBuaWwsIGVycgorKwl9CisrCisrCXByb2MgOj0gcHJvY2Vzc3twaWQ6IGlu
Zm8uUFBJRH0KKysKKysJcmV0dXJuICZwcm9jLCBuaWwKKyt9CitkaWZmIC11ck4gdmVuZG9y
Lm9yaWcvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vcHJvdmlkZXJzL2ZyZWVic2Qv
c3lzY3RsX2ZyZWVic2QuZ28gdmVuZG9yL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZv
L3Byb3ZpZGVycy9mcmVlYnNkL3N5c2N0bF9mcmVlYnNkLmdvCistLS0gdmVuZG9yLm9yaWcv
Z2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vcHJvdmlkZXJzL2ZyZWVic2Qvc3lzY3Rs
X2ZyZWVic2QuZ28JMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyB2
ZW5kb3IvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vcHJvdmlkZXJzL2ZyZWVic2Qv
c3lzY3RsX2ZyZWVic2QuZ28JMjAyNC0wNy0xMyAyMDoyODozNi4wNjU3MDAwMDAgKzAyMDAK
K0BAIC0wLDAgKzEsMjQ4IEBACisrLy8gTGljZW5zZWQgdG8gRWxhc3RpY3NlYXJjaCBCLlYu
IHVuZGVyIG9uZSBvciBtb3JlIGNvbnRyaWJ1dG9yCisrLy8gbGljZW5zZSBhZ3JlZW1lbnRz
LiBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGgKKysvLyB0aGlzIHdvcmsg
Zm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodAorKy8vIG93
bmVyc2hpcC4gRWxhc3RpY3NlYXJjaCBCLlYuIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byB5b3Ug
dW5kZXIKKysvLyB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vu
c2UiKTsgeW91IG1heQorKy8vIG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlh
bmNlIHdpdGggdGhlIExpY2Vuc2UuCisrLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRo
ZSBMaWNlbnNlIGF0CisrLy8KKysvLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCisrLy8KKysvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJs
ZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisrLy8gc29mdHdhcmUgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKysvLyAiQVMgSVMi
IEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKysvLyBL
SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0
aGUKKysvLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxp
bWl0YXRpb25zCisrLy8gdW5kZXIgdGhlIExpY2Vuc2UuCisrCisrLy9nbzpidWlsZCBmcmVl
YnNkCisrCisrcGFja2FnZSBmcmVlYnNkCisrCisraW1wb3J0ICgKKysJImZtdCIKKysJInN0
cmNvbnYiCisrCSJzdHJpbmdzIgorKwkic3luYyIKKysJInRpbWUiCisrCSJ1bnNhZmUiCisr
CisrCSJnaXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby90eXBlcyIKKysKKysJImdvbGFu
Zy5vcmcveC9zeXMvdW5peCIKKyspCisrCisrdmFyIHRpY2tEdXJhdGlvbiA9IHN5bmMuT25j
ZVZhbHVlcyhmdW5jKCkgKHRpbWUuRHVyYXRpb24sIGVycm9yKSB7CisrCWNvbnN0IG1pYiA9
ICJrZXJuLmNsb2NrcmF0ZSIKKysKKysJYywgZXJyIDo9IHVuaXguU3lzY3RsQ2xvY2tpbmZv
KG1pYikKKysJaWYgZXJyICE9IG5pbCB7CisrCQlyZXR1cm4gMCwgZm10LkVycm9yZigiZmFp
bGVkIHRvIGdldCAlczogJXciLCBtaWIsIGVycikKKysJfQorKwlyZXR1cm4gdGltZS5EdXJh
dGlvbihjLlRpY2spICogdGltZS5NaWNyb3NlY29uZCwgbmlsCisrfSkKKysKKyt2YXIgcGFn
ZVNpemVCeXRlcyA9IHN5bmMuT25jZVZhbHVlcyhmdW5jKCkgKHVpbnQ2NCwgZXJyb3IpIHsK
KysJY29uc3QgbWliID0gInZtLnN0YXRzLnZtLnZfcGFnZV9zaXplIgorKworKwl2LCBlcnIg
Oj0gdW5peC5TeXNjdGxVaW50MzIobWliKQorKwlpZiBlcnIgIT0gbmlsIHsKKysJCXJldHVy
biAwLCBmbXQuRXJyb3JmKCJmYWlsZWQgdG8gZ2V0ICVzOiAldyIsIG1pYiwgZXJyKQorKwl9
CisrCisrCXJldHVybiB1aW50NjQodiksIG5pbAorK30pCisrCisrZnVuYyBhY3RpdmVQYWdl
Q291bnQociAqcmVhZGVyKSB1aW50NjQgeworKwljb25zdCBtaWIgPSAidm0uc3RhdHMudm0u
dl9hY3RpdmVfY291bnQiCisrCisrCXYsIGVyciA6PSB1bml4LlN5c2N0bFVpbnQzMihtaWIp
CisrCWlmIHIuYWRkRXJyKGVycikgeworKwkJcmV0dXJuIDAKKysJfQorKwlyZXR1cm4gdWlu
dDY0KHYpCisrfQorKworK2Z1bmMgYXJjaGl0ZWN0dXJlKCkgKHN0cmluZywgZXJyb3IpIHsK
KysJY29uc3QgbWliID0gImh3Lm1hY2hpbmUiCisrCisrCWFyY2gsIGVyciA6PSB1bml4LlN5
c2N0bChtaWIpCisrCWlmIGVyciAhPSBuaWwgeworKwkJcmV0dXJuICIiLCBmbXQuRXJyb3Jm
KCJmYWlsZWQgdG8gZ2V0IGFyY2hpdGVjdHVyZTogJXciLCBlcnIpCisrCX0KKysKKysJcmV0
dXJuIGFyY2gsIG5pbAorK30KKysKKytmdW5jIGJvb3RUaW1lKCkgKHRpbWUuVGltZSwgZXJy
b3IpIHsKKysJY29uc3QgbWliID0gImtlcm4uYm9vdHRpbWUiCisrCisrCXR2LCBlcnIgOj0g
dW5peC5TeXNjdGxUaW1ldmFsKG1pYikKKysJaWYgZXJyICE9IG5pbCB7CisrCQlyZXR1cm4g
dGltZS5UaW1le30sIGZtdC5FcnJvcmYoImZhaWxlZCB0byBnZXQgaG9zdCB1cHRpbWU6ICV3
IiwgZXJyKQorKwl9CisrCisrCWJvb3RUaW1lIDo9IHRpbWUuVW5peCh0di5TZWMsIHR2LlVz
ZWMqaW50NjQodGltZS5NaWNyb3NlY29uZCkpCisrCXJldHVybiBib290VGltZSwgbmlsCisr
fQorKworKy8vIGJ1ZmZlcnNVc2VkQnl0ZXMgcmV0dXJucyB0aGUgbnVtYmVyIG1lbW9yeSBi
eXRlcyB1c2VkIGFzIGRpc2sgY2FjaGUuCisrZnVuYyBidWZmZXJzVXNlZEJ5dGVzKHIgKnJl
YWRlcikgdWludDY0IHsKKysJY29uc3QgbWliID0gInZmcy5idWZzcGFjZSIKKysKKysJdiwg
ZXJyIDo9IHVuaXguU3lzY3RsVWludDY0KG1pYikKKysJaWYgci5hZGRFcnIoZXJyKSB7Cisr
CQlyZXR1cm4gMAorKwl9CisrCisrCXJldHVybiB2CisrfQorKworK2Z1bmMgY2FjaGVQYWdl
Q291bnQociAqcmVhZGVyKSB1aW50NjQgeworKwljb25zdCBtaWIgPSAidm0uc3RhdHMudm0u
dl9jYWNoZV9jb3VudCIKKysKKysJdiwgZXJyIDo9IHVuaXguU3lzY3RsVWludDMyKG1pYikK
KysJaWYgci5hZGRFcnIoZXJyKSB7CisrCQlyZXR1cm4gMAorKwl9CisrCisrCXJldHVybiB1
aW50NjQodikKKyt9CisrCisrY29uc3Qgc2l6ZU9mVWludDY0ID0gaW50KHVuc2FmZS5TaXpl
b2YodWludDY0KDApKSkKKysKKysvLyBjcHVTdGF0ZVRpbWVzIHVzZXMgc3lzY3RsIGtlcm4u
Y3BfdGltZSB0byBnZXQgdGhlIGFtb3VudCBvZiB0aW1lIHNwZW50IGluCisrLy8gZGlmZmVy
ZW50IENQVSBzdGF0ZXMuCisrZnVuYyBjcHVTdGF0ZVRpbWVzKCkgKCp0eXBlcy5DUFVUaW1l
cywgZXJyb3IpIHsKKysJdGlja0R1cmF0aW9uLCBlcnIgOj0gdGlja0R1cmF0aW9uKCkKKysJ
aWYgZXJyICE9IG5pbCB7CisrCQlyZXR1cm4gbmlsLCBlcnIKKysJfQorKworKwljb25zdCBt
aWIgPSAia2Vybi5jcF90aW1lIgorKwlidWYsIGVyciA6PSB1bml4LlN5c2N0bFJhdyhtaWIp
CisrCWlmIGVyciAhPSBuaWwgeworKwkJcmV0dXJuIG5pbCwgZm10LkVycm9yZigiZmFpbGVk
IHRvIGdldCAlczogJXciLCBtaWIsIGVycikKKysJfQorKworKwl2YXIgY2xvY2tUaWNrcyBb
dW5peC5DUFVTVEFURVNddWludDY0CisrCWlmIGxlbihidWYpIDwgbGVuKGNsb2NrVGlja3Mp
KnNpemVPZlVpbnQ2NCB7CisrCQlyZXR1cm4gbmlsLCBmbXQuRXJyb3JmKCJrZXJuLmNwX3Rp
bWUgZGF0YSBpcyB0b28gc2hvcnQgKGdvdCAlZCBieXRlcykiLCBsZW4oYnVmKSkKKysJfQor
Kwlmb3IgaSA6PSByYW5nZSBjbG9ja1RpY2tzIHsKKysJCXZhbCA6PSAqKCp1aW50NjQpKHVu
c2FmZS5Qb2ludGVyKCZidWZbc2l6ZU9mVWludDY0KmldKSkKKysJCWNsb2NrVGlja3NbaV0g
PSB2YWwKKysJfQorKworKwlyZXR1cm4gJnR5cGVzLkNQVVRpbWVzeworKwkJVXNlcjogICB0
aW1lLkR1cmF0aW9uKGNsb2NrVGlja3NbdW5peC5DUF9VU0VSXSkgKiB0aWNrRHVyYXRpb24s
CisrCQlTeXN0ZW06IHRpbWUuRHVyYXRpb24oY2xvY2tUaWNrc1t1bml4LkNQX1NZU10pICog
dGlja0R1cmF0aW9uLAorKwkJSWRsZTogICB0aW1lLkR1cmF0aW9uKGNsb2NrVGlja3NbdW5p
eC5DUF9JRExFXSkgKiB0aWNrRHVyYXRpb24sCisrCQlJUlE6ICAgIHRpbWUuRHVyYXRpb24o
Y2xvY2tUaWNrc1t1bml4LkNQX0lOVFJdKSAqIHRpY2tEdXJhdGlvbiwKKysJCU5pY2U6ICAg
dGltZS5EdXJhdGlvbihjbG9ja1RpY2tzW3VuaXguQ1BfTklDRV0pICogdGlja0R1cmF0aW9u
LAorKwl9LCBuaWwKKyt9CisrCisrZnVuYyBmcmVlUGFnZUNvdW50KHIgKnJlYWRlcikgdWlu
dDY0IHsKKysJY29uc3QgbWliID0gInZtLnN0YXRzLnZtLnZfZnJlZV9jb3VudCIKKysKKysJ
diwgZXJyIDo9IHVuaXguU3lzY3RsVWludDMyKG1pYikKKysJaWYgci5hZGRFcnIoZXJyKSB7
CisrCQlyZXR1cm4gMAorKwl9CisrCisrCXJldHVybiB1aW50NjQodikKKyt9CisrCisrZnVu
YyBpbmFjdGl2ZVBhZ2VDb3VudChyICpyZWFkZXIpIHVpbnQ2NCB7CisrCWNvbnN0IG1pYiA9
ICJ2bS5zdGF0cy52bS52X2luYWN0aXZlX2NvdW50IgorKworKwl2LCBlcnIgOj0gdW5peC5T
eXNjdGxVaW50MzIobWliKQorKwlpZiByLmFkZEVycihlcnIpIHsKKysJCXJldHVybiAwCisr
CX0KKysKKysJcmV0dXJuIHVpbnQ2NCh2KQorK30KKysKKytmdW5jIGtlcm5lbFZlcnNpb24o
KSAoc3RyaW5nLCBlcnJvcikgeworKwljb25zdCBtaWIgPSAia2Vybi5vc3JlbGVhc2UiCisr
CisrCXZlcnNpb24sIGVyciA6PSB1bml4LlN5c2N0bChtaWIpCisrCWlmIGVyciAhPSBuaWwg
eworKwkJcmV0dXJuICIiLCBmbXQuRXJyb3JmKCJmYWlsZWQgdG8gZ2V0IGtlcm5lbCB2ZXJz
aW9uOiAldyIsIGVycikKKysJfQorKworKwlyZXR1cm4gdmVyc2lvbiwgbmlsCisrfQorKwor
K2Z1bmMgbWFjaGluZUlEKCkgKHN0cmluZywgZXJyb3IpIHsKKysJY29uc3QgbWliID0gImtl
cm4uaG9zdHV1aWQiCisrCisrCXV1aWQsIGVyciA6PSB1bml4LlN5c2N0bChtaWIpCisrCWlm
IGVyciAhPSBuaWwgeworKwkJcmV0dXJuICIiLCBmbXQuRXJyb3JmKCJmYWlsZWQgdG8gZ2V0
IG1hY2hpbmUgaWQ6ICV3IiwgZXJyKQorKwl9CisrCisrCXJldHVybiB1dWlkLCBuaWwKKyt9
CisrCisrZnVuYyBvcGVyYXRpbmdTeXN0ZW0oKSAoKnR5cGVzLk9TSW5mbywgZXJyb3IpIHsK
KysJaW5mbyA6PSAmdHlwZXMuT1NJbmZveworKwkJVHlwZTogICAgICJmcmVlYnNkIiwKKysJ
CUZhbWlseTogICAiZnJlZWJzZCIsCisrCQlQbGF0Zm9ybTogImZyZWVic2QiLAorKwl9Cisr
CisrCW9zVHlwZSwgZXJyIDo9IHVuaXguU3lzY3RsKCJrZXJuLm9zdHlwZSIpCisrCWlmIGVy
ciAhPSBuaWwgeworKwkJcmV0dXJuIGluZm8sIGVycgorKwl9CisrCWluZm8uTmFtZSA9IG9z
VHlwZQorKworKwkvLyBFeGFtcGxlOiAxMy4wLVJFTEVBU0UtcDExCisrCW9zUmVsZWFzZSwg
ZXJyIDo9IHVuaXguU3lzY3RsKCJrZXJuLm9zcmVsZWFzZSIpCisrCWlmIGVyciAhPSBuaWwg
eworKwkJcmV0dXJuIGluZm8sIGVycgorKwl9CisrCWluZm8uVmVyc2lvbiA9IG9zUmVsZWFz
ZQorKworKwlyZWxlYXNlUGFydHMgOj0gc3RyaW5ncy5TcGxpdChvc1JlbGVhc2UsICItIikK
KysKKysJbWFqb3JNaW5vciA6PSBzdHJpbmdzLlNwbGl0KHJlbGVhc2VQYXJ0c1swXSwgIi4i
KQorKwlpZiBsZW4obWFqb3JNaW5vcikgPiAwIHsKKysJCWluZm8uTWFqb3IsIF8gPSBzdHJj
b252LkF0b2kobWFqb3JNaW5vclswXSkKKysJfQorKwlpZiBsZW4obWFqb3JNaW5vcikgPiAx
IHsKKysJCWluZm8uTWlub3IsIF8gPSBzdHJjb252LkF0b2kobWFqb3JNaW5vclsxXSkKKysJ
fQorKworKwlpZiBsZW4ocmVsZWFzZVBhcnRzKSA+IDEgeworKwkJaW5mby5CdWlsZCA9IHJl
bGVhc2VQYXJ0c1sxXQorKwl9CisrCWlmIGxlbihyZWxlYXNlUGFydHMpID4gMiB7CisrCQlp
bmZvLlBhdGNoLCBfID0gc3RyY29udi5BdG9pKHN0cmluZ3MuVHJpbVByZWZpeChyZWxlYXNl
UGFydHNbMl0sICJwIikpCisrCX0KKysKKysJcmV0dXJuIGluZm8sIG5pbAorK30KKysKKytm
dW5jIHRvdGFsUGh5c2ljYWxNZW0ociAqcmVhZGVyKSB1aW50NjQgeworKwljb25zdCBtaWIg
PSAiaHcucGh5c21lbSIKKysKKysJdiwgZXJyIDo9IHVuaXguU3lzY3RsVWludDY0KG1pYikK
KysJaWYgci5hZGRFcnIoZXJyKSB7CisrCQlyZXR1cm4gMAorKwl9CisrCXJldHVybiB2Cisr
fQorKworK2Z1bmMgd2lyZVBhZ2VDb3VudChyICpyZWFkZXIpIHVpbnQ2NCB7CisrCWNvbnN0
IG1pYiA9ICJ2bS5zdGF0cy52bS52X3dpcmVfY291bnQiCisrCisrCXYsIGVyciA6PSB1bml4
LlN5c2N0bFVpbnQzMihtaWIpCisrCWlmIHIuYWRkRXJyKGVycikgeworKwkJcmV0dXJuIDAK
KysJfQorKwlyZXR1cm4gdWludDY0KHYpCisrfQorZGlmZiAtdXJOIHZlbmRvci5vcmlnL2dp
dGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3Byb3ZpZGVycy9mcmVlYnNkL3N5c2N0bF9m
cmVlYnNkX3Rlc3QuZ28gdmVuZG9yL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3By
b3ZpZGVycy9mcmVlYnNkL3N5c2N0bF9mcmVlYnNkX3Rlc3QuZ28KKy0tLSB2ZW5kb3Iub3Jp
Zy9naXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9wcm92aWRlcnMvZnJlZWJzZC9zeXNj
dGxfZnJlZWJzZF90ZXN0LmdvCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAw
CisrKysgdmVuZG9yL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3Byb3ZpZGVycy9m
cmVlYnNkL3N5c2N0bF9mcmVlYnNkX3Rlc3QuZ28JMjAyNC0wNy0xMyAyMDoyODozNi4wNjU4
MDgwMDAgKzAyMDAKK0BAIC0wLDAgKzEsMTM3IEBACisrLy8gTGljZW5zZWQgdG8gRWxhc3Rp
Y3NlYXJjaCBCLlYuIHVuZGVyIG9uZSBvciBtb3JlIGNvbnRyaWJ1dG9yCisrLy8gbGljZW5z
ZSBhZ3JlZW1lbnRzLiBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGgKKysv
LyB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHly
aWdodAorKy8vIG93bmVyc2hpcC4gRWxhc3RpY3NlYXJjaCBCLlYuIGxpY2Vuc2VzIHRoaXMg
ZmlsZSB0byB5b3UgdW5kZXIKKysvLyB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4w
ICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heQorKy8vIG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2Vw
dCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisrLy8gWW91IG1heSBvYnRhaW4g
YSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisrLy8KKysvLyAgICAgaHR0cDovL3d3dy5hcGFj
aGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisrLy8KKysvLyBVbmxlc3MgcmVxdWlyZWQg
YnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisrLy8gc29mdHdh
cmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4K
KysvLyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkKKysvLyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBM
aWNlbnNlIGZvciB0aGUKKysvLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlz
c2lvbnMgYW5kIGxpbWl0YXRpb25zCisrLy8gdW5kZXIgdGhlIExpY2Vuc2UuCisrCisrLy9n
bzpidWlsZCBmcmVlYnNkCisrCisrcGFja2FnZSBmcmVlYnNkCisrCisraW1wb3J0ICgKKysJ
ImVuY29kaW5nL2pzb24iCisrCSJnaXRodWIuY29tL3N0cmV0Y2hyL3Rlc3RpZnkvYXNzZXJ0
IgorKwkiZ2l0aHViLmNvbS9zdHJldGNoci90ZXN0aWZ5L3JlcXVpcmUiCisrCSJvcy9leGVj
IgorKwkic3RyaW5ncyIKKysJInRlc3RpbmciCisrCSJ0aW1lIgorKykKKysKKytmdW5jIFRl
c3RBcmNoaXRlY3R1cmUodCAqdGVzdGluZy5UKSB7CisrCWFyY2gsIGVyciA6PSBhcmNoaXRl
Y3R1cmUoKQorKwlpZiBlcnIgIT0gbmlsIHsKKysJCXQuRmF0YWwoZXJyKQorKwl9CisrCisr
CWFzc2VydC5Ob3RFbXB0eSh0LCBhcmNoKQorKwlhc3NlcnQuUmVnZXhwKHQsIGAoYW1kNjR8
aTM4Nnxwb3dlcnBjfGFybSg2NCk/fHJpc2N2fG1pcHN8c3BhcmM2NHxwYzk4KWAsIGFyY2gp
CisrfQorKworK2Z1bmMgVGVzdEJvb3RUaW1lKHQgKnRlc3RpbmcuVCkgeworKwlib290VGlt
ZSwgZXJyIDo9IGJvb3RUaW1lKCkKKysJaWYgZXJyICE9IG5pbCB7CisrCQl0LkZhdGFsKGVy
cikKKysJfQorKworKwlib290RGlmZiA6PSB0aW1lLlNpbmNlKGJvb3RUaW1lKQorKwkvLyB0
LkxvZ2YoImJvb3RUaW1lIGluIHNlY29uZHM6ICUjdiIsIGludDY0KGJvb3REaWZmLlNlY29u
ZHMoKSkpCisrCisrCWNtZCA6PSBleGVjLkNvbW1hbmQoIi91c3IvYmluL3VwdGltZSIsICIt
LWxpYnhvPWpzb24iKQorKwl1cGNtZCwgZXJyIDo9IGNtZC5PdXRwdXQoKQorKworKwlpZiBl
cnIgIT0gbmlsIHsKKysJCXQuRmF0YWwoZXJyKQorKwl9CisrCisrCXQuTG9nZihzdHJpbmco
dXBjbWQpKQorKworKwl0eXBlIFVwdGltZU91dHB1dCBzdHJ1Y3QgeworKwkJVXB0aW1lSW5m
b3JtYXRpb24gc3RydWN0IHsKKysJCQlVcHRpbWUgaW50NjQgYGpzb246InVwdGltZSJgCisr
CQl9IGBqc29uOiJ1cHRpbWUtaW5mb3JtYXRpb24iYAorKwl9CisrCisrCXZhciB1cEluZm8g
VXB0aW1lT3V0cHV0CisrCWVyciA9IGpzb24uVW5tYXJzaGFsKHVwY21kLCAmdXBJbmZvKQor
KworKwlpZiBlcnIgIT0gbmlsIHsKKysJCXQuRmF0YWwoZXJyKQorKwl9CisrCisrCXVwc2Vj
IDo9IHVwSW5mby5VcHRpbWVJbmZvcm1hdGlvbi5VcHRpbWUKKysJdXB0aW1lIDo9IHRpbWUu
RHVyYXRpb24odXBzZWMgKiBpbnQ2NCh0aW1lLlNlY29uZCkpCisrCS8vIHQuTG9nZigidXB0
aW1lIGluIHNlY29uZHM6ICUjdiIsIGludDY0KHVwdGltZS5TZWNvbmRzKCkpKQorKworKwlh
c3NlcnQuSW5EZWx0YSh0LCB1cHRpbWUsIGJvb3REaWZmLCBmbG9hdDY0KDUqdGltZS5TZWNv
bmQpKQorK30KKysKKytmdW5jIFRlc3RDUFVTdGF0ZVRpbWVzKHQgKnRlc3RpbmcuVCkgewor
Kwl0aW1lcywgZXJyIDo9IGNwdVN0YXRlVGltZXMoKQorKwlpZiBlcnIgIT0gbmlsIHsKKysJ
CXQuRmF0YWwoZXJyKQorKwl9CisrCisrCXJlcXVpcmUuTm90TmlsKHQsIHRpbWVzKQorKwlh
c3NlcnQuTm90WmVybyh0LCAqdGltZXMpCisrfQorKworK2Z1bmMgVGVzdEtlcm5lbFZlcnNp
b24odCAqdGVzdGluZy5UKSB7CisrCWtlcm5lbCwgZXJyIDo9IGtlcm5lbFZlcnNpb24oKQor
KwlpZiBlcnIgIT0gbmlsIHsKKysJCXQuRmF0YWwoZXJyKQorKwl9CisrCisrCS8vIFJldHJp
ZXZlIGN1cnJlbnRseSBydW5uaW5nIGtlcm5lbCB2ZXJzaW9uCisrCWNtZCA6PSBleGVjLkNv
bW1hbmQoIi9iaW4vZnJlZWJzZC12ZXJzaW9uIiwgIi1yIikKKysJZmJzZG91dCwgZXJyIDo9
IGNtZC5PdXRwdXQoKQorKworKwlpZiBlcnIgIT0gbmlsIHsKKysJCXQuRmF0YWwoZXJyKQor
Kwl9CisrCisrCWZic2R2ZXIgOj0gc3RyaW5ncy5UcmltU3VmZml4KHN0cmluZyhmYnNkb3V0
KSwgIlxuIikKKysKKysJYXNzZXJ0Lk5vdEVtcHR5KHQsIGtlcm5lbCkKKysJYXNzZXJ0LkVx
dWFsVmFsdWVzKHQsIGtlcm5lbCwgZmJzZHZlcikKKyt9CisrCisrZnVuYyBUZXN0TWFjaGlu
ZUlEKHQgKnRlc3RpbmcuVCkgeworKwltYWNoaW5lSUQsIGVyciA6PSBtYWNoaW5lSUQoKQor
KwlpZiBlcnIgIT0gbmlsIHsKKysJCXQuRmF0YWwoZXJyKQorKwl9CisrCisrCWFzc2VydC5O
b3RFbXB0eSh0LCBtYWNoaW5lSUQpCisrCWFzc2VydC5SZWdleHAodCwgIl5bYS16QS1aMC05
XXs4fS1bYS16QS1aMC05XXs0fS1bYS16QS1aMC05XXs0fS1bYS16QS1aMC05XXs0fS1bYS16
QS1aMC05XXsxMn0kIiwgbWFjaGluZUlEKQorK30KKysKKytmdW5jIFRlc3RPcGVyYXRpbmdT
eXN0ZW0odCAqdGVzdGluZy5UKSB7CisrCXQuUnVuKCJmcmVlYnNkIiwgZnVuYyh0ICp0ZXN0
aW5nLlQpIHsKKysJCW9zLCBlcnIgOj0gb3BlcmF0aW5nU3lzdGVtKCkKKysJCWlmIGVyciAh
PSBuaWwgeworKwkJCXQuRmF0YWwoZXJyKQorKwkJfQorKwkJYXNzZXJ0LkVxdWFsKHQsICJm
cmVlYnNkIiwgb3MuVHlwZSkKKysJCWFzc2VydC5FcXVhbCh0LCAiZnJlZWJzZCIsIG9zLkZh
bWlseSkKKysJCWFzc2VydC5FcXVhbCh0LCAiZnJlZWJzZCIsIG9zLlBsYXRmb3JtKQorKwkJ
YXNzZXJ0LkVxdWFsKHQsICJGcmVlQlNEIiwgb3MuTmFtZSkKKysJCWFzc2VydC5SZWdleHAo
dCwgYFxkezEsMn1cLlxkezEsMn0tKFJFTEVBU0V8U1RBQkxFfENVUlJFTlR8UkNbMC05XXxB
TFBIQShcZHswLDJ9KXxCRVRBKFxkezAsMn0pKSgtcFxkKT9gLCBvcy5WZXJzaW9uKQorKwkJ
YXNzZXJ0LlJlZ2V4cCh0LCBgXGR7MSwyfWAsIG9zLk1ham9yKQorKwkJYXNzZXJ0LlJlZ2V4
cCh0LCBgXGR7MSwyfWAsIG9zLk1pbm9yKQorKwkJYXNzZXJ0LlJlZ2V4cCh0LCBgXGR7MSwy
fWAsIG9zLlBhdGNoKQorKwkJYXNzZXJ0LlJlZ2V4cCh0LCBgKFJFTEVBU0V8U1RBQkxFfENV
UlJFTlR8UkNbMC05XXxBTFBIQShbMC05XXswLDJ9KXxCRVRBKFswLTldezAsMn0pKWAsIG9z
LkJ1aWxkKQorKwkJdC5Mb2dmKCIlI3YiLCBvcykKKysJfSkKKyt9CitkaWZmIC11ck4gdmVu
ZG9yLm9yaWcvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vcHJvdmlkZXJzL2ZyZWVi
c2QvenR5cGVzX2ZyZWVic2QuZ28gdmVuZG9yL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNp
bmZvL3Byb3ZpZGVycy9mcmVlYnNkL3p0eXBlc19mcmVlYnNkLmdvCistLS0gdmVuZG9yLm9y
aWcvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vcHJvdmlkZXJzL2ZyZWVic2QvenR5
cGVzX2ZyZWVic2QuZ28JMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysr
KyB2ZW5kb3IvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vcHJvdmlkZXJzL2ZyZWVi
c2QvenR5cGVzX2ZyZWVic2QuZ28JMjAyNC0wNy0xMyAyMDoyODozNi4wNjU4ODcwMDAgKzAy
MDAKK0BAIC0wLDAgKzEsMzkgQEAKKysvLyBMaWNlbnNlZCB0byBFbGFzdGljc2VhcmNoIEIu
Vi4gdW5kZXIgb25lIG9yIG1vcmUgY29udHJpYnV0b3IKKysvLyBsaWNlbnNlIGFncmVlbWVu
dHMuIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAorKy8vIHRoaXMgd29y
ayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0CisrLy8g
b3duZXJzaGlwLiBFbGFzdGljc2VhcmNoIEIuVi4gbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlv
dSB1bmRlcgorKy8vIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGlj
ZW5zZSIpOyB5b3UgbWF5CisrLy8gbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKysvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2Yg
dGhlIExpY2Vuc2UgYXQKKysvLworKy8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKKysvLworKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNh
YmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKysvLyBzb2Z0d2FyZSBkaXN0cmli
dXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorKy8vICJBUyBJ
UyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorKy8v
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9y
IHRoZQorKy8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQg
bGltaXRhdGlvbnMKKysvLyB1bmRlciB0aGUgTGljZW5zZS4KKysKKysvLyBDb2RlIGdlbmVy
YXRlZCBieSBjbWQvY2dvIC1nb2RlZnM7IGFuZCB0aGVuIHBhdGNoZWQgdXAgdG8gZml4Cisr
Ly8gYW4gYWxpZ25tZW50IGlzc3VlCisrLy8gY2dvIC1nb2RlZnMgZGVmc19mcmVlYnNkLmdv
CisrCisrcGFja2FnZSBmcmVlYnNkCisrCisrdHlwZSBrdm1Td2FwIHN0cnVjdCB7CisrCURl
dm5hbWUgICBbMzJdaW50OAorKwlVc2VkICAgICAgdWludDMyCisrCVRvdGFsICAgICB1aW50
MzIKKysJRmxhZ3MgICAgIGludDMyCisrCVJlc2VydmVkMSB1aW50MzIKKysJUmVzZXJ2ZWQy
IHVpbnQzMgorK30KKysKKyt0eXBlIGNsb2NrSW5mbyBzdHJ1Y3QgeworKwlIeiAgICAgaW50
MzIKKysJVGljayAgIGludDMyCisrCVNwYXJlICBpbnQzMgorKwlTdGF0aHogaW50MzIKKysJ
UHJvZmh6IGludDMyCisrfQorZGlmZiAtdXJOIHZlbmRvci5vcmlnL2dpdGh1Yi5jb20vZWxh
c3RpYy9nby1zeXNpbmZvL3Byb3ZpZGVycy9zaGFyZWQvZnFkbi5nbyB2ZW5kb3IvZ2l0aHVi
LmNvbS9lbGFzdGljL2dvLXN5c2luZm8vcHJvdmlkZXJzL3NoYXJlZC9mcWRuLmdvCistLS0g
dmVuZG9yLm9yaWcvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vcHJvdmlkZXJzL3No
YXJlZC9mcWRuLmdvCTIwMjQtMDctMTMgMjE6MzQ6MjkuMTA5NjU3MDAwICswMjAwCisrKysg
dmVuZG9yL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3Byb3ZpZGVycy9zaGFyZWQv
ZnFkbi5nbwkyMDI0LTA3LTEzIDIwOjI4OjM2LjA3NzQyMDAwMCArMDIwMAorQEAgLTE1LDcg
KzE1LDcgQEAKKyAvLyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kIGxpbWl0YXRpb25zCisgLy8gdW5kZXIgdGhlIExpY2Vuc2UuCisgCistLy9nbzpidWls
ZCBsaW51eCB8fCBkYXJ3aW4gfHwgYWl4CisrLy9nbzpidWlsZCBsaW51eCB8fCBkYXJ3aW4g
fHwgYWl4IHx8IGZyZWVic2QKKyAKKyBwYWNrYWdlIHNoYXJlZAorIAorZGlmZiAtdXJOIHZl
bmRvci5vcmlnL2dpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3N5c3RlbS5nbyB2ZW5k
b3IvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vc3lzdGVtLmdvCistLS0gdmVuZG9y
Lm9yaWcvZ2l0aHViLmNvbS9lbGFzdGljL2dvLXN5c2luZm8vc3lzdGVtLmdvCTIwMjQtMDct
MTMgMjE6MzQ6MjkuMTEwMDUxMDAwICswMjAwCisrKysgdmVuZG9yL2dpdGh1Yi5jb20vZWxh
c3RpYy9nby1zeXNpbmZvL3N5c3RlbS5nbwkyMDI0LTA3LTEzIDIwOjI4OjM2LjA3OTU0NTAw
MCArMDIwMAorQEAgLTI2LDYgKzI2LDcgQEAKKyAJLy8gUmVnaXN0ZXIgaG9zdCBhbmQgcHJv
Y2VzcyBwcm92aWRlcnMuCisgCV8gImdpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3By
b3ZpZGVycy9haXgiCisgCV8gImdpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3Byb3Zp
ZGVycy9kYXJ3aW4iCisrCV8gImdpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3Byb3Zp
ZGVycy9mcmVlYnNkIgorIAlfICJnaXRodWIuY29tL2VsYXN0aWMvZ28tc3lzaW5mby9wcm92
aWRlcnMvbGludXgiCisgCV8gImdpdGh1Yi5jb20vZWxhc3RpYy9nby1zeXNpbmZvL3Byb3Zp
ZGVycy93aW5kb3dzIgorICkKZGlmZiAtLWdpdCBhL3N5c3V0aWxzL2JlYXRzOC9maWxlcy9w
YXRjaC1saWJiZWF0X2F1dG9kaXNjb3Zlcl9wcm92aWRlcnNfZG9ja2VyX2NvbmZpZy5nbyBi
L3N5c3V0aWxzL2JlYXRzOC9maWxlcy9wYXRjaC1saWJiZWF0X2F1dG9kaXNjb3Zlcl9wcm92
aWRlcnNfZG9ja2VyX2NvbmZpZy5nbwppbmRleCBiNTdjZGQ0NjU4NGQuLmYzYzA3ZjBhYzU5
MyAxMDA2NDQKLS0tIGEvc3lzdXRpbHMvYmVhdHM4L2ZpbGVzL3BhdGNoLWxpYmJlYXRfYXV0
b2Rpc2NvdmVyX3Byb3ZpZGVyc19kb2NrZXJfY29uZmlnLmdvCisrKyBiL3N5c3V0aWxzL2Jl
YXRzOC9maWxlcy9wYXRjaC1saWJiZWF0X2F1dG9kaXNjb3Zlcl9wcm92aWRlcnNfZG9ja2Vy
X2NvbmZpZy5nbwpAQCAtMSwxMyArMSwxMSBAQAotLS0tIGxpYmJlYXQvYXV0b2Rpc2NvdmVy
L3Byb3ZpZGVycy9kb2NrZXIvY29uZmlnLmdvLm9yaWcJMjAyMi0xMC0yNCAwNjo0OTozMSBV
VEMKLSsrKyBsaWJiZWF0L2F1dG9kaXNjb3Zlci9wcm92aWRlcnMvZG9ja2VyL2NvbmZpZy5n
bwotQEAgLTE1LDggKzE1LDggQEAKKy0tLSBsaWJiZWF0L2F1dG9kaXNjb3Zlci9wcm92aWRl
cnMvZG9ja2VyL2NvbmZpZy5nby5vcmlnCTIwMjQtMDctMDkgMDA6MDA6MzYuMDAwMDAwMDAw
ICswMjAwCisrKysgbGliYmVhdC9hdXRvZGlzY292ZXIvcHJvdmlkZXJzL2RvY2tlci9jb25m
aWcuZ28JMjAyNC0wNy0xMyAyMTozODoxMi43MzkwOTAwMDAgKzAyMDAKK0BAIC0xNSw3ICsx
NSw3IEBACiAgLy8gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFu
ZCBsaW1pdGF0aW9ucwogIC8vIHVuZGVyIHRoZSBMaWNlbnNlLgogIAogLS8vZ286YnVpbGQg
bGludXggfHwgZGFyd2luIHx8IHdpbmRvd3MKLS0vLyArYnVpbGQgbGludXggZGFyd2luIHdp
bmRvd3MKICsvL2dvOmJ1aWxkIGxpbnV4IHx8IGRhcndpbiB8fCB3aW5kb3dzIHx8IGZyZWVi
c2QKLSsvLyArYnVpbGQgbGludXggZGFyd2luIHdpbmRvd3MgZnJlZWJzZAogIAogIHBhY2th
Z2UgZG9ja2VyCiAgCmRpZmYgLS1naXQgYS9zeXN1dGlscy9iZWF0czgvZmlsZXMvcGF0Y2gt
bGliYmVhdF9hdXRvZGlzY292ZXJfcHJvdmlkZXJzX2RvY2tlcl9kb2NrZXIuZ28gYi9zeXN1
dGlscy9iZWF0czgvZmlsZXMvcGF0Y2gtbGliYmVhdF9hdXRvZGlzY292ZXJfcHJvdmlkZXJz
X2RvY2tlcl9kb2NrZXIuZ28KaW5kZXggNDY1ZWRkZTQ3ZDEyLi4zNGRjMDdiMDdkYzUgMTAw
NjQ0Ci0tLSBhL3N5c3V0aWxzL2JlYXRzOC9maWxlcy9wYXRjaC1saWJiZWF0X2F1dG9kaXNj
b3Zlcl9wcm92aWRlcnNfZG9ja2VyX2RvY2tlci5nbworKysgYi9zeXN1dGlscy9iZWF0czgv
ZmlsZXMvcGF0Y2gtbGliYmVhdF9hdXRvZGlzY292ZXJfcHJvdmlkZXJzX2RvY2tlcl9kb2Nr
ZXIuZ28KQEAgLTEsMTcgKzEsMTUgQEAKLS0tLSBsaWJiZWF0L2F1dG9kaXNjb3Zlci9wcm92
aWRlcnMvZG9ja2VyL2RvY2tlci5nby5vcmlnCTIwMjItMTAtMjQgMDY6NDk6MzEgVVRDCi0r
KysgbGliYmVhdC9hdXRvZGlzY292ZXIvcHJvdmlkZXJzL2RvY2tlci9kb2NrZXIuZ28KLUBA
IC0xNSw4ICsxNSw4IEBACistLS0gbGliYmVhdC9hdXRvZGlzY292ZXIvcHJvdmlkZXJzL2Rv
Y2tlci9kb2NrZXIuZ28ub3JpZwkyMDI0LTA3LTA5IDAwOjAwOjM2LjAwMDAwMDAwMCArMDIw
MAorKysrIGxpYmJlYXQvYXV0b2Rpc2NvdmVyL3Byb3ZpZGVycy9kb2NrZXIvZG9ja2VyLmdv
CTIwMjQtMDctMTMgMjE6NDA6MjUuOTA4ODQ5MDAwICswMjAwCitAQCAtMTUsNyArMTUsNyBA
QAogIC8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGlt
aXRhdGlvbnMKICAvLyB1bmRlciB0aGUgTGljZW5zZS4KICAKIC0vL2dvOmJ1aWxkIGxpbnV4
IHx8IGRhcndpbiB8fCB3aW5kb3dzCi0tLy8gK2J1aWxkIGxpbnV4IGRhcndpbiB3aW5kb3dz
CiArLy9nbzpidWlsZCBsaW51eCB8fCBkYXJ3aW4gfHwgd2luZG93cyB8fCBmcmVlYnNkCi0r
Ly8gK2J1aWxkIGxpbnV4IGRhcndpbiB3aW5kb3dzIGZyZWVic2QKICAKICBwYWNrYWdlIGRv
Y2tlcgogIAotQEAgLTMzLDcgKzMzLDcgQEAgaW1wb3J0ICgKK0BAIC0zMiw3ICszMiw3IEBA
CiAgCSJnaXRodWIuY29tL2VsYXN0aWMvYmVhdHMvdjcvbGliYmVhdC9jb21tb24iCiAgCiAg
CSJnaXRodWIuY29tL2VsYXN0aWMvZWxhc3RpYy1hZ2VudC1hdXRvZGlzY292ZXIvYnVzIgpk
aWZmIC0tZ2l0IGEvc3lzdXRpbHMvYmVhdHM4L2ZpbGVzL3BhdGNoLWxpYmJlYXRfYXV0b2Rp
c2NvdmVyX3Byb3ZpZGVyc19rdWJlcm5ldGVzX2NvbmZpZy5nbyBiL3N5c3V0aWxzL2JlYXRz
OC9maWxlcy9wYXRjaC1saWJiZWF0X2F1dG9kaXNjb3Zlcl9wcm92aWRlcnNfa3ViZXJuZXRl
c19jb25maWcuZ28KaW5kZXggMzZlZWUwZjljZDkwLi5kOWExNzQzYmZkODcgMTAwNjQ0Ci0t
LSBhL3N5c3V0aWxzL2JlYXRzOC9maWxlcy9wYXRjaC1saWJiZWF0X2F1dG9kaXNjb3Zlcl9w
cm92aWRlcnNfa3ViZXJuZXRlc19jb25maWcuZ28KKysrIGIvc3lzdXRpbHMvYmVhdHM4L2Zp
bGVzL3BhdGNoLWxpYmJlYXRfYXV0b2Rpc2NvdmVyX3Byb3ZpZGVyc19rdWJlcm5ldGVzX2Nv
bmZpZy5nbwpAQCAtMSwxMyArMSwxMSBAQAotLS0tIGxpYmJlYXQvYXV0b2Rpc2NvdmVyL3By
b3ZpZGVycy9rdWJlcm5ldGVzL2NvbmZpZy5nby5vcmlnCTIwMjEtMTItMTcgMTU6NTQ6NDEg
VVRDCi0rKysgbGliYmVhdC9hdXRvZGlzY292ZXIvcHJvdmlkZXJzL2t1YmVybmV0ZXMvY29u
ZmlnLmdvCi1AQCAtMTUsOCArMTUsOCBAQAorLS0tIGxpYmJlYXQvYXV0b2Rpc2NvdmVyL3By
b3ZpZGVycy9rdWJlcm5ldGVzL2NvbmZpZy5nby5vcmlnCTIwMjQtMDctMDkgMDA6MDA6MzYu
MDAwMDAwMDAwICswMjAwCisrKysgbGliYmVhdC9hdXRvZGlzY292ZXIvcHJvdmlkZXJzL2t1
YmVybmV0ZXMvY29uZmlnLmdvCTIwMjQtMDctMTMgMjE6NDI6MzIuNzk5MDAwMDAwICswMjAw
CitAQCAtMTUsNyArMTUsNyBAQAogIC8vIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKICAvLyB1bmRlciB0aGUgTGljZW5zZS4KICAK
IC0vL2dvOmJ1aWxkIGxpbnV4IHx8IGRhcndpbiB8fCB3aW5kb3dzCi0tLy8gK2J1aWxkIGxp
bnV4IGRhcndpbiB3aW5kb3dzCiArLy9nbzpidWlsZCBsaW51eCB8fCBkYXJ3aW4gfHwgd2lu
ZG93cyB8fCBmcmVlYnNkCi0rLy8gK2J1aWxkIGxpbnV4IGRhcndpbiB3aW5kb3dzIGZyZWVi
c2QKICAKICBwYWNrYWdlIGt1YmVybmV0ZXMKICAKZGlmZiAtLWdpdCBhL3N5c3V0aWxzL2Jl
YXRzOC9maWxlcy9wYXRjaC1saWJiZWF0X2F1dG9kaXNjb3Zlcl9wcm92aWRlcnNfa3ViZXJu
ZXRlc19rdWJlcm5ldGVzLmdvIGIvc3lzdXRpbHMvYmVhdHM4L2ZpbGVzL3BhdGNoLWxpYmJl
YXRfYXV0b2Rpc2NvdmVyX3Byb3ZpZGVyc19rdWJlcm5ldGVzX2t1YmVybmV0ZXMuZ28KaW5k
ZXggMDc5NWYyZGU3Yzk4Li44ZjQ0NmRkMGY4ZWIgMTAwNjQ0Ci0tLSBhL3N5c3V0aWxzL2Jl
YXRzOC9maWxlcy9wYXRjaC1saWJiZWF0X2F1dG9kaXNjb3Zlcl9wcm92aWRlcnNfa3ViZXJu
ZXRlc19rdWJlcm5ldGVzLmdvCisrKyBiL3N5c3V0aWxzL2JlYXRzOC9maWxlcy9wYXRjaC1s
aWJiZWF0X2F1dG9kaXNjb3Zlcl9wcm92aWRlcnNfa3ViZXJuZXRlc19rdWJlcm5ldGVzLmdv
CkBAIC0xLDEzICsxLDExIEBACi0tLS0gbGliYmVhdC9hdXRvZGlzY292ZXIvcHJvdmlkZXJz
L2t1YmVybmV0ZXMva3ViZXJuZXRlcy5nby5vcmlnCTIwMjEtMTItMTcgMTU6NTQ6NDEgVVRD
Ci0rKysgbGliYmVhdC9hdXRvZGlzY292ZXIvcHJvdmlkZXJzL2t1YmVybmV0ZXMva3ViZXJu
ZXRlcy5nbwotQEAgLTE1LDggKzE1LDggQEAKKy0tLSBsaWJiZWF0L2F1dG9kaXNjb3Zlci9w
cm92aWRlcnMva3ViZXJuZXRlcy9rdWJlcm5ldGVzLmdvLm9yaWcJMjAyNC0wNy0xMyAyMTo0
NDowMS45ODQxMDMwMDAgKzAyMDAKKysrKyBsaWJiZWF0L2F1dG9kaXNjb3Zlci9wcm92aWRl
cnMva3ViZXJuZXRlcy9rdWJlcm5ldGVzLmdvCTIwMjQtMDctMTMgMjE6NDQ6MDcuNjMzNDcw
MDAwICswMjAwCitAQCAtMTUsNyArMTUsNyBAQAogIC8vIHNwZWNpZmljIGxhbmd1YWdlIGdv
dmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKICAvLyB1bmRlciB0aGUgTGlj
ZW5zZS4KICAKIC0vL2dvOmJ1aWxkIGxpbnV4IHx8IGRhcndpbiB8fCB3aW5kb3dzCi0tLy8g
K2J1aWxkIGxpbnV4IGRhcndpbiB3aW5kb3dzCiArLy9nbzpidWlsZCBsaW51eCB8fCBkYXJ3
aW4gfHwgd2luZG93cyB8fCBmcmVlYnNkCi0rLy8gK2J1aWxkIGxpbnV4IGRhcndpbiB3aW5k
b3dzIGZyZWVic2QKICAKICBwYWNrYWdlIGt1YmVybmV0ZXMKICAKZGlmZiAtLWdpdCBhL3N5
c3V0aWxzL2JlYXRzOC9maWxlcy9wYXRjaC1saWJiZWF0X3NjcmlwdHNfTWFrZWZpbGUgYi9z
eXN1dGlscy9iZWF0czgvZmlsZXMvcGF0Y2gtbGliYmVhdF9zY3JpcHRzX01ha2VmaWxlCmlu
ZGV4IDU5YzY5NWEwNDgyNC4uZjI5OGFkYzBjOWFkIDEwMDY0NAotLS0gYS9zeXN1dGlscy9i
ZWF0czgvZmlsZXMvcGF0Y2gtbGliYmVhdF9zY3JpcHRzX01ha2VmaWxlCisrKyBiL3N5c3V0
aWxzL2JlYXRzOC9maWxlcy9wYXRjaC1saWJiZWF0X3NjcmlwdHNfTWFrZWZpbGUKQEAgLTEs
MTUgKzEsMTUgQEAKLS0tLSBsaWJiZWF0L3NjcmlwdHMvTWFrZWZpbGUub3JpZwkyMDIyLTA5
LTI3IDEzOjE5OjI3IFVUQwotKysrIGxpYmJlYXQvc2NyaXB0cy9NYWtlZmlsZQotQEAgLTQ3
LDcgKzQ3LDcgQEAgR09GSUxFUyA9ICQoc2hlbGwgZmluZCAuIC10eXBlIGYgLW5hbWUgJyou
Z28nIDI+L2Rldi9uCistLS0gbGliYmVhdC9zY3JpcHRzL01ha2VmaWxlLm9yaWcJMjAyNC0w
Ny0wOSAwMDowMDozNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBsaWJiZWF0L3NjcmlwdHMvTWFr
ZWZpbGUJMjAyNC0wNy0xMyAyMTo0NTo0MC43ODg2MjEwMDAgKzAyMDAKK0BAIC00Nyw3ICs0
Nyw3IEBACiAgR09GSUxFU19OT1ZFTkRPUiA9ICQoc2hlbGwgZmluZCAuIC10eXBlIGYgLW5h
bWUgJyouZ28nIC1ub3QgLXBhdGggIiovdmVuZG9yLyoiIDI+L2Rldi9udWxsKQogIEdPRklM
RVNfQUxMID0gJChHT0ZJTEVTKSAkKHNoZWxsIGZpbmQgJChFU19CRUFUUykgLXR5cGUgZiAt
bmFtZSAnKi5nbycgMj4vZGV2L251bGwpCi0gR09QQUNLQUdFU19TVFJFU1NURVNUUz0kKHNo
ZWxsIGZpbmQgLiAtbmFtZSAnKi5nbycgMj4vZGV2L251bGwgfCB4YXJncyBncmVwIC1sICdc
K2J1aWxkLipzdHJlc3N0ZXN0JyB8IHhhcmdzIC1uMSBkaXJuYW1lIHwgdW5pcSkKKyBHT1BB
Q0tBR0VTX1NUUkVTU1RFU1RTPSQoc2hlbGwgZmluZCAuIC10eXBlIGQgXCggLW5hbWUgInN0
cmVzcyIgXCkgMj4vZGV2L251bGwpCiAtU0hFTEw9YmFzaAogK1NIRUxMPXNoCiAgRVNfSE9T
VD89ZWxhc3RpY3NlYXJjaAogIEVTX1BPUlQ/PTkyMDAKICBFU19VU0VSPz1iZWF0cwotQEAg
LTM1MiwxMiArMzUyLDEyIEBAIGlmbmRlZiBFWENMVURFX0NPTU1PTl9VUERBVEVfVEFSR0VU
CitAQCAtMzUyLDEyICszNTIsMTIgQEAKICB1cGRhdGU6IHB5dGhvbi1lbnYgZmllbGRzIGNv
bGxlY3QgY29uZmlnICMjIEBidWlsZCBVcGRhdGUgZXhwZWN0cyB0aGUgbW9zdCByZWNlbnQg
dmVyc2lvbiBvZiBsaWJiZWF0IGluIHRoZSBHT1BBVEgKICAJQGVjaG8gIlVwZGF0aW5nIGdl
bmVyYXRlZCBmaWxlcyBmb3IgJHtCRUFUX05BTUV9IgogIApkaWZmIC0tZ2l0IGEvc3lzdXRp
bHMvYmVhdHM4L2ZpbGVzL3BhdGNoLXZlbmRvcl9naXRodWIuY29tX2dvZGJ1c19kYnVzX3Ry
YW5zcG9ydF9fdW5peGNyZWRfX2ZyZWVic2QuZ28gYi9zeXN1dGlscy9iZWF0czgvZmlsZXMv
cGF0Y2gtdmVuZG9yX2dpdGh1Yi5jb21fZ29kYnVzX2RidXNfdHJhbnNwb3J0X191bml4Y3Jl
ZF9fZnJlZWJzZC5nbwppbmRleCBlOGFjZGYxNDc4MDYuLmNiZDgyNjQzZWZkZiAxMDA2NDQK
LS0tIGEvc3lzdXRpbHMvYmVhdHM4L2ZpbGVzL3BhdGNoLXZlbmRvcl9naXRodWIuY29tX2dv
ZGJ1c19kYnVzX3RyYW5zcG9ydF9fdW5peGNyZWRfX2ZyZWVic2QuZ28KKysrIGIvc3lzdXRp
bHMvYmVhdHM4L2ZpbGVzL3BhdGNoLXZlbmRvcl9naXRodWIuY29tX2dvZGJ1c19kYnVzX3Ry
YW5zcG9ydF9fdW5peGNyZWRfX2ZyZWVic2QuZ28KQEAgLTEsNSArMSw1IEBACi0tLS0gdmVu
ZG9yL2dpdGh1Yi5jb20vZ29kYnVzL2RidXMvdHJhbnNwb3J0X3VuaXhjcmVkX2ZyZWVic2Qu
Z28ub3JpZwkyMDIxLTA4LTA1IDEyOjQwOjM4IFVUQwotKysrIHZlbmRvci9naXRodWIuY29t
L2dvZGJ1cy9kYnVzL3RyYW5zcG9ydF91bml4Y3JlZF9mcmVlYnNkLmdvCistLS0gdmVuZG9y
L2dpdGh1Yi5jb20vZ29kYnVzL2RidXMvdjUvdHJhbnNwb3J0X3VuaXhjcmVkX2ZyZWVic2Qu
Z28ub3JpZwkyMDIxLTA4LTA1IDEyOjQwOjM4IFVUQworKysrIHZlbmRvci9naXRodWIuY29t
L2dvZGJ1cy9kYnVzL3Y1L3RyYW5zcG9ydF91bml4Y3JlZF9mcmVlYnNkLmdvCiBAQCAtOCw3
ICs4LDggQEAKICBwYWNrYWdlIGRidXMKICAK

--------------WqunSiK08hJ8YrcC72nHlyo1--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69051943-d83f-4663-9a7a-fe6f1d096a26>