[PATCH branch-1.6] eval: Add eval64 builtin [work in progress]
Eric Blake via M4-patches <[email protected]> Thu, 15 May 2025 21:34:40 -0500
| Newsgroups | gmane.comp.gnu.m4.patches |
|---|---|
| Message-ID | <[email protected]> |
VE9ETzogQWRkIG1vcmUgdGVzdHMsIGZpbGwgaW4gY2hhbmdlbG9nCi0tLQoKR2l2ZW4gdGhhdCBQ T1NJWCBzYXlzIGluIG9uZSBwbGFjZSB0aGF0IGV2YWwgbXVzdCBvcGVyYXRlIG9uIGF0IGxlYXN0 CjMyLWJpdCBudW1iZXJzLCBhbmQgaW4gYW5vdGhlciB0aGF0IGl0IG11c3QgdXNlIGF0IGxlYXN0 ICdzaWduZWQKbG9uZyc7IGFuZCBnaXZlbiB0aGF0IG1vc3QgZGV2ZWxvcG1lbnQgbWFjaGluZXMg dGhlc2UgZGF5cyBhcmUgNjQtYml0LApJIHRoaW5rIGl0J3MgaGlnaCB0aW1lIE00IG9mZmVycyA2 NC1iaXQgbWF0aC4gIEZvciBiYWNrLWNvbXBhdApyZWFzb25zLCBJJ20gdGhpbmtpbmcgb2Yga2Vl cGluZyBldmFsIGF0IDMyLWJpdCBhbmQgYWRkaW5nIGEgbmV3CmV2YWw2NCAodGhlIHVzZXIgY2Fu IGFsd2F5cyB1c2UgZGVmaW5lKGBldmFsJywgZGVmbihgZXZhbDY0JykpIHRvIG9wdAppbiB0byB0 aGUgbmV3ZXIgc2l6ZSkuCgpCdXQgSSdtIG5vdCBzdXJlIHdoZXRoZXIgZXZhbDY0IHNob3VsZCBi ZSB2aXNpYmxlIGJ5IGRlZmF1bHQsIG9yIG9ubHkKb3B0LWluIHZpYSBhIGNvbW1hbmQgbGluZSBv cHRpb24sIG9yIGV2ZW4gaWYgSSBjYW4gZ2V0IGRlZmluZShgZXZhbCcsCmJ1aWx0aW4oYGV2YWw2 NCcpKSB3b3JraW5nIGV2ZW4gd2hlbiBldmFsNjQgaXRzZWxmIGlzIG5vdCBwcmUtZGVmaW5lZC4K U28gZm9yIG5vdywgSSdtIGp1c3QgcG9zdGluZyB3aGF0IEkgZ290IHdvcmtpbmcgaW4gb25lIGV2 ZW5pbmcsIGJ1dCBpdAppcyBub3QgeWV0IHRoZSBmaW5hbCBwYXRjaC4KClRob3VnaHRzIG9uIHRo ZSBiZXN0IHdheSB0byBhZGQgdGhpcyBmZWF0dXJlPwoKIE5FV1MgICAgICAgICAgICB8ICAzICsr LQogZG9jL200LnRleGkgICAgIHwgIDkgKysrKystLS0KIHNyYy9NYWtlZmlsZS5hbSB8ICAyICst CiBzcmMvYnVpbHRpbi5jICAgfCAzNyArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiBz cmMvZXZhbC5jICAgICAgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tCiBzcmMvZXZhbDY0LmMgICAgfCAzOSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHNyYy9tNC5oICAgICAgICB8ICA5ICsrKysrKy0tCiA3IGZpbGVzIGNoYW5n ZWQsIDExOCBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvZXZhbDY0LmMKCmRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwppbmRleCA5N2M0ZDljMC4u ZjYyMDQyMTcgMTAwNjQ0Ci0tLSBhL05FV1MKKysrIGIvTkVXUwpAQCAtMTI5LDcgKzEyOSw4IEBA IEdOVSBNNCBORVdTIC0gVXNlciB2aXNpYmxlIGNoYW5nZXMuCiAqKiBFbmhhbmNlIHRoZSBgZXZh bCcgYnVpbHRpbiB0byB1bmRlcnN0YW5kIHRoZSBgPzonIG9wZXJhdG9yLCBhbmQKICAgIGRvd25n cmFkZSBhIGZhaWxlZCBwYXJzZSBkdWUgdG8gYW4gdW5rbm93biBvcGVyYXRvciBmcm9tIGFuIGVy cm9yIHRvIGEKICAgIHdhcm5pbmcuICBGdXJ0aGVyLCB0aGUgYnVpbHRpbiBub3cgcmVmdXNlcyB0 byByZWNvZ25pemUgYD0nIGFzIGEKLSAgIHN5bm9ueW0gZm9yIGA9PScgKHRoaXMgaGFkIGVtaXR0 ZWQgYSB3YXJuaW5nIHNpbmNlIDEuNC44YikuCisgICBzeW5vbnltIGZvciBgPT0nICh0aGlzIGhh ZCBlbWl0dGVkIGEgd2FybmluZyBzaW5jZSAxLjQuOGIpLiAgQWRkIGEgbmV3CisgICBgZXZhbDY0 JyBidWlsdGluIHRoYXQgb3BlcmF0ZXMgb24gNjQtYml0IGludGVnZXJzLgoKICoqIEEgbnVtYmVy IG9mIHBvcnRhYmlsaXR5IGltcHJvdmVtZW50cyBpbmhlcml0ZWQgZnJvbSBnbnVsaWIuCgpkaWZm IC0tZ2l0IGEvZG9jL200LnRleGkgYi9kb2MvbTQudGV4aQppbmRleCA4MTQ3NmJjOC4uNjA5OTJj NWYgMTAwNjQ0Ci0tLSBhL2RvYy9tNC50ZXhpCisrKyBiL2RvYy9tNC50ZXhpCkBAIC03MDcwLDEz ICs3MDcwLDE2IEBAIEV2YWwKIEludGVnZXIgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aXRo IEBjb2Rle2V2YWx9OgoKIEBkZWZmbiBCdWlsdGluIGV2YWwgKEB2YXJ7ZXhwcmVzc2lvbn0sIEBk dmFye3JhZGl4LCAxMH0sIEBvdmFye3dpZHRofSkKK0BkZWZmbnggQnVpbHRpbiBldmFsNjQgKEB2 YXJ7ZXhwcmVzc2lvbn0sIEBkdmFye3JhZGl4LCAxMH0sIEBvdmFye3dpZHRofSkKIEV4cGFuZHMg dG8gdGhlIHZhbHVlIG9mIEB2YXJ7ZXhwcmVzc2lvbn0uICBUaGUgZXhwYW5zaW9uIGlzIGVtcHR5 CiBpZiBhIHByb2JsZW0gaXMgZW5jb3VudGVyZWQgd2hpbGUgcGFyc2luZyB0aGUgYXJndW1lbnRz LiAgSWYgc3BlY2lmaWVkLAogQHZhcntyYWRpeH0gYW5kIEB2YXJ7d2lkdGh9IGNvbnRyb2wgdGhl IGZvcm1hdCBvZiB0aGUgb3V0cHV0LgoKLUNhbGN1bGF0aW9ucyBhcmUgZG9uZSB3aXRoIDMyLWJp dCBzaWduZWQgbnVtYmVycy4gIE92ZXJmbG93IHNpbGVudGx5Ci1yZXN1bHRzIGluIHdyYXBhcm91 bmQuICBBIHdhcm5pbmcgaXMgaXNzdWVkIGlmIGRpdmlzaW9uIGJ5IHplcm8gaXMKLWF0dGVtcHRl ZCwgb3IgaWYgQHZhcntleHByZXNzaW9ufSBjb3VsZCBub3QgYmUgcGFyc2VkLgorQ2FsY3VsYXRp b25zIGFyZSBkb25lIHdpdGggMzItYml0IHNpZ25lZCBudW1iZXJzIGZvciBAY29kZXtldmFsfSwg YW5kCis2NC1iaXQgc2lnbmVkIG51bWJlcnMgZm9yIEBjb2Rle2V2YWw2NH0gKHRoZSBsYXR0ZXIg d2FzIGludHJvZHVjZWQgaW4gTTQKKzEuNikuICBPdmVyZmxvdyBzaWxlbnRseSByZXN1bHRzIGlu IHdyYXBhcm91bmQuICBBIHdhcm5pbmcgaXMgaXNzdWVkIGlmCitkaXZpc2lvbiBieSB6ZXJvIGlz IGF0dGVtcHRlZCwgb3IgaWYgQHZhcntleHByZXNzaW9ufSBjb3VsZCBub3QgYmUKK3BhcnNlZC4K CiBFeHByZXNzaW9ucyBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIG9wZXJhdG9ycywgbGlzdGVk IGluIG9yZGVyIG9mCiBkZWNyZWFzaW5nIHByZWNlZGVuY2UuCmRpZmYgLS1naXQgYS9zcmMvTWFr ZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KaW5kZXggMGY1NjcwMTIuLjA4ZjQ4YWZlIDEwMDY0 NAotLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrIGIvc3JjL01ha2VmaWxlLmFtCkBAIC0yNiw3ICsy Niw3IEBAIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpICQoV0VSUk9SX0NGTEFHUykKIEFNX0xE RkxBR1MgPSAkKE9TMl9MREZMQUdTKQogYmluX1BST0dSQU1TID0gbTQKIG5vaW5zdF9IRUFERVJT ID0gbTQuaAotbTRfU09VUkNFUyA9IG00LmMgYnVpbHRpbi5jIGRlYnVnLmMgZXZhbC5jIGZvcm1h dC5jIGZyZWV6ZS5jIGlucHV0LmMgXAorbTRfU09VUkNFUyA9IG00LmMgYnVpbHRpbi5jIGRlYnVn LmMgZXZhbC5jIGV2YWw2NC5jIGZvcm1hdC5jIGZyZWV6ZS5jIGlucHV0LmMgXAogbWFjcm8uYyBv dXRwdXQuYyBwYXRoLmMgc3ltdGFiLmMKIExEQUREID0gLi4vbGliL2xpYm00LmEgJChMSUJNNF9M SUJERVBTKSBcCiAgICQoQ0xPQ0tfVElNRV9MSUIpICQoR0VUTE9DQUxFTkFNRV9MX0xJQikgJChH RVRSQU5ET01fTElCKSBcCmRpZmYgLS1naXQgYS9zcmMvYnVpbHRpbi5jIGIvc3JjL2J1aWx0aW4u YwppbmRleCBiZjBkMTc5OC4uYmJhODBlMzMgMTAwNjQ0Ci0tLSBhL3NyYy9idWlsdGluLmMKKysr IGIvc3JjL2J1aWx0aW4uYwpAQCAtNTcsNiArNTcsNyBAQCBERUNMQVJFIChtNF9kdW1wZGVmKTsK IERFQ0xBUkUgKG00X2VycnByaW50KTsKIERFQ0xBUkUgKG00X2VzeXNjbWQpOwogREVDTEFSRSAo bTRfZXZhbCk7CitERUNMQVJFIChtNF9ldmFsNjQpOwogREVDTEFSRSAobTRfZm9ybWF0KTsKIERF Q0xBUkUgKG00X2lmZGVmKTsKIERFQ0xBUkUgKG00X2lmZWxzZSk7CkBAIC0xMDksNiArMTEwLDcg QEAgc3RhdGljIGJ1aWx0aW4gY29uc3QgYnVpbHRpbl90YWJbXSA9IHsKICAgeyJlcnJwcmludCIs IGZhbHNlLCBmYWxzZSwgdHJ1ZSwgbTRfZXJycHJpbnR9LAogICB7ImVzeXNjbWQiLCB0cnVlLCBm YWxzZSwgdHJ1ZSwgbTRfZXN5c2NtZH0sCiAgIHsiZXZhbCIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwg bTRfZXZhbH0sCisgIHsiZXZhbDY0IiwgdHJ1ZSwgZmFsc2UsIHRydWUsIG00X2V2YWw2NH0sCiAg IHsiZm9ybWF0IiwgdHJ1ZSwgZmFsc2UsIHRydWUsIG00X2Zvcm1hdH0sCiAgIHsiaWZkZWYiLCBm YWxzZSwgdHJ1ZSwgdHJ1ZSwgbTRfaWZkZWZ9LAogICB7ImlmZWxzZSIsIGZhbHNlLCB0cnVlLCB0 cnVlLCBtNF9pZmVsc2V9LApAQCAtNTcxLDEwICs1NzMsMTAgQEAgc3RhdGljIGNoYXIgY29uc3Qg ZGlnaXRzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKIC8qIFRo ZSBmdW5jdGlvbiBudG9hICgpIGNvbnZlcnRzIFZBTFVFIHRvIGEgc2lnbmVkIEFTQ0lJCiAgICBy ZXByZXNlbnRhdGlvbiBpbiByYWRpeCBSQURJWCwgd2l0aCB0aGUgZW5kaW5nIFwwIGluICpFTkQu ICAqLwogc3RhdGljIGNvbnN0IGNoYXIgKgotbnRvYSAoaW50MzJfdCB2YWx1ZSwgaW50IHJhZGl4 LCBjb25zdCBjaGFyICoqZW5kKQorbnRvYSAoaW50NjRfdCB2YWx1ZSwgaW50IHJhZGl4LCBjb25z dCBjaGFyICoqZW5kKQogewogICBib29sIG5lZ2F0aXZlOwotICB1aW50MzJfdCB1dmFsdWU7Cisg IHVpbnQ2NF90IHV2YWx1ZTsKICAgLyogU2l6ZWQgZm9yIHJhZGl4IDIsIHBsdXMgc2lnbiBhbmQg dHJhaWxpbmcgTlVMLiAgKi8KICAgc3RhdGljIGNoYXIgc3RyW3NpemVvZiAodmFsdWUpICogQ0hB Ul9CSVQgKyAyXTsKICAgY2hhciAqcyA9ICZzdHJbc2l6ZW9mIHN0cl07CkBAIC01ODUsMTIgKzU4 NywxMiBAQCBudG9hIChpbnQzMl90IHZhbHVlLCBpbnQgcmFkaXgsIGNvbnN0IGNoYXIgKiplbmQp CiAgIGlmICh2YWx1ZSA8IDApCiAgICAgewogICAgICAgbmVnYXRpdmUgPSB0cnVlOwotICAgICAg dXZhbHVlID0gLSh1aW50MzJfdCkgdmFsdWU7CisgICAgICB1dmFsdWUgPSAtKHVpbnQ2NF90KSB2 YWx1ZTsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBuZWdhdGl2ZSA9IGZhbHNlOwotICAg ICAgdXZhbHVlID0gKHVpbnQzMl90KSB2YWx1ZTsKKyAgICAgIHV2YWx1ZSA9ICh1aW50NjRfdCkg dmFsdWU7CiAgICAgfQoKICAgZG8KQEAgLTEyNTMsMTAgKzEyNTUsMTEgQEAgbTRfc3lzdmFsIChz dHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJnYyBNQVlCRV9VTlVTRUQsCiAgICBUaGUgYWN0dWFs IHdvcmsgaXMgZG9uZSBpbiB0aGUgZnVuY3Rpb24gZXZhbHVhdGUgKCksIHdoaWNoIGxpdmVzIGlu CiAgICBldmFsLmMuICAqLwogc3RhdGljIHZvaWQKLW00X2V2YWwgKHN0cnVjdCBvYnN0YWNrICpv YnMsIGludCBhcmdjLCBtYWNyb19hcmd1bWVudHMgKmFyZ3YpCitldmFsIChzdHJ1Y3Qgb2JzdGFj ayAqb2JzLCBpbnQgYXJnYywgbWFjcm9fYXJndW1lbnRzICphcmd2LAorICAgICAgYm9vbCBmdW5j IChjb25zdCBjYWxsX2luZm8gKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGludDY0X3QgKikpCiB7 CiAgIGNvbnN0IGNhbGxfaW5mbyAqbWUgPSBhcmdfaW5mbyAoYXJndik7Ci0gIGludDMyX3QgdmFs dWUgPSAwOworICBpbnQ2NF90IHZhbHVlID0gMDsKICAgaW50IHJhZGl4ID0gMTA7CiAgIGludCBt aW4gPSAxOwogICBjb25zdCBjaGFyICpzOwpAQCAtMTI4MywxNyArMTI4NiwyMyBAQCBtNF9ldmFs IChzdHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJnYywgbWFjcm9fYXJndW1lbnRzICphcmd2KQog ICAgICAgcmV0dXJuOwogICAgIH0KCi0gIGlmIChldmFsdWF0ZSAobWUsIEFSRyAoMSksIEFSR19M RU4gKDEpLCAmdmFsdWUpKQorICBpZiAoZnVuYyAobWUsIEFSRyAoMSksIEFSR19MRU4gKDEpLCAm dmFsdWUpKQogICAgIHJldHVybjsKCiAgIGlmIChyYWRpeCA9PSAxKQogICAgIHsKKyAgICAgIGlm ICh2YWx1ZSA8IElOVF9NSU4gfHwgdmFsdWUgPiBJTlRfTUFYKQorICAgICAgICB7CisgICAgICAg ICAgbTRfd2FybiAoMCwgbWUsIF8oIm1hZ25pdHVkZSB0b28gbGFyZ2UgZm9yIGJhc2UgMTogJSIg UFJJZDY0KSwKKyAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgICAgICAgcmV0dXJuOwor ICAgICAgICB9CiAgICAgICBpZiAodmFsdWUgPCAwKQogICAgICAgICB7CiAgICAgICAgICAgb2Jz dGFja18xZ3JvdyAob2JzLCAnLScpOwogICAgICAgICAgIHZhbHVlID0gLXZhbHVlOwogICAgICAg ICB9Ci0gICAgICBpZiAodmFsdWUgKyAwVSA8IG1pbiArIDBVKQorICAgICAgaWYgKHZhbHVlICsg MFVMTCA8IG1pbiArIDBVTEwpCiAgICAgICAgIHsKICAgICAgICAgICBvYnN0YWNrX2JsYW5rIChv YnMsIG1pbiAtIHZhbHVlKTsKICAgICAgICAgICBtZW1zZXQgKChjaGFyICopIG9ic3RhY2tfbmV4 dF9mcmVlIChvYnMpIC0gKG1pbiAtIHZhbHVlKSwgJzAnLApAQCAtMTMyMSw2ICsxMzMwLDE4IEBA IG00X2V2YWwgKHN0cnVjdCBvYnN0YWNrICpvYnMsIGludCBhcmdjLCBtYWNyb19hcmd1bWVudHMg KmFyZ3YpCiAgIG9ic3RhY2tfZ3JvdyAob2JzLCBzLCBsZW4pOwogfQoKK3N0YXRpYyB2b2lkCitt NF9ldmFsIChzdHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJnYywgbWFjcm9fYXJndW1lbnRzICph cmd2KQoreworICBldmFsIChvYnMsIGFyZ2MsIGFyZ3YsIGV2YWx1YXRlKTsKK30KKworc3RhdGlj IHZvaWQKK200X2V2YWw2NCAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIG1hY3JvX2Fy Z3VtZW50cyAqYXJndikKK3sKKyAgZXZhbCAob2JzLCBhcmdjLCBhcmd2LCBldmFsdWF0ZTY0KTsK K30KKwogc3RhdGljIHZvaWQKIG00X2luY3IgKHN0cnVjdCBvYnN0YWNrICpvYnMsIGludCBhcmdj LCBtYWNyb19hcmd1bWVudHMgKmFyZ3YpCiB7CmRpZmYgLS1naXQgYS9zcmMvZXZhbC5jIGIvc3Jj L2V2YWwuYwppbmRleCAxNjNlMjYzNC4uYWU5OGEwM2YgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMK KysrIGIvc3JjL2V2YWwuYwpAQCAtMjIsOSArMjIsMTYgQEAKIC8qIFRoaXMgZmlsZSBjb250YWlu cyB0aGUgZnVuY3Rpb25zIHRvIGV2YWx1YXRlIGludGVnZXIgZXhwcmVzc2lvbnMgZm9yCiAgICB0 aGUgImV2YWwiIG1hY3JvLiAgSXQgaXMgYSBsaXR0bGUsIGZhaXJseSBzZWxmLWNvbnRhaW5lZCBt b2R1bGUsIHdpdGgKICAgIGl0cyBvd24gc2Nhbm5lciwgYW5kIGEgcmVjdXJzaXZlIGRlc2NlbnQg cGFyc2VyLiAgVGhlIG9ubHkgZW50cnkgcG9pbnQKLSAgIGlzIGV2YWx1YXRlICgpLiAgKi8KKyAg IGlzIGV2YWx1YXRlICgpLiAgVGhpcyBmaWxlIGlzIGFsc28gdXNlZCB0byBpbXBsZW1lbnQgZXZh bDY0LiAgKi8KCi0jaW5jbHVkZSAibTQuaCIKKyNpZm5kZWYgRVZBTDY0CisjIGluY2x1ZGUgIm00 LmgiCisKKyMgZGVmaW5lIElOVCBpbnQzMl90CisjIGRlZmluZSBVSU5UIHVpbnQzMl90CisjIGRl ZmluZSBTSElGVE1BU0sgMHgxZgorIyBkZWZpbmUgRVZBTFVBVEUgZXZhbHVhdGUKKyNlbmRpZiAv KiAhRVZBTDY0ICovCgogLyogRXZhbHVhdGVzIHRva2VuIHR5cGVzLiAgKi8KCkBAIC04Nyw4ICs5 NCw5IEBAIHR5cGVkZWYgZW51bSBldmFsX2Vycm9yCiB9CiBldmFsX2Vycm9yOwoKLXN0YXRpYyBl dmFsX2Vycm9yIHByaW1hcnkgKGludDMyX3QgKik7Ci1zdGF0aWMgZXZhbF9lcnJvciBwYXJzZV9l eHByIChpbnQzMl90ICosIGV2YWxfZXJyb3IsIHVuc2lnbmVkKTsKKworc3RhdGljIGV2YWxfZXJy b3IgcHJpbWFyeSAoSU5UICopOworc3RhdGljIGV2YWxfZXJyb3IgcGFyc2VfZXhwciAoSU5UICos IGV2YWxfZXJyb3IsIHVuc2lnbmVkKTsKCiAvKiBMZXhpY2FsIGZ1bmN0aW9ucy4gICovCgpAQCAt MTIwLDcgKzEyOCw3IEBAIGV2YWxfdW5kbyAodm9pZCkKIC8qIFZBTCBpcyBudW1lcmljYWwgdmFs dWUsIGlmIGFueS4gICovCgogc3RhdGljIGV2YWxfdG9rZW4KLWV2YWxfbGV4IChpbnQzMl90ICp2 YWwpCitldmFsX2xleCAoSU5UICp2YWwpCiB7CiAgIHdoaWxlIChldmFsX3RleHQgIT0gZW5kX3Rl eHQgJiYgY19pc3NwYWNlICgqZXZhbF90ZXh0KSkKICAgICBldmFsX3RleHQrKzsKQEAgLTEzOSw3 ICsxNDcsNyBAQCBldmFsX2xleCAoaW50MzJfdCAqdmFsKQogICAgICAgLyogVGhlIGRvY3VtZW50 YXRpb24gc2F5cyB0aGF0ICJvdmVyZmxvdyBzaWxlbnRseSByZXN1bHRzIGluIHdyYXBhcm91bmQi LgogICAgICAgICAgVGhlcmVmb3JlIHVzZSBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgdG8gYXZv aWQgdW5kZWZpbmVkIGJlaGF2aW91cgogICAgICAgICAgd2hlbiBwYXJzaW5nICctMjE0NzQ4MzY0 OCcuICAqLwotICAgICAgdWludDMyX3QgdmFsdWU7CisgICAgICBVSU5UIHZhbHVlOwoKICAgICAg IGlmICgqZXZhbF90ZXh0ID09ICcwJykKICAgICAgICAgewpAQCAtMzE0LDEwICszMjIsMTAgQEAg ZXZhbF9sZXggKGludDMyX3QgKnZhbCkKCiAvKiBQYXJzZSBgKGV4cHIpJywgdW5hcnkgb3BlcmF0 b3JzLCBhbmQgbnVtYmVycy4gICovCiBzdGF0aWMgZXZhbF9lcnJvcgotcHJpbWFyeSAoaW50MzJf dCAqdjEpCitwcmltYXJ5IChJTlQgKnYxKQogewogICBldmFsX2Vycm9yIGVyOwotICBpbnQzMl90 IHYyOworICBJTlQgdjI7CgogICBzd2l0Y2ggKGV2YWxfbGV4ICh2MSkpCiAgICAgewpAQCAtMzUy LDcgKzM2MCw3IEBAIHByaW1hcnkgKGludDMyX3QgKnYxKQogICAgICAgcmV0dXJuIHByaW1hcnkg KHYxKTsKICAgICBjYXNlIE1JTlVTOgogICAgICAgZXIgPSBwcmltYXJ5ICh2MSk7Ci0gICAgICAq djEgPSAoaW50MzJfdCkgLSh1aW50MzJfdCkgKnYxOworICAgICAgKnYxID0gKElOVCkgLShVSU5U KSAqdjE7CiAgICAgICByZXR1cm4gZXI7CiAgICAgY2FzZSBOT1Q6CiAgICAgICBlciA9IHByaW1h cnkgKHYxKTsKQEAgLTM4MCwxNSArMzg4LDE1IEBAIHByaW1hcnkgKGludDMyX3QgKnYxKQoKIC8q IFBhcnNlIGJpbmFyeSBvcGVyYXRvcnMgd2l0aCBhdCBsZWFzdCBNSU5fUFJFQyBwcmVjZWRlbmNl LiAgKi8KIHN0YXRpYyBldmFsX2Vycm9yCi1wYXJzZV9leHByIChpbnQzMl90ICp2MSwgZXZhbF9l cnJvciBlciwgdW5zaWduZWQgbWluX3ByZWMpCitwYXJzZV9leHByIChJTlQgKnYxLCBldmFsX2Vy cm9yIGVyLCB1bnNpZ25lZCBtaW5fcHJlYykKIHsKICAgZXZhbF90b2tlbiBldDsKICAgZXZhbF90 b2tlbiBldDI7CiAgIGV2YWxfZXJyb3IgZXIyOwogICBldmFsX2Vycm9yIGVyMzsKLSAgaW50MzJf dCB2MjsKLSAgaW50MzJfdCB2MzsKLSAgdWludDMyX3QgdTE7CisgIElOVCB2MjsKKyAgSU5UIHYz OworICBVSU5UIHUxOwoKICAgaWYgKGVyID49IFNZTlRBWF9FUlJPUikKICAgICByZXR1cm4gZXI7 CkBAIC00MzcsMjAgKzQ0NSwyMCBAQCBwYXJzZV9leHByIChpbnQzMl90ICp2MSwgZXZhbF9lcnJv ciBlciwgdW5zaWduZWQgbWluX3ByZWMpCiAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewog ICAgICAgICAgICAgICB3aGlsZSAodjItLSA+IDApCi0gICAgICAgICAgICAgICAgdTEgKj0gKHVp bnQzMl90KSAqdjE7CisgICAgICAgICAgICAgICAgdTEgKj0gKFVJTlQpICp2MTsKICAgICAgICAg ICAgIH0KICAgICAgICAgICAqdjEgPSB1MTsKICAgICAgICAgICBicmVhazsKCiAgICAgICAgIGNh c2UgVElNRVM6Ci0gICAgICAgICAgKnYxID0gKGludDMyX3QpICgodWludDMyX3QpICp2MSAqICh1 aW50MzJfdCkgdjIpOworICAgICAgICAgICp2MSA9IChJTlQpICgoVUlOVCkgKnYxICogKFVJTlQp IHYyKTsKICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBESVZJREU6CiAgICAgICAgICAg aWYgKHYyID09IDApCiAgICAgICAgICAgICBlciA9IERJVklERV9aRVJPOwogICAgICAgICAgIGVs c2UgaWYgKHYyID09IC0xKQogICAgICAgICAgICAgLyogQXZvaWQgb3ZlcmZsb3csIGFuZCB0aGUg eDg2IFNJR0ZQRSBvbiBJTlRfTUlOIC8gLTEuICAqLwotICAgICAgICAgICAgKnYxID0gKGludDMy X3QpIC0odWludDMyX3QpICp2MTsKKyAgICAgICAgICAgICp2MSA9IChJTlQpIC0oVUlOVCkgKnYx OwogICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICp2MSAvPSB2MjsKICAgICAgICAgICBicmVh azsKQEAgLTQ2NSwyMCArNDczLDIwIEBAIHBhcnNlX2V4cHIgKGludDMyX3QgKnYxLCBldmFsX2Vy cm9yIGVyLCB1bnNpZ25lZCBtaW5fcHJlYykKICAgICAgICAgICBicmVhazsKCiAgICAgICAgIGNh c2UgUExVUzoKLSAgICAgICAgICAqdjEgPSAoaW50MzJfdCkgKCh1aW50MzJfdCkgKnYxICsgKHVp bnQzMl90KSB2Mik7CisgICAgICAgICAgKnYxID0gKElOVCkgKChVSU5UKSAqdjEgKyAoVUlOVCkg djIpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1JTlVTOgotICAgICAgICAgICp2 MSA9IChpbnQzMl90KSAoKHVpbnQzMl90KSAqdjEgLSAodWludDMyX3QpIHYyKTsKKyAgICAgICAg ICAqdjEgPSAoSU5UKSAoKFVJTlQpICp2MSAtIChVSU5UKSB2Mik7CiAgICAgICAgICAgYnJlYWs7 CgogICAgICAgICBjYXNlIExTSElGVDoKICAgICAgICAgICB1MSA9ICp2MTsKLSAgICAgICAgICB1 MSA8PD0gKHVpbnQzMl90KSAodjIgJiAweDFmKTsKKyAgICAgICAgICB1MSA8PD0gKFVJTlQpICh2 MiAmIFNISUZUTUFTSyk7CiAgICAgICAgICAgKnYxID0gdTE7CiAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgIGNhc2UgUlNISUZUOgogICAgICAgICAgIHUxID0gKnYxIDwgMCA/IH4qdjEgOiAqdjE7 Ci0gICAgICAgICAgdTEgPj49ICh1aW50MzJfdCkgKHYyICYgMHgxZik7CisgICAgICAgICAgdTEg Pj49IChVSU5UKSAodjIgJiBTSElGVE1BU0spOwogICAgICAgICAgICp2MSA9ICp2MSA8IDAgPyB+ dTEgOiB1MTsKICAgICAgICAgICBicmVhazsKCkBAIC01NjMsMTcgKzU3MSwxOCBAQCBwYXJzZV9l eHByIChpbnQzMl90ICp2MSwgZXZhbF9lcnJvciBlciwgdW5zaWduZWQgbWluX3ByZWMpCgogLyog TWFpbiBlbnRyeSBwb2ludCwgY2FsbGVkIGZyb20gImV2YWwiLiAgKi8KIGJvb2wKLWV2YWx1YXRl IChjb25zdCBjYWxsX2luZm8gKm1lLCBjb25zdCBjaGFyICpleHByLCBzaXplX3QgbGVuLCBpbnQz Ml90ICp2YWwpCitFVkFMVUFURSAoY29uc3QgY2FsbF9pbmZvICptZSwgY29uc3QgY2hhciAqZXhw ciwgc2l6ZV90IGxlbiwgaW50NjRfdCAqcHZhbCkKIHsKICAgZXZhbF9lcnJvciBlcnI7CisgIElO VCB2YWw7CgogICBldmFsX2luaXRfbGV4IChleHByLCBsZW4pOwotICBlcnIgPSBwcmltYXJ5ICh2 YWwpOwotICBlcnIgPSBwYXJzZV9leHByICh2YWwsIGVyciwgMSk7CisgIGVyciA9IHByaW1hcnkg KCZ2YWwpOworICBlcnIgPSBwYXJzZV9leHByICgmdmFsLCBlcnIsIDEpOwoKICAgaWYgKGVyciA9 PSBOT19FUlJPUiAmJiBldmFsX3RleHQgIT0gZW5kX3RleHQpCiAgICAgewotICAgICAgaWYgKGV2 YWxfbGV4ICh2YWwpID09IEJBRE9QKQorICAgICAgaWYgKGV2YWxfbGV4ICgmdmFsKSA9PSBCQURP UCkKICAgICAgICAgZXJyID0gSU5WQUxJRF9PUEVSQVRPUjsKICAgICAgIGVsc2UKICAgICAgICAg ZXJyID0gRVhDRVNTX0lOUFVUOwpAQCAtNTg1LDYgKzU5NCw3IEBAIGV2YWx1YXRlIChjb25zdCBj YWxsX2luZm8gKm1lLCBjb25zdCBjaGFyICpleHByLCBzaXplX3QgbGVuLCBpbnQzMl90ICp2YWwp CiAgICAgewogICAgICAgLyogQ2FzZXMgd2hlcmUgcmVzdWx0IGlzIHByaW50ZWQuICAqLwogICAg IGNhc2UgTk9fRVJST1I6CisgICAgICAqcHZhbCA9IHZhbDsKICAgICAgIHJldHVybiBmYWxzZTsK CiAgICAgY2FzZSBFTVBUWV9BUkdVTUVOVDoKZGlmZiAtLWdpdCBhL3NyYy9ldmFsNjQuYyBiL3Ny Yy9ldmFsNjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNmQ1YWUxYjcK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZXZhbDY0LmMKQEAgLTAsMCArMSwzOSBAQAorLyogR05V IG00IC0tIEEgc2ltcGxlIG1hY3JvIHByb2Nlc3NvcgorCisgICBDb3B5cmlnaHQgKEMpIDE5ODkt MTk5NCwgMjAwNi0yMDE0LCAyMDE2LTIwMTcsIDIwMjAtMjAyNSBGcmVlCisgICBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBNNC4KKworICAg R05VIE00IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgR05VIE00IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKyovCisKKy8qIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZnVuY3Rpb25zIHRv IGV2YWx1YXRlIDY0LWJpdCBpbnRlZ2VyCisgICBleHByZXNzaW9ucyBmb3IgdGhlICJldmFsNjQi IG1hY3JvLCBieSByZXVzaW5nIGNvZGUgZnJvbSBldmFsLiAgVGhlCisgICBvbmx5IGVudHJ5IHBv aW50IGlzIGV2YWx1YXRlNjQgKCkuICAqLworCisjaW5jbHVkZSAibTQuaCIKKworI2RlZmluZSBF VkFMNjQKKyNkZWZpbmUgSU5UIGludDY0X3QKKyNkZWZpbmUgVUlOVCB1aW50NjRfdAorI2RlZmlu ZSBTSElGVE1BU0sgMHgzZgorI2RlZmluZSBFVkFMVUFURSBldmFsdWF0ZTY0CisKKyNpbmNsdWRl ICJldmFsLmMiCisvKgorICBEZWZpbmVkIGJ5IGV2YWwuYzoKK2Jvb2wKK2V2YWx1YXRlNjQgKGNv bnN0IGNhbGxfaW5mbyAqbWUsIGNvbnN0IGNoYXIgKmV4cHIsIHNpemVfdCBsZW4sIElOVCAqdmFs KQorICovCmRpZmYgLS1naXQgYS9zcmMvbTQuaCBiL3NyYy9tNC5oCmluZGV4IDc5ZGNhNDM4Li5j MTczNTMxOCAxMDA2NDQKLS0tIGEvc3JjL200LmgKKysrIGIvc3JjL200LmgKQEAgLTI5LDYgKzI5 LDcgQEAKICNpbmNsdWRlIDxjLWN0eXBlLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRl IDxlcnJvci5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAj aW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8c3RkYm9vbC5oPgpAQCAtNTQ2LDkgKzU0Nywx MyBAQCBleHRlcm4gdm9pZCBpbmNsdWRlX2Vudl9pbml0ICh2b2lkKTsKIGV4dGVybiB2b2lkIGFk ZF9pbmNsdWRlX2RpcmVjdG9yeSAoY29uc3QgY2hhciAqKTsKIGV4dGVybiBGSUxFICptNF9wYXRo X3NlYXJjaCAoY29uc3QgY2hhciAqLCBib29sLCBjaGFyICoqKTsKIAwKLS8qIEZpbGU6IGV2YWwu YyAgLS0tIGV4cHJlc3Npb24gZXZhbHVhdGlvbi4gICovCisvKiBGaWxlOiBldmFsLmMgIC0tLSAz Mi1iaXQgZXhwcmVzc2lvbiBldmFsdWF0aW9uLiAgKi8KCi1leHRlcm4gYm9vbCBldmFsdWF0ZSAo Y29uc3QgY2FsbF9pbmZvICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBpbnQzMl90ICopOworZXh0 ZXJuIGJvb2wgZXZhbHVhdGUgKGNvbnN0IGNhbGxfaW5mbyAqLCBjb25zdCBjaGFyICosIHNpemVf dCwgaW50NjRfdCAqKTsKKwwKKy8qIEZpbGU6IGV2YWw2NC5jICAtLS0gNjQtYml0IGV4cHJlc3Np b24gZXZhbHVhdGlvbi4gICovCisKK2V4dGVybiBib29sIGV2YWx1YXRlNjQgKGNvbnN0IGNhbGxf aW5mbyAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgaW50NjRfdCAqKTsKIAwKIC8qIEZpbGU6IGZv cm1hdC5jICAtLS0gcHJpbnRmIGxpa2UgZm9ybWF0dGluZy4gICovCgoKYmFzZS1jb21taXQ6IGRl MmFkNmRkYzkwNGVhMDdmZTlhNmY2MWZhOTQxOGIxNWZmYmZjMGIKcHJlcmVxdWlzaXRlLXBhdGNo LWlkOiA2MDlmN2YyZDEwNDQ2MzNmZGVkYjkwNTJjMDM2N2IxZDdiN2I4Y2NlCnByZXJlcXVpc2l0 ZS1wYXRjaC1pZDogYmNiYzgwZDQ0NWNjMTczN2RhM2I0NTNkNTA0MjZjOWY5NDQxODZjOQotLSAK Mi40OS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K TTQtcGF0Y2hlcyBtYWlsaW5nIGxpc3QKTTQtcGF0Y2hlc0BnbnUub3JnCmh0dHBzOi8vbGlzdHMu Z251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL200LXBhdGNoZXMK