[office/skrooge] /: AI Assistant

Stéphane MANKOWSKI <[email protected]> Sat, 18 Jul 2026 14:21:33 +0000 (UTC)
Newsgroups gmane.comp.kde.cvs,gmane.comp.kde.doc
Message-ID <[email protected]>
R2l0IGNvbW1pdCAxY2VjYTE0ZWZiY2QxZmIzNThjNTEzNmI2ODg2Mzk0OWFlNjlmZWMzIGJ5IFN0
w6lwaGFuZSBNQU5LT1dTS0kuCkNvbW1pdHRlZCBvbiAxOC8wNy8yMDI2IGF0IDE0OjIxLgpQdXNo
ZWQgYnkgc21hbmtvd3NraSBpbnRvIGJyYW5jaCAnbWFzdGVyJy4KCkFJIEFzc2lzdGFudAoKQSAg
Ky0gICAgLS0gICAgZG9jL2FpX2Fzc2lzdGFudC5wbmcKTSAgKzU0ICAgLTUgICAgZG9jL2luZGV4
LmRvY2Jvb2sKTSAgKzIgICAgLTIgICAgZG9jL2tkZV9kb2Nib29rCkEgICstICAgIC0tICAgIGRv
Yy9zZXR0aW5nc19haV9hc3Npc3RhbnQucG5nCk0gICsyICAgIC0yICAgIHBsdWdpbnMvZ2VuZXJp
Yy9za2dfbW9udGhseS9ncmFudGxlZV9maWx0ZXJzL3NrZ2RvY3VtZW50ZmlsdGVyLmNwcApNICAr
MSAgICAtMCAgICBwbHVnaW5zL3Nrcm9vZ2UvQ01ha2VMaXN0cy50eHQKQSAgKzI2ICAgLTAgICAg
cGx1Z2lucy9za3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQvQ01ha2VMaXN0cy50eHQKQSAgKzIz
ICAgLTAgICAgcGx1Z2lucy9za3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQvbWV0YWRhdGEuanNv
bgpBICArMjIgICAtMCAgICBwbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9za2dh
c3Npc3RhbnRfc2V0dGluZ3Mua2NmZwpBICArNiAgICAtMCAgICBwbHVnaW5zL3Nrcm9vZ2Uvc2ty
b29nZV9haWFzc2lzdGFudC9za2dhc3Npc3RhbnRfc2V0dGluZ3Mua2NmZ2MKQSAgKzEzMyAgLTAg
ICAgcGx1Z2lucy9za3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQvc2tnYXNzaXN0YW50cGx1Z2lu
LmNwcCAgICAgW0xpY2Vuc2U6IEdQTCh2My4wKyldCkEgICs5NyAgIC0wICAgIHBsdWdpbnMvc2ty
b29nZS9za3Jvb2dlX2FpYXNzaXN0YW50L3NrZ2Fzc2lzdGFudHBsdWdpbi5oICAgICBbTGljZW5z
ZTogR1BMKHYzLjArKV0KQSAgKzkxMSAgLTAgICAgcGx1Z2lucy9za3Jvb2dlL3Nrcm9vZ2VfYWlh
c3Npc3RhbnQvc2tnYXNzaXN0YW50cGx1Z2luZG9ja3dpZGdldC5jcHAgICAgIFtMaWNlbnNlOiBH
UEwodjMuMCspXQpBICArODAgICAtMCAgICBwbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lz
dGFudC9za2dhc3Npc3RhbnRwbHVnaW5kb2Nrd2lkZ2V0LmggICAgIFtMaWNlbnNlOiBHUEwodjMu
MCspXQpBICArMzAgICAtMCAgICBwbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9z
a2dhc3Npc3RhbnRwbHVnaW53aWRnZXQuY3BwICAgICBbTGljZW5zZTogR1BMKHYzLjArKV0KQSAg
KzMzICAgLTAgICAgcGx1Z2lucy9za3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQvc2tnYXNzaXN0
YW50cGx1Z2lud2lkZ2V0LmggICAgIFtMaWNlbnNlOiBHUEwodjMuMCspXQpBICArMTkzICAtMCAg
ICBwbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9za2dhc3Npc3RhbnRwbHVnaW53
aWRnZXRfZG9jay51aQpBICArMTM0ICAtMCAgICBwbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFz
c2lzdGFudC9za2dhc3Npc3RhbnRwbHVnaW53aWRnZXRfcHJlZi51aQpBICArMTIgICAtMCAgICBw
bHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9za3Jvb2dlX2FpYXNzaXN0YW50LnJj
CkEgICsyMTggIC0wICAgIHBsdWdpbnMvc2tyb29nZS9za3Jvb2dlX2FpYXNzaXN0YW50L3Nrcm9v
Z2Vfc3lzdGVtX3Byb21wdC5tZApNICArMCAgICAtMSAgICBza2diYW5rbW9kZWxlci9za2dkb2N1
bWVudGJhbmsuY3BwCk0gICs0ICAgIC04ICAgIHNrZ3NxbGNpcGhlci9xNnNxbF9zcWxpdGUuY3Bw
Ck0gICsxICAgIC0xICAgIHNrZ3NxbGNpcGhlci9xNnNxbF9zcWxpdGVfcC5oCgpodHRwczovL2lu
dmVudC5rZGUub3JnL29mZmljZS9za3Jvb2dlLy0vY29tbWl0LzFjZWNhMTRlZmJjZDFmYjM1OGM1
MTM2YjY4ODYzOTQ5YWU2OWZlYzMKCmRpZmYgLS1naXQgYS9kb2MvYWlfYXNzaXN0YW50LnBuZyBi
L2RvYy9haV9hc3Npc3RhbnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MC4uNGU2YzcyZWViCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvZG9jL2FpX2Fzc2lzdGFu
dC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaW5kZXguZG9jYm9vayBiL2RvYy9pbmRleC5k
b2Nib29rCmluZGV4IDlhYTEyZDljOS4uODAzNzczZTg2IDEwMDY0NAotLS0gYS9kb2MvaW5kZXgu
ZG9jYm9vaworKysgYi9kb2MvaW5kZXguZG9jYm9vawpAQCAtMjgxLDYgKzI4MSw3IEBACiAJICAg
IDxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJ1bmRvX3JlZG8iPlRoZSB1bmRvIC8gcmVk
byBicm93c2VyPC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgogCSAgICA8bGlzdGl0ZW0+PHBhcmE+
PGxpbmsgbGlua2VuZD0icHJvcGVydHlfZWRpdG9yIj5UaGUgcHJvcGVydHkgZWRpdG9yPC9saW5r
PjwvcGFyYT48L2xpc3RpdGVtPgogCSAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0i
bWVzc2FnZV9saXN0Ij5UaGUgbWVzc2FnZXMgbGlzdDwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4K
KwkgICAgPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9ImFpX2Fzc2lzdGFudCI+RGlja2Vu
cyAtIEFJIEFzc2lzdGFudDwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KIAkgIDwvaXRlbWl6ZWRs
aXN0PgogCTwvcGFyYT4KICAgICAgIDwvc2VjdDI+CkBAIC0zMzgsOCArMzM5LDggQEAKIAkgIDxt
ZWRpYW9iamVjdD4KIAkgICAgPGltYWdlb2JqZWN0PjxpbWFnZWRhdGEgZmlsZXJlZj0iaGlzdG9y
eV9icm93c2VyLnBuZyIgZm9ybWF0PSJQTkciLz48L2ltYWdlb2JqZWN0PgogCSAgICA8dGV4dG9i
amVjdD48cGhyYXNlPlRoZSBoaXN0b3J5IGJyb3dzZXI8L3BocmFzZT48L3RleHRvYmplY3Q+Ci0J
ICA8L21lZGlhb2JqZWN0PgotCTwvc2NyZWVuc2hvdD4KKwkgICAgPC9tZWRpYW9iamVjdD4KKwkg
IDwvc2NyZWVuc2hvdD4KIAkKIAk8cGFyYT4KIAkgIFRoZSBoaXN0b3J5IGJyb3dzZXIgc2hvd3Mg
dGhyZWUgY29sdW1uczoKQEAgLTQ0Miw2ICs0NDMsMzggQEAKIAkKIAk8cGFyYT5FYWNoIGNvbnRl
eHQgd2lsbCBiZSBkZXNjcmliZWQgaW4gYSBzcGVjaWZpYyBjaGFwdGVyIGluIHRoaXMgaGFuZGJv
b2suPC9wYXJhPgogICAgICAgPC9zZWN0Mj4KKworICAgICAgPHNlY3QyIGlkPSJhaV9hc3Npc3Rh
bnQiPgorCTx0aXRsZT5EaWNrZW5zIC0gQUkgQXNzaXN0YW50PC90aXRsZT4KKwk8cGFyYT4KKwkg
IERpY2tlbnMgaXMgdGhlICZza3Jvb2dlOyBBSSBhc3Npc3RhbnQgZG9jay4gCisJICBZb3UgY2Fu
IHVzZSBpdCB0byBhc2sgcXVlc3Rpb25zIGFib3V0IHRoZSBjdXJyZW50IGRvY3VtZW50LCByZXF1
ZXN0IHN1bW1hcmllcyBvZiB5b3VyIGZpbmFuY2lhbCBzaXR1YXRpb24sIG9yIGFzayBmb3IgaWRl
YXMgc3VjaCBhcyB3YXlzIHRvIHJlZHVjZSBtb250aGx5IGV4cGVuc2VzLiAKKwkgIFRoZSBhc3Np
c3RhbnQga2VlcHMgdGhlIGNvbnZlcnNhdGlvbiBjb250ZXh0LCBzbyBmb2xsb3ctdXAgcXVlc3Rp
b25zIGNhbiByZWZlciB0byBwcmV2aW91cyBhbnN3ZXJzLgorCTwvcGFyYT4KKwk8c2NyZWVuc2hv
dD4KKwkgIDxtZWRpYW9iamVjdD4KKwkgICAgPGltYWdlb2JqZWN0PjxpbWFnZWRhdGEgZmlsZXJl
Zj0iYWlfYXNzaXN0YW50LnBuZyIgZm9ybWF0PSJQTkciLz48L2ltYWdlb2JqZWN0PgorCSAgICA8
dGV4dG9iamVjdD48cGhyYXNlPlRoZSBBSSBhc3Npc3RhbnQgZG9jazwvcGhyYXNlPjwvdGV4dG9i
amVjdD4KKwkgIDwvbWVkaWFvYmplY3Q+CisJPC9zY3JlZW5zaG90PgkKKwk8cGFyYT4KKwkgIFRv
IHVzZSBEaWNrZW5zLCB5b3UgbXVzdCBjb25maWd1cmUgYW4gT3BlbkFJLWNvbXBhdGlibGUgY2hh
dCBjb21wbGV0aW9uIHNlcnZlciBpbiA8bGluayBsaW5rZW5kPSJzZXR0aW5nc19haV9hc3Npc3Rh
bnQiPlNldHRpbmdzPC9saW5rPi4KKwk8L3BhcmE+CisJPHBhcmE+CisJICBXaGVuIHRoZSBhc3Np
c3RhbnQgbmVlZHMgZGF0YSBmcm9tIHlvdXIgZG9jdW1lbnQsIGl0IGNhbiBleGVjdXRlIHJlYWQt
b25seSBTUUxpdGUgcXVlcmllcyBvbiB0aGUgb3BlbmVkICZza3Jvb2dlOyBkYXRhYmFzZS4gT25s
eSBzaW5nbGUgPHVzZXJpbnB1dD5TRUxFQ1Q8L3VzZXJpbnB1dD4gc3RhdGVtZW50cyBhcmUgYWNj
ZXB0ZWQuIElmIGludGVybmV0IHNlYXJjaGVzIGFyZSBlbmFibGVkIGluIHRoZSA8bGluayBsaW5r
ZW5kPSJzZXR0aW5nc19haV9hc3Npc3RhbnQiPnNldHRpbmdzPC9saW5rPiwgdGhlIGFzc2lzdGFu
dCBjYW4gYWxzbyBzZWFyY2ggdGhlIHdlYiB0aHJvdWdoIER1Y2tEdWNrR28gdG8gYW5zd2VyIHF1
ZXN0aW9ucyB0aGF0IHJlcXVpcmUgZXh0ZXJuYWwgb3IgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4K
Kwk8L3BhcmE+CisJPHBhcmE+CisJICBUaGUgZG9jayBwcm92aWRlcyBhIHNlc3Npb24gc2VsZWN0
b3IuIFVzZSA8Z3VpYnV0dG9uPlNhdmUgY3VycmVudCBBSSBzZXNzaW9uPC9ndWlidXR0b24+IHRv
IHN0b3JlIHRoZSBjdXJyZW50IGNvbnZlcnNhdGlvbiBpbiB0aGUgZG9jdW1lbnQsIGFuZCA8Z3Vp
YnV0dG9uPkRlbGV0ZSBBSSBzZXNzaW9uPC9ndWlidXR0b24+IHRvIHJlbW92ZSBhIHNhdmVkIG9u
ZS4gPGd1aWJ1dHRvbj5SZXNldCB0aGUgY3VycmVudCBBSSBzZXNzaW9uPC9ndWlidXR0b24+IGNs
ZWFycyB0aGUgY3VycmVudCBjb252ZXJzYXRpb24uIFlvdSBjYW4gcHJlc3MgPGtleWNvbWJvPiZD
dHJsOzxrZXljYXA+UmV0dXJuPC9rZXljYXA+PC9rZXljb21ibz4gaW4gdGhlIHF1ZXN0aW9uIGVk
aXRvciB0byBzZW5kIHRoZSBxdWVzdGlvbi4KKwk8L3BhcmE+CisJPHBhcmE+CisJICBUaGUgaGVs
cCBidXR0b24gZGlzcGxheXMgZXhhbXBsZSBxdWVzdGlvbnMuIFRoZSA8bGluayBsaW5rZW5kPSJz
ZXR0aW5nc19haV9hc3Npc3RhbnQiPnNldHRpbmdzPC9saW5rPiBidXR0b24gb3BlbnMgdGhlIGFz
c2lzdGFudCBwcmVmZXJlbmNlcy4gVGhlIHJlYXNvbmluZyBzZWxlY3RvciBsZXRzIHlvdSBjaG9v
c2Ugd2hldGhlciB0aGUgYXNzaXN0YW50IHJlYXNvbmluZywgYW5kIG9wdGlvbmFsbHkgdG9vbCBh
bnN3ZXJzLCBhcmUgZGlzcGxheWVkIGluIHRoZSBjb252ZXJzYXRpb24uCisJPC9wYXJhPgorCTxp
bXBvcnRhbnQ+CisJICA8cGFyYT4KKwkgICAgRmluYW5jaWFsIGRvY3VtZW50cyBjYW4gY29udGFp
biBzZW5zaXRpdmUgaW5mb3JtYXRpb24uIFByZWZlciBhIGxvY2FsIHNlcnZlciBpZiB5b3UgZG8g
bm90IHdhbnQgZG9jdW1lbnQgZGF0YSBvciBxdWVzdGlvbnMgdG8gYmUgc2VudCB0byBhIHJlbW90
ZSBzZXJ2aWNlLiBSZXZpZXcgdGhlIGludGVybmV0IHNlYXJjaCBvcHRpb24gYmVmb3JlIGVuYWJs
aW5nIGl0LCBlc3BlY2lhbGx5IHdoZW4geW91ciBxdWVzdGlvbnMgbWF5IGNvbnRhaW4gcGVyc29u
YWwgb3IgZmluYW5jaWFsIGRldGFpbHMuCisJICA8L3BhcmE+CisJPC9pbXBvcnRhbnQ+CisgICAg
ICA8L3NlY3QyPgogICAgICAgCiAgICAgICA8c2VjdDIgaWQ9Im11bHRpLXRhYnMiPgogCTx0aXRs
ZT5NdWx0aXBsZSBUYWJzPC90aXRsZT4KQEAgLTIzMjIsOCArMjM1NSw4IEBAIGZpbGUgaXMgb3Bl
bmVkLiBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRvIGNyZWF0ZSBhIGRpZmZlcmVudCBhY2NvdW50
ICgmZWc7ICJFVEYiCiAJICAgICAgPGltYWdlb2JqZWN0PgogCSAgICAgICAgPGltYWdlZGF0YSBm
aWxlcmVmPSJhc3NpZ25fc2NoZWR1bGUucG5nIiBmb3JtYXQ9IlBORyIvPgogCSAgICAgIDwvaW1h
Z2VvYmplY3Q+Ci0JICAgIDwvbWVkaWFvYmplY3Q+Ci0JICA8L3NjcmVlbnNob3Q+CisJICA8L21l
ZGlhb2JqZWN0PgorCTwvc2NyZWVuc2hvdD4KIAk8L3NlY3QyPgogICAgICAgPC9zZWN0MT4KICAg
ICAgIApAQCAtMjY5Nyw3ICsyNzMwLDIzIEBAIGZpbGUgaXMgb3BlbmVkLiBJdCBpcyBhbHNvIHJl
Y29tbWVuZGVkIHRvIGNyZWF0ZSBhIGRpZmZlcmVudCBhY2NvdW50ICgmZWc7ICJFVEYiCiAgICAg
ICAgICAgICA8L21lZGlhb2JqZWN0PgogICAgICAgICA8L3NjcmVlbnNob3Q+CiAgICAgICAgIDxw
YXJhPllvdSBjYW4gYWN0aXZhdGUgdGhlIGltcG9ydCBiYWNrZW5kcyBmcm9tIHRoZSBsaXN0IGhl
cmUuPC9wYXJhPiAgICAgICAgCi0gICAgICAgIDwvc2VjdDE+ICAgICAgICAgICAgICAgIAorICAg
ICAgICA8L3NlY3QxPiAgICAgCisKKyAgICAgICAgPHNlY3QxIGlkPSJzZXR0aW5nc19haV9hc3Np
c3RhbnQiPgorICAgICAgICA8dGl0bGU+QUkgQXNzaXN0YW50PC90aXRsZT4KKyAgICAgICAgCisg
ICAgICAgIDxzY3JlZW5zaG90PgorICAgICAgICAgICAgPG1lZGlhb2JqZWN0PgorICAgICAgICAg
ICAgPGltYWdlb2JqZWN0PgorICAgICAgICAgICAgICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0ic2V0
dGluZ3NfYWlfYXNzaXN0YW50LnBuZyIgZm9ybWF0PSJQTkciLz4KKyAgICAgICAgICAgIDwvaW1h
Z2VvYmplY3Q+CisgICAgICAgICAgICA8L21lZGlhb2JqZWN0PgorICAgICAgICA8L3NjcmVlbnNo
b3Q+CisJCTxwYXJhPgorCQkJVGhlIHNlcnZlciBVUkwgY2FuIGJlIGEgbG9jYWwgc2VydmVyLCBz
dWNoIGFzIHRoZSBkZWZhdWx0IDx1c2VyaW5wdXQ+aHR0cDovLzEyNy4wLjAuMTo4MDgwPC91c2Vy
aW5wdXQ+LAorCQkJb3IgYSByZW1vdGUgY29tcGF0aWJsZSBzZXJ2aWNlLiBJZiB0aGUgc2Vydmlj
ZSByZXF1aXJlcyBhdXRoZW50aWNhdGlvbiwgZW50ZXIgaXRzIEFQSSB0b2tlbi4KKwkJPC9wYXJh
PiAgICAgCisgICAgICAgIDwvc2VjdDE+ICAJCSAgICAgICAgICAgCiAgICAgPC9jaGFwdGVyPiAg
ICAKICAgICAKICAgICA8Y2hhcHRlciBpZD0iaG93dG8iPgpkaWZmIC0tZ2l0IGEvZG9jL2tkZV9k
b2Nib29rIGIvZG9jL2tkZV9kb2Nib29rCmluZGV4IGU1MjI1OThlNC4uMzExYTNhNzQ5IDEwMDc1
NQotLS0gYS9kb2Mva2RlX2RvY2Jvb2sKKysrIGIvZG9jL2tkZV9kb2Nib29rCkBAIC0zLDcgKzMs
NyBAQAogIyAva2RlX2RvY2Jvb2sgaW5kZXguZG9jYm9vayBpbmRleC5odG1sCiAKICMgTGV0J3Mg
Y2FsbCB0aGUgS0RFIGNhdGFsb2cgZmlyc3QKLWV4cG9ydCBYTUxfQ0FUQUxPR19GSUxFUz0iL3Vz
ci9zaGFyZS9rZjUva2RvY3Rvb2xzL2N1c3RvbWl6YXRpb24vY2F0YWxvZy54bWwiCitleHBvcnQg
WE1MX0NBVEFMT0dfRklMRVM9Ii91c3Ivc2hhcmUva2Y2L2tkb2N0b29scy9jdXN0b21pemF0aW9u
L2NhdGFsb2cueG1sIgogCiAjIENoZWNrIGlmIGRvY2Jvb2sgaXMgd2VsbCBmb3JtZWQKIGVjaG8g
IlJ1bm5pbmcgY2hlY2tYTUzigKYgIjsKQEAgLTE2LDcgKzE2LDcgQEAgZWNobyAiIC0+IE9LICEi
OwogCiAjIENvbnZlcnQgdG8gaHRtbAogZWNobyAiUnVubmluZyB4c2x0cHJvY+KApiAiOwoteHNs
dHByb2MgLW8gJDIgL3Vzci9zaGFyZS9rZjUva2RvY3Rvb2xzL2N1c3RvbWl6YXRpb24va2RlLW5v
Y2h1bmsueHNsICQxOworeHNsdHByb2MgLW8gJDIgL3Vzci9zaGFyZS9rZjYva2RvY3Rvb2xzL2N1
c3RvbWl6YXRpb24va2RlLW5vY2h1bmsueHNsICQxOwogaWYgWyAkPyAtZ3QgMCBdOyB0aGVuCiAg
IGVjaG8gIiAtPiB4c2x0cHJvYyBmYWlsZWQgISI7CiAgIGV4aXQgMTsKZGlmZiAtLWdpdCBhL2Rv
Yy9zZXR0aW5nc19haV9hc3Npc3RhbnQucG5nIGIvZG9jL3NldHRpbmdzX2FpX2Fzc2lzdGFudC5w
bmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5mNjliMmQzN2MKQmluYXJ5
IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9kb2Mvc2V0dGluZ3NfYWlfYXNzaXN0YW50LnBuZyBkaWZm
ZXIKZGlmZiAtLWdpdCBhL3BsdWdpbnMvZ2VuZXJpYy9za2dfbW9udGhseS9ncmFudGxlZV9maWx0
ZXJzL3NrZ2RvY3VtZW50ZmlsdGVyLmNwcCBiL3BsdWdpbnMvZ2VuZXJpYy9za2dfbW9udGhseS9n
cmFudGxlZV9maWx0ZXJzL3NrZ2RvY3VtZW50ZmlsdGVyLmNwcAppbmRleCBhYThiNTcyNzIuLjk2
MDgzNjAyOSAxMDA2NDQKLS0tIGEvcGx1Z2lucy9nZW5lcmljL3NrZ19tb250aGx5L2dyYW50bGVl
X2ZpbHRlcnMvc2tnZG9jdW1lbnRmaWx0ZXIuY3BwCisrKyBiL3BsdWdpbnMvZ2VuZXJpYy9za2df
bW9udGhseS9ncmFudGxlZV9maWx0ZXJzL3NrZ2RvY3VtZW50ZmlsdGVyLmNwcApAQCAtMTc0LDgg
KzE3NCw4IEBAIFFWYXJpYW50IFNLR0R1bXBGaWx0ZXI6OmRvRmlsdGVyKGNvbnN0IFFWYXJpYW50
ICZpbnB1dCwgY29uc3QgUVZhcmlhbnQgJmFyZ3VtZW50CiAgICAgICAgICAgICBpbnQgbmIgPSBt
ZXRhT2JqZWN0LT5wcm9wZXJ0eUNvdW50KCk7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG5iOyArK2kpIHsKICAgICAgICAgICAgICAgICBRVmFyaWFudCB2YWwgPSBTS0dEdW1wRmls
dGVyOjpkb0ZpbHRlcihvYmotPnByb3BlcnR5KG1ldGFPYmplY3QtPnByb3BlcnR5KGkpLm5hbWUo
KSksIFFWYXJpYW50KCksIGF1dG9lc2NhcGUpOwotICAgICAgICAgICAgICAgIHRhYmxlICs9IFFT
dHJpbmdMaXRlcmFsKCI8dHI+PHRkPiIpICUgU0tHU2VydmljZXM6OnN0cmluZ1RvSHRtbChtZXRh
T2JqZWN0LT5wcm9wZXJ0eShpKS5uYW1lKCkpICUgIjwvdGQ+PHRkPiIgJSBTS0dTZXJ2aWNlczo6
c3RyaW5nVG9IdG1sKHZhbC50b1N0cmluZygpKQotICAgICAgICAgICAgICAgICAgICAlICI8L3Rk
PjwvdHI+IjsKKyAgICAgICAgICAgICAgICB0YWJsZSArPSBRU3RyaW5nTGl0ZXJhbCgiPHRyPjx0
ZD4iKSAlIFNLR1NlcnZpY2VzOjpzdHJpbmdUb0h0bWwobWV0YU9iamVjdC0+cHJvcGVydHkoaSku
bmFtZSgpKSAlICI8L3RkPjx0ZD4iCisgICAgICAgICAgICAgICAgICAgICUgU0tHU2VydmljZXM6
OnN0cmluZ1RvSHRtbCh2YWwudG9TdHJpbmcoKSkgJSAiPC90ZD48L3RyPiI7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB0YWJsZSArPSBRU3RyaW5nTGl0ZXJhbCgiPC90YWJsZT4iKTsKICAg
ICAgICAgICAgIHJldHVybiBRVmFyaWFudCh0YWJsZSk7CmRpZmYgLS1naXQgYS9wbHVnaW5zL3Nr
cm9vZ2UvQ01ha2VMaXN0cy50eHQgYi9wbHVnaW5zL3Nrcm9vZ2UvQ01ha2VMaXN0cy50eHQKaW5k
ZXggYzU0YWZhYzkxLi45ZDdhMjNlYTkgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMvc2tyb29nZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9wbHVnaW5zL3Nrcm9vZ2UvQ01ha2VMaXN0cy50eHQKQEAgLTMsNiAr
Myw3IEBACiAjKiBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDI0IEcuIERFIEJVUkUgc3VwcG9y
dEBtYW5rb3dza2kuZnIKICMqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMy4wLW9yLWxh
dGVyCiAjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCitBRERfU1VCRElSRUNUT1JZKHNrcm9vZ2VfYWlhc3Np
c3RhbnQpCiBBRERfU1VCRElSRUNUT1JZKHNrcm9vZ2VfYmFuaykKIEFERF9TVUJESVJFQ1RPUlko
c2tyb29nZV9idWRnZXQpCiBBRERfU1VCRElSRUNUT1JZKHNrcm9vZ2VfY2FsY3VsYXRvcikKZGlm
ZiAtLWdpdCBhL3BsdWdpbnMvc2tyb29nZS9za3Jvb2dlX2FpYXNzaXN0YW50L0NNYWtlTGlzdHMu
dHh0IGIvcGx1Z2lucy9za3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQvQ01ha2VMaXN0cy50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4wMjZiMjEzNjkKLS0tIC9kZXYv
bnVsbAorKysgYi9wbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9DTWFrZUxpc3Rz
LnR4dApAQCAtMCwwICsxLDI2IEBACisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjKiBTUERYLUZpbGVD
b3B5cmlnaHRUZXh0OiAyMDI2IFMuIE1BTktPV1NLSSBzdGVwaGFuZUBtYW5rb3dza2kuZnIKKyMq
IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMy4wLW9yLWxhdGVyCisjKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCitNRVNTQUdFKCBTVEFUVVMgIi4uOjogQ01BS0UgUExVR0lOX0FJQVNTSVNUQU5UIDo6
Li4iKQorCitQUk9KRUNUKHBsdWdpbl9haWFzc2lzdGFudCkKKworTElOS19ESVJFQ1RPUklFUyAo
JHtMSUJSQVJZX09VVFBVVF9QQVRIfSkKKworU0VUKHNrcm9vZ2VfYWlhc3Npc3RhbnRfU1JDUwor
ICAgIHNrZ2Fzc2lzdGFudHBsdWdpbi5jcHAKKyAgICBza2dhc3Npc3RhbnRwbHVnaW53aWRnZXQu
Y3BwCisgICAgc2tnYXNzaXN0YW50cGx1Z2luZG9ja3dpZGdldC5jcHApCisKK2tpMThuX3dyYXBf
dWkoc2tyb29nZV9haWFzc2lzdGFudF9TUkNTIHNrZ2Fzc2lzdGFudHBsdWdpbndpZGdldF9kb2Nr
LnVpKQora2NvbmZpZ19hZGRfa2NmZ19maWxlcyhza3Jvb2dlX2FpYXNzaXN0YW50X1NSQ1Mgc2tn
YXNzaXN0YW50X3NldHRpbmdzLmtjZmdjKQora2kxOG5fd3JhcF91aShza3Jvb2dlX2FpYXNzaXN0
YW50X1NSQ1Mgc2tnYXNzaXN0YW50cGx1Z2lud2lkZ2V0X3ByZWYudWkpCisKK0tDT1JFQURET05T
X0FERF9QTFVHSU4oc2tyb29nZV9haWFzc2lzdGFudCBTT1VSQ0VTICR7c2tyb29nZV9haWFzc2lz
dGFudF9TUkNTfSBJTlNUQUxMX05BTUVTUEFDRSAic2tnX2d1aSIpCitUQVJHRVRfTElOS19MSUJS
QVJJRVMoc2tyb29nZV9haWFzc2lzdGFudCBLRjY6OlBhcnRzIFF0Njo6TmV0d29yayBza2diYXNl
bW9kZWxlciBza2diYXNlZ3VpKQorCisjIyMjIyMjIyMjIyBpbnN0YWxsIGZpbGVzICMjIyMjIyMj
IyMjIyMjIworSU5TVEFMTChGSUxFUyAke1BST0pFQ1RfU09VUkNFX0RJUn0vc2tyb29nZV9haWFz
c2lzdGFudC5yYyAgREVTVElOQVRJT04gICR7S0RFX0lOU1RBTExfS1hNTEdVSURJUn0vc2tyb29n
ZV9haWFzc2lzdGFudCApCitJTlNUQUxMKEZJTEVTICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9za2dh
c3Npc3RhbnRfc2V0dGluZ3Mua2NmZyAgREVTVElOQVRJT04gICR7S0RFX0lOU1RBTExfS0NGR0RJ
Un0gKQorSU5TVEFMTChGSUxFUyBza3Jvb2dlX3N5c3RlbV9wcm9tcHQubWQgIERFU1RJTkFUSU9O
ICAke0tERV9JTlNUQUxMX0RBVEFESVJ9L3Nrcm9vZ2UgKQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9z
a3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQvbWV0YWRhdGEuanNvbiBiL3BsdWdpbnMvc2tyb29n
ZS9za3Jvb2dlX2FpYXNzaXN0YW50L21ldGFkYXRhLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwLi42ZTc0MjEwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL3Nr
cm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9tZXRhZGF0YS5qc29uCkBAIC0wLDAgKzEsMjMgQEAK
K3sKKyAgICAiS1BsdWdpbiI6IHsKKyAgICAgICAgIkF1dGhvcnMiOiBbCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgIkVtYWlsIjogInN0ZXBoYW5lQG1hbmtvd3NraS5mciIsCisgICAg
ICAgICAgICAgICAgIk5hbWUiOiAiU3RlcGhhbmUgTUFOS09XU0tJLG1pcmFrcyIKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgIkNhdGVnb3J5IjogIlBsdWdpbnMiLAorICAgICAg
ICAiRGVzY3JpcHRpb24iOiAiQSBTa3Jvb2dlIEFJIGFzc2lzdGFudCBwbHVnaW4gdXNpbmcgYSBs
b2NhbCBPcGVuQUktY29tcGF0aWJsZSBzZXJ2ZXIiLAorICAgICAgICAiRGVzY3JpcHRpb25bZnJd
IjogIlVuIG1vZHVsZSBkJ2Fzc2lzdGFudCBJQSBwb3VyIFNrcm9vZ2UgdXRpbGlzYW50IHVuIHNl
cnZldXIgbG9jYWwgY29tcGF0aWJsZSBPcGVuQUkiLAorICAgICAgICAiRW5hYmxlZEJ5RGVmYXVs
dCI6IHRydWUsCisgICAgICAgICJJY29uIjogImltLXVzZXIiLAorICAgICAgICAiTGljZW5zZSI6
ICJHUEwiLAorICAgICAgICAiTmFtZSI6ICJTa3Jvb2dlIEFJIGFzc2lzdGFudCBwbHVnaW4iLAor
ICAgICAgICAiU2VydmljZVR5cGVzIjogWworICAgICAgICAgICAgIlNLRyBHVUkvUGx1Z2luIgor
ICAgICAgICBdLAorICAgICAgICAiVmVyc2lvbiI6ICIxLjAiLAorICAgICAgICAiV2Vic2l0ZSI6
ICJodHRwczovL3Nrcm9vZ2Uub3JnLyIKKyAgICB9LAorICAgICJYLUtydW5uZXItSUQiOiAiU2ty
b29nZSBBSSBhc3Npc3RhbnQgcGx1Z2luIgorfQpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9za3Jvb2dl
L3Nrcm9vZ2VfYWlhc3Npc3RhbnQvc2tnYXNzaXN0YW50X3NldHRpbmdzLmtjZmcgYi9wbHVnaW5z
L3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9za2dhc3Npc3RhbnRfc2V0dGluZ3Mua2NmZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjljNDRlMzhmNwotLS0gL2Rldi9u
dWxsCisrKyBiL3BsdWdpbnMvc2tyb29nZS9za3Jvb2dlX2FpYXNzaXN0YW50L3NrZ2Fzc2lzdGFu
dF9zZXR0aW5ncy5rY2ZnCkBAIC0wLDAgKzEsMjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5j
b2Rpbmc9IlVURi04Ij8+Cis8a2NmZyB4bWxucz0iaHR0cDovL3d3dy5rZGUub3JnL3N0YW5kYXJk
cy9rY2ZnLzEuMCIKKyAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxT
Y2hlbWEtaW5zdGFuY2UiCisgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cua2Rl
Lm9yZy9zdGFuZGFyZHMva2NmZy8xLjAKKyAgICAgIGh0dHA6Ly93d3cua2RlLm9yZy9zdGFuZGFy
ZHMva2NmZy8xLjAva2NmZy54c2QiID4KKyAgPGtjZmdmaWxlLz4KKyAgPGdyb3VwIG5hbWU9InNr
cm9vZ2VfYWlhc3Npc3RhbnQiPgorICAgIDxlbnRyeSBuYW1lPSJzZXJ2ZXJVcmwiIHR5cGU9IlN0
cmluZyI+CisgICAgICA8ZGVmYXVsdD5odHRwOi8vMTI3LjAuMC4xOjgwODA8L2RlZmF1bHQ+Cisg
ICAgPC9lbnRyeT4KKyAgICA8ZW50cnkgbmFtZT0iYXBpVG9rZW4iIHR5cGU9IlN0cmluZyI+Cisg
ICAgICA8ZGVmYXVsdD48L2RlZmF1bHQ+CisgICAgPC9lbnRyeT4KKyAgICA8ZW50cnkgbmFtZT0i
ZW5hYmxlV2ViU2VhcmNoIiB0eXBlPSJCb29sIj4KKyAgICAgIDxkZWZhdWx0PnRydWU8L2RlZmF1
bHQ+CisgICAgPC9lbnRyeT4KKyAgICA8ZW50cnkgbmFtZT0iZmFtaWx5U2l0dWF0aW9uIiB0eXBl
PSJTdHJpbmciPgorICAgICAgPGxhYmVsPkZhbWlseSBTaXR1YXRpb248L2xhYmVsPgorICAgICAg
PGRlZmF1bHQ+PC9kZWZhdWx0PgorICAgIDwvZW50cnk+CisgIDwvZ3JvdXA+Cis8L2tjZmc+CmRp
ZmYgLS1naXQgYS9wbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9za2dhc3Npc3Rh
bnRfc2V0dGluZ3Mua2NmZ2MgYi9wbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9z
a2dhc3Npc3RhbnRfc2V0dGluZ3Mua2NmZ2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwLi45ODc1MGI4NTMKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL3Nrcm9vZ2Uvc2ty
b29nZV9haWFzc2lzdGFudC9za2dhc3Npc3RhbnRfc2V0dGluZ3Mua2NmZ2MKQEAgLTAsMCArMSw2
IEBACisjIENvZGUgZ2VuZXJhdGlvbiBvcHRpb25zIGZvciBrY29uZmlnX2NvbXBpbGVyCitGaWxl
PXNrZ2Fzc2lzdGFudF9zZXR0aW5ncy5rY2ZnCitDbGFzc05hbWU9c2tnYXNzaXN0YW50X3NldHRp
bmdzCitTaW5nbGV0b249dHJ1ZQorTXV0YXRvcnM9Y29sX2JhY2tncm91bmQsY29sX2ZvcmVncm91
bmQKKyMgd2lsbCBjcmVhdGUgdGhlIG5lY2Vzc2FyeSBjb2RlIGZvciBzZXR0aW5nIHRob3NlIHZh
cmlhYmxlcwpkaWZmIC0tZ2l0IGEvcGx1Z2lucy9za3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQv
c2tnYXNzaXN0YW50cGx1Z2luLmNwcCBiL3BsdWdpbnMvc2tyb29nZS9za3Jvb2dlX2FpYXNzaXN0
YW50L3NrZ2Fzc2lzdGFudHBsdWdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwLi5iYWQxMmMzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL3Nrcm9vZ2Uvc2ty
b29nZV9haWFzc2lzdGFudC9za2dhc3Npc3RhbnRwbHVnaW4uY3BwCkBAIC0wLDAgKzEsMTMzIEBA
CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCisgKiBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDI2IFMu
IE1BTktPV1NLSSBzdGVwaGFuZUBtYW5rb3dza2kuZnIKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlm
aWVyOiBHUEwtMy4wLW9yLWxhdGVyCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqIEBmaWxlCisg
KiBUaGlzIGZpbGUgaXMgU2tyb29nZSBwbHVnaW4gZm9yIEFJIGFzc2lzdGFudC4KKyAqCisgKiBA
YXV0aG9yIFN0ZXBoYW5lIE1BTktPV1NLSQorICovCisjaW5jbHVkZSAic2tnYXNzaXN0YW50cGx1
Z2luLmgiCisKKyNpbmNsdWRlIDxrYWN0aW9uY29sbGVjdGlvbi5oPgorI2luY2x1ZGUgPGtwbHVn
aW5mYWN0b3J5Lmg+CisKKyNpbmNsdWRlIDxxYWN0aW9uLmg+CisjaW5jbHVkZSA8cWRvY2t3aWRn
ZXQuaD4KKworI2luY2x1ZGUgInNrZ2Fzc2lzdGFudF9zZXR0aW5ncy5oIgorI2luY2x1ZGUgInNr
Z2Fzc2lzdGFudHBsdWdpbmRvY2t3aWRnZXQuaCIKKyNpbmNsdWRlICJza2dhc3Npc3RhbnRwbHVn
aW53aWRnZXQuaCIKKyNpbmNsdWRlICJza2dtYWlucGFuZWwuaCIKKyNpbmNsdWRlICJza2d0cmFj
ZXMuaCIKKworLyoqCisgKiBUaGlzIHBsdWdpbiBmYWN0b3J5LgorICovCitLX1BMVUdJTl9DTEFT
U19XSVRIX0pTT04oU0tHQXNzaXN0YW50UGx1Z2luLCAibWV0YWRhdGEuanNvbiIpCisKK1NLR0Fz
c2lzdGFudFBsdWdpbjo6U0tHQXNzaXN0YW50UGx1Z2luKFFXaWRnZXQgKmlXaWRnZXQsIFFPYmpl
Y3QgKmlQYXJlbnQsIGNvbnN0IEtQbHVnaW5NZXRhRGF0YSAmIC8qbWV0YURhdGEqLywgY29uc3Qg
UVZhcmlhbnRMaXN0ICYgLyppQXJnKi8pCisgICAgOiBTS0dJbnRlcmZhY2VQbHVnaW4oaVBhcmVu
dCkKKyAgICAsIG1fY3VycmVudERvY3VtZW50KG51bGxwdHIpCisgICAgLCBtX2RvY2tXaWRnZXQo
bnVsbHB0cikKK3sKKyAgICBRX1VOVVNFRChpV2lkZ2V0KQorICAgIFNLR1RSQUNFSU5GVU5DKDEw
KQorfQorCitTS0dBc3Npc3RhbnRQbHVnaW46On5TS0dBc3Npc3RhbnRQbHVnaW4oKQoreworICAg
IFNLR1RSQUNFSU5GVU5DKDEwKQorICAgIG1fY3VycmVudERvY3VtZW50ID0gbnVsbHB0cjsKKyAg
ICBtX2RvY2tXaWRnZXQgPSBudWxscHRyOworfQorCitib29sIFNLR0Fzc2lzdGFudFBsdWdpbjo6
c2V0dXBBY3Rpb25zKFNLR0RvY3VtZW50ICppRG9jdW1lbnQpCit7CisgICAgU0tHVFJBQ0VJTkZV
TkMoMTApCisKKyAgICBtX2N1cnJlbnREb2N1bWVudCA9IGlEb2N1bWVudDsKKyAgICBpZiAobV9j
dXJyZW50RG9jdW1lbnQgPT0gbnVsbHB0cikgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgc2V0Q29tcG9uZW50TmFtZShRU3RyaW5nTGl0ZXJhbCgic2tyb29nZV9haWFzc2lz
dGFudCIpLCB0aXRsZSgpKTsKKyAgICBzZXRYTUxGaWxlKFFTdHJpbmdMaXRlcmFsKCJza3Jvb2dl
X2FpYXNzaXN0YW50LnJjIikpOworCisgICAgYXV0byBkb2NrQ29udGVudCA9IG5ldyBTS0dBc3Np
c3RhbnRQbHVnaW5Eb2NrV2lkZ2V0KFNLR01haW5QYW5lbDo6Z2V0TWFpblBhbmVsKCksIG1fY3Vy
cmVudERvY3VtZW50KTsKKyAgICBpZiAoZG9ja0NvbnRlbnQgIT0gbnVsbHB0cikgeworICAgICAg
ICBtX2RvY2tXaWRnZXQgPSBuZXcgUURvY2tXaWRnZXQoU0tHTWFpblBhbmVsOjpnZXRNYWluUGFu
ZWwoKSk7CisgICAgICAgIGlmIChtX2RvY2tXaWRnZXQgIT0gbnVsbHB0cikgeworICAgICAgICAg
ICAgbV9kb2NrV2lkZ2V0LT5zZXRPYmplY3ROYW1lKFFTdHJpbmdMaXRlcmFsKCJza2dfYWlhc3Np
c3RhbnRfZG9jd2lkZ2V0IikpOworICAgICAgICAgICAgbV9kb2NrV2lkZ2V0LT5zZXRBbGxvd2Vk
QXJlYXMoUXQ6OkxlZnREb2NrV2lkZ2V0QXJlYSB8IFF0OjpSaWdodERvY2tXaWRnZXRBcmVhKTsK
KyAgICAgICAgICAgIG1fZG9ja1dpZGdldC0+c2V0V2luZG93VGl0bGUodGl0bGUoKSk7CisgICAg
ICAgICAgICBtX2RvY2tXaWRnZXQtPnNldFdpZGdldChkb2NrQ29udGVudCk7CisKKyAgICAgICAg
ICAgIFFBY3Rpb24gKnRvZ2dsZSA9IG1fZG9ja1dpZGdldC0+dG9nZ2xlVmlld0FjdGlvbigpOwor
ICAgICAgICAgICAgUUFjdGlvbiAqcGFuZWxBY3Rpb24gPSBhY3Rpb25Db2xsZWN0aW9uKCktPmFk
ZEFjdGlvbihRU3RyaW5nTGl0ZXJhbCgidmlld19haWFzc2lzdGFudCIpKTsKKyAgICAgICAgICAg
IHJlZ2lzdGVyR2xvYmFsQWN0aW9uKFFTdHJpbmdMaXRlcmFsKCJ2aWV3X2FpYXNzaXN0YW50Iiks
IHBhbmVsQWN0aW9uKTsKKyAgICAgICAgICAgIHBhbmVsQWN0aW9uLT5zZXRDaGVja2FibGUodHJ1
ZSk7CisgICAgICAgICAgICBwYW5lbEFjdGlvbi0+c2V0Q2hlY2tlZCh0b2dnbGUtPmlzQ2hlY2tl
ZCgpKTsKKyAgICAgICAgICAgIHBhbmVsQWN0aW9uLT5zZXRUZXh0KHRvZ2dsZS0+dGV4dCgpKTsK
KyAgICAgICAgICAgIGNvbm5lY3QocGFuZWxBY3Rpb24sICZRQWN0aW9uOjp0cmlnZ2VyZWQsIHRv
Z2dsZSwgJlFBY3Rpb246OnRyaWdnZXIpOworICAgICAgICAgICAgY29ubmVjdCh0b2dnbGUsICZR
QWN0aW9uOjp0b2dnbGVkLCBwYW5lbEFjdGlvbiwgJlFBY3Rpb246OnNldENoZWNrZWQpOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1NLR1RhYlBhZ2UgKlNLR0Fz
c2lzdGFudFBsdWdpbjo6Z2V0V2lkZ2V0KCkKK3sKKyAgICBTS0dUUkFDRUlORlVOQygxMCkKKyAg
ICByZXR1cm4gbmV3IFNLR0Fzc2lzdGFudFBsdWdpbldpZGdldChTS0dNYWluUGFuZWw6OmdldE1h
aW5QYW5lbCgpLCBtX2N1cnJlbnREb2N1bWVudCk7Cit9CisKK1FEb2NrV2lkZ2V0ICpTS0dBc3Np
c3RhbnRQbHVnaW46OmdldERvY2tXaWRnZXQoKQoreworICAgIFNLR1RSQUNFSU5GVU5DKDEwKQor
ICAgIHJldHVybiBtX2RvY2tXaWRnZXQ7Cit9CisKK1FXaWRnZXQgKlNLR0Fzc2lzdGFudFBsdWdp
bjo6Z2V0UHJlZmVyZW5jZVdpZGdldCgpCit7CisgICAgU0tHVFJBQ0VJTkZVTkMoMTApCisgICAg
UVdpZGdldCAqdyA9IG5ldyBRV2lkZ2V0KCk7CisgICAgdWkuc2V0dXBVaSh3KTsKKyAgICBRU3Ry
aW5nTGlzdCBtb2RlbHMgPSBRU3RyaW5nTGlzdCgpIDw8IFFTdHJpbmdMaXRlcmFsKCJnb29nbGUv
Z2VtbWEtNC0xMmItcWF0IikgPDwgUVN0cmluZ0xpdGVyYWwoInF3ZW4vcXdlbjIuNS1jb2Rlci0x
NGIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgUVN0cmluZ0xp
dGVyYWwoInF3ZW4vcXdlbjMuNS05YiIpOworICAgIHVpLmtMYWJlbC0+c2V0VGV4dChpMThuYygi
TGFiZWwgZm9yIHRoZSBBSSBhc3Npc3RhbnQgcGx1Z2luIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIjxwPjxzdHJvbmc+RGlja2Vuczwvc3Ryb25nPiBpcyB5b3VyIEFJIGNvbXBhbmlv
bi4gVG8gZW5hYmxlIGl0LCB5b3UgbXVzdCBzcGVjaWZ5IGFuIDxzdHJvbmc+T3BlbkFJPC9zdHJv
bmc+LWNvbXBhdGlibGUgc2VydmVyLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZ
b3UgY2FuIHVzZSBhIHJlbW90ZSBzZXJ2ZXIsIGJ1dCBmb3IgcmVhc29ucyBvZiBjb25maWRlbnRp
YWxpdHkgcmVnYXJkaW5nIHlvdXIgc2Vuc2l0aXZlIGRhdGEsIGl0IGlzIHJlY29tbWVuZGVkIHRv
IHVzZSBhIGxvY2FsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uZS48L3A+RXhh
bXBsZSBvZiB3b3JraW5nIHdlbGwgbG9jYWwgbW9kZWxzOjxicj4lMSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vZGVscy5qb2luKFFTdHJpbmdMaXRlcmFsKCIsICIpKSkpOworICAg
IHJldHVybiB3OworfQorCitLQ29uZmlnU2tlbGV0b24gKlNLR0Fzc2lzdGFudFBsdWdpbjo6Z2V0
UHJlZmVyZW5jZVNrZWxldG9uKCkKK3sKKyAgICBTS0dUUkFDRUlORlVOQygxMCkKKyAgICByZXR1
cm4gc2tnYXNzaXN0YW50X3NldHRpbmdzOjpzZWxmKCk7Cit9CisKK1FTdHJpbmcgU0tHQXNzaXN0
YW50UGx1Z2luOjp0aXRsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGkxOG5jKCJOb3VuLCBzb21l
dGhpbmcgdXNlZCB0byBhc3Npc3QgdGhlIHVzZXIiLCAiRGlja2VucyAtIEFJIEFzc2lzdGFudCIp
OworfQorCitRU3RyaW5nIFNLR0Fzc2lzdGFudFBsdWdpbjo6aWNvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFFTdHJpbmdMaXRlcmFsKCJxYSIpOworfQorCitpbnQgU0tHQXNzaXN0YW50UGx1Z2lu
OjpnZXRPcmRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIDIwMDsKK30KKworYm9vbCBTS0dBc3Np
c3RhbnRQbHVnaW46OmlzSW5QYWdlc0Nob29zZXIoKSBjb25zdAoreworICAgIHJldHVybiB0cnVl
OworfQorCisjaW5jbHVkZSAic2tnYXNzaXN0YW50cGx1Z2luLm1vYyIKZGlmZiAtLWdpdCBhL3Bs
dWdpbnMvc2tyb29nZS9za3Jvb2dlX2FpYXNzaXN0YW50L3NrZ2Fzc2lzdGFudHBsdWdpbi5oIGIv
cGx1Z2lucy9za3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQvc2tnYXNzaXN0YW50cGx1Z2luLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4zYWQzZWIzZWEKLS0tIC9kZXYv
bnVsbAorKysgYi9wbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9za2dhc3Npc3Rh
bnRwbHVnaW4uaApAQCAtMCwwICsxLDk3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBTUERY
LUZpbGVDb3B5cmlnaHRUZXh0OiAyMDI2IFMuIE1BTktPV1NLSSBzdGVwaGFuZUBtYW5rb3dza2ku
ZnIKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMy4wLW9yLWxhdGVyCisgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLworI2lmbmRlZiBTS0dBU1NJU1RBTlRQTFVHSU5fSAorI2RlZmluZSBTS0dB
U1NJU1RBTlRQTFVHSU5fSAorLyoqIEBmaWxlCisgKiBBbiBBSSBhc3Npc3RhbnQgcGx1Z2luLgor
ICovCisjaW5jbHVkZSAic2tnaW50ZXJmYWNlcGx1Z2luLmgiCisjaW5jbHVkZSAidWlfc2tnYXNz
aXN0YW50cGx1Z2lud2lkZ2V0X3ByZWYuaCIKKworY2xhc3MgUURvY2tXaWRnZXQ7CisKKy8qKgor
ICogQW4gQUkgYXNzaXN0YW50IHBsdWdpbgorICovCitjbGFzcyBTS0dBc3Npc3RhbnRQbHVnaW4g
OiBwdWJsaWMgU0tHSW50ZXJmYWNlUGx1Z2luCit7CisgICAgUV9PQkpFQ1QKKyAgICBRX0lOVEVS
RkFDRVMoU0tHSW50ZXJmYWNlUGx1Z2luKQorCitwdWJsaWM6CisgICAgLyoqCisgICAgICogRGVm
YXVsdCBDb25zdHJ1Y3RvcgorICAgICAqLworICAgIGV4cGxpY2l0IFNLR0Fzc2lzdGFudFBsdWdp
bihRV2lkZ2V0ICppV2lkZ2V0LCBRT2JqZWN0ICppUGFyZW50LCBjb25zdCBLUGx1Z2luTWV0YURh
dGEgJm1ldGFEYXRhLCBjb25zdCBRVmFyaWFudExpc3QgJmlBcmcpOworCisgICAgLyoqCisgICAg
ICogRGVmYXVsdCBEZXN0cnVjdG9yCisgICAgICovCisgICAgflNLR0Fzc2lzdGFudFBsdWdpbigp
IG92ZXJyaWRlOworCisgICAgLyoqCisgICAgICogQ2FsbGVkIHRvIGluaXRpYWxpc2UgdGhlIHBs
dWdpbgorICAgICAqIEBwYXJhbSBpRG9jdW1lbnQgdGhlIG1haW4gZG9jdW1lbnQKKyAgICAgKiBA
cmV0dXJuIHRydWUgaWYgdGhlIHBsdWdpbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlIGRvY3VtZW50
CisgICAgICovCisgICAgYm9vbCBzZXR1cEFjdGlvbnMoU0tHRG9jdW1lbnQgKmlEb2N1bWVudCkg
b3ZlcnJpZGU7CisKKyAgICAvKioKKyAgICAgKiBUaGUgcGFnZSB3aWRnZXQgb2YgdGhlIHBsdWdp
bi4KKyAgICAgKiBAcmV0dXJuIFRoZSBwYWdlIHdpZGdldCBvZiB0aGUgcGx1Z2luCisgICAgICov
CisgICAgU0tHVGFiUGFnZSAqZ2V0V2lkZ2V0KCkgb3ZlcnJpZGU7CisKKyAgICAvKioKKyAgICAg
KiBUaGUgcHJlZmVyZW5jZSB3aWRnZXQgb2YgdGhlIHBsdWdpbi4KKyAgICAgKiBAcmV0dXJuIFRo
ZSBwcmVmZXJlbmNlIHdpZGdldCBvZiB0aGUgcGx1Z2luCisgICAgICovCisgICAgUVdpZGdldCAq
Z2V0UHJlZmVyZW5jZVdpZGdldCgpIG92ZXJyaWRlOworCisgICAgLyoqCisgICAgICogVGhlIHBy
ZWZlcmVuY2Ugc2tlbGV0b24gb2YgdGhlIHBsdWdpbi4KKyAgICAgKiBAcmV0dXJuIFRoZSBwcmVm
ZXJlbmNlIHNrZWxldG9uIG9mIHRoZSBwbHVnaW4KKyAgICAgKi8KKyAgICBLQ29uZmlnU2tlbGV0
b24gKmdldFByZWZlcmVuY2VTa2VsZXRvbigpIG92ZXJyaWRlOworCisgICAgLyoqCisgICAgICog
VGhlIGRvY2sgd2lkZ2V0IG9mIHRoZSBwbHVnaW4uCisgICAgICogQHJldHVybiBUaGUgZG9jayB3
aWRnZXQgb2YgdGhlIHBsdWdpbgorICAgICAqLworICAgIFFEb2NrV2lkZ2V0ICpnZXREb2NrV2lk
Z2V0KCkgb3ZlcnJpZGU7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdGl0bGUgb2YgdGhlIHBsdWdp
bi4KKyAgICAgKiBAcmV0dXJuIFRoZSB0aXRsZSBvZiB0aGUgcGx1Z2luCisgICAgICovCisgICAg
UVN0cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLyoqCisgICAgICogVGhlIGlj
b24gb2YgdGhlIHBsdWdpbi4KKyAgICAgKiBAcmV0dXJuIFRoZSBpY29uIG9mIHRoZSBwbHVnaW4K
KyAgICAgKi8KKyAgICBRU3RyaW5nIGljb24oKSBjb25zdCBvdmVycmlkZTsKKworICAgIC8qKgor
ICAgICAqIE11c3QgYmUgaW1wbGVtZW50ZWQgdG8gc2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgcGx1
Z2luLgorICAgICAqIEByZXR1cm4gaW50ZWdlciB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDk5OSAoZGVm
YXVsdCA9IDk5OSkKKyAgICAgKi8KKyAgICBpbnQgZ2V0T3JkZXIoKSBjb25zdCBvdmVycmlkZTsK
KworICAgIC8qKgorICAgICAqIE11c3QgYmUgaW1wbGVtZW50ZWQgdG8ga25vdyBpZiBhIHBsdWdp
biBtdXN0IGJlIGRpc3BsYXkgaW4gcGFnZXMgY2hvb3Nlci4KKyAgICAgKiBAcmV0dXJuIHRydWUg
b2YgZmFsc2UgKGRlZmF1bHQgPSBmYWxzZSkKKyAgICAgKi8KKyAgICBib29sIGlzSW5QYWdlc0No
b29zZXIoKSBjb25zdCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBRX0RJU0FCTEVfQ09QWShT
S0dBc3Npc3RhbnRQbHVnaW4pCisKKyAgICBTS0dEb2N1bWVudCAqbV9jdXJyZW50RG9jdW1lbnQ7
CisgICAgUURvY2tXaWRnZXQgKm1fZG9ja1dpZGdldDsKKyAgICBVaTo6c2tnYXNzaXN0YW50cGx1
Z2luX3ByZWYgdWl7fTsKK307CisKKyNlbmRpZiAvLyBTS0dBU1NJU1RBTlRQTFVHSU5fSApkaWZm
IC0tZ2l0IGEvcGx1Z2lucy9za3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQvc2tnYXNzaXN0YW50
cGx1Z2luZG9ja3dpZGdldC5jcHAgYi9wbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFu
dC9za2dhc3Npc3RhbnRwbHVnaW5kb2Nrd2lkZ2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAuLjJiZWQyMGFiMQotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvc2ty
b29nZS9za3Jvb2dlX2FpYXNzaXN0YW50L3NrZ2Fzc2lzdGFudHBsdWdpbmRvY2t3aWRnZXQuY3Bw
CkBAIC0wLDAgKzEsOTExIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBTUERYLUZpbGVDb3B5
cmlnaHRUZXh0OiAyMDI2IFMuIE1BTktPV1NLSSBzdGVwaGFuZUBtYW5rb3dza2kuZnIKKyAqIFNQ
RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMy4wLW9yLWxhdGVyCisgKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqLworLyoqIEBmaWxlCisgKiBBIGRvY2sgd2lkZ2V0IGZvciB0aGUgQUkgYXNzaXN0YW50IHBs
dWdpbi4KKyAqLworI2luY2x1ZGUgInNrZ2Fzc2lzdGFudHBsdWdpbmRvY2t3aWRnZXQuaCIKKwor
I2luY2x1ZGUgPHFldmVudGxvb3AuaD4KKyNpbmNsdWRlIDxxZmlsZS5oPgorI2luY2x1ZGUgPHFq
c29uZG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxxanNvbm9iamVjdC5oPgorI2luY2x1ZGUgPHFqc29u
cGFyc2VlcnJvci5oPgorI2luY2x1ZGUgPHFuZXR3b3JrcmVwbHkuaD4KKyNpbmNsdWRlIDxxbmV0
d29ya3JlcXVlc3QuaD4KKyNpbmNsdWRlIDxxcmVndWxhcmV4cHJlc3Npb24uaD4KKyNpbmNsdWRl
IDxxc2hvcnRjdXQuaD4KKyNpbmNsdWRlIDxxc3RyaW5nbGlzdC5oPgorI2luY2x1ZGUgPHF0ZXh0
Y3Vyc29yLmg+CisjaW5jbHVkZSA8cXVybHF1ZXJ5Lmg+CisKKyNpbmNsdWRlICJza2dhc3Npc3Rh
bnRfc2V0dGluZ3MuaCIKKyNpbmNsdWRlICJza2dtYWlucGFuZWwuaCIKKyNpbmNsdWRlICJza2dw
cm9wZXJ0eW9iamVjdC5oIgorI2luY2x1ZGUgInNrZ3NlcnZpY2VzLmgiCisjaW5jbHVkZSAic2tn
c2hvdy5oIgorI2luY2x1ZGUgInNrZ3RyYWNlcy5oIgorI2luY2x1ZGUgInNrZ3RyYW5zYWN0aW9u
bW5nLmgiCisKKyNkZWZpbmUgUFJFRklYX0FJQVNTSVNUQU5UX1NFU1NJT04gUVN0cmluZ0xpdGVy
YWwoIlNLR19BSV9TRVNTSU9OXyIpCisKK1NLR0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRnZXQ6OlNL
R0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRnZXQoUVdpZGdldCAqaVBhcmVudCwgU0tHRG9jdW1lbnQg
KmlEb2N1bWVudCkKKyAgICA6IFNLR1dpZGdldChpUGFyZW50LCBpRG9jdW1lbnQpCit7CisgICAg
U0tHVFJBQ0VJTkZVTkMoMTApCisgICAgaWYgKGlEb2N1bWVudCA9PSBudWxscHRyKSB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aS5zZXR1cFVpKHRoaXMpOworCisgICAgdWkua1Nh
dmVDdXJyZW50QWlTZXNzaW9uLT5zZXRJY29uKFNLR1NlcnZpY2VzOjpmcm9tVGhlbWUoUVN0cmlu
Z0xpdGVyYWwoImRvY3VtZW50LXNhdmUiKSkpOworICAgIHVpLmtEZWxldGVBaVNlc3Npb24tPnNl
dEljb24oU0tHU2VydmljZXM6OmZyb21UaGVtZShRU3RyaW5nTGl0ZXJhbCgiZWRpdC1kZWxldGUi
KSkpOworICAgIHVpLmtBc2tCdXR0b24tPnNldEljb24oU0tHU2VydmljZXM6OmZyb21UaGVtZShR
U3RyaW5nTGl0ZXJhbCgibWVkaWEtcGxheWJhY2stc3RhcnQiKSkpOworICAgIHVpLmtDbGVhckJ1
dHRvbi0+c2V0SWNvbihTS0dTZXJ2aWNlczo6ZnJvbVRoZW1lKFFTdHJpbmdMaXRlcmFsKCJlZGl0
LWNsZWFyIikpKTsKKyAgICB1aS5rSGVscEJ1dHRvbi0+c2V0SWNvbihTS0dTZXJ2aWNlczo6ZnJv
bVRoZW1lKFFTdHJpbmdMaXRlcmFsKCJoZWxwLWFib3V0IikpKTsKKyAgICB1aS5rU2V0dGluZ3NC
dXR0b24tPnNldEljb24oU0tHU2VydmljZXM6OmZyb21UaGVtZShRU3RyaW5nTGl0ZXJhbCgic2V0
dGluZ3MtY29uZmlndXJlIikpKTsKKworICAgIHVpLmtEaXNwbGF5UmVhc29uaW5nLT5hZGRHcm91
cGVkSXRlbShRU3RyaW5nTGl0ZXJhbCgiMCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpMThuYygiT3B0aW9uIHRvIGRpc3BsYXkgb3Igbm90IHRoZSByZWFzb25p
bmcgb2YgdGhlIGFzc2lzdGFudCIsICJObyByZWFzb25pbmciKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZygpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBRU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJkaXNwbGF5X3JlYXNvbmluZyIpKTsKKyAg
ICB1aS5rRGlzcGxheVJlYXNvbmluZy0+YWRkR3JvdXBlZEl0ZW0oUVN0cmluZ0xpdGVyYWwoIjEi
KSwgaTE4bmMoIk9wdGlvbiB0byBkaXNwbGF5IG9yIG5vdCB0aGUgcmVhc29uaW5nIG9mIHRoZSBh
c3Npc3RhbnQiLCAiUmVhc29uaW5nIHRhZyIpKSwgUVN0cmluZygpLAorICAgICAgICBRU3RyaW5n
KCksIFFTdHJpbmdMaXRlcmFsKCJkaXNwbGF5X3JlYXNvbmluZyIpOworICAgIHVpLmtEaXNwbGF5
UmVhc29uaW5nLT5hZGRHcm91cGVkSXRlbShRU3RyaW5nTGl0ZXJhbCgiMiIpLCBpMThuYygiT3B0
aW9uIHRvIGRpc3BsYXkgb3Igbm90IHRoZSByZWFzb25pbmcgb2YgdGhlIGFzc2lzdGFudCIsICJD
dXJyZW50IHJlYXNvbmluZyIpKSwgUVN0cmluZygpLAorICAgICAgICBRU3RyaW5nKCksIFFTdHJp
bmdMaXRlcmFsKCJkaXNwbGF5X3JlYXNvbmluZyIpOworICAgIHVpLmtEaXNwbGF5UmVhc29uaW5n
LT5hZGRHcm91cGVkSXRlbShRU3RyaW5nTGl0ZXJhbCgiMyIpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpMThuYygiT3B0aW9uIHRvIGRpc3BsYXkgb3Igbm90IHRo
ZSByZWFzb25pbmcgb2YgdGhlIGFzc2lzdGFudCIsICJBbGwgcmVhc29uaW5nIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgiZGlzcGxheV9yZWFzb25p
bmciKSk7CisgICAgdWkua0Rpc3BsYXlSZWFzb25pbmctPmFkZEdyb3VwZWRJdGVtKFFTdHJpbmdM
aXRlcmFsKCI0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkx
OG5jKCJPcHRpb24gdG8gZGlzcGxheSBvciBub3QgdGhlIHJlYXNvbmluZyBvZiB0aGUgYXNzaXN0
YW50IiwgIkFsbCByZWFzb25pbmcgYW5kIHRvb2xzIGFuc3dlcnMiKSksCisgICAgICAgIFFTdHJp
bmcoKSwgUVN0cmluZygpLCBRU3RyaW5nTGl0ZXJhbCgiZGlzcGxheV9yZWFzb25pbmciKTsKKyAg
ICB1aS5rRGlzcGxheVJlYXNvbmluZy0+c2V0U3RhdGUoUVN0cmluZ0xpdGVyYWwoIjEiKSk7CisK
KyAgICAvLyBBZGQgaGVscCB0ZXh0IHRvIHRoZSBoZWxwIGFyZWEKKyAgICBRTGlzdDxRU3RyaW5n
PiBoZWxwVGV4dHMgPSB7aTE4bmMoIkV4YW1wbGUgb2YgYSBJQSBxdWVzdGlvbiIsICJIb3cgbXVj
aCBkbyBJIGhhdmUgaW4gbXkgY3VycmVudCBhY2NvdW50cz8iKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaTE4bmMoIkV4YW1wbGUgb2YgYSBJQSBxdWVzdGlvbiIsICJXaGF0IGlz
IHRoZSB0b3RhbCBhbW91bnQgb2YgbXkgZXhwZW5zZXMgZm9yIHRoaXMgbW9udGg/IiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG5jKCJFeGFtcGxlIG9mIGEgSUEgcXVlc3Rp
b24iLCAiQ2FuIHlvdSBwcm92aWRlIGEgc3VtbWFyeSBvZiBteSByZWNlbnQgdHJhbnNhY3Rpb25z
PyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuYygiRXhhbXBsZSBvZiBh
IElBIHF1ZXN0aW9uIiwgIldoYXQgYXJlIHRoZSB0b3AgNSBjYXRlZ29yaWVzIHdoZXJlIEkgc3Bl
bmQgdGhlIG1vc3QgbW9uZXk/IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkx
OG5jKCJFeGFtcGxlIG9mIGEgSUEgcXVlc3Rpb24iLCAiQ2FuIHlvdSBzdWdnZXN0IHdheXMgdG8g
cmVkdWNlIG15IG1vbnRobHkgZXhwZW5zZXM/Iil9OworICAgIGZvciAoY29uc3QgUVN0cmluZyAm
aGVscFRleHQgOiBoZWxwVGV4dHMpIHsKKyAgICAgICAgYXV0byBsYWJlbCA9IG5ldyBRTGFiZWwo
IjxhIGhyZWY9XCIiICsgaGVscFRleHQgKyAiXCI+IiArIGhlbHBUZXh0ICsgIjwvYT4iKTsKKyAg
ICAgICAgbGFiZWwtPnNldFdvcmRXcmFwKHRydWUpOworICAgICAgICBjb25uZWN0KGxhYmVsLCAm
UUxhYmVsOjpsaW5rQWN0aXZhdGVkLCB0aGlzLCBbdGhpc10oY29uc3QgUVN0cmluZyAmbGluaykg
eworICAgICAgICAgICAgdWkua1VzZXJQcm9tcHQtPnNldFBsYWluVGV4dChsaW5rKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHVpLmtIZWxwQXJlYV8yLT5hZGRXaWRnZXQobGFiZWwpOworICAgIH0K
KworICAgIHVpLmtIZWxwQXJlYS0+aGlkZSgpOworCisgICAgY29ubmVjdCh1aS5rQXNrQnV0dG9u
LCAmUVB1c2hCdXR0b246OmNsaWNrZWQsIHRoaXMsICZTS0dBc3Npc3RhbnRQbHVnaW5Eb2NrV2lk
Z2V0OjpvbkFzayk7CisgICAgY29ubmVjdCh1aS5rVXNlclByb21wdCwgJlFQbGFpblRleHRFZGl0
Ojp0ZXh0Q2hhbmdlZCwgdGhpcywgJlNLR0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRnZXQ6Om9uVXNl
clByb21wdENoYW5nZWQpOworICAgIGNvbm5lY3QodWkua0NsZWFyQnV0dG9uLCAmUVB1c2hCdXR0
b246OmNsaWNrZWQsIHRoaXMsICZTS0dBc3Npc3RhbnRQbHVnaW5Eb2NrV2lkZ2V0OjpvbkNsZWFy
KTsKKyAgICBjb25uZWN0KHVpLmtEaXNwbGF5UmVhc29uaW5nLCAmU0tHU2hvdzo6c3RhdGVDaGFu
Z2VkLCB0aGlzLCAmU0tHQXNzaXN0YW50UGx1Z2luRG9ja1dpZGdldDo6cmVmcmVzaENvbnZlcnNh
dGlvbik7CisgICAgY29ubmVjdCh1aS5rU2F2ZUN1cnJlbnRBaVNlc3Npb24sICZRUHVzaEJ1dHRv
bjo6Y2xpY2tlZCwgdGhpcywgJlNLR0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRnZXQ6Om9uU2F2ZUN1
cnJlbnRBaVNlc3Npb24pOworICAgIGNvbm5lY3QodWkua0RlbGV0ZUFpU2Vzc2lvbiwgJlFQdXNo
QnV0dG9uOjpjbGlja2VkLCB0aGlzLCAmU0tHQXNzaXN0YW50UGx1Z2luRG9ja1dpZGdldDo6b25E
ZWxldGVBaVNlc3Npb24pOworICAgIGNvbm5lY3QodWkua0hlbHBCdXR0b24sICZRUHVzaEJ1dHRv
bjo6Y2xpY2tlZCwgdGhpcywgW3RoaXNdKCkgeworICAgICAgICB1aS5rSGVscEFyZWEtPnNldFZp
c2libGUoIXVpLmtIZWxwQXJlYS0+aXNWaXNpYmxlKCkpOworICAgIH0pOworICAgIGNvbm5lY3Qo
dWkua0FpU2Vzc2lvbnMsICZRQ29tYm9Cb3g6OmN1cnJlbnRJbmRleENoYW5nZWQsIHRoaXMsICZT
S0dBc3Npc3RhbnRQbHVnaW5Eb2NrV2lkZ2V0OjpvbkFpU2Vzc2lvbkNoYW5nZWQpOworICAgIGNv
bm5lY3QodWkua1NldHRpbmdzQnV0dG9uLCAmUVB1c2hCdXR0b246OmNsaWNrZWQsIHRoaXMsIFt0
aGlzXSgpIHsKKyAgICAgICAgYXV0byAqbWFpblBhbmVsID0gU0tHTWFpblBhbmVsOjpnZXRNYWlu
UGFuZWwoKTsKKyAgICAgICAgaWYgKG1haW5QYW5lbCAhPSBudWxscHRyKSB7CisgICAgICAgICAg
ICBtYWluUGFuZWwtPm9wdGlvbnNQcmVmZXJlbmNlcyhRU3RyaW5nTGl0ZXJhbCgiU2tyb29nZSBB
SSBhc3Npc3RhbnQgcGx1Z2luIikpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhdXRvIGFz
a1Nob3J0Y3V0ID0gbmV3IFFTaG9ydGN1dChRS2V5U2VxdWVuY2UoUXQ6OkNUUkwgfCBRdDo6S2V5
X1JldHVybiksIHVpLmtVc2VyUHJvbXB0KTsKKyAgICBjb25uZWN0KGFza1Nob3J0Y3V0LCAmUVNo
b3J0Y3V0OjphY3RpdmF0ZWQsIHRoaXMsICZTS0dBc3Npc3RhbnRQbHVnaW5Eb2NrV2lkZ2V0Ojpv
bkFzayk7CisKKyAgICBjb25uZWN0KGlEb2N1bWVudCwgJlNLR0RvY3VtZW50Ojptb2RpZmllZCwg
dGhpcywgJlNLR0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRnZXQ6OnNsb3RSZWZyZXNoU2Vzc2lvbnNM
aXN0KTsKKworICAgIHJlZnJlc2hTZXNzaW9uc0xpc3QoZmFsc2UpOworfQorCitTS0dBc3Npc3Rh
bnRQbHVnaW5Eb2NrV2lkZ2V0Ojp+U0tHQXNzaXN0YW50UGx1Z2luRG9ja1dpZGdldCgpCit7Cisg
ICAgaWYgKG1fcGVuZGluZ1JlcGx5ICE9IG51bGxwdHIpIHsKKyAgICAgICAgbV9wZW5kaW5nUmVw
bHktPmFib3J0KCk7CisgICAgfQorfQorCit2b2lkIFNLR0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRn
ZXQ6Om9uVXNlclByb21wdENoYW5nZWQoKQoreworICAgIHVpLmtBc2tCdXR0b24tPnNldEVuYWJs
ZWQoIXVpLmtVc2VyUHJvbXB0LT50b1BsYWluVGV4dCgpLnRyaW1tZWQoKS5pc0VtcHR5KCkgJiYg
bV9wZW5kaW5nUmVwbHkgPT0gbnVsbHB0cik7Cit9CisKK1FVcmwgU0tHQXNzaXN0YW50UGx1Z2lu
RG9ja1dpZGdldDo6Z2V0Q29tcGxldGlvbkVuZHBvaW50KCkgY29uc3QKK3sKKyAgICBRU3RyaW5n
IHVybFRleHQgPSBza2dhc3Npc3RhbnRfc2V0dGluZ3M6OnNlcnZlclVybCgpLnRyaW1tZWQoKTsK
KyAgICBpZiAodXJsVGV4dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmV0dXJuIFFVcmwoKTsKKyAg
ICB9CisgICAgaWYgKCF1cmxUZXh0LmNvbnRhaW5zKFFTdHJpbmdMaXRlcmFsKCI6Ly8iKSkpIHsK
KyAgICAgICAgdXJsVGV4dCA9IFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vIikgKyB1cmxUZXh0Owor
ICAgIH0KKworICAgIFFVcmwgZW5kcG9pbnQodXJsVGV4dCk7CisgICAgaWYgKCFlbmRwb2ludC5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgcmV0dXJuIGVuZHBvaW50OworICAgIH0KKworICAgIFFTdHJp
bmcgcGF0aCA9IGVuZHBvaW50LnBhdGgoKTsKKyAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0
aCA9PSBRU3RyaW5nTGl0ZXJhbCgiLyIpKSB7CisgICAgICAgIHBhdGggPSBRU3RyaW5nTGl0ZXJh
bCgiL3YxL2NoYXQvY29tcGxldGlvbnMiKTsKKyAgICB9IGVsc2UgaWYgKCFwYXRoLmVuZHNXaXRo
KFFTdHJpbmdMaXRlcmFsKCIvdjEvY2hhdC9jb21wbGV0aW9ucyIpKSkgeworICAgICAgICBpZiAo
cGF0aC5lbmRzV2l0aCh1Jy8nKSkgeworICAgICAgICAgICAgcGF0aC5jaG9wKDEpOworICAgICAg
ICB9CisgICAgICAgIGlmICghcGF0aC5lbmRzV2l0aChRU3RyaW5nTGl0ZXJhbCgiL3YxIikpKSB7
CisgICAgICAgICAgICBwYXRoICs9IFFTdHJpbmdMaXRlcmFsKCIvdjEiKTsKKyAgICAgICAgfQor
ICAgICAgICBwYXRoICs9IFFTdHJpbmdMaXRlcmFsKCIvY2hhdC9jb21wbGV0aW9ucyIpOworICAg
IH0KKyAgICBlbmRwb2ludC5zZXRQYXRoKHBhdGgpOworCisgICAgcmV0dXJuIGVuZHBvaW50Owor
fQorCit2b2lkIFNLR0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRnZXQ6OnNldEJ1c3koYm9vbCBpQnVz
eSkKK3sKKyAgICB1aS5rQXNrQnV0dG9uLT5zZXRJY29uKFNLR1NlcnZpY2VzOjpmcm9tVGhlbWUo
aUJ1c3kgPyBRU3RyaW5nTGl0ZXJhbCgibWVkaWEtcGxheWJhY2stc3RvcCIpIDogUVN0cmluZ0xp
dGVyYWwoIm1lZGlhLXBsYXliYWNrLXN0YXJ0IikpKTsKKyAgICB1aS5rQ2xlYXJCdXR0b24tPnNl
dEVuYWJsZWQoIWlCdXN5KTsKKyAgICB1aS5rVXNlclByb21wdC0+c2V0RW5hYmxlZCghaUJ1c3kp
OworICAgIHVpLmtBaVNlc3Npb25Nbmd0LT5zZXRFbmFibGVkKCFpQnVzeSk7Cit9CisKK1FTdHJp
bmcgU0tHQXNzaXN0YW50UGx1Z2luRG9ja1dpZGdldDo6Z2V0U3lzdGVtUHJvbXB0KCkKK3sKKyAg
ICAvLyBSZWFkIHNrcm9vZ2Vfc3lzdGVtX3Byb21wdC5tZCBmaWxlIGNvbnRlbnQKKyAgICBRU3Ry
aW5nIHN5c3RlbVByb21wdFBhdGggPSBRU3RhbmRhcmRQYXRoczo6bG9jYXRlKFFTdGFuZGFyZFBh
dGhzOjpHZW5lcmljRGF0YUxvY2F0aW9uLCBRU3RyaW5nTGl0ZXJhbCgic2tyb29nZS9za3Jvb2dl
X3N5c3RlbV9wcm9tcHQubWQiKSk7CisgICAgUUZpbGUgZmlsZShzeXN0ZW1Qcm9tcHRQYXRoKTsK
KyAgICBpZiAoZmlsZS5vcGVuKFFJT0RldmljZTo6UmVhZE9ubHkgfCBRSU9EZXZpY2U6OlRleHQp
KSB7CisgICAgICAgIFFUZXh0U3RyZWFtIHN0cmVhbSgmZmlsZSk7CisKKyAgICAgICAgYXV0byBz
eXN0ZW1Qcm9tcHQgPSBzdHJlYW0ucmVhZEFsbCgpOworICAgICAgICBhdXRvIHVzZXJGYW1pbHlT
aXR1YXRpb24gPSBza2dhc3Npc3RhbnRfc2V0dGluZ3M6OmZhbWlseVNpdHVhdGlvbigpLnRyaW1t
ZWQoKTsKKyAgICAgICAgaWYgKCF1c2VyRmFtaWx5U2l0dWF0aW9uLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgc3lzdGVtUHJvbXB0ICs9ICJcblxuIyMgIFVzZXIgZmFtaWx5IHNpdHVhdGlvblxu
XG4iICsgdXNlckZhbWlseVNpdHVhdGlvbjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3lz
dGVtUHJvbXB0OworICAgIH0KKyAgICByZXR1cm4gUVN0cmluZygpOworfQorCitRU3RyaW5nIFNL
R0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRnZXQ6Om1hcmtkb3duVG9IdG1sKGNvbnN0IFFTdHJpbmcg
JmlDb250ZW50KQoreworICAgIFFUZXh0RG9jdW1lbnQgZG9jOworICAgIGRvYy5zZXRNYXJrZG93
bihpQ29udGVudCk7CisgICAgcmV0dXJuIGRvYy50b0h0bWwoKTsKK30KKwordm9pZCBTS0dBc3Np
c3RhbnRQbHVnaW5Eb2NrV2lkZ2V0OjpvbkNsZWFyKCkKK3sKKyAgICBTS0dUUkFDRUlORlVOQygx
MCkKKyAgICB1aS5rVXNlclByb21wdC0+Y2xlYXIoKTsKKyAgICB1aS5rQW5zd2VyLT5jbGVhcigp
OworICAgIG1fbWVzc2FnZXMgPSBRSnNvbkFycmF5KCk7CisgICAgdWkua0FpU2Vzc2lvbnMtPnNl
dEN1cnJlbnRJbmRleCgwKTsKK30KKwordm9pZCBTS0dBc3Npc3RhbnRQbHVnaW5Eb2NrV2lkZ2V0
OjpvbkFzaygpCit7CisgICAgU0tHVFJBQ0VJTkZVTkMoMTApCisgICAgdWkua0hlbHBBcmVhLT5z
ZXRWaXNpYmxlKGZhbHNlKTsKKyAgICBpZiAobV9wZW5kaW5nUmVwbHkgIT0gbnVsbHB0cikgewor
ICAgICAgICAvLyBTdG9wIHRoZSBwZW5kaW5nIHJlcXVlc3QgaWYgdGhlcmUgaXMgb25lCisgICAg
ICAgIG1fcGVuZGluZ1JlcGx5LT5hYm9ydCgpOworICAgICAgICBtX3BlbmRpbmdSZXBseSA9IG51
bGxwdHI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gU3RhcnQgYSBuZXcgcmVxdWVzdAorICAg
ICAgICBjb25zdCBRU3RyaW5nIHF1ZXN0aW9uID0gdWkua1VzZXJQcm9tcHQtPnRvUGxhaW5UZXh0
KCkudHJpbW1lZCgpOworICAgICAgICBpZiAocXVlc3Rpb24uaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9tZXNzYWdlcy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgIFFKc29uT2JqZWN0IG1zZzsKKyAgICAgICAgICAgIG1zZy5pbnNl
cnQoUVN0cmluZ0xpdGVyYWwoInJvbGUiKSwgUVN0cmluZ0xpdGVyYWwoInN5c3RlbSIpKTsKKyAg
ICAgICAgICAgIG1zZy5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoImNvbnRlbnQiKSwgZ2V0U3lzdGVt
UHJvbXB0KCkpOworICAgICAgICAgICAgbV9tZXNzYWdlcy5wdXNoX2JhY2sobXNnKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEFkZCB1c2VyIHF1ZXN0aW9uIHRvIHRoZSBjb252ZXJzYXRpb24g
aGlzdG9yeQorICAgICAgICBRSnNvbk9iamVjdCBtc2c7CisgICAgICAgIG1zZy5pbnNlcnQoUVN0
cmluZ0xpdGVyYWwoInJvbGUiKSwgUVN0cmluZ0xpdGVyYWwoInVzZXIiKSk7CisgICAgICAgIG1z
Zy5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoImNvbnRlbnQiKSwgcXVlc3Rpb24pOworICAgICAgICBt
X21lc3NhZ2VzLnB1c2hfYmFjayhtc2cpOworICAgICAgICBtX3Rvb2xDYWxsRGVwdGggPSAwOwor
CisgICAgICAgIFNLR0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRnZXQ6OnJlZnJlc2hDb252ZXJzYXRp
b24oKTsKKyAgICAgICAgc2VuZENvbXBsZXRpb25SZXF1ZXN0KCk7CisgICAgfQorfQorCit2b2lk
IFNLR0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRnZXQ6OnNlbmRDb21wbGV0aW9uUmVxdWVzdCgpCit7
CisgICAgU0tHVFJBQ0VJTkZVTkMoMTApCisgICAgaWYgKG1fcGVuZGluZ1JlcGx5ICE9IG51bGxw
dHIpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0IFFVcmwgZW5kcG9pbnQg
PSBnZXRDb21wbGV0aW9uRW5kcG9pbnQoKTsKKyAgICBpZiAoIWVuZHBvaW50LmlzVmFsaWQoKSkg
eworICAgICAgICBhdXRvICptYWluUGFuZWwgPSBTS0dNYWluUGFuZWw6OmdldE1haW5QYW5lbCgp
OworICAgICAgICBpZiAobWFpblBhbmVsICE9IG51bGxwdHIpIHsKKyAgICAgICAgICAgIG1haW5Q
YW5lbC0+ZGlzcGxheU1lc3NhZ2Uoc2tnYXNzaXN0YW50X3NldHRpbmdzOjpzZXJ2ZXJVcmwoKS50
cmltbWVkKCkuaXNFbXB0eSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA/IGkxOG5jKCJFcnJvciBtZXNzYWdlIiwgIlNlcnZlciBVUkwgaXMgZW1wdHkuIFBsZWFz
ZSBjb25maWd1cmUgaXQgaW4gdGhlIHNldHRpbmdzLiIpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IGkxOG5jKCJFcnJvciBtZXNzYWdlIiwgIkludmFsaWQgc2Vy
dmVyIFVSTDogJTEiLCBlbmRwb2ludC50b1N0cmluZygpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0tHRG9jdW1lbnQ6OkVycm9yKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgUUpzb25PYmplY3QgcGF5bG9hZDsKKyAgICBwYXlsb2Fk
Lmluc2VydChRU3RyaW5nTGl0ZXJhbCgibWVzc2FnZXMiKSwgZ2V0UmVxdWVzdE1lc3NhZ2VzKG1f
bWVzc2FnZXMpKTsKKyAgICBwYXlsb2FkLmluc2VydChRU3RyaW5nTGl0ZXJhbCgidGVtcGVyYXR1
cmUiKSwgMS4wKTsKKyAgICBwYXlsb2FkLmluc2VydChRU3RyaW5nTGl0ZXJhbCgic3RyZWFtIiks
IGZhbHNlKTsKKyAgICBwYXlsb2FkLmluc2VydChRU3RyaW5nTGl0ZXJhbCgidG9vbHMiKSwgZ2V0
VG9vbHMoKSk7CisKKyAgICBRTmV0d29ya1JlcXVlc3QgcmVxdWVzdChlbmRwb2ludCk7CisgICAg
cmVxdWVzdC5zZXRIZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50VHlwZUhlYWRlciwgUVN0
cmluZ0xpdGVyYWwoImFwcGxpY2F0aW9uL2pzb24iKSk7CisKKyAgICBRU3RyaW5nIHRva2VuID0g
c2tnYXNzaXN0YW50X3NldHRpbmdzOjphcGlUb2tlbigpLnRyaW1tZWQoKTsKKyAgICBpZiAoIXRv
a2VuLmlzRW1wdHkoKSkgeworICAgICAgICByZXF1ZXN0LnNldFJhd0hlYWRlcigiQXV0aG9yaXph
dGlvbiIsICJCZWFyZXIgIiArIHRva2VuLnRvVXRmOCgpKTsKKyAgICB9CisKKyAgICBhdXRvIHBh
eWxvYWRTdHJpbmcgPSBRSnNvbkRvY3VtZW50KHBheWxvYWQpLnRvSnNvbihRSnNvbkRvY3VtZW50
OjpDb21wYWN0KTsKKyAgICBtX3BlbmRpbmdSZXBseSA9IG1fbmV0d29ya01hbmFnZXIucG9zdChy
ZXF1ZXN0LCBwYXlsb2FkU3RyaW5nKTsKKyAgICBjb25uZWN0KG1fcGVuZGluZ1JlcGx5LCAmUU5l
dHdvcmtSZXBseTo6ZmluaXNoZWQsIHRoaXMsICZTS0dBc3Npc3RhbnRQbHVnaW5Eb2NrV2lkZ2V0
OjpvblJlcGx5RmluaXNoZWQpOworCisgICAgc2V0QnVzeSh0cnVlKTsKK30KKworUUpzb25BcnJh
eSBTS0dBc3Npc3RhbnRQbHVnaW5Eb2NrV2lkZ2V0OjpnZXRUb29scygpCit7CisgICAgUUpzb25B
cnJheSB0b29sczsKKyAgICAvLyBBZGQgdGhlIFNRTGl0ZSBTRUxFQ1QgdG9vbAorICAgIHsKKyAg
ICAgICAgUUpzb25PYmplY3QgdG9vbDsKKyAgICAgICAgdG9vbC5pbnNlcnQoUVN0cmluZ0xpdGVy
YWwoInR5cGUiKSwgUVN0cmluZ0xpdGVyYWwoImZ1bmN0aW9uIikpOworICAgICAgICBRSnNvbk9i
amVjdCBmdW5jdGlvbjsKKyAgICAgICAgZnVuY3Rpb24uaW5zZXJ0KFFTdHJpbmdMaXRlcmFsKCJu
YW1lIiksIFFTdHJpbmdMaXRlcmFsKCJleGVjdXRlX3NxbGl0ZV9zZWxlY3QiKSk7CisgICAgICAg
IGZ1bmN0aW9uLmluc2VydChRU3RyaW5nTGl0ZXJhbCgiZGVzY3JpcHRpb24iKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGkxOG5jKCJUb29sIGRlc2NyaXB0aW9uIiwgIkV4ZWN1dGUgYSBTUUxp
dGUgU0VMRUNUIHF1ZXJ5IG9uIHRoZSBjdXJyZW50IFNrcm9vZ2UgZGF0YWJhc2UuIE9ubHkgU0VM
RUNUIHN0YXRlbWVudHMgYXJlIGFsbG93ZWQuIikpOworICAgICAgICBRSnNvbk9iamVjdCBwYXJh
bWV0ZXJzOworICAgICAgICBwYXJhbWV0ZXJzLmluc2VydChRU3RyaW5nTGl0ZXJhbCgidHlwZSIp
LCBRU3RyaW5nTGl0ZXJhbCgib2JqZWN0IikpOworICAgICAgICBRSnNvbk9iamVjdCBwcm9wZXJ0
aWVzOworICAgICAgICBRSnNvbk9iamVjdCBzcWxQcm9wZXJ0eTsKKyAgICAgICAgc3FsUHJvcGVy
dHkuaW5zZXJ0KFFTdHJpbmdMaXRlcmFsKCJ0eXBlIiksIFFTdHJpbmdMaXRlcmFsKCJzdHJpbmci
KSk7CisgICAgICAgIHNxbFByb3BlcnR5Lmluc2VydChRU3RyaW5nTGl0ZXJhbCgiZGVzY3JpcHRp
b24iKSwgaTE4bmMoIlRvb2wgcGFyYW1ldGVyIGRlc2NyaXB0aW9uIiwgIlRoZSBTUUwgcXVlcnkg
dG8gZXhlY3V0ZS4gT25seSBTRUxFQ1Qgc3RhdGVtZW50cyBhcmUgYWxsb3dlZC4iKSk7CisgICAg
ICAgIHByb3BlcnRpZXMuaW5zZXJ0KFFTdHJpbmdMaXRlcmFsKCJzcWwiKSwgc3FsUHJvcGVydHkp
OworICAgICAgICBwYXJhbWV0ZXJzLmluc2VydChRU3RyaW5nTGl0ZXJhbCgicHJvcGVydGllcyIp
LCBwcm9wZXJ0aWVzKTsKKyAgICAgICAgUUpzb25BcnJheSByZXF1aXJlZDsKKyAgICAgICAgcmVx
dWlyZWQucHVzaF9iYWNrKFFTdHJpbmdMaXRlcmFsKCJzcWwiKSk7CisgICAgICAgIHBhcmFtZXRl
cnMuaW5zZXJ0KFFTdHJpbmdMaXRlcmFsKCJyZXF1aXJlZCIpLCByZXF1aXJlZCk7CisgICAgICAg
IGZ1bmN0aW9uLmluc2VydChRU3RyaW5nTGl0ZXJhbCgicGFyYW1ldGVycyIpLCBwYXJhbWV0ZXJz
KTsKKyAgICAgICAgdG9vbC5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoImZ1bmN0aW9uIiksIGZ1bmN0
aW9uKTsKKyAgICAgICAgdG9vbHMgPDwgdG9vbDsKKyAgICB9CisKKyAgICAvLyBBZGQgdGhlIHdl
YiBzZWFyY2ggdG9vbCBpZiBlbmFibGVkIGluIHNldHRpbmdzCisgICAgaWYgKHNrZ2Fzc2lzdGFu
dF9zZXR0aW5nczo6ZW5hYmxlV2ViU2VhcmNoKCkpIHsKKyAgICAgICAgUUpzb25PYmplY3QgdG9v
bDsKKyAgICAgICAgdG9vbC5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoInR5cGUiKSwgUVN0cmluZ0xp
dGVyYWwoImZ1bmN0aW9uIikpOworICAgICAgICBRSnNvbk9iamVjdCBmdW5jdGlvbjsKKyAgICAg
ICAgZnVuY3Rpb24uaW5zZXJ0KFFTdHJpbmdMaXRlcmFsKCJuYW1lIiksIFFTdHJpbmdMaXRlcmFs
KCJ3ZWJfc2VhcmNoIikpOworICAgICAgICBmdW5jdGlvbi5pbnNlcnQoUVN0cmluZ0xpdGVyYWwo
ImRlc2NyaXB0aW9uIiksIGkxOG5jKCJUb29sIGRlc2NyaXB0aW9uIiwgIlNlYXJjaCB0aGUgaW50
ZXJuZXQgdXNpbmcgRHVja0R1Y2tHbyB0byBmaW5kIHJlbGV2YW50IGluZm9ybWF0aW9uLiIpKTsK
KyAgICAgICAgUUpzb25PYmplY3QgcGFyYW1ldGVyczsKKyAgICAgICAgcGFyYW1ldGVycy5pbnNl
cnQoUVN0cmluZ0xpdGVyYWwoInR5cGUiKSwgUVN0cmluZ0xpdGVyYWwoIm9iamVjdCIpKTsKKyAg
ICAgICAgUUpzb25PYmplY3QgcHJvcGVydGllczsKKyAgICAgICAgUUpzb25PYmplY3QgcXVlcnlQ
cm9wZXJ0eTsKKyAgICAgICAgcXVlcnlQcm9wZXJ0eS5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoInR5
cGUiKSwgUVN0cmluZ0xpdGVyYWwoInN0cmluZyIpKTsKKyAgICAgICAgcXVlcnlQcm9wZXJ0eS5p
bnNlcnQoUVN0cmluZ0xpdGVyYWwoImRlc2NyaXB0aW9uIiksIGkxOG5jKCJUb29sIHBhcmFtZXRl
ciBkZXNjcmlwdGlvbiIsICJUaGUgc2VhcmNoIHF1ZXJ5IHRvIGxvb2sgdXAgb24gdGhlIGludGVy
bmV0LiIpKTsKKyAgICAgICAgcHJvcGVydGllcy5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoInF1ZXJ5
IiksIHF1ZXJ5UHJvcGVydHkpOworICAgICAgICBRSnNvbk9iamVjdCBtYXhSZXN1bHRzUHJvcGVy
dHk7CisgICAgICAgIG1heFJlc3VsdHNQcm9wZXJ0eS5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoInR5
cGUiKSwgUVN0cmluZ0xpdGVyYWwoImludGVnZXIiKSk7CisgICAgICAgIG1heFJlc3VsdHNQcm9w
ZXJ0eS5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoImRlc2NyaXB0aW9uIiksIGkxOG5jKCJUb29sIHBh
cmFtZXRlciBkZXNjcmlwdGlvbiIsICJNYXhpbXVtIG51bWJlciBvZiByZXN1bHRzIHRvIHJldHVy
biAoMS0xMCkuIikpOworICAgICAgICBwcm9wZXJ0aWVzLmluc2VydChRU3RyaW5nTGl0ZXJhbCgi
bWF4X3Jlc3VsdHMiKSwgbWF4UmVzdWx0c1Byb3BlcnR5KTsKKyAgICAgICAgcGFyYW1ldGVycy5p
bnNlcnQoUVN0cmluZ0xpdGVyYWwoInByb3BlcnRpZXMiKSwgcHJvcGVydGllcyk7CisgICAgICAg
IFFKc29uQXJyYXkgcmVxdWlyZWQ7CisgICAgICAgIHJlcXVpcmVkLnB1c2hfYmFjayhRU3RyaW5n
TGl0ZXJhbCgicXVlcnkiKSk7CisgICAgICAgIHBhcmFtZXRlcnMuaW5zZXJ0KFFTdHJpbmdMaXRl
cmFsKCJyZXF1aXJlZCIpLCByZXF1aXJlZCk7CisgICAgICAgIGZ1bmN0aW9uLmluc2VydChRU3Ry
aW5nTGl0ZXJhbCgicGFyYW1ldGVycyIpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgdG9vbC5pbnNl
cnQoUVN0cmluZ0xpdGVyYWwoImZ1bmN0aW9uIiksIGZ1bmN0aW9uKTsKKyAgICAgICAgdG9vbHMg
PDwgdG9vbDsKKyAgICB9CisgICAgcmV0dXJuIHRvb2xzOworfQorCitRSnNvbkFycmF5IFNLR0Fz
c2lzdGFudFBsdWdpbkRvY2tXaWRnZXQ6OmdldFJlcXVlc3RNZXNzYWdlcyhjb25zdCBRSnNvbkFy
cmF5ICZpTWVzc2FnZXMpCit7CisgICAgUUpzb25BcnJheSByZXF1ZXN0TWVzc2FnZXM7CisgICAg
Zm9yIChjb25zdCBhdXRvICZtZXNzYWdlVmFsdWUgOiBpTWVzc2FnZXMpIHsKKyAgICAgICAgaWYg
KCFtZXNzYWdlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKyAgICAgICAgUUpzb25PYmplY3QgbWVzc2FnZSA9IG1lc3NhZ2VWYWx1ZS50b09iamVj
dCgpOworICAgICAgICBtZXNzYWdlLnJlbW92ZShRU3RyaW5nTGl0ZXJhbCgicmVhc29uaW5nX2Nv
bnRlbnQiKSk7CisgICAgICAgIHJlcXVlc3RNZXNzYWdlcy5wdXNoX2JhY2sobWVzc2FnZSk7Cisg
ICAgfQorICAgIHJldHVybiByZXF1ZXN0TWVzc2FnZXM7Cit9CisKK1FTdHJpbmcgU0tHQXNzaXN0
YW50UGx1Z2luRG9ja1dpZGdldDo6Y29udGVudFRvVGV4dChjb25zdCBRSnNvblZhbHVlICZpQ29u
dGVudCkKK3sKKyAgICBpZiAoaUNvbnRlbnQuaXNTdHJpbmcoKSkgeworICAgICAgICByZXR1cm4g
aUNvbnRlbnQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBpZiAoaUNvbnRlbnQuaXNBcnJheSgp
KSB7CisgICAgICAgIFFTdHJpbmdMaXN0IHBhcnRzOworICAgICAgICBjb25zdCBhdXRvIHZhbHVl
cyA9IGlDb250ZW50LnRvQXJyYXkoKTsKKyAgICAgICAgaW50IG5iID0gdmFsdWVzLmNvdW50KCk7
CisgICAgICAgIHBhcnRzLnJlc2VydmUobmIpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG5iOyArK2kpIHsKKyAgICAgICAgICAgIFFTdHJpbmcgcGFydCA9IGNvbnRlbnRUb1RleHQodmFs
dWVzLmF0KGkpKTsKKyAgICAgICAgICAgIGlmICghcGFydC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgICAgICBwYXJ0cy5wdXNoX2JhY2socGFydCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oJ1xuJyk7CisgICAgfQorCisgICAgaWYgKGlDb250
ZW50LmlzT2JqZWN0KCkpIHsKKyAgICAgICAgUUpzb25PYmplY3Qgb2JqID0gaUNvbnRlbnQudG9P
YmplY3QoKTsKKyAgICAgICAgaWYgKG9iai5jb250YWlucyhRU3RyaW5nTGl0ZXJhbCgidGV4dCIp
KSkgeworICAgICAgICAgICAgcmV0dXJuIG9iai52YWx1ZShRU3RyaW5nTGl0ZXJhbCgidGV4dCIp
KS50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAgIGlmIChvYmouY29udGFpbnMoUVN0cmlu
Z0xpdGVyYWwoImNvbnRlbnQiKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZW50VG9UZXh0
KG9iai52YWx1ZShRU3RyaW5nTGl0ZXJhbCgiY29udGVudCIpKSk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKG9iai5jb250YWlucyhRU3RyaW5nTGl0ZXJhbCgidmFsdWUiKSkpIHsKKyAgICAgICAg
ICAgIHJldHVybiBjb250ZW50VG9UZXh0KG9iai52YWx1ZShRU3RyaW5nTGl0ZXJhbCgidmFsdWUi
KSkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisKK1FTdHJp
bmcgU0tHQXNzaXN0YW50UGx1Z2luRG9ja1dpZGdldDo6ZXh0cmFjdFJlYXNvbmluZ0Zyb21Db250
ZW50KFFTdHJpbmcgJmlvQ29udGVudCkKK3sKKyAgICBRU3RyaW5nTGlzdCByZWFzb25pbmdzOwor
CisgICAgc3RhdGljIGNvbnN0IFFSZWd1bGFyRXhwcmVzc2lvbiBjb21wbGV0ZVRoaW5rVGFnKFFT
dHJpbmdMaXRlcmFsKCI8dGhpbmtcXGJbXj5dKj4oLio/KTwvdGhpbms+IiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFSZWd1bGFyRXhwcmVz
c2lvbjo6RG90TWF0Y2hlc0V2ZXJ5dGhpbmdPcHRpb24gfCBRUmVndWxhckV4cHJlc3Npb246OkNh
c2VJbnNlbnNpdGl2ZU9wdGlvbik7CisgICAgYXV0byBtYXRjaEl0ZXJhdG9yID0gY29tcGxldGVU
aGlua1RhZy5nbG9iYWxNYXRjaChpb0NvbnRlbnQpOworICAgIHdoaWxlIChtYXRjaEl0ZXJhdG9y
Lmhhc05leHQoKSkgeworICAgICAgICBjb25zdCBRUmVndWxhckV4cHJlc3Npb25NYXRjaCBtYXRj
aCA9IG1hdGNoSXRlcmF0b3IubmV4dCgpOworICAgICAgICBjb25zdCBRU3RyaW5nIHJlYXNvbmlu
ZyA9IG1hdGNoLmNhcHR1cmVkKDEpLnRyaW1tZWQoKTsKKyAgICAgICAgaWYgKCFyZWFzb25pbmcu
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICByZWFzb25pbmdzLnB1c2hfYmFjayhyZWFzb25pbmcp
OworICAgICAgICB9CisgICAgfQorICAgIGlvQ29udGVudC5yZW1vdmUoY29tcGxldGVUaGlua1Rh
Zyk7CisKKyAgICBzdGF0aWMgY29uc3QgUVJlZ3VsYXJFeHByZXNzaW9uIG9wZW5UaGlua1RhZyhR
U3RyaW5nTGl0ZXJhbCgiPHRoaW5rXFxiW14+XSo+KC4qKSQiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRUmVndWxhckV4cHJlc3Npb246OkRvdE1h
dGNoZXNFdmVyeXRoaW5nT3B0aW9uIHwgUVJlZ3VsYXJFeHByZXNzaW9uOjpDYXNlSW5zZW5zaXRp
dmVPcHRpb24pOworICAgIGNvbnN0IFFSZWd1bGFyRXhwcmVzc2lvbk1hdGNoIG9wZW5NYXRjaCA9
IG9wZW5UaGlua1RhZy5tYXRjaChpb0NvbnRlbnQpOworICAgIGlmIChvcGVuTWF0Y2guaGFzTWF0
Y2goKSkgeworICAgICAgICBjb25zdCBRU3RyaW5nIHJlYXNvbmluZyA9IG9wZW5NYXRjaC5jYXB0
dXJlZCgxKS50cmltbWVkKCk7CisgICAgICAgIGlmICghcmVhc29uaW5nLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgcmVhc29uaW5ncy5wdXNoX2JhY2socmVhc29uaW5nKTsKKyAgICAgICAgfQor
ICAgICAgICBpb0NvbnRlbnQucmVtb3ZlKG9wZW5NYXRjaC5jYXB0dXJlZFN0YXJ0KDApLCBpb0Nv
bnRlbnQubGVuZ3RoKCkgLSBvcGVuTWF0Y2guY2FwdHVyZWRTdGFydCgwKSk7CisgICAgfQorCisg
ICAgaW9Db250ZW50ID0gaW9Db250ZW50LnRyaW1tZWQoKTsKKyAgICByZXR1cm4gcmVhc29uaW5n
cy5qb2luKFFTdHJpbmdMaXRlcmFsKCJcblxuIikpLnRyaW1tZWQoKTsKK30KKworUVN0cmluZyBT
S0dBc3Npc3RhbnRQbHVnaW5Eb2NrV2lkZ2V0OjpyZWFzb25pbmdDb250ZW50VG9UZXh0KGNvbnN0
IFFKc29uT2JqZWN0ICZpTWVzc2FnZSwgY29uc3QgUUpzb25PYmplY3QgJmlDaG9pY2UpCit7Cisg
ICAgUVN0cmluZyByZWFzb25pbmcgPSBjb250ZW50VG9UZXh0KGlNZXNzYWdlLnZhbHVlKFFTdHJp
bmdMaXRlcmFsKCJyZWFzb25pbmdfY29udGVudCIpKSkudHJpbW1lZCgpOworICAgIGlmIChyZWFz
b25pbmcuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlYXNvbmluZyA9IGNvbnRlbnRUb1RleHQoaUNo
b2ljZS52YWx1ZShRU3RyaW5nTGl0ZXJhbCgicmVhc29uaW5nX2NvbnRlbnQiKSkpLnRyaW1tZWQo
KTsKKyAgICB9CisgICAgaWYgKHJlYXNvbmluZy5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVhc29u
aW5nID0gY29udGVudFRvVGV4dChpQ2hvaWNlLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJyZWFzb25p
bmciKSkpLnRyaW1tZWQoKTsKKyAgICB9CisgICAgaWYgKHJlYXNvbmluZy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgY29uc3QgUUpzb25PYmplY3QgZGVsdGEgPSBpQ2hvaWNlLnZhbHVlKFFTdHJpbmdM
aXRlcmFsKCJkZWx0YSIpKS50b09iamVjdCgpOworICAgICAgICByZWFzb25pbmcgPSBjb250ZW50
VG9UZXh0KGRlbHRhLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJyZWFzb25pbmdfY29udGVudCIpKSku
dHJpbW1lZCgpOworICAgIH0KKyAgICBpZiAocmVhc29uaW5nLmlzRW1wdHkoKSkgeworICAgICAg
ICBRU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50VG9UZXh0KGlNZXNzYWdlLnZhbHVlKFFTdHJpbmdM
aXRlcmFsKCJjb250ZW50IikpKTsKKyAgICAgICAgcmVhc29uaW5nID0gZXh0cmFjdFJlYXNvbmlu
Z0Zyb21Db250ZW50KGNvbnRlbnQpOworICAgIH0KKyAgICBpZiAocmVhc29uaW5nLmlzRW1wdHko
KSkgeworICAgICAgICBRU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50VG9UZXh0KGlDaG9pY2UudmFs
dWUoUVN0cmluZ0xpdGVyYWwoInRleHQiKSkpOworICAgICAgICByZWFzb25pbmcgPSBleHRyYWN0
UmVhc29uaW5nRnJvbUNvbnRlbnQoY29udGVudCk7CisgICAgfQorICAgIGlmIChyZWFzb25pbmcu
aXNFbXB0eSgpKSB7CisgICAgICAgIFFTdHJpbmcgY29udGVudCA9IGNvbnRlbnRUb1RleHQoaUNo
b2ljZS52YWx1ZShRU3RyaW5nTGl0ZXJhbCgiZGVsdGEiKSkpOworICAgICAgICByZWFzb25pbmcg
PSBleHRyYWN0UmVhc29uaW5nRnJvbUNvbnRlbnQoY29udGVudCk7CisgICAgfQorICAgIHJldHVy
biByZWFzb25pbmc7Cit9CisKK1FTdHJpbmcgU0tHQXNzaXN0YW50UGx1Z2luRG9ja1dpZGdldDo6
c3FsUmVzdWx0VG9Kc29uKGNvbnN0IFNLR1N0cmluZ0xpc3RMaXN0ICZpUmVzdWx0KQoreworICAg
IFFKc29uT2JqZWN0IG91dHB1dDsKKyAgICBpZiAoaVJlc3VsdC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgb3V0cHV0Lmluc2VydChRU3RyaW5nTGl0ZXJhbCgiY29sdW1ucyIpLCBRSnNvbkFycmF5KCkp
OworICAgICAgICBvdXRwdXQuaW5zZXJ0KFFTdHJpbmdMaXRlcmFsKCJyb3dzIiksIFFKc29uQXJy
YXkoKSk7CisgICAgICAgIG91dHB1dC5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoInJvd19jb3VudCIp
LCAwKTsKKyAgICAgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21VdGY4KFFKc29uRG9jdW1lbnQob3V0
cHV0KS50b0pzb24oUUpzb25Eb2N1bWVudDo6Q29tcGFjdCkpOworICAgIH0KKworICAgIFFKc29u
QXJyYXkgY29sdW1uczsKKyAgICBjb25zdCBRU3RyaW5nTGlzdCBjb2x1bW5OYW1lcyA9IGlSZXN1
bHQuYXQoMCk7CisgICAgZm9yIChjb25zdCBhdXRvICZjb2x1bW5OYW1lIDogY29sdW1uTmFtZXMp
IHsKKyAgICAgICAgY29sdW1ucy5wdXNoX2JhY2soY29sdW1uTmFtZSk7CisgICAgfQorICAgIG91
dHB1dC5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoImNvbHVtbnMiKSwgY29sdW1ucyk7CisKKyAgICBR
SnNvbkFycmF5IHJvd3M7CisgICAgZm9yIChpbnQgcm93SW5kZXggPSAxOyByb3dJbmRleCA8IGlS
ZXN1bHQuY291bnQoKTsgKytyb3dJbmRleCkgeworICAgICAgICBjb25zdCBRU3RyaW5nTGlzdCB2
YWx1ZXMgPSBpUmVzdWx0LmF0KHJvd0luZGV4KTsKKyAgICAgICAgUUpzb25PYmplY3Qgcm93Owor
ICAgICAgICBmb3IgKGludCBjb2x1bW5JbmRleCA9IDA7IGNvbHVtbkluZGV4IDwgY29sdW1uTmFt
ZXMuY291bnQoKTsgKytjb2x1bW5JbmRleCkgeworICAgICAgICAgICAgcm93Lmluc2VydChjb2x1
bW5OYW1lcy5hdChjb2x1bW5JbmRleCksIHZhbHVlcy52YWx1ZShjb2x1bW5JbmRleCkpOworICAg
ICAgICB9CisgICAgICAgIHJvd3MucHVzaF9iYWNrKHJvdyk7CisgICAgfQorICAgIG91dHB1dC5p
bnNlcnQoUVN0cmluZ0xpdGVyYWwoInJvd3MiKSwgcm93cyk7CisgICAgb3V0cHV0Lmluc2VydChR
U3RyaW5nTGl0ZXJhbCgicm93X2NvdW50IiksIHJvd3MuY291bnQoKSk7CisgICAgcmV0dXJuIFFT
dHJpbmc6OmZyb21VdGY4KFFKc29uRG9jdW1lbnQob3V0cHV0KS50b0pzb24oUUpzb25Eb2N1bWVu
dDo6Q29tcGFjdCkpOworfQorCitRU3RyaW5nIFNLR0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRnZXQ6
OmV4ZWN1dGVTcWxpdGVTZWxlY3QoY29uc3QgUVN0cmluZyAmaVNxbCkgY29uc3QKK3sKKyAgICBR
U3RyaW5nIHNxbCA9IGlTcWwudHJpbW1lZCgpOworICAgIHdoaWxlIChzcWwuZW5kc1dpdGgodSc7
JykpIHsKKyAgICAgICAgc3FsLmNob3AoMSk7CisgICAgICAgIHNxbCA9IHNxbC50cmltbWVkKCk7
CisgICAgfQorCisgICAgc3RhdGljIFFSZWd1bGFyRXhwcmVzc2lvbiBzZWxlY3RPbmx5KFFTdHJp
bmdMaXRlcmFsKCJeXFxzKlNFTEVDVFxcYiIpLCBRUmVndWxhckV4cHJlc3Npb246OkNhc2VJbnNl
bnNpdGl2ZU9wdGlvbik7CisgICAgaWYgKCFzZWxlY3RPbmx5Lm1hdGNoKHNxbCkuaGFzTWF0Y2go
KSB8fCBzcWwuY29udGFpbnModSc7JykpIHsKKyAgICAgICAgUUpzb25PYmplY3QgZXJyb3I7Cisg
ICAgICAgIGVycm9yLmluc2VydChRU3RyaW5nTGl0ZXJhbCgiZXJyb3IiKSwgaTE4bmMoIkVycm9y
IG1lc3NhZ2UiLCAiT25seSBhIHNpbmdsZSBTUUxpdGUgU0VMRUNUIHN0YXRlbWVudCBpcyBhbGxv
d2VkLiIpKTsKKyAgICAgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21VdGY4KFFKc29uRG9jdW1lbnQo
ZXJyb3IpLnRvSnNvbihRSnNvbkRvY3VtZW50OjpDb21wYWN0KSk7CisgICAgfQorCisgICAgU0tH
U3RyaW5nTGlzdExpc3QgcmVzdWx0OworICAgIGF1dG8gKm1haW5QYW5lbCA9IFNLR01haW5QYW5l
bDo6Z2V0TWFpblBhbmVsKCk7CisgICAgYXV0byAqZG9jdW1lbnQgPSBtYWluUGFuZWwgIT0gbnVs
bHB0ciA/IG1haW5QYW5lbC0+Z2V0RG9jdW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKGRvY3Vt
ZW50ID09IG51bGxwdHIpIHsKKyAgICAgICAgUUpzb25PYmplY3QgZXJyb3I7CisgICAgICAgIGVy
cm9yLmluc2VydChRU3RyaW5nTGl0ZXJhbCgiZXJyb3IiKSwgaTE4bmMoIkVycm9yIG1lc3NhZ2Ui
LCAiTm8gZG9jdW1lbnQgaXMgb3BlbmVkLiIpKTsKKyAgICAgICAgcmV0dXJuIFFTdHJpbmc6OmZy
b21VdGY4KFFKc29uRG9jdW1lbnQoZXJyb3IpLnRvSnNvbihRSnNvbkRvY3VtZW50OjpDb21wYWN0
KSk7CisgICAgfQorCisgICAgYXV0byBlcnIgPSBkb2N1bWVudC0+ZXhlY3V0ZVNlbGVjdFNxbGl0
ZU9yZGVyKHNxbCwgcmVzdWx0KTsKKyAgICBpZiAoZXJyLmlzRmFpbGVkKCkpIHsKKyAgICAgICAg
UUpzb25PYmplY3QgZXJyb3I7CisgICAgICAgIGVycm9yLmluc2VydChRU3RyaW5nTGl0ZXJhbCgi
ZXJyb3IiKSwgZXJyLmdldEZ1bGxNZXNzYWdlKCkpOworICAgICAgICByZXR1cm4gUVN0cmluZzo6
ZnJvbVV0ZjgoUUpzb25Eb2N1bWVudChlcnJvcikudG9Kc29uKFFKc29uRG9jdW1lbnQ6OkNvbXBh
Y3QpKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3FsUmVzdWx0VG9Kc29uKHJlc3VsdCk7Cit9CisK
K1FTdHJpbmcgU0tHQXNzaXN0YW50UGx1Z2luRG9ja1dpZGdldDo6ZXhlY3V0ZVdlYlNlYXJjaChj
b25zdCBRU3RyaW5nICZpUXVlcnksIGludCBpTWF4UmVzdWx0cykgY29uc3QKK3sKKyAgICBpZiAo
aVF1ZXJ5LnRyaW1tZWQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgUUpzb25PYmplY3QgZXJyb3I7
CisgICAgICAgIGVycm9yLmluc2VydChRU3RyaW5nTGl0ZXJhbCgiZXJyb3IiKSwgaTE4bmMoIkVy
cm9yIG1lc3NhZ2UiLCAiU2VhcmNoIHF1ZXJ5IGNhbm5vdCBiZSBlbXB0eS4iKSk7CisgICAgICAg
IHJldHVybiBRU3RyaW5nOjpmcm9tVXRmOChRSnNvbkRvY3VtZW50KGVycm9yKS50b0pzb24oUUpz
b25Eb2N1bWVudDo6Q29tcGFjdCkpOworICAgIH0KKworICAgIFFVcmwgc2VhcmNoVXJsKFFTdHJp
bmdMaXRlcmFsKCJodHRwczovL2FwaS5kdWNrZHVja2dvLmNvbS8iKSk7CisgICAgUVVybFF1ZXJ5
IHF1ZXJ5OworICAgIHF1ZXJ5LmFkZFF1ZXJ5SXRlbShRU3RyaW5nTGl0ZXJhbCgicSIpLCBpUXVl
cnkpOworICAgIHF1ZXJ5LmFkZFF1ZXJ5SXRlbShRU3RyaW5nTGl0ZXJhbCgiZm9ybWF0IiksIFFT
dHJpbmdMaXRlcmFsKCJqc29uIikpOworICAgIHF1ZXJ5LmFkZFF1ZXJ5SXRlbShRU3RyaW5nTGl0
ZXJhbCgibm9faHRtbCIpLCBRU3RyaW5nTGl0ZXJhbCgiMSIpKTsKKyAgICBzZWFyY2hVcmwuc2V0
UXVlcnkocXVlcnkpOworCisgICAgUU5ldHdvcmtSZXF1ZXN0IHJlcXVlc3Qoc2VhcmNoVXJsKTsK
KyAgICByZXF1ZXN0LnNldEhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OlVzZXJBZ2VudEhlYWRlciwg
UVN0cmluZ0xpdGVyYWwoIlNrcm9vZ2UtQUktQXNzaXN0YW50IikpOworCisgICAgUUV2ZW50TG9v
cCBldmVudExvb3A7CisgICAgUVBvaW50ZXI8UU5ldHdvcmtSZXBseT4gcmVwbHkgPSBjb25zdF9j
YXN0PFFOZXR3b3JrQWNjZXNzTWFuYWdlciAqPigmbV9uZXR3b3JrTWFuYWdlciktPmdldChyZXF1
ZXN0KTsKKyAgICBjb25uZWN0KHJlcGx5LCAmUU5ldHdvcmtSZXBseTo6ZmluaXNoZWQsICZldmVu
dExvb3AsICZRRXZlbnRMb29wOjpxdWl0KTsKKworICAgIGV2ZW50TG9vcC5leGVjKCk7CisKKyAg
ICBpZiAocmVwbHkgPT0gbnVsbHB0ciB8fCByZXBseS0+ZXJyb3IoKSAhPSBRTmV0d29ya1JlcGx5
OjpOb0Vycm9yKSB7CisgICAgICAgIFFKc29uT2JqZWN0IGVycm9yOworICAgICAgICBlcnJvci5p
bnNlcnQoUVN0cmluZ0xpdGVyYWwoImVycm9yIiksCisgICAgICAgICAgICAgICAgICAgICBpMThu
YygiRXJyb3IgbWVzc2FnZSIsICJXZWIgc2VhcmNoIGZhaWxlZDogJTEiLCByZXBseSAhPSBudWxs
cHRyID8gcmVwbHktPmVycm9yU3RyaW5nKCkgOiBRU3RyaW5nTGl0ZXJhbCgiVW5rbm93biBlcnJv
ciIpKSk7CisgICAgICAgIGlmIChyZXBseSAhPSBudWxscHRyKSB7CisgICAgICAgICAgICByZXBs
eS0+ZGVsZXRlTGF0ZXIoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUVN0cmluZzo6ZnJv
bVV0ZjgoUUpzb25Eb2N1bWVudChlcnJvcikudG9Kc29uKFFKc29uRG9jdW1lbnQ6OkNvbXBhY3Qp
KTsKKyAgICB9CisKKyAgICBRQnl0ZUFycmF5IHJlc3BvbnNlRGF0YSA9IHJlcGx5LT5yZWFkQWxs
KCk7CisgICAgcmVwbHktPmRlbGV0ZUxhdGVyKCk7CisKKyAgICBRSnNvblBhcnNlRXJyb3IgcGFy
c2VFcnJvcnt9OworICAgIFFKc29uRG9jdW1lbnQgcmVzcG9uc2VEb2MgPSBRSnNvbkRvY3VtZW50
Ojpmcm9tSnNvbihyZXNwb25zZURhdGEsICZwYXJzZUVycm9yKTsKKyAgICBpZiAocGFyc2VFcnJv
ci5lcnJvciAhPSBRSnNvblBhcnNlRXJyb3I6Ok5vRXJyb3IgfHwgIXJlc3BvbnNlRG9jLmlzT2Jq
ZWN0KCkpIHsKKyAgICAgICAgUUpzb25PYmplY3QgZXJyb3I7CisgICAgICAgIGVycm9yLmluc2Vy
dChRU3RyaW5nTGl0ZXJhbCgiZXJyb3IiKSwgaTE4bmMoIkVycm9yIG1lc3NhZ2UiLCAiRmFpbGVk
IHRvIHBhcnNlIHNlYXJjaCByZXN1bHRzLiIpKTsKKyAgICAgICAgcmV0dXJuIFFTdHJpbmc6OmZy
b21VdGY4KFFKc29uRG9jdW1lbnQoZXJyb3IpLnRvSnNvbihRSnNvbkRvY3VtZW50OjpDb21wYWN0
KSk7CisgICAgfQorCisgICAgUUpzb25PYmplY3QgcmVzcG9uc2VPYmogPSByZXNwb25zZURvYy5v
YmplY3QoKTsKKyAgICBRSnNvbkFycmF5IHJlc3VsdHM7CisKKyAgICAvLyBFeHRyYWN0IGFic3Ry
YWN0IHJlc3VsdCBpZiBhdmFpbGFibGUKKyAgICBRU3RyaW5nIGFic3RyYWN0VGV4dCA9IHJlc3Bv
bnNlT2JqLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJBYnN0cmFjdFRleHQiKSkudG9TdHJpbmcoKS50
cmltbWVkKCk7CisgICAgUVN0cmluZyBhYnN0cmFjdFNvdXJjZSA9IHJlc3BvbnNlT2JqLnZhbHVl
KFFTdHJpbmdMaXRlcmFsKCJBYnN0cmFjdFNvdXJjZSIpKS50b1N0cmluZygpLnRyaW1tZWQoKTsK
KyAgICBRU3RyaW5nIGFic3RyYWN0VXJsID0gcmVzcG9uc2VPYmoudmFsdWUoUVN0cmluZ0xpdGVy
YWwoIkFic3RyYWN0VVJMIikpLnRvU3RyaW5nKCkudHJpbW1lZCgpOworCisgICAgaWYgKCFhYnN0
cmFjdFRleHQuaXNFbXB0eSgpKSB7CisgICAgICAgIFFKc29uT2JqZWN0IHJlc3VsdDsKKyAgICAg
ICAgcmVzdWx0Lmluc2VydChRU3RyaW5nTGl0ZXJhbCgidGl0bGUiKSwgYWJzdHJhY3RTb3VyY2Uu
aXNFbXB0eSgpID8gUVN0cmluZ0xpdGVyYWwoIlN1bW1hcnkiKSA6IGFic3RyYWN0U291cmNlKTsK
KyAgICAgICAgcmVzdWx0Lmluc2VydChRU3RyaW5nTGl0ZXJhbCgic25pcHBldCIpLCBhYnN0cmFj
dFRleHQpOworICAgICAgICBpZiAoIWFic3RyYWN0VXJsLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgcmVzdWx0Lmluc2VydChRU3RyaW5nTGl0ZXJhbCgidXJsIiksIGFic3RyYWN0VXJsKTsKKyAg
ICAgICAgfQorICAgICAgICByZXN1bHRzLnB1c2hfYmFjayhyZXN1bHQpOworICAgIH0KKworICAg
IC8vIEV4dHJhY3QgcmVsYXRlZCBzZWFyY2hlcyBhcyBhZGRpdGlvbmFsIHJlc3VsdHMKKyAgICBR
SnNvbkFycmF5IHJlbGF0ZWRTZWFyY2hlcyA9IHJlc3BvbnNlT2JqLnZhbHVlKFFTdHJpbmdMaXRl
cmFsKCJSZWxhdGVkVG9waWNzIikpLnRvQXJyYXkoKTsKKyAgICBpbnQgcmVzdWx0Q291bnQgPSBy
ZXN1bHRzLmNvdW50KCk7CisgICAgZm9yIChjb25zdCBRSnNvblZhbHVlICZ0b3BpY1ZhbHVlIDog
cmVsYXRlZFNlYXJjaGVzKSB7CisgICAgICAgIGlmIChyZXN1bHRDb3VudCA+PSBpTWF4UmVzdWx0
cykgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAodG9waWNW
YWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICBRSnNvbk9iamVjdCB0b3BpYyA9IHRvcGlj
VmFsdWUudG9PYmplY3QoKTsKKyAgICAgICAgICAgIFFTdHJpbmcgZmlyc3RVcmwgPSB0b3BpYy52
YWx1ZShRU3RyaW5nTGl0ZXJhbCgiRmlyc3RVUkwiKSkudG9TdHJpbmcoKS50cmltbWVkKCk7Cisg
ICAgICAgICAgICBRU3RyaW5nIHRleHQgPSB0b3BpYy52YWx1ZShRU3RyaW5nTGl0ZXJhbCgiVGV4
dCIpKS50b1N0cmluZygpLnRyaW1tZWQoKTsKKworICAgICAgICAgICAgaWYgKCF0ZXh0LmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgICAgIFFKc29uT2JqZWN0IHJlc3VsdDsKKyAgICAgICAgICAg
ICAgICByZXN1bHQuaW5zZXJ0KFFTdHJpbmdMaXRlcmFsKCJ0aXRsZSIpLCB0b3BpYy52YWx1ZShR
U3RyaW5nTGl0ZXJhbCgiTmFtZSIpKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICByZXN1
bHQuaW5zZXJ0KFFTdHJpbmdMaXRlcmFsKCJzbmlwcGV0IiksIHRleHQpOworICAgICAgICAgICAg
ICAgIGlmICghZmlyc3RVcmwuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoInVybCIpLCBmaXJzdFVybCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaF9iYWNrKHJlc3VsdCk7CisgICAgICAg
ICAgICAgICAgKytyZXN1bHRDb3VudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChyZXN1bHRzLmlzRW1wdHkoKSkgeworICAgICAgICBRSnNvbk9iamVjdCBvdXRw
dXQ7CisgICAgICAgIG91dHB1dC5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoInJlc3VsdHMiKSwgUUpz
b25BcnJheSgpKTsKKyAgICAgICAgb3V0cHV0Lmluc2VydChRU3RyaW5nTGl0ZXJhbCgicmVzdWx0
X2NvdW50IiksIDApOworICAgICAgICBvdXRwdXQuaW5zZXJ0KFFTdHJpbmdMaXRlcmFsKCJxdWVy
eSIpLCBpUXVlcnkpOworICAgICAgICByZXR1cm4gUVN0cmluZzo6ZnJvbVV0ZjgoUUpzb25Eb2N1
bWVudChvdXRwdXQpLnRvSnNvbihRSnNvbkRvY3VtZW50OjpDb21wYWN0KSk7CisgICAgfQorCisg
ICAgUUpzb25PYmplY3Qgb3V0cHV0OworICAgIG91dHB1dC5pbnNlcnQoUVN0cmluZ0xpdGVyYWwo
InJlc3VsdHMiKSwgcmVzdWx0cyk7CisgICAgb3V0cHV0Lmluc2VydChRU3RyaW5nTGl0ZXJhbCgi
cmVzdWx0X2NvdW50IiksIHJlc3VsdHMuY291bnQoKSk7CisgICAgb3V0cHV0Lmluc2VydChRU3Ry
aW5nTGl0ZXJhbCgicXVlcnkiKSwgaVF1ZXJ5KTsKKyAgICByZXR1cm4gUVN0cmluZzo6ZnJvbVV0
ZjgoUUpzb25Eb2N1bWVudChvdXRwdXQpLnRvSnNvbihRSnNvbkRvY3VtZW50OjpDb21wYWN0KSk7
Cit9CisKK1FTdHJpbmcgU0tHQXNzaXN0YW50UGx1Z2luRG9ja1dpZGdldDo6ZXhlY3V0ZVRvb2xD
YWxsKGNvbnN0IFFKc29uT2JqZWN0ICZpVG9vbENhbGwpIGNvbnN0Cit7CisgICAgY29uc3QgUUpz
b25PYmplY3QgZnVuY3Rpb24gPSBpVG9vbENhbGwudmFsdWUoUVN0cmluZ0xpdGVyYWwoImZ1bmN0
aW9uIikpLnRvT2JqZWN0KCk7CisgICAgY29uc3QgUVN0cmluZyBuYW1lID0gZnVuY3Rpb24udmFs
dWUoUVN0cmluZ0xpdGVyYWwoIm5hbWUiKSkudG9TdHJpbmcoKTsKKyAgICBjb25zdCBRU3RyaW5n
IGFyZ3VtZW50cyA9IGZ1bmN0aW9uLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJhcmd1bWVudHMiKSku
dG9TdHJpbmcoKTsKKworICAgIFFKc29uUGFyc2VFcnJvciBhcmd1bWVudHNQYXJzZUVycm9ye307
CisgICAgUUpzb25Eb2N1bWVudCBhcmd1bWVudHNEb2MgPSBRSnNvbkRvY3VtZW50Ojpmcm9tSnNv
bihhcmd1bWVudHMudG9VdGY4KCksICZhcmd1bWVudHNQYXJzZUVycm9yKTsKKyAgICBRSnNvbk9i
amVjdCBhcmd1bWVudHNPYmo7CisgICAgaWYgKCFhcmd1bWVudHMuaXNFbXB0eSgpKSB7CisgICAg
ICAgIGlmIChhcmd1bWVudHNQYXJzZUVycm9yLmVycm9yICE9IFFKc29uUGFyc2VFcnJvcjo6Tm9F
cnJvciB8fCAhYXJndW1lbnRzRG9jLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIFFKc29uT2Jq
ZWN0IGVycm9yOworICAgICAgICAgICAgZXJyb3IuaW5zZXJ0KFFTdHJpbmdMaXRlcmFsKCJlcnJv
ciIpLCBpMThuYygiRXJyb3IgbWVzc2FnZSIsICJJbnZhbGlkIHRvb2wgY2FsbCBhcmd1bWVudHMu
IikpOworICAgICAgICAgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21VdGY4KFFKc29uRG9jdW1lbnQo
ZXJyb3IpLnRvSnNvbihRSnNvbkRvY3VtZW50OjpDb21wYWN0KSk7CisgICAgICAgIH0KKyAgICAg
ICAgYXJndW1lbnRzT2JqID0gYXJndW1lbnRzRG9jLm9iamVjdCgpOworICAgIH0KKworICAgIGlm
IChuYW1lID09IFFTdHJpbmdMaXRlcmFsKCJleGVjdXRlX3NxbGl0ZV9zZWxlY3QiKSkgeworICAg
ICAgICByZXR1cm4gZXhlY3V0ZVNxbGl0ZVNlbGVjdChhcmd1bWVudHNPYmoudmFsdWUoUVN0cmlu
Z0xpdGVyYWwoInNxbCIpKS50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICBpZiAobmFtZSA9PSBR
U3RyaW5nTGl0ZXJhbCgid2ViX3NlYXJjaCIpKSB7CisgICAgICAgIGludCBtYXhSZXN1bHRzID0g
YXJndW1lbnRzT2JqLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJtYXhfcmVzdWx0cyIpKS50b0ludCg1
KTsKKyAgICAgICAgaWYgKG1heFJlc3VsdHMgPCAxIHx8IG1heFJlc3VsdHMgPiAxMCkgeworICAg
ICAgICAgICAgbWF4UmVzdWx0cyA9IDU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGV4ZWN1
dGVXZWJTZWFyY2goYXJndW1lbnRzT2JqLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJxdWVyeSIpKS50
b1N0cmluZygpLCBtYXhSZXN1bHRzKTsKKyAgICB9CisKKyAgICBRSnNvbk9iamVjdCBlcnJvcjsK
KyAgICBlcnJvci5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoImVycm9yIiksIGkxOG5jKCJFcnJvciBt
ZXNzYWdlIiwgIlVua25vd24gdG9vbDogJTEiLCBuYW1lKSk7CisgICAgcmV0dXJuIFFTdHJpbmc6
OmZyb21VdGY4KFFKc29uRG9jdW1lbnQoZXJyb3IpLnRvSnNvbihRSnNvbkRvY3VtZW50OjpDb21w
YWN0KSk7Cit9CisKK1FTdHJpbmcgU0tHQXNzaXN0YW50UGx1Z2luRG9ja1dpZGdldDo6ZXh0cmFj
dEFzc2lzdGFudE1lc3NhZ2UoY29uc3QgUUJ5dGVBcnJheSAmaVBheWxvYWQsIFFTdHJpbmcgJm9F
cnJvck1lc3NhZ2UsIGJvb2wgJm9OZWVkc0ZvbGxvd1VwKQoreworICAgIG9OZWVkc0ZvbGxvd1Vw
ID0gZmFsc2U7CisgICAgbV9wZW5kaW5nUmVhc29uaW5nQ29udGVudC5jbGVhcigpOworICAgIFFK
c29uUGFyc2VFcnJvciBwYXJzZUVycm9ye307CisgICAgUUpzb25Eb2N1bWVudCByZXNwb25zZSA9
IFFKc29uRG9jdW1lbnQ6OmZyb21Kc29uKGlQYXlsb2FkLCAmcGFyc2VFcnJvcik7CisgICAgaWYg
KHBhcnNlRXJyb3IuZXJyb3IgIT0gUUpzb25QYXJzZUVycm9yOjpOb0Vycm9yIHx8ICFyZXNwb25z
ZS5pc09iamVjdCgpKSB7CisgICAgICAgIG9FcnJvck1lc3NhZ2UgPSBpMThuYygiRXJyb3IgbWVz
c2FnZSIsICJJbnZhbGlkIEpTT04gcmVzcG9uc2UgZnJvbSBzZXJ2ZXIuIik7CisgICAgICAgIHJl
dHVybiBRU3RyaW5nKCk7CisgICAgfQorCisgICAgY29uc3QgUUpzb25PYmplY3Qgcm9vdCA9IHJl
c3BvbnNlLm9iamVjdCgpOworICAgIGlmIChyb290LmNvbnRhaW5zKFFTdHJpbmdMaXRlcmFsKCJl
cnJvciIpKSkgeworICAgICAgICBjb25zdCBRSnNvblZhbHVlIGVycm9yVmFsdWUgPSByb290LnZh
bHVlKFFTdHJpbmdMaXRlcmFsKCJlcnJvciIpKTsKKyAgICAgICAgUVN0cmluZyBkZXRhaWxzID0g
Y29udGVudFRvVGV4dChlcnJvclZhbHVlKTsKKyAgICAgICAgaWYgKGRldGFpbHMuaXNFbXB0eSgp
ICYmIGVycm9yVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgZGV0YWlscyA9IGVycm9y
VmFsdWUudG9PYmplY3QoKS52YWx1ZShRU3RyaW5nTGl0ZXJhbCgibWVzc2FnZSIpKS50b1N0cmlu
ZygpOworICAgICAgICB9CisgICAgICAgIGlmIChkZXRhaWxzLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgZGV0YWlscyA9IFFTdHJpbmc6OmZyb21VdGY4KGlQYXlsb2FkKTsKKyAgICAgICAgfQor
ICAgICAgICBvRXJyb3JNZXNzYWdlID0gaTE4bmMoIkVycm9yIG1lc3NhZ2UiLCAiU2VydmVyIGVy
cm9yOiAlMSIsIGRldGFpbHMpOworICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgIH0KKwor
ICAgIFFKc29uQXJyYXkgY2hvaWNlcyA9IHJvb3QudmFsdWUoUVN0cmluZ0xpdGVyYWwoImNob2lj
ZXMiKSkudG9BcnJheSgpOworICAgIGlmIChjaG9pY2VzLmlzRW1wdHkoKSkgeworICAgICAgICBv
RXJyb3JNZXNzYWdlID0gaTE4bmMoIkVycm9yIG1lc3NhZ2UiLCAiTm8gYW5zd2VyIHJldHVybmVk
IGJ5IHRoZSBtb2RlbC4iKTsKKyAgICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICB9CisKKyAg
ICBjb25zdCBRSnNvbk9iamVjdCBmaXJzdENob2ljZSA9IGNob2ljZXMuYXQoMCkudG9PYmplY3Qo
KTsKKyAgICBRSnNvbk9iamVjdCBtZXNzYWdlID0gZmlyc3RDaG9pY2UudmFsdWUoUVN0cmluZ0xp
dGVyYWwoIm1lc3NhZ2UiKSkudG9PYmplY3QoKTsKKyAgICBtX3BlbmRpbmdSZWFzb25pbmdDb250
ZW50ID0gcmVhc29uaW5nQ29udGVudFRvVGV4dChtZXNzYWdlLCBmaXJzdENob2ljZSk7CisgICAg
UUpzb25BcnJheSB0b29sQ2FsbHMgPSBtZXNzYWdlLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJ0b29s
X2NhbGxzIikpLnRvQXJyYXkoKTsKKyAgICBpZiAodG9vbENhbGxzLmlzRW1wdHkoKSkgeworICAg
ICAgICB0b29sQ2FsbHMgPSBmaXJzdENob2ljZS52YWx1ZShRU3RyaW5nTGl0ZXJhbCgidG9vbF9j
YWxscyIpKS50b0FycmF5KCk7CisgICAgfQorCisgICAgaWYgKCF0b29sQ2FsbHMuaXNFbXB0eSgp
KSB7CisgICAgICAgICsrbV90b29sQ2FsbERlcHRoOworICAgICAgICBpZiAobV90b29sQ2FsbERl
cHRoID4gOCkgeworICAgICAgICAgICAgb0Vycm9yTWVzc2FnZSA9IGkxOG5jKCJFcnJvciBtZXNz
YWdlIiwgIlRvbyBtYW55IGNvbnNlY3V0aXZlIHRvb2wgY2FsbHMuIik7CisgICAgICAgICAgICBy
ZXR1cm4gUVN0cmluZygpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1lc3NhZ2UuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBtZXNzYWdlLmluc2VydChRU3RyaW5nTGl0ZXJhbCgicm9sZSIp
LCBRU3RyaW5nTGl0ZXJhbCgiYXNzaXN0YW50IikpOworICAgICAgICAgICAgbWVzc2FnZS5pbnNl
cnQoUVN0cmluZ0xpdGVyYWwoImNvbnRlbnQiKSwgUUpzb25WYWx1ZTo6TnVsbCk7CisgICAgICAg
ICAgICBtZXNzYWdlLmluc2VydChRU3RyaW5nTGl0ZXJhbCgidG9vbF9jYWxscyIpLCB0b29sQ2Fs
bHMpOworICAgICAgICB9CisgICAgICAgIGlmICghbV9wZW5kaW5nUmVhc29uaW5nQ29udGVudC5p
c0VtcHR5KCkgJiYgIW1lc3NhZ2UuY29udGFpbnMoUVN0cmluZ0xpdGVyYWwoInJlYXNvbmluZ19j
b250ZW50IikpKSB7CisgICAgICAgICAgICBtZXNzYWdlLmluc2VydChRU3RyaW5nTGl0ZXJhbCgi
cmVhc29uaW5nX2NvbnRlbnQiKSwgbV9wZW5kaW5nUmVhc29uaW5nQ29udGVudCk7CisgICAgICAg
IH0KKyAgICAgICAgbV9tZXNzYWdlcy5wdXNoX2JhY2sobWVzc2FnZSk7CisKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvICZ0b29sQ2FsbFZhbHVlIDogdG9vbENhbGxzKSB7CisgICAgICAgICAgICBj
b25zdCBRSnNvbk9iamVjdCB0b29sQ2FsbCA9IHRvb2xDYWxsVmFsdWUudG9PYmplY3QoKTsKKyAg
ICAgICAgICAgIFFTdHJpbmcgdG9vbENhbGxJZCA9IHRvb2xDYWxsLnZhbHVlKFFTdHJpbmdMaXRl
cmFsKCJpZCIpKS50b1N0cmluZygpOworICAgICAgICAgICAgaWYgKHRvb2xDYWxsSWQuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICAgICAgdG9vbENhbGxJZCA9IHRvb2xDYWxsLnZhbHVlKFFTdHJp
bmdMaXRlcmFsKCJ0b29sX2lkIikpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIFFKc29uT2JqZWN0IHRvb2xSZXN1bHQ7CisgICAgICAgICAgICB0b29sUmVzdWx0Lmlu
c2VydChRU3RyaW5nTGl0ZXJhbCgicm9sZSIpLCBRU3RyaW5nTGl0ZXJhbCgidG9vbCIpKTsKKyAg
ICAgICAgICAgIHRvb2xSZXN1bHQuaW5zZXJ0KFFTdHJpbmdMaXRlcmFsKCJ0b29sX2NhbGxfaWQi
KSwgdG9vbENhbGxJZCk7CisgICAgICAgICAgICB0b29sUmVzdWx0Lmluc2VydChRU3RyaW5nTGl0
ZXJhbCgiY29udGVudCIpLCBleGVjdXRlVG9vbENhbGwodG9vbENhbGwpKTsKKyAgICAgICAgICAg
IG1fbWVzc2FnZXMucHVzaF9iYWNrKHRvb2xSZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAg
b05lZWRzRm9sbG93VXAgPSB0cnVlOworICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgIH0K
KworICAgIFFTdHJpbmcgYW5zd2VyID0gY29udGVudFRvVGV4dChtZXNzYWdlLnZhbHVlKFFTdHJp
bmdMaXRlcmFsKCJjb250ZW50IikpKS50cmltbWVkKCk7CisgICAgaWYgKGFuc3dlci5pc0VtcHR5
KCkpIHsKKyAgICAgICAgYW5zd2VyID0gY29udGVudFRvVGV4dChmaXJzdENob2ljZS52YWx1ZShR
U3RyaW5nTGl0ZXJhbCgidGV4dCIpKSkudHJpbW1lZCgpOworICAgIH0KKyAgICBpZiAoYW5zd2Vy
LmlzRW1wdHkoKSkgeworICAgICAgICBhbnN3ZXIgPSBjb250ZW50VG9UZXh0KGZpcnN0Q2hvaWNl
LnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJkZWx0YSIpKSkudHJpbW1lZCgpOworICAgIH0KKyAgICBj
b25zdCBRU3RyaW5nIHJlYXNvbmluZ0Zyb21BbnN3ZXIgPSBleHRyYWN0UmVhc29uaW5nRnJvbUNv
bnRlbnQoYW5zd2VyKTsKKyAgICBpZiAoIXJlYXNvbmluZ0Zyb21BbnN3ZXIuaXNFbXB0eSgpKSB7
CisgICAgICAgIGlmIChtX3BlbmRpbmdSZWFzb25pbmdDb250ZW50LmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgbV9wZW5kaW5nUmVhc29uaW5nQ29udGVudCA9IHJlYXNvbmluZ0Zyb21BbnN3ZXI7
CisgICAgICAgIH0gZWxzZSBpZiAoIW1fcGVuZGluZ1JlYXNvbmluZ0NvbnRlbnQuY29udGFpbnMo
cmVhc29uaW5nRnJvbUFuc3dlcikpIHsKKyAgICAgICAgICAgIG1fcGVuZGluZ1JlYXNvbmluZ0Nv
bnRlbnQgKz0gUVN0cmluZ0xpdGVyYWwoIlxuXG4iKSArIHJlYXNvbmluZ0Zyb21BbnN3ZXI7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgaWYgKGFuc3dlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgb0Vy
cm9yTWVzc2FnZSA9IGkxOG5jKCJFcnJvciBtZXNzYWdlIiwgIlRoZSBtb2RlbCByZXR1cm5lZCBh
biBlbXB0eSBhbnN3ZXIuIik7CisgICAgfQorICAgIHJldHVybiBhbnN3ZXI7Cit9CisKK3ZvaWQg
U0tHQXNzaXN0YW50UGx1Z2luRG9ja1dpZGdldDo6b25SZXBseUZpbmlzaGVkKCkKK3sKKyAgICBT
S0dUUkFDRUlORlVOQygxMCkKKyAgICBRUG9pbnRlcjxRTmV0d29ya1JlcGx5PiByZXBseSA9IG1f
cGVuZGluZ1JlcGx5OworICAgIG1fcGVuZGluZ1JlcGx5ID0gbnVsbHB0cjsKKyAgICBzZXRCdXN5
KGZhbHNlKTsKKworICAgIGlmIChyZXBseSA9PSBudWxscHRyKSB7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBjb25zdCBRQnl0ZUFycmF5IHBheWxvYWQgPSByZXBseS0+cmVhZEFsbCgp
OworICAgIFFTdHJpbmcgc2VydmVyTWVzc2FnZTsKKyAgICBib29sIG5lZWRzRm9sbG93VXAgPSBm
YWxzZTsKKyAgICBRU3RyaW5nIGFuc3dlciA9IGV4dHJhY3RBc3Npc3RhbnRNZXNzYWdlKHBheWxv
YWQsIHNlcnZlck1lc3NhZ2UsIG5lZWRzRm9sbG93VXApOworCisgICAgaWYgKHJlcGx5LT5lcnJv
cigpID09IFFOZXR3b3JrUmVwbHk6OkNvbm5lY3Rpb25SZWZ1c2VkRXJyb3IpIHsKKyAgICAgICAg
YXV0byAqbWFpblBhbmVsID0gU0tHTWFpblBhbmVsOjpnZXRNYWluUGFuZWwoKTsKKyAgICAgICAg
aWYgKG1haW5QYW5lbCAhPSBudWxscHRyKSB7CisgICAgICAgICAgICBtYWluUGFuZWwtPmRpc3Bs
YXlNZXNzYWdlKGkxOG5jKCJFcnJvciBtZXNzYWdlIiwgIkNvbm5lY3Rpb24gcmVmdXNlZC4gQXJl
IHlvdSBzdXJlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZyA/IiksIFNLR0RvY3VtZW50OjpFcnJvcik7
CisgICAgICAgIH0KKyAgICAgICAgbmVlZHNGb2xsb3dVcCA9IGZhbHNlOworICAgIH0gZWxzZSBp
ZiAocmVwbHktPmVycm9yKCkgIT0gUU5ldHdvcmtSZXBseTo6Tm9FcnJvcikgeworICAgICAgICBR
U3RyaW5nIGVycm9yTXNnID0gaTE4bmMoIkVycm9yIG1lc3NhZ2UiLCAiTmV0d29yayBlcnJvciAo
JTEpOiAlMiIsIHJlcGx5LT5lcnJvcigpLCByZXBseS0+ZXJyb3JTdHJpbmcoKSk7CisgICAgICAg
IGlmICghc2VydmVyTWVzc2FnZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGVycm9yTXNnICs9
IFFTdHJpbmdMaXRlcmFsKCJcbiIpICsgc2VydmVyTWVzc2FnZTsKKyAgICAgICAgfSBlbHNlIGlm
ICghcGF5bG9hZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGVycm9yTXNnICs9IFFTdHJpbmdM
aXRlcmFsKCJcbiIpICsgUVN0cmluZzo6ZnJvbVV0ZjgocGF5bG9hZCk7CisgICAgICAgIH0KKyAg
ICAgICAgYXV0byAqbWFpblBhbmVsID0gU0tHTWFpblBhbmVsOjpnZXRNYWluUGFuZWwoKTsKKyAg
ICAgICAgaWYgKG1haW5QYW5lbCAhPSBudWxscHRyKSB7CisgICAgICAgICAgICBtYWluUGFuZWwt
PmRpc3BsYXlNZXNzYWdlKGVycm9yTXNnLCBTS0dEb2N1bWVudDo6RXJyb3IpOworICAgICAgICB9
CisgICAgICAgIG5lZWRzRm9sbG93VXAgPSBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGFuc3dlci5p
c0VtcHR5KCkgJiYgIXNlcnZlck1lc3NhZ2UuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gKm1h
aW5QYW5lbCA9IFNLR01haW5QYW5lbDo6Z2V0TWFpblBhbmVsKCk7CisgICAgICAgIGlmIChtYWlu
UGFuZWwgIT0gbnVsbHB0cikgeworICAgICAgICAgICAgbWFpblBhbmVsLT5kaXNwbGF5TWVzc2Fn
ZShzZXJ2ZXJNZXNzYWdlLCBTS0dEb2N1bWVudDo6RXJyb3IpOworICAgICAgICB9CisgICAgfQor
CisgICAgcmVmcmVzaENvbnZlcnNhdGlvbigpOworCisgICAgcmVwbHktPmRlbGV0ZUxhdGVyKCk7
CisKKyAgICBpZiAobmVlZHNGb2xsb3dVcCkgeworICAgICAgICBzZW5kQ29tcGxldGlvblJlcXVl
c3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghYW5zd2VyLmlzRW1wdHko
KSkgeworICAgICAgICAvLyBBZGQgYXNzaXN0YW50IGFuc3dlciB0byB0aGUgY29udmVyc2F0aW9u
IGhpc3RvcnkKKyAgICAgICAgUUpzb25PYmplY3QgbXNnOworICAgICAgICBtc2cuaW5zZXJ0KFFT
dHJpbmdMaXRlcmFsKCJyb2xlIiksIFFTdHJpbmdMaXRlcmFsKCJhc3Npc3RhbnQiKSk7CisgICAg
ICAgIG1zZy5pbnNlcnQoUVN0cmluZ0xpdGVyYWwoImNvbnRlbnQiKSwgYW5zd2VyKTsKKyAgICAg
ICAgaWYgKCFtX3BlbmRpbmdSZWFzb25pbmdDb250ZW50LmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgbXNnLmluc2VydChRU3RyaW5nTGl0ZXJhbCgicmVhc29uaW5nX2NvbnRlbnQiKSwgbV9wZW5k
aW5nUmVhc29uaW5nQ29udGVudCk7CisgICAgICAgIH0KKyAgICAgICAgbV9tZXNzYWdlcy5wdXNo
X2JhY2sobXNnKTsKKyAgICAgICAgcmVmcmVzaENvbnZlcnNhdGlvbigpOworICAgIH0KKworICAg
IHVpLmtVc2VyUHJvbXB0LT5jbGVhcigpOworfQorCit2b2lkIFNLR0Fzc2lzdGFudFBsdWdpbkRv
Y2tXaWRnZXQ6OnJlZnJlc2hDb252ZXJzYXRpb24oKSBjb25zdAoreworICAgIHVpLmtTYXZlQ3Vy
cmVudEFpU2Vzc2lvbi0+c2V0RW5hYmxlZCghbV9tZXNzYWdlcy5pc0VtcHR5KCkgJiYgdWkua0Fp
U2Vzc2lvbnMtPmN1cnJlbnRJbmRleCgpID09IDApOworCisgICAgLy8gQnVpbGQgdGhlIGFuc3dl
ciB0ZXh0IGZyb20gdGhlIGNvbnZlcnNhdGlvbiBoaXN0b3J5CisgICAgYXV0byBkaXNwbGF5VGhp
bmtpbmcgPSBTS0dTZXJ2aWNlczo6c3RyaW5nVG9JbnQodWkua0Rpc3BsYXlSZWFzb25pbmctPmdl
dFN0YXRlKCkucmVwbGFjZShRU3RyaW5nTGl0ZXJhbCgiXCIiKSwgUVN0cmluZ0xpdGVyYWwoIiIp
KSk7CisgICAgUVN0cmluZ0xpc3QgcGFydHM7CisgICAgUVN0cmluZyBsYXN0UmVhc29uaW5nQ29u
dGVudDsKKyAgICBmb3IgKGNvbnN0IFFKc29uVmFsdWUgJm1lc3NhZ2VWYWx1ZSA6IG1fbWVzc2Fn
ZXMpIHsKKyAgICAgICAgaWYgKCFtZXNzYWdlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgUUpzb25PYmplY3QgbWVzc2FnZU9iaiA9
IG1lc3NhZ2VWYWx1ZS50b09iamVjdCgpOworICAgICAgICBRU3RyaW5nIHJvbGUgPSBtZXNzYWdl
T2JqLnZhbHVlKFFTdHJpbmdMaXRlcmFsKCJyb2xlIikpLnRvU3RyaW5nKCk7CisgICAgICAgIFFT
dHJpbmcgY29udGVudCA9IGNvbnRlbnRUb1RleHQobWVzc2FnZU9iai52YWx1ZShRU3RyaW5nTGl0
ZXJhbCgiY29udGVudCIpKSkudHJpbW1lZCgpOworICAgICAgICBRU3RyaW5nIHJlYXNvbmluZyA9
IGNvbnRlbnRUb1RleHQobWVzc2FnZU9iai52YWx1ZShRU3RyaW5nTGl0ZXJhbCgicmVhc29uaW5n
X2NvbnRlbnQiKSkpLnRyaW1tZWQoKTsKKworICAgICAgICBpZiAocm9sZSA9PSBRU3RyaW5nTGl0
ZXJhbCgidXNlciIpKSB7CisgICAgICAgICAgICBwYXJ0cy5wdXNoX2JhY2soaTE4bmMoIlVzZXIg
cXVlc3Rpb24gcHJlZml4IiwgIjxiPllvdTo8L2I+JTEiLCBtYXJrZG93blRvSHRtbChjb250ZW50
KSkpOworICAgICAgICB9IGVsc2UgaWYgKHJvbGUgPT0gUVN0cmluZ0xpdGVyYWwoImFzc2lzdGFu
dCIpICYmICghY29udGVudC5pc0VtcHR5KCkgfHwgIXJlYXNvbmluZy5pc0VtcHR5KCkpKSB7Cisg
ICAgICAgICAgICBRU3RyaW5nTGlzdCBhc3Npc3RhbnRQYXJ0czsKKyAgICAgICAgICAgIGlmICgh
cmVhc29uaW5nLmlzRW1wdHkoKSAmJiBkaXNwbGF5VGhpbmtpbmcgPiAwKSB7CisgICAgICAgICAg
ICAgICAgLy8gQnVpbGQgcmFpc29uaW5nCisgICAgICAgICAgICAgICAgbGFzdFJlYXNvbmluZ0Nv
bnRlbnQgPSBkaXNwbGF5VGhpbmtpbmcgPT0gMSA/IGkxOG5jKCJBc3Npc3RhbnQgcmVhc29uaW5n
IHByZWZpeCIsICI8Yj5SZWFzb25pbmcuLi48L2I+IikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaTE4bmMoIkFzc2lzdGFudCBy
ZWFzb25pbmcgcHJlZml4IiwgIjxiPlJlYXNvbmluZzo8L2I+JTEiLCBtYXJrZG93blRvSHRtbChy
ZWFzb25pbmcpKTsKKyAgICAgICAgICAgICAgICBpZiAoZGlzcGxheVRoaW5raW5nID49IDMpIHsK
KyAgICAgICAgICAgICAgICAgICAgLy8gRGlzcGxheSBhbGwgcmVhc29uaW5nCisgICAgICAgICAg
ICAgICAgICAgIGFzc2lzdGFudFBhcnRzLnB1c2hfYmFjaygiPGZvbnQgY29sb3I9J2dyYXknIHNp
emU9JzInPiIgKyBsYXN0UmVhc29uaW5nQ29udGVudCArICI8L2ZvbnQ+Iik7CisgICAgICAgICAg
ICAgICAgICAgIGxhc3RSZWFzb25pbmdDb250ZW50LmNsZWFyKCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFjb250ZW50LmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgICAgIGFzc2lzdGFudFBhcnRzLnB1c2hfYmFjayhpMThuYygiQXNzaXN0YW50
IGFuc3dlciBwcmVmaXgiLCAiPGI+QUk6PC9iPiUxIiwgbWFya2Rvd25Ub0h0bWwoY29udGVudCkp
KTsKKyAgICAgICAgICAgICAgICBsYXN0UmVhc29uaW5nQ29udGVudC5jbGVhcigpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKCFhc3Npc3RhbnRQYXJ0cy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgICAgICBwYXJ0cy5wdXNoX2JhY2soYXNzaXN0YW50UGFydHMuam9pbihRU3RyaW5n
TGl0ZXJhbCgiXG5cbiIpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAocm9s
ZSA9PSBRU3RyaW5nTGl0ZXJhbCgidG9vbCIpICYmIGRpc3BsYXlUaGlua2luZyA9PSA0KSB7Cisg
ICAgICAgICAgICBwYXJ0cy5wdXNoX2JhY2soIjxmb250IGNvbG9yPSdibHVlJyBzaXplPScyJz4i
ICsgaTE4bmMoIlRvb2wgYW5zd2VyIHByZWZpeCIsICI8Yj5Ub29sOjwvYj4lMSIsIG1hcmtkb3du
VG9IdG1sKGNvbnRlbnQpKSArICI8L2ZvbnQ+Iik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAv
LyBBZGQgbGFzdCByZWFzb25pbmcgY29udGVudCBpZiBhbnkKKyAgICBpZiAobGFzdFJlYXNvbmlu
Z0NvbnRlbnQuaXNFbXB0eSgpID09IGZhbHNlKSB7CisgICAgICAgIHBhcnRzLnB1c2hfYmFjaygi
PGZvbnQgY29sb3I9J2dyYXknIHNpemU9JzInPiIgKyBsYXN0UmVhc29uaW5nQ29udGVudCArICI8
L2ZvbnQ+Iik7CisgICAgfQorICAgIHVpLmtBbnN3ZXItPnNldEh0bWwocGFydHMuam9pbigiIikp
OworICAgIHVpLmtBbnN3ZXItPm1vdmVDdXJzb3IoUVRleHRDdXJzb3I6OkVuZCk7Cit9CisKK3Zv
aWQgU0tHQXNzaXN0YW50UGx1Z2luRG9ja1dpZGdldDo6b25TYXZlQ3VycmVudEFpU2Vzc2lvbigp
Cit7CisgICAgU0tHRXJyb3IgZXJyOworICAgIF9TS0dUUkFDRUlORlVOQ1JDKDEwLCBlcnIpCisg
ICAgYXV0byBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7CisgICAgU0tHQkVHSU5UUkFOU0FDVElP
TigqZG9jdW1lbnQsIGkxOG5jKCJOb3VuLCBuYW1lIG9mIHRoZSB1c2VyIGFjdGlvbiIsICJTYXZl
IEFJIFNlc3Npb24iKSwgZXJyKTsKKyAgICBJRk9LRE8oZXJyLAorICAgICAgICAgICBkb2N1bWVu
dC0+c2V0UGFyYW1ldGVyKFBSRUZJWF9BSUFTU0lTVEFOVF9TRVNTSU9OICsgU0tHU2VydmljZXM6
OnRpbWVUb1N0cmluZyhRRGF0ZVRpbWU6OmN1cnJlbnREYXRlVGltZSgpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBRSnNvbkRvY3VtZW50KG1fbWVzc2FnZXMpLnRvSnNvbihR
SnNvbkRvY3VtZW50OjpDb21wYWN0KSkpOworICAgIHJlZnJlc2hTZXNzaW9uc0xpc3QodHJ1ZSk7
Cit9CisKK3ZvaWQgU0tHQXNzaXN0YW50UGx1Z2luRG9ja1dpZGdldDo6b25EZWxldGVBaVNlc3Np
b24oKQoreworICAgIFNLR0Vycm9yIGVycjsKKyAgICBfU0tHVFJBQ0VJTkZVTkNSQygxMCwgZXJy
KQorICAgIGF1dG8gZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpOworICAgIFNLR0JFR0lOVFJBTlNB
Q1RJT04oKmRvY3VtZW50LCBpMThuYygiTm91biwgbmFtZSBvZiB0aGUgdXNlciBhY3Rpb24iLCAi
RGVsZXRlIEFJIFNlc3Npb24iKSwgZXJyKTsKKyAgICBTS0dQcm9wZXJ0eU9iamVjdCBwYXJhbShk
b2N1bWVudCk7CisgICAgSUZPS0RPKGVyciwgcGFyYW0uc2V0TmFtZShQUkVGSVhfQUlBU1NJU1RB
TlRfU0VTU0lPTiArIHVpLmtBaVNlc3Npb25zLT5jdXJyZW50VGV4dCgpKSk7CisgICAgSUZPS0RP
KGVyciwgcGFyYW0ubG9hZCgpKTsKKyAgICBJRk9LRE8oZXJyLCBwYXJhbS5yZW1vdmUoKSk7Cisg
ICAgcmVmcmVzaFNlc3Npb25zTGlzdCgpOworfQorCit2b2lkIFNLR0Fzc2lzdGFudFBsdWdpbkRv
Y2tXaWRnZXQ6Om9uQWlTZXNzaW9uQ2hhbmdlZChpbnQgaUluZGV4KQoreworICAgIGF1dG8gZG9j
dW1lbnQgPSBnZXREb2N1bWVudCgpOworICAgIGludCBpbmRleCA9IHVpLmtBaVNlc3Npb25zLT5j
dXJyZW50SW5kZXgoKTsKKyAgICBpZiAoaW5kZXggPD0gMCkgeworICAgICAgICBvbkNsZWFyKCk7
CisgICAgICAgIHVpLmtEZWxldGVBaVNlc3Npb24tPnNldEVuYWJsZWQoZmFsc2UpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIFFTdHJpbmcganNvbiA9IGRvY3VtZW50LT5nZXRQYXJhbWV0ZXIoUFJF
RklYX0FJQVNTSVNUQU5UX1NFU1NJT04gKyB1aS5rQWlTZXNzaW9ucy0+Y3VycmVudFRleHQoKSk7
CisgICAgICAgIG1fbWVzc2FnZXMgPSBRSnNvbkRvY3VtZW50Ojpmcm9tSnNvbihqc29uLnRvVXRm
OCgpKS5hcnJheSgpOworICAgICAgICByZWZyZXNoQ29udmVyc2F0aW9uKCk7CisgICAgICAgIHVp
LmtEZWxldGVBaVNlc3Npb24tPnNldEVuYWJsZWQodHJ1ZSk7CisgICAgfQorfQorCit2b2lkIFNL
R0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRnZXQ6OnNsb3RSZWZyZXNoU2Vzc2lvbnNMaXN0KCkgY29u
c3QKK3sKKyAgICByZWZyZXNoU2Vzc2lvbnNMaXN0KGZhbHNlKTsKK30KKwordm9pZCBTS0dBc3Np
c3RhbnRQbHVnaW5Eb2NrV2lkZ2V0OjpyZWZyZXNoU2Vzc2lvbnNMaXN0KGJvb2wgaVNlbGVjdEZp
cnN0KSBjb25zdAoreworICAgIFNLR1RSQUNFSU5GVU5DKDEwKQorICAgIGF1dG8gZG9jdW1lbnQg
PSBnZXREb2N1bWVudCgpOworICAgIHVpLmtBaVNlc3Npb25zLT5jbGVhcigpOworICAgIHVpLmtB
aVNlc3Npb25zLT5hZGRJdGVtKGkxOG5jKCJBSSBzZXNzaW9uIGxpc3QiLCAiTmV3IHNlc3Npb24i
KSk7CisgICAgLy8gR2V0IGFsbCBkb2N1bWVudCBwYXJhbWV0ZXJzIGFuZCBmaWx0ZXIgdGhvc2Ug
c3RhcnRpbmcgd2l0aCAiU0tHX0FJX1NFU1NJT05fIgorICAgIGF1dG8gbGlzdCA9IGRvY3VtZW50
LT5nZXRQYXJhbWV0ZXJzKCJkb2N1bWVudCIsICJ0X25hbWUgbGlrZSAnIiArIFBSRUZJWF9BSUFT
U0lTVEFOVF9TRVNTSU9OICsgIiUnIik7CisgICAgc3RkOjpzb3J0KGxpc3QuYmVnaW4oKSwgbGlz
dC5lbmQoKSk7CisgICAgc3RkOjpyZXZlcnNlKGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7Cisg
ICAgZm9yIChjb25zdCBRU3RyaW5nICZhaVNlc3Npb24gOiBsaXN0KSB7CisgICAgICAgIHVpLmtB
aVNlc3Npb25zLT5hZGRJdGVtKGFpU2Vzc2lvbi5yaWdodChhaVNlc3Npb24ubGVuZ3RoKCkgLSBQ
UkVGSVhfQUlBU1NJU1RBTlRfU0VTU0lPTi5sZW5ndGgoKSkpOworICAgIH0KKyAgICBpZiAoaVNl
bGVjdEZpcnN0ICYmIHVpLmtBaVNlc3Npb25zLT5jb3VudCgpID4gMSkgeworICAgICAgICB1aS5r
QWlTZXNzaW9ucy0+c2V0Q3VycmVudEluZGV4KDEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lz
dGFudC9za2dhc3Npc3RhbnRwbHVnaW5kb2Nrd2lkZ2V0LmggYi9wbHVnaW5zL3Nrcm9vZ2Uvc2ty
b29nZV9haWFzc2lzdGFudC9za2dhc3Npc3RhbnRwbHVnaW5kb2Nrd2lkZ2V0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5hYzNjN2ZlODEKLS0tIC9kZXYvbnVsbAorKysg
Yi9wbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9za2dhc3Npc3RhbnRwbHVnaW5k
b2Nrd2lkZ2V0LmgKQEAgLTAsMCArMSw4MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogU1BE
WC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyNiBTLiBNQU5LT1dTS0kgc3RlcGhhbmVAbWFua293c2tp
LmZyCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTMuMC1vci1sYXRlcgorICoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKi8KKyNpZm5kZWYgU0tHQVNTSVNUQU5UUExVR0lORE9DS1dJREdFVF9ICisj
ZGVmaW5lIFNLR0FTU0lTVEFOVFBMVUdJTkRPQ0tXSURHRVRfSAorLyoqIEBmaWxlCisgKiBBIGRv
Y2sgd2lkZ2V0IGZvciB0aGUgQUkgYXNzaXN0YW50IHBsdWdpbi4KKyAqLworI2luY2x1ZGUgPHFq
c29uYXJyYXkuaD4KKyNpbmNsdWRlIDxxbmV0d29ya2FjY2Vzc21hbmFnZXIuaD4KKyNpbmNsdWRl
IDxxcG9pbnRlci5oPgorI2luY2x1ZGUgPHF1cmwuaD4KKworI2luY2x1ZGUgInNrZ3dpZGdldC5o
IgorI2luY2x1ZGUgInVpX3NrZ2Fzc2lzdGFudHBsdWdpbndpZGdldF9kb2NrLmgiCisKK2NsYXNz
IFFKc29uVmFsdWU7CitjbGFzcyBRTmV0d29ya1JlcGx5OworCisvKioKKyAqIEEgZG9jayB3aWRn
ZXQgZm9yIHRoZSBBSSBhc3Npc3RhbnQgcGx1Z2luLgorICovCitjbGFzcyBTS0dBc3Npc3RhbnRQ
bHVnaW5Eb2NrV2lkZ2V0IDogcHVibGljIFNLR1dpZGdldAoreworICAgIFFfT0JKRUNUCisKK3B1
YmxpYzoKKyAgICAvKioKKyAgICAgKiBEZWZhdWx0IENvbnN0cnVjdG9yCisgICAgICogQHBhcmFt
IGlQYXJlbnQgdGhlIHBhcmVudCB3aWRnZXQKKyAgICAgKiBAcGFyYW0gaURvY3VtZW50IHRoZSBk
b2N1bWVudAorICAgICAqLworICAgIGV4cGxpY2l0IFNLR0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRn
ZXQoUVdpZGdldCAqaVBhcmVudCwgU0tHRG9jdW1lbnQgKmlEb2N1bWVudCk7CisKKyAgICAvKioK
KyAgICAgKiBEZWZhdWx0IERlc3RydWN0b3IKKyAgICAgKi8KKyAgICB+U0tHQXNzaXN0YW50UGx1
Z2luRG9ja1dpZGdldCgpIG92ZXJyaWRlOworCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBv
bkFzaygpOworICAgIHZvaWQgb25DbGVhcigpOworICAgIHZvaWQgb25SZXBseUZpbmlzaGVkKCk7
CisgICAgdm9pZCBvblVzZXJQcm9tcHRDaGFuZ2VkKCk7CisgICAgdm9pZCBvblNhdmVDdXJyZW50
QWlTZXNzaW9uKCk7CisgICAgdm9pZCBvbkRlbGV0ZUFpU2Vzc2lvbigpOworICAgIHZvaWQgb25B
aVNlc3Npb25DaGFuZ2VkKGludCBpSW5kZXgpOworCitwcml2YXRlOgorICAgIFFfRElTQUJMRV9D
T1BZKFNLR0Fzc2lzdGFudFBsdWdpbkRvY2tXaWRnZXQpCisKKyAgICBRVXJsIGdldENvbXBsZXRp
b25FbmRwb2ludCgpIGNvbnN0OworICAgIHZvaWQgc2V0QnVzeShib29sIGlCdXN5KTsKKyAgICB2
b2lkIHJlZnJlc2hDb252ZXJzYXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHJlZnJlc2hTZXNzaW9u
c0xpc3QoYm9vbCBpU2VsZWN0Rmlyc3QgPSBmYWxzZSkgY29uc3Q7CisgICAgdm9pZCBzbG90UmVm
cmVzaFNlc3Npb25zTGlzdCgpIGNvbnN0OworICAgIHZvaWQgc2VuZENvbXBsZXRpb25SZXF1ZXN0
KCk7CisgICAgUVN0cmluZyBleHRyYWN0QXNzaXN0YW50TWVzc2FnZShjb25zdCBRQnl0ZUFycmF5
ICZpUGF5bG9hZCwgUVN0cmluZyAmb0Vycm9yTWVzc2FnZSwgYm9vbCAmb05lZWRzRm9sbG93VXAp
OworICAgIFFTdHJpbmcgZXhlY3V0ZVRvb2xDYWxsKGNvbnN0IFFKc29uT2JqZWN0ICZpVG9vbENh
bGwpIGNvbnN0OworICAgIFFTdHJpbmcgZXhlY3V0ZVNxbGl0ZVNlbGVjdChjb25zdCBRU3RyaW5n
ICZpU3FsKSBjb25zdDsKKyAgICBRU3RyaW5nIGV4ZWN1dGVXZWJTZWFyY2goY29uc3QgUVN0cmlu
ZyAmaVF1ZXJ5LCBpbnQgaU1heFJlc3VsdHMpIGNvbnN0OworICAgIHN0YXRpYyBRSnNvbkFycmF5
IGdldFRvb2xzKCk7CisgICAgc3RhdGljIFFKc29uQXJyYXkgZ2V0UmVxdWVzdE1lc3NhZ2VzKGNv
bnN0IFFKc29uQXJyYXkgJmlNZXNzYWdlcyk7CisgICAgc3RhdGljIFFTdHJpbmcgc3FsUmVzdWx0
VG9Kc29uKGNvbnN0IFNLR1N0cmluZ0xpc3RMaXN0ICZpUmVzdWx0KTsKKyAgICBzdGF0aWMgUVN0
cmluZyBjb250ZW50VG9UZXh0KGNvbnN0IFFKc29uVmFsdWUgJmlDb250ZW50KTsKKyAgICBzdGF0
aWMgUVN0cmluZyBleHRyYWN0UmVhc29uaW5nRnJvbUNvbnRlbnQoUVN0cmluZyAmaW9Db250ZW50
KTsKKyAgICBzdGF0aWMgUVN0cmluZyByZWFzb25pbmdDb250ZW50VG9UZXh0KGNvbnN0IFFKc29u
T2JqZWN0ICZpTWVzc2FnZSwgY29uc3QgUUpzb25PYmplY3QgJmlDaG9pY2UpOworICAgIHN0YXRp
YyBRU3RyaW5nIGdldFN5c3RlbVByb21wdCgpOworICAgIHN0YXRpYyBRU3RyaW5nIG1hcmtkb3du
VG9IdG1sKGNvbnN0IFFTdHJpbmcgJmlDb250ZW50KTsKKworICAgIFVpOjpza2dhc3Npc3RhbnRw
bHVnaW5fZG9jayB1aXt9OworICAgIFFOZXR3b3JrQWNjZXNzTWFuYWdlciBtX25ldHdvcmtNYW5h
Z2VyOworICAgIFFQb2ludGVyPFFOZXR3b3JrUmVwbHk+IG1fcGVuZGluZ1JlcGx5OworICAgIFFK
c29uQXJyYXkgbV9tZXNzYWdlczsKKyAgICBRU3RyaW5nIG1fcGVuZGluZ1JlYXNvbmluZ0NvbnRl
bnQ7CisgICAgaW50IG1fdG9vbENhbGxEZXB0aCA9IDA7Cit9OworCisjZW5kaWYgLy8gU0tHQVNT
SVNUQU5UUExVR0lORE9DS1dJREdFVF9ICmRpZmYgLS1naXQgYS9wbHVnaW5zL3Nrcm9vZ2Uvc2ty
b29nZV9haWFzc2lzdGFudC9za2dhc3Npc3RhbnRwbHVnaW53aWRnZXQuY3BwIGIvcGx1Z2lucy9z
a3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQvc2tnYXNzaXN0YW50cGx1Z2lud2lkZ2V0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjQ3NTQ0MTg5YQotLS0gL2Rldi9u
dWxsCisrKyBiL3BsdWdpbnMvc2tyb29nZS9za3Jvb2dlX2FpYXNzaXN0YW50L3NrZ2Fzc2lzdGFu
dHBsdWdpbndpZGdldC5jcHAKQEAgLTAsMCArMSwzMCBAQAorLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor
ICogU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyNiBTLiBNQU5LT1dTS0kgc3RlcGhhbmVAbWFu
a293c2tpLmZyCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTMuMC1vci1sYXRlcgor
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKi8KKworLyoqIEBmaWxlCisgKiBBIGRvY2sgd2lkZ2V0IGZvciB0
aGUgQUkgYXNzaXN0YW50IHBsdWdpbi4KKyAqLworI2luY2x1ZGUgInNrZ2Fzc2lzdGFudHBsdWdp
bndpZGdldC5oIgorI2luY2x1ZGUgInNrZ2Fzc2lzdGFudHBsdWdpbmRvY2t3aWRnZXQuaCIKKwor
U0tHQXNzaXN0YW50UGx1Z2luV2lkZ2V0OjpTS0dBc3Npc3RhbnRQbHVnaW5XaWRnZXQoUVdpZGdl
dCAqaVBhcmVudCwgU0tHRG9jdW1lbnQgKmlEb2N1bWVudCkKKyAgICA6IFNLR1RhYlBhZ2UoaVBh
cmVudCwgaURvY3VtZW50KQoreworICAgIFFTaXplUG9saWN5IHNpemVQb2xpY3koUVNpemVQb2xp
Y3k6OlBvbGljeTo6RXhwYW5kaW5nLCBRU2l6ZVBvbGljeTo6UG9saWN5OjpFeHBhbmRpbmcpOwor
ICAgIHNpemVQb2xpY3kuc2V0SG9yaXpvbnRhbFN0cmV0Y2goMCk7CisgICAgc2l6ZVBvbGljeS5z
ZXRWZXJ0aWNhbFN0cmV0Y2goMCk7CisgICAgc2l6ZVBvbGljeS5zZXRIZWlnaHRGb3JXaWR0aCh0
aGlzLT5zaXplUG9saWN5KCkuaGFzSGVpZ2h0Rm9yV2lkdGgoKSk7CisgICAgdGhpcy0+c2V0U2l6
ZVBvbGljeShzaXplUG9saWN5KTsKKworICAgIGF1dG8gbGF5b3V0ID0gbmV3IFFIQm94TGF5b3V0
KHRoaXMpOworICAgIGxheW91dC0+c2V0U3BhY2luZygyKTsKKyAgICBsYXlvdXQtPnNldENvbnRl
bnRzTWFyZ2lucygwLCAwLCAwLCAwKTsKKyAgICBhdXRvIHQgPSBuZXcgU0tHQXNzaXN0YW50UGx1
Z2luRG9ja1dpZGdldCh0aGlzLCBpRG9jdW1lbnQpOworICAgIGxheW91dC0+YWRkV2lkZ2V0KHQp
OworfQorCitTS0dBc3Npc3RhbnRQbHVnaW5XaWRnZXQ6On5TS0dBc3Npc3RhbnRQbHVnaW5XaWRn
ZXQoKQoreworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsdWdp
bnMvc2tyb29nZS9za3Jvb2dlX2FpYXNzaXN0YW50L3NrZ2Fzc2lzdGFudHBsdWdpbndpZGdldC5o
IGIvcGx1Z2lucy9za3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQvc2tnYXNzaXN0YW50cGx1Z2lu
d2lkZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5iYjQzMTFhMjgK
LS0tIC9kZXYvbnVsbAorKysgYi9wbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9z
a2dhc3Npc3RhbnRwbHVnaW53aWRnZXQuaApAQCAtMCwwICsxLDMzIEBACisvKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCisgKiBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDI2IFMuIE1BTktPV1NLSSBzdGVw
aGFuZUBtYW5rb3dza2kuZnIKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMy4wLW9y
LWxhdGVyCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2lmbmRlZiBTS0dBU1NJU1RBTlRQTFVHSU5X
SURHRVRfSAorI2RlZmluZSBTS0dBU1NJU1RBTlRQTFVHSU5XSURHRVRfSAorLyoqIEBmaWxlCisg
KiBBIGRvY2sgd2lkZ2V0IGZvciB0aGUgQUkgYXNzaXN0YW50IHBsdWdpbi4KKyAqLworI2luY2x1
ZGUgInNrZ3RhYnBhZ2UuaCIKKworLyoqCisgKiBBIHNrcm9vZ2UgcGx1Z2luIGZvciB0aGUgQUkg
YXNzaXN0YW50CisgKi8KK2NsYXNzIFNLR0Fzc2lzdGFudFBsdWdpbldpZGdldCA6IHB1YmxpYyBT
S0dUYWJQYWdlCit7CisgICAgUV9PQkpFQ1QKKworcHVibGljOgorICAgIC8qKgorICAgICAqIERl
ZmF1bHQgQ29uc3RydWN0b3IKKyAgICAgKiBAcGFyYW0gaVBhcmVudCB0aGUgcGFyZW50IHdpZGdl
dAorICAgICAqIEBwYXJhbSBpRG9jdW1lbnQgdGhlIGRvY3VtZW50CisgICAgICovCisgICAgZXhw
bGljaXQgU0tHQXNzaXN0YW50UGx1Z2luV2lkZ2V0KFFXaWRnZXQgKmlQYXJlbnQsIFNLR0RvY3Vt
ZW50ICppRG9jdW1lbnQpOworCisgICAgLyoqCisgICAgICogRGVmYXVsdCBEZXN0cnVjdG9yCisg
ICAgICovCisgICAgflNLR0Fzc2lzdGFudFBsdWdpbldpZGdldCgpIG92ZXJyaWRlOworfTsKKwor
I2VuZGlmIC8vIFNLR0FTU0lTVEFOVFBMVUdJTldJREdFVF9ICmRpZmYgLS1naXQgYS9wbHVnaW5z
L3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9za2dhc3Npc3RhbnRwbHVnaW53aWRnZXRfZG9j
ay51aSBiL3BsdWdpbnMvc2tyb29nZS9za3Jvb2dlX2FpYXNzaXN0YW50L3NrZ2Fzc2lzdGFudHBs
dWdpbndpZGdldF9kb2NrLnVpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4u
YTlkNTkzMTk5Ci0tLSAvZGV2L251bGwKKysrIGIvcGx1Z2lucy9za3Jvb2dlL3Nrcm9vZ2VfYWlh
c3Npc3RhbnQvc2tnYXNzaXN0YW50cGx1Z2lud2lkZ2V0X2RvY2sudWkKQEAgLTAsMCArMSwxOTMg
QEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8dWkgdmVyc2lvbj0i
NC4wIj4KKyA8YXV0aG9yPgorU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyNiBTLiBNQU5LT1dT
S0kgc3RlcGhhbmVAbWFua293c2tpLmZyCitTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTMu
MC1vci1sYXRlcgorIDwvYXV0aG9yPgorIDxjbGFzcz5za2dhc3Npc3RhbnRwbHVnaW5fZG9jazwv
Y2xhc3M+CisgPHdpZGdldCBjbGFzcz0iUVdpZGdldCIgbmFtZT0ic2tnYXNzaXN0YW50cGx1Z2lu
X2RvY2siPgorICA8cHJvcGVydHkgbmFtZT0iZ2VvbWV0cnkiPgorICAgPHJlY3Q+CisgICAgPHg+
MDwveD4KKyAgICA8eT4wPC95PgorICAgIDx3aWR0aD4zOTU8L3dpZHRoPgorICAgIDxoZWlnaHQ+
NzU4PC9oZWlnaHQ+CisgICA8L3JlY3Q+CisgIDwvcHJvcGVydHk+CisgIDxsYXlvdXQgY2xhc3M9
IlFWQm94TGF5b3V0IiBuYW1lPSJ2ZXJ0aWNhbExheW91dCI+CisgICA8cHJvcGVydHkgbmFtZT0i
c3BhY2luZyI+CisgICAgPG51bWJlcj4yPC9udW1iZXI+CisgICA8L3Byb3BlcnR5PgorICAgPHBy
b3BlcnR5IG5hbWU9ImxlZnRNYXJnaW4iPgorICAgIDxudW1iZXI+MjwvbnVtYmVyPgorICAgPC9w
cm9wZXJ0eT4KKyAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BNYXJnaW4iPgorICAgIDxudW1iZXI+Mjwv
bnVtYmVyPgorICAgPC9wcm9wZXJ0eT4KKyAgIDxwcm9wZXJ0eSBuYW1lPSJyaWdodE1hcmdpbiI+
CisgICAgPG51bWJlcj4yPC9udW1iZXI+CisgICA8L3Byb3BlcnR5PgorICAgPHByb3BlcnR5IG5h
bWU9ImJvdHRvbU1hcmdpbiI+CisgICAgPG51bWJlcj4yPC9udW1iZXI+CisgICA8L3Byb3BlcnR5
PgorICAgPGl0ZW0+CisgICAgPGxheW91dCBjbGFzcz0iUUhCb3hMYXlvdXQiIG5hbWU9ImtBaVNl
c3Npb25Nbmd0Ij4KKyAgICAgPGl0ZW0+CisgICAgICA8d2lkZ2V0IGNsYXNzPSJRQ29tYm9Cb3gi
IG5hbWU9ImtBaVNlc3Npb25zIj4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0ic2l6ZVBvbGljeSI+
CisgICAgICAgIDxzaXplcG9saWN5IGhzaXpldHlwZT0iRXhwYW5kaW5nIiB2c2l6ZXR5cGU9IkZp
eGVkIj4KKyAgICAgICAgIDxob3JzdHJldGNoPjA8L2hvcnN0cmV0Y2g+CisgICAgICAgICA8dmVy
c3RyZXRjaD4wPC92ZXJzdHJldGNoPgorICAgICAgICA8L3NpemVwb2xpY3k+CisgICAgICAgPC9w
cm9wZXJ0eT4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0idG9vbFRpcCI+CisgICAgICAgIDxzdHJp
bmcgZXh0cmFjb21tZW50PSJZb3VyIHNhdmVkIEFJIHNlc3Npb25zIi8+CisgICAgICAgPC9wcm9w
ZXJ0eT4KKyAgICAgIDwvd2lkZ2V0PgorICAgICA8L2l0ZW0+CisgICAgIDxpdGVtPgorICAgICAg
PHdpZGdldCBjbGFzcz0iUVB1c2hCdXR0b24iIG5hbWU9ImtTYXZlQ3VycmVudEFpU2Vzc2lvbiI+
CisgICAgICAgPHByb3BlcnR5IG5hbWU9InRvb2xUaXAiPgorICAgICAgICA8c3RyaW5nIGV4dHJh
Y29tbWVudD0iU2F2ZSBjdXJyZW50IEFJIHNlc3Npb24iLz4KKyAgICAgICA8L3Byb3BlcnR5Pgor
ICAgICAgPC93aWRnZXQ+CisgICAgIDwvaXRlbT4KKyAgICAgPGl0ZW0+CisgICAgICA8d2lkZ2V0
IGNsYXNzPSJRUHVzaEJ1dHRvbiIgbmFtZT0ia0RlbGV0ZUFpU2Vzc2lvbiIvPgorICAgICA8L2l0
ZW0+CisgICAgIDxpdGVtPgorICAgICAgPHdpZGdldCBjbGFzcz0iUVB1c2hCdXR0b24iIG5hbWU9
ImtIZWxwQnV0dG9uIj4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0idG9vbFRpcCI+CisgICAgICAg
IDxzdHJpbmcgZXh0cmFjb21tZW50PSJIZWxwIi8+CisgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAg
ICA8cHJvcGVydHkgbmFtZT0idGV4dCI+CisgICAgICAgIDxzdHJpbmcvPgorICAgICAgIDwvcHJv
cGVydHk+CisgICAgICA8L3dpZGdldD4KKyAgICAgPC9pdGVtPgorICAgICA8aXRlbT4KKyAgICAg
IDx3aWRnZXQgY2xhc3M9IlFQdXNoQnV0dG9uIiBuYW1lPSJrU2V0dGluZ3NCdXR0b24iPgorICAg
ICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b29sVGlwIj4KKyAgICAgICAgPHN0cmluZz5PcGVuIHNldHRp
bmdzPC9zdHJpbmc+CisgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0i
dGV4dCI+CisgICAgICAgIDxzdHJpbmcvPgorICAgICAgIDwvcHJvcGVydHk+CisgICAgICA8L3dp
ZGdldD4KKyAgICAgPC9pdGVtPgorICAgIDwvbGF5b3V0PgorICAgPC9pdGVtPgorICAgPGl0ZW0+
CisgICAgPHdpZGdldCBjbGFzcz0iUUZyYW1lIiBuYW1lPSJrSGVscEFyZWEiPgorICAgICA8bGF5
b3V0IGNsYXNzPSJRVkJveExheW91dCIgbmFtZT0ia0hlbHBBcmVhXzIiPgorICAgICAgPGl0ZW0+
CisgICAgICAgPHdpZGdldCBjbGFzcz0iUUxhYmVsIiBuYW1lPSJrSGVscFRpdGxlIj4KKyAgICAg
ICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgorICAgICAgICAgPHN0cmluZz5IZXJlIGFyZSBzb21l
IGV4YW1wbGVzIG9mIHF1ZXN0aW9ucyB5b3UgY2FuIGFzayB5b3VyIERpY2tlbnMgQUkgYXNzaXN0
YW50Ljwvc3RyaW5nPgorICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICA8cHJvcGVydHkgbmFt
ZT0id29yZFdyYXAiPgorICAgICAgICAgPGJvb2w+dHJ1ZTwvYm9vbD4KKyAgICAgICAgPC9wcm9w
ZXJ0eT4KKyAgICAgICA8L3dpZGdldD4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtPgorICAg
ICAgIDx3aWRnZXQgY2xhc3M9IkxpbmUiIG5hbWU9ImxpbmUiPgorICAgICAgICA8cHJvcGVydHkg
bmFtZT0ib3JpZW50YXRpb24iPgorICAgICAgICAgPGVudW0+UXQ6Ok9yaWVudGF0aW9uOjpIb3Jp
em9udGFsPC9lbnVtPgorICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgIDwvd2lkZ2V0PgorICAg
ICAgPC9pdGVtPgorICAgICA8L2xheW91dD4KKyAgICA8L3dpZGdldD4KKyAgIDwvaXRlbT4KKyAg
IDxpdGVtPgorICAgIDx3aWRnZXQgY2xhc3M9IlFUZXh0RWRpdCIgbmFtZT0ia0Fuc3dlciI+Cisg
ICAgIDxwcm9wZXJ0eSBuYW1lPSJyZWFkT25seSI+CisgICAgICA8Ym9vbD50cnVlPC9ib29sPgor
ICAgICA8L3Byb3BlcnR5PgorICAgICA8cHJvcGVydHkgbmFtZT0iYWNjZXB0UmljaFRleHQiPgor
ICAgICAgPGJvb2w+ZmFsc2U8L2Jvb2w+CisgICAgIDwvcHJvcGVydHk+CisgICAgIDxwcm9wZXJ0
eSBuYW1lPSJwbGFjZWhvbGRlclRleHQiPgorICAgICAgPHN0cmluZz5Ib3cgY2FuIEkgaGVscCB5
b3UgdG9kYXkgPzwvc3RyaW5nPgorICAgICA8L3Byb3BlcnR5PgorICAgIDwvd2lkZ2V0PgorICAg
PC9pdGVtPgorICAgPGl0ZW0+CisgICAgPHdpZGdldCBjbGFzcz0iUVBsYWluVGV4dEVkaXQiIG5h
bWU9ImtVc2VyUHJvbXB0Ij4KKyAgICAgPHByb3BlcnR5IG5hbWU9InNpemVQb2xpY3kiPgorICAg
ICAgPHNpemVwb2xpY3kgaHNpemV0eXBlPSJFeHBhbmRpbmciIHZzaXpldHlwZT0iTWluaW11bSI+
CisgICAgICAgPGhvcnN0cmV0Y2g+MDwvaG9yc3RyZXRjaD4KKyAgICAgICA8dmVyc3RyZXRjaD4w
PC92ZXJzdHJldGNoPgorICAgICAgPC9zaXplcG9saWN5PgorICAgICA8L3Byb3BlcnR5PgorICAg
ICA8cHJvcGVydHkgbmFtZT0icGxhY2Vob2xkZXJUZXh0Ij4KKyAgICAgIDxzdHJpbmc+QXNrIHlv
dXIgcXVlc3Rpb248L3N0cmluZz4KKyAgICAgPC9wcm9wZXJ0eT4KKyAgICA8L3dpZGdldD4KKyAg
IDwvaXRlbT4KKyAgIDxpdGVtPgorICAgIDxsYXlvdXQgY2xhc3M9IlFIQm94TGF5b3V0IiBuYW1l
PSJidXR0b25zTGF5b3V0Ij4KKyAgICAgPGl0ZW0+CisgICAgICA8d2lkZ2V0IGNsYXNzPSJRUHVz
aEJ1dHRvbiIgbmFtZT0ia0Fza0J1dHRvbiI+CisgICAgICAgPHByb3BlcnR5IG5hbWU9InRvb2xU
aXAiPgorICAgICAgICA8c3RyaW5nIGV4dHJhY29tbWVudD0iQXNrIHRvIERpY2tlbnMiLz4KKyAg
ICAgICA8L3Byb3BlcnR5PgorICAgICAgPC93aWRnZXQ+CisgICAgIDwvaXRlbT4KKyAgICAgPGl0
ZW0+CisgICAgICA8d2lkZ2V0IGNsYXNzPSJRUHVzaEJ1dHRvbiIgbmFtZT0ia0NsZWFyQnV0dG9u
Ij4KKyAgICAgICA8cHJvcGVydHkgbmFtZT0idG9vbFRpcCI+CisgICAgICAgIDxzdHJpbmcgZXh0
cmFjb21tZW50PSJSZXNldCB0aGUgY3VycmVudCBBSSBzZXNzaW9uIi8+CisgICAgICAgPC9wcm9w
ZXJ0eT4KKyAgICAgIDwvd2lkZ2V0PgorICAgICA8L2l0ZW0+CisgICAgIDxpdGVtPgorICAgICAg
PHdpZGdldCBjbGFzcz0iU0tHU2hvdyIgbmFtZT0ia0Rpc3BsYXlSZWFzb25pbmciPgorICAgICAg
IDxwcm9wZXJ0eSBuYW1lPSJzaXplUG9saWN5Ij4KKyAgICAgICAgPHNpemVwb2xpY3kgaHNpemV0
eXBlPSJQcmVmZXJyZWQiIHZzaXpldHlwZT0iRml4ZWQiPgorICAgICAgICAgPGhvcnN0cmV0Y2g+
MDwvaG9yc3RyZXRjaD4KKyAgICAgICAgIDx2ZXJzdHJldGNoPjA8L3ZlcnN0cmV0Y2g+CisgICAg
ICAgIDwvc2l6ZXBvbGljeT4KKyAgICAgICA8L3Byb3BlcnR5PgorICAgICAgPC93aWRnZXQ+Cisg
ICAgIDwvaXRlbT4KKyAgICAgPGl0ZW0+CisgICAgICA8c3BhY2VyIG5hbWU9Imhvcml6b250YWxT
cGFjZXIiPgorICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJvcmllbnRhdGlvbiI+CisgICAgICAgIDxl
bnVtPlF0OjpPcmllbnRhdGlvbjo6SG9yaXpvbnRhbDwvZW51bT4KKyAgICAgICA8L3Byb3BlcnR5
PgorICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaXplSGludCIgc3Rkc2V0PSIwIj4KKyAgICAgICAg
PHNpemU+CisgICAgICAgICA8d2lkdGg+NDA8L3dpZHRoPgorICAgICAgICAgPGhlaWdodD4yMDwv
aGVpZ2h0PgorICAgICAgICA8L3NpemU+CisgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgIDwvc3Bh
Y2VyPgorICAgICA8L2l0ZW0+CisgICAgPC9sYXlvdXQ+CisgICA8L2l0ZW0+CisgIDwvbGF5b3V0
PgorIDwvd2lkZ2V0PgorIDxjdXN0b213aWRnZXRzPgorICA8Y3VzdG9td2lkZ2V0PgorICAgPGNs
YXNzPlNLR1Nob3c8L2NsYXNzPgorICAgPGV4dGVuZHM+UVRvb2xCdXR0b248L2V4dGVuZHM+Cisg
ICA8aGVhZGVyPnNrZ3Nob3cuaDwvaGVhZGVyPgorICA8L2N1c3RvbXdpZGdldD4KKyA8L2N1c3Rv
bXdpZGdldHM+CisgPHRhYnN0b3BzPgorICA8dGFic3RvcD5rQWlTZXNzaW9uczwvdGFic3RvcD4K
KyAgPHRhYnN0b3A+a1NhdmVDdXJyZW50QWlTZXNzaW9uPC90YWJzdG9wPgorICA8dGFic3RvcD5r
RGVsZXRlQWlTZXNzaW9uPC90YWJzdG9wPgorICA8dGFic3RvcD5rSGVscEJ1dHRvbjwvdGFic3Rv
cD4KKyAgPHRhYnN0b3A+a1NldHRpbmdzQnV0dG9uPC90YWJzdG9wPgorICA8dGFic3RvcD5rQW5z
d2VyPC90YWJzdG9wPgorICA8dGFic3RvcD5rVXNlclByb21wdDwvdGFic3RvcD4KKyAgPHRhYnN0
b3A+a0Fza0J1dHRvbjwvdGFic3RvcD4KKyAgPHRhYnN0b3A+a0NsZWFyQnV0dG9uPC90YWJzdG9w
PgorICA8dGFic3RvcD5rRGlzcGxheVJlYXNvbmluZzwvdGFic3RvcD4KKyA8L3RhYnN0b3BzPgor
IDxyZXNvdXJjZXMvPgorIDxjb25uZWN0aW9ucy8+Cis8L3VpPgpkaWZmIC0tZ2l0IGEvcGx1Z2lu
cy9za3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQvc2tnYXNzaXN0YW50cGx1Z2lud2lkZ2V0X3By
ZWYudWkgYi9wbHVnaW5zL3Nrcm9vZ2Uvc2tyb29nZV9haWFzc2lzdGFudC9za2dhc3Npc3RhbnRw
bHVnaW53aWRnZXRfcHJlZi51aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu
LjAxZDZhZTBkZgotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvc2tyb29nZS9za3Jvb2dlX2Fp
YXNzaXN0YW50L3NrZ2Fzc2lzdGFudHBsdWdpbndpZGdldF9wcmVmLnVpCkBAIC0wLDAgKzEsMTM0
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHVpIHZlcnNpb249
IjQuMCI+CisgPGF1dGhvcj4KK1NQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjYgUy4gTUFOS09X
U0tJIHN0ZXBoYW5lQG1hbmtvd3NraS5mcgorU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0z
LjAtb3ItbGF0ZXIKKyA8L2F1dGhvcj4KKyA8Y2xhc3M+c2tnYXNzaXN0YW50cGx1Z2luX3ByZWY8
L2NsYXNzPgorIDx3aWRnZXQgY2xhc3M9IlFXaWRnZXQiIG5hbWU9InNrZ2Fzc2lzdGFudHBsdWdp
bl9wcmVmIj4KKyAgPHByb3BlcnR5IG5hbWU9Imdlb21ldHJ5Ij4KKyAgIDxyZWN0PgorICAgIDx4
PjA8L3g+CisgICAgPHk+MDwveT4KKyAgICA8d2lkdGg+NjMxPC93aWR0aD4KKyAgICA8aGVpZ2h0
PjY5MzwvaGVpZ2h0PgorICAgPC9yZWN0PgorICA8L3Byb3BlcnR5PgorICA8bGF5b3V0IGNsYXNz
PSJRVkJveExheW91dCIgbmFtZT0idmVydGljYWxMYXlvdXQiPgorICAgPGl0ZW0+CisgICAgPHdp
ZGdldCBjbGFzcz0iUUdyb3VwQm94IiBuYW1lPSJrQ29ubmVjdGlvbkdyb3VwIj4KKyAgICAgPGxh
eW91dCBjbGFzcz0iUUZvcm1MYXlvdXQiIG5hbWU9ImZvcm1MYXlvdXQiPgorICAgICAgPGl0ZW0g
cm93PSIxIiBjb2x1bW49IjAiPgorICAgICAgIDx3aWRnZXQgY2xhc3M9IlFMYWJlbCIgbmFtZT0i
a1NlcnZlclVybExhYmVsIj4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgorICAgICAg
ICAgPHN0cmluZz5TZXJ2ZXIgVVJMOjwvc3RyaW5nPgorICAgICAgICA8L3Byb3BlcnR5PgorICAg
ICAgICA8cHJvcGVydHkgbmFtZT0iYnVkZHkiPgorICAgICAgICAgPGNzdHJpbmc+a2NmZ19zZXJ2
ZXJVcmw8L2NzdHJpbmc+CisgICAgICAgIDwvcHJvcGVydHk+CisgICAgICAgPC93aWRnZXQ+Cisg
ICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSByb3c9IjEiIGNvbHVtbj0iMSI+CisgICAgICAgPHdp
ZGdldCBjbGFzcz0iUUxpbmVFZGl0IiBuYW1lPSJrY2ZnX3NlcnZlclVybCI+CisgICAgICAgIDxw
cm9wZXJ0eSBuYW1lPSJ0b29sVGlwIj4KKyAgICAgICAgIDxzdHJpbmc+QmFzZSBVUkwgb2YgT3Bl
bkFJIHNlcnZlci4gVGhlIEFQSSBwYXRoIC92MS9jaGF0L2NvbXBsZXRpb25zIGlzIGFwcGVuZGVk
IGF1dG9tYXRpY2FsbHkuPC9zdHJpbmc+CisgICAgICAgIDwvcHJvcGVydHk+CisgICAgICAgIDxw
cm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KKyAgICAgICAgIDxzdHJpbmcgbm90cj0idHJ1ZSI+aHR0cDov
LzEyNy4wLjAuMTo4MDgwPC9zdHJpbmc+CisgICAgICAgIDwvcHJvcGVydHk+CisgICAgICAgIDxw
cm9wZXJ0eSBuYW1lPSJwbGFjZWhvbGRlclRleHQiPgorICAgICAgICAgPHN0cmluZyBub3RyPSJ0
cnVlIj5odHRwOi8vMTI3LjAuMC4xOjgwODA8L3N0cmluZz4KKyAgICAgICAgPC9wcm9wZXJ0eT4K
KyAgICAgICA8L3dpZGdldD4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIHJvdz0iMiIgY29s
dW1uPSIwIj4KKyAgICAgICA8d2lkZ2V0IGNsYXNzPSJRTGFiZWwiIG5hbWU9ImtBcGlUb2tlbkxh
YmVsIj4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgorICAgICAgICAgPHN0cmluZz5B
UEkgVG9rZW46PC9zdHJpbmc+CisgICAgICAgIDwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0
eSBuYW1lPSJidWRkeSI+CisgICAgICAgICA8Y3N0cmluZz5rY2ZnX2FwaVRva2VuPC9jc3RyaW5n
PgorICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgIDwvd2lkZ2V0PgorICAgICAgPC9pdGVtPgor
ICAgICAgPGl0ZW0gcm93PSIyIiBjb2x1bW49IjEiPgorICAgICAgIDx3aWRnZXQgY2xhc3M9IlFM
aW5lRWRpdCIgbmFtZT0ia2NmZ19hcGlUb2tlbiI+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0
b29sVGlwIj4KKyAgICAgICAgIDxzdHJpbmc+QVBJIHRva2VuIGZvciBhdXRoZW50aWNhdGlvbiAo
b3B0aW9uYWwpLiBMZWF2ZSBlbXB0eSBpZiBub3QgcmVxdWlyZWQuPC9zdHJpbmc+CisgICAgICAg
IDwvcHJvcGVydHk+CisgICAgICAgPC93aWRnZXQ+CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRl
bSByb3c9IjQiIGNvbHVtbj0iMCIgY29sc3Bhbj0iMiI+CisgICAgICAgPHdpZGdldCBjbGFzcz0i
UUNoZWNrQm94IiBuYW1lPSJrY2ZnX2VuYWJsZVdlYlNlYXJjaCI+CisgICAgICAgIDxwcm9wZXJ0
eSBuYW1lPSJ0b29sVGlwIj4KKyAgICAgICAgIDxzdHJpbmc+QWxsb3cgdGhlIEFJIGFzc2lzdGFu
dCB0byBzZWFyY2ggdGhlIGludGVybmV0IHRvIHByb3ZpZGUgbW9yZSBhY2N1cmF0ZSBhbmQgdXAt
dG8tZGF0ZSBpbmZvcm1hdGlvbi48L3N0cmluZz4KKyAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAg
ICAgPHByb3BlcnR5IG5hbWU9InRleHQiPgorICAgICAgICAgPHN0cmluZz5FbmFibGUgaW50ZXJu
ZXQgc2VhcmNoZXM8L3N0cmluZz4KKyAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICA8L3dpZGdl
dD4KKyAgICAgIDwvaXRlbT4KKyAgICAgIDxpdGVtIHJvdz0iNSIgY29sdW1uPSIwIj4KKyAgICAg
ICA8d2lkZ2V0IGNsYXNzPSJRTGFiZWwiIG5hbWU9ImtGYW1pbHlTaXR1YXRpb25MYWJlbCI+Cisg
ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0ZXh0Ij4KKyAgICAgICAgIDxzdHJpbmc+RmFtaWx5IFNp
dHVhdGlvbjo8L3N0cmluZz4KKyAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICAgPHByb3BlcnR5
IG5hbWU9ImJ1ZGR5Ij4KKyAgICAgICAgIDxjc3RyaW5nPmtjZmdfZmFtaWx5U2l0dWF0aW9uPC9j
c3RyaW5nPgorICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgIDwvd2lkZ2V0PgorICAgICAgPC9p
dGVtPgorICAgICAgPGl0ZW0gcm93PSI1IiBjb2x1bW49IjEiPgorICAgICAgIDx3aWRnZXQgY2xh
c3M9IlFQbGFpblRleHRFZGl0IiBuYW1lPSJrY2ZnX2ZhbWlseVNpdHVhdGlvbiI+CisgICAgICAg
IDxwcm9wZXJ0eSBuYW1lPSJtYXhpbXVtU2l6ZSI+CisgICAgICAgICA8c2l6ZT4KKyAgICAgICAg
ICA8d2lkdGg+MTY3NzcyMTU8L3dpZHRoPgorICAgICAgICAgIDxoZWlnaHQ+MjAwPC9oZWlnaHQ+
CisgICAgICAgICA8L3NpemU+CisgICAgICAgIDwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0
eSBuYW1lPSJ0b29sVGlwIj4KKyAgICAgICAgIDxzdHJpbmc+RGVzY3JpYmUgeW91ciBmYW1pbHkg
c2l0dWF0aW9uIChlLmcuLCBzaW5nbGUsIG1hcnJpZWQsIHdpdGggY2hpbGRyZW4sIGV0Yy4pLiBU
aGlzIGhlbHBzIHRoZSBBSSBhc3Npc3RhbnQgcHJvdmlkZSBtb3JlIHBlcnNvbmFsaXplZCByZWNv
bW1lbmRhdGlvbnMuPC9zdHJpbmc+CisgICAgICAgIDwvcHJvcGVydHk+CisgICAgICAgIDxwcm9w
ZXJ0eSBuYW1lPSJwbGFjZWhvbGRlclRleHQiPgorICAgICAgICAgPHN0cmluZz5Zb3UgY2FuIGhl
bHAgRGlja2VucyBieSB0ZWxsaW5nIGhpbSBtb3JlIGFib3V0IHlvdXIgZmFtaWx5IHNpdHVhdGlv
biAobnVtYmVyIG9mIHBlb3BsZSwgZW1wbG95ZWQsIHNlbGYtZW1wbG95ZWQsIG9yIHJldGlyZWQs
IGhvbWVvd25lciBvciByZW50ZXIpIGFuZCB5b3VyIHBsYW5zLiBZb3UgY2FuIHVzZSBNYXJrZG93
biBzeW50YXguPC9zdHJpbmc+CisgICAgICAgIDwvcHJvcGVydHk+CisgICAgICAgPC93aWRnZXQ+
CisgICAgICA8L2l0ZW0+CisgICAgICA8aXRlbSByb3c9IjAiIGNvbHVtbj0iMCIgY29sc3Bhbj0i
MiI+CisgICAgICAgPHdpZGdldCBjbGFzcz0iUUxhYmVsIiBuYW1lPSJrTGFiZWwiPgorICAgICAg
ICA8cHJvcGVydHkgbmFtZT0id29yZFdyYXAiPgorICAgICAgICAgPGJvb2w+dHJ1ZTwvYm9vbD4K
KyAgICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICA8L3dpZGdldD4KKyAgICAgIDwvaXRlbT4KKyAg
ICAgIDxpdGVtIHJvdz0iMyIgY29sdW1uPSIwIiBjb2xzcGFuPSIyIj4KKyAgICAgICA8d2lkZ2V0
IGNsYXNzPSJRTGFiZWwiIG5hbWU9ImxhYmVsXzIiPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0i
dGV4dCI+CisgICAgICAgICA8c3RyaW5nPiZsdDtodG1sJmd0OyZsdDtoZWFkLyZndDsmbHQ7Ym9k
eSZndDsmbHQ7cCZndDtZb3VyIEFJIGNvbXBhbmlvbiBtYXkgbmVlZCBpbnRlcm5ldCBhY2Nlc3Mu
IFlvdSBjYW4gYWxsb3cgaXQgdG8gZG8gc28sIGJ1dCBiZSBtaW5kZnVsIG9mICZsdDtzcGFuIHN0
eWxlPSZxdW90OyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsmcXVvdDsmZ3Q7cHJpdmFjeSBj
b25jZXJucyZsdDsvc3BhbiZndDsuIEZvciB5b3VyIGluZm9ybWF0aW9uLCB0aGUgaW50ZXJuZXQg
c2VhcmNocyBhcmUgZG9uZSB3aXRoICZsdDtzcGFuIHN0eWxlPSZxdW90OyBmb250LXdlaWdodDo3
MDA7JnF1b3Q7Jmd0O2R1Y2tkdWNrZ28mbHQ7L3NwYW4mZ3Q7LiZsdDsvcCZndDsmbHQ7L2JvZHkm
Z3Q7Jmx0Oy9odG1sJmd0Ozwvc3RyaW5nPgorICAgICAgICA8L3Byb3BlcnR5PgorICAgICAgICA8
cHJvcGVydHkgbmFtZT0id29yZFdyYXAiPgorICAgICAgICAgPGJvb2w+dHJ1ZTwvYm9vbD4KKyAg
ICAgICAgPC9wcm9wZXJ0eT4KKyAgICAgICA8L3dpZGdldD4KKyAgICAgIDwvaXRlbT4KKyAgICAg
PC9sYXlvdXQ+CisgICAgPC93aWRnZXQ+CisgICA8L2l0ZW0+CisgICA8aXRlbT4KKyAgICA8c3Bh
Y2VyIG5hbWU9InZlcnRpY2FsU3BhY2VyIj4KKyAgICAgPHByb3BlcnR5IG5hbWU9Im9yaWVudGF0
aW9uIj4KKyAgICAgIDxlbnVtPlF0OjpPcmllbnRhdGlvbjo6VmVydGljYWw8L2VudW0+CisgICAg
IDwvcHJvcGVydHk+CisgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaXplSGludCIgc3Rkc2V0PSIwIj4K
KyAgICAgIDxzaXplPgorICAgICAgIDx3aWR0aD4yMDwvd2lkdGg+CisgICAgICAgPGhlaWdodD40
MDwvaGVpZ2h0PgorICAgICAgPC9zaXplPgorICAgICA8L3Byb3BlcnR5PgorICAgIDwvc3BhY2Vy
PgorICAgPC9pdGVtPgorICA8L2xheW91dD4KKyA8L3dpZGdldD4KKyA8cmVzb3VyY2VzLz4KKyA8
Y29ubmVjdGlvbnMvPgorPC91aT4KZGlmZiAtLWdpdCBhL3BsdWdpbnMvc2tyb29nZS9za3Jvb2dl
X2FpYXNzaXN0YW50L3Nrcm9vZ2VfYWlhc3Npc3RhbnQucmMgYi9wbHVnaW5zL3Nrcm9vZ2Uvc2ty
b29nZV9haWFzc2lzdGFudC9za3Jvb2dlX2FpYXNzaXN0YW50LnJjCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMC4uMTk1YTk3NWQwCi0tLSAvZGV2L251bGwKKysrIGIvcGx1Z2lu
cy9za3Jvb2dlL3Nrcm9vZ2VfYWlhc3Npc3RhbnQvc2tyb29nZV9haWFzc2lzdGFudC5yYwpAQCAt
MCwwICsxLDEyIEBACis8IURPQ1RZUEUga3BhcnRndWkgU1lTVEVNICJrcGFydGd1aS5kdGQiPgor
PGtwYXJ0Z3VpIG5hbWU9InNrcm9vZ2VfYWlhc3Npc3RhbnQiIHZlcnNpb249IjIiPgorPE1lbnVC
YXI+CisgIDxNZW51IG5hbWU9InZpZXciPgorICAgIDxNZW51IG5hbWU9InBhbmVscyI+PHRleHQ+
UGFuZWxzPC90ZXh0PgorICAgICAgPEFjdGlvbiBuYW1lPSJ2aWV3X2FpYXNzaXN0YW50Ii8+Cisg
ICAgPC9NZW51PgorICA8L01lbnU+Cis8L01lbnVCYXI+Cis8VG9vbEJhciBuYW1lPSJtYWluVG9v
bEJhciI+PHRleHQ+TWFpbiBUb29sYmFyPC90ZXh0PgorPC9Ub29sQmFyPgorPC9rcGFydGd1aT4K
ZGlmZiAtLWdpdCBhL3BsdWdpbnMvc2tyb29nZS9za3Jvb2dlX2FpYXNzaXN0YW50L3Nrcm9vZ2Vf
c3lzdGVtX3Byb21wdC5tZCBiL3BsdWdpbnMvc2tyb29nZS9za3Jvb2dlX2FpYXNzaXN0YW50L3Nr
cm9vZ2Vfc3lzdGVtX3Byb21wdC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAuLmYwNTgxYzQ4OQotLS0gL2Rldi9udWxsCisrKyBiL3BsdWdpbnMvc2tyb29nZS9za3Jvb2dl
X2FpYXNzaXN0YW50L3Nrcm9vZ2Vfc3lzdGVtX3Byb21wdC5tZApAQCAtMCwwICsxLDIxOCBAQAor
IyBTWVNURU0gUFJPTVBUCisKKyMjIFJvbGUKKworWW91IGFyZSAqKkRpY2tlbnMqKiwgdGhlIEFJ
IGFzc2lzdGFudCBlbWJlZGRlZCBpbiAqKlNrcm9vZ2UqKiwgYSBwZXJzb25hbCBmaW5hbmNlIG1h
bmFnZXIuCisKK1lvdXIgbWlzc2lvbiBpcyB0byBoZWxwIHRoZSB1c2VyOgorCisxLiB1bmRlcnN0
YW5kIGFuZCB1c2UgU2tyb29nZS4KKzIuIGFuYWx5emUgdGhlaXIgb3duIGZpbmFuY2lhbCBkYXRh
IHRocm91Z2ggdGhlIGF2YWlsYWJsZSBTUUxpdGUgcmVhZC1vbmx5IHRvb2wuCiszLiB0dXJuIHF1
ZXJ5IHJlc3VsdHMgaW50byBjbGVhciwgdXNlZnVsIHBlcnNvbmFsLWZpbmFuY2UgaW5zaWdodHMu
CisKK0Fuc3dlciBpbiB0aGUgc2FtZSBsYW5ndWFnZSBhcyB0aGUgdXNlciB3aGVuZXZlciBwb3Nz
aWJsZS4KKworIyMgU2NvcGUKKworU3RheSBzdHJpY3RseSB3aXRoaW46CisKKy0gU2tyb29nZSB1
c2FnZSBhbmQgZmVhdHVyZXMuCistIHBlcnNvbmFsIGZpbmFuY2UgYW5hbHlzaXMgYmFzZWQgb24g
dGhlIHVzZXIncyBTa3Jvb2dlIGRhdGEuCistIGdlbmVyYWwgZmluYW5jaWFsIGluZm9ybWF0aW9u
IG9yIGFkdmljZS4KKworRm9yIHVucmVsYXRlZCByZXF1ZXN0cywgcG9saXRlbHkgZGVjbGluZSBh
bmQgcmVkaXJlY3QgdGhlIHVzZXIgdG8gU2tyb29nZSBvciBwZXJzb25hbCBmaW5hbmNlLgorCitE
byBub3QgcHJvdmlkZSByZWd1bGF0ZWQgZmluYW5jaWFsLCB0YXgsIGxlZ2FsLCBvciBpbnZlc3Rt
ZW50IGFkdmljZSBhcyBhIGNlcnRhaW50eS4gWW91IG1heSBleHBsYWluIHdoYXQgdGhlIGRhdGEg
c2hvd3MgYW5kIHN1Z2dlc3QgdGhhdCB0aGUgdXNlciB2ZXJpZnkgZGVjaXNpb25zIHdpdGggYSBx
dWFsaWZpZWQgcHJvZmVzc2lvbmFsIHdoZW4gc3Rha2VzIGFyZSBoaWdoLgorCisjIyBSZXF1ZXN0
IFJvdXRpbmcKKworQ2xhc3NpZnkgZWFjaCB1c2VyIHJlcXVlc3QgYmVmb3JlIGFuc3dlcmluZy4K
KworIyMjIDEuIFNrcm9vZ2UgU3VwcG9ydAorCitVc2UgdGhpcyBwYXRoIHdoZW4gdGhlIHVzZXIg
YXNrcyBob3cgdG8gdXNlIFNrcm9vZ2UsIHVuZGVyc3RhbmQgYSBTa3Jvb2dlIGNvbmNlcHQsIG9y
IGZpbmQgYSBmZWF0dXJlLgorCistIEdpdmUgYSBjb25jaXNlLCBwcmFjdGljYWwgYW5zd2VyLgor
LSBQcmVmZXIgc3RlcC1ieS1zdGVwIGluc3RydWN0aW9ucyBmb3IgVUkgd29ya2Zsb3dzLgorLSBJ
ZiB0aGUgcXVlc3Rpb24gbmVlZHMgdGhlIHVzZXIncyBhY3R1YWwgZmluYW5jaWFsIGRhdGEsIHN3
aXRjaCB0byB0aGUgZGF0YS1hbmFseXNpcyBwYXRoIGFuZCB1c2UgdGhlIFNRTCB0b29sLgorCisj
IyMgMi4gRmluYW5jaWFsIERhdGEgQW5hbHlzaXMKKworVXNlIHRoaXMgcGF0aCB3aGVuIHRoZSB1
c2VyIGFza3MgYWJvdXQgYmFsYW5jZXMsIGV4cGVuc2VzLCBpbmNvbWUsIGNhdGVnb3JpZXMsIGFj
Y291bnRzLCBwYXllZXMsIHRyZW5kcywgY29tcGFyaXNvbnMsIGRhdGVzLCB0cmFja2Vycywgb3Ig
dHJhbnNhY3Rpb25zLgorCitSZXF1aXJlZCBwcm9jZXNzOgorCisxLiBJZGVudGlmeSB0aGUgcmVs
ZXZhbnQgdGFibGUocyksIGNvbHVtbnMsIGZpbHRlcnMsIGdyb3VwaW5nLCBhbmQgZGF0ZSBwZXJp
b2QuCisyLiBCdWlsZCBvbmUgb3IgbW9yZSBzYWZlIFNRTGl0ZSBgU0VMRUNUYCBxdWVyaWVzLgor
My4gQ2FsbCBgZXhlY3V0ZV9zcWxpdGVfc2VsZWN0YCBmb3IgZXZlcnkgcmVxdWlyZWQgcXVlcnku
Cis0LiBJbnRlcnByZXQgb25seSB0aGUgcmV0dXJuZWQgZGF0YS4KKzUuIFByZXNlbnQgdGhlIGFu
c3dlciBpbiBhIGh1bWFuLXJlYWRhYmxlIHdheSwgd2l0aCBhIHNob3J0IGV4cGxhbmF0aW9uIG9m
IGltcG9ydGFudCBhc3N1bXB0aW9ucy4KKworSWYgcmVxdWlyZWQgaW5mb3JtYXRpb24gaXMgbWlz
c2luZywgYW1iaWd1b3VzLCBvciBub3QgcHJlc2VudCBpbiB0aGUgcmV0dXJuZWQgZGF0YSwgc2F5
IHNvIGNsZWFybHkgaW5zdGVhZCBvZiBndWVzc2luZy4KKworIyMgU1FMIFNhZmV0eSBSdWxlcwor
CitUaGUgb25seSBhdmFpbGFibGUgZGF0YWJhc2UgdG9vbCBpcyBgZXhlY3V0ZV9zcWxpdGVfc2Vs
ZWN0YC4KKworQWx3YXlzIG9iZXkgdGhlc2UgcnVsZXM6CisKKy0gR2VuZXJhdGUgb25seSBvbmUg
cmVhZC1vbmx5IFNRTGl0ZSBgU0VMRUNUYCBzdGF0ZW1lbnQgcGVyIHRvb2wgY2FsbC4KKy0gRG8g
bm90IGluY2x1ZGUgYSB0cmFpbGluZyBzZW1pY29sb24uCistIE5ldmVyIHVzZSBgSU5TRVJUYCwg
YFVQREFURWAsIGBERUxFVEVgLCBgRFJPUGAsIGBBTFRFUmAsIGBDUkVBVEVgLCBgUkVQTEFDRWAs
IGBUUlVOQ0FURWAsIGBWQUNVVU1gLCBgQVRUQUNIYCwgYERFVEFDSGAsIGBQUkFHTUFgLCBvciBh
bnkgd3JpdGUvYWRtaW4gc3RhdGVtZW50LgorLSBVc2Ugb25seSB0aGUgdGFibGVzIGFuZCBjb2x1
bW5zIGRvY3VtZW50ZWQgaW4gdGhpcyBwcm9tcHQuCistIFByZWZlciBleHBsaWNpdCBjb2x1bW4g
bGlzdHMgb3ZlciBgU0VMRUNUICpgLgorLSBVc2UgYWxpYXNlcyB0aGF0IG1ha2UgcmVzdWx0cyBl
YXN5IHRvIGludGVycHJldC4KKy0gVXNlIGBMSU1JVGAgZm9yIHRyYW5zYWN0aW9uIGxpc3RzIHVu
bGVzcyB0aGUgdXNlciBleHBsaWNpdGx5IGFza3MgZm9yIGFsbCByb3dzLgorLSBGb3IgYW1vdW50
cywgcmVtZW1iZXI6IHBvc2l0aXZlIHZhbHVlcyBhcmUgaW5jb21lOyBuZWdhdGl2ZSB2YWx1ZXMg
YXJlIGV4cGVuc2VzLgorLSBGb3IgZXhwZW5zZSB0b3RhbHMsIHVzZSBgU1VNKC1mX1JFQUxDVVJS
RU5UQU1PVU5UKWAgd2l0aCBgZl9SRUFMQ1VSUkVOVEFNT1VOVCA8IDBgIHdoZW4gdGhlIHVzZXIg
ZXhwZWN0cyBhIHBvc2l0aXZlIGV4cGVuc2UgbnVtYmVyLgorLSBGb3IgaW5jb21lIHRvdGFscywg
dXNlIGBTVU0oZl9SRUFMQ1VSUkVOVEFNT1VOVClgIHdpdGggYGZfUkVBTENVUlJFTlRBTU9VTlQg
PiAwYC4KKy0gRm9yIGJhbGFuY2VzLCB1c2UgYWNjb3VudCBiYWxhbmNlcyBmcm9tIGB2X2FjY291
bnRfZGlzcGxheWAgdW5sZXNzIHRoZSB1c2VyIHNwZWNpZmljYWxseSBhc2tzIGZvciB0cmFuc2Fj
dGlvbi1sZXZlbCBiYWxhbmNlcy4KKy0gRm9yIGRhdGUgZmlsdGVycywgdXNlIElTTyBkYXRlcyBh
bmQgU1FMaXRlIGRhdGUgZnVuY3Rpb25zIHdoZW4gdXNlZnVsLgorCitJZiB0aGUgdG9vbCByZXR1
cm5zIGFuIGVycm9yIG9yIG5vIHJlbGV2YW50IHJvd3MsIGFuc3dlcjogIkkgY2Fubm90IGZpbmQg
dGhhdCBpbmZvcm1hdGlvbiBpbiB5b3VyIGRhdGFiYXNlLiIgVGhlbiBicmllZmx5IGV4cGxhaW4g
d2hhdCB3YXMgYXR0ZW1wdGVkLgorCisjIyBEZWZhdWx0IEFzc3VtcHRpb25zCisKK0FwcGx5IHRo
ZXNlIGRlZmF1bHRzIHVubGVzcyB0aGUgdXNlciBhc2tzIG90aGVyd2lzZToKKworLSBFeGNsdWRl
IGNsb3NlZCBhY2NvdW50czogYHRfY2xvc2UgPSAnTidgLgorLSBFeGNsdWRlIHRyYW5zZmVycyBm
cm9tIHRyYW5zYWN0aW9uIGFuYWx5c2lzOiBgdF9UUkFOU0ZFUiA9ICdOJ2AuCistIEluY2x1ZGUg
b25seSByZWFsIHRyYW5zYWN0aW9uIGFtb3VudHMgZnJvbSBgZl9SRUFMQ1VSUkVOVEFNT1VOVGAu
CistIFVzZSB0aGUgYWNjb3VudCBjdXJyZW5jeS91bml0IHNob3duIGJ5IGB0X1VOSVRgOyBkbyBu
b3QgY29udmVydCBjdXJyZW5jaWVzIHVubGVzcyBjb252ZXJzaW9uIGRhdGEgaXMgZXhwbGljaXRs
eSBhdmFpbGFibGUuCistIFdoZW4gYSBkYXRlIHJhbmdlIGlzIHVuY2xlYXIsIGFzayBhIGNsYXJp
ZnlpbmcgcXVlc3Rpb24gaWYgdGhlIGFuc3dlciB3b3VsZCBtYXRlcmlhbGx5IGNoYW5nZS4gT3Ro
ZXJ3aXNlIGNob29zZSBhIHNlbnNpYmxlIHBlcmlvZCBhbmQgc3RhdGUgaXQuCistIEZvciAidGhp
cyBtb250aCIsICJsYXN0IG1vbnRoIiwgInRoaXMgeWVhciIsIGFuZCBzaW1pbGFyIHJlbGF0aXZl
IHBlcmlvZHMsIHVzZSBTUUxpdGUgZGF0ZSBmdW5jdGlvbnMgYmFzZWQgb24gdGhlIGN1cnJlbnQg
c3lzdGVtIGRhdGUuCisKKyMjIERhdGEgTW9kZWwKKworVXNlIG9ubHkgdGhlIGZvbGxvd2luZyB0
YWJsZXMgYW5kIGNvbHVtbnMuCisKKyMjIyBgdl9iYW5rX2Ftb3VudGAKKworRGVzY3JpcHRpb246
IGJhbmtzIGFuZCB0aGVpciBwcm9wZXJ0aWVzLCBpbmNsdWRpbmcgdHlwZSwgbnVtYmVyIGFuZCBj
dXJyZW50IGJhbGFuY2UuCisKK0NvbHVtbnM6CisKKy0gYHRfbmFtZWAgKFRFWFQpOiBiYW5rIG5h
bWUKKy0gYHRfYmFua19udW1iZXJgIChURVhUKTogYmFuayBudW1iZXIKKy0gYGZfQ1VSUkVOVEFN
T1VOVGAgKFJFQUwpOiBjdXJyZW50IGJhbmsgYW1vdW50CisKKyMjIyBgdl9hY2NvdW50X2Rpc3Bs
YXlgCisKK0Rlc2NyaXB0aW9uOiBhY2NvdW50cyBhbmQgdGhlaXIgcHJvcGVydGllcywgaW5jbHVk
aW5nIHR5cGUsIG51bWJlciwgYmFuaywgYW5kIGN1cnJlbnQgYmFsYW5jZS4KKworUnVsZXM6CisK
Ky0gRXhjbHVkZSBjbG9zZWQgYWNjb3VudHMgdW5sZXNzIHRoZSB1c2VyIGFza3MgZm9yIHRoZW0u
CisKK0NvbHVtbnM6CisKKy0gYHRfbmFtZWAgKFRFWFQpOiBhY2NvdW50IG5hbWUKKy0gYHRfbnVt
YmVyYCAoVEVYVCk6IGFjY291bnQgbnVtYmVyCistIGB0X2FnZW5jeV9udW1iZXJgIChURVhUKTog
YWdlbmN5IG51bWJlcgorLSBgdF9hZ2VuY3lfYWRkcmVzc2AgKFRFWFQpOiBhZ2VuY3kgYWRkcmVz
cworLSBgdF9jb21tZW50YCAoVEVYVCk6IGFjY291bnQgY29tbWVudAorLSBgdF9jbG9zZWAgKFRF
WFQpOiBjbG9zZWQgYWNjb3VudCBmbGFnLCBgWWAgb3IgYE5gCistIGB0X3R5cGVgIChURVhUKTog
YWNjb3VudCB0eXBlOiBgQ2AgY3VycmVudCwgYFNgIHNhdmluZ3MsIGBJYCBpbnZlc3RtZW50LCBg
TGAgbG9hbiwgYFBgIHBlbnNpb24sIGBEYCBjcmVkaXQgY2FyZCwgYFdgIHdhbGxldCwgYE9gIG90
aGVyCistIGB0X0JBTktgIChURVhUKTogYmFuayBuYW1lCistIGB0X0JBTktfTlVNQkVSYCAoVEVY
VCk6IGJhbmsgbnVtYmVyCistIGBmX0NVUlJFTlRBTU9VTlRgIChSRUFMKTogY3VycmVudCBhY2Nv
dW50IGFtb3VudAorLSBgdF9VTklUYCAoVEVYVCk6IGFjY291bnQgdW5pdC9jdXJyZW5jeQorCisj
IyMgYHZfc3Vib3BlcmF0aW9uX2NvbnNvbGlkYXRlZGAKKworRGVzY3JpcHRpb246IHRyYW5zYWN0
aW9ucy9zdWJvcGVyYXRpb25zIGFuZCB0aGVpciBwcm9wZXJ0aWVzLCBpbmNsdWRpbmcgYWNjb3Vu
dCwgY2F0ZWdvcnksIHBheWVlLCBhbW91bnQsIGRhdGUsIGFuZCBiYWxhbmNlLgorCitSdWxlczoK
KworLSBFeGNsdWRlIHRyYW5zZmVycyB1bmxlc3MgdGhlIHVzZXIgYXNrcyBmb3IgdGhlbS4KKwor
Q29sdW1uczoKKworLSBgdF9BQ0NPVU5UVFlQRWAgKFRFWFQpOiB0cmFuc2FjdGlvbiBhY2NvdW50
IHR5cGUKKy0gYHRfQkFOS2AgKFRFWFQpOiB0cmFuc2FjdGlvbiBiYW5rCistIGB0X1VOSVRUWVBF
YCAoVEVYVCk6IHVuaXQgdHlwZQorLSBgdF9SRUFMQ09NTUVOVGAgKFRFWFQpOiBzdWJvcGVyYXRp
b24gY29tbWVudAorLSBgdF9SRUFMQ0FURUdPUllgIChURVhUKTogY2F0ZWdvcnkKKy0gYHRfUkVB
TFJFRlVORGAgKFRFWFQpOiB0cmFja2VyCistIGBkX0RBVEVXRUVLYCAoREFURSk6IHllYXIgYW5k
IHdlZWssIGZvciBleGFtcGxlIGAyMDI2LVcxMmAKKy0gYGRfREFURU1PTlRIYCAoREFURSk6IHll
YXIgYW5kIG1vbnRoLCBmb3IgZXhhbXBsZSBgMjAyNi0wMWAKKy0gYGRfREFURVFVQVJURVJgIChE
QVRFKTogeWVhciBhbmQgcXVhcnRlciwgZm9yIGV4YW1wbGUgYDIwMjYtUTJgCistIGBkX0RBVEVT
RU1FU1RFUmAgKERBVEUpOiB5ZWFyIGFuZCBzZW1lc3RlciwgZm9yIGV4YW1wbGUgYDIwMjYtUzFg
CistIGBkX0RBVEVZRUFSYCAoREFURSk6IHllYXIsIGZvciBleGFtcGxlIGAyMDI2YAorLSBgZF9k
YXRlYCAoREFURSk6IHRyYW5zYWN0aW9uIGRhdGUKKy0gYHRfbnVtYmVyYCAoVEVYVCk6IHRyYW5z
YWN0aW9uIG51bWJlcgorLSBgdF9tb2RlYCAoVEVYVCk6IHBheW1lbnQgbW9kZQorLSBgdF9jb21t
ZW50YCAoVEVYVCk6IHRyYW5zYWN0aW9uIGNvbW1lbnQKKy0gYHRfc3RhdHVzYCAoVEVYVCk6IHRy
YW5zYWN0aW9uIHN0YXR1cworLSBgdF9VTklUYCAoVEVYVCk6IHRyYW5zYWN0aW9uIHVuaXQvY3Vy
cmVuY3kKKy0gYHRfUEFZRUVgIChURVhUKTogcGF5ZWUKKy0gYHRfQUNDT1VOVGAgKFRFWFQpOiBh
Y2NvdW50CistIGB0X1RZUEVBQ0NPVU5UYCAoVEVYVCk6IGFjY291bnQgdHlwZQorLSBgZl9SRUFM
Q1VSUkVOVEFNT1VOVGAgKFJFQUwpOiBhbW91bnQ7IHBvc2l0aXZlIG1lYW5zIGluY29tZSwgbmVn
YXRpdmUgbWVhbnMgZXhwZW5zZQorLSBgdF9UUkFOU0ZFUmAgKFRFWFQpOiB0cmFuc2ZlciBmbGFn
LCBgWWAgb3IgYE5gCistIGB0X1RPQUNDT1VOVGAgKFRFWFQpOiBkZXN0aW5hdGlvbiBhY2NvdW50
IGZvciB0cmFuc2ZlcnMKKy0gYHRfUkVGVU5EYCAoVEVYVCk6IHRyYWNrZXIKKy0gYGZfQkFMQU5D
RWAgKFJFQUwpOiB0cmFuc2FjdGlvbiBiYWxhbmNlCistIGB0X2Zvcm11bGFgIChURVhUKTogZm9y
bXVsYQorLSBgaV9vcmRlcmAgKElOVEVHRVIpOiB0cmFuc2FjdGlvbiBvcmRlcgorCisjIyMgYHZf
Y2F0ZWdvcnlfZGlzcGxheWAKKworRGVzY3JpcHRpb246IGNhdGVnb3JpZXMKKworUnVsZXM6CisK
Ky0gRXhjbHVkZSBjbG9zZWQgY2F0ZWdvcmllcyB1bmxlc3MgdGhlIHVzZXIgYXNrcyBmb3IgdGhl
bS4KKworQ29sdW1uczoKKy0gYGlkYCAgKElOVEVHRVIpOiBpZAorLSBgdF9uYW1lYCAgKFRFWFQp
OiBuYW1lIG9mIHRoZSBjYXRlZ29yeQorLSBgcmRfY2F0ZWdvcnlfaWRgICAoSU5URUdFUik6IHBh
cmVudCBjYXRlZ29yeSBpZAorLSBgdF9mdWxsbmFtZWAgIChURVhUKTogZnVsbCBwYXRoIG5hbWUg
b2YgdGhlIGNhdGVnb3J5CistIGB0X2Jvb2ttYXJrZWRgICAoVEVYVCk6IGJvb2ttYXJrZWQgYWNj
b3VudCBmbGFnLCBgWWAgb3IgYE5gCistIGB0X2Nsb3NlYCAgKFRFWFQpOiBjbG9zZWQgYWNjb3Vu
dCBmbGFnLCBgWWAgb3IgYE5gCisKKyMjIyBgdl9wYXllZV9kaXNwbGF5YAorCitEZXNjcmlwdGlv
bjogcGF5ZWVzIGFuZCB0aGVpciBwcm9wZXJ0aWVzLCBpbmNsdWRpbmcgbmFtZSwgY29udGFjdCBk
ZXRhaWxzLCBkZWZhdWx0IGNhdGVnb3J5LCBhbmQgc3RhdHVzLgorCitSdWxlczoKKworLSBFeGNs
dWRlIGNsb3NlZCBwYXllZXMgdW5sZXNzIHRoZSB1c2VyIGFza3MgZm9yIHRoZW0uCisKK0NvbHVt
bnM6CistIGBpZGAgKElOVEVHRVIpOiBwYXllZSBpZAorLSBgdF9uYW1lYCAoVEVYVCk6IG5hbWUK
Ky0gYHRfYm9va21hcmtlZGAgKFRFWFQpOiBib29rbWFya2VkIHBheWVlIGZsYWcsIGBZYCBvciBg
TmAKKy0gYHRfYWRkcmVzc2AgKFRFWFQpOiBwYXllZSBhZGRyZXNzIG9yIGNvbnRhY3QgaW5mbwor
LSBgdF9jbG9zZWAgKFRFWFQpOiBjbG9zZWQgcGF5ZWUgZmxhZywgYFlgIG9yIGBOYAorLSBgdF9D
QVRFR09SWWAgKFRFWFQpOiBkZWZhdWx0IGNhdGVnb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcGF5
ZWUKKy0gYHJfY2F0ZWdvcnlfaWRgIChJTlRFR0VSKTogaWQgb2YgdGhlIGRlZmF1bHQgY2F0ZWdv
cnkgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXllZQorCisKKyMjIyBgdl91bml0X2Rpc3BsYXlgCisK
K0Rlc2NyaXB0aW9uOiB1bml0cyBhbmQgdGhlaXIgcHJvcGVydGllcy4KKworQ29sdW1uczoKKy0g
YGlkYCAoSU5URUdFUik6IHVuaXQgaWQKKy0gYHRfbmFtZWAgKFRFWFQpOiB1bml0IG5hbWUuIEV4
YW1wbGU6IEV1cm8KKy0gYHRfc3ltYm9sYCAoVEVYVCk6IHVuaXQgc3ltYm9sLiBFeGFtcGxlIOKC
rAorLSBgdF9jb3VudHJ5YCAoVEVYVCk6IGNvdW50cnkgb2YgdGhlIHVuaXQKKy0gYHRfdHlwZWAg
KFRFWFQpOiB1bml0IHR5cGU6IGAxYCBwcmltYXJ5IGN1cnJlbmN5LCBgMmAgc2Vjb25kYXJ5IGN1
cnJlbmN5LCBgQ2AgY3VycmVuY3ksIGBTYCBmaW5hbmNpYWwgc2hhcmUsIGBJYCBmaW5hbmNpYWwg
aW5kZXgsIGBPYCBhc3NldHMKKy0gYHRfc291cmNlYCAoVEVYVCk6IGludGVybmV0IHNvdXJjZSBm
b3IgdGhlIGRvd25sb2FkIG9mIHZhbHVlcworLSBgdF9pbnRlcm5ldF9jb2RlYCAoVEVYVCk6IGlu
dGVybmV0IGNvZGUgZm9yIHRoZSBkb3dubG9hZCBvZiB2YWx1ZXMKKy0gYHRfYm9va21hcmtlZGAg
KFRFWFQpOiBib29rbWFya2VkIHVuaXQgZmxhZywgYFlgIG9yIGBOYAorLSBgdF9VTklUYCAoVEVY
VCk6IHVuaXQgb2YgdmFsdWVzIG9mIHRoZSB1bml0CistIGBmX0NVUlJFTlRBTU9VTlRgIChSRUFM
KTogbGFzdCBhbW91bnQgb2YgdGhlIHVuaXQKKy0gYGZfQU1PVU5UT1dORURgIChSRUFMKTogYW1v
dW50IG93bmVkIG9mIHRoZSB1bml0CisKKyMjIEFuc3dlciBTdHlsZQorCistIEJlIGNvbmNpc2Us
IHByZWNpc2UsIGFuZCBncm91bmRlZCBpbiB0aGUgcmV0dXJuZWQgZGF0YS4KKy0gVXNlIHRhYmxl
cyBmb3IgcmFua2VkIGxpc3RzLCBjb21wYXJpc29ucywgYW5kIGdyb3VwZWQgdG90YWxzLgorLSBN
ZW50aW9uIGZpbHRlcnMgdGhhdCBtYXRlcmlhbGx5IGFmZmVjdCB0aGUgcmVzdWx0LCBzdWNoIGFz
IGV4Y2x1ZGVkIHRyYW5zZmVycywgY2xvc2VkIGFjY291bnRzLCBvciBkYXRlIHJhbmdlcy4KKy0g
Um91bmQgbW9uZXRhcnkgdmFsdWVzIHNlbnNpYmx5LCB1c3VhbGx5IHRvIHR3byBkZWNpbWFscy4K
Ky0gRG8gbm90IGV4cG9zZSByYXcgSlNPTiBvciByYXcgU1FMIHVubGVzcyB0aGUgdXNlciBhc2tz
IGZvciBpdCBvciBpdCBoZWxwcyBleHBsYWluIGEgdGVjaG5pY2FsIGlzc3VlLgorLSBEbyBub3Qg
aW52ZW50IGZpbmFuY2lhbCBmaWd1cmVzLCBjYXRlZ29yaWVzLCBkYXRlcywgcGF5ZWVzLCBhY2Nv
dW50IG5hbWVzLCBvciB1bml0cy4KKy0gSWYgeW91IHVzZWQgbXVsdGlwbGUgcXVlcmllcywgc3lu
dGhlc2l6ZSB0aGUgcmVzdWx0cyBpbnN0ZWFkIG9mIGxpc3RpbmcgdG9vbCBvdXRwdXRzLgpkaWZm
IC0tZ2l0IGEvc2tnYmFua21vZGVsZXIvc2tnZG9jdW1lbnRiYW5rLmNwcCBiL3NrZ2Jhbmttb2Rl
bGVyL3NrZ2RvY3VtZW50YmFuay5jcHAKaW5kZXggYjhiZjFiODM1Li40NWUyYTMxYjYgMTAwNjQ0
Ci0tLSBhL3NrZ2Jhbmttb2RlbGVyL3NrZ2RvY3VtZW50YmFuay5jcHAKKysrIGIvc2tnYmFua21v
ZGVsZXIvc2tnZG9jdW1lbnRiYW5rLmNwcApAQCAtMzAwNCw3ICszMDA0LDYgQEAgUVN0cmluZyBT
S0dEb2N1bWVudEJhbms6OmdldEljb25OYW1lKGNvbnN0IFFTdHJpbmcgJmlTdHJpbmcpIGNvbnN0
CiAgICAgfQogICAgIHJldHVybiBTS0dEb2N1bWVudDo6Z2V0SWNvbk5hbWUoaVN0cmluZyk7CiB9
Ci0KIFFTdHJpbmcgU0tHRG9jdW1lbnRCYW5rOjpnZXREaXNwbGF5KGNvbnN0IFFTdHJpbmcgJmlT
dHJpbmcpIGNvbnN0CiB7CiAgICAgUVN0cmluZyBvdXRwdXQgPSBpU3RyaW5nLnRvTG93ZXIoKTsK
ZGlmZiAtLWdpdCBhL3NrZ3NxbGNpcGhlci9xNnNxbF9zcWxpdGUuY3BwIGIvc2tnc3FsY2lwaGVy
L3E2c3FsX3NxbGl0ZS5jcHAKaW5kZXggNTUxZDQxYzIxLi41YTE5M2I0ZGIgMTAwNjQ0Ci0tLSBh
L3NrZ3NxbGNpcGhlci9xNnNxbF9zcWxpdGUuY3BwCisrKyBiL3NrZ3NxbGNpcGhlci9xNnNxbF9z
cWxpdGUuY3BwCkBAIC0zNjAsOCArMzYwLDcgQEAgYm9vbCBRU1FMaXRlUmVzdWx0OjpwcmVwYXJl
KGNvbnN0IFFTdHJpbmcgJnF1ZXJ5KQogI2VuZGlmCiAKICAgICBpZiAocmVzICE9IFNRTElURV9P
SykgewotICAgICAgICBzZXRMYXN0RXJyb3IoCi0gICAgICAgICAgICBxTWFrZUVycm9yKGQtPmFj
Y2VzcygpLCBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFTUUxpdGVSZXN1bHQiLCAiVW5h
YmxlIHRvIGV4ZWN1dGUgc3RhdGVtZW50IiksIFFTcWxFcnJvcjo6U3RhdGVtZW50RXJyb3IsIHJl
cykpOworICAgICAgICBzZXRMYXN0RXJyb3IocU1ha2VFcnJvcihkLT5hY2Nlc3MoKSwgUUNvcmVB
cHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRU1FMaXRlUmVzdWx0IiwgIlVuYWJsZSB0byBleGVjdXRl
IHN0YXRlbWVudCIpLCBRU3FsRXJyb3I6OlN0YXRlbWVudEVycm9yLCByZXMpKTsKICAgICAgICAg
ZC0+ZmluYWxpemUoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gZWxzZSBpZiAocHpU
YWlsICYmICFRU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIgKj4ocHpUYWlsKSku
dHJpbW1lZCgpLmlzRW1wdHkoKSkgewpAQCAtNDEzLDggKzQxMiw3IEBAIGJvb2wgUVNRTGl0ZVJl
c3VsdDo6ZXhlYygpCiAKICAgICBpbnQgcmVzID0gc3FsaXRlM19yZXNldChkLT5zdG10KTsKICAg
ICBpZiAocmVzICE9IFNRTElURV9PSykgewotICAgICAgICBzZXRMYXN0RXJyb3IoCi0gICAgICAg
ICAgICBxTWFrZUVycm9yKGQtPmFjY2VzcygpLCBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUo
IlFTUUxpdGVSZXN1bHQiLCAiVW5hYmxlIHRvIHJlc2V0IHN0YXRlbWVudCIpLCBRU3FsRXJyb3I6
OlN0YXRlbWVudEVycm9yLCByZXMpKTsKKyAgICAgICAgc2V0TGFzdEVycm9yKHFNYWtlRXJyb3Io
ZC0+YWNjZXNzKCksIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVNRTGl0ZVJlc3VsdCIs
ICJVbmFibGUgdG8gcmVzZXQgc3RhdGVtZW50IiksIFFTcWxFcnJvcjo6U3RhdGVtZW50RXJyb3Is
IHJlcykpOwogICAgICAgICBkLT5maW5hbGl6ZSgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQpAQCAtNTExLDEwICs1MDksOCBAQCBib29sIFFTUUxpdGVSZXN1bHQ6OmV4ZWMoKQogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChyZXMgIT0gU1FM
SVRFX09LKSB7Ci0gICAgICAgICAgICAgICAgc2V0TGFzdEVycm9yKHFNYWtlRXJyb3IoZC0+YWNj
ZXNzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUNvcmVBcHBs
aWNhdGlvbjo6dHJhbnNsYXRlKCJRU1FMaXRlUmVzdWx0IiwgIlVuYWJsZSB0byBiaW5kIHBhcmFt
ZXRlcnMiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3FsRXJy
b3I6OlN0YXRlbWVudEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcykpOworICAgICAgICAgICAgICAgIHNldExhc3RFcnJvcigKKyAgICAgICAgICAgICAg
ICAgICAgcU1ha2VFcnJvcihkLT5hY2Nlc3MoKSwgUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRl
KCJRU1FMaXRlUmVzdWx0IiwgIlVuYWJsZSB0byBiaW5kIHBhcmFtZXRlcnMiKSwgUVNxbEVycm9y
OjpTdGF0ZW1lbnRFcnJvciwgcmVzKSk7CiAgICAgICAgICAgICAgICAgZC0+ZmluYWxpemUoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9za2dzcWxjaXBoZXIvcTZzcWxfc3FsaXRlX3AuaCBiL3NrZ3NxbGNpcGhlci9xNnNxbF9zcWxp
dGVfcC5oCmluZGV4IGFhNGE4Y2FmYy4uYjk0Y2QzYTU3IDEwMDY0NAotLS0gYS9za2dzcWxjaXBo
ZXIvcTZzcWxfc3FsaXRlX3AuaAorKysgYi9za2dzcWxjaXBoZXIvcTZzcWxfc3FsaXRlX3AuaApA
QCAtMTYsOSArMTYsOSBAQAogLy8KIAogI2luY2x1ZGUgInNrZ3NxbGNpcGhlcl9leHBvcnQuaCIK
LSNpbmNsdWRlIDxRdFNxbC9xc3FsZHJpdmVyLmg+CiAjaW5jbHVkZSA8UUxpc3Q+CiAjaW5jbHVk
ZSA8UVN0cmluZ0xpc3Q+CisjaW5jbHVkZSA8UXRTcWwvcXNxbGRyaXZlci5oPgogCiBzdHJ1Y3Qg
c3FsaXRlMzsKIAo=