From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 55752 invoked by alias); 13 Jun 2017 19:03:13 -0000 Mailing-List: contact newlib-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: newlib-owner@sourceware.org Received: (qmail 55735 invoked by uid 89); 13 Jun 2017 19:03:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.9 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=numeral, HTo:U*joel, yes!, 1151 X-HELO: mail-ot0-f175.google.com Received: from mail-ot0-f175.google.com (HELO mail-ot0-f175.google.com) (74.125.82.175) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 13 Jun 2017 19:03:09 +0000 Received: by mail-ot0-f175.google.com with SMTP id s7so2013234otb.3 for ; Tue, 13 Jun 2017 12:03:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=uyvT4R8yxR2SZPzX9AzwIzATUiGEhtsPvJyd8FHdgHk=; b=NrVcy7k0qUyGi8dY3B/AigJtU0bpv4UAIV6stLGrd/BXvnwEllk9zUzNe/9vCrmsIm 9766ENXsahFwARS933gxXGPYuTDFTlKD2J9IiPSY7xLl7PofqILMbzO4ZJjKOKfFt0TF by4AGU95FQ/5KrSJQ8cFDRKEpb0My0AtA5t+GXp52eOBwczhRfw8HYF3QoHJRZB6EwC1 HF9zf8w4lsC3pM76pYgSJGtRM/nHfehzc3keIm0sH1GcEPhFJjldBJdkHiY3QnCtEnAn QkMb4VtvK2SvA7QVKFC96KhpZ7JW2XnE12+OZGd2qIs070gjNyjqLf2AtSjuDgaWc5yN X2Tg== X-Gm-Message-State: AKS2vOwhwVJpupkhHHTPS8ea8N95xMzxNUrV5FEY6z8VIPijNXGih2Ec +FgkA8IHMHdQJRf/r4qHQHv+IddUvw== X-Received: by 10.157.5.143 with SMTP id 15mr974019otd.242.1497380592255; Tue, 13 Jun 2017 12:03:12 -0700 (PDT) MIME-Version: 1.0 Received: by 10.157.1.8 with HTTP; Tue, 13 Jun 2017 12:03:11 -0700 (PDT) From: aditya upadhyay Date: Tue, 13 Jun 2017 19:03:00 -0000 Message-ID: Subject: Adding Methods related to inttypes.h To: newlib@sourceware.org, joel@rtems.org, Gedare Bloom Content-Type: multipart/mixed; boundary="001a1140a9ac4baa980551dc1615" X-IsSubscribed: yes X-SW-Source: 2017/txt/msg00408.txt.bz2 --001a1140a9ac4baa980551dc1615 Content-Type: text/plain; charset="UTF-8" Content-length: 366 Hello Developers, I have ported the methods what are declared inside the inttypes.h header file from freebsd. I am requesting you to please review the code. I am not able to push the code of ccoshl.c in my forked repo. It is saying fatal error. I do not know how to apply the signature.asc file. Please have a look on my issue. Thanks & Regards, Aditya Upadhyay --001a1140a9ac4baa980551dc1615 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Porting-the-methods-declared-inside-inttypes.h-from-.patch" Content-Disposition: attachment; filename="0001-Porting-the-methods-declared-inside-inttypes.h-from-.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j3vxjssy0 Content-length: 27938 RnJvbSBiMWVjYTZkNjY1ZmM4MmVlYWQ3NDVjNDliZTljN2NjYjI3NzE5NDgz IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVXBhZGh5 YXkgPGFhZGl0MDQwMkBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTQgSnVuIDIw MTcgMDA6MjY6MzkgKzA1MzAKU3ViamVjdDogW1BBVENIXSBQb3J0aW5nIHRo ZSBtZXRob2RzIGRlY2xhcmVkIGluc2lkZSBpbnR0eXBlcy5oIGZyb20gZnJl ZWJzZC4KCi0tLQogbmV3bGliL2xpYmMvTWFrZWZpbGUuYW0gICAgICAgICAg fCAgIDQgKy0KIG5ld2xpYi9saWJjL2ludHR5cGVzL01ha2VmaWxlLmFtIHwg IDI0ICsrKysrKysKIG5ld2xpYi9saWJjL2ludHR5cGVzL2ltYXhhYnMuYyAg IHwgIDQ0ICsrKysrKysrKysrKwogbmV3bGliL2xpYmMvaW50dHlwZXMvaW1h eGRpdi5jICAgfCAgNTMgKysrKysrKysrKysrKysKIG5ld2xpYi9saWJjL2lu dHR5cGVzL3N0cnRvaW1heC5jIHwgMTQ0ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIG5ld2xpYi9saWJjL2ludHR5cGVzL3N0cnRv dW1heC5jIHwgMTM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIG5ld2xpYi9saWJjL2ludHR5cGVzL3djc3RvaW1heC5jIHwgMTUxICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbmV3bGli L2xpYmMvaW50dHlwZXMvd2NzdG91bWF4LmMgfCAxNDQgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCA2 OTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IG5ld2xpYi9saWJjL2ludHR5cGVzL01ha2VmaWxlLmFtCiBjcmVh dGUgbW9kZSAxMDA2NDQgbmV3bGliL2xpYmMvaW50dHlwZXMvaW1heGFicy5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV3bGliL2xpYmMvaW50dHlwZXMvaW1h eGRpdi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV3bGliL2xpYmMvaW50dHlw ZXMvc3RydG9pbWF4LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXdsaWIvbGli Yy9pbnR0eXBlcy9zdHJ0b3VtYXguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IG5l d2xpYi9saWJjL2ludHR5cGVzL3djc3RvaW1heC5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgbmV3bGliL2xpYmMvaW50dHlwZXMvd2NzdG91bWF4LmMKCmRpZmYg LS1naXQgYS9uZXdsaWIvbGliYy9NYWtlZmlsZS5hbSBiL25ld2xpYi9saWJj L01ha2VmaWxlLmFtCmluZGV4IDZlOTdiY2EuLjY0MGM5NWUgMTAwNjQ0Ci0t LSBhL25ld2xpYi9saWJjL01ha2VmaWxlLmFtCisrKyBiL25ld2xpYi9saWJj L01ha2VmaWxlLmFtCkBAIC00MSw3ICs0MSw3IEBAIGVuZGlmCiAjIFRoZSBv cmRlciBvZiBTVUJESVJTIGlzIGltcG9ydGFudCBmb3IgdGhlIGludGVncmF0 ZWQgZG9jdW1lbnRhdGlvbi4KICMgRG8gbm90IGNoYW5nZSB0aGUgb3JkZXIg d2l0aG91dCBjb25zaWRlcmluZyB0aGUgZG9jIGltcGFjdC4KIFNVQkRJUlMg PSBhcmd6IHN0ZGxpYiBjdHlwZSBzZWFyY2ggJChTVERJT19TVUJESVIpICQo U1RESU82NF9TVUJESVIpIHN0cmluZyAkKFNJR05BTF9TVUJESVIpIHRpbWUg bG9jYWxlIHN5cyByZWVudCBcCi0JJChleHRyYV9kaXIpIGVycm5vIG1pc2Mg bWFjaGluZSAkKFVOSVhfU1VCRElSKSAkKFBPU0lYX1NVQkRJUikgJChTWVND QUxMU19TVUJESVIpICQoTkVXTElCX0lDT05WX0RJUlMpIFwKKwkkKGV4dHJh X2RpcikgZXJybm8gbWlzYyBpbnR0eXBlcyBtYWNoaW5lICQoVU5JWF9TVUJE SVIpICQoUE9TSVhfU1VCRElSKSAkKFNZU0NBTExTX1NVQkRJUikgJChORVdM SUJfSUNPTlZfRElSUykgXAogCSQoWERSX1NVQkRJUikgLgogCiBub2luc3Rf REFUQSA9ICQoQ1JUMCkKQEAgLTY0LDYgKzY0LDcgQEAgU1VCTElCUyA9IFwK IAkkKExJQkNfRVhUUkFfTElCKSBcCiAJZXJybm8vbGliZXJybm8uJChhZXh0 KSBcCiAJbWlzYy9saWJtaXNjLiQoYWV4dCkgXAorICAgICAgICBpbnR0eXBl cy9saWJpbnR0eXBlcy4kKGFleHQpXAogCSQoTElCQ19VTklYX0xJQikgXAog CSQoTElCQ19QT1NJWF9MSUIpIFwKIAkkKExJQkNfU1lTQ0FMTF9MSUIpIFwK QEAgLTg3LDYgKzg4LDcgQEAgU1VCTElCUyA9IFwKIAkkKExJQkNfRVhUUkFf TElCKSBcCiAJZXJybm8vbGliLiQoYWV4dCkgXAogCW1pc2MvbGliLiQoYWV4 dCkgXAorICAgICAgICBpbnR0eXBlcy9saWIuJChhZXh0KVwKIAkkKExJQkNf VU5JWF9MSUIpIFwKIAkkKExJQkNfUE9TSVhfTElCKSBcCiAJJChMSUJDX1NZ U0NBTExfTElCKSBcCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9pbnR0eXBl cy9NYWtlZmlsZS5hbSBiL25ld2xpYi9saWJjL2ludHR5cGVzL01ha2VmaWxl LmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNzM5 MzQKLS0tIC9kZXYvbnVsbAorKysgYi9uZXdsaWIvbGliYy9pbnR0eXBlcy9N YWtlZmlsZS5hbQpAQCAtMCwwICsxLDI0IEBACisjIyBQcm9jZXNzIHRoaXMg ZmlsZSB3aXRoIGF1dG9tYWtlIHRvIGdlbmVyYXRlIE1ha2VmaWxlLmluCisK K0FVVE9NQUtFX09QVElPTlMgPSBjeWdudXMKKworSU5DTFVERVMgPSAkKE5F V0xJQl9DRkxBR1MpICQoQ1JPU1NfQ0ZMQUdTKSAkKFRBUkdFVF9DRkxBR1Mp CisKK0xJQl9TT1VSQ0VTID0gaW1heGFicy5jIGltYXhkaXYuYyBzdHJ0b2lt YXguYyBzdHJ0b3VtYXguYyB3Y3N0b2ltYXguYyB3Y3N0b3VtYXguYworCits aWJpbnR0eXBlc19sYV9MREZMQUdTID0gLVhjb21waWxlciAtbm9zdGRsaWIK KworaWYgVVNFX0xJQlRPT0wKK25vaW5zdF9MVExJQlJBUklFUyA9IGxpYmlu dHR5cGVzLmxhCitsaWJpbnR0eXBlc19sYV9TT1VSQ0VTID0gJChMSUJfU09V UkNFUykKK25vaW5zdF9EQVRBID0gb2JqZWN0bGlzdC5hd2suaW4KK2Vsc2UK K25vaW5zdF9MSUJSQVJJRVMgPSBsaWIuYQorbGliX2FfU09VUkNFUyA9ICQo TElCX1NPVVJDRVMpCitsaWJfYV9DRkxBR1MgPSAkKEFNX0NGTEFHUykKK25v aW5zdF9EQVRBID0gCitlbmRpZiAjIFVTRV9MSUJUT09MCisKK2luY2x1ZGUg JChzcmNkaXIpLy4uLy4uL01ha2VmaWxlLnNoYXJlZAorCisKZGlmZiAtLWdp dCBhL25ld2xpYi9saWJjL2ludHR5cGVzL2ltYXhhYnMuYyBiL25ld2xpYi9s aWJjL2ludHR5cGVzL2ltYXhhYnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5lODAzODY5Ci0tLSAvZGV2L251bGwKKysrIGIvbmV3 bGliL2xpYmMvaW50dHlwZXMvaW1heGFicy5jCkBAIC0wLDAgKzEsNDQgQEAK Ky8qLQorICogIENvcHlyaWdodCAoYykgMjAwMSBNaWtlIEJhcmNyb2Z0IDxt aWtlQEZyZWVCU0Qub3JnPgorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg KgorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlv biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9ucworICogIGFyZSBtZXQ6CisgKiAgMS4gUmVkaXN0cmlidXRp b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5 cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgMi4gUmVkaXN0 cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05U UklCVVRPUlMgYGBBUyBJUycnIEFORAorICogIEFOWSBFWFBSRVNTIE9SIElN UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg VE8sIFRIRQorICogIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisg KiAgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU SE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqICBGT1IgQU5ZIERJ UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS WSwgT1IgQ09OU0VRVUVOVElBTAorICogIERBTUFHRVMgKElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF IEdPT0RTCisgKiAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiAgSE9X RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqICBMSUFCSUxJVFksIE9S IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ U0lORyBJTiBBTlkgV0FZCisgKiAgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP RgorICogIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBIQVZFX0NPTkZJR19I CisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworLyogaW50bWF4X3Qg ZGF0YSB0eXBlIGRlZmluZWQgaGVyZSAqLworCisjaW5jbHVkZSA8c3RkaW50 Lmg+IAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlIDxpbnR0eXBl cy5oPgorCisKK2ludG1heF90CitpbWF4YWJzKAorICBpbnRtYXhfdCBqKQor eworICByZXR1cm4gKGogPCAwID8gLWogOiBqKTsKK30KZGlmZiAtLWdpdCBh L25ld2xpYi9saWJjL2ludHR5cGVzL2ltYXhkaXYuYyBiL25ld2xpYi9saWJj L2ludHR5cGVzL2ltYXhkaXYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5hYWJhZDA5Ci0tLSAvZGV2L251bGwKKysrIGIvbmV3bGli L2xpYmMvaW50dHlwZXMvaW1heGRpdi5jCkBAIC0wLDAgKzEsNTMgQEAKKy8q LQorICogIENvcHlyaWdodCAoYykgMjAwMSBNaWtlIEJhcmNyb2Z0IDxtaWtl QEZyZWVCU0Qub3JnPgorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor ICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogIG1vZGlmaWNhdGlvbiwg YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9ucworICogIGFyZSBtZXQ6CisgKiAgMS4gUmVkaXN0cmlidXRpb25z IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgMi4gUmVkaXN0cmli dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92 ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAgVEhJUyBT T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklC VVRPUlMgYGBBUyBJUycnIEFORAorICogIEFOWSBFWFBSRVNTIE9SIElNUExJ RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFRIRQorICogIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiAg QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9S IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqICBGT1IgQU5ZIERJUkVD VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg T1IgQ09OU0VRVUVOVElBTAorICogIERBTUFHRVMgKElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP T0RTCisgKiAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiAgSE9XRVZF UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqICBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO RyBJTiBBTlkgV0FZCisgKiAgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgor ICogIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBIQVZFX0NPTkZJR19ICisj aW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworLyogaW50bWF4X3QgZGF0 YSB0eXBlIGRlZmluZWQgaGVyZSAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+ IAorCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKworaW1heGRpdl90CitpbWF4 ZGl2KCAKKyAgaW50bWF4X3QgbnVtZXIsIGludG1heF90IGRlbm9tKQorewor ICBpbWF4ZGl2X3QgcmV0dmFsOworCisgIHJldHZhbC5xdW90ID0gbnVtZXIg LyBkZW5vbTsKKyAgcmV0dmFsLnJlbSA9IG51bWVyICUgZGVub207CisgCisg ICNpZiAhZGVmaW5lZChfX1NURENfVkVSU0lPTl9fKSB8fCAoX19TVERDX1ZF UlNJT05fXyA8IDE5OTkwMUwpCisgICAgIGlmIChudW1lciA+PSAwICYmIHJl dHZhbC5yZW0gPCAwKSB7CisgICAgICAgICByZXR2YWwucXVvdCsrOworCSBy ZXR2YWwucmVtIC09IGRlbm9tOworICAgICB9CisgICNlbmRpZgorICByZXR1 cm4gKHJldHZhbCk7Cit9CmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9pbnR0 eXBlcy9zdHJ0b2ltYXguYyBiL25ld2xpYi9saWJjL2ludHR5cGVzL3N0cnRv aW1heC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5 MmEyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9uZXdsaWIvbGliYy9pbnR0eXBl cy9zdHJ0b2ltYXguYwpAQCAtMCwwICsxLDE0NCBAQAorLyoqCisgKiAgVGhp cyBmaWxlIGhhcyBubyBjb3B5cmlnaHQgYXNzaWduZWQgYW5kIGlzIHBsYWNl ZCBpbiB0aGUgUHVibGljIERvbWFpbi4KKyAqICBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgbWluZ3ctdzY0IHJ1bnRpbWUgcGFja2FnZS4KKyAqICBObyB3 YXJyYW50eSBpcyBnaXZlbjsgcmVmZXIgdG8gdGhlIGZpbGUgRElTQ0xBSU1F Ui5QRCB3aXRoaW4gdGhpcyBwYWNrYWdlLgorICovCisKKy8qCisgKiAgVGhp cyBzb3VyY2UgY29kZSB3YXMgZXh0cmFjdGVkIGZyb20gdGhlIFE4IHBhY2th Z2UgY3JlYXRlZCBhbmQKKyAqICBwbGFjZWQgaW4gdGhlIFBVQkxJQyBET01B SU4gYnkgRG91ZyBHd3luIDxnd3luQGFybC5taWw+CisgKiAgbGFzdCBlZGl0 OgkxOTk5LzExLzA1CWd3eW5AYXJsLm1pbAorICoKKyAqICBJbXBsZW1lbnRz IHN1YmNsYXVzZSA3LjguMiBvZiBJU08vSUVDIDk4OTk6MTk5OSAoRSkuCisg KgorICogIFRoaXMgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiByZXF1aXJl cyB0aGUgbWF0Y2hpbmcgPGludHR5cGVzLmg+LgorICogIEl0IGFsc28gYXNz dW1lcyB0aGF0IGNoYXJhY3RlciBjb2RlcyBmb3IgQS4uWiBhbmQgYS4ueiBh cmUgaW4KKyAqICBjb250aWd1b3VzIGFzY2VuZGluZyBvcmRlcjsgdGhpcyBp cyB0cnVlIGZvciBBU0NJSSBidXQgbm90IEVCQ0RJQy4KKyAqLworCisjaW5j bHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRl IDxjdHlwZS5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisKKy8qIEhlbHBl ciBtYWNyb3MgKi8KKworLyogY29udmVydCBkaWdpdCBjaGFyYWN0ZXIgdG8g bnVtYmVyLCBpbiBhbnkgYmFzZSAqLworCisjZGVmaW5lIFRvTnVtYmVyKGMp CShpc2RpZ2l0KGMpID8gKGMpIC0gJzAnIDogXAorCQkJIGlzdXBwZXIoYykg PyAoYykgLSAnQScgKyAxMCA6IFwKKwkJCSBpc2xvd2VyKGMpID8gKGMpIC0g J2EnICsgMTAgOiBcCisJCQkgLTEJCSAgICAgICAgICAgICAgICAgIC8qICJp bnZhbGlkIiBmbGFnICovIFwKKwkJCSkKKy8qIHZhbGlkYXRlIGNvbnZlcnRl ZCBkaWdpdCBjaGFyYWN0ZXIgZm9yIHNwZWNpZmljIGJhc2UgKi8KKworI2Rl ZmluZSB2YWxpZChuLCBiKQkoKG4pID49IDAgJiYgKG4pIDwgKGIpKQorCitp bnRtYXhfdAorc3RydG9pbWF4KAorICBucHRyLCBlbmRwdHIsIGJhc2UpCisg IHJlZ2lzdGVyIGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0X18JbnB0cjsKKyAg Y2hhciAqKiBfX3Jlc3RyaWN0X18JCQllbmRwdHI7CisgIHJlZ2lzdGVyIGlu dAkJCQliYXNlOworeworICByZWdpc3RlciB1aW50bWF4X3QJYWNjdW07CQor ICByZWdpc3RlciBpbnQJCW47CQorICBpbnQJCQltaW51czsJCisgIGludAkJ CXRvb2JpZzsKKworICAvKiBpbiBjYXNlIG5vIGNvbnZlcnNpb24ncyBwZXJm b3JtZWQgKi8KKworICBpZiAoZW5kcHRyICE9IE5VTEwpCisgICAgKmVuZHB0 ciA9IChjaGFyICopbnB0cjsJCisgIAorICAvKiB1bnNwZWNpZmllZCBiZWhh dmlvciAqLworCisgIGlmIChiYXNlIDwgMCB8fCBiYXNlID09IDEgfHwgYmFz ZSA+IDM2KXsKKyAgICBlcnJubyA9IEVET007CisgICAgcmV0dXJuIDA7CQkK KyAgfQorCisgIC8qIHNraXAgaW5pdGlhbCwgcG9zc2libHkgZW1wdHkgc2Vx dWVuY2Ugb2Ygd2hpdGUtc3BhY2UgY2hhcmFjdGVycyAqLworCisgIHdoaWxl IChpc3NwYWNlKCpucHRyKSkKKyAgICArK25wdHI7CisKKyAgLyogcHJvY2Vz cyBzdWJqZWN0IHNlcXVlbmNlOiAqLworCisgIC8qIG9wdGlvbmFsIHNpZ24g Ki8KKworICBpZiAoKG1pbnVzID0gKm5wdHIgPT0gJy0nKSB8fCAqbnB0ciA9 PSAnKycpCisgICAgKytucHRyOworCisgIGlmIChiYXNlID09IDApIHsKKyAg ICBpZiAoKm5wdHIgPT0gJzAnKSB7CisgICAgICBpZiAobnB0clsxXSA9PSAn WCcgfHwgbnB0clsxXSA9PSAneCcpeworICAgICAgICBiYXNlID0gMTY7Cisg ICAgICB9ZWxzZXsKKyAgICAgICBiYXNlID0gODsKKyAgICAgIH0KKyAgICB9 ZWxzZXsKKyAgICAgYmFzZSA9IDEwOworICAgIH0KKyAgIAorICB9CisKKyAg Lyogb3B0aW9uYWwgIjB4IiBvciAiMFgiIGZvciBiYXNlIDE2ICovCisKKyAg Lyogc2tpcCBwYXN0IHRoaXMgcHJlZml4ICovCisKKyAgaWYgKGJhc2UgPT0g MTYgJiYgKm5wdHIgPT0gJzAnICYmIChucHRyWzFdID09ICdYJyB8fCBucHRy WzFdID09ICd4JykpCisgICAgbnB0ciArPSAyOwkJCisKKyAgLyogY2hlY2sg d2hldGhlciB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdmFsaWQgZGlnaXQgKi8K KworICBuID0gVG9OdW1iZXIoKm5wdHIpOworICArK25wdHI7CisgIAorICAv KiBzdWJqZWN0IHNlcS4gbm90IG9mIGV4cGVjdGVkIGZvcm0gKi8KKworICBp ZiAoIXZhbGlkKG4sIGJhc2UpKQorICAgIHJldHVybiAwOwkJCisKKyAgYWNj dW0gPSBuOworCisgIGZvciAodG9vYmlnID0gMDsgbiA9IFRvTnVtYmVyKCpu cHRyKSwgdmFsaWQobiwgYmFzZSk7ICsrbnB0cikKKyAgICAKKyAgICAvKiBt YWpvciB3cmFwLWFyb3VuZCAqLworCisgICAgaWYgKGFjY3VtID4gKHVpbnRt YXhfdCkoSU5UTUFYX01BWCAvIGJhc2UgKyAyKSkgCisKKyAgICAgIC8qIGJ1 dCBrZWVwIHNjYW5uaW5nICovCisKKyAgICAgIHRvb2JpZyA9IDE7CQorICAg IGVsc2UKKyAgICAgIGFjY3VtID0gYmFzZSAqIGFjY3VtICsgbjsKKworICAv KiBwb2ludHMgdG8gZmlyc3Qgbm90LXZhbGlkLWRpZ2l0ICovCisKKyAgaWYg KGVuZHB0ciAhPSBOVUxMKQorICAgICplbmRwdHIgPSAoY2hhciAqKW5wdHI7 CQorCisgIGlmIChtaW51cyl7CisgICAgaWYgKGFjY3VtID4gKHVpbnRtYXhf dClJTlRNQVhfTUFYICsgMSkKKyAgICAgIHRvb2JpZyA9IDE7CisgICAgfQor ICBlbHNlCisgICAgaWYgKGFjY3VtID4gKHVpbnRtYXhfdClJTlRNQVhfTUFY KQorICAgICAgdG9vYmlnID0gMTsKKworICBpZiAodG9vYmlnKXsKKyAgICBl cnJubyA9IEVSQU5HRTsKKyAgICByZXR1cm4gbWludXMgPyBJTlRNQVhfTUlO IDogSU5UTUFYX01BWDsKKyAgfQorICBlbHNlCisgICAgcmV0dXJuIChpbnRt YXhfdCkobWludXMgPyAtYWNjdW0gOiBhY2N1bSk7Cit9CisKK2xvbmcgbG9u ZyBfX2F0dHJpYnV0ZV9fICgKKyhhbGlhcyAoInN0cnRvaW1heCIpKSkKKwor c3RydG9sbCAoCitjb25zdCBjaGFyKiBfX3Jlc3RyaWN0X18gbnB0ciwgCitj aGFyICoqIF9fcmVzdHJpY3RfXyBlbmRwdHIsIGludCBiYXNlICk7CisKZGlm ZiAtLWdpdCBhL25ld2xpYi9saWJjL2ludHR5cGVzL3N0cnRvdW1heC5jIGIv bmV3bGliL2xpYmMvaW50dHlwZXMvc3RydG91bWF4LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhjODE4YgotLS0gL2Rldi9udWxs CisrKyBiL25ld2xpYi9saWJjL2ludHR5cGVzL3N0cnRvdW1heC5jCkBAIC0w LDAgKzEsMTM1IEBACisvKioKKyAqICBUaGlzIGZpbGUgaGFzIG5vIGNvcHly aWdodCBhc3NpZ25lZCBhbmQgaXMgcGxhY2VkIGluIHRoZSBQdWJsaWMgRG9t YWluLgorICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBtaW5ndy13NjQg cnVudGltZSBwYWNrYWdlLgorICogIE5vIHdhcnJhbnR5IGlzIGdpdmVuOyBy ZWZlciB0byB0aGUgZmlsZSBESVNDTEFJTUVSLlBEIHdpdGhpbiB0aGlzIHBh Y2thZ2UuCisgKi8KKworLyoKKyAqICBUaGlzIHNvdXJjZSBjb2RlIHdhcyBl eHRyYWN0ZWQgZnJvbSB0aGUgUTggcGFja2FnZSBjcmVhdGVkIGFuZAorICog IHBsYWNlZCBpbiB0aGUgUFVCTElDIERPTUFJTiBieSBEb3VnIEd3eW4gPGd3 eW5AYXJsLm1pbD4KKyAqICBsYXN0IGVkaXQ6CTE5OTkvMTEvMDUJZ3d5bkBh cmwubWlsCisgKgorICogIEltcGxlbWVudHMgc3ViY2xhdXNlIDcuOC4yIG9m IElTTy9JRUMgOTg5OToxOTk5IChFKS4KKyAqCisgKiAgVGhpcyBwYXJ0aWN1 bGFyIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHRoZSBtYXRjaGluZyA8aW50 dHlwZXMuaD4uCisgKiAgSXQgYWxzbyBhc3N1bWVzIHRoYXQgY2hhcmFjdGVy IGNvZGVzIGZvciBBLi5aIGFuZCBhLi56IGFyZSBpbgorICogIGNvbnRpZ3Vv dXMgYXNjZW5kaW5nIG9yZGVyOyB0aGlzIGlzIHRydWUgZm9yIEFTQ0lJIGJ1 dCBub3QgRUJDRElDLgorKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu Y2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRl IDxpbnR0eXBlcy5oPgorCisvKiBIZWxwZXIgbWFjcm9zICovCisKKy8qIGNv bnZlcnQgZGlnaXQgY2hhcmFjdGVyIHRvIG51bWJlciwgaW4gYW55IGJhc2Ug Ki8KKworI2RlZmluZSBUb051bWJlcihjKQkoaXNkaWdpdChjKSA/IChjKSAt ICcwJyA6IFwKKwkJCSBpc3VwcGVyKGMpID8gKGMpIC0gJ0EnICsgMTAgOiBc CisJCQkgaXNsb3dlcihjKSA/IChjKSAtICdhJyArIDEwIDogXAorCQkJIC0x CQkvKiAiaW52YWxpZCIgZmxhZyAqLyBcCisJCQkpCisvKiB2YWxpZGF0ZSBj b252ZXJ0ZWQgZGlnaXQgY2hhcmFjdGVyIGZvciBzcGVjaWZpYyBiYXNlICov CisKKyNkZWZpbmUgdmFsaWQobiwgYikJKChuKSA+PSAwICYmIChuKSA8IChi KSkKKwordWludG1heF90CitzdHJ0b3VtYXgoCisgIG5wdHIsIGVuZHB0ciwg YmFzZSkKKyAgcmVnaXN0ZXIgY29uc3QgY2hhciAqIF9fcmVzdHJpY3RfXwlu cHRyOworICBjaGFyICoqIF9fcmVzdHJpY3RfXwkJCWVuZHB0cjsKKyAgcmVn aXN0ZXIgaW50CQkJCWJhc2U7Cit7CisgIHJlZ2lzdGVyIHVpbnRtYXhfdAlh Y2N1bTsJCisgIHJlZ2lzdGVyIHVpbnRtYXhfdAluZXh0OwkKKyAgcmVnaXN0 ZXIgaW50CQluOwkKKyAgaW50CQkJbWludXM7CQorICBpbnQJCQl0b29iaWc7 CQorICAKKyAgLyogaW4gY2FzZSBubyBjb252ZXJzaW9uJ3MgcGVyZm9ybWVk ICovCisKKyAgaWYgKCBlbmRwdHIgIT0gTlVMTCApCisgICAgKmVuZHB0ciA9 IChjaGFyICopbnB0cjsJCisgIAorICAvKiB1bnNwZWNpZmllZCBiZWhhdmlv ciAqLworCisgIGlmICggYmFzZSA8IDAgfHwgYmFzZSA9PSAxIHx8IGJhc2Ug PiAzNiApeworICAgIGVycm5vID0gRURPTTsKKyAgICByZXR1cm4gMDsJCQor ICB9CisKKyAgLyogc2tpcCBpbml0aWFsLCBwb3NzaWJseSBlbXB0eSBzZXF1 ZW5jZSBvZiB3aGl0ZS1zcGFjZSBjaGFyYWN0ZXJzICovCisKKyAgd2hpbGUg KCBpc3NwYWNlKCpucHRyKSApCisgICAgKytucHRyOworCisgIC8qIHByb2Nl c3Mgc3ViamVjdCBzZXF1ZW5jZTogKi8KKworICAvKiBvcHRpb25hbCBzaWdu ICh5ZXMhKSAqLworCisgIGlmICgobWludXMgPSAqbnB0ciA9PSAnLScpIHx8 ICpucHRyID09ICcrJykKKyAgICArK25wdHI7CisKKyAgaWYgKGJhc2UgPT0g MCl7CisgICAgaWYgKCpucHRyID09ICcwJyl7CisgICAgICBpZiAobnB0clsx XSA9PSAnWCcgfHwgbnB0clsxXSA9PSAneCcpCisJYmFzZSA9IDE2OworICAg ICAgZWxzZQorICAgICAgICBiYXNlID0gODsKKyAgICB9CisgICAgZWxzZQor ICAgICAgYmFzZSA9IDEwOworICB9CisKKyAgLyogb3B0aW9uYWwgIjB4IiBv ciAiMFgiIGZvciBiYXNlIDE2ICovCisgICAgCisgIGlmIChiYXNlID09IDE2 ICYmICpucHRyID09ICcwJyAmJiAobnB0clsxXSA9PSAnWCcgfHwgbnB0clsx XSA9PSAneCcpKQorIAorICAgLyogc2tpcCBwYXN0IHRoaXMgcHJlZml4ICov CisKKyAgICBucHRyICs9IDI7CQkKKworICAvKiBjaGVjayB3aGV0aGVyIHRo ZXJlIGlzIGF0IGxlYXN0IG9uZSB2YWxpZCBkaWdpdCAqLworCisgIG4gPSBU b051bWJlcigqbnB0cik7CisgICsrbnB0cjsKKyAgCisgIC8qIHN1YmplY3Qg c2VxLiBub3Qgb2YgZXhwZWN0ZWQgZm9ybSAqLworCisgIGlmICggIXZhbGlk KG4sIGJhc2UpICkKKyAgICByZXR1cm4gMDsJCQorCisgIGFjY3VtID0gbjsK KworICBmb3IgKCB0b29iaWcgPSAwOyBuID0gVG9OdW1iZXIoKm5wdHIpLCB2 YWxpZChuLCBiYXNlKTsgKytucHRyICkKKworICAgIC8qIG1ham9yIHdyYXAt YXJvdW5kIGFuZCBtaW5vciB3cmFwLWFyb3VuZCAqLworCisgICAgaWYgKGFj Y3VtID4gVUlOVE1BWF9NQVggLyBiYXNlICsgMSB8fCAobmV4dCA9IGJhc2Ug KiBhY2N1bSArIG4pIDwgYWNjdW0pCQorCisgICAgLyogYnV0IGtlZXAgc2Nh bm5pbmcgKi8KKworICAgICAgdG9vYmlnID0gMTsJCisgICAgZWxzZQorICAg ICAgYWNjdW0gPSBuZXh0OworCisgIC8qIHBvaW50cyB0byBmaXJzdCBub3Qt dmFsaWQtZGlnaXQgKi8KKworICBpZiAoZW5kcHRyICE9IE5VTEwpCisgICAg KmVuZHB0ciA9IChjaGFyICopbnB0cjsJCisKKyAgaWYgKHRvb2JpZyl7Cisg ICAgZXJybm8gPSBFUkFOR0U7CisgICAgcmV0dXJuIFVJTlRNQVhfTUFYOwor ICB9CisgIGVsc2UKKyAgICByZXR1cm4gbWludXMgPyAtYWNjdW0gOiBhY2N1 bTsJLyogKHllcyEpICovCit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZworIF9f YXR0cmlidXRlX18gKAorICAoYWxpYXMgKCJzdHJ0b3VtYXgiKSkpCitzdHJ0 b3VsbCAoY29uc3QgY2hhciogX19yZXN0cmljdF9fIG5wdHIsIAorICBjaGFy ICoqIF9fcmVzdHJpY3RfXyBlbmRwdHIsIGludCBiYXNlKTsKKwpkaWZmIC0t Z2l0IGEvbmV3bGliL2xpYmMvaW50dHlwZXMvd2NzdG9pbWF4LmMgYi9uZXds aWIvbGliYy9pbnR0eXBlcy93Y3N0b2ltYXguYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi40ZWMwZTkxCi0tLSAvZGV2L251bGwKKysr IGIvbmV3bGliL2xpYmMvaW50dHlwZXMvd2NzdG9pbWF4LmMKQEAgLTAsMCAr MSwxNTEgQEAKKy8qKgorICogIFRoaXMgZmlsZSBoYXMgbm8gY29weXJpZ2h0 IGFzc2lnbmVkIGFuZCBpcyBwbGFjZWQgaW4gdGhlIFB1YmxpYyBEb21haW4u CisgKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIG1pbmd3LXc2NCBydW50 aW1lIHBhY2thZ2UuCisgKiAgTm8gd2FycmFudHkgaXMgZ2l2ZW47IHJlZmVy IHRvIHRoZSBmaWxlIERJU0NMQUlNRVIuUEQgd2l0aGluIHRoaXMgcGFja2Fn ZS4KKyAqLworCisvKgorICogIFRoaXMgc291cmNlIGNvZGUgd2FzIGV4dHJh Y3RlZCBmcm9tIHRoZSBROCBwYWNrYWdlIGNyZWF0ZWQgYW5kCisgKiAgcGxh Y2VkIGluIHRoZSBQVUJMSUMgRE9NQUlOIGJ5IERvdWcgR3d5biA8Z3d5bkBh cmwubWlsPgorICogIGxhc3QgZWRpdDoJMTk5OS8xMS8wNQlnd3luQGFybC5t aWwKKyAqICBJbXBsZW1lbnRzIHN1YmNsYXVzZSA3LjguMiBvZiBJU08vSUVD IDk4OTk6MTk5OSAoRSkuCisgKiAgVGhpcyBwYXJ0aWN1bGFyIGltcGxlbWVu dGF0aW9uIHJlcXVpcmVzIHRoZSBtYXRjaGluZyA8aW50dHlwZXMuaD4uCisg KiAgSXQgYWxzbyBhc3N1bWVzIHRoYXQgY2hhcmFjdGVyIGNvZGVzIGZvciBB Li5aIGFuZCBhLi56IGFyZSBpbgorICogIGNvbnRpZ3VvdXMgYXNjZW5kaW5n IG9yZGVyOyB0aGlzIGlzIHRydWUgZm9yIEFTQ0lJIGJ1dCBub3QgRUJDRElD LgorKi8KKworI2luY2x1ZGUgPHdjaGFyLmg+CisjaW5jbHVkZSA8ZXJybm8u aD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+ CisKKy8qIGNvbnZlcnQgZGlnaXQgd2lkZSBjaGFyYWN0ZXIgdG8gbnVtYmVy LCBpbiBhbnkgYmFzZSAqLworCisjZGVmaW5lIFRvV051bWJlcihjKQkoaXN3 ZGlnaXQoYykgPyAoYykgLSBMJzAnIDogXAorCQkJIGlzd3VwcGVyKGMpID8g KGMpIC0gTCdBJyArIDEwIDogXAorCQkJIGlzd2xvd2VyKGMpID8gKGMpIC0g TCdhJyArIDEwIDogXAorCQkJIC0xCQkvKiAiaW52YWxpZCIgZmxhZyAqLyBc CisJCQkpCisKKy8qIHZhbGlkYXRlIGNvbnZlcnRlZCBkaWdpdCBjaGFyYWN0 ZXIgZm9yIHNwZWNpZmljIGJhc2UgKi8KKworI2RlZmluZSB2YWxpZChuLCBi KQkoKG4pID49IDAgJiYgKG4pIDwgKGIpKQorCitpbnRtYXhfdAord2NzdG9p bWF4KAorICBucHRyLCBlbmRwdHIsIGJhc2UpCisgIHJlZ2lzdGVyIGNvbnN0 IHdjaGFyX3QgKiBfX3Jlc3RyaWN0X18JbnB0cjsKKyAgd2NoYXJfdCAqKiBf X3Jlc3RyaWN0X18JCQkJZW5kcHRyOworICByZWdpc3RlciBpbnQJCQkJCWJh c2U7Cit7IAorICAvKiBhY2N1bXVsYXRlcyBjb252ZXJ0ZWQgdmFsdWUgKi8K KworICByZWdpc3RlciB1aW50bWF4X3QJYWNjdW07CQorCisgIC8qIG51bWVy YWwgZnJvbSBkaWdpdCBjaGFyYWN0ZXIgKi8KKworICByZWdpc3RlciBpbnQJ CW47CQorCisgIC8qIHNldCBpZmYgbWludXMgc2lnbiBzZWVuICovCisKKyAg aW50CQkJbWludXM7CQorIAorICAvKiBzZXQgaWZmIHZhbHVlIG92ZXJmbG93 cyAqLworICAKKyAgaW50CQkJdG9vYmlnOwkKKyAgCisgIC8qIGluIGNhc2Ug bm8gY29udiBwZXJmb3JtZWQgKi8KKworICBpZiAoZW5kcHRyICE9IE5VTEwp CisgICAgKmVuZHB0ciA9ICh3Y2hhcl90ICopbnB0cjsJCisKKyAgLyogdW5z cGVjaWZpZWQgYmVoYXZpb3IgKi8KKworICBpZiAoYmFzZSA8IDAgfHwgYmFz ZSA9PSAxIHx8IGJhc2UgPiAzNil7CisgICAgZXJybm8gPSBFRE9NOworICAg IHJldHVybiAwOwkJCisgIH0KKworICAvKiBza2lwIGluaXRpYWwsIHBvc3Np Ymx5IGVtcHR5IHNlcXVlbmNlIG9mIHdoaXRlLXNwYWNlIHcuY2hhcmFjdGVy cyAqLworCisgIHdoaWxlIChpc3dzcGFjZSgqbnB0cikpCisgICAgKytucHRy OworCisgIC8qIHByb2Nlc3Mgc3ViamVjdCBzZXF1ZW5jZTogKi8KKworICAv KiBvcHRpb25hbCBzaWduICovCisKKyAgaWYgKChtaW51cyA9ICpucHRyID09 IEwnLScpIHx8ICpucHRyID09IEwnKycpCisgICAgKytucHRyOworCisgIGlm IChiYXNlID09IDApeworICAgIGlmICgqbnB0ciA9PSBMJzAnKXsKKyAgICAg IGlmIChucHRyWzFdID09IEwnWCcgfHwgbnB0clsxXSA9PSBMJ3gnKQorICAg ICAgICBiYXNlID0gMTY7CisgICAgICBlbHNlCisJYmFzZSA9IDg7CisgICAg fQorICBlbHNlCisgICAgYmFzZSA9IDEwOworICB9CisKKyAgLyogb3B0aW9u YWwgIjB4IiBvciAiMFgiIGZvciBiYXNlIDE2ICovCisKKyAgaWYgKCBiYXNl ID09IDE2ICYmICpucHRyID09IEwnMCcgJiYgKG5wdHJbMV0gPT0gTCdYJyB8 fCBucHRyWzFdID09IEwneCcpKQorCisgICAgLyogc2tpcCBwYXN0IHRoaXMg cHJlZml4ICovCisKKyAgICBucHRyICs9IDI7CQkKKworICAvKiBjaGVjayB3 aGV0aGVyIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSB2YWxpZCBkaWdpdCAqLwor CisgIG4gPSBUb1dOdW1iZXIoKm5wdHIpOworICArK25wdHI7CisKKyAgLyog c3ViamVjdCBzZXEuIG5vdCBvZiBleHBlY3RlZCBmb3JtICovCisKKyAgaWYg KCF2YWxpZChuLCBiYXNlKSkKKyAgICByZXR1cm4gMDsJCQorCisgIGFjY3Vt ID0gbjsKKworICBmb3IgKHRvb2JpZyA9IDA7IG4gPSBUb1dOdW1iZXIoKm5w dHIpLCB2YWxpZChuLCBiYXNlKTsgKytucHRyKQorICAgIAorICAgICAvKiBt YWpvciB3cmFwLWFyb3VuZCAqLworCisgICAgaWYgKGFjY3VtID4gKHVpbnRt YXhfdCkoSU5UTUFYX01BWCAvIGJhc2UgKyAyKSkKKworICAgICAgLyogYnV0 IGtlZXAgc2Nhbm5pbmcgKi8KKworICAgICAgdG9vYmlnID0gMTsJCisgICAg ZWxzZQorICAgICAgYWNjdW0gPSBiYXNlICogYWNjdW0gKyBuOworCisgICAg LyogLT4gZmlyc3Qgbm90LXZhbGlkLWRpZ2l0ICovCisKKyAgaWYgKGVuZHB0 ciAhPSBOVUxMKQorICAgICAgKmVuZHB0ciA9ICh3Y2hhcl90ICopbnB0cjsJ CisKKyAgaWYgKG1pbnVzKXsKKyAgICBpZiAoYWNjdW0gPiAodWludG1heF90 KUlOVE1BWF9NQVggKyAxKQorICAgICAgdG9vYmlnID0gMTsKKyAgfQorICBl bHNlCisgICAgaWYgKGFjY3VtID4gKHVpbnRtYXhfdClJTlRNQVhfTUFYKQor ICAgICAgdG9vYmlnID0gMTsKKworICBpZiAodG9vYmlnKXsKKyAgICBlcnJu byA9IEVSQU5HRTsKKyAgICByZXR1cm4gbWludXMgPyBJTlRNQVhfTUlOIDog SU5UTUFYX01BWDsKKyAgfQorICBlbHNlCisgICAgcmV0dXJuIChpbnRtYXhf dCkobWludXMgPyAtYWNjdW0gOiBhY2N1bSk7Cit9CisKK2xvbmcgbG9uZyAK K19fYXR0cmlidXRlX18gKAorICAoYWxpYXMgKCJ3Y3N0b2ltYXgiKSkpCit3 Y3N0b2xsICgKKyAgY29uc3Qgd2NoYXJfdCogX19yZXN0cmljdF9fIG5wdHIs CisgIHdjaGFyX3QgKiogX19yZXN0cmljdF9fIGVuZHB0ciwgaW50IGJhc2Up OworCmRpZmYgLS1naXQgYS9uZXdsaWIvbGliYy9pbnR0eXBlcy93Y3N0b3Vt YXguYyBiL25ld2xpYi9saWJjL2ludHR5cGVzL3djc3RvdW1heC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDEyNmUKLS0tIC9k ZXYvbnVsbAorKysgYi9uZXdsaWIvbGliYy9pbnR0eXBlcy93Y3N0b3VtYXgu YwpAQCAtMCwwICsxLDE0NCBAQAorLyoqCisgKiBUaGlzIGZpbGUgaGFzIG5v IGNvcHlyaWdodCBhc3NpZ25lZCBhbmQgaXMgcGxhY2VkIGluIHRoZSBQdWJs aWMgRG9tYWluLgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIG1pbmd3 LXc2NCBydW50aW1lIHBhY2thZ2UuCisgKiBObyB3YXJyYW50eSBpcyBnaXZl bjsgcmVmZXIgdG8gdGhlIGZpbGUgRElTQ0xBSU1FUi5QRCB3aXRoaW4gdGhp cyBwYWNrYWdlLgorICovCisKKy8qCisgKiAgVGhpcyBzb3VyY2UgY29kZSB3 YXMgZXh0cmFjdGVkIGZyb20gdGhlIFE4IHBhY2thZ2UgY3JlYXRlZCBhbmQK KyAqICBwbGFjZWQgaW4gdGhlIFBVQkxJQyBET01BSU4gYnkgRG91ZyBHd3lu IDxnd3luQGFybC5taWw+CisgKiAgbGFzdCBlZGl0OgkxOTk5LzExLzA1CWd3 eW5AYXJsLm1pbAorICogIEltcGxlbWVudHMgc3ViY2xhdXNlIDcuOC4yIG9m IElTTy9JRUMgOTg5OToxOTk5IChFKS4KKyAqICBUaGlzIHBhcnRpY3VsYXIg aW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdGhlIG1hdGNoaW5nIDxpbnR0eXBl cy5oPi4KKyAqICBJdCBhbHNvIGFzc3VtZXMgdGhhdCBjaGFyYWN0ZXIgY29k ZXMgZm9yIEEuLlogYW5kIGEuLnogYXJlIGluCisgKiAgY29udGlndW91cyBh c2NlbmRpbmcgb3JkZXI7IHRoaXMgaXMgdHJ1ZSBmb3IgQVNDSUkgYnV0IG5v dCBFQkNESUMuCisqLworCisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRl IDxlcnJuby5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8aW50 dHlwZXMuaD4KKworLyogY29udmVydCBkaWdpdCB3aWRlIGNoYXJhY3RlciB0 byBudW1iZXIsIGluIGFueSBiYXNlICovCisKKyNkZWZpbmUgVG9XTnVtYmVy KGMpCShpc3dkaWdpdChjKSA/IChjKSAtIEwnMCcgOiBcCisJCQkgaXN3dXBw ZXIoYykgPyAoYykgLSBMJ0EnICsgMTAgOiBcCisJCQkgaXN3bG93ZXIoYykg PyAoYykgLSBMJ2EnICsgMTAgOiBcCisJCQkgLTEJCS8qICJpbnZhbGlkIiBm bGFnICovIFwKKwkJCSkKKworLyogdmFsaWRhdGUgY29udmVydGVkIGRpZ2l0 IGNoYXJhY3RlciBmb3Igc3BlY2lmaWMgYmFzZSAqLworI2RlZmluZSB2YWxp ZChuLCBiKQkoKG4pID49IDAgJiYgKG4pIDwgKGIpKQorCit1aW50bWF4X3QK K3djc3RvdW1heCgKKyAgbnB0ciwgZW5kcHRyLCBiYXNlKQorICByZWdpc3Rl ciBjb25zdCB3Y2hhcl90ICogX19yZXN0cmljdF9fCW5wdHI7CisgIHdjaGFy X3QgKiogX19yZXN0cmljdF9fCQkJCWVuZHB0cjsKKyAgcmVnaXN0ZXIgaW50 CQkJCQliYXNlOworeworICAvKiBhY2N1bXVsYXRlcyBjb252ZXJ0ZWQgdmFs dWUgKi8KKworICByZWdpc3RlciB1aW50bWF4X3QJYWNjdW0sIAluZXh0OwkK KworICAvKiBudW1lcmFsIGZyb20gZGlnaXQgY2hhcmFjdGVyICovCisKKyAg cmVnaXN0ZXIgaW50CQluOwkKKworICAvKiBzZXQgaWZmIG1pbnVzIHNpZ24g c2VlbiAqLworCisgIGludAkJCW1pbnVzOwkKKyAKKyAgLyogc2V0IGlmZiB2 YWx1ZSBvdmVyZmxvd3MgKi8KKyAgCisgIGludAkJCXRvb2JpZzsJCisJCisg IC8qIGluIGNhc2Ugbm8gY29udiBwZXJmb3JtZWQgKi8KKworICBpZiAoZW5k cHRyICE9IE5VTEwpCisgICAgKmVuZHB0ciA9ICh3Y2hhcl90ICopbnB0cjsJ CisgIAorICAvKiB1bnNwZWNpZmllZCBiZWhhdmlvciAqLworCisgIGlmIChi YXNlIDwgMCB8fCBiYXNlID09IDEgfHwgYmFzZSA+IDM2KXsKKyAgICBlcnJu byA9IEVET007CisgICAgcmV0dXJuIDA7CQkKKyAgfQorCisKKyAgLyogc2tp cCBpbml0aWFsLCBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiB3aGl0ZS1z cGFjZSB3LmNoYXJhY3RlcnMgKi8KKworICB3aGlsZSAoaXN3c3BhY2UoKm5w dHIpKQorICAgICsrbnB0cjsKKworICAvKiBwcm9jZXNzIHN1YmplY3Qgc2Vx dWVuY2U6ICovCisKKyAgLyogb3B0aW9uYWwgc2lnbiAqLworCisgIGlmICgo bWludXMgPSAqbnB0ciA9PSBMJy0nKSB8fCAqbnB0ciA9PSBMJysnKQorICAg ICsrbnB0cjsKKworICBpZiAoYmFzZSA9PSAwKXsKKyAgICBpZiAoKm5wdHIg PT0gTCcwJyl7CisgICAgICBpZiAobnB0clsxXSA9PSBMJ1gnIHx8IG5wdHJb MV0gPT0gTCd4JykKKwliYXNlID0gMTY7CisgICAgICBlbHNlCisJYmFzZSA9 IDg7CisgICAgfQorICAgIGVsc2UKKyAgICAgIGJhc2UgPSAxMDsKKyAgfQor CisgIC8qIG9wdGlvbmFsICIweCIgb3IgIjBYIiBmb3IgYmFzZSAxNiAqLwor CQorICBpZiAoIGJhc2UgPT0gMTYgJiYgKm5wdHIgPT0gTCcwJyAmJiAobnB0 clsxXSA9PSBMJ1gnIHx8IG5wdHJbMV0gPT0gTCd4JykpCisKKyAgICAvKiBz a2lwIHBhc3QgdGhpcyBwcmVmaXggKi8KKworICAgIG5wdHIgKz0gMjsJCQor CisgIC8qIGNoZWNrIHdoZXRoZXIgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHZh bGlkIGRpZ2l0ICovCisKKyAgbiA9IFRvV051bWJlcigqbnB0cik7CisgICsr bnB0cjsKKworICAvKiBzdWJqZWN0IHNlcS4gbm90IG9mIGV4cGVjdGVkIGZv cm0gKi8KKworICBpZiAoIXZhbGlkKG4sIGJhc2UpKQorICAgIHJldHVybiAw OwkJCisKKyAgYWNjdW0gPSBuOworCisgIGZvciAodG9vYmlnID0gMDsgbiA9 IFRvV051bWJlcigqbnB0ciksIHZhbGlkKG4sIGJhc2UpOyArK25wdHIpCisK KyAgICAvKiBtaW5vciB3cmFwLWFyb3VuZCAqLworCisgICAgaWYgKGFjY3Vt ID4gVUlOVE1BWF9NQVggLyBiYXNlICsgMSB8fCAobmV4dCA9IGJhc2UgKiBh Y2N1bSArIG4pIDwgYWNjdW0pCisKKyAgICAgIC8qIGJ1dCBrZWVwIHNjYW5u aW5nICovCisKKyAgICAgIHRvb2JpZyA9IDE7CQorICAgIGVsc2UKKyAgICAg IGFjY3VtID0gbmV4dDsKKyAgICAKKyAgICAvKiAtPiBmaXJzdCBub3QtdmFs aWQtZGlnaXQgKi8KKyAgICAKKyAgICBpZiAoIGVuZHB0ciAhPSBOVUxMICkK KyAgICAgICplbmRwdHIgPSAod2NoYXJfdCAqKW5wdHI7CQorCisgICAgaWYg KCB0b29iaWcgKQorICAgIHsKKyAgICAgIGVycm5vID0gRVJBTkdFOworICAg ICAgcmV0dXJuIFVJTlRNQVhfTUFYOworICAgIH0KKyAgICBlbHNlCisgICAg ICByZXR1cm4gbWludXMgPyAtYWNjdW0gOiBhY2N1bTsJLyogKHllcyEpICov Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyAKK19fYXR0cmlidXRlX18gKAor ICAoYWxpYXMgKCJ3Y3N0b3VtYXgiKSkpCit3Y3N0b3VsbCAoCisgIGNvbnN0 IHdjaGFyX3QqIF9fcmVzdHJpY3RfXyBucHRyLAorICB3Y2hhcl90ICoqIF9f cmVzdHJpY3RfXyBlbmRwdHIsIGludCBiYXNlKTsKKwotLSAKMi43LjQKCg== --001a1140a9ac4baa980551dc1615--