Re: A 'makedep' feature for m4.

Eric Blake via M4-patches <[email protected]> Sat, 12 Apr 2025 21:07:49 -0500
Newsgroups gmane.comp.gnu.m4.patches
Message-ID <v7vqivgoelcvqmkvxzktr3cchiolykscv333rm2yluxoc2gxc3@tw6iqvvakfak>
T24gV2VkLCBBcHIgMDksIDIwMjUgYXQgMTA6MDM6MDZQTSAtMDQwMCwgRGF2aWQgTS4gV2FybWUg
d3JvdGU6Cj4gUmUtc3VibWl0dGluZyB0aGlzIHBhdGNoIGZvciBhbiBtNCAnbWFrZWRlcCcgZmVh
dHVyZS4KPiAKPiBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIGJyYW5jaC0xLjQgYXMgb2YgdG9kYXku
CgpUaGFuayB5b3UgZm9yIHByb3ZpZGluZyB0aGF0IHVwZGF0ZS4gSSdtIGxlYW5pbmcgdG93YXJk
cyBhcHBseWluZyBpdAp0byAxLjYgcmF0aGVyIHRoYW4gMS40LCBidXQgd2UnbGwgc2VlIGhvdyB0
aGluZ3MgZ28uICBJJ20gdHJ5aW5nIHRvCmdldCBiZXRhIDEuNC4xOWIgb3V0IHRoZSBkb29yIHRo
aXMgd2Vla2VuZCB0byBtYWtlIHN1cmUgSSBkaWRuJ3QgYnJlYWsKYnVpbGRzIG9uIGFueSBwbGF0
Zm9ybXMsIHRoZW4gZm9sbG93IHRoYXQgc2hvcnRseSBieSBzdGFibGUgMS40LjIwOwphbmQgaW4g
cGFyYWxsZWwgcHV0IG91dCBiZXRhIDEuNS45MCB3aXRoIHlvdXIgcGF0Y2ggaW5jbHVkZWQgYXMg
YQpwcmV2aWV3IG9mIHdoYXQgSSBob3BlIHdpbGwgYmUgMS42IHNvb24gKEkgc3BlbnQgZXZlbmlu
Z3MgdGhpcyB3ZWVrCmdldHRpbmcgb3ZlciAxMDAgcGF0Y2hlcyBmcm9tIDEuNC54IGZvcndhcmQg
cG9ydGVkIG9uIHRvcCBvZiB0aGUgbGFzdAoxLjUuODlhIHJlbGVhc2Ugb24gYnJhbmNoLTEuNiku
ICBCdXQgYSBsb3Qgb2YgdGhhdCBkZXBlbmRzIG9uIGhvdyBtdWNoCmFkZGl0aW9uYWwgZnJlZSB0
aW1lIEkgY2FuIG1ha2Ugb24gdGhlIG5leHQgZmV3IHdlZWtlbmRzLi4uCgpBZGRpdGlvbmFsIHJl
dmlldyBjb21tZW50cyBiZWxvdy4uLgoKPiAKPiBEYXZpZAo+IAo+IAo+ICBDaGFuZ2VMb2ctMjAx
NCB8ICAxNCArKysrKysKPiAgTkVXUyAgICAgICAgICAgfCAgIDIgKwo+ICBUSEFOS1MgICAgICAg
ICB8ICAgMiArCj4gIGRvYy9tNC50ZXhpICAgIHwgMTE2ICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysKPiAgc3JjL2J1aWx0aW4uYyAgfCAgMTkgKysrKy0tLQo+ICBz
cmMvbTQuYyAgICAgICB8IDE1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrLS0KPiAgc3JjL200LmggICAgICAgfCAgMTUgKysrKystCj4gIHNy
Yy9wYXRoLmMgICAgIHwgIDc5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDggZmls
ZXMgY2hhbmdlZCwgMzkwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQouLi4KPiArKysg
Yi9kb2MvbTQudGV4aQo+IEBAIC0xNjEsNiArMTYxLDcgQEAKPiAgKiBQcmVwcm9jZXNzb3IgZmVh
dHVyZXM6OiAgICAgICBDb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgcHJlcHJvY2Vzc29yIGZlYXR1
cmVzCj4gICogTGltaXRzIGNvbnRyb2w6OiAgICAgICAgICAgICAgQ29tbWFuZCBsaW5lIG9wdGlv
bnMgZm9yIGxpbWl0cyBjb250cm9sCj4gICogRnJvemVuIHN0YXRlOjogICAgICAgICAgICAgICAg
Q29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIGZyb3plbiBzdGF0ZQo+ICsqIE1ha2UgZGVwZW5kZW5j
eSBnZW5lcmF0aW9uOjogIEdlbmVyYXRpbmcgbWFrZSBkZXBlbmNlbmN5IHJ1bGVzCgpUaGlzIGZl
ZWxzIGxpa2UgaXQgbWlnaHQgYmVsb25nIGNsb3NlciB0byB0aGUgUHJlcHJvY2Vzc29yIGZlYXR1
cmVzCnNlY3Rpb24gb2YgdGhlIG1hbnVhbCAoc2luY2UgaXQgaXMgbGlrZSBzeW5jbGluZXMsIF9f
bGluZV9fLCBhbmQKX19maWxlKS4KCj4gQEAgLTg2NCw2ICs4NjYsMTIwIEBACj4gIGZpbGVzIGFy
ZSByZWFkLgo+ICBAZW5kIHRhYmxlCj4gK0Bub2RlIE1ha2UgZGVwZW5kZW5jeSBnZW5lcmF0aW9u
Cj4gK0BzZWN0aW9uIENvbW1hbmQgbGluZSBvcHRpb25zIGZvciBnZW5lcmF0aW5nIE1ha2VmaWxl
IGRlcGVuZGVuY3kgcnVsZXMKPiArCj4gK01ha2VmaWxlIGRlcGVuZGVuY3kgcnVsZXMgY2FuIGJl
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHNwZWNpZnlpbmcKPiArYm90aCB0aGUgQGNvZGV7
LS1tYWtlZGVwPX1AdmFye2ZpbGV9IGFuZAo+ICtAY29kZXstLW1ha2VkZXAtdGFyZ2V0PX1AdmFy
e3RhcmdldH0gb3B0aW9ucy4KPiArCj4gK0B0YWJsZSBAY29kZQo+ICtAaXRlbSAtLW1ha2VkZXA9
QHZhcntmaWxlfQo+ICtDYXVzZXMgQGNvZGV7bTR9IHRvIGdlbmVyYXRlIGEgZGVwZW5kZW5jeSBy
dWxlIGludG8gdGhlIHNwZWNpZmllZAo+ICtAdmFye2ZpbGV9LiAgTWFjcm8gZXhwYW5zaW9uIG91
dHB1dCBpcyBzdGlsbCB3cml0dGVuIHRvIHN0ZG91dCBhcwo+ICtub3JtYWwuICBUaGlzIG9wdGlv
biBpcyBhbmFsb2dvdXMgdG8gdGhlIEBjb2Rley1NRn0gb3B0aW9uIG9mCj4gK0Bjb2Rle2djY30u
Cj4gKwo+ICtAaXRlbSAtLW1ha2VkZXAtdGFyZ2V0PUB2YXJ7dGFyZ2V0fQo+ICtTcGVjaWZpZXMg
QHZhcnt0YXJnZXR9IHRvIGJlIHRoZSB0YXJnZXQgb2YgdGhlIGdlbmVyYXRlZCBkZXBlbmRlbmN5
Cj4gK3J1bGUuICBUaGUgc3RyaW5nIEB2YXJ7dGFyZ2V0fSBpcyB1c2VkIHZlcmJhdGltLCBhbmQg
Y2FuIGNvbnRhaW4gc2V2ZXJhbAo+ICtsb2dpY2FsIHRhcmdldHMgc2VwYXJhdGVkIGJ5IHNwYWNl
cy4gIEl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8KPiArcHJvcGVybHkgZXhwcmVz
cyBjaGFyYWN0ZXJzIHRoYXQgQGNvZGV7bWFrZX0gaGFuZGxlcyBzcGVjaWFsbHkgKHN1Y2ggYXMK
PiArJ0Bjb2RleyR9Jywgb3Igc3BhY2VzIHdpdGhpbiBmaWxlIG5hbWVzKS4gIFNpbmNlIEBjb2Rl
e200fSBzZW5kcyBpdHMKPiArbWFjcm8gZXhwYW5zaW9uIG91dHB1dCB0byBzdGRvdXQsIGl0IG5l
dmVyIHJlYWxseSBrbm93cyB0aGUgbmFtZSBvZiB0aGUKPiArdGFyZ2V0IGZpbGUgYmVpbmcgZ2Vu
ZXJhdGVkLCBzbyB0aGUgdGFyZ2V0IG11c3QgYWx3YXlzIGJlIHNwZWNpZmllZAo+ICtleHBsaWNp
dGx5IGJ5IHRoZSB1c2VyIHdpdGggdGhpcyBvcHRpb24uICBUaGlzIG9wdGlvbiBpcyBhbmFsb2dv
dXMgdG8KPiArdGhlIEBjb2Rley1NVH0gb3B0aW9uIG9mIEBjb2Rle2djY30gKGV4Y2VwdCB0aGF0
IEBjb2Rle2djY30gYWxsb3dzCj4gK0Bjb2Rley1NVH0gdG8gYmUgc3BlY2lmaWVkIG11bHRpcGxl
IHRpbWVzKS4KPiArQGVuZCB0YWJsZQo+ICsKPiArTm90ZSB0aGF0IHRoZSBAY29kZXstLW1ha2Vk
ZXA9fUB2YXJ7ZmlsZX0gYW5kCj4gK0Bjb2Rle21ha2VkZXAtdGFyZ2V0PX1AdmFye3RhcmdldH0g
b3B0aW9ucyBtdXN0IGVpdGhlciAoYSkgYm90aCBiZQo+ICtzcGVjaWZpZWQsIG9yIChiKSBuZWl0
aGVyIGJlIHNwZWNpZmllZC4gIFRoZXkgY2Fubm90IGJlIHVzZWQKPiAraW5kZXBlbmRlbnRseSBv
ZiBlYWNoIG90aGVyLgo+ICsKPiArVGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnMgY2Fu
IGFsc28gYmUgdXNlZCB3aGVuIGRlcGVuZGVuY3kgcnVsZXMKPiArYXJlIGJlaW5nIGdlbmVyYXRl
ZCAodGhlc2Ugb3B0aW9ucyBhcmUgb25seSB2YWxpZCB3aGVuIGJvdGgKPiArQGNvZGV7bWFrZWRl
cD19QHZhcntmaWxlfSBhbmQgQGNvZGV7bWFrZWRlcC10YXJnZXQ9fUB2YXJ7dGFyZ2V0fSBoYXZl
Cj4gK2Fsc28gYmVlbiBzcGVjaWZpZWQpOgo+ICsKPiArQHRhYmxlIEBjb2RlCj4gK0BpdGVtIC0t
bWFrZWRlcC1nZW4tbWlzc2luZy1hcmdmaWxlcwo+ICtDYXVzZXMgQGNvZGV7bTR9IHRvIGFzc3Vt
ZSB0aGF0IGFueSBmaWxlIGxpc3RlZCBvbiB0aGUgY29tbWFuZCBsaW5lIHRoYXQKPiAraXMgbWlz
c2luZyAoaS5lLiwgZG9lcyBub3QgZXhpc3QpIGlzIGFuIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk
IGZpbGUuCj4gK0Bjb2Rle000fSBpbmNsdWRlcyBzdWNoIG1pc3NpbmcgZmlsZXMgYXMgZGVwZW5k
ZW5jaWVzIGluIHRoZSBnZW5lcmF0ZWQKPiArcnVsZSByZWdhcmRsZXNzLiAgSW4gdGhpcyBjYXNl
IHRoZSBkZXBlbmRlbmN5IGFwcGVhcnMgZXhhY3RseSBhcwo+ICtzcGVjaWZpZWQgb24gdGhlIGNv
bW1hbmQgbGluZSBhbmQgaXMgbm90IG1vZGlmaWVkIGJ5IGFueQo+ICtAY29kZXstSX1AdmFye3Nl
YXJjaGRpcn0gcHJlZml4ZXMuICBOb3RlIHRoYXQgdGhlIG1hY3JvIGV4cGFuc2lvbiBvdXRwdXQK
PiArZ2VuZXJhdGVkIHRvIHN0ZG91dCB3aWxsIGJlIGluY29ycmVjdCB3aGVuIHRoaXMgaGFwcGVu
cyBiZWNhdXNlIHRoZQo+ICttaXNzaW5nIGZpbGUgaXMgYXNzdW1lZCB0byBiZSBhbiBlbXB0eSBm
aWxlLiAgQSB3YXJuaW5nIGlzIHByb2R1Y2VkIG9uCj4gK3N0ZGVyciBmb3IgZWFjaCBtaXNzaW5n
IGNvbW1hbmQgbGluZSBmaWxlIGhhbmRsZWQgaW4gdGhpcyBtYW5uZXIuCj4gKwo+ICtAaXRlbSAt
LW1ha2VkZXAtZ2VuLW1pc3NpbmctaW5jbHVkZQo+ICtDYXVzZXMgQGNvZGV7bTR9IHRvIGFzc3Vt
ZSB0aGF0IGFueSBmaWxlIGluY2x1ZGVkIHZpYSB0aGUKPiArQGNvZGV7aW5jbHVkZSgpfSBtYWNy
byB0aGF0IGlzIG1pc3NpbmcgKGkuZS4sIGRvZXMgbm90IGV4aXN0KSBpcyBhbgo+ICthdXRvbWF0
aWNhbGx5IGdlbmVyYXRlZCBmaWxlLiAgQGNvZGV7TTR9IGluY2x1ZGVzIHN1Y2ggbWlzc2luZyBm
aWxlcyBhcwo+ICtkZXBlbmRlbmNpZXMgaW4gdGhlIGdlbmVyYXRlZCBydWxlIHJlZ2FyZGxlc3Mu
ICBJbiB0aGlzIGNhc2UgdGhlCj4gK2RlcGVuZGVuY3kgYXBwZWFycyBleGFjdGx5IGFzIHNwZWNp
ZmllZCBpbiB0aGUgYXJndW1lbnQgdG8KPiArQGNvZGV7aW5jbHVkZSgpfSBhbmQgaXMgbm90IG1v
ZGlmaWVkIGJ5IGFueSBAY29kZXstSX1AdmFye3NlYXJjaGRpcn0KPiArcHJlZml4ZXMuICBOb3Rl
IHRoYXQgdGhlIG1hY3JvIGV4cGFuc2lvbiBvdXRwdXQgZ2VuZXJhdGVkIHRvIHN0ZG91dCB3aWxs
Cj4gK2JlIGluY29ycmVjdCB3aGVuIHRoaXMgaGFwcGVucyBiZWNhdXNlIHRoZSBtaXNzaW5nIGZp
bGUgaXMgYXNzdW1lZCB0byBiZQo+ICthbiBlbXB0eSBmaWxlLiAgVGhpcyBvcHRpb24gY2F1c2Vz
IHRoZSBAY29kZXttNH0gQGNvZGV7aW5jbHVkZSgpfSBtYWNybwo+ICt0byBiZWhhdmUgbGlrZSBA
Y29kZXtzaW5jbHVkZSgpfSwgZXhjZXB0IHRoYXQgYSB3YXJuaW5nIG1lc3NhZ2UgaXMKPiArcHJv
ZHVjZWQgb24gc3RkZXJyIHRvIGluZGljYXRlIHRoYXQgdGhlIHJlcXVlc3RlZCBmaWxlIHdhcyBt
aXNzaW5nLgo+ICtUaGlzIG9wdGlvbiBpcyBhbmFsb2dvdXMgdG8gdGhlIEBjb2Rley1NR30gb3B0
aW9uIG9mIEBjb2Rle2djY30uCj4gKwo+ICtAaXRlbSAtLW1ha2VkZXAtZ2VuLW1pc3Npbmctc2lu
Y2x1ZGUKPiArQ2F1c2VzIEBjb2Rle200fSB0byBhc3N1bWUgdGhhdCBhbnkgZmlsZSBpbmNsdWRl
ZCB2aWEgdGhlCj4gK0Bjb2Rle3NpbmNsdWRlKCl9IG1hY3JvIHRoYXQgaXMgbWlzc2luZyAoaS5l
LiwgZG9lcyBub3QgZXhpc3QpIGlzIGFuCj4gK2F1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGUu
ICBAY29kZXtNNH0gaW5jbHVkZXMgc3VjaCBtaXNzaW5nIGZpbGVzIGFzCj4gK2RlcGVuZGVuY2ll
cyBpbiB0aGUgZ2VuZXJhdGVkIHJ1bGUgcmVnYXJkbGVzcy4gIEluIHRoaXMgY2FzZSB0aGUKPiAr
ZGVwZW5kZW5jeSBhcHBlYXJzIGV4YWN0bHkgYXMgc3BlY2lmaWVkIGluIHRoZSBhcmd1bWVudCB0
bwo+ICtAY29kZXtzaW5jbHVkZSgpfSBhbmQgaXMgbm90IG1vZGlmaWVkIGJ5IGFueSBAY29kZXst
SX1AdmFye3NlYXJjaGRpcn0KPiArcHJlZml4ZXMuICBOb3RlIHRoYXQgdGhlIG1hY3JvIGV4cGFu
c2lvbiBvdXRwdXQgZ2VuZXJhdGVkIHRvIHN0ZG91dCB3aWxsCj4gK2JlIGluY29ycmVjdCB3aGVu
IHRoaXMgaGFwcGVucyBiZWNhdXNlIHRoZSBtaXNzaW5nIGZpbGUgaXMgYXNzdW1lZCB0byBiZQo+
ICthbiBlbXB0eSBmaWxlLiAgVGhpcyBvcHRpb24gZG9lcyBub3QgYWx0ZXIgQGNvZGV7c2luY2x1
ZGUoKX0ncyBiZWhhdmlvcgo+ICtvZiBzaWxlbnRseSBpZ25vcmluZyByZXF1ZXN0cyB0byBAY29k
ZXtzaW5jbHVkZSgpfSBmaWxlcyB0aGF0IGRvIG5vdCBleGlzdC4KPiArCj4gK0BpdGVtIC0tbWFr
ZWRlcC1nZW4tbWlzc2luZy1hbGwKPiArVGhpcyBvcHRpb24gaXMgZXF1aXZhbGVudCB0byBzcGVj
aWZ5aW5nIGFsbCB0aHJlZSBvcHRpb25zCj4gK0Bjb2Rley0tbWFrZWRlcC1nZW4tbWlzc2luZy1h
cmdmaWxlc30sCj4gK0Bjb2Rley0tbWFrZWRlcC1nZW4tbWlzc2luZy1pbmNsdWRlfSBhbmQKPiAr
QGNvZGV7LS1tYWtlZGVwLWdlbi1taXNzaW5nLXNpbmNsdWRlfS4KPiArQGVuZCB0YWJsZQo+ICsK
PiArTm90ZSB0aGF0IHRoZSBhYm92ZSBAY29kZXttYWtlZGVwLWdlbi1taXNzaW5nLSp9IG9wdGlv
bnMgYXNzdW1lIHRoYXQgdGhlCj4gK21pc3NpbmcgZmlsZXMgd2lsbCB1bHRpbWF0ZWx5IG5vdCBA
Y29kZXtpbmNsdWRlKCl9IG9yIEBjb2Rle3NpbmNsdWRlKCl9Cj4gK2FueSBhZGRpdGlvbmFsIGZp
bGVzIC0tIGlmIHRoZXkgZG8sIHRoZW4gdGhlc2UgYWRkaXRpb25hbCBmaWxlcyB3aWxsIGJlCj4g
K21pc3NpbmcgZnJvbSB0aGUgZ2VuZXJhdGVkIGRlcGVuZGVuY3kgcnVsZXMuCj4gKwo+ICtUaGUg
Zm9sbG93aW5nIG9wdGlvbnMgY29udHJvbCB0aGUgZ2VuZXJhdGlvbiBvZiBgYHBob255JycgdGFy
Z2V0cyBmb3IKPiArY2VydGFpbiBjbGFzc2VzIG9mIGRlcGVuZGVuY2llcy4gIFRoZXNlIGR1bW15
IHJ1bGVzIGFyZSB1c2VkIHRvIHdvcmsKPiArYXJvdW5kIGVycm9ycyBAY29kZXttYWtlfSBnaXZl
cyBpZiB5b3UgcmVtb3ZlIGZpbGVzIHdpdGhvdXQgdXBkYXRpbmcgdGhlCj4gK0Bjb2Rle01ha2Vm
aWxlfSB0byBtYXRjaC4gIERlcGVuZGVuY2llcyB0aGF0IG1hdGNoIG9uZSBvciBtb3JlIG9mIHRo
ZXNlCj4gK2NsYXNzZXMgY2F1c2UgYSBzaW5nbGUgZHVtbXkgcnVsZSB0byBiZSBnZW5lcmF0ZWQg
Zm9yIHRoZW06Cj4gKwo+ICtAdGFibGUgQGNvZGUKPiArQGl0ZW0gLS1tYWtlZGVwLXBob255LWFy
Z2ZpbGVzCj4gK0NhdXNlcyBAY29kZXttNH0gdG8gZ2VuZXJhdGUgYSBgYHBob255JycgdGFyZ2V0
IGZvciBlYWNoIGZpbGUgdGhhdCBpcwo+ICtzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4K
PiArCj4gK0BpdGVtIC0tbWFrZWRlcC1waG9ueS1pbmNsdWRlCj4gK0NhdXNlcyBAY29kZXttNH0g
dG8gZ2VuZXJhdGUgYSBgYHBob255JycgdGFyZ2V0IGZvciBlYWNoIGZpbGUgdGhhdCBpcwo+ICt0
aGUgc3ViamVjdCBvZiBhbiBAY29kZXtpbmNsdWRlKCl9IG1hY3JvLiAgVGhpcyBvcHRpb24gaXMg
YW5hbG9nb3VzIHRvCj4gK3RoZSBAY29kZXstTVB9IG9wdGlvbiBvZiBAY29kZXtnY2N9Lgo+ICsK
PiArQGl0ZW0gLS1tYWtlZGVwLXBob255LXNpbmNsdWRlCj4gK0NhdXNlcyBAY29kZXttNH0gdG8g
Z2VuZXJhdGUgYSBgYHBob255JycgdGFyZ2V0IGZvciBlYWNoIGZpbGUgdGhhdCBpcwo+ICt0aGUg
c3ViamVjdCBvZiBhbiBAY29kZXtzaW5jbHVkZSgpfSBtYWNyby4KPiArCj4gK0BpdGVtIC0tbWFr
ZWRlcC1waG9ueS1hbGwKPiAraXMgZXF1aXZhbGVudCB0byBzcGVjaWZ5aW5nIGFsbCB0aHJlZSBv
cHRpb25zOgo+ICtAY29kZXstLW1ha2VkZXAtcGhvbnktYXJnZmlsZXN9Cj4gK0Bjb2Rley0tbWFr
ZWRlcC1waG9ueS1pbmNsdWRlfQo+ICtAY29kZXstLW1ha2VkZXAtcGhvbnktc2luY2x1ZGV9Lgo+
ICtAZW5kIHRhYmxlCj4gKwoKSW4gYWRkaXRpb24gdG8gYWxsIHRoZSBjb21tYW5kIGxpbmUgb3B0
aW9ucyB0byBlbmFibGUgdGhpcyBmZWF0dXJlLAp3b3VsZCBpdCBiZSB3b3J0aCBhbiBleGFtcGxl
IGRlbW9uc3RyYXRpb24gb2YgdGhlIGZlYXR1cmUgaW4Kb3BlcmF0aW9uPwoKT25lIG9mIHRoZSBu
aWNlciB0aGluZ3MgYWJvdXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHRyZWUgaXMgdGhhdApl
eGFtcGxlcyB0aGF0IGFwcGVhciBpbiB0aGUgbTQgbWFudWFsIGFyZSBhbHNvIGV4ZWN1dGVkIGR1
cmluZyAnbWFrZQpjaGVjaycgdG8gZW5zdXJlIHdlIGRvbid0IHJlZ3Jlc3M7IGV2ZW4gaWYgaXQg
aXMgYSBzaWxseSBleGFtcGxlIHRoYXQKdXNlcyBta3N0ZW1wKCkgb3IgaGFyZC1jb2RlcyBhIGRl
cGVuZGVuY3kgbmFtZSwgYW5kIHRoZW4gcnVucyBhIHNlY29uZAptNCBpbnN0YW5jZSB0byBzZWUg
d2hhdCB0aGUgZmlyc3Qgb25lIHByb2R1Y2VkIGFzIGl0cyBkZXBlbmRlbmN5Cm91dHB1dCwgdGhh
dCB3b3VsZCBhZGQgc29tZSBjb25maWRlbmNlIHRoYXQgZnV0dXJlIHJlZmFjdG9yaW5nIHdvbid0
CmJyZWFrIHRoaXMuICBBbmQgZXZlbiBpZiB3ZSBjYW4ndCBnZXQgaXQgcnVubmluZyBhdXRvbWF0
aWNhbGx5IGZyb20KdGhlIG1hbnVhbCwgaGF2aW5nIGEgc2hlbGwgc2NyaXB0IG9yIG90aGVyIG1l
YW5zIG9mIHRlc3RpbmcgZXhwZWN0ZWQKYmVoYXZpb3IgaW4gdGhlIGNoZWNrcy8gZGlyZWN0b3J5
IHdpbGwgYmUgd29ydGh3aGlsZS4KCj4gIEBub2RlIERlYnVnZ2luZyBvcHRpb25zCj4gIEBzZWN0
aW9uIENvbW1hbmQgbGluZSBvcHRpb25zIGZvciBkZWJ1Z2dpbmcKPiBkaWZmIC0tZ2l0IGEvc3Jj
L2J1aWx0aW4uYyBiL3NyYy9idWlsdGluLmMKPiBpbmRleCAyODE5YmE0OS4uMGYyMzdjNWIgMTAw
NjQ0Cj4gLS0tIGEvc3JjL2J1aWx0aW4uYwo+ICsrKyBiL3NyYy9idWlsdGluLmMKPiBAQCAtMTM4
OCwxMCArMTM4OCwxMSBAQCBtNF9jaGFuZ2V3b3JkIChzdHJ1Y3Qgb2JzdGFjayAqb2JzIE1BWUJF
X1VOVVNFRCwgaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2KQo+ICBgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KPiAgc3Rh
dGljIHZvaWQKPiAtaW5jbHVkZSAoaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2LCBib29sIHNp
bGVudCkKPiAraW5jbHVkZSAoaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2LCBib29sIHNpbGVu
dCwgaW50IHJlZl9mcm9tKQo+ICB7Cj4gICAgRklMRSAqZnA7Cj4gICAgY2hhciAqbmFtZTsKPiAr
ICBpbnQgZmFpbDsKPiAgICBpZiAoYmFkX2FyZ2MgKGFyZ3ZbMF0sIGFyZ2MsIDIsIDIpKQo+ICAg
ICAgcmV0dXJuOwo+IEBAIC0xMzk5LDE0ICsxNDAwLDIwIEBAIGluY2x1ZGUgKGludCBhcmdjLCB0
b2tlbl9kYXRhICoqYXJndiwgYm9vbCBzaWxlbnQpCj4gICAgZnAgPSBtNF9wYXRoX3NlYXJjaCAo
QVJHICgxKSwgZmFsc2UsICZuYW1lKTsKPiAgICBpZiAoZnAgPT0gTlVMTCkKPiAgICAgIHsKPiAt
ICAgICAgaWYgKCFzaWxlbnQpCj4gKyAgICAgIGZhaWwgPSAhc2lsZW50Owo+ICsgICAgICBpZiAo
KG1ha2VkZXBfZ2VuX21pc3NpbmcgJiByZWZfZnJvbSkgIT0gMCkKPiAgICAgICAgICB7Cj4gLSAg
ICAgICAgICBNNEVSUk9SICgod2FybmluZ19zdGF0dXMsIGVycm5vLCBfKCJjYW5ub3Qgb3BlbiBg
JXMnIiksIEFSRyAoMSkpKTsKPiAtICAgICAgICAgIHJldGNvZGUgPSBFWElUX0ZBSUxVUkU7Cj4g
KyAgICAgICAgICByZWNvcmRfZGVwZW5kZW5jeSAoQVJHICgxKSwgcmVmX2Zyb20pOwoKTm90IHRo
aXMgcGF0Y2gncyBmYXVsdCwgYnV0IHJlcGVhdGVkIHJlZmVyZW5jZXMgdG8gQVJHKDEpIGFyZSBz
bGlnaHRseQpsZXNzIGVmZmljaWVudCB0aGFuIHN0b3JpbmcgQVJHKDEpIGludG8gYSB0ZW1wb3Jh
cnkgdmFyaWFibGUgdXAKZnJvbnQuIEkgY2FuIGNsZWFuIHRoYXQgdXAuCgo+ICsrKyBiL3NyYy9t
NC5jCgo+IEBAIC02MzIsNiArNzUxLDMyIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICpjb25zdCAq
YXJndikKPiAgICBpZiAoZGVidWdmaWxlICYmICFkZWJ1Z19zZXRfb3V0cHV0IChkZWJ1Z2ZpbGUp
KQo+ICAgICAgTTRFUlJPUiAoKHdhcm5pbmdfc3RhdHVzLCBlcnJubywgXygiY2Fubm90IHNldCBk
ZWJ1ZyBmaWxlIGAlcyciKSwKPiAgICAgICAgICAgICAgICBkZWJ1Z2ZpbGUpKTsKPiArCj4gKyAg
LyogVmVyaWZ5IG11dHVhbCBjb25zaXN0ZW5jeSBvZiBtYWtlZGVwIG9wdGlvbnMuICovCj4gKyNk
ZWZpbmUgTUtERVBfT1BUUyAiLS1tYWtlZGVwIGFuZCAtLW1ha2VkZXAtdGFyZ2V0IgoKVGhpcyAj
ZGVmaW5lIGlzIG5vdCBtYXJrZWQgZm9yIHRyYW5zbGF0aW9uOyBJJ20gbm90IHN1cmUgaG93IHRv
IGJlc3QKcGhyYXNlIHRoaW5ncyBmb3Igd2hlbiB3ZSBkbyBhZGQgaTE4biB0cmFuc2xhdGlvbnMg
b2YgZXJyb3IgbWVzc2FnZXMuCgo+ICsgIGlmICgobWFrZWRlcF9wYXRoID09IE5VTEwpICYmICht
YWtlZGVwX3RhcmdldCA9PSBOVUxMKSkKPiArICAgIHsKPiArICAgICAgLyogTWFrZWRlcCBtb2Rl
IGlzIE5PVCBhY3RpdmUuICovCj4gKyAgICAgIGlmIChtYWtlZGVwX2dlbl9taXNzaW5nICE9IDAp
Cj4gKyAgICAgICAgTTRFUlJPUiAoKEVYSVRfRkFJTFVSRSwgMCwKPiArICAgICAgICAgICAgICAg
ICAgIi0tbWFrZWRlcC1nZW4tbWlzc2luZy0qIHJlcXVpcmVzICIgTUtERVBfT1BUUykpOwo+ICsg
ICAgICBpZiAobWFrZWRlcF9waG9ueSAhPSAwKQo+ICsgICAgICAgIE00RVJST1IgKChFWElUX0ZB
SUxVUkUsIDAsCj4gKyAgICAgICAgICAgICAgICAgICItLW1ha2VkZXAtcGhvbnktKiByZXF1aXJl
cyAiIE1LREVQX09QVFMpKTsKCk1vcmUgc3RyaW5ncyBtaXNzaW5nIF8oKSBtYXJraW5nLgoKPiAr
ICAgICAgaWYgKChtYWtlZGVwX2dlbl9taXNzaW5nIHwgbWFrZWRlcF9waG9ueSkgIT0gMCkKPiAr
ICAgICAgICBleGl0IChFWElUX0ZBSUxVUkUpOwo+ICsgICAgfQo+ICsgIGVsc2UgaWYgKChtYWtl
ZGVwX3BhdGggIT0gTlVMTCkgJiYgKG1ha2VkZXBfdGFyZ2V0ICE9IE5VTEwpKQo+ICsgICAgewo+
ICsgICAgICAvKiBNYWtlZGVwIG1vZGUgaXMgYWN0aXZlLiAqLwo+ICsgICAgfQo+ICsgIGVsc2UK
PiArICAgIHsKPiArICAgICAgTTRFUlJPUiAoKEVYSVRfRkFJTFVSRSwgMCwKPiArICAgICAgICAg
ICAgICAgIE1LREVQX09QVFMgIiBjYW5ub3QgYmUgdXNlZCBpbmRlcGVuZGVudGx5LiIpKTsKCkVy
cm9yIG1lc3NhZ2VzIHNob3VsZCBub3QgZW5kIGluICcuJwoKPiArICAgICAgZXhpdCAoRVhJVF9G
QUlMVVJFKTsKPiArICAgIH0KPiArI3VuZGVmIE1LREVQX09QVFMKPiAgICBpbnB1dF9pbml0ICgp
Owo+ICAgIG91dHB1dF9pbml0ICgpOwo+IEBAIC03MzgsNiArODgzLDggQEAgbWFpbiAoaW50IGFy
Z2MsIGNoYXIgKmNvbnN0ICphcmd2KQo+ICAgICAgICB1bmRpdmVydF9hbGwgKCk7Cj4gICAgICB9
Cj4gICAgb3V0cHV0X2V4aXQgKCk7Cj4gKyAgaWYgKG1ha2VkZXBfcGF0aCAhPSBOVUxMKQo+ICsg
ICAgZ2VuZXJhdGVfbWFrZV9kZXBlbmRlbmNpZXMgKG1ha2VkZXBfcGF0aCwgbWFrZWRlcF90YXJn
ZXQsIG1ha2VkZXBfcGhvbnkpOwo+ICAgIGZyZWVfbWFjcm9fc2VxdWVuY2UgKCk7Cj4gICAgZXhp
dCAocmV0Y29kZSk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvc3JjL200LmggYi9zcmMvbTQuaAo+IGlu
ZGV4IDhkMGQ5NmRkLi5mODczNWFiYyAxMDA2NDQKPiAtLS0gYS9zcmMvbTQuaAoKPiBAQCAtNDEy
LDcgKzQyMCwxMCBAQCBleHRlcm4gdm9pZCBoYWNrX2FsbF9zeW1ib2xzIChoYWNrX3N5bWJvbCAq
LCB2b2lkICopOwo+ICBleHRlcm4gaW50IGV4cGFuc2lvbl9sZXZlbDsKPiAgZXh0ZXJuIHZvaWQg
ZXhwYW5kX2lucHV0ICh2b2lkKTsKPiAtZXh0ZXJuIHZvaWQgY2FsbF9tYWNybyAoc3ltYm9sICos
IGludCwgdG9rZW5fZGF0YSAqKiwgc3RydWN0IG9ic3RhY2sgKik7Cj4gK2V4dGVybiB2b2lkIGNh
bGxfbWFjcm8gKHN5bWJvbCAqLCBpbnQsIHRva2VuX2RhdGEgKiosIHN0cnVjdCBvYnN0YWNrICop
Cj4gKyAgLyogVGhpcyBkb2Vzbid0IHNlZW0gcmlnaHQsIGJ1dCBnY2MtOC41LjAgaXMgc3VnZ2Vz
dGluZyB0aGF0IHRoaXMgKi8KPiArICAvKiBmdW5jdGlvbiBtaWdodCBiZSBhIGNhbmRpZGF0ZSBm
b3IgYXR0cmlidXRlICdjb2xkJywgc3RvcHBpbmcgdGhlIGJ1aWxkLiAqLwo+ICsgIEFUVFJJQlVU
RV9DT0xEOwoKVW5yZWxhdGVkIHRvIHlvdXIgcGF0Y2gsIGJ1dCBzb21ldGhpbmcgdGhhdCBzaG91
bGQgYmUgZml4ZWQKaW5kZXBlbmRlbnRseSBpZiBpdCBpcyBzdGlsbCBhIHByb2JsZW0uCgo+ICsr
KyBiL3NyYy9wYXRoLmMKPiBAQCAtMzYsNiArMzYsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgaW5jbHVk
ZXMgaW5jbHVkZXM7Cj4gIHN0YXRpYyBpbmNsdWRlcyAqZGlyX2xpc3Q7ICAgICAgLyogdGhlIGxp
c3Qgb2YgcGF0aCBkaXJlY3RvcmllcyAqLwo+ICBzdGF0aWMgaW5jbHVkZXMgKmRpcl9saXN0X2Vu
ZDsgIC8qIHRoZSBlbmQgb2Ygc2FtZSAqLwo+ICBzdGF0aWMgaW50IGRpcl9tYXhfbGVuZ3RoOyAg
ICAgIC8qIGxlbmd0aCBvZiBsb25nZXN0IGRpcmVjdG9yeSBuYW1lICovCj4gKwo+ICtzdHJ1Y3Qg
ZGVwZW5kZW5jeQo+ICt7Cj4gKyAgc3RydWN0IGRlcGVuZGVuY3kgKm5leHQ7ICAgICAgLyogbmV4
dCBpbiBsaXN0IG9mIGRlcGVuZGVuY2llcyAqLwo+ICsgIGludCByZWZfZnJvbTsgICAgICAgICAg
ICAgICAgIC8qIGJpdCBtYXNrOiBwbGFjZXMgZmlsZSByZWZlcmVuY2VkIGZyb20gKi8KPiArICBj
aGFyIHBhdGggWzFdOyAgICAgICAgICAgICAgICAvKiBwYXRobmFtZSBvZiB0aGlzIGRlcGVuZGVu
Y3kgKi8KCkhtbSAtIGFidXNpbmcgdGhpcyB0cmFpbGluZyBzdHJ1Y3QgbWVtYmVyIHRvIGJlIGFu
IG92ZXJsYXkgd2l0aCBhbgpvdmVyYWxsb2NhdGVkIGFjdHVhbCBzdG9yYWdlLiAgSSdtIHRyeWlu
ZyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlIGlzIGEKcHJlZmVycmVkIEdOVSBzdHlsZSBmb3IgdGhp
cyBzb3J0IG9mIEMgb3ZlcnVzZSAoSSBrbm93IHRoYXQgVkxBIHR5cGVzCmFyZSBub3Qgd2hhdCB3
ZSB3YW50LCBidXQgYW0gbm90IHN1cmUgdGhpcyBzcGVsbGluZyBpcyBpZGVhbCBlaXRoZXIpLgoK
LS0gCkVyaWMgQmxha2UsIFByaW5jaXBhbCBTb2Z0d2FyZSBFbmdpbmVlcgpSZWQgSGF0LCBJbmMu
ClZpcnR1YWxpemF0aW9uOiAgcWVtdS5vcmcgfCBsaWJndWVzdGZzLm9yZwoKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk00LXBhdGNoZXMgbWFpbGluZyBs
aXN0Ck00LXBhdGNoZXNAZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9saXN0
aW5mby9tNC1wYXRjaGVzCg==