From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 56863 invoked by alias); 9 Sep 2016 21:21:16 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 56836 invoked by uid 89); 9 Sep 2016 21:21:15 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=2.1 required=5.0 tests=AWL,BAYES_50,RCVD_IN_DNSWL_LOW,RCVD_IN_SORBS_SPAM autolearn=no version=3.3.2 spammy=size_type_node, gol, @gol, controlling X-HELO: mail-oi0-f54.google.com Received: from mail-oi0-f54.google.com (HELO mail-oi0-f54.google.com) (209.85.218.54) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 09 Sep 2016 21:21:04 +0000 Received: by mail-oi0-f54.google.com with SMTP id m11so166343201oif.1 for ; Fri, 09 Sep 2016 14:21:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=B9F/x5tq8X2HUAmyRfTPpNxuXr4aagd4tIHzjwcAGlQ=; b=HKOnhE/dsdipATpdjOer2AMwBuFx/qES/JLK8qh7/7H1h7jSMyxhsYy0j96rSumYVo t5PZAHs7kUMoaCYgLSw67rdGpzgSph4t0CS6vdtqgl61dDUyz22ym1TXzkDx/YE76stw RazMtVYPnLSr6VMFUj2femndOSzBAobzquV+rNMNmudF4g+JuCkzlXoNZ9cFKOdVrGFc HWKif8vfH6nvSAk7L/CoSzx5MRBofSNAt1fuxZ5xsei1A69a7HEFn/98alSSsqccFWSc 4Puo6omtlMmEgdMcorGBQiPsIvK7K29tbFqmoM+n+cBR8PqMgQIF0GOcNV7ys4FbRwlz Rz7A== X-Gm-Message-State: AE9vXwOgk1M27bYfY5i9ZlRrzorpbp2y5sPHqrUreeo+Wn0o0Dq/RmF677x2fpFRhy7qAhiPLYPhPtbVz00WVhBp X-Received: by 10.157.22.250 with SMTP id s55mr6949385ots.182.1473456063058; Fri, 09 Sep 2016 14:21:03 -0700 (PDT) MIME-Version: 1.0 Received: by 10.182.105.169 with HTTP; Fri, 9 Sep 2016 14:20:42 -0700 (PDT) In-Reply-To: <20160908110641.GB23306@redhat.com> References: <20160908110641.GB23306@redhat.com> From: Jason Merrill Date: Fri, 09 Sep 2016 21:40:00 -0000 Message-ID: Subject: Re: RFA (libstdc++): PATCH to implement C++17 over-aligned new To: Jonathan Wakely Cc: libstdc++@gcc.gnu.org, gcc-patches List Content-Type: multipart/mixed; boundary=001a113d0c1c3b4f2b053c19b91f X-IsSubscribed: yes X-SW-Source: 2016-09/txt/msg00549.txt.bz2 --001a113d0c1c3b4f2b053c19b91f Content-Type: text/plain; charset=UTF-8 Content-length: 419 On Thu, Sep 8, 2016 at 7:06 AM, Jonathan Wakely wrote: > On 08/09/16 09:10 +0200, Marc Glisse wrote: >> >> Do we want a generic fallback implementation (similar to >> gcc/config/i386/gmm_malloc.h)? A windows version with _aligned_malloc / >> _aligned_free would also be possible. > > Making it work for MinGW would be nice. OK, this is what I'm checking in; could someone test it on MinGW? Jason --001a113d0c1c3b4f2b053c19b91f Content-Type: text/plain; charset=US-ASCII; name="aligned-new.diff" Content-Disposition: attachment; filename="aligned-new.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_isw8y4vi0 Content-length: 77283 Y29tbWl0IGE1MjhkYTJmMWNhYmZjZmQxMjdlMzI0NjM0MmRhYjIyNzEyNTRl NDUKQXV0aG9yOiBKYXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpE YXRlOiAgIFdlZCBTZXAgNyAxNjoyMjo1NCAyMDE2IC0wNDAwCgogICAgICAg ICAgICBJbXBsZW1lbnQgUDAwMzVSNCwgQysrMTcgbmV3IG9mIG92ZXItYWxp Z25lZCB0eXBlcy4KICAgIAogICAgZ2NjL2NwLwogICAgICAgICAgICAqIGNw LXRyZWUuaCAoZW51bSBjcF90cmVlX2luZGV4KTogQWRkIENQVElfQUxJR05f VFlQRS4KICAgICAgICAgICAgKGFsaWduX3R5cGVfbm9kZSk6IE5ldyBtYWNy by4KICAgICAgICAgICAgKiBjYWxsLmMgKGJ1aWxkX29wZXJhdG9yX25ld19j YWxsKTogSGFuZGxlIEMrKzE3IGFsaWduZWQgbmV3LgogICAgICAgICAgICAo c2Vjb25kX3Bhcm1faXNfc2l6ZV90LCBidWlsZF9vcF9kZWxldGVfY2FsbCk6 IExpa2V3aXNlLgogICAgICAgICAgICAobm9uX3BsYWNlbWVudF9kZWFsbG9j YXRpb25fZm5fcCk6IExpa2V3aXNlLiBSZW5hbWUgdG8KICAgICAgICAgICAg dXN1YWxfZGVhbGxvY2F0aW9uX2ZuX3AuCiAgICAgICAgICAgIChhbGlnbmVk X2FsbG9jYXRpb25fZm5fcCwgYWxpZ25lZF9kZWFsbG9jYXRpb25fZm5fcCk6 IE5ldy4KICAgICAgICAgICAgKiBkZWNsLmMgKGN4eF9pbml0X2RlY2xfcHJv Y2Vzc2luZyk6IEFkZCBhbGlnbmVkIG5ldyBzdXBwb3J0LgogICAgICAgICAg ICAqIGluaXQuYyAodHlwZV9oYXNfbmV3X2V4dGVuZGVkX2FsaWdubWVudCk6 IE5ldy4KICAgICAgICAgICAgKGJ1aWxkX25ld18xKTogSGFuZGxlIGFsaWdu ZWQgbmV3LgogICAgICAgICAgICAqIHRyZWUuYyAodmVjX2NvcHlfYW5kX2lu c2VydCk6IE5ldy4KICAgIGdjYy9jLWZhbWlseS8KICAgICAgICAgICAgKiBj Lm9wdDogQWRkIC1mYWxpZ25lZC1uZXcgYW5kIC1XYWxpZ25lZC1uZXcuCiAg ICAgICAgICAgICogYy1jb21tb24uYyAobWF4X2FsaWduX3RfYWxpZ24pOiBT cGxpdCBvdXQgZnJvbS4uLgogICAgICAgICAgICAoY3h4X2Z1bmRhbWVudGFs X2FsaWdubWVudF9wKTogLi4uaGVyZS4KICAgICAgICAgICAgKiBjLWNvbW1v bi5oOiBEZWNsYXJlIGl0LgogICAgICAgICAgICAqIGMtY3BwYnVpbHRpbi5j IChjX2NwcF9idWlsdGlucyk6IEhhbmRsZSBhbGlnbmVkIG5ldy4KICAgIGxp YnN0ZGMrKy12My8KICAgICAgICAgICAgKiBsaWJzdXBjKysvbmV3OiBEZWNs YXJlIGFsaWduZWQgbmV3L2RlbGV0ZSBvcGVyYXRvcnMuCiAgICAgICAgICAg ICogY29uZmlnL2FiaS9wcmUvZ251LnZlcjogRXhwb3J0IHRoZW0uCiAgICAg ICAgICAgICogY29uZmlndXJlLmFjOiBDaGVjayBmb3IgYWxpZ25lZF9hbGxv YywgcG9zaXhfbWVtYWxpZ24sIG1lbWFsaWduLAogICAgICAgICAgICBfYWxp Z25lZF9tYWxsb2MuCiAgICAgICAgICAgICogbGlic3VwYysrL25ld19vcGEu Y2M6IE5ldy4KICAgICAgICAgICAgKiBsaWJzdXBjKysvbmV3X29wYW50LmNj OiBOZXcuCiAgICAgICAgICAgICogbGlic3VwYysrL25ld19vcHZhLmNjOiBO ZXcuCiAgICAgICAgICAgICogbGlic3VwYysrL25ld19vcHZhLmNjOiBOZXcu CiAgICAgICAgICAgICogbGlic3VwYysrL2RlbF9vcGEuY2M6IE5ldy4KICAg ICAgICAgICAgKiBsaWJzdXBjKysvZGVsX29wYW50LmNjOiBOZXcuCiAgICAg ICAgICAgICogbGlic3VwYysrL2RlbF9vcHNhLmNjOiBOZXcuCiAgICAgICAg ICAgICogbGlic3VwYysrL2RlbF9vcHZhLmNjOiBOZXcuCiAgICAgICAgICAg ICogbGlic3VwYysrL2RlbF9vcHZhbnQuY2M6IE5ldy4KICAgICAgICAgICAg KiBsaWJzdXBjKysvZGVsX29wdnNhLmNjOiBOZXcuCiAgICAgICAgICAgICog bGlic3VwYysrL01ha2VmaWxlLmFtOiBCdWlsZCB0aGVtLgoKZGlmZiAtLWdp dCBhL2djYy9jLWZhbWlseS9jLWNvbW1vbi5jIGIvZ2NjL2MtZmFtaWx5L2Mt Y29tbW9uLmMKaW5kZXggNjU2ZjYzOS4uOWE2NmNmZSAxMDA2NDQKLS0tIGEv Z2NjL2MtZmFtaWx5L2MtY29tbW9uLmMKKysrIGIvZ2NjL2MtZmFtaWx5L2Mt Y29tbW9uLmMKQEAgLTEyODc4LDYgKzEyODc4LDE5IEBAIHNjYWxhcl90b192 ZWN0b3IgKGxvY2F0aW9uX3QgbG9jLCBlbnVtIHRyZWVfY29kZSBjb2RlLCB0 cmVlIG9wMCwgdHJlZSBvcDEsCiAgIHJldHVybiBzdHZfbm90aGluZzsKIH0K IAorLyogUmV0dXJuIHRoZSBhbGlnbm1lbnQgb2Ygc3RkOjptYXhfYWxpZ25f dC4KKworICAgW3N1cHBvcnQudHlwZXMubGF5b3V0XSBUaGUgdHlwZSBtYXhf YWxpZ25fdCBpcyBhIFBPRCB0eXBlIHdob3NlIGFsaWdubWVudAorICAgcmVx dWlyZW1lbnQgaXMgYXQgbGVhc3QgYXMgZ3JlYXQgYXMgdGhhdCBvZiBldmVy eSBzY2FsYXIgdHlwZSwgYW5kIHdob3NlCisgICBhbGlnbm1lbnQgcmVxdWly ZW1lbnQgaXMgc3VwcG9ydGVkIGluIGV2ZXJ5IGNvbnRleHQuICAqLworCit1 bnNpZ25lZAorbWF4X2FsaWduX3RfYWxpZ24gKCkKK3sKKyAgcmV0dXJuIE1B WCAoVFlQRV9BTElHTiAobG9uZ19sb25nX2ludGVnZXJfdHlwZV9ub2RlKSwK KwkgICAgICBUWVBFX0FMSUdOIChsb25nX2RvdWJsZV90eXBlX25vZGUpKTsK K30KKwogLyogUmV0dXJuIHRydWUgaWZmIEFMSUdOIGlzIGFuIGludGVncmFs IGNvbnN0YW50IHRoYXQgaXMgYSBmdW5kYW1lbnRhbAogICAgYWxpZ25tZW50 LCBhcyBkZWZpbmVkIGJ5IFtiYXNpYy5hbGlnbl0gaW4gdGhlIGMrKy0xMQog ICAgc3BlY2lmaWNhdGlvbnMuCkBAIC0xMjg4NiwxNCArMTI4OTksMTIgQEAg c2NhbGFyX3RvX3ZlY3RvciAobG9jYXRpb25fdCBsb2MsIGVudW0gdHJlZV9j b2RlIGNvZGUsIHRyZWUgb3AwLCB0cmVlIG9wMSwKIAogICAgICAgIFtBIGZ1 bmRhbWVudGFsIGFsaWdubWVudCBpcyByZXByZXNlbnRlZCBieSBhbiBhbGln bm1lbnQgbGVzcyB0aGFuIG9yCiAgICAgICAgIGVxdWFsIHRvIHRoZSBncmVh dGVzdCBhbGlnbm1lbnQgc3VwcG9ydGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlv bgotICAgICAgICBpbiBhbGwgY29udGV4dHMsIHdoaWNoIGlzIGVxdWFsIHRv Ci0gICAgICAgIGFsaWdub2YobWF4X2FsaWduX3QpXS4gICovCisgICAgICAg IGluIGFsbCBjb250ZXh0cywgd2hpY2ggaXMgZXF1YWwgdG8gYWxpZ25vZiht YXhfYWxpZ25fdCldLiAgKi8KIAogYm9vbAotY3h4X2Z1bmRhbWVudGFsX2Fs aWdubWVudF9wICAodW5zaWduZWQgYWxpZ24pCitjeHhfZnVuZGFtZW50YWxf YWxpZ25tZW50X3AgKHVuc2lnbmVkIGFsaWduKQogewotICByZXR1cm4gKGFs aWduIDw9ICBNQVggKFRZUEVfQUxJR04gKGxvbmdfbG9uZ19pbnRlZ2VyX3R5 cGVfbm9kZSksCi0JCQkgVFlQRV9BTElHTiAobG9uZ19kb3VibGVfdHlwZV9u b2RlKSkpOworICByZXR1cm4gKGFsaWduIDw9IG1heF9hbGlnbl90X2FsaWdu ICgpKTsKIH0KIAogLyogUmV0dXJuIHRydWUgaWYgVCBpcyBhIHBvaW50ZXIg dG8gYSB6ZXJvLXNpemVkIGFnZ3JlZ2F0ZS4gICovCmRpZmYgLS1naXQgYS9n Y2MvYy1mYW1pbHkvYy1jb21tb24uaCBiL2djYy9jLWZhbWlseS9jLWNvbW1v bi5oCmluZGV4IDFkOTIzYzkuLjJlMjExYzQgMTAwNjQ0Ci0tLSBhL2djYy9j LWZhbWlseS9jLWNvbW1vbi5oCisrKyBiL2djYy9jLWZhbWlseS9jLWNvbW1v bi5oCkBAIC04NjMsNiArODYzLDcgQEAgZXh0ZXJuIGJvb2wga2V5d29yZF9i ZWdpbnNfdHlwZV9zcGVjaWZpZXIgKGVudW0gcmlkKTsKIGV4dGVybiBib29s IGtleXdvcmRfaXNfc3RvcmFnZV9jbGFzc19zcGVjaWZpZXIgKGVudW0gcmlk KTsKIGV4dGVybiBib29sIGtleXdvcmRfaXNfdHlwZV9xdWFsaWZpZXIgKGVu dW0gcmlkKTsKIGV4dGVybiBib29sIGtleXdvcmRfaXNfZGVjbF9zcGVjaWZp ZXIgKGVudW0gcmlkKTsKK2V4dGVybiB1bnNpZ25lZCBtYXhfYWxpZ25fdF9h bGlnbiAodm9pZCk7CiBleHRlcm4gYm9vbCBjeHhfZnVuZGFtZW50YWxfYWxp Z25tZW50X3AgKHVuc2lnbmVkKTsKIGV4dGVybiBib29sIHBvaW50ZXJfdG9f emVyb19zaXplZF9hZ2dyX3AgKHRyZWUpOwogZXh0ZXJuIGJvb2wgZGlhZ25v c2VfbWlzbWF0Y2hlZF9hdHRyaWJ1dGVzICh0cmVlLCB0cmVlKTsKZGlmZiAt LWdpdCBhL2djYy9jLWZhbWlseS9jLWNwcGJ1aWx0aW4uYyBiL2djYy9jLWZh bWlseS9jLWNwcGJ1aWx0aW4uYwppbmRleCAzMzM4Mjc2Li5iYjMwODI5IDEw MDY0NAotLS0gYS9nY2MvYy1mYW1pbHkvYy1jcHBidWlsdGluLmMKKysrIGIv Z2NjL2MtZmFtaWx5L2MtY3BwYnVpbHRpbi5jCkBAIC05NDQsNiArOTQ0LDEy IEBAIGNfY3BwX2J1aWx0aW5zIChjcHBfcmVhZGVyICpwZmlsZSkKIAljcHBf ZGVmaW5lIChwZmlsZSwgIl9fY3BwX3RyYW5zYWN0aW9uYWxfbWVtb3J5PTIx MDUwMCIpOwogICAgICAgaWYgKGZsYWdfc2l6ZWRfZGVhbGxvY2F0aW9uKQog CWNwcF9kZWZpbmUgKHBmaWxlLCAiX19jcHBfc2l6ZWRfZGVhbGxvY2F0aW9u PTIwMTMwOSIpOworICAgICAgaWYgKGFsaWduZWRfbmV3X3RocmVzaGhvbGQp CisJeworCSAgY3BwX2RlZmluZSAocGZpbGUsICJfX2NwcF9hbGlnbmVkX25l dz0yMDE2MDYiKTsKKwkgIGNwcF9kZWZpbmVfZm9ybWF0dGVkIChwZmlsZSwg Il9fU1REQ1BQX0RFRkFVTFRfTkVXX0FMSUdOTUVOVF9fPSVkIiwKKwkJCQlh bGlnbmVkX25ld190aHJlc2hob2xkKTsKKwl9CiAgICAgfQogICAvKiBOb3Rl IHRoYXQgd2UgZGVmaW5lIHRoaXMgZm9yIEMgYXMgd2VsbCwgc28gdGhhdCB3 ZSBrbm93IGlmCiAgICAgIF9fYXR0cmlidXRlX18oKGNsZWFudXApKSB3aWxs IGludGVyZmFjZSB3aXRoIEVILiAgKi8KZGlmZiAtLWdpdCBhL2djYy9jLWZh bWlseS9jLm9wdCBiL2djYy9jLWZhbWlseS9jLm9wdAppbmRleCBhNTM1OGVk Li5jNTVjN2MzIDEwMDY0NAotLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKKysr IGIvZ2NjL2MtZmFtaWx5L2Mub3B0CkBAIC0yNzEsNiArMjcxLDI2IEBAIFdh ZGRyZXNzCiBDIE9iakMgQysrIE9iakMrKyBWYXIod2Fybl9hZGRyZXNzKSBX YXJuaW5nIExhbmdFbmFibGVkQnkoQyBPYmpDIEMrKyBPYmpDKyssV2FsbCkK IFdhcm4gYWJvdXQgc3VzcGljaW91cyB1c2VzIG9mIG1lbW9yeSBhZGRyZXNz ZXMuCiAKK0VudW0KK05hbWUod2Fybl9hbGlnbmVkX25ld19sZXZlbCkgVHlw ZShpbnQpIFVua25vd25FcnJvcihhcmd1bWVudCAlcXMgdG8gJTwtV2FsaWdu ZWQtbmV3JT4gbm90IHJlY29nbml6ZWQpCisKK0VudW1WYWx1ZQorRW51bSh3 YXJuX2FsaWduZWRfbmV3X2xldmVsKSBTdHJpbmcobm9uZSkgVmFsdWUoMCkK KworRW51bVZhbHVlCitFbnVtKHdhcm5fYWxpZ25lZF9uZXdfbGV2ZWwpIFN0 cmluZyhnbG9iYWwpIFZhbHVlKDEpCisKK0VudW1WYWx1ZQorRW51bSh3YXJu X2FsaWduZWRfbmV3X2xldmVsKSBTdHJpbmcoYWxsKSBWYWx1ZSgyKQorCitX YWxpZ25lZC1uZXcKK0MrKyBPYmpDKysgQWxpYXMoV2FsaWduZWQtbmV3PSxn bG9iYWwsbm9uZSkKK1dhcm4gYWJvdXQgJ25ldycgb2YgdHlwZSB3aXRoIGV4 dGVuZGVkIGFsaWdubWVudCB3aXRob3V0IC1mYWxpZ25lZC1uZXcuCisKK1dh bGlnbmVkLW5ldz0KK0MrKyBPYmpDKysgVmFyKHdhcm5fYWxpZ25lZF9uZXcp IEVudW0od2Fybl9hbGlnbmVkX25ld19sZXZlbCkgSm9pbmVkIFdhcm5pbmcg TGFuZ0VuYWJsZWRCeShDKysgT2JqQysrLFdhbGwsMSwwKQorLVdhbGlnbmVk LW5ldz1hbGwgV2FybiBldmVuIGlmICduZXcnIHVzZXMgYSBjbGFzcyBtZW1i ZXIgYWxsb2NhdGlvbiBmdW5jdGlvbi4KKwogV2FsbAogQyBPYmpDIEMrKyBP YmpDKysgV2FybmluZwogRW5hYmxlIG1vc3Qgd2FybmluZyBtZXNzYWdlcy4K QEAgLTEwMzIsNiArMTA1MiwxNCBAQCBmYWRhLXNwZWMtcGFyZW50PQogQyBP YmpDIEMrKyBPYmpDKysgUmVqZWN0TmVnYXRpdmUgSm9pbmVkIFZhcihhZGFf c3BlY3NfcGFyZW50KQogLWZhZGEtc3BlYy1wYXJlbnQ9dW5pdCAgRHVtcCBB ZGEgc3BlY3MgYXMgY2hpbGQgdW5pdHMgb2YgZ2l2ZW4gcGFyZW50LgogCitm YWxpZ25lZC1uZXcKK0MrKyBPYmpDKysgQWxpYXMoZmFsaWduZWQtbmV3PSwx LDApCitTdXBwb3J0IEMrKzE3IGFsbG9jYXRpb24gb2Ygb3Zlci1hbGlnbmVk IHR5cGVzLgorCitmYWxpZ25lZC1uZXc9CitDKysgT2JqQysrIEpvaW5lZCBW YXIoYWxpZ25lZF9uZXdfdGhyZXNoaG9sZCkgVUludGVnZXIgSW5pdCgtMSkK Ky1mYWxpZ25lZC1uZXc9PE4+IFVzZSBDKysxNyBvdmVyLWFsaWduZWQgdHlw ZSBhbGxvY2F0aW9uIGZvciBhbGlnbm1lbnRzIGdyZWF0ZXIgdGhhbiBOLgor CiBmYWxsLXZpcnR1YWwKIEMrKyBPYmpDKysgSWdub3JlIFdhcm4oc3dpdGNo ICVxcyBpcyBubyBsb25nZXIgc3VwcG9ydGVkKQogCmRpZmYgLS1naXQgYS9n Y2MvY3AvY2FsbC5jIGIvZ2NjL2NwL2NhbGwuYwppbmRleCAwMjQ1MTlkLi4x NjdkNzc4IDEwMDY0NAotLS0gYS9nY2MvY3AvY2FsbC5jCisrKyBiL2djYy9j cC9jYWxsLmMKQEAgLTQyMTEsMTMgKzQyMTEsMTQgQEAgYnVpbGRfbmV3X2Z1 bmN0aW9uX2NhbGwgKHRyZWUgZm4sIHZlYzx0cmVlLCB2YV9nYz4gKiphcmdz LCBib29sIGtvZW5pZ19wLAogCiB0cmVlCiBidWlsZF9vcGVyYXRvcl9uZXdf Y2FsbCAodHJlZSBmbm5hbWUsIHZlYzx0cmVlLCB2YV9nYz4gKiphcmdzLAot CQkJIHRyZWUgKnNpemUsIHRyZWUgKmNvb2tpZV9zaXplLCB0cmVlIHNpemVf Y2hlY2ssCisJCQkgdHJlZSAqc2l6ZSwgdHJlZSAqY29va2llX3NpemUsCisJ CQkgdHJlZSBhbGlnbl9hcmcsIHRyZWUgc2l6ZV9jaGVjaywKIAkJCSB0cmVl ICpmbiwgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiB7CiAgIHRyZWUgb3Jp Z2luYWxfc2l6ZSA9ICpzaXplOwogICB0cmVlIGZuczsKICAgc3RydWN0IHpf Y2FuZGlkYXRlICpjYW5kaWRhdGVzOwotICBzdHJ1Y3Qgel9jYW5kaWRhdGUg KmNhbmQ7CisgIHN0cnVjdCB6X2NhbmRpZGF0ZSAqY2FuZCA9IE5VTEw7CiAg IGJvb2wgYW55X3ZpYWJsZV9wOwogCiAgIGlmIChmbikKQEAgLTQyNDcsOSAr NDI0OCwyMCBAQCBidWlsZF9vcGVyYXRvcl9uZXdfY2FsbCAodHJlZSBmbm5h bWUsIHZlYzx0cmVlLCB2YV9nYz4gKiphcmdzLAogICAgICB3ZSBkaXNyZWdh cmQgYmxvY2stc2NvcGUgZGVjbGFyYXRpb25zIG9mICJvcGVyYXRvciBuZXci LiAgKi8KICAgZm5zID0gbG9va3VwX2Z1bmN0aW9uX25vbmNsYXNzIChmbm5h bWUsICphcmdzLCAvKmJsb2NrX3A9Ki9mYWxzZSk7CiAKKyAgaWYgKGFsaWdu X2FyZykKKyAgICB7CisgICAgICB2ZWM8dHJlZSwgdmFfZ2M+KiBhbGlnbl9h cmdzCisJPSB2ZWNfY29weV9hbmRfaW5zZXJ0ICgqYXJncywgYWxpZ25fYXJn LCAxKTsKKyAgICAgIGNhbmQgPSBwZXJmb3JtX292ZXJsb2FkX3Jlc29sdXRp b24gKGZucywgYWxpZ25fYXJncywgJmNhbmRpZGF0ZXMsCisJCQkJCSAgJmFu eV92aWFibGVfcCwgdGZfbm9uZSk7CisgICAgICAvKiBJZiBubyBhbGlnbmVk IGFsbG9jYXRpb24gZnVuY3Rpb24gbWF0Y2hlcywgdHJ5IGFnYWluIHdpdGhv dXQgdGhlCisJIGFsaWdubWVudC4gICovCisgICAgfQorCiAgIC8qIEZpZ3Vy ZSBvdXQgd2hhdCBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuICAqLwotICBj YW5kID0gcGVyZm9ybV9vdmVybG9hZF9yZXNvbHV0aW9uIChmbnMsICphcmdz LCAmY2FuZGlkYXRlcywgJmFueV92aWFibGVfcCwKLQkJCQkgICAgICBjb21w bGFpbik7CisgIGlmICghY2FuZCkKKyAgICBjYW5kID0gcGVyZm9ybV9vdmVy bG9hZF9yZXNvbHV0aW9uIChmbnMsICphcmdzLCAmY2FuZGlkYXRlcywgJmFu eV92aWFibGVfcCwKKwkJCQkJY29tcGxhaW4pOwogCiAgIC8qIElmIG5vIHN1 aXRhYmxlIGZ1bmN0aW9uIGNvdWxkIGJlIGZvdW5kLCBpc3N1ZSBhbiBlcnJv ciBtZXNzYWdlCiAgICAgIGFuZCBnaXZlIHVwLiAgKi8KQEAgLTU5NDUsMTYg KzU5NTcsNjUgQEAgc3RhdGljIGJvb2wKIHNlY29uZF9wYXJtX2lzX3NpemVf dCAodHJlZSBmbikKIHsKICAgdHJlZSB0ID0gRlVOQ1RJT05fQVJHX0NIQUlO IChmbik7Ci0gIHJldHVybiAodAotCSAgJiYgc2FtZV90eXBlX3AgKFRSRUVf VkFMVUUgKHQpLCBzaXplX3R5cGVfbm9kZSkKLQkgICYmIFRSRUVfQ0hBSU4g KHQpID09IHZvaWRfbGlzdF9ub2RlKTsKKyAgaWYgKCF0IHx8ICFzYW1lX3R5 cGVfcCAoVFJFRV9WQUxVRSAodCksIHNpemVfdHlwZV9ub2RlKSkKKyAgICBy ZXR1cm4gZmFsc2U7CisgIHQgPSBUUkVFX0NIQUlOICh0KTsKKyAgaWYgKHQg PT0gdm9pZF9saXN0X25vZGUpCisgICAgcmV0dXJuIHRydWU7CisgIGlmIChh bGlnbmVkX25ld190aHJlc2hob2xkICYmIHQKKyAgICAgICYmIHNhbWVfdHlw ZV9wIChUUkVFX1ZBTFVFICh0KSwgYWxpZ25fdHlwZV9ub2RlKQorICAgICAg JiYgVFJFRV9DSEFJTiAodCkgPT0gdm9pZF9saXN0X25vZGUpCisgICAgcmV0 dXJuIHRydWU7CisgIHJldHVybiBmYWxzZTsKK30KKworLyogVHJ1ZSBpZiBU LCBhbiBhbGxvY2F0aW9uIGZ1bmN0aW9uLCBoYXMgc3RkOjphbGlnbl92YWxf dCBhcyBpdHMgc2Vjb25kCisgICBhcmd1bWVudC4gICovCisKK2Jvb2wKK2Fs aWduZWRfYWxsb2NhdGlvbl9mbl9wICh0cmVlIHQpCit7CisgIGlmICghYWxp Z25lZF9uZXdfdGhyZXNoaG9sZCkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAg dHJlZSBhID0gRlVOQ1RJT05fQVJHX0NIQUlOICh0KTsKKyAgcmV0dXJuIChh ICYmIHNhbWVfdHlwZV9wIChUUkVFX1ZBTFVFIChhKSwgYWxpZ25fdHlwZV9u b2RlKSk7Cit9CisKKy8qIFJldHVybnMgdHJ1ZSBpZmYgVCwgYW4gZWxlbWVu dCBvZiBhbiBPVkVSTE9BRCBjaGFpbiwgaXMgYSB1c3VhbCBkZWFsbG9jYXRp b24KKyAgIGZ1bmN0aW9uICgzLjcuNC4yIFtiYXNpYy5zdGMuZHluYW1pYy5k ZWFsbG9jYXRpb25dKSB3aXRoIGEgcGFyYW1ldGVyIG9mCisgICBzdGQ6OmFs aWduX3ZhbF90LiAgKi8KKworc3RhdGljIGJvb2wKK2FsaWduZWRfZGVhbGxv Y2F0aW9uX2ZuX3AgKHRyZWUgdCkKK3sKKyAgaWYgKCFhbGlnbmVkX25ld190 aHJlc2hob2xkKQorICAgIHJldHVybiBmYWxzZTsKKworICAvKiBBIHRlbXBs YXRlIGluc3RhbmNlIGlzIG5ldmVyIGEgdXN1YWwgZGVhbGxvY2F0aW9uIGZ1 bmN0aW9uLAorICAgICByZWdhcmRsZXNzIG9mIGl0cyBzaWduYXR1cmUuICAq LworICBpZiAoVFJFRV9DT0RFICh0KSA9PSBURU1QTEFURV9ERUNMCisgICAg ICB8fCBwcmltYXJ5X3RlbXBsYXRlX2luc3RhbnRpYXRpb25fcCAodCkpCisg ICAgcmV0dXJuIGZhbHNlOworCisgIHRyZWUgYSA9IEZVTkNUSU9OX0FSR19D SEFJTiAodCk7CisgIGlmIChzYW1lX3R5cGVfcCAoVFJFRV9WQUxVRSAoYSks IGFsaWduX3R5cGVfbm9kZSkKKyAgICAgICYmIFRSRUVfQ0hBSU4gKGEpID09 IHZvaWRfbGlzdF9ub2RlKQorICAgIHJldHVybiB0cnVlOworICBpZiAoIXNh bWVfdHlwZV9wIChUUkVFX1ZBTFVFIChhKSwgc2l6ZV90eXBlX25vZGUpKQor ICAgIHJldHVybiBmYWxzZTsKKyAgYSA9IFRSRUVfQ0hBSU4gKGEpOworICBp ZiAoYSAmJiBzYW1lX3R5cGVfcCAoVFJFRV9WQUxVRSAoYSksIGFsaWduX3R5 cGVfbm9kZSkKKyAgICAgICYmIFRSRUVfQ0hBSU4gKGEpID09IHZvaWRfbGlz dF9ub2RlKQorICAgIHJldHVybiB0cnVlOworICByZXR1cm4gZmFsc2U7CiB9 CiAKIC8qIFJldHVybnMgdHJ1ZSBpZmYgVCwgYW4gZWxlbWVudCBvZiBhbiBP VkVSTE9BRCBjaGFpbiwgaXMgYSB1c3VhbAogICAgZGVhbGxvY2F0aW9uIGZ1 bmN0aW9uICgzLjcuNC4yIFtiYXNpYy5zdGMuZHluYW1pYy5kZWFsbG9jYXRp b25dKS4gICovCiAKIGJvb2wKLW5vbl9wbGFjZW1lbnRfZGVhbGxvY2F0aW9u X2ZuX3AgKHRyZWUgdCkKK3VzdWFsX2RlYWxsb2NhdGlvbl9mbl9wICh0cmVl IHQpCiB7CiAgIC8qIEEgdGVtcGxhdGUgaW5zdGFuY2UgaXMgbmV2ZXIgYSB1 c3VhbCBkZWFsbG9jYXRpb24gZnVuY3Rpb24sCiAgICAgIHJlZ2FyZGxlc3Mg b2YgaXRzIHNpZ25hdHVyZS4gICovCkBAIC01OTcwLDEwICs2MDMxLDE1IEBA IG5vbl9wbGFjZW1lbnRfZGVhbGxvY2F0aW9uX2ZuX3AgKHRyZWUgdCkKICAg ICAgb2Ygd2hpY2ggaGFzIHR5cGUgc3RkOjpzaXplX3QgKDE4LjIpLCB0aGVu IHRoaXMgZnVuY3Rpb24gaXMgYSB1c3VhbAogICAgICBkZWFsbG9jYXRpb24g ZnVuY3Rpb24uICAqLwogICBib29sIGdsb2JhbCA9IERFQ0xfTkFNRVNQQUNF X1NDT1BFX1AgKHQpOwotICBpZiAoRlVOQ1RJT05fQVJHX0NIQUlOICh0KSA9 PSB2b2lkX2xpc3Rfbm9kZQorICB0cmVlIGNoYWluID0gRlVOQ1RJT05fQVJH X0NIQUlOICh0KTsKKyAgaWYgKCFjaGFpbikKKyAgICByZXR1cm4gZmFsc2U7 CisgIGlmIChjaGFpbiA9PSB2b2lkX2xpc3Rfbm9kZQogICAgICAgfHwgKCgh Z2xvYmFsIHx8IGZsYWdfc2l6ZWRfZGVhbGxvY2F0aW9uKQogCSAgJiYgc2Vj b25kX3Bhcm1faXNfc2l6ZV90ICh0KSkpCiAgICAgcmV0dXJuIHRydWU7Cisg IGlmIChhbGlnbmVkX2RlYWxsb2NhdGlvbl9mbl9wICh0KSkKKyAgICByZXR1 cm4gdHJ1ZTsKICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02MDc2LDcgKzYx NDIsNyBAQCBidWlsZF9vcF9kZWxldGVfY2FsbCAoZW51bSB0cmVlX2NvZGUg Y29kZSwgdHJlZSBhZGRyLCB0cmVlIHNpemUsCiAJCSB0OyB0ID0gT1ZMX05F WFQgKHQpKQogCSAgICAgIHsKIAkJdHJlZSBlbHQgPSBPVkxfQ1VSUkVOVCAo dCk7Ci0JCWlmIChub25fcGxhY2VtZW50X2RlYWxsb2NhdGlvbl9mbl9wIChl bHQpCisJCWlmICh1c3VhbF9kZWFsbG9jYXRpb25fZm5fcCAoZWx0KQogCQkg ICAgJiYgRlVOQ1RJT05fQVJHX0NIQUlOIChlbHQpID09IHZvaWRfbGlzdF9u b2RlKQogCQkgIGdvdG8gb2s7CiAJICAgICAgfQpAQCAtNjExOCw1MSArNjE4 NCw2MiBAQCBidWlsZF9vcF9kZWxldGVfY2FsbCAoZW51bSB0cmVlX2NvZGUg Y29kZSwgdHJlZSBhZGRyLCB0cmVlIHNpemUsCiAJIHQ7IHQgPSBPVkxfTkVY VCAodCkpCiAgICAgICB7CiAJdHJlZSBlbHQgPSBPVkxfQ1VSUkVOVCAodCk7 Ci0JaWYgKG5vbl9wbGFjZW1lbnRfZGVhbGxvY2F0aW9uX2ZuX3AgKGVsdCkp CisJaWYgKHVzdWFsX2RlYWxsb2NhdGlvbl9mbl9wIChlbHQpKQogCSAgewot CSAgICBmbiA9IGVsdDsKLQkgICAgLyogIklmIGEgY2xhc3MgVCBoYXMgYSBt ZW1iZXIgZGVhbGxvY2F0aW9uIGZ1bmN0aW9uIG5hbWVkCi0JICAgICAgIG9w ZXJhdG9yIGRlbGV0ZSB3aXRoIGV4YWN0bHkgb25lIHBhcmFtZXRlciwgdGhl biB0aGF0Ci0JICAgICAgIGZ1bmN0aW9uIGlzIGEgdXN1YWwgKG5vbi1wbGFj ZW1lbnQpIGRlYWxsb2NhdGlvbgotCSAgICAgICBmdW5jdGlvbi4gSWYgY2xh c3MgVCBkb2VzIG5vdCBkZWNsYXJlIHN1Y2ggYW4gb3BlcmF0b3IKLQkgICAg ICAgZGVsZXRlIGJ1dCBkb2VzIGRlY2xhcmUgYSBtZW1iZXIgZGVhbGxvY2F0 aW9uIGZ1bmN0aW9uIG5hbWVkCi0JICAgICAgIG9wZXJhdG9yIGRlbGV0ZSB3 aXRoIGV4YWN0bHkgdHdvIHBhcmFtZXRlcnMsIHRoZSBzZWNvbmQgb2YKLQkg ICAgICAgd2hpY2ggaGFzIHR5cGUgc3RkOjpzaXplX3QgKDE4LjIpLCB0aGVu IHRoaXMgZnVuY3Rpb24gaXMgYQotCSAgICAgICB1c3VhbCBkZWFsbG9jYXRp b24gZnVuY3Rpb24uIgorCSAgICBpZiAoIWZuKQorCSAgICAgIHsKKwkJZm4g PSBlbHQ7CisJCWNvbnRpbnVlOworCSAgICAgIH0KIAotCSAgICAgICBTbyBp biBhIGNsYXNzICh2b2lkKikgYmVhdHMgKHZvaWQqLCBzaXplX3QpLiAgKi8K KwkgICAgLyogLS0gSWYgdGhlIHR5cGUgaGFzIG5ldy1leHRlbmRlZCBhbGln bm1lbnQsIGEgZnVuY3Rpb24gd2l0aCBhCisJICAgICAgIHBhcmFtZXRlciBv ZiB0eXBlIHN0ZDo6YWxpZ25fdmFsX3QgaXMgcHJlZmVycmVkOyBvdGhlcndp c2UgYQorCSAgICAgICBmdW5jdGlvbiB3aXRob3V0IHN1Y2ggYSBwYXJhbWV0 ZXIgaXMgcHJlZmVycmVkLiBJZiBleGFjdGx5IG9uZQorCSAgICAgICBwcmVm ZXJyZWQgZnVuY3Rpb24gaXMgZm91bmQsIHRoYXQgZnVuY3Rpb24gaXMgc2Vs ZWN0ZWQgYW5kIHRoZQorCSAgICAgICBzZWxlY3Rpb24gcHJvY2VzcyB0ZXJt aW5hdGVzLiBJZiBtb3JlIHRoYW4gb25lIHByZWZlcnJlZAorCSAgICAgICBm dW5jdGlvbiBpcyBmb3VuZCwgYWxsIG5vbi1wcmVmZXJyZWQgZnVuY3Rpb25z IGFyZSBlbGltaW5hdGVkCisJICAgICAgIGZyb20gZnVydGhlciBjb25zaWRl cmF0aW9uLiAgKi8KKwkgICAgaWYgKGFsaWduZWRfbmV3X3RocmVzaGhvbGQp CisJICAgICAgeworCQlib29sIHdhbnRfYWxpZ24gPSB0eXBlX2hhc19uZXdf ZXh0ZW5kZWRfYWxpZ25tZW50ICh0eXBlKTsKKwkJYm9vbCBmbl9hbGlnbiA9 IGFsaWduZWRfZGVhbGxvY2F0aW9uX2ZuX3AgKGZuKTsKKwkJYm9vbCBlbHRf YWxpZ24gPSBhbGlnbmVkX2RlYWxsb2NhdGlvbl9mbl9wIChlbHQpOworCisJ CWlmIChlbHRfYWxpZ24gIT0gZm5fYWxpZ24pCisJCSAgeworCQkgICAgaWYg KHdhbnRfYWxpZ24gPT0gZWx0X2FsaWduKQorCQkgICAgICBmbiA9IGVsdDsK KwkJICAgIGNvbnRpbnVlOworCQkgIH0KKwkgICAgICB9CisKKwkgICAgLyog LS0gSWYgdGhlIGRlYWxsb2NhdGlvbiBmdW5jdGlvbnMgaGF2ZSBjbGFzcyBz Y29wZSwgdGhlIG9uZQorCSAgICAgICB3aXRob3V0IGEgcGFyYW1ldGVyIG9m IHR5cGUgc3RkOjpzaXplX3QgaXMgc2VsZWN0ZWQuICAqLworCSAgICBib29s IHdhbnRfc2l6ZTsKIAkgICAgaWYgKERFQ0xfQ0xBU1NfU0NPUEVfUCAoZm4p KQotCSAgICAgIHsKLQkJaWYgKEZVTkNUSU9OX0FSR19DSEFJTiAoZm4pID09 IHZvaWRfbGlzdF9ub2RlKQotCQkgIGJyZWFrOwotCSAgICAgIH0KLQkgICAg LyogQXQgZ2xvYmFsIHNjb3BlIChpbiBDKysxNCBhbmQgYWJvdmUpIHRoZSBy dWxlcyBhcmUgZGlmZmVyZW50OgorCSAgICAgIHdhbnRfc2l6ZSA9IGZhbHNl OwogCi0JICAgICAgIElmIGRlYWxsb2NhdGlvbiBmdW5jdGlvbiBsb29rdXAg ZmluZHMgYm90aCBhIHVzdWFsCi0JICAgICAgIGRlYWxsb2NhdGlvbiBmdW5j dGlvbiB3aXRoIG9ubHkgYSBwb2ludGVyIHBhcmFtZXRlciBhbmQgYQotCSAg ICAgICB1c3VhbCBkZWFsbG9jYXRpb24gZnVuY3Rpb24gd2l0aCBib3RoIGEg cG9pbnRlciBwYXJhbWV0ZXIKLQkgICAgICAgYW5kIGEgc2l6ZSBwYXJhbWV0 ZXIsIHRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgaXMgc2VsZWN0ZWQKLQkg ICAgICAgYXMgZm9sbG93czoKKwkgICAgLyogLS0gSWYgdGhlIHR5cGUgaXMg Y29tcGxldGUgYW5kIGlmLCBmb3IgdGhlIHNlY29uZCBhbHRlcm5hdGl2ZQor CSAgICAgICAoZGVsZXRlIGFycmF5KSBvbmx5LCB0aGUgb3BlcmFuZCBpcyBh IHBvaW50ZXIgdG8gYSBjbGFzcyB0eXBlCisJICAgICAgIHdpdGggYSBub24t dHJpdmlhbCBkZXN0cnVjdG9yIG9yIGEgKHBvc3NpYmx5IG11bHRpLWRpbWVu c2lvbmFsKQorCSAgICAgICBhcnJheSB0aGVyZW9mLCB0aGUgZnVuY3Rpb24g d2l0aCBhIHBhcmFtZXRlciBvZiB0eXBlIHN0ZDo6c2l6ZV90CisJICAgICAg IGlzIHNlbGVjdGVkLgogCi0JICAgICAgICogSWYgdGhlIHR5cGUgaXMgY29t cGxldGUgYW5kIGlmLCBmb3IgdGhlIHNlY29uZCBhbHRlcm5hdGl2ZQotCSAg ICAgICAoZGVsZXRlIGFycmF5KSBvbmx5LCB0aGUgb3BlcmFuZCBpcyBhIHBv aW50ZXIgdG8gYSBjbGFzcwotCSAgICAgICB0eXBlIHdpdGggYSBub24tdHJp dmlhbCBkZXN0cnVjdG9yIG9yIGEgKHBvc3NpYmx5Ci0JICAgICAgIG11bHRp LWRpbWVuc2lvbmFsKSBhcnJheSB0aGVyZW9mLCB0aGUgZnVuY3Rpb24gd2l0 aCB0d28KLQkgICAgICAgcGFyYW1ldGVycyBpcyBzZWxlY3RlZC4KLQotCSAg ICAgICAqIE90aGVyd2lzZSwgaXQgaXMgdW5zcGVjaWZpZWQgd2hpY2ggb2Yg dGhlIHR3byBkZWFsbG9jYXRpb24KLQkgICAgICAgZnVuY3Rpb25zIGlzIHNl bGVjdGVkLiAqLworCSAgICAgICAtLSBPdGhlcndpc2UsIGl0IGlzIHVuc3Bl Y2lmaWVkIHdoZXRoZXIgYSBkZWFsbG9jYXRpb24gZnVuY3Rpb24KKwkgICAg ICAgd2l0aCBhIHBhcmFtZXRlciBvZiB0eXBlIHN0ZDo6c2l6ZV90IGlzIHNl bGVjdGVkLiAgKi8KIAkgICAgZWxzZQogCSAgICAgIHsKLQkJYm9vbCB3YW50 X3NpemUgPSBDT01QTEVURV9UWVBFX1AgKHR5cGUpOworCQl3YW50X3NpemUg PSBDT01QTEVURV9UWVBFX1AgKHR5cGUpOwogCQlpZiAoY29kZSA9PSBWRUNf REVMRVRFX0VYUFIKIAkJICAgICYmICFUWVBFX1ZFQ19ORVdfVVNFU19DT09L SUUgKHR5cGUpKQogCQkgIC8qIFdlIG5lZWQgYSBjb29raWUgdG8gZGV0ZXJt aW5lIHRoZSBhcnJheSBzaXplLiAgKi8KIAkJICB3YW50X3NpemUgPSBmYWxz ZTsKLQkJYm9vbCBoYXZlX3NpemUgPSAoRlVOQ1RJT05fQVJHX0NIQUlOIChm bikgIT0gdm9pZF9saXN0X25vZGUpOwotCQlpZiAod2FudF9zaXplID09IGhh dmVfc2l6ZSkKLQkJICBicmVhazsKIAkgICAgICB9CisJICAgIGJvb2wgZm5f c2l6ZSA9IHNlY29uZF9wYXJtX2lzX3NpemVfdCAoZm4pOworCSAgICBib29s IGVsdF9zaXplID0gc2Vjb25kX3Bhcm1faXNfc2l6ZV90IChlbHQpOworCSAg ICBnY2NfYXNzZXJ0IChmbl9zaXplICE9IGVsdF9zaXplKTsKKwkgICAgaWYg KHdhbnRfc2l6ZSA9PSBlbHRfc2l6ZSkKKwkgICAgICBmbiA9IGVsdDsKIAkg IH0KICAgICAgIH0KIApAQCAtNjIwMCw4ICs2Mjc3LDEzIEBAIGJ1aWxkX29w X2RlbGV0ZV9jYWxsIChlbnVtIHRyZWVfY29kZSBjb2RlLCB0cmVlIGFkZHIs IHRyZWUgc2l6ZSwKIAkgIHRyZWUgcmV0OwogCSAgdmVjPHRyZWUsIHZhX2dj PiAqYXJncyA9IG1ha2VfdHJlZV92ZWN0b3IgKCk7CiAJICBhcmdzLT5xdWlj a19wdXNoIChhZGRyKTsKLQkgIGlmIChGVU5DVElPTl9BUkdfQ0hBSU4gKGZu KSAhPSB2b2lkX2xpc3Rfbm9kZSkKKwkgIGlmIChzZWNvbmRfcGFybV9pc19z aXplX3QgKGZuKSkKIAkgICAgYXJncy0+cXVpY2tfcHVzaCAoc2l6ZSk7CisJ ICBpZiAoYWxpZ25lZF9kZWFsbG9jYXRpb25fZm5fcCAoZm4pKQorCSAgICB7 CisJICAgICAgdHJlZSBhbCA9IGJ1aWxkX2ludF9jc3QgKGFsaWduX3R5cGVf bm9kZSwgVFlQRV9BTElHTl9VTklUICh0eXBlKSk7CisJICAgICAgYXJncy0+ cXVpY2tfcHVzaCAoYWwpOworCSAgICB9CiAJICByZXQgPSBjcF9idWlsZF9m dW5jdGlvbl9jYWxsX3ZlYyAoZm4sICZhcmdzLCBjb21wbGFpbik7CiAJICBy ZWxlYXNlX3RyZWVfdmVjdG9yIChhcmdzKTsKIAkgIHJldHVybiByZXQ7CmRp ZmYgLS1naXQgYS9nY2MvY3AvY3AtdHJlZS5oIGIvZ2NjL2NwL2NwLXRyZWUu aAppbmRleCA1YmNiOThiLi5kNGJmYjI2IDEwMDY0NAotLS0gYS9nY2MvY3Av Y3AtdHJlZS5oCisrKyBiL2djYy9jcC9jcC10cmVlLmgKQEAgLTExNDcsNiAr MTE0Nyw4IEBAIGVudW0gY3BfdHJlZV9pbmRleAogICAgIENQVElfTlVMTFBU UiwKICAgICBDUFRJX05VTExQVFJfVFlQRSwKIAorICAgIENQVElfQUxJR05f VFlQRSwKKwogICAgIENQVElfTUFYCiB9OwogCkBAIC0xMTgyLDYgKzExODQs OCBAQCBleHRlcm4gR1RZKCgpKSB0cmVlIGNwX2dsb2JhbF90cmVlc1tDUFRJ X01BWF07CiAjZGVmaW5lIGN1cnJlbnRfYWdncgkJCWNwX2dsb2JhbF90cmVl c1tDUFRJX0FHR1JfVEFHXQogI2RlZmluZSBudWxscHRyX25vZGUJCQljcF9n bG9iYWxfdHJlZXNbQ1BUSV9OVUxMUFRSXQogI2RlZmluZSBudWxscHRyX3R5 cGVfbm9kZQkJY3BfZ2xvYmFsX3RyZWVzW0NQVElfTlVMTFBUUl9UWVBFXQor Lyogc3RkOjphbGlnbl92YWxfdCAqLworI2RlZmluZSBhbGlnbl90eXBlX25v ZGUJCQljcF9nbG9iYWxfdHJlZXNbQ1BUSV9BTElHTl9UWVBFXQogCiAvKiBX ZSBjYWNoZSB0aGVzZSB0cmVlIG5vZGVzIHNvIGFzIHRvIGNhbGwgZ2V0X2lk ZW50aWZpZXIgbGVzcwogICAgZnJlcXVlbnRseS4gICovCkBAIC01NTYxLDcg KzU1NjUsNyBAQCBleHRlcm4gdHJlZSBidWlsZF91c2VyX3R5cGVfY29udmVy c2lvbgkJKHRyZWUsIHRyZWUsIGludCwKIGV4dGVybiB0cmVlIGJ1aWxkX25l d19mdW5jdGlvbl9jYWxsCQkodHJlZSwgdmVjPHRyZWUsIHZhX2djPiAqKiwg Ym9vbCwgCiAJCQkJCQkgdHN1YnN0X2ZsYWdzX3QpOwogZXh0ZXJuIHRyZWUg YnVpbGRfb3BlcmF0b3JfbmV3X2NhbGwJCSh0cmVlLCB2ZWM8dHJlZSwgdmFf Z2M+ICoqLCB0cmVlICosCi0JCQkJCQkgdHJlZSAqLCB0cmVlLCB0cmVlICos CisJCQkJCQkgdHJlZSAqLCB0cmVlLCB0cmVlLCB0cmVlICosCiAJCQkJCQkg dHN1YnN0X2ZsYWdzX3QpOwogZXh0ZXJuIHRyZWUgYnVpbGRfbmV3X21ldGhv ZF9jYWxsCQkodHJlZSwgdHJlZSwgdmVjPHRyZWUsIHZhX2djPiAqKiwKIAkJ CQkJCSB0cmVlLCBpbnQsIHRyZWUgKiwKQEAgLTU1NzMsNyArNTU3Nyw4IEBA IGV4dGVybiB0cmVlIGJ1aWxkX25ld19vcAkJCShsb2NhdGlvbl90LCBlbnVt IHRyZWVfY29kZSwKIAkJCQkJCSB0c3Vic3RfZmxhZ3NfdCk7CiBleHRlcm4g dHJlZSBidWlsZF9vcF9jYWxsCQkJKHRyZWUsIHZlYzx0cmVlLCB2YV9nYz4g KiosCiAJCQkJCQkgdHN1YnN0X2ZsYWdzX3QpOwotZXh0ZXJuIGJvb2wgbm9u X3BsYWNlbWVudF9kZWFsbG9jYXRpb25fZm5fcAkodHJlZSk7CitleHRlcm4g Ym9vbCBhbGlnbmVkX2FsbG9jYXRpb25fZm5fcAkJKHRyZWUpOworZXh0ZXJu IGJvb2wgdXN1YWxfZGVhbGxvY2F0aW9uX2ZuX3AJKHRyZWUpOwogZXh0ZXJu IHRyZWUgYnVpbGRfb3BfZGVsZXRlX2NhbGwJCShlbnVtIHRyZWVfY29kZSwg dHJlZSwgdHJlZSwKIAkJCQkJCSBib29sLCB0cmVlLCB0cmVlLAogCQkJCQkJ IHRzdWJzdF9mbGFnc190KTsKQEAgLTU5NjYsNiArNTk3MSw3IEBAIGV4dGVy biB0cmVlIGdldF9uc2RtaQkJCQkodHJlZSwgYm9vbCk7CiBleHRlcm4gdHJl ZSBidWlsZF9vZmZzZXRfcmVmCQkJKHRyZWUsIHRyZWUsIGJvb2wsCiAJCQkJ CQkgdHN1YnN0X2ZsYWdzX3QpOwogZXh0ZXJuIHRyZWUgdGhyb3dfYmFkX2Fy cmF5X25ld19sZW5ndGgJCSh2b2lkKTsKK2V4dGVybiBib29sIHR5cGVfaGFz X25ld19leHRlbmRlZF9hbGlnbm1lbnQJKHRyZWUpOwogZXh0ZXJuIHRyZWUg YnVpbGRfbmV3CQkJCSh2ZWM8dHJlZSwgdmFfZ2M+ICoqLCB0cmVlLCB0cmVl LAogCQkJCQkJIHZlYzx0cmVlLCB2YV9nYz4gKiosIGludCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c3Vi c3RfZmxhZ3NfdCk7CkBAIC02NTI4LDYgKzY1MzQsNyBAQCBleHRlcm4gdHJl ZSBidWlsZF9taW5fbnRfbG9jCQkJKGxvY2F0aW9uX3QsIGVudW0gdHJlZV9j b2RlLAogZXh0ZXJuIHRyZWUgYnVpbGRfbWluX25vbl9kZXAJCQkoZW51bSB0 cmVlX2NvZGUsIHRyZWUsIC4uLik7CiBleHRlcm4gdHJlZSBidWlsZF9taW5f bm9uX2RlcF9vcF9vdmVybG9hZAkoZW51bSB0cmVlX2NvZGUsIHRyZWUsIHRy ZWUsIC4uLik7CiBleHRlcm4gdHJlZSBidWlsZF9taW5fbm9uX2RlcF9jYWxs X3ZlYwkJKHRyZWUsIHRyZWUsIHZlYzx0cmVlLCB2YV9nYz4gKik7CitleHRl cm4gdmVjPHRyZWUsIHZhX2djPiogdmVjX2NvcHlfYW5kX2luc2VydCAgICAo dmVjPHRyZWUsIHZhX2djPiosIHRyZWUsIHVuc2lnbmVkKTsKIGV4dGVybiB0 cmVlIGJ1aWxkX2NwbHVzX25ldwkJCSh0cmVlLCB0cmVlLCB0c3Vic3RfZmxh Z3NfdCk7CiBleHRlcm4gdHJlZSBidWlsZF9hZ2dyX2luaXRfZXhwcgkJKHRy ZWUsIHRyZWUpOwogZXh0ZXJuIHRyZWUgZ2V0X3RhcmdldF9leHByCQkJKHRy ZWUpOwpkaWZmIC0tZ2l0IGEvZ2NjL2NwL2RlY2wuYyBiL2djYy9jcC9kZWNs LmMKaW5kZXggNDNjZjNkZi4uOWQ5MTM4NyAxMDA2NDQKLS0tIGEvZ2NjL2Nw L2RlY2wuYworKysgYi9nY2MvY3AvZGVjbC5jCkBAIC00MTMyLDYgKzQxMzIs MTcgQEAgY3h4X2luaXRfZGVjbF9wcm9jZXNzaW5nICh2b2lkKQogICAvKiBO b3csIEMrKy4gICovCiAgIGN1cnJlbnRfbGFuZ19uYW1lID0gbGFuZ19uYW1l X2NwbHVzcGx1czsKIAorICBpZiAoYWxpZ25lZF9uZXdfdGhyZXNoaG9sZCA+ IDEKKyAgICAgICYmIGV4YWN0X2xvZzIgKGFsaWduZWRfbmV3X3RocmVzaGhv bGQpID09IC0xKQorICAgIHsKKyAgICAgIGVycm9yICgiLWZhbGlnbmVkLW5l dz0lZCBpcyBub3QgYSBwb3dlciBvZiB0d28iLCBhbGlnbmVkX25ld190aHJl c2hob2xkKTsKKyAgICAgIGFsaWduZWRfbmV3X3RocmVzaGhvbGQgPSAxOwor ICAgIH0KKyAgaWYgKGFsaWduZWRfbmV3X3RocmVzaGhvbGQgPT0gLTEpCisg ICAgYWxpZ25lZF9uZXdfdGhyZXNoaG9sZCA9IChjeHhfZGlhbGVjdCA+PSBj eHgxeikgPyAxIDogMDsKKyAgaWYgKGFsaWduZWRfbmV3X3RocmVzaGhvbGQg PT0gMSkKKyAgICBhbGlnbmVkX25ld190aHJlc2hob2xkID0gbWF4X2FsaWdu X3RfYWxpZ24gKCkgLyBCSVRTX1BFUl9VTklUOworCiAgIHsKICAgICB0cmVl IG5ld2F0dHJzLCBleHR2aXNhdHRyOwogICAgIHRyZWUgbmV3dHlwZSwgZGVs dHlwZTsKQEAgLTQxOTksNiArNDIxMCw0NyBAQCBjeHhfaW5pdF9kZWNsX3By b2Nlc3NpbmcgKHZvaWQpCiAJcHVzaF9jcF9saWJyYXJ5X2ZuIChWRUNfREVM RVRFX0VYUFIsIGRlbHR5cGUsIEVDRl9OT1RIUk9XKTsKICAgICAgIH0KIAor ICAgIGlmIChhbGlnbmVkX25ld190aHJlc2hob2xkKQorICAgICAgeworCXB1 c2hfbmFtZXNwYWNlIChzdGRfaWRlbnRpZmllcik7CisJdHJlZSBhbGlnbl9p ZCA9IGdldF9pZGVudGlmaWVyICgiYWxpZ25fdmFsX3QiKTsKKwlhbGlnbl90 eXBlX25vZGUgPSBzdGFydF9lbnVtIChhbGlnbl9pZCwgTlVMTF9UUkVFLCBz aXplX3R5cGVfbm9kZSwKKwkJCQkgICAgICBOVUxMX1RSRUUsIC8qc2NvcGVk Ki90cnVlLCBOVUxMKTsKKwlwb3BfbmFtZXNwYWNlICgpOworCisJLyogb3Bl cmF0b3IgbmV3IChzaXplX3QsIGFsaWduX3ZhbF90KTsgKi8KKwluZXd0eXBl ID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChwdHJfdHlwZV9ub2RlLCBz aXplX3R5cGVfbm9kZSwKKwkJCQkJICAgIGFsaWduX3R5cGVfbm9kZSwgTlVM TF9UUkVFKTsKKwluZXd0eXBlID0gY3BfYnVpbGRfdHlwZV9hdHRyaWJ1dGVf dmFyaWFudCAobmV3dHlwZSwgbmV3YXR0cnMpOworCW5ld3R5cGUgPSBidWls ZF9leGNlcHRpb25fdmFyaWFudCAobmV3dHlwZSwgbmV3X2VoX3NwZWMpOwor CW9wbmV3ID0gcHVzaF9jcF9saWJyYXJ5X2ZuIChORVdfRVhQUiwgbmV3dHlw ZSwgMCk7CisJREVDTF9JU19NQUxMT0MgKG9wbmV3KSA9IDE7CisJREVDTF9J U19PUEVSQVRPUl9ORVcgKG9wbmV3KSA9IDE7CisJb3BuZXcgPSBwdXNoX2Nw X2xpYnJhcnlfZm4gKFZFQ19ORVdfRVhQUiwgbmV3dHlwZSwgMCk7CisJREVD TF9JU19NQUxMT0MgKG9wbmV3KSA9IDE7CisJREVDTF9JU19PUEVSQVRPUl9O RVcgKG9wbmV3KSA9IDE7CisKKwkvKiBvcGVyYXRvciBkZWxldGUgKHZvaWQg KiwgYWxpZ25fdmFsX3QpOyAqLworCWRlbHR5cGUgPSBidWlsZF9mdW5jdGlv bl90eXBlX2xpc3QgKHZvaWRfdHlwZV9ub2RlLCBwdHJfdHlwZV9ub2RlLAor CQkJCQkgICAgYWxpZ25fdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworCWRlbHR5 cGUgPSBjcF9idWlsZF90eXBlX2F0dHJpYnV0ZV92YXJpYW50IChkZWx0eXBl LCBleHR2aXNhdHRyKTsKKwlkZWx0eXBlID0gYnVpbGRfZXhjZXB0aW9uX3Zh cmlhbnQgKGRlbHR5cGUsIGVtcHR5X2V4Y2VwdF9zcGVjKTsKKwlwdXNoX2Nw X2xpYnJhcnlfZm4gKERFTEVURV9FWFBSLCBkZWx0eXBlLCBFQ0ZfTk9USFJP Vyk7CisJcHVzaF9jcF9saWJyYXJ5X2ZuIChWRUNfREVMRVRFX0VYUFIsIGRl bHR5cGUsIEVDRl9OT1RIUk9XKTsKKworCWlmIChmbGFnX3NpemVkX2RlYWxs b2NhdGlvbikKKwkgIHsKKwkgICAgLyogb3BlcmF0b3IgZGVsZXRlICh2b2lk ICosIHNpemVfdCwgYWxpZ25fdmFsX3QpOyAqLworCSAgICBkZWx0eXBlID0g YnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0ICh2b2lkX3R5cGVfbm9kZSwgcHRy X3R5cGVfbm9kZSwKKwkJCQkJCXNpemVfdHlwZV9ub2RlLCBhbGlnbl90eXBl X25vZGUsCisJCQkJCQlOVUxMX1RSRUUpOworCSAgICBkZWx0eXBlID0gY3Bf YnVpbGRfdHlwZV9hdHRyaWJ1dGVfdmFyaWFudCAoZGVsdHlwZSwgZXh0dmlz YXR0cik7CisJICAgIGRlbHR5cGUgPSBidWlsZF9leGNlcHRpb25fdmFyaWFu dCAoZGVsdHlwZSwgZW1wdHlfZXhjZXB0X3NwZWMpOworCSAgICBwdXNoX2Nw X2xpYnJhcnlfZm4gKERFTEVURV9FWFBSLCBkZWx0eXBlLCBFQ0ZfTk9USFJP Vyk7CisJICAgIHB1c2hfY3BfbGlicmFyeV9mbiAoVkVDX0RFTEVURV9FWFBS LCBkZWx0eXBlLCBFQ0ZfTk9USFJPVyk7CisJICB9CisgICAgICB9CisKICAg ICBudWxscHRyX3R5cGVfbm9kZSA9IG1ha2Vfbm9kZSAoTlVMTFBUUl9UWVBF KTsKICAgICBUWVBFX1NJWkUgKG51bGxwdHJfdHlwZV9ub2RlKSA9IGJpdHNp emVfaW50IChHRVRfTU9ERV9CSVRTSVpFIChwdHJfbW9kZSkpOwogICAgIFRZ UEVfU0laRV9VTklUIChudWxscHRyX3R5cGVfbm9kZSkgPSBzaXplX2ludCAo R0VUX01PREVfU0laRSAocHRyX21vZGUpKTsKZGlmZiAtLWdpdCBhL2djYy9j cC9kZWNsMi5jIGIvZ2NjL2NwL2RlY2wyLmMKaW5kZXggMmJhNWZmYi4uYTMy MGY5MiAxMDA2NDQKLS0tIGEvZ2NjL2NwL2RlY2wyLmMKKysrIGIvZ2NjL2Nw L2RlY2wyLmMKQEAgLTQ0ODgsNyArNDQ4OCw3IEBAIG1heWJlX3dhcm5fc2l6 ZWRfZGVsZXRlIChlbnVtIHRyZWVfY29kZSBjb2RlKQogICAgIHsKICAgICAg IHRyZWUgZm4gPSBPVkxfQ1VSUkVOVCAob3ZsKTsKICAgICAgIC8qIFdlJ3Jl IG9ubHkgaW50ZXJlc3RlZCBpbiB1c3VhbCBkZWFsbG9jYXRpb24gZnVuY3Rp b25zLiAgKi8KLSAgICAgIGlmICghbm9uX3BsYWNlbWVudF9kZWFsbG9jYXRp b25fZm5fcCAoZm4pKQorICAgICAgaWYgKCF1c3VhbF9kZWFsbG9jYXRpb25f Zm5fcCAoZm4pKQogCWNvbnRpbnVlOwogICAgICAgaWYgKEZVTkNUSU9OX0FS R19DSEFJTiAoZm4pID09IHZvaWRfbGlzdF9ub2RlKQogCXVuc2l6ZWQgPSBm bjsKZGlmZiAtLWdpdCBhL2djYy9jcC9pbml0LmMgYi9nY2MvY3AvaW5pdC5j CmluZGV4IDFhNTc2NmEuLjViYjdmMjkgMTAwNjQ0Ci0tLSBhL2djYy9jcC9p bml0LmMKKysrIGIvZ2NjL2NwL2luaXQuYwpAQCAtMjU2OSw2ICsyNTY5LDE1 IEBAIHdhcm5fcGxhY2VtZW50X25ld190b29fc21hbGwgKHRyZWUgdHlwZSwg dHJlZSBuZWx0cywgdHJlZSBzaXplLCB0cmVlIG9wZXIpCiAgICAgfQogfQog CisvKiBUcnVlIGlmIGFsaWdub2YoVCkgPiBfX1NURENQUF9ERUZBVUxUX05F V19BTElHTk1FTlRfXy4gICovCisKK2Jvb2wKK3R5cGVfaGFzX25ld19leHRl bmRlZF9hbGlnbm1lbnQgKHRyZWUgdCkKK3sKKyAgcmV0dXJuIChhbGlnbmVk X25ld190aHJlc2hob2xkCisJICAmJiBUWVBFX0FMSUdOX1VOSVQgKHQpID4g KHVuc2lnbmVkKWFsaWduZWRfbmV3X3RocmVzaGhvbGQpOworfQorCiAvKiBH ZW5lcmF0ZSBjb2RlIGZvciBhIG5ldy1leHByZXNzaW9uLCBpbmNsdWRpbmcg Y2FsbGluZyB0aGUgIm9wZXJhdG9yCiAgICBuZXciIGZ1bmN0aW9uLCBpbml0 aWFsaXppbmcgdGhlIG9iamVjdCwgYW5kLCBpZiBhbiBleGNlcHRpb24gb2Nj dXJzCiAgICBkdXJpbmcgY29uc3RydWN0aW9uLCBjbGVhbmluZyB1cC4gIFRo ZSBhcmd1bWVudHMgYXJlIGFzIGZvcgpAQCAtMjg0MCw2ICsyODQ5LDEwIEBA IGJ1aWxkX25ld18xICh2ZWM8dHJlZSwgdmFfZ2M+ICoqcGxhY2VtZW50LCB0 cmVlIHR5cGUsIHRyZWUgbmVsdHMsCiAJfQogICAgIH0KIAorICB0cmVlIGFs aWduX2FyZyA9IE5VTExfVFJFRTsKKyAgaWYgKHR5cGVfaGFzX25ld19leHRl bmRlZF9hbGlnbm1lbnQgKGVsdF90eXBlKSkKKyAgICBhbGlnbl9hcmcgPSBi dWlsZF9pbnRfY3N0IChhbGlnbl90eXBlX25vZGUsIFRZUEVfQUxJR05fVU5J VCAoZWx0X3R5cGUpKTsKKwogICBhbGxvY19mbiA9IE5VTExfVFJFRTsKIAog ICAvKiBJZiBQTEFDRU1FTlQgaXMgYSBzaW5nbGUgc2ltcGxlIHBvaW50ZXIg dHlwZSBub3QgcGFzc2VkIGJ5CkBAIC0yOTU0LDEyICsyOTY3LDI4IEBAIGJ1 aWxkX25ld18xICh2ZWM8dHJlZSwgdmFfZ2M+ICoqcGxhY2VtZW50LCB0cmVl IHR5cGUsIHRyZWUgbmVsdHMsCiAgICAgICAgICAgICAgICAgfQogCSAgICAg IHJldHVybiBlcnJvcl9tYXJrX25vZGU7CiAJICAgIH0KLQkgIGFsbG9jX2Nh bGwgPSBidWlsZF9uZXdfbWV0aG9kX2NhbGwgKGJ1aWxkX2R1bW15X29iamVj dCAoZWx0X3R5cGUpLAotCQkJCQkgICAgICBmbnMsIHBsYWNlbWVudCwKLQkJ CQkJICAgICAgLypjb252ZXJzaW9uX3BhdGg9Ki9OVUxMX1RSRUUsCi0JCQkJ CSAgICAgIExPT0tVUF9OT1JNQUwsCi0JCQkJCSAgICAgICZhbGxvY19mbiwK LQkJCQkJICAgICAgY29tcGxhaW4pOworCSAgdHJlZSBkdW1teSA9IGJ1aWxk X2R1bW15X29iamVjdCAoZWx0X3R5cGUpOworCSAgYWxsb2NfY2FsbCA9IE5V TExfVFJFRTsKKwkgIGlmIChhbGlnbl9hcmcpCisJICAgIHsKKwkgICAgICB2 ZWM8dHJlZSwgdmFfZ2M+ICphbGlnbl9hcmdzCisJCT0gdmVjX2NvcHlfYW5k X2luc2VydCAoKnBsYWNlbWVudCwgYWxpZ25fYXJnLCAxKTsKKwkgICAgICBh bGxvY19jYWxsCisJCT0gYnVpbGRfbmV3X21ldGhvZF9jYWxsIChkdW1teSwg Zm5zLCAmYWxpZ25fYXJncywKKwkJCQkJIC8qY29udmVyc2lvbl9wYXRoPSov TlVMTF9UUkVFLAorCQkJCQkgTE9PS1VQX05PUk1BTCwgJmFsbG9jX2ZuLCB0 Zl9ub25lKTsKKwkgICAgICAvKiBJZiBubyBtYXRjaGluZyBmdW5jdGlvbiBp cyBmb3VuZCBhbmQgdGhlIGFsbG9jYXRlZCBvYmplY3QgdHlwZQorCQkgaGFz IG5ldy1leHRlbmRlZCBhbGlnbm1lbnQsIHRoZSBhbGlnbm1lbnQgYXJndW1l bnQgaXMgcmVtb3ZlZAorCQkgZnJvbSB0aGUgYXJndW1lbnQgbGlzdCwgYW5k IG92ZXJsb2FkIHJlc29sdXRpb24gaXMgcGVyZm9ybWVkCisJCSBhZ2Fpbi4g ICovCisJICAgICAgaWYgKGFsbG9jX2NhbGwgPT0gZXJyb3JfbWFya19ub2Rl KQorCQlhbGxvY19jYWxsID0gTlVMTF9UUkVFOworCSAgICB9CisJICBpZiAo IWFsbG9jX2NhbGwpCisJICAgIGFsbG9jX2NhbGwgPSBidWlsZF9uZXdfbWV0 aG9kX2NhbGwgKGR1bW15LCBmbnMsIHBsYWNlbWVudCwKKwkJCQkJCS8qY29u dmVyc2lvbl9wYXRoPSovTlVMTF9UUkVFLAorCQkJCQkJTE9PS1VQX05PUk1B TCwKKwkJCQkJCSZhbGxvY19mbiwgY29tcGxhaW4pOwogCX0KICAgICAgIGVs c2UKIAl7CkBAIC0yOTc2LDYgKzMwMDUsNyBAQCBidWlsZF9uZXdfMSAodmVj PHRyZWUsIHZhX2djPiAqKnBsYWNlbWVudCwgdHJlZSB0eXBlLCB0cmVlIG5l bHRzLAogCiAJICBhbGxvY19jYWxsID0gYnVpbGRfb3BlcmF0b3JfbmV3X2Nh bGwgKGZubmFtZSwgcGxhY2VtZW50LAogCQkJCQkJJnNpemUsICZjb29raWVf c2l6ZSwKKwkJCQkJCWFsaWduX2FyZywKIAkJCQkJCW91dGVyX25lbHRzX2No ZWNrLAogCQkJCQkJJmFsbG9jX2ZuLCBjb21wbGFpbik7CiAJfQpAQCAtMjk4 Niw2ICszMDE2LDIwIEBAIGJ1aWxkX25ld18xICh2ZWM8dHJlZSwgdmFfZ2M+ ICoqcGxhY2VtZW50LCB0cmVlIHR5cGUsIHRyZWUgbmVsdHMsCiAKICAgZ2Nj X2Fzc2VydCAoYWxsb2NfZm4gIT0gTlVMTF9UUkVFKTsKIAorICBpZiAod2Fy bl9hbGlnbmVkX25ldworICAgICAgJiYgVFlQRV9BTElHTiAoZWx0X3R5cGUp ID4gbWF4X2FsaWduX3RfYWxpZ24gKCkKKyAgICAgICYmICh3YXJuX2FsaWdu ZWRfbmV3ID4gMQorCSAgfHwgQ1BfREVDTF9DT05URVhUIChhbGxvY19mbikg PT0gZ2xvYmFsX25hbWVzcGFjZSkKKyAgICAgICYmICFhbGlnbmVkX2FsbG9j YXRpb25fZm5fcCAoYWxsb2NfZm4pKQorICAgIHsKKyAgICAgIHdhcm5pbmcg KE9QVF9XYWxpZ25lZF9uZXdfLCAiJTxuZXclPiBvZiB0eXBlICVxVCB3aXRo IGV4dGVuZGVkICIKKwkgICAgICAgImFsaWdubWVudCAlZCIsIGVsdF90eXBl LCBUWVBFX0FMSUdOX1VOSVQgKGVsdF90eXBlKSk7CisgICAgICBpbmZvcm0g KGlucHV0X2xvY2F0aW9uLCAidXNlcyAlcUQsIHdoaWNoIGRvZXMgbm90IGhh dmUgYW4gYWxpZ25tZW50ICIKKwkgICAgICAicGFyYW1ldGVyIiwgYWxsb2Nf Zm4pOworICAgICAgaW5mb3JtIChpbnB1dF9sb2NhdGlvbiwgInVzZSAlPC1m YWxpZ25lZC1uZXclPiB0byBlbmFibGUgQysrMTcgIgorCSAgICAgICJvdmVy LWFsaWduZWQgbmV3IHN1cHBvcnQiKTsKKyAgICB9CisKICAgLyogSWYgd2Ug Zm91bmQgYSBzaW1wbGUgY2FzZSBvZiBQTEFDRU1FTlRfRVhQUiBhYm92ZSwg dGhlbiBjb3B5IGl0CiAgICAgIGludG8gYSB0ZW1wb3JhcnkgdmFyaWFibGUu ICAqLwogICBpZiAoIXByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbApkaWZmIC0t Z2l0IGEvZ2NjL2NwL3RyZWUuYyBiL2djYy9jcC90cmVlLmMKaW5kZXggNmQy NTRkZC4uYmQyZThmNiAxMDA2NDQKLS0tIGEvZ2NjL2NwL3RyZWUuYworKysg Yi9nY2MvY3AvdHJlZS5jCkBAIC0yOTIwLDYgKzI5MjAsMzAgQEAgYnVpbGRf bWluX25vbl9kZXBfb3Bfb3ZlcmxvYWQgKGVudW0gdHJlZV9jb2RlIG9wLAog ICByZXR1cm4gY2FsbDsKIH0KIAorLyogUmV0dXJuIGEgbmV3IHRyZWUgdmVj IGNvcGllZCBmcm9tIFZFQywgd2l0aCBFTFQgaW5zZXJ0ZWQgYXQgaW5kZXgg SURYLiAgKi8KKwordmVjPHRyZWUsIHZhX2djPiAqCit2ZWNfY29weV9hbmRf aW5zZXJ0ICh2ZWM8dHJlZSwgdmFfZ2M+ICpvbGRfdmVjLCB0cmVlIGVsdCwg dW5zaWduZWQgaWR4KQoreworICB1bnNpZ25lZCBsZW4gPSB2ZWNfc2FmZV9s ZW5ndGggKG9sZF92ZWMpOworICBnY2NfYXNzZXJ0IChpZHggPD0gbGVuKTsK KworICB2ZWM8dHJlZSwgdmFfZ2M+ICpuZXdfdmVjID0gTlVMTDsKKyAgdmVj X2FsbG9jIChuZXdfdmVjLCBsZW4gKyAxKTsKKworICB1bnNpZ25lZCBpOwor ICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpCisgICAgeworICAgICAgaWYg KGkgPT0gaWR4KQorCW5ld192ZWMtPnF1aWNrX3B1c2ggKGVsdCk7CisgICAg ICBuZXdfdmVjLT5xdWlja19wdXNoICgoKm9sZF92ZWMpW2ldKTsKKyAgICB9 CisgIGlmIChpID09IGlkeCkKKyAgICBuZXdfdmVjLT5xdWlja19wdXNoIChl bHQpOworCisgIHJldHVybiBuZXdfdmVjOworfQorCiB0cmVlCiBnZXRfdHlw ZV9kZWNsICh0cmVlIHQpCiB7CmRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9r ZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQppbmRleCAyMGJlOWI3Li5i MmVhZWE3IDEwMDY0NAotLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCisrKyBi L2djYy9kb2MvaW52b2tlLnRleGkKQEAgLTE5MCw3ICsxOTAsNyBAQCBpbiB0 aGUgZm9sbG93aW5nIHNlY3Rpb25zLgogQGl0ZW0gQysrIExhbmd1YWdlIE9w dGlvbnMKIEB4cmVme0MrKyBEaWFsZWN0IE9wdGlvbnMsLE9wdGlvbnMgQ29u dHJvbGxpbmcgQysrIERpYWxlY3R9LgogQGdjY29wdGxpc3R7LWZhYmktdmVy c2lvbj1AdmFye259ICAtZm5vLWFjY2Vzcy1jb250cm9sIEBnb2wKLS1mYXJn cy1pbi1vcmRlcj1AdmFye259IC1mY2hlY2stbmV3IEBnb2wKKy1mYWxpZ25l ZC1uZXc9QHZhcntufSAtZmFyZ3MtaW4tb3JkZXI9QHZhcntufSAtZmNoZWNr LW5ldyBAZ29sCiAtZmNvbnN0ZXhwci1kZXB0aD1AdmFye259IC1mY29uc3Rl eHByLWxvb3AtbGltaXQ9QHZhcntufSBAZ29sCiAtZmZyaWVuZC1pbmplY3Rp b24gQGdvbAogLWZuby1lbGlkZS1jb25zdHJ1Y3RvcnMgQGdvbApAQCAtMjIz Nyw2ICsyMjM3LDE1IEBAIG9wdGlvbiBpcyB1c2VkIGZvciB0aGUgd2Fybmlu Zy4KIFR1cm4gb2ZmIGFsbCBhY2Nlc3MgY2hlY2tpbmcuICBUaGlzIHN3aXRj aCBpcyBtYWlubHkgdXNlZnVsIGZvciB3b3JraW5nCiBhcm91bmQgYnVncyBp biB0aGUgYWNjZXNzIGNvbnRyb2wgY29kZS4KIAorQGl0ZW0gLWZhbGlnbmVk LW5ldworQG9waW5kZXggZmFsaWduZWQtbmV3CitFbmFibGUgc3VwcG9ydCBm b3IgQysrMTcgQGNvZGV7bmV3fSBvZiB0eXBlcyB0aGF0IHJlcXVpcmUgbW9y ZQorYWxpZ25tZW50IHRoYW4gQGNvZGV7dm9pZCogOjpvcGVyYXRvciBuZXco c3RkOjpzaXplX3QpfSBwcm92aWRlcy4gIEEKK251bWVyaWMgYXJndW1lbnQg c3VjaCBhcyBAY29kZXstZmFsaWduZWQtbmV3PTMyfSBjYW4gYmUgdXNlZCB0 bworc3BlY2lmeSBob3cgbXVjaCBhbGlnbm1lbnQgKGluIGJ5dGVzKSBpcyBw cm92aWRlZCBieSB0aGF0IGZ1bmN0aW9uLAorYnV0IGZldyB1c2VycyB3aWxs IG5lZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgb2YKK0Bjb2Rle2FsaWdu b2Yoc3RkOjptYXhfYWxpZ25fdCl9LgorCiBAaXRlbSAtZmNoZWNrLW5ldwog QG9waW5kZXggZmNoZWNrLW5ldwogQ2hlY2sgdGhhdCB0aGUgcG9pbnRlciBy ZXR1cm5lZCBieSBAY29kZXtvcGVyYXRvciBuZXd9IGlzIG5vbi1udWxsCkBA IC01MDYyLDYgKzUwNzEsMTggQEAgZGlzYWJsZXMgdGhlIHdhcm5pbmdzIGFi b3V0IG5vbi1JU08gQGNvZGV7cHJpbnRmfSAvIEBjb2Rle3NjYW5mfSBmb3Jt YXQKIHdpZHRoIHNwZWNpZmllcnMgQGNvZGV7STMyfSwgQGNvZGV7STY0fSwg YW5kIEBjb2Rle0l9IHVzZWQgb24gV2luZG93cyB0YXJnZXRzLAogd2hpY2gg ZGVwZW5kIG9uIHRoZSBNUyBydW50aW1lLgogCitAaXRlbSAtV2FsaWduZWQt bmV3CitAb3BpbmRleCBXYWxpZ25lZC1uZXcKK0BvcGluZGV4IFduby1hbGln bmVkLW5ldworV2FybiBhYm91dCBhIG5ldy1leHByZXNzaW9uIG9mIGEgdHlw ZSB0aGF0IHJlcXVpcmVzIGdyZWF0ZXIgYWxpZ25tZW50Cit0aGFuIHRoZSBA Y29kZXthbGlnbm9mKHN0ZDo6bWF4X2FsaWduX3QpfSBidXQgdXNlcyBhbiBh bGxvY2F0aW9uCitmdW5jdGlvbiB3aXRob3V0IGFuIGV4cGxpY2l0IGFsaWdu bWVudCBwYXJhbWV0ZXIuIFRoaXMgb3B0aW9uIGlzCitlbmFibGVkIGJ5IEBv cHRpb257LVdhbGx9LgorCitOb3JtYWxseSB0aGlzIG9ubHkgd2FybnMgYWJv dXQgZ2xvYmFsIGFsbG9jYXRpb24gZnVuY3Rpb25zLCBidXQKK0BvcHRpb257 LVdhbGlnbmVkLW5ldz1hbGx9IGFsc28gd2FybnMgYWJvdXQgY2xhc3MgbWVt YmVyIGFsbG9jYXRpb24KK2Z1bmN0aW9ucy4KKwogQGl0ZW0gLVdwbGFjZW1l bnQtbmV3CiBAaXRlbXggLVdwbGFjZW1lbnQtbmV3PUB2YXJ7bn0KIEBvcGlu ZGV4IFdwbGFjZW1lbnQtbmV3CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2crKy5kZy9jcHAweC9XYXR0cmlidXRlczEuQyBiL2djYy90ZXN0c3VpdGUv ZysrLmRnL2NwcDB4L1dhdHRyaWJ1dGVzMS5DCmluZGV4IGRkOTAxMWIuLmIw YTFlODYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDB4 L1dhdHRyaWJ1dGVzMS5DCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDB4L1dhdHRyaWJ1dGVzMS5DCkBAIC01LDQgKzUsNCBAQAogI2luY2x1ZGUg PG5ldz4KIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSl2 b2lkKm9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCk7IC8vIHsgZGctd2Fybmlu ZyAidmlzaWJpbGl0eSBhdHRyaWJ1dGUgaWdub3JlZCIgfQogCi0vLyB7IGRn LW1lc3NhZ2UgInByZXZpb3VzIGRlY2xhcmF0aW9uIiAiIiB7IHRhcmdldCAq LSotKiB9IDExNiB9CisvLyB7IGRnLW1lc3NhZ2UgInByZXZpb3VzIGRlY2xh cmF0aW9uIiAiIiB7IHRhcmdldCAqLSotKiB9IDEyMCB9CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9hbGlnbmVkLW5ldzEuQyBi L2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2FsaWduZWQtbmV3MS5DCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNTI5NmYKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9h bGlnbmVkLW5ldzEuQwpAQCAtMCwwICsxLDE3IEBACisvLyB7IGRnLW9wdGlv bnMgLXN0ZD1jKysxeiB9CisvLyB7IGRnLWRvIHJ1biB9CisKKyNpZm5kZWYg X19TVERDUFBfREVGQVVMVF9ORVdfQUxJR05NRU5UX18KKyNlcnJvciBfX1NU RENQUF9ERUZBVUxUX05FV19BTElHTk1FTlRfXyBub3QgZGVmaW5lZAorI2Vu ZGlmCisKKyNpbmNsdWRlIDxjc3RkaW50PgorCitzdHJ1Y3QgYWxpZ25hcyg2 NCkgQSB7IGludCBpOyB9OworCitpbnQgbWFpbigpCit7CisgIEEgKnAgPSBu ZXcgQTsKKyAgaWYgKHN0ZDo6aW50cHRyX3QocCkgJSA2NCAhPSAwKQorICAg IF9fYnVpbHRpbl9hYm9ydCgpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvY3BwMXovYWxpZ25lZC1uZXcyLkMgYi9nY2MvdGVzdHN1 aXRlL2crKy5kZy9jcHAxei9hbGlnbmVkLW5ldzIuQwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTE1OTY5Ci0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3BwMXovYWxpZ25lZC1uZXcy LkMKQEAgLTAsMCArMSwzMSBAQAorLy8geyBkZy1vcHRpb25zIC1zdGQ9Yysr MXogfQorLy8geyBkZy1kbyBydW4gfQorCisjaW5jbHVkZSA8bmV3PgorCitz dHJ1Y3QgYWxpZ25hcyg2NCkgQSB7CisgIGludCBpOworICBBKCkgeyB0aHJv dyA0MjsgfQorfTsKK3N0cnVjdCBCIHsgaW50IGk7IH0gYjsKKwordm9pZCAq b3BlcmF0b3IgbmV3IChzdGQ6OnNpemVfdCBzLCBzdGQ6OmFsaWduX3ZhbF90 IGEsIEIgYikKK3sKKyAgcmV0dXJuIG9wZXJhdG9yIG5ldyAocywgYSk7Cit9 CisKK2Jvb2wgZGVsZXRlZCA9IGZhbHNlOwordm9pZCBvcGVyYXRvciBkZWxl dGUgKHZvaWQgKnAsIHN0ZDo6YWxpZ25fdmFsX3QsIEIpCit7CisgIGRlbGV0 ZWQgPSB0cnVlOworfQorCitpbnQgbWFpbigpCit7CisgIHRyeSB7CisgICAg QSAqcCA9IG5ldyAoYikgQTsKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Cisg IH0gY2F0Y2ggKC4uLikge30KKyAgaWYgKCFkZWxldGVkKQorICAgIF9fYnVp bHRpbl9hYm9ydCAoKTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv ZysrLmRnL2NwcDF6L2FsaWduZWQtbmV3My5DIGIvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvY3BwMXovYWxpZ25lZC1uZXczLkMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNzNlMzM0MwotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2FsaWduZWQtbmV3My5DCkBA IC0wLDAgKzEsMjMgQEAKKy8vIHsgZGctb3B0aW9ucyAtc3RkPWMrKzF6IH0K Ky8vIHsgZGctZG8gcnVuIH0KKworI2luY2x1ZGUgPG5ldz4KKworc3RydWN0 IGFsaWduYXMoNjQpIEEgeworICBpbnQgaTsKK307CisKK2Jvb2wgZGVsZXRl ZCA9IGZhbHNlOwordm9pZCBvcGVyYXRvciBkZWxldGUgKHZvaWQgKnAsIHN0 ZDo6c2l6ZV90LCBzdGQ6OmFsaWduX3ZhbF90KQoreworICBkZWxldGVkID0g dHJ1ZTsKKyAgb3BlcmF0b3IgZGVsZXRlIChwKTsKK30KKworaW50IG1haW4o KQoreworICBBICpwID0gbmV3IEE7CisgIGRlbGV0ZSBwOworICBpZiAoIWRl bGV0ZWQpCisgICAgX19idWlsdGluX2Fib3J0KCk7Cit9CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9hbGlnbmVkLW5ldzQuQyBi L2djYy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2FsaWduZWQtbmV3NC5DCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNjNhMTQKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9h bGlnbmVkLW5ldzQuQwpAQCAtMCwwICsxLDEzIEBACisvLyB7IGRnLW9wdGlv bnMgIi1zdGQ9YysrMTQgLVdhbGlnbmVkLW5ldyIgfQorCitzdHJ1Y3QgYWxp Z25hcyg2NCkgQSB7IGludCBpOyB9Oworc3RydWN0IGFsaWduYXMoNjQpIEIg eworICBpbnQgaTsKKyAgdm9pZCAqb3BlcmF0b3IgbmV3KF9fU0laRV9UWVBF X18pOworfTsKKworaW50IG1haW4oKQoreworICBBKiBhcCA9IG5ldyBBOwkJ Ly8geyBkZy13YXJuaW5nICItV2FsaWduZWQtbmV3IiB9CisgIEIqIGJwID0g bmV3IEI7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAxei9hbGlnbmVkLW5ldzRhLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9j cHAxei9hbGlnbmVkLW5ldzRhLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZWIxNzhkNAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2FsaWduZWQtbmV3NGEuQwpAQCAtMCww ICsxLDEzIEBACisvLyB7IGRnLW9wdGlvbnMgIi1zdGQ9YysrMTQgLVdhbGln bmVkLW5ldz1hbGwiIH0KKworc3RydWN0IGFsaWduYXMoNjQpIEEgeyBpbnQg aTsgfTsKK3N0cnVjdCBhbGlnbmFzKDY0KSBCIHsKKyAgaW50IGk7CisgIHZv aWQgKm9wZXJhdG9yIG5ldyhfX1NJWkVfVFlQRV9fKTsKK307CisKK2ludCBt YWluKCkKK3sKKyAgQSogYXAgPSBuZXcgQTsJCS8vIHsgZGctd2FybmluZyAi LVdhbGlnbmVkLW5ldyIgfQorICBCKiBicCA9IG5ldyBCOwkJLy8geyBkZy13 YXJuaW5nICItV2FsaWduZWQtbmV3IiB9Cit9CmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2crKy5kZy9jcHAxei9hbGlnbmVkLW5ldzUuQyBiL2djYy90 ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2FsaWduZWQtbmV3NS5DCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNTEyOWUKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9jcHAxei9hbGlnbmVk LW5ldzUuQwpAQCAtMCwwICsxLDE0IEBACisvLyB7IGRnLW9wdGlvbnMgLWZh bGlnbmVkLW5ldyB9CisvLyB7IGRnLWRvIHJ1biB9CisKKyNpbmNsdWRlIDxu ZXc+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK3N0cnVjdCBBIHsgaW50IGk7 IH07CisKK2ludCBtYWluKCkKK3sKKyAgQSogYXAgPSBuZXcgKHN0ZDo6YWxp Z25fdmFsX3QoNjQpKSBBOworICBpZiAoaW50cHRyX3QoYXApICUgNjQgIT0g MCkKKyAgICBfX2J1aWx0aW5fYWJvcnQoKTsKK30KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2ZlYXQtY3h4MXouQyBiL2djYy90 ZXN0c3VpdGUvZysrLmRnL2NwcDF6L2ZlYXQtY3h4MXouQwppbmRleCA0MWI2 MTExLi45ODI1NzJlIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2crKy5k Zy9jcHAxei9mZWF0LWN4eDF6LkMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvY3BwMXovZmVhdC1jeHgxei5DCkBAIC0zNTAsNiArMzUwLDEyIEBACiAj ICBlcnJvciAiX19jcHBfaWZfY29uc3RleHByICE9IDIwMTYwNiIKICNlbmRp ZgogCisjaWZuZGVmIF9fY3BwX2FsaWduZWRfbmV3CisjICBlcnJvciAiX19j cHBfYWxpZ25lZF9uZXciCisjZWxpZiBfX2NwcF9hbGlnbmVkX25ldyAhPSAy MDE2MDYKKyMgIGVycm9yICJfX2NwcF9hbGlnbmVkX25ldyAhPSAyMDE2MDYi CisjZW5kaWYKKwogI2lmZGVmIF9faGFzX2NwcF9hdHRyaWJ1dGUKIAogIyAg aWYgISBfX2hhc19jcHBfYXR0cmlidXRlKG1heWJlX3VudXNlZCkKZGlmZiAt LWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcuaC5pbiBiL2xpYnN0ZGMrKy12 My9jb25maWcuaC5pbgppbmRleCA1YWMyZGY0Li4yYWI2ZTBkIDEwMDY0NAot LS0gYS9saWJzdGRjKystdjMvY29uZmlnLmguaW4KKysrIGIvbGlic3RkYysr LXYzL2NvbmZpZy5oLmluCkBAIC02LDYgKzYsOSBAQAogLyogRGVmaW5lIHRv IDEgaWYgeW91IGhhdmUgdGhlIGBhY29zbCcgZnVuY3Rpb24uICovCiAjdW5k ZWYgSEFWRV9BQ09TTAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0 aGUgYGFsaWduZWRfYWxsb2MnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVf QUxJR05FRF9BTExPQworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0 aGUgYGFzaW5mJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0FTSU5GCiAK QEAgLTI4NSw2ICsyODgsOSBAQAogLyogRGVmaW5lIGlmIG1ic3RhdGVfdCBl eGlzdHMgaW4gd2NoYXIuaC4gKi8KICN1bmRlZiBIQVZFX01CU1RBVEVfVAog CisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbWFsaWduJyBm dW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01FTUFMSUdOCisKIC8qIERlZmlu ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bWVtb3J5Lmg+IGhlYWRlciBmaWxl LiAqLwogI3VuZGVmIEhBVkVfTUVNT1JZX0gKIApAQCAtMzA5LDYgKzMxNSw5 IEBACiAvKiBEZWZpbmUgaWYgcG9sbCBpcyBhdmFpbGFibGUgaW4gPHBvbGwu aD4uICovCiAjdW5kZWYgSEFWRV9QT0xMCiAKKy8qIERlZmluZSB0byAxIGlm IHlvdSBoYXZlIHRoZSBgcG9zaXhfbWVtYWxpZ24nIGZ1bmN0aW9uLiAqLwor I3VuZGVmIEhBVkVfUE9TSVhfTUVNQUxJR04KKwogLyogRGVmaW5lIHRvIDEg aWYgeW91IGhhdmUgdGhlIGBwb3dmJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBI QVZFX1BPV0YKIApAQCAtNTA1LDYgKzUxNCw5IEBACiAvKiBEZWZpbmUgdG8g MSBpZiB5b3UgaGF2ZSB0aGUgYF9hY29zbCcgZnVuY3Rpb24uICovCiAjdW5k ZWYgSEFWRV9fQUNPU0wKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg dGhlIGBfYWxpZ25lZF9tYWxsb2MnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhB VkVfX0FMSUdORURfTUFMTE9DCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBo YXZlIHRoZSBgX2FzaW5mJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX19B U0lORgogCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2FiaS9w cmUvZ251LnZlciBiL2xpYnN0ZGMrKy12My9jb25maWcvYWJpL3ByZS9nbnUu dmVyCmluZGV4IDBhYjRiYjEuLjliNWJiMjMgMTAwNjQ0Ci0tLSBhL2xpYnN0 ZGMrKy12My9jb25maWcvYWJpL3ByZS9nbnUudmVyCisrKyBiL2xpYnN0ZGMr Ky12My9jb25maWcvYWJpL3ByZS9nbnUudmVyCkBAIC0yMTk3LDYgKzIxOTcs MTggQEAgQ1hYQUJJXzEuMy4xMSB7CiAgICAgX19jeGFfaW5pdF9wcmltYXJ5 X2V4Y2VwdGlvbjsKICAgICBfWk5TdDE1X19leGNlcHRpb25fcHRyMTNleGNl cHRpb25fcHRyQzFFUHY7CiAKKyAgICAjIEMrKzE3IGFsaWduZWQgbmV3L2Rl bGV0ZQorICAgIF9abndtU3QxMWFsaWduX3ZhbF90OworICAgIF9abndtU3Qx MWFsaWduX3ZhbF90UktTdDlub3Rocm93X3Q7CisgICAgX1puYW1TdDExYWxp Z25fdmFsX3Q7CisgICAgX1puYW1TdDExYWxpZ25fdmFsX3RSS1N0OW5vdGhy b3dfdDsKKyAgICBfWmRsUHZTdDExYWxpZ25fdmFsX3Q7CisgICAgX1pkbFB2 U3QxMWFsaWduX3ZhbF90UktTdDlub3Rocm93X3Q7CisgICAgX1pkbFB2bVN0 MTFhbGlnbl92YWxfdDsKKyAgICBfWmRhUHZTdDExYWxpZ25fdmFsX3Q7Cisg ICAgX1pkYVB2U3QxMWFsaWduX3ZhbF90UktTdDlub3Rocm93X3Q7CisgICAg X1pkYVB2bVN0MTFhbGlnbl92YWxfdDsKKwogfSBDWFhBQklfMS4zLjEwOwog CiAjIFN5bWJvbHMgaW4gdGhlIHN1cHBvcnQgbGlicmFyeSAobGlic3VwYysr KSBzdXBwb3J0aW5nIHRyYW5zYWN0aW9uYWwgbWVtb3J5LgpkaWZmIC0tZ2l0 IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25m aWd1cmUKaW5kZXggYmZjYjQ2NS4uNjMzMmM0ZCAxMDA3NTUKLS0tIGEvbGli c3RkYysrLXYzL2NvbmZpZ3VyZQorKysgYi9saWJzdGRjKystdjMvY29uZmln dXJlCkBAIC0yNzk3Miw2ICsyNzk3MiwxOSBAQCBfQUNFT0YKIGZpCiBkb25l CiAKKyAgZm9yIGFjX2Z1bmMgaW4gYWxpZ25lZF9hbGxvYyBwb3NpeF9tZW1h bGlnbiBtZW1hbGlnbiBfYWxpZ25lZF9tYWxsb2MKK2RvIDoKKyAgYXNfYWNf dmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJf c2hgCithY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIg IiRhc19hY192YXIiCitldmFsIGFzX3ZhbD1cJCRhc19hY192YXIKKyAgIGlm IHRlc3QgIngkYXNfdmFsIiA9IHgiInllczsgdGhlbiA6CisgIGNhdCA+PmNv bmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRh Y19mdW5jIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorZG9uZQor CiAKICAgIyBGb3IgaWNvbnYgc3VwcG9ydC4KIApkaWZmIC0tZ2l0IGEvbGli c3RkYysrLXYzL2NvbmZpZ3VyZS5hYyBiL2xpYnN0ZGMrKy12My9jb25maWd1 cmUuYWMKaW5kZXggOWUxOWU5OS4uNTY1N2VjYiAxMDA2NDQKLS0tIGEvbGli c3RkYysrLXYzL2NvbmZpZ3VyZS5hYworKysgYi9saWJzdGRjKystdjMvY29u ZmlndXJlLmFjCkBAIC0yNTYsNiArMjU2LDcgQEAgaWYgJEdMSUJDWFhfSVNf TkFUSVZFOyB0aGVuCiAgIEdDQ19DSEVDS19UTFMKIAogICBBQ19DSEVDS19G VU5DUyhfX2N4YV90aHJlYWRfYXRleGl0X2ltcGwpCisgIEFDX0NIRUNLX0ZV TkNTKGFsaWduZWRfYWxsb2MgcG9zaXhfbWVtYWxpZ24gbWVtYWxpZ24gX2Fs aWduZWRfbWFsbG9jKQogCiAgICMgRm9yIGljb252IHN1cHBvcnQuCiAgIEFN X0lDT05WCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvbGlic3VwYysrL01h a2VmaWxlLmFtIGIvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9NYWtlZmlsZS5h bQppbmRleCBiYTRlYWMxLi4yZGYzMWZmIDEwMDY0NAotLS0gYS9saWJzdGRj KystdjMvbGlic3VwYysrL01ha2VmaWxlLmFtCisrKyBiL2xpYnN0ZGMrKy12 My9saWJzdXBjKysvTWFrZWZpbGUuYW0KQEAgLTg4LDYgKzg4LDE2IEBAIHNv dXJjZXMgPSBcCiAJbmV3X29wbnQuY2MgXAogCW5ld19vcHYuY2MgXAogCW5l d19vcHZudC5jYyBcCisJbmV3X29wYS5jYyBcCisJbmV3X29wYW50LmNjIFwK KwluZXdfb3B2YS5jYyBcCisJbmV3X29wdmFudC5jYyBcCisJZGVsX29wYS5j YyBcCisJZGVsX29wYW50LmNjIFwKKwlkZWxfb3BzYS5jYyBcCisJZGVsX29w dmEuY2MgXAorCWRlbF9vcHZhbnQuY2MgXAorCWRlbF9vcHZzYS5jYyBcCiAJ cGJhc2VfdHlwZV9pbmZvLmNjIFwKIAlwbWVtX3R5cGVfaW5mby5jYyBcCiAJ cG9pbnRlcl90eXBlX2luZm8uY2MgXApAQCAtMTg5LDYgKzE5OSwyOCBAQCBk ZWxfb3B2cy5sbzogZGVsX29wdnMuY2MKIGRlbF9vcHZzLm86IGRlbF9vcHZz LmNjCiAJJChDWFhDT01QSUxFKSAtc3RkPWdudSsrMTQgLVduby1zaXplZC1k ZWFsbG9jYXRpb24gLWMgJDwKIAorIyBVc2Ugc3BlY2lhbCBydWxlcyBmb3Ig dGhlIEMrKzE3IHNvdXJjZXMgc28gdGhhdCB0aGUgcHJvcGVyIGZsYWdzIGFy ZSBwYXNzZWQuCituZXdfb3BhLmxvOiBuZXdfb3BhLmNjCisJJChMVENYWENP TVBJTEUpIC1zdGQ9Z251KysxeiAtYyAkPAorbmV3X29wYW50LmxvOiBuZXdf b3BhbnQuY2MKKwkkKExUQ1hYQ09NUElMRSkgLXN0ZD1nbnUrKzF6IC1jICQ8 CituZXdfb3B2YS5sbzogbmV3X29wdmEuY2MKKwkkKExUQ1hYQ09NUElMRSkg LXN0ZD1nbnUrKzF6IC1jICQ8CituZXdfb3B2YW50LmxvOiBuZXdfb3B2YW50 LmNjCisJJChMVENYWENPTVBJTEUpIC1zdGQ9Z251KysxeiAtYyAkPAorZGVs X29wYS5sbzogZGVsX29wYS5jYworCSQoTFRDWFhDT01QSUxFKSAtc3RkPWdu dSsrMXogLWMgJDwKK2RlbF9vcGFudC5sbzogZGVsX29wYW50LmNjCisJJChM VENYWENPTVBJTEUpIC1zdGQ9Z251KysxeiAtYyAkPAorZGVsX29wc2EubG86 IGRlbF9vcHNhLmNjCisJJChMVENYWENPTVBJTEUpIC1zdGQ9Z251KysxeiAt YyAkPAorZGVsX29wdmEubG86IGRlbF9vcHZhLmNjCisJJChMVENYWENPTVBJ TEUpIC1zdGQ9Z251KysxeiAtYyAkPAorZGVsX29wdmFudC5sbzogZGVsX29w dmFudC5jYworCSQoTFRDWFhDT01QSUxFKSAtc3RkPWdudSsrMXogLWMgJDwK K2RlbF9vcHZzYS5sbzogZGVsX29wdnNhLmNjCisJJChMVENYWENPTVBJTEUp IC1zdGQ9Z251KysxeiAtYyAkPAorCiAjIEFNX0NYWEZMQUdTIG5lZWRzIHRv IGJlIGluIGVhY2ggc3ViZGlyZWN0b3J5IHNvIHRoYXQgaXQgY2FuIGJlCiAj IG1vZGlmaWVkIGluIGEgcGVyLWxpYnJhcnkgb3IgcGVyLXN1Yi1saWJyYXJ5 IHdheS4gIE5lZWQgdG8gbWFudWFsbHkKICMgc2V0IHRoaXMgb3B0aW9uIGJl Y2F1c2UgQ09ORklHX0NYWEZMQUdTIGhhcyB0byBiZSBhZnRlcgpkaWZmIC0t Z2l0IGEvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9NYWtlZmlsZS5pbiBiL2xp YnN0ZGMrKy12My9saWJzdXBjKysvTWFrZWZpbGUuaW4KaW5kZXggM2ZiOWQx Ni4uZTgyOGVkOSAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2xpYnN1cGMr Ky9NYWtlZmlsZS5pbgorKysgYi9saWJzdGRjKystdjMvbGlic3VwYysrL01h a2VmaWxlLmluCkBAIC0xMjUsOSArMTI1LDExIEBAIGFtX19vYmplY3RzXzEg PSBhcnJheV90eXBlX2luZm8ubG8gYXRleGl0X2FybS5sbyBhdGV4aXRfdGhy ZWFkLmxvIFwKIAlmdW5jdGlvbl90eXBlX2luZm8ubG8gZnVuZGFtZW50YWxf dHlwZV9pbmZvLmxvIGd1YXJkLmxvIFwKIAlndWFyZF9lcnJvci5sbyBoYXNo X2J5dGVzLmxvIG5lc3RlZF9leGNlcHRpb24ubG8gXAogCW5ld19oYW5kbGVy LmxvIG5ld19vcC5sbyBuZXdfb3BudC5sbyBuZXdfb3B2LmxvIG5ld19vcHZu dC5sbyBcCi0JcGJhc2VfdHlwZV9pbmZvLmxvIHBtZW1fdHlwZV9pbmZvLmxv IHBvaW50ZXJfdHlwZV9pbmZvLmxvIFwKLQlwdXJlLmxvIHNpX2NsYXNzX3R5 cGVfaW5mby5sbyB0aW5mby5sbyB0aW5mbzIubG8gdmVjLmxvIFwKLQl2bWlf Y2xhc3NfdHlwZV9pbmZvLmxvIHZ0ZXJtaW5hdGUubG8KKwluZXdfb3BhLmxv IG5ld19vcGFudC5sbyBuZXdfb3B2YS5sbyBuZXdfb3B2YW50LmxvIGRlbF9v cGEubG8gXAorCWRlbF9vcGFudC5sbyBkZWxfb3BzYS5sbyBkZWxfb3B2YS5s byBkZWxfb3B2YW50LmxvIFwKKwlkZWxfb3B2c2EubG8gcGJhc2VfdHlwZV9p bmZvLmxvIHBtZW1fdHlwZV9pbmZvLmxvIFwKKwlwb2ludGVyX3R5cGVfaW5m by5sbyBwdXJlLmxvIHNpX2NsYXNzX3R5cGVfaW5mby5sbyB0aW5mby5sbyBc CisJdGluZm8yLmxvIHZlYy5sbyB2bWlfY2xhc3NfdHlwZV9pbmZvLmxvIHZ0 ZXJtaW5hdGUubG8KIEBHTElCQ1hYX0hPU1RFRF9UUlVFQGFtX19vYmplY3Rz XzIgPSBjcC1kZW1hbmdsZS5sbwogQEVOQUJMRV9WVEFCTEVfVkVSSUZZX1RS VUVAQFZUVl9DWUdNSU5fRkFMU0VAYW1fX29iamVjdHNfMyA9ICBcCiBARU5B QkxFX1ZUQUJMRV9WRVJJRllfVFJVRUBAVlRWX0NZR01JTl9GQUxTRUAJdnR2 X3N0dWJzLmxvCkBAIC00NDUsNiArNDQ3LDE2IEBAIHNvdXJjZXMgPSBcCiAJ bmV3X29wbnQuY2MgXAogCW5ld19vcHYuY2MgXAogCW5ld19vcHZudC5jYyBc CisJbmV3X29wYS5jYyBcCisJbmV3X29wYW50LmNjIFwKKwluZXdfb3B2YS5j YyBcCisJbmV3X29wdmFudC5jYyBcCisJZGVsX29wYS5jYyBcCisJZGVsX29w YW50LmNjIFwKKwlkZWxfb3BzYS5jYyBcCisJZGVsX29wdmEuY2MgXAorCWRl bF9vcHZhbnQuY2MgXAorCWRlbF9vcHZzYS5jYyBcCiAJcGJhc2VfdHlwZV9p bmZvLmNjIFwKIAlwbWVtX3R5cGVfaW5mby5jYyBcCiAJcG9pbnRlcl90eXBl X2luZm8uY2MgXApAQCAtOTE2LDYgKzkyOCwyOCBAQCBkZWxfb3B2cy5sbzog ZGVsX29wdnMuY2MKIGRlbF9vcHZzLm86IGRlbF9vcHZzLmNjCiAJJChDWFhD T01QSUxFKSAtc3RkPWdudSsrMTQgLVduby1zaXplZC1kZWFsbG9jYXRpb24g LWMgJDwKIAorIyBVc2Ugc3BlY2lhbCBydWxlcyBmb3IgdGhlIEMrKzE3IHNv dXJjZXMgc28gdGhhdCB0aGUgcHJvcGVyIGZsYWdzIGFyZSBwYXNzZWQuCitu ZXdfb3BhLmxvOiBuZXdfb3BhLmNjCisJJChMVENYWENPTVBJTEUpIC1zdGQ9 Z251KysxeiAtYyAkPAorbmV3X29wYW50LmxvOiBuZXdfb3BhbnQuY2MKKwkk KExUQ1hYQ09NUElMRSkgLXN0ZD1nbnUrKzF6IC1jICQ8CituZXdfb3B2YS5s bzogbmV3X29wdmEuY2MKKwkkKExUQ1hYQ09NUElMRSkgLXN0ZD1nbnUrKzF6 IC1jICQ8CituZXdfb3B2YW50LmxvOiBuZXdfb3B2YW50LmNjCisJJChMVENY WENPTVBJTEUpIC1zdGQ9Z251KysxeiAtYyAkPAorZGVsX29wYS5sbzogZGVs X29wYS5jYworCSQoTFRDWFhDT01QSUxFKSAtc3RkPWdudSsrMXogLWMgJDwK K2RlbF9vcGFudC5sbzogZGVsX29wYW50LmNjCisJJChMVENYWENPTVBJTEUp IC1zdGQ9Z251KysxeiAtYyAkPAorZGVsX29wc2EubG86IGRlbF9vcHNhLmNj CisJJChMVENYWENPTVBJTEUpIC1zdGQ9Z251KysxeiAtYyAkPAorZGVsX29w dmEubG86IGRlbF9vcHZhLmNjCisJJChMVENYWENPTVBJTEUpIC1zdGQ9Z251 KysxeiAtYyAkPAorZGVsX29wdmFudC5sbzogZGVsX29wdmFudC5jYworCSQo TFRDWFhDT01QSUxFKSAtc3RkPWdudSsrMXogLWMgJDwKK2RlbF9vcHZzYS5s bzogZGVsX29wdnNhLmNjCisJJChMVENYWENPTVBJTEUpIC1zdGQ9Z251Kysx eiAtYyAkPAorCiBpbnN0YWxsLXN0ZEhFQURFUlM6ICQoc3RkX0hFQURFUlMp CiAJQCQoTk9STUFMX0lOU1RBTEwpCiAJJChta2luc3RhbGxkaXJzKSAkKERF U1RESVIpJChzdGRkaXIpCmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvbGli c3VwYysrL2RlbF9vcGEuY2MgYi9saWJzdGRjKystdjMvbGlic3VwYysrL2Rl bF9vcGEuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ODg5YmRiNwotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My9saWJz dXBjKysvZGVsX29wYS5jYwpAQCAtMCwwICsxLDU0IEBACisvLyBCb2lsZXJw bGF0ZSBzdXBwb3J0IHJvdXRpbmVzIGZvciAtKi0gQysrIC0qLSBkeW5hbWlj IG1lbW9yeSBtYW5hZ2VtZW50LgorCisvLyBDb3B5cmlnaHQgKEMpIDE5OTct MjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8vCisvLyBU aGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisvLworLy8gR0NDIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKy8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisvLyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQg eW91ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy8vCisvLyBH Q0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorLy8KKy8vIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVy c2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorLy8gcGVybWlz c2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4 Y2VwdGlvbiwgdmVyc2lvbgorLy8gMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworLy8gWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYW5kCisvLyBhIGNvcHkgb2YgdGhlIEdDQyBSdW50aW1lIExp YnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworLy8g c2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJl c3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisKKyNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5o PgorCisjaWYgIV9HTElCQ1hYX0hPU1RFRAorLy8gQSBmcmVlc3RhbmRpbmcg QyBydW50aW1lIG1heSBub3QgcHJvdmlkZSAiZnJlZSIgLS0gYnV0IHRoZXJl IGlzIG5vCisvLyBvdGhlciByZWFzb25hYmxlIHdheSB0byBpbXBsZW1lbnQg Im9wZXJhdG9yIGRlbGV0ZSIuCituYW1lc3BhY2Ugc3RkCit7CitfR0xJQkNY WF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgorICBleHRlcm4gIkMiIHZvaWQg ZnJlZSh2b2lkKik7CitfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX1ZFUlNJT04K K30gLy8gbmFtZXNwYWNlCisjZWxzZQorIyBpbmNsdWRlIDxjc3RkbGliPgor I2VuZGlmCisKKyNpbmNsdWRlICJuZXciCisKKy8vIFRoZSBzaXplZCBkZWxl dGVzIGFyZSBkZWZpbmVkIGluIG90aGVyIGZpbGVzLgorI3ByYWdtYSBHQ0Mg ZGlhZ25vc3RpYyBpZ25vcmVkICItV3NpemVkLWRlYWxsb2NhdGlvbiIKKwor X0dMSUJDWFhfV0VBS19ERUZJTklUSU9OIHZvaWQKK29wZXJhdG9yIGRlbGV0 ZSh2b2lkKiBwdHIsIHN0ZDo6YWxpZ25fdmFsX3QpIF9HTElCQ1hYX1VTRV9O T0VYQ0VQVAoreworI2lmICFfR0xJQkNYWF9IQVZFX0FMSUdORURfQUxMT0Mg JiYgX0dMSUJDWFhfSEFWRV9fQUxJR05FRF9NQUxMT0MKKyAgX2FsaWduZWRf ZnJlZSAocHRyKTsKKyNlbHNlCisgIHN0ZDo6ZnJlZShwdHIpOworI2VuZGlm Cit9CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvbGlic3VwYysrL2RlbF9v cGFudC5jYyBiL2xpYnN0ZGMrKy12My9saWJzdXBjKysvZGVsX29wYW50LmNj Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMTkxOWMK LS0tIC9kZXYvbnVsbAorKysgYi9saWJzdGRjKystdjMvbGlic3VwYysrL2Rl bF9vcGFudC5jYwpAQCAtMCwwICsxLDMzIEBACisvLyBCb2lsZXJwbGF0ZSBz dXBwb3J0IHJvdXRpbmVzIGZvciAtKi0gQysrIC0qLSBkeW5hbWljIG1lbW9y eSBtYW5hZ2VtZW50LgorCisvLyBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8vCisvLyBUaGlzIGZp bGUgaXMgcGFydCBvZiBHQ0MuCisvLworLy8gR0NDIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8v IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisvLyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBv cHRpb24pCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy8vCisvLyBHQ0MgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorLy8KKy8vIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAz LCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorLy8gcGVybWlzc2lvbnMg ZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlv biwgdmVyc2lvbgorLy8gMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbi4KKworLy8gWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYW5kCisvLyBhIGNvcHkgb2YgdGhlIEdDQyBSdW50aW1lIExpYnJhcnkg RXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworLy8gc2VlIHRo ZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3Rp dmVseS4gIElmIG5vdCwgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisKKyNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgorI2lu Y2x1ZGUgIm5ldyIKKworX0dMSUJDWFhfV0VBS19ERUZJTklUSU9OIHZvaWQK K29wZXJhdG9yIGRlbGV0ZSAodm9pZCAqcHRyLCBzdGQ6OmFsaWduX3ZhbF90 IGFsLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIF9HTElCQ1hYX1VTRV9OT0VY Q0VQVAoreworICA6Om9wZXJhdG9yIGRlbGV0ZSAocHRyLCBhbCk7Cit9CmRp ZmYgLS1naXQgYS9saWJzdGRjKystdjMvbGlic3VwYysrL2RlbF9vcHNhLmNj IGIvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9kZWxfb3BzYS5jYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODgwZWZlCi0tLSAvZGV2 L251bGwKKysrIGIvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9kZWxfb3BzYS5j YwpAQCAtMCwwICsxLDMzIEBACisvLyBCb2lsZXJwbGF0ZSBzdXBwb3J0IHJv dXRpbmVzIGZvciAtKi0gQysrIC0qLSBkeW5hbWljIG1lbW9yeSBtYW5hZ2Vt ZW50LgorCisvLyBDb3B5cmlnaHQgKEMpIDE5OTctMjAxNiBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgcGFy dCBvZiBHQ0MuCisvLworLy8gR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy8vIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisvLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCisv LyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy8vCisvLyBHQ0MgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisvLyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLy8K Ky8vIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJl IGdyYW50ZWQgYWRkaXRpb25hbAorLy8gcGVybWlzc2lvbnMgZGVzY3JpYmVk IGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lv bgorLy8gMy4xLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbi4KKworLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisv LyBhIGNvcHkgb2YgdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9u IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOworLy8gc2VlIHRoZSBmaWxlcyBD T1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElm IG5vdCwgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisKKyNpbmNsdWRlIDxiaXRzL2MrK2NvbmZpZy5oPgorI2luY2x1ZGUgIm5l dyIKKworX0dMSUJDWFhfV0VBS19ERUZJTklUSU9OIHZvaWQKK29wZXJhdG9y IGRlbGV0ZSh2b2lkKiBwdHIsIHN0ZDo6c2l6ZV90LCBzdGQ6OmFsaWduX3Zh bF90IGFsKSBfR0xJQkNYWF9VU0VfTk9FWENFUFQKK3sKKyAgOjpvcGVyYXRv ciBkZWxldGUgKHB0ciwgYWwpOworfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysr LXYzL2xpYnN1cGMrKy9kZWxfb3B2YS5jYyBiL2xpYnN0ZGMrKy12My9saWJz dXBjKysvZGVsX29wdmEuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uOTVkMmEzZgotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMr Ky12My9saWJzdXBjKysvZGVsX29wdmEuY2MKQEAgLTAsMCArMSwzNiBAQAor Ly8gQm9pbGVycGxhdGUgc3VwcG9ydCByb3V0aW5lcyBmb3IgLSotIEMrKyAt Ki0gZHluYW1pYyBtZW1vcnkgbWFuYWdlbWVudC4KKworLy8gQ29weXJpZ2h0 IChDKSAxOTk3LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisvLworLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgorLy8KKy8vIEdD QyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisvLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLy8g dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g Mywgb3IgKGF0IHlvdXIgb3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24u CisvLworLy8gR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8g TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKy8vCisvLyBVbmRlciBTZWN0aW9uIDcg b2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwK Ky8vIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUg TGlicmFyeSBFeGNlcHRpb24sIHZlcnNpb24KKy8vIDMuMSwgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKy8vIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorLy8gYSBjb3B5IG9mIHRoZSBHQ0Mg UnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsKKy8vIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcu UlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorLy8gPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjaW5jbHVkZSA8Yml0cy9j Kytjb25maWcuaD4KKyNpbmNsdWRlICJuZXciCisKKy8vIFRoZSBzaXplZCBk ZWxldGVzIGFyZSBkZWZpbmVkIGluIG90aGVyIGZpbGVzLgorI3ByYWdtYSBH Q0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NpemVkLWRlYWxsb2NhdGlvbiIK KworX0dMSUJDWFhfV0VBS19ERUZJTklUSU9OIHZvaWQKK29wZXJhdG9yIGRl bGV0ZVtdICh2b2lkICpwdHIsIHN0ZDo6YWxpZ25fdmFsX3QgYWwpIF9HTElC Q1hYX1VTRV9OT0VYQ0VQVAoreworICA6Om9wZXJhdG9yIGRlbGV0ZSAocHRy LCBhbCk7Cit9CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvbGlic3VwYysr L2RlbF9vcHZhbnQuY2MgYi9saWJzdGRjKystdjMvbGlic3VwYysrL2RlbF9v cHZhbnQuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NTg0MGM4ZgotLS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My9saWJz dXBjKysvZGVsX29wdmFudC5jYwpAQCAtMCwwICsxLDMzIEBACisvLyBCb2ls ZXJwbGF0ZSBzdXBwb3J0IHJvdXRpbmVzIGZvciAtKi0gQysrIC0qLSBkeW5h bWljIG1lbW9yeSBtYW5hZ2VtZW50LgorCisvLyBDb3B5cmlnaHQgKEMpIDE5 OTctMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8vCisv LyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisvLworLy8gR0NDIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKy8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisvLyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAo YXQgeW91ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy8vCisv LyBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisvLyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorLy8KKy8vIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwg dmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorLy8gcGVy bWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5 IEV4Y2VwdGlvbiwgdmVyc2lvbgorLy8gMy4xLCBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworLy8gWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYW5kCisvLyBhIGNvcHkgb2YgdGhlIEdDQyBSdW50aW1l IExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOwor Ly8gc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1F IHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisvLyA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisKKyNpbmNsdWRlIDxiaXRzL2MrK2NvbmZp Zy5oPgorI2luY2x1ZGUgIm5ldyIKKworX0dMSUJDWFhfV0VBS19ERUZJTklU SU9OIHZvaWQKK29wZXJhdG9yIGRlbGV0ZVtdICh2b2lkICpwdHIsIHN0ZDo6 YWxpZ25fdmFsX3QgYWwsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgX0dMSUJD WFhfVVNFX05PRVhDRVBUCit7CisgIDo6b3BlcmF0b3IgZGVsZXRlW10gKHB0 ciwgYWwpOworfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2xpYnN1cGMr Ky9kZWxfb3B2c2EuY2MgYi9saWJzdGRjKystdjMvbGlic3VwYysrL2RlbF9v cHZzYS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42 MTU4NmIwCi0tLSAvZGV2L251bGwKKysrIGIvbGlic3RkYysrLXYzL2xpYnN1 cGMrKy9kZWxfb3B2c2EuY2MKQEAgLTAsMCArMSwzMyBAQAorLy8gQm9pbGVy cGxhdGUgc3VwcG9ydCByb3V0aW5lcyBmb3IgLSotIEMrKyAtKi0gZHluYW1p YyBtZW1vcnkgbWFuYWdlbWVudC4KKworLy8gQ29weXJpZ2h0IChDKSAxOTk3 LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvLworLy8g VGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgorLy8KKy8vIEdDQyBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisvLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLy8gdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0 IHlvdXIgb3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24uCisvLworLy8g R0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKy8vCisvLyBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZl cnNpb24gMywgeW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKy8vIHBlcm1p c3Npb25zIGRlc2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBF eGNlcHRpb24sIHZlcnNpb24KKy8vIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKy8vIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFuZAorLy8gYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBM aWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKy8v IHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSBy ZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorLy8gPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorCisjaW5jbHVkZSA8Yml0cy9jKytjb25maWcu aD4KKyNpbmNsdWRlICJuZXciCisKK19HTElCQ1hYX1dFQUtfREVGSU5JVElP TiB2b2lkCitvcGVyYXRvciBkZWxldGVbXSAodm9pZCAqcHRyLCBzdGQ6OnNp emVfdCwgc3RkOjphbGlnbl92YWxfdCBhbCkgX0dMSUJDWFhfVVNFX05PRVhD RVBUCit7CisgIDo6b3BlcmF0b3IgZGVsZXRlW10gKHB0ciwgYWwpOworfQpk aWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9uZXcgYi9saWJz dGRjKystdjMvbGlic3VwYysrL25ldwppbmRleCA4ZThhMzI3Li40NzdmYWRj IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMvbGlic3VwYysrL25ldworKysg Yi9saWJzdGRjKystdjMvbGlic3VwYysrL25ldwpAQCAtNzksNiArNzksMTAg QEAgbmFtZXNwYWNlIHN0ZAogICB9OwogI2VuZGlmCiAKKyNpZiBfX2NwcF9h bGlnbmVkX25ldworICBlbnVtIGNsYXNzIGFsaWduX3ZhbF90OiBzaXplX3Qg e307CisjZW5kaWYKKwogICBzdHJ1Y3Qgbm90aHJvd190CiAgIHsKICNpZiBf X2NwbHVzcGx1cyA+PSAyMDExMDNMCkBAIC0xMzUsNiArMTM5LDMwIEBAIHZv aWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqLCBjb25zdCBzdGQ6Om5vdGhyb3df dCYpIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVAogICBfX2F0dHJpYnV0ZV9fKChf X2V4dGVybmFsbHlfdmlzaWJsZV9fKSk7CiB2b2lkIG9wZXJhdG9yIGRlbGV0 ZVtdKHZvaWQqLCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIF9HTElCQ1hYX1VT RV9OT0VYQ0VQVAogICBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlz aWJsZV9fKSk7CisjaWYgX19jcHBfYWxpZ25lZF9uZXcKK3ZvaWQqIG9wZXJh dG9yIG5ldyhzdGQ6OnNpemVfdCwgc3RkOjphbGlnbl92YWxfdCkKKyAgX19h dHRyaWJ1dGVfXygoX19leHRlcm5hbGx5X3Zpc2libGVfXykpOwordm9pZCog b3BlcmF0b3IgbmV3KHN0ZDo6c2l6ZV90LCBzdGQ6OmFsaWduX3ZhbF90LCBj b25zdCBzdGQ6Om5vdGhyb3dfdCYpCisgIF9HTElCQ1hYX1VTRV9OT0VYQ0VQ VCBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSk7Cit2 b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgc3RkOjphbGlnbl92YWxfdCkK KyAgX0dMSUJDWFhfVVNFX05PRVhDRVBUIF9fYXR0cmlidXRlX18oKF9fZXh0 ZXJuYWxseV92aXNpYmxlX18pKTsKK3ZvaWQgb3BlcmF0b3IgZGVsZXRlKHZv aWQqLCBzdGQ6OmFsaWduX3ZhbF90LCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYp CisgIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVCBfX2F0dHJpYnV0ZV9fKChfX2V4 dGVybmFsbHlfdmlzaWJsZV9fKSk7Cit2b2lkKiBvcGVyYXRvciBuZXdbXShz dGQ6OnNpemVfdCwgc3RkOjphbGlnbl92YWxfdCkKKyAgX19hdHRyaWJ1dGVf XygoX19leHRlcm5hbGx5X3Zpc2libGVfXykpOwordm9pZCogb3BlcmF0b3Ig bmV3W10oc3RkOjpzaXplX3QsIHN0ZDo6YWxpZ25fdmFsX3QsIGNvbnN0IHN0 ZDo6bm90aHJvd190JikKKyAgX0dMSUJDWFhfVVNFX05PRVhDRVBUIF9fYXR0 cmlidXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxlX18pKTsKK3ZvaWQgb3Bl cmF0b3IgZGVsZXRlW10odm9pZCosIHN0ZDo6YWxpZ25fdmFsX3QpCisgIF9H TElCQ1hYX1VTRV9OT0VYQ0VQVCBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFs bHlfdmlzaWJsZV9fKSk7Cit2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQq LCBzdGQ6OmFsaWduX3ZhbF90LCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpCisg IF9HTElCQ1hYX1VTRV9OT0VYQ0VQVCBfX2F0dHJpYnV0ZV9fKChfX2V4dGVy bmFsbHlfdmlzaWJsZV9fKSk7CisjaWYgX19jcHBfc2l6ZWRfZGVhbGxvY2F0 aW9uCit2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgc3RkOjpzaXplX3Qs IHN0ZDo6YWxpZ25fdmFsX3QpCisgIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVCBf X2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSk7Cit2b2lk IG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqLCBzdGQ6OnNpemVfdCwgc3RkOjph bGlnbl92YWxfdCkKKyAgX0dMSUJDWFhfVVNFX05PRVhDRVBUIF9fYXR0cmli dXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxlX18pKTsKKyNlbmRpZiAvLyBf X2NwcF9zaXplZF9kZWFsbG9jYXRpb24KKyNlbmRpZiAvLyBfX2NwcF9hbGln bmVkX25ldwogCiAvLyBEZWZhdWx0IHBsYWNlbWVudCB2ZXJzaW9ucyBvZiBv cGVyYXRvciBuZXcuCiBpbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3KHN0ZDo6 c2l6ZV90LCB2b2lkKiBfX3ApIF9HTElCQ1hYX1VTRV9OT0VYQ0VQVApkaWZm IC0tZ2l0IGEvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9uZXdfb3BhLmNjIGIv bGlic3RkYysrLXYzL2xpYnN1cGMrKy9uZXdfb3BhLmNjCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZjU0MjEKLS0tIC9kZXYvbnVs bAorKysgYi9saWJzdGRjKystdjMvbGlic3VwYysrL25ld19vcGEuY2MKQEAg LTAsMCArMSw3NiBAQAorLy8gU3VwcG9ydCByb3V0aW5lcyBmb3IgdGhlIC0q LSBDKysgLSotIGR5bmFtaWMgbWVtb3J5IG1hbmFnZW1lbnQuCisKKy8vIENv cHlyaWdodCAoQykgMTk5Ny0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorLy8KKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KKy8v CisvLyBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKy8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKy8vIGFueSBsYXRlciB2 ZXJzaW9uLgorLy8KKy8vIEdDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gVW5kZXIgU2Vj dGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRp dGlvbmFsCisvLyBwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBS dW50aW1lIExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCisvLyAzLjEsIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgor CisvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKKy8vIGEgY29weSBvZiB0 aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07CisvLyBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBD T1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKy8v IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworI2luY2x1ZGUg PGJpdHMvYysrY29uZmlnLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j bHVkZSA8Yml0cy9leGNlcHRpb25fZGVmaW5lcy5oPgorI2luY2x1ZGUgIm5l dyIKKwordXNpbmcgc3RkOjpuZXdfaGFuZGxlcjsKK3VzaW5nIHN0ZDo6YmFk X2FsbG9jOworCisjaWYgIV9HTElCQ1hYX0hBVkVfQUxJR05FRF9BTExPQwor I2lmIF9HTElCQ1hYX0hBVkVfX0FMSUdORURfTUFMTE9DCisjZGVmaW5lIGFs aWduZWRfYWxsb2MoYWwsc3opIF9hbGlnbmVkX21hbGxvYyhzeixhbCkKKyNl bGlmIF9HTElCQ1hYX0hBVkVfUE9TSVhfTUVNQUxJR04KK3N0YXRpYyBpbmxp bmUgdm9pZCoKK2FsaWduZWRfYWxsb2MgKHN0ZDo6c2l6ZV90IGFsLCBzdGQ6 OnNpemVfdCBzeikKK3sKKyAgdm9pZCAqcHRyOworICBpbnQgcmV0ID0gcG9z aXhfbWVtYWxpZ24gKCZwdHIsIGFsLCBzeik7CisgIGlmIChyZXQgPT0gMCkK KyAgICByZXR1cm4gcHRyOworICByZXR1cm4gbnVsbHB0cjsKK30KKyNlbGlm IF9HTElCQ1hYX0hBVkVfTUVNQUxJR04KKyNpbmNsdWRlIDxtYWxsb2MuaD4K KyNkZWZpbmUgYWxpZ25lZF9hbGxvYyBtZW1hbGlnbgorI2Vsc2UKKy8vIFRo ZSBDIGxpYnJhcnkgZG9lc24ndCBwcm92aWRlIGFueSBhbGlnbmVkIGFsbG9j YXRpb24gZnVuY3Rpb25zLCBkZWNsYXJlCisvLyBhbGlnbmVkX2FsbG9jIGFu ZCBnZXQgYSBsaW5rIGZhaWx1cmUgaWYgYWxpZ25lZCBuZXcgaXMgdXNlZC4K K2V4dGVybiAiQyIgdm9pZCAqYWxpZ25lZF9hbGxvYyhzdGQ6OnNpemVfdCwg c3RkOjpzaXplX3QpOworI2VuZGlmCisjZW5kaWYKKworX0dMSUJDWFhfV0VB S19ERUZJTklUSU9OIHZvaWQgKgorb3BlcmF0b3IgbmV3IChzdGQ6OnNpemVf dCBzeiwgc3RkOjphbGlnbl92YWxfdCBhbCkKK3sKKyAgdm9pZCAqcDsKKwor ICAvKiBtYWxsb2MgKDApIGlzIHVucHJlZGljdGFibGU7IGF2b2lkIGl0LiAg Ki8KKyAgaWYgKHN6ID09IDApCisgICAgc3ogPSAxOworCisgIHdoaWxlIChf X2J1aWx0aW5fZXhwZWN0ICgocCA9IGFsaWduZWRfYWxsb2MgKChzdGQ6OnNp emVfdClhbCwgc3opKSA9PSAwLAorCQkJICAgZmFsc2UpKQorICAgIHsKKyAg ICAgIG5ld19oYW5kbGVyIGhhbmRsZXIgPSBzdGQ6OmdldF9uZXdfaGFuZGxl ciAoKTsKKyAgICAgIGlmICghIGhhbmRsZXIpCisJX0dMSUJDWFhfVEhST1df T1JfQUJPUlQoYmFkX2FsbG9jKCkpOworICAgICAgaGFuZGxlciAoKTsKKyAg ICB9CisKKyAgcmV0dXJuIHA7Cit9CmRpZmYgLS1naXQgYS9saWJzdGRjKyst djMvbGlic3VwYysrL25ld19vcGFudC5jYyBiL2xpYnN0ZGMrKy12My9saWJz dXBjKysvbmV3X29wYW50LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmM4NjNkNjQKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzdGRj KystdjMvbGlic3VwYysrL25ld19vcGFudC5jYwpAQCAtMCwwICsxLDQxIEBA CisvLyBCb2lsZXJwbGF0ZSBzdXBwb3J0IHJvdXRpbmVzIGZvciAtKi0gQysr IC0qLSBkeW5hbWljIG1lbW9yeSBtYW5hZ2VtZW50LgorCisvLyBDb3B5cmln aHQgKEMpIDE5OTctMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKy8vCisvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisvLworLy8g R0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKy8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisv LyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzLCBvciAoYXQgeW91ciBvcHRpb24pCisvLyBhbnkgbGF0ZXIgdmVyc2lv bi4KKy8vCisvLyBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisv LyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLy8KKy8vIFVuZGVyIFNlY3Rpb24g NyBvZiBHUEwgdmVyc2lvbiAzLCB5b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25h bAorLy8gcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGlt ZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorLy8gMy4xLCBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworLy8g WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisvLyBhIGNvcHkgb2YgdGhlIEdD QyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtOworLy8gc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlO Ry5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisvLyA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyNpbmNsdWRlIDxiaXRz L2MrK2NvbmZpZy5oPgorI2luY2x1ZGUgIm5ldyIKKworX0dMSUJDWFhfV0VB S19ERUZJTklUSU9OIHZvaWQqCitvcGVyYXRvciBuZXcoc3RkOjpzaXplX3Qg c3osIHN0ZDo6YWxpZ25fdmFsX3QgYWwsIGNvbnN0IHN0ZDo6bm90aHJvd190 JikKKyAgX0dMSUJDWFhfVVNFX05PRVhDRVBUCit7CisgIF9fdHJ5CisgICAg eworICAgICAgcmV0dXJuIG9wZXJhdG9yIG5ldyhzeiwgYWwpOworICAgIH0K KyAgX19jYXRjaCguLi4pCisgICAgeworICAgICAgcmV0dXJuIDA7CisgICAg fQorfQpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9uZXdf b3B2YS5jYyBiL2xpYnN0ZGMrKy12My9saWJzdXBjKysvbmV3X29wdmEuY2MK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzEwOTQzMQot LS0gL2Rldi9udWxsCisrKyBiL2xpYnN0ZGMrKy12My9saWJzdXBjKysvbmV3 X29wdmEuY2MKQEAgLTAsMCArMSwzMyBAQAorLy8gQm9pbGVycGxhdGUgc3Vw cG9ydCByb3V0aW5lcyBmb3IgLSotIEMrKyAtKi0gZHluYW1pYyBtZW1vcnkg bWFuYWdlbWVudC4KKworLy8gQ29weXJpZ2h0IChDKSAxOTk3LTIwMTYgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisvLworLy8gVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0NDLgorLy8KKy8vIEdDQyBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisvLyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLy8gdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0 aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24uCisvLworLy8gR0NDIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor Ly8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKy8vCisvLyBVbmRlciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywg eW91IGFyZSBncmFudGVkIGFkZGl0aW9uYWwKKy8vIHBlcm1pc3Npb25zIGRl c2NyaWJlZCBpbiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24s IHZlcnNpb24KKy8vIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24uCisKKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFuZAorLy8gYSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4 Y2VwdGlvbiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsKKy8vIHNlZSB0aGUg ZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZl bHkuICBJZiBub3QsIHNlZQorLy8gPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorCisjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KKyNpbmNs dWRlICJuZXciCisKK19HTElCQ1hYX1dFQUtfREVGSU5JVElPTiB2b2lkKgor b3BlcmF0b3IgbmV3W10gKHN0ZDo6c2l6ZV90IHN6LCBzdGQ6OmFsaWduX3Zh bF90IGFsKQoreworICByZXR1cm4gOjpvcGVyYXRvciBuZXcoc3osIGFsKTsK K30KZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9saWJzdXBjKysvbmV3X29w dmFudC5jYyBiL2xpYnN0ZGMrKy12My9saWJzdXBjKysvbmV3X29wdmFudC5j YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzJmZWM4 Ci0tLSAvZGV2L251bGwKKysrIGIvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9u ZXdfb3B2YW50LmNjCkBAIC0wLDAgKzEsNDEgQEAKKy8vIEJvaWxlcnBsYXRl IHN1cHBvcnQgcm91dGluZXMgZm9yIC0qLSBDKysgLSotIGR5bmFtaWMgbWVt b3J5IG1hbmFnZW1lbnQuCisKKy8vIENvcHlyaWdodCAoQykgMTk5Ny0yMDE2 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLy8KKy8vIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEdDQy4KKy8vCisvLyBHQ0MgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor Ly8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy8vIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3Vy IG9wdGlvbikKKy8vIGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIEdDQyBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisvLworLy8gVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9u IDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFsCisvLyBwZXJtaXNzaW9u cyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0 aW9uLCB2ZXJzaW9uCisvLyAzLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorCisvLyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhbmQKKy8vIGEgY29weSBvZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFy eSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07CisvLyBzZWUg dGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVj dGl2ZWx5LiAgSWYgbm90LCBzZWUKKy8vIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKworI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+Cisj aW5jbHVkZSAibmV3IgorCitfR0xJQkNYWF9XRUFLX0RFRklOSVRJT04gdm9p ZCoKK29wZXJhdG9yIG5ld1tdIChzdGQ6OnNpemVfdCBzeiwgc3RkOjphbGln bl92YWxfdCBhbCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKQorICBfR0xJQkNY WF9VU0VfTk9FWENFUFQKK3sKKyAgX190cnkKKyAgICB7CisgICAgICByZXR1 cm4gOjpvcGVyYXRvciBuZXdbXShzeiwgYWwpOworICAgIH0KKyAgX19jYXRj aCguLi4pCisgICAgeworICAgICAgcmV0dXJuIDA7CisgICAgfQorfQo= --001a113d0c1c3b4f2b053c19b91f--