From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa3.mentor.iphmx.com (esa3.mentor.iphmx.com [68.232.137.180]) by sourceware.org (Postfix) with ESMTPS id EBD633858D28 for ; Fri, 6 Jan 2023 12:20:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org EBD633858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.96,305,1665475200"; d="scan'208";a="92259097" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa3.mentor.iphmx.com with ESMTP; 06 Jan 2023 04:20:38 -0800 IronPort-SDR: TadZnSGPBIeaNuqQsKYuQDNJ7ESU7CVmQs0b3hyKYL66x0P5nsNfP9Xbwp0bbvXQVbuyYixmGz aSWud3XjvBytLa37Q2DhmqD0td24AXq2iSV1XWxmR/F0RRhGVPXbwG4qF4CO8TLKuH0k78qpFh hEWme05XuSwDrkyuDna1G4suB90H/6uAIspLvlL6H/+2badclIKi+xhmBQaKpiwXq3bMjGB7WL XWwE/f3NyOhmAY1zcQKiZO2kngQm488XvCdnZZWRgRw3t1LbKvICWAEl7k7HfR7cctmzh40G4c 9Mc= Content-Type: multipart/mixed; boundary="------------Z6ZFinfdRKvOC0UAhUjKMeZN" Message-ID: <15d420d5-45da-d4d5-13e2-e6ca7691e096@codesourcery.com> Date: Fri, 6 Jan 2023 12:20:33 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH 3/3] vect: inbranch SIMD clones To: Jakub Jelinek CC: Richard Biener , References: <8022b190-387b-c6a9-a8fe-1d18a9140e93@codesourcery.com> Content-Language: en-GB From: Andrew Stubbs In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To svr-ies-mbx-11.mgc.mentorg.com (139.181.222.11) X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,NICE_REPLY_A,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------Z6ZFinfdRKvOC0UAhUjKMeZN Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit Here's a new version of the patch. On 01/12/2022 14:16, Jakub Jelinek wrote: >> +void __attribute__((noinline)) > > You should use noipa attribute instead of noinline on callers > which aren't declare simd (on declare simd it would prevent cloning > which is essential for the declare simd behavior), so that you don't > get surprises e.g. from extra ipa cp etc. Fixed. >> +/* Ensure the the in-branch simd clones are used on targets that support >> + them. These counts include all call and definitions. */ >> + >> +/* { dg-skip-if "" { x86_64-*-* } { "-flto" } { "" } } */ > > Drop lines line above. I don't want to drop the comment because I get so frustrated by testcases that fail when something changes and it's not obvious what the original author was actually trying to test. I've tried to fix the -flto thing and I can't figure out how. The problem seems to be that there are two dump files from the two compiler invocations and it scans the wrong one. Aarch64 has the same problem. >> +/* { dg-final { scan-tree-dump-times "simdclone" 18 "optimized" { target x86_64-*-* } } } */ >> +/* { dg-final { scan-tree-dump-times "simdclone" 7 "optimized" { target amdgcn-*-* } } } */ > > And scan-tree-dump-times " = foo.simdclone" 2 "optimized"; I'd think that > should be the right number for all of x86_64, amdgcn and aarch64. And > please don't forget about i?86-*-* too. I've switched the pattern and changed to using the "vect" dump (instead of "optimized") so that the later transformations don't mess up the counts. However there are still other reasons why the count varies. It might be that those can be turned off by options somehow, but probably testing those cases is valuable too. The values are 2, 3, or 4, now, instead of 18, so that's an improvement. > >> +/* TODO: aarch64 */ > > For aarch64, one would need to include it in check_effective_target_vect_simd_clones > first... I've done so and tested it, but that's not included in the patch because there were other testcases that started reporting fails. None of the new testcases fail for Aarch64. OK now? Andrew --------------Z6ZFinfdRKvOC0UAhUjKMeZN Content-Type: text/plain; charset="UTF-8"; name="230106-inbranch-simd-clones.patch" Content-Disposition: attachment; filename="230106-inbranch-simd-clones.patch" Content-Transfer-Encoding: base64 dmVjdDogaW5icmFuY2ggU0lNRCBjbG9uZXMKClRoZXJlIGhhcyBiZWVuIHN1cHBvcnQgZm9y IGdlbmVyYXRpbmcgImluYnJhbmNoIiBTSU1EIGNsb25lcyBmb3IgYSBsb25nIHRpbWUsCmJ1 dCBub3RoaW5nIGFjdHVhbGx5IHVzZXMgdGhlbSAoYXMgZmFyIGFzIEkgY2FuIHNlZSkuCgpU aGlzIHBhdGNoIGFkZCBzdXBwb3J0cyBmb3IgYSBzdWItc2V0IG9mIHBvc3NpYmxlIGNhc2Vz ICh0aG9zZSB1c2luZwptYXNrX21vZGUgPT0gVk9JRG1vZGUpLiAgVGhlIG90aGVyIGNhc2Vz IGZhaWwgdG8gdmVjdG9yaXplLCBqdXN0IGFzIGJlZm9yZSwKc28gdGhlcmUgc2hvdWxkIGJl IG5vIHJlZ3Jlc3Npb25zLgoKVGhlIHN1Yi1zZXQgb2Ygc3VwcG9ydCBzaG91bGQgY292ZXIg YWxsIGNhc2VzIG5lZWRlZCBieSBhbWRnY24sIGF0IHByZXNlbnQuCgpnY2MvQ2hhbmdlTG9n OgoKCSogaW50ZXJuYWwtZm4uY2MgKGV4cGFuZF9NQVNLX0NBTEwpOiBOZXcuCgkqIGludGVy bmFsLWZuLmRlZiAoTUFTS19DQUxMKTogTmV3LgoJKiBpbnRlcm5hbC1mbi5oIChleHBhbmRf TUFTS19DQUxMKTogTmV3IHByb3RvdHlwZS4KCSogb21wLXNpbWQtY2xvbmUuY2MgKHNpbWRf Y2xvbmVfYWRqdXN0X2FyZ3VtZW50X3R5cGVzKTogU2V0IHZlY3Rvcl90eXBlCglmb3IgbWFz ayBhcmd1bWVudHMgYWxzby4KCSogdHJlZS1pZi1jb252LmNjOiBJbmNsdWRlIGNncmFwaC5o LgoJKGlmX2NvbnZlcnRpYmxlX3N0bXRfcCk6IERvIGlmIGNvbnZlcnNpb25zIGZvciBjYWxs cyB0byBTSU1EIGNhbGxzLgoJKHByZWRpY2F0ZV9zdGF0ZW1lbnRzKTogQ29udmVydCBmdW5j dGlvbnMgdG8gSUZOX01BU0tfQ0FMTC4KCSogdHJlZS12ZWN0LWxvb3AuY2MgKHZlY3RfZ2V0 X2RhdGFyZWZzX2luX2xvb3ApOiBSZWNvZ25pc2UKCUlGTl9NQVNLX0NBTEwgYXMgYSBTSU1E IGZ1bmN0aW9uIGNhbGwuCgkqIHRyZWUtdmVjdC1zdG10cy5jYyAodmVjdG9yaXphYmxlX3Np bWRfY2xvbmVfY2FsbCk6IEhhbmRsZQoJSUZOX01BU0tfQ0FMTCBhcyBhbiBpbmJyYW5jaCBT SU1EIGZ1bmN0aW9uIGNhbGwuCglHZW5lcmF0ZSB0aGUgbWFzayB2ZWN0b3IgYXJndW1lbnRz LgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJKiBnY2MuZGcvdmVjdC92ZWN0LXNpbWQt Y2xvbmUtMTYuYzogTmV3IHRlc3QuCgkqIGdjYy5kZy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0x NmIuYzogTmV3IHRlc3QuCgkqIGdjYy5kZy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xNmMuYzog TmV3IHRlc3QuCgkqIGdjYy5kZy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xNmQuYzogTmV3IHRl c3QuCgkqIGdjYy5kZy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xNmUuYzogTmV3IHRlc3QuCgkq IGdjYy5kZy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xNmYuYzogTmV3IHRlc3QuCgkqIGdjYy5k Zy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xNy5jOiBOZXcgdGVzdC4KCSogZ2NjLmRnL3ZlY3Qv dmVjdC1zaW1kLWNsb25lLTE3Yi5jOiBOZXcgdGVzdC4KCSogZ2NjLmRnL3ZlY3QvdmVjdC1z aW1kLWNsb25lLTE3Yy5jOiBOZXcgdGVzdC4KCSogZ2NjLmRnL3ZlY3QvdmVjdC1zaW1kLWNs b25lLTE3ZC5jOiBOZXcgdGVzdC4KCSogZ2NjLmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE3 ZS5jOiBOZXcgdGVzdC4KCSogZ2NjLmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE3Zi5jOiBO ZXcgdGVzdC4KCSogZ2NjLmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE4LmM6IE5ldyB0ZXN0 LgoJKiBnY2MuZGcvdmVjdC92ZWN0LXNpbWQtY2xvbmUtMThiLmM6IE5ldyB0ZXN0LgoJKiBn Y2MuZGcvdmVjdC92ZWN0LXNpbWQtY2xvbmUtMThjLmM6IE5ldyB0ZXN0LgoJKiBnY2MuZGcv dmVjdC92ZWN0LXNpbWQtY2xvbmUtMThkLmM6IE5ldyB0ZXN0LgoJKiBnY2MuZGcvdmVjdC92 ZWN0LXNpbWQtY2xvbmUtMThlLmM6IE5ldyB0ZXN0LgoJKiBnY2MuZGcvdmVjdC92ZWN0LXNp bWQtY2xvbmUtMThmLmM6IE5ldyB0ZXN0LgoKZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1m bi5jYyBiL2djYy9pbnRlcm5hbC1mbi5jYwppbmRleCA5NDcxZjU0MzE5MS4uZDllMTFiZmM2 MmEgMTAwNjQ0Ci0tLSBhL2djYy9pbnRlcm5hbC1mbi5jYworKysgYi9nY2MvaW50ZXJuYWwt Zm4uY2MKQEAgLTQ1MjcsMyArNDUyNywxMCBAQCB2b2lkCiBleHBhbmRfQVNTVU1FIChpbnRl cm5hbF9mbiwgZ2NhbGwgKikKIHsKIH0KKwordm9pZAorZXhwYW5kX01BU0tfQ0FMTCAoaW50 ZXJuYWxfZm4sIGdjYWxsICopCit7CisgIC8qIFRoaXMgSUZOIHNob3VsZCBvbmx5IGV4aXN0 IGJldHdlZW4gaWZjdnQgYW5kIHZlY3QgcGFzc2VzLiAgKi8KKyAgZ2NjX3VucmVhY2hhYmxl ICgpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmRlZiBiL2djYy9pbnRlcm5h bC1mbi5kZWYKaW5kZXggNjE1MTZkYWI2NmQuLjMwMWMzNzgwNjU5IDEwMDY0NAotLS0gYS9n Y2MvaW50ZXJuYWwtZm4uZGVmCisrKyBiL2djYy9pbnRlcm5hbC1mbi5kZWYKQEAgLTQ2Niw2 ICs0NjYsOSBAQCBERUZfSU5URVJOQUxfRk4gKFRSQVAsIEVDRl9DT05TVCB8IEVDRl9MRUFG IHwgRUNGX05PUkVUVVJOCiBERUZfSU5URVJOQUxfRk4gKEFTU1VNRSwgRUNGX0NPTlNUIHwg RUNGX0xFQUYgfCBFQ0ZfTk9USFJPVwogCQkJIHwgRUNGX0xPT1BJTkdfQ09OU1RfT1JfUFVS RSwgTlVMTCkKIAorLyogRm9yIGlmLWNvbnZlcnNpb24gb2YgaW5icmFuY2ggU0lNRCBjbG9u ZXMuICAqLworREVGX0lOVEVSTkFMX0ZOIChNQVNLX0NBTEwsIEVDRl9OT1ZPUFMsIE5VTEwp CisKICN1bmRlZiBERUZfSU5URVJOQUxfSU5UX0ZOCiAjdW5kZWYgREVGX0lOVEVSTkFMX0ZM VF9GTgogI3VuZGVmIERFRl9JTlRFUk5BTF9GTFRfRkxPQVROX0ZOCmRpZmYgLS1naXQgYS9n Y2MvaW50ZXJuYWwtZm4uaCBiL2djYy9pbnRlcm5hbC1mbi5oCmluZGV4IDIxYjFjZTQzZGY2 Li5jZWQ5MmMwNDFiYiAxMDA2NDQKLS0tIGEvZ2NjL2ludGVybmFsLWZuLmgKKysrIGIvZ2Nj L2ludGVybmFsLWZuLmgKQEAgLTI0NCw2ICsyNDQsNyBAQCBleHRlcm4gdm9pZCBleHBhbmRf U0hVRkZMRVZFQ1RPUiAoaW50ZXJuYWxfZm4sIGdjYWxsICopOwogZXh0ZXJuIHZvaWQgZXhw YW5kX1NQQUNFU0hJUCAoaW50ZXJuYWxfZm4sIGdjYWxsICopOwogZXh0ZXJuIHZvaWQgZXhw YW5kX1RSQVAgKGludGVybmFsX2ZuLCBnY2FsbCAqKTsKIGV4dGVybiB2b2lkIGV4cGFuZF9B U1NVTUUgKGludGVybmFsX2ZuLCBnY2FsbCAqKTsKK2V4dGVybiB2b2lkIGV4cGFuZF9NQVNL X0NBTEwgKGludGVybmFsX2ZuLCBnY2FsbCAqKTsKIAogZXh0ZXJuIGJvb2wgdmVjdG9yaXpl ZF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoaW50ZXJuYWxfZm4sIHRyZWUpOwogCmRpZmYg LS1naXQgYS9nY2Mvb21wLXNpbWQtY2xvbmUuY2MgYi9nY2Mvb21wLXNpbWQtY2xvbmUuY2MK aW5kZXggMjFkNjlhYTg3NDcuLmFmYjdkOTk3NDdiIDEwMDY0NAotLS0gYS9nY2Mvb21wLXNp bWQtY2xvbmUuY2MKKysrIGIvZ2NjL29tcC1zaW1kLWNsb25lLmNjCkBAIC05MzcsNiArOTM3 LDcgQEAgc2ltZF9jbG9uZV9hZGp1c3RfYXJndW1lbnRfdHlwZXMgKHN0cnVjdCBjZ3JhcGhf bm9kZSAqbm9kZSkKIAl9CiAgICAgICBzYy0+YXJnc1tpXS5vcmlnX3R5cGUgPSBiYXNlX3R5 cGU7CiAgICAgICBzYy0+YXJnc1tpXS5hcmdfdHlwZSA9IFNJTURfQ0xPTkVfQVJHX1RZUEVf TUFTSzsKKyAgICAgIHNjLT5hcmdzW2ldLnZlY3Rvcl90eXBlID0gYWRqLnR5cGU7CiAgICAg fQogCiAgIGlmIChub2RlLT5kZWZpbml0aW9uKQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdmVjdC92ZWN0LXNpbWQtY2xvbmUtMTYuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLmNlOWE2ZGFkMWI3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXNpbWQtY2xvbmUtMTYuYwpAQCAtMCwwICsxLDg5 IEBACisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X3NpbWRfY2xvbmVz IH0gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZm9wZW5tcC1zaW1kIiB9ICov CisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hdngiIHsgdGFyZ2V0IGF2eF9ydW50 aW1lIH0gfSAqLworCisvKiBUZXN0IHRoYXQgc2ltZCBpbmJyYW5jaCBjbG9uZXMgd29yayBj b3JyZWN0bHkuICAqLworCisjaWZuZGVmIFRZUEUKKyNkZWZpbmUgVFlQRSBpbnQKKyNlbmRp ZgorCisvKiBBIHNpbXBsZSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2xvbmVkLiAgKi8KKyNw cmFnbWEgb21wIGRlY2xhcmUgc2ltZAorVFlQRSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkp Citmb28gKFRZUEUgYSkKK3sKKyAgcmV0dXJuIGEgKyAxOworfQorCisvKiBDaGVjayB0aGF0 ICJpbmJyYW5jaCIgY2xvbmVzIGFyZSBjYWxsZWQgY29ycmVjdGx5LiAgKi8KKwordm9pZCBf X2F0dHJpYnV0ZV9fKChub2lwYSkpCittYXNrZWQgKFRZUEUgKiBfX3Jlc3RyaWN0IGEsIFRZ UEUgKiBfX3Jlc3RyaWN0IGIsIGludCBzaXplKQoreworICAjcHJhZ21hIG9tcCBzaW1kCisg IGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorICAgIGJbaV0gPSBhW2ldPDEgPyBm b28oYVtpXSkgOiBhW2ldOworfQorCisvKiBDaGVjayB0aGF0ICJpbmJyYW5jaCIgd29ya3Mg d2hlbiB0aGVyZSBtaWdodCBiZSB1bnJvbGxpbmcuICAqLworCit2b2lkIF9fYXR0cmlidXRl X18oKG5vaXBhKSkKK21hc2tlZF9maXhlZCAoVFlQRSAqIF9fcmVzdHJpY3QgYSwgVFlQRSAq IF9fcmVzdHJpY3QgYikKK3sKKyAgI3ByYWdtYSBvbXAgc2ltZAorICBmb3IgKGludCBpID0g MDsgaSA8IDEyODsgaSsrKQorICAgIGJbaV0gPSBhW2ldPDEgPyBmb28oYVtpXSkgOiBhW2ld OworfQorCisvKiBWYWxpZGF0ZSB0aGUgb3V0cHV0cy4gICovCisKK3ZvaWQKK2NoZWNrX21h c2tlZCAoVFlQRSAqYiwgaW50IHNpemUpCit7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6 ZTsgaSsrKQorICAgIGlmICgoKFRZUEUpaSA8IDEgJiYgYltpXSAhPSAoVFlQRSkoaSArIDEp KQorCXx8ICgoVFlQRSlpID49IDEgJiYgYltpXSAhPSAoVFlQRSlpKSkKKyAgICAgIHsKKwlf X2J1aWx0aW5fcHJpbnRmICgiZXJyb3IgYXQgJWRcbiIsIGkpOworCV9fYnVpbHRpbl9leGl0 ICgxKTsKKyAgICAgIH0KK30KKworaW50CittYWluICgpCit7CisgIFRZUEUgYVsxMDI0XTsK KyAgVFlQRSBiWzEwMjRdOworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAyNDsgaSsrKQor ICAgIGFbaV0gPSBpOworCisgIG1hc2tlZF9maXhlZCAoYSwgYik7CisgIGNoZWNrX21hc2tl ZCAoYiwgMTI4KTsKKworICAvKiBUZXN0IHZhcmlvdXMgc2l6ZXMgdG8gY292ZXIgbWFjaGlu ZXMgd2l0aCBkaWZmZXJlbnQgdmVjdG9yaXphdGlvbgorICAgICBmYWN0b3JzLiAgKi8KKyAg Zm9yIChpbnQgc2l6ZSA9IDg7IHNpemUgPD0gMTAyNDsgc2l6ZSAqPSAyKQorICAgIHsKKyAg ICAgIG1hc2tlZCAoYSwgYiwgc2l6ZSk7CisgICAgICBjaGVja19tYXNrZWQgKGIsIHNpemUp OworICAgIH0KKworICAvKiBUZXN0IHNpemVzIHRoYXQgbWlnaHQgZXhlcmNpc2UgdGhlIHBh cnRpYWwgdmVjdG9yIGNvZGUtcGF0aC4gICovCisgIGZvciAoaW50IHNpemUgPSA4OyBzaXpl IDw9IDEwMjQ7IHNpemUgKj0gMikKKyAgICB7CisgICAgICBtYXNrZWQgKGEsIGIsIHNpemUt NCk7CisgICAgICBjaGVja19tYXNrZWQgKGIsIHNpemUtNCk7CisgICAgfQorCisgIHJldHVy biAwOworfQorCisvKiBFbnN1cmUgdGhlIHRoZSBpbi1icmFuY2ggc2ltZCBjbG9uZXMgYXJl IHVzZWQgb24gdGFyZ2V0cyB0aGF0IHN1cHBvcnQgdGhlbS4KKyAgIFNvbWUgdGFyZ2V0cyB1 c2UgYW5vdGhlciBjYWxsIGZvciB0aGUgZXBpbG9ndWUgbG9vcHMuICAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzIHtbXG5ccl0gW15cbl0qID0gZm9vXC5zaW1k Y2xvbmV9IDIgInZlY3QiIHsgdGFyZ2V0IHsgISBhYXJjaDY0Ki0qLSogfSB9IH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzIHtbXG5ccl0gW15cbl0qID0g Zm9vXC5zaW1kY2xvbmV9IDMgInZlY3QiIHsgdGFyZ2V0IGFhcmNoNjQqLSotKiB9IH0gfSAq LworCisvKiBUaGUgTFRPIHRlc3QgcHJvZHVjZXMgdHdvIGR1bXAgZmlsZXMgYW5kIHdlIHNj YW4gdGhlIHdyb25nIG9uZS4gICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsg Ii1mbHRvIiB9IHsgIiIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xNmIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Zl Y3QvdmVjdC1zaW1kLWNsb25lLTE2Yi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5hZjU0M2I2NTczZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE2Yi5jCkBAIC0wLDAgKzEsMTQgQEAK Ky8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3Rfc2ltZF9jbG9uZXMgfSAq LworLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mb3Blbm1wLXNpbWQiIH0gKi8KKy8q IHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWF2eCIgeyB0YXJnZXQgYXZ4X3J1bnRpbWUg fSB9ICovCisKKyNkZWZpbmUgVFlQRSBmbG9hdAorI2luY2x1ZGUgInZlY3Qtc2ltZC1jbG9u ZS0xNi5jIgorCisvKiBFbnN1cmUgdGhlIHRoZSBpbi1icmFuY2ggc2ltZCBjbG9uZXMgYXJl IHVzZWQgb24gdGFyZ2V0cyB0aGF0IHN1cHBvcnQgdGhlbS4KKyAgIFNvbWUgdGFyZ2V0cyB1 c2UgYW5vdGhlciBjYWxsIGZvciB0aGUgZXBpbG9ndWUgbG9vcHMuICAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzIHtbXG5ccl0gW15cbl0qID0gZm9vXC5zaW1k Y2xvbmV9IDIgInZlY3QiIHsgdGFyZ2V0IHsgISB7IGF2eF9ydW50aW1lIHx8IGFhcmNoNjQq LSotKiB9IH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyB7W1xuXHJdIFteXG5dKiA9IGZvb1wuc2ltZGNsb25lfSAzICJ2ZWN0IiB7IHRhcmdldCB7 IGF2eF9ydW50aW1lIHx8IGFhcmNoNjQqLSotKiB9IH0gfSB9ICovCisKKy8qIFRoZSBMVE8g dGVzdCBwcm9kdWNlcyB0d28gZHVtcCBmaWxlcyBhbmQgd2Ugc2NhbiB0aGUgd3Jvbmcgb25l LiAgKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLWZsdG8iIH0geyAiIiB9 IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1zaW1k LWNsb25lLTE2Yy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXNpbWQtY2xv bmUtMTZjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY3NzU0 OGE5NDM5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92 ZWN0LXNpbWQtY2xvbmUtMTZjLmMKQEAgLTAsMCArMSwxNyBAQAorLyogeyBkZy1yZXF1aXJl LWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9zaW1kX2Nsb25lcyB9ICovCisvKiB7IGRnLWFkZGl0 aW9uYWwtb3B0aW9ucyAiLWZvcGVubXAtc2ltZCIgfSAqLworLyogeyBkZy1hZGRpdGlvbmFs LW9wdGlvbnMgIi1tYXZ4IiB7IHRhcmdldCBhdnhfcnVudGltZSB9IH0gKi8KKworI2RlZmlu ZSBUWVBFIHNob3J0CisjaW5jbHVkZSAidmVjdC1zaW1kLWNsb25lLTE2LmMiCisKKy8qIEVu c3VyZSB0aGUgdGhlIGluLWJyYW5jaCBzaW1kIGNsb25lcyBhcmUgdXNlZCBvbiB0YXJnZXRz IHRoYXQgc3VwcG9ydCB0aGVtLgorICAgU29tZSB0YXJnZXRzIHVzZSBhbm90aGVyIGNhbGwg Zm9yIHRoZSBlcGlsb2d1ZSBsb29wcy4gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMge1tcblxyXSBbXlxuXSogPSBmb29cLnNpbWRjbG9uZX0gMiAidmVjdCIg eyB0YXJnZXQgeyAhIHsgeDg2XzY0Ki0qLSogfHwgeyBpNjg2Ki0qLSogfHwgYWFyY2g2NCot Ki0qIH0gfSB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGlt ZXMge1tcblxyXSBbXlxuXSogPSBmb29cLnNpbWRjbG9uZX0gMyAidmVjdCIgeyB0YXJnZXQg eyBhYXJjaDY0Ki0qLSogfSB9IH0gfSAqLworCisvKiB4ODZfNjQgZmFpbHMgdG8gdXNlIGlu LWJyYW5jaCBjbG9uZXMgZm9yIFRZUEU9c2hvcnQuICAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzIHtbXG5ccl0gW15cbl0qID0gZm9vXC5zaW1kY2xvbmV9IDAg InZlY3QiIHsgdGFyZ2V0IHg4Nl82NCotKi0qIGk2ODYqLSotKiB9IH0gfSAqLworCisvKiBU aGUgTFRPIHRlc3QgcHJvZHVjZXMgdHdvIGR1bXAgZmlsZXMgYW5kIHdlIHNjYW4gdGhlIHdy b25nIG9uZS4gICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1mbHRvIiB9 IHsgIiIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3Zl Y3Qtc2ltZC1jbG9uZS0xNmQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1z aW1kLWNsb25lLTE2ZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5hOWFlOTkzMmIzMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE2ZC5jCkBAIC0wLDAgKzEsMTcgQEAKKy8qIHsgZGct cmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3Rfc2ltZF9jbG9uZXMgfSAqLworLyogeyBk Zy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mb3Blbm1wLXNpbWQiIH0gKi8KKy8qIHsgZGctYWRk aXRpb25hbC1vcHRpb25zICItbWF2eCIgeyB0YXJnZXQgYXZ4X3J1bnRpbWUgfSB9ICovCisK KyNkZWZpbmUgVFlQRSBjaGFyCisjaW5jbHVkZSAidmVjdC1zaW1kLWNsb25lLTE2LmMiCisK Ky8qIEVuc3VyZSB0aGUgdGhlIGluLWJyYW5jaCBzaW1kIGNsb25lcyBhcmUgdXNlZCBvbiB0 YXJnZXRzIHRoYXQgc3VwcG9ydCB0aGVtLgorICAgU29tZSB0YXJnZXRzIHVzZSBhbm90aGVy IGNhbGwgZm9yIHRoZSBlcGlsb2d1ZSBsb29wcy4gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBbXlxuXSogPSBmb29cLnNpbWRjbG9uZX0gMiAi dmVjdCIgeyB0YXJnZXQgeyAhIHsgeDg2XzY0Ki0qLSogfHwgeyBpNjg2Ki0qLSogfHwgYWFy Y2g2NCotKi0qIH0gfSB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMge1tcblxyXSBbXlxuXSogPSBmb29cLnNpbWRjbG9uZX0gMyAidmVjdCIgeyB0 YXJnZXQgeyBhYXJjaDY0Ki0qLSogfSB9IH0gfSAqLworCisvKiB4ODZfNjQgZmFpbHMgdG8g dXNlIGluLWJyYW5jaCBjbG9uZXMgZm9yIFRZUEU9Y2hhci4gICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBbXlxuXSogPSBmb29cLnNpbWRjbG9u ZX0gMCAidmVjdCIgeyB0YXJnZXQgeDg2XzY0Ki0qLSogaTY4NiotKi0qIH0gfSB9ICovCisK Ky8qIFRoZSBMVE8gdGVzdCBwcm9kdWNlcyB0d28gZHVtcCBmaWxlcyBhbmQgd2Ugc2NhbiB0 aGUgd3Jvbmcgb25lLiAgKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLWZs dG8iIH0geyAiIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Zl Y3QvdmVjdC1zaW1kLWNsb25lLTE2ZS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92 ZWN0LXNpbWQtY2xvbmUtMTZlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmM4YjQ4MmJmMmU3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdmVjdC92ZWN0LXNpbWQtY2xvbmUtMTZlLmMKQEAgLTAsMCArMSwxNiBAQAorLyog eyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9zaW1kX2Nsb25lcyB9ICovCisv KiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZvcGVubXAtc2ltZCIgfSAqLworLyogeyBk Zy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXZ4IiB7IHRhcmdldCBhdnhfcnVudGltZSB9IH0g Ki8KKworI2RlZmluZSBUWVBFIGRvdWJsZQorI2luY2x1ZGUgInZlY3Qtc2ltZC1jbG9uZS0x Ni5jIgorCisvKiBFbnN1cmUgdGhlIHRoZSBpbi1icmFuY2ggc2ltZCBjbG9uZXMgYXJlIHVz ZWQgb24gdGFyZ2V0cyB0aGF0IHN1cHBvcnQgdGhlbS4KKyAgIFNvbWUgdGFyZ2V0cyB1c2Ug YW5vdGhlciBjYWxsIGZvciB0aGUgZXBpbG9ndWUgbG9vcHMuCisgICBTb21lIHRhcmdldHMg dXNlIHBhaXJzIG9mIHZlY3RvcnMgYW5kIGRvIHR3aWNlIHRoZSBjYWxscy4gICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBbXlxuXSogPSBmb29c LnNpbWRjbG9uZX0gMiAidmVjdCIgeyB0YXJnZXQgeyB7ICEgYXZ4X3J1bnRpbWUgfSAmJiB7 ICEgeyBpNjg2Ki0qLSogJiYgeyAhIGxwNjQgfSB9IH0gfSB9IH0gfSAqLworLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzIHtbXG5ccl0gW15cbl0qID0gZm9vXC5zaW1k Y2xvbmV9IDMgInZlY3QiIHsgdGFyZ2V0IHsgYXZ4X3J1bnRpbWUgJiYgeyAhIHsgaTY4Niot Ki0qICYmIHsgISBscDY0IH0gfSB9IH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyB7W1xuXHJdIFteXG5dKiA9IGZvb1wuc2ltZGNsb25lfSA0ICJ2 ZWN0IiB7IHRhcmdldCB7IGk2ODYqLSotKiAmJiB7ICEgbHA2NCB9IH0gfSB9IH0gKi8KKwor LyogVGhlIExUTyB0ZXN0IHByb2R1Y2VzIHR3byBkdW1wIGZpbGVzIGFuZCB3ZSBzY2FuIHRo ZSB3cm9uZyBvbmUuICAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItZmx0 byIgfSB7ICIiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVj dC92ZWN0LXNpbWQtY2xvbmUtMTZmLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3Zl Y3Qtc2ltZC1jbG9uZS0xNmYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uZjQyYWMwODI2NzgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xNmYuYwpAQCAtMCwwICsxLDE0IEBACisvKiB7 IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X3NpbWRfY2xvbmVzIH0gKi8KKy8q IHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZm9wZW5tcC1zaW1kIiB9ICovCisvKiB7IGRn LWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hdngiIHsgdGFyZ2V0IGF2eF9ydW50aW1lIH0gfSAq LworCisjZGVmaW5lIFRZUEUgX19JTlQ2NF9UWVBFX18KKyNpbmNsdWRlICJ2ZWN0LXNpbWQt Y2xvbmUtMTYuYyIKKworLyogRW5zdXJlIHRoZSB0aGUgaW4tYnJhbmNoIHNpbWQgY2xvbmVz IGFyZSB1c2VkIG9uIHRhcmdldHMgdGhhdCBzdXBwb3J0IHRoZW0uCisgICBTb21lIHRhcmdl dHMgdXNlIHBhaXJzIG9mIHZlY3RvcnMgYW5kIGRvIHR3aWNlIHRoZSBjYWxscy4gICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBbXlxuXSogPSBm b29cLnNpbWRjbG9uZX0gMiAidmVjdCIgeyB0YXJnZXQgeyAhIHsgaTY4NiotKi0qICYmIHsg ISBscDY0IH0gfSB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMge1tcblxyXSBbXlxuXSogPSBmb29cLnNpbWRjbG9uZX0gNCAidmVjdCIgeyB0YXJn ZXQgeyBpNjg2Ki0qLSogJiYgeyAhIGxwNjQgfSB9IH0gfSB9ICovCisKKy8qIFRoZSBMVE8g dGVzdCBwcm9kdWNlcyB0d28gZHVtcCBmaWxlcyBhbmQgd2Ugc2NhbiB0aGUgd3Jvbmcgb25l LiAgKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAiLWZsdG8iIH0geyAiIiB9 IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1zaW1k LWNsb25lLTE3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3Qtc2ltZC1jbG9u ZS0xNy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NTYyMjVl NDMwNgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVj dC1zaW1kLWNsb25lLTE3LmMKQEAgLTAsMCArMSw4OSBAQAorLyogeyBkZy1yZXF1aXJlLWVm ZmVjdGl2ZS10YXJnZXQgdmVjdF9zaW1kX2Nsb25lcyB9ICovCisvKiB7IGRnLWFkZGl0aW9u YWwtb3B0aW9ucyAiLWZvcGVubXAtc2ltZCIgfSAqLworLyogeyBkZy1hZGRpdGlvbmFsLW9w dGlvbnMgIi1tYXZ4IiB7IHRhcmdldCBhdnhfcnVudGltZSB9IH0gKi8KKworLyogVGVzdCB0 aGF0IHNpbWQgaW5icmFuY2ggY2xvbmVzIHdvcmsgY29ycmVjdGx5LiAgKi8KKworI2lmbmRl ZiBUWVBFCisjZGVmaW5lIFRZUEUgaW50CisjZW5kaWYKKworLyogQSBzaW1wbGUgZnVuY3Rp b24gdGhhdCB3aWxsIGJlIGNsb25lZC4gICovCisjcHJhZ21hIG9tcCBkZWNsYXJlIHNpbWQg dW5pZm9ybShiKQorVFlQRSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCitmb28gKFRZUEUg YSwgVFlQRSBiKQoreworICByZXR1cm4gYSArIGI7Cit9CisKKy8qIENoZWNrIHRoYXQgImlu YnJhbmNoIiBjbG9uZXMgYXJlIGNhbGxlZCBjb3JyZWN0bHkuICAqLworCit2b2lkIF9fYXR0 cmlidXRlX18oKG5vaXBhKSkKK21hc2tlZCAoVFlQRSAqIF9fcmVzdHJpY3QgYSwgVFlQRSAq IF9fcmVzdHJpY3QgYiwgaW50IHNpemUpCit7CisgICNwcmFnbWEgb21wIHNpbWQKKyAgZm9y IChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgYltpXSA9IGFbaV08MSA/IGZvbyhh W2ldLCAxKSA6IGFbaV07Cit9CisKKy8qIENoZWNrIHRoYXQgImluYnJhbmNoIiB3b3JrcyB3 aGVuIHRoZXJlIG1pZ2h0IGJlIHVucm9sbGluZy4gICovCisKK3ZvaWQgX19hdHRyaWJ1dGVf Xygobm9pcGEpKQorbWFza2VkX2ZpeGVkIChUWVBFICogX19yZXN0cmljdCBhLCBUWVBFICog X19yZXN0cmljdCBiKQoreworICAjcHJhZ21hIG9tcCBzaW1kCisgIGZvciAoaW50IGkgPSAw OyBpIDwgMTI4OyBpKyspCisgICAgYltpXSA9IGFbaV08MSA/IGZvbyhhW2ldLCAxKSA6IGFb aV07Cit9CisKKy8qIFZhbGlkYXRlIHRoZSBvdXRwdXRzLiAgKi8KKwordm9pZAorY2hlY2tf bWFza2VkIChUWVBFICpiLCBpbnQgc2l6ZSkKK3sKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBz aXplOyBpKyspCisgICAgaWYgKCgoVFlQRSlpIDwgMSAmJiBiW2ldICE9IChUWVBFKShpICsg MSkpCisJfHwgKChUWVBFKWkgPj0gMSAmJiBiW2ldICE9IChUWVBFKWkpKQorICAgICAgewor CV9fYnVpbHRpbl9wcmludGYgKCJlcnJvciBhdCAlZFxuIiwgaSk7CisJX19idWlsdGluX2V4 aXQgKDEpOworICAgICAgfQorfQorCitpbnQKK21haW4gKCkKK3sKKyAgVFlQRSBhWzEwMjRd OworICBUWVBFIGJbMTAyNF07CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDI0OyBpKysp CisgICAgYVtpXSA9IGk7CisKKyAgbWFza2VkX2ZpeGVkIChhLCBiKTsKKyAgY2hlY2tfbWFz a2VkIChiLCAxMjgpOworCisgIC8qIFRlc3QgdmFyaW91cyBzaXplcyB0byBjb3ZlciBtYWNo aW5lcyB3aXRoIGRpZmZlcmVudCB2ZWN0b3JpemF0aW9uCisgICAgIGZhY3RvcnMuICAqLwor ICBmb3IgKGludCBzaXplID0gODsgc2l6ZSA8PSAxMDI0OyBzaXplICo9IDIpCisgICAgewor ICAgICAgbWFza2VkIChhLCBiLCBzaXplKTsKKyAgICAgIGNoZWNrX21hc2tlZCAoYiwgc2l6 ZSk7CisgICAgfQorCisgIC8qIFRlc3Qgc2l6ZXMgdGhhdCBtaWdodCBleGVyY2lzZSB0aGUg cGFydGlhbCB2ZWN0b3IgY29kZS1wYXRoLiAgKi8KKyAgZm9yIChpbnQgc2l6ZSA9IDg7IHNp emUgPD0gMTAyNDsgc2l6ZSAqPSAyKQorICAgIHsKKyAgICAgIG1hc2tlZCAoYSwgYiwgc2l6 ZS00KTsKKyAgICAgIGNoZWNrX21hc2tlZCAoYiwgc2l6ZS00KTsKKyAgICB9CisKKyAgcmV0 dXJuIDA7Cit9CisKKy8qIEVuc3VyZSB0aGUgdGhlIGluLWJyYW5jaCBzaW1kIGNsb25lcyBh cmUgdXNlZCBvbiB0YXJnZXRzIHRoYXQgc3VwcG9ydCB0aGVtLgorICAgU29tZSB0YXJnZXRz IHVzZSBhbm90aGVyIGNhbGwgZm9yIHRoZSBlcGlsb2d1ZSBsb29wcy4gICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBbXlxuXSogPSBmb29cLnNp bWRjbG9uZX0gMiAidmVjdCIgeyB0YXJnZXQgeyAhIGFhcmNoNjQqLSotKiB9IH0gfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBbXlxuXSog PSBmb29cLnNpbWRjbG9uZX0gMyAidmVjdCIgeyB0YXJnZXQgYWFyY2g2NCotKi0qIH0gfSB9 ICovCisKKy8qIFRoZSBMVE8gdGVzdCBwcm9kdWNlcyB0d28gZHVtcCBmaWxlcyBhbmQgd2Ug c2NhbiB0aGUgd3Jvbmcgb25lLiAgKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0g eyAiLWZsdG8iIH0geyAiIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE3Yi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dmVjdC92ZWN0LXNpbWQtY2xvbmUtMTdiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjg3MzFjMjY4NjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXNpbWQtY2xvbmUtMTdiLmMKQEAgLTAsMCArMSwxNCBA QAorLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9zaW1kX2Nsb25lcyB9 ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZvcGVubXAtc2ltZCIgfSAqLwor LyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXZ4IiB7IHRhcmdldCBhdnhfcnVudGlt ZSB9IH0gKi8KKworI2RlZmluZSBUWVBFIGZsb2F0CisjaW5jbHVkZSAidmVjdC1zaW1kLWNs b25lLTE3LmMiCisKKy8qIEVuc3VyZSB0aGUgdGhlIGluLWJyYW5jaCBzaW1kIGNsb25lcyBh cmUgdXNlZCBvbiB0YXJnZXRzIHRoYXQgc3VwcG9ydCB0aGVtLgorICAgU29tZSB0YXJnZXRz IHVzZSBhbm90aGVyIGNhbGwgZm9yIHRoZSBlcGlsb2d1ZSBsb29wcy4gICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBbXlxuXSogPSBmb29cLnNp bWRjbG9uZX0gMiAidmVjdCIgeyB0YXJnZXQgeyAhIHsgYXZ4X3J1bnRpbWUgfHwgYWFyY2g2 NCotKi0qIH0gfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRp bWVzIHtbXG5ccl0gW15cbl0qID0gZm9vXC5zaW1kY2xvbmV9IDMgInZlY3QiIHsgdGFyZ2V0 IHsgYXZ4X3J1bnRpbWUgfHwgYWFyY2g2NCotKi0qIH0gfSB9IH0gKi8KKworLyogVGhlIExU TyB0ZXN0IHByb2R1Y2VzIHR3byBkdW1wIGZpbGVzIGFuZCB3ZSBzY2FuIHRoZSB3cm9uZyBv bmUuICAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICItZmx0byIgfSB7ICIi IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXNp bWQtY2xvbmUtMTdjLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3Qtc2ltZC1j bG9uZS0xN2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjY4 M2QxYTljYmYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0 L3ZlY3Qtc2ltZC1jbG9uZS0xN2MuYwpAQCAtMCwwICsxLDE3IEBACisvKiB7IGRnLXJlcXVp cmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X3NpbWRfY2xvbmVzIH0gKi8KKy8qIHsgZGctYWRk aXRpb25hbC1vcHRpb25zICItZm9wZW5tcC1zaW1kIiB9ICovCisvKiB7IGRnLWFkZGl0aW9u YWwtb3B0aW9ucyAiLW1hdngiIHsgdGFyZ2V0IGF2eF9ydW50aW1lIH0gfSAqLworCisjZGVm aW5lIFRZUEUgc2hvcnQKKyNpbmNsdWRlICJ2ZWN0LXNpbWQtY2xvbmUtMTcuYyIKKyAKKy8q IEVuc3VyZSB0aGUgdGhlIGluLWJyYW5jaCBzaW1kIGNsb25lcyBhcmUgdXNlZCBvbiB0YXJn ZXRzIHRoYXQgc3VwcG9ydCB0aGVtLgorICAgU29tZSB0YXJnZXRzIHVzZSBhbm90aGVyIGNh bGwgZm9yIHRoZSBlcGlsb2d1ZSBsb29wcy4gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtdGltZXMge1tcblxyXSBbXlxuXSogPSBmb29cLnNpbWRjbG9uZX0gMiAidmVj dCIgeyB0YXJnZXQgeyAhIHsgeDg2XzY0Ki0qLSogfHwgeyBpNjg2Ki0qLSogfHwgYWFyY2g2 NCotKi0qIH0gfSB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMge1tcblxyXSBbXlxuXSogPSBmb29cLnNpbWRjbG9uZX0gMyAidmVjdCIgeyB0YXJn ZXQgeyBhYXJjaDY0Ki0qLSogfSB9IH0gfSAqLworCisvKiB4ODZfNjQgZmFpbHMgdG8gdXNl IGluLWJyYW5jaCBjbG9uZXMgZm9yIFRZUEU9c2hvcnQuICAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wLXRpbWVzIHtbXG5ccl0gW15cbl0qID0gZm9vXC5zaW1kY2xvbmV9 IDAgInZlY3QiIHsgdGFyZ2V0IHg4Nl82NCotKi0qIGk2ODYqLSotKiB9IH0gfSAqLworCisv KiBUaGUgTFRPIHRlc3QgcHJvZHVjZXMgdHdvIGR1bXAgZmlsZXMgYW5kIHdlIHNjYW4gdGhl IHdyb25nIG9uZS4gICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1mbHRv IiB9IHsgIiIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0 L3ZlY3Qtc2ltZC1jbG9uZS0xN2QuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVj dC1zaW1kLWNsb25lLTE3ZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5kMzhiZGU2ZDg1ZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE3ZC5jCkBAIC0wLDAgKzEsMTcgQEAKKy8qIHsg ZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3Rfc2ltZF9jbG9uZXMgfSAqLworLyog eyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mb3Blbm1wLXNpbWQgLWZkdW1wLXRyZWUtb3B0 aW1pemVkIiB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hdngiIHsgdGFy Z2V0IGF2eF9ydW50aW1lIH0gfSAqLworCisjZGVmaW5lIFRZUEUgY2hhcgorI2luY2x1ZGUg InZlY3Qtc2ltZC1jbG9uZS0xNy5jIgorCisvKiBFbnN1cmUgdGhlIHRoZSBpbi1icmFuY2gg c2ltZCBjbG9uZXMgYXJlIHVzZWQgb24gdGFyZ2V0cyB0aGF0IHN1cHBvcnQgdGhlbS4KKyAg IFNvbWUgdGFyZ2V0cyB1c2UgYW5vdGhlciBjYWxsIGZvciB0aGUgZXBpbG9ndWUgbG9vcHMu ICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzIHtbXG5ccl0gW15c bl0qID0gZm9vXC5zaW1kY2xvbmV9IDIgInZlY3QiIHsgdGFyZ2V0IHsgISB7IHg4Nl82NCot Ki0qIHx8IHsgaTY4NiotKi0qIHx8IGFhcmNoNjQqLSotKiB9IH0gfSB9IH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzIHtbXG5ccl0gW15cbl0qID0gZm9v XC5zaW1kY2xvbmV9IDMgInZlY3QiIHsgdGFyZ2V0IHsgYWFyY2g2NCotKi0qIH0gfSB9IH0g Ki8KKworLyogeDg2XzY0IGZhaWxzIHRvIHVzZSBpbi1icmFuY2ggY2xvbmVzIGZvciBUWVBF PWNoYXIuICAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzIHtbXG5c cl0gW15cbl0qID0gZm9vXC5zaW1kY2xvbmV9IDAgInZlY3QiIHsgdGFyZ2V0IHg4Nl82NCot Ki0qIGk2ODYqLSotKiB9IH0gfSAqLworCisvKiBUaGUgTFRPIHRlc3QgcHJvZHVjZXMgdHdv IGR1bXAgZmlsZXMgYW5kIHdlIHNjYW4gdGhlIHdyb25nIG9uZS4gICovCisvKiB7IGRnLXNr aXAtaWYgIiIgeyAqLSotKiB9IHsgIi1mbHRvIiB9IHsgIiIgfSB9ICovCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xN2UuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE3ZS5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mMmE0MjhjNjJjMQotLS0gL2Rldi9u dWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE3 ZS5jCkBAIC0wLDAgKzEsMTYgQEAKKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0 IHZlY3Rfc2ltZF9jbG9uZXMgfSAqLworLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1m b3Blbm1wLXNpbWQgLWZkdW1wLXRyZWUtb3B0aW1pemVkIiB9ICovCisvKiB7IGRnLWFkZGl0 aW9uYWwtb3B0aW9ucyAiLW1hdngiIHsgdGFyZ2V0IGF2eF9ydW50aW1lIH0gfSAqLworCisj ZGVmaW5lIFRZUEUgZG91YmxlCisjaW5jbHVkZSAidmVjdC1zaW1kLWNsb25lLTE3LmMiCisK Ky8qIEVuc3VyZSB0aGUgdGhlIGluLWJyYW5jaCBzaW1kIGNsb25lcyBhcmUgdXNlZCBvbiB0 YXJnZXRzIHRoYXQgc3VwcG9ydCB0aGVtLgorICAgU29tZSB0YXJnZXRzIHVzZSBhbm90aGVy IGNhbGwgZm9yIHRoZSBlcGlsb2d1ZSBsb29wcy4KKyAgIFNvbWUgdGFyZ2V0cyB1c2UgcGFp cnMgb2YgdmVjdG9ycyBhbmQgZG8gdHdpY2UgdGhlIGNhbGxzLiAgKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyB7W1xuXHJdIFteXG5dKiA9IGZvb1wuc2ltZGNs b25lfSAyICJ2ZWN0IiB7IHRhcmdldCB7IHsgISBhdnhfcnVudGltZSB9ICYmIHsgISB7IGk2 ODYqLSotKiAmJiB7ICEgbHA2NCB9IH0gfSB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBbXlxuXSogPSBmb29cLnNpbWRjbG9uZX0g MyAidmVjdCIgeyB0YXJnZXQgeyBhdnhfcnVudGltZSAmJiB7ICEgeyBpNjg2Ki0qLSogJiYg eyAhIGxwNjQgfSB9IH0gfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1k dW1wLXRpbWVzIHtbXG5ccl0gW15cbl0qID0gZm9vXC5zaW1kY2xvbmV9IDQgInZlY3QiIHsg dGFyZ2V0IHsgaTY4NiotKi0qICYmIHsgISBscDY0IH0gfSB9IH0gfSAqLworCisvKiBUaGUg TFRPIHRlc3QgcHJvZHVjZXMgdHdvIGR1bXAgZmlsZXMgYW5kIHdlIHNjYW4gdGhlIHdyb25n IG9uZS4gICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9IHsgIi1mbHRvIiB9IHsg IiIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3Qt c2ltZC1jbG9uZS0xN2YuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1zaW1k LWNsb25lLTE3Zi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5j ZDA1ZGVjOTYzMgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Zl Y3QvdmVjdC1zaW1kLWNsb25lLTE3Zi5jCkBAIC0wLDAgKzEsMTQgQEAKKy8qIHsgZGctcmVx dWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3Rfc2ltZF9jbG9uZXMgfSAqLworLyogeyBkZy1h ZGRpdGlvbmFsLW9wdGlvbnMgIi1mb3Blbm1wLXNpbWQgLWZkdW1wLXRyZWUtb3B0aW1pemVk IiB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hdngiIHsgdGFyZ2V0IGF2 eF9ydW50aW1lIH0gfSAqLworCisjZGVmaW5lIFRZUEUgX19JTlQ2NF9UWVBFX18KKyNpbmNs dWRlICJ2ZWN0LXNpbWQtY2xvbmUtMTcuYyIKKworLyogRW5zdXJlIHRoZSB0aGUgaW4tYnJh bmNoIHNpbWQgY2xvbmVzIGFyZSB1c2VkIG9uIHRhcmdldHMgdGhhdCBzdXBwb3J0IHRoZW0u CisgICBTb21lIHRhcmdldHMgdXNlIHBhaXJzIG9mIHZlY3RvcnMgYW5kIGRvIHR3aWNlIHRo ZSBjYWxscy4gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMge1tc blxyXSBbXlxuXSogPSBmb29cLnNpbWRjbG9uZX0gMiAidmVjdCIgeyB0YXJnZXQgeyAhIHsg aTY4NiotKi0qICYmIHsgISBscDY0IH0gfSB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBbXlxuXSogPSBmb29cLnNpbWRjbG9uZX0g NCAidmVjdCIgeyB0YXJnZXQgeyBpNjg2Ki0qLSogJiYgeyAhIGxwNjQgfSB9IH0gfSB9ICov CisKKy8qIFRoZSBMVE8gdGVzdCBwcm9kdWNlcyB0d28gZHVtcCBmaWxlcyBhbmQgd2Ugc2Nh biB0aGUgd3Jvbmcgb25lLiAgKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICotKi0qIH0geyAi LWZsdG8iIH0geyAiIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0 L3ZlY3Qtc2ltZC1jbG9uZS0xOC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5mZWJmOWZkZjg1ZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE4LmMKQEAgLTAsMCArMSw4OSBAQAorLyog eyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9zaW1kX2Nsb25lcyB9ICovCisv KiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZvcGVubXAtc2ltZCIgfSAqLworLyogeyBk Zy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXZ4IiB7IHRhcmdldCBhdnhfcnVudGltZSB9IH0g Ki8KKworLyogVGVzdCB0aGF0IHNpbWQgaW5icmFuY2ggY2xvbmVzIHdvcmsgY29ycmVjdGx5 LiAgKi8KKworI2lmbmRlZiBUWVBFCisjZGVmaW5lIFRZUEUgaW50CisjZW5kaWYKKworLyog QSBzaW1wbGUgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNsb25lZC4gICovCisjcHJhZ21hIG9t cCBkZWNsYXJlIHNpbWQgdW5pZm9ybShiKQorVFlQRSBfX2F0dHJpYnV0ZV9fKChub2lubGlu ZSkpCitmb28gKFRZUEUgYiwgVFlQRSBhKQoreworICByZXR1cm4gYSArIGI7Cit9CisKKy8q IENoZWNrIHRoYXQgImluYnJhbmNoIiBjbG9uZXMgYXJlIGNhbGxlZCBjb3JyZWN0bHkuICAq LworCit2b2lkIF9fYXR0cmlidXRlX18oKG5vaXBhKSkKK21hc2tlZCAoVFlQRSAqIF9fcmVz dHJpY3QgYSwgVFlQRSAqIF9fcmVzdHJpY3QgYiwgaW50IHNpemUpCit7CisgICNwcmFnbWEg b21wIHNpbWQKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgYltpXSA9 IGFbaV08MSA/IGZvbygxLCBhW2ldKSA6IGFbaV07Cit9CisKKy8qIENoZWNrIHRoYXQgImlu YnJhbmNoIiB3b3JrcyB3aGVuIHRoZXJlIG1pZ2h0IGJlIHVucm9sbGluZy4gICovCisKK3Zv aWQgX19hdHRyaWJ1dGVfXygobm9pcGEpKQorbWFza2VkX2ZpeGVkIChUWVBFICogX19yZXN0 cmljdCBhLCBUWVBFICogX19yZXN0cmljdCBiKQoreworICAjcHJhZ21hIG9tcCBzaW1kCisg IGZvciAoaW50IGkgPSAwOyBpIDwgMTI4OyBpKyspCisgICAgYltpXSA9IGFbaV08MSA/IGZv bygxLCBhW2ldKSA6IGFbaV07Cit9CisKKy8qIFZhbGlkYXRlIHRoZSBvdXRwdXRzLiAgKi8K Kwordm9pZAorY2hlY2tfbWFza2VkIChUWVBFICpiLCBpbnQgc2l6ZSkKK3sKKyAgZm9yIChp bnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgaWYgKCgoVFlQRSlpIDwgMSAmJiBiW2ld ICE9IChUWVBFKShpICsgMSkpCisJfHwgKChUWVBFKWkgPj0gMSAmJiBiW2ldICE9IChUWVBF KWkpKQorICAgICAgeworCV9fYnVpbHRpbl9wcmludGYgKCJlcnJvciBhdCAlZFxuIiwgaSk7 CisJX19idWlsdGluX2V4aXQgKDEpOworICAgICAgfQorfQorCitpbnQKK21haW4gKCkKK3sK KyAgVFlQRSBhWzEwMjRdOworICBUWVBFIGJbMTAyNF07CisKKyAgZm9yIChpbnQgaSA9IDA7 IGkgPCAxMDI0OyBpKyspCisgICAgYVtpXSA9IGk7CisKKyAgbWFza2VkX2ZpeGVkIChhLCBi KTsKKyAgY2hlY2tfbWFza2VkIChiLCAxMjgpOworCisgIC8qIFRlc3QgdmFyaW91cyBzaXpl cyB0byBjb3ZlciBtYWNoaW5lcyB3aXRoIGRpZmZlcmVudCB2ZWN0b3JpemF0aW9uCisgICAg IGZhY3RvcnMuICAqLworICBmb3IgKGludCBzaXplID0gODsgc2l6ZSA8PSAxMDI0OyBzaXpl ICo9IDIpCisgICAgeworICAgICAgbWFza2VkIChhLCBiLCBzaXplKTsKKyAgICAgIGNoZWNr X21hc2tlZCAoYiwgc2l6ZSk7CisgICAgfQorCisgIC8qIFRlc3Qgc2l6ZXMgdGhhdCBtaWdo dCBleGVyY2lzZSB0aGUgcGFydGlhbCB2ZWN0b3IgY29kZS1wYXRoLiAgKi8KKyAgZm9yIChp bnQgc2l6ZSA9IDg7IHNpemUgPD0gMTAyNDsgc2l6ZSAqPSAyKQorICAgIHsKKyAgICAgIG1h c2tlZCAoYSwgYiwgc2l6ZS00KTsKKyAgICAgIGNoZWNrX21hc2tlZCAoYiwgc2l6ZS00KTsK KyAgICB9CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIEVuc3VyZSB0aGUgdGhlIGluLWJyYW5j aCBzaW1kIGNsb25lcyBhcmUgdXNlZCBvbiB0YXJnZXRzIHRoYXQgc3VwcG9ydCB0aGVtLgor ICAgU29tZSB0YXJnZXRzIHVzZSBhbm90aGVyIGNhbGwgZm9yIHRoZSBlcGlsb2d1ZSBsb29w cy4gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBb XlxuXSogPSBmb29cLnNpbWRjbG9uZX0gMiAidmVjdCIgeyB0YXJnZXQgeyAhIGFhcmNoNjQq LSotKiB9IH0gfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg e1tcblxyXSBbXlxuXSogPSBmb29cLnNpbWRjbG9uZX0gMyAidmVjdCIgeyB0YXJnZXQgYWFy Y2g2NCotKi0qIH0gfSB9ICovCisKKy8qIFRoZSBMVE8gdGVzdCBwcm9kdWNlcyB0d28gZHVt cCBmaWxlcyBhbmQgd2Ugc2NhbiB0aGUgd3Jvbmcgb25lLiAgKi8KKy8qIHsgZGctc2tpcC1p ZiAiIiB7ICotKi0qIH0geyAiLWZsdG8iIH0geyAiIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE4Yi5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXNpbWQtY2xvbmUtMThiLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjEyMDk5M2U1MTdhCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXNpbWQtY2xvbmUtMThiLmMK QEAgLTAsMCArMSwxNCBAQAorLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVj dF9zaW1kX2Nsb25lcyB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZvcGVu bXAtc2ltZCIgfSAqLworLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXZ4IiB7IHRh cmdldCBhdnhfcnVudGltZSB9IH0gKi8KKworI2RlZmluZSBUWVBFIGZsb2F0CisjaW5jbHVk ZSAidmVjdC1zaW1kLWNsb25lLTE4LmMiCisKKy8qIEVuc3VyZSB0aGUgdGhlIGluLWJyYW5j aCBzaW1kIGNsb25lcyBhcmUgdXNlZCBvbiB0YXJnZXRzIHRoYXQgc3VwcG9ydCB0aGVtLgor ICAgU29tZSB0YXJnZXRzIHVzZSBhbm90aGVyIGNhbGwgZm9yIHRoZSBlcGlsb2d1ZSBsb29w cy4gICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBb XlxuXSogPSBmb29cLnNpbWRjbG9uZX0gMiAidmVjdCIgeyB0YXJnZXQgeyAhIHsgYXZ4X3J1 bnRpbWUgfHwgYWFyY2g2NCotKi0qIH0gfSB9IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzIHtbXG5ccl0gW15cbl0qID0gZm9vXC5zaW1kY2xvbmV9IDMg InZlY3QiIHsgdGFyZ2V0IHsgYXZ4X3J1bnRpbWUgfHwgYWFyY2g2NCotKi0qIH0gfSB9IH0g Ki8KKworLyogVGhlIExUTyB0ZXN0IHByb2R1Y2VzIHR3byBkdW1wIGZpbGVzIGFuZCB3ZSBz Y2FuIHRoZSB3cm9uZyBvbmUuICAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7 ICItZmx0byIgfSB7ICIiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvdmVjdC92ZWN0LXNpbWQtY2xvbmUtMThjLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy92 ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xOGMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uMGQxZmM2ZGU0ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xOGMuYwpAQCAtMCwwICsxLDE3IEBA CisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X3NpbWRfY2xvbmVzIH0g Ki8KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZm9wZW5tcC1zaW1kIiB9ICovCisv KiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hdngiIHsgdGFyZ2V0IGF2eF9ydW50aW1l IH0gfSAqLworCisjZGVmaW5lIFRZUEUgc2hvcnQKKyNpbmNsdWRlICJ2ZWN0LXNpbWQtY2xv bmUtMTguYyIKKworLyogRW5zdXJlIHRoZSB0aGUgaW4tYnJhbmNoIHNpbWQgY2xvbmVzIGFy ZSB1c2VkIG9uIHRhcmdldHMgdGhhdCBzdXBwb3J0IHRoZW0uCisgICBTb21lIHRhcmdldHMg dXNlIGFub3RoZXIgY2FsbCBmb3IgdGhlIGVwaWxvZ3VlIGxvb3BzLiAgKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyB7W1xuXHJdIFteXG5dKiA9IGZvb1wuc2lt ZGNsb25lfSAyICJ2ZWN0IiB7IHRhcmdldCB7ICEgeyB4ODZfNjQqLSotKiB8fCB7IGk2ODYq LSotKiB8fCBhYXJjaDY0Ki0qLSogfSB9IH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC10aW1lcyB7W1xuXHJdIFteXG5dKiA9IGZvb1wuc2ltZGNsb25lfSAz ICJ2ZWN0IiB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB9IH0gfSB9ICovCisKKy8qIHg4Nl82 NCBmYWlscyB0byB1c2UgaW4tYnJhbmNoIGNsb25lcyBmb3IgVFlQRT1zaG9ydC4gICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBbXlxuXSogPSBm b29cLnNpbWRjbG9uZX0gMCAidmVjdCIgeyB0YXJnZXQgeDg2XzY0Ki0qLSogaTY4NiotKi0q IH0gfSB9ICovCisKKy8qIFRoZSBMVE8gdGVzdCBwcm9kdWNlcyB0d28gZHVtcCBmaWxlcyBh bmQgd2Ugc2NhbiB0aGUgd3Jvbmcgb25lLiAgKi8KKy8qIHsgZGctc2tpcC1pZiAiIiB7ICot Ki0qIH0geyAiLWZsdG8iIH0geyAiIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE4ZC5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvdmVjdC92ZWN0LXNpbWQtY2xvbmUtMThkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjFlNmMwMjhmYzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXNpbWQtY2xvbmUtMThkLmMKQEAgLTAsMCAr MSwxNyBAQAorLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgdmVjdF9zaW1kX2Ns b25lcyB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLWZvcGVubXAtc2ltZCIg fSAqLworLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXZ4IiB7IHRhcmdldCBhdnhf cnVudGltZSB9IH0gKi8KKworI2RlZmluZSBUWVBFIGNoYXIKKyNpbmNsdWRlICJ2ZWN0LXNp bWQtY2xvbmUtMTguYyIKKworLyogRW5zdXJlIHRoZSB0aGUgaW4tYnJhbmNoIHNpbWQgY2xv bmVzIGFyZSB1c2VkIG9uIHRhcmdldHMgdGhhdCBzdXBwb3J0IHRoZW0uCisgICBTb21lIHRh cmdldHMgdXNlIGFub3RoZXIgY2FsbCBmb3IgdGhlIGVwaWxvZ3VlIGxvb3BzLiAgKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyB7W1xuXHJdIFteXG5dKiA9IGZv b1wuc2ltZGNsb25lfSAyICJ2ZWN0IiB7IHRhcmdldCB7ICEgeyB4ODZfNjQqLSotKiB8fCB7 IGk2ODYqLSotKiB8fCBhYXJjaDY0Ki0qLSogfSB9IH0gfSB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyB7W1xuXHJdIFteXG5dKiA9IGZvb1wuc2ltZGNs b25lfSAzICJ2ZWN0IiB7IHRhcmdldCB7IGFhcmNoNjQqLSotKiB9IH0gfSB9ICovCisKKy8q IHg4Nl82NCBmYWlscyB0byB1c2UgaW4tYnJhbmNoIGNsb25lcyBmb3IgVFlQRT1jaGFyLiAg Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyB7W1xuXHJdIFteXG5d KiA9IGZvb1wuc2ltZGNsb25lfSAwICJ2ZWN0IiB7IHRhcmdldCB4ODZfNjQqLSotKiBpNjg2 Ki0qLSogfSB9IH0gKi8KKworLyogVGhlIExUTyB0ZXN0IHByb2R1Y2VzIHR3byBkdW1wIGZp bGVzIGFuZCB3ZSBzY2FuIHRoZSB3cm9uZyBvbmUuICAqLworLyogeyBkZy1za2lwLWlmICIi IHsgKi0qLSogfSB7ICItZmx0byIgfSB7ICIiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvdmVjdC92ZWN0LXNpbWQtY2xvbmUtMThlLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xOGUuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWQyMGU1MmNiOWEKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xOGUuYwpAQCAt MCwwICsxLDE2IEBACisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCB2ZWN0X3Np bWRfY2xvbmVzIH0gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItZm9wZW5tcC1z aW1kIiB9ICovCisvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hdngiIHsgdGFyZ2V0 IGF2eF9ydW50aW1lIH0gfSAqLworCisjZGVmaW5lIFRZUEUgZG91YmxlCisjaW5jbHVkZSAi dmVjdC1zaW1kLWNsb25lLTE4LmMiCisKKy8qIEVuc3VyZSB0aGUgdGhlIGluLWJyYW5jaCBz aW1kIGNsb25lcyBhcmUgdXNlZCBvbiB0YXJnZXRzIHRoYXQgc3VwcG9ydCB0aGVtLgorICAg U29tZSB0YXJnZXRzIHVzZSBhbm90aGVyIGNhbGwgZm9yIHRoZSBlcGlsb2d1ZSBsb29wcy4K KyAgIFNvbWUgdGFyZ2V0cyB1c2UgcGFpcnMgb2YgdmVjdG9ycyBhbmQgZG8gdHdpY2UgdGhl IGNhbGxzLiAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyB7W1xu XHJdIFteXG5dKiA9IGZvb1wuc2ltZGNsb25lfSAyICJ2ZWN0IiB7IHRhcmdldCB7IHsgISBh dnhfcnVudGltZSB9ICYmIHsgISB7IGk2ODYqLSotKiAmJiB7ICEgbHA2NCB9IH0gfSB9IH0g fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMge1tcblxyXSBb XlxuXSogPSBmb29cLnNpbWRjbG9uZX0gMyAidmVjdCIgeyB0YXJnZXQgeyBhdnhfcnVudGlt ZSAmJiB7ICEgeyBpNjg2Ki0qLSogJiYgeyAhIGxwNjQgfSB9IH0gfSB9IH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzIHtbXG5ccl0gW15cbl0qID0gZm9v XC5zaW1kY2xvbmV9IDQgInZlY3QiIHsgdGFyZ2V0IHsgaTY4NiotKi0qICYmIHsgISBscDY0 IH0gfSB9IH0gfSAqLworCisvKiBUaGUgTFRPIHRlc3QgcHJvZHVjZXMgdHdvIGR1bXAgZmls ZXMgYW5kIHdlIHNjYW4gdGhlIHdyb25nIG9uZS4gICovCisvKiB7IGRnLXNraXAtaWYgIiIg eyAqLSotKiB9IHsgIi1mbHRvIiB9IHsgIiIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy5kZy92ZWN0L3ZlY3Qtc2ltZC1jbG9uZS0xOGYuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE4Zi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wOWVlN2ZmNjBmZAotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ZlY3QvdmVjdC1zaW1kLWNsb25lLTE4Zi5jCkBAIC0w LDAgKzEsMTQgQEAKKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3Rfc2lt ZF9jbG9uZXMgfSAqLworLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mb3Blbm1wLXNp bWQiIH0gKi8KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWF2eCIgeyB0YXJnZXQg YXZ4X3J1bnRpbWUgfSB9ICovCisKKyNkZWZpbmUgVFlQRSBfX0lOVDY0X1RZUEVfXworI2lu Y2x1ZGUgInZlY3Qtc2ltZC1jbG9uZS0xOC5jIgorCisvKiBFbnN1cmUgdGhlIHRoZSBpbi1i cmFuY2ggc2ltZCBjbG9uZXMgYXJlIHVzZWQgb24gdGFyZ2V0cyB0aGF0IHN1cHBvcnQgdGhl bS4KKyAgIFNvbWUgdGFyZ2V0cyB1c2UgcGFpcnMgb2YgdmVjdG9ycyBhbmQgZG8gdHdpY2Ug dGhlIGNhbGxzLiAgKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyB7 W1xuXHJdIFteXG5dKiA9IGZvb1wuc2ltZGNsb25lfSAyICJ2ZWN0IiB7IHRhcmdldCB7ICEg eyBpNjg2Ki0qLSogJiYgeyAhIGxwNjQgfSB9IH0gfSB9IH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcC10aW1lcyB7W1xuXHJdIFteXG5dKiA9IGZvb1wuc2ltZGNsb25l fSA0ICJ2ZWN0IiB7IHRhcmdldCB7IGk2ODYqLSotKiAmJiB7ICEgbHA2NCB9IH0gfSB9IH0g Ki8KKworLyogVGhlIExUTyB0ZXN0IHByb2R1Y2VzIHR3byBkdW1wIGZpbGVzIGFuZCB3ZSBz Y2FuIHRoZSB3cm9uZyBvbmUuICAqLworLyogeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7 ICItZmx0byIgfSB7ICIiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtaWYtY29udi5j YyBiL2djYy90cmVlLWlmLWNvbnYuY2MKaW5kZXggNjRiMjBiNGE5ZTEuLjU0ZjY4N2IxMTcy IDEwMDY0NAotLS0gYS9nY2MvdHJlZS1pZi1jb252LmNjCisrKyBiL2djYy90cmVlLWlmLWNv bnYuY2MKQEAgLTEyMyw2ICsxMjMsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxl IENPUFlJTkczLiAgSWYgbm90IHNlZQogI2luY2x1ZGUgInRyZWUtc3NhLWRzZS5oIgogI2lu Y2x1ZGUgInRyZWUtdmVjdG9yaXplci5oIgogI2luY2x1ZGUgInRyZWUtZWguaCIKKyNpbmNs dWRlICJjZ3JhcGguaCIKIAogLyogRm9yIGxhbmdfaG9va3MudHlwZXMudHlwZV9mb3JfbW9k ZS4gICovCiAjaW5jbHVkZSAibGFuZ2hvb2tzLmgiCkBAIC0xMDYzLDcgKzEwNjQsOCBAQCBp Zl9jb252ZXJ0aWJsZV9naW1wbGVfYXNzaWduX3N0bXRfcCAoZ2ltcGxlICpzdG10LAogICAg QSBzdGF0ZW1lbnQgaXMgaWYtY29udmVydGlibGUgaWY6CiAgICAtIGl0IGlzIGFuIGlmLWNv bnZlcnRpYmxlIEdJTVBMRV9BU1NJR04sCiAgICAtIGl0IGlzIGEgR0lNUExFX0xBQkVMIG9y IGEgR0lNUExFX0NPTkQsCi0gICAtIGl0IGlzIGJ1aWx0aW5zIGNhbGwuICAqLworICAgLSBp dCBpcyBidWlsdGlucyBjYWxsLAorICAgLSBpdCBpcyBhIGNhbGwgdG8gYSBmdW5jdGlvbiB3 aXRoIGEgU0lNRCBjbG9uZS4gICovCiAKIHN0YXRpYyBib29sCiBpZl9jb252ZXJ0aWJsZV9z dG10X3AgKGdpbXBsZSAqc3RtdCwgdmVjPGRhdGFfcmVmZXJlbmNlX3A+IHJlZnMpCkBAIC0x MDgzLDEzICsxMDg1LDIzIEBAIGlmX2NvbnZlcnRpYmxlX3N0bXRfcCAoZ2ltcGxlICpzdG10 LCB2ZWM8ZGF0YV9yZWZlcmVuY2VfcD4gcmVmcykKIAl0cmVlIGZuZGVjbCA9IGdpbXBsZV9j YWxsX2ZuZGVjbCAoc3RtdCk7CiAJaWYgKGZuZGVjbCkKIAkgIHsKKwkgICAgLyogV2UgY2Fu IHZlY3Rvcml6ZSBzb21lIGJ1aWx0aW5zIGFuZCBmdW5jdGlvbnMgd2l0aCBTSU1ECisJICAg ICAgICJpbmJyYW5jaCIgY2xvbmVzLiAgKi8KIAkgICAgaW50IGZsYWdzID0gZ2ltcGxlX2Nh bGxfZmxhZ3MgKHN0bXQpOworCSAgICBzdHJ1Y3QgY2dyYXBoX25vZGUgKm5vZGUgPSBjZ3Jh cGhfbm9kZTo6Z2V0IChmbmRlY2wpOwogCSAgICBpZiAoKGZsYWdzICYgRUNGX0NPTlNUKQog CQkmJiAhKGZsYWdzICYgRUNGX0xPT1BJTkdfQ09OU1RfT1JfUFVSRSkKLQkJLyogV2UgY2Fu IG9ubHkgdmVjdG9yaXplIHNvbWUgYnVpbHRpbnMgYXQgdGhlIG1vbWVudCwKLQkJICAgc28g cmVzdHJpY3QgaWYtY29udmVyc2lvbiB0byB0aG9zZS4gICovCiAJCSYmIGZuZGVjbF9idWls dF9pbl9wIChmbmRlY2wpKQogCSAgICAgIHJldHVybiB0cnVlOworCSAgICBpZiAobm9kZSAm JiBub2RlLT5zaW1kX2Nsb25lcyAhPSBOVUxMKQorCSAgICAgIC8qIEVuc3VyZSB0aGF0IGF0 IGxlYXN0IG9uZSBjbG9uZSBjYW4gYmUgImluYnJhbmNoIi4gICovCisJICAgICAgZm9yIChz dHJ1Y3QgY2dyYXBoX25vZGUgKm4gPSBub2RlLT5zaW1kX2Nsb25lczsgbiAhPSBOVUxMOwor CQkgICBuID0gbi0+c2ltZGNsb25lLT5uZXh0X2Nsb25lKQorCQlpZiAobi0+c2ltZGNsb25l LT5pbmJyYW5jaCkKKwkJICB7CisJCSAgICBuZWVkX3RvX3ByZWRpY2F0ZSA9IHRydWU7CisJ CSAgICByZXR1cm4gdHJ1ZTsKKwkJICB9CiAJICB9CiAJcmV0dXJuIGZhbHNlOwogICAgICAg fQpAQCAtMjYwMyw2ICsyNjE1LDI5IEBAIHByZWRpY2F0ZV9zdGF0ZW1lbnRzIChsb29wX3Ag bG9vcCkKIAkgICAgICBnaW1wbGVfYXNzaWduX3NldF9yaHMxIChzdG10LCBpZmNfdGVtcF92 YXIgKHR5cGUsIHJocywgJmdzaSkpOwogCSAgICAgIHVwZGF0ZV9zdG10IChzdG10KTsKIAkg ICAgfQorCisJICAvKiBDb252ZXJ0IGZ1bmN0aW9ucyB0aGF0IGhhdmUgYSBTSU1EIGNsb25l IHRvIElGTl9NQVNLX0NBTEwuICBUaGlzCisJICAgICB3aWxsIGNhdXNlIHRoZSB2ZWN0b3Jp emVyIHRvIG1hdGNoIHRoZSAiaW4gYnJhbmNoIiBjbG9uZSB2YXJpYW50cywKKwkgICAgIGFu ZCBzZXJ2ZXMgdG8gYnVpbGQgdGhlIG1hc2sgdmVjdG9yIGluIGEgbmF0dXJhbCB3YXkuICAq LworCSAgZ2NhbGwgKmNhbGwgPSBkeW5fY2FzdCA8Z2NhbGwgKj4gKGdzaV9zdG10IChnc2kp KTsKKwkgIGlmIChjYWxsICYmICFnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChjYWxsKSkKKwkg ICAgeworCSAgICAgIHRyZWUgb3JpZ19mbiA9IGdpbXBsZV9jYWxsX2ZuIChjYWxsKTsKKwkg ICAgICBpbnQgb3JpZ19uYXJncyA9IGdpbXBsZV9jYWxsX251bV9hcmdzIChjYWxsKTsKKwkg ICAgICBhdXRvX3ZlYzx0cmVlPiBhcmdzOworCSAgICAgIGFyZ3Muc2FmZV9wdXNoIChvcmln X2ZuKTsKKwkgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9yaWdfbmFyZ3M7IGkrKykKKwkJ YXJncy5zYWZlX3B1c2ggKGdpbXBsZV9jYWxsX2FyZyAoY2FsbCwgaSkpOworCSAgICAgIGFy Z3Muc2FmZV9wdXNoIChjb25kKTsKKworCSAgICAgIC8qIFJlcGxhY2UgdGhlIGNhbGwgd2l0 aCBhIElGTl9NQVNLX0NBTEwgdGhhdCBoYXMgdGhlIGV4dHJhCisJCSBjb25kaXRpb24gcGFy YW1ldGVyLiAqLworCSAgICAgIGdjYWxsICpuZXdfY2FsbCA9IGdpbXBsZV9idWlsZF9jYWxs X2ludGVybmFsX3ZlYyAoSUZOX01BU0tfQ0FMTCwKKwkJCQkJCQkJYXJncyk7CisJICAgICAg Z2ltcGxlX2NhbGxfc2V0X2xocyAobmV3X2NhbGwsIGdpbXBsZV9jYWxsX2xocyAoY2FsbCkp OworCSAgICAgIGdzaV9yZXBsYWNlICgmZ3NpLCBuZXdfY2FsbCwgdHJ1ZSk7CisJICAgIH0K KwogCSAgbGhzID0gZ2ltcGxlX2dldF9saHMgKGdzaV9zdG10IChnc2kpKTsKIAkgIGlmIChs aHMgJiYgVFJFRV9DT0RFIChsaHMpID09IFNTQV9OQU1FKQogCSAgICBzc2FfbmFtZXMuYWRk IChsaHMpOwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNjIGIvZ2NjL3RyZWUt dmVjdC1sb29wLmNjCmluZGV4IGFhY2JiMTI1ODBjLi5mY2U1NzM4YWE1OCAxMDA2NDQKLS0t IGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNjCisrKyBiL2djYy90cmVlLXZlY3QtbG9vcC5jYwpA QCAtMjEyMSw2ICsyMTIxLDE0IEBAIHZlY3RfZ2V0X2RhdGFyZWZzX2luX2xvb3AgKGxvb3Bf cCBsb29wLCBiYXNpY19ibG9jayAqYmJzLAogCSAgICBpZiAoaXNfZ2ltcGxlX2NhbGwgKHN0 bXQpICYmIGxvb3AtPnNhZmVsZW4pCiAJICAgICAgewogCQl0cmVlIGZuZGVjbCA9IGdpbXBs ZV9jYWxsX2ZuZGVjbCAoc3RtdCksIG9wOworCQlpZiAoZm5kZWNsID09IE5VTExfVFJFRQor CQkgICAgJiYgZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoc3RtdCwgSUZOX01BU0tfQ0FMTCkp CisJCSAgeworCQkgICAgZm5kZWNsID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAwKTsKKwkJ ICAgIGdjY19jaGVja2luZ19hc3NlcnQgKFRSRUVfQ09ERSAoZm5kZWNsKSA9PSBBRERSX0VY UFIpOworCQkgICAgZm5kZWNsID0gVFJFRV9PUEVSQU5EIChmbmRlY2wsIDApOworCQkgICAg Z2NjX2NoZWNraW5nX2Fzc2VydCAoVFJFRV9DT0RFIChmbmRlY2wpID09IEZVTkNUSU9OX0RF Q0wpOworCQkgIH0KIAkJaWYgKGZuZGVjbCAhPSBOVUxMX1RSRUUpCiAJCSAgewogCQkgICAg Y2dyYXBoX25vZGUgKm5vZGUgPSBjZ3JhcGhfbm9kZTo6Z2V0IChmbmRlY2wpOwpkaWZmIC0t Z2l0IGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MK aW5kZXggNTQ4NWRhNThiMzguLjQ4MDQ4OTM4MjkxIDEwMDY0NAotLS0gYS9nY2MvdHJlZS12 ZWN0LXN0bXRzLmNjCisrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MKQEAgLTM5ODcsNiAr Mzk4Nyw3IEBAIHZlY3Rvcml6YWJsZV9zaW1kX2Nsb25lX2NhbGwgKHZlY19pbmZvICp2aW5m bywgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sCiAgIHNpemVfdCBpLCBuYXJnczsKICAgdHJl ZSBsaHMsIHJ0eXBlLCByYXR5cGU7CiAgIHZlYzxjb25zdHJ1Y3Rvcl9lbHQsIHZhX2djPiAq cmV0X2N0b3JfZWx0cyA9IE5VTEw7CisgIGludCBhcmdfb2Zmc2V0ID0gMDsKIAogICAvKiBJ cyBTVE1UIGEgdmVjdG9yaXphYmxlIGNhbGw/ICAgKi8KICAgZ2NhbGwgKnN0bXQgPSBkeW5f Y2FzdCA8Z2NhbGwgKj4gKHN0bXRfaW5mby0+c3RtdCk7CkBAIC0zOTk0LDYgKzM5OTUsMTUg QEAgdmVjdG9yaXphYmxlX3NpbWRfY2xvbmVfY2FsbCAodmVjX2luZm8gKnZpbmZvLCBzdG10 X3ZlY19pbmZvIHN0bXRfaW5mbywKICAgICByZXR1cm4gZmFsc2U7CiAKICAgZm5kZWNsID0g Z2ltcGxlX2NhbGxfZm5kZWNsIChzdG10KTsKKyAgaWYgKGZuZGVjbCA9PSBOVUxMX1RSRUUK KyAgICAgICYmIGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0bXQsIElGTl9NQVNLX0NBTEwp KQorICAgIHsKKyAgICAgIGZuZGVjbCA9IGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwgMCk7Cisg ICAgICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChUUkVFX0NPREUgKGZuZGVjbCkgPT0gQUREUl9F WFBSKTsKKyAgICAgIGZuZGVjbCA9IFRSRUVfT1BFUkFORCAoZm5kZWNsLCAwKTsKKyAgICAg IGdjY19jaGVja2luZ19hc3NlcnQgKFRSRUVfQ09ERSAoZm5kZWNsKSA9PSBGVU5DVElPTl9E RUNMKTsKKyAgICAgIGFyZ19vZmZzZXQgPSAxOworICAgIH0KICAgaWYgKGZuZGVjbCA9PSBO VUxMX1RSRUUpCiAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00MDI0LDcgKzQwMzQsNyBAQCB2 ZWN0b3JpemFibGVfc2ltZF9jbG9uZV9jYWxsICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVj X2luZm8gc3RtdF9pbmZvLAogICAgIHJldHVybiBmYWxzZTsKIAogICAvKiBQcm9jZXNzIGZ1 bmN0aW9uIGFyZ3VtZW50cy4gICovCi0gIG5hcmdzID0gZ2ltcGxlX2NhbGxfbnVtX2FyZ3Mg KHN0bXQpOworICBuYXJncyA9IGdpbXBsZV9jYWxsX251bV9hcmdzIChzdG10KSAtIGFyZ19v ZmZzZXQ7CiAKICAgLyogQmFpbCBvdXQgaWYgdGhlIGZ1bmN0aW9uIGhhcyB6ZXJvIGFyZ3Vt ZW50cy4gICovCiAgIGlmIChuYXJncyA9PSAwKQpAQCAtNDA0Miw3ICs0MDUyLDcgQEAgdmVj dG9yaXphYmxlX3NpbWRfY2xvbmVfY2FsbCAodmVjX2luZm8gKnZpbmZvLCBzdG10X3ZlY19p bmZvIHN0bXRfaW5mbywKICAgICAgIHRoaXNhcmdpbmZvLm9wID0gTlVMTF9UUkVFOwogICAg ICAgdGhpc2FyZ2luZm8uc2ltZF9sYW5lX2xpbmVhciA9IGZhbHNlOwogCi0gICAgICBvcCA9 IGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwgaSk7CisgICAgICBvcCA9IGdpbXBsZV9jYWxsX2Fy ZyAoc3RtdCwgaSArIGFyZ19vZmZzZXQpOwogICAgICAgaWYgKCF2ZWN0X2lzX3NpbXBsZV91 c2UgKG9wLCB2aW5mbywgJnRoaXNhcmdpbmZvLmR0LAogCQkJICAgICAgICZ0aGlzYXJnaW5m by52ZWN0eXBlKQogCSAgfHwgdGhpc2FyZ2luZm8uZHQgPT0gdmVjdF91bmluaXRpYWxpemVk X2RlZikKQEAgLTQwNTcsMTYgKzQwNjcsNyBAQCB2ZWN0b3JpemFibGVfc2ltZF9jbG9uZV9j YWxsICh2ZWNfaW5mbyAqdmluZm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLAogCSAgfHwg dGhpc2FyZ2luZm8uZHQgPT0gdmVjdF9leHRlcm5hbF9kZWYpCiAJZ2NjX2Fzc2VydCAodGhp c2FyZ2luZm8udmVjdHlwZSA9PSBOVUxMX1RSRUUpOwogICAgICAgZWxzZQotCXsKLQkgIGdj Y19hc3NlcnQgKHRoaXNhcmdpbmZvLnZlY3R5cGUgIT0gTlVMTF9UUkVFKTsKLQkgIGlmIChW RUNUT1JfQk9PTEVBTl9UWVBFX1AgKHRoaXNhcmdpbmZvLnZlY3R5cGUpKQotCSAgICB7Ci0J ICAgICAgaWYgKGR1bXBfZW5hYmxlZF9wICgpKQotCQlkdW1wX3ByaW50Zl9sb2MgKE1TR19N SVNTRURfT1BUSU1JWkFUSU9OLCB2ZWN0X2xvY2F0aW9uLAotCQkJCSAidmVjdG9yIG1hc2sg YXJndW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkXG4iKTsKLQkgICAgICByZXR1cm4gZmFsc2U7 Ci0JICAgIH0KLQl9CisJZ2NjX2Fzc2VydCAodGhpc2FyZ2luZm8udmVjdHlwZSAhPSBOVUxM X1RSRUUpOwogCiAgICAgICAvKiBGb3IgbGluZWFyIGFyZ3VtZW50cywgdGhlIGFuYWx5emUg cGhhc2Ugc2hvdWxkIGhhdmUgc2F2ZWQKIAkgdGhlIGJhc2UgYW5kIHN0ZXAgaW4gU1RNVF9W SU5GT19TSU1EX0NMT05FX0lORk8uICAqLwpAQCAtNDE1OSw5ICs0MTYwLDYgQEAgdmVjdG9y aXphYmxlX3NpbWRfY2xvbmVfY2FsbCAodmVjX2luZm8gKnZpbmZvLCBzdG10X3ZlY19pbmZv IHN0bXRfaW5mbywKIAlpZiAodGFyZ2V0X2JhZG5lc3MgPCAwKQogCSAgY29udGludWU7CiAJ dGhpc19iYWRuZXNzICs9IHRhcmdldF9iYWRuZXNzICogNTEyOwotCS8qIEZPUk5PVzogSGF2 ZSB0byBhZGQgY29kZSB0byBhZGQgdGhlIG1hc2sgYXJndW1lbnQuICAqLwotCWlmIChuLT5z aW1kY2xvbmUtPmluYnJhbmNoKQotCSAgY29udGludWU7CiAJZm9yIChpID0gMDsgaSA8IG5h cmdzOyBpKyspCiAJICB7CiAJICAgIHN3aXRjaCAobi0+c2ltZGNsb25lLT5hcmdzW2ldLmFy Z190eXBlKQpAQCAtNDE2OSw3ICs0MTY3LDcgQEAgdmVjdG9yaXphYmxlX3NpbWRfY2xvbmVf Y2FsbCAodmVjX2luZm8gKnZpbmZvLCBzdG10X3ZlY19pbmZvIHN0bXRfaW5mbywKIAkgICAg ICBjYXNlIFNJTURfQ0xPTkVfQVJHX1RZUEVfVkVDVE9SOgogCQlpZiAoIXVzZWxlc3NfdHlw ZV9jb252ZXJzaW9uX3AKIAkJCShuLT5zaW1kY2xvbmUtPmFyZ3NbaV0ub3JpZ190eXBlLAot CQkJIFRSRUVfVFlQRSAoZ2ltcGxlX2NhbGxfYXJnIChzdG10LCBpKSkpKQorCQkJIFRSRUVf VFlQRSAoZ2ltcGxlX2NhbGxfYXJnIChzdG10LCBpICsgYXJnX29mZnNldCkpKSkKIAkJICBp ID0gLTE7CiAJCWVsc2UgaWYgKGFyZ2luZm9baV0uZHQgPT0gdmVjdF9jb25zdGFudF9kZWYK IAkJCSB8fCBhcmdpbmZvW2ldLmR0ID09IHZlY3RfZXh0ZXJuYWxfZGVmCkBAIC00MTk5LDcg KzQxOTcsNyBAQCB2ZWN0b3JpemFibGVfc2ltZF9jbG9uZV9jYWxsICh2ZWNfaW5mbyAqdmlu Zm8sIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLAogCQlpID0gLTE7CiAJCWJyZWFrOwogCSAg ICAgIGNhc2UgU0lNRF9DTE9ORV9BUkdfVFlQRV9NQVNLOgotCQlnY2NfdW5yZWFjaGFibGUg KCk7CisJCWJyZWFrOwogCSAgICAgIH0KIAkgICAgaWYgKGkgPT0gKHNpemVfdCkgLTEpCiAJ ICAgICAgYnJlYWs7CkBAIC00MjI1LDE4ICs0MjIzLDU1IEBAIHZlY3Rvcml6YWJsZV9zaW1k X2Nsb25lX2NhbGwgKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8s CiAgICAgcmV0dXJuIGZhbHNlOwogCiAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQot ICAgIGlmICgoYXJnaW5mb1tpXS5kdCA9PSB2ZWN0X2NvbnN0YW50X2RlZgotCSB8fCBhcmdp bmZvW2ldLmR0ID09IHZlY3RfZXh0ZXJuYWxfZGVmKQotCSYmIGJlc3RuLT5zaW1kY2xvbmUt PmFyZ3NbaV0uYXJnX3R5cGUgPT0gU0lNRF9DTE9ORV9BUkdfVFlQRV9WRUNUT1IpCi0gICAg ICB7Ci0JdHJlZSBhcmdfdHlwZSA9IFRSRUVfVFlQRSAoZ2ltcGxlX2NhbGxfYXJnIChzdG10 LCBpKSk7Ci0JYXJnaW5mb1tpXS52ZWN0eXBlID0gZ2V0X3ZlY3R5cGVfZm9yX3NjYWxhcl90 eXBlICh2aW5mbywgYXJnX3R5cGUsCi0JCQkJCQkJICBzbHBfbm9kZSk7Ci0JaWYgKGFyZ2lu Zm9baV0udmVjdHlwZSA9PSBOVUxMCi0JICAgIHx8ICFjb25zdGFudF9tdWx0aXBsZV9wIChi ZXN0bi0+c2ltZGNsb25lLT5zaW1kbGVuLAotCQkJCSAgICAgc2ltZF9jbG9uZV9zdWJwYXJ0 cyAoYXJnaW5mb1tpXS52ZWN0eXBlKSkpCisgICAgeworICAgICAgaWYgKChhcmdpbmZvW2ld LmR0ID09IHZlY3RfY29uc3RhbnRfZGVmCisJICAgfHwgYXJnaW5mb1tpXS5kdCA9PSB2ZWN0 X2V4dGVybmFsX2RlZikKKwkgICYmIGJlc3RuLT5zaW1kY2xvbmUtPmFyZ3NbaV0uYXJnX3R5 cGUgPT0gU0lNRF9DTE9ORV9BUkdfVFlQRV9WRUNUT1IpCisJeworCSAgdHJlZSBhcmdfdHlw ZSA9IFRSRUVfVFlQRSAoZ2ltcGxlX2NhbGxfYXJnIChzdG10LCBpICsgYXJnX29mZnNldCkp OworCSAgYXJnaW5mb1tpXS52ZWN0eXBlID0gZ2V0X3ZlY3R5cGVfZm9yX3NjYWxhcl90eXBl ICh2aW5mbywgYXJnX3R5cGUsCisJCQkJCQkJICAgIHNscF9ub2RlKTsKKwkgIGlmIChhcmdp bmZvW2ldLnZlY3R5cGUgPT0gTlVMTAorCSAgICAgIHx8ICFjb25zdGFudF9tdWx0aXBsZV9w IChiZXN0bi0+c2ltZGNsb25lLT5zaW1kbGVuLAorCQkJCSAgICAgICBzaW1kX2Nsb25lX3N1 YnBhcnRzIChhcmdpbmZvW2ldLnZlY3R5cGUpKSkKKwkgICAgcmV0dXJuIGZhbHNlOworCX0K KworICAgICAgaWYgKGJlc3RuLT5zaW1kY2xvbmUtPmFyZ3NbaV0uYXJnX3R5cGUgPT0gU0lN RF9DTE9ORV9BUkdfVFlQRV9WRUNUT1IKKwkgICYmIFZFQ1RPUl9CT09MRUFOX1RZUEVfUCAo YmVzdG4tPnNpbWRjbG9uZS0+YXJnc1tpXS52ZWN0b3JfdHlwZSkpCisJeworCSAgaWYgKGR1 bXBfZW5hYmxlZF9wICgpKQorCSAgICBkdW1wX3ByaW50Zl9sb2MgKE1TR19NSVNTRURfT1BU SU1JWkFUSU9OLCB2ZWN0X2xvY2F0aW9uLAorCQkJICAgICAidmVjdG9yIG1hc2sgYXJndW1l bnRzIGFyZSBub3Qgc3VwcG9ydGVkLlxuIik7CiAJICByZXR1cm4gZmFsc2U7Ci0gICAgICB9 CisJfQorCisgICAgICBpZiAoYmVzdG4tPnNpbWRjbG9uZS0+YXJnc1tpXS5hcmdfdHlwZSA9 PSBTSU1EX0NMT05FX0FSR19UWVBFX01BU0sKKwkgICYmIGJlc3RuLT5zaW1kY2xvbmUtPm1h c2tfbW9kZSA9PSBWT0lEbW9kZQorCSAgJiYgKHNpbWRfY2xvbmVfc3VicGFydHMgKGJlc3Ru LT5zaW1kY2xvbmUtPmFyZ3NbaV0udmVjdG9yX3R5cGUpCisJICAgICAgIT0gc2ltZF9jbG9u ZV9zdWJwYXJ0cyAoYXJnaW5mb1tpXS52ZWN0eXBlKSkpCisJeworCSAgLyogRk9STk9XIHdl IG9ubHkgaGF2ZSBwYXJ0aWFsIHN1cHBvcnQgZm9yIHZlY3Rvci10eXBlIG1hc2tzIHRoYXQK KwkgICAgIGNhbid0IGhvbGQgYWxsIG9mIHNpbWRsZW4uICovCisJICBpZiAoZHVtcF9lbmFi bGVkX3AgKCkpCisJICAgIGR1bXBfcHJpbnRmX2xvYyAoTVNHX01JU1NFRF9PUFRJTUlaQVRJ T04sCisJCQkgICAgIHZlY3RfbG9jYXRpb24sCisJCQkgICAgICJpbi1icmFuY2ggdmVjdG9y IGNsb25lcyBhcmUgbm90IHlldCIKKwkJCSAgICAgIiBzdXBwb3J0ZWQgZm9yIG1pc21hdGNo ZWQgdmVjdG9yIHNpemVzLlxuIik7CisJICByZXR1cm4gZmFsc2U7CisJfQorICAgICAgaWYg KGJlc3RuLT5zaW1kY2xvbmUtPmFyZ3NbaV0uYXJnX3R5cGUgPT0gU0lNRF9DTE9ORV9BUkdf VFlQRV9NQVNLCisJICAmJiBiZXN0bi0+c2ltZGNsb25lLT5tYXNrX21vZGUgIT0gVk9JRG1v ZGUpCisJeworCSAgLyogRk9STk9XIGRvbid0IHN1cHBvcnQgaW50ZWdlci10eXBlIG1hc2tz LiAgKi8KKwkgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkKKwkgICAgZHVtcF9wcmludGZfbG9j IChNU0dfTUlTU0VEX09QVElNSVpBVElPTiwKKwkJCSAgICAgdmVjdF9sb2NhdGlvbiwKKwkJ CSAgICAgImluLWJyYW5jaCB2ZWN0b3IgY2xvbmVzIGFyZSBub3QgeWV0IgorCQkJICAgICAi IHN1cHBvcnRlZCBmb3IgaW50ZWdlciBtYXNrIG1vZGVzLlxuIik7CisJICByZXR1cm4gZmFs c2U7CisJfQorICAgIH0KIAogICBmbmRlY2wgPSBiZXN0bi0+ZGVjbDsKICAgbnVuaXRzID0g YmVzdG4tPnNpbWRjbG9uZS0+c2ltZGxlbjsKQEAgLTQzMjYsNyArNDM2MSw3IEBAIHZlY3Rv cml6YWJsZV9zaW1kX2Nsb25lX2NhbGwgKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5m byBzdG10X2luZm8sCiAJewogCSAgdW5zaWduZWQgaW50IGssIGwsIG0sIG87CiAJICB0cmVl IGF0eXBlOwotCSAgb3AgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIGkpOworCSAgb3AgPSBn aW1wbGVfY2FsbF9hcmcgKHN0bXQsIGkgKyBhcmdfb2Zmc2V0KTsKIAkgIHN3aXRjaCAoYmVz dG4tPnNpbWRjbG9uZS0+YXJnc1tpXS5hcmdfdHlwZSkKIAkgICAgewogCSAgICBjYXNlIFNJ TURfQ0xPTkVfQVJHX1RZUEVfVkVDVE9SOgpAQCAtNDQyNSw2ICs0NDYwLDY1IEBAIHZlY3Rv cml6YWJsZV9zaW1kX2Nsb25lX2NhbGwgKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5m byBzdG10X2luZm8sCiAJCSAgICB9CiAJCX0KIAkgICAgICBicmVhazsKKwkgICAgY2FzZSBT SU1EX0NMT05FX0FSR19UWVBFX01BU0s6CisJICAgICAgYXR5cGUgPSBiZXN0bi0+c2ltZGNs b25lLT5hcmdzW2ldLnZlY3Rvcl90eXBlOworCSAgICAgIGlmIChiZXN0bi0+c2ltZGNsb25l LT5tYXNrX21vZGUgIT0gVk9JRG1vZGUpCisJCXsKKwkJICAvKiBGT1JOT1c6IHRoaXMgaXMg ZGlzYWJsZWQgYWJvdmUuICAqLworCQkgIGdjY191bnJlYWNoYWJsZSAoKTsKKwkJfQorCSAg ICAgIGVsc2UKKwkJeworCQkgIHRyZWUgZWx0X3R5cGUgPSBUUkVFX1RZUEUgKGF0eXBlKTsK KwkJICB0cmVlIG9uZSA9IGZvbGRfY29udmVydCAoZWx0X3R5cGUsIGludGVnZXJfb25lX25v ZGUpOworCQkgIHRyZWUgemVybyA9IGZvbGRfY29udmVydCAoZWx0X3R5cGUsIGludGVnZXJf emVyb19ub2RlKTsKKwkJICBvID0gdmVjdG9yX3Vucm9sbF9mYWN0b3IgKG51bml0cywKKwkJ CQkJICAgIHNpbWRfY2xvbmVfc3VicGFydHMgKGF0eXBlKSk7CisJCSAgZm9yIChtID0gaiAq IG87IG0gPCAoaiArIDEpICogbzsgbSsrKQorCQkgICAgeworCQkgICAgICBpZiAoc2ltZF9j bG9uZV9zdWJwYXJ0cyAoYXR5cGUpCisJCQkgIDwgc2ltZF9jbG9uZV9zdWJwYXJ0cyAoYXJn aW5mb1tpXS52ZWN0eXBlKSkKKwkJCXsKKwkJCSAgLyogVGhlIG1hc2sgdHlwZSBoYXMgZmV3 ZXIgZWxlbWVudHMgdGhhbiBzaW1kbGVuLiAgKi8KKworCQkJICAvKiBGT1JOT1cgKi8KKwkJ CSAgZ2NjX3VucmVhY2hhYmxlICgpOworCQkJfQorCQkgICAgICBlbHNlIGlmIChzaW1kX2Ns b25lX3N1YnBhcnRzIChhdHlwZSkKKwkJCSAgICAgICA9PSBzaW1kX2Nsb25lX3N1YnBhcnRz IChhcmdpbmZvW2ldLnZlY3R5cGUpKQorCQkJeworCQkJICAvKiBUaGUgU0lNRCBjbG9uZSBm dW5jdGlvbiBoYXMgdGhlIHNhbWUgbnVtYmVyIG9mCisJCQkgICAgIGVsZW1lbnRzIGFzIHRo ZSBjdXJyZW50IGZ1bmN0aW9uLiAgKi8KKwkJCSAgaWYgKG0gPT0gMCkKKwkJCSAgICB7CisJ CQkgICAgICB2ZWN0X2dldF92ZWNfZGVmc19mb3Jfb3BlcmFuZCAodmluZm8sIHN0bXRfaW5m bywKKwkJCQkJCQkgICAgIG8gKiBuY29waWVzLAorCQkJCQkJCSAgICAgb3AsCisJCQkJCQkJ ICAgICAmdmVjX29wcm5kc1tpXSk7CisJCQkgICAgICB2ZWNfb3BybmRzX2lbaV0gPSAwOwor CQkJICAgIH0KKwkJCSAgdmVjX29wcm5kMCA9IHZlY19vcHJuZHNbaV1bdmVjX29wcm5kc19p W2ldKytdOworCQkJICB2ZWNfb3BybmQwCisJCQkgICAgPSBidWlsZDMgKFZFQ19DT05EX0VY UFIsIGF0eXBlLCB2ZWNfb3BybmQwLAorCQkJCSAgICAgIGJ1aWxkX3ZlY3Rvcl9mcm9tX3Zh bCAoYXR5cGUsIG9uZSksCisJCQkJICAgICAgYnVpbGRfdmVjdG9yX2Zyb21fdmFsIChhdHlw ZSwgemVybykpOworCQkJICBnYXNzaWduICpuZXdfc3RtdAorCQkJICAgID0gZ2ltcGxlX2J1 aWxkX2Fzc2lnbiAobWFrZV9zc2FfbmFtZSAoYXR5cGUpLAorCQkJCQkJICAgdmVjX29wcm5k MCk7CisJCQkgIHZlY3RfZmluaXNoX3N0bXRfZ2VuZXJhdGlvbiAodmluZm8sIHN0bXRfaW5m bywKKwkJCQkJCSAgICAgICBuZXdfc3RtdCwgZ3NpKTsKKwkJCSAgdmFyZ3Muc2FmZV9wdXNo IChnaW1wbGVfYXNzaWduX2xocyAobmV3X3N0bXQpKTsKKwkJCX0KKwkJICAgICAgZWxzZQor CQkJeworCQkJICAvKiBUaGUgbWFzayB0eXBlIGhhcyBtb3JlIGVsZW1lbnRzIHRoYW4gc2lt ZGxlbi4gICovCisKKwkJCSAgLyogRk9STk9XICovCisJCQkgIGdjY191bnJlYWNoYWJsZSAo KTsKKwkJCX0KKwkJICAgIH0KKwkJfQorCSAgICAgIGJyZWFrOwogCSAgICBjYXNlIFNJTURf Q0xPTkVfQVJHX1RZUEVfVU5JRk9STToKIAkgICAgICB2YXJncy5zYWZlX3B1c2ggKG9wKTsK IAkgICAgICBicmVhazsK --------------Z6ZFinfdRKvOC0UAhUjKMeZN--