Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vdm7H-004aZC-0Q for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Jan 2026 09:15:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vdm7F-001GNr-1Q for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Jan 2026 09:15:38 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vdm7E-001GNj-1s for pgsql-hackers@lists.postgresql.org; Thu, 08 Jan 2026 09:15:37 +0000 Received: from mail-ed1-x52a.google.com ([2a00:1450:4864:20::52a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vdm7C-004rTM-0I for pgsql-hackers@lists.postgresql.org; Thu, 08 Jan 2026 09:15:36 +0000 Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-64b7a38f07eso4520782a12.0 for ; Thu, 08 Jan 2026 01:15:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1767863732; x=1768468532; darn=lists.postgresql.org; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=8UzMjesTECgp6+O9VEdxQnejGuVjd71P9yqCrTff7R0=; b=SWtbxebV4I9Hgom6oMKzgoczSYF3Jj9ziamQmPVBE54fNJJg9qm/xpIeaAbcg966Ce R9MXMyG2M2s4HFqhefK+RKcG5pfdcPyL+c3wfU/nvqirgJfDiQD46jrYi3asmF5Dx9Hi +KdT7LRHd5xOaPxvaJ7iOIF0Ciu+40miDa6z60SgRZG6NSxhuzOm47Kfw5MgHbNlkyc5 yvsNBU7XoR1jt/fS5zDrd7s4RWcQdJ5pVQZE7263Fnr5zM8ZE4A/iyHRm3wiTdIyPQ0O nGWyS17JXj0hfrZFbusC+xOfMVD5GitVj4nt9vgafpBTzdNlg2u9/DIIpuNzYLaybO82 d9lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767863732; x=1768468532; h=in-reply-to:references:from:to:subject:cc:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=8UzMjesTECgp6+O9VEdxQnejGuVjd71P9yqCrTff7R0=; b=N7MBGTkDBuA0bhBJG38hHcicoCB/YYNtWa79jYB5H6LEcYlVIjdGoL+yulg9Vitmji 7sCkyKLWiZqAUE82SIgcrF3br0/lkKWECG0LaOqO1MYIKHaRXG0MZ4oLJHAFJX5OKEM1 pABqWtGiecm+ZFNaXK9OKK/JFk3/u55pGii8T63WP2bjp+fHqwc2gmi5RJQT3EbD4lyz r1azkZkRxXY0OyB3VOlWtllurc27KueNOt0scrI51K2e8aKxEQGZvPDsEpZdChQhyOcG BO2891synv3b5AZ+hTs2u+fLJKuID0ZBH+gds6Oh5zUPRlGyBmzRVaj7tCuQSnqV3Vuk hPaw== X-Forwarded-Encrypted: i=1; AJvYcCXhRGpGZYBTibhyQmkyVA05yjQov3ESxRpqmUBce79Sx9ZC1A3391cUUKinCC0fo06VukcOXxQ0f9fDYLar@lists.postgresql.org X-Gm-Message-State: AOJu0YzR7e907Whvn8Ldq3WcsM4bRO+Ytc41pj3WxQNHPTfV/WhzFGl+ rLvU01MufbvCYixzP+A5+KJd5X/GmrrkVfq1yYa9xzBs/kN5XnLNgaXAqQaYjaCNt64= X-Gm-Gg: AY/fxX7SECj6qLTbXHg4ekqV/uTzdn4w6iwtfX3iK5wSBo0olunJDvBF19ekRQVUDqr Pp9F0yuVaFBXE1t6rCR5XP9o+Ah4e7NXUkOJulHF9ETXs3dNLUnEEFTeii49vzzZHYqPfigc1// l0nB/zHh82ZTNhOwntvbUMTlcI9jFN7yAuiaKS6g1+ZLBQBk3aOwXMzOXXAmzTwvzCLDyHiWLy9 AI7ranOKskBRVzJdgUdk08RRMxzL1+dkhWHyZfgmAIVTRSxRZlhzthee6xdhilZnYGzlG4yMmeo jmz8lbIQOJTmg1DAlgbWIXUTtsJCNj4kab3Wjz+2H365mw/3UYEDngFpxYeZjvdsDFQiDAU0WiA J88CnWOxHSVfi54wzCg9VOmvthIoNDy+nCL6YpSj56bZxPRufuB3aqS7BPdpO7a05WTDveggzUK SroycZjZ3w29qgrhSCKFTOZ+6Yf8TNU82vQVGyuNK08Z1mRw== X-Google-Smtp-Source: AGHT+IG/9Pom56WwJNaUqPLXI0O9UE1gkFPy2hDVF4P4kTDS9LlWKL0ZkZq93NxFUnpGVzBRwNyb/g== X-Received: by 2002:a17:906:7955:b0:b7a:1bde:1221 with SMTP id a640c23a62f3a-b84451a792cmr520246266b.62.1767863731388; Thu, 08 Jan 2026 01:15:31 -0800 (PST) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b842a2bcd30sm769780866b.28.2026.01.08.01.15.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 08 Jan 2026 01:15:30 -0800 (PST) Content-Type: multipart/mixed; boundary=f989324da5725db249548439b3b7eddd0ee3c14156b661edb9276ac0d2fb Mime-Version: 1.0 Date: Thu, 08 Jan 2026 10:15:30 +0100 Message-Id: Cc: "Dave Cramer" , "Jacob Champion" , "Heikki Linnakangas" Subject: Re: Add GoAway protocol message for graceful but fast server shutdown/switchover To: "Jelte Fennema-Nio" , "PostgreSQL Hackers" From: "Jelte Fennema-Nio" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --f989324da5725db249548439b3b7eddd0ee3c14156b661edb9276ac0d2fb Content-Type: multipart/alternative; boundary=e1b31fd567f36676f499329c8c3365c39b048656c11525ab85b8e7a8f818 --e1b31fd567f36676f499329c8c3365c39b048656c11525ab85b8e7a8f818 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Thu Oct 23, 2025 at 3:04 PM CEST, Jelte Fennema-Nio wrote: > This change introduces a new GoAway backend-to-frontend protocol > message (byte 'g') that the server can send to the client to politely > request that client to disconnect/reconnect when convenient.=20 After pushback on another threadabout introducing additional minor protocol versions[1], I've decided to change this patch to use a protocol extension instead of a minor version bump. I personally don't think this patch is any better now, but that's fine. If this means it has a chance of going into PG19, that's totally worth it to me. (also I'd like to stop spending time on discussions where clearly neither side will agree with eachother). The automated test requires the not yet committed pytest changes[2]. I don't think the automated test is required for a merge, so I don't think this is blocked on pytest support getting in. It's here mainly as an example and as a regression test during development, to know I did not break the goaway functionality while changing the implementation. [1]: https://www.postgresql.org/message-id/flat/CADK3HHKe1PA1U6aB5-7tWBQ0yZ= GgNvY7H=3DECDD9955Pas_zx_Q@mail.gmail.com [2]: https://commitfest.postgresql.org/patch/6045/ --e1b31fd567f36676f499329c8c3365c39b048656c11525ab85b8e7a8f818-- --f989324da5725db249548439b3b7eddd0ee3c14156b661edb9276ac0d2fb Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=nocfbot.v3-0002-Add-pytest-based-tests-for-GoAway-message.patch Content-Type: text/x-patch; charset=utf-8; name=nocfbot.v3-0002-Add-pytest-based-tests-for-GoAway-message.patch RnJvbSBhOGZlYWI3ODRlYjZlNzhkMzNlODAzOGZkODI4NjJkZGUxNTcwODY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUaHUsIDIzIE9jdCAyMDI1IDE0OjMxOjUyICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MyAyLzJdIEFkZCBweXRlc3QgYmFzZWQgdGVzdHMgZm9yIEdvQXdheSBtZXNzYWdlCgpJIHVzZWQg dGhpcyBwYXRjaHNldCBhcyBhIHRyaWFsIGZvciB0aGUgbmV3IHB5dGVzdCBzdWl0ZSB0aGF0IEph Y29iIGlzCnRyeWluZyB0byBpbnRyb2R1Y2UuIEZlZWwgZnJlZSB0byBsb29rIGF0IGl0LCBidXQg SSdkIHNheSBkb24ndCByZXZpZXcKdGhpcyB0ZXN0IGluIGRldGFpbCB1bnRpbCB3ZSBoYXZlIHRo ZSBweXRlc3QgY2hhbmdlcyBtZXJnZWQgb3IgYXQgbGVhc3QKaW4gYSBtb3JlIGFncmVlZCB1cG9u IHN0YXRlLiBUaGlzIHBhdGNoIGlzIGJ1aWx0IG9uIHRvcCBvZiB0aGF0IHYzCnBhdGNoc2V0LiBU aGlzIHRlc3QgaXMgbm90IGFwcGxpZWQgYnkgY2Zib3QuCgpUZXN0aW5nIHRoaXMgYW55IG90aGVy IHdheSBpcyBhY3R1YWxseSBxdWl0ZSBkaWZmaWN1bHQgd2l0aCB0aGUKaW5mcmFzdHJ1Y3R1cmUg d2UgY3VycmVudGx5IGhhdmUgKG9mIGNvdXJzZSBJIGNvdWxkIGNoYW5nZSB0aGF0LCBidXQgSSdk Cm11Y2ggcmF0aGVyIHNwZW5kIHRoYXQgZW5lcmd5L3RpbWUgb24gbWFraW5nIHRoZSBweXRlc3Qg dGVzdCBzdWl0ZSBhCnRoaW5nKToKLSBwZ3JlZ3Jlc3MgYW5kIHBlcmwgdGVzdHMgZG9uJ3Qgd29y ayBiZWNhdXNlIHdlIG5lZWQgdG8gY2FsbCBhIG5ldwogIGxpYnBxIGZ1bmN0aW9uIHRoYXQgaXMg bm90IGV4cG9zZWQgaW4gcHNxbCAoSSBndWVzcyBJIGNvdWxkIGV4cG9zZSBpdAogIHdpdGggc29t ZSBcZ29hd2F5cmVjZWl2ZWQgY29tbWFuZCwgYnV0IGl0IGRvZXNuJ3Qgc2VlbSB2ZXJ5IHVzZWZ1 bCkuCi0gbGlicHFfcGlwZWxpbmUgY2Fubm90IHRlc3QgdGhpcyBiZWNhdXNlIGl0IHdvdWxkIG5l ZWQgdG8gcmVzdGFydAogIHRoZSBQb3N0Z3JlcyBzZXJ2ZXIgYW5kIGFsbCBpdCBoYXMKLS0tCiBz cmMvaW50ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZCAgICAgICAgfCAgMSArCiBzcmMvaW50ZXJm YWNlcy9saWJwcS9weXQvdGVzdF9nb2F3YXkucHkgfCA1OSArKysrKysrKysrKysrKysrKysrKysr KysrCiBzcmMvdGVzdC9weXRlc3QvbGlicHEvX2NvcmUucHkgICAgICAgICAgfCAxOCArKysrKysr Kwogc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvZml4dHVyZXMucHkgICAgICAgIHwgMjQgKysrKysrKysr KwogNCBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9pbnRlcmZhY2VzL2xpYnBxL3B5dC90ZXN0X2dvYXdheS5weQoKZGlmZiAtLWdpdCBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVz b24uYnVpbGQKaW5kZXggNTY3OTBkZDkyYTkuLjk4M2FmMWQ1YmVhIDEwMDY0NAotLS0gYS9zcmMv aW50ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9t ZXNvbi5idWlsZApAQCAtMTYzLDYgKzE2Myw3IEBAIHRlc3RzICs9IHsKICAgJ3B5dGVzdCc6IHsK ICAgICAndGVzdHMnOiBbCiAgICAgICAncHl0L3Rlc3RfbG9hZF9iYWxhbmNlLnB5JywKKyAgICAg ICdweXQvdGVzdF9nb2F3YXkucHknLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMv aW50ZXJmYWNlcy9saWJwcS9weXQvdGVzdF9nb2F3YXkucHkgYi9zcmMvaW50ZXJmYWNlcy9saWJw cS9weXQvdGVzdF9nb2F3YXkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjM5OWNiNGQxMGFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv cHl0L3Rlc3RfZ29hd2F5LnB5CkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1 LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisiIiIKK1Rlc3RzIGZvciB0 aGUgR29Bd2F5IHByb3RvY29sIG1lc3NhZ2UgZHVyaW5nIHNtYXJ0IHNodXRkb3duLgorCitUaGUg R29Bd2F5IG1lc3NhZ2UgaXMgc2VudCBieSB0aGUgc2VydmVyIGR1cmluZyBzbWFydCBzaHV0ZG93 biB0byBwb2xpdGVseQorcmVxdWVzdCB0aGF0IGNsaWVudHMgZGlzY29ubmVjdCB3aGVuIGNvbnZl bmllbnQuIFRoZSBjb25uZWN0aW9uIHJlbWFpbnMKK2Z1bmN0aW9uYWwgYWZ0ZXIgcmVjZWl2aW5n IHRoZSBtZXNzYWdlLgorIiIiCisKK2ltcG9ydCBzaWduYWwKKworCitkZWYgdGVzdF9nb2F3YXlf c21hcnRfc2h1dGRvd24ocGcsIHdhaXRfdW50aWwpOgorICAgICIiIgorICAgIFRlc3QgdGhhdCBH b0F3YXkgbWVzc2FnZSBpcyBzZW50IGR1cmluZyBzbWFydCBzaHV0ZG93bi4KKworICAgIFRoaXMg dGVzdDoKKyAgICAxLiBDb25uZWN0cyB0byBhIHJ1bm5pbmcgUG9zdGdyZVNRTCBzZXJ2ZXIgdmlh IFVuaXggc29ja2V0CisgICAgMi4gVmVyaWZpZXMgR29Bd2F5IGlzIG5vdCByZWNlaXZlZCBpbml0 aWFsbHkKKyAgICAzLiBJbml0aWF0ZXMgYSBzbWFydCBzaHV0ZG93bgorICAgIDQuIFZlcmlmaWVz IHRoYXQgR29Bd2F5IGlzIHJlY2VpdmVkCisgICAgNS4gVmVyaWZpZXMgdGhhdCBxdWVyaWVzIHN0 aWxsIHdvcmsgYWZ0ZXIgR29Bd2F5CisgICAgNi4gRGlzY29ubmVjdHMgYW5kIHZlcmlmaWVzIHRo ZSBzZXJ2ZXIgc2h1dHMgZG93bgorICAgICIiIgorCisgICAgIyBDb25uZWN0IHRvIHRoZSBzZXJ2 ZXIgdmlhIFVuaXggc29ja2V0LCBsaWJwcSB3aWxsIHJlcXVlc3QgdGhlCisgICAgIyBfcHFfLmdv YXdheSBwcm90b2NvbCBleHRlbnNpb24KKyAgICBjb25uID0gcGcuY29ubmVjdChtYXhfcHJvdG9j b2xfdmVyc2lvbj0ibGF0ZXN0IikKKworICAgICMgSW5pdGlhbGx5LCBHb0F3YXkgc2hvdWxkIG5v dCBiZSByZWNlaXZlZAorICAgIGFzc2VydCBub3QgY29ubi5nb2F3YXlfcmVjZWl2ZWQoKSwgIkdv QXdheSBzaG91bGQgbm90IGJlIHJlY2VpdmVkIGluaXRpYWxseSIKKworICAgICMgRXhlY3V0ZSBh IHNpbXBsZSBxdWVyeSB0byBlbnN1cmUgY29ubmVjdGlvbiBpcyB3b3JraW5nCisgICAgY29ubi5z cWwoIlNFTEVDVCAxIikKKworICAgICMgSW5pdGlhdGUgc21hcnQgc2h1dGRvd24gYnkgc2VuZGlu ZyBTSUdURVJNIHRvIHRoZSBwb3N0bWFzdGVyCisgICAgaW1wb3J0IG9zCisKKyAgICBvcy5raWxs KHBnLnBpZCwgc2lnbmFsLlNJR1RFUk0pCisKKyAgICBmb3IgXyBpbiB3YWl0X3VudGlsKCJEaWQg bm90IHJlY2VpdmUgR29Bd2F5IGFmdGVyIHNtYXJ0IHNodXRkb3duIik6CisgICAgICAgICMgQ29u c3VtZSBhbnkgZGF0YSB0aGUgYmFja2VuZCBtYXkgaGF2ZSBzZW50IChsaWtlIEdvQXdheSkKKyAg ICAgICAgYXNzZXJ0IGNvbm4uY29uc3VtZV9pbnB1dCgpCisgICAgICAgIGlmIGNvbm4uZ29hd2F5 X3JlY2VpdmVkKCk6CisgICAgICAgICAgICBicmVhaworCisgICAgIyBFeGVjdXRlIGEgcXVlcnkg LSB0aGlzIHdpbGwgdHJpZ2dlciB0aGUgYmFja2VuZCB0byBzZW5kIEdvQXdheSBiZWZvcmUKKyAg ICAjIHByb2Nlc3NpbmcgdGhlIHF1ZXJ5LCBhbmQgdGhlIGNsaWVudCB3aWxsIHBhcnNlIGl0Cisg ICAgY29ubi5zcWwoIlNFTEVDVCAyIikKKworICAgICMgQ2hlY2sgdGhhdCBHb0F3YXkgd2FzIHJl Y2VpdmVkCisgICAgYXNzZXJ0IGNvbm4uZ29hd2F5X3JlY2VpdmVkKCksICJHb0F3YXkgc2hvdWxk IGJlIHJlY2VpdmVkIGFmdGVyIHNtYXJ0IHNodXRkb3duIgorCisgICAgIyBDb25uZWN0aW9uIHNo b3VsZCBzdGlsbCBiZSBmdW5jdGlvbmFsIC0gdHJ5IG9uZSBtb3JlIHF1ZXJ5CisgICAgY29ubi5z cWwoIlNFTEVDVCAzIikKKworICAgICMgVmVyaWZ5IEdvQXdheSBpcyBzdGlsbCBmbGFnZ2VkCisg ICAgYXNzZXJ0IGNvbm4uZ29hd2F5X3JlY2VpdmVkKCksICJHb0F3YXkgZmxhZyBzaG91bGQgcmVt YWluIHNldCIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9fY29yZS5weSBiL3Ny Yy90ZXN0L3B5dGVzdC9saWJwcS9fY29yZS5weQppbmRleCAwZDc3OTk2ZDU3Mi4uZjI3ODM2MzBm ZDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9fY29yZS5weQorKysgYi9zcmMv dGVzdC9weXRlc3QvbGlicHEvX2NvcmUucHkKQEAgLTE0Nyw2ICsxNDcsMTIgQEAgZGVmIGxvYWRf bGlicHFfaGFuZGxlKGxpYmRpciwgYmluZGlyKToKICAgICBsaWIuUFFyZXN1bHRFcnJvckZpZWxk LnJlc3R5cGUgPSBjdHlwZXMuY19jaGFyX3AKICAgICBsaWIuUFFyZXN1bHRFcnJvckZpZWxkLmFy Z3R5cGVzID0gW19QR3Jlc3VsdF9wLCBjdHlwZXMuY19pbnRdCiAKKyAgICBsaWIuUFFnb0F3YXlS ZWNlaXZlZC5yZXN0eXBlID0gY3R5cGVzLmNfaW50CisgICAgbGliLlBRZ29Bd2F5UmVjZWl2ZWQu YXJndHlwZXMgPSBbX1BHY29ubl9wXQorCisgICAgbGliLlBRY29uc3VtZUlucHV0LnJlc3R5cGUg PSBjdHlwZXMuY19pbnQKKyAgICBsaWIuUFFjb25zdW1lSW5wdXQuYXJndHlwZXMgPSBbX1BHY29u bl9wXQorCiAgICAgcmV0dXJuIGxpYgogCiAKQEAgLTQyMCw2ICs0MjYsMTggQEAgY2xhc3MgUEdj b25uKGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAgICAgICAgIGVsc2U6CiAg ICAgICAgICAgICByZXMucmFpc2VfZXJyb3IoKQogCisgICAgZGVmIGNvbnN1bWVfaW5wdXQoc2Vs ZikgLT4gYm9vbDoKKyAgICAgICAgIiIiCisgICAgICAgIENvbnN1bWVzIGFueSBhdmFpbGFibGUg aW5wdXQgZnJvbSB0aGUgc2VydmVyLiBSZXR1cm5zIFRydWUgb24gc3VjY2Vzcy4KKyAgICAgICAg IiIiCisgICAgICAgIHJldHVybiBib29sKHNlbGYuX2xpYi5QUWNvbnN1bWVJbnB1dChzZWxmLl9o YW5kbGUpKQorCisgICAgZGVmIGdvYXdheV9yZWNlaXZlZChzZWxmKSAtPiBib29sOgorICAgICAg ICAiIiIKKyAgICAgICAgUmV0dXJucyBUcnVlIGlmIGEgR29Bd2F5IG1lc3NhZ2Ugd2FzIHJlY2Vp dmVkIGZyb20gdGhlIHNlcnZlci4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBib29sKHNl bGYuX2xpYi5QUWdvQXdheVJlY2VpdmVkKHNlbGYuX2hhbmRsZSkpCisKIAogZGVmIGNvbm5zdHIo b3B0czogRGljdFtzdHIsIEFueV0pIC0+IHN0cjoKICAgICAiIiIKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3B5dGVzdC9weXBnL2ZpeHR1cmVzLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvZml4dHVy ZXMucHkKaW5kZXggOGMwY2I2MGRhYTUuLjRhYTZjNzMzNDlkIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9weXRlc3QvcHlwZy9maXh0dXJlcy5weQorKysgYi9zcmMvdGVzdC9weXRlc3QvcHlwZy9maXh0 dXJlcy5weQpAQCAtNTcsNiArNTcsMzAgQEAgZGVmIHJlbWFpbmluZ190aW1lb3V0X21vZHVsZSgp OgogICAgIHJldHVybiBsYW1iZGE6IG1heChkZWFkbGluZSAtIHRpbWUubW9ub3RvbmljKCksIDAp CiAKIAorQHB5dGVzdC5maXh0dXJlCitkZWYgd2FpdF91bnRpbChyZW1haW5pbmdfdGltZW91dCk6 CisgICAgZGVmIHdhaXRfdW50aWwoZXJyb3JfbWVzc2FnZT0iRGlkIG5vdCBjb21wbGV0ZSBpbiB0 aW1lIiwgdGltZW91dD1Ob25lLCBpbnRlcnZhbD0xKToKKyAgICAgICAgIiIiCisgICAgICAgIExv b3AgdW50aWwgdGhlIHRpbWVvdXQgaXMgcmVhY2hlZC4gSWYgdGhlIHRpbWVvdXQgaXMgcmVhY2hl ZCwgcmFpc2UgYW4KKyAgICAgICAgZXhjZXB0aW9uIHdpdGggdGhlIGdpdmVuIGVycm9yIG1lc3Nh Z2UuCisgICAgICAgICIiIgorICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CisgICAgICAgICAg ICB0aW1lb3V0ID0gcmVtYWluaW5nX3RpbWVvdXQoKQorCisgICAgICAgIGVuZCA9IHRpbWUudGlt ZSgpICsgdGltZW91dAorICAgICAgICBwcmludF9wcm9ncmVzcyA9IHRpbWVvdXQgLyAxMCA+IDQK KyAgICAgICAgbGFzdF9wcmludGVkX3Byb2dyZXNzID0gMAorICAgICAgICB3aGlsZSB0aW1lLnRp bWUoKSA8IGVuZDoKKyAgICAgICAgICAgIGlmIHByaW50X3Byb2dyZXNzIGFuZCB0aW1lLnRpbWUo KSAtIGxhc3RfcHJpbnRlZF9wcm9ncmVzcyA+IDQ6CisgICAgICAgICAgICAgICAgbGFzdF9wcmlu dGVkX3Byb2dyZXNzID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgICAgICBwcmludChmIntlcnJv cl9tZXNzYWdlfSAtIHdpbGwgcmV0cnkiKQorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAg IHRpbWUuc2xlZXAoaW50ZXJ2YWwpCisgICAgICAgIHJhaXNlIFRpbWVvdXRFcnJvcihlcnJvcl9t ZXNzYWdlKQorCisgICAgcmV0dXJuIHdhaXRfdW50aWwKKworCiBAcHl0ZXN0LmZpeHR1cmUoc2Nv cGU9InNlc3Npb24iKQogZGVmIGxpYnBxX2hhbmRsZShsaWJkaXIsIGJpbmRpcik6CiAgICAgIiIi Ci0tIAoyLjUyLjAKCg== --f989324da5725db249548439b3b7eddd0ee3c14156b661edb9276ac0d2fb Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v3-0001-Add-GoAway-protocol-message-for-graceful-but-fast.patch Content-Type: text/x-patch; charset=utf-8; name=v3-0001-Add-GoAway-protocol-message-for-graceful-but-fast.patch RnJvbSAwOGM1N2QwMDBjMDZmOTJmNjViYzZiNDhlOGI1NDZlNWUxYmE3OWViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTdW4sIDE5IE9jdCAyMDI1IDAwOjMwOjQ4ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 MyAxLzJdIEFkZCBHb0F3YXkgcHJvdG9jb2wgbWVzc2FnZSBmb3IgZ3JhY2VmdWwgYnV0IGZhc3QK IHNlcnZlciBzaHV0ZG93bi9zd2l0Y2hvdmVyCgpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIGEgbmV3 IEdvQXdheSBiYWNrZW5kLXRvLWZyb250ZW5kIHByb3RvY29sCm1lc3NhZ2UgKGJ5dGUgJ2cnKSB0 aGF0IHRoZSBzZXJ2ZXIgY2FuIHNlbmQgdG8gdGhlIGNsaWVudCB0byBwb2xpdGVseQpyZXF1ZXN0 IHRoYXQgY2xpZW50IHRvIGRpc2Nvbm5lY3QvcmVjb25uZWN0IHdoZW4gY29udmVuaWVudC4gVGhp cyBtZXNzYWdlIGlzCmFkdmlzb3J5IG9ubHkgLSB0aGUgY29ubmVjdGlvbiByZW1haW5zIGZ1bGx5 IGZ1bmN0aW9uYWwgYW5kIGNsaWVudHMgbWF5CmNvbnRpbnVlIGV4ZWN1dGluZyBxdWVyaWVzIGFu ZCBzdGFydGluZyBuZXcgdHJhbnNhY3Rpb25zLiAiV2hlbgpjb252ZW5pZW50IiBpcyBvYnZpb3Vz bHkgbm90IHZlcnkgd2VsbCBkZWZpbmVkLCBidXQgdGhlIHByaW1hcnkgdGFyZ2V0CmNsaWVudHMg YXJlIGNsaWVudHMgdGhhdCBtYWludGFpbiBhIGNvbm5lY3Rpb24gcG9vbC4gU3VjaCBjbGllbnRz IHNob3VsZApkaXNjb25uZWN0L3JlY29ubmVjdCBhIGNvbm5lY3Rpb24gaW4gdGhlIHBvb2wgd2hl biB0aGVyZSdzIG5vIHVzZXIgb2YKdGhhdCBjb25uZWN0aW9uLiBUaGlzIGlzIHNpbWlsYXIgdG8g aG93IHN1Y2ggY2xpZW50cyBvZnRlbiBjdXJyZW50bHkKcmVtb3ZlIGEgY29ubmVjdGlvbiBmcm9t IHRoZSBwb29sIGFmdGVyIHRoZSBjb25uZWN0aW9uIGhpdHMgYSBtYXhpbXVtCmxpZmV0aW1lIG9m IGUuZy4gMSBob3VyLgoKVGhpcyBuZXcgbWVzc2FnZSBpcyB1c2VkIGJ5IFBvc3RncmVzIGR1cmlu ZyB0aGUgYWxyZWFkeSBleGlzdGluZyAic21hcnQiCnNodXRkb3duIHByb2NlZHVyZSAoaS5lLiB3 aGVuIHBvc3RtYXN0ZXIgcmVjZWl2ZXMgU0lHVEVSTSkuIFdoZW4KUG9zdGdyZXMgaXMgaW4gInNt YXJ0IiBzaHV0ZG93biBtb2RlIGV4aXN0aW5nIGNsaWVudHMgY2FuIGNvbnRpbnVlIHRvCnJ1biBx dWVyaWVzIGFzIHVzdWFsIGJ1dCBuZXcgY29ubmVjdGlvbiBhdHRlbXB0cyBhcmUgcmVqZWN0ZWQu IFRoaXMgbW9kZQppcyBwcmltYXJpbHkgdXNlZnVsIHdoZW4gdHJpZ2dlcmluZyBhIHN3aXRjaG92 ZXIgb2YgYSByZWFkIHJlcGxpY2EuIEEKbG9hZCBiYWxhbmNlciBjYW4gcm91dGUgbmV3IGNvbm5l Y3Rpb25zIG9ubHkgdG8gdGhlIG5ldyByZWFkIHJlcGxpY2EsCndoaWxlIHRoZSBvbGQgbG9hZCBi YWxhbmNlciBrZWVwcyBzZXJ2aW5nIHRoZSBleGlzdGluZyBjb25uZWN0aW9ucyB1bnRpbAp0aGV5 IGRpc2Nvbm5lY3QuIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhpcyBkcmFpbmluZyBvZiBjb25uZWN0 aW9ucyBjb3VsZApvZnRlbiB0YWtlIGEgbG9uZyB0aW1lLiBFdmVuIHdoZW4gY2xpZW50cyBvbmx5 IHJ1biB2ZXJ5IHNob3J0CnF1ZXJpZXMvdHJhbnNhY3Rpb25zIGJlY2F1c2UgdGhlIHNlc3Npb24g Y2FuIGJlIGtlcHQgb3BlbiBtdWNoIGxvbmdlcgoobWFueSBjb25uZWN0aW9uIHBvb2xzIHVzZSAx IGhvdXIgbWF4IGxpZmV0aW1lIG9mIGEgY29ubmVjdGlvbiBieSBkZWZhdWx0KS4KV2l0aCB0aGUg aW50cm9kdWN0aW9uIG9mIHRoZSBHb0F3YXkgbWVzc2FnZSBQb3N0Z3JlcyBub3cgc2VuZHMgdGhp cwptZXNzYWdlIHRvIGFsbCBjb25uZWN0ZWQgY2xpZW50cyB3aGVuIGl0IGVudGVycyBzbWFydCBz aHV0ZG93biBtb2RlLgpJZiB0aGVzZSBjbGllbnRzIHJlc3BvbmQgdG8gdGhlIG1lc3NhZ2UgYnkg cmVjb25uZWN0aW5nL2Rpc2Nvbm5lY3RpbmcKZWFybGllciB0aGFuIHRoZWlyIG1heGltdW0gY29u bmVjdGlvbiBsaWZldGltZSB0aGUgZHJhaW5pbmcgY2FuIGNvbXBsZXRlCm11Y2ggcXVpY2tlci4g U2ltaWxhciBiZW5lZml0cyB0byBzd2l0Y2hvdmVyIGR1cmF0aW9uIGNhbiBiZSBhY2hpZXZlZApm b3Igb3RoZXIgYXBwbGljYXRpb25zIG9yIHByb3hpZXMgaW1wbGVtZW50aW5nIHRoZSBQb3N0Z3Jl cyBwcm90b2NvbCwKbGlrZSB3aGVuIHN3aXRjaGluZyBvdmVyIGEgY2x1c3RlciBvZiBQZ0JvdW5j ZXIgbWFjaGluZXMgdG8gYSBuZXdlcgp2ZXJzaW9uLgoKQXBwbGljYXRpb25zL2NsaWVudHMgdGhh dCB1c2UgbGlicHEgY2FuIHBlcmlvZGljYWxseSBjaGVjayB0aGUgcmVzdWx0IG9mClBRZ29Bd2F5 UmVjZWl2ZWQoKSBhdCBhbiBpbmFjdGl2ZSB0aW1lIHRvIHNlZSB3aGV0aGVyIHRoZXkgYXJlIGFz a2VkIHRvCnJlY29ubmVjdC4KLS0tCiBkb2Mvc3JjL3NnbWwvbGlicHEuc2dtbCAgICAgICAgICAg ICAgICAgICAgICAgfCAgNTEgKysrKysrKysrCiBkb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAg ICAgICAgICAgICAgICAgICAgfCAxMDMgKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9w b3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAgICAgfCAgMjQgKysrKwogc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3Rj b3AvYmFja2VuZF9zdGFydHVwLmMgICAgICAgICAgICB8ICAyMSArKystCiBzcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgMzYgKysrKysrCiBzcmMvaW5jbHVk ZS9saWJwcS9saWJwcS1iZS5oICAgICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUv bGlicHEvcHJvdG9jb2wuaCAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS90Y29w L3Rjb3Bwcm90LmggICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2ludGVyZmFjZXMvbGli cHEvZXhwb3J0cy50eHQgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWNvbm5lY3QuYyAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9m ZS1leGVjLmMgICAgICAgICAgICAgICAgfCAgMjcgKysrKysKIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLXByb3RvY29sMy5jICAgICAgICAgICB8ICAzOSArKysrKystCiBzcmMvaW50ZXJmYWNlcy9s aWJwcS9saWJwcS1mZS5oICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2ludGVyZmFjZXMvbGli cHEvbGlicHEtaW50LmggICAgICAgICAgICAgIHwgICAxICsKIC4uLi9tb2R1bGVzL2xpYnBxX3Bp cGVsaW5lL2xpYnBxX3BpcGVsaW5lLmMgICB8ICAyMiArKystCiAxNyBmaWxlcyBjaGFuZ2VkLCAz MjkgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2xpYnBxLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAppbmRleCA3ZDA1OTM4ZmVk YS4uYmUzNGU4NjJkYzcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCkBAIC0yMjMxLDYgKzIyMzEsMTMgQEAgcG9zdGdyZXNx bDovLyUyRnZhciUyRmxpYiUyRnBvc3RncmVzcWwvZGJuYW1lCiAgICAgICAgIGVxdWl2YWxlbnQg dG8gdGhlIGxhdGVzdCBwcm90b2NvbCB2ZXJzaW9uIHN1cHBvcnRlZCBieSB0aGUgbGlicHEKICAg ICAgICAgdmVyc2lvbiBiZWluZyB1c2VkLCB3aGljaCBpcyBjdXJyZW50bHkgPGxpdGVyYWw+My4y PC9saXRlcmFsPi4KICAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgV2hl biB1c2luZyBwcm90b2NvbCB2ZXJzaW9uIDxsaXRlcmFsPjMuMjwvbGl0ZXJhbD4gb3IgaGlnaGVy LAorICAgICAgICA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPiByZXF1ZXN0cyBhbGwg c3VwcG9ydGVkIHByb3RvY29sCisgICAgICAgIGV4dGVuc2lvbnMgZnJvbSB0aGUgc2VydmVyLCBz dWNoIGFzIDxsaXRlcmFsPmdvYXdheTwvbGl0ZXJhbD4KKyAgICAgICAgd2hpY2ggZW5hYmxlcyA8 eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWdvQXdheVJlY2VpdmVkIi8+LgorICAgICAgIDwvcGFyYT4K ICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0yOTkyLDYgKzI5 OTksNTAgQEAgaW50IFBRc2VydmVyVmVyc2lvbihjb25zdCBQR2Nvbm4gKmNvbm4pOwogICAgICA8 L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgPHZhcmxpc3RlbnRyeSBpZD0i bGlicHEtUFFnb0F3YXlSZWNlaXZlZCI+CisgICAgIDx0ZXJtPjxmdW5jdGlvbj5QUWdvQXdheVJl Y2VpdmVkPC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5PlBRZ29Bd2F5UmVjZWl2ZWQ8L3By aW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4K KyAgICAgICBSZXR1cm5zIHRydWUgaWYgdGhlIHNlcnZlciBoYXMgc2VudCBhIDxsaXRlcmFsPkdv QXdheTwvbGl0ZXJhbD4gbWVzc2FnZSwKKyAgICAgICByZXF1ZXN0aW5nIHRoZSBjbGllbnQgdG8g ZGlzY29ubmVjdCB3aGVuIGNvbnZlbmllbnQuCisKKzxzeW5vcHNpcz4KK2ludCBQUWdvQXdheVJl Y2VpdmVkKGNvbnN0IFBHY29ubiAqY29ubik7Cis8L3N5bm9wc2lzPgorICAgICAgPC9wYXJhPgor CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgPGxpdGVyYWw+R29Bd2F5PC9saXRlcmFsPiBtZXNz YWdlIGlzIHNlbnQgYnkgdGhlIHNlcnZlciBkdXJpbmcgYQorICAgICAgIHNtYXJ0IHNodXRkb3du IHRvIHBvbGl0ZWx5IHJlcXVlc3QgdGhhdCBjbGllbnRzIGRpc2Nvbm5lY3QuIFRoaXMgaXMKKyAg ICAgICBhZHZpc29yeSBvbmx5IC0gdGhlIGNvbm5lY3Rpb24gcmVtYWlucyBmdWxseSBmdW5jdGlv bmFsIGFuZCBxdWVyaWVzCisgICAgICAgY2FuIGNvbnRpbnVlIHRvIGJlIGV4ZWN1dGVkLiBBcHBs aWNhdGlvbnMgY2FuIGNob29zZSB0byBob25vciB0aGUgcnF1ZXN0CisgICAgICAgYnkgY2FsbGlu ZyB0aGlzIGZ1bmN0aW9uIHBlcmlvZGljYWxseSBhbmQgZGlzY29ubmVjdCBncmFjZWZ1bGx5IHdo ZW4KKyAgICAgICBwb3NzaWJsZSwgc3VjaCBhcyBhZnRlciBjb21wbGV0aW5nIHRoZSBjdXJyZW50 IHRyYW5zYWN0aW9uLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGlz IG1lc3NhZ2UgaXMgb25seSBzZW50IHRvIGNsaWVudHMgdGhhdCByZXF1ZXN0IHRoZQorICAgICAg IDxsaXRlcmFsPmdvYXdheTwvbGl0ZXJhbD4gcHJvdG9jb2wgZXh0ZW5zaW9uIGluIHRoZSBzdGFy dHVwIG1lc3NhZ2UsCisgICAgICAgd2hpY2ggPGFwcGxpY2F0aW9uPmxpYnBxPC9hcHBsaWNhdGlv bj4gZG9lcyB3aGVuIHVzaW5nIHByb3RvY29sIHZlcnNpb24KKyAgICAgICAzLjIgb3IgaGlnaGVy IChzZWUgPHhyZWYgbGlua2VuZD0ibGlicHEtY29ubmVjdC1tYXgtcHJvdG9jb2wtdmVyc2lvbiIv PikuCisgICAgICAgVGhlIGZ1bmN0aW9uIHJldHVybnMgMSBpZiB0aGUgPGxpdGVyYWw+R29Bd2F5 PC9saXRlcmFsPiBtZXNzYWdlIHdhcworICAgICAgIHJlY2VpdmVkLCAwIG90aGVyd2lzZS4KKyAg ICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgPGZ1bmN0aW9uPlBRZ29Bd2F5UmVj ZWl2ZWQ8L2Z1bmN0aW9uPiBkb2VzIG5vdCBhY3R1YWxseSByZWFkIGRhdGEgZnJvbSB0aGUKKyAg ICAgICBzZXJ2ZXI7IGl0IGp1c3QgcmV0dXJucyBtZXNzYWdlcyBwcmV2aW91c2x5IGFic29yYmVk IGJ5IGFub3RoZXIKKyAgICAgICA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPiBmdW5j dGlvbi4gU28gbm9ybWFsbHkgeW91IHdvdWxkIGZpcnN0CisgICAgICAgY2FsbCA8eHJlZiBsaW5r ZW5kPSJsaWJwcS1QUWNvbnN1bWVJbnB1dCIvPiwgdGhlbiBjaGVjaworICAgICAgIDxmdW5jdGlv bj5QUWdvQXdheVJlY2VpdmVkPC9mdW5jdGlvbj4uICBZb3UgY2FuIHVzZQorICAgICAgIDxmdW5j dGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IHRvIHdhaXQgZm9yIGRhdGEgdG8gYXJyaXZlIGZyb20g dGhlCisgICAgICAgc2VydmVyLCB0aGVyZWJ5IHVzaW5nIG5vIDxhY3JvbnltPkNQVTwvYWNyb255 bT4gcG93ZXIgdW5sZXNzIHRoZXJlIGlzCisgICAgICAgc29tZXRoaW5nIHRvIGRvLiAgKFNlZSA8 eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNvY2tldCIvPiB0byBvYnRhaW4gdGhlIGZpbGUKKyAgICAg ICBkZXNjcmlwdG9yIG51bWJlciB0byB1c2Ugd2l0aCA8ZnVuY3Rpb24+c2VsZWN0KCk8L2Z1bmN0 aW9uPi4pCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50 cnk+CisKICAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUWVycm9yTWVzc2FnZSI+CiAgICAg IDx0ZXJtPgogICAgICAgPGZ1bmN0aW9uPlBRZXJyb3JNZXNzYWdlPC9mdW5jdGlvbj48aW5kZXh0 ZXJtPjxwcmltYXJ5PlBRZXJyb3JNZXNzYWdlPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wu c2dtbAppbmRleCA0MWM1OTU0YTQyNC4uMjIzZDlkMDBkODEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9wcm90b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC0y NzAsNiArMjcwLDQ3IEBACiAgICAgIDwvdGJvZHk+CiAgICAgPC90Z3JvdXA+CiAgICA8L3RhYmxl PgorCisgICA8cGFyYT4KKyAgICBJbiBhZGRpdGlvbiB0byBwcm90b2NvbCB2ZXJzaW9uIG5lZ290 aWF0aW9uLCB0aGUgY2xpZW50IGNhbiByZXF1ZXN0CisgICAgb3B0aW9uYWwgcHJvdG9jb2wgZXh0 ZW5zaW9ucyBieSBpbmNsdWRpbmcgcGFyYW1ldGVycyBpbiB0aGUgc3RhcnR1cCBtZXNzYWdlLgor ICAgIFByb3RvY29sIGV4dGVuc2lvbiBwYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSBwcmVmaXhlZCB3 aXRoCisgICAgPGxpdGVyYWw+X3BxXy48L2xpdGVyYWw+IHRvIGRpc3Rpbmd1aXNoIHRoZW0gZnJv bSBzZXJ2ZXIgcGFyYW1ldGVycy4gRm9yCisgICAgZXhhbXBsZSwgdGhlIDxsaXRlcmFsPmdvYXdh eTwvbGl0ZXJhbD4gZXh0ZW5zaW9uIGlzIHJlcXVlc3RlZCBieSBpbmNsdWRpbmcKKyAgICA8bGl0 ZXJhbD5fcHFfLmdvYXdheTwvbGl0ZXJhbD4gaW4gdGhlIHN0YXJ0dXAgbWVzc2FnZS4gSWYgdGhl IHNlcnZlciBkb2VzCisgICAgbm90IHJlY29nbml6ZSBhbiBleHRlbnNpb24sIGl0IHdpbGwgcmVw b3J0IGl0IGluIHRoZQorICAgIE5lZ290aWF0ZVByb3RvY29sVmVyc2lvbiBtZXNzYWdlLiA8eHJl ZiBsaW5rZW5kPSJwcm90b2NvbC1leHRlbnNpb25zLXRhYmxlIi8+CisgICAgc2hvd3MgdGhlIGN1 cnJlbnRseSBzdXBwb3J0ZWQgcHJvdG9jb2wgZXh0ZW5zaW9ucy4KKyAgIDwvcGFyYT4KKworICAg PHRhYmxlIGlkPSJwcm90b2NvbC1leHRlbnNpb25zLXRhYmxlIj4KKyAgICA8dGl0bGU+UHJvdG9j b2wgRXh0ZW5zaW9uczwvdGl0bGU+CisKKyAgICA8dGdyb3VwIGNvbHM9IjQiPgorICAgICA8dGhl YWQ+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeT5FeHRlbnNpb248L2VudHJ5PgorICAgICAg IDxlbnRyeT5TdXBwb3J0ZWQgVmFsdWVzPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+SW50cm9kdWNl ZCBJbjwvZW50cnk+CisgICAgICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgIDwv cm93PgorICAgICA8L3RoZWFkPgorCisgICAgIDx0Ym9keT4KKyAgICAgIDxyb3c+CisgICAgICAg PGVudHJ5PjxsaXRlcmFsPmdvYXdheTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgIDxlbnRyeT48 bGl0ZXJhbD4xPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgPGVudHJ5PlBvc3RncmVTUUwgMTk8 L2VudHJ5PgorICAgICAgIDxlbnRyeT4KKyAgICAgICAgRW5hYmxlcyB0aGUgc2VydmVyIHRvIHNl bmQKKyAgICAgICAgPGxpbmsgbGlua2VuZD0icHJvdG9jb2wtbWVzc2FnZS1mb3JtYXRzLUdvQXdh eSI+R29Bd2F5PC9saW5rPgorICAgICAgICBtZXNzYWdlcyB0byByZXF1ZXN0IHRoZSBjbGllbnQg dG8gZGlzY29ubmVjdCB3aGVuIGNvbnZlbmllbnQuCisgICAgICAgIFNlZSA8eHJlZiBsaW5rZW5k PSJwcm90b2NvbC1hc3luYyIvPiBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgIDwvZW50cnk+Cisg ICAgICA8L3Jvdz4KKyAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKyAgIDwvdGFibGU+CiAg IDwvc2VjdDI+CiAgPC9zZWN0MT4KIApAQCAtNTkwLDYgKzYzMSwxNyBAQAogICAgICAgIDwvcGFy YT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJs aXN0ZW50cnk+CisgICAgICA8dGVybT5Hb0F3YXk8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBzZXJ2ZXIgcmVxdWVzdHMgdGhlIHNlcnZlciBwb2xp dGVseSB0byBjbG9zZSB0aGUgY29ubmVjdGlvbiBhdCBpdHMKKyAgICAgICAgZWFybGllc3QgY29u dmVuaWVudCBtb21lbnQuIFNlZSA8eHJlZiBsaW5rZW5kPSJwcm90b2NvbC1hc3luYyIvPiBmb3IK KyAgICAgICAgbW9yZSBkZXRhaWxzLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+ CisgICAgIDwvdmFybGlzdGVudHJ5PgogICAgIDwvdmFyaWFibGVsaXN0PgogICAgPC9wYXJhPgog CkBAIC0xMzM4LDcgKzEzOTAsNyBAQCBTRUxDVCAxLzA7PCEtLSB0aGlzIHR5cG8gaXMgaW50ZW50 aW9uYWwgLS0+CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIEl0IGlzIHBvc3NpYmxlIGZv ciBOb3RpY2VSZXNwb25zZSBhbmQgUGFyYW1ldGVyU3RhdHVzIG1lc3NhZ2VzIHRvIGJlCisgICAg SXQgaXMgcG9zc2libGUgZm9yIE5vdGljZVJlc3BvbnNlLCBQYXJhbWV0ZXJTdGF0dXMgYW5kIEdv QXdheSBtZXNzYWdlcyB0byBiZQogICAgIGludGVyc3BlcnNlZCBiZXR3ZWVuIENvcHlEYXRhIG1l c3NhZ2VzOyBmcm9udGVuZHMgbXVzdCBoYW5kbGUgdGhlc2UgY2FzZXMsCiAgICAgYW5kIHNob3Vs ZCBiZSBwcmVwYXJlZCBmb3Igb3RoZXIgYXN5bmNocm9ub3VzIG1lc3NhZ2UgdHlwZXMgYXMgd2Vs bCAoc2VlCiAgICAgPHhyZWYgbGlua2VuZD0icHJvdG9jb2wtYXN5bmMiLz4pLiAgT3RoZXJ3aXNl LCBhbnkgbWVzc2FnZSB0eXBlIG90aGVyIHRoYW4KQEAgLTE0NDksNiArMTUwMSwyNyBAQCBTRUxD VCAxLzA7PCEtLSB0aGlzIHR5cG8gaXMgaW50ZW50aW9uYWwgLS0+CiAgICAgcGFyYW1ldGVycyB0 aGF0IGl0IGRvZXMgbm90IHVuZGVyc3RhbmQgb3IgY2FyZSBhYm91dC4KICAgIDwvcGFyYT4KIAor ICAgPHBhcmE+CisgICAgQSBHb0F3YXkgbWVzc2FnZSBpcyBzZW50IGJ5IHRoZSBzZXJ2ZXIgdG8g cG9saXRlbHkgcmVxdWVzdCB0aGUgY2xpZW50IHRvCisgICAgZGlzY29ubmVjdCB3aGVuIGNvbnZl bmllbnQgYW5kIHJlY29ubmVjdCB3aGVuIHRoZSBjbGllbnQgbmVlZHMgYSBjb25uZWN0aW9uCisg ICAgYWdhaW4uIFRoaXMgaXMgYWR2aXNvcnkgb25seSAtIHRoZSBjb25uZWN0aW9uIHJlbWFpbnMg ZnVsbHkgZnVuY3Rpb25hbCBhbmQKKyAgICBxdWVyaWVzIGNhbiBjb250aW51ZSB0byBiZSBleGVj dXRlZC4gIldoZW4gY29udmVuaWVudCIgaXMgdmVyeSB2YWd1ZWx5CisgICAgZGVmaW5lZCBvbiBw dXJwb3NlIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiB0aGUgY2xpZW50IGFuZCBhcHBsaWNhdGlvbiB3 aGV0aGVyCisgICAgc3VjaCBhIG1vbWVudCBldmVuIGV4aXN0cy4gU28gY2xpZW50cyBhcmUgYWxs b3dlZCB0byBjb21wbGV0ZWx5IGlnbm9yZSB0aGlzCisgICAgbWVzc2FnZSBhbmQgZGlzY29ubmVj dCB3aGVuZXZlciB0aGV5IG90aGVyd2lzZSB3b3VsZCBoYXZlLiBBbiBpbXBvcnRhbnQKKyAgICB0 eXBlIG9mIGNsaWVudCB0aGF0IGNhbiBhY3R1YWxseSBob25vciB0aGUgcmVxdWVzdCB0byBkaXNj b25uZWN0IGVhcmx5IGlzIGEKKyAgICBjbGllbnQgdGhhdCBtYWludGFpbnMgYSBjb25uZWN0aW9u IHBvb2wuIFN1Y2ggYSBjbGllbnQgY2FuIGhvbm9yIHRoZQorICAgIHJlcXVlc3QgYnkgZGlzY29u bmVjdGluZyBhIGNvbm5lY3Rpb24gdGhhdCBoYXMgcmVjZWl2ZWQgYSBHb0F3YXkgbWVzc2FnZQor ICAgIHdoZW4gaXQncyBub3QgaW4gdXNlIGJ5IGEgdXNlciBvZiB0aGUgcG9vbC4gSXQgaXMgYWxs b3dlZCBmb3IgYSBzZXJ2ZXIgdG8KKyAgICBzZW5kIG11bHRpcGxlIEdvQXdheSBtZXNzYWdlcyBv biB0aGUgc2FtZSBjb25uZWN0aW9uLCBidXQgYW55IHN1YnNlcXVlbnQKKyAgICBHb0F3YXkgbWVz c2FnZXMgYWZ0ZXIgdGhlIGZpcnN0IEdvQXdheSBoYXZlIG5vIGVmZmVjdCBvbiB0aGUgY2xpZW50 J3MKKyAgICBiZWhhdmlvci4gVGhlIEdvQXdheSBtZXNzYWdlIGlzIGN1cnJlbnRseSBzZW50IGJ5 IFBvc3RncmVzIGR1cmluZyB0aGUKKyAgICAic21hcnQiIHNodXRkb3duIHByb2NlZHVyZSAoaS5l LiB3aGVuIHBvc3RtYXN0ZXIgcmVjZWl2ZXMKKyAgICA8c3lzdGVtaXRlbT5TSUdURVJNPC9zeXN0 ZW1pdGVtPikuIFRoZSBzZXJ2ZXIgb25seSBzZW5kcyB0aGUgR29Bd2F5CisgICAgbWVzc2FnZSB0 byBjbGllbnRzIHRoYXQgcmVxdWVzdCB0aGUgPGxpdGVyYWw+Z29hd2F5PC9saXRlcmFsPgorICAg IHByb3RvY29sIGV4dGVuc2lvbiBpbiB0aGUgc3RhcnR1cCBtZXNzYWdlLgorICAgPC9wYXJhPgor CiAgICA8cGFyYT4KICAgICBJZiBhIGZyb250ZW5kIGlzc3VlcyBhIDxjb21tYW5kPkxJU1RFTjwv Y29tbWFuZD4gY29tbWFuZCwgdGhlbiB0aGUKICAgICBiYWNrZW5kIHdpbGwgc2VuZCBhIE5vdGlm aWNhdGlvblJlc3BvbnNlIG1lc3NhZ2UgKG5vdCB0byBiZQpAQCAtNTI0MCw2ICs1MzEzLDMxIEBA IHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZ X1NZU1RFTTsiCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFy bGlzdGVudHJ5IGlkPSJwcm90b2NvbC1tZXNzYWdlLWZvcm1hdHMtR29Bd2F5Ij4KKyAgICA8dGVy bT5Hb0F3YXkgKEIpPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHZhcmlhYmxlbGlzdD4K KyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+Qnl0ZTEoJ2cnKTwvdGVybT4KKyAg ICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgSWRlbnRpZmllcyB0aGUg bWVzc2FnZSBhcyBhIHBvbGl0ZSByZXF1ZXN0IGZvciB0aGUgY2xpZW50IHRvIGRpc2Nvbm5lY3Qu CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50MzIoNCk8L3Rlcm0+ CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIExlbmd0aCBvZiBt ZXNzYWdlIGNvbnRlbnRzIGluIGJ5dGVzLCBpbmNsdWRpbmcgc2VsZi4KKyAgICAgICAgPC9wYXJh PgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgPC92YXJp YWJsZWxpc3Q+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFy bGlzdGVudHJ5IGlkPSJwcm90b2NvbC1tZXNzYWdlLWZvcm1hdHMtR1NTRU5DUmVxdWVzdCI+CiAg ICAgPHRlcm0+R1NTRU5DUmVxdWVzdCAoRik8L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtNjE1 Miw3ICs2MjUwLDggQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNl IiAtYyAiSURFTlRJRllfU1lTVEVNOyIKIAogICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIGFi b3ZlLCBvdGhlciBwYXJhbWV0ZXJzIG1heSBiZSBsaXN0ZWQuCiAgICAgICAgICBQYXJhbWV0ZXIg bmFtZXMgYmVnaW5uaW5nIHdpdGggPGxpdGVyYWw+X3BxXy48L2xpdGVyYWw+IGFyZQotICAgICAg ICAgcmVzZXJ2ZWQgZm9yIHVzZSBhcyBwcm90b2NvbCBleHRlbnNpb25zLCB3aGlsZSBvdGhlcnMg YXJlCisgICAgICAgICByZXNlcnZlZCBmb3IgdXNlIGFzIHByb3RvY29sIGV4dGVuc2lvbnMgKHNl ZQorICAgICAgICAgPHhyZWYgbGlua2VuZD0icHJvdG9jb2wtZXh0ZW5zaW9ucy10YWJsZSIvPiks IHdoaWxlIG90aGVycyBhcmUKICAgICAgICAgIHRyZWF0ZWQgYXMgcnVuLXRpbWUgcGFyYW1ldGVy cyB0byBiZSBzZXQgYXQgYmFja2VuZCBzdGFydAogICAgICAgICAgdGltZS4gIFN1Y2ggc2V0dGlu Z3Mgd2lsbCBiZSBhcHBsaWVkIGR1cmluZyBiYWNrZW5kIHN0YXJ0CiAgICAgICAgICAoYWZ0ZXIg cGFyc2luZyB0aGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBpZiBhbnkpIGFuZCB3aWxsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IDkyMWQ3MzIyNmQ2Li4wMTdmMjkwMThmYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKQEAgLTIxMzQsNyArMjEzNCwzMSBAQCBw cm9jZXNzX3BtX3NodXRkb3duX3JlcXVlc3Qodm9pZCkKIAkJCSAqIGxhdGVyIHN0YXRlLCBkbyBu b3QgY2hhbmdlIGl0LgogCQkJICovCiAJCQlpZiAocG1TdGF0ZSA9PSBQTV9SVU4gfHwgcG1TdGF0 ZSA9PSBQTV9IT1RfU1RBTkRCWSkKKwkJCXsKKwkJCQlkbGlzdF9pdGVyCWl0ZXI7CisKIAkJCQlj b25uc0FsbG93ZWQgPSBmYWxzZTsKKworCQkJCS8qCisJCQkJICogU2lnbmFsIGFsbCBiYWNrZW5k cyB0byBzZW5kIGEgR29Bd2F5IG1lc3NhZ2UgdG8gdGhlaXIKKwkJCQkgKiBjbGllbnRzLCB0byBw b2xpdGVseSByZXF1ZXN0IHRoYXQgdGhleSBkaXNjb25uZWN0LgorCQkJCSAqLworCQkJCWRsaXN0 X2ZvcmVhY2goaXRlciwgJkFjdGl2ZUNoaWxkTGlzdCkKKwkJCQl7CisJCQkJCVBNQ2hpbGQgICAg KmJwID0gZGxpc3RfY29udGFpbmVyKFBNQ2hpbGQsIGVsZW0sIGl0ZXIuY3VyKTsKKworCQkJCQkv KgorCQkJCQkgKiBPbmx5IHNpZ25hbCByZWd1bGFyIGJhY2tlbmRzIGFuZCB3YWxzZW5kZXJzLiBT a2lwCisJCQkJCSAqIGF1eGlsaWFyeSBwcm9jZXNzZXMgYW5kIGRlYWQtZW5kIGJhY2tlbmRzLgor CQkJCQkgKi8KKwkJCQkJaWYgKGJwLT5ia2VuZF90eXBlID09IEJfQkFDS0VORCB8fAorCQkJCQkJ YnAtPmJrZW5kX3R5cGUgPT0gQl9XQUxfU0VOREVSKQorCQkJCQl7CisJCQkJCQlTZW5kUHJvY1Np Z25hbChicC0+cGlkLCBQUk9DU0lHX1NNQVJUX1NIVVRET1dOLAorCQkJCQkJCQkJICAgSU5WQUxJ RF9QUk9DX05VTUJFUik7CisJCQkJCX0KKwkJCQl9CisJCQl9CiAJCQllbHNlIGlmIChwbVN0YXRl ID09IFBNX1NUQVJUVVAgfHwgcG1TdGF0ZSA9PSBQTV9SRUNPVkVSWSkKIAkJCXsKIAkJCQkvKiBU aGVyZSBzaG91bGQgYmUgbm8gY2xpZW50cywgc28gcHJvY2VlZCB0byBzdG9wIGNoaWxkcmVuICov CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggOGU1NjkyMmRjZWEuLjVjMzZl ZmY5YjUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC02OTQsNiArNjk0 LDkgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNr UHJvY1NpZ25hbChQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCkpCiAJCUhhbmRsZUxvZ01lbW9y eUNvbnRleHRJbnRlcnJ1cHQoKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19TTUFS VF9TSFVURE9XTikpCisJCUhhbmRsZVNtYXJ0U2h1dGRvd25JbnRlcnJ1cHQoKTsKKwogCWlmIChD aGVja1Byb2NTaWduYWwoUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFKSkKIAkJSGFuZGxl UGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdGNvcC9iYWNrZW5kX3N0YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvYmFja2VuZF9zdGFy dHVwLmMKaW5kZXggOTRhN2I4Mzk1NjMuLjlhY2JkOWYwM2FhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90Y29wL2JhY2tlbmRfc3RhcnR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvYmFja2Vu ZF9zdGFydHVwLmMKQEAgLTc3OSwxMSArNzc5LDI0IEBAIFByb2Nlc3NTdGFydHVwUGFja2V0KFBv cnQgKnBvcnQsIGJvb2wgc3NsX2RvbmUsIGJvb2wgZ3NzX2RvbmUpCiAJCQl7CiAJCQkJLyoKIAkJ CQkgKiBBbnkgb3B0aW9uIGJlZ2lubmluZyB3aXRoIF9wcV8uIGlzIHJlc2VydmVkIGZvciB1c2Ug YXMgYQotCQkJCSAqIHByb3RvY29sLWxldmVsIG9wdGlvbiwgYnV0IGF0IHByZXNlbnQgbm8gc3Vj aCBvcHRpb25zIGFyZQotCQkJCSAqIGRlZmluZWQuCisJCQkJICogcHJvdG9jb2wtbGV2ZWwgb3B0 aW9uLgogCQkJCSAqLwotCQkJCXVucmVjb2duaXplZF9wcm90b2NvbF9vcHRpb25zID0KLQkJCQkJ bGFwcGVuZCh1bnJlY29nbml6ZWRfcHJvdG9jb2xfb3B0aW9ucywgcHN0cmR1cChuYW1lcHRyKSk7 CisJCQkJaWYgKHN0cmNtcChuYW1lcHRyLCAiX3BxXy5nb2F3YXkiKSA9PSAwKQorCQkJCXsKKwkJ CQkJLyogQ2xpZW50IHdhbnRzIHRvIHJlY2VpdmUgR29Bd2F5IG1lc3NhZ2VzLiAqLworCQkJCQlp ZiAoc3RyY21wKHZhbHB0ciwgIjEiKSAhPSAwKQorCQkJCQkJZXJlcG9ydChGQVRBTCwKKwkJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCQkJCQkgZXJybXNn KCJpbnZhbGlkIHZhbHVlIGZvciBwcm90b2NvbCBvcHRpb24gXCIlc1wiOiBcIiVzXCIiLAorCQkJ CQkJCQkJCW5hbWVwdHIsIHZhbHB0ciksCisJCQkJCQkJCSBlcnJoaW50KCJWYWxpZCB2YWx1ZXMg YXJlOiBcIjFcIi4iKSkpOworCQkJCQlwb3J0LT5nb2F3YXlfbmVnb3RpYXRlZCA9IHRydWU7CisJ CQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCXVucmVjb2duaXplZF9wcm90b2NvbF9vcHRpb25z ID0KKwkJCQkJCWxhcHBlbmQodW5yZWNvZ25pemVkX3Byb3RvY29sX29wdGlvbnMsIHBzdHJkdXAo bmFtZXB0cikpOworCQkJCX0KIAkJCX0KIAkJCWVsc2UKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRl eCAwMTVjNjdiYmViYS4uMzJiZmMwZDU4M2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTQyLDggKzQy LDEwIEBACiAjaW5jbHVkZSAiY29tbW9uL3BnX3BybmcuaCIKICNpbmNsdWRlICJqaXQvaml0Lmgi CiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKKyNpbmNsdWRlICJsaWJwcS9wcWNvbW0uaCIKICNp bmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCisj aW5jbHVkZSAibGlicHEvcHJvdG9jb2wuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2lu Y2x1ZGUgIm1iL3N0cmluZ2luZm9fbWIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTkx LDYgKzkzLDE0IEBAIGNvbnN0IGNoYXIgKmRlYnVnX3F1ZXJ5X3N0cmluZzsgLyogY2xpZW50LXN1 cHBsaWVkIHF1ZXJ5IHN0cmluZyAqLwogLyogTm90ZTogd2hlcmVUb1NlbmRPdXRwdXQgaXMgaW5p dGlhbGl6ZWQgZm9yIHRoZSBib290c3RyYXAvc3RhbmRhbG9uZSBjYXNlICovCiBDb21tYW5kRGVz dCB3aGVyZVRvU2VuZE91dHB1dCA9IERlc3REZWJ1ZzsKIAorLyoKKyAqIFRyYWNrIHdoZXRoZXIg d2UndmUgYmVlbiBub3RpZmllZCBvZiBzbWFydCBzaHV0ZG93biBhbmQgc2VudCBHb0F3YXkuCisg KiBTbWFydFNodXRkb3duUGVuZGluZyBpcyBzZXQgYnkgdGhlIFBST0NTSUdfU01BUlRfU0hVVERP V04gc2lnbmFsIGhhbmRsZXIuCisgKiBHb0F3YXlTZW50IHRyYWNrcyB3aGV0aGVyIHdlJ3ZlIGFs cmVhZHkgc2VudCB0aGUgR29Bd2F5IG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2xhdGlsZSBzaWdf YXRvbWljX3QgU21hcnRTaHV0ZG93blBlbmRpbmcgPSBmYWxzZTsKK3N0YXRpYyBib29sIEdvQXdh eVNlbnQgPSBmYWxzZTsKKwogLyogZmxhZyBmb3IgbG9nZ2luZyBlbmQgb2Ygc2Vzc2lvbiAqLwog Ym9vbAkJTG9nX2Rpc2Nvbm5lY3Rpb25zID0gZmFsc2U7CiAKQEAgLTUwOCw2ICs1MTgsMjAgQEAg UHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKQogCQkvKiBDaGVjayBmb3Ig Z2VuZXJhbCBpbnRlcnJ1cHRzIHRoYXQgYXJyaXZlZCBiZWZvcmUvd2hpbGUgcmVhZGluZyAqLwog CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCisJCS8qIFNlbmQgR29Bd2F5IG1lc3NhZ2UgaWYg c21hcnQgc2h1dGRvd24gaXMgcGVuZGluZyAqLworCQlpZiAoU21hcnRTaHV0ZG93blBlbmRpbmcg JiYgIUdvQXdheVNlbnQgJiYKKwkJCXdoZXJlVG9TZW5kT3V0cHV0ID09IERlc3RSZW1vdGUgJiYK KwkJCU15UHJvY1BvcnQgJiYgTXlQcm9jUG9ydC0+Z29hd2F5X25lZ290aWF0ZWQpCisJCXsKKwkJ CVN0cmluZ0luZm9EYXRhIGJ1ZjsKKworCQkJcHFfYmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0dv QXdheSk7CisJCQlwcV9lbmRtZXNzYWdlKCZidWYpOworCQkJcHFfZmx1c2goKTsKKworCQkJR29B d2F5U2VudCA9IHRydWU7CisJCX0KKwogCQkvKiBQcm9jZXNzIHNpbnZhbCBjYXRjaHVwIGludGVy cnVwdHMsIGlmIGFueSAqLwogCQlpZiAoY2F0Y2h1cEludGVycnVwdFBlbmRpbmcpCiAJCQlQcm9j ZXNzQ2F0Y2h1cEludGVycnVwdCgpOwpAQCAtMzA4Nyw2ICszMTExLDE4IEBAIEZsb2F0RXhjZXB0 aW9uSGFuZGxlcihTSUdOQUxfQVJHUykKIAkJCQkJICAgImludmFsaWQgb3BlcmF0aW9uLCBzdWNo IGFzIGRpdmlzaW9uIGJ5IHplcm8uIikpKTsKIH0KIAorLyoKKyAqIFRlbGwgdGhlIG5leHQgQ0hF Q0tfRk9SX0lOVEVSUlVQVFMoKSBvciBtYWluIGxvb3AgaXRlcmF0aW9uIHRvIHNlbmQgYQorICog R29Bd2F5IG1lc3NhZ2UgdG8gdGhlIGNsaWVudC4gIFJ1bnMgaW4gYSBTSUdVU1IxIGhhbmRsZXIu CisgKi8KK3ZvaWQKK0hhbmRsZVNtYXJ0U2h1dGRvd25JbnRlcnJ1cHQodm9pZCkKK3sKKwlTbWFy dFNodXRkb3duUGVuZGluZyA9IHRydWU7CisJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJLyog bGF0Y2ggd2lsbCBiZSBzZXQgYnkgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIgKi8KK30KKwog LyoKICAqIFRlbGwgdGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBjaGVjayBmb3Ig YSBwYXJ0aWN1bGFyIHR5cGUgb2YKICAqIHJlY292ZXJ5IGNvbmZsaWN0LiAgUnVucyBpbiBhIFNJ R1VTUjEgaGFuZGxlci4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLmgg Yi9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS5oCmluZGV4IDkyMWIyZGFhNGZmLi5iODc2OTQx MmM3MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUuaAorKysgYi9zcmMv aW5jbHVkZS9saWJwcS9saWJwcS1iZS5oCkBAIC0yMDIsNiArMjAyLDExIEBAIHR5cGVkZWYgc3Ry dWN0IFBvcnQKIAl2b2lkCSAgICpnc3M7CiAjZW5kaWYKIAorCS8qCisJICogUHJvdG9jb2wgZXh0 ZW5zaW9ucy4KKwkgKi8KKwlib29sCQlnb2F3YXlfbmVnb3RpYXRlZDsJLyogY2xpZW50IHN1cHBv cnRzIEdvQXdheSBtZXNzYWdlICovCisKIAkvKgogCSAqIFNTTCBzdHJ1Y3R1cmVzLgogCSAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGlicHEvcHJvdG9jb2wuaCBiL3NyYy9pbmNsdWRlL2xp YnBxL3Byb3RvY29sLmgKaW5kZXggZWFlOGYwZTcyMzguLmZkM2MxOTVkYWEyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9saWJwcS9wcm90b2NvbC5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL3By b3RvY29sLmgKQEAgLTUzLDYgKzUzLDcgQEAKICNkZWZpbmUgUHFNc2dfRnVuY3Rpb25DYWxsUmVz cG9uc2UJJ1YnCiAjZGVmaW5lIFBxTXNnX0NvcHlCb3RoUmVzcG9uc2UJCSdXJwogI2RlZmluZSBQ cU1zZ19SZWFkeUZvclF1ZXJ5CQkJJ1onCisjZGVmaW5lIFBxTXNnX0dvQXdheQkJCQknZycKICNk ZWZpbmUgUHFNc2dfTm9EYXRhCQkJCSduJwogI2RlZmluZSBQcU1zZ19Qb3J0YWxTdXNwZW5kZWQJ CSdzJwogI2RlZmluZSBQcU1zZ19QYXJhbWV0ZXJEZXNjcmlwdGlvbgkndCcKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9w cm9jc2lnbmFsLmgKaW5kZXggZTUyYjhlYjc2OTcuLmY1ZmRmODBkYTlmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2NzaWduYWwuaApAQCAtMzYsNiArMzYsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX0JB UlJJRVIsCQkJLyogZ2xvYmFsIGJhcnJpZXIgaW50ZXJydXB0ICAqLwogCVBST0NTSUdfTE9HX01F TU9SWV9DT05URVhULCAvKiBhc2sgYmFja2VuZCB0byBsb2cgdGhlIG1lbW9yeSBjb250ZXh0cyAq LwogCVBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwgLyogTWVzc2FnZSBmcm9tIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMgKi8KKwlQUk9DU0lHX1NNQVJUX1NIVVRET1dOLAkJLyogbm90aWZ5 IGJhY2tlbmQgb2Ygc21hcnQgc2h1dGRvd24gKi8KIAogCS8qIFJlY292ZXJ5IGNvbmZsaWN0IHJl YXNvbnMgKi8KIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0ZJUlNULApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5o CmluZGV4IDU0ZGRlZTg3NWVkLi4yYzAyOWVmZTc3OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dGNvcC90Y29wcHJvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaApAQCAtNzQs NiArNzQsNyBAQCBleHRlcm4gdm9pZCBkaWUoU0lHTkFMX0FSR1MpOwogcGdfbm9yZXR1cm4gZXh0 ZXJuIHZvaWQgcXVpY2tkaWUoU0lHTkFMX0FSR1MpOwogZXh0ZXJuIHZvaWQgU3RhdGVtZW50Q2Fu Y2VsSGFuZGxlcihTSUdOQUxfQVJHUyk7CiBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBGbG9hdEV4 Y2VwdGlvbkhhbmRsZXIoU0lHTkFMX0FSR1MpOworZXh0ZXJuIHZvaWQgSGFuZGxlU21hcnRTaHV0 ZG93bkludGVycnVwdCh2b2lkKTsKIGV4dGVybiB2b2lkIEhhbmRsZVJlY292ZXJ5Q29uZmxpY3RJ bnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc0Ns aWVudFJlYWRJbnRlcnJ1cHQoYm9vbCBibG9ja2VkKTsKIGV4dGVybiB2b2lkIFByb2Nlc3NDbGll bnRXcml0ZUludGVycnVwdChib29sIGJsb2NrZWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFj ZXMvbGlicHEvZXhwb3J0cy50eHQgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dApp bmRleCBkYmJhZTY0MmQ3Ni4uMzM4NWU2NWMzODkgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2V4cG9ydHMudHh0CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0 CkBAIC0yMTAsMyArMjEwLDQgQEAgUFFnZXRBdXRoRGF0YUhvb2sgICAgICAgICAyMDcKIFBRZGVm YXVsdEF1dGhEYXRhSG9vayAgICAgMjA4CiBQUWZ1bGxQcm90b2NvbFZlcnNpb24gICAgIDIwOQog YXBwZW5kUFFFeHBCdWZmZXJWQSAgICAgICAyMTAKK1BRZ29Bd2F5UmVjZWl2ZWQgICAgICAgICAg MjExCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKaW5kZXggYTBkMmY3NDk4MTEuLmM3NTgwODc0 YjVhIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKKysrIGIv c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCkBAIC03MDAsNiArNzAwLDcgQEAgcHFE cm9wU2VydmVyRGF0YShQR2Nvbm4gKmNvbm4pCiAJY29ubi0+cGFzc3dvcmRfbmVlZGVkID0gZmFs c2U7CiAJY29ubi0+Z3NzYXBpX3VzZWQgPSBmYWxzZTsKIAljb25uLT53cml0ZV9mYWlsZWQgPSBm YWxzZTsKKwljb25uLT5nb2F3YXlfcmVjZWl2ZWQgPSBmYWxzZTsKIAlmcmVlKGNvbm4tPndyaXRl X2Vycl9tc2cpOwogCWNvbm4tPndyaXRlX2Vycl9tc2cgPSBOVUxMOwogCWNvbm4tPm9hdXRoX3dh bnRfcmV0cnkgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4 ZWMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYwppbmRleCAyMDNkMzg4YmRiZi4u MGMzM2VhYTNmYjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYwor KysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMKQEAgLTI3MDIsNiArMjcwMiwzMyBA QCBQUW5vdGlmaWVzKFBHY29ubiAqY29ubikKIAlyZXR1cm4gZXZlbnQ7CiB9CiAKKy8qCisgKiBQ UWdvQXdheVJlY2VpdmVkCisgKgkgIHJldHVybnMgMSBpZiBhIEdvQXdheSBtZXNzYWdlIGhhcyBi ZWVuIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlcgorICoJICByZXR1cm5zIDAgaWYgbm90CisgKgor ICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmVhZCBhbnkgbmV3IGRhdGEgZnJv bSB0aGUgc29ja2V0OworICogY2FsbGVyIHNob3VsZCBjYWxsIFBRY29uc3VtZUlucHV0KCkgZmly c3QgaWYgdGhleSB3YW50IHRvIGVuc3VyZQorICogYWxsIGF2YWlsYWJsZSBkYXRhIGhhcyBiZWVu IHJlYWQuCisgKi8KK2ludAorUFFnb0F3YXlSZWNlaXZlZChQR2Nvbm4gKmNvbm4pCit7CisJaWYg KCFjb25uKQorCQlyZXR1cm4gMDsKKworCWlmIChjb25uLT5nb2F3YXlfcmVjZWl2ZWQpCisJCXJl dHVybiAxOworCisJLyoKKwkgKiBQYXJzZSBhbnkgYXZhaWxhYmxlIGRhdGEgdG8gc2VlIGlmIGEg R29Bd2F5IG1lc3NhZ2UgaGFzIGFycml2ZWQuCisJICovCisJcHFQYXJzZUlucHV0Myhjb25uKTsK KworCXJldHVybiBjb25uLT5nb2F3YXlfcmVjZWl2ZWQgPyAxIDogMDsKK30KKworCiAvKgogICog UFFwdXRDb3B5RGF0YSAtIHNlbmQgc29tZSBkYXRhIHRvIHRoZSBiYWNrZW5kIGR1cmluZyBDT1BZ IElOIG9yIENPUFkgQk9USAogICoKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LXByb3RvY29sMy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMKaW5kZXgg MzQ1MThiYmU2ZWEuLmY0N2IzZWNmNGJiIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1wcm90b2NvbDMuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMu YwpAQCAtMTM0LDggKzEzNCw4IEBAIHBxUGFyc2VJbnB1dDMoUEdjb25uICpjb25uKQogCQl9CiAK IAkJLyoKLQkJICogTk9USUZZIGFuZCBOT1RJQ0UgbWVzc2FnZXMgY2FuIGhhcHBlbiBpbiBhbnkg c3RhdGU7IGFsd2F5cyBwcm9jZXNzCi0JCSAqIHRoZW0gcmlnaHQgYXdheS4KKwkJICogTk9USUZZ IGFuZCBOT1RJQ0UgYW5kIEdvQXdheSBtZXNzYWdlcyBjYW4gaGFwcGVuIGluIGFueSBzdGF0ZTsK KwkJICogYWx3YXlzIHByb2Nlc3MgdGhlbSByaWdodCBhd2F5LgogCQkgKgogCQkgKiBNb3N0IG90 aGVyIG1lc3NhZ2VzIHNob3VsZCBvbmx5IGJlIHByb2Nlc3NlZCB3aGlsZSBpbiBCVVNZIHN0YXRl LgogCQkgKiAoSW4gcGFydGljdWxhciwgaW4gUkVBRFkgc3RhdGUgd2UgaG9sZCBvZmYgZnVydGhl ciBwYXJzaW5nIHVudGlsCkBAIC0xNTksNiArMTU5LDEwIEBAIHBxUGFyc2VJbnB1dDMoUEdjb25u ICpjb25uKQogCQkJaWYgKHBxR2V0RXJyb3JOb3RpY2UzKGNvbm4sIGZhbHNlKSkKIAkJCQlyZXR1 cm47CiAJCX0KKwkJZWxzZSBpZiAoaWQgPT0gUHFNc2dfR29Bd2F5KQorCQl7CisJCQljb25uLT5n b2F3YXlfcmVjZWl2ZWQgPSB0cnVlOworCQl9CiAJCWVsc2UgaWYgKGNvbm4tPmFzeW5jU3RhdHVz ICE9IFBHQVNZTkNfQlVTWSkKIAkJewogCQkJLyogSWYgbm90IElETEUgc3RhdGUsIGp1c3Qgd2Fp dCAuLi4gKi8KQEAgLTMwNSw2ICszMDksOSBAQCBwcVBhcnNlSW5wdXQzKFBHY29ubiAqY29ubikK IAkJCQkJaWYgKGdldFBhcmFtZXRlclN0YXR1cyhjb25uKSkKIAkJCQkJCXJldHVybjsKIAkJCQkJ YnJlYWs7CisJCQkJY2FzZSBQcU1zZ19Hb0F3YXk6CisJCQkJCWNvbm4tPmdvYXdheV9yZWNlaXZl ZCA9IHRydWU7CisJCQkJCWJyZWFrOwogCQkJCWNhc2UgUHFNc2dfQmFja2VuZEtleURhdGE6CiAK IAkJCQkJLyoKQEAgLTE0OTksOCArMTUwNiw3IEBAIHBxR2V0TmVnb3RpYXRlUHJvdG9jb2xWZXJz aW9uMyhQR2Nvbm4gKmNvbm4pCiAJY29ubi0+cHZlcnNpb24gPSB0aGVpcl92ZXJzaW9uOwogCiAJ LyoKLQkgKiBXZSBkb24ndCBjdXJyZW50bHkgcmVxdWVzdCBhbnkgcHJvdG9jb2wgZXh0ZW5zaW9u cywgc28gd2UgZG9uJ3QgZXhwZWN0Ci0JICogdGhlIHNlcnZlciB0byByZXBseSB3aXRoIGFueSBl aXRoZXIuCisJICogUHJvY2VzcyB0aGUgbGlzdCBvZiB1bnN1cHBvcnRlZCBwcm90b2NvbCBleHRl bnNpb25zLgogCSAqLwogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtOyBpKyspCiAJewpAQCAtMTUx Myw2ICsxNTE5LDE3IEBAIHBxR2V0TmVnb3RpYXRlUHJvdG9jb2xWZXJzaW9uMyhQR2Nvbm4gKmNv bm4pCiAJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAicmVjZWl2ZWQgaW52YWxpZCBw cm90b2NvbCBuZWdvdGlhdGlvbiBtZXNzYWdlOiBzZXJ2ZXIgcmVwb3J0ZWQgdW5zdXBwb3J0ZWQg cGFyYW1ldGVyIG5hbWUgd2l0aG91dCBhIFwiJXNcIiBwcmVmaXggKFwiJXNcIikiLCAiX3BxXy4i LCBjb25uLT53b3JrQnVmZmVyLmRhdGEpOwogCQkJZ290byBmYWlsdXJlOwogCQl9CisKKwkJLyoK KwkJICogSGFuZGxlIGtub3duIHByb3RvY29sIGV4dGVuc2lvbnMuIFVua25vd24gZXh0ZW5zaW9u cyB0aGF0IHdlcmUgbm90CisJCSAqIHJlcXVlc3RlZCBieSB1cyBhcmUgYW4gZXJyb3IuCisJCSAq LworCQlpZiAoc3RyY21wKGNvbm4tPndvcmtCdWZmZXIuZGF0YSwgIl9wcV8uZ29hd2F5IikgPT0g MCkKKwkJeworCQkJLyogU2VydmVyIGRvZXNuJ3Qgc3VwcG9ydCBHb0F3YXksIHRoYXQncyBmaW5l ICovCisJCQljb250aW51ZTsKKwkJfQorCiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4s ICJyZWNlaXZlZCBpbnZhbGlkIHByb3RvY29sIG5lZ290aWF0aW9uIG1lc3NhZ2U6IHNlcnZlciBy ZXBvcnRlZCBhbiB1bnN1cHBvcnRlZCBwYXJhbWV0ZXIgdGhhdCB3YXMgbm90IHJlcXVlc3RlZCAo XCIlc1wiKSIsIGNvbm4tPndvcmtCdWZmZXIuZGF0YSk7CiAJCWdvdG8gZmFpbHVyZTsKIAl9CkBA IC0xODU2LDYgKzE4NzMsOSBAQCBnZXRDb3B5RGF0YU1lc3NhZ2UoUEdjb25uICpjb25uKQogCQkJ CWlmIChnZXRQYXJhbWV0ZXJTdGF0dXMoY29ubikpCiAJCQkJCXJldHVybiAwOwogCQkJCWJyZWFr OworCQkJY2FzZSBQcU1zZ19Hb0F3YXk6CisJCQkJY29ubi0+Z29hd2F5X3JlY2VpdmVkID0gdHJ1 ZTsKKwkJCQlicmVhazsKIAkJCWNhc2UgUHFNc2dfQ29weURhdGE6CiAJCQkJcmV0dXJuIG1zZ0xl bmd0aDsKIAkJCWNhc2UgUHFNc2dfQ29weURvbmU6CkBAIC0yMzQ5LDYgKzIzNjksOSBAQCBwcUZ1 bmN0aW9uQ2FsbDMoUEdjb25uICpjb25uLCBPaWQgZm5pZCwKIAkJCQlpZiAoZ2V0UGFyYW1ldGVy U3RhdHVzKGNvbm4pKQogCQkJCQljb250aW51ZTsKIAkJCQlicmVhazsKKwkJCWNhc2UgUHFNc2df R29Bd2F5OgorCQkJCWNvbm4tPmdvYXdheV9yZWNlaXZlZCA9IHRydWU7CisJCQkJYnJlYWs7CiAJ CQlkZWZhdWx0OgogCQkJCS8qIFRoZSBiYWNrZW5kIHZpb2xhdGVzIHRoZSBwcm90b2NvbC4gKi8K IAkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAicHJvdG9jb2wgZXJyb3I6IGlkPTB4 JXgiLCBpZCk7CkBAIC0yNDc0LDYgKzI0OTcsMTQgQEAgYnVpbGRfc3RhcnR1cF9wYWNrZXQoY29u c3QgUEdjb25uICpjb25uLCBjaGFyICpwYWNrZXQsCiAJCX0KIAl9CiAKKwkvKgorCSAqIFJlcXVl c3QgcHJvdG9jb2wgZXh0ZW5zaW9ucy4gT25seSBkbyB0aGlzIGZvciBwcm90b2NvbCB2ZXJzaW9u IDMuMiBhbmQKKwkgKiBsYXRlciwgdG8gYXZvaWQgY29uZnVzaW5nIG9sZCBwcm94aWVzIHRoYXQg ZG9uJ3QgdW5kZXJzdGFuZCBfcHFfLioKKwkgKiBvcHRpb25zLgorCSAqLworCWlmIChjb25uLT5w dmVyc2lvbiA+PSBQR19QUk9UT0NPTCgzLCAyKSkKKwkJQUREX1NUQVJUVVBfT1BUSU9OKCJfcHFf LmdvYXdheSIsICIxIik7CisKIAkvKiBBZGQgdHJhaWxpbmcgdGVybWluYXRvciAqLwogCWlmIChw YWNrZXQpCiAJCXBhY2tldFtwYWNrZXRfbGVuXSA9ICdcMCc7CmRpZmYgLS1naXQgYS9zcmMvaW50 ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUu aAppbmRleCA5MDVmMmYzM2FiOC4uOTZlZmRjYzUyM2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2xpYnBxLWZlLmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUu aApAQCAtNjMsNiArNjMsMTAgQEAgZXh0ZXJuICJDIgogLyogSW5kaWNhdGVzIHByZXNlbmNlIG9m IHRoZSBQUUFVVEhEQVRBX1BST01QVF9PQVVUSF9ERVZJQ0UgYXV0aGRhdGEgaG9vayAqLwogI2Rl ZmluZSBMSUJQUV9IQVNfUFJPTVBUX09BVVRIX0RFVklDRSAxCiAKKy8qIEZlYXR1cmVzIGFkZGVk IGluIFBvc3RncmVTUUwgdjE5OiAqLworLyogSW5kaWNhdGVzIHByZXNlbmNlIG9mIFBRZ29Bd2F5 UmVjZWl2ZWQgKi8KKyNkZWZpbmUgTElCUFFfSEFTX0dPQVdBWSAxCisKIC8qCiAgKiBPcHRpb24g ZmxhZ3MgZm9yIFBRY29weVJlc3VsdAogICovCkBAIC00MTEsNiArNDE1LDcgQEAgZXh0ZXJuIGNv bnN0IGNoYXIgKlBRcGFyYW1ldGVyU3RhdHVzKGNvbnN0IFBHY29ubiAqY29ubiwKIGV4dGVybiBp bnQJUFFwcm90b2NvbFZlcnNpb24oY29uc3QgUEdjb25uICpjb25uKTsKIGV4dGVybiBpbnQJUFFm dWxsUHJvdG9jb2xWZXJzaW9uKGNvbnN0IFBHY29ubiAqY29ubik7CiBleHRlcm4gaW50CVBRc2Vy dmVyVmVyc2lvbihjb25zdCBQR2Nvbm4gKmNvbm4pOworZXh0ZXJuIGludAlQUWdvQXdheVJlY2Vp dmVkKFBHY29ubiAqY29ubik7CiBleHRlcm4gY2hhciAqUFFlcnJvck1lc3NhZ2UoY29uc3QgUEdj b25uICpjb25uKTsKIGV4dGVybiBpbnQJUFFzb2NrZXQoY29uc3QgUEdjb25uICpjb25uKTsKIGV4 dGVybiBpbnQJUFFiYWNrZW5kUElEKGNvbnN0IFBHY29ubiAqY29ubik7CmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xp YnBxLWludC5oCmluZGV4IGZiNmE3Y2JmMTVkLi5kMjAyNmE2YTg0OSAxMDA2NDQKLS0tIGEvc3Jj L2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv bGlicHEtaW50LmgKQEAgLTUxMSw2ICs1MTEsNyBAQCBzdHJ1Y3QgcGdfY29ubgogCWJvb2wJCXNp Z3BpcGVfZmxhZzsJLyogY2FuIHdlIG1hc2sgU0lHUElQRSB2aWEgTVNHX05PU0lHTkFMPyAqLwog CWJvb2wJCXdyaXRlX2ZhaWxlZDsJLyogaGF2ZSB3ZSBoYWQgYSB3cml0ZSBmYWlsdXJlIG9uIHNv Y2s/ICovCiAJY2hhcgkgICAqd3JpdGVfZXJyX21zZzsJLyogd3JpdGUgZXJyb3IgbWVzc2FnZSwg b3IgTlVMTCBpZiBPT00gKi8KKwlib29sCQlnb2F3YXlfcmVjZWl2ZWQ7CS8qIHRydWUgaWYgc2Vy dmVyIHNlbnQgR29Bd2F5IG1lc3NhZ2UgKi8KIAogCWJvb2wJCWF1dGhfcmVxdWlyZWQ7CS8qIHJl cXVpcmUgYW4gYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIGZyb20KIAkJCQkJCQkJICogdGhlIHNl cnZlcj8gKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGli cHFfcGlwZWxpbmUuYyBiL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlw ZWxpbmUuYwppbmRleCAwMzM3MTcyMTQ2MC4uY2MxMGQ5OGUzYmUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYworKysgYi9zcmMvdGVz dC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL2xpYnBxX3BpcGVsaW5lLmMKQEAgLTE0MDUsNyArMTQw NSwyMyBAQCB0ZXN0X3Byb3RvY29sX3ZlcnNpb24oUEdjb25uICpjb25uKQogCVBRZmluaXNoKGNv bm4pOwogCiAJLyoKLQkgKiBUZXN0IG1heF9wcm90b2NvbF92ZXJzaW9uPWxhdGVzdC4gJ2xhdGVz dCcgY3VycmVudGx5IG1lYW5zICczLjInLgorCSAqIFRlc3QgbWF4X3Byb3RvY29sX3ZlcnNpb249 My4zCisJICovCisJdmFsc1ttYXhfcHJvdG9jb2xfdmVyc2lvbl9pbmRleF0gPSAiMy4zIjsKKwlj b25uID0gUFFjb25uZWN0ZGJQYXJhbXMoa2V5d29yZHMsIHZhbHMsIGZhbHNlKTsKKworCWlmIChQ UXN0YXR1cyhjb25uKSAhPSBDT05ORUNUSU9OX09LKQorCQlwZ19mYXRhbCgiQ29ubmVjdGlvbiB0 byBkYXRhYmFzZSBmYWlsZWQ6ICVzIiwKKwkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCisJ cHJvdG9jb2xfdmVyc2lvbiA9IFBRZnVsbFByb3RvY29sVmVyc2lvbihjb25uKTsKKwlpZiAocHJv dG9jb2xfdmVyc2lvbiAhPSAzMDAwMykKKwkJcGdfZmF0YWwoImV4cGVjdGVkIDMwMDAzLCBnb3Qg JWQiLCBwcm90b2NvbF92ZXJzaW9uKTsKKworCVBRZmluaXNoKGNvbm4pOworCisJLyoKKwkgKiBU ZXN0IG1heF9wcm90b2NvbF92ZXJzaW9uPWxhdGVzdC4gJ2xhdGVzdCcgY3VycmVudGx5IG1lYW5z ICczLjMnLgogCSAqLwogCXZhbHNbbWF4X3Byb3RvY29sX3ZlcnNpb25faW5kZXhdID0gImxhdGVz dCI7CiAJY29ubiA9IFBRY29ubmVjdGRiUGFyYW1zKGtleXdvcmRzLCB2YWxzLCBmYWxzZSk7CkBA IC0xNDE1LDggKzE0MzEsOCBAQCB0ZXN0X3Byb3RvY29sX3ZlcnNpb24oUEdjb25uICpjb25uKQog CQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAKIAlwcm90b2NvbF92ZXJzaW9uID0gUFFmdWxs UHJvdG9jb2xWZXJzaW9uKGNvbm4pOwotCWlmIChwcm90b2NvbF92ZXJzaW9uICE9IDMwMDAyKQot CQlwZ19mYXRhbCgiZXhwZWN0ZWQgMzAwMDIsIGdvdCAlZCIsIHByb3RvY29sX3ZlcnNpb24pOwor CWlmIChwcm90b2NvbF92ZXJzaW9uICE9IDMwMDAzKQorCQlwZ19mYXRhbCgiZXhwZWN0ZWQgMzAw MDMsIGdvdCAlZCIsIHByb3RvY29sX3ZlcnNpb24pOwogCiAJUFFmaW5pc2goY29ubik7CiAKCmJh c2UtY29tbWl0OiAwNTQ3YWVhZTBmZDZmNmQwM2RkNzQ5OWM4NDE0NWFkOWUzYWE1MWI5CnByZXJl cXVpc2l0ZS1wYXRjaC1pZDogNjIyNzkyZjJmYTM2ZTAwMTgzYTVlMDRlZmE5NTdjZjMwY2RmZjBl MQpwcmVyZXF1aXNpdGUtcGF0Y2gtaWQ6IGU0YzQxMjNiY2RiZjA2NmI0YjVkNjk1MDBjYjBjMTk2 Mzc0MTkyYzAKcHJlcmVxdWlzaXRlLXBhdGNoLWlkOiA3YzMzMGVjYTIyOTUxNzc1N2NiZDdiMjcw OWQxNmZkNjlhNzgxNTE5CnByZXJlcXVpc2l0ZS1wYXRjaC1pZDogZDFhNjZiMDUxZDNhZDc5YmVl MTEwYWNjMjUzMzg0NDVkZGY2YTVmZApwcmVyZXF1aXNpdGUtcGF0Y2gtaWQ6IDU4MTU4MzIxMmRk OGU2ODM1MGZmYTMwYWJkM2YzOTY4M2EzZTFmYjkKcHJlcmVxdWlzaXRlLXBhdGNoLWlkOiAwM2U2 YzM2YjJlYjUwNDMzOWE0NTQ3ZmNhMWRmYjQ2NWMzOTI1Y2UzCnByZXJlcXVpc2l0ZS1wYXRjaC1p ZDogZDViZDlkN2JiZWY5Njc5MDUwNThjZDc4MDA3ZTQ3NjZiMjllNzgzMwpwcmVyZXF1aXNpdGUt cGF0Y2gtaWQ6IDZhMzhiZDRmOWY5OTc0Mzk0NjQ4YmJlMTU0MmRlYzk1NzhkNGUxNWEKLS0gCjIu NTIuMAoK --f989324da5725db249548439b3b7eddd0ee3c14156b661edb9276ac0d2fb--