[PATCH branch-1.6] feature: 'makedep' for m4

Eric Blake via M4-patches <[email protected]> Mon, 21 Apr 2025 10:25:47 -0500
Newsgroups gmane.comp.gnu.m4.patches
Message-ID <[email protected]>
RnJvbTogRGF2aWQgV2FybWUgPGExMzZkbXdAd2FybWUubmV0PgoKQWRkIGFiaWxpdHkgdG8gZ2Vu
ZXJhdGUgbWFrZSBkZXBlbmRlbmN5IHJ1bGVzLgoqIGRvYy9tNC50ZXhpbmZvOiBEb2N1bWVudCBu
ZXcgb3B0aW9ucy4KKiBzcmMvYnVpbHRpbi5jOiBSZWNvcmQgZGVwZW5kZW5jaWVzIGZvciBpbmNs
dWRlKCkgLyBzaW5jbHVkZSgpLgoqIHNyYy9tNC5jOiBBZGQgbmV3IG9wdGlvbnMuICBSZWNvcmQg
ZGVwZW5kZW5jaWVzIGZvciBmaWxlcwpzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4gIEdl
bmVyYXRlIGRlcGVuZGVuY2llcyBhdCBlbmQuCiogc3JjL200Lmg6IEFkZCBkZWZpbmVzIGZvciB0
cmFja2luZyBob3cgZmlsZXMgYXJlIHJlZmVyZW5jZXMsIGFuZApuZXcgZnVuY3Rpb25zIGZvciBy
ZWNvcmRpbmcgLyBnZW5lcmF0aW9uIG9mIGRlcGVuZGVuY2llcy4KKiBzcmMvcGF0aC5jOiBBZGRl
ZCByZWNvcmRpbmcgLyBnZW5lcmF0aW9uIG9mIGRlcGVuZGVuY2llcy4KKiBORVdTOiBBZGRlZCBh
IGJsdXJiIGZvciB0aGlzIG5ldyBmZWF0dXJlLgoqIFRIQU5LUyBBZGRlZCB1cyB0byB0aGUgbGlz
dC4KQ28tYXV0aG9yZWQtYnk6IExvcmVuem8gRGkgR3JlZ29yaW8gPGxvcmVuem8uZGlncmVnb3Jp
b0BnbWFpbC5jb20+Ci0tLQoKVGhpcyBpcyBOT1QgeWV0IHJlYWR5IGZvciBpbmNsdXNpb24gLSBJ
IGluc2lzdCB0aGF0IHdlIE5FRUQgdG8gaGF2ZQpzb21ldGhpbmcgdGhhdCB0ZXN0cyB0aGUgZnVu
Y3Rpb25hbGl0eSBkdXJpbmcgJ21ha2UgY2hlY2snIHRvIGVuc3VyZQppdCBkb2Vzbid0IHJlZ3Jl
c3MuICBBbmQgdGhlcmUgYXJlIHByb2JhYmx5IG90aGVyIG5pdHBpY2tzIHRoYXQgSSB3aWxsCmNs
ZWFuIHVwIChzdWNoIGFzIENoYW5nZUxvZyBzdHlsZSwgZXJyb3IgbWVzc2FnZSB0d2Vha3MsIGZp
Z3VyaW5nIG91dAp0aGUgcHJlZmVycmVkIHdheSB0byBkbyB0aGUgZmxleGlibGUgYWxsb2NhdGlv
biBvZiB0aGUgZmlsZSBuYW1lIGluCnN0b3JhZ2UgYWxvbmdzaWRlICdzdHJ1Y3QgZGVwZW5kZW5j
eScsIGFuZCBzbyBmb3J0aCkuICBIb3dldmVyLCBJJ20KcmVwb3N0aW5nIERhdmlkJ3Mgb3JpZ2lu
YWwgcGF0Y2ggYXMgdGVudGF0aXZlbHkgcmViYXNlZCB0byBicmFuY2gtMS42LAp0byBtYWtlIGl0
IGVhc2llciB0byBjb250aW51ZSB0byBnZXQgdGhpcyByZWFkeSBmb3IgaW5jbHVzaW9uIGJlZm9y
ZSBJCmN1dCB0aGUgbmV4dCBiZXRhIHJlbGVhc2UgaW4gcHJlcGFyYXRpb24gZm9yIGFuIGV2ZW50
dWFsIDEuNi4KCiBORVdTICAgICAgICAgIHwgICA4ICsrKwogVEhBTktTICAgICAgICB8ICAgMiAr
CiBkb2MvbTQudGV4aSAgIHwgMTE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysKIHNyYy9idWlsdGluLmMgfCAgMTYgKysrKy0tCiBzcmMvbTQuYyAgICAgIHwgMTQ0ICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvbTQu
aCAgICAgIHwgIDEwICsrKysKIHNyYy9wYXRoLmMgICAgfCAgODAgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAzNzAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwppbmRleCBiZTNhZmUyMy4uMzhiOTc2YTAg
MTAwNjQ0Ci0tLSBhL05FV1MKKysrIGIvTkVXUwpAQCAtMyw2ICszLDE0IEBAIEdOVSBNNCBORVdT
IC0gVXNlciB2aXNpYmxlIGNoYW5nZXMuCiAqIE5vdGV3b3J0aHkgY2hhbmdlcyBpbiBWZXJzaW9u
IDEuNiAoPz8/Py0/Py0/PykgW3N0YWJsZV0KICAgUmVsZWFzZWQgYnkgPz8/PywgYmFzZWQgb24g
Z2l0IHZlcnNpb25zIDEuNC4xMGIueC0qIGFuZCAxLjUuKgoKKyoqIEFkZCBuZXcgY2FwYWJpbGl0
eSB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG1ha2UgZGVwZW5kZW5jeSBydWxlcy4KKyAgIFRo
aXMgaXMgZW5hYmxlZCBieSB0aGUgbmV3IGNvbW1hbmQtbGluZSBvcHRpb24gcGFpciAnLS1tYWtl
ZGVwPUZJTEUnCisgICBhbmQgJy0tbWFrZWRlcC10YXJnZXQ9VEFSR0VUJyBhbmQgZnVydGhlciB0
dW5lZCBieQorICAgJy0tbWFrZWRlcC1nZW4tbWlzc2luZy1hcmdmaWxlcycsICctLW1ha2VkZXAt
Z2VuLW1pc3NpbmctaW5jbHVkZScsCisgICAnLS1tYWtlZGVwLWdlbi1taXNzaW5nLXNpbmNsdWRl
JywgJy0tbWFrZWRlcC1nZW4tbWlzc2luZy1hbGwnLAorICAgJy0tbWFrZWRlcC1waG9ueS1hcmdm
aWxlcycsICctLW1ha2VkZXAtcGhvbnktaW5jbHVkZScsCisgICAnLS1tYWtlZGVwLXBob255LXNp
bmNsdWRlJywgYW5kICctLW1ha2VkZXAtcGhvbnktYWxsJy4KKwogKiogRml4IHJlZ3Jlc3Npb25z
IGludHJvZHVjZWQgaW4gMS40LjEwYjoKICoqKiBVc2luZyBgYnVpbHRpbicgb3IgYGluZGlyJyB0
byBwZXJmb3JtIG5lc3RlZCBgc2hpZnQnIGNhbGxzIHRyaWdnZXJlZAogICAgIGFuIGFzc2VydGlv
biBmYWlsdXJlIChub3QgcHJlc2VudCBpbiAxLjQuMTEpLgpkaWZmIC0tZ2l0IGEvVEhBTktTIGIv
VEhBTktTCmluZGV4IDY4OTgxMzNlLi44YjVjY2U2NiAxMDA2NDQKLS0tIGEvVEhBTktTCisrKyBi
L1RIQU5LUwpAQCAtMzksNiArMzksNyBAQCBEYXZpZCBBcHBzICAgICAgICAgICAgICB1bmxpc3Rl
ZAogRGF2aWQgQXJuc3RlaW4gICAgICAgICAgYXJuc3RlaW5AcG9ib3guY29tCiBEYXZpZCBKLiBN
YWNLZW56aWUgICAgICBkam1AdXVuZXQudXUubmV0CiBEYXZpZCBQZXJsaW4gICAgICAgICAgICBk
YXZlcEBuYW5vc29mdC5jb20KK0RhdmlkIFdhcm1lICAgICAgICAgICAgIGExMzZkbXdAd2FybWUu
bmV0CiBFbGJlcnQgUG9sICAgICAgICAgICAgICBlbGJlcnQucG9sQGdtYWlsLmNvbQogRWxpYXMg
QmVuYWxpICAgICAgICAgICAgZWxwdHJAdXNlcnMuc291cmNlZm9yZ2UubmV0CiBFcmV6IFphZG9r
ICAgICAgICAgICAgICBlemtAY3MuY29sdW1iaWEuZWR1CkBAIC04MSw2ICs4Miw3IEBAIEtvbnJh
ZCBTY2h3YXJ6ICAgICAgICAgIGtvbnJhZC5zY2h3YXJ6QHNpZW1lbnMuY29tCiBLcmlzdGluZSBM
dW5kICAgICAgICAgICBsdW5kQGxwbmF4cC5pbjJwMy5mcgogS3JzdGUgQXNhbm92aWMgICAgICAg
ICAga3JzdGVAaWNzaS5iZXJrZWxleS5lZHUKIExhd3NvbiBDaGFuICAgICAgICAgICAgIExhd3Nv
bi5DaGFuQHRkc2VjdXJpdGllcy5jb20KK0xvcmVuem8gRGkgR3JlZ29yaW8gICAgIGxvcmVuem8u
ZGlncmVnb3Jpb0BnbWFpbC5jb20KIE1hcmlqbiBTY2hvdXRlbiAgICAgICAgIHVubGlzdGVkCiBN
YXJpb24gSGFrYW5zb24gICAgICAgICBoYWthbnNvbkBjc2Uub2dpLmVkdQogTWFyayBTZWlkZW4g
ICAgICAgICAgICAgbWlzQHNlaWRlbi5jb20KZGlmZiAtLWdpdCBhL2RvYy9tNC50ZXhpIGIvZG9j
L200LnRleGkKaW5kZXggMTAzMTRkNDIuLjI1YmY3NmRiIDEwMDY0NAotLS0gYS9kb2MvbTQudGV4
aQorKysgYi9kb2MvbTQudGV4aQpAQCAtMTQ1LDYgKzE0NSw3IEBAIFRvcAoKICogT3BlcmF0aW9u
IG1vZGVzOjogICAgICAgICAgICAgQ29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIG9wZXJhdGlvbiBt
b2RlcwogKiBQcmVwcm9jZXNzb3IgZmVhdHVyZXM6OiAgICAgICBDb21tYW5kIGxpbmUgb3B0aW9u
cyBmb3IgcHJlcHJvY2Vzc29yIGZlYXR1cmVzCisqIE1ha2UgZGVwZW5kZW5jeSBnZW5lcmF0aW9u
OjogIEdlbmVyYXRpbmcgbWFrZSBkZXBlbmNlbmN5IHJ1bGVzCiAqIExpbWl0cyBjb250cm9sOjog
ICAgICAgICAgICAgIENvbW1hbmQgbGluZSBvcHRpb25zIGZvciBsaW1pdHMgY29udHJvbAogKiBG
cm96ZW4gc3RhdGU6OiAgICAgICAgICAgICAgICBDb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgZnJv
emVuIHN0YXRlCiAqIERlYnVnZ2luZyBvcHRpb25zOjogICAgICAgICAgIENvbW1hbmQgbGluZSBv
cHRpb25zIGZvciBkZWJ1Z2dpbmcKQEAgLTU3Nyw2ICs1NzgsNyBAQCBJbnZva2luZyBtNAogQG1l
bnUKICogT3BlcmF0aW9uIG1vZGVzOjogICAgICAgICAgICAgQ29tbWFuZCBsaW5lIG9wdGlvbnMg
Zm9yIG9wZXJhdGlvbiBtb2RlcwogKiBQcmVwcm9jZXNzb3IgZmVhdHVyZXM6OiAgICAgICBDb21t
YW5kIGxpbmUgb3B0aW9ucyBmb3IgcHJlcHJvY2Vzc29yIGZlYXR1cmVzCisqIE1ha2UgZGVwZW5k
ZW5jeSBnZW5lcmF0aW9uOjogIEdlbmVyYXRpbmcgbWFrZSBkZXBlbmRlbmN5IHJ1bGVzCiAqIExp
bWl0cyBjb250cm9sOjogICAgICAgICAgICAgIENvbW1hbmQgbGluZSBvcHRpb25zIGZvciBsaW1p
dHMgY29udHJvbAogKiBGcm96ZW4gc3RhdGU6OiAgICAgICAgICAgICAgICBDb21tYW5kIGxpbmUg
b3B0aW9ucyBmb3IgZnJvemVuIHN0YXRlCiAqIERlYnVnZ2luZyBvcHRpb25zOjogICAgICAgICAg
IENvbW1hbmQgbGluZSBvcHRpb25zIGZvciBkZWJ1Z2dpbmcKQEAgLTc5Myw2ICs3OTUsMTIwIEBA
IFByZXByb2Nlc3NvciBmZWF0dXJlcwogZmlsZSBuYW1lcy4KIEBlbmQgdGFibGUKCitAbm9kZSBN
YWtlIGRlcGVuZGVuY3kgZ2VuZXJhdGlvbgorQHNlY3Rpb24gQ29tbWFuZCBsaW5lIG9wdGlvbnMg
Zm9yIGdlbmVyYXRpbmcgTWFrZWZpbGUgZGVwZW5kZW5jeSBydWxlcworCitNYWtlZmlsZSBkZXBl
bmRlbmN5IHJ1bGVzIGNhbiBiZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBzcGVjaWZ5aW5n
Citib3RoIHRoZSBAY29kZXstLW1ha2VkZXA9fUB2YXJ7ZmlsZX0gYW5kCitAY29kZXstLW1ha2Vk
ZXAtdGFyZ2V0PX1AdmFye3RhcmdldH0gb3B0aW9ucy4KKworQHRhYmxlIEBjb2RlCitAaXRlbSAt
LW1ha2VkZXA9QHZhcntmaWxlfQorQ2F1c2VzIEBjb2Rle200fSB0byBnZW5lcmF0ZSBhIGRlcGVu
ZGVuY3kgcnVsZSBpbnRvIHRoZSBzcGVjaWZpZWQKK0B2YXJ7ZmlsZX0uICBNYWNybyBleHBhbnNp
b24gb3V0cHV0IGlzIHN0aWxsIHdyaXR0ZW4gdG8gc3Rkb3V0IGFzCitub3JtYWwuICBUaGlzIG9w
dGlvbiBpcyBhbmFsb2dvdXMgdG8gdGhlIEBjb2Rley1NRn0gb3B0aW9uIG9mCitAY29kZXtnY2N9
LgorCitAaXRlbSAtLW1ha2VkZXAtdGFyZ2V0PUB2YXJ7dGFyZ2V0fQorU3BlY2lmaWVzIEB2YXJ7
dGFyZ2V0fSB0byBiZSB0aGUgdGFyZ2V0IG9mIHRoZSBnZW5lcmF0ZWQgZGVwZW5kZW5jeQorcnVs
ZS4gIFRoZSBzdHJpbmcgQHZhcnt0YXJnZXR9IGlzIHVzZWQgdmVyYmF0aW0sIGFuZCBjYW4gY29u
dGFpbiBzZXZlcmFsCitsb2dpY2FsIHRhcmdldHMgc2VwYXJhdGVkIGJ5IHNwYWNlcy4gIEl0IGlz
IHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8KK3Byb3Blcmx5IGV4cHJlc3MgY2hhcmFjdGVy
cyB0aGF0IEBjb2Rle21ha2V9IGhhbmRsZXMgc3BlY2lhbGx5IChzdWNoIGFzCisnQGNvZGV7JH0n
LCBvciBzcGFjZXMgd2l0aGluIGZpbGUgbmFtZXMpLiAgU2luY2UgQGNvZGV7bTR9IHNlbmRzIGl0
cworbWFjcm8gZXhwYW5zaW9uIG91dHB1dCB0byBzdGRvdXQsIGl0IG5ldmVyIHJlYWxseSBrbm93
cyB0aGUgbmFtZSBvZiB0aGUKK3RhcmdldCBmaWxlIGJlaW5nIGdlbmVyYXRlZCwgc28gdGhlIHRh
cmdldCBtdXN0IGFsd2F5cyBiZSBzcGVjaWZpZWQKK2V4cGxpY2l0bHkgYnkgdGhlIHVzZXIgd2l0
aCB0aGlzIG9wdGlvbi4gIFRoaXMgb3B0aW9uIGlzIGFuYWxvZ291cyB0bwordGhlIEBjb2Rley1N
VH0gb3B0aW9uIG9mIEBjb2Rle2djY30gKGV4Y2VwdCB0aGF0IEBjb2Rle2djY30gYWxsb3dzCitA
Y29kZXstTVR9IHRvIGJlIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcykuCitAZW5kIHRhYmxlCisK
K05vdGUgdGhhdCB0aGUgQGNvZGV7LS1tYWtlZGVwPX1AdmFye2ZpbGV9IGFuZAorQGNvZGV7bWFr
ZWRlcC10YXJnZXQ9fUB2YXJ7dGFyZ2V0fSBvcHRpb25zIG11c3QgZWl0aGVyIChhKSBib3RoIGJl
CitzcGVjaWZpZWQsIG9yIChiKSBuZWl0aGVyIGJlIHNwZWNpZmllZC4gIFRoZXkgY2Fubm90IGJl
IHVzZWQKK2luZGVwZW5kZW50bHkgb2YgZWFjaCBvdGhlci4KKworVGhlIGZvbGxvd2luZyBhZGRp
dGlvbmFsIG9wdGlvbnMgY2FuIGFsc28gYmUgdXNlZCB3aGVuIGRlcGVuZGVuY3kgcnVsZXMKK2Fy
ZSBiZWluZyBnZW5lcmF0ZWQgKHRoZXNlIG9wdGlvbnMgYXJlIG9ubHkgdmFsaWQgd2hlbiBib3Ro
CitAY29kZXttYWtlZGVwPX1AdmFye2ZpbGV9IGFuZCBAY29kZXttYWtlZGVwLXRhcmdldD19QHZh
cnt0YXJnZXR9IGhhdmUKK2Fsc28gYmVlbiBzcGVjaWZpZWQpOgorCitAdGFibGUgQGNvZGUKK0Bp
dGVtIC0tbWFrZWRlcC1nZW4tbWlzc2luZy1hcmdmaWxlcworQ2F1c2VzIEBjb2Rle200fSB0byBh
c3N1bWUgdGhhdCBhbnkgZmlsZSBsaXN0ZWQgb24gdGhlIGNvbW1hbmQgbGluZSB0aGF0CitpcyBt
aXNzaW5nIChpLmUuLCBkb2VzIG5vdCBleGlzdCkgaXMgYW4gYXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgZmlsZS4KK0Bjb2Rle000fSBpbmNsdWRlcyBzdWNoIG1pc3NpbmcgZmlsZXMgYXMgZGVwZW5k
ZW5jaWVzIGluIHRoZSBnZW5lcmF0ZWQKK3J1bGUgcmVnYXJkbGVzcy4gIEluIHRoaXMgY2FzZSB0
aGUgZGVwZW5kZW5jeSBhcHBlYXJzIGV4YWN0bHkgYXMKK3NwZWNpZmllZCBvbiB0aGUgY29tbWFu
ZCBsaW5lIGFuZCBpcyBub3QgbW9kaWZpZWQgYnkgYW55CitAY29kZXstSX1AdmFye3NlYXJjaGRp
cn0gcHJlZml4ZXMuICBOb3RlIHRoYXQgdGhlIG1hY3JvIGV4cGFuc2lvbiBvdXRwdXQKK2dlbmVy
YXRlZCB0byBzdGRvdXQgd2lsbCBiZSBpbmNvcnJlY3Qgd2hlbiB0aGlzIGhhcHBlbnMgYmVjYXVz
ZSB0aGUKK21pc3NpbmcgZmlsZSBpcyBhc3N1bWVkIHRvIGJlIGFuIGVtcHR5IGZpbGUuICBBIHdh
cm5pbmcgaXMgcHJvZHVjZWQgb24KK3N0ZGVyciBmb3IgZWFjaCBtaXNzaW5nIGNvbW1hbmQgbGlu
ZSBmaWxlIGhhbmRsZWQgaW4gdGhpcyBtYW5uZXIuCisKK0BpdGVtIC0tbWFrZWRlcC1nZW4tbWlz
c2luZy1pbmNsdWRlCitDYXVzZXMgQGNvZGV7bTR9IHRvIGFzc3VtZSB0aGF0IGFueSBmaWxlIGlu
Y2x1ZGVkIHZpYSB0aGUKK0Bjb2Rle2luY2x1ZGUoKX0gbWFjcm8gdGhhdCBpcyBtaXNzaW5nIChp
LmUuLCBkb2VzIG5vdCBleGlzdCkgaXMgYW4KK2F1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGUu
ICBAY29kZXtNNH0gaW5jbHVkZXMgc3VjaCBtaXNzaW5nIGZpbGVzIGFzCitkZXBlbmRlbmNpZXMg
aW4gdGhlIGdlbmVyYXRlZCBydWxlIHJlZ2FyZGxlc3MuICBJbiB0aGlzIGNhc2UgdGhlCitkZXBl
bmRlbmN5IGFwcGVhcnMgZXhhY3RseSBhcyBzcGVjaWZpZWQgaW4gdGhlIGFyZ3VtZW50IHRvCitA
Y29kZXtpbmNsdWRlKCl9IGFuZCBpcyBub3QgbW9kaWZpZWQgYnkgYW55IEBjb2Rley1JfUB2YXJ7
c2VhcmNoZGlyfQorcHJlZml4ZXMuICBOb3RlIHRoYXQgdGhlIG1hY3JvIGV4cGFuc2lvbiBvdXRw
dXQgZ2VuZXJhdGVkIHRvIHN0ZG91dCB3aWxsCitiZSBpbmNvcnJlY3Qgd2hlbiB0aGlzIGhhcHBl
bnMgYmVjYXVzZSB0aGUgbWlzc2luZyBmaWxlIGlzIGFzc3VtZWQgdG8gYmUKK2FuIGVtcHR5IGZp
bGUuICBUaGlzIG9wdGlvbiBjYXVzZXMgdGhlIEBjb2Rle200fSBAY29kZXtpbmNsdWRlKCl9IG1h
Y3JvCit0byBiZWhhdmUgbGlrZSBAY29kZXtzaW5jbHVkZSgpfSwgZXhjZXB0IHRoYXQgYSB3YXJu
aW5nIG1lc3NhZ2UgaXMKK3Byb2R1Y2VkIG9uIHN0ZGVyciB0byBpbmRpY2F0ZSB0aGF0IHRoZSBy
ZXF1ZXN0ZWQgZmlsZSB3YXMgbWlzc2luZy4KK1RoaXMgb3B0aW9uIGlzIGFuYWxvZ291cyB0byB0
aGUgQGNvZGV7LU1HfSBvcHRpb24gb2YgQGNvZGV7Z2NjfS4KKworQGl0ZW0gLS1tYWtlZGVwLWdl
bi1taXNzaW5nLXNpbmNsdWRlCitDYXVzZXMgQGNvZGV7bTR9IHRvIGFzc3VtZSB0aGF0IGFueSBm
aWxlIGluY2x1ZGVkIHZpYSB0aGUKK0Bjb2Rle3NpbmNsdWRlKCl9IG1hY3JvIHRoYXQgaXMgbWlz
c2luZyAoaS5lLiwgZG9lcyBub3QgZXhpc3QpIGlzIGFuCithdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmaWxlLiAgQGNvZGV7TTR9IGluY2x1ZGVzIHN1Y2ggbWlzc2luZyBmaWxlcyBhcworZGVwZW5k
ZW5jaWVzIGluIHRoZSBnZW5lcmF0ZWQgcnVsZSByZWdhcmRsZXNzLiAgSW4gdGhpcyBjYXNlIHRo
ZQorZGVwZW5kZW5jeSBhcHBlYXJzIGV4YWN0bHkgYXMgc3BlY2lmaWVkIGluIHRoZSBhcmd1bWVu
dCB0bworQGNvZGV7c2luY2x1ZGUoKX0gYW5kIGlzIG5vdCBtb2RpZmllZCBieSBhbnkgQGNvZGV7
LUl9QHZhcntzZWFyY2hkaXJ9CitwcmVmaXhlcy4gIE5vdGUgdGhhdCB0aGUgbWFjcm8gZXhwYW5z
aW9uIG91dHB1dCBnZW5lcmF0ZWQgdG8gc3Rkb3V0IHdpbGwKK2JlIGluY29ycmVjdCB3aGVuIHRo
aXMgaGFwcGVucyBiZWNhdXNlIHRoZSBtaXNzaW5nIGZpbGUgaXMgYXNzdW1lZCB0byBiZQorYW4g
ZW1wdHkgZmlsZS4gIFRoaXMgb3B0aW9uIGRvZXMgbm90IGFsdGVyIEBjb2Rle3NpbmNsdWRlKCl9
J3MgYmVoYXZpb3IKK29mIHNpbGVudGx5IGlnbm9yaW5nIHJlcXVlc3RzIHRvIEBjb2Rle3NpbmNs
dWRlKCl9IGZpbGVzIHRoYXQgZG8gbm90IGV4aXN0LgorCitAaXRlbSAtLW1ha2VkZXAtZ2VuLW1p
c3NpbmctYWxsCitUaGlzIG9wdGlvbiBpcyBlcXVpdmFsZW50IHRvIHNwZWNpZnlpbmcgYWxsIHRo
cmVlIG9wdGlvbnMKK0Bjb2Rley0tbWFrZWRlcC1nZW4tbWlzc2luZy1hcmdmaWxlc30sCitAY29k
ZXstLW1ha2VkZXAtZ2VuLW1pc3NpbmctaW5jbHVkZX0gYW5kCitAY29kZXstLW1ha2VkZXAtZ2Vu
LW1pc3Npbmctc2luY2x1ZGV9LgorQGVuZCB0YWJsZQorCitOb3RlIHRoYXQgdGhlIGFib3ZlIEBj
b2Rle21ha2VkZXAtZ2VuLW1pc3NpbmctKn0gb3B0aW9ucyBhc3N1bWUgdGhhdCB0aGUKK21pc3Np
bmcgZmlsZXMgd2lsbCB1bHRpbWF0ZWx5IG5vdCBAY29kZXtpbmNsdWRlKCl9IG9yIEBjb2Rle3Np
bmNsdWRlKCl9CithbnkgYWRkaXRpb25hbCBmaWxlcyAtLSBpZiB0aGV5IGRvLCB0aGVuIHRoZXNl
IGFkZGl0aW9uYWwgZmlsZXMgd2lsbCBiZQorbWlzc2luZyBmcm9tIHRoZSBnZW5lcmF0ZWQgZGVw
ZW5kZW5jeSBydWxlcy4KKworVGhlIGZvbGxvd2luZyBvcHRpb25zIGNvbnRyb2wgdGhlIGdlbmVy
YXRpb24gb2YgYGBwaG9ueScnIHRhcmdldHMgZm9yCitjZXJ0YWluIGNsYXNzZXMgb2YgZGVwZW5k
ZW5jaWVzLiAgVGhlc2UgZHVtbXkgcnVsZXMgYXJlIHVzZWQgdG8gd29yaworYXJvdW5kIGVycm9y
cyBAY29kZXttYWtlfSBnaXZlcyBpZiB5b3UgcmVtb3ZlIGZpbGVzIHdpdGhvdXQgdXBkYXRpbmcg
dGhlCitAY29kZXtNYWtlZmlsZX0gdG8gbWF0Y2guICBEZXBlbmRlbmNpZXMgdGhhdCBtYXRjaCBv
bmUgb3IgbW9yZSBvZiB0aGVzZQorY2xhc3NlcyBjYXVzZSBhIHNpbmdsZSBkdW1teSBydWxlIHRv
IGJlIGdlbmVyYXRlZCBmb3IgdGhlbToKKworQHRhYmxlIEBjb2RlCitAaXRlbSAtLW1ha2VkZXAt
cGhvbnktYXJnZmlsZXMKK0NhdXNlcyBAY29kZXttNH0gdG8gZ2VuZXJhdGUgYSBgYHBob255Jycg
dGFyZ2V0IGZvciBlYWNoIGZpbGUgdGhhdCBpcworc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxp
bmUuCisKK0BpdGVtIC0tbWFrZWRlcC1waG9ueS1pbmNsdWRlCitDYXVzZXMgQGNvZGV7bTR9IHRv
IGdlbmVyYXRlIGEgYGBwaG9ueScnIHRhcmdldCBmb3IgZWFjaCBmaWxlIHRoYXQgaXMKK3RoZSBz
dWJqZWN0IG9mIGFuIEBjb2Rle2luY2x1ZGUoKX0gbWFjcm8uICBUaGlzIG9wdGlvbiBpcyBhbmFs
b2dvdXMgdG8KK3RoZSBAY29kZXstTVB9IG9wdGlvbiBvZiBAY29kZXtnY2N9LgorCitAaXRlbSAt
LW1ha2VkZXAtcGhvbnktc2luY2x1ZGUKK0NhdXNlcyBAY29kZXttNH0gdG8gZ2VuZXJhdGUgYSBg
YHBob255JycgdGFyZ2V0IGZvciBlYWNoIGZpbGUgdGhhdCBpcwordGhlIHN1YmplY3Qgb2YgYW4g
QGNvZGV7c2luY2x1ZGUoKX0gbWFjcm8uCisKK0BpdGVtIC0tbWFrZWRlcC1waG9ueS1hbGwKK2lz
IGVxdWl2YWxlbnQgdG8gc3BlY2lmeWluZyBhbGwgdGhyZWUgb3B0aW9uczoKK0Bjb2Rley0tbWFr
ZWRlcC1waG9ueS1hcmdmaWxlc30KK0Bjb2Rley0tbWFrZWRlcC1waG9ueS1pbmNsdWRlfQorQGNv
ZGV7LS1tYWtlZGVwLXBob255LXNpbmNsdWRlfS4KK0BlbmQgdGFibGUKKwogQG5vZGUgTGltaXRz
IGNvbnRyb2wKIEBzZWN0aW9uIENvbW1hbmQgbGluZSBvcHRpb25zIGZvciBsaW1pdHMgY29udHJv
bAoKZGlmZiAtLWdpdCBhL3NyYy9idWlsdGluLmMgYi9zcmMvYnVpbHRpbi5jCmluZGV4IDY1ZTBm
ZjcyLi4zMzUzZTZkYiAxMDA2NDQKLS0tIGEvc3JjL2J1aWx0aW4uYworKysgYi9zcmMvYnVpbHRp
bi5jCkBAIC0xNDcyLDEzICsxNDcyLDE0IEBAIG00X2NoYW5nZWNvbSAoc3RydWN0IG9ic3RhY2sg
Km9icyBNQVlCRV9VTlVTRUQsIGludCBhcmdjLAogICAgYXJndW1lbnQsIGlmIGl0IGV4aXN0cy4g
IENvbXBsYWluIGFib3V0IGluYWNjZXNzaWJsZSBmaWxlcyBpZmYKICAgIFNJTEVOVCBpcyBmYWxz
ZS4gICovCiBzdGF0aWMgdm9pZAotaW5jbHVkZSAoaW50IGFyZ2MsIG1hY3JvX2FyZ3VtZW50cyAq
YXJndiwgYm9vbCBzaWxlbnQpCitpbmNsdWRlIChpbnQgYXJnYywgbWFjcm9fYXJndW1lbnRzICph
cmd2LCBib29sIHNpbGVudCwgaW50IHJlZl9mcm9tKQogewogICBjb25zdCBjYWxsX2luZm8gKm1l
ID0gYXJnX2luZm8gKGFyZ3YpOwogICBGSUxFICpmcDsKICAgY2hhciAqbmFtZTsKICAgY29uc3Qg
Y2hhciAqYXJnOwogICBzaXplX3QgbGVuOworICBib29sIGZhaWw7CgogICBpZiAoYmFkX2FyZ2Mg
KG1lLCBhcmdjLCAxLCAxKSkKICAgICByZXR1cm47CkBAIC0xNDkxLDEyICsxNDkyLDIxIEBAIGlu
Y2x1ZGUgKGludCBhcmdjLCBtYWNyb19hcmd1bWVudHMgKmFyZ3YsIGJvb2wgc2lsZW50KQogICBm
cCA9IG00X3BhdGhfc2VhcmNoIChhcmcsIGZhbHNlLCAmbmFtZSk7CiAgIGlmIChmcCA9PSBOVUxM
KQogICAgIHsKKyAgICAgIGZhaWwgPSAhc2lsZW50OworICAgICAgaWYgKG1ha2VkZXBfZ2VuX21p
c3NpbmcgJiByZWZfZnJvbSkKKyAgICAgICAgeworICAgICAgICAgIHJlY29yZF9kZXBlbmRlbmN5
IChhcmcsIHJlZl9mcm9tKTsKKyAgICAgICAgICBmYWlsID0gZmFsc2U7CisgICAgICAgIH0KICAg
ICAgIGlmICghc2lsZW50KQogICAgICAgICBtNF9lcnJvciAoMCwgZXJybm8sIG1lLCBfKCJjYW5u
b3Qgb3BlbiAlcyIpLAogICAgICAgICAgICAgICAgICAgcXVvdGVhcmdfc3R5bGUgKGxvY2FsZV9x
dW90aW5nX3N0eWxlLCBhcmcpKTsKKyAgICAgIGlmIChmYWlsKQorICAgICAgICByZXRjb2RlID0g
RVhJVF9GQUlMVVJFOwogICAgICAgcmV0dXJuOwogICAgIH0KCisgIHJlY29yZF9kZXBlbmRlbmN5
IChuYW1lLCByZWZfZnJvbSk7CiAgIHB1c2hfZmlsZSAoZnAsIG5hbWUsIHRydWUpOwogICBmcmVl
IChuYW1lKTsKIH0KQEAgLTE1MDUsNyArMTUxNSw3IEBAIGluY2x1ZGUgKGludCBhcmdjLCBtYWNy
b19hcmd1bWVudHMgKmFyZ3YsIGJvb2wgc2lsZW50KQogc3RhdGljIHZvaWQKIG00X2luY2x1ZGUg
KHN0cnVjdCBvYnN0YWNrICpvYnMgTUFZQkVfVU5VU0VELCBpbnQgYXJnYywgbWFjcm9fYXJndW1l
bnRzICphcmd2KQogewotICBpbmNsdWRlIChhcmdjLCBhcmd2LCBmYWxzZSk7CisgIGluY2x1ZGUg
KGFyZ2MsIGFyZ3YsIGZhbHNlLCBSRUZfSU5DTFVERSk7CiB9CgogLyogSW5jbHVkZSBhIGZpbGUs
IGlnbm9yaW5nIGVycm9ycy4gICovCkBAIC0xNTEzLDcgKzE1MjMsNyBAQCBzdGF0aWMgdm9pZAog
bTRfc2luY2x1ZGUgKHN0cnVjdCBvYnN0YWNrICpvYnMgTUFZQkVfVU5VU0VELCBpbnQgYXJnYywK
ICAgICAgICAgICAgICBtYWNyb19hcmd1bWVudHMgKmFyZ3YpCiB7Ci0gIGluY2x1ZGUgKGFyZ2Ms
IGFyZ3YsIHRydWUpOworICBpbmNsdWRlIChhcmdjLCBhcmd2LCB0cnVlLCBSRUZfU0lOQ0xVREUp
OwogfQogDAogLyogTW9yZSBtaXNjZWxsYW5lb3VzIGJ1aWx0aW5zIC0tICJtYWtldGVtcCIsICJl
cnJwcmludCIsICJfX2ZpbGVfXyIsCmRpZmYgLS1naXQgYS9zcmMvbTQuYyBiL3NyYy9tNC5jCmlu
ZGV4IDg5YTJlYzJmLi5hOTkzNWJmZCAxMDA2NDQKLS0tIGEvc3JjL200LmMKKysrIGIvc3JjL200
LmMKQEAgLTY1LDYgKzY1LDIxIEBAIGludCB3YXJuaW5nX3N0YXR1cyA9IDA7CiAvKiBBcnRpZmlj
aWFsIGxpbWl0IGZvciBleHBhbnNpb25fbGV2ZWwgaW4gbWFjcm8uYy4gICovCiBpbnQgbmVzdGlu
Z19saW1pdCA9IDEwMjQ7CgorLyogUGF0aG5hbWUgb2YgZGVwZW5kZW5jeSBmaWxlIGJlaW5nIG1h
ZGUgKC0tbWFrZWRlcD1QQVRIKS4gICovCitzdGF0aWMgY29uc3QgY2hhciAqbWFrZWRlcF9wYXRo
ID0gTlVMTDsKKworLyogVGFyZ2V0IGZvciBkZXBlbmRlbmN5IHJ1bGUgYmVpbmcgbWFkZSAoLS1t
YWtlZGVwLXRhcmdldD1UQVJHRVQpLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICptYWtlZGVwX3Rh
cmdldCA9IE5VTEw7CisKKy8qIEJpdG1hc2sgb2YgcGxhY2VzIHRoYXQgd2lsbCBhc3N1bWUgbm9u
LWV4aXN0ZW50IGZpbGVzIGFyZSBhY3R1YWxseQorICAgZ2VuZXJhdGVkLCBhbmQgc28gYSBkZXBl
bmRlbmN5IHNob3VsZCBiZSBsaXN0ZWQgcmVnYXJkbGVzcworICAgKC0tbWFrZWRlcC1nZW4tbWlz
c2luZy0qKS4gICovCitpbnQgbWFrZWRlcF9nZW5fbWlzc2luZyA9IFJFRl9OT05FOworCisvKiBC
aXRtYXNrIG9mIHdoaWNoIHBsYWNlcyBmaWxlcyBhcmUgcmVmZXJlbmNlZCBmcm9tIHRoYXQgd2ls
bCB0cmlnZ2VyCisgICBwaG9ueSBydWxlcyB0byBiZSBnZW5lcmF0ZWQgKC0tbWFrZWRlcC1waG9u
eS0qKS4gICovCitzdGF0aWMgaW50IG1ha2VkZXBfcGhvbnkgPSBSRUZfTk9ORTsKKwogLyogR2xv
YmFsIGNhdGNoYWxsIGZvciBhbnkgZXJyb3JzIHRoYXQgc2hvdWxkIGFmZmVjdCBmaW5hbCBlcnJv
ciBzdGF0dXMsIGJ1dAogICAgd2hlcmUgd2UgdHJ5IHRvIGNvbnRpbnVlIGV4ZWN1dGlvbiBpbiB0
aGUgbWVhbnRpbWUuICAqLwogaW50IHJldGNvZGU7CkBAIC0yODMsNiArMjk4LDM3IEBAIEZyb3pl
biBzdGF0ZSBmaWxlczpcblwKICIpLCBzdGRvdXQpOwogICAgICAgcHV0cyAoIiIpOwogICAgICAg
ZnB1dHMgKF8oIlwKK01ha2UgZGVwZW5kZW5jeSBnZW5lcmF0aW9uOlxuXAorICAgICAgLS1tYWtl
ZGVwPUZJTEUgICAgICAgICAgIHdyaXRlIG1ha2UgZGVwZW5kZW5jeSBydWxlKHMpIGludG8gRklM
RVxuXAorICAgICAgLS1tYWtlZGVwLXRhcmdldD1UQVJHRVQgIHNwZWNpZnkgdGFyZ2V0IG9mIGdl
bmVyYXRlZCBkZXBlbmRlbmN5IHJ1bGVcblwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRoZSAtLW1ha2VkZXAgYW5kIC0tbWFrZWRlcC10YXJnZXQgb3B0aW9uc1xuXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSB1c2VkIHRvZ2V0aGVyLCBlaXRoZXIg
Ym90aCBwcmVzZW50LFxuXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgbmVp
dGhlciBwcmVzZW50LlxuXAorICAgICAgLS1tYWtlZGVwLWdlbi1taXNzaW5nLWFyZ2ZpbGVzXG5c
CisgICAgICAtLW1ha2VkZXAtZ2VuLW1pc3NpbmctaW5jbHVkZVxuXAorICAgICAgLS1tYWtlZGVw
LWdlbi1taXNzaW5nLXNpbmNsdWRlXG5cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmlsZXMgdGhhdCBkbyBub3QgZXhpc3QgKG9uIGNvbW1hbmQgbGluZSxcblwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZpYSBpbmNsdWRlKCksIG9yIHZpYSBzaW5jbHVkZSgpLFxu
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcGVjdGl2ZWx5KSBhcmUgYXNz
dW1lZCB0byBiZSBnZW5lcmF0ZWRcblwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbGVzIGFuZCBiZWNvbWUgZGVwZW5kZW5jaWVzIHJlZ2FyZGxlc3MuXG5cCisgICAgICAtLW1h
a2VkZXAtZ2VuLW1pc3NpbmctYWxsXG5cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXF1aXZhbGVudCB0byAtLW1ha2VkZXAtZ2VuLW1pc3NpbmctYXJnZmlsZXNcblwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC0tbWFrZWRlcC1nZW4tbWlzc2luZy1pbmNsdWRlXG5c
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW1ha2VkZXAtZ2VuLW1pc3Npbmct
c2luY2x1ZGVcblwKKyAgICAgIC0tbWFrZWRlcC1waG9ueS1hcmdmaWxlc1xuXAorICAgICAgLS1t
YWtlZGVwLXBob255LWluY2x1ZGVcblwKKyAgICAgIC0tbWFrZWRlcC1waG9ueS1zaW5jbHVkZVxu
XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGEgXCJwaG9ueVwiIHRh
cmdldCBmb3IgZWFjaCBmaWxlXG5cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGF0IGlzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLCB0aGVcblwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3Qgb2YgYW4gaW5jbHVkZSgpIG1hY3JvLCBvciB0
aGVcblwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3Qgb2YgYW4gc2lu
Y2x1ZGUoKSBtYWNybyxcblwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Bl
Y3RpdmVseS5cblwKKyAgICAgIC0tbWFrZWRlcC1waG9ueS1hbGwgICAgICBlcXVpdmFsZW50IHRv
IC0tbWFrZWRlcC1waG9ueS1hcmdmaWxlc1xuXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLS1tYWtlZGVwLXBob255LWluY2x1ZGVcblwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC0tbWFrZWRlcC1waG9ueS1zaW5jbHVkZVxuXAorIiksIHN0ZG91dCk7CisgICAg
ICBwdXRzICgiIik7CisgICAgICBmcHV0cyAoXygiXAogRGVidWdnaW5nOlxuXAogICAtZCwgLS1k
ZWJ1Z1s9Wy18K11GTEFHU10sIC0tZGVidWdtb2RlWz1bLXwrXUZMQUdTXVxuXAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldCBkZWJ1ZyBsZXZlbCAobm8gRkxBR1MgaW1wbGllcyBg
K2FkZXEnKVxuXApAQCAtMzMyLDYgKzM3OCwxNiBAQCBtaXNtYXRjaCwgb3Igd2hhdGV2ZXIgdmFs
dWUgd2FzIHBhc3NlZCB0byB0aGUgbTRleGl0IG1hY3JvLlxuXAogZW51bQogewogICBERUJVR0ZJ
TEVfT1BUSU9OID0gQ0hBUl9NQVggKyAxLCAgICAgIC8qIG5vIHNob3J0IG9wdCAqLworICBNQUtF
REVQX09QVElPTiwgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vIHNob3J0IG9wdCAqLworICBN
QUtFREVQX1RBUkdFVF9PUFRJT04sICAgICAgICAgICAgICAgIC8qIG5vIHNob3J0IG9wdCAqLwor
ICBNQUtFREVQX0dFTl9NSVNTSU5HX0FSR0ZJTEVTX09QVElPTiwgIC8qIG5vIHNob3J0IG9wdCAq
LworICBNQUtFREVQX0dFTl9NSVNTSU5HX0lOQ0xVREVfT1BUSU9OLCAgIC8qIG5vIHNob3J0IG9w
dCAqLworICBNQUtFREVQX0dFTl9NSVNTSU5HX1NJTkNMVURFX09QVElPTiwgIC8qIG5vIHNob3J0
IG9wdCAqLworICBNQUtFREVQX0dFTl9NSVNTSU5HX0FMTF9PUFRJT04sICAgICAgIC8qIG5vIHNo
b3J0IG9wdCAqLworICBNQUtFREVQX1BIT05ZX0FSR0ZJTEVTX09QVElPTiwgICAgICAgIC8qIG5v
IHNob3J0IG9wdCAqLworICBNQUtFREVQX1BIT05ZX0lOQ0xVREVfT1BUSU9OLCAgICAgICAgIC8q
IG5vIHNob3J0IG9wdCAqLworICBNQUtFREVQX1BIT05ZX1NJTkNMVURFX09QVElPTiwgICAgICAg
IC8qIG5vIHNob3J0IG9wdCAqLworICBNQUtFREVQX1BIT05ZX0FMTF9PUFRJT04sICAgICAgICAg
ICAgIC8qIG5vIHNob3J0IG9wdCAqLwogICBXQVJOX01BQ1JPX1NFUVVFTkNFX09QVElPTiwgICAv
KiBubyBzaG9ydCBvcHQgKi8KCiAgIEhFTFBfT1BUSU9OLCAgICAgICAgICAgICAgICAgIC8qIG5v
IHNob3J0IG9wdCAqLwpAQCAtMzY1LDYgKzQyMSwyMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9w
dGlvbiBsb25nX29wdGlvbnNbXSA9IHsKICAgeyJ3YXJuLW1hY3JvLXNlcXVlbmNlIiwgb3B0aW9u
YWxfYXJndW1lbnQsIE5VTEwsCiAgICBXQVJOX01BQ1JPX1NFUVVFTkNFX09QVElPTn0sCgorICB7
Im1ha2VkZXAiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgTUFLRURFUF9PUFRJT059LAorICB7
Im1ha2VkZXAtdGFyZ2V0IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE1BS0VERVBfVEFSR0VU
X09QVElPTn0sCisgIHsibWFrZWRlcC1nZW4tbWlzc2luZy1hcmdmaWxlcyIsIG5vX2FyZ3VtZW50
LCBOVUxMLAorICAgICBNQUtFREVQX0dFTl9NSVNTSU5HX0FSR0ZJTEVTX09QVElPTn0sCisgIHsi
bWFrZWRlcC1nZW4tbWlzc2luZy1pbmNsdWRlIiwgbm9fYXJndW1lbnQsIE5VTEwsCisgICAgIE1B
S0VERVBfR0VOX01JU1NJTkdfSU5DTFVERV9PUFRJT059LAorICB7Im1ha2VkZXAtZ2VuLW1pc3Np
bmctc2luY2x1ZGUiLCBub19hcmd1bWVudCwgTlVMTCwKKyAgICAgTUFLRURFUF9HRU5fTUlTU0lO
R19TSU5DTFVERV9PUFRJT059LAorICB7Im1ha2VkZXAtZ2VuLW1pc3NpbmctYWxsIiwgbm9fYXJn
dW1lbnQsIE5VTEwsCisgICAgIE1BS0VERVBfR0VOX01JU1NJTkdfQUxMX09QVElPTn0sCisgIHsi
bWFrZWRlcC1waG9ueS1hcmdmaWxlcyIsIG5vX2FyZ3VtZW50LCBOVUxMLCBNQUtFREVQX1BIT05Z
X0FSR0ZJTEVTX09QVElPTn0sCisgIHsibWFrZWRlcC1waG9ueS1pbmNsdWRlIiwgbm9fYXJndW1l
bnQsIE5VTEwsIE1BS0VERVBfUEhPTllfSU5DTFVERV9PUFRJT059LAorICB7Im1ha2VkZXAtcGhv
bnktc2luY2x1ZGUiLCBub19hcmd1bWVudCwgTlVMTCwgTUFLRURFUF9QSE9OWV9TSU5DTFVERV9P
UFRJT059LAorICB7Im1ha2VkZXAtcGhvbnktYWxsIiwgbm9fYXJndW1lbnQsIE5VTEwsIE1BS0VE
RVBfUEhPTllfQUxMX09QVElPTn0sCisKICAgeyJoZWxwIiwgbm9fYXJndW1lbnQsIE5VTEwsIEhF
TFBfT1BUSU9OfSwKICAgeyJ2ZXJzaW9uIiwgbm9fYXJndW1lbnQsIE5VTEwsIFZFUlNJT05fT1BU
SU9OfSwKCkBAIC0zOTQsMTEgKzQ2NSwxNSBAQCBwcm9jZXNzX2ZpbGUgKGNvbnN0IGNoYXIgKm5h
bWUpCiAgICAgICAgIHsKICAgICAgICAgICBlcnJvciAoMCwgZXJybm8sIF8oImNhbm5vdCBvcGVu
ICVzIiksCiAgICAgICAgICAgICAgICAgIHF1b3RlYXJnX3N0eWxlIChsb2NhbGVfcXVvdGluZ19z
dHlsZSwgbmFtZSkpOwotICAgICAgICAgIC8qIFNldCB0aGUgc3RhdHVzIHRvIEVYSVRfRkFJTFVS
RSwgZXZlbiB0aG91Z2ggd2UKLSAgICAgICAgICAgICBjb250aW51ZSB0byBwcm9jZXNzIGZpbGVz
IGFmdGVyIGEgbWlzc2luZyBmaWxlLiAgKi8KLSAgICAgICAgICByZXRjb2RlID0gRVhJVF9GQUlM
VVJFOworICAgICAgICAgIGlmICgobWFrZWRlcF9nZW5fbWlzc2luZyAmIFJFRl9DTURfTElORSkg
IT0gMCkKKyAgICAgICAgICAgIHJlY29yZF9kZXBlbmRlbmN5IChuYW1lLCBSRUZfQ01EX0xJTkUp
OworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIC8qIFNldCB0aGUgc3RhdHVzIHRvIEVYSVRf
RkFJTFVSRSwgZXZlbiB0aG91Z2ggd2UKKyAgICAgICAgICAgICAgIGNvbnRpbnVlIHRvIHByb2Nl
c3MgZmlsZXMgYWZ0ZXIgYSBtaXNzaW5nIGZpbGUuICAqLworICAgICAgICAgICAgcmV0Y29kZSA9
IEVYSVRfRkFJTFVSRTsKICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgIHJlY29y
ZF9kZXBlbmRlbmN5IChmdWxsX25hbWUsIFJFRl9DTURfTElORSk7CiAgICAgICBwdXNoX2ZpbGUg
KGZwLCBmdWxsX25hbWUsIHRydWUpOwogICAgICAgZnJlZSAoZnVsbF9uYW1lKTsKICAgICB9CkBA
IC02NDIsNiArNzE3LDUwIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndiwgY2hh
ciAqY29uc3QgKmVudnAgTUFZQkVfVU5VU0VEKQogICAgICAgICBtYWNyb19zZXF1ZW5jZSA9IG9w
dGFyZzsKICAgICAgICAgYnJlYWs7CgorICAgICAgY2FzZSBNQUtFREVQX09QVElPTjoKKyAgICAg
ICAgaWYgKG1ha2VkZXBfcGF0aCAhPSBOVUxMKQorICAgICAgICAgIHVzYWdlIChFWElUX0ZBSUxV
UkUpOworICAgICAgICBtYWtlZGVwX3BhdGggPSBvcHRhcmc7CisgICAgICAgIGJyZWFrOworCisg
ICAgICBjYXNlIE1BS0VERVBfVEFSR0VUX09QVElPTjoKKyAgICAgICAgaWYgKG1ha2VkZXBfdGFy
Z2V0ICE9IE5VTEwpCisgICAgICAgICAgdXNhZ2UgKEVYSVRfRkFJTFVSRSk7CisgICAgICAgIG1h
a2VkZXBfdGFyZ2V0ID0gb3B0YXJnOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBNQUtF
REVQX0dFTl9NSVNTSU5HX0FSR0ZJTEVTX09QVElPTjoKKyAgICAgICAgbWFrZWRlcF9nZW5fbWlz
c2luZyB8PSBSRUZfQ01EX0xJTkU7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIE1BS0VE
RVBfR0VOX01JU1NJTkdfSU5DTFVERV9PUFRJT046CisgICAgICAgIG1ha2VkZXBfZ2VuX21pc3Np
bmcgfD0gUkVGX0lOQ0xVREU7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIE1BS0VERVBf
R0VOX01JU1NJTkdfU0lOQ0xVREVfT1BUSU9OOgorICAgICAgICBtYWtlZGVwX2dlbl9taXNzaW5n
IHw9IFJFRl9TSU5DTFVERTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgTUFLRURFUF9H
RU5fTUlTU0lOR19BTExfT1BUSU9OOgorICAgICAgICBtYWtlZGVwX2dlbl9taXNzaW5nIHw9IFJF
Rl9BTEw7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIE1BS0VERVBfUEhPTllfQVJHRklM
RVNfT1BUSU9OOgorICAgICAgICBtYWtlZGVwX3Bob255IHw9IFJFRl9DTURfTElORTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICAgIGNhc2UgTUFLRURFUF9QSE9OWV9JTkNMVURFX09QVElPTjoKKyAg
ICAgICAgbWFrZWRlcF9waG9ueSB8PSBSRUZfSU5DTFVERTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICAgIGNhc2UgTUFLRURFUF9QSE9OWV9TSU5DTFVERV9PUFRJT046CisgICAgICAgIG1ha2VkZXBf
cGhvbnkgfD0gUkVGX1NJTkNMVURFOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBNQUtF
REVQX1BIT05ZX0FMTF9PUFRJT046CisgICAgICAgIG1ha2VkZXBfcGhvbnkgfD0gUkVGX0FMTDsK
KyAgICAgICAgYnJlYWs7CisKICAgICAgIGNhc2UgVkVSU0lPTl9PUFRJT046CiAgICAgICAgIHZl
cnNpb25fZXRjIChzdGRvdXQsIFBBQ0tBR0UsIFBBQ0tBR0VfTkFNRSwgVkVSU0lPTiwgQVVUSE9S
UywgTlVMTCk7CiAgICAgICAgIGV4aXQgKEVYSVRfU1VDQ0VTUyk7CkBAIC02NTksNiArNzc4LDIz
IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndiwgY2hhciAqY29uc3QgKmVudnAg
TUFZQkVfVU5VU0VEKQogICAgIG00X2Vycm9yICgwLCBlcnJubywgTlVMTCwgXygiY2Fubm90IHNl
dCBkZWJ1ZyBmaWxlICVzIiksCiAgICAgICAgICAgICAgIHF1b3RlYXJnX3N0eWxlIChsb2NhbGVf
cXVvdGluZ19zdHlsZSwgZGVidWdmaWxlKSk7CgorICAvKiBWZXJpZnkgbXV0dWFsIGNvbnNpc3Rl
bmN5IG9mIG1ha2VkZXAgb3B0aW9ucy4gKi8KKyAgaWYgKCFtYWtlZGVwX3BhdGggJiYgIW1ha2Vk
ZXBfdGFyZ2V0KQorICAgIHsKKyAgICAgIC8qIE1ha2VkZXAgbW9kZSBpcyBOT1QgYWN0aXZlLiAq
LworICAgICAgaWYgKG1ha2VkZXBfZ2VuX21pc3NpbmcgIT0gMCkKKyAgICAgICAgbTRfZXJyb3Ig
KEVYSVRfRkFJTFVSRSwgMCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgIF8oIm9wdGlvbiAlcyBy
ZXF1aXJlcyAtLW1ha2VkZXAgYW5kIC0tbWFrZWRlcC10YXJnZXQiKSwKKyAgICAgICAgICAgICAg
ICAgICItLW1ha2VkZXAtZ2VuLW1pc3NpbmctKiIpOworICAgICAgaWYgKG1ha2VkZXBfcGhvbnkg
IT0gMCkKKyAgICAgICAgbTRfZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgTlVMTCwKKyAgICAgICAg
ICAgICAgICAgIF8oIm9wdGlvbiAlcyByZXF1aXJlcyAtLW1ha2VkZXAgYW5kIC0tbWFrZWRlcC10
YXJnZXQiKSwKKyAgICAgICAgICAgICAgICAgICItLW1ha2VkZXAtcGhvbnktKiIpOworICAgIH0K
KyAgZWxzZSBpZiAoIW1ha2VkZXBfcGF0aCAhPSAhbWFrZWRlcF90YXJnZXQpCisgICAgbTRfZXJy
b3IgKEVYSVRfRkFJTFVSRSwgMCwgTlVMTCwKKyAgICAgICAgICAgICAgXygiLS1tYWtlZGVwIGFu
ZCAtLW1ha2VkZXAtdGFyZ2V0IGNhbm5vdCBiZSB1c2VkIGluZGVwZW5kZW50bHkiKSk7CisKICAg
aW5wdXRfaW5pdCAoKTsKICAgb3V0cHV0X2luaXQgKCk7CiAgIHN5bXRhYl9pbml0IChoYXNoX3Rh
YmxlX3NpemUpOwpAQCAtNzY5LDYgKzkwNSw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICpjb25z
dCAqYXJndiwgY2hhciAqY29uc3QgKmVudnAgTUFZQkVfVU5VU0VEKQogICAgICAgdW5kaXZlcnRf
YWxsICgpOwogICAgIH0KICAgb3V0cHV0X2V4aXQgKCk7CisgIGlmIChtYWtlZGVwX3BhdGgpCisg
ICAgZ2VuZXJhdGVfbWFrZV9kZXBlbmRlbmNpZXMgKG1ha2VkZXBfcGF0aCwgbWFrZWRlcF90YXJn
ZXQsIG1ha2VkZXBfcGhvbnkpOwogI2lmbmRlZiBOREVCVUcKICAgLyogT25seSBzcGVuZCB0aW1l
IGZyZWVpbmcgbWVtb3J5IHRvIGhlbHAgaXNvbGF0ZSBsZWFrczsgaWYKICAgICAgYXNzZXJ0aW9u
cyBhcmUgZGlzYWJsZWQsIHNhdmUgdGhlIHRpbWUgYW5kIGV4aXQgbm93LiAgKi8KZGlmZiAtLWdp
dCBhL3NyYy9tNC5oIGIvc3JjL200LmgKaW5kZXggZmEyY2RmNjUuLmNhZDhlZjVhIDEwMDY0NAot
LS0gYS9zcmMvbTQuaAorKysgYi9zcmMvbTQuaApAQCAtMTM4LDYgKzEzOCwxNCBAQCBleHRlcm4g
c2l6ZV90IG1heF9kZWJ1Z19hcmd1bWVudF9sZW5ndGg7ICAgICAgICAvKiAtbCAqLwogZXh0ZXJu
IGludCBzdXBwcmVzc193YXJuaW5nczsgICAvKiAtUSAqLwogZXh0ZXJuIGludCB3YXJuaW5nX3N0
YXR1czsgICAgICAvKiAtRSAqLwogZXh0ZXJuIGludCBuZXN0aW5nX2xpbWl0OyAgICAgICAvKiAt
TCAqLworZXh0ZXJuIGludCBtYWtlZGVwX2dlbl9taXNzaW5nOyAvKiAtLW1ha2VkZXAtZ2VuLW1p
c3NpbmctKiAqLworCisvKiBCaXQgbWFza3MgaW5kaWNhdGluZyBwbGFjZXMgYSBmaWxlIGlzIHJl
ZmVyZW5jZWQgZnJvbS4gKi8KKyNkZWZpbmUgUkVGX0NNRF9MSU5FICAgIDB4MDEgICAgLyogRmls
ZSByZWZlcmVuY2VkIGZyb20gY29tbWFuZCBsaW5lICovCisjZGVmaW5lIFJFRl9JTkNMVURFICAg
ICAweDAyICAgIC8qIEZpbGUgcmVmZXJlbmNlZCBmcm9tIG00X2luY2x1ZGUoKSAqLworI2RlZmlu
ZSBSRUZfU0lOQ0xVREUgICAgMHgwNCAgICAvKiBGaWxlIHJlZmVyZW5jZWQgZnJvbSBtNF9zaW5j
bHVkZSgpICovCisjZGVmaW5lIFJFRl9BTEwgICAgICAgICAweDA3ICAgIC8qIEFsbCBvZiB0aGUg
YWJvdmUgKi8KKyNkZWZpbmUgUkVGX05PTkUgICAgICAgIDB4MDAgICAgLyogTm9uZSBvZiB0aGUg
YWJvdmUgKi8KCiAvKiBFcnJvciBoYW5kbGluZy4gICovCgpAQCAtNTQzLDYgKzU1MSw4IEBAIGV4
dGVybiB2b2lkIGluY2x1ZGVfaW5pdCAodm9pZCk7CiBleHRlcm4gdm9pZCBpbmNsdWRlX2Vudl9p
bml0ICh2b2lkKTsKIGV4dGVybiB2b2lkIGFkZF9pbmNsdWRlX2RpcmVjdG9yeSAoY29uc3QgY2hh
ciAqKTsKIGV4dGVybiBGSUxFICptNF9wYXRoX3NlYXJjaCAoY29uc3QgY2hhciAqLCBib29sLCBj
aGFyICoqKTsKK2V4dGVybiB2b2lkIHJlY29yZF9kZXBlbmRlbmN5IChjb25zdCBjaGFyICosIGlu
dCk7CitleHRlcm4gdm9pZCBnZW5lcmF0ZV9tYWtlX2RlcGVuZGVuY2llcyAoY29uc3QgY2hhciAq
LCBjb25zdCBjaGFyICosIGludCk7CiAMCiAvKiBGaWxlOiBldmFsLmMgIC0tLSBleHByZXNzaW9u
IGV2YWx1YXRpb24uICAqLwoKZGlmZiAtLWdpdCBhL3NyYy9wYXRoLmMgYi9zcmMvcGF0aC5jCmlu
ZGV4IDFjOTk5M2Q2Li5mYTk3ZDhmNiAxMDA2NDQKLS0tIGEvc3JjL3BhdGguYworKysgYi9zcmMv
cGF0aC5jCkBAIC0zNiw2ICszNiwxOCBAQCB0eXBlZGVmIHN0cnVjdCBpbmNsdWRlcyBpbmNsdWRl
czsKIHN0YXRpYyBpbmNsdWRlcyAqZGlyX2xpc3Q7ICAgICAgLyogdGhlIGxpc3Qgb2YgcGF0aCBk
aXJlY3RvcmllcyAqLwogc3RhdGljIGluY2x1ZGVzICpkaXJfbGlzdF9lbmQ7ICAvKiB0aGUgZW5k
IG9mIHNhbWUgKi8KIHN0YXRpYyBpbnQgZGlyX21heF9sZW5ndGg7ICAgICAgLyogbGVuZ3RoIG9m
IGxvbmdlc3QgZGlyZWN0b3J5IG5hbWUgKi8KKworc3RydWN0IGRlcGVuZGVuY3kKK3sKKyAgc3Ry
dWN0IGRlcGVuZGVuY3kgKm5leHQ7ICAgICAgLyogbmV4dCBpbiBsaXN0IG9mIGRlcGVuZGVuY2ll
cyAqLworICBpbnQgcmVmX2Zyb207ICAgICAgICAgICAgICAgICAvKiBiaXQgbWFzazogcGxhY2Vz
IGZpbGUgcmVmZXJlbmNlZCBmcm9tICovCisgIGNoYXIgcGF0aCBbMV07ICAgICAgICAgICAgICAg
IC8qIHBhdGhuYW1lIG9mIHRoaXMgZGVwZW5kZW5jeSAqLworfTsKKwordHlwZWRlZiBzdHJ1Y3Qg
ZGVwZW5kZW5jeSBkZXBlbmRlbmN5OworCitzdGF0aWMgZGVwZW5kZW5jeSAqZGVwZW5kZW5jeV9s
aXN0OyAgICAgLyogdGhlIGxpc3Qgb2YgZGVwZW5kZW5jaWVzICovCitzdGF0aWMgZGVwZW5kZW5j
eSAqZGVwZW5kZW5jeV9saXN0X2VuZDsgLyogdGhlIGVuZCBvZiBzYW1lICovCiAMCgogdm9pZApA
QCAtMTk0LDYgKzIwNiw3NCBAQCBtNF9wYXRoX3NlYXJjaCAoY29uc3QgY2hhciAqZmlsZSwgYm9v
bCBiaW5hcnksIGNoYXIgKipyZXN1bHQpCiAgIHJldHVybiBmcDsKIH0KCit2b2lkCityZWNvcmRf
ZGVwZW5kZW5jeSAoY29uc3QgY2hhciAqIHBhdGgsIGludCByZWZfZnJvbSkKK3sKKyAgZGVwZW5k
ZW5jeSAqZHA7CisgIHNpemVfdCBsZW4sIG5ieXRlczsKKyAgZm9yIChkcCA9IGRlcGVuZGVuY3lf
bGlzdDsgZHAgIT0gTlVMTDsgZHAgPSBkcC0+bmV4dCkKKyAgICBpZiAoc3RyY21wIChwYXRoLCBk
cC0+cGF0aCkgPT0gMCkKKyAgICAgIHsKKyAgICAgICAgLyogUmVtZW1iZXIgYWxsIHRoZSBwbGFj
ZXMgdGhpcyBmaWxlIGhhcyBiZWVuIHJlZmVyZW5jZWQgZnJvbS4gKi8KKyAgICAgICAgZHAtPnJl
Zl9mcm9tIHw9IHJlZl9mcm9tOworICAgICAgICByZXR1cm47CisgICAgICB9CisKKyAgbGVuID0g
c3RybGVuIChwYXRoKTsKKyAgbmJ5dGVzID0gb2Zmc2V0b2YoZGVwZW5kZW5jeSwgcGF0aFswXSkg
KyBsZW4gKyAxOworICBkcCA9IHhtYWxsb2MgKG5ieXRlcyk7CisgIGRwLT5uZXh0ID0gTlVMTDsK
KyAgZHAtPnJlZl9mcm9tID0gcmVmX2Zyb207CisgIHN0cmNweSAoZHAtPnBhdGgsIHBhdGgpOwor
CisgIGlmIChkZXBlbmRlbmN5X2xpc3RfZW5kID09IE5VTEwpCisgICAgZGVwZW5kZW5jeV9saXN0
ID0gZHA7CisgIGVsc2UKKyAgICBkZXBlbmRlbmN5X2xpc3RfZW5kLT5uZXh0ID0gZHA7CisgIGRl
cGVuZGVuY3lfbGlzdF9lbmQgPSBkcDsKK30KKwordm9pZAorZ2VuZXJhdGVfbWFrZV9kZXBlbmRl
bmNpZXMgKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKnRhcmdldCwgaW50IHBob255KQor
eworICBGSUxFICpmcDsKKyAgaW50IGNvbCwgbGVuLCBtYXhjb2w7CisgIGRlcGVuZGVuY3kgKmRw
OworCisgIGZwID0gZm9wZW4gKHBhdGgsICJ3Iik7CisgIGlmICghZnApCisgICAgeworICAgICAg
bTRfZXJyb3IgKDAsIGVycm5vLCBOVUxMLCAidW5hYmxlIHRvIG9wZW4gJXMiLAorICAgICAgICAg
ICAgICAgIHF1b3RlYXJnX3N0eWxlX21lbSAobG9jYWxlX3F1b3Rpbmdfc3R5bGUsIHBhdGgsIHN0
cmxlbiAocGF0aCkpKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgLyogR2VuZXJhdGUgdGhl
IG1haW4gZGVwZW5kZW5jeSBydWxlLiAqLworICBtYXhjb2wgPSA3ODsKKyAgZnByaW50ZiAoZnAs
ICIlczoiLCB0YXJnZXQpOworICBjb2wgPSBzdHJsZW4gKHRhcmdldCkgKyAxOworICBmb3IgKGRw
ID0gZGVwZW5kZW5jeV9saXN0OyBkcCAhPSBOVUxMOyBkcCA9IGRwLT5uZXh0KQorICAgIHsKKyAg
ICAgIGxlbiA9IDEgKyBzdHJsZW4gKGRwLT5wYXRoKTsKKyAgICAgIGlmIChjb2wgKyBsZW4gKyAy
ID4gbWF4Y29sKSAvKiArMiBpcyBmb3IgdHJhaWxpbmcgc3BhY2UvYmFja3NsYXNoICovCisgICAg
ICAgIHsKKyAgICAgICAgICBmcHJpbnRmIChmcCwiIFxcXG4gIik7CisgICAgICAgICAgY29sID0g
MTsKKyAgICAgICAgfQorICAgICAgZnByaW50ZiAoZnAsICIgJXMiLCBkcC0+cGF0aCk7CisgICAg
ICBjb2wgKz0gbGVuOworICAgIH0KKyAgZnB1dHMgKCJcbiIsIGZwKTsKKworICAvKiBHZW5lcmF0
ZSBwaG9ueSB0YXJnZXRzIGZvciB1c2VyLXNwZWNpZmllZCBzdWJzZXQgb2YgZGVwZW5kZW5jaWVz
LiAqLworICBpZiAocGhvbnkgIT0gMCkKKyAgICBmb3IgKGRwID0gZGVwZW5kZW5jeV9saXN0OyBk
cCAhPSBOVUxMOyBkcCA9IGRwLT5uZXh0KQorICAgICAgaWYgKChkcC0+cmVmX2Zyb20gJiBwaG9u
eSkgIT0gMCkKKyAgICAgICAgZnByaW50ZiAoZnAsICJcbiVzOlxuIiwgZHAtPnBhdGgpOworCisg
IGZjbG9zZSAoZnApOworfQorCiAjaWZkZWYgREVCVUdfSU5DTAoKIHN0YXRpYyB2b2lkIE1BWUJF
X1VOVVNFRAoKYmFzZS1jb21taXQ6IGVlN2Q5YjdiODU2MzYxMDk1NmQyZTQ3YzAxYzRjYmY0ZDZm
OGI3YjAKLS0gCjIuNDkuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk00LXBhdGNoZXMgbWFpbGluZyBsaXN0Ck00LXBhdGNoZXNAZ251Lm9yZwpodHRw
czovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9saXN0aW5mby9tNC1wYXRjaGVzCg==