[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==