[PATCH branch-1.6 v2 3/4] eval: Add eval64 builtin

Eric Blake via M4-patches <[email protected]> Sat, 17 May 2025 22:08:48 -0500
Newsgroups gmane.comp.gnu.m4.patches
Message-ID <[email protected]>
UE9TSVggc3RhdGVzIGluIG9uZSBwbGFjZSB0aGF0IG00IG11c3QgZG8gc2lnbmVkIG1hdGggd2l0
aCBhdCBsZWFzdAozMi1iaXQgcHJlY2lzaW9uOyBhbmQgaW4gYW5vdGhlciB0aGF0IG1hdGggbXVz
dCBiZSBkb25lIHdpdGggYXQgbGVhc3QKJ3NpZ25lZCBsb25nJy4gIFdlIGNvbXBseSB3aXRoIHRo
ZSBmb3JtZXIsIGJ1dCBub3QgdGhlIGxhdHRlciBvbgptb2Rlcm4gNjQtYml0IHBsYXRmb3Jtcywg
d2hlcmUgJ3NpZ25lZCBsb25nJyBpcyA2NC1iaXQuICBXaGlsZSB3ZQpjb3VsZCB1bmlsYXRlcmFs
bHkgY2hhbmdlIHRvIGp1c3QgNjQtYml0IG1hdGgsIHRoYXQgaXMgbW9yZSBsaWtlbHkgdG8KY2F1
c2UgYmFjay1jb21wYXQgaXNzdWVzIHdpdGggY29kZSB0aGF0IGhhcyBjb21lIHRvIGV4cGVjdCAz
Mi1iaXQKbWF0aDsgYmV0dGVyIGlzIHRvIGdpdmUgc2NyaXB0cyB0aGUgb3B0aW9uIHRvIGNob29z
ZSB3aGljaCB3aWR0aCB0aGV5CndhbnQsIGJ5IGludHJvZHVjaW5nIGEgbmV3IGJ1aWx0aW4uCgpT
aW5jZSBvdGhlciBwbGFjZXMgaW4gbTQgZG8gbm90IGFsbG93IG1vcmUgdGhhbiAyRyBvZiBjb250
ZW50IGluIGEKc2luZ2xlIG1hY3JvIG5hbWUgb3IgYm9keSwgYW5kIG91dHB1dCBpbiByYWRpeCAx
IGlzIGFscmVhZHkgYSBHTlUKZXh0ZW5zaW9uLCBJIG9wdGVkIHRvIG1ha2UgaXQgYW4gZXJyb3Ig
dG8gdHJ5IGFuZCBhYnVzZSBldmFsNjQgdG8Kb3V0cHV0IHZhbHVlcyB3aXRoIG1hZ25pdHVkZSBt
b3JlIHRoYW4gMkcuCgoqIHNyYy9ldmFsLmMgKElOVCwgVUlOVCwgU0hJRlRNQVNLLCBFVkFMVUFU
RSk6IE5ldyBtYWNyb3MuCihldmFsX2xleCwgcHJpbWFyeSwgcGFyc2VfZXhwciwgZXZhbHVhdGUp
OiBVc2UgdGhlbSB0byBhbGxvdyBib3RoCjMyLSBhbmQgNjQtIGJpdCBjb21waWxhdGlvbi4KKiBz
cmMvZXZhbDY0LmM6IE5ldyBmaWxlLCBpbXBsZW1lbnRpbmcgZXZhbHVhdGU2NC4KKiBzcmMvTWFr
ZWZpbGUuYW0gKG00X1NPVVJDRVMpOiBCdWlsZCBpdC4KKiBzcmMvbTQuaCAoZXZhbHVhdGU2NCk6
IE5ldyBwcm90b3R5cGUuCiogc3JjL2J1aWx0aW4uYyAoYnVpbHRpbl90YWIpOiBFeHBvc2UgbmV3
IGJ1aWx0aW4uCihudG9hKTogU3VwcG9ydCA2NC1iaXQgb3V0cHV0LgoobTRfZXZhbCk6IFNwbGl0
IGJvZHkuLi4KKGV2YWwpOiAuLi5pbnRvIG5ldyBoZWxwZXIuICBTd2l0Y2ggdG8gNjQtYml0IHN1
cHBvcnQsIGV4Y2VwdCB0aGF0CnJhZGl4IDEgaXMgc3RpbGwgY2FwcGVkIHRvIDJHLgoobTRfZXZh
bDY0KTogTmV3IGZ1bmN0aW9uLgoqIGRvYy9tNC50ZXhpIChFdmFsKTogRG9jdW1lbnQgdGhpcywg
aW5jbHVkaW5nIHNvbWUgZXhhbXBsZXMgdGhhdApnZXQgcnVuIGJ5IHRoZSB0ZXN0c3VpdGUuCiog
TkVXUzogTGlrZXdpc2UuCi0tLQogTkVXUyAgICAgICAgICAgIHwgIDIgKysKIGRvYy9tNC50ZXhp
ICAgICB8IDcyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t
LS0KIHNyYy9NYWtlZmlsZS5hbSB8ICAyICstCiBzcmMvYnVpbHRpbi5jICAgfCAzNyArKysrKysr
KysrKysrKysrKysrLS0tLS0tCiBzcmMvZXZhbC5jICAgICAgfCA2MyArKysrKysrKysrKysrKysr
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvZXZhbDY0LmMgICAgfCAzOSArKysrKysr
KysrKysrKysrKysrKysrKysrKysKIHNyYy9tNC5oICAgICAgICB8ICA5ICsrKysrLS0KIDcgZmls
ZXMgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IHNyYy9ldmFsNjQuYwoKZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCmluZGV4IDBi
NDk5YTIwLi5kZDNlYTA0YiAxMDA2NDQKLS0tIGEvTkVXUworKysgYi9ORVdTCkBAIC0xMzIsNiAr
MTMyLDggQEAgR05VIE00IE5FV1MgLSBVc2VyIHZpc2libGUgY2hhbmdlcy4KICAgIGJ1aWx0aW4g
bm93IHJlZnVzZXMgdG8gcmVjb2duaXplIGA9JyBhcyBhIHN5bm9ueW0gZm9yIGA9PScgKHRoaXMg
aGFkCiAgICBlbWl0dGVkIGEgd2FybmluZyBzaW5jZSAxLjQuOGIpLgoKKyoqIEFkZCBhIG5ldyBg
ZXZhbDY0JyBidWlsdGluIHRoYXQgb3BlcmF0ZXMgb24gNjQtYml0IGludGVnZXJzLgorCiAqKiBB
IG51bWJlciBvZiBwb3J0YWJpbGl0eSBpbXByb3ZlbWVudHMgaW5oZXJpdGVkIGZyb20gZ251bGli
LgoKCmRpZmYgLS1naXQgYS9kb2MvbTQudGV4aSBiL2RvYy9tNC50ZXhpCmluZGV4IDk3ZGE1NWRk
Li5iMGEzNWVhZSAxMDA2NDQKLS0tIGEvZG9jL200LnRleGkKKysrIGIvZG9jL200LnRleGkKQEAg
LTcwNzAsMTMgKzcwNzAsMTYgQEAgRXZhbAogSW50ZWdlciBleHByZXNzaW9ucyBhcmUgZXZhbHVh
dGVkIHdpdGggQGNvZGV7ZXZhbH06CgogQGRlZmZuIEJ1aWx0aW4gZXZhbCAoQHZhcntleHByZXNz
aW9ufSwgQGR2YXJ7cmFkaXgsIDEwfSwgQG92YXJ7d2lkdGh9KQorQGRlZmZueCBCdWlsdGluIGV2
YWw2NCAoQHZhcntleHByZXNzaW9ufSwgQGR2YXJ7cmFkaXgsIDEwfSwgQG92YXJ7d2lkdGh9KQog
RXhwYW5kcyB0byB0aGUgdmFsdWUgb2YgQHZhcntleHByZXNzaW9ufS4gIFRoZSBleHBhbnNpb24g
aXMgZW1wdHkKIGlmIGEgcHJvYmxlbSBpcyBlbmNvdW50ZXJlZCB3aGlsZSBwYXJzaW5nIHRoZSBh
cmd1bWVudHMuICBJZiBzcGVjaWZpZWQsCiBAdmFye3JhZGl4fSBhbmQgQHZhcnt3aWR0aH0gY29u
dHJvbCB0aGUgZm9ybWF0IG9mIHRoZSBvdXRwdXQuCgotQ2FsY3VsYXRpb25zIGFyZSBkb25lIHdp
dGggMzItYml0IHNpZ25lZCBudW1iZXJzLiAgT3ZlcmZsb3cgc2lsZW50bHkKLXJlc3VsdHMgaW4g
d3JhcGFyb3VuZC4gIEEgd2FybmluZyBpcyBpc3N1ZWQgaWYgZGl2aXNpb24gYnkgemVybyBpcwot
YXR0ZW1wdGVkLCBvciBpZiBAdmFye2V4cHJlc3Npb259IGNvdWxkIG5vdCBiZSBwYXJzZWQuCitD
YWxjdWxhdGlvbnMgYXJlIGRvbmUgd2l0aCAzMi1iaXQgc2lnbmVkIG51bWJlcnMgZm9yIEBjb2Rl
e2V2YWx9LCBhbmQKKzY0LWJpdCBzaWduZWQgbnVtYmVycyBmb3IgQGNvZGV7ZXZhbDY0fSAodGhl
IGxhdHRlciB3YXMgaW50cm9kdWNlZCBpbiBNNAorMS42KS4gIE92ZXJmbG93IHNpbGVudGx5IHJl
c3VsdHMgaW4gd3JhcGFyb3VuZC4gIEEgd2FybmluZyBpcyBpc3N1ZWQgaWYKK2RpdmlzaW9uIGJ5
IHplcm8gaXMgYXR0ZW1wdGVkLCBvciBpZiBAdmFye2V4cHJlc3Npb259IGNvdWxkIG5vdCBiZQor
cGFyc2VkLgoKIEV4cHJlc3Npb25zIGNhbiBjb250YWluIHRoZSBmb2xsb3dpbmcgb3BlcmF0b3Jz
LCBsaXN0ZWQgaW4gb3JkZXIgb2YKIGRlY3JlYXNpbmcgcHJlY2VkZW5jZS4KQEAgLTcxMTIsNyAr
NzExNSw3IEBAIEV2YWwKIENvbmRpdGlvbmFsIHRlcm5hcnkKIEBlbmQgdGFibGUKCi1UaGUgbWFj
cm8gQGNvZGV7ZXZhbH0gaXMgcmVjb2duaXplZCBvbmx5IHdpdGggcGFyYW1ldGVycy4KK1RoZSBt
YWNyb3MgQGNvZGV7ZXZhbH0gYW5kIEBjb2Rle2V2YWw2NH0gYXJlIHJlY29nbml6ZWQgb25seSB3
aXRoIHBhcmFtZXRlcnMuCiBAZW5kIGRlZmZuCgogQWxsIGJpbmFyeSBvcGVyYXRvcnMsIGV4Y2Vw
dCBleHBvbmVudGlhdGlvbiwgYXJlIGxlZnQgYXNzb2NpYXRpdmUuICBDCkBAIC03MzI4LDMyICs3
MzMxLDU2IEBAIEV2YWwKIHBhc3NlZCB0byBAY29kZXtldmFsfS4KCiBTb21lIGNhbGN1bGF0aW9u
cyBhcmUgbm90IHBvcnRhYmxlIHRvIG90aGVyIGltcGxlbWVudGF0aW9ucywgc2luY2UgdGhleQot
aGF2ZSB1bmRlZmluZWQgc2VtYW50aWNzIGluIEMsIGJ1dCBHTlUgQGNvZGV7bTR9IGhhcwotd2Vs
bC1kZWZpbmVkIGJlaGF2aW9yIG9uIG92ZXJmbG93LiAgV2hlbiBzaGlmdGluZywgYW4gb3V0LW9m
LXJhbmdlIHNoaWZ0Ci1hbW91bnQgaXMgaW1wbGljaXRseSBicm91Z2h0IGludG8gdGhlIHJhbmdl
IG9mIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMKLXVzaW5nIGFuIGltcGxpY2l0IGJpdC13aXNlIGFu
ZCB3aXRoIDB4MWYpLgoraGF2ZSB1bmRlZmluZWQgc2VtYW50aWNzIGluIEMsIGJ1dCBHTlUgQGNv
ZGV7bTR9IGhhcyB3ZWxsLWRlZmluZWQKK2JlaGF2aW9yIG9uIG92ZXJmbG93LiAgV2hlbiBzaGlm
dGluZywgYW4gb3V0LW9mLXJhbmdlIHNoaWZ0IGFtb3VudCBpcworaW1wbGljaXRseSBicm91Z2h0
IGludG8gdGhlIHJhbmdlIG9mIDMyLWJpdCBzaWduZWQgaW50ZWdlcnMgdXNpbmcgYW4KK2ltcGxp
Y2l0IGJpdC13aXNlIGFuZCB3aXRoIDB4MWYpLiAgRm9yIEBjb2Rle2V2YWw2NH0sIHRoZSBpbXBs
aWNpdCBtYXNrCitpcyAweDNmLiAgSG93ZXZlciwgb3V0cHV0IGluIHJhZGl4IDEgb25seSB3b3Jr
cyBmb3Igc2lnbmVkIHZhbHVlcyB0aGF0CitmaXQgaW4gMzIgYml0cywgaW4gcGFydCBiZWNhdXNl
IHRoZSBAdmFye3dpZHRofSBwYXJhbWV0ZXIgaXMgc3RpbGwKK2xpbWl0ZWQgdG8gMzIgYml0cy4K
CiBAZXhhbXBsZQotZGVmaW5lKGBtYXhfaW50JywgZXZhbChgMHg3ZmZmZmZmZicpKQorZGVmaW5l
KGBtYXhfaW50JywgZXZhbChgMHg3ZmZmZmZmZicpKWRubAorZGVmaW5lKGBtYXhfbG9uZycsIGV2
YWw2NChgMHg3ZmZmZmZmZmZmZmZmZmZmJykpCiBAcmVzdWx0e30KLWRlZmluZShgbWluX2ludCcs
IGluY3IobWF4X2ludCkpCitkZWZpbmUoYG1pbl9pbnQnLCBpbmNyKG1heF9pbnQpKWRubAorZGVm
aW5lKGBtaW5fbG9uZycsIGV2YWw2NChtYXhfbG9uZyArIDEpKQogQHJlc3VsdHt9Ci1ldmFsKG1p
bl9pbnRgIDwgMCcpCi1AcmVzdWx0e30xCi1ldmFsKG1heF9pbnRgID4gMCcpCi1AcmVzdWx0e30x
CitldmFsKG1pbl9pbnRgIDwgMCcpIGV2YWw2NChtaW5fbG9uZ2AgPCAwJykKK0ByZXN1bHR7fTEg
MQorZXZhbChtYXhfaW50YCA+IDAnKSBldmFsNjQobWF4X2xvbmdgID4gMCcpCitAcmVzdWx0e30x
IDEKIGlmZWxzZShldmFsKG1pbl9pbnRgIC8gLTEnKSwgbWluX2ludCwgYG92ZXJmbG93IG9jY3Vy
cmVkJykKIEByZXN1bHR7fW92ZXJmbG93IG9jY3VycmVkCitpZmVsc2UoZXZhbDY0KG1pbl9sb25n
YCAvIC0xJyksIG1pbl9sb25nLCBgb3ZlcmZsb3cgb2NjdXJyZWQnKQorQHJlc3VsdHt9b3ZlcmZs
b3cgb2NjdXJyZWQKIG1pbl9pbnQKIEByZXN1bHR7fS0yMTQ3NDgzNjQ4Ci1ldmFsKGAweDgwMDAw
MDAwICUgLTEnKQotQHJlc3VsdHt9MAotZXZhbChgLTQgPj4gMScpCi1AcmVzdWx0e30tMgotZXZh
bChgLTQgPj4gLTMxJykKLUByZXN1bHR7fS0yCi1ldmFsKGAtNCA+PiAzMycpCi1AcmVzdWx0e30t
MgorbWluX2xvbmcKK0ByZXN1bHR7fS05MjIzMzcyMDM2ODU0Nzc1ODA4CitldmFsKGAweDgwMDAw
MDAwICUgLTEnKSBldmFsNjQoYDB4ODAwMDAwMDAwMDAwMDAwMCAlIC0xJykKK0ByZXN1bHR7fTAg
MAorZXZhbChgLTQgPj4gMScpIGV2YWw2NChgLTQgPj4gMScpCitAcmVzdWx0e30tMiAtMgorZXZh
bChgLTQgPj4gLTMxJykgZXZhbDY0KGAtNCA+PiAtNjMnKQorQHJlc3VsdHt9LTIgLTIKK2V2YWwo
YC00ID4+IDMzJykgZXZhbDY0KGAtNCA+PiA2NScpCitAcmVzdWx0e30tMiAtMgorZXZhbDY0KGAw
eDgwMDAwMDAwJywgYDEnKQorQGVycm9ye31tNDpzdGRpbjoxNTogd2FybmluZzogZXZhbDY0OiBt
YWduaXR1ZGUgdG9vIGxhcmdlIGZvciBiYXNlIDE6IDIxNDc0ODM2NDgKK0ByZXN1bHR7fQorQGVu
ZCBleGFtcGxlCisKK0lmIHlvdXIgc2NyaXB0IHdhbnRzIHRvIHVzZSBsYXJnZXIgbWF0aCBieSBk
ZWZhdWx0LCBpdCBpcyBlYXN5IHRvCithcnJhbmdlIGZvciB0aGF0IHVwIGZyb250IHdpdGggQGNv
ZGV7ZGVmbn06CisKK0BleGFtcGxlCitldmFsKGA5MDAwMCAqIDkwMDAwJykKK0ByZXN1bHR7fS00
ODk5MzQ1OTIKK2RlZmluZShgZXZhbCcsIGRlZm4oYGV2YWw2NCcpKQorQHJlc3VsdHt9CitldmFs
KGA5MDAwMCAqIDkwMDAwJykKK0ByZXN1bHR7fTgxMDAwMDAwMDAKIEBlbmQgZXhhbXBsZQoKIElm
IEB2YXJ7cmFkaXh9IGlzIHNwZWNpZmllZCwgaXQgc3BlY2lmaWVzIHRoZSByYWRpeCB0byBiZSB1
c2VkIGluIHRoZQpAQCAtNzQwNyw2ICs3NDM0LDcgQEAgRXZhbAogQHJlc3VsdHt9YQogQGVuZCBl
eGFtcGxlCgorCiBAbm9kZSBTaGVsbCBjb21tYW5kcwogQGNoYXB0ZXIgTWFjcm9zIGZvciBydW5u
aW5nIHNoZWxsIGNvbW1hbmRzCgpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01h
a2VmaWxlLmFtCmluZGV4IDBmNTY3MDEyLi4wOGY0OGFmZSAxMDA2NDQKLS0tIGEvc3JjL01ha2Vm
aWxlLmFtCisrKyBiL3NyYy9NYWtlZmlsZS5hbQpAQCAtMjYsNyArMjYsNyBAQCBBTV9DRkxBR1Mg
PSAkKFdBUk5fQ0ZMQUdTKSAkKFdFUlJPUl9DRkxBR1MpCiBBTV9MREZMQUdTID0gJChPUzJfTERG
TEFHUykKIGJpbl9QUk9HUkFNUyA9IG00CiBub2luc3RfSEVBREVSUyA9IG00LmgKLW00X1NPVVJD
RVMgPSBtNC5jIGJ1aWx0aW4uYyBkZWJ1Zy5jIGV2YWwuYyBmb3JtYXQuYyBmcmVlemUuYyBpbnB1
dC5jIFwKK200X1NPVVJDRVMgPSBtNC5jIGJ1aWx0aW4uYyBkZWJ1Zy5jIGV2YWwuYyBldmFsNjQu
YyBmb3JtYXQuYyBmcmVlemUuYyBpbnB1dC5jIFwKIG1hY3JvLmMgb3V0cHV0LmMgcGF0aC5jIHN5
bXRhYi5jCiBMREFERCA9IC4uL2xpYi9saWJtNC5hICQoTElCTTRfTElCREVQUykgXAogICAkKENM
T0NLX1RJTUVfTElCKSAkKEdFVExPQ0FMRU5BTUVfTF9MSUIpICQoR0VUUkFORE9NX0xJQikgXApk
aWZmIC0tZ2l0IGEvc3JjL2J1aWx0aW4uYyBiL3NyYy9idWlsdGluLmMKaW5kZXggYmYwZDE3OTgu
LmJiYTgwZTMzIDEwMDY0NAotLS0gYS9zcmMvYnVpbHRpbi5jCisrKyBiL3NyYy9idWlsdGluLmMK
QEAgLTU3LDYgKzU3LDcgQEAgREVDTEFSRSAobTRfZHVtcGRlZik7CiBERUNMQVJFIChtNF9lcnJw
cmludCk7CiBERUNMQVJFIChtNF9lc3lzY21kKTsKIERFQ0xBUkUgKG00X2V2YWwpOworREVDTEFS
RSAobTRfZXZhbDY0KTsKIERFQ0xBUkUgKG00X2Zvcm1hdCk7CiBERUNMQVJFIChtNF9pZmRlZik7
CiBERUNMQVJFIChtNF9pZmVsc2UpOwpAQCAtMTA5LDYgKzExMCw3IEBAIHN0YXRpYyBidWlsdGlu
IGNvbnN0IGJ1aWx0aW5fdGFiW10gPSB7CiAgIHsiZXJycHJpbnQiLCBmYWxzZSwgZmFsc2UsIHRy
dWUsIG00X2VycnByaW50fSwKICAgeyJlc3lzY21kIiwgdHJ1ZSwgZmFsc2UsIHRydWUsIG00X2Vz
eXNjbWR9LAogICB7ImV2YWwiLCBmYWxzZSwgZmFsc2UsIHRydWUsIG00X2V2YWx9LAorICB7ImV2
YWw2NCIsIHRydWUsIGZhbHNlLCB0cnVlLCBtNF9ldmFsNjR9LAogICB7ImZvcm1hdCIsIHRydWUs
IGZhbHNlLCB0cnVlLCBtNF9mb3JtYXR9LAogICB7ImlmZGVmIiwgZmFsc2UsIHRydWUsIHRydWUs
IG00X2lmZGVmfSwKICAgeyJpZmVsc2UiLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgbTRfaWZlbHNlfSwK
QEAgLTU3MSwxMCArNTczLDEwIEBAIHN0YXRpYyBjaGFyIGNvbnN0IGRpZ2l0c1tdID0gIjAxMjM0
NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CiAvKiBUaGUgZnVuY3Rpb24gbnRvYSAo
KSBjb252ZXJ0cyBWQUxVRSB0byBhIHNpZ25lZCBBU0NJSQogICAgcmVwcmVzZW50YXRpb24gaW4g
cmFkaXggUkFESVgsIHdpdGggdGhlIGVuZGluZyBcMCBpbiAqRU5ELiAgKi8KIHN0YXRpYyBjb25z
dCBjaGFyICoKLW50b2EgKGludDMyX3QgdmFsdWUsIGludCByYWRpeCwgY29uc3QgY2hhciAqKmVu
ZCkKK250b2EgKGludDY0X3QgdmFsdWUsIGludCByYWRpeCwgY29uc3QgY2hhciAqKmVuZCkKIHsK
ICAgYm9vbCBuZWdhdGl2ZTsKLSAgdWludDMyX3QgdXZhbHVlOworICB1aW50NjRfdCB1dmFsdWU7
CiAgIC8qIFNpemVkIGZvciByYWRpeCAyLCBwbHVzIHNpZ24gYW5kIHRyYWlsaW5nIE5VTC4gICov
CiAgIHN0YXRpYyBjaGFyIHN0cltzaXplb2YgKHZhbHVlKSAqIENIQVJfQklUICsgMl07CiAgIGNo
YXIgKnMgPSAmc3RyW3NpemVvZiBzdHJdOwpAQCAtNTg1LDEyICs1ODcsMTIgQEAgbnRvYSAoaW50
MzJfdCB2YWx1ZSwgaW50IHJhZGl4LCBjb25zdCBjaGFyICoqZW5kKQogICBpZiAodmFsdWUgPCAw
KQogICAgIHsKICAgICAgIG5lZ2F0aXZlID0gdHJ1ZTsKLSAgICAgIHV2YWx1ZSA9IC0odWludDMy
X3QpIHZhbHVlOworICAgICAgdXZhbHVlID0gLSh1aW50NjRfdCkgdmFsdWU7CiAgICAgfQogICBl
bHNlCiAgICAgewogICAgICAgbmVnYXRpdmUgPSBmYWxzZTsKLSAgICAgIHV2YWx1ZSA9ICh1aW50
MzJfdCkgdmFsdWU7CisgICAgICB1dmFsdWUgPSAodWludDY0X3QpIHZhbHVlOwogICAgIH0KCiAg
IGRvCkBAIC0xMjUzLDEwICsxMjU1LDExIEBAIG00X3N5c3ZhbCAoc3RydWN0IG9ic3RhY2sgKm9i
cywgaW50IGFyZ2MgTUFZQkVfVU5VU0VELAogICAgVGhlIGFjdHVhbCB3b3JrIGlzIGRvbmUgaW4g
dGhlIGZ1bmN0aW9uIGV2YWx1YXRlICgpLCB3aGljaCBsaXZlcyBpbgogICAgZXZhbC5jLiAgKi8K
IHN0YXRpYyB2b2lkCi1tNF9ldmFsIChzdHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJnYywgbWFj
cm9fYXJndW1lbnRzICphcmd2KQorZXZhbCAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2Ms
IG1hY3JvX2FyZ3VtZW50cyAqYXJndiwKKyAgICAgIGJvb2wgZnVuYyAoY29uc3QgY2FsbF9pbmZv
ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBpbnQ2NF90ICopKQogewogICBjb25zdCBjYWxsX2lu
Zm8gKm1lID0gYXJnX2luZm8gKGFyZ3YpOwotICBpbnQzMl90IHZhbHVlID0gMDsKKyAgaW50NjRf
dCB2YWx1ZSA9IDA7CiAgIGludCByYWRpeCA9IDEwOwogICBpbnQgbWluID0gMTsKICAgY29uc3Qg
Y2hhciAqczsKQEAgLTEyODMsMTcgKzEyODYsMjMgQEAgbTRfZXZhbCAoc3RydWN0IG9ic3RhY2sg
Km9icywgaW50IGFyZ2MsIG1hY3JvX2FyZ3VtZW50cyAqYXJndikKICAgICAgIHJldHVybjsKICAg
ICB9CgotICBpZiAoZXZhbHVhdGUgKG1lLCBBUkcgKDEpLCBBUkdfTEVOICgxKSwgJnZhbHVlKSkK
KyAgaWYgKGZ1bmMgKG1lLCBBUkcgKDEpLCBBUkdfTEVOICgxKSwgJnZhbHVlKSkKICAgICByZXR1
cm47CgogICBpZiAocmFkaXggPT0gMSkKICAgICB7CisgICAgICBpZiAodmFsdWUgPCBJTlRfTUlO
IHx8IHZhbHVlID4gSU5UX01BWCkKKyAgICAgICAgeworICAgICAgICAgIG00X3dhcm4gKDAsIG1l
LCBfKCJtYWduaXR1ZGUgdG9vIGxhcmdlIGZvciBiYXNlIDE6ICUiIFBSSWQ2NCksCisgICAgICAg
ICAgICAgICAgICAgdmFsdWUpOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAg
aWYgKHZhbHVlIDwgMCkKICAgICAgICAgewogICAgICAgICAgIG9ic3RhY2tfMWdyb3cgKG9icywg
Jy0nKTsKICAgICAgICAgICB2YWx1ZSA9IC12YWx1ZTsKICAgICAgICAgfQotICAgICAgaWYgKHZh
bHVlICsgMFUgPCBtaW4gKyAwVSkKKyAgICAgIGlmICh2YWx1ZSArIDBVTEwgPCBtaW4gKyAwVUxM
KQogICAgICAgICB7CiAgICAgICAgICAgb2JzdGFja19ibGFuayAob2JzLCBtaW4gLSB2YWx1ZSk7
CiAgICAgICAgICAgbWVtc2V0ICgoY2hhciAqKSBvYnN0YWNrX25leHRfZnJlZSAob2JzKSAtICht
aW4gLSB2YWx1ZSksICcwJywKQEAgLTEzMjEsNiArMTMzMCwxOCBAQCBtNF9ldmFsIChzdHJ1Y3Qg
b2JzdGFjayAqb2JzLCBpbnQgYXJnYywgbWFjcm9fYXJndW1lbnRzICphcmd2KQogICBvYnN0YWNr
X2dyb3cgKG9icywgcywgbGVuKTsKIH0KCitzdGF0aWMgdm9pZAorbTRfZXZhbCAoc3RydWN0IG9i
c3RhY2sgKm9icywgaW50IGFyZ2MsIG1hY3JvX2FyZ3VtZW50cyAqYXJndikKK3sKKyAgZXZhbCAo
b2JzLCBhcmdjLCBhcmd2LCBldmFsdWF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCittNF9ldmFsNjQg
KHN0cnVjdCBvYnN0YWNrICpvYnMsIGludCBhcmdjLCBtYWNyb19hcmd1bWVudHMgKmFyZ3YpCit7
CisgIGV2YWwgKG9icywgYXJnYywgYXJndiwgZXZhbHVhdGU2NCk7Cit9CisKIHN0YXRpYyB2b2lk
CiBtNF9pbmNyIChzdHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJnYywgbWFjcm9fYXJndW1lbnRz
ICphcmd2KQogewpkaWZmIC0tZ2l0IGEvc3JjL2V2YWwuYyBiL3NyYy9ldmFsLmMKaW5kZXggZTNi
YjhiMmMuLjE4NDU0ZDdlIDEwMDY0NAotLS0gYS9zcmMvZXZhbC5jCisrKyBiL3NyYy9ldmFsLmMK
QEAgLTIyLDkgKzIyLDE2IEBACiAvKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGZ1bmN0aW9ucyB0
byBldmFsdWF0ZSBpbnRlZ2VyIGV4cHJlc3Npb25zIGZvcgogICAgdGhlICJldmFsIiBtYWNyby4g
IEl0IGlzIGEgbGl0dGxlLCBmYWlybHkgc2VsZi1jb250YWluZWQgbW9kdWxlLCB3aXRoCiAgICBp
dHMgb3duIHNjYW5uZXIsIGFuZCBhIHJlY3Vyc2l2ZSBkZXNjZW50IHBhcnNlci4gIFRoZSBvbmx5
IGVudHJ5IHBvaW50Ci0gICBpcyBldmFsdWF0ZSAoKS4gICovCisgICBpcyBldmFsdWF0ZSAoKS4g
IFRoaXMgZmlsZSBpcyBhbHNvIHVzZWQgdG8gaW1wbGVtZW50IGV2YWw2NC4gICovCgotI2luY2x1
ZGUgIm00LmgiCisjaWZuZGVmIEVWQUw2NAorIyBpbmNsdWRlICJtNC5oIgorCisjIGRlZmluZSBJ
TlQgaW50MzJfdAorIyBkZWZpbmUgVUlOVCB1aW50MzJfdAorIyBkZWZpbmUgU0hJRlRNQVNLIDB4
MWYKKyMgZGVmaW5lIEVWQUxVQVRFIGV2YWx1YXRlCisjZW5kaWYgLyogIUVWQUw2NCAqLwoKIC8q
IEV2YWx1YXRlcyB0b2tlbiB0eXBlcy4gICovCgpAQCAtODgsOCArOTUsOSBAQCB0eXBlZGVmIGVu
dW0gZXZhbF9lcnJvcgogfQogZXZhbF9lcnJvcjsKCi1zdGF0aWMgZXZhbF9lcnJvciBwcmltYXJ5
IChpbnQzMl90ICopOwotc3RhdGljIGV2YWxfZXJyb3IgcGFyc2VfZXhwciAoaW50MzJfdCAqLCBl
dmFsX2Vycm9yLCB1bnNpZ25lZCk7CisKK3N0YXRpYyBldmFsX2Vycm9yIHByaW1hcnkgKElOVCAq
KTsKK3N0YXRpYyBldmFsX2Vycm9yIHBhcnNlX2V4cHIgKElOVCAqLCBldmFsX2Vycm9yLCB1bnNp
Z25lZCk7CgogLyogTGV4aWNhbCBmdW5jdGlvbnMuICAqLwoKQEAgLTEyMSw3ICsxMjksNyBAQCBl
dmFsX3VuZG8gKHZvaWQpCiAvKiBWQUwgaXMgbnVtZXJpY2FsIHZhbHVlLCBpZiBhbnkuICAqLwoK
IHN0YXRpYyBldmFsX3Rva2VuCi1ldmFsX2xleCAoaW50MzJfdCAqdmFsKQorZXZhbF9sZXggKElO
VCAqdmFsKQogewogICB3aGlsZSAoZXZhbF90ZXh0ICE9IGVuZF90ZXh0ICYmIGNfaXNzcGFjZSAo
KmV2YWxfdGV4dCkpCiAgICAgZXZhbF90ZXh0Kys7CkBAIC0xNDAsNyArMTQ4LDcgQEAgZXZhbF9s
ZXggKGludDMyX3QgKnZhbCkKICAgICAgIC8qIFRoZSBkb2N1bWVudGF0aW9uIHNheXMgdGhhdCAi
b3ZlcmZsb3cgc2lsZW50bHkgcmVzdWx0cyBpbiB3cmFwYXJvdW5kIi4KICAgICAgICAgIFRoZXJl
Zm9yZSB1c2UgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIHRvIGF2b2lkIHVuZGVmaW5lZCBiZWhh
dmlvdXIKICAgICAgICAgIHdoZW4gcGFyc2luZyAnLTIxNDc0ODM2NDgnLiAgKi8KLSAgICAgIHVp
bnQzMl90IHZhbHVlOworICAgICAgVUlOVCB2YWx1ZTsKCiAgICAgICBpZiAoKmV2YWxfdGV4dCA9
PSAnMCcpCiAgICAgICAgIHsKQEAgLTMyMiwxMCArMzMwLDEwIEBAIGV2YWxfbGV4IChpbnQzMl90
ICp2YWwpCgogLyogUGFyc2UgYChleHByKScsIHVuYXJ5IG9wZXJhdG9ycywgYW5kIG51bWJlcnMu
ICAqLwogc3RhdGljIGV2YWxfZXJyb3IKLXByaW1hcnkgKGludDMyX3QgKnYxKQorcHJpbWFyeSAo
SU5UICp2MSkKIHsKICAgZXZhbF9lcnJvciBlcjsKLSAgaW50MzJfdCB2MjsKKyAgSU5UIHYyOwoK
ICAgc3dpdGNoIChldmFsX2xleCAodjEpKQogICAgIHsKQEAgLTM2MCw3ICszNjgsNyBAQCBwcmlt
YXJ5IChpbnQzMl90ICp2MSkKICAgICAgIHJldHVybiBwcmltYXJ5ICh2MSk7CiAgICAgY2FzZSBN
SU5VUzoKICAgICAgIGVyID0gcHJpbWFyeSAodjEpOwotICAgICAgKnYxID0gKGludDMyX3QpIC0o
dWludDMyX3QpICp2MTsKKyAgICAgICp2MSA9IChJTlQpIC0oVUlOVCkgKnYxOwogICAgICAgcmV0
dXJuIGVyOwogICAgIGNhc2UgTk9UOgogICAgICAgZXIgPSBwcmltYXJ5ICh2MSk7CkBAIC0zODgs
MTcgKzM5NiwxNyBAQCBwcmltYXJ5IChpbnQzMl90ICp2MSkKCiAvKiBQYXJzZSBiaW5hcnkgb3Bl
cmF0b3JzIHdpdGggYXQgbGVhc3QgTUlOX1BSRUMgcHJlY2VkZW5jZS4gICovCiBzdGF0aWMgZXZh
bF9lcnJvcgotcGFyc2VfZXhwciAoaW50MzJfdCAqdjEsIGV2YWxfZXJyb3IgZXIsIHVuc2lnbmVk
IG1pbl9wcmVjKQorcGFyc2VfZXhwciAoSU5UICp2MSwgZXZhbF9lcnJvciBlciwgdW5zaWduZWQg
bWluX3ByZWMpCiB7CiAgIGV2YWxfdG9rZW4gZXQ7CiAgIGV2YWxfdG9rZW4gZXQyOwogICBldmFs
X2Vycm9yIGVyMjsKICAgZXZhbF9lcnJvciBlcjM7Ci0gIGludDMyX3QgdjI7Ci0gIGludDMyX3Qg
djM7Ci0gIHVpbnQzMl90IHUxOwotICB1aW50MzJfdCB1MjsKLSAgdWludDMyX3QgdTM7CisgIElO
VCB2MjsKKyAgSU5UIHYzOworICBVSU5UIHUxOworICBVSU5UIHUyOworICBVSU5UIHUzOwoKICAg
aWYgKGVyID49IFNZTlRBWF9FUlJPUikKICAgICByZXR1cm4gZXI7CkBAIC00NjAsMTQgKzQ2OCwx
NCBAQCBwYXJzZV9leHByIChpbnQzMl90ICp2MSwgZXZhbF9lcnJvciBlciwgdW5zaWduZWQgbWlu
X3ByZWMpCiAgICAgICAgICAgYnJlYWs7CgogICAgICAgICBjYXNlIFRJTUVTOgotICAgICAgICAg
ICp2MSA9IChpbnQzMl90KSAoKHVpbnQzMl90KSAqdjEgKiAodWludDMyX3QpIHYyKTsKKyAgICAg
ICAgICAqdjEgPSAoSU5UKSAoKFVJTlQpICp2MSAqIChVSU5UKSB2Mik7CiAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgRElWSURFOgogICAgICAgICAgIGlmICh2MiA9PSAwKQogICAgICAg
ICAgICAgZXIgPSBESVZJREVfWkVSTzsKICAgICAgICAgICBlbHNlIGlmICh2MiA9PSAtMSkKICAg
ICAgICAgICAgIC8qIEF2b2lkIG92ZXJmbG93LCBhbmQgdGhlIHg4NiBTSUdGUEUgb24gSU5UX01J
TiAvIC0xLiAgKi8KLSAgICAgICAgICAgICp2MSA9IChpbnQzMl90KSAtKHVpbnQzMl90KSAqdjE7
CisgICAgICAgICAgICAqdjEgPSAoSU5UKSAtKFVJTlQpICp2MTsKICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAqdjEgLz0gdjI7CiAgICAgICAgICAgYnJlYWs7CkBAIC00ODIsMjUgKzQ5MCwy
NSBAQCBwYXJzZV9leHByIChpbnQzMl90ICp2MSwgZXZhbF9lcnJvciBlciwgdW5zaWduZWQgbWlu
X3ByZWMpCiAgICAgICAgICAgYnJlYWs7CgogICAgICAgICBjYXNlIFBMVVM6Ci0gICAgICAgICAg
KnYxID0gKGludDMyX3QpICgodWludDMyX3QpICp2MSArICh1aW50MzJfdCkgdjIpOworICAgICAg
ICAgICp2MSA9IChJTlQpICgoVUlOVCkgKnYxICsgKFVJTlQpIHYyKTsKICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBNSU5VUzoKLSAgICAgICAgICAqdjEgPSAoaW50MzJfdCkgKCh1aW50
MzJfdCkgKnYxIC0gKHVpbnQzMl90KSB2Mik7CisgICAgICAgICAgKnYxID0gKElOVCkgKChVSU5U
KSAqdjEgLSAoVUlOVCkgdjIpOwogICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgY2FzZSBMU0hJ
RlQ6CiAgICAgICAgICAgdTEgPSAqdjE7Ci0gICAgICAgICAgdTEgPDw9ICh1aW50MzJfdCkgKHYy
ICYgMHgxZik7CisgICAgICAgICAgdTEgPDw9IChVSU5UKSAodjIgJiBTSElGVE1BU0spOwogICAg
ICAgICAgICp2MSA9IHUxOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJTSElGVDoK
ICAgICAgICAgICB1MSA9ICp2MSA8IDAgPyB+KnYxIDogKnYxOwotICAgICAgICAgIHUxID4+PSAo
dWludDMyX3QpICh2MiAmIDB4MWYpOworICAgICAgICAgIHUxID4+PSAoVUlOVCkgKHYyICYgU0hJ
RlRNQVNLKTsKICAgICAgICAgICAqdjEgPSAqdjEgPCAwID8gfnUxIDogdTE7CiAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVVJTSElGVDoKICAgICAgICAgICB1MSA9ICp2MTsKLSAgICAg
ICAgICB1MSA+Pj0gKHVpbnQzMl90KSAodjIgJiAweDFmKTsKKyAgICAgICAgICB1MSA+Pj0gKFVJ
TlQpICh2MiAmIFNISUZUTUFTSyk7CiAgICAgICAgICAgKnYxID0gdTE7CiAgICAgICAgICAgYnJl
YWs7CgpAQCAtNTg1LDE3ICs1OTMsMTkgQEAgcGFyc2VfZXhwciAoaW50MzJfdCAqdjEsIGV2YWxf
ZXJyb3IgZXIsIHVuc2lnbmVkIG1pbl9wcmVjKQoKIC8qIE1haW4gZW50cnkgcG9pbnQsIGNhbGxl
ZCBmcm9tICJldmFsIi4gICovCiBib29sCi1ldmFsdWF0ZSAoY29uc3QgY2FsbF9pbmZvICptZSwg
Y29uc3QgY2hhciAqZXhwciwgc2l6ZV90IGxlbiwgaW50MzJfdCAqdmFsKQorRVZBTFVBVEUgKGNv
bnN0IGNhbGxfaW5mbyAqbWUsIGNvbnN0IGNoYXIgKmV4cHIsIHNpemVfdCBsZW4sIGludDY0X3Qg
KnB2YWwpCiB7CiAgIGV2YWxfZXJyb3IgZXJyOworICBJTlQgdmFsID0gMDsKCisgICpwdmFsID0g
MDsKICAgZXZhbF9pbml0X2xleCAoZXhwciwgbGVuKTsKLSAgZXJyID0gcHJpbWFyeSAodmFsKTsK
LSAgZXJyID0gcGFyc2VfZXhwciAodmFsLCBlcnIsIDEpOworICBlcnIgPSBwcmltYXJ5ICgmdmFs
KTsKKyAgZXJyID0gcGFyc2VfZXhwciAoJnZhbCwgZXJyLCAxKTsKCiAgIGlmIChlcnIgPT0gTk9f
RVJST1IgJiYgZXZhbF90ZXh0ICE9IGVuZF90ZXh0KQogICAgIHsKLSAgICAgIGlmIChldmFsX2xl
eCAodmFsKSA9PSBCQURPUCkKKyAgICAgIGlmIChldmFsX2xleCAoJnZhbCkgPT0gQkFET1ApCiAg
ICAgICAgIGVyciA9IElOVkFMSURfT1BFUkFUT1I7CiAgICAgICBlbHNlCiAgICAgICAgIGVyciA9
IEVYQ0VTU19JTlBVVDsKQEAgLTYwNyw2ICs2MTcsNyBAQCBldmFsdWF0ZSAoY29uc3QgY2FsbF9p
bmZvICptZSwgY29uc3QgY2hhciAqZXhwciwgc2l6ZV90IGxlbiwgaW50MzJfdCAqdmFsKQogICAg
IHsKICAgICAgIC8qIENhc2VzIHdoZXJlIHJlc3VsdCBpcyBwcmludGVkLiAgKi8KICAgICBjYXNl
IE5PX0VSUk9SOgorICAgICAgKnB2YWwgPSB2YWw7CiAgICAgICByZXR1cm4gZmFsc2U7CgogICAg
IGNhc2UgRU1QVFlfQVJHVU1FTlQ6CmRpZmYgLS1naXQgYS9zcmMvZXZhbDY0LmMgYi9zcmMvZXZh
bDY0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjZkNWFlMWI3Ci0tLSAv
ZGV2L251bGwKKysrIGIvc3JjL2V2YWw2NC5jCkBAIC0wLDAgKzEsMzkgQEAKKy8qIEdOVSBtNCAt
LSBBIHNpbXBsZSBtYWNybyBwcm9jZXNzb3IKKworICAgQ29weXJpZ2h0IChDKSAxOTg5LTE5OTQs
IDIwMDYtMjAxNCwgMjAxNi0yMDE3LCAyMDIwLTIwMjUgRnJlZQorICAgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLgorCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTTQuCisKKyAgIEdOVSBN
NCBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5
CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy
IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgIEdOVSBNNCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu
c2VzLz4uCisqLworCisvKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGZ1bmN0aW9ucyB0byBldmFs
dWF0ZSA2NC1iaXQgaW50ZWdlcgorICAgZXhwcmVzc2lvbnMgZm9yIHRoZSAiZXZhbDY0IiBtYWNy
bywgYnkgcmV1c2luZyBjb2RlIGZyb20gZXZhbC4gIFRoZQorICAgb25seSBlbnRyeSBwb2ludCBp
cyBldmFsdWF0ZTY0ICgpLiAgKi8KKworI2luY2x1ZGUgIm00LmgiCisKKyNkZWZpbmUgRVZBTDY0
CisjZGVmaW5lIElOVCBpbnQ2NF90CisjZGVmaW5lIFVJTlQgdWludDY0X3QKKyNkZWZpbmUgU0hJ
RlRNQVNLIDB4M2YKKyNkZWZpbmUgRVZBTFVBVEUgZXZhbHVhdGU2NAorCisjaW5jbHVkZSAiZXZh
bC5jIgorLyoKKyAgRGVmaW5lZCBieSBldmFsLmM6Citib29sCitldmFsdWF0ZTY0IChjb25zdCBj
YWxsX2luZm8gKm1lLCBjb25zdCBjaGFyICpleHByLCBzaXplX3QgbGVuLCBJTlQgKnZhbCkKKyAq
LwpkaWZmIC0tZ2l0IGEvc3JjL200LmggYi9zcmMvbTQuaAppbmRleCA3OWRjYTQzOC4uYzE3MzUz
MTggMTAwNjQ0Ci0tLSBhL3NyYy9tNC5oCisrKyBiL3NyYy9tNC5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSA8Yy1jdHlwZS5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZXJy
b3IuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1
ZGUgPGxvY2FsZS5oPgogI2luY2x1ZGUgPHN0ZGJvb2wuaD4KQEAgLTU0Niw5ICs1NDcsMTMgQEAg
ZXh0ZXJuIHZvaWQgaW5jbHVkZV9lbnZfaW5pdCAodm9pZCk7CiBleHRlcm4gdm9pZCBhZGRfaW5j
bHVkZV9kaXJlY3RvcnkgKGNvbnN0IGNoYXIgKik7CiBleHRlcm4gRklMRSAqbTRfcGF0aF9zZWFy
Y2ggKGNvbnN0IGNoYXIgKiwgYm9vbCwgY2hhciAqKik7CiAMCi0vKiBGaWxlOiBldmFsLmMgIC0t
LSBleHByZXNzaW9uIGV2YWx1YXRpb24uICAqLworLyogRmlsZTogZXZhbC5jICAtLS0gMzItYml0
IGV4cHJlc3Npb24gZXZhbHVhdGlvbi4gICovCgotZXh0ZXJuIGJvb2wgZXZhbHVhdGUgKGNvbnN0
IGNhbGxfaW5mbyAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgaW50MzJfdCAqKTsKK2V4dGVybiBi
b29sIGV2YWx1YXRlIChjb25zdCBjYWxsX2luZm8gKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGlu
dDY0X3QgKik7CisMCisvKiBGaWxlOiBldmFsNjQuYyAgLS0tIDY0LWJpdCBleHByZXNzaW9uIGV2
YWx1YXRpb24uICAqLworCitleHRlcm4gYm9vbCBldmFsdWF0ZTY0IChjb25zdCBjYWxsX2luZm8g
KiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGludDY0X3QgKik7CiAMCiAvKiBGaWxlOiBmb3JtYXQu
YyAgLS0tIHByaW50ZiBsaWtlIGZvcm1hdHRpbmcuICAqLwoKLS0gCjIuNDkuMAoKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk00LXBhdGNoZXMgbWFpbGlu
ZyBsaXN0Ck00LXBhdGNoZXNAZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9s
aXN0aW5mby9tNC1wYXRjaGVzCg==