From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from omta002.cacentral1.a.cloudfilter.net (omta002.cacentral1.a.cloudfilter.net [3.97.99.33]) by sourceware.org (Postfix) with ESMTPS id B612A3857C52 for ; Fri, 18 Feb 2022 19:33:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B612A3857C52 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=SystematicSw.ab.ca Authentication-Results: sourceware.org; spf=none smtp.mailfrom=systematicsw.ab.ca Received: from shw-obgw-4002a.ext.cloudfilter.net ([10.228.9.250]) by cmsmtp with ESMTP id Kw5OnTtSHgTZYL90VnY0Hi; Fri, 18 Feb 2022 19:33:31 +0000 Received: from [10.0.0.5] ([184.64.124.72]) by cmsmtp with ESMTP id L90UnicKlqyysL90UnyKQK; Fri, 18 Feb 2022 19:33:30 +0000 X-Authority-Analysis: v=2.4 cv=Y6brDzSN c=1 sm=1 tr=0 ts=620ff48a a=oHm12aVswOWz6TMtn9zYKg==:117 a=oHm12aVswOWz6TMtn9zYKg==:17 a=r77TgQKjGQsHNAKrUKIA:9 a=iMpC6L0jGsNNbTZxuiUA:9 a=QEXdDO2ut3YA:10 a=1sIg_MLpLlG0XWrwBZgA:9 a=JMNH9X61SiQA:10 a=3v7sk2-OTgEYziCgAUsA:9 a=ITdVHhY7-e0A:10 a=hxZRiogVl1hwnxlcBywA:9 a=S5FQQ0GGzS0A:10 Content-Type: multipart/mixed; boundary="------------KEbDCT0yNebcd95Y0lCErFZb" Message-ID: <32675850-0f12-33f1-9d89-b39b2c754f6f@SystematicSw.ab.ca> Date: Fri, 18 Feb 2022 12:33:30 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.0 Reply-To: cygwin@cygwin.com Content-Language: en-CA To: cygwin@cygwin.com From: Brian Inglis Subject: autoconf tests for iconv fail with undefined refs Organization: Systematic Software X-CMAE-Envelope: MS4xfJdxuKObWOTJTnebRC2kU1N6VRObx3yB9q2EJOJMI/miWHowb6aOoZo2awW4Gav1RTaEu+imsBCRwi9Lz+R917VHVkpp8OYxx20lmOUvOGc6PtQjuBOZ gbhByX6zIKnb0lZdr654LMO/VMhOb6CvnTG3EFxDesTofjAHoHTDqvN/OXicrOj8gtRqW09J+796JAn2d6dBasPOswyWpyWbn7A= X-Spam-Status: No, score=-1163.6 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, WEIRD_QUOTING autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: cygwin@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Feb 2022 19:33:40 -0000 This is a multi-part message in MIME format. --------------KEbDCT0yNebcd95Y0lCErFZb Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Any idea why autoconf tests for iconv now fail with undefined refs to iconv{_open,,_close}! STC attached, log, -E output. Tried also with -l iconv. -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada This email may be disturbing to some readers as it contains too much technical detail. Reader discretion is advised. [Data in binary units and prefixes, physical quantities in SI.] --------------KEbDCT0yNebcd95Y0lCErFZb Content-Type: text/plain; charset=UTF-8; name="iconv-test.c" Content-Disposition: attachment; filename="iconv-test.c" Content-Transfer-Encoding: base64 I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8aWNvbnYuaD4KCmludAptYWluICh2b2lk KQp7Cmljb252X3QgY2QgPSBpY29udl9vcGVuKCIiLCIiKTsKICAgICAgICAgICBpY29udihj ZCxOVUxMLE5VTEwsTlVMTCxOVUxMKTsKICAgICAgICAgICBpY29udl9jbG9zZShjZCk7CiAg OwogIHJldHVybiAwOwp9Cgo= --------------KEbDCT0yNebcd95Y0lCErFZb Content-Type: text/plain; charset=UTF-8; name="iconv-test.log" Content-Disposition: attachment; filename="iconv-test.log" Content-Transfer-Encoding: base64 L3Vzci9saWIvZ2NjL3g4Nl82NC1wYy1jeWd3aW4vMTEvLi4vLi4vLi4vLi4veDg2XzY0LXBj LWN5Z3dpbi9iaW4vbGQ6IC90bXAvY2NrblYwUEsubzogaW4gZnVuY3Rpb24gYG1haW4nOgok SE9NRS9zcmMvY3lnd2luL2xpYmlzb2NvZGVzL2ljb252LXRlc3QuYzo3OiB1bmRlZmluZWQg cmVmZXJlbmNlIHRvIGBpY29udl9vcGVuJwovdXNyL2xpYi9nY2MveDg2XzY0LXBjLWN5Z3dp bi8xMS8uLi8uLi8uLi8uLi94ODZfNjQtcGMtY3lnd2luL2Jpbi9sZDogJEhPTUUvc3JjL2N5 Z3dpbi9saWJpc29jb2Rlcy9pY29udi10ZXN0LmM6ODogdW5kZWZpbmVkIHJlZmVyZW5jZSB0 byBgaWNvbnYnCi91c3IvbGliL2djYy94ODZfNjQtcGMtY3lnd2luLzExLy4uLy4uLy4uLy4u L3g4Nl82NC1wYy1jeWd3aW4vYmluL2xkOiAkSE9NRS9zcmMvY3lnd2luL2xpYmlzb2NvZGVz L2ljb252LXRlc3QuYzo5OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBpY29udl9jbG9zZScK Y29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCg== --------------KEbDCT0yNebcd95Y0lCErFZb Content-Type: text/plain; charset=UTF-8; name="iconv-test.p" Content-Disposition: attachment; filename="iconv-test.p" Content-Transfer-Encoding: base64 IyAwICJpY29udi10ZXN0LmMiCiMgMSAiJEhPTUUvc3JjL2N5Z3dpbi9saWJpc29jb2Rlcy8v IgojIDAgIjxidWlsdC1pbj4iCiMgMCAiPGNvbW1hbmQtbGluZT4iCiMgMSAiaWNvbnYtdGVz dC5jIgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzIDQKIyAxMCAiL3Vzci9pbmNs dWRlL3N0ZGxpYi5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9pZWVlZnAuaCIg MSAzIDQKIyAxMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAojIDEgIi91c3IvaW5j bHVkZS9fYW5zaS5oIiAxIDMgNAojIDEwICIvdXNyL2luY2x1ZGUvX2Fuc2kuaCIgMyA0CiMg MSAiL3Vzci9pbmNsdWRlL25ld2xpYi5oIiAxIDMgNAojIDE0ICIvdXNyL2luY2x1ZGUvbmV3 bGliLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9fbmV3bGliX3ZlcnNpb24uaCIgMSAzIDQK IyAxNSAiL3Vzci9pbmNsdWRlL25ld2xpYi5oIiAyIDMgNAojIDExICIvdXNyL2luY2x1ZGUv X2Fuc2kuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NvbmZpZy5oIiAxIDMgNAoK CgojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL2llZWVmcC5oIiAxIDMgNAojIDUgIi91c3Iv aW5jbHVkZS9zeXMvY29uZmlnLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0 dXJlcy5oIiAxIDMgNAojIDYgIi91c3IvaW5jbHVkZS9zeXMvY29uZmlnLmgiIDIgMyA0CiMg MjM4ICIvdXNyL2luY2x1ZGUvc3lzL2NvbmZpZy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUv Y3lnd2luL2NvbmZpZy5oIiAxIDMgNAojIDIzOSAiL3Vzci9pbmNsdWRlL3N5cy9jb25maWcu aCIgMiAzIDQKIyAxMiAiL3Vzci9pbmNsdWRlL19hbnNpLmgiIDIgMyA0CiMgMTIgIi91c3Iv aW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKCgoKCiMgMSAiL3Vzci9saWIvZ2NjL3g4Nl82NC1w Yy1jeWd3aW4vMTEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAyMDkgIi91c3IvbGliL2dj Yy94ODZfNjQtcGMtY3lnd2luLzExL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAoKIyAyMDkgIi91 c3IvbGliL2djYy94ODZfNjQtcGMtY3lnd2luLzExL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0 eXBlZGVmIGxvbmcgdW5zaWduZWQgaW50IHNpemVfdDsKIyAzMjEgIi91c3IvbGliL2djYy94 ODZfNjQtcGMtY3lnd2luLzExL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIHNob3J0 IHVuc2lnbmVkIGludCB3Y2hhcl90OwojIDE3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIg MyA0CgojIDEgIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMSAzIDQKIyAxMyAiL3Vzci9p bmNsdWRlL3N5cy9yZWVudC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvX2Fuc2kuaCIgMSAz IDQKIyAxNCAiL3Vzci9pbmNsdWRlL3N5cy9yZWVudC5oIiAyIDMgNAojIDEgIi91c3IvbGli L2djYy94ODZfNjQtcGMtY3lnd2luLzExL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTQz ICIvdXNyL2xpYi9nY2MveDg2XzY0LXBjLWN5Z3dpbi8xMS9pbmNsdWRlL3N0ZGRlZi5oIiAz IDQKdHlwZWRlZiBsb25nIGludCBwdHJkaWZmX3Q7CiMgNDE1ICIvdXNyL2xpYi9nY2MveDg2 XzY0LXBjLWN5Z3dpbi8xMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3Qg ewogIGxvbmcgbG9uZyBfX21heF9hbGlnbl9sbCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRf XyhfX2FsaWdub2ZfXyhsb25nIGxvbmcpKSkpOwogIGxvbmcgZG91YmxlIF9fbWF4X2FsaWdu X2xkIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKF9fYWxpZ25vZl9fKGxvbmcgZG91Ymxl KSkpKTsKIyA0MjYgIi91c3IvbGliL2djYy94ODZfNjQtcGMtY3lnd2luLzExL2luY2x1ZGUv c3RkZGVmLmgiIDMgNAp9IG1heF9hbGlnbl90OwojIDE1ICIvdXNyL2luY2x1ZGUvc3lzL3Jl ZW50LmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCIgMSAzIDQKIyAy NCAiL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9saWIvZ2NjL3g4 Nl82NC1wYy1jeWd3aW4vMTEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzNTAgIi91c3Iv bGliL2djYy94ODZfNjQtcGMtY3lnd2luLzExL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBl ZGVmIHVuc2lnbmVkIGludCB3aW50X3Q7CiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvX3R5cGVz LmgiIDIgMyA0CgoKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9fdHlwZXMuaCIgMSAzIDQK CgoKCgojIDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL19kZWZhdWx0X3R5cGVzLmgiIDEgMyA0 CiMgNDEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL19kZWZhdWx0X3R5cGVzLmgiIDMgNAp0eXBl ZGVmIHNpZ25lZCBjaGFyIF9faW50OF90OwoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWlu dDhfdDsKIyA1NSAiL3Vzci9pbmNsdWRlL21hY2hpbmUvX2RlZmF1bHRfdHlwZXMuaCIgMyA0 CnR5cGVkZWYgc2hvcnQgaW50IF9faW50MTZfdDsKCnR5cGVkZWYgc2hvcnQgdW5zaWduZWQg aW50IF9fdWludDE2X3Q7CiMgNzcgIi91c3IvaW5jbHVkZS9tYWNoaW5lL19kZWZhdWx0X3R5 cGVzLmgiIDMgNAp0eXBlZGVmIGludCBfX2ludDMyX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGlu dCBfX3VpbnQzMl90OwojIDEwMyAiL3Vzci9pbmNsdWRlL21hY2hpbmUvX2RlZmF1bHRfdHlw ZXMuaCIgMyA0CnR5cGVkZWYgbG9uZyBpbnQgX19pbnQ2NF90OwoKdHlwZWRlZiBsb25nIHVu c2lnbmVkIGludCBfX3VpbnQ2NF90OwojIDEzNCAiL3Vzci9pbmNsdWRlL21hY2hpbmUvX2Rl ZmF1bHRfdHlwZXMuaCIgMyA0CnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnRfbGVhc3Q4X3Q7 Cgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50X2xlYXN0OF90OwojIDE2MCAiL3Vzci9p bmNsdWRlL21hY2hpbmUvX2RlZmF1bHRfdHlwZXMuaCIgMyA0CnR5cGVkZWYgc2hvcnQgaW50 IF9faW50X2xlYXN0MTZfdDsKCnR5cGVkZWYgc2hvcnQgdW5zaWduZWQgaW50IF9fdWludF9s ZWFzdDE2X3Q7CiMgMTgyICIvdXNyL2luY2x1ZGUvbWFjaGluZS9fZGVmYXVsdF90eXBlcy5o IiAzIDQKdHlwZWRlZiBpbnQgX19pbnRfbGVhc3QzMl90OwoKdHlwZWRlZiB1bnNpZ25lZCBp bnQgX191aW50X2xlYXN0MzJfdDsKIyAyMDAgIi91c3IvaW5jbHVkZS9tYWNoaW5lL19kZWZh dWx0X3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50IF9faW50X2xlYXN0NjRfdDsKCnR5 cGVkZWYgbG9uZyB1bnNpZ25lZCBpbnQgX191aW50X2xlYXN0NjRfdDsKIyAyMTQgIi91c3Iv aW5jbHVkZS9tYWNoaW5lL19kZWZhdWx0X3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50 IF9faW50bWF4X3Q7CgoKCgoKCgp0eXBlZGVmIGxvbmcgdW5zaWduZWQgaW50IF9fdWludG1h eF90OwoKCgoKCgoKdHlwZWRlZiBsb25nIGludCBfX2ludHB0cl90OwoKdHlwZWRlZiBsb25n IHVuc2lnbmVkIGludCBfX3VpbnRwdHJfdDsKIyA3ICIvdXNyL2luY2x1ZGUvbWFjaGluZS9f dHlwZXMuaCIgMiAzIDQKIyAxNyAiL3Vzci9pbmNsdWRlL21hY2hpbmUvX3R5cGVzLmgiIDMg NAp0eXBlZGVmIF9faW50NjRfdCBfX2Jsa2NudF90OwoKCnR5cGVkZWYgX19pbnQzMl90IF9f Ymxrc2l6ZV90OwoKCnR5cGVkZWYgX191aW50MzJfdCBfX2Rldl90OwoKCgp0eXBlZGVmIHVu c2lnbmVkIGxvbmcgX19mc2Jsa2NudF90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19m c2ZpbGNudF90OwoKCnR5cGVkZWYgX191aW50MzJfdCBfX3VpZF90OwoKCnR5cGVkZWYgX191 aW50MzJfdCBfX2dpZF90OwoKCnR5cGVkZWYgX191aW50NjRfdCBfX2lub190OwoKCnR5cGVk ZWYgbG9uZyBsb25nIF9fa2V5X3Q7CgoKdHlwZWRlZiBfX3VpbnQxNl90IF9fc2FfZmFtaWx5 X3Q7CgoKCnR5cGVkZWYgaW50IF9fc29ja2xlbl90OwojIDI4ICIvdXNyL2luY2x1ZGUvc3lz L190eXBlcy5oIiAyIDMgNAojIDQ2ICIvdXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIiAzIDQK dHlwZWRlZiBsb25nIF9vZmZfdDsKCgoKCgp0eXBlZGVmIGludCBfX3BpZF90OwojIDY3ICIv dXNyL2luY2x1ZGUvc3lzL190eXBlcy5oIiAzIDQKdHlwZWRlZiBfX3VpbnQzMl90IF9faWRf dDsKIyA5MCAiL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCIgMyA0CnR5cGVkZWYgX191aW50 MzJfdCBfX21vZGVfdDsKCgoKCgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIF9v ZmY2NF90OwoKCgoKCnR5cGVkZWYgX29mZl90IF9fb2ZmX3Q7CgoKdHlwZWRlZiBfb2ZmNjRf dCBfX2xvZmZfdDsKIyAxMTYgIi91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmgiIDMgNAp0eXBl ZGVmIGxvbmcgX2Zwb3NfdDsKCgoKCgp0eXBlZGVmIF9vZmY2NF90IF9mcG9zNjRfdDsKIyAx MzEgIi91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgdW5zaWdu ZWQgaW50IF9fc2l6ZV90OwojIDE0NyAiL3Vzci9pbmNsdWRlL3N5cy9fdHlwZXMuaCIgMyA0 CnR5cGVkZWYgbG9uZyBzaWduZWQgaW50IF9zc2l6ZV90OwojIDE1OCAiL3Vzci9pbmNsdWRl L3N5cy9fdHlwZXMuaCIgMyA0CnR5cGVkZWYgX3NzaXplX3QgX19zc2l6ZV90OwoKCgp0eXBl ZGVmIHN0cnVjdAp7CiAgaW50IF9fY291bnQ7CiAgdW5pb24KICB7CiAgICB3aW50X3QgX193 Y2g7CiAgICB1bnNpZ25lZCBjaGFyIF9fd2NoYls0XTsKICB9IF9fdmFsdWU7Cn0gX21ic3Rh dGVfdDsKCgoKCnR5cGVkZWYgdm9pZCAqX2ljb252X3Q7CgoKCgoKCnR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBfX2Nsb2NrX3Q7CgoKCgoKCnR5cGVkZWYgbG9uZyBfX3RpbWVfdDsKCgoKCgp0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19jbG9ja2lkX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBs b25nIF9fdGltZXJfdDsKIyAyMDggIi91c3IvaW5jbHVkZS9zeXMvX3R5cGVzLmgiIDMgNAp0 eXBlZGVmIGludCBfX25sX2l0ZW07CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19ubGlua190 Owp0eXBlZGVmIGxvbmcgX19zdXNlY29uZHNfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9f dXNlY29uZHNfdDsKCgoKCgoKCnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX192YV9saXN0 OwojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDIgMyA0CiMgMjUgIi91c3IvaW5j bHVkZS9zeXMvcmVlbnQuaCIgMyA0CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fVUxvbmc7CiMg MzQgIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5 cy9sb2NrLmgiIDEgMyA0CiMgMTIgIi91c3IvaW5jbHVkZS9zeXMvbG9jay5oIiAzIDQKdHlw ZWRlZiB2b2lkICpfTE9DS19UOwojIDQyICIvdXNyL2luY2x1ZGUvc3lzL2xvY2suaCIgMyA0 CnZvaWQgX19jeWd3aW5fbG9ja19pbml0KF9MT0NLX1QgKik7CnZvaWQgX19jeWd3aW5fbG9j a19pbml0X3JlY3Vyc2l2ZShfTE9DS19UICopOwp2b2lkIF9fY3lnd2luX2xvY2tfZmluaShf TE9DS19UICopOwp2b2lkIF9fY3lnd2luX2xvY2tfbG9jayhfTE9DS19UICopOwppbnQgX19j eWd3aW5fbG9ja190cnlsb2NrKF9MT0NLX1QgKik7CnZvaWQgX19jeWd3aW5fbG9ja191bmxv Y2soX0xPQ0tfVCAqKTsKIyAzNSAiL3Vzci9pbmNsdWRlL3N5cy9yZWVudC5oIiAyIDMgNAp0 eXBlZGVmIF9MT0NLX1QgX2Zsb2NrX3Q7CgoKCgoKCgpzdHJ1Y3QgX3JlZW50OwoKc3RydWN0 IF9fbG9jYWxlX3Q7CgoKCgoKCnN0cnVjdCBfQmlnaW50CnsKICBzdHJ1Y3QgX0JpZ2ludCAq X25leHQ7CiAgaW50IF9rLCBfbWF4d2RzLCBfc2lnbiwgX3dkczsKICBfX1VMb25nIF94WzFd Owp9OwoKCnN0cnVjdCBfX3RtCnsKICBpbnQgX190bV9zZWM7CiAgaW50IF9fdG1fbWluOwog IGludCBfX3RtX2hvdXI7CiAgaW50IF9fdG1fbWRheTsKICBpbnQgX190bV9tb247CiAgaW50 IF9fdG1feWVhcjsKICBpbnQgX190bV93ZGF5OwogIGludCBfX3RtX3lkYXk7CiAgaW50IF9f dG1faXNkc3Q7Cn07CgoKCgoKCgpzdHJ1Y3QgX29uX2V4aXRfYXJncyB7CiB2b2lkICogX2Zu YXJnc1szMl07CiB2b2lkICogX2Rzb19oYW5kbGVbMzJdOwoKIF9fVUxvbmcgX2ZudHlwZXM7 CgoKIF9fVUxvbmcgX2lzX2N4YTsKfTsKIyA5OCAiL3Vzci9pbmNsdWRlL3N5cy9yZWVudC5o IiAzIDQKc3RydWN0IF9hdGV4aXQgewogc3RydWN0IF9hdGV4aXQgKl9uZXh0OwogaW50IF9p bmQ7Cgogdm9pZCAoKl9mbnNbMzJdKSh2b2lkKTsKICAgICAgICBzdHJ1Y3QgX29uX2V4aXRf YXJncyBfb25fZXhpdF9hcmdzOwp9OwojIDEyMiAiL3Vzci9pbmNsdWRlL3N5cy9yZWVudC5o IiAzIDQKc3RydWN0IF9fc2J1ZiB7CiB1bnNpZ25lZCBjaGFyICpfYmFzZTsKIGludCBfc2l6 ZTsKfTsKIyAxODYgIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMyA0CnN0cnVjdCBfX3NG SUxFIHsKICB1bnNpZ25lZCBjaGFyICpfcDsKICBpbnQgX3I7CiAgaW50IF93OwogIHNob3J0 IF9mbGFnczsKICBzaG9ydCBfZmlsZTsKICBzdHJ1Y3QgX19zYnVmIF9iZjsKICBpbnQgX2xi ZnNpemU7CgoKCgoKCiAgdm9pZCAqIF9jb29raWU7CgogIF9zc2l6ZV90ICgqX3JlYWQpIChz dHJ1Y3QgX3JlZW50ICosIHZvaWQgKiwKICAgICAgICBjaGFyICosIHNpemVfdCk7CiAgX3Nz aXplX3QgKCpfd3JpdGUpIChzdHJ1Y3QgX3JlZW50ICosIHZvaWQgKiwKICAgICAgICAgY29u c3QgY2hhciAqLAogICAgICAgICBzaXplX3QpOwogIF9mcG9zX3QgKCpfc2VlaykgKHN0cnVj dCBfcmVlbnQgKiwgdm9pZCAqLCBfZnBvc190LCBpbnQpOwogIGludCAoKl9jbG9zZSkgKHN0 cnVjdCBfcmVlbnQgKiwgdm9pZCAqKTsKCgogIHN0cnVjdCBfX3NidWYgX3ViOwogIHVuc2ln bmVkIGNoYXIgKl91cDsKICBpbnQgX3VyOwoKCiAgdW5zaWduZWQgY2hhciBfdWJ1ZlszXTsK ICB1bnNpZ25lZCBjaGFyIF9uYnVmWzFdOwoKCiAgc3RydWN0IF9fc2J1ZiBfbGI7CgoKICBp bnQgX2Jsa3NpemU7CiAgX29mZl90IF9vZmZzZXQ7CgoKICBzdHJ1Y3QgX3JlZW50ICpfZGF0 YTsKCgoKICBfZmxvY2tfdCBfbG9jazsKCiAgX21ic3RhdGVfdCBfbWJzdGF0ZTsKICBpbnQg X2ZsYWdzMjsKfTsKIyAyNDQgIi91c3IvaW5jbHVkZS9zeXMvcmVlbnQuaCIgMyA0CnN0cnVj dCBfX3NGSUxFNjQgewogIHVuc2lnbmVkIGNoYXIgKl9wOwogIGludCBfcjsKICBpbnQgX3c7 CiAgc2hvcnQgX2ZsYWdzOwogIHNob3J0IF9maWxlOwogIHN0cnVjdCBfX3NidWYgX2JmOwog IGludCBfbGJmc2l6ZTsKCiAgc3RydWN0IF9yZWVudCAqX2RhdGE7CgoKICB2b2lkICogX2Nv b2tpZTsKCiAgX3NzaXplX3QgKCpfcmVhZCkgKHN0cnVjdCBfcmVlbnQgKiwgdm9pZCAqLAog ICAgICAgIGNoYXIgKiwgc2l6ZV90KTsKICBfc3NpemVfdCAoKl93cml0ZSkgKHN0cnVjdCBf cmVlbnQgKiwgdm9pZCAqLAogICAgICAgICBjb25zdCBjaGFyICosCiAgICAgICAgIHNpemVf dCk7CiAgX2Zwb3NfdCAoKl9zZWVrKSAoc3RydWN0IF9yZWVudCAqLCB2b2lkICosIF9mcG9z X3QsIGludCk7CiAgaW50ICgqX2Nsb3NlKSAoc3RydWN0IF9yZWVudCAqLCB2b2lkICopOwoK CiAgc3RydWN0IF9fc2J1ZiBfdWI7CiAgdW5zaWduZWQgY2hhciAqX3VwOwogIGludCBfdXI7 CgoKICB1bnNpZ25lZCBjaGFyIF91YnVmWzNdOwogIHVuc2lnbmVkIGNoYXIgX25idWZbMV07 CgoKICBzdHJ1Y3QgX19zYnVmIF9sYjsKCgogIGludCBfYmxrc2l6ZTsKICBpbnQgX2ZsYWdz MjsKCiAgX29mZjY0X3QgX29mZnNldDsKICBfZnBvczY0X3QgKCpfc2VlazY0KSAoc3RydWN0 IF9yZWVudCAqLCB2b2lkICosIF9mcG9zNjRfdCwgaW50KTsKCgogIF9mbG9ja190IF9sb2Nr OwoKICBfbWJzdGF0ZV90IF9tYnN0YXRlOwp9Owp0eXBlZGVmIHN0cnVjdCBfX3NGSUxFNjQg X19GSUxFOwoKCgoKCnN0cnVjdCBfZ2x1ZQp7CiAgc3RydWN0IF9nbHVlICpfbmV4dDsKICBp bnQgX25pb2JzOwogIF9fRklMRSAqX2lvYnM7Cn07CiMgMzI0ICIvdXNyL2luY2x1ZGUvc3lz L3JlZW50LmgiIDMgNApzdHJ1Y3QgX3JhbmQ0OCB7CiAgdW5zaWduZWQgc2hvcnQgX3NlZWRb M107CiAgdW5zaWduZWQgc2hvcnQgX211bHRbM107CiAgdW5zaWduZWQgc2hvcnQgX2FkZDsK CgoKCn07CiMgNjEzICIvdXNyL2luY2x1ZGUvc3lzL3JlZW50LmgiIDMgNApzdHJ1Y3QgX3Jl ZW50CnsKICBpbnQgX2Vycm5vOwoKCgoKICBfX0ZJTEUgKl9zdGRpbiwgKl9zdGRvdXQsICpf c3RkZXJyOwoKICBpbnQgX2luYzsKICBjaGFyIF9lbWVyZ2VuY3lbMjVdOwoKCiAgaW50IF91 bnNwZWNpZmllZF9sb2NhbGVfaW5mbzsKICBzdHJ1Y3QgX19sb2NhbGVfdCAqX2xvY2FsZTsK CiAgaW50IF9fc2RpZGluaXQ7CgogIHZvaWQgKCpfX2NsZWFudXApIChzdHJ1Y3QgX3JlZW50 ICopOwoKCiAgc3RydWN0IF9CaWdpbnQgKl9yZXN1bHQ7CiAgaW50IF9yZXN1bHRfazsKICBz dHJ1Y3QgX0JpZ2ludCAqX3A1czsKICBzdHJ1Y3QgX0JpZ2ludCAqKl9mcmVlbGlzdDsKCgog IGludCBfY3Z0bGVuOwogIGNoYXIgKl9jdnRidWY7CgogIHVuaW9uCiAgICB7CiAgICAgIHN0 cnVjdAogICAgICAgIHsKICAgICAgICAgIHVuc2lnbmVkIGludCBfdW51c2VkX3JhbmQ7CiAg ICAgICAgICBjaGFyICogX3N0cnRva19sYXN0OwogICAgICAgICAgY2hhciBfYXNjdGltZV9i dWZbMjZdOwogICAgICAgICAgc3RydWN0IF9fdG0gX2xvY2FsdGltZV9idWY7CiAgICAgICAg ICBpbnQgX2dhbW1hX3NpZ25nYW07CiAgICAgICAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVk IGxvbmcgbG9uZyBfcmFuZF9uZXh0OwogICAgICAgICAgc3RydWN0IF9yYW5kNDggX3I0ODsK ICAgICAgICAgIF9tYnN0YXRlX3QgX21ibGVuX3N0YXRlOwogICAgICAgICAgX21ic3RhdGVf dCBfbWJ0b3djX3N0YXRlOwogICAgICAgICAgX21ic3RhdGVfdCBfd2N0b21iX3N0YXRlOwog ICAgICAgICAgY2hhciBfbDY0YV9idWZbOF07CiAgICAgICAgICBjaGFyIF9zaWduYWxfYnVm WzI0XTsKICAgICAgICAgIGludCBfZ2V0ZGF0ZV9lcnI7CiAgICAgICAgICBfbWJzdGF0ZV90 IF9tYnJsZW5fc3RhdGU7CiAgICAgICAgICBfbWJzdGF0ZV90IF9tYnJ0b3djX3N0YXRlOwog ICAgICAgICAgX21ic3RhdGVfdCBfbWJzcnRvd2NzX3N0YXRlOwogICAgICAgICAgX21ic3Rh dGVfdCBfd2NydG9tYl9zdGF0ZTsKICAgICAgICAgIF9tYnN0YXRlX3QgX3djc3J0b21ic19z dGF0ZTsKICAgaW50IF9oX2Vycm5vOwogICAgICAgIH0gX3JlZW50OwoKCgogICAgICBzdHJ1 Y3QKICAgICAgICB7CgogICAgICAgICAgdW5zaWduZWQgY2hhciAqIF9uZXh0ZlszMF07CiAg ICAgICAgICB1bnNpZ25lZCBpbnQgX25tYWxsb2NbMzBdOwogICAgICAgIH0gX3VudXNlZDsK ICAgIH0gX25ldzsKCgoKICBzdHJ1Y3QgX2F0ZXhpdCAqX2F0ZXhpdDsKICBzdHJ1Y3QgX2F0 ZXhpdCBfYXRleGl0MDsKCgoKICB2b2lkICgqKl9zaWdfZnVuYykoaW50KTsKCgoKCiAgc3Ry dWN0IF9nbHVlIF9fc2dsdWU7CgogIF9fRklMRSBfX3NmWzNdOwoKfTsKIyA4MTkgIi91c3Iv aW5jbHVkZS9zeXMvcmVlbnQuaCIgMyA0CmV4dGVybiBzdHJ1Y3QgX3JlZW50ICpfaW1wdXJl X3B0ciA7CmV4dGVybiBzdHJ1Y3QgX3JlZW50ICpjb25zdCBfZ2xvYmFsX2ltcHVyZV9wdHIg OwoKdm9pZCBfcmVjbGFpbV9yZWVudCAoc3RydWN0IF9yZWVudCAqKTsKCgoKCgogIHN0cnVj dCBfcmVlbnQgKiBfX2dldHJlZW50ICh2b2lkKTsKIyAxOSAiL3Vzci9pbmNsdWRlL3N0ZGxp Yi5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzIDQKIyA0NyAi L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKIyAxICIvdXNyL2xpYi9nY2MveDg2XzY0 LXBjLWN5Z3dpbi8xMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDQ4ICIvdXNyL2luY2x1 ZGUvc3lzL2NkZWZzLmgiIDIgMyA0CiMgMjAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAz IDQKIyAxICIvdXNyL2luY2x1ZGUvbWFjaGluZS9zdGRsaWIuaCIgMSAzIDQKIyAxNSAiL3Vz ci9pbmNsdWRlL21hY2hpbmUvc3RkbGliLmgiIDMgNApjaGFyICpta2R0ZW1wIChjaGFyICop OwojIDIxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgojIDEgIi91c3IvaW5jbHVk ZS9hbGxvY2EuaCIgMSAzIDQKIyAyMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoK CgojIDEgIi91c3IvaW5jbHVkZS9jeWd3aW4vc3RkbGliLmgiIDEgMyA0CiMgMTMgIi91c3Iv aW5jbHVkZS9jeWd3aW4vc3RkbGliLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9jeWd3aW4v d2FpdC5oIiAxIDMgNAojIDE0ICIvdXNyL2luY2x1ZGUvY3lnd2luL3N0ZGxpYi5oIiAyIDMg NAoKCgoKCgpjb25zdCBjaGFyICpnZXRwcm9nbmFtZSAodm9pZCk7CnZvaWQgc2V0cHJvZ25h bWUgKGNvbnN0IGNoYXIgKik7CgoKCgoKaW50IHVuc2V0ZW52IChjb25zdCBjaGFyICopOwoK CmludCBjbGVhcmVudiAodm9pZCk7CiMgNTEgIi91c3IvaW5jbHVkZS9jeWd3aW4vc3RkbGli LmgiIDMgNApleHRlcm4gdm9pZCAqbWVtYWxpZ24gKHNpemVfdCwgc2l6ZV90KTsKCmV4dGVy biB2b2lkICp2YWxsb2MgKHNpemVfdCk7CiMgODQgIi91c3IvaW5jbHVkZS9jeWd3aW4vc3Rk bGliLmgiIDMgNAppbnQgZ2V0bG9hZGF2Zyhkb3VibGUgbG9hZGF2Z1tdLCBpbnQgbmVsZW0p OwojIDI3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgoKCgoKCgoKdHlwZWRlZiBz dHJ1Y3QKewogIGludCBxdW90OwogIGludCByZW07Cn0gZGl2X3Q7Cgp0eXBlZGVmIHN0cnVj dAp7CiAgbG9uZyBxdW90OwogIGxvbmcgcmVtOwp9IGxkaXZfdDsKCgp0eXBlZGVmIHN0cnVj dAp7CiAgbG9uZyBsb25nIGludCBxdW90OwogIGxvbmcgbG9uZyBpbnQgcmVtOwp9IGxsZGl2 X3Q7CgoKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChjb25zdCB2b2lkICosIGNv bnN0IHZvaWQgKik7CgoKCgoKCgppbnQgX19sb2NhbGVfbWJfY3VyX21heCAodm9pZCk7CgoK CnZvaWQgYWJvcnQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKaW50 IGFicyAoaW50KTsKCl9fdWludDMyX3QgYXJjNHJhbmRvbSAodm9pZCk7Cl9fdWludDMyX3Qg YXJjNHJhbmRvbV91bmlmb3JtIChfX3VpbnQzMl90KTsKdm9pZCBhcmM0cmFuZG9tX2J1ZiAo dm9pZCAqLCBzaXplX3QpOwoKaW50IGF0ZXhpdCAodm9pZCAoKl9fZnVuYykodm9pZCkpOwpk b3VibGUgYXRvZiAoY29uc3QgY2hhciAqX19ucHRyKTsKCmZsb2F0IGF0b2ZmIChjb25zdCBj aGFyICpfX25wdHIpOwoKaW50IGF0b2kgKGNvbnN0IGNoYXIgKl9fbnB0cik7CmludCBfYXRv aV9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKl9fbnB0cik7CmxvbmcgYXRvbCAo Y29uc3QgY2hhciAqX19ucHRyKTsKbG9uZyBfYXRvbF9yIChzdHJ1Y3QgX3JlZW50ICosIGNv bnN0IGNoYXIgKl9fbnB0cik7CnZvaWQgKiBic2VhcmNoIChjb25zdCB2b2lkICpfX2tleSwK ICAgICAgICAgY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgICBzaXplX3QgX19ubWVtYiwK ICAgICAgICAgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgX19jb21wYXJfZm5fdCBfY29tcGFy KTsKdm9pZCAqY2FsbG9jKHNpemVfdCwgc2l6ZV90KSBfX2F0dHJpYnV0ZV9fKChfX21hbGxv Y19fKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCiAgICAgIF9f YXR0cmlidXRlX18oKF9fYWxsb2Nfc2l6ZV9fKDEsIDIpKSkgOwpkaXZfdCBkaXYgKGludCBf X251bWVyLCBpbnQgX19kZW5vbSk7CnZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJp YnV0ZV9fICgoX19ub3JldHVybl9fKSk7CnZvaWQgZnJlZSAodm9pZCAqKSA7CmNoYXIgKiBn ZXRlbnYgKGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsKY2hhciAqIF9nZXRlbnZfciAoc3RydWN0 IF9yZWVudCAqLCBjb25zdCBjaGFyICpfX3N0cmluZyk7CgoKCmNoYXIgKiBfZmluZGVudiAo Y29uc3QgY2hhciAqLCBpbnQgKik7CmNoYXIgKiBfZmluZGVudl9yIChzdHJ1Y3QgX3JlZW50 ICosIGNvbnN0IGNoYXIgKiwgaW50ICopOwoKZXh0ZXJuIGNoYXIgKnN1Ym9wdGFyZzsKaW50 IGdldHN1Ym9wdCAoY2hhciAqKiwgY2hhciAqIGNvbnN0ICosIGNoYXIgKiopOwoKbG9uZyBs YWJzIChsb25nKTsKbGRpdl90IGxkaXYgKGxvbmcgX19udW1lciwgbG9uZyBfX2Rlbm9tKTsK dm9pZCAqbWFsbG9jKHNpemVfdCkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpIF9fYXR0 cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs bG9jX3NpemVfXygxKSkpIDsKaW50IG1ibGVuIChjb25zdCBjaGFyICosIHNpemVfdCk7Cmlu dCBfbWJsZW5fciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgX21i c3RhdGVfdCAqKTsKaW50IG1idG93YyAod2NoYXJfdCAqcmVzdHJpY3QsIGNvbnN0IGNoYXIg KnJlc3RyaWN0LCBzaXplX3QpOwppbnQgX21idG93Y19yIChzdHJ1Y3QgX3JlZW50ICosIHdj aGFyX3QgKnJlc3RyaWN0LCBjb25zdCBjaGFyICpyZXN0cmljdCwgc2l6ZV90LCBfbWJzdGF0 ZV90ICopOwppbnQgd2N0b21iIChjaGFyICosIHdjaGFyX3QpOwppbnQgX3djdG9tYl9yIChz dHJ1Y3QgX3JlZW50ICosIGNoYXIgKiwgd2NoYXJfdCwgX21ic3RhdGVfdCAqKTsKc2l6ZV90 IG1ic3Rvd2NzICh3Y2hhcl90ICpyZXN0cmljdCwgY29uc3QgY2hhciAqcmVzdHJpY3QsIHNp emVfdCk7CnNpemVfdCBfbWJzdG93Y3NfciAoc3RydWN0IF9yZWVudCAqLCB3Y2hhcl90ICpy ZXN0cmljdCwgY29uc3QgY2hhciAqcmVzdHJpY3QsIHNpemVfdCwgX21ic3RhdGVfdCAqKTsK c2l6ZV90IHdjc3RvbWJzIChjaGFyICpyZXN0cmljdCwgY29uc3Qgd2NoYXJfdCAqcmVzdHJp Y3QsIHNpemVfdCk7CnNpemVfdCBfd2NzdG9tYnNfciAoc3RydWN0IF9yZWVudCAqLCBjaGFy ICpyZXN0cmljdCwgY29uc3Qgd2NoYXJfdCAqcmVzdHJpY3QsIHNpemVfdCwgX21ic3RhdGVf dCAqKTsKCgpjaGFyICogbWtkdGVtcCAoY2hhciAqKTsKCgoKCgoKaW50IG1rc3RlbXAgKGNo YXIgKik7CgoKaW50IG1rc3RlbXBzIChjaGFyICosIGludCk7CgoKY2hhciAqIG1rdGVtcCAo Y2hhciAqKSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18oInRoZSB1c2Ugb2YgYG1r dGVtcCcgaXMgZGFuZ2Vyb3VzOyB1c2UgYG1rc3RlbXAnIGluc3RlYWQiKSkpOwoKCmNoYXIg KiBfbWtkdGVtcF9yIChzdHJ1Y3QgX3JlZW50ICosIGNoYXIgKik7CmludCBfbWtvc3RlbXBf ciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICosIGludCk7CmludCBfbWtvc3RlbXBzX3IgKHN0 cnVjdCBfcmVlbnQgKiwgY2hhciAqLCBpbnQsIGludCk7CmludCBfbWtzdGVtcF9yIChzdHJ1 Y3QgX3JlZW50ICosIGNoYXIgKik7CmludCBfbWtzdGVtcHNfciAoc3RydWN0IF9yZWVudCAq LCBjaGFyICosIGludCk7CmNoYXIgKiBfbWt0ZW1wX3IgKHN0cnVjdCBfcmVlbnQgKiwgY2hh ciAqKSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18oInRoZSB1c2Ugb2YgYG1rdGVt cCcgaXMgZGFuZ2Vyb3VzOyB1c2UgYG1rc3RlbXAnIGluc3RlYWQiKSkpOwp2b2lkIHFzb3J0 ICh2b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBh cl9mbl90IF9jb21wYXIpOwppbnQgcmFuZCAodm9pZCk7CnZvaWQgKnJlYWxsb2Modm9pZCAq LCBzaXplX3QpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBfX2F0 dHJpYnV0ZV9fKChfX2FsbG9jX3NpemVfXygyKSkpIDsKCnZvaWQgKnJlYWxsb2NhcnJheSh2 b2lkICosIHNpemVfdCwgc2l6ZV90KSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jl c3VsdF9fKSkgX19hdHRyaWJ1dGVfXygoX19hbGxvY19zaXplX18oMiwgMykpKTsKdm9pZCAq cmVhbGxvY2Yodm9pZCAqLCBzaXplX3QpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBfX2F0dHJpYnV0ZV9fKChfX2FsbG9jX3NpemVfXygyKSkpOwoKCmNoYXIg KiByZWFscGF0aCAoY29uc3QgY2hhciAqcmVzdHJpY3QgcGF0aCwgY2hhciAqcmVzdHJpY3Qg cmVzb2x2ZWRfcGF0aCk7CgoKaW50IHJwbWF0Y2ggKGNvbnN0IGNoYXIgKnJlc3BvbnNlKTsK CgoKCnZvaWQgc3JhbmQgKHVuc2lnbmVkIF9fc2VlZCk7CmRvdWJsZSBzdHJ0b2QgKGNvbnN0 IGNoYXIgKnJlc3RyaWN0IF9fbiwgY2hhciAqKnJlc3RyaWN0IF9fZW5kX1BUUik7CmRvdWJs ZSBfc3RydG9kX3IgKHN0cnVjdCBfcmVlbnQgKixjb25zdCBjaGFyICpyZXN0cmljdCBfX24s IGNoYXIgKipyZXN0cmljdCBfX2VuZF9QVFIpOwoKZmxvYXQgc3RydG9mIChjb25zdCBjaGFy ICpyZXN0cmljdCBfX24sIGNoYXIgKipyZXN0cmljdCBfX2VuZF9QVFIpOwoKCgoKCgoKbG9u ZyBzdHJ0b2wgKGNvbnN0IGNoYXIgKnJlc3RyaWN0IF9fbiwgY2hhciAqKnJlc3RyaWN0IF9f ZW5kX1BUUiwgaW50IF9fYmFzZSk7CmxvbmcgX3N0cnRvbF9yIChzdHJ1Y3QgX3JlZW50ICos Y29uc3QgY2hhciAqcmVzdHJpY3QgX19uLCBjaGFyICoqcmVzdHJpY3QgX19lbmRfUFRSLCBp bnQgX19iYXNlKTsKdW5zaWduZWQgbG9uZyBzdHJ0b3VsIChjb25zdCBjaGFyICpyZXN0cmlj dCBfX24sIGNoYXIgKipyZXN0cmljdCBfX2VuZF9QVFIsIGludCBfX2Jhc2UpOwp1bnNpZ25l ZCBsb25nIF9zdHJ0b3VsX3IgKHN0cnVjdCBfcmVlbnQgKixjb25zdCBjaGFyICpyZXN0cmlj dCBfX24sIGNoYXIgKipyZXN0cmljdCBfX2VuZF9QVFIsIGludCBfX2Jhc2UpOwojIDE5MSAi L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKaW50IHN5c3RlbSAoY29uc3QgY2hhciAqX19z dHJpbmcpOwoKCmxvbmcgYTY0bCAoY29uc3QgY2hhciAqX19pbnB1dCk7CmNoYXIgKiBsNjRh IChsb25nIF9faW5wdXQpOwpjaGFyICogX2w2NGFfciAoc3RydWN0IF9yZWVudCAqLGxvbmcg X19pbnB1dCk7CgoKaW50IG9uX2V4aXQgKHZvaWQgKCpfX2Z1bmMpKGludCwgdm9pZCAqKSx2 b2lkICpfX2FyZyk7CgoKdm9pZCBfRXhpdCAoaW50IF9fc3RhdHVzKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3JldHVybl9fKSk7CgoKaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpOwoKaW50 IF9wdXRlbnZfciAoc3RydWN0IF9yZWVudCAqLCBjaGFyICpfX3N0cmluZyk7CnZvaWQgKiBf cmVhbGxvY2ZfciAoc3RydWN0IF9yZWVudCAqLCB2b2lkICosIHNpemVfdCk7CgppbnQgc2V0 ZW52IChjb25zdCBjaGFyICpfX3N0cmluZywgY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9f b3ZlcndyaXRlKTsKCmludCBfc2V0ZW52X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hh ciAqX19zdHJpbmcsIGNvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX292ZXJ3cml0ZSk7CiMg MjI0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApjaGFyICogX19pdG9hIChpbnQsIGNo YXIgKiwgaW50KTsKY2hhciAqIF9fdXRvYSAodW5zaWduZWQsIGNoYXIgKiwgaW50KTsKCmNo YXIgKiBpdG9hIChpbnQsIGNoYXIgKiwgaW50KTsKY2hhciAqIHV0b2EgKHVuc2lnbmVkLCBj aGFyICosIGludCk7CgoKaW50IHJhbmRfciAodW5zaWduZWQgKl9fc2VlZCk7CgoKCmRvdWJs ZSBkcmFuZDQ4ICh2b2lkKTsKZG91YmxlIF9kcmFuZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKik7 CmRvdWJsZSBlcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwpkb3VibGUgX2VyYW5kNDhf ciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBbM10pOwpsb25nIGpyYW5kNDgg KHVuc2lnbmVkIHNob3J0IFszXSk7CmxvbmcgX2pyYW5kNDhfciAoc3RydWN0IF9yZWVudCAq LCB1bnNpZ25lZCBzaG9ydCBbM10pOwp2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IFs3 XSk7CnZvaWQgX2xjb25nNDhfciAoc3RydWN0IF9yZWVudCAqLCB1bnNpZ25lZCBzaG9ydCBb N10pOwpsb25nIGxyYW5kNDggKHZvaWQpOwpsb25nIF9scmFuZDQ4X3IgKHN0cnVjdCBfcmVl bnQgKik7CmxvbmcgbXJhbmQ0OCAodm9pZCk7CmxvbmcgX21yYW5kNDhfciAoc3RydWN0IF9y ZWVudCAqKTsKbG9uZyBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwpsb25nIF9ucmFu ZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKiwgdW5zaWduZWQgc2hvcnQgWzNdKTsKdW5zaWduZWQg c2hvcnQgKgogICAgICAgc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBbM10pOwp1bnNpZ25lZCBz aG9ydCAqCiAgICAgICBfc2VlZDQ4X3IgKHN0cnVjdCBfcmVlbnQgKiwgdW5zaWduZWQgc2hv cnQgWzNdKTsKdm9pZCBzcmFuZDQ4IChsb25nKTsKdm9pZCBfc3JhbmQ0OF9yIChzdHJ1Y3Qg X3JlZW50ICosIGxvbmcpOwoKCmNoYXIgKiBpbml0c3RhdGUgKHVuc2lnbmVkLCBjaGFyICos IHNpemVfdCk7CmxvbmcgcmFuZG9tICh2b2lkKTsKY2hhciAqIHNldHN0YXRlIChjaGFyICop Owp2b2lkIHNyYW5kb20gKHVuc2lnbmVkKTsKCgpsb25nIGxvbmcgYXRvbGwgKGNvbnN0IGNo YXIgKl9fbnB0cik7Cgpsb25nIGxvbmcgX2F0b2xsX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29u c3QgY2hhciAqX19ucHRyKTsKCmxvbmcgbG9uZyBsbGFicyAobG9uZyBsb25nKTsKbGxkaXZf dCBsbGRpdiAobG9uZyBsb25nIF9fbnVtZXIsIGxvbmcgbG9uZyBfX2Rlbm9tKTsKbG9uZyBs b25nIHN0cnRvbGwgKGNvbnN0IGNoYXIgKnJlc3RyaWN0IF9fbiwgY2hhciAqKnJlc3RyaWN0 IF9fZW5kX1BUUiwgaW50IF9fYmFzZSk7Cgpsb25nIGxvbmcgX3N0cnRvbGxfciAoc3RydWN0 IF9yZWVudCAqLCBjb25zdCBjaGFyICpyZXN0cmljdCBfX24sIGNoYXIgKipyZXN0cmljdCBf X2VuZF9QVFIsIGludCBfX2Jhc2UpOwoKdW5zaWduZWQgbG9uZyBsb25nIHN0cnRvdWxsIChj b25zdCBjaGFyICpyZXN0cmljdCBfX24sIGNoYXIgKipyZXN0cmljdCBfX2VuZF9QVFIsIGlu dCBfX2Jhc2UpOwoKdW5zaWduZWQgbG9uZyBsb25nIF9zdHJ0b3VsbF9yIChzdHJ1Y3QgX3Jl ZW50ICosIGNvbnN0IGNoYXIgKnJlc3RyaWN0IF9fbiwgY2hhciAqKnJlc3RyaWN0IF9fZW5k X1BUUiwgaW50IF9fYmFzZSk7CiMgMjg4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApp bnQgcG9zaXhfbWVtYWxpZ24gKHZvaWQgKiosIHNpemVfdCwgc2l6ZV90KSBfX2F0dHJpYnV0 ZV9fKChfX25vbm51bGxfXyAoMSkpKQogICAgIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVz ZWRfcmVzdWx0X18pKTsKCgpjaGFyICogX2R0b2FfciAoc3RydWN0IF9yZWVudCAqLCBkb3Vi bGUsIGludCwgaW50LCBpbnQgKiwgaW50KiwgY2hhcioqKTsKCgoKCgoKCmludCBfc3lzdGVt X3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqKTsKCnZvaWQgX19lcHJpbnRmIChj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50LCBjb25zdCBjaGFyICop OwojIDMxMiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKdm9pZCBxc29ydF9yICh2b2lk ICpfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCB2b2lkICpfX3RodW5r LCBpbnQgKCpfY29tcGFyKSh2b2lkICosIGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkK ICAgICAgICAgICAgIF9fYXNtX18gKCIiICJfX2JzZF9xc29ydF9yIik7CiMgMzIyICIvdXNy L2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gbG9uZyBkb3VibGUgX3N0cnRvbGRfciAo c3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICpyZXN0cmljdCwgY2hhciAqKnJlc3RyaWN0 KTsKCmV4dGVybiBsb25nIGRvdWJsZSBzdHJ0b2xkIChjb25zdCBjaGFyICpyZXN0cmljdCwg Y2hhciAqKnJlc3RyaWN0KTsKCgoKCgoKCnZvaWQgKiBhbGlnbmVkX2FsbG9jKHNpemVfdCwg c2l6ZV90KSBfX2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXygoX19h bGxvY19hbGlnbl9fKDEpKSkKICAgICBfX2F0dHJpYnV0ZV9fKChfX2FsbG9jX3NpemVfXygy KSkpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsKaW50IGF0X3F1 aWNrX2V4aXQodm9pZCAoKikodm9pZCkpOwpfTm9yZXR1cm4gdm9pZAogcXVpY2tfZXhpdChp bnQpOwoKCgojIDIgImljb252LXRlc3QuYyIgMgojIDEgIi91c3IvaW5jbHVkZS9pY29udi5o IiAxIDMgNAojIDMwICIvdXNyL2luY2x1ZGUvaWNvbnYuaCIgMyA0CiMgMSAiL3Vzci9pbmNs dWRlL3JlZW50LmgiIDEgMyA0CiMgOTggIi91c3IvaW5jbHVkZS9yZWVudC5oIiAzIDQKIyAx ICIvdXNyL2xpYi9nY2MveDg2XzY0LXBjLWN5Z3dpbi8xMS9pbmNsdWRlL3N0ZGRlZi5oIiAx IDMgNAojIDk5ICIvdXNyL2luY2x1ZGUvcmVlbnQuaCIgMiAzIDQKCgpzdHJ1Y3Qgc3RhdDsK c3RydWN0IHRtczsKc3RydWN0IHRpbWV2YWw7CnN0cnVjdCB0aW1lem9uZTsKIyAxMzkgIi91 c3IvaW5jbHVkZS9yZWVudC5oIiAzIDQKZXh0ZXJuIGludCBfY2xvc2VfciAoc3RydWN0IF9y ZWVudCAqLCBpbnQpOwpleHRlcm4gaW50IF9leGVjdmVfciAoc3RydWN0IF9yZWVudCAqLCBj b25zdCBjaGFyICosIGNoYXIgKmNvbnN0ICosIGNoYXIgKmNvbnN0ICopOwpleHRlcm4gaW50 IF9mY250bF9yIChzdHJ1Y3QgX3JlZW50ICosIGludCwgaW50LCBpbnQpOwpleHRlcm4gaW50 IF9mb3JrX3IgKHN0cnVjdCBfcmVlbnQgKik7CmV4dGVybiBpbnQgX2ZzdGF0X3IgKHN0cnVj dCBfcmVlbnQgKiwgaW50LCBzdHJ1Y3Qgc3RhdCAqKTsKZXh0ZXJuIGludCBfZ2V0cGlkX3Ig KHN0cnVjdCBfcmVlbnQgKik7CmV4dGVybiBpbnQgX2lzYXR0eV9yIChzdHJ1Y3QgX3JlZW50 ICosIGludCk7CmV4dGVybiBpbnQgX2tpbGxfciAoc3RydWN0IF9yZWVudCAqLCBpbnQsIGlu dCk7CmV4dGVybiBpbnQgX2xpbmtfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICos IGNvbnN0IGNoYXIgKik7CmV4dGVybiBfb2ZmX3QgX2xzZWVrX3IgKHN0cnVjdCBfcmVlbnQg KiwgaW50LCBfb2ZmX3QsIGludCk7CmV4dGVybiBpbnQgX21rZGlyX3IgKHN0cnVjdCBfcmVl bnQgKiwgY29uc3QgY2hhciAqLCBpbnQpOwpleHRlcm4gaW50IF9vcGVuX3IgKHN0cnVjdCBf cmVlbnQgKiwgY29uc3QgY2hhciAqLCBpbnQsIGludCk7CmV4dGVybiBfc3NpemVfdCBfcmVh ZF9yIChzdHJ1Y3QgX3JlZW50ICosIGludCwgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gaW50 IF9yZW5hbWVfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg Kik7CmV4dGVybiB2b2lkICpfc2Jya19yIChzdHJ1Y3QgX3JlZW50ICosIHB0cmRpZmZfdCk7 CmV4dGVybiBpbnQgX3N0YXRfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICosIHN0 cnVjdCBzdGF0ICopOwpleHRlcm4gdW5zaWduZWQgbG9uZyBfdGltZXNfciAoc3RydWN0IF9y ZWVudCAqLCBzdHJ1Y3QgdG1zICopOwpleHRlcm4gaW50IF91bmxpbmtfciAoc3RydWN0IF9y ZWVudCAqLCBjb25zdCBjaGFyICopOwpleHRlcm4gaW50IF93YWl0X3IgKHN0cnVjdCBfcmVl bnQgKiwgaW50ICopOwpleHRlcm4gX3NzaXplX3QgX3dyaXRlX3IgKHN0cnVjdCBfcmVlbnQg KiwgaW50LCBjb25zdCB2b2lkICosIHNpemVfdCk7CgoKZXh0ZXJuIGludCBfZ2V0dGltZW9m ZGF5X3IgKHN0cnVjdCBfcmVlbnQgKiwgc3RydWN0IHRpbWV2YWwgKl9fdHAsIHZvaWQgKl9f dHpwKTsKCgoKCgoKCnN0cnVjdCBzdGF0OwoKZXh0ZXJuIF9vZmY2NF90IF9sc2VlazY0X3Ig KHN0cnVjdCBfcmVlbnQgKiwgaW50LCBfb2ZmNjRfdCwgaW50KTsKZXh0ZXJuIGludCBfZnN0 YXQ2NF9yIChzdHJ1Y3QgX3JlZW50ICosIGludCwgc3RydWN0IHN0YXQgKik7CmV4dGVybiBp bnQgX29wZW42NF9yIChzdHJ1Y3QgX3JlZW50ICosIGNvbnN0IGNoYXIgKiwgaW50LCBpbnQp OwpleHRlcm4gaW50IF9zdGF0NjRfciAoc3RydWN0IF9yZWVudCAqLCBjb25zdCBjaGFyICos IHN0cnVjdCBzdGF0ICopOwojIDMxICIvdXNyL2luY2x1ZGUvaWNvbnYuaCIgMiAzIDQKIyAx ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMyA0CiMgMjggIi91c3IvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgX191aW50OF90IHVfaW50OF90OwoKCnR5cGVkZWYg X191aW50MTZfdCB1X2ludDE2X3Q7CgoKdHlwZWRlZiBfX3VpbnQzMl90IHVfaW50MzJfdDsK Cgp0eXBlZGVmIF9fdWludDY0X3QgdV9pbnQ2NF90OwoKdHlwZWRlZiBfX2ludHB0cl90IHJl Z2lzdGVyX3Q7CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9fc3RkaW50LmgiIDEgMyA0 CiMgMjAgIi91c3IvaW5jbHVkZS9zeXMvX3N0ZGludC5oIiAzIDQKdHlwZWRlZiBfX2ludDhf dCBpbnQ4X3QgOwoKCgp0eXBlZGVmIF9fdWludDhfdCB1aW50OF90IDsKCgoKCgoKCnR5cGVk ZWYgX19pbnQxNl90IGludDE2X3QgOwoKCgp0eXBlZGVmIF9fdWludDE2X3QgdWludDE2X3Qg OwoKCgoKCgoKdHlwZWRlZiBfX2ludDMyX3QgaW50MzJfdCA7CgoKCnR5cGVkZWYgX191aW50 MzJfdCB1aW50MzJfdCA7CgoKCgoKCgp0eXBlZGVmIF9faW50NjRfdCBpbnQ2NF90IDsKCgoK dHlwZWRlZiBfX3VpbnQ2NF90IHVpbnQ2NF90IDsKCgoKCgoKdHlwZWRlZiBfX2ludG1heF90 IGludG1heF90OwoKCgoKdHlwZWRlZiBfX3VpbnRtYXhfdCB1aW50bWF4X3Q7CgoKCgp0eXBl ZGVmIF9faW50cHRyX3QgaW50cHRyX3Q7CgoKCgp0eXBlZGVmIF9fdWludHB0cl90IHVpbnRw dHJfdDsKIyA0NyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCiMgMSAiL3Vz ci9pbmNsdWRlL21hY2hpbmUvZW5kaWFuLmgiIDEgMyA0CgoKCgoKIyAxICIvdXNyL2luY2x1 ZGUvbWFjaGluZS9fZW5kaWFuLmgiIDEgMyA0CiMgMTQgIi91c3IvaW5jbHVkZS9tYWNoaW5l L19lbmRpYW4uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMyA0 CiMgMTUgIi91c3IvaW5jbHVkZS9tYWNoaW5lL19lbmRpYW4uaCIgMiAzIDQKIyAyMyAiL3Vz ci9pbmNsdWRlL21hY2hpbmUvX2VuZGlhbi5oIiAzIDQKc3RhdGljIF9faW5saW5lX18gX191 aW50MzJfdCBfX250b2hsKF9fdWludDMyX3QpOwpzdGF0aWMgX19pbmxpbmVfXyBfX3VpbnQx Nl90IF9fbnRvaHMoX191aW50MTZfdCk7CgpzdGF0aWMgX19pbmxpbmVfXyBfX3VpbnQzMl90 Cl9fbnRvaGwoX191aW50MzJfdCBfeCkKewogX19hc21fXygiYnN3YXAgJTAiIDogIj1yIiAo X3gpIDogIjAiIChfeCkpOwogcmV0dXJuIF94Owp9CgpzdGF0aWMgX19pbmxpbmVfXyBfX3Vp bnQxNl90Cl9fbnRvaHMoX191aW50MTZfdCBfeCkKewogX19hc21fXygieGNoZ2IgJWIwLCVo MCIKICA6ICI9USIgKF94KQogIDogIjAiIChfeCkpOwogcmV0dXJuIF94Owp9CiMgNyAiL3Vz ci9pbmNsdWRlL21hY2hpbmUvZW5kaWFuLmgiIDIgMyA0CiMgNTAgIi91c3IvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMg NAojIDE0ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKIyAxICIvdXNyL2luY2x1 ZGUvc3lzL19zaWdzZXQuaCIgMSAzIDQKIyA0MSAiL3Vzci9pbmNsdWRlL3N5cy9fc2lnc2V0 LmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19zaWdzZXRfdDsKIyAxNSAiL3Vzci9p bmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL190aW1l dmFsLmgiIDEgMyA0CiMgMzcgIi91c3IvaW5jbHVkZS9zeXMvX3RpbWV2YWwuaCIgMyA0CnR5 cGVkZWYgX19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKCgoKCnR5cGVkZWYgbG9uZyB0aW1l X3Q7CiMgNTQgIi91c3IvaW5jbHVkZS9zeXMvX3RpbWV2YWwuaCIgMyA0CnN0cnVjdCB0aW1l dmFsIHsKIHRpbWVfdCB0dl9zZWM7CiBzdXNlY29uZHNfdCB0dl91c2VjOwp9OwojIDE2ICIv dXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMv dGltZXNwZWMuaCIgMSAzIDQKIyAzOCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lc3BlYy5oIiAz IDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL190aW1lc3BlYy5oIiAxIDMgNAojIDQ3ICIvdXNy L2luY2x1ZGUvc3lzL190aW1lc3BlYy5oIiAzIDQKc3RydWN0IHRpbWVzcGVjIHsKIHRpbWVf dCB0dl9zZWM7CiBsb25nIHR2X25zZWM7Cn07CiMgMzkgIi91c3IvaW5jbHVkZS9zeXMvdGlt ZXNwZWMuaCIgMiAzIDQKIyA1OCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lc3BlYy5oIiAzIDQK c3RydWN0IGl0aW1lcnNwZWMgewogc3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogc3Ry dWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9OwojIDE3ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj dC5oIiAyIDMgNAoKCgp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7CiMgMzQgIi91c3Iv aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgX19mZF9t YXNrOwoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsKIyA0OCAiL3Vzci9pbmNsdWRlL3N5 cy9zZWxlY3QuaCIgMyA0CnR5cGVkZWYgc3RydWN0IGZkX3NldCB7CiBfX2ZkX21hc2sgX19m ZHNfYml0c1soKCg2NCkgKyAoKCgoaW50KXNpemVvZihfX2ZkX21hc2spICogOCkpIC0gMSkp IC8gKCgoaW50KXNpemVvZihfX2ZkX21hc2spICogOCkpKV07Cn0gZmRfc2V0OwojIDc0ICIv dXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKCgppbnQgc2VsZWN0IChpbnQgX19uLCBm ZF9zZXQgKl9fcmVhZGZkcywgZmRfc2V0ICpfX3dyaXRlZmRzLCBmZF9zZXQgKl9fZXhjZXB0 ZmRzLCBzdHJ1Y3QgdGltZXZhbCAqX190aW1lb3V0KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgppbnQgcHNlbGVjdCAoaW50IF9fbiwg ZmRfc2V0ICpfX3JlYWRmZHMsIGZkX3NldCAqX193cml0ZWZkcywgZmRfc2V0ICpfX2V4Y2Vw dGZkcywgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3RpbWVvdXQsIGNvbnN0IHNpZ3NldF90 ICpfX3NldCkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKIyA1MSAiL3Vzci9p bmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCgoKdHlwZWRlZiBfX3VpbnQzMl90IGluX2Fk ZHJfdDsKCgoKCnR5cGVkZWYgX191aW50MTZfdCBpbl9wb3J0X3Q7CgoKCnR5cGVkZWYgX191 aW50cHRyX3QgdV9yZWdpc3Rlcl90OwoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdV9j aGFyOwoKCgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CgoKCnR5cGVkZWYgdW5z aWduZWQgaW50IHVfaW50OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwoKCgoK CgoKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50 IHVpbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKCgoKdHlwZWRlZiBfX2Jsa2Nu dF90IGJsa2NudF90OwoKCgoKdHlwZWRlZiBfX2Jsa3NpemVfdCBibGtzaXplX3Q7CgoKCgp0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2xvY2tfdDsKIyAxMTkgIi91c3IvaW5jbHVkZS9zeXMv dHlwZXMuaCIgMyA0CnR5cGVkZWYgbG9uZyBkYWRkcl90OwoKCgp0eXBlZGVmIGNoYXIgKiBj YWRkcl90OwoKCgoKdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsKdHlwZWRlZiBf X2ZzZmlsY250X3QgZnNmaWxjbnRfdDsKCgoKCnR5cGVkZWYgX19pZF90IGlkX3Q7CgoKCgp0 eXBlZGVmIF9faW5vX3QgaW5vX3Q7CiMgMTU3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgi IDMgNAp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsK CgoKdHlwZWRlZiBfX3VpZF90IHVpZF90OwoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CgoK Cgp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CgoK Cgp0eXBlZGVmIF9zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVf dDsKCgoKCnR5cGVkZWYgX19ubGlua190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fY2xvY2tp ZF90IGNsb2NraWRfdDsKCgoKCgp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwoKCgoKCnR5 cGVkZWYgX191c2Vjb25kc190IHVzZWNvbmRzX3Q7CiMgMjIwICIvdXNyL2luY2x1ZGUvc3lz L3R5cGVzLmgiIDMgNAp0eXBlZGVmIF9faW50NjRfdCBzYmludGltZV90OwoKCiMgMSAiL3Vz ci9pbmNsdWRlL3N5cy9fcHRocmVhZHR5cGVzLmgiIDEgMyA0CiMgMTIgIi91c3IvaW5jbHVk ZS9zeXMvX3B0aHJlYWR0eXBlcy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NwdXNl dC5oIiAxIDMgNAojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL2NwdXNldC5oIiAzIDQKdHlwZWRl ZiBsb25nIHVuc2lnbmVkIGludCBfX2NwdV9tYXNrOwoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QK ewogIF9fY3B1X21hc2sgX19iaXRzWygxMDI0IC8gKDggKiBzaXplb2YgKF9fY3B1X21hc2sp KSldOwp9IGNwdV9zZXRfdDsKIyAxMyAiL3Vzci9pbmNsdWRlL3N5cy9fcHRocmVhZHR5cGVz LmgiIDIgMyA0CgoKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF90IHtjaGFyIF9fZHVtbXk7 fSAqcHRocmVhZF90Owp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfbXV0ZXhfdCB7Y2hhciBf X2R1bW15O30gKnB0aHJlYWRfbXV0ZXhfdDsKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9r ZXlfdCB7Y2hhciBfX2R1bW15O30gKnB0aHJlYWRfa2V5X3Q7CnR5cGVkZWYgc3RydWN0IF9f cHRocmVhZF9hdHRyX3Qge2NoYXIgX19kdW1teTt9ICpwdGhyZWFkX2F0dHJfdDsKdHlwZWRl ZiBzdHJ1Y3QgX19wdGhyZWFkX211dGV4YXR0cl90IHtjaGFyIF9fZHVtbXk7fSAqcHRocmVh ZF9tdXRleGF0dHJfdDsKdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2NvbmRhdHRyX3Qge2No YXIgX19kdW1teTt9ICpwdGhyZWFkX2NvbmRhdHRyX3Q7CnR5cGVkZWYgc3RydWN0IF9fcHRo cmVhZF9jb25kX3Qge2NoYXIgX19kdW1teTt9ICpwdGhyZWFkX2NvbmRfdDsKdHlwZWRlZiBz dHJ1Y3QgX19wdGhyZWFkX2JhcnJpZXJhdHRyX3Qge2NoYXIgX19kdW1teTt9ICpwdGhyZWFk X2JhcnJpZXJhdHRyX3Q7CnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9iYXJyaWVyX3Qge2No YXIgX19kdW1teTt9ICpwdGhyZWFkX2JhcnJpZXJfdDsKCgp0eXBlZGVmIHN0cnVjdAp7CiAg cHRocmVhZF9tdXRleF90IG11dGV4OwogIGludCBzdGF0ZTsKfQpwdGhyZWFkX29uY2VfdDsK dHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX3NwaW5sb2NrX3Qge2NoYXIgX19kdW1teTt9ICpw dGhyZWFkX3NwaW5sb2NrX3Q7CnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9yd2xvY2tfdCB7 Y2hhciBfX2R1bW15O30gKnB0aHJlYWRfcndsb2NrX3Q7CnR5cGVkZWYgc3RydWN0IF9fcHRo cmVhZF9yd2xvY2thdHRyX3Qge2NoYXIgX19kdW1teTt9ICpwdGhyZWFkX3J3bG9ja2F0dHJf dDsKIyAyMjQgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKIyAxICIvdXNyL2lu Y2x1ZGUvbWFjaGluZS90eXBlcy5oIiAxIDMgNAojIDE5ICIvdXNyL2luY2x1ZGUvbWFjaGlu ZS90eXBlcy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvZW5kaWFuLmgiIDEgMyA0CiMgMzgg Ii91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvYnl0 ZXN3YXAuaCIgMSAzIDQKIyAxNiAiL3Vzci9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAuaCIgMyA0 CnN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBzaG9ydApfX2Jzd2FwXzE2ICh1bnNpZ25lZCBz aG9ydCBfX3gpCnsKICByZXR1cm4gKF9feCA+PiA4KSB8IChfX3ggPDwgOCk7Cn0KCnN0YXRp YyBfX2lubGluZSB1bnNpZ25lZCBpbnQKX19ic3dhcF8zMiAodW5zaWduZWQgaW50IF9feCkK ewogIHJldHVybiAoX19ic3dhcF8xNiAoX194ICYgMHhmZmZmKSA8PCAxNikgfCAoX19ic3dh cF8xNiAoX194ID4+IDE2KSk7Cn0KCnN0YXRpYyBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxv bmcKX19ic3dhcF82NCAodW5zaWduZWQgbG9uZyBsb25nIF9feCkKewogIHJldHVybiAoKCh1 bnNpZ25lZCBsb25nIGxvbmcpIF9fYnN3YXBfMzIgKF9feCAmIDB4ZmZmZmZmZmZ1bGwpKSA8 PCAzMikgfCAoX19ic3dhcF8zMiAoX194ID4+IDMyKSk7Cn0KIyAzOSAiL3Vzci9pbmNsdWRl L2VuZGlhbi5oIiAyIDMgNAojIDIwICIvdXNyL2luY2x1ZGUvbWFjaGluZS90eXBlcy5oIiAy IDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgMjEgIi91 c3IvaW5jbHVkZS9tYWNoaW5lL3R5cGVzLmgiIDIgMyA0CgoKCgp0eXBlZGVmIHN0cnVjdCB0 aW1lc3BlYyB0aW1lc3BlY190OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgdGltZXNwZWMgdGltZXN0 cnVjX3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CiMgNDYgIi91c3IvaW5jbHVkZS9t YWNoaW5lL3R5cGVzLmgiIDMgNApzdHJ1Y3QgZmxvY2sgewogc2hvcnQgbF90eXBlOwogc2hv cnQgbF93aGVuY2U7CiBvZmZfdCBsX3N0YXJ0Owogb2ZmX3QgbF9sZW47CiBwaWRfdCBsX3Bp ZDsKfTsKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHZtX29mZnNldF90OwoKCgoKdHlw ZWRlZiB1bnNpZ25lZCBsb25nIHZtX3NpemVfdDsKCgoKCnR5cGVkZWYgdm9pZCAqdm1fb2Jq ZWN0X3Q7CgoKCgp0eXBlZGVmIGNoYXIgKmFkZHJfdDsKCgoKCgojIDEgIi91c3IvaW5jbHVk ZS9zeXMvc3lzbWFjcm9zLmgiIDEgMyA0CiMgMTIgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFj cm9zLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzIDQKIyAxMyAi L3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMiAzIDQKCnN0YXRpYyBfX2lubGluZV9f IGludCBnbnVfZGV2X21ham9yKGRldl90KTsKc3RhdGljIF9faW5saW5lX18gaW50IGdudV9k ZXZfbWlub3IoZGV2X3QpOwpzdGF0aWMgX19pbmxpbmVfXyBkZXZfdCBnbnVfZGV2X21ha2Vk ZXYoaW50LCBpbnQpOwoKc3RhdGljIF9faW5saW5lX18gaW50CmdudV9kZXZfbWFqb3IoZGV2 X3QgZGV2KQp7CiByZXR1cm4gKGludCkoKChkZXYpID4+IDE2KSAmIDB4ZmZmZik7Cn0KCnN0 YXRpYyBfX2lubGluZV9fIGludApnbnVfZGV2X21pbm9yKGRldl90IGRldikKewogcmV0dXJu IChpbnQpKChkZXYpICYgMHhmZmZmKTsKfQoKc3RhdGljIF9faW5saW5lX18gZGV2X3QKZ251 X2Rldl9tYWtlZGV2KGludCBtYWosIGludCBtaW4pCnsKIHJldHVybiAoKChtYWopIDw8IDE2 KSB8ICgobWluKSAmIDB4ZmZmZikpOwp9CiMgODEgIi91c3IvaW5jbHVkZS9tYWNoaW5lL3R5 cGVzLmgiIDIgMyA0CiMgMjI1ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CiMg MzIgIi91c3IvaW5jbHVkZS9pY29udi5oIiAyIDMgNAoKCgp0eXBlZGVmIF9pY29udl90IGlj b252X3Q7CgoKCgppY29udl90Cmljb252X29wZW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqKTsKCnNpemVfdAppY29udiAoaWNvbnZfdCwgY2hhciAqKnJlc3RyaWN0LCBzaXplX3Qg KnJlc3RyaWN0LAogICAgICAgICAgICAgICBjaGFyICoqcmVzdHJpY3QsIHNpemVfdCAqcmVz dHJpY3QpOwoKaW50Cmljb252X2Nsb3NlIChpY29udl90KTsKCgppY29udl90Cl9pY29udl9v cGVuX3IgKHN0cnVjdCBfcmVlbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoK c2l6ZV90Cl9pY29udl9yIChzdHJ1Y3QgX3JlZW50ICosIGljb252X3QsIGNvbnN0IGNoYXIg KiosCiAgICAgICAgICAgICAgICAgIHNpemVfdCAqLCBjaGFyICoqLCBzaXplX3QgKik7Cgpp bnQKX2ljb252X2Nsb3NlX3IgKHN0cnVjdCBfcmVlbnQgKiwgaWNvbnZfdCk7CgoKIyAzICJp Y29udi10ZXN0LmMiIDIKCgojIDQgImljb252LXRlc3QuYyIKaW50Cm1haW4gKHZvaWQpCnsK aWNvbnZfdCBjZCA9IGljb252X29wZW4oIiIsIiIpOwogICAgICAgICAgIGljb252KGNkLAoj IDggImljb252LXRlc3QuYyIgMyA0CiAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQoj IDggImljb252LXRlc3QuYyIKICAgICAgICAgICAgICAgICAgICAgICAsCiMgOCAiaWNvbnYt dGVzdC5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgKCh2b2lkICopMCkKIyA4ICJp Y29udi10ZXN0LmMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsCiMgOCAiaWNvbnYt dGVzdC5jIiAzIDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQgKikwKQoj IDggImljb252LXRlc3QuYyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLAoj IDggImljb252LXRlc3QuYyIgMyA0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoKHZvaWQgKikwKQojIDggImljb252LXRlc3QuYyIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICApOwogICAgICAgICAgIGljb252X2Nsb3NlKGNkKTsKICA7CiAg cmV0dXJuIDA7Cn0K --------------KEbDCT0yNebcd95Y0lCErFZb--