From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.bugs Subject: bug#36649: 27.0.50; pure space and pdumper Date: Thu, 4 Mar 2021 12:55:34 +0000 Message-ID: References: <87a6yo5fgy.fsf@gnus.org> <83d03kaz6f.fsf@gnu.org> <87h7svc87d.fsf@igel.home> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000e8a40e05bcb57db3" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="3973"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 36649@debbugs.gnu.org, larsi@gnus.org, eggert@cs.ucla.edu, Andreas Schwab , Andrea Corallo To: Stefan Kangas Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Mar 04 14:00:17 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lHnaS-0000u7-Cu for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 04 Mar 2021 14:00:16 +0100 Original-Received: from localhost ([::1]:40604 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHnaR-0007og-Bv for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 04 Mar 2021 08:00:15 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:56914) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHnXK-00042s-1w for bug-gnu-emacs@gnu.org; Thu, 04 Mar 2021 07:57:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:46523) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lHnXJ-0006z8-QD for bug-gnu-emacs@gnu.org; Thu, 04 Mar 2021 07:57:01 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lHnXJ-0007zF-P9 for bug-gnu-emacs@gnu.org; Thu, 04 Mar 2021 07:57:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 04 Mar 2021 12:57:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 36649 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 36649-submit@debbugs.gnu.org id=B36649.161486257930637 (code B ref 36649); Thu, 04 Mar 2021 12:57:01 +0000 Original-Received: (at 36649) by debbugs.gnu.org; 4 Mar 2021 12:56:19 +0000 Original-Received: from localhost ([127.0.0.1]:58070 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHnWc-0007y5-SA for submit@debbugs.gnu.org; Thu, 04 Mar 2021 07:56:18 -0500 Original-Received: from mail-oi1-f172.google.com ([209.85.167.172]:43300) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHnWa-0007xf-M3 for 36649@debbugs.gnu.org; Thu, 04 Mar 2021 07:56:16 -0500 Original-Received: by mail-oi1-f172.google.com with SMTP id d20so29951699oiw.10 for <36649@debbugs.gnu.org>; Thu, 04 Mar 2021 04:56:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=qIkmZpOoVCfcOrE95F6p5FZyGB7OYr3Pjl77ClV16go=; b=VZOeIXAjD+pk7mhC9Qbv3Cki9XHjAf3GtmjOrvVFYO8Dt6+c+gWdBKn7D4s+rUpUEg DHxJWMnP/biuuzyN7T9iQ0ruUcSBjLPZrVIZDOoFLF0yWWI35QRx+GkRphnn9gZSGNIi fpWCtHzLIdWXeHka3kqmGj46TCSFg5AfekMT2j5rhABBApA3dhfJSyeo9Kr8Aqdpiqvo FPfLGokOJwJipzsPnsb9etR+yIATJ3ytZwgypMzadEH0y2A3IiuqRTBAi4F9Ai+au8kp QEZOAAU/JLeLhKorwlxQpzfG5zM9xpMtRZVBuT+vT+++rCwi3KWZTZBVGK3J0PF6P83H 1OpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=qIkmZpOoVCfcOrE95F6p5FZyGB7OYr3Pjl77ClV16go=; b=tyfAPZF3C60DEDxcuBvq/McHIczVuaJ9f+y2J66Rp1NQ/GfGYlBpMKMR97sr61aKQR ltTLANpIQFg5y0gCn/Bnh8dPdqbVTid2i3kStcoYjVhka4encdTIrW2HwPLaAB35aEbA XB5PDMllRh6i6ptUtBPxQUaztlBNH/FR1iqZ+/Yt4RXERTxTPhsUEnFjH3C16PB6hK2O +Xn3EJ60w+U5zNaVlP+bMtuWyH7PL1eJAzOgpEfIXHmgRXLR1c5RkR2wYEkHzXiNqvqB HwVx4OfYc9Fr5b+mwOROFDN2+BMvc8pgqfI2QXbOEv3YM1aXyaYFtGta3VCt1PVJtp4J t0Jw== X-Gm-Message-State: AOAM531++g4gTZiZXWMkK5CKkvZdC+Vzq7FhPP3DwopvN+Lj4X+6sEdN 27qEMvcH0lou0XNXbDWCTTogaQ6Fsm2B1TMOVTw= X-Google-Smtp-Source: ABdhPJzKkfnqnU0Cfozbzqevd22SlvAW95oLJM14vBA1YDTdDWB70G4mx0Ku0rN0a7mZ3mCWfvFfvTjCHaPq96sF1bM= X-Received: by 2002:aca:af0e:: with SMTP id y14mr2921053oie.44.1614862571044; Thu, 04 Mar 2021 04:56:11 -0800 (PST) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:201386 Archived-At: --000000000000e8a40e05bcb57db3 Content-Type: text/plain; charset="UTF-8" On Wed, Mar 3, 2021 at 3:34 PM Pip Cet wrote: > I have time for that now, so here's a revised patch as a first step. This patch removes pure space from Emacs 28. Changes: - now builds with --enable-checking=all Todo: - commit message not yet final. - zero vector handling depends on Qnil being all zero in memory --000000000000e8a40e05bcb57db3 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Remove-pure-space-Bug-36649.patch" Content-Disposition: attachment; filename="0001-Remove-pure-space-Bug-36649.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kluvesfy0 RnJvbSA1OWJmYmMwZTE4YTcxZjVkOWU0NzE0YjM5YmVmYTA5ODk2ZDhlYWIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBXZWQs IDMgTWFyIDIwMjEgMTU6Mjc6MDIgKzAwMDAKU3ViamVjdDogW1BBVENIXSBSZW1vdmUgcHVyZSBz cGFjZSAoQnVnIzM2NjQ5KQoKKiBzcmMvbGlzcC5oIChzdHJ1Y3QgTGlzcF9TeW1ib2wpOiBSZW1v dmUgYHBpbm5lZCcgZmxhZy4KKGJ1aWxkX3B1cmVfY19zdHJpbmcsIHB1cmVfbGlzdG4pOiBSZW1v dmUuICBBbGwgY2FsbHMgcmVtb3ZlZC4KKiBzcmMvcHVyZXNpemUuaDogUmVtb3ZlIGZpbGUuCiog c3JjL2Zucy5jIChGbWFrZV9oYXNoX3RhYmxlKTogSWdub3JlIGA6cHVyZWNvcHknIGFyZ3VtZW50 LgoqIHNyYy9kb2MuYyAoc3RvcmVfZnVuY3Rpb25fZG9jc3RyaW5nKTogUmVtb3ZlIGNvbW1lbnQg YWJvdXQgcHVyZQpzcGFjZS4KKiBzcmMvZGF0YS5jIChwdXJlX3dyaXRlX2Vycm9yKTogUmVtb3Zl LiAgQWxsIGNhbGxzIHJlbW92ZWQuCiogc3JjL2NvbmZfcG9zdC5oIChTWVNURU1fUFVSRVNJWkVf RVhUUkEpOiBSZW1vdmUuCiogc3JjL2Zucy5jIChtYWtlX2hhc2hfdGFibGUpOiBEcm9wIGBwdXJl Y29weScgYXJndW1lbnQuICBBbGwKY2FsbGVycyBjaGFuZ2VkIHRvIHJlbW92ZSBhcmd1bWVudC4K KiBzcmMvYWxsb2MuYyAobWFrZV9wdXJlX3N0cmluZywgbWFrZV9wdXJlX2Nfc3RyaW5nLCBwdXJl X2NvbnMpCihwdXJlX2xpc3QpOiBSZW1vdmUuICBBbGwgY2FsbHMgcmVtb3ZlZC4KKGNoZWNrX3B1 cmVfc2l6ZSk6IFJlbW92ZS4gIEFsbCBjYWxscyByZW1vdmVkLgooY29uc19saXN0bik6IFNpbXBs aWZ5LgooRm1ha2VfYnl0ZV9jb2RlKTogUmVtb3ZlIGNvbW1lbnQgYWJvdXQgcHVyZSBzcGFjZS4K KHBvaW50ZXJfYWxpZ24pOiBNb3ZlIGRlZmluaXRpb24gdG8gYXZvaWQgd2FybmluZy4KKiBzcmMv TWFrZWZpbGUuaW46IFJlbW92ZSBjb21tZW50IGFib3V0IHB1cmUgc3BhY2UuCi0tLQogc3JjL01h a2VmaWxlLmluICAgIHwgICAyIC0KIHNyYy9hbGxvYy5jICAgICAgICB8IDU0OSArKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9idWZmZXIuYyAgICAgICB8 ICAxNiArLQogc3JjL2NhbGxpbnQuYyAgICAgIHwgICA4ICstCiBzcmMvY2F0ZWdvcnkuYyAgICAg fCAgIDQgKy0KIHNyYy9jb2RpbmcuYyAgICAgICB8ICAxOCArLQogc3JjL2NvbmZfcG9zdC5oICAg IHwgIDMzIC0tLQogc3JjL2RhdGEuYyAgICAgICAgIHwgIDI5ICstLQogc3JjL2RidXNiaW5kLmMg ICAgIHwgICA0ICstCiBzcmMvZGVwcy5tayAgICAgICAgfCAgMTAgKy0KIHNyYy9kb2MuYyAgICAg ICAgICB8ICAgMyAtCiBzcmMvZW1hY3MtbW9kdWxlLmMgfCAgMjggKy0tCiBzcmMvZW1hY3MuYyAg ICAgICAgfCAgIDUgKy0KIHNyYy9ldmFsLmMgICAgICAgICB8ICAxMiArLQogc3JjL2ZpbGVpby5j ICAgICAgIHwgIDIyICstCiBzcmMvZm5zLmMgICAgICAgICAgfCAgMzIgKy0tCiBzcmMvZm9udHNl dC5jICAgICAgfCAgIDQgKy0KIHNyYy9mcmFtZS5jICAgICAgICB8ICAgMiArLQogc3JjL2ltYWdl LmMgICAgICAgIHwgICAyICstCiBzcmMvaW50ZXJ2YWxzLmMgICAgfCAgIDIgLQogc3JjL2pzb24u YyAgICAgICAgIHwgICA0ICstCiBzcmMva2V5Ym9hcmQuYyAgICAgfCAgIDggKy0KIHNyYy9rZXlt YXAuYyAgICAgICB8ICAzNCArKy0KIHNyYy9saXNwLmggICAgICAgICB8ICA0MSArLS0tCiBzcmMv bHJlYWQuYyAgICAgICAgfCAgNTMgKystLS0KIHNyYy9wZHVtcGVyLmMgICAgICB8ICAgOSArLQog c3JjL3ByaW50LmMgICAgICAgIHwgICA2IC0KIHNyYy9wcm9jZXNzLmMgICAgICB8ICAgNCArLQog c3JjL3Byb2ZpbGVyLmMgICAgIHwgICAyICstCiBzcmMvcHVyZXNpemUuaCAgICAgfCAxMTUgLS0t LS0tLS0tLQogc3JjL3NlYXJjaC5jICAgICAgIHwgIDEyICstCiBzcmMvc3ludGF4LmMgICAgICAg fCAgIDQgKy0KIHNyYy93MzJmbnMuYyAgICAgICB8ICAgNCArLQogc3JjL3hkaXNwLmMgICAgICAg IHwgIDE4ICstCiBzcmMveGZhY2VzLmMgICAgICAgfCAgIDIgKy0KIHNyYy94Zm5zLmMgICAgICAg ICB8ICAgOSArLQogc3JjL3h0ZXJtLmMgICAgICAgIHwgICA0ICstCiAzNyBmaWxlcyBjaGFuZ2Vk LCAxOTkgaW5zZXJ0aW9ucygrKSwgOTE1IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0 IHNyYy9wdXJlc2l6ZS5oCgpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmluIGIvc3JjL01ha2Vm aWxlLmluCmluZGV4IDQxMDBlZGY0NzEyZmUuLjAzMzBiMmQzNTRiMTggMTAwNjQ0Ci0tLSBhL3Ny Yy9NYWtlZmlsZS5pbgorKysgYi9zcmMvTWFrZWZpbGUuaW4KQEAgLTQwNiw4ICs0MDYsNiBAQCAu Yy5vOgogLm0ubzoKIAkkKEFNX1ZfQ0MpJChDQykgLWMgJChDUFBGTEFHUykgJChBTExfT0JKQ19D RkxBR1MpICQoUFJPRklMSU5HX0NGTEFHUykgJDwKIAotIyMgbGFzdGZpbGUgbXVzdCBmb2xsb3cg YWxsIGZpbGVzIHdob3NlIGluaXRpYWxpemVkIGRhdGEgYXJlYXMgc2hvdWxkCi0jIyBiZSBkdW1w ZWQgYXMgcHVyZSBieSBkdW1wLWVtYWNzLgogYmFzZV9vYmogPSBkaXNwbmV3Lm8gZnJhbWUubyBz Y3JvbGwubyB4ZGlzcC5vIG1lbnUubyAkKFhNRU5VX09CSikgd2luZG93Lm8gXAogCWNoYXJzZXQu byBjb2RpbmcubyBjYXRlZ29yeS5vIGNjbC5vIGNoYXJhY3Rlci5vIGNoYXJ0YWIubyBiaWRpLm8g XAogCSQoQ01fT0JKKSB0ZXJtLm8gdGVybWluYWwubyB4ZmFjZXMubyAkKFhPQkopICQoR1RLX09C SikgJChEQlVTX09CSikgXApkaWZmIC0tZ2l0IGEvc3JjL2FsbG9jLmMgYi9zcmMvYWxsb2MuYwpp bmRleCBlNzJmYzRjNDMzMmRlLi4wNWMyNWUxMGYxNDQxIDEwMDY0NAotLS0gYS9zcmMvYWxsb2Mu YworKysgYi9zcmMvYWxsb2MuYwpAQCAtMzQsNyArMzQsNiBAQCBDb3B5cmlnaHQgKEMpIDE5ODUt MTk4NiwgMTk4OCwgMTk5My0xOTk1LCAxOTk3LTIwMjEgRnJlZSBTb2Z0d2FyZQogI2luY2x1ZGUg ImJpZ251bS5oIgogI2luY2x1ZGUgImRpc3BleHRlcm4uaCIKICNpbmNsdWRlICJpbnRlcnZhbHMu aCIKLSNpbmNsdWRlICJwdXJlc2l6ZS5oIgogI2luY2x1ZGUgInNoZWFwLmgiCiAjaW5jbHVkZSAi c3lzc3RkaW8uaCIKICNpbmNsdWRlICJzeXN0aW1lLmgiCkBAIC0zMzMsMzMgKzMzMiw2IEBAICNk ZWZpbmUgSElfVEhSRVNIT0xEIChFTUFDU19JTlRfTUFYIC8gMikKIAogI2RlZmluZSBTUEFSRV9N RU1PUlkgKDEgPDwgMTQpCiAKLS8qIEluaXRpYWxpemUgaXQgdG8gYSBub256ZXJvIHZhbHVlIHRv IGZvcmNlIGl0IGludG8gZGF0YSBzcGFjZQotICAgKHJhdGhlciB0aGFuIGJzcyBzcGFjZSkuICBU aGF0IHdheSB1bmV4ZWMgd2lsbCByZW1hcCBpdCBpbnRvIHRleHQKLSAgIHNwYWNlIChwdXJlKSwg b24gc29tZSBzeXN0ZW1zLiAgV2UgaGF2ZSBub3QgaW1wbGVtZW50ZWQgdGhlCi0gICByZW1hcHBp bmcgb24gbW9yZSByZWNlbnQgc3lzdGVtcyBiZWNhdXNlIHRoaXMgaXMgbGVzcyBpbXBvcnRhbnQK LSAgIG5vd2FkYXlzIHRoYW4gaW4gdGhlIGRheXMgb2Ygc21hbGwgbWVtb3JpZXMgYW5kIHRpbWVz aGFyaW5nLiAgKi8KLQotRU1BQ1NfSU5UIHB1cmVbKFBVUkVTSVpFICsgc2l6ZW9mIChFTUFDU19J TlQpIC0gMSkgLyBzaXplb2YgKEVNQUNTX0lOVCldID0gezEsfTsKLSNkZWZpbmUgUFVSRUJFRyAo Y2hhciAqKSBwdXJlCi0KLS8qIFBvaW50ZXIgdG8gdGhlIHB1cmUgYXJlYSwgYW5kIGl0cyBzaXpl LiAgKi8KLQotc3RhdGljIGNoYXIgKnB1cmViZWc7Ci1zdGF0aWMgcHRyZGlmZl90IHB1cmVfc2l6 ZTsKLQotLyogTnVtYmVyIG9mIGJ5dGVzIG9mIHB1cmUgc3RvcmFnZSB1c2VkIGJlZm9yZSBwdXJl IHN0b3JhZ2Ugb3ZlcmZsb3dlZC4KLSAgIElmIHRoaXMgaXMgbm9uLXplcm8sIHRoaXMgaW1wbGll cyB0aGF0IGFuIG92ZXJmbG93IG9jY3VycmVkLiAgKi8KLQotc3RhdGljIHB0cmRpZmZfdCBwdXJl X2J5dGVzX3VzZWRfYmVmb3JlX292ZXJmbG93OwotCi0vKiBJbmRleCBpbiBwdXJlIGF0IHdoaWNo IG5leHQgcHVyZSBMaXNwIG9iamVjdCB3aWxsIGJlIGFsbG9jYXRlZC4uICAqLwotCi1zdGF0aWMg cHRyZGlmZl90IHB1cmVfYnl0ZXNfdXNlZF9saXNwOwotCi0vKiBOdW1iZXIgb2YgYnl0ZXMgYWxs b2NhdGVkIGZvciBub24tTGlzcCBvYmplY3RzIGluIHB1cmUgc3RvcmFnZS4gICovCi0KLXN0YXRp YyBwdHJkaWZmX3QgcHVyZV9ieXRlc191c2VkX25vbl9saXNwOwotCiAvKiBJZiBwb3NpdGl2ZSwg Z2FyYmFnZSBjb2xsZWN0aW9uIGlzIGluaGliaXRlZC4gIE90aGVyd2lzZSwgemVyby4gICovCiAK IHN0YXRpYyBpbnRwdHJfdCBnYXJiYWdlX2NvbGxlY3Rpb25faW5oaWJpdGVkOwpAQCAtNDM0LDcg KzQwNiw2IEBAIG5vX3Nhbml0aXplX21lbWNweSAodm9pZCAqZGVzdCwgdm9pZCBjb25zdCAqc3Jj LCBzaXplX3Qgc2l6ZSkKIHN0YXRpYyB2b2lkIHVuY2hhaW5fZmluYWxpemVyIChzdHJ1Y3QgTGlz cF9GaW5hbGl6ZXIgKik7CiBzdGF0aWMgdm9pZCBtYXJrX3Rlcm1pbmFscyAodm9pZCk7CiBzdGF0 aWMgdm9pZCBnY19zd2VlcCAodm9pZCk7Ci1zdGF0aWMgTGlzcF9PYmplY3QgbWFrZV9wdXJlX3Zl Y3RvciAocHRyZGlmZl90KTsKIHN0YXRpYyB2b2lkIG1hcmtfYnVmZmVyIChzdHJ1Y3QgYnVmZmVy ICopOwogCiAjaWYgIWRlZmluZWQgUkVMX0FMTE9DIHx8IGRlZmluZWQgU1lTVEVNX01BTExPQyB8 fCBkZWZpbmVkIEhZQlJJRF9NQUxMT0MKQEAgLTU3NiwxNiArNTQ3LDYgQEAgI2RlZmluZSBNRU1f TklMICZtZW1fegogCiBpbnQgc3RhdGljaWR4OwogCi1zdGF0aWMgdm9pZCAqcHVyZV9hbGxvYyAo c2l6ZV90LCBpbnQpOwotCi0vKiBSZXR1cm4gUFRSIHJvdW5kZWQgdXAgdG8gdGhlIG5leHQgbXVs dGlwbGUgb2YgQUxJR05NRU5ULiAgKi8KLQotc3RhdGljIHZvaWQgKgotcG9pbnRlcl9hbGlnbiAo dm9pZCAqcHRyLCBpbnQgYWxpZ25tZW50KQotewotICByZXR1cm4gKHZvaWQgKikgUk9VTkRVUCAo KHVpbnRwdHJfdCkgcHRyLCBhbGlnbm1lbnQpOwotfQotCiAvKiBFeHRyYWN0IHRoZSBwb2ludGVy IGhpZGRlbiB3aXRoaW4gTy4gICovCiAKIHN0YXRpYyBBVFRSSUJVVEVfTk9fU0FOSVRJWkVfVU5E RUZJTkVEIHZvaWQgKgpAQCAtMTA3NSw2ICsxMDM2LDE1IEBAIHZlcmlmeSAoUE9XRVJfT0ZfMiAo QkxPQ0tfQUxJR04pKTsKICMgZWxpZiAhZGVmaW5lZCBIWUJSSURfTUFMTE9DICYmIGRlZmluZWQg SEFWRV9QT1NJWF9NRU1BTElHTgogIyAgZGVmaW5lIFVTRV9BTElHTkVEX0FMTE9DIDEKICMgIGRl ZmluZSBhbGlnbmVkX2FsbG9jIG15X2FsaWduZWRfYWxsb2MgLyogQXZvaWQgY29sbGlzaW9uIHdp dGggbGlzcC5oLiAgKi8KKworLyogUmV0dXJuIFBUUiByb3VuZGVkIHVwIHRvIHRoZSBuZXh0IG11 bHRpcGxlIG9mIEFMSUdOTUVOVC4gICovCisKK3N0YXRpYyB2b2lkICoKK3BvaW50ZXJfYWxpZ24g KHZvaWQgKnB0ciwgaW50IGFsaWdubWVudCkKK3sKKyAgcmV0dXJuICh2b2lkICopIFJPVU5EVVAg KCh1aW50cHRyX3QpIHB0ciwgYWxpZ25tZW50KTsKK30KKwogc3RhdGljIHZvaWQgKgogYWxpZ25l ZF9hbGxvYyAoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCiB7CkBAIC0xNjc5LDkgKzE2 NDksOSBAQCAjZGVmaW5lIEdDX1NUUklOR19FWFRSQSBHQ19TVFJJTkdfT1ZFUlJVTl9DT09LSUVf U0laRQogc3RhdGljIHZvaWQKIGluaXRfc3RyaW5ncyAodm9pZCkKIHsKLSAgZW1wdHlfdW5pYnl0 ZV9zdHJpbmcgPSBtYWtlX3B1cmVfc3RyaW5nICgiIiwgMCwgMCwgMCk7CisgIGVtcHR5X3VuaWJ5 dGVfc3RyaW5nID0gbWFrZV9zcGVjaWZpZWRfc3RyaW5nICgiIiwgMCwgMCwgZmFsc2UpOwogICBz dGF0aWNwcm8gKCZlbXB0eV91bmlieXRlX3N0cmluZyk7Ci0gIGVtcHR5X211bHRpYnl0ZV9zdHJp bmcgPSBtYWtlX3B1cmVfc3RyaW5nICgiIiwgMCwgMCwgMSk7CisgIGVtcHR5X211bHRpYnl0ZV9z dHJpbmcgPSBtYWtlX3NwZWNpZmllZF9zdHJpbmcgKCIiLCAwLCAwLCB0cnVlKTsKICAgc3RhdGlj cHJvICgmZW1wdHlfbXVsdGlieXRlX3N0cmluZyk7CiB9CiAKQEAgLTE2OTksNyArMTY2OSw3IEBA IHN0cmluZ19ieXRlcyAoc3RydWN0IExpc3BfU3RyaW5nICpzKQogICBwdHJkaWZmX3QgbmJ5dGVz ID0KICAgICAocy0+dS5zLnNpemVfYnl0ZSA8IDAgPyBzLT51LnMuc2l6ZSAmIH5BUlJBWV9NQVJL X0ZMQUcgOiBzLT51LnMuc2l6ZV9ieXRlKTsKIAotICBpZiAoIVBVUkVfUCAocykgJiYgIXBkdW1w ZXJfb2JqZWN0X3AgKHMpICYmIHMtPnUucy5kYXRhCisgIGlmICghcGR1bXBlcl9vYmplY3RfcCAo cykgJiYgcy0+dS5zLmRhdGEKICAgICAgICYmIG5ieXRlcyAhPSBTREFUQV9OQllURVMgKFNEQVRB X09GX1NUUklORyAocykpKQogICAgIGVtYWNzX2Fib3J0ICgpOwogICByZXR1cm4gbmJ5dGVzOwpA QCAtMjQxNSw3ICsyMzg1LDcgQEAgbWFrZV9zcGVjaWZpZWRfc3RyaW5nIChjb25zdCBjaGFyICpj b250ZW50cywKIHsKICAgTGlzcF9PYmplY3QgdmFsOwogCi0gIGlmIChuY2hhcnMgPCAwKQorICBp ZiAobmNoYXJzIDw9IDApCiAgICAgewogICAgICAgaWYgKG11bHRpYnl0ZSkKIAluY2hhcnMgPSBt dWx0aWJ5dGVfY2hhcnNfaW5fdGV4dCAoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgY29udGVudHMs CkBAIC0yNDY5LDggKzI0MzksNiBAQCBtYWtlX2NsZWFyX211bHRpYnl0ZV9zdHJpbmcgKEVNQUNT X0lOVCBuY2hhcnMsIEVNQUNTX0lOVCBuYnl0ZXMsIGJvb2wgY2xlYXJpdCkKIAogICBpZiAobmNo YXJzIDwgMCkKICAgICBlbWFjc19hYm9ydCAoKTsKLSAgaWYgKCFuYnl0ZXMpCi0gICAgcmV0dXJu IGVtcHR5X211bHRpYnl0ZV9zdHJpbmc7CiAKICAgcyA9IGFsbG9jYXRlX3N0cmluZyAoKTsKICAg cy0+dS5zLmludGVydmFscyA9IE5VTEw7CkBAIC0yNzUxLDE3ICsyNzE5LDE2IEBAIGxpc3Q1IChM aXNwX09iamVjdCBhcmcxLCBMaXNwX09iamVjdCBhcmcyLCBMaXNwX09iamVjdCBhcmczLCBMaXNw X09iamVjdCBhcmc0LAogfQogCiAvKiBNYWtlIGEgbGlzdCBvZiBDT1VOVCBMaXNwX09iamVjdHMs IHdoZXJlIEFSRyBpcyB0aGUgZmlyc3Qgb25lLgotICAgVXNlIENPTlMgdG8gY29uc3RydWN0IHRo ZSBwYWlycy4gIEFQIGhhcyBhbnkgcmVtYWluaW5nIGFyZ3MuICAqLworICAgQVAgaGFzIGFueSBy ZW1haW5pbmcgYXJncy4gICovCiBzdGF0aWMgTGlzcF9PYmplY3QKLWNvbnNfbGlzdG4gKHB0cmRp ZmZfdCBjb3VudCwgTGlzcF9PYmplY3QgYXJnLAotCSAgICBMaXNwX09iamVjdCAoKmNvbnMpIChM aXNwX09iamVjdCwgTGlzcF9PYmplY3QpLCB2YV9saXN0IGFwKQorY29uc19saXN0biAocHRyZGlm Zl90IGNvdW50LCBMaXNwX09iamVjdCBhcmcsIHZhX2xpc3QgYXApCiB7CiAgIGVhc3N1bWUgKDAg PCBjb3VudCk7Ci0gIExpc3BfT2JqZWN0IHZhbCA9IGNvbnMgKGFyZywgUW5pbCk7CisgIExpc3Bf T2JqZWN0IHZhbCA9IEZjb25zIChhcmcsIFFuaWwpOwogICBMaXNwX09iamVjdCB0YWlsID0gdmFs OwogICBmb3IgKHB0cmRpZmZfdCBpID0gMTsgaSA8IGNvdW50OyBpKyspCiAgICAgewotICAgICAg TGlzcF9PYmplY3QgZWxlbSA9IGNvbnMgKHZhX2FyZyAoYXAsIExpc3BfT2JqZWN0KSwgUW5pbCk7 CisgICAgICBMaXNwX09iamVjdCBlbGVtID0gRmNvbnMgKHZhX2FyZyAoYXAsIExpc3BfT2JqZWN0 KSwgUW5pbCk7CiAgICAgICBYU0VUQ0RSICh0YWlsLCBlbGVtKTsKICAgICAgIHRhaWwgPSBlbGVt OwogICAgIH0KQEAgLTI3NzQsMTggKzI3NDEsNyBAQCBsaXN0biAocHRyZGlmZl90IGNvdW50LCBM aXNwX09iamVjdCBhcmcxLCAuLi4pCiB7CiAgIHZhX2xpc3QgYXA7CiAgIHZhX3N0YXJ0IChhcCwg YXJnMSk7Ci0gIExpc3BfT2JqZWN0IHZhbCA9IGNvbnNfbGlzdG4gKGNvdW50LCBhcmcxLCBGY29u cywgYXApOwotICB2YV9lbmQgKGFwKTsKLSAgcmV0dXJuIHZhbDsKLX0KLQotLyogTWFrZSBhIHB1 cmUgbGlzdCBvZiBDT1VOVCBMaXNwX09iamVjdHMsIHdoZXJlIEFSRzEgaXMgdGhlIGZpcnN0IG9u ZS4gICovCi1MaXNwX09iamVjdAotcHVyZV9saXN0biAocHRyZGlmZl90IGNvdW50LCBMaXNwX09i amVjdCBhcmcxLCAuLi4pCi17Ci0gIHZhX2xpc3QgYXA7Ci0gIHZhX3N0YXJ0IChhcCwgYXJnMSk7 Ci0gIExpc3BfT2JqZWN0IHZhbCA9IGNvbnNfbGlzdG4gKGNvdW50LCBhcmcxLCBwdXJlX2NvbnMs IGFwKTsKKyAgTGlzcF9PYmplY3QgdmFsID0gY29uc19saXN0biAoY291bnQsIGFyZzEsIGFwKTsK ICAgdmFfZW5kIChhcCk7CiAgIHJldHVybiB2YWw7CiB9CkBAIC0yOTUxLDcgKzI5MDcsNyBAQCBs YXJnZV92ZWN0b3JfdmVjIChzdHJ1Y3QgbGFyZ2VfdmVjdG9yICpwKQogCiBzdGF0aWMgc3RydWN0 IGxhcmdlX3ZlY3RvciAqbGFyZ2VfdmVjdG9yczsKIAotLyogVGhlIG9ubHkgdmVjdG9yIHdpdGgg MCBzbG90cywgYWxsb2NhdGVkIGZyb20gcHVyZSBzcGFjZS4gICovCisvKiBUaGUgb25seSB2ZWN0 b3Igd2l0aCAwIHNsb3RzLiAgKi8KIAogTGlzcF9PYmplY3QgemVyb192ZWN0b3I7CiAKQEAgLTI5 ODcsMTUgKzI5NDMsNiBAQCBhbGxvY2F0ZV92ZWN0b3JfYmxvY2sgKHZvaWQpCiAgIHJldHVybiBi bG9jazsKIH0KIAotLyogQ2FsbGVkIG9uY2UgdG8gaW5pdGlhbGl6ZSB2ZWN0b3IgYWxsb2NhdGlv bi4gICovCi0KLXN0YXRpYyB2b2lkCi1pbml0X3ZlY3RvcnMgKHZvaWQpCi17Ci0gIHplcm9fdmVj dG9yID0gbWFrZV9wdXJlX3ZlY3RvciAoMCk7Ci0gIHN0YXRpY3BybyAoJnplcm9fdmVjdG9yKTsK LX0KLQogLyogQWxsb2NhdGUgdmVjdG9yIGZyb20gYSB2ZWN0b3IgYmxvY2suICAqLwogCiBzdGF0 aWMgc3RydWN0IExpc3BfVmVjdG9yICoKQEAgLTMyNjgsNyArMzIxNSw3IEBAICNkZWZpbmUgVkVD VE9SX0VMVFNfTUFYIFwKIHN0YXRpYyBzdHJ1Y3QgTGlzcF9WZWN0b3IgKgogYWxsb2NhdGVfdmVj dG9ybGlrZSAocHRyZGlmZl90IGxlbiwgYm9vbCBjbGVhcml0KQogewotICBlYXNzZXJ0ICgwIDwg bGVuICYmIGxlbiA8PSBWRUNUT1JfRUxUU19NQVgpOworICBlYXNzZXJ0ICgwIDw9IGxlbiAmJiBs ZW4gPD0gVkVDVE9SX0VMVFNfTUFYKTsKICAgcHRyZGlmZl90IG5ieXRlcyA9IGhlYWRlcl9zaXpl ICsgbGVuICogd29yZF9zaXplOwogICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnA7CiAKQEAgLTMzNDMs NiArMzI5MCwxOCBAQCBhbGxvY2F0ZV9uaWxfdmVjdG9yIChwdHJkaWZmX3QgbGVuKQogfQogCiAK Ky8qIENhbGxlZCBvbmNlIHRvIGluaXRpYWxpemUgdmVjdG9yIGFsbG9jYXRpb24uICAqLworCitz dGF0aWMgdm9pZAoraW5pdF92ZWN0b3JzICh2b2lkKQoreworICB6ZXJvX3ZlY3RvciA9CisgICAg bWFrZV9saXNwX3B0ciAoYWxsb2NhdGVfdmVjdG9ybGlrZSAoOCwgdHJ1ZSksIExpc3BfVmVjdG9y bGlrZSk7CisgIFhWRUNUT1IgKHplcm9fdmVjdG9yKS0+aGVhZGVyLnNpemUgPSAwOworICBYVkVD VE9SICh6ZXJvX3ZlY3RvciktPmNvbnRlbnRzWzBdID0gUW5pbDsKKyAgc3RhdGljcHJvICgmemVy b192ZWN0b3IpOworfQorCiAvKiBBbGxvY2F0ZSBvdGhlciB2ZWN0b3ItbGlrZSBzdHJ1Y3R1cmVz LiAgKi8KIAogc3RydWN0IExpc3BfVmVjdG9yICoKQEAgLTM1NTUsMTMgKzM1MTQsNiBAQCAjZGVm aW5lIFNZTUJPTF9CTE9DS19TSVpFIFwKIAogc3RhdGljIHN0cnVjdCBzeW1ib2xfYmxvY2sgKnN5 bWJvbF9ibG9jazsKIHN0YXRpYyBpbnQgc3ltYm9sX2Jsb2NrX2luZGV4ID0gU1lNQk9MX0JMT0NL X1NJWkU7Ci0vKiBQb2ludGVyIHRvIHRoZSBmaXJzdCBzeW1ib2xfYmxvY2sgdGhhdCBjb250YWlu cyBwaW5uZWQgc3ltYm9scy4KLSAgIFRlc3RzIGZvciAyNC40IHNob3dlZCB0aGF0IGF0IGR1bXAt dGltZSwgRW1hY3MgY29udGFpbnMgYWJvdXQgMTVLIHN5bWJvbHMsCi0gICAxMEsgb2Ygd2hpY2gg YXJlIHBpbm5lZCAoYW5kIGFsbCBidXQgMjUwIG9mIHRoZW0gYXJlIGludGVybmVkIGluIG9iYXJy YXkpLAotICAgd2hlcmVhcyBhICJ0eXBpY2FsIHNlc3Npb24iIGhhcyBpbiB0aGUgb3JkZXIgb2Yg MzBLIHN5bWJvbHMuCi0gICBgc3ltYm9sX2Jsb2NrX3Bpbm5lZCcgbGV0cyBtYXJrX3Bpbm5lZF9z eW1ib2xzIHNjYW4gb25seSAxNUsgc3ltYm9scyByYXRoZXIKLSAgIHRoYW4gMzBLIHRvIGZpbmQg dGhlIDEwSyBzeW1ib2xzIHdlIG5lZWQgdG8gbWFyay4gICovCi1zdGF0aWMgc3RydWN0IHN5bWJv bF9ibG9jayAqc3ltYm9sX2Jsb2NrX3Bpbm5lZDsKIAogLyogTGlzdCBvZiBmcmVlIHN5bWJvbHMu ICAqLwogCkBAIC0zNTg3LDcgKzM1MzksNiBAQCBpbml0X3N5bWJvbCAoTGlzcF9PYmplY3QgdmFs LCBMaXNwX09iamVjdCBuYW1lKQogICBwLT51LnMuaW50ZXJuZWQgPSBTWU1CT0xfVU5JTlRFUk5F RDsKICAgcC0+dS5zLnRyYXBwZWRfd3JpdGUgPSBTWU1CT0xfVU5UUkFQUEVEX1dSSVRFOwogICBw LT51LnMuZGVjbGFyZWRfc3BlY2lhbCA9IGZhbHNlOwotICBwLT51LnMucGlubmVkID0gZmFsc2U7 CiB9CiAKIERFRlVOICgibWFrZS1zeW1ib2wiLCBGbWFrZV9zeW1ib2wsIFNtYWtlX3N5bWJvbCwg MSwgMSwgMCwKQEAgLTUxNTEsOCArNTEwMiw2IEBAIHZhbGlkX2xpc3Bfb2JqZWN0X3AgKExpc3Bf T2JqZWN0IG9iaikKICAgICByZXR1cm4gMTsKIAogICB2b2lkICpwID0gWFBOVFIgKG9iaik7Ci0g IGlmIChQVVJFX1AgKHApKQotICAgIHJldHVybiAxOwogCiAgIGlmIChTWU1CT0xQIChvYmopICYm IGNfc3ltYm9sX3AgKHApKQogICAgIHJldHVybiAoKGNoYXIgKikgcCAtIChjaGFyICopIGxpc3Bz eW0pICUgc2l6ZW9mIGxpc3BzeW1bMF0gPT0gMDsKQEAgLTUyMDgsMjk2ICs1MTU3LDggQEAgdmFs aWRfbGlzcF9vYmplY3RfcCAoTGlzcF9PYmplY3Qgb2JqKQogICByZXR1cm4gMDsKIH0KIAotLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCi0JCSAgICAgICBQdXJlIFN0b3JhZ2UgTWFuYWdlbWVudAotICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLwotCi0vKiBBbGxvY2F0ZSByb29tIGZvciBTSVpFIGJ5dGVzIGZyb20gcHVyZSBMaXNw IHN0b3JhZ2UgYW5kIHJldHVybiBhCi0gICBwb2ludGVyIHRvIGl0LiAgVFlQRSBpcyB0aGUgTGlz cCB0eXBlIGZvciB3aGljaCB0aGUgbWVtb3J5IGlzCi0gICBhbGxvY2F0ZWQuICBUWVBFIDwgMCBt ZWFucyBpdCdzIG5vdCB1c2VkIGZvciBhIExpc3Agb2JqZWN0LAotICAgYW5kIHRoYXQgdGhlIHJl c3VsdCBzaG91bGQgaGF2ZSBhbiBhbGlnbm1lbnQgb2YgLVRZUEUuCi0KLSAgIFRoZSBieXRlcyBh cmUgaW5pdGlhbGx5IHplcm8uCi0KLSAgIElmIHB1cmUgc3BhY2UgaXMgZXhoYXVzdGVkLCBhbGxv Y2F0ZSBzcGFjZSBmcm9tIHRoZSBoZWFwLiAgVGhpcyBpcwotICAgbWVyZWx5IGFuIGV4cGVkaWVu dCB0byBsZXQgRW1hY3Mgd2FybiB0aGF0IHB1cmUgc3BhY2Ugd2FzIGV4aGF1c3RlZAotICAgYW5k IHRoYXQgRW1hY3Mgc2hvdWxkIGJlIHJlYnVpbHQgd2l0aCBhIGxhcmdlciBwdXJlIHNwYWNlLiAg Ki8KLQotc3RhdGljIHZvaWQgKgotcHVyZV9hbGxvYyAoc2l6ZV90IHNpemUsIGludCB0eXBlKQot ewotICB2b2lkICpyZXN1bHQ7Ci0KLSBhZ2FpbjoKLSAgaWYgKHR5cGUgPj0gMCkKLSAgICB7Ci0g ICAgICAvKiBBbGxvY2F0ZSBzcGFjZSBmb3IgYSBMaXNwIG9iamVjdCBmcm9tIHRoZSBiZWdpbm5p bmcgb2YgdGhlIGZyZWUKLQkgc3BhY2Ugd2l0aCB0YWtpbmcgYWNjb3VudCBvZiBhbGlnbm1lbnQu ICAqLwotICAgICAgcmVzdWx0ID0gcG9pbnRlcl9hbGlnbiAocHVyZWJlZyArIHB1cmVfYnl0ZXNf dXNlZF9saXNwLCBMSVNQX0FMSUdOTUVOVCk7Ci0gICAgICBwdXJlX2J5dGVzX3VzZWRfbGlzcCA9 ICgoY2hhciAqKXJlc3VsdCAtIChjaGFyICopcHVyZWJlZykgKyBzaXplOwotICAgIH0KLSAgZWxz ZQotICAgIHsKLSAgICAgIC8qIEFsbG9jYXRlIHNwYWNlIGZvciBhIG5vbi1MaXNwIG9iamVjdCBm cm9tIHRoZSBlbmQgb2YgdGhlIGZyZWUKLQkgc3BhY2UuICAqLwotICAgICAgcHRyZGlmZl90IHVu YWxpZ25lZF9ub25fbGlzcCA9IHB1cmVfYnl0ZXNfdXNlZF9ub25fbGlzcCArIHNpemU7Ci0gICAg ICBjaGFyICp1bmFsaWduZWQgPSBwdXJlYmVnICsgcHVyZV9zaXplIC0gdW5hbGlnbmVkX25vbl9s aXNwOwotICAgICAgaW50IGRlY3IgPSAoaW50cHRyX3QpIHVuYWxpZ25lZCAmICgtMSAtIHR5cGUp OwotICAgICAgcHVyZV9ieXRlc191c2VkX25vbl9saXNwID0gdW5hbGlnbmVkX25vbl9saXNwICsg ZGVjcjsKLSAgICAgIHJlc3VsdCA9IHVuYWxpZ25lZCAtIGRlY3I7Ci0gICAgfQotICBwdXJlX2J5 dGVzX3VzZWQgPSBwdXJlX2J5dGVzX3VzZWRfbGlzcCArIHB1cmVfYnl0ZXNfdXNlZF9ub25fbGlz cDsKLQotICBpZiAocHVyZV9ieXRlc191c2VkIDw9IHB1cmVfc2l6ZSkKLSAgICByZXR1cm4gcmVz dWx0OwotCi0gIC8qIERvbid0IGFsbG9jYXRlIGEgbGFyZ2UgYW1vdW50IGhlcmUsCi0gICAgIGJl Y2F1c2UgaXQgbWlnaHQgZ2V0IG1tYXAnZCBhbmQgdGhlbiBpdHMgYWRkcmVzcwotICAgICBtaWdo dCBub3QgYmUgdXNhYmxlLiAgKi8KLSAgaW50IHNtYWxsX2Ftb3VudCA9IDEwMDAwOwotICBlYXNz ZXJ0IChzaXplIDw9IHNtYWxsX2Ftb3VudCAtIExJU1BfQUxJR05NRU5UKTsKLSAgcHVyZWJlZyA9 IHh6YWxsb2MgKHNtYWxsX2Ftb3VudCk7Ci0gIHB1cmVfc2l6ZSA9IHNtYWxsX2Ftb3VudDsKLSAg cHVyZV9ieXRlc191c2VkX2JlZm9yZV9vdmVyZmxvdyArPSBwdXJlX2J5dGVzX3VzZWQgLSBzaXpl OwotICBwdXJlX2J5dGVzX3VzZWQgPSAwOwotICBwdXJlX2J5dGVzX3VzZWRfbGlzcCA9IHB1cmVf Ynl0ZXNfdXNlZF9ub25fbGlzcCA9IDA7Ci0KLSAgLyogQ2FuJ3QgR0MgaWYgcHVyZSBzdG9yYWdl IG92ZXJmbG93ZWQgYmVjYXVzZSB3ZSBjYW4ndCBkZXRlcm1pbmUKLSAgICAgaWYgc29tZXRoaW5n IGlzIGEgcHVyZSBvYmplY3Qgb3Igbm90LiAgKi8KLSAgZ2FyYmFnZV9jb2xsZWN0aW9uX2luaGli aXRlZCsrOwotICBnb3RvIGFnYWluOwotfQotCi0KLSNpZmRlZiBIQVZFX1VORVhFQwotCi0vKiBQ cmludCBhIHdhcm5pbmcgaWYgUFVSRVNJWkUgaXMgdG9vIHNtYWxsLiAgKi8KLQotdm9pZAotY2hl Y2tfcHVyZV9zaXplICh2b2lkKQotewotICBpZiAocHVyZV9ieXRlc191c2VkX2JlZm9yZV9vdmVy ZmxvdykKLSAgICBtZXNzYWdlICgoImVtYWNzOjA6UHVyZSBMaXNwIHN0b3JhZ2Ugb3ZlcmZsb3cg KGFwcHJveC4gJSJwSSJkIgotCSAgICAgICIgYnl0ZXMgbmVlZGVkKSIpLAotCSAgICAgcHVyZV9i eXRlc191c2VkICsgcHVyZV9ieXRlc191c2VkX2JlZm9yZV9vdmVyZmxvdyk7Ci19Ci0jZW5kaWYK LQotCi0vKiBGaW5kIHRoZSBieXRlIHNlcXVlbmNlIHtEQVRBWzBdLCAuLi4sIERBVEFbTkJZVEVT LTFdLCAnXDAnfSBmcm9tCi0gICB0aGUgbm9uLUxpc3AgZGF0YSBwb29sIG9mIHRoZSBwdXJlIHN0 b3JhZ2UsIGFuZCByZXR1cm4gaXRzIHN0YXJ0Ci0gICBhZGRyZXNzLiAgUmV0dXJuIE5VTEwgaWYg bm90IGZvdW5kLiAgKi8KLQotc3RhdGljIGNoYXIgKgotZmluZF9zdHJpbmdfZGF0YV9pbl9wdXJl IChjb25zdCBjaGFyICpkYXRhLCBwdHJkaWZmX3QgbmJ5dGVzKQotewotICBpbnQgaTsKLSAgcHRy ZGlmZl90IHNraXAsIGJtX3NraXBbMjU2XSwgbGFzdF9jaGFyX3NraXAsIGluZmluaXR5LCBzdGFy dCwgc3RhcnRfbWF4OwotICBjb25zdCB1bnNpZ25lZCBjaGFyICpwOwotICBjaGFyICpub25fbGlz cF9iZWc7Ci0KLSAgaWYgKHB1cmVfYnl0ZXNfdXNlZF9ub25fbGlzcCA8PSBuYnl0ZXMpCi0gICAg cmV0dXJuIE5VTEw7Ci0KLSAgLyogU2V0IHVwIHRoZSBCb3llci1Nb29yZSB0YWJsZS4gICovCi0g IHNraXAgPSBuYnl0ZXMgKyAxOwotICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCi0gICAgYm1f c2tpcFtpXSA9IHNraXA7Ci0KLSAgcCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIGRhdGE7Ci0g IHdoaWxlICgtLXNraXAgPiAwKQotICAgIGJtX3NraXBbKnArK10gPSBza2lwOwotCi0gIGxhc3Rf Y2hhcl9za2lwID0gYm1fc2tpcFsnXDAnXTsKLQotICBub25fbGlzcF9iZWcgPSBwdXJlYmVnICsg cHVyZV9zaXplIC0gcHVyZV9ieXRlc191c2VkX25vbl9saXNwOwotICBzdGFydF9tYXggPSBwdXJl X2J5dGVzX3VzZWRfbm9uX2xpc3AgLSAobmJ5dGVzICsgMSk7Ci0KLSAgLyogU2VlIHRoZSBjb21t ZW50cyBpbiB0aGUgZnVuY3Rpb24gYGJveWVyX21vb3JlJyAoc2VhcmNoLmMpIGZvciB0aGUKLSAg ICAgdXNlIG9mIGBpbmZpbml0eScuICAqLwotICBpbmZpbml0eSA9IHB1cmVfYnl0ZXNfdXNlZF9u b25fbGlzcCArIDE7Ci0gIGJtX3NraXBbJ1wwJ10gPSBpbmZpbml0eTsKLQotICBwID0gKGNvbnN0 IHVuc2lnbmVkIGNoYXIgKikgbm9uX2xpc3BfYmVnICsgbmJ5dGVzOwotICBzdGFydCA9IDA7Ci0g IGRvCi0gICAgewotICAgICAgLyogQ2hlY2sgdGhlIGxhc3QgY2hhcmFjdGVyICg9PSAnXDAnKS4g ICovCi0gICAgICBkbwotCXsKLQkgIHN0YXJ0ICs9IGJtX3NraXBbKihwICsgc3RhcnQpXTsKLQl9 Ci0gICAgICB3aGlsZSAoc3RhcnQgPD0gc3RhcnRfbWF4KTsKLQotICAgICAgaWYgKHN0YXJ0IDwg aW5maW5pdHkpCi0JLyogQ291bGRuJ3QgZmluZCB0aGUgbGFzdCBjaGFyYWN0ZXIuICAqLwotCXJl dHVybiBOVUxMOwotCi0gICAgICAvKiBObyBsZXNzIHRoYW4gYGluZmluaXR5JyBtZWFucyB3ZSBj b3VsZCBmaW5kIHRoZSBsYXN0Ci0JIGNoYXJhY3RlciBhdCBgcFtzdGFydCAtIGluZmluaXR5XScu ICAqLwotICAgICAgc3RhcnQgLT0gaW5maW5pdHk7Ci0KLSAgICAgIC8qIENoZWNrIHRoZSByZW1h aW5pbmcgY2hhcmFjdGVycy4gICovCi0gICAgICBpZiAobWVtY21wIChkYXRhLCBub25fbGlzcF9i ZWcgKyBzdGFydCwgbmJ5dGVzKSA9PSAwKQotCS8qIEZvdW5kLiAgKi8KLQlyZXR1cm4gbm9uX2xp c3BfYmVnICsgc3RhcnQ7Ci0KLSAgICAgIHN0YXJ0ICs9IGxhc3RfY2hhcl9za2lwOwotICAgIH0K LSAgd2hpbGUgKHN0YXJ0IDw9IHN0YXJ0X21heCk7Ci0KLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLQot LyogUmV0dXJuIGEgc3RyaW5nIGFsbG9jYXRlZCBpbiBwdXJlIHNwYWNlLiAgREFUQSBpcyBhIGJ1 ZmZlciBob2xkaW5nCi0gICBOQ0hBUlMgY2hhcmFjdGVycywgYW5kIE5CWVRFUyBieXRlcyBvZiBz dHJpbmcgZGF0YS4gIE1VTFRJQllURQotICAgbWVhbnMgbWFrZSB0aGUgcmVzdWx0IHN0cmluZyBt dWx0aWJ5dGUuCi0KLSAgIE11c3QgZ2V0IGFuIGVycm9yIGlmIHB1cmUgc3RvcmFnZSBpcyBmdWxs LCBzaW5jZSBpZiBpdCBjYW5ub3QgaG9sZAotICAgYSBsYXJnZSBzdHJpbmcgaXQgbWF5IGJlIGFi bGUgdG8gaG9sZCBjb25zZXMgdGhhdCBwb2ludCB0byB0aGF0Ci0gICBzdHJpbmc7IHRoZW4gdGhl IHN0cmluZyBpcyBub3QgcHJvdGVjdGVkIGZyb20gZ2MuICAqLwotCi1MaXNwX09iamVjdAotbWFr ZV9wdXJlX3N0cmluZyAoY29uc3QgY2hhciAqZGF0YSwKLQkJICBwdHJkaWZmX3QgbmNoYXJzLCBw dHJkaWZmX3QgbmJ5dGVzLCBib29sIG11bHRpYnl0ZSkKLXsKLSAgTGlzcF9PYmplY3Qgc3RyaW5n OwotICBzdHJ1Y3QgTGlzcF9TdHJpbmcgKnMgPSBwdXJlX2FsbG9jIChzaXplb2YgKnMsIExpc3Bf U3RyaW5nKTsKLSAgcy0+dS5zLmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBmaW5kX3N0cmluZ19k YXRhX2luX3B1cmUgKGRhdGEsIG5ieXRlcyk7Ci0gIGlmIChzLT51LnMuZGF0YSA9PSBOVUxMKQot ICAgIHsKLSAgICAgIHMtPnUucy5kYXRhID0gcHVyZV9hbGxvYyAobmJ5dGVzICsgMSwgLTEpOwot ICAgICAgbWVtY3B5IChzLT51LnMuZGF0YSwgZGF0YSwgbmJ5dGVzKTsKLSAgICAgIHMtPnUucy5k YXRhW25ieXRlc10gPSAnXDAnOwotICAgIH0KLSAgcy0+dS5zLnNpemUgPSBuY2hhcnM7Ci0gIHMt PnUucy5zaXplX2J5dGUgPSBtdWx0aWJ5dGUgPyBuYnl0ZXMgOiAtMTsKLSAgcy0+dS5zLmludGVy dmFscyA9IE5VTEw7Ci0gIFhTRVRTVFJJTkcgKHN0cmluZywgcyk7Ci0gIHJldHVybiBzdHJpbmc7 Ci19Ci0KLS8qIFJldHVybiBhIHN0cmluZyBhbGxvY2F0ZWQgaW4gcHVyZSBzcGFjZS4gIERvIG5v dAotICAgYWxsb2NhdGUgdGhlIHN0cmluZyBkYXRhLCBqdXN0IHBvaW50IHRvIERBVEEuICAqLwot Ci1MaXNwX09iamVjdAotbWFrZV9wdXJlX2Nfc3RyaW5nIChjb25zdCBjaGFyICpkYXRhLCBwdHJk aWZmX3QgbmNoYXJzKQotewotICBMaXNwX09iamVjdCBzdHJpbmc7Ci0gIHN0cnVjdCBMaXNwX1N0 cmluZyAqcyA9IHB1cmVfYWxsb2MgKHNpemVvZiAqcywgTGlzcF9TdHJpbmcpOwotICBzLT51LnMu c2l6ZSA9IG5jaGFyczsKLSAgcy0+dS5zLnNpemVfYnl0ZSA9IC0yOwotICBzLT51LnMuZGF0YSA9 ICh1bnNpZ25lZCBjaGFyICopIGRhdGE7Ci0gIHMtPnUucy5pbnRlcnZhbHMgPSBOVUxMOwotICBY U0VUU1RSSU5HIChzdHJpbmcsIHMpOwotICByZXR1cm4gc3RyaW5nOwotfQotCi1zdGF0aWMgTGlz cF9PYmplY3QgcHVyZWNvcHkgKExpc3BfT2JqZWN0IG9iaik7Ci0KLS8qIFJldHVybiBhIGNvbnMg YWxsb2NhdGVkIGZyb20gcHVyZSBzcGFjZS4gIEdpdmUgaXQgcHVyZSBjb3BpZXMKLSAgIG9mIENB UiBhcyBjYXIgYW5kIENEUiBhcyBjZHIuICAqLwotCi1MaXNwX09iamVjdAotcHVyZV9jb25zIChM aXNwX09iamVjdCBjYXIsIExpc3BfT2JqZWN0IGNkcikKLXsKLSAgTGlzcF9PYmplY3QgbmV3Owot ICBzdHJ1Y3QgTGlzcF9Db25zICpwID0gcHVyZV9hbGxvYyAoc2l6ZW9mICpwLCBMaXNwX0NvbnMp OwotICBYU0VUQ09OUyAobmV3LCBwKTsKLSAgWFNFVENBUiAobmV3LCBwdXJlY29weSAoY2FyKSk7 Ci0gIFhTRVRDRFIgKG5ldywgcHVyZWNvcHkgKGNkcikpOwotICByZXR1cm4gbmV3OwotfQotCi0K LS8qIFZhbHVlIGlzIGEgZmxvYXQgb2JqZWN0IHdpdGggdmFsdWUgTlVNIGFsbG9jYXRlZCBmcm9t IHB1cmUgc3BhY2UuICAqLwotCi1zdGF0aWMgTGlzcF9PYmplY3QKLW1ha2VfcHVyZV9mbG9hdCAo ZG91YmxlIG51bSkKLXsKLSAgTGlzcF9PYmplY3QgbmV3OwotICBzdHJ1Y3QgTGlzcF9GbG9hdCAq cCA9IHB1cmVfYWxsb2MgKHNpemVvZiAqcCwgTGlzcF9GbG9hdCk7Ci0gIFhTRVRGTE9BVCAobmV3 LCBwKTsKLSAgWEZMT0FUX0lOSVQgKG5ldywgbnVtKTsKLSAgcmV0dXJuIG5ldzsKLX0KLQotLyog VmFsdWUgaXMgYSBiaWdudW0gb2JqZWN0IHdpdGggdmFsdWUgVkFMVUUgYWxsb2NhdGVkIGZyb20g cHVyZQotICAgc3BhY2UuICAqLwotCiBzdGF0aWMgTGlzcF9PYmplY3QKLW1ha2VfcHVyZV9iaWdu dW0gKExpc3BfT2JqZWN0IHZhbHVlKQotewotICBtcHpfdCBjb25zdCAqbiA9IHhiaWdudW1fdmFs ICh2YWx1ZSk7Ci0gIHNpemVfdCBpLCBubGltYnMgPSBtcHpfc2l6ZSAoKm4pOwotICBzaXplX3Qg bmJ5dGVzID0gbmxpbWJzICogc2l6ZW9mIChtcF9saW1iX3QpOwotICBtcF9saW1iX3QgKnB1cmVf bGltYnM7Ci0gIG1wX3NpemVfdCBuZXdfc2l6ZTsKLQotICBzdHJ1Y3QgTGlzcF9CaWdudW0gKmIg PSBwdXJlX2FsbG9jIChzaXplb2YgKmIsIExpc3BfVmVjdG9ybGlrZSk7Ci0gIFhTRVRQVkVDVFlQ RVNJWkUgKGIsIFBWRUNfQklHTlVNLCAwLCBWRUNTSVpFIChzdHJ1Y3QgTGlzcF9CaWdudW0pKTsK LQotICBpbnQgbGltYl9hbGlnbm1lbnQgPSBhbGlnbm9mIChtcF9saW1iX3QpOwotICBwdXJlX2xp bWJzID0gcHVyZV9hbGxvYyAobmJ5dGVzLCAtIGxpbWJfYWxpZ25tZW50KTsKLSAgZm9yIChpID0g MDsgaSA8IG5saW1iczsgKytpKQotICAgIHB1cmVfbGltYnNbaV0gPSBtcHpfZ2V0bGltYm4gKCpu LCBpKTsKLQotICBuZXdfc2l6ZSA9IG5saW1iczsKLSAgaWYgKG1wel9zZ24gKCpuKSA8IDApCi0g ICAgbmV3X3NpemUgPSAtbmV3X3NpemU7Ci0KLSAgbXB6X3JvaW5pdF9uIChiLT52YWx1ZSwgcHVy ZV9saW1icywgbmV3X3NpemUpOwotCi0gIHJldHVybiBtYWtlX2xpc3BfcHRyIChiLCBMaXNwX1Zl Y3Rvcmxpa2UpOwotfQotCi0vKiBSZXR1cm4gYSB2ZWN0b3Igd2l0aCByb29tIGZvciBMRU4gTGlz cF9PYmplY3RzIGFsbG9jYXRlZCBmcm9tCi0gICBwdXJlIHNwYWNlLiAgKi8KLQotc3RhdGljIExp c3BfT2JqZWN0Ci1tYWtlX3B1cmVfdmVjdG9yIChwdHJkaWZmX3QgbGVuKQotewotICBMaXNwX09i amVjdCBuZXc7Ci0gIHNpemVfdCBzaXplID0gaGVhZGVyX3NpemUgKyBsZW4gKiB3b3JkX3NpemU7 Ci0gIHN0cnVjdCBMaXNwX1ZlY3RvciAqcCA9IHB1cmVfYWxsb2MgKHNpemUsIExpc3BfVmVjdG9y bGlrZSk7Ci0gIFhTRVRWRUNUT1IgKG5ldywgcCk7Ci0gIFhWRUNUT1IgKG5ldyktPmhlYWRlci5z aXplID0gbGVuOwotICByZXR1cm4gbmV3OwotfQotCi0vKiBDb3B5IGFsbCBjb250ZW50cyBhbmQg cGFyYW1ldGVycyBvZiBUQUJMRSB0byBhIG5ldyB0YWJsZSBhbGxvY2F0ZWQKLSAgIGZyb20gcHVy ZSBzcGFjZSwgcmV0dXJuIHRoZSBwdXJpZmllZCB0YWJsZS4gICovCi1zdGF0aWMgc3RydWN0IExp c3BfSGFzaF9UYWJsZSAqCi1wdXJlY29weV9oYXNoX3RhYmxlIChzdHJ1Y3QgTGlzcF9IYXNoX1Rh YmxlICp0YWJsZSkKLXsKLSAgZWFzc2VydCAoTklMUCAodGFibGUtPndlYWspKTsKLSAgZWFzc2Vy dCAodGFibGUtPnB1cmVjb3B5KTsKLQotICBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpwdXJlID0g cHVyZV9hbGxvYyAoc2l6ZW9mICpwdXJlLCBMaXNwX1ZlY3Rvcmxpa2UpOwotICBzdHJ1Y3QgaGFz aF90YWJsZV90ZXN0IHB1cmVfdGVzdCA9IHRhYmxlLT50ZXN0OwotCi0gIC8qIFB1cmVjb3B5IHRo ZSBoYXNoIHRhYmxlIHRlc3QuICAqLwotICBwdXJlX3Rlc3QubmFtZSA9IHB1cmVjb3B5ICh0YWJs ZS0+dGVzdC5uYW1lKTsKLSAgcHVyZV90ZXN0LnVzZXJfaGFzaF9mdW5jdGlvbiA9IHB1cmVjb3B5 ICh0YWJsZS0+dGVzdC51c2VyX2hhc2hfZnVuY3Rpb24pOwotICBwdXJlX3Rlc3QudXNlcl9jbXBf ZnVuY3Rpb24gPSBwdXJlY29weSAodGFibGUtPnRlc3QudXNlcl9jbXBfZnVuY3Rpb24pOwotCi0g IHB1cmUtPmhlYWRlciA9IHRhYmxlLT5oZWFkZXI7Ci0gIHB1cmUtPndlYWsgPSBwdXJlY29weSAo UW5pbCk7Ci0gIHB1cmUtPmhhc2ggPSBwdXJlY29weSAodGFibGUtPmhhc2gpOwotICBwdXJlLT5u ZXh0ID0gcHVyZWNvcHkgKHRhYmxlLT5uZXh0KTsKLSAgcHVyZS0+aW5kZXggPSBwdXJlY29weSAo dGFibGUtPmluZGV4KTsKLSAgcHVyZS0+Y291bnQgPSB0YWJsZS0+Y291bnQ7Ci0gIHB1cmUtPm5l eHRfZnJlZSA9IHRhYmxlLT5uZXh0X2ZyZWU7Ci0gIHB1cmUtPnB1cmVjb3B5ID0gdGFibGUtPnB1 cmVjb3B5OwotICBlYXNzZXJ0ICghcHVyZS0+bXV0YWJsZSk7Ci0gIHB1cmUtPnJlaGFzaF90aHJl c2hvbGQgPSB0YWJsZS0+cmVoYXNoX3RocmVzaG9sZDsKLSAgcHVyZS0+cmVoYXNoX3NpemUgPSB0 YWJsZS0+cmVoYXNoX3NpemU7Ci0gIHB1cmUtPmtleV9hbmRfdmFsdWUgPSBwdXJlY29weSAodGFi bGUtPmtleV9hbmRfdmFsdWUpOwotICBwdXJlLT50ZXN0ID0gcHVyZV90ZXN0OwotCi0gIHJldHVy biBwdXJlOwotfQorcHVyZWNvcHkgKExpc3BfT2JqZWN0IG9iaik7CiAKIERFRlVOICgicHVyZWNv cHkiLCBGcHVyZWNvcHksIFNwdXJlY29weSwgMSwgMSwgMCwKICAgICAgICBkb2M6IC8qIE1ha2Ug YSBjb3B5IG9mIG9iamVjdCBPQkogaW4gcHVyZSBzdG9yYWdlLgpAQCAtNTUxNCwxMDAgKzUxNzUs MjMgQEAgREVGVU4gKCJwdXJlY29weSIsIEZwdXJlY29weSwgU3B1cmVjb3B5LCAxLCAxLCAwLAog ICAgIHJldHVybiBwdXJlY29weSAob2JqKTsKIH0KIAotLyogUGlubmVkIG9iamVjdHMgYXJlIG1h cmtlZCBiZWZvcmUgZXZlcnkgR0MgY3ljbGUuICAqLwotc3RhdGljIHN0cnVjdCBwaW5uZWRfb2Jq ZWN0Ci17Ci0gIExpc3BfT2JqZWN0IG9iamVjdDsKLSAgc3RydWN0IHBpbm5lZF9vYmplY3QgKm5l eHQ7Ci19ICpwaW5uZWRfb2JqZWN0czsKLQogc3RhdGljIExpc3BfT2JqZWN0CiBwdXJlY29weSAo TGlzcF9PYmplY3Qgb2JqKQogewotICBpZiAoRklYTlVNUCAob2JqKQotICAgICAgfHwgKCEgU1lN Qk9MUCAob2JqKSAmJiBQVVJFX1AgKFhQTlRSIChvYmopKSkKLSAgICAgIHx8IFNVQlJQIChvYmop KQorICBpZiAoRklYTlVNUCAob2JqKSB8fCBTVUJSUCAob2JqKSkKICAgICByZXR1cm4gb2JqOyAg ICAvKiBBbHJlYWR5IHB1cmUuICAqLwogCi0gIGlmIChTVFJJTkdQIChvYmopICYmIFhTVFJJTkcg KG9iaiktPnUucy5pbnRlcnZhbHMpCi0gICAgbWVzc2FnZV93aXRoX3N0cmluZyAoIkRyb3BwaW5n IHRleHQtcHJvcGVydGllcyB3aGlsZSBtYWtpbmcgc3RyaW5nIGAlcycgcHVyZSIsCi0JCQkgb2Jq LCB0cnVlKTsKLQogICBpZiAoSEFTSF9UQUJMRV9QIChWcHVyaWZ5X2ZsYWcpKSAvKiBIYXNoIGNv bnNpbmcuICAqLwogICAgIHsKICAgICAgIExpc3BfT2JqZWN0IHRtcCA9IEZnZXRoYXNoIChvYmos IFZwdXJpZnlfZmxhZywgUW5pbCk7CiAgICAgICBpZiAoIU5JTFAgKHRtcCkpCiAJcmV0dXJuIHRt cDsKKyAgICAgIEZwdXRoYXNoIChvYmosIG9iaiwgVnB1cmlmeV9mbGFnKTsKICAgICB9CiAKLSAg aWYgKENPTlNQIChvYmopKQotICAgIG9iaiA9IHB1cmVfY29ucyAoWENBUiAob2JqKSwgWENEUiAo b2JqKSk7Ci0gIGVsc2UgaWYgKEZMT0FUUCAob2JqKSkKLSAgICBvYmogPSBtYWtlX3B1cmVfZmxv YXQgKFhGTE9BVF9EQVRBIChvYmopKTsKLSAgZWxzZSBpZiAoU1RSSU5HUCAob2JqKSkKLSAgICBv YmogPSBtYWtlX3B1cmVfc3RyaW5nIChTU0RBVEEgKG9iaiksIFNDSEFSUyAob2JqKSwKLQkJCSAg ICBTQllURVMgKG9iaiksCi0JCQkgICAgU1RSSU5HX01VTFRJQllURSAob2JqKSk7Ci0gIGVsc2Ug aWYgKEhBU0hfVEFCTEVfUCAob2JqKSkKLSAgICB7Ci0gICAgICBzdHJ1Y3QgTGlzcF9IYXNoX1Rh YmxlICp0YWJsZSA9IFhIQVNIX1RBQkxFIChvYmopOwotICAgICAgLyogRG8gbm90IHB1cmlmeSBo YXNoIHRhYmxlcyB3aGljaCBoYXZlbid0IGJlZW4gZGVmaW5lZCB3aXRoCi0gICAgICAgICA6cHVy ZWNvcHkgYXMgbm9uLW5pbCBvciBhcmUgd2VhayAtIHRoZXkgYXJlbid0IGd1YXJhbnRlZWQgdG8K LSAgICAgICAgIG5vdCBjaGFuZ2UuICAqLwotICAgICAgaWYgKCFOSUxQICh0YWJsZS0+d2Vhaykg fHwgIXRhYmxlLT5wdXJlY29weSkKLSAgICAgICAgewotICAgICAgICAgIC8qIEluc3RlYWQsIGFk ZCB0aGUgaGFzaCB0YWJsZSB0byB0aGUgbGlzdCBvZiBwaW5uZWQgb2JqZWN0cywKLSAgICAgICAg ICAgICBzbyB0aGF0IGl0IHdpbGwgYmUgbWFya2VkIGR1cmluZyBHQy4gICovCi0gICAgICAgICAg c3RydWN0IHBpbm5lZF9vYmplY3QgKm8gPSB4bWFsbG9jIChzaXplb2YgKm8pOwotICAgICAgICAg IG8tPm9iamVjdCA9IG9iajsKLSAgICAgICAgICBvLT5uZXh0ID0gcGlubmVkX29iamVjdHM7Ci0g ICAgICAgICAgcGlubmVkX29iamVjdHMgPSBvOwotICAgICAgICAgIHJldHVybiBvYmo7IC8qIERv bid0IGhhc2ggY29ucyBpdC4gICovCi0gICAgICAgIH0KLQotICAgICAgc3RydWN0IExpc3BfSGFz aF9UYWJsZSAqaCA9IHB1cmVjb3B5X2hhc2hfdGFibGUgKHRhYmxlKTsKLSAgICAgIFhTRVRfSEFT SF9UQUJMRSAob2JqLCBoKTsKLSAgICB9Ci0gIGVsc2UgaWYgKENPTVBJTEVEUCAob2JqKSB8fCBW RUNUT1JQIChvYmopIHx8IFJFQ09SRFAgKG9iaikpCi0gICAgewotICAgICAgc3RydWN0IExpc3Bf VmVjdG9yICpvYmpwID0gWFZFQ1RPUiAob2JqKTsKLSAgICAgIHB0cmRpZmZfdCBuYnl0ZXMgPSB2 ZWN0b3JfbmJ5dGVzIChvYmpwKTsKLSAgICAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqdmVjID0gcHVy ZV9hbGxvYyAobmJ5dGVzLCBMaXNwX1ZlY3Rvcmxpa2UpOwotICAgICAgcmVnaXN0ZXIgcHRyZGlm Zl90IGk7Ci0gICAgICBwdHJkaWZmX3Qgc2l6ZSA9IEFTSVpFIChvYmopOwotICAgICAgaWYgKHNp emUgJiBQU0VVRE9WRUNUT1JfRkxBRykKLQlzaXplICY9IFBTRVVET1ZFQ1RPUl9TSVpFX01BU0s7 Ci0gICAgICBtZW1jcHkgKHZlYywgb2JqcCwgbmJ5dGVzKTsKLSAgICAgIGZvciAoaSA9IDA7IGkg PCBzaXplOyBpKyspCi0JdmVjLT5jb250ZW50c1tpXSA9IHB1cmVjb3B5ICh2ZWMtPmNvbnRlbnRz W2ldKTsKLSAgICAgIFhTRVRWRUNUT1IgKG9iaiwgdmVjKTsKLSAgICB9Ci0gIGVsc2UgaWYgKFNZ TUJPTFAgKG9iaikpCi0gICAgewotICAgICAgaWYgKCFYU1lNQk9MIChvYmopLT51LnMucGlubmVk ICYmICFjX3N5bWJvbF9wIChYU1lNQk9MIChvYmopKSkKLQl7IC8qIFdlIGNhbid0IHB1cmlmeSB0 aGVtLCBidXQgdGhleSBhcHBlYXIgaW4gbWFueSBwdXJlIG9iamVjdHMuCi0JICAgICBNYXJrIHRo ZW0gYXMgYHBpbm5lZCcgc28gd2Uga25vdyB0byBtYXJrIHRoZW0gYXQgZXZlcnkgR0MgY3ljbGUu ICAqLwotCSAgWFNZTUJPTCAob2JqKS0+dS5zLnBpbm5lZCA9IHRydWU7Ci0JICBzeW1ib2xfYmxv Y2tfcGlubmVkID0gc3ltYm9sX2Jsb2NrOwotCX0KLSAgICAgIC8qIERvbid0IGhhc2gtY29ucyBp dC4gICovCi0gICAgICByZXR1cm4gb2JqOwotICAgIH0KLSAgZWxzZSBpZiAoQklHTlVNUCAob2Jq KSkKLSAgICBvYmogPSBtYWtlX3B1cmVfYmlnbnVtIChvYmopOwotICBlbHNlCi0gICAgewotICAg ICAgQVVUT19TVFJJTkcgKGZtdCwgIkRvbid0IGtub3cgaG93IHRvIHB1cmlmeTogJVMiKTsKLSAg ICAgIEZzaWduYWwgKFFlcnJvciwgbGlzdDEgKENBTExOIChGZm9ybWF0LCBmbXQsIG9iaikpKTsK LSAgICB9Ci0KLSAgaWYgKEhBU0hfVEFCTEVfUCAoVnB1cmlmeV9mbGFnKSkgLyogSGFzaCBjb25z aW5nLiAgKi8KLSAgICBGcHV0aGFzaCAob2JqLCBvYmosIFZwdXJpZnlfZmxhZyk7Ci0KICAgcmV0 dXJuIG9iajsKIH0KIAotCiAMCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAkJCSAgUHJvdGVjdGlvbiBmcm9t IEdDCkBAIC01Nzk4LDMxICs1MzgyLDYgQEAgY29tcGFjdF91bmRvX2xpc3QgKExpc3BfT2JqZWN0 IGxpc3QpCiAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgdm9pZAotbWFya19waW5uZWRfb2Jq ZWN0cyAodm9pZCkKLXsKLSAgZm9yIChzdHJ1Y3QgcGlubmVkX29iamVjdCAqcG9iaiA9IHBpbm5l ZF9vYmplY3RzOyBwb2JqOyBwb2JqID0gcG9iai0+bmV4dCkKLSAgICBtYXJrX29iamVjdCAocG9i ai0+b2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQKLW1hcmtfcGlubmVkX3N5bWJvbHMgKHZvaWQp Ci17Ci0gIHN0cnVjdCBzeW1ib2xfYmxvY2sgKnNibGs7Ci0gIGludCBsaW0gPSAoc3ltYm9sX2Js b2NrX3Bpbm5lZCA9PSBzeW1ib2xfYmxvY2sKLQkgICAgID8gc3ltYm9sX2Jsb2NrX2luZGV4IDog U1lNQk9MX0JMT0NLX1NJWkUpOwotCi0gIGZvciAoc2JsayA9IHN5bWJvbF9ibG9ja19waW5uZWQ7 IHNibGs7IHNibGsgPSBzYmxrLT5uZXh0KQotICAgIHsKLSAgICAgIHN0cnVjdCBMaXNwX1N5bWJv bCAqc3ltID0gc2Jsay0+c3ltYm9scywgKmVuZCA9IHN5bSArIGxpbTsKLSAgICAgIGZvciAoOyBz eW0gPCBlbmQ7ICsrc3ltKQotCWlmIChzeW0tPnUucy5waW5uZWQpCi0JICBtYXJrX29iamVjdCAo bWFrZV9saXNwX3N5bWJvbCAoc3ltKSk7Ci0KLSAgICAgIGxpbSA9IFNZTUJPTF9CTE9DS19TSVpF OwotICAgIH0KLX0KLQogc3RhdGljIHZvaWQKIHZpc2l0X3ZlY3Rvcmxpa2Vfcm9vdCAoc3RydWN0 IGdjX3Jvb3RfdmlzaXRvciB2aXNpdG9yLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg TGlzcF9WZWN0b3IgKnB0ciwKQEAgLTYwODMsOCArNTY0Miw2IEBAIGdhcmJhZ2VfY29sbGVjdCAo dm9pZCkKICAgc3RydWN0IGdjX3Jvb3RfdmlzaXRvciB2aXNpdG9yID0geyAudmlzaXQgPSBtYXJr X29iamVjdF9yb290X3Zpc2l0b3IgfTsKICAgdmlzaXRfc3RhdGljX2djX3Jvb3RzICh2aXNpdG9y KTsKIAotICBtYXJrX3Bpbm5lZF9vYmplY3RzICgpOwotICBtYXJrX3Bpbm5lZF9zeW1ib2xzICgp OwogICBtYXJrX3Rlcm1pbmFscyAoKTsKICAgbWFya19rYm9hcmRzICgpOwogICBtYXJrX3RocmVh ZHMgKCk7CkBAIC02MTkzLDEwICs1NzUwLDYgQEAgREVGVU4gKCJnYXJiYWdlLWNvbGxlY3QiLCBG Z2FyYmFnZV9jb2xsZWN0LCBTZ2FyYmFnZV9jb2xsZWN0LCAwLCAwLCAiIiwKICAga2VlcHMgYXJv dW5kIGZvciBmdXR1cmUgYWxsb2NhdGlvbnMgKG1heWJlIGJlY2F1c2UgaXQgZG9lcyBub3Qga25v dyBob3cKICAgdG8gcmV0dXJuIHRoZW0gdG8gdGhlIE9TKS4KIAotSG93ZXZlciwgaWYgdGhlcmUg d2FzIG92ZXJmbG93IGluIHB1cmUgc3BhY2UsIGFuZCBFbWFjcyB3YXMgZHVtcGVkCi11c2luZyB0 aGUgJ3VuZXhlYycgbWV0aG9kLCBgZ2FyYmFnZS1jb2xsZWN0JyByZXR1cm5zIG5pbCwgYmVjYXVz ZQotcmVhbCBHQyBjYW4ndCBiZSBkb25lLgotCiBOb3RlIHRoYXQgY2FsbGluZyB0aGlzIGZ1bmN0 aW9uIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IGFic29sdXRlbHkgYWxsCiB1bnJlYWNoYWJsZSBv YmplY3RzIHdpbGwgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuICBFbWFjcyB1c2VzIGEKIG1hcmstYW5k LXN3ZWVwIGdhcmJhZ2UgY29sbGVjdG9yLCBidXQgaXMgY29uc2VydmF0aXZlIHdoZW4gaXQgY29t ZXMgdG8KQEAgLTY1NjYsOCArNjExOSw4IEBAIG1hcmtfb2JqZWN0cyAoTGlzcF9PYmplY3QgKm9i aiwgcHRyZGlmZl90IG4pCiBtYXJrX29iamVjdCAoTGlzcF9PYmplY3QgYXJnKQogewogICByZWdp c3RlciBMaXNwX09iamVjdCBvYmo7Ci0gIHZvaWQgKnBvOwogI2lmIEdDX0NIRUNLX01BUktFRF9P QkpFQ1RTCisgIHZvaWQgKnBvOwogICBzdHJ1Y3QgbWVtX25vZGUgKm0gPSBOVUxMOwogI2VuZGlm CiAgIHB0cmRpZmZfdCBjZHJfY291bnQgPSAwOwpAQCAtNjU3NSwxMCArNjEyOCw2IEBAIG1hcmtf b2JqZWN0IChMaXNwX09iamVjdCBhcmcpCiAgIG9iaiA9IGFyZzsKICBsb29wOgogCi0gIHBvID0g WFBOVFIgKG9iaik7Ci0gIGlmIChQVVJFX1AgKHBvKSkKLSAgICByZXR1cm47Ci0KICAgbGFzdF9t YXJrZWRbbGFzdF9tYXJrZWRfaW5kZXgrK10gPSBvYmo7CiAgIGxhc3RfbWFya2VkX2luZGV4ICY9 IExBU1RfTUFSS0VEX1NJWkUgLSAxOwogCkBAIC02NTg3LDYgKzYxMzYsOCBAQCBtYXJrX29iamVj dCAoTGlzcF9PYmplY3QgYXJnKQogICAgICBieSB+ODAlLiAgKi8KICNpZiBHQ19DSEVDS19NQVJL RURfT0JKRUNUUwogCisgIHBvID0gWFBOVFIgKG9iaik7CisKICAgLyogQ2hlY2sgdGhhdCB0aGUg b2JqZWN0IHBvaW50ZWQgdG8gYnkgUE8gaXMga25vd24gdG8gYmUgYSBMaXNwCiAgICAgIHN0cnVj dHVyZSBhbGxvY2F0ZWQgZnJvbSB0aGUgaGVhcC4gICovCiAjZGVmaW5lIENIRUNLX0FMTE9DQVRF RCgpCQkJXApAQCAtNjc3MSwxMSArNjMyMiwxMCBAQCAjZGVmaW5lIENIRUNLX0FMTE9DQVRFRF9B TkRfTElWRV9TWU1CT0woKQkJKCh2b2lkKSAwKQogCSAgICBicmVhazsKIAkgIGRlZmF1bHQ6IGVt YWNzX2Fib3J0ICgpOwogCSAgfQotCWlmICghUFVSRV9QIChYU1RSSU5HIChwdHItPnUucy5uYW1l KSkpCi0gICAgICAgICAgc2V0X3N0cmluZ19tYXJrZWQgKFhTVFJJTkcgKHB0ci0+dS5zLm5hbWUp KTsKKwlzZXRfc3RyaW5nX21hcmtlZCAoWFNUUklORyAocHRyLT51LnMubmFtZSkpOwogICAgICAg ICBtYXJrX2ludGVydmFsX3RyZWUgKHN0cmluZ19pbnRlcnZhbHMgKHB0ci0+dS5zLm5hbWUpKTsK IAkvKiBJbm5lciBsb29wIHRvIG1hcmsgbmV4dCBzeW1ib2wgaW4gdGhpcyBidWNrZXQsIGlmIGFu eS4gICovCi0JcG8gPSBwdHIgPSBwdHItPnUucy5uZXh0OworCXB0ciA9IHB0ci0+dS5zLm5leHQ7 CiAJaWYgKHB0cikKIAkgIGdvdG8gbmV4dHN5bTsKICAgICAgIH0KQEAgLTY4ODYsNyArNjQzNiw3 IEBAIHN1cnZpdmVzX2djX3AgKExpc3BfT2JqZWN0IG9iaikKICAgICAgIGVtYWNzX2Fib3J0ICgp OwogICAgIH0KIAotICByZXR1cm4gc3Vydml2ZXNfcCB8fCBQVVJFX1AgKFhQTlRSIChvYmopKTsK KyAgcmV0dXJuIHN1cnZpdmVzX3A7CiB9CiAKIApAQCAtNzQ3NCw4ICs3MDI0LDYgQEAgaW5pdF9h bGxvY19vbmNlICh2b2lkKQogc3RhdGljIHZvaWQKIGluaXRfYWxsb2Nfb25jZV9mb3JfcGR1bXBl ciAodm9pZCkKIHsKLSAgcHVyZWJlZyA9IFBVUkVCRUc7Ci0gIHB1cmVfc2l6ZSA9IFBVUkVTSVpF OwogICBtZW1faW5pdCAoKTsKIAogI2lmZGVmIERPVUdfTEVBX01BTExPQwpAQCAtNzUxOSw3ICs3 MDY3LDcgQEAgc3ltc19vZl9hbGxvYyAodm9pZCkKICAgVmdjX2NvbnNfcGVyY2VudGFnZSA9IG1h a2VfZmxvYXQgKDAuMSk7CiAKICAgREVGVkFSX0lOVCAoInB1cmUtYnl0ZXMtdXNlZCIsIHB1cmVf Ynl0ZXNfdXNlZCwKLQkgICAgICBkb2M6IC8qIE51bWJlciBvZiBieXRlcyBvZiBzaGFyZWFibGUg TGlzcCBkYXRhIGFsbG9jYXRlZCBzbyBmYXIuICAqLyk7CisJICAgICAgZG9jOiAvKiBObyBsb25n ZXIgdXNlZC4gICovKTsKIAogICBERUZWQVJfSU5UICgiY29ucy1jZWxscy1jb25zZWQiLCBjb25z X2NlbGxzX2NvbnNlZCwKIAkgICAgICBkb2M6IC8qIE51bWJlciBvZiBjb25zIGNlbGxzIHRoYXQg aGF2ZSBiZWVuIGNvbnNlZCBzbyBmYXIuICAqLyk7CkBAIC03NTQ0LDEwICs3MDkyLDcgQEAgc3lt c19vZl9hbGxvYyAodm9pZCkKIAkgICAgICBkb2M6IC8qIE51bWJlciBvZiBzdHJpbmdzIHRoYXQg aGF2ZSBiZWVuIGNvbnNlZCBzbyBmYXIuICAqLyk7CiAKICAgREVGVkFSX0xJU1AgKCJwdXJpZnkt ZmxhZyIsIFZwdXJpZnlfZmxhZywKLQkgICAgICAgZG9jOiAvKiBOb24tbmlsIG1lYW5zIGxvYWRp bmcgTGlzcCBjb2RlIGluIG9yZGVyIHRvIGR1bXAgYW4gZXhlY3V0YWJsZS4KLVRoaXMgbWVhbnMg dGhhdCBjZXJ0YWluIG9iamVjdHMgc2hvdWxkIGJlIGFsbG9jYXRlZCBpbiBzaGFyZWQgKHB1cmUp IHNwYWNlLgotSXQgY2FuIGFsc28gYmUgc2V0IHRvIGEgaGFzaC10YWJsZSwgaW4gd2hpY2ggY2Fz ZSB0aGlzIHRhYmxlIGlzIHVzZWQgdG8KLWRvIGhhc2gtY29uc2luZyBvZiB0aGUgb2JqZWN0cyBh bGxvY2F0ZWQgdG8gcHVyZSBzcGFjZS4gICovKTsKKwkgICAgICAgZG9jOiAvKiBObyBsb25nZXIg dXNlZC4gICovKTsKIAogICBERUZWQVJfQk9PTCAoImdhcmJhZ2UtY29sbGVjdGlvbi1tZXNzYWdl cyIsIGdhcmJhZ2VfY29sbGVjdGlvbl9tZXNzYWdlcywKIAkgICAgICAgZG9jOiAvKiBOb24tbmls IG1lYW5zIGRpc3BsYXkgbWVzc2FnZXMgYXQgc3RhcnQgYW5kIGVuZCBvZiBnYXJiYWdlIGNvbGxl Y3Rpb24uICAqLyk7CkBAIC03NTYzLDEwICs3MTA4LDEwIEBAIHN5bXNfb2ZfYWxsb2MgKHZvaWQp CiAgIC8qIFdlIGJ1aWxkIHRoaXMgaW4gYWR2YW5jZSBiZWNhdXNlIGlmIHdlIHdhaXQgdW50aWwg d2UgbmVlZCBpdCwgd2UgbWlnaHQKICAgICAgbm90IGJlIGFibGUgdG8gYWxsb2NhdGUgdGhlIG1l bW9yeSB0byBob2xkIGl0LiAgKi8KICAgVm1lbW9yeV9zaWduYWxfZGF0YQotICAgID0gcHVyZV9s aXN0IChRZXJyb3IsCi0JCSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiTWVtb3J5IGV4aGF1c3RlZC0t dXNlIgotCQkJCSAgICAgICIgTS14IHNhdmUtc29tZS1idWZmZXJzIHRoZW4iCi0JCQkJICAgICAg IiBleGl0IGFuZCByZXN0YXJ0IEVtYWNzIikpOworICAgID0gbGlzdCAoUWVycm9yLAorCSAgICBi dWlsZF9zdHJpbmcgKCJNZW1vcnkgZXhoYXVzdGVkLS11c2UiCisJCQkgICIgTS14IHNhdmUtc29t ZS1idWZmZXJzIHRoZW4iCisJCQkgICIgZXhpdCBhbmQgcmVzdGFydCBFbWFjcyIpKTsKIAogICBE RUZWQVJfTElTUCAoIm1lbW9yeS1mdWxsIiwgVm1lbW9yeV9mdWxsLAogCSAgICAgICBkb2M6IC8q IE5vbi1uaWwgbWVhbnMgRW1hY3MgY2Fubm90IGdldCBtdWNoIG1vcmUgTGlzcCBtZW1vcnkuICAq Lyk7CmRpZmYgLS1naXQgYS9zcmMvYnVmZmVyLmMgYi9zcmMvYnVmZmVyLmMKaW5kZXggNWJkOWIz NzcwMmYzZi4uNjljYjFhOGU5MDRhNCAxMDA2NDQKLS0tIGEvc3JjL2J1ZmZlci5jCisrKyBiL3Ny Yy9idWZmZXIuYwpAQCAtNTI2Niw4ICs1MjY2LDggQEAgaW5pdF9idWZmZXJfb25jZSAodm9pZCkK ICAgc2V0X2J1ZmZlcl9pbnRlcnZhbHMgKCZidWZmZXJfZGVmYXVsdHMsIE5VTEwpOwogICBzZXRf YnVmZmVyX2ludGVydmFscyAoJmJ1ZmZlcl9sb2NhbF9zeW1ib2xzLCBOVUxMKTsKICAgLyogVGhp cyBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgbGV0J3MgbWFrZSB0aGVtIGluaXRpYWxp emVkLiAgKi8KLSAgYnNldF9uYW1lICgmYnVmZmVyX2RlZmF1bHRzLCBidWlsZF9wdXJlX2Nfc3Ry aW5nICgiICpidWZmZXItZGVmYXVsdHMqIikpOwotICBic2V0X25hbWUgKCZidWZmZXJfbG9jYWxf c3ltYm9scywgYnVpbGRfcHVyZV9jX3N0cmluZyAoIiAqYnVmZmVyLWxvY2FsLXN5bWJvbHMqIikp OworICBic2V0X25hbWUgKCZidWZmZXJfZGVmYXVsdHMsIGJ1aWxkX3N0cmluZyAoIiAqYnVmZmVy LWRlZmF1bHRzKiIpKTsKKyAgYnNldF9uYW1lICgmYnVmZmVyX2xvY2FsX3N5bWJvbHMsIGJ1aWxk X3N0cmluZyAoIiAqYnVmZmVyLWxvY2FsLXN5bWJvbHMqIikpOwogICBCVUZGRVJfUFZFQ19JTklU ICgmYnVmZmVyX2RlZmF1bHRzKTsKICAgQlVGRkVSX1BWRUNfSU5JVCAoJmJ1ZmZlcl9sb2NhbF9z eW1ib2xzKTsKIApAQCAtNTI3NSw3ICs1Mjc1LDcgQEAgaW5pdF9idWZmZXJfb25jZSAodm9pZCkK ICAgLyogTXVzdCBkbyB0aGVzZSBiZWZvcmUgbWFraW5nIHRoZSBmaXJzdCBidWZmZXIhICovCiAK ICAgLyogcmVhbCBzZXR1cCBpcyBkb25lIGluIGJpbmRpbmdzLmVsICovCi0gIGJzZXRfbW9kZV9s aW5lX2Zvcm1hdCAoJmJ1ZmZlcl9kZWZhdWx0cywgYnVpbGRfcHVyZV9jX3N0cmluZyAoIiUtIikp OworICBic2V0X21vZGVfbGluZV9mb3JtYXQgKCZidWZmZXJfZGVmYXVsdHMsIGJ1aWxkX3N0cmlu ZyAoIiUtIikpOwogICBic2V0X2hlYWRlcl9saW5lX2Zvcm1hdCAoJmJ1ZmZlcl9kZWZhdWx0cywg UW5pbCk7CiAgIGJzZXRfdGFiX2xpbmVfZm9ybWF0ICgmYnVmZmVyX2RlZmF1bHRzLCBRbmlsKTsK ICAgYnNldF9hYmJyZXZfbW9kZSAoJmJ1ZmZlcl9kZWZhdWx0cywgUW5pbCk7CkBAIC01MzQyLDcg KzUzNDIsNyBAQCBpbml0X2J1ZmZlcl9vbmNlICh2b2lkKQogICBjdXJyZW50X2J1ZmZlciA9IDA7 CiAgIHBkdW1wZXJfcmVtZW1iZXJfbHZfcHRyX3JhdyAoJmN1cnJlbnRfYnVmZmVyLCBMaXNwX1Zl Y3Rvcmxpa2UpOwogCi0gIFFTRnVuZGFtZW50YWwgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiRnVu ZGFtZW50YWwiKTsKKyAgUVNGdW5kYW1lbnRhbCA9IGJ1aWxkX3N0cmluZyAoIkZ1bmRhbWVudGFs Iik7CiAKICAgREVGU1lNIChRZnVuZGFtZW50YWxfbW9kZSwgImZ1bmRhbWVudGFsLW1vZGUiKTsK ICAgYnNldF9tYWpvcl9tb2RlICgmYnVmZmVyX2RlZmF1bHRzLCBRZnVuZGFtZW50YWxfbW9kZSk7 CkBAIC01MzU2LDEwICs1MzU2LDEwIEBAIGluaXRfYnVmZmVyX29uY2UgKHZvaWQpCiAKICAgLyog U3VwZXItbWFnaWMgaW52aXNpYmxlIGJ1ZmZlci4gICovCiAgIFZwcmluMV90b19zdHJpbmdfYnVm ZmVyID0KLSAgICBGZ2V0X2J1ZmZlcl9jcmVhdGUgKGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIgcHJp bjEiKSwgUXQpOworICAgIEZnZXRfYnVmZmVyX2NyZWF0ZSAoYnVpbGRfc3RyaW5nICgiIHByaW4x IiksIFF0KTsKICAgVmJ1ZmZlcl9hbGlzdCA9IFFuaWw7CiAKLSAgRnNldF9idWZmZXIgKEZnZXRf YnVmZmVyX2NyZWF0ZSAoYnVpbGRfcHVyZV9jX3N0cmluZyAoIipzY3JhdGNoKiIpLCBRbmlsKSk7 CisgIEZzZXRfYnVmZmVyIChGZ2V0X2J1ZmZlcl9jcmVhdGUgKGJ1aWxkX3N0cmluZyAoIipzY3Jh dGNoKiIpLCBRbmlsKSk7CiAKICAgaW5oaWJpdF9tb2RpZmljYXRpb25faG9va3MgPSAwOwogfQpA QCAtNTUzNCw5ICs1NTM0LDkgQEAgc3ltc19vZl9idWZmZXIgKHZvaWQpCiAJICAgICAgIFFvdmVy d3JpdGVfbW9kZV9iaW5hcnkpKTsKIAogICBGcHV0IChRcHJvdGVjdGVkX2ZpZWxkLCBRZXJyb3Jf Y29uZGl0aW9ucywKLQlwdXJlX2xpc3QgKFFwcm90ZWN0ZWRfZmllbGQsIFFlcnJvcikpOworCWxp c3QgKFFwcm90ZWN0ZWRfZmllbGQsIFFlcnJvcikpOwogICBGcHV0IChRcHJvdGVjdGVkX2ZpZWxk LCBRZXJyb3JfbWVzc2FnZSwKLQlidWlsZF9wdXJlX2Nfc3RyaW5nICgiQXR0ZW1wdCB0byBtb2Rp ZnkgYSBwcm90ZWN0ZWQgZmllbGQiKSk7CisJYnVpbGRfc3RyaW5nICgiQXR0ZW1wdCB0byBtb2Rp ZnkgYSBwcm90ZWN0ZWQgZmllbGQiKSk7CiAKICAgREVGVkFSX1BFUl9CVUZGRVIgKCJ0YWItbGlu ZS1mb3JtYXQiLAogCQkgICAgICZCVkFSIChjdXJyZW50X2J1ZmZlciwgdGFiX2xpbmVfZm9ybWF0 KSwKZGlmZiAtLWdpdCBhL3NyYy9jYWxsaW50LmMgYi9zcmMvY2FsbGludC5jCmluZGV4IDE4NjI0 NjM3ODQzZjIuLjhmOGE3NzEzMTA1NTcgMTAwNjQ0Ci0tLSBhL3NyYy9jYWxsaW50LmMKKysrIGIv c3JjL2NhbGxpbnQuYwpAQCAtODI0LDEwICs4MjQsMTAgQEAgc3ltc19vZl9jYWxsaW50ICh2b2lk KQogICBjYWxsaW50X21lc3NhZ2UgPSBRbmlsOwogICBzdGF0aWNwcm8gKCZjYWxsaW50X21lc3Nh Z2UpOwogCi0gIHByZXNlcnZlZF9mbnMgPSBwdXJlX2xpc3QgKGludGVybl9jX3N0cmluZyAoInJl Z2lvbi1iZWdpbm5pbmciKSwKLQkJCSAgICAgaW50ZXJuX2Nfc3RyaW5nICgicmVnaW9uLWVuZCIp LAotCQkJICAgICBpbnRlcm5fY19zdHJpbmcgKCJwb2ludCIpLAotCQkJICAgICBpbnRlcm5fY19z dHJpbmcgKCJtYXJrIikpOworICBwcmVzZXJ2ZWRfZm5zID0gbGlzdCAoaW50ZXJuX2Nfc3RyaW5n ICgicmVnaW9uLWJlZ2lubmluZyIpLAorCQkJaW50ZXJuX2Nfc3RyaW5nICgicmVnaW9uLWVuZCIp LAorCQkJaW50ZXJuX2Nfc3RyaW5nICgicG9pbnQiKSwKKwkJCWludGVybl9jX3N0cmluZyAoIm1h cmsiKSk7CiAgIHN0YXRpY3BybyAoJnByZXNlcnZlZF9mbnMpOwogCiAgIERFRlNZTSAoUWxpc3Qs ICJsaXN0Iik7CmRpZmYgLS1naXQgYS9zcmMvY2F0ZWdvcnkuYyBiL3NyYy9jYXRlZ29yeS5jCmlu ZGV4IGVjOGY2MWY3ZjAwMmYuLjkwN2RiMTQ1NTc3OGIgMTAwNjQ0Ci0tLSBhL3NyYy9jYXRlZ29y eS5jCisrKyBiL3NyYy9jYXRlZ29yeS5jCkBAIC01Myw3ICs1Myw3IEBAIGhhc2hfZ2V0X2NhdGVn b3J5X3NldCAoTGlzcF9PYmplY3QgdGFibGUsIExpc3BfT2JqZWN0IGNhdGVnb3J5X3NldCkKICAg ICAgICh0YWJsZSwgMSwKICAgICAgICBtYWtlX2hhc2hfdGFibGUgKGhhc2h0ZXN0X2VxdWFsLCBE RUZBVUxUX0hBU0hfU0laRSwKIAkJCURFRkFVTFRfUkVIQVNIX1NJWkUsIERFRkFVTFRfUkVIQVNI X1RIUkVTSE9MRCwKLQkJCVFuaWwsIGZhbHNlKSk7CisJCQlRbmlsKSk7CiAgIHN0cnVjdCBMaXNw X0hhc2hfVGFibGUgKmggPSBYSEFTSF9UQUJMRSAoWENIQVJfVEFCTEUgKHRhYmxlKS0+ZXh0cmFz WzFdKTsKICAgTGlzcF9PYmplY3QgaGFzaDsKICAgcHRyZGlmZl90IGkgPSBoYXNoX2xvb2t1cCAo aCwgY2F0ZWdvcnlfc2V0LCAmaGFzaCk7CkBAIC0xMjAsOCArMTIwLDYgQEAgREVGVU4gKCJkZWZp bmUtY2F0ZWdvcnkiLCBGZGVmaW5lX2NhdGVnb3J5LCBTZGVmaW5lX2NhdGVnb3J5LCAyLCAzLCAw LAogCiAgIGlmICghTklMUCAoQ0FURUdPUllfRE9DU1RSSU5HICh0YWJsZSwgWEZJWE5BVCAoY2F0 ZWdvcnkpKSkpCiAgICAgZXJyb3IgKCJDYXRlZ29yeSBgJWMnIGlzIGFscmVhZHkgZGVmaW5lZCIs IChpbnQpIFhGSVhOQVQgKGNhdGVnb3J5KSk7Ci0gIGlmICghTklMUCAoVnB1cmlmeV9mbGFnKSkK LSAgICBkb2NzdHJpbmcgPSBGcHVyZWNvcHkgKGRvY3N0cmluZyk7CiAgIFNFVF9DQVRFR09SWV9E T0NTVFJJTkcgKHRhYmxlLCBYRklYTkFUIChjYXRlZ29yeSksIGRvY3N0cmluZyk7CiAKICAgcmV0 dXJuIFFuaWw7CmRpZmYgLS1naXQgYS9zcmMvY29kaW5nLmMgYi9zcmMvY29kaW5nLmMKaW5kZXgg NzM5ZGQ2YWRjYjVmYy4uYmY3ZDQ5MmY1NDZjNyAxMDA2NDQKLS0tIGEvc3JjL2NvZGluZy5jCisr KyBiL3NyYy9jb2RpbmcuYwpAQCAtMTE2NTAsNyArMTE2NTAsNyBAQCBzeW1zX29mX2NvZGluZyAo dm9pZCkKICAgVmNvZGVfY29udmVyc2lvbl9yZXVzZWRfd29ya2J1ZiA9IFFuaWw7CiAKICAgc3Rh dGljcHJvICgmVmNvZGVfY29udmVyc2lvbl93b3JrYnVmX25hbWUpOwotICBWY29kZV9jb252ZXJz aW9uX3dvcmtidWZfbmFtZSA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIgKmNvZGUtY29udmVyc2lv bi13b3JrKiIpOworICBWY29kZV9jb252ZXJzaW9uX3dvcmtidWZfbmFtZSA9IGJ1aWxkX3N0cmlu ZyAoIiAqY29kZS1jb252ZXJzaW9uLXdvcmsqIik7CiAKICAgcmV1c2VkX3dvcmtidWZfaW5fdXNl ID0gZmFsc2U7CiAgIFBEVU1QRVJfUkVNRU1CRVJfU0NBTEFSIChyZXVzZWRfd29ya2J1Zl9pbl91 c2UpOwpAQCAtMTE3MTQsOSArMTE3MTQsOSBAQCBzeW1zX29mX2NvZGluZyAodm9pZCkKICAgLyog RXJyb3Igc2lnbmFsZWQgd2hlbiB0aGVyZSdzIGEgcHJvYmxlbSB3aXRoIGRldGVjdGluZyBhIGNv ZGluZyBzeXN0ZW0uICAqLwogICBERUZTWU0gKFFjb2Rpbmdfc3lzdGVtX2Vycm9yLCAiY29kaW5n LXN5c3RlbS1lcnJvciIpOwogICBGcHV0IChRY29kaW5nX3N5c3RlbV9lcnJvciwgUWVycm9yX2Nv bmRpdGlvbnMsCi0JcHVyZV9saXN0IChRY29kaW5nX3N5c3RlbV9lcnJvciwgUWVycm9yKSk7CisJ bGlzdCAoUWNvZGluZ19zeXN0ZW1fZXJyb3IsIFFlcnJvcikpOwogICBGcHV0IChRY29kaW5nX3N5 c3RlbV9lcnJvciwgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIkludmFs aWQgY29kaW5nIHN5c3RlbSIpKTsKKwlidWlsZF9zdHJpbmcgKCJJbnZhbGlkIGNvZGluZyBzeXN0 ZW0iKSk7CiAKICAgREVGU1lNIChRdHJhbnNsYXRpb25fdGFibGUsICJ0cmFuc2xhdGlvbi10YWJs ZSIpOwogICBGcHV0IChRdHJhbnNsYXRpb25fdGFibGUsIFFjaGFyX3RhYmxlX2V4dHJhX3Nsb3Rz LCBtYWtlX2ZpeG51bSAoMikpOwpAQCAtMTE5OTEsMjIgKzExOTkxLDIyIEBAIHN5bXNfb2ZfY29k aW5nICh2b2lkKQogICBERUZWQVJfTElTUCAoImVvbC1tbmVtb25pYy11bml4IiwgZW9sX21uZW1v bmljX3VuaXgsCiAJICAgICAgIGRvYzogLyoKIFN0cmluZyBkaXNwbGF5ZWQgaW4gbW9kZSBsaW5l IGZvciBVTklYLWxpa2UgKExGKSBlbmQtb2YtbGluZSBmb3JtYXQuICAqLyk7Ci0gIGVvbF9tbmVt b25pY191bml4ID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoIjoiKTsKKyAgZW9sX21uZW1vbmljX3Vu aXggPSBidWlsZF9zdHJpbmcgKCI6Iik7CiAKICAgREVGVkFSX0xJU1AgKCJlb2wtbW5lbW9uaWMt ZG9zIiwgZW9sX21uZW1vbmljX2RvcywKIAkgICAgICAgZG9jOiAvKgogU3RyaW5nIGRpc3BsYXll ZCBpbiBtb2RlIGxpbmUgZm9yIERPUy1saWtlIChDUkxGKSBlbmQtb2YtbGluZSBmb3JtYXQuICAq Lyk7Ci0gIGVvbF9tbmVtb25pY19kb3MgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiXFwiKTsKKyAg ZW9sX21uZW1vbmljX2RvcyA9IGJ1aWxkX3N0cmluZyAoIlxcIik7CiAKICAgREVGVkFSX0xJU1Ag KCJlb2wtbW5lbW9uaWMtbWFjIiwgZW9sX21uZW1vbmljX21hYywKIAkgICAgICAgZG9jOiAvKgog U3RyaW5nIGRpc3BsYXllZCBpbiBtb2RlIGxpbmUgZm9yIE1BQy1saWtlIChDUikgZW5kLW9mLWxp bmUgZm9ybWF0LiAgKi8pOwotICBlb2xfbW5lbW9uaWNfbWFjID0gYnVpbGRfcHVyZV9jX3N0cmlu ZyAoIi8iKTsKKyAgZW9sX21uZW1vbmljX21hYyA9IGJ1aWxkX3N0cmluZyAoIi8iKTsKIAogICBE RUZWQVJfTElTUCAoImVvbC1tbmVtb25pYy11bmRlY2lkZWQiLCBlb2xfbW5lbW9uaWNfdW5kZWNp ZGVkLAogCSAgICAgICBkb2M6IC8qCiBTdHJpbmcgZGlzcGxheWVkIGluIG1vZGUgbGluZSB3aGVu IGVuZC1vZi1saW5lIGZvcm1hdCBpcyBub3QgeWV0IGRldGVybWluZWQuICAqLyk7Ci0gIGVvbF9t bmVtb25pY191bmRlY2lkZWQgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiOiIpOworICBlb2xfbW5l bW9uaWNfdW5kZWNpZGVkID0gYnVpbGRfc3RyaW5nICgiOiIpOwogCiAgIERFRlZBUl9MSVNQICgi ZW5hYmxlLWNoYXJhY3Rlci10cmFuc2xhdGlvbiIsIFZlbmFibGVfY2hhcmFjdGVyX3RyYW5zbGF0 aW9uLAogCSAgICAgICBkb2M6IC8qCkBAIC0xMjE0Niw3ICsxMjE0Niw3IEBAIHN5c3RlbSAoZS5n LiBgaXNvLTIwMjItN2JpdCcpLgogICAgICAgaW50ZXJuX2Nfc3RyaW5nICgiOmZvci11bmlieXRl IiksCiAgICAgICBhcmdzW2NvZGluZ19hcmdfZm9yX3VuaWJ5dGVdID0gUXQsCiAgICAgICBpbnRl cm5fY19zdHJpbmcgKCI6ZG9jc3RyaW5nIiksCi0gICAgICAoYnVpbGRfcHVyZV9jX3N0cmluZwor ICAgICAgKGJ1aWxkX3N0cmluZwogICAgICAgICgiRG8gbm8gY29udmVyc2lvbi5cbiIKIAkiXG4i CiAJIldoZW4geW91IHZpc2l0IGEgZmlsZSB3aXRoIHRoaXMgY29kaW5nLCB0aGUgZmlsZSBpcyBy ZWFkIGludG8gYVxuIgpAQCAtMTIxNjYsNyArMTIxNjYsNyBAQCBzeXN0ZW0gKGUuZy4gYGlzby0y MDIyLTdiaXQnKS4KICAgcGxpc3RbOF0gPSBpbnRlcm5fY19zdHJpbmcgKCI6Y2hhcnNldC1saXN0 Iik7CiAgIHBsaXN0WzldID0gYXJnc1tjb2RpbmdfYXJnX2NoYXJzZXRfbGlzdF0gPSBsaXN0MSAo UWFzY2lpKTsKICAgcGxpc3RbMTFdID0gYXJnc1tjb2RpbmdfYXJnX2Zvcl91bmlieXRlXSA9IFFu aWw7Ci0gIHBsaXN0WzEzXSA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJObyBjb252ZXJzaW9uIG9u IGVuY29kaW5nLCAiCisgIHBsaXN0WzEzXSA9IGJ1aWxkX3N0cmluZyAoIk5vIGNvbnZlcnNpb24g b24gZW5jb2RpbmcsICIKIAkJCQkgICAiYXV0b21hdGljIGNvbnZlcnNpb24gb24gZGVjb2Rpbmcu Iik7CiAgIHBsaXN0WzE1XSA9IGFyZ3NbY29kaW5nX2FyZ19lb2xfdHlwZV0gPSBRbmlsOwogICBh cmdzW2NvZGluZ19hcmdfcGxpc3RdID0gQ0FMTE1BTlkgKEZsaXN0LCBwbGlzdCk7CmRpZmYgLS1n aXQgYS9zcmMvY29uZl9wb3N0LmggYi9zcmMvY29uZl9wb3N0LmgKaW5kZXggMTc2YWIyOGIyMWFi Mi4uZGE1NWExZmI1NGFiYyAxMDA2NDQKLS0tIGEvc3JjL2NvbmZfcG9zdC5oCisrKyBiL3NyYy9j b25mX3Bvc3QuaApAQCAtMTYzLDQxICsxNjMsOCBAQCAjZGVmaW5lIGVtYWNzX3JhaXNlKHNpZykg bXNkb3NfZmF0YWxfc2lnbmFsIChzaWcpCiAKIC8qIERBVEFfU1RBUlQgaXMgbmVlZGVkIGJ5IHZt LWxpbWl0LmMgYW5kIHVuZXhjb2ZmLmMuICovCiAjZGVmaW5lIERBVEFfU1RBUlQgKCZldGV4dCAr IDEpCi0KLS8qIERlZmluZSBvbmUgb2YgdGhlc2UgZm9yIGVhc2llciBjb25kaXRpb25hbHMuICAq LwotI2lmZGVmIEhBVkVfWF9XSU5ET1dTCi0vKiBXZSBuZWVkIGEgbGl0dGxlIGV4dHJhIHNwYWNl LCBzZWUgLi4vLi4vbGlzcC9sb2FkdXAuZWwgYW5kIHRoZQotICAgY29tbWVudGFyeSBiZWxvdywg aW4gdGhlIG5vbi1YIGJyYW5jaC4gIFRoZSAxNDBLQiBudW1iZXIgd2FzCi0gICBtZWFzdXJlZCBv biBHTlUvTGludXggYW5kIG9uIE1TLVdpbmRvd3MuICAqLwotI2RlZmluZSBTWVNURU1fUFVSRVNJ WkVfRVhUUkEgKC0xNzAwMDArMTQwMDAwKQotI2Vsc2UKLS8qIFdlIG5lZWQgYSBsaXR0bGUgZXh0 cmEgc3BhY2UsIHNlZSAuLi8uLi9saXNwL2xvYWR1cC5lbC4KLSAgIEFzIG9mIDIwMDkxMDI0LCBE T1Mtc3BlY2lmaWMgZmlsZXMgdXNlIHVwIDYyS0Igb2YgcHVyZSBzcGFjZS4gIEJ1dAotICAgb3Zl cmFsbCwgd2UgZW5kIHVwIHdhc3RpbmcgMTMwS0Igb2YgcHVyZSBzcGFjZSwgYmVjYXVzZQotICAg QkFTRV9QVVJFU0laRSBzdGFydHMgYXQgMS40N01CLCB3aGlsZSB3ZSBuZWVkIG9ubHkgMS4zTUIg KGluY2x1ZGluZwotICAgbm9uLURPUyBzcGVjaWZpYyBmaWxlcyBhbmQgbG9hZCBoaXN0b3J5OyB0 aGUgbGF0dGVyIGlzIGFib3V0IDU1SywKLSAgIGJ1dCBkZXBlbmRzIG9uIHRoZSBkZXB0aCBvZiB0 aGUgdG9wLWxldmVsIEVtYWNzIGRpcmVjdG9yeSBpbiB0aGUKLSAgIGRpcmVjdG9yeSB0cmVlKS4g IEdpdmVuIHRoZSB1bmtub3duIHBvbGljeSBvZiBkaWZmZXJlbnQgRFBNSQotICAgaG9zdHMgcmVn YXJkaW5nIGxvYWRpbmcgb2YgdW50b3VjaGVkIHBhZ2VzLCBJJ20gbm90IGdvaW5nIHRvIHJpc2sK LSAgIGVubGFyZ2luZyBFbWFjcyBmb290cHJpbnQgYnkgYW5vdGhlciAxMDArIEtCeXRlcy4gICov Ci0jZGVmaW5lIFNZU1RFTV9QVVJFU0laRV9FWFRSQSAoLTE3MDAwMCs5MDAwMCkKLSNlbmRpZgog I2VuZGlmICAvKiBNU0RPUyAqLwogCi0vKiBtYWNPUyAvIEdOVXN0ZXAgbmVlZCBhIGJpdCBtb3Jl IHB1cmUgbWVtb3J5LiAgT2YgdGhlIGV4aXN0aW5nIGtub2JzLAotICAgU1lTVEVNX1BVUkVTSVpF X0VYVFJBIHNlZW1zIGxpa2UgdGhlIGxlYXN0IGxpa2VseSB0byBjYXVzZSBwcm9ibGVtcy4gICov Ci0jaWZkZWYgSEFWRV9OUwotI2lmIGRlZmluZWQgTlNfSU1QTF9HTlVTVEVQCi0jICBkZWZpbmUg U1lTVEVNX1BVUkVTSVpFX0VYVFJBIDMwMDAwCi0jZWxpZiBkZWZpbmVkIERBUldJTl9PUwotIyAg ZGVmaW5lIFNZU1RFTV9QVVJFU0laRV9FWFRSQSAyMDAwMDAKLSNlbmRpZgotI2VuZGlmCi0KLSNp ZmRlZiBDWUdXSU4KLSNkZWZpbmUgU1lTVEVNX1BVUkVTSVpFX0VYVFJBIDUwMDAwCi0jZW5kaWYK LQogI2lmIGRlZmluZWQgSEFWRV9OVEdVSSAmJiAhZGVmaW5lZCBEZWJQcmludAogIyBpZmRlZiBF TUFDU0RFQlVHCiBleHRlcm4gdm9pZCBfRGViUHJpbnQgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsK ZGlmZiAtLWdpdCBhL3NyYy9kYXRhLmMgYi9zcmMvZGF0YS5jCmluZGV4IDBmYTQ5MWIxN2ExMTQu LjJhOGM3MjQ2ZmFlNjUgMTAwNjQ0Ci0tLSBhL3NyYy9kYXRhLmMKKysrIGIvc3JjL2RhdGEuYwpA QCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAibGlzcC5oIgogI2luY2x1ZGUgImJpZ251bS5o IgotI2luY2x1ZGUgInB1cmVzaXplLmgiCiAjaW5jbHVkZSAiY2hhcmFjdGVyLmgiCiAjaW5jbHVk ZSAiYnVmZmVyLmgiCiAjaW5jbHVkZSAia2V5Ym9hcmQuaCIKQEAgLTE0OSwxMiArMTQ4LDYgQEAg d3JvbmdfdHlwZV9hcmd1bWVudCAoTGlzcF9PYmplY3QgcHJlZGljYXRlLCBMaXNwX09iamVjdCB2 YWx1ZSkKICAgeHNpZ25hbDIgKFF3cm9uZ190eXBlX2FyZ3VtZW50LCBwcmVkaWNhdGUsIHZhbHVl KTsKIH0KIAotdm9pZAotcHVyZV93cml0ZV9lcnJvciAoTGlzcF9PYmplY3Qgb2JqKQotewotICB4 c2lnbmFsMiAoUWVycm9yLCBidWlsZF9zdHJpbmcgKCJBdHRlbXB0IHRvIG1vZGlmeSByZWFkLW9u bHkgb2JqZWN0IiksIG9iaik7Ci19Ci0KIHZvaWQKIGFyZ3Nfb3V0X29mX3JhbmdlIChMaXNwX09i amVjdCBhMSwgTGlzcF9PYmplY3QgYTIpCiB7CkBAIC02MjUsNyArNjE4LDYgQEAgREVGVU4gKCJz ZXRjYXIiLCBGc2V0Y2FyLCBTc2V0Y2FyLCAyLCAyLCAwLAogICAocmVnaXN0ZXIgTGlzcF9PYmpl Y3QgY2VsbCwgTGlzcF9PYmplY3QgbmV3Y2FyKQogewogICBDSEVDS19DT05TIChjZWxsKTsKLSAg Q0hFQ0tfSU1QVVJFIChjZWxsLCBYQ09OUyAoY2VsbCkpOwogICBYU0VUQ0FSIChjZWxsLCBuZXdj YXIpOwogICByZXR1cm4gbmV3Y2FyOwogfQpAQCAtNjM1LDcgKzYyNyw2IEBAIERFRlVOICgic2V0 Y2RyIiwgRnNldGNkciwgU3NldGNkciwgMiwgMiwgMCwKICAgKHJlZ2lzdGVyIExpc3BfT2JqZWN0 IGNlbGwsIExpc3BfT2JqZWN0IG5ld2NkcikKIHsKICAgQ0hFQ0tfQ09OUyAoY2VsbCk7Ci0gIENI RUNLX0lNUFVSRSAoY2VsbCwgWENPTlMgKGNlbGwpKTsKICAgWFNFVENEUiAoY2VsbCwgbmV3Y2Ry KTsKICAgcmV0dXJuIG5ld2NkcjsKIH0KQEAgLTc5OCwxMCArNzg5LDYgQEAgREVGVU4gKCJkZWZh bGlhcyIsIEZkZWZhbGlhcywgU2RlZmFsaWFzLCAyLCAzLCAwLAogICAocmVnaXN0ZXIgTGlzcF9P YmplY3Qgc3ltYm9sLCBMaXNwX09iamVjdCBkZWZpbml0aW9uLCBMaXNwX09iamVjdCBkb2NzdHJp bmcpCiB7CiAgIENIRUNLX1NZTUJPTCAoc3ltYm9sKTsKLSAgaWYgKCFOSUxQIChWcHVyaWZ5X2Zs YWcpCi0gICAgICAvKiBJZiBgZGVmaW5pdGlvbicgaXMgYSBrZXltYXAsIGltbXV0YWJsZSAoYW5k IGNvcHlpbmcpIGlzIHdyb25nLiAgKi8KLSAgICAgICYmICFLRVlNQVBQIChkZWZpbml0aW9uKSkK LSAgICBkZWZpbml0aW9uID0gRnB1cmVjb3B5IChkZWZpbml0aW9uKTsKIAogICB7CiAgICAgYm9v bCBhdXRvbG9hZCA9IEFVVE9MT0FEUCAoZGVmaW5pdGlvbik7CkBAIC0yMzc1LDcgKzIzNjIsNiBA QCBERUZVTiAoImFzZXQiLCBGYXNldCwgU2FzZXQsIDMsIDMsIDAsCiAKICAgaWYgKFZFQ1RPUlAg KGFycmF5KSkKICAgICB7Ci0gICAgICBDSEVDS19JTVBVUkUgKGFycmF5LCBYVkVDVE9SIChhcnJh eSkpOwogICAgICAgaWYgKGlkeHZhbCA8IDAgfHwgaWR4dmFsID49IEFTSVpFIChhcnJheSkpCiAJ YXJnc19vdXRfb2ZfcmFuZ2UgKGFycmF5LCBpZHgpOwogICAgICAgQVNFVCAoYXJyYXksIGlkeHZh bCwgbmV3ZWx0KTsKQEAgLTIzOTksNyArMjM4NSw2IEBAIERFRlVOICgiYXNldCIsIEZhc2V0LCBT YXNldCwgMywgMywgMCwKICAgICB9CiAgIGVsc2UgLyogU1RSSU5HUCAqLwogICAgIHsKLSAgICAg IENIRUNLX0lNUFVSRSAoYXJyYXksIFhTVFJJTkcgKGFycmF5KSk7CiAgICAgICBpZiAoaWR4dmFs IDwgMCB8fCBpZHh2YWwgPj0gU0NIQVJTIChhcnJheSkpCiAJYXJnc19vdXRfb2ZfcmFuZ2UgKGFy cmF5LCBpZHgpOwogICAgICAgQ0hFQ0tfQ0hBUkFDVEVSIChuZXdlbHQpOwpAQCAtMzg4MSw3ICsz ODY2LDcgQEAgc3ltc19vZl9kYXRhICh2b2lkKQogCiAgIERFRlNZTSAoUWNkciwgImNkciIpOwog Ci0gIGVycm9yX3RhaWwgPSBwdXJlX2NvbnMgKFFlcnJvciwgUW5pbCk7CisgIGVycm9yX3RhaWwg PSBGY29ucyAoUWVycm9yLCBRbmlsKTsKIAogICAvKiBFUlJPUiBpcyB1c2VkIGFzIGEgc2lnbmFs ZXIgZm9yIHJhbmRvbSBlcnJvcnMgZm9yIHdoaWNoIG5vdGhpbmcgZWxzZSBpcwogICAgICByaWdo dC4gICovCkBAIC0zODg5LDExICszODc0LDExIEBAIHN5bXNfb2ZfZGF0YSAodm9pZCkKICAgRnB1 dCAoUWVycm9yLCBRZXJyb3JfY29uZGl0aW9ucywKIAllcnJvcl90YWlsKTsKICAgRnB1dCAoUWVy cm9yLCBRZXJyb3JfbWVzc2FnZSwKLQlidWlsZF9wdXJlX2Nfc3RyaW5nICgiZXJyb3IiKSk7CisJ YnVpbGRfc3RyaW5nICgiZXJyb3IiKSk7CiAKICNkZWZpbmUgUFVUX0VSUk9SKHN5bSwgdGFpbCwg bXNnKQkJCVwKLSAgRnB1dCAoc3ltLCBRZXJyb3JfY29uZGl0aW9ucywgcHVyZV9jb25zIChzeW0s IHRhaWwpKTsgXAotICBGcHV0IChzeW0sIFFlcnJvcl9tZXNzYWdlLCBidWlsZF9wdXJlX2Nfc3Ry aW5nIChtc2cpKQorICBGcHV0IChzeW0sIFFlcnJvcl9jb25kaXRpb25zLCBGY29ucyAoc3ltLCB0 YWlsKSk7IFwKKyAgRnB1dCAoc3ltLCBRZXJyb3JfbWVzc2FnZSwgYnVpbGRfc3RyaW5nIChtc2cp KQogCiAgIFBVVF9FUlJPUiAoUXF1aXQsIFFuaWwsICJRdWl0Iik7CiAKQEAgLTM5MjEsMTQgKzM5 MDYsMTQgQEAgI2RlZmluZSBQVVRfRVJST1Ioc3ltLCB0YWlsLCBtc2cpCQkJXAogICBQVVRfRVJS T1IgKFFub19jYXRjaCwgZXJyb3JfdGFpbCwgIk5vIGNhdGNoIGZvciB0YWciKTsKICAgUFVUX0VS Uk9SIChRZW5kX29mX2ZpbGUsIGVycm9yX3RhaWwsICJFbmQgb2YgZmlsZSBkdXJpbmcgcGFyc2lu ZyIpOwogCi0gIGFyaXRoX3RhaWwgPSBwdXJlX2NvbnMgKFFhcml0aF9lcnJvciwgZXJyb3JfdGFp bCk7CisgIGFyaXRoX3RhaWwgPSBGY29ucyAoUWFyaXRoX2Vycm9yLCBlcnJvcl90YWlsKTsKICAg RnB1dCAoUWFyaXRoX2Vycm9yLCBRZXJyb3JfY29uZGl0aW9ucywgYXJpdGhfdGFpbCk7Ci0gIEZw dXQgKFFhcml0aF9lcnJvciwgUWVycm9yX21lc3NhZ2UsIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJB cml0aG1ldGljIGVycm9yIikpOworICBGcHV0IChRYXJpdGhfZXJyb3IsIFFlcnJvcl9tZXNzYWdl LCBidWlsZF9zdHJpbmcgKCJBcml0aG1ldGljIGVycm9yIikpOwogCiAgIFBVVF9FUlJPUiAoUWJl Z2lubmluZ19vZl9idWZmZXIsIGVycm9yX3RhaWwsICJCZWdpbm5pbmcgb2YgYnVmZmVyIik7CiAg IFBVVF9FUlJPUiAoUWVuZF9vZl9idWZmZXIsIGVycm9yX3RhaWwsICJFbmQgb2YgYnVmZmVyIik7 CiAgIFBVVF9FUlJPUiAoUWJ1ZmZlcl9yZWFkX29ubHksIGVycm9yX3RhaWwsICJCdWZmZXIgaXMg cmVhZC1vbmx5Iik7Ci0gIFBVVF9FUlJPUiAoUXRleHRfcmVhZF9vbmx5LCBwdXJlX2NvbnMgKFFi dWZmZXJfcmVhZF9vbmx5LCBlcnJvcl90YWlsKSwKKyAgUFVUX0VSUk9SIChRdGV4dF9yZWFkX29u bHksIEZjb25zIChRYnVmZmVyX3JlYWRfb25seSwgZXJyb3JfdGFpbCksCiAJICAgICAiVGV4dCBp cyByZWFkLW9ubHkiKTsKICAgUFVUX0VSUk9SIChRaW5oaWJpdGVkX2ludGVyYWN0aW9uLCBlcnJv cl90YWlsLAogCSAgICAgIlVzZXIgaW50ZXJhY3Rpb24gd2hpbGUgaW5oaWJpdGVkIik7CmRpZmYg LS1naXQgYS9zcmMvZGJ1c2JpbmQuYyBiL3NyYy9kYnVzYmluZC5jCmluZGV4IGMwMDU0NzRkNDQw OWYuLjIzODE0MmI5NTYwNmMgMTAwNjQ0Ci0tLSBhL3NyYy9kYnVzYmluZC5jCisrKyBiL3NyYy9k YnVzYmluZC5jCkBAIC0xODY4LDcgKzE4NjgsNyBAQCBzeW1zX29mX2RidXNiaW5kICh2b2lkKQog ICBGcHV0IChRZGJ1c19lcnJvciwgUWVycm9yX2NvbmRpdGlvbnMsCiAJbGlzdDIgKFFkYnVzX2Vy cm9yLCBRZXJyb3IpKTsKICAgRnB1dCAoUWRidXNfZXJyb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1 aWxkX3B1cmVfY19zdHJpbmcgKCJELUJ1cyBlcnJvciIpKTsKKwlidWlsZF9zdHJpbmcgKCJELUJ1 cyBlcnJvciIpKTsKIAogICAvKiBMaXNwIHN5bWJvbHMgb2YgdGhlIHN5c3RlbSBhbmQgc2Vzc2lv biBidXNlcy4gICovCiAgIERFRlNZTSAoUUNzeXN0ZW0sICI6c3lzdGVtIik7CkBAIC0xOTExLDcg KzE5MTEsNyBAQCBzeW1zX29mX2RidXNiaW5kICh2b2lkKQogCSAgICAgICBWZGJ1c19jb21waWxl ZF92ZXJzaW9uLAogICAgIGRvYzogLyogVGhlIHZlcnNpb24gb2YgRC1CdXMgRW1hY3MgaXMgY29t cGlsZWQgYWdhaW5zdC4gICovKTsKICNpZmRlZiBEQlVTX1ZFUlNJT05fU1RSSU5HCi0gIFZkYnVz X2NvbXBpbGVkX3ZlcnNpb24gPSBidWlsZF9wdXJlX2Nfc3RyaW5nIChEQlVTX1ZFUlNJT05fU1RS SU5HKTsKKyAgVmRidXNfY29tcGlsZWRfdmVyc2lvbiA9IGJ1aWxkX3N0cmluZyAoREJVU19WRVJT SU9OX1NUUklORyk7CiAjZWxzZQogICBWZGJ1c19jb21waWxlZF92ZXJzaW9uID0gUW5pbDsKICNl bmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2RlcHMubWsgYi9zcmMvZGVwcy5tawppbmRleCBlZGEyZWQ2 MzM4MjUyLi4zMjkyY2YyMDFjZjc0IDEwMDY0NAotLS0gYS9zcmMvZGVwcy5taworKysgYi9zcmMv ZGVwcy5tawpAQCAtMTMyLDEwICsxMzIsMTAgQEAgaW5zZGVsLm86CiBrZXlib2FyZC5vOiBrZXli b2FyZC5jIHRlcm1jaGFyLmggdGVybWhvb2tzLmggdGVybW9wdHMuaCBidWZmZXIuaCBjaGFyYWN0 ZXIuaCBcCiAgICBjb21tYW5kcy5oIGZyYW1lLmggd2luZG93LmggbWFjcm9zLmggZGlzcHRhYi5o IGtleWJvYXJkLmggc3lzc2lnbmFsLmggXAogICAgc3lzdGltZS5oIHN5bnRheC5oICQoSU5URVJW QUxTX0gpIGJsb2NraW5wdXQuaCBhdGltZXIuaCBjb21wb3NpdGUuaCBcCi0gICB4dGVybS5oIHB1 cmVzaXplLmggbXNkb3MuaCBrZXltYXAuaCB3MzJ0ZXJtLmggbnN0ZXJtLmggbnNndWkuaCBjb2Rp bmcuaCBcCisgICB4dGVybS5oIG1zZG9zLmgga2V5bWFwLmggdzMydGVybS5oIG5zdGVybS5oIG5z Z3VpLmggY29kaW5nLmggXAogICAgcHJvY2Vzcy5oIC4uL2xpYi91bmlzdGQuaCBnbnV0bHMuaCBs aXNwLmggZ2xvYmFscy5oICQoY29uZmlnX2gpCiBrZXltYXAubzoga2V5bWFwLmMgYnVmZmVyLmgg Y29tbWFuZHMuaCBrZXlib2FyZC5oIHRlcm1ob29rcy5oIGJsb2NraW5wdXQuaCBcCi0gICBhdGlt ZXIuaCBzeXN0aW1lLmggcHVyZXNpemUuaCBjaGFyYWN0ZXIuaCBjaGFyc2V0LmggJChJTlRFUlZB TFNfSCkgXAorICAgYXRpbWVyLmggc3lzdGltZS5oIGNoYXJhY3Rlci5oIGNoYXJzZXQuaCAkKElO VEVSVkFMU19IKSBcCiAgICBrZXltYXAuaCB3aW5kb3cuaCBjb2RpbmcuaCBmcmFtZS5oIGxpc3Au aCBnbG9iYWxzLmggJChjb25maWdfaCkKIGxhc3RmaWxlLm86IGxhc3RmaWxlLmMgJChjb25maWdf aCkKIG1hY3Jvcy5vOiBtYWNyb3MuYyB3aW5kb3cuaCBidWZmZXIuaCBjb21tYW5kcy5oIG1hY3Jv cy5oIGtleWJvYXJkLmggbXNkb3MuaCBcCkBAIC0yNjcsMTIgKzI2NywxMiBAQCB4c2V0dGluZ3Mu bzoKICAgIGF0aW1lci5oIHRlcm1vcHRzLmggZ2xvYmFscy5oCiAKICMjIFRoZSBmaWxlcyBvZiBM aXNwIHByb3Blci4KLWFsbG9jLm86IGFsbG9jLmMgcHJvY2Vzcy5oIGZyYW1lLmggd2luZG93Lmgg YnVmZmVyLmggIHB1cmVzaXplLmggc3lzc2lnbmFsLmggXAorYWxsb2MubzogYWxsb2MuYyBwcm9j ZXNzLmggZnJhbWUuaCB3aW5kb3cuaCBidWZmZXIuaCBzeXNzaWduYWwuaCBcCiAgICBrZXlib2Fy ZC5oIGJsb2NraW5wdXQuaCBhdGltZXIuaCBzeXN0aW1lLmggY2hhcmFjdGVyLmggbGlzcC5oICQo Y29uZmlnX2gpIFwKICAgICQoSU5URVJWQUxTX0gpIHRlcm1ob29rcy5oIGdudXRscy5oIGNvZGlu Zy5oIC4uL2xpYi91bmlzdGQuaCBnbG9iYWxzLmgKIGJ5dGVjb2RlLm86IGJ5dGVjb2RlLmMgYnVm ZmVyLmggc3ludGF4LmggY2hhcmFjdGVyLmggd2luZG93LmggZGlzcGV4dGVybi5oIFwKICAgbGlz cC5oIGdsb2JhbHMuaCAkKGNvbmZpZ19oKSBtc2Rvcy5oCi1kYXRhLm86IGRhdGEuYyBidWZmZXIu aCBwdXJlc2l6ZS5oIGNoYXJhY3Rlci5oIHN5c3NpZ25hbC5oIGtleWJvYXJkLmggZnJhbWUuaCBc CitkYXRhLm86IGRhdGEuYyBidWZmZXIuaCBjaGFyYWN0ZXIuaCBzeXNzaWduYWwuaCBrZXlib2Fy ZC5oIGZyYW1lLmggXAogICAgdGVybWhvb2tzLmggc3lzdGltZS5oIGNvZGluZy5oIGNvbXBvc2l0 ZS5oIGRpc3BleHRlcm4uaCBmb250LmggY2NsLmggXAogICAgbGlzcC5oIGdsb2JhbHMuaCAkKGNv bmZpZ19oKSBtc2Rvcy5oCiBldmFsLm86IGV2YWwuYyBjb21tYW5kcy5oIGtleWJvYXJkLmggYmxv Y2tpbnB1dC5oIGF0aW1lci5oIHN5c3RpbWUuaCBmcmFtZS5oIFwKQEAgLTI5NSw3ICsyOTUsNyBA QCBscmVhZC5vOgogY29tcG9zaXRlLm86IGNvbXBvc2l0ZS5jIGNvbXBvc2l0ZS5oIGJ1ZmZlci5o IGNoYXJhY3Rlci5oIGNvZGluZy5oIGZvbnQuaCBcCiAgICBjY2wuaCBmcmFtZS5oIHRlcm1ob29r cy5oICQoSU5URVJWQUxTX0gpIHdpbmRvdy5oIFwKICAgIGxpc3AuaCBnbG9iYWxzLmggJChjb25m aWdfaCkKLWludGVydmFscy5vOiBpbnRlcnZhbHMuYyBidWZmZXIuaCAkKElOVEVSVkFMU19IKSBr ZXlib2FyZC5oIHB1cmVzaXplLmggXAoraW50ZXJ2YWxzLm86IGludGVydmFscy5jIGJ1ZmZlci5o ICQoSU5URVJWQUxTX0gpIGtleWJvYXJkLmggXAogICAga2V5bWFwLmggbGlzcC5oIGdsb2JhbHMu aCAkKGNvbmZpZ19oKSBzeXN0aW1lLmggY29kaW5nLmgKIHRleHRwcm9wLm86IHRleHRwcm9wLmMg YnVmZmVyLmggd2luZG93LmggJChJTlRFUlZBTFNfSCkgXAogICAgbGlzcC5oIGdsb2JhbHMuaCAk KGNvbmZpZ19oKQpkaWZmIC0tZ2l0IGEvc3JjL2RvYy5jIGIvc3JjL2RvYy5jCmluZGV4IDEzMDdh YTVlZTkyMzMuLjIxMzZmOTE0Mjk3ZGQgMTAwNjQ0Ci0tLSBhL3NyYy9kb2MuYworKysgYi9zcmMv ZG9jLmMKQEAgLTQ5MCw4ICs0OTAsNiBAQCBzdG9yZV9mdW5jdGlvbl9kb2NzdHJpbmcgKExpc3Bf T2JqZWN0IG9iaiwgRU1BQ1NfSU5UIG9mZnNldCkKIAl7CiAJICB0ZW0gPSBGY2RyIChGY2RyIChm dW4pKTsKIAkgIGlmIChDT05TUCAodGVtKSAmJiBGSVhOVU1QIChYQ0FSICh0ZW0pKSkKLQkgICAg LyogRklYTUU6IFRoaXMgbW9kaWZpZXMgdHlwaWNhbGx5IHB1cmUgaGFzaC1jb25zJ2QgZGF0YSwg c28gaXRzCi0JICAgICAgIGNvcnJlY3RuZXNzIGlzIHF1aXRlIGRlbGljYXRlLiAgKi8KIAkgICAg WFNFVENBUiAodGVtLCBtYWtlX2ZpeG51bSAob2Zmc2V0KSk7CiAJfQogICAgIH0KQEAgLTU3NSw3 ICs1NzMsNiBAQCBERUZVTiAoIlNuYXJmLWRvY3VtZW50YXRpb24iLCBGc25hcmZfZG9jdW1lbnRh dGlvbiwgU3NuYXJmX2RvY3VtZW50YXRpb24sCiAgICAgICBpbnQgaSA9IEFSUkFZRUxUUyAoYnVp bGRvYmopOwogICAgICAgd2hpbGUgKDAgPD0gLS1pKQogCVZidWlsZF9maWxlcyA9IEZjb25zIChi dWlsZF9zdHJpbmcgKGJ1aWxkb2JqW2ldKSwgVmJ1aWxkX2ZpbGVzKTsKLSAgICAgIFZidWlsZF9m aWxlcyA9IEZwdXJlY29weSAoVmJ1aWxkX2ZpbGVzKTsKICAgICB9CiAKICAgZmQgPSBlbWFjc19v cGVuIChuYW1lLCBPX1JET05MWSwgMCk7CmRpZmYgLS1naXQgYS9zcmMvZW1hY3MtbW9kdWxlLmMg Yi9zcmMvZW1hY3MtbW9kdWxlLmMKaW5kZXggZjhmYjU0YzA3MjgyMy4uODk2YWU2NTY4NWU4NCAx MDA2NDQKLS0tIGEvc3JjL2VtYWNzLW1vZHVsZS5jCisrKyBiL3NyYy9lbWFjcy1tb2R1bGUuYwpA QCAtMTYwMCw0NCArMTYwMCw0NCBAQCBzeW1zX29mX21vZHVsZSAodm9pZCkKICAgVm1vZHVsZV9y ZWZzX2hhc2gKICAgICA9IG1ha2VfaGFzaF90YWJsZSAoaGFzaHRlc3RfZXEsIERFRkFVTFRfSEFT SF9TSVpFLAogCQkgICAgICAgREVGQVVMVF9SRUhBU0hfU0laRSwgREVGQVVMVF9SRUhBU0hfVEhS RVNIT0xELAotCQkgICAgICAgUW5pbCwgZmFsc2UpOworCQkgICAgICAgUW5pbCk7CiAKICAgREVG U1lNIChRbW9kdWxlX2xvYWRfZmFpbGVkLCAibW9kdWxlLWxvYWQtZmFpbGVkIik7CiAgIEZwdXQg KFFtb2R1bGVfbG9hZF9mYWlsZWQsIFFlcnJvcl9jb25kaXRpb25zLAotCXB1cmVfbGlzdCAoUW1v ZHVsZV9sb2FkX2ZhaWxlZCwgUWVycm9yKSk7CisJbGlzdCAoUW1vZHVsZV9sb2FkX2ZhaWxlZCwg UWVycm9yKSk7CiAgIEZwdXQgKFFtb2R1bGVfbG9hZF9mYWlsZWQsIFFlcnJvcl9tZXNzYWdlLAot ICAgICAgICBidWlsZF9wdXJlX2Nfc3RyaW5nICgiTW9kdWxlIGxvYWQgZmFpbGVkIikpOworICAg ICAgICBidWlsZF9zdHJpbmcgKCJNb2R1bGUgbG9hZCBmYWlsZWQiKSk7CiAKICAgREVGU1lNIChR bW9kdWxlX29wZW5fZmFpbGVkLCAibW9kdWxlLW9wZW4tZmFpbGVkIik7CiAgIEZwdXQgKFFtb2R1 bGVfb3Blbl9mYWlsZWQsIFFlcnJvcl9jb25kaXRpb25zLAotCXB1cmVfbGlzdCAoUW1vZHVsZV9v cGVuX2ZhaWxlZCwgUW1vZHVsZV9sb2FkX2ZhaWxlZCwgUWVycm9yKSk7CisJbGlzdCAoUW1vZHVs ZV9vcGVuX2ZhaWxlZCwgUW1vZHVsZV9sb2FkX2ZhaWxlZCwgUWVycm9yKSk7CiAgIEZwdXQgKFFt b2R1bGVfb3Blbl9mYWlsZWQsIFFlcnJvcl9tZXNzYWdlLAotICAgICAgICBidWlsZF9wdXJlX2Nf c3RyaW5nICgiTW9kdWxlIGNvdWxkIG5vdCBiZSBvcGVuZWQiKSk7CisgICAgICAgIGJ1aWxkX3N0 cmluZyAoIk1vZHVsZSBjb3VsZCBub3QgYmUgb3BlbmVkIikpOwogCiAgIERFRlNZTSAoUW1vZHVs ZV9ub3RfZ3BsX2NvbXBhdGlibGUsICJtb2R1bGUtbm90LWdwbC1jb21wYXRpYmxlIik7CiAgIEZw dXQgKFFtb2R1bGVfbm90X2dwbF9jb21wYXRpYmxlLCBRZXJyb3JfY29uZGl0aW9ucywKLQlwdXJl X2xpc3QgKFFtb2R1bGVfbm90X2dwbF9jb21wYXRpYmxlLCBRbW9kdWxlX2xvYWRfZmFpbGVkLCBR ZXJyb3IpKTsKKwlsaXN0IChRbW9kdWxlX25vdF9ncGxfY29tcGF0aWJsZSwgUW1vZHVsZV9sb2Fk X2ZhaWxlZCwgUWVycm9yKSk7CiAgIEZwdXQgKFFtb2R1bGVfbm90X2dwbF9jb21wYXRpYmxlLCBR ZXJyb3JfbWVzc2FnZSwKLSAgICAgICAgYnVpbGRfcHVyZV9jX3N0cmluZyAoIk1vZHVsZSBpcyBu b3QgR1BMIGNvbXBhdGlibGUiKSk7CisgICAgICAgIGJ1aWxkX3N0cmluZyAoIk1vZHVsZSBpcyBu b3QgR1BMIGNvbXBhdGlibGUiKSk7CiAKICAgREVGU1lNIChRbWlzc2luZ19tb2R1bGVfaW5pdF9m dW5jdGlvbiwgIm1pc3NpbmctbW9kdWxlLWluaXQtZnVuY3Rpb24iKTsKICAgRnB1dCAoUW1pc3Np bmdfbW9kdWxlX2luaXRfZnVuY3Rpb24sIFFlcnJvcl9jb25kaXRpb25zLAotCXB1cmVfbGlzdCAo UW1pc3NpbmdfbW9kdWxlX2luaXRfZnVuY3Rpb24sIFFtb2R1bGVfbG9hZF9mYWlsZWQsCi0JCSAg IFFlcnJvcikpOworCWxpc3QgKFFtaXNzaW5nX21vZHVsZV9pbml0X2Z1bmN0aW9uLCBRbW9kdWxl X2xvYWRfZmFpbGVkLAorCSAgICAgIFFlcnJvcikpOwogICBGcHV0IChRbWlzc2luZ19tb2R1bGVf aW5pdF9mdW5jdGlvbiwgUWVycm9yX21lc3NhZ2UsCi0gICAgICAgIGJ1aWxkX3B1cmVfY19zdHJp bmcgKCJNb2R1bGUgZG9lcyBub3QgZXhwb3J0IGFuICIKKyAgICAgICAgYnVpbGRfc3RyaW5nICgi TW9kdWxlIGRvZXMgbm90IGV4cG9ydCBhbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJpbml0aWFsaXphdGlvbiBmdW5jdGlvbiIpKTsKIAogICBERUZTWU0gKFFtb2R1bGVfaW5pdF9m YWlsZWQsICJtb2R1bGUtaW5pdC1mYWlsZWQiKTsKICAgRnB1dCAoUW1vZHVsZV9pbml0X2ZhaWxl ZCwgUWVycm9yX2NvbmRpdGlvbnMsCi0JcHVyZV9saXN0IChRbW9kdWxlX2luaXRfZmFpbGVkLCBR bW9kdWxlX2xvYWRfZmFpbGVkLCBRZXJyb3IpKTsKKwlsaXN0IChRbW9kdWxlX2luaXRfZmFpbGVk LCBRbW9kdWxlX2xvYWRfZmFpbGVkLCBRZXJyb3IpKTsKICAgRnB1dCAoUW1vZHVsZV9pbml0X2Zh aWxlZCwgUWVycm9yX21lc3NhZ2UsCi0gICAgICAgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJNb2R1 bGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkIikpOworICAgICAgICBidWlsZF9zdHJpbmcgKCJNb2R1 bGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkIikpOwogCiAgIERFRlNZTSAoUWludmFsaWRfYXJpdHks ICJpbnZhbGlkLWFyaXR5Iik7Ci0gIEZwdXQgKFFpbnZhbGlkX2FyaXR5LCBRZXJyb3JfY29uZGl0 aW9ucywgcHVyZV9saXN0IChRaW52YWxpZF9hcml0eSwgUWVycm9yKSk7CisgIEZwdXQgKFFpbnZh bGlkX2FyaXR5LCBRZXJyb3JfY29uZGl0aW9ucywgbGlzdCAoUWludmFsaWRfYXJpdHksIFFlcnJv cikpOwogICBGcHV0IChRaW52YWxpZF9hcml0eSwgUWVycm9yX21lc3NhZ2UsCi0gICAgICAgIGJ1 aWxkX3B1cmVfY19zdHJpbmcgKCJJbnZhbGlkIGZ1bmN0aW9uIGFyaXR5IikpOworICAgICAgICBi dWlsZF9zdHJpbmcgKCJJbnZhbGlkIGZ1bmN0aW9uIGFyaXR5IikpOwogCiAgIERFRlNZTSAoUW1v ZHVsZV9mdW5jdGlvbl9wLCAibW9kdWxlLWZ1bmN0aW9uLXAiKTsKICAgREVGU1lNIChRdW5pY29k ZV9zdHJpbmdfcCwgInVuaWNvZGUtc3RyaW5nLXAiKTsKZGlmZiAtLWdpdCBhL3NyYy9lbWFjcy5j IGIvc3JjL2VtYWNzLmMKaW5kZXggZmQwODY2N2YzZmQ0Zi4uMDNlYzYzNDY0ZGFmNSAxMDA2NDQK LS0tIGEvc3JjL2VtYWNzLmMKKysrIGIvc3JjL2VtYWNzLmMKQEAgLTg4LDcgKzg4LDYgQEAgI2Rl ZmluZSBNQUlOX1BST0dSQU0KICNpbmNsdWRlICJzeW50YXguaCIKICNpbmNsdWRlICJzeXNzZWxl Y3QuaCIKICNpbmNsdWRlICJzeXN0aW1lLmgiCi0jaW5jbHVkZSAicHVyZXNpemUuaCIKIAogI2lu Y2x1ZGUgImdldHBhZ2VzaXplLmgiCiAjaW5jbHVkZSAiZ251dGxzLmgiCkBAIC0xNTQ0LDcgKzE1 NDMsOSBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgIGlmICghaW5pdGlhbGl6ZWQp CiAgICAgewogICAgICAgaW5pdF9hbGxvY19vbmNlICgpOworI2lmZGVmIEhBVkVfUERVTVBFUgog ICAgICAgaW5pdF9wZHVtcGVyX29uY2UgKCk7CisjZW5kaWYKICAgICAgIGluaXRfb2JhcnJheV9v bmNlICgpOwogICAgICAgaW5pdF9ldmFsX29uY2UgKCk7CiAgICAgICBpbml0X2NoYXJzZXRfb25j ZSAoKTsKQEAgLTI1MDgsOCArMjUwOSw2IEBAIERFRlVOICgiZHVtcC1lbWFjcyIsIEZkdW1wX2Vt YWNzLCBTZHVtcF9lbWFjcywgMiwgMiwgMCwKICAgTGlzcF9PYmplY3Qgc3ltYm9sOwogICBwdHJk aWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwogCi0gIGNoZWNrX3B1cmVfc2l6ZSAoKTsK LQogICBpZiAoISBub25pbnRlcmFjdGl2ZSkKICAgICBlcnJvciAoIkR1bXBpbmcgRW1hY3Mgd29y a3Mgb25seSBpbiBiYXRjaCBtb2RlIik7CiAKZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMv ZXZhbC5jCmluZGV4IGRkYWE4ZWRkODE3MDYuLmMwNzE3ZjhjZjEyNGQgMTAwNjQ0Ci0tLSBhL3Ny Yy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAtNzg1LDggKzc4NSw2IEBAIERFRlVOICgiaW50 ZXJuYWwtLWRlZmluZS11bmluaXRpYWxpemVkLXZhcmlhYmxlIiwKICAgWFNZTUJPTCAoc3ltYm9s KS0+dS5zLmRlY2xhcmVkX3NwZWNpYWwgPSB0cnVlOwogICBpZiAoIU5JTFAgKGRvYykpCiAgICAg ewotICAgICAgaWYgKCFOSUxQIChWcHVyaWZ5X2ZsYWcpKQotCWRvYyA9IEZwdXJlY29weSAoZG9j KTsKICAgICAgIEZwdXQgKHN5bWJvbCwgUXZhcmlhYmxlX2RvY3VtZW50YXRpb24sIGRvYyk7CiAg ICAgfQogICBMT0FESElTVF9BVFRBQ0ggKHN5bWJvbCk7CkBAIC05MDMsOCArOTAxLDYgQEAgREVG VU4gKCJkZWZjb25zdCIsIEZkZWZjb25zdCwgU2RlZmNvbnN0LCAyLCBVTkVWQUxMRUQsIDAsCiAK ICAgRmludGVybmFsX19kZWZpbmVfdW5pbml0aWFsaXplZF92YXJpYWJsZSAoc3ltLCBkb2NzdHJp bmcpOwogICB0ZW0gPSBldmFsX3N1YiAoWENBUiAoWENEUiAoYXJncykpKTsKLSAgaWYgKCFOSUxQ IChWcHVyaWZ5X2ZsYWcpKQotICAgIHRlbSA9IEZwdXJlY29weSAodGVtKTsKICAgRnNldF9kZWZh dWx0IChzeW0sIHRlbSk7ICAgICAgLyogRklYTUU6IHNldC1kZWZhdWx0LXRvcGxldmVsLXZhbHVl PyAqLwogICBGcHV0IChzeW0sIFFyaXNreV9sb2NhbF92YXJpYWJsZSwgUXQpOyAvKiBGSVhNRTog V2h5PyAgKi8KICAgcmV0dXJuIHN5bTsKQEAgLTIxMDcsMTIgKzIxMDMsNiBAQCBERUZVTiAoImF1 dG9sb2FkIiwgRmF1dG9sb2FkLCBTYXV0b2xvYWQsIDIsIDUsIDAsCiAgICAgICAmJiAhQVVUT0xP QURQIChYU1lNQk9MIChmdW5jdGlvbiktPnUucy5mdW5jdGlvbikpCiAgICAgcmV0dXJuIFFuaWw7 CiAKLSAgaWYgKCFOSUxQIChWcHVyaWZ5X2ZsYWcpICYmIEVRIChkb2NzdHJpbmcsIG1ha2VfZml4 bnVtICgwKSkpCi0gICAgLyogYHJlYWQxJyBpbiBscmVhZC5jIGhhcyBmb3VuZCB0aGUgZG9jc3Ry aW5nIHN0YXJ0aW5nIHdpdGggIlwKLSAgICAgICBhbmQgYXNzdW1lZCB0aGUgZG9jc3RyaW5nIHdp bGwgYmUgcHJvdmlkZWQgYnkgU25hcmYtZG9jdW1lbnRhdGlvbiwgc28gaXQKLSAgICAgICBwYXNz ZWQgdXMgMCBpbnN0ZWFkLiAgQnV0IHRoYXQgbGVhZHMgdG8gYWNjaWRlbnRhbCBzaGFyaW5nIGlu IHB1cmVjb3B5J3MKLSAgICAgICBoYXNoLWNvbnNpbmcsIHNvIHdlIHVzZSBhIChob3BlZnVsbHkp IHVuaXF1ZSBpbnRlZ2VyIGluc3RlYWQuICAqLwotICAgIGRvY3N0cmluZyA9IG1ha2VfdWZpeG51 bSAoWEhBU0ggKGZ1bmN0aW9uKSk7CiAgIHJldHVybiBGZGVmYWxpYXMgKGZ1bmN0aW9uLAogCQkg ICAgbGlzdDUgKFFhdXRvbG9hZCwgZmlsZSwgZG9jc3RyaW5nLCBpbnRlcmFjdGl2ZSwgdHlwZSks CiAJCSAgICBRbmlsKTsKQEAgLTQzNTQsNyArNDM0NCw3IEBAIHN5bXNfb2ZfZXZhbCAodm9pZCkK ICAgICAgYWxzbyB1c2Ugc29tZXRoaW5nIGxpa2UgRmNvbnMgKFFuaWwsIFFuaWwpLCBidXQganNv bi5jIHRyZWF0cyBhbnkKICAgICAgY29ucyBjZWxsIGFzIGVycm9yIGRhdGEsIHNvIHVzZSBhbiB1 bmludGVybmVkIHN5bWJvbCBpbnN0ZWFkLiAgKi8KICAgUWNhdGNoX2FsbF9tZW1vcnlfZnVsbAot ICAgID0gRm1ha2Vfc3ltYm9sIChidWlsZF9wdXJlX2Nfc3RyaW5nICgiY2F0Y2gtYWxsLW1lbW9y eS1mdWxsIikpOworICAgID0gRm1ha2Vfc3ltYm9sIChidWlsZF9zdHJpbmcgKCJjYXRjaC1hbGwt bWVtb3J5LWZ1bGwiKSk7CiAKICAgZGVmc3ViciAoJlNvcik7CiAgIGRlZnN1YnIgKCZTYW5kKTsK ZGlmZiAtLWdpdCBhL3NyYy9maWxlaW8uYyBiL3NyYy9maWxlaW8uYwppbmRleCA3NDFlMjk3ZDI5 YzJjLi41ZDQzODg2NWUyMDkyIDEwMDY0NAotLS0gYS9zcmMvZmlsZWlvLmMKKysrIGIvc3JjL2Zp bGVpby5jCkBAIC02Mjk0LDM0ICs2Mjk0LDM0IEBAIHN5bXNfb2ZfZmlsZWlvICh2b2lkKQogICBE RUZTWU0gKFFjYXJfbGVzc190aGFuX2NhciwgImNhci1sZXNzLXRoYW4tY2FyIik7CiAKICAgRnB1 dCAoUWZpbGVfZXJyb3IsIFFlcnJvcl9jb25kaXRpb25zLAotCUZwdXJlY29weSAobGlzdDIgKFFm aWxlX2Vycm9yLCBRZXJyb3IpKSk7CisJbGlzdDIgKFFmaWxlX2Vycm9yLCBRZXJyb3IpKTsKICAg RnB1dCAoUWZpbGVfZXJyb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcg KCJGaWxlIGVycm9yIikpOworCWJ1aWxkX3N0cmluZyAoIkZpbGUgZXJyb3IiKSk7CiAKICAgRnB1 dCAoUWZpbGVfYWxyZWFkeV9leGlzdHMsIFFlcnJvcl9jb25kaXRpb25zLAotCUZwdXJlY29weSAo bGlzdDMgKFFmaWxlX2FscmVhZHlfZXhpc3RzLCBRZmlsZV9lcnJvciwgUWVycm9yKSkpOworCWxp c3QzIChRZmlsZV9hbHJlYWR5X2V4aXN0cywgUWZpbGVfZXJyb3IsIFFlcnJvcikpOwogICBGcHV0 IChRZmlsZV9hbHJlYWR5X2V4aXN0cywgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0 cmluZyAoIkZpbGUgYWxyZWFkeSBleGlzdHMiKSk7CisJYnVpbGRfc3RyaW5nICgiRmlsZSBhbHJl YWR5IGV4aXN0cyIpKTsKIAogICBGcHV0IChRZmlsZV9kYXRlX2Vycm9yLCBRZXJyb3JfY29uZGl0 aW9ucywKLQlGcHVyZWNvcHkgKGxpc3QzIChRZmlsZV9kYXRlX2Vycm9yLCBRZmlsZV9lcnJvciwg UWVycm9yKSkpOworCWxpc3QzIChRZmlsZV9kYXRlX2Vycm9yLCBRZmlsZV9lcnJvciwgUWVycm9y KSk7CiAgIEZwdXQgKFFmaWxlX2RhdGVfZXJyb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1 cmVfY19zdHJpbmcgKCJDYW5ub3Qgc2V0IGZpbGUgZGF0ZSIpKTsKKwlidWlsZF9zdHJpbmcgKCJD YW5ub3Qgc2V0IGZpbGUgZGF0ZSIpKTsKIAogICBGcHV0IChRZmlsZV9taXNzaW5nLCBRZXJyb3Jf Y29uZGl0aW9ucywKLQlGcHVyZWNvcHkgKGxpc3QzIChRZmlsZV9taXNzaW5nLCBRZmlsZV9lcnJv ciwgUWVycm9yKSkpOworCWxpc3QzIChRZmlsZV9taXNzaW5nLCBRZmlsZV9lcnJvciwgUWVycm9y KSk7CiAgIEZwdXQgKFFmaWxlX21pc3NpbmcsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVf Y19zdHJpbmcgKCJGaWxlIGlzIG1pc3NpbmciKSk7CisJYnVpbGRfc3RyaW5nICgiRmlsZSBpcyBt aXNzaW5nIikpOwogCiAgIEZwdXQgKFFmaWxlX25vdGlmeV9lcnJvciwgUWVycm9yX2NvbmRpdGlv bnMsCi0JRnB1cmVjb3B5IChsaXN0MyAoUWZpbGVfbm90aWZ5X2Vycm9yLCBRZmlsZV9lcnJvciwg UWVycm9yKSkpOworCWxpc3QzIChRZmlsZV9ub3RpZnlfZXJyb3IsIFFmaWxlX2Vycm9yLCBRZXJy b3IpKTsKICAgRnB1dCAoUWZpbGVfbm90aWZ5X2Vycm9yLCBRZXJyb3JfbWVzc2FnZSwKLQlidWls ZF9wdXJlX2Nfc3RyaW5nICgiRmlsZSBub3RpZmljYXRpb24gZXJyb3IiKSk7CisJYnVpbGRfc3Ry aW5nICgiRmlsZSBub3RpZmljYXRpb24gZXJyb3IiKSk7CiAKICAgRnB1dCAoUXJlbW90ZV9maWxl X2Vycm9yLCBRZXJyb3JfY29uZGl0aW9ucywKIAlGcHVyZWNvcHkgKGxpc3QzIChRcmVtb3RlX2Zp bGVfZXJyb3IsIFFmaWxlX2Vycm9yLCBRZXJyb3IpKSk7CiAgIEZwdXQgKFFyZW1vdGVfZmlsZV9l cnJvciwgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIlJlbW90ZSBmaWxl IGVycm9yIikpOworCWJ1aWxkX3N0cmluZyAoIlJlbW90ZSBmaWxlIGVycm9yIikpOwogCiAgIERF RlZBUl9MSVNQICgiZmlsZS1uYW1lLWhhbmRsZXItYWxpc3QiLCBWZmlsZV9uYW1lX2hhbmRsZXJf YWxpc3QsCiAJICAgICAgIGRvYzogLyogQWxpc3Qgb2YgZWxlbWVudHMgKFJFR0VYUCAuIEhBTkRM RVIpIGZvciBmaWxlIG5hbWVzIGhhbmRsZWQgc3BlY2lhbGx5LgpkaWZmIC0tZ2l0IGEvc3JjL2Zu cy5jIGIvc3JjL2Zucy5jCmluZGV4IDc5MTRiZDQ3NzkwYTkuLmEyMmI2MzNlYzczODYgMTAwNjQ0 Ci0tLSBhL3NyYy9mbnMuYworKysgYi9zcmMvZm5zLmMKQEAgLTM2LDcgKzM2LDYgQEAgQ29weXJp Z2h0IChDKSAxOTg1LTE5ODcsIDE5OTMtMTk5NSwgMTk5Ny0yMDIxIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwKICNpbmNsdWRlICJidWZmZXIuaCIKICNpbmNsdWRlICJpbnRlcnZhbHMuaCIKICNp bmNsdWRlICJ3aW5kb3cuaCIKLSNpbmNsdWRlICJwdXJlc2l6ZS5oIgogI2luY2x1ZGUgImdudXRs cy5oIgogCiBzdGF0aWMgdm9pZCBzb3J0X3ZlY3Rvcl9jb3B5IChMaXNwX09iamVjdCwgcHRyZGlm Zl90LApAQCAtMjYwMiw3ICsyNjAxLDYgQEAgREVGVU4gKCJmaWxsYXJyYXkiLCBGZmlsbGFycmF5 LCBTZmlsbGFycmF5LCAyLCAyLCAwLAogICAgICAgc2l6ZSA9IFNDSEFSUyAoYXJyYXkpOwogICAg ICAgaWYgKHNpemUgIT0gMCkKIAl7Ci0JICBDSEVDS19JTVBVUkUgKGFycmF5LCBYU1RSSU5HIChh cnJheSkpOwogCSAgdW5zaWduZWQgY2hhciBzdHJbTUFYX01VTFRJQllURV9MRU5HVEhdOwogCSAg aW50IGxlbjsKIAkgIGlmIChTVFJJTkdfTVVMVElCWVRFIChhcnJheSkpCkBAIC0yNjQ0LDcgKzI2 NDIsNiBAQCBERUZVTiAoImNsZWFyLXN0cmluZyIsIEZjbGVhcl9zdHJpbmcsIFNjbGVhcl9zdHJp bmcsCiAgIHB0cmRpZmZfdCBsZW4gPSBTQllURVMgKHN0cmluZyk7CiAgIGlmIChsZW4gIT0gMCB8 fCBTVFJJTkdfTVVMVElCWVRFIChzdHJpbmcpKQogICAgIHsKLSAgICAgIENIRUNLX0lNUFVSRSAo c3RyaW5nLCBYU1RSSU5HIChzdHJpbmcpKTsKICAgICAgIG1lbXNldCAoU0RBVEEgKHN0cmluZyks IDAsIGxlbik7CiAgICAgICBTVFJJTkdfU0VUX0NIQVJTIChzdHJpbmcsIGxlbik7CiAgICAgICBT VFJJTkdfU0VUX1VOSUJZVEUgKHN0cmluZyk7CkBAIC00MTc5LDE2ICs0MTc2LDEyIEBAIGhhc2hf aW5kZXhfc2l6ZSAoc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCwgcHRyZGlmZl90IHNpemUpCiAg ICBzaXplIGV4Y2VlZHMgUkVIQVNIX1RIUkVTSE9MRC4KIAogICAgV0VBSyBzcGVjaWZpZXMgdGhl IHdlYWtuZXNzIG9mIHRoZSB0YWJsZS4gIElmIG5vbi1uaWwsIGl0IG11c3QgYmUKLSAgIG9uZSBv ZiB0aGUgc3ltYm9scyBga2V5JywgYHZhbHVlJywgYGtleS1vci12YWx1ZScsIG9yIGBrZXktYW5k LXZhbHVlJy4KLQotICAgSWYgUFVSRUNPUFkgaXMgbm9uLW5pbCwgdGhlIHRhYmxlIGNhbiBiZSBj b3BpZWQgdG8gcHVyZSBzdG9yYWdlIHZpYQotICAgYHB1cmVjb3B5JyB3aGVuIEVtYWNzIGlzIGJl aW5nIGR1bXBlZC4gU3VjaCB0YWJsZXMgY2FuIG5vIGxvbmdlciBiZQotICAgY2hhbmdlZCBhZnRl ciBwdXJlY29weS4gICovCisgICBvbmUgb2YgdGhlIHN5bWJvbHMgYGtleScsIGB2YWx1ZScsIGBr ZXktb3ItdmFsdWUnLCBvciBga2V5LWFuZC12YWx1ZScuICovCiAKIExpc3BfT2JqZWN0CiBtYWtl X2hhc2hfdGFibGUgKHN0cnVjdCBoYXNoX3RhYmxlX3Rlc3QgdGVzdCwgRU1BQ1NfSU5UIHNpemUs CiAJCSBmbG9hdCByZWhhc2hfc2l6ZSwgZmxvYXQgcmVoYXNoX3RocmVzaG9sZCwKLQkJIExpc3Bf T2JqZWN0IHdlYWssIGJvb2wgcHVyZWNvcHkpCisJCSBMaXNwX09iamVjdCB3ZWFrKQogewogICBz dHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoOwogICBMaXNwX09iamVjdCB0YWJsZTsKQEAgLTQyMTcs NyArNDIxMCw2IEBAIG1ha2VfaGFzaF90YWJsZSAoc3RydWN0IGhhc2hfdGFibGVfdGVzdCB0ZXN0 LCBFTUFDU19JTlQgc2l6ZSwKICAgaC0+bmV4dCA9IG1ha2VfdmVjdG9yIChzaXplLCBtYWtlX2Zp eG51bSAoLTEpKTsKICAgaC0+aW5kZXggPSBtYWtlX3ZlY3RvciAoaGFzaF9pbmRleF9zaXplICho LCBzaXplKSwgbWFrZV9maXhudW0gKC0xKSk7CiAgIGgtPm5leHRfd2VhayA9IE5VTEw7Ci0gIGgt PnB1cmVjb3B5ID0gcHVyZWNvcHk7CiAgIGgtPm11dGFibGUgPSB0cnVlOwogCiAgIC8qIFNldCB1 cCB0aGUgZnJlZSBsaXN0LiAgKi8KQEAgLTQzMTgsMTEgKzQzMTAsNiBAQCBtYXliZV9yZXNpemVf aGFzaF90YWJsZSAoc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaCkKIAkgICAgc2V0X2hhc2hfbmV4 dF9zbG90IChoLCBpLCBIQVNIX0lOREVYIChoLCBzdGFydF9vZl9idWNrZXQpKTsKIAkgICAgc2V0 X2hhc2hfaW5kZXhfc2xvdCAoaCwgc3RhcnRfb2ZfYnVja2V0LCBpKTsKIAkgIH0KLQotI2lmZGVm IEVOQUJMRV9DSEVDS0lORwotICAgICAgaWYgKEhBU0hfVEFCTEVfUCAoVnB1cmlmeV9mbGFnKSAm JiBYSEFTSF9UQUJMRSAoVnB1cmlmeV9mbGFnKSA9PSBoKQotCW1lc3NhZ2UgKCJHcm93aW5nIGhh c2ggdGFibGUgdG86ICUicEQiZCIsIG5leHRfc2l6ZSk7Ci0jZW5kaWYKICAgICB9CiB9CiAKQEAg LTQzODUsNyArNDM3Miw2IEBAIGNoZWNrX211dGFibGVfaGFzaF90YWJsZSAoTGlzcF9PYmplY3Qg b2JqLCBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoKQogewogICBpZiAoIWgtPm11dGFibGUpCiAg ICAgc2lnbmFsX2Vycm9yICgiaGFzaCB0YWJsZSB0ZXN0IG1vZGlmaWVzIHRhYmxlIiwgb2JqKTsK LSAgZWFzc2VydCAoIVBVUkVfUCAoaCkpOwogfQogCiAvKiBQdXQgYW4gZW50cnkgaW50byBoYXNo IHRhYmxlIEggdGhhdCBhc3NvY2lhdGVzIEtFWSB3aXRoIFZBTFVFLgpAQCAtNDg3NiwxNiArNDg2 MiwxMCBAQCBERUZVTiAoIm1ha2UtaGFzaC10YWJsZSIsIEZtYWtlX2hhc2hfdGFibGUsIFNtYWtl X2hhc2hfdGFibGUsIDAsIE1BTlksIDAsCiBXRUFLLiAgV0VBSyB0IGlzIGVxdWl2YWxlbnQgdG8g YGtleS1hbmQtdmFsdWUnLiAgRGVmYXVsdCB2YWx1ZSBvZiBXRUFLCiBpcyBuaWwuCiAKLTpwdXJl Y29weSBQVVJFQ09QWSAtLSBJZiBQVVJFQ09QWSBpcyBub24tbmlsLCB0aGUgdGFibGUgY2FuIGJl IGNvcGllZAotdG8gcHVyZSBzdG9yYWdlIHdoZW4gRW1hY3MgaXMgYmVpbmcgZHVtcGVkLCBtYWtp bmcgdGhlIGNvbnRlbnRzIG9mIHRoZQotdGFibGUgcmVhZCBvbmx5LiBBbnkgZnVydGhlciBjaGFu Z2VzIHRvIHB1cmlmaWVkIHRhYmxlcyB3aWxsIHJlc3VsdAotaW4gYW4gZXJyb3IuCi0KIHVzYWdl OiAobWFrZS1oYXNoLXRhYmxlICZyZXN0IEtFWVdPUkQtQVJHUykgICovKQogICAocHRyZGlmZl90 IG5hcmdzLCBMaXNwX09iamVjdCAqYXJncykKIHsKICAgTGlzcF9PYmplY3QgdGVzdCwgd2VhazsK LSAgYm9vbCBwdXJlY29weTsKICAgc3RydWN0IGhhc2hfdGFibGVfdGVzdCB0ZXN0ZGVzYzsKICAg cHRyZGlmZl90IGk7CiAgIFVTRV9TQUZFX0FMTE9DQTsKQEAgLTQ5MTksOSArNDg5OSw4IEBAIERF RlVOICgibWFrZS1oYXNoLXRhYmxlIiwgRm1ha2VfaGFzaF90YWJsZSwgU21ha2VfaGFzaF90YWJs ZSwgMCwgTUFOWSwgMCwKICAgICAgIHRlc3RkZXNjLmNtcGZuID0gY21wZm5fdXNlcl9kZWZpbmVk OwogICAgIH0KIAotICAvKiBTZWUgaWYgdGhlcmUncyBhIGA6cHVyZWNvcHkgUFVSRUNPUFknIGFy Z3VtZW50LiAgKi8KLSAgaSA9IGdldF9rZXlfYXJnIChRQ3B1cmVjb3B5LCBuYXJncywgYXJncywg dXNlZCk7Ci0gIHB1cmVjb3B5ID0gaSAmJiAhTklMUCAoYXJnc1tpXSk7CisgIC8qIElnbm9yZSBh IGA6cHVyZWNvcHkgUFVSRUNPUFknIGFyZ3VtZW50LiAgKi8KKyAgZ2V0X2tleV9hcmcgKFFDcHVy ZWNvcHksIG5hcmdzLCBhcmdzLCB1c2VkKTsKICAgLyogU2VlIGlmIHRoZXJlJ3MgYSBgOnNpemUg U0laRScgYXJndW1lbnQuICAqLwogICBpID0gZ2V0X2tleV9hcmcgKFFDc2l6ZSwgbmFyZ3MsIGFy Z3MsIHVzZWQpOwogICBMaXNwX09iamVjdCBzaXplX2FyZyA9IGkgPyBhcmdzW2ldIDogUW5pbDsK QEAgLTQ5NzEsOCArNDk1MCw3IEBAIERFRlVOICgibWFrZS1oYXNoLXRhYmxlIiwgRm1ha2VfaGFz aF90YWJsZSwgU21ha2VfaGFzaF90YWJsZSwgMCwgTUFOWSwgMCwKICAgICAgIHNpZ25hbF9lcnJv ciAoIkludmFsaWQgYXJndW1lbnQgbGlzdCIsIGFyZ3NbaV0pOwogCiAgIFNBRkVfRlJFRSAoKTsK LSAgcmV0dXJuIG1ha2VfaGFzaF90YWJsZSAodGVzdGRlc2MsIHNpemUsIHJlaGFzaF9zaXplLCBy ZWhhc2hfdGhyZXNob2xkLCB3ZWFrLAotCQkJICBwdXJlY29weSk7CisgIHJldHVybiBtYWtlX2hh c2hfdGFibGUgKHRlc3RkZXNjLCBzaXplLCByZWhhc2hfc2l6ZSwgcmVoYXNoX3RocmVzaG9sZCwg d2Vhayk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2ZvbnRzZXQuYyBiL3NyYy9mb250c2V0LmMK aW5kZXggMzMyYmU2YzM5ZDExZi4uMDQyMWNhNDljNzM2MSAxMDA2NDQKLS0tIGEvc3JjL2ZvbnRz ZXQuYworKysgYi9zcmMvZm9udHNldC5jCkBAIC0yMTI5LDcgKzIxMjksNyBAQCBzeW1zX29mX2Zv bnRzZXQgKHZvaWQpCiAgIHNldF9mb250c2V0X2lkIChWZGVmYXVsdF9mb250c2V0LCBtYWtlX2Zp eG51bSAoMCkpOwogICBzZXRfZm9udHNldF9uYW1lCiAgICAgKFZkZWZhdWx0X2ZvbnRzZXQsCi0g ICAgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCItKi0qLSotKi0qLSotKi0qLSotKi0qLSotZm9udHNl dC1kZWZhdWx0IikpOworICAgICBidWlsZF9zdHJpbmcgKCItKi0qLSotKi0qLSotKi0qLSotKi0q LSotZm9udHNldC1kZWZhdWx0IikpOwogICBBU0VUIChWZm9udHNldF90YWJsZSwgMCwgVmRlZmF1 bHRfZm9udHNldCk7CiAgIG5leHRfZm9udHNldF9pZCA9IDE7CiAgIFBEVU1QRVJfUkVNRU1CRVJf U0NBTEFSIChuZXh0X2ZvbnRzZXRfaWQpOwpAQCAtMjE4Nyw3ICsyMTg3LDcgQEAgc3ltc19vZl9m b250c2V0ICh2b2lkKQogCSAgICAgICBkb2M6IC8qIEFsaXN0IG9mIGZvbnRzZXQgbmFtZXMgdnMg dGhlIGFsaWFzZXMuICAqLyk7CiAgIFZmb250c2V0X2FsaWFzX2FsaXN0CiAgICAgPSBsaXN0MSAo RmNvbnMgKEZPTlRTRVRfTkFNRSAoVmRlZmF1bHRfZm9udHNldCksCi0JCSAgICBidWlsZF9wdXJl X2Nfc3RyaW5nICgiZm9udHNldC1kZWZhdWx0IikpKTsKKwkJICAgIGJ1aWxkX3N0cmluZyAoImZv bnRzZXQtZGVmYXVsdCIpKSk7CiAKICAgREVGVkFSX0xJU1AgKCJ2ZXJ0aWNhbC1jZW50ZXJpbmct Zm9udC1yZWdleHAiLAogCSAgICAgICBWdmVydGljYWxfY2VudGVyaW5nX2ZvbnRfcmVnZXhwLApk aWZmIC0tZ2l0IGEvc3JjL2ZyYW1lLmMgYi9zcmMvZnJhbWUuYwppbmRleCBhNjIzNDdjMWZiMmE5 Li42NTJkMjY2NTQzOTBkIDEwMDY0NAotLS0gYS9zcmMvZnJhbWUuYworKysgYi9zcmMvZnJhbWUu YwpAQCAtMTEwOCw3ICsxMTA4LDcgQEAgbWFrZV9pbml0aWFsX2ZyYW1lICh2b2lkKQogICBWZnJh bWVfbGlzdCA9IEZjb25zIChmcmFtZSwgVmZyYW1lX2xpc3QpOwogCiAgIHR0eV9mcmFtZV9jb3Vu dCA9IDE7Ci0gIGZzZXRfbmFtZSAoZiwgYnVpbGRfcHVyZV9jX3N0cmluZyAoIkYxIikpOworICBm c2V0X25hbWUgKGYsIGJ1aWxkX3N0cmluZyAoIkYxIikpOwogCiAgIFNFVF9GUkFNRV9WSVNJQkxF IChmLCAxKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2ltYWdlLmMgYi9zcmMvaW1hZ2UuYwppbmRleCA4 MTM3ZGJlYThkN2VjLi5jNzM4NTQ4ZDM4MmE3IDEwMDY0NAotLS0gYS9zcmMvaW1hZ2UuYworKysg Yi9zcmMvaW1hZ2UuYwpAQCAtNDgwOCw3ICs0ODA4LDcgQEAgeHBtX21ha2VfY29sb3JfdGFibGVf aCAodm9pZCAoKipwdXRfZnVuYykgKExpc3BfT2JqZWN0LCBjb25zdCBjaGFyICosIGludCwKICAg KmdldF9mdW5jID0geHBtX2dldF9jb2xvcl90YWJsZV9oOwogICByZXR1cm4gbWFrZV9oYXNoX3Rh YmxlIChoYXNodGVzdF9lcXVhbCwgREVGQVVMVF9IQVNIX1NJWkUsCiAJCQkgIERFRkFVTFRfUkVI QVNIX1NJWkUsIERFRkFVTFRfUkVIQVNIX1RIUkVTSE9MRCwKLQkJCSAgUW5pbCwgZmFsc2UpOwor CQkJICBRbmlsKTsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcnZhbHMu YyBiL3NyYy9pbnRlcnZhbHMuYwppbmRleCBmODhhNDFmMjU0OTE3Li41YjY5YWYyNDQ5YTY4IDEw MDY0NAotLS0gYS9zcmMvaW50ZXJ2YWxzLmMKKysrIGIvc3JjL2ludGVydmFscy5jCkBAIC00NCw3 ICs0NCw2IEBACiAjaW5jbHVkZSAibGlzcC5oIgogI2luY2x1ZGUgImludGVydmFscy5oIgogI2lu Y2x1ZGUgImJ1ZmZlci5oIgotI2luY2x1ZGUgInB1cmVzaXplLmgiCiAjaW5jbHVkZSAia2V5bWFw LmgiCiAKIC8qIFRlc3QgZm9yIG1lbWJlcnNoaXAsIGFsbG93aW5nIGZvciB0IChhY3R1YWxseSBh bnkgbm9uLWNvbnMpIHRvIG1lYW4gdGhlCkBAIC0xMDEsNyArMTAwLDYgQEAgY3JlYXRlX3Jvb3Rf aW50ZXJ2YWwgKExpc3BfT2JqZWN0IHBhcmVudCkKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAg ICBDSEVDS19JTVBVUkUgKHBhcmVudCwgWFNUUklORyAocGFyZW50KSk7CiAgICAgICBuZXctPnRv dGFsX2xlbmd0aCA9IFNDSEFSUyAocGFyZW50KTsKICAgICAgIGVhc3NlcnQgKFRPVEFMX0xFTkdU SCAobmV3KSA+PSAwKTsKICAgICAgIHNldF9zdHJpbmdfaW50ZXJ2YWxzIChwYXJlbnQsIG5ldyk7 CmRpZmYgLS1naXQgYS9zcmMvanNvbi5jIGIvc3JjL2pzb24uYwppbmRleCAzZjFkMjdhZDdmYjdm Li5jY2IwNDA1YzRlMDY5IDEwMDY0NAotLS0gYS9zcmMvanNvbi5jCisrKyBiL3NyYy9qc29uLmMK QEAgLTExMTAsOCArMTExMCw4IEBAIGRlZmluZV9lcnJvciAoTGlzcF9PYmplY3QgbmFtZSwgY29u c3QgY2hhciAqbWVzc2FnZSwgTGlzcF9PYmplY3QgcGFyZW50KQogICBlYXNzZXJ0IChDT05TUCAo cGFyZW50X2NvbmRpdGlvbnMpKTsKICAgZWFzc2VydCAoIU5JTFAgKEZtZW1xIChwYXJlbnQsIHBh cmVudF9jb25kaXRpb25zKSkpOwogICBlYXNzZXJ0IChOSUxQIChGbWVtcSAobmFtZSwgcGFyZW50 X2NvbmRpdGlvbnMpKSk7Ci0gIEZwdXQgKG5hbWUsIFFlcnJvcl9jb25kaXRpb25zLCBwdXJlX2Nv bnMgKG5hbWUsIHBhcmVudF9jb25kaXRpb25zKSk7Ci0gIEZwdXQgKG5hbWUsIFFlcnJvcl9tZXNz YWdlLCBidWlsZF9wdXJlX2Nfc3RyaW5nIChtZXNzYWdlKSk7CisgIEZwdXQgKG5hbWUsIFFlcnJv cl9jb25kaXRpb25zLCBGY29ucyAobmFtZSwgcGFyZW50X2NvbmRpdGlvbnMpKTsKKyAgRnB1dCAo bmFtZSwgUWVycm9yX21lc3NhZ2UsIGJ1aWxkX3N0cmluZyAobWVzc2FnZSkpOwogfQogCiB2b2lk CmRpZmYgLS1naXQgYS9zcmMva2V5Ym9hcmQuYyBiL3NyYy9rZXlib2FyZC5jCmluZGV4IDllZTRj NGY2ZDY4MzkuLjFjODYyYTE1NzU5YWYgMTAwNjQ0Ci0tLSBhL3NyYy9rZXlib2FyZC5jCisrKyBi L3NyYy9rZXlib2FyZC5jCkBAIC0xMTA5LDggKzExMDksNiBAQCB0b3BfbGV2ZWxfMSAoTGlzcF9P YmplY3QgaWdub3JlKQogICAvKiBPbiBlbnRyeSB0byB0aGUgb3V0ZXIgbGV2ZWwsIHJ1biB0aGUg c3RhcnR1cCBmaWxlLiAgKi8KICAgaWYgKCFOSUxQIChWdG9wX2xldmVsKSkKICAgICBpbnRlcm5h bF9jb25kaXRpb25fY2FzZSAodG9wX2xldmVsXzIsIFFlcnJvciwgY21kX2Vycm9yKTsKLSAgZWxz ZSBpZiAoIU5JTFAgKFZwdXJpZnlfZmxhZykpCi0gICAgbWVzc2FnZTEgKCJCYXJlIGltcHVyZSBF bWFjcyAoc3RhbmRhcmQgTGlzcCBjb2RlIG5vdCBsb2FkZWQpIik7CiAgIGVsc2UKICAgICBtZXNz YWdlMSAoIkJhcmUgRW1hY3MgKHN0YW5kYXJkIExpc3AgY29kZSBub3QgbG9hZGVkKSIpOwogICBy ZXR1cm4gUW5pbDsKQEAgLTExNDU4LDE0ICsxMTQ1NiwxNCBAQCBzeW1zX29mX2tleWJvYXJkICh2 b2lkKQogICBwZW5kaW5nX2Z1bmNhbGxzID0gUW5pbDsKICAgc3RhdGljcHJvICgmcGVuZGluZ19m dW5jYWxscyk7CiAKLSAgVmxpc3B5X21vdXNlX3N0ZW0gPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgi bW91c2UiKTsKKyAgVmxpc3B5X21vdXNlX3N0ZW0gPSBidWlsZF9zdHJpbmcgKCJtb3VzZSIpOwog ICBzdGF0aWNwcm8gKCZWbGlzcHlfbW91c2Vfc3RlbSk7CiAKLSAgcmVndWxhcl90b3BfbGV2ZWxf bWVzc2FnZSA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJCYWNrIHRvIHRvcCBsZXZlbCIpOworICBy ZWd1bGFyX3RvcF9sZXZlbF9tZXNzYWdlID0gYnVpbGRfc3RyaW5nICgiQmFjayB0byB0b3AgbGV2 ZWwiKTsKICAgc3RhdGljcHJvICgmcmVndWxhcl90b3BfbGV2ZWxfbWVzc2FnZSk7CiAjaWZkZWYg SEFWRV9TVEFDS19PVkVSRkxPV19IQU5ETElORwogICByZWNvdmVyX3RvcF9sZXZlbF9tZXNzYWdl Ci0gICAgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiUmUtZW50ZXJpbmcgdG9wIGxldmVsIGFmdGVy IEMgc3RhY2sgb3ZlcmZsb3ciKTsKKyAgICA9IGJ1aWxkX3N0cmluZyAoIlJlLWVudGVyaW5nIHRv cCBsZXZlbCBhZnRlciBDIHN0YWNrIG92ZXJmbG93Iik7CiAgIHN0YXRpY3BybyAoJnJlY292ZXJf dG9wX2xldmVsX21lc3NhZ2UpOwogI2VuZGlmCiAgIERFRlZBUl9MSVNQICgiaW50ZXJuYWwtLXRv cC1sZXZlbC1tZXNzYWdlIiwgVmludGVybmFsX190b3BfbGV2ZWxfbWVzc2FnZSwKZGlmZiAtLWdp dCBhL3NyYy9rZXltYXAuYyBiL3NyYy9rZXltYXAuYwppbmRleCA3ODI5MzFmYWRmZjZhLi5kY2E0 ZmNlOWIxM2Y4IDEwMDY0NAotLS0gYS9zcmMva2V5bWFwLmMKKysrIGIvc3JjL2tleW1hcC5jCkBA IC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAia2V5Ym9hcmQuaCIKICNpbmNsdWRlICJ0ZXJtaG9v a3MuaCIKICNpbmNsdWRlICJibG9ja2lucHV0LmgiCi0jaW5jbHVkZSAicHVyZXNpemUuaCIKICNp bmNsdWRlICJpbnRlcnZhbHMuaCIKICNpbmNsdWRlICJrZXltYXAuaCIKICNpbmNsdWRlICJ3aW5k b3cuaCIKQEAgLTExNyw4ICsxMTYsNiBAQCBERUZVTiAoIm1ha2Utc3BhcnNlLWtleW1hcCIsIEZt YWtlX3NwYXJzZV9rZXltYXAsIFNtYWtlX3NwYXJzZV9rZXltYXAsIDAsIDEsIDAsCiB7CiAgIGlm ICghTklMUCAoc3RyaW5nKSkKICAgICB7Ci0gICAgICBpZiAoIU5JTFAgKFZwdXJpZnlfZmxhZykp Ci0Jc3RyaW5nID0gRnB1cmVjb3B5IChzdHJpbmcpOwogICAgICAgcmV0dXJuIGxpc3QyIChRa2V5 bWFwLCBzdHJpbmcpOwogICAgIH0KICAgcmV0dXJuIGxpc3QxIChRa2V5bWFwKTsKQEAgLTI5Niw3 ICsyOTMsNiBAQCBERUZVTiAoInNldC1rZXltYXAtcGFyZW50IiwgRnNldF9rZXltYXBfcGFyZW50 LCBTc2V0X2tleW1hcF9wYXJlbnQsIDIsIDIsIDAsCiAJIElmIHdlIGNhbWUgdG8gdGhlIGVuZCwg YWRkIHRoZSBwYXJlbnQgaW4gUFJFVi4gICovCiAgICAgICBpZiAoIUNPTlNQIChsaXN0KSB8fCBL RVlNQVBQIChsaXN0KSkKIAl7Ci0JICBDSEVDS19JTVBVUkUgKHByZXYsIFhDT05TIChwcmV2KSk7 CiAJICBYU0VUQ0RSIChwcmV2LCBwYXJlbnQpOwogCSAgcmV0dXJuIHBhcmVudDsKIAl9CkBAIC03 MzQsNyArNzMwLDcgQEAgc3RvcmVfaW5fa2V5bWFwIChMaXNwX09iamVjdCBrZXltYXAsIHJlZ2lz dGVyIExpc3BfT2JqZWN0IGlkeCwgTGlzcF9PYmplY3QgZGVmKQogCiAgIC8qIElmIHdlIGFyZSBw cmVwYXJpbmcgdG8gZHVtcCwgYW5kIERFRiBpcyBhIG1lbnUgZWxlbWVudAogICAgICB3aXRoIGEg bWVudSBpdGVtIGluZGljYXRvciwgY29weSBpdCB0byBlbnN1cmUgaXQgaXMgbm90IHB1cmUuICAq LwotICBpZiAoQ09OU1AgKGRlZikgJiYgUFVSRV9QIChYQ09OUyAoZGVmKSkKKyAgaWYgKENPTlNQ IChkZWYpCiAgICAgICAmJiAoRVEgKFhDQVIgKGRlZiksIFFtZW51X2l0ZW0pIHx8IFNUUklOR1Ag KFhDQVIgKGRlZikpKSkKICAgICBkZWYgPSBGY29ucyAoWENBUiAoZGVmKSwgWENEUiAoZGVmKSk7 CiAKQEAgLTc3OCw3ICs3NzQsNiBAQCBzdG9yZV9pbl9rZXltYXAgKExpc3BfT2JqZWN0IGtleW1h cCwgcmVnaXN0ZXIgTGlzcF9PYmplY3QgaWR4LCBMaXNwX09iamVjdCBkZWYpCiAJICB7CiAJICAg IGlmIChGSVhOQVRQIChpZHgpICYmIFhGSVhOQVQgKGlkeCkgPCBBU0laRSAoZWx0KSkKIAkgICAg ICB7Ci0JCUNIRUNLX0lNUFVSRSAoZWx0LCBYVkVDVE9SIChlbHQpKTsKIAkJQVNFVCAoZWx0LCBY RklYTkFUIChpZHgpLCBkZWYpOwogCQlyZXR1cm4gZGVmOwogCSAgICAgIH0KQEAgLTgzMSw3ICs4 MjYsNiBAQCBzdG9yZV9pbl9rZXltYXAgKExpc3BfT2JqZWN0IGtleW1hcCwgcmVnaXN0ZXIgTGlz cF9PYmplY3QgaWR4LCBMaXNwX09iamVjdCBkZWYpCiAJICAgICAgfQogCSAgICBlbHNlIGlmIChF USAoaWR4LCBYQ0FSIChlbHQpKSkKIAkgICAgICB7Ci0JCUNIRUNLX0lNUFVSRSAoZWx0LCBYQ09O UyAoZWx0KSk7CiAJCVhTRVRDRFIgKGVsdCwgZGVmKTsKIAkJcmV0dXJuIGRlZjsKIAkgICAgICB9 CkBAIC04NzcsNyArODcxLDYgQEAgc3RvcmVfaW5fa2V5bWFwIChMaXNwX09iamVjdCBrZXltYXAs IHJlZ2lzdGVyIExpc3BfT2JqZWN0IGlkeCwgTGlzcF9PYmplY3QgZGVmKQogCX0KICAgICAgIGVs c2UKIAllbHQgPSBGY29ucyAoaWR4LCBkZWYpOwotICAgICAgQ0hFQ0tfSU1QVVJFIChpbnNlcnRp b25fcG9pbnQsIFhDT05TIChpbnNlcnRpb25fcG9pbnQpKTsKICAgICAgIFhTRVRDRFIgKGluc2Vy dGlvbl9wb2ludCwgRmNvbnMgKGVsdCwgWENEUiAoaW5zZXJ0aW9uX3BvaW50KSkpOwogICAgIH0K ICAgfQpAQCAtMzEyMSwxMiArMzExNCwxMiBAQCBzeW1zX29mX2tleW1hcCAodm9pZCkKICAgY3Vy cmVudF9nbG9iYWxfbWFwID0gUW5pbDsKICAgc3RhdGljcHJvICgmY3VycmVudF9nbG9iYWxfbWFw KTsKIAotICBleGNsdWRlX2tleXMgPSBwdXJlX2xpc3QKLSAgICAocHVyZV9jb25zIChidWlsZF9w dXJlX2Nfc3RyaW5nICgiREVMIiksIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJcXGQiKSksCi0gICAg IHB1cmVfY29ucyAoYnVpbGRfcHVyZV9jX3N0cmluZyAoIlRBQiIpLCBidWlsZF9wdXJlX2Nfc3Ry aW5nICgiXFx0IikpLAotICAgICBwdXJlX2NvbnMgKGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJSRVQi KSwgYnVpbGRfcHVyZV9jX3N0cmluZyAoIlxcciIpKSwKLSAgICAgcHVyZV9jb25zIChidWlsZF9w dXJlX2Nfc3RyaW5nICgiRVNDIiksIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJcXGUiKSksCi0gICAg IHB1cmVfY29ucyAoYnVpbGRfcHVyZV9jX3N0cmluZyAoIlNQQyIpLCBidWlsZF9wdXJlX2Nfc3Ry aW5nICgiICIpKSk7CisgIGV4Y2x1ZGVfa2V5cyA9IGxpc3QKKyAgICAoRmNvbnMgKGJ1aWxkX3N0 cmluZyAoIkRFTCIpLCBidWlsZF9zdHJpbmcgKCJcXGQiKSksCisgICAgIEZjb25zIChidWlsZF9z dHJpbmcgKCJUQUIiKSwgYnVpbGRfc3RyaW5nICgiXFx0IikpLAorICAgICBGY29ucyAoYnVpbGRf c3RyaW5nICgiUkVUIiksIGJ1aWxkX3N0cmluZyAoIlxcciIpKSwKKyAgICAgRmNvbnMgKGJ1aWxk X3N0cmluZyAoIkVTQyIpLCBidWlsZF9zdHJpbmcgKCJcXGUiKSksCisgICAgIEZjb25zIChidWls ZF9zdHJpbmcgKCJTUEMiKSwgYnVpbGRfc3RyaW5nICgiICIpKSk7CiAgIHN0YXRpY3BybyAoJmV4 Y2x1ZGVfa2V5cyk7CiAKICAgREVGVkFSX0xJU1AgKCJtaW5pYnVmZmVyLWxvY2FsLW1hcCIsIFZt aW5pYnVmZmVyX2xvY2FsX21hcCwKQEAgLTMxNzYsMTMgKzMxNjksMTIgQEAgc3ltc19vZl9rZXlt YXAgKHZvaWQpCiAgIERFRlNZTSAoUW1vZGVfbGluZSwgIm1vZGUtbGluZSIpOwogCiAgIHN0YXRp Y3BybyAoJlZtb3VzZV9ldmVudHMpOwotICBWbW91c2VfZXZlbnRzID0gcHVyZV9saXN0IChRbWVu dV9iYXIsIFF0YWJfYmFyLCBRdG9vbF9iYXIsCi0JCQkgICAgIFF0YWJfbGluZSwgUWhlYWRlcl9s aW5lLCBRbW9kZV9saW5lLAotCQkJICAgICBpbnRlcm5fY19zdHJpbmcgKCJtb3VzZS0xIiksCi0J CQkgICAgIGludGVybl9jX3N0cmluZyAoIm1vdXNlLTIiKSwKLQkJCSAgICAgaW50ZXJuX2Nfc3Ry aW5nICgibW91c2UtMyIpLAotCQkJICAgICBpbnRlcm5fY19zdHJpbmcgKCJtb3VzZS00IiksCi0J CQkgICAgIGludGVybl9jX3N0cmluZyAoIm1vdXNlLTUiKSk7CisgIFZtb3VzZV9ldmVudHMgPSBs aXN0IChRbWVudV9iYXIsIFF0b29sX2JhciwgUWhlYWRlcl9saW5lLCBRbW9kZV9saW5lLAorCQkJ aW50ZXJuX2Nfc3RyaW5nICgibW91c2UtMSIpLAorCQkJaW50ZXJuX2Nfc3RyaW5nICgibW91c2Ut MiIpLAorCQkJaW50ZXJuX2Nfc3RyaW5nICgibW91c2UtMyIpLAorCQkJaW50ZXJuX2Nfc3RyaW5n ICgibW91c2UtNCIpLAorCQkJaW50ZXJuX2Nfc3RyaW5nICgibW91c2UtNSIpKTsKIAogICAvKiBL ZXltYXAgdXNlZCBmb3IgbWluaWJ1ZmZlcnMgd2hlbiBkb2luZyBjb21wbGV0aW9uLiAgKi8KICAg LyogS2V5bWFwIHVzZWQgZm9yIG1pbmlidWZmZXJzIHdoZW4gZG9pbmcgY29tcGxldGlvbiBhbmQg cmVxdWlyZSBhIG1hdGNoLiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9saXNwLmggYi9zcmMvbGlzcC5o CmluZGV4IGI5NWYzODliODkwMjQuLjc1ODAyNzJlNWM3ZjMgMTAwNjQ0Ci0tLSBhL3NyYy9saXNw LmgKKysrIGIvc3JjL2xpc3AuaApAQCAtODIzLDkgKzgyMyw2IEBAICNkZWZpbmUgWFVOVEFHKGEs IHR5cGUsIGN0eXBlKSAoKGN0eXBlICopIFwKIAkgc3BlY2lhbCAod2l0aCBgZGVmdmFyJyBldGMp LCBhbmQgc2hvdWxkbid0IGJlIGxleGljYWxseSBib3VuZC4gICovCiAgICAgICBib29sX2JmIGRl Y2xhcmVkX3NwZWNpYWwgOiAxOwogCi0gICAgICAvKiBUcnVlIGlmIHBvaW50ZWQgdG8gZnJvbSBw dXJlc3BhY2UgYW5kIGhlbmNlIGNhbid0IGJlIEdDJ2QuICAqLwotICAgICAgYm9vbF9iZiBwaW5u ZWQgOiAxOwotCiAgICAgICAvKiBUaGUgc3ltYm9sJ3MgbmFtZSwgYXMgYSBMaXNwIHN0cmluZy4g ICovCiAgICAgICBMaXNwX09iamVjdCBuYW1lOwogCkBAIC0xNTM0LDIwICsxNTMxLDE0IEBAICNk ZWZpbmUgU1RSSU5HX0JZVEVTX0JPVU5EICBcCiAvKiBNYXJrIFNUUiBhcyBhIHVuaWJ5dGUgc3Ry aW5nLiAgKi8KICNkZWZpbmUgU1RSSU5HX1NFVF9VTklCWVRFKFNUUikJCQkJXAogICBkbyB7CQkJ CQkJCVwKLSAgICBpZiAoWFNUUklORyAoU1RSKS0+dS5zLnNpemUgPT0gMCkJCQlcCi0gICAgICAo U1RSKSA9IGVtcHR5X3VuaWJ5dGVfc3RyaW5nOwkJCVwKLSAgICBlbHNlCQkJCQkJXAotICAgICAg WFNUUklORyAoU1RSKS0+dS5zLnNpemVfYnl0ZSA9IC0xOwkJXAorICAgIFhTVFJJTkcgKFNUUikt PnUucy5zaXplX2J5dGUgPSAtMTsJCQlcCiAgIH0gd2hpbGUgKGZhbHNlKQogCiAvKiBNYXJrIFNU UiBhcyBhIG11bHRpYnl0ZSBzdHJpbmcuICBBc3N1cmUgdGhhdCBTVFIgY29udGFpbnMgb25seQog ICAgQVNDSUkgY2hhcmFjdGVycyBpbiBhZHZhbmNlLiAgKi8KLSNkZWZpbmUgU1RSSU5HX1NFVF9N VUxUSUJZVEUoU1RSKQkJCVwKLSAgZG8gewkJCQkJCQlcCi0gICAgaWYgKFhTVFJJTkcgKFNUUikt PnUucy5zaXplID09IDApCQkJXAotICAgICAgKFNUUikgPSBlbXB0eV9tdWx0aWJ5dGVfc3RyaW5n OwkJCVwKLSAgICBlbHNlCQkJCQkJXAotICAgICAgWFNUUklORyAoU1RSKS0+dS5zLnNpemVfYnl0 ZSA9IFhTVFJJTkcgKFNUUiktPnUucy5zaXplOyBcCisjZGVmaW5lIFNUUklOR19TRVRfTVVMVElC WVRFKFNUUikJCQkJXAorICBkbyB7CQkJCQkJCQlcCisgICAgWFNUUklORyAoU1RSKS0+dS5zLnNp emVfYnl0ZSA9IFhTVFJJTkcgKFNUUiktPnUucy5zaXplOwlcCiAgIH0gd2hpbGUgKGZhbHNlKQog CiAvKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBMaXNwIHN0cmluZ3Mu ICAqLwpAQCAtMjMwMSwxMiArMjI5Miw4IEBAICNkZWZpbmUgREVGU1lNKHN5bSwgbmFtZSkgLyog ZW1wdHkgKi8KICAgLyogSW5kZXggb2YgZmlyc3QgZnJlZSBlbnRyeSBpbiBmcmVlIGxpc3QsIG9y IC0xIGlmIG5vbmUuICAqLwogICBwdHJkaWZmX3QgbmV4dF9mcmVlOwogCi0gIC8qIFRydWUgaWYg dGhlIHRhYmxlIGNhbiBiZSBwdXJlY29waWVkLiAgVGhlIHRhYmxlIGNhbm5vdCBiZQotICAgICBj aGFuZ2VkIGFmdGVyd2FyZHMuICAqLwotICBib29sIHB1cmVjb3B5OwotCiAgIC8qIFRydWUgaWYg dGhlIHRhYmxlIGlzIG11dGFibGUuICBPcmRpbmFyaWx5IHRhYmxlcyBhcmUgbXV0YWJsZSwgYnV0 Ci0gICAgIHB1cmUgdGFibGVzIGFyZSBub3QsIGFuZCB3aGlsZSBhIHRhYmxlIGlzIGJlaW5nIG11 dGF0ZWQgaXQgaXMKKyAgICAgc29tZSB0YWJsZXMgYXJlIG5vdCwgYW5kIHdoaWxlIGEgdGFibGUg aXMgYmVpbmcgbXV0YXRlZCBpdCBpcwogICAgICBpbW11dGFibGUgZm9yIHJlY3Vyc2l2ZSBhdHRl bXB0cyB0byBtdXRhdGUgaXQuICAqLwogICBib29sIG11dGFibGU7CiAKQEAgLTM1OTksNyArMzU4 Niw3IEBAICNkZWZpbmUgQ09OU19UT19JTlRFR0VSKGNvbnMsIHR5cGUsIHZhcikJCQkJXAogTGlz cF9PYmplY3QgaGFzaGZuX2VxdWFsIChMaXNwX09iamVjdCwgc3RydWN0IExpc3BfSGFzaF9UYWJs ZSAqKTsKIExpc3BfT2JqZWN0IGhhc2hmbl91c2VyX2RlZmluZWQgKExpc3BfT2JqZWN0LCBzdHJ1 Y3QgTGlzcF9IYXNoX1RhYmxlICopOwogTGlzcF9PYmplY3QgbWFrZV9oYXNoX3RhYmxlIChzdHJ1 Y3QgaGFzaF90YWJsZV90ZXN0LCBFTUFDU19JTlQsIGZsb2F0LCBmbG9hdCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzcF9PYmplY3QsIGJvb2wpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXNwX09iamVjdCk7CiBwdHJkaWZmX3QgaGFzaF9sb29rdXAgKHN0cnVjdCBM aXNwX0hhc2hfVGFibGUgKiwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0ICopOwogcHRyZGlmZl90 IGhhc2hfcHV0IChzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICosIExpc3BfT2JqZWN0LCBMaXNwX09i amVjdCwKIAkJICAgIExpc3BfT2JqZWN0KTsKQEAgLTM3NTUsNyArMzc0Miw2IEBAIHZlcmlmeSAo RkxUX1JBRElYID09IDIgfHwgRkxUX1JBRElYID09IDE2KTsKIAogLyogRGVmaW5lZCBpbiBhbGxv Yy5jLiAgKi8KIGV4dGVybiB2b2lkICpteV9oZWFwX3N0YXJ0ICh2b2lkKTsKLWV4dGVybiB2b2lk IGNoZWNrX3B1cmVfc2l6ZSAodm9pZCk7CiB1bnNpZ25lZCBjaGFyICpyZXNpemVfc3RyaW5nX2Rh dGEgKExpc3BfT2JqZWN0LCBwdHJkaWZmX3QsIGludCwgaW50KTsKIGV4dGVybiB2b2lkIG1hbGxv Y193YXJuaW5nIChjb25zdCBjaGFyICopOwogZXh0ZXJuIEFWT0lEIG1lbW9yeV9mdWxsIChzaXpl X3QpOwpAQCAtMzgxMywxMSArMzc5OSw4IEBAIGZsdXNoX3N0YWNrX2NhbGxfZnVuYyAodm9pZCAo KmZ1bmMpICh2b2lkICphcmcpLCB2b2lkICphcmcpCiBleHRlcm4gTGlzcF9PYmplY3QgbGlzdDUg KExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LAogCQkJ ICBMaXNwX09iamVjdCk7CiBleHRlcm4gTGlzcF9PYmplY3QgbGlzdG4gKHB0cmRpZmZfdCwgTGlz cF9PYmplY3QsIC4uLik7Ci1leHRlcm4gTGlzcF9PYmplY3QgcHVyZV9saXN0biAocHRyZGlmZl90 LCBMaXNwX09iamVjdCwgLi4uKTsKICNkZWZpbmUgbGlzdCguLi4pIFwKICAgbGlzdG4gKEFSUkFZ RUxUUyAoKChMaXNwX09iamVjdCBbXSkge19fVkFfQVJHU19ffSkpLCBfX1ZBX0FSR1NfXykKLSNk ZWZpbmUgcHVyZV9saXN0KC4uLikgXAotICBwdXJlX2xpc3RuIChBUlJBWUVMVFMgKCgoTGlzcF9P YmplY3QgW10pIHtfX1ZBX0FSR1NfX30pKSwgX19WQV9BUkdTX18pCiAKIGVudW0gZ2Nfcm9vdF90 eXBlCiB7CkBAIC0zODkwLDE3ICszODczLDYgQEAgYnVpbGRfdW5pYnl0ZV9zdHJpbmcgKGNvbnN0 IGNoYXIgKnN0cikKIGV4dGVybiBMaXNwX09iamVjdCBtYWtlX3N0cmluZ19mcm9tX2J5dGVzIChj b25zdCBjaGFyICosIHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKIGV4dGVybiBMaXNwX09iamVjdCBt YWtlX3NwZWNpZmllZF9zdHJpbmcgKGNvbnN0IGNoYXIgKiwKIAkJCQkJICBwdHJkaWZmX3QsIHB0 cmRpZmZfdCwgYm9vbCk7Ci1leHRlcm4gTGlzcF9PYmplY3QgbWFrZV9wdXJlX3N0cmluZyAoY29u c3QgY2hhciAqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgYm9vbCk7Ci1leHRlcm4gTGlzcF9PYmpl Y3QgbWFrZV9wdXJlX2Nfc3RyaW5nIChjb25zdCBjaGFyICosIHB0cmRpZmZfdCk7Ci0KLS8qIE1h a2UgYSBzdHJpbmcgYWxsb2NhdGVkIGluIHB1cmUgc3BhY2UsIHVzZSBTVFIgYXMgc3RyaW5nIGRh dGEuICAqLwotCi1JTkxJTkUgTGlzcF9PYmplY3QKLWJ1aWxkX3B1cmVfY19zdHJpbmcgKGNvbnN0 IGNoYXIgKnN0cikKLXsKLSAgcmV0dXJuIG1ha2VfcHVyZV9jX3N0cmluZyAoc3RyLCBzdHJsZW4g KHN0cikpOwotfQotCiAvKiBNYWtlIGEgc3RyaW5nIGZyb20gdGhlIGRhdGEgYXQgU1RSLCB0cmVh dGluZyBpdCBhcyBtdWx0aWJ5dGUgaWYgdGhlCiAgICBkYXRhIHdhcnJhbnRzLiAgKi8KIApAQCAt MzkxMCw3ICszODgyLDYgQEAgYnVpbGRfc3RyaW5nIChjb25zdCBjaGFyICpzdHIpCiAgIHJldHVy biBtYWtlX3N0cmluZyAoc3RyLCBzdHJsZW4gKHN0cikpOwogfQogCi1leHRlcm4gTGlzcF9PYmpl Y3QgcHVyZV9jb25zIChMaXNwX09iamVjdCwgTGlzcF9PYmplY3QpOwogZXh0ZXJuIExpc3BfT2Jq ZWN0IG1ha2VfdmVjdG9yIChwdHJkaWZmX3QsIExpc3BfT2JqZWN0KTsKIGV4dGVybiBzdHJ1Y3Qg TGlzcF9WZWN0b3IgKmFsbG9jYXRlX25pbF92ZWN0b3IgKHB0cmRpZmZfdCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9scmVhZC5jIGIvc3JjL2xyZWFkLmMKaW5kZXggZGVhMWIyMzJmZmY4My4uMDMzZTli YTQxYWYxNiAxMDA2NDQKLS0tIGEvc3JjL2xyZWFkLmMKKysrIGIvc3JjL2xyZWFkLmMKQEAgLTIw OTgsMTMgKzIwOTgsMTMgQEAgcmVhZGV2YWxsb29wIChMaXNwX09iamVjdCByZWFkY2hhcmZ1biwK IAlyZWFkX29iamVjdHNfbWFwCiAJICA9IG1ha2VfaGFzaF90YWJsZSAoaGFzaHRlc3RfZXEsIERF RkFVTFRfSEFTSF9TSVpFLAogCQkJICAgICBERUZBVUxUX1JFSEFTSF9TSVpFLCBERUZBVUxUX1JF SEFTSF9USFJFU0hPTEQsCi0JCQkgICAgIFFuaWwsIGZhbHNlKTsKKwkJCSAgICAgUW5pbCk7CiAg ICAgICBpZiAoISBIQVNIX1RBQkxFX1AgKHJlYWRfb2JqZWN0c19jb21wbGV0ZWQpCiAJICB8fCBY SEFTSF9UQUJMRSAocmVhZF9vYmplY3RzX2NvbXBsZXRlZCktPmNvdW50KQogCXJlYWRfb2JqZWN0 c19jb21wbGV0ZWQKIAkgID0gbWFrZV9oYXNoX3RhYmxlIChoYXNodGVzdF9lcSwgREVGQVVMVF9I QVNIX1NJWkUsCiAJCQkgICAgIERFRkFVTFRfUkVIQVNIX1NJWkUsIERFRkFVTFRfUkVIQVNIX1RI UkVTSE9MRCwKLQkJCSAgICAgUW5pbCwgZmFsc2UpOworCQkJICAgICBRbmlsKTsKICAgICAgIGlm ICghTklMUCAoVnB1cmlmeV9mbGFnKSAmJiBjID09ICcoJykKIAl7CiAJICB2YWwgPSByZWFkX2xp c3QgKDAsIHJlYWRjaGFyZnVuKTsKQEAgLTIzMjEsMTIgKzIzMjEsMTIgQEAgcmVhZF9pbnRlcm5h bF9zdGFydCAoTGlzcF9PYmplY3Qgc3RyZWFtLCBMaXNwX09iamVjdCBzdGFydCwgTGlzcF9PYmpl Y3QgZW5kKQogICAgICAgfHwgWEhBU0hfVEFCTEUgKHJlYWRfb2JqZWN0c19tYXApLT5jb3VudCkK ICAgICByZWFkX29iamVjdHNfbWFwCiAgICAgICA9IG1ha2VfaGFzaF90YWJsZSAoaGFzaHRlc3Rf ZXEsIERFRkFVTFRfSEFTSF9TSVpFLCBERUZBVUxUX1JFSEFTSF9TSVpFLAotCQkJIERFRkFVTFRf UkVIQVNIX1RIUkVTSE9MRCwgUW5pbCwgZmFsc2UpOworCQkJIERFRkFVTFRfUkVIQVNIX1RIUkVT SE9MRCwgUW5pbCk7CiAgIGlmICghIEhBU0hfVEFCTEVfUCAocmVhZF9vYmplY3RzX2NvbXBsZXRl ZCkKICAgICAgIHx8IFhIQVNIX1RBQkxFIChyZWFkX29iamVjdHNfY29tcGxldGVkKS0+Y291bnQp CiAgICAgcmVhZF9vYmplY3RzX2NvbXBsZXRlZAogICAgICAgPSBtYWtlX2hhc2hfdGFibGUgKGhh c2h0ZXN0X2VxLCBERUZBVUxUX0hBU0hfU0laRSwgREVGQVVMVF9SRUhBU0hfU0laRSwKLQkJCSBE RUZBVUxUX1JFSEFTSF9USFJFU0hPTEQsIFFuaWwsIGZhbHNlKTsKKwkJCSBERUZBVUxUX1JFSEFT SF9USFJFU0hPTEQsIFFuaWwpOwogICBpZiAoRVEgKFZyZWFkX3dpdGhfc3ltYm9sX3Bvc2l0aW9u cywgUXQpCiAgICAgICB8fCBFUSAoVnJlYWRfd2l0aF9zeW1ib2xfcG9zaXRpb25zLCBzdHJlYW0p KQogICAgIFZyZWFkX3N5bWJvbF9wb3NpdGlvbnNfbGlzdCA9IFFuaWw7CkBAIC0yODk2LDExICsy ODk2LDYgQEAgcmVhZDEgKExpc3BfT2JqZWN0IHJlYWRjaGFyZnVuLCBpbnQgKnBjaCwgYm9vbCBm aXJzdF9pbl9saXN0KQogCSAgICAgIGlmICghTklMUCAocGFyYW1zW3BhcmFtX2NvdW50ICsgMV0p KQogCQlwYXJhbV9jb3VudCArPSAyOwogCi0gICAgICAgICAgICAgIHBhcmFtc1twYXJhbV9jb3Vu dF0gPSBRQ3B1cmVjb3B5OwotICAgICAgICAgICAgICBwYXJhbXNbcGFyYW1fY291bnQgKyAxXSA9 IEZwbGlzdF9nZXQgKHRtcCwgUXB1cmVjb3B5KTsKLSAgICAgICAgICAgICAgaWYgKCFOSUxQIChw YXJhbXNbcGFyYW1fY291bnQgKyAxXSkpCi0gICAgICAgICAgICAgICAgcGFyYW1fY291bnQgKz0g MjsKLQogCSAgICAgIC8qIFRoaXMgaXMgdGhlIGhhc2ggdGFibGUgZGF0YS4gICovCiAJICAgICAg ZGF0YSA9IEZwbGlzdF9nZXQgKHRtcCwgUWRhdGEpOwogCkBAIC0zMjEwLDEzICszMjA1LDEzIEBA IHJlYWQxIChMaXNwX09iamVjdCByZWFkY2hhcmZ1biwgaW50ICpwY2gsIGJvb2wgZmlyc3RfaW5f bGlzdCkKIAkgICAgICAvKiBObyBzeW1ib2wgY2hhcmFjdGVyIGZvbGxvd3MsIHRoaXMgaXMgdGhl IGVtcHR5CiAJCSBzeW1ib2wuICAqLwogCSAgICAgIFVOUkVBRCAoYyk7Ci0JICAgICAgcmV0dXJu IEZtYWtlX3N5bWJvbCAoZW1wdHlfdW5pYnl0ZV9zdHJpbmcpOworCSAgICAgIHJldHVybiBGbWFr ZV9zeW1ib2wgKGJ1aWxkX3N0cmluZyAoIiIpKTsKIAkgICAgfQogCSAgZ290byByZWFkX3N5bWJv bDsKIAl9CiAgICAgICAvKiAjIyBpcyB0aGUgZW1wdHkgc3ltYm9sLiAgKi8KICAgICAgIGlmIChj ID09ICcjJykKLQlyZXR1cm4gRmludGVybiAoZW1wdHlfdW5pYnl0ZV9zdHJpbmcsIFFuaWwpOwor CXJldHVybiBGaW50ZXJuIChidWlsZF9zdHJpbmcgKCIiKSwgUW5pbCk7CiAKICAgICAgIGlmIChj ID49ICcwJyAmJiBjIDw9ICc5JykKIAl7CkBAIC0zNjEyLDkgKzM2MDcsOCBAQCByZWFkMSAoTGlz cF9PYmplY3QgcmVhZGNoYXJmdW4sIGludCAqcGNoLCBib29sIGZpcnN0X2luX2xpc3QpCiAJICBp ZiAodW5pbnRlcm5lZF9zeW1ib2wpCiAJICAgIHsKIAkgICAgICBMaXNwX09iamVjdCBuYW1lCi0J CT0gKCghIE5JTFAgKFZwdXJpZnlfZmxhZykKLQkJICAgID8gbWFrZV9wdXJlX3N0cmluZyA6IG1h a2Vfc3BlY2lmaWVkX3N0cmluZykKLQkJICAgKHJlYWRfYnVmZmVyLCBuY2hhcnMsIG5ieXRlcywg bXVsdGlieXRlKSk7CisJCT0gbWFrZV9zcGVjaWZpZWRfc3RyaW5nIChyZWFkX2J1ZmZlciwgbmNo YXJzLCBuYnl0ZXMsCisJCQkJCSBtdWx0aWJ5dGUpOwogCSAgICAgIHJlc3VsdCA9IEZtYWtlX3N5 bWJvbCAobmFtZSk7CiAJICAgIH0KIAkgIGVsc2UKQEAgLTQyMDQsMTAgKzQxOTgsOCBAQCBpbnRl cm5fY19zdHJpbmdfMSAoY29uc3QgY2hhciAqc3RyLCBwdHJkaWZmX3QgbGVuKQogCiAgIGlmICgh U1lNQk9MUCAodGVtKSkKICAgICB7Ci0gICAgICAvKiBDcmVhdGluZyBhIG5vbi1wdXJlIHN0cmlu ZyBmcm9tIGEgc3RyaW5nIGxpdGVyYWwgbm90IGltcGxlbWVudGVkIHlldC4KLQkgV2UgY291bGQg anVzdCB1c2UgbWFrZV9zdHJpbmcgaGVyZSBhbmQgbGl2ZSB3aXRoIHRoZSBleHRyYSBjb3B5LiAg Ki8KICAgICAgIGVhc3NlcnQgKCFOSUxQIChWcHVyaWZ5X2ZsYWcpKTsKLSAgICAgIHRlbSA9IGlu dGVybl9kcml2ZXIgKG1ha2VfcHVyZV9jX3N0cmluZyAoc3RyLCBsZW4pLCBvYmFycmF5LCB0ZW0p OworICAgICAgdGVtID0gaW50ZXJuX2RyaXZlciAobWFrZV9zdHJpbmcgKHN0ciwgbGVuKSwgb2Jh cnJheSwgdGVtKTsKICAgICB9CiAgIHJldHVybiB0ZW07CiB9CkBAIC00MjE2LDcgKzQyMDgsNyBA QCBpbnRlcm5fY19zdHJpbmdfMSAoY29uc3QgY2hhciAqc3RyLCBwdHJkaWZmX3QgbGVuKQogZGVm aW5lX3N5bWJvbCAoTGlzcF9PYmplY3Qgc3ltLCBjaGFyIGNvbnN0ICpzdHIpCiB7CiAgIHB0cmRp ZmZfdCBsZW4gPSBzdHJsZW4gKHN0cik7Ci0gIExpc3BfT2JqZWN0IHN0cmluZyA9IG1ha2VfcHVy ZV9jX3N0cmluZyAoc3RyLCBsZW4pOworICBMaXNwX09iamVjdCBzdHJpbmcgPSBtYWtlX3N0cmlu ZyAoc3RyLCBsZW4pOwogICBpbml0X3N5bWJvbCAoc3ltLCBzdHJpbmcpOwogCiAgIC8qIFF1bmJv dW5kIGlzIHVuaW50ZXJuZWQsIHNvIHRoYXQgaXQncyBub3QgY29uZnVzZWQgd2l0aCBhbnkgc3lt Ym9sCkBAIC00MjQzLDggKzQyMzUsNyBAQCBERUZVTiAoImludGVybiIsIEZpbnRlcm4sIFNpbnRl cm4sIDEsIDIsIDAsCiAKICAgdGVtID0gb2Jsb29rdXAgKG9iYXJyYXksIFNTREFUQSAoc3RyaW5n KSwgU0NIQVJTIChzdHJpbmcpLCBTQllURVMgKHN0cmluZykpOwogICBpZiAoIVNZTUJPTFAgKHRl bSkpCi0gICAgdGVtID0gaW50ZXJuX2RyaXZlciAoTklMUCAoVnB1cmlmeV9mbGFnKSA/IHN0cmlu ZyA6IEZwdXJlY29weSAoc3RyaW5nKSwKLQkJCSBvYmFycmF5LCB0ZW0pOworICAgIHRlbSA9IGlu dGVybl9kcml2ZXIgKHN0cmluZywgb2JhcnJheSwgdGVtKTsKICAgcmV0dXJuIHRlbTsKIH0KIApA QCAtNDg5MywyMyArNDg4NCwyMyBAQCBzeW1zX29mX2xyZWFkICh2b2lkKQogdG8gdGhlIHNwZWNp ZmllZCBmaWxlIG5hbWUgaWYgYSBzdWZmaXggaXMgYWxsb3dlZCBvciByZXF1aXJlZC4gICovKTsK ICNpZmRlZiBIQVZFX01PRFVMRVMKICNpZmRlZiBNT0RVTEVTX1NFQ09OREFSWV9TVUZGSVgKLSAg VmxvYWRfc3VmZml4ZXMgPSBsaXN0NCAoYnVpbGRfcHVyZV9jX3N0cmluZyAoIi5lbGMiKSwKLQkJ CSAgYnVpbGRfcHVyZV9jX3N0cmluZyAoIi5lbCIpLAotCQkJICBidWlsZF9wdXJlX2Nfc3RyaW5n IChNT0RVTEVTX1NVRkZJWCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX3B1cmVf Y19zdHJpbmcgKE1PRFVMRVNfU0VDT05EQVJZX1NVRkZJWCkpOworICBWbG9hZF9zdWZmaXhlcyA9 IGxpc3Q0IChidWlsZF9zdHJpbmcgKCIuZWxjIiksCisJCQkgIGJ1aWxkX3N0cmluZyAoIi5lbCIp LAorCQkJICBidWlsZF9zdHJpbmcgKE1PRFVMRVNfU1VGRklYKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgYnVpbGRfc3RyaW5nIChNT0RVTEVTX1NFQ09OREFSWV9TVUZGSVgpKTsKICNlbHNl Ci0gIFZsb2FkX3N1ZmZpeGVzID0gbGlzdDMgKGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIuZWxjIiks Ci0JCQkgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIuZWwiKSwKLQkJCSAgYnVpbGRfcHVyZV9jX3N0 cmluZyAoTU9EVUxFU19TVUZGSVgpKTsKKyAgVmxvYWRfc3VmZml4ZXMgPSBsaXN0MyAoYnVpbGRf c3RyaW5nICgiLmVsYyIpLAorCQkJICBidWlsZF9zdHJpbmcgKCIuZWwiKSwKKwkJCSAgYnVpbGRf c3RyaW5nIChNT0RVTEVTX1NVRkZJWCkpOwogI2VuZGlmCiAjZWxzZQotICBWbG9hZF9zdWZmaXhl cyA9IGxpc3QyIChidWlsZF9wdXJlX2Nfc3RyaW5nICgiLmVsYyIpLAotCQkJICBidWlsZF9wdXJl X2Nfc3RyaW5nICgiLmVsIikpOworICBWbG9hZF9zdWZmaXhlcyA9IGxpc3QyIChidWlsZF9zdHJp bmcgKCIuZWxjIiksCisJCQkgIGJ1aWxkX3N0cmluZyAoIi5lbCIpKTsKICNlbmRpZgogICBERUZW QVJfTElTUCAoIm1vZHVsZS1maWxlLXN1ZmZpeCIsIFZtb2R1bGVfZmlsZV9zdWZmaXgsCiAJICAg ICAgIGRvYzogLyogU3VmZml4IG9mIGxvYWRhYmxlIG1vZHVsZSBmaWxlLCBvciBuaWwgaWYgbW9k dWxlcyBhcmUgbm90IHN1cHBvcnRlZC4gICovKTsKICNpZmRlZiBIQVZFX01PRFVMRVMKLSAgVm1v ZHVsZV9maWxlX3N1ZmZpeCA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKE1PRFVMRVNfU1VGRklYKTsK KyAgVm1vZHVsZV9maWxlX3N1ZmZpeCA9IGJ1aWxkX3N0cmluZyAoTU9EVUxFU19TVUZGSVgpOwog I2Vsc2UKICAgVm1vZHVsZV9maWxlX3N1ZmZpeCA9IFFuaWw7CiAjZW5kaWYKQEAgLTUwNTIsNyAr NTA0Myw3IEBAIHN5bXNfb2ZfbHJlYWQgKHZvaWQpCiBXaGVuIHRoZSByZWd1bGFyIGV4cHJlc3Np b24gbWF0Y2hlcywgdGhlIGZpbGUgaXMgY29uc2lkZXJlZCB0byBiZSBzYWZlCiB0byBsb2FkLiAg Ki8pOwogICBWYnl0ZWNvbXBfdmVyc2lvbl9yZWdleHAKLSAgICA9IGJ1aWxkX3B1cmVfY19zdHJp bmcgKCJeOzs7LlxcKGluIEVtYWNzIHZlcnNpb25cXHxieXRlY29tcCB2ZXJzaW9uIEZTRlxcKSIp OworICAgID0gYnVpbGRfc3RyaW5nICgiXjs7Oy5cXChpbiBFbWFjcyB2ZXJzaW9uXFx8Ynl0ZWNv bXAgdmVyc2lvbiBGU0ZcXCkiKTsKIAogICBERUZTWU0gKFFsZXhpY2FsX2JpbmRpbmcsICJsZXhp Y2FsLWJpbmRpbmciKTsKICAgREVGVkFSX0xJU1AgKCJsZXhpY2FsLWJpbmRpbmciLCBWbGV4aWNh bF9iaW5kaW5nLApkaWZmIC0tZ2l0IGEvc3JjL3BkdW1wZXIuYyBiL3NyYy9wZHVtcGVyLmMKaW5k ZXggMzM3NzQyZmRhNGFkZS4uZGQyNDg2Y2QxYTBlNSAxMDA2NDQKLS0tIGEvc3JjL3BkdW1wZXIu YworKysgYi9zcmMvcGR1bXBlci5jCkBAIC0yNDAzLDcgKzI0MDMsNyBAQCBkdW1wX3N5bWJvbCAo c3RydWN0IGR1bXBfY29udGV4dCAqY3R4LAogICAgICAgICAgICAgIExpc3BfT2JqZWN0IG9iamVj dCwKICAgICAgICAgICAgICBkdW1wX29mZiBvZmZzZXQpCiB7Ci0jaWYgQ0hFQ0tfU1RSVUNUUyAm JiAhZGVmaW5lZCBIQVNIX0xpc3BfU3ltYm9sXzk5OURDMjZERUMKKyNpZiBDSEVDS19TVFJVQ1RT ICYmICFkZWZpbmVkIEhBU0hfTGlzcF9TeW1ib2xfREQyRTYwMTNCNAogIyBlcnJvciAiTGlzcF9T eW1ib2wgY2hhbmdlZC4gU2VlIENIRUNLX1NUUlVDVFMgY29tbWVudCBpbiBjb25maWcuaC4iCiAj ZW5kaWYKICNpZiBDSEVDS19TVFJVQ1RTICYmICFkZWZpbmVkIChIQVNIX3N5bWJvbF9yZWRpcmVj dF9BREI0RjVCMTEzKQpAQCAtMjQ0MCw3ICsyNDQwLDYgQEAgZHVtcF9zeW1ib2wgKHN0cnVjdCBk dW1wX2NvbnRleHQgKmN0eCwKICAgRFVNUF9GSUVMRF9DT1BZICgmb3V0LCBzeW1ib2wsIHUucy50 cmFwcGVkX3dyaXRlKTsKICAgRFVNUF9GSUVMRF9DT1BZICgmb3V0LCBzeW1ib2wsIHUucy5pbnRl cm5lZCk7CiAgIERVTVBfRklFTERfQ09QWSAoJm91dCwgc3ltYm9sLCB1LnMuZGVjbGFyZWRfc3Bl Y2lhbCk7Ci0gIERVTVBfRklFTERfQ09QWSAoJm91dCwgc3ltYm9sLCB1LnMucGlubmVkKTsKICAg ZHVtcF9maWVsZF9sdiAoY3R4LCAmb3V0LCBzeW1ib2wsICZzeW1ib2wtPnUucy5uYW1lLCBXRUlH SFRfU1RST05HKTsKICAgc3dpdGNoIChzeW1ib2wtPnUucy5yZWRpcmVjdCkKICAgICB7CkBAIC0y NjU3LDcgKzI2NTYsNyBAQCBkdW1wX2hhc2hfdGFibGUgKHN0cnVjdCBkdW1wX2NvbnRleHQgKmN0 eCwKICAgICAgICAgICAgICAgICAgTGlzcF9PYmplY3Qgb2JqZWN0LAogICAgICAgICAgICAgICAg ICBkdW1wX29mZiBvZmZzZXQpCiB7Ci0jaWYgQ0hFQ0tfU1RSVUNUUyAmJiAhZGVmaW5lZCBIQVNI X0xpc3BfSGFzaF9UYWJsZV82RDYzRURCNjE4CisjaWYgQ0hFQ0tfU1RSVUNUUyAmJiAhZGVmaW5l ZCBIQVNIX0xpc3BfSGFzaF9UYWJsZV8yMDM4MjFDN0VGCiAjIGVycm9yICJMaXNwX0hhc2hfVGFi bGUgY2hhbmdlZC4gU2VlIENIRUNLX1NUUlVDVFMgY29tbWVudCBpbiBjb25maWcuaC4iCiAjZW5k aWYKICAgY29uc3Qgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAqaGFzaF9pbiA9IFhIQVNIX1RBQkxF IChvYmplY3QpOwpAQCAtMjY3Myw3ICsyNjcyLDYgQEAgZHVtcF9oYXNoX3RhYmxlIChzdHJ1Y3Qg ZHVtcF9jb250ZXh0ICpjdHgsCiAgICAgIHRoZW0gYXMgY2xvc2UgdG8gdGhlIGhhc2ggdGFibGUg YXMgcG9zc2libGUuICAqLwogICBEVU1QX0ZJRUxEX0NPUFkgKG91dCwgaGFzaCwgY291bnQpOwog ICBEVU1QX0ZJRUxEX0NPUFkgKG91dCwgaGFzaCwgbmV4dF9mcmVlKTsKLSAgRFVNUF9GSUVMRF9D T1BZIChvdXQsIGhhc2gsIHB1cmVjb3B5KTsKICAgRFVNUF9GSUVMRF9DT1BZIChvdXQsIGhhc2gs IG11dGFibGUpOwogICBEVU1QX0ZJRUxEX0NPUFkgKG91dCwgaGFzaCwgcmVoYXNoX3RocmVzaG9s ZCk7CiAgIERVTVBfRklFTERfQ09QWSAob3V0LCBoYXNoLCByZWhhc2hfc2l6ZSk7CkBAIC01NDY3 LDggKzU0NjUsNiBAQCBERUZVTiAoInBkdW1wZXItc3RhdHMiLCBGcGR1bXBlcl9zdGF0cywgU3Bk dW1wZXJfc3RhdHMsIDAsIDAsIDAsCiAJCUZjb25zIChRZHVtcF9maWxlX25hbWUsIGR1bXBfZm4p KTsKIH0KIAotI2VuZGlmIC8qIEhBVkVfUERVTVBFUiAqLwotCiAMCiBzdGF0aWMgdm9pZAogdGhh d19oYXNoX3RhYmxlcyAodm9pZCkKQEAgLTU0ODMsNiArNTQ3OSw3IEBAIGluaXRfcGR1bXBlcl9v bmNlICh2b2lkKQogewogICBwZHVtcGVyX2RvX25vd19hbmRfYWZ0ZXJfbG9hZCAodGhhd19oYXNo X3RhYmxlcyk7CiB9CisjZW5kaWYgLyogSEFWRV9QRFVNUEVSICovCiAKIHZvaWQKIHN5bXNfb2Zf cGR1bXBlciAodm9pZCkKZGlmZiAtLWdpdCBhL3NyYy9wcmludC5jIGIvc3JjL3ByaW50LmMKaW5k ZXggMTRhZjkxOTU0NzVlZi4uZGYwMDhjZjNiMTI5NiAxMDA2NDQKLS0tIGEvc3JjL3ByaW50LmMK KysrIGIvc3JjL3ByaW50LmMKQEAgLTE1ODEsMTIgKzE1ODEsNiBAQCBwcmludF92ZWN0b3JsaWtl IChMaXNwX09iamVjdCBvYmosIExpc3BfT2JqZWN0IHByaW50Y2hhcmZ1biwgYm9vbCBlc2NhcGVm bGFnLAogCXByaW50X29iamVjdCAoRmhhc2hfdGFibGVfcmVoYXNoX3RocmVzaG9sZCAob2JqKSwK IAkJICAgICAgcHJpbnRjaGFyZnVuLCBlc2NhcGVmbGFnKTsKIAotCWlmIChoLT5wdXJlY29weSkK LQkgIHsKLQkgICAgcHJpbnRfY19zdHJpbmcgKCIgcHVyZWNvcHkgIiwgcHJpbnRjaGFyZnVuKTsK LQkgICAgcHJpbnRfb2JqZWN0IChoLT5wdXJlY29weSA/IFF0IDogUW5pbCwgcHJpbnRjaGFyZnVu LCBlc2NhcGVmbGFnKTsKLQkgIH0KLQogCXByaW50X2Nfc3RyaW5nICgiIGRhdGEgIiwgcHJpbnRj aGFyZnVuKTsKIAogCS8qIFByaW50IHRoZSBkYXRhIGhlcmUgYXMgYSBwbGlzdC4gKi8KZGlmZiAt LWdpdCBhL3NyYy9wcm9jZXNzLmMgYi9zcmMvcHJvY2Vzcy5jCmluZGV4IGI5OGJjMjk3YTNmM2Yu LjkwYTExNDFhYjY1NjQgMTAwNjQ0Ci0tLSBhL3NyYy9wcm9jZXNzLmMKKysrIGIvc3JjL3Byb2Nl c3MuYwpAQCAtODU2Niw3ICs4NTY2LDcgQEAgc3ltc19vZl9wcm9jZXNzICh2b2lkKQogICAgY29u c3Qgc3RydWN0IHNvY2tldF9vcHRpb25zICpzb3B0OwogCiAjZGVmaW5lIEFERF9TVUJGRUFUVVJF KGtleSwgdmFsKSBcCi0gIHN1YmZlYXR1cmVzID0gcHVyZV9jb25zIChwdXJlX2NvbnMgKGtleSwg cHVyZV9jb25zICh2YWwsIFFuaWwpKSwgc3ViZmVhdHVyZXMpCisgIHN1YmZlYXR1cmVzID0gRmNv bnMgKEZjb25zIChrZXksIEZjb25zICh2YWwsIFFuaWwpKSwgc3ViZmVhdHVyZXMpCiAKICAgIEFE RF9TVUJGRUFUVVJFIChRQ25vd2FpdCwgUXQpOwogI2lmZGVmIERBVEFHUkFNX1NPQ0tFVFMKQEAg LTg1ODgsNyArODU4OCw3IEBAICNkZWZpbmUgQUREX1NVQkZFQVRVUkUoa2V5LCB2YWwpIFwKICAg IEFERF9TVUJGRUFUVVJFIChRQ3NlcnZlciwgUXQpOwogCiAgICBmb3IgKHNvcHQgPSBzb2NrZXRf b3B0aW9uczsgc29wdC0+bmFtZTsgc29wdCsrKQotICAgICBzdWJmZWF0dXJlcyA9IHB1cmVfY29u cyAoaW50ZXJuX2Nfc3RyaW5nIChzb3B0LT5uYW1lKSwgc3ViZmVhdHVyZXMpOworICAgICBzdWJm ZWF0dXJlcyA9IEZjb25zIChpbnRlcm5fY19zdHJpbmcgKHNvcHQtPm5hbWUpLCBzdWJmZWF0dXJl cyk7CiAKICAgIEZwcm92aWRlIChpbnRlcm5fY19zdHJpbmcgKCJtYWtlLW5ldHdvcmstcHJvY2Vz cyIpLCBzdWJmZWF0dXJlcyk7CiAgfQpkaWZmIC0tZ2l0IGEvc3JjL3Byb2ZpbGVyLmMgYi9zcmMv cHJvZmlsZXIuYwppbmRleCAyMWFlMjQ0N2FhNGVlLi40NGJmNTdlYmEyMDc4IDEwMDY0NAotLS0g YS9zcmMvcHJvZmlsZXIuYworKysgYi9zcmMvcHJvZmlsZXIuYwpAQCAtNjMsNyArNjMsNyBAQCBt YWtlX2xvZyAodm9pZCkKICAgTGlzcF9PYmplY3QgbG9nID0gbWFrZV9oYXNoX3RhYmxlIChoYXNo dGVzdF9wcm9maWxlciwgaGVhcF9zaXplLAogCQkJCSAgICAgREVGQVVMVF9SRUhBU0hfU0laRSwK IAkJCQkgICAgIERFRkFVTFRfUkVIQVNIX1RIUkVTSE9MRCwKLQkJCQkgICAgIFFuaWwsIGZhbHNl KTsKKwkJCQkgICAgIFFuaWwpOwogICBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoID0gWEhBU0hf VEFCTEUgKGxvZyk7CiAKICAgLyogV2hhdCBpcyBzcGVjaWFsIGFib3V0IG91ciBoYXNoLXRhYmxl cyBpcyB0aGF0IHRoZSB2YWx1ZXMgYXJlIHByZS1maWxsZWQKZGlmZiAtLWdpdCBhL3NyYy9wdXJl c2l6ZS5oIGIvc3JjL3B1cmVzaXplLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgx MWQwYjRkMzY5NTIuLjAwMDAwMDAwMDAwMDAKLS0tIGEvc3JjL3B1cmVzaXplLmgKKysrIC9kZXYv bnVsbApAQCAtMSwxMTUgKzAsMCBAQAotLyogSG93IG11Y2ggcmVhZC1vbmx5IExpc3Agc3RvcmFn ZSBhIGR1bXBlZCBFbWFjcyBuZWVkcy4KLSAgIENvcHlyaWdodCAoQykgMTk5MywgMjAwMS0yMDIx IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi1UaGlzIGZpbGUgaXMgcGFydCBvZiBH TlUgRW1hY3MuCi0KLUdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Ci15b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLUdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLU1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLUdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLVlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi1hbG9uZyB3aXRo IEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwotCi0jaWZuZGVmIEVNQUNTX1BVUkVTSVpFX0gKLSNkZWZpbmUgRU1BQ1NfUFVSRVNJWkVf SAotCi0jaW5jbHVkZSAibGlzcC5oIgotCi1JTkxJTkVfSEVBREVSX0JFR0lOCi0KLS8qIERlZmlu ZSBQVVJFU0laRSwgdGhlIG51bWJlciBvZiBieXRlcyBvZiBwdXJlIExpc3AgY29kZSB0byBsZWF2 ZSBzcGFjZSBmb3IuCi0KLSAgIEF0IG9uZSBwb2ludCwgdGhpcyB3YXMgZGVmaW5lZCBpbiBjb25m aWcuaCwgbWVhbmluZyB0aGF0IGNoYW5naW5nCi0gICBQVVJFU0laRSB3b3VsZCBtYWtlIE1ha2Ug cmVjb21waWxlIGFsbCBvZiBFbWFjcy4gIEJ1dCBvbmx5IGEgZmV3Ci0gICBmaWxlcyBhY3R1YWxs eSB1c2UgUFVSRVNJWkUsIHNvIHdlIHNwbGl0IGl0IG91dCB0byBpdHMgb3duIC5oIGZpbGUuCi0K LSAgIE1ha2Ugc3VyZSB0byBpbmNsdWRlIHRoaXMgZmlsZSBhZnRlciBjb25maWcuaCwgc2luY2Ug dGhhdCB0ZWxscyB1cwotICAgd2hldGhlciB3ZSBhcmUgcnVubmluZyBYIHdpbmRvd3MsIHdoaWNo IHRlbGxzIHVzIGhvdyBtdWNoIHB1cmUKLSAgIHN0b3JhZ2UgdG8gYWxsb2NhdGUuICAqLwotCi0v KiBGaXJzdCBkZWZpbmUgYSBtZWFzdXJlIG9mIHRoZSBhbW91bnQgb2YgZGF0YSB3ZSBoYXZlLiAg Ki8KLQotLyogQSBzeXN0ZW0gY29uZmlndXJhdGlvbiBmaWxlIG1heSBzZXQgdGhpcyB0byByZXF1 ZXN0IGEgY2VydGFpbiBleHRyYQotICAgYW1vdW50IG9mIHN0b3JhZ2UuICBUaGlzIGlzIGEgbG90 IG1vcmUgdXBkYXRlLXJvYnVzdCB0aGF0IGRlZmluaW5nCi0gICBCQVNFX1BVUkVTSVpFIG9yIGV2 ZW4gUFVSRVNJWkUgZGlyZWN0bHkuICAqLwotI2lmbmRlZiBTWVNURU1fUFVSRVNJWkVfRVhUUkEK LSNkZWZpbmUgU1lTVEVNX1BVUkVTSVpFX0VYVFJBIDAKLSNlbmRpZgotCi0jaWZuZGVmIFNJVEVM T0FEX1BVUkVTSVpFX0VYVFJBCi0jZGVmaW5lIFNJVEVMT0FEX1BVUkVTSVpFX0VYVFJBIDAKLSNl bmRpZgotCi0jaWZuZGVmIEJBU0VfUFVSRVNJWkUKLSNkZWZpbmUgQkFTRV9QVVJFU0laRSAoMjAw MDAwMCArIFNZU1RFTV9QVVJFU0laRV9FWFRSQSArIFNJVEVMT0FEX1BVUkVTSVpFX0VYVFJBKQot I2VuZGlmCi0KLS8qIEluY3JlYXNlIEJBU0VfUFVSRVNJWkUgYnkgYSByYXRpbyBkZXBlbmRpbmcg b24gdGhlIG1hY2hpbmUncyB3b3JkIHNpemUuICAqLwotI2lmbmRlZiBQVVJFU0laRV9SQVRJTwot I2lmIEVNQUNTX0lOVF9NQVggPj4gMzEgIT0gMAotI2lmIFBUUkRJRkZfTUFYID4+IDMxICE9IDAK LSNkZWZpbmUgUFVSRVNJWkVfUkFUSU8gMTAgLyA2CS8qIERvbid0IHN1cnJvdW5kIHdpdGggYCgp Jy4gICovCi0jZWxzZQotI2RlZmluZSBQVVJFU0laRV9SQVRJTyA4IC8gNgkvKiBEb24ndCBzdXJy b3VuZCB3aXRoIGAoKScuICAqLwotI2VuZGlmCi0jZWxzZQotI2RlZmluZSBQVVJFU0laRV9SQVRJ TyAxCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgRU5BQkxFX0NIRUNLSU5HCi0vKiBFTkFCTEVf Q0hFQ0tJTkcgc29tZWhvdyBpbmNyZWFzZXMgdGhlIHB1cmVzcGFjZSB1c2VkLCBwcm9iYWJseSBi ZWNhdXNlCi0gICBpdCB0ZW5kcyB0byBjYXVzZSBzb21lIG1hY3JvIGFyZ3VtZW50cyB0byBiZSBl dmFsdWF0ZWQgdHdpY2UuICBUaGlzIGlzCi0gICBhIGJ1ZywgYnV0IGl0J3MgZGlmZmljdWx0IHRv IHRyYWNrIGl0IGRvd24uICAqLwotI2RlZmluZSBQVVJFU0laRV9DSEVDS0lOR19SQVRJTyAxMiAv IDEwCS8qIERvbid0IHN1cnJvdW5kIHdpdGggYCgpJy4gICovCi0jZWxzZQotI2RlZmluZSBQVVJF U0laRV9DSEVDS0lOR19SQVRJTyAxCi0jZW5kaWYKLQotLyogVGhpcyBpcyB0aGUgYWN0dWFsIHNp emUgaW4gYnl0ZXMgdG8gYWxsb2NhdGUuICAqLwotI2lmbmRlZiBQVVJFU0laRQotI2RlZmluZSBQ VVJFU0laRSAgKEJBU0VfUFVSRVNJWkUgKiBQVVJFU0laRV9SQVRJTyAqIFBVUkVTSVpFX0NIRUNL SU5HX1JBVElPKQotI2VuZGlmCi0KLWV4dGVybiBBVk9JRCBwdXJlX3dyaXRlX2Vycm9yIChMaXNw X09iamVjdCk7Ci0KLWV4dGVybiBFTUFDU19JTlQgcHVyZVtdOwotCi0vKiBUaGUgcHVyZXNpemVf aF8qIG1hY3JvcyBhcmUgcHJpdmF0ZSB0byB0aGlzIGluY2x1ZGUgZmlsZS4gICovCi0KLS8qIFRy dWUgaWYgUFRSIGlzIHB1cmUuICAqLwotCi0jZGVmaW5lIHB1cmVzaXplX2hfUFVSRV9QKHB0cikg XAotICAoKHVpbnRwdHJfdCkgKHB0cikgLSAodWludHB0cl90KSBwdXJlIDw9IFBVUkVTSVpFKQot Ci1JTkxJTkUgYm9vbAotUFVSRV9QICh2b2lkICpwdHIpCi17Ci0gIHJldHVybiBwdXJlc2l6ZV9o X1BVUkVfUCAocHRyKTsKLX0KLQotLyogU2lnbmFsIGFuIGVycm9yIGlmIE9CSiBpcyBwdXJlLiAg UFRSIGlzIE9CSiB1bnRhZ2dlZC4gICovCi0KLSNkZWZpbmUgcHVyZXNpemVfaF9DSEVDS19JTVBV UkUob2JqLCBwdHIpIFwKLSAgKFBVUkVfUCAocHRyKSA/IHB1cmVfd3JpdGVfZXJyb3IgKG9iaikg OiAodm9pZCkgMCkKLQotSU5MSU5FIHZvaWQKLUNIRUNLX0lNUFVSRSAoTGlzcF9PYmplY3Qgb2Jq LCB2b2lkICpwdHIpCi17Ci0gIHB1cmVzaXplX2hfQ0hFQ0tfSU1QVVJFIChvYmosIHB0cik7Ci19 Ci0KLSNpZiBERUZJTkVfS0VZX09QU19BU19NQUNST1MKLSMgZGVmaW5lIFBVUkVfUChwdHIpIHB1 cmVzaXplX2hfUFVSRV9QIChwdHIpCi0jIGRlZmluZSBDSEVDS19JTVBVUkUob2JqLCBwdHIpIHB1 cmVzaXplX2hfQ0hFQ0tfSU1QVVJFIChvYmosIHB0cikKLSNlbmRpZgotCi1JTkxJTkVfSEVBREVS X0VORAotCi0jZW5kaWYgLyogRU1BQ1NfUFVSRVNJWkVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Nl YXJjaC5jIGIvc3JjL3NlYXJjaC5jCmluZGV4IGM3NTdiZjNkMWYyODEuLjVhMjE0ZGIwMDkyZDIg MTAwNjQ0Ci0tLSBhL3NyYy9zZWFyY2guYworKysgYi9zcmMvc2VhcmNoLmMKQEAgLTMzNTQsMTkg KzMzNTQsMTkgQEAgc3ltc19vZl9zZWFyY2ggKHZvaWQpCiAgIERFRlNZTSAoUWludmFsaWRfcmVn ZXhwLCAiaW52YWxpZC1yZWdleHAiKTsKIAogICBGcHV0IChRc2VhcmNoX2ZhaWxlZCwgUWVycm9y X2NvbmRpdGlvbnMsCi0JcHVyZV9saXN0IChRc2VhcmNoX2ZhaWxlZCwgUWVycm9yKSk7CisJbGlz dCAoUXNlYXJjaF9mYWlsZWQsIFFlcnJvcikpOwogICBGcHV0IChRc2VhcmNoX2ZhaWxlZCwgUWVy cm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIlNlYXJjaCBmYWlsZWQiKSk7CisJ YnVpbGRfc3RyaW5nICgiU2VhcmNoIGZhaWxlZCIpKTsKIAogICBGcHV0IChRdXNlcl9zZWFyY2hf ZmFpbGVkLCBRZXJyb3JfY29uZGl0aW9ucywKLQlwdXJlX2xpc3QgKFF1c2VyX3NlYXJjaF9mYWls ZWQsIFF1c2VyX2Vycm9yLCBRc2VhcmNoX2ZhaWxlZCwgUWVycm9yKSk7CisJbGlzdCAoUXVzZXJf c2VhcmNoX2ZhaWxlZCwgUXVzZXJfZXJyb3IsIFFzZWFyY2hfZmFpbGVkLCBRZXJyb3IpKTsKICAg RnB1dCAoUXVzZXJfc2VhcmNoX2ZhaWxlZCwgUWVycm9yX21lc3NhZ2UsCi0gICAgICAgIGJ1aWxk X3B1cmVfY19zdHJpbmcgKCJTZWFyY2ggZmFpbGVkIikpOworICAgICAgICBidWlsZF9zdHJpbmcg KCJTZWFyY2ggZmFpbGVkIikpOwogCiAgIEZwdXQgKFFpbnZhbGlkX3JlZ2V4cCwgUWVycm9yX2Nv bmRpdGlvbnMsCi0JcHVyZV9saXN0IChRaW52YWxpZF9yZWdleHAsIFFlcnJvcikpOworCWxpc3Qg KFFpbnZhbGlkX3JlZ2V4cCwgUWVycm9yKSk7CiAgIEZwdXQgKFFpbnZhbGlkX3JlZ2V4cCwgUWVy cm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIkludmFsaWQgcmVnZXhwIikpOwor CWJ1aWxkX3N0cmluZyAoIkludmFsaWQgcmVnZXhwIikpOwogCiAgIHJlX21hdGNoX29iamVjdCA9 IFFuaWw7CiAgIHN0YXRpY3BybyAoJnJlX21hdGNoX29iamVjdCk7CmRpZmYgLS1naXQgYS9zcmMv c3ludGF4LmMgYi9zcmMvc3ludGF4LmMKaW5kZXggOWZiZjg4NTM1ZjNlYy4uOTkzZjkxYWYxOWFj MCAxMDA2NDQKLS0tIGEvc3JjL3N5bnRheC5jCisrKyBiL3NyYy9zeW50YXguYwpAQCAtMzcxOSw5 ICszNzE5LDkgQEAgc3ltc19vZl9zeW50YXggKHZvaWQpCiAKICAgREVGU1lNIChRc2Nhbl9lcnJv ciwgInNjYW4tZXJyb3IiKTsKICAgRnB1dCAoUXNjYW5fZXJyb3IsIFFlcnJvcl9jb25kaXRpb25z LAotCXB1cmVfbGlzdCAoUXNjYW5fZXJyb3IsIFFlcnJvcikpOworCWxpc3QgKFFzY2FuX2Vycm9y LCBRZXJyb3IpKTsKICAgRnB1dCAoUXNjYW5fZXJyb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxk X3B1cmVfY19zdHJpbmcgKCJTY2FuIGVycm9yIikpOworCWJ1aWxkX3N0cmluZyAoIlNjYW4gZXJy b3IiKSk7CiAKICAgREVGVkFSX0JPT0wgKCJwYXJzZS1zZXhwLWlnbm9yZS1jb21tZW50cyIsIHBh cnNlX3NleHBfaWdub3JlX2NvbW1lbnRzLAogCSAgICAgICBkb2M6IC8qIE5vbi1uaWwgbWVhbnMg YGZvcndhcmQtc2V4cCcsIGV0Yy4sIHNob3VsZCB0cmVhdCBjb21tZW50cyBhcyB3aGl0ZXNwYWNl LiAgKi8pOwpkaWZmIC0tZ2l0IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IDlk YjM2N2JmYWZlNzUuLjNiM2FkMmY1NWI5YWEgMTAwNjQ0Ci0tLSBhL3NyYy93MzJmbnMuYworKysg Yi9zcmMvdzMyZm5zLmMKQEAgLTEwMzkwLDkgKzEwMzkwLDkgQEAgc3ltc19vZl93MzJmbnMgKHZv aWQpCiAgIERFRlNZTSAoUWpzb24sICJqc29uIik7CiAKICAgRnB1dCAoUXVuZGVmaW5lZF9jb2xv ciwgUWVycm9yX2NvbmRpdGlvbnMsCi0JcHVyZV9saXN0IChRdW5kZWZpbmVkX2NvbG9yLCBRZXJy b3IpKTsKKwlsaXN0IChRdW5kZWZpbmVkX2NvbG9yLCBRZXJyb3IpKTsKICAgRnB1dCAoUXVuZGVm aW5lZF9jb2xvciwgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIlVuZGVm aW5lZCBjb2xvciIpKTsKKwlidWlsZF9zdHJpbmcgKCJVbmRlZmluZWQgY29sb3IiKSk7CiAKICAg c3RhdGljcHJvICgmdzMyX2dyYWJiZWRfa2V5cyk7CiAgIHczMl9ncmFiYmVkX2tleXMgPSBRbmls OwpkaWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCBjYzBhNjg5YmEz MmU5Li4zODA5OTM1MGQ2NzYxIDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRp c3AuYwpAQCAtMzQ4NjIsNyArMzQ4NjIsNyBAQCBzeW1zX29mX3hkaXNwICh2b2lkKQogICBzdGF0 aWNwcm8gKCZlY2hvX2FyZWFfYnVmZmVyWzBdKTsKICAgc3RhdGljcHJvICgmZWNob19hcmVhX2J1 ZmZlclsxXSk7CiAKLSAgVm1lc3NhZ2VzX2J1ZmZlcl9uYW1lID0gYnVpbGRfcHVyZV9jX3N0cmlu ZyAoIipNZXNzYWdlcyoiKTsKKyAgVm1lc3NhZ2VzX2J1ZmZlcl9uYW1lID0gYnVpbGRfc3RyaW5n ICgiKk1lc3NhZ2VzKiIpOwogICBzdGF0aWNwcm8gKCZWbWVzc2FnZXNfYnVmZmVyX25hbWUpOwog CiAgIG1vZGVfbGluZV9wcm9wdHJhbnNfYWxpc3QgPSBRbmlsOwpAQCAtMzQ5NTQsNyArMzQ5NTQs NyBAQCBzeW1zX29mX3hkaXNwICh2b2lkKQogICBERUZWQVJfTElTUCAoIm92ZXJsYXktYXJyb3ct c3RyaW5nIiwgVm92ZXJsYXlfYXJyb3dfc3RyaW5nLAogICAgIGRvYzogLyogU3RyaW5nIHRvIGRp c3BsYXkgYXMgYW4gYXJyb3cgaW4gbm9uLXdpbmRvdyBmcmFtZXMuCiBTZWUgYWxzbyBgb3Zlcmxh eS1hcnJvdy1wb3NpdGlvbicuICAqLyk7Ci0gIFZvdmVybGF5X2Fycm93X3N0cmluZyA9IGJ1aWxk X3B1cmVfY19zdHJpbmcgKCI9PiIpOworICBWb3ZlcmxheV9hcnJvd19zdHJpbmcgPSBidWlsZF9z dHJpbmcgKCI9PiIpOwogCiAgIERFRlZBUl9MSVNQICgib3ZlcmxheS1hcnJvdy12YXJpYWJsZS1s aXN0IiwgVm92ZXJsYXlfYXJyb3dfdmFyaWFibGVfbGlzdCwKICAgICBkb2M6IC8qIExpc3Qgb2Yg dmFyaWFibGVzIChzeW1ib2xzKSB3aGljaCBob2xkIG1hcmtlcnMgZm9yIG92ZXJsYXkgYXJyb3dz LgpAQCAtMzUwNzksMTcgKzM1MDc5LDE3IEBAIHN5bXNfb2ZfeGRpc3AgKHZvaWQpCiBUaGlzIHZh cmlhYmxlIGhhcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgYG1vZGUtbGluZS1mb3JtYXQnICh3aGlj aCBzZWUpLAogYW5kIGlzIHVzZWQgb25seSBvbiBmcmFtZXMgZm9yIHdoaWNoIG5vIGV4cGxpY2l0 IG5hbWUgaGFzIGJlZW4gc2V0CiBcKHNlZSBgbW9kaWZ5LWZyYW1lLXBhcmFtZXRlcnMnKS4gICov KTsKLSAgLyogRG8gbm90IG5lc3QgY2FsbHMgdG8gcHVyZV9saXN0LiAgVGhpcyB3b3JrcyBhcm91 bmQgYSBidWcgaW4KKyAgLyogRG8gbm90IG5lc3QgY2FsbHMgdG8gbGlzdC4gIFRoaXMgd29ya3Mg YXJvdW5kIGEgYnVnIGluCiAgICAgIE9yYWNsZSBEZXZlbG9wZXIgU3R1ZGlvIDEyLjYuICAqLwog ICBMaXNwX09iamVjdCBpY29uX3RpdGxlX25hbWVfZm9ybWF0Ci0gICAgPSBwdXJlX2xpc3QgKGVt cHR5X3VuaWJ5dGVfc3RyaW5nLAotCQkgYnVpbGRfcHVyZV9jX3N0cmluZyAoIiViIC0gR05VIEVt YWNzIGF0ICIpLAotCQkgaW50ZXJuX2Nfc3RyaW5nICgic3lzdGVtLW5hbWUiKSk7CisgICAgPSBs aXN0IChlbXB0eV91bmlieXRlX3N0cmluZywKKwkgICAgYnVpbGRfc3RyaW5nICgiJWIgLSBHTlUg RW1hY3MgYXQgIiksCisJICAgIGludGVybl9jX3N0cmluZyAoInN5c3RlbS1uYW1lIikpOwogICBW aWNvbl90aXRsZV9mb3JtYXQKICAgICA9IFZmcmFtZV90aXRsZV9mb3JtYXQKLSAgICA9IHB1cmVf bGlzdCAoaW50ZXJuX2Nfc3RyaW5nICgibXVsdGlwbGUtZnJhbWVzIiksCi0JCSBidWlsZF9wdXJl X2Nfc3RyaW5nICgiJWIiKSwKLQkJIGljb25fdGl0bGVfbmFtZV9mb3JtYXQpOworICAgID0gbGlz dCAoaW50ZXJuX2Nfc3RyaW5nICgibXVsdGlwbGUtZnJhbWVzIiksCisJICAgIGJ1aWxkX3N0cmlu ZyAoIiViIiksCisJICAgIGljb25fdGl0bGVfbmFtZV9mb3JtYXQpOwogCiAgIERFRlZBUl9MSVNQ ICgibWVzc2FnZS1sb2ctbWF4IiwgVm1lc3NhZ2VfbG9nX21heCwKICAgICBkb2M6IC8qIE1heGlt dW0gbnVtYmVyIG9mIGxpbmVzIHRvIGtlZXAgaW4gdGhlIG1lc3NhZ2UgbG9nIGJ1ZmZlci4KZGlm ZiAtLWdpdCBhL3NyYy94ZmFjZXMuYyBiL3NyYy94ZmFjZXMuYwppbmRleCBhYjQ0NDBmNDZhZDBk Li42Y2IwOGIwNDc1Y2JhIDEwMDY0NAotLS0gYS9zcmMveGZhY2VzLmMKKysrIGIvc3JjL3hmYWNl cy5jCkBAIC03MDQ0LDcgKzcwNDQsNyBAQCBzeW1zX29mX3hmYWNlcyAodm9pZCkKIFRoaXMgc3Rp cHBsZSBwYXR0ZXJuIGlzIHVzZWQgb24gbW9ub2Nocm9tZSBkaXNwbGF5cwogaW5zdGVhZCBvZiBz aGFkZXMgb2YgZ3JheSBmb3IgYSBmYWNlIGJhY2tncm91bmQgY29sb3IuCiBTZWUgYHNldC1mYWNl LXN0aXBwbGUnIGZvciBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoaXMgdmFyaWFibGUuICAqLyk7Ci0g IFZmYWNlX2RlZmF1bHRfc3RpcHBsZSA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJncmF5MyIpOwor ICBWZmFjZV9kZWZhdWx0X3N0aXBwbGUgPSBidWlsZF9zdHJpbmcgKCJncmF5MyIpOwogCiAgIERF RlZBUl9MSVNQICgidHR5LWRlZmluZWQtY29sb3ItYWxpc3QiLCBWdHR5X2RlZmluZWRfY29sb3Jf YWxpc3QsCiAgICBkb2M6IC8qIEFuIGFsaXN0IG9mIGRlZmluZWQgdGVybWluYWwgY29sb3JzIGFu ZCB0aGVpciBSR0IgdmFsdWVzLgpkaWZmIC0tZ2l0IGEvc3JjL3hmbnMuYyBiL3NyYy94Zm5zLmMK aW5kZXggZDkwNjQ0ODE5YjZmNS4uZTllYWQzNWNjY2NiNSAxMDA2NDQKLS0tIGEvc3JjL3hmbnMu YworKysgYi9zcmMveGZucy5jCkBAIC03ODc4LDkgKzc4NzgsOSBAQCBzeW1zX29mX3hmbnMgKHZv aWQpCiAjZW5kaWYKIAogICBGcHV0IChRdW5kZWZpbmVkX2NvbG9yLCBRZXJyb3JfY29uZGl0aW9u cywKLQlwdXJlX2xpc3QgKFF1bmRlZmluZWRfY29sb3IsIFFlcnJvcikpOworCWxpc3QgKFF1bmRl ZmluZWRfY29sb3IsIFFlcnJvcikpOwogICBGcHV0IChRdW5kZWZpbmVkX2NvbG9yLCBRZXJyb3Jf bWVzc2FnZSwKLQlidWlsZF9wdXJlX2Nfc3RyaW5nICgiVW5kZWZpbmVkIGNvbG9yIikpOworCWJ1 aWxkX3N0cmluZyAoIlVuZGVmaW5lZCBjb2xvciIpKTsKIAogICBERUZWQVJfTElTUCAoIngtcG9p bnRlci1zaGFwZSIsIFZ4X3BvaW50ZXJfc2hhcGUsCiAgICAgZG9jOiAvKiBUaGUgc2hhcGUgb2Yg dGhlIHBvaW50ZXIgd2hlbiBvdmVyIHRleHQuCkBAIC04MDkxLDcgKzgwOTEsNyBAQCBzeW1zX29m X3hmbnMgKHZvaWQpCiAgICAgY2hhciBndGtfdmVyc2lvbltzaXplb2YgIi4uIiArIDMgKiBJTlRf U1RSTEVOX0JPVU5EIChpbnQpXTsKICAgICBpbnQgbGVuID0gc3ByaW50ZiAoZ3RrX3ZlcnNpb24s ICIlZC4lZC4lZCIsCiAJCSAgICAgICBHVEtfTUFKT1JfVkVSU0lPTiwgR1RLX01JTk9SX1ZFUlNJ T04sIEdUS19NSUNST19WRVJTSU9OKTsKLSAgICBWZ3RrX3ZlcnNpb25fc3RyaW5nID0gbWFrZV9w dXJlX3N0cmluZyAoZ3RrX3ZlcnNpb24sIGxlbiwgbGVuLCBmYWxzZSk7CisgICAgVmd0a192ZXJz aW9uX3N0cmluZyA9IG1ha2Vfc3BlY2lmaWVkX3N0cmluZyAoZ3RrX3ZlcnNpb24sIGxlbiwgbGVu LCBmYWxzZSk7CiAgIH0KICNlbmRpZiAvKiBVU0VfR1RLICovCiAKQEAgLTgxMDUsNyArODEwNSw4 IEBAIHN5bXNfb2ZfeGZucyAodm9pZCkKICAgICBpbnQgbGVuID0gc3ByaW50ZiAoY2Fpcm9fdmVy c2lvbiwgIiVkLiVkLiVkIiwKIAkJICAgICAgIENBSVJPX1ZFUlNJT05fTUFKT1IsIENBSVJPX1ZF UlNJT05fTUlOT1IsCiAgICAgICAgICAgICAgICAgICAgICAgIENBSVJPX1ZFUlNJT05fTUlDUk8p OwotICAgIFZjYWlyb192ZXJzaW9uX3N0cmluZyA9IG1ha2VfcHVyZV9zdHJpbmcgKGNhaXJvX3Zl cnNpb24sIGxlbiwgbGVuLCBmYWxzZSk7CisgICAgVmNhaXJvX3ZlcnNpb25fc3RyaW5nID0gbWFr ZV9zcGVjaWZpZWRfc3RyaW5nIChjYWlyb192ZXJzaW9uLCBsZW4sIGxlbiwKKwkJCQkJCSAgIGZh bHNlKTsKICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL3NyYy94dGVybS5jIGIvc3JjL3h0ZXJt LmMKaW5kZXggNzQ0YjgwYzY4YTAwMi4uNDM3YzA4YjUyNmY2MCAxMDA2NDQKLS0tIGEvc3JjL3h0 ZXJtLmMKKysrIGIvc3JjL3h0ZXJtLmMKQEAgLTEzNjQ5LDcgKzEzNjQ5LDcgQEAgc3ltc19vZl94 dGVybSAodm9pZCkKICAgREVGU1lNIChRbGF0aW5fMSwgImxhdGluLTEiKTsKIAogI2lmZGVmIFVT RV9HVEsKLSAgeGdfZGVmYXVsdF9pY29uX2ZpbGUgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiaWNv bnMvaGljb2xvci9zY2FsYWJsZS9hcHBzL2VtYWNzLnN2ZyIpOworICB4Z19kZWZhdWx0X2ljb25f ZmlsZSA9IGJ1aWxkX3N0cmluZyAoImljb25zL2hpY29sb3Ivc2NhbGFibGUvYXBwcy9lbWFjcy5z dmciKTsKICAgc3RhdGljcHJvICgmeGdfZGVmYXVsdF9pY29uX2ZpbGUpOwogCiAgIERFRlNZTSAo UXhfZ3RrX21hcF9zdG9jaywgIngtZ3RrLW1hcC1zdG9jayIpOwpAQCAtMTM3NzAsNyArMTM3NzAs NyBAQCBzeW1zX29mX3h0ZXJtICh2b2lkKQogICBWeF9rZXlzeW1fdGFibGUgPSBtYWtlX2hhc2hf dGFibGUgKGhhc2h0ZXN0X2VxbCwgOTAwLAogCQkJCSAgICAgREVGQVVMVF9SRUhBU0hfU0laRSwK IAkJCQkgICAgIERFRkFVTFRfUkVIQVNIX1RIUkVTSE9MRCwKLQkJCQkgICAgIFFuaWwsIGZhbHNl KTsKKwkJCQkgICAgIFFuaWwpOwogCiAgIERFRlZBUl9CT09MICgieC1mcmFtZS1ub3JtYWxpemUt YmVmb3JlLW1heGltaXplIiwKIAkgICAgICAgeF9mcmFtZV9ub3JtYWxpemVfYmVmb3JlX21heGlt aXplLAotLSAKMi4zMC4xCgo= --000000000000e8a40e05bcb57db3--