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 1w52jU-002q0I-0H for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 14:27:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w52jR-007BH4-2A for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 14:27:46 +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 1w52jQ-007BGt-2u for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 14:27:45 +0000 Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w52jM-00000000nnU-1xdJ for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 14:27:44 +0000 Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-b9825ba7e8dso187673766b.3 for ; Tue, 24 Mar 2026 07:27:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1774362453; x=1774967253; darn=lists.postgresql.org; h=in-reply-to:references:mime-version:from:to:subject:cc:message-id :date:from:to:cc:subject:date:message-id:reply-to; bh=7FO1uekKDOICOFmL7A+MleEwVP86ZH1XQxPWUZI72BQ=; b=U7lqm6KS6mpFT3RNAEw9GOQnR2OV64T40JztNU83RwFu+ks6FasQzWbBQH5yPd5kmH wEsDSMiF8pszh/NjjaVx8y8AARd7MuUPrWkP8msmrFZd78mioFF4ie1ha0HpabUd7+m/ jSfU3GEXn7BalClrrEYymCizlVDN1mfeZvmjeMVGsSvNxDO8xTNDCR3vXUTpW3ig3JwP UgZ8XqJRsY2tBSDBbyJGo8p2cgae7uVpE352fjU4Xy0wHlO1zLb5ZBOe9vdsgkO/2v9b 0co760GJNZxgDt7ftf+uitXsOA+ixy3ceiaew+L6I5dzHmUs4x/qvXh5foZVi83cMUPF L+Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774362453; x=1774967253; h=in-reply-to:references:mime-version:from:to:subject:cc:message-id :date:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7FO1uekKDOICOFmL7A+MleEwVP86ZH1XQxPWUZI72BQ=; b=nBHSVN+CFAvk1WLvFUFjleEnnqC7ws1Azt49718HDCe7c1S1rQNlxjzjyc1L5nInof qoy56YIA4VKALO/sS6y29fAeOXCqNXJmF2/m7fqfpNZYBjbxjHUZZ1/7Q7vqqvuIojuo PHhaCKbuaD1moC4hPPP1WG0dx8Uo1zkkHPRcCmVxsq5iKaWDjFaF9XQ2ydbEx/OKatfv Cvy9xtrYdGqPPLaxRp3Ni0ZdPKmJbcGouAOs5i6fA4rkAO4oKCwlZ0MIw8O9R2LtfStX j4rY9dsjEquCm78ebg9QQZUiBOft24mnd/dJDcN4pjXRPVnkcrncD5ypOf118rEQGOYo Nebw== X-Forwarded-Encrypted: i=1; AJvYcCW5WqXNuTJpI//+qHoqCXZuhK4SYqemL6T4b15lqsNomCt6qZvbVWzRy7tZc4PVYDrEm8gX0vOEiENpClbz@lists.postgresql.org X-Gm-Message-State: AOJu0YxTt+sTzLMJUqXtBeLYa4DQde+LJ4pbhJb5FZoWoEcQ1m7Zy1lJ zstNqZUQmlDmoJkOyplXWz/QizWRJwd6/tLJEEee7HrvvhNW9RwCdvQutwSZezNPt53Vf1/6V3p CvZP5 X-Gm-Gg: ATEYQzzqIxuKjZr7k57VEywUswZfnpOPNmOCP9TVFKsPH438Axs7QqukvJp07b3f+Az mfP1AI79vu7/LM1CqOhkXFVdhQvRb/5YMZwrv0VqwMWfmEjJ1zKXZ41kzvDv8amu6W+I4XJy3Y6 eUJRf36ovsxh5FlRVqNGzQp+VDWPKbbz9ssefBl7+P5lr/p5TAF5ogMAf1KDemFwBs2NmAjGUyZ fl8RoW2hmkOmGey0J5eb+/0avOskYawAJvwLx5FkRGzx+PHQbQBN0FJa6MbRIzYxADFlGNvOxuv JQ2OA6q2BPvdmNEl9RuL4ZO+HfRzi9Wv1V0Z4c5k1q5vZp+sOMGJztL/IbGWlTTGfZi5phvkqmB gKiCUalMVttzyjBMBHe5bIfmeErIlqUJMikTD8aHpx+b66A4RRpRT423ovILgJztIGqxQmL31Xq aPqjImEnlC1fIZlGrZZiPa90d5vU8VZ/eK6I1WX/u9nnY7imzRzSGjfwgtep8mY6N1FC6t9ejp X-Received: by 2002:a17:906:4551:b0:b97:bc8a:f45e with SMTP id a640c23a62f3a-b982f2472a7mr801957566b.1.1774362452915; Tue, 24 Mar 2026 07:27:32 -0700 (PDT) Received: from localhost (037153217001.static.ipv4.heldenvannu.net. [37.153.217.1]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9832f8c16csm652485266b.16.2026.03.24.07.27.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 24 Mar 2026 07:27:31 -0700 (PDT) Content-Type: multipart/mixed; boundary=b96b320b8e3fcaed51b701ca8d5572b94dc4220ccb15f92aa64c0605e399 Date: Tue, 24 Mar 2026 15:27:31 +0100 Message-Id: Cc: "Zsolt Parragi" , "PostgreSQL Hackers" , "Dave Cramer" , "Jacob Champion" , "Heikki Linnakangas" , Subject: Re: Add GoAway protocol message for graceful but fast server shutdown/switchover To: "Tomas Vondra" From: "Jelte Fennema-Nio" MIME-Version: 1.0 References: In-Reply-To: X-TUID: BZhHM+9PcSu7 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --b96b320b8e3fcaed51b701ca8d5572b94dc4220ccb15f92aa64c0605e399 Content-Type: multipart/alternative; boundary=aa02dfc2aafea7e270972e04093fc210f5a7ac78e610e4a62861a722ca33 --aa02dfc2aafea7e270972e04093fc210f5a7ac78e610e4a62861a722ca33 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Fri, 20 Mar 2026 at 20:20, Tomas Vondra wrote: > It'd be very helpful if there was some sort of PoC > support on the pooler/client side, so that I can experiment with it and > see how helpful the new protocol message is. But I realize that's a bit > too much to ask for. I'll see if I can whip something up, it shouldn't be too hard. > Why not to have a pg_goaway_backend() function, that'd send the > message to a single backend? I like this idea a lot. So I added it in the attached v8 patch. This also allowed we me to add low level tests using the libpq_pipeline testsuite.=20 > * In fact, does it improve the smart shutdown case in practice? Let's > say we have a single instance, and we're restarting it. It'll send > GoAway to all the clients, the good clients will try to reconnect. But > if there's even a single "bad" client ignoring the GoAway, all the > well-behaved clients will get stuck. Ofc, that can happen without the > GoAway message too - a client may disconnect because of timeout etc. But > it makes it more likely, and it'll affect the well-behaved clients. For primary server restarts, I don't think anyone should be using smart shutdown right now either. Any new connections to the database will be failing for an indeterminate amount of time. I agree that sending GoAway might worsen the problem in some cases, but it's already terrible to start with. Fast shutdown is the only sensible restart mode for a primary server. This seems to be generally accepted knowledge, given that we use SIGINT (fast shutdown) in our systemd example[1]. Sending a GoAway on smart shutdown makes that shutdown mode very useful for read replicas during a planned switch-over to another replica. Now clients can finish their work and quickly reconnect to the new read replica, minimizing switchover time while preventing errors. Even when restarting primary servers, triggering a smart shutdown has a benefits, as long as it's followed by a fast shutdown after a short delay (e.g., 1 second). This causes slightly longer downtime (the additional delay), but it allows most clients to disconnect on their own terms instead of in the middle of a query. Connection errors can often be retried transparently more easily than errors in the middle of a query. In effect, for many applications, this could mean a reduction in errors and only an increase in latency during a restart. > * Would it make sense to have some payload in the GoAway message? I'm > thinking about (a) some deadline by which the client should disconnect, > e.g. time of planned restart / shutdown, (b) priority, expressing how > much the client should try to disconnect (and maybe take more drastic > actions). I thought some more about this, but ultimately, the payloads you suggest only seem useful if a client has something inbetween "disconnect hard now" and "disconnect when the connection is unused". I cannot think of any such cases. i.e. what other "drastic actions" could a client take instead of simply closing the connection. If that's the only possibility, why not simply have the server close the connection in that case. Overall, I agree that having no payload in this new message feels a bit weird. But ultimately, clients don't need any payload to do something useful. > Also, two minor comments: Fixed. --aa02dfc2aafea7e270972e04093fc210f5a7ac78e610e4a62861a722ca33-- --b96b320b8e3fcaed51b701ca8d5572b94dc4220ccb15f92aa64c0605e399 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v8-0001-Add-GoAway-protocol-message-for-graceful-but-fast.patch Content-Type: text/x-patch; charset=utf-8; name=v8-0001-Add-GoAway-protocol-message-for-graceful-but-fast.patch RnJvbSBhYWU5OTA1NGVkYmI1OTRmY2VhYzE4YzI2Y2NiZGNhMzhkZTYzOTgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBTdW4sIDE5IE9jdCAyMDI1IDAwOjMwOjQ4ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2 OF0gQWRkIEdvQXdheSBwcm90b2NvbCBtZXNzYWdlIGZvciBncmFjZWZ1bCBidXQgZmFzdCBzZXJ2 ZXIKIHNodXRkb3duL3N3aXRjaG92ZXIKClRoaXMgY29tbWl0IGludHJvZHVjZXMgYSBuZXcgR29B d2F5IGJhY2tlbmQtdG8tZnJvbnRlbmQgcHJvdG9jb2wKbWVzc2FnZSAoYnl0ZSAnZycpIHRoYXQg dGhlIHNlcnZlciBjYW4gc2VuZCB0byB0aGUgY2xpZW50IHRvIHBvbGl0ZWx5CnJlcXVlc3QgdGhh dCBjbGllbnQgdG8gZGlzY29ubmVjdC9yZWNvbm5lY3Qgd2hlbiBjb252ZW5pZW50LiBUaGlzIG1l c3NhZ2UgaXMKYWR2aXNvcnkgb25seSAtIHRoZSBjb25uZWN0aW9uIHJlbWFpbnMgZnVsbHkgZnVu Y3Rpb25hbCBhbmQgY2xpZW50cyBtYXkKY29udGludWUgZXhlY3V0aW5nIHF1ZXJpZXMgYW5kIHN0 YXJ0aW5nIG5ldyB0cmFuc2FjdGlvbnMuICJXaGVuCmNvbnZlbmllbnQiIGlzIG9idmlvdXNseSBu b3QgdmVyeSB3ZWxsIGRlZmluZWQsIGJ1dCB0aGUgcHJpbWFyeSB0YXJnZXQKY2xpZW50cyBhcmUg Y2xpZW50cyB0aGF0IG1haW50YWluIGEgY29ubmVjdGlvbiBwb29sLiBTdWNoIGNsaWVudHMgc2hv dWxkCmRpc2Nvbm5lY3QvcmVjb25uZWN0IGEgY29ubmVjdGlvbiBpbiB0aGUgcG9vbCB3aGVuIHRo ZXJlJ3Mgbm8gdXNlciBvZgp0aGF0IGNvbm5lY3Rpb24uIFRoaXMgaXMgc2ltaWxhciB0byBob3cg c3VjaCBjbGllbnRzIG9mdGVuIGN1cnJlbnRseQpyZW1vdmUgYSBjb25uZWN0aW9uIGZyb20gdGhl IHBvb2wgYWZ0ZXIgdGhlIGNvbm5lY3Rpb24gaGl0cyBhIG1heGltdW0KbGlmZXRpbWUgb2YgZS5n LiAxIGhvdXIuCgpBIG5ldyBwZ19nb2F3YXlfYmFja2VuZCBmdW5jdGlvbiBpcyBpbnRyb2R1Y2Vk IHRvIHRlbGwgYSBiYWNrZW5kIHRvIHNlbmQKdGhlIEdvQXdheSBtZXNzYWdlIHRvIGl0cyBjb25u ZWN0ZWQgY2xpZW50LiBUaGlzIG1ha2VzIGl0IGVmZmVjdGl2ZWx5CmdyYWNlZnVsIGNvdW50ZXJw YXJ0IHRvIHBnX3Rlcm1pbmF0ZV9iYWNrZW5kLiBUaGlzIGZ1bmN0aW9uIGNhbiBiZQp1c2VmdWwg dG8gdHJpZ2dlciBhIGdyYWNlZnVsIHJlY29ubmVjdC4gQSByZWFzb24gdGhpcyBtaWdodCBiZSB1 c2VmdWwgaXMKaWYgaXQgaXMgdXNpbmcgYSBsb3Qgb2YgbWVtb3J5LCBhbmQgYW4gb3BlcmF0b3Ig d2FudHMgdGhlIHByb2Nlc3MgdG8KY2xlYXIgaXRzIGNhdGFsb2cgY2FjaGVzLgoKQXBhcnQgZnJv bSBiZWluZyBzZW50IGJ5IHBnX2dvYXdheV9iYWNrZW5kLCB0aGUgR29Bd2F5IG1lc3NhZ2UgaXMg dXNlZCBieQpQb3N0Z3JlcyBkdXJpbmcgdGhlIGFscmVhZHkgZXhpc3RpbmcgInNtYXJ0IiBzaHV0 ZG93biBwcm9jZWR1cmUgKGkuZS4Kd2hlbiBwb3N0bWFzdGVyIHJlY2VpdmVzIFNJR1RFUk0pLiBX aGVuIFBvc3RncmVzIGlzIGluICJzbWFydCIgc2h1dGRvd24KbW9kZSBleGlzdGluZyBjbGllbnRz IGNhbiBjb250aW51ZSB0byBydW4gcXVlcmllcyBhcyB1c3VhbCBidXQgbmV3CmNvbm5lY3Rpb24g YXR0ZW1wdHMgYXJlIHJlamVjdGVkLiBUaGlzIG1vZGUgaXMgcHJpbWFyaWx5IHVzZWZ1bCB3aGVu CnRyaWdnZXJpbmcgYSBzd2l0Y2hvdmVyIG9mIGEgcmVhZCByZXBsaWNhLiBBIGxvYWQgYmFsYW5j ZXIgY2FuIHJvdXRlIG5ldwpjb25uZWN0aW9ucyBvbmx5IHRvIHRoZSBuZXcgcmVhZCByZXBsaWNh LCB3aGlsZSB0aGUgb2xkIGxvYWQgYmFsYW5jZXIKa2VlcHMgc2VydmluZyB0aGUgZXhpc3Rpbmcg Y29ubmVjdGlvbnMgdW50aWwgdGhleSBkaXNjb25uZWN0LiBUaGUKcHJvYmxlbSBpcyB0aGF0IHRo aXMgZHJhaW5pbmcgb2YgY29ubmVjdGlvbnMgY291bGQgb2Z0ZW4gdGFrZSBhIGxvbmcKdGltZS4g RXZlbiB3aGVuIGNsaWVudHMgb25seSBydW4gdmVyeSBzaG9ydCBxdWVyaWVzL3RyYW5zYWN0aW9u cyBiZWNhdXNlCnRoZSBzZXNzaW9uIGNhbiBiZSBrZXB0IG9wZW4gbXVjaCBsb25nZXIgKG1hbnkg Y29ubmVjdGlvbiBwb29scyB1c2UgMQpob3VyIG1heCBsaWZldGltZSBvZiBhIGNvbm5lY3Rpb24g YnkgZGVmYXVsdCkuIFdpdGggdGhlIGludHJvZHVjdGlvbiBvZgp0aGUgR29Bd2F5IG1lc3NhZ2Ug UG9zdGdyZXMgbm93IHNlbmRzIHRoaXMgbWVzc2FnZSB0byBhbGwgY29ubmVjdGVkCmNsaWVudHMg d2hlbiBpdCBlbnRlcnMgc21hcnQgc2h1dGRvd24gbW9kZS4gSWYgdGhlc2UgY2xpZW50cyByZXNw b25kIHRvCnRoZSBtZXNzYWdlIGJ5IHJlY29ubmVjdGluZy9kaXNjb25uZWN0aW5nIGVhcmxpZXIg dGhhbiB0aGVpciBtYXhpbXVtCmNvbm5lY3Rpb24gbGlmZXRpbWUgdGhlIGRyYWluaW5nIGNhbiBj b21wbGV0ZSBtdWNoIHF1aWNrZXIuIFNpbWlsYXIKYmVuZWZpdHMgdG8gc3dpdGNob3ZlciBkdXJh dGlvbiBjYW4gYmUgYWNoaWV2ZWQgZm9yIG90aGVyIGFwcGxpY2F0aW9ucwpvciBwcm94aWVzIGlt cGxlbWVudGluZyB0aGUgUG9zdGdyZXMgcHJvdG9jb2wsIGxpa2Ugd2hlbiBzd2l0Y2hpbmcgb3Zl cgphIGNsdXN0ZXIgb2YgUGdCb3VuY2VyIG1hY2hpbmVzIHRvIGEgbmV3ZXIgdmVyc2lvbi4KCkFw cGxpY2F0aW9ucy9jbGllbnRzIHRoYXQgdXNlIGxpYnBxIGNhbiBwZXJpb2RpY2FsbHkgY2hlY2sg dGhlIHJlc3VsdCBvZgpQUWdvQXdheVJlY2VpdmVkKCkgYXQgYW4gaW5hY3RpdmUgdGltZSB0byBz ZWUgd2hldGhlciB0aGV5IGFyZSBhc2tlZCB0bwpyZWNvbm5lY3QuCi0tLQogZG9jL3NyYy9zZ21s L2Z1bmMvZnVuYy1hZG1pbi5zZ21sICAgICAgICAgICAgIHwgIDMzICsrKysrCiBkb2Mvc3JjL3Nn bWwvbGlicHEuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgfCAgNTIgKysrKysrKysKIGRvYy9z cmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAgICAgICB8ICA3MCArKysrKysrKysr LQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgICAgICAgICAgIHwgIDI2ICsr KysKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgICB8ICAgMyAr CiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jICAgICAgICAgfCAxMTkgKysr KysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC90Y29wL2JhY2tlbmRfc3RhcnR1cC5jICAgICAg ICAgICAgfCAgMjEgKysrLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAg ICAgICAgIHwgIDM2ICsrKysrKwogc3JjL2Jpbi9wc3FsL2NvbW1vbi5jICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA3ICsrCiBzcmMvYmluL3BzcWwvbWVzb24uYnVpbGQgICAgICAgICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wc3FsL3QvMDQwX2dvYXdheS5wbCAgICAgICAgICAg ICAgICAgIHwgIDQ2ICsrKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAg ICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS5oICAgICAgICAg ICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvbGlicHEvcHJvdG9jb2wuaCAgICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAgICAg ICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oICAgICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0ICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jICAgICAgICAgICAgICAgIHwg IDI3ICsrKysKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jICAgICAgICAgICB8 ICAzOSArKysrKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmggICAgICAgICAgICAg ICB8ICAgMyArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaCAgICAgICAgICAgICAg fCAgIDEgKwogLi4uL21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYyAgIHwg IDczICsrKysrKysrKysrCiAyMyBmaWxlcyBjaGFuZ2VkLCA1NTMgaW5zZXJ0aW9ucygrKSwgMjEg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wc3FsL3QvMDQwX2dvYXdh eS5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtYWRtaW4uc2dtbCBiL2Rv Yy9zcmMvc2dtbC9mdW5jL2Z1bmMtYWRtaW4uc2dtbAppbmRleCAyMTBiMTExOGJkZi4uMzMzODE2 OWJlYmIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtYWRtaW4uc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWFkbWluLnNnbWwKQEAgLTE2Myw2ICsxNjMsMzkgQEAK ICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93PgogCisgICAgICA8cm93PgorICAg ICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25h dHVyZSI+CisgICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8cHJpbWFyeT5wZ19nb2F3YXlf YmFja2VuZDwvcHJpbWFyeT4KKyAgICAgICAgPC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlv bj5wZ19nb2F3YXlfYmFja2VuZDwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj5waWQ8L3BhcmFtZXRl cj4gPHR5cGU+aW50ZWdlcjwvdHlwZT4sIDxwYXJhbWV0ZXI+dGltZW91dDwvcGFyYW1ldGVyPiA8 dHlwZT5iaWdpbnQ8L3R5cGU+IDxsaXRlcmFsPkRFRkFVTFQ8L2xpdGVyYWw+IDxsaXRlcmFsPjA8 L2xpdGVyYWw+ICkKKyAgICAgICAgPHJldHVybnZhbHVlPmJvb2xlYW48L3JldHVybnZhbHVlPgor ICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmVxdWVzdHMgdGhlIGJhY2tl bmQgcHJvY2VzcyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJvY2VzcyBJRCB0byBzZW5kIGEKKyAgICAg ICAgPGxpdGVyYWw+R29Bd2F5PC9saXRlcmFsPiBtZXNzYWdlIHRvIGl0cyBjbGllbnQsIHBvbGl0 ZWx5IGFza2luZyBpdCB0bworICAgICAgICBkaXNjb25uZWN0IHdoZW4gY29udmVuaWVudC4gVGhl IGNvbm5lY3Rpb24gcmVtYWlucyBmdWxseSBmdW5jdGlvbmFsCisgICAgICAgIGFmdGVyIHJlY2Vp dmluZyB0aGUgbWVzc2FnZS4gVGhlIHNhbWUgcGVybWlzc2lvbiBydWxlcyBhcworICAgICAgICA8 ZnVuY3Rpb24+cGdfY2FuY2VsX2JhY2tlbmQ8L2Z1bmN0aW9uPiBhcHBseS4KKyAgICAgICA8L3Bh cmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIElmIDxwYXJhbWV0ZXI+dGltZW91dDwvcGFyYW1l dGVyPiBpcyBub3Qgc3BlY2lmaWVkIG9yIHplcm8sIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gcmV0 dXJucyA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPiB3aGV0aGVyIHRoZSBjbGllbnQgYWN0dWFsbHkK KyAgICAgICAgZGlzY29ubmVjdHMgb3Igbm90LCBpbmRpY2F0aW5nIG9ubHkgdGhhdCB0aGUgcmVx dWVzdCB3YXMgc3VjY2Vzc2Z1bGx5CisgICAgICAgIHNlbnQgdG8gdGhlIGJhY2tlbmQuICBJZiB0 aGUgPHBhcmFtZXRlcj50aW1lb3V0PC9wYXJhbWV0ZXI+IGlzCisgICAgICAgIHNwZWNpZmllZCAo aW4gbWlsbGlzZWNvbmRzKSBhbmQgZ3JlYXRlciB0aGFuIHplcm8sIHRoZSBmdW5jdGlvbiB3YWl0 cworICAgICAgICB1bnRpbCB0aGUgYmFja2VuZCBoYXMgZXhpdGVkLiBJZiBpdCBleGl0cyB3aXRo aW4gdGhlIHRpbWVvdXQsIHRoZQorICAgICAgICBmdW5jdGlvbiByZXR1cm5zIDxsaXRlcmFsPnRy dWU8L2xpdGVyYWw+LiAgT24gdGltZW91dCwgYSB3YXJuaW5nIGlzCisgICAgICAgIGVtaXR0ZWQg YW5kIDxsaXRlcmFsPmZhbHNlPC9saXRlcmFsPiBpcyByZXR1cm5lZC4KKyAgICAgICA8L3BhcmE+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgaXMgdXNlZnVsIGZvciBncmFjZWZ1bGx5IGRy YWluaW5nIGNvbm5lY3Rpb25zIGZyb20gYSBzZXJ2ZXIsIGZvcgorICAgICAgICBleGFtcGxlIGR1 cmluZyBhIHN3aXRjaG92ZXIuIENsaWVudHMgdGhhdCBkbyBub3Qgc3VwcG9ydAorICAgICAgICB0 aGUgPGxpdGVyYWw+Z29hd2F5PC9saXRlcmFsPiA8bGluayBsaW5rZW5kPSJwcm90b2NvbC1leHRl bnNpb25zLXRhYmxlIj5wcm90b2NvbCBleHRlbnNpb248L2xpbms+IHdpbGwgc2lsZW50bHkgaWdu b3JlCisgICAgICAgIHRoZSByZXF1ZXN0LgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAg PC9yb3c+CisKICAgICAgIDxyb3c+CiAgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KICAgICAgICAgPGluZGV4dGVybT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNn bWwKaW5kZXggNmRiODIzODA4ZmMuLjBiNDA4NjY1YTZmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvbGlicHEuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbApAQCAtMjI0OCw2ICsy MjQ4LDE0IEBAIHBvc3RncmVzcWw6Ly8lMkZ2YXIlMkZsaWIlMkZwb3N0Z3Jlc3FsL2RibmFtZQog ICAgICAgICBlcXVpdmFsZW50IHRvIHRoZSBsYXRlc3QgcHJvdG9jb2wgdmVyc2lvbiBzdXBwb3J0 ZWQgYnkgdGhlIGxpYnBxCiAgICAgICAgIHZlcnNpb24gYmVpbmcgdXNlZCwgd2hpY2ggaXMgY3Vy cmVudGx5IDxsaXRlcmFsPjMuMjwvbGl0ZXJhbD4uCiAgICAgICAgPC9wYXJhPgorCisgICAgICAg PHBhcmE+CisgICAgICAgIFdoZW4gdXNpbmcgcHJvdG9jb2wgdmVyc2lvbiA8bGl0ZXJhbD4zLjI8 L2xpdGVyYWw+IG9yIGhpZ2hlciwKKyAgICAgICAgPGFwcGxpY2F0aW9uPmxpYnBxPC9hcHBsaWNh dGlvbj4gcmVxdWVzdHMgYWxsIHN1cHBvcnRlZAorICAgICAgICA8bGluayBsaW5rZW5kPSJwcm90 b2NvbC1leHRlbnNpb25zIj5wcm90b2NvbCBleHRlbnNpb25zPC9saW5rPgorICAgICAgICBmcm9t IHRoZSBzZXJ2ZXIsIHN1Y2ggYXMgPGxpdGVyYWw+Z29hd2F5PC9saXRlcmFsPgorICAgICAgICB3 aGljaCBlbmFibGVzIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZ29Bd2F5UmVjZWl2ZWQiLz4uCisg ICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAK QEAgLTMwMDQsNiArMzAxMiw1MCBAQCBpbnQgUFFzZXJ2ZXJWZXJzaW9uKGNvbnN0IFBHY29ubiAq Y29ubik7CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICA8dmFy bGlzdGVudHJ5IGlkPSJsaWJwcS1QUWdvQXdheVJlY2VpdmVkIj4KKyAgICAgPHRlcm0+PGZ1bmN0 aW9uPlBRZ29Bd2F5UmVjZWl2ZWQ8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFnb0F3 YXlSZWNlaXZlZDwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4K KyAgICAgIDxwYXJhPgorICAgICAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgc2VydmVyIGhhcyBzZW50 IGEgPGxpdGVyYWw+R29Bd2F5PC9saXRlcmFsPiBtZXNzYWdlLAorICAgICAgIHJlcXVlc3Rpbmcg dGhlIGNsaWVudCB0byBkaXNjb25uZWN0IHdoZW4gY29udmVuaWVudC4KKworPHN5bm9wc2lzPgor aW50IFBRZ29Bd2F5UmVjZWl2ZWQoUEdjb25uICpjb25uKTsKKzwvc3lub3BzaXM+CisgICAgICA8 L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSA8bGl0ZXJhbD5Hb0F3YXk8L2xpdGVy YWw+IG1lc3NhZ2UgaXMgc2VudCBieSB0aGUgc2VydmVyIGR1cmluZyBhCisgICAgICAgc21hcnQg c2h1dGRvd24gdG8gcG9saXRlbHkgcmVxdWVzdCB0aGF0IGNsaWVudHMgZGlzY29ubmVjdC4gVGhp cyBpcworICAgICAgIGFkdmlzb3J5IG9ubHkgLSB0aGUgY29ubmVjdGlvbiByZW1haW5zIGZ1bGx5 IGZ1bmN0aW9uYWwgYW5kIHF1ZXJpZXMKKyAgICAgICBjYW4gY29udGludWUgdG8gYmUgZXhlY3V0 ZWQuIEFwcGxpY2F0aW9ucyBjYW4gY2hvb3NlIHRvIGhvbm9yIHRoZSByZXF1ZXN0CisgICAgICAg YnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHBlcmlvZGljYWxseSBhbmQgZGlzY29ubmVjdCBncmFj ZWZ1bGx5IHdoZW4KKyAgICAgICBwb3NzaWJsZSwgc3VjaCBhcyBhZnRlciBjb21wbGV0aW5nIHRo ZSBjdXJyZW50IHRyYW5zYWN0aW9uLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAg ICAgICBUaGlzIG1lc3NhZ2UgaXMgb25seSBzZW50IHRvIGNsaWVudHMgdGhhdCByZXF1ZXN0IHRo ZQorICAgICAgIDxsaXRlcmFsPmdvYXdheTwvbGl0ZXJhbD4gcHJvdG9jb2wgZXh0ZW5zaW9uIGlu IHRoZSBzdGFydHVwIG1lc3NhZ2UsCisgICAgICAgd2hpY2ggPGFwcGxpY2F0aW9uPmxpYnBxPC9h cHBsaWNhdGlvbj4gZG9lcyB3aGVuIHVzaW5nIHByb3RvY29sIHZlcnNpb24KKyAgICAgICAzLjIg b3IgaGlnaGVyIChzZWUgPHhyZWYgbGlua2VuZD0ibGlicHEtY29ubmVjdC1tYXgtcHJvdG9jb2wt dmVyc2lvbiIvPikuCisgICAgICAgVGhlIGZ1bmN0aW9uIHJldHVybnMgMSBpZiB0aGUgPGxpdGVy YWw+R29Bd2F5PC9saXRlcmFsPiBtZXNzYWdlIHdhcworICAgICAgIHJlY2VpdmVkLCAwIG90aGVy d2lzZS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgPGZ1bmN0aW9uPlBR Z29Bd2F5UmVjZWl2ZWQ8L2Z1bmN0aW9uPiBkb2VzIG5vdCBhY3R1YWxseSByZWFkIGRhdGEgZnJv bSB0aGUKKyAgICAgICBzZXJ2ZXI7IGl0IGp1c3QgcmV0dXJucyBtZXNzYWdlcyBwcmV2aW91c2x5 IGFic29yYmVkIGJ5IGFub3RoZXIKKyAgICAgICA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0 aW9uPiBmdW5jdGlvbi4gU28gbm9ybWFsbHkgeW91IHdvdWxkIGZpcnN0CisgICAgICAgY2FsbCA8 eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNvbnN1bWVJbnB1dCIvPiwgdGhlbiBjaGVjaworICAgICAg IDxmdW5jdGlvbj5QUWdvQXdheVJlY2VpdmVkPC9mdW5jdGlvbj4uICBZb3UgY2FuIHVzZQorICAg ICAgIDxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IHRvIHdhaXQgZm9yIGRhdGEgdG8gYXJy aXZlIGZyb20gdGhlCisgICAgICAgc2VydmVyLCB0aGVyZWJ5IHVzaW5nIG5vIDxhY3JvbnltPkNQ VTwvYWNyb255bT4gcG93ZXIgdW5sZXNzIHRoZXJlIGlzCisgICAgICAgc29tZXRoaW5nIHRvIGRv LiAgKFNlZSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNvY2tldCIvPiB0byBvYnRhaW4gdGhlIGZp bGUKKyAgICAgICBkZXNjcmlwdG9yIG51bWJlciB0byB1c2Ugd2l0aCA8ZnVuY3Rpb24+c2VsZWN0 KCk8L2Z1bmN0aW9uPi4pCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92 YXJsaXN0ZW50cnk+CisKICAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUWVycm9yTWVzc2Fn ZSI+CiAgICAgIDx0ZXJtPgogICAgICAgPGZ1bmN0aW9uPlBRZXJyb3JNZXNzYWdlPC9mdW5jdGlv bj48aW5kZXh0ZXJtPjxwcmltYXJ5PlBRZXJyb3JNZXNzYWdlPC9wcmltYXJ5PjwvaW5kZXh0ZXJt PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cHJvdG9jb2wuc2dtbAppbmRleCA0OWY4MTY3NjcxMi4uZDNiM2Q4MzY4OTMgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5z Z21sCkBAIC0zNDYsOCArMzQ2LDE0IEBACiAKICAgICAgPHRib2R5PgogICAgICAgPHJvdz4KLSAg ICAgICA8ZW50cnkgbmFtZXN0PSJsYXN0IiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSI+ Ci0gICAgICAgIDxlbXBoYXNpcz4oTm8gc3VwcG9ydGVkIHByb3RvY29sIGV4dGVuc2lvbnMgYXJl IGN1cnJlbnRseSBkZWZpbmVkLik8L2VtcGhhc2lzPgorICAgICAgIDxlbnRyeT48bGl0ZXJhbD5f cHFfLmdvYXdheTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgIDxlbnRyeT48bGl0ZXJhbD4xPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgPGVudHJ5PlBvc3RncmVTUUwgMTk8L2VudHJ5PgorICAg ICAgIDxlbnRyeT4KKyAgICAgICAgRW5hYmxlcyB0aGUgc2VydmVyIHRvIHNlbmQKKyAgICAgICAg PGxpbmsgbGlua2VuZD0icHJvdG9jb2wtbWVzc2FnZS1mb3JtYXRzLUdvQXdheSI+R29Bd2F5PC9s aW5rPgorICAgICAgICBtZXNzYWdlcyB0byByZXF1ZXN0IHRoZSBjbGllbnQgdG8gZGlzY29ubmVj dCB3aGVuIGNvbnZlbmllbnQuCisgICAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJwcm90b2NvbC1h c3luYyIvPiBmb3IgbW9yZSBkZXRhaWxzLgogICAgICAgIDwvZW50cnk+CiAgICAgICA8L3Jvdz4K ICAgICAgPC90Ym9keT4KQEAgLTcxMCw2ICs3MTYsMTcgQEAKICAgICAgICA8L3BhcmE+CiAgICAg ICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5 PgorICAgICAgPHRlcm0+R29Bd2F5PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxw YXJhPgorICAgICAgICBUaGUgc2VydmVyIHJlcXVlc3RzIHRoZSBjbGllbnQgcG9saXRlbHkgdG8g Y2xvc2UgdGhlIGNvbm5lY3Rpb24gYXQgaXRzCisgICAgICAgIGVhcmxpZXN0IGNvbnZlbmllbnQg bW9tZW50LiBTZWUgPHhyZWYgbGlua2VuZD0icHJvdG9jb2wtYXN5bmMiLz4gZm9yCisgICAgICAg IG1vcmUgZGV0YWlscy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8 L3Zhcmxpc3RlbnRyeT4KICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgIDwvcGFyYT4KIApAQCAtMTQ1 OCw3ICsxNDc1LDcgQEAgU0VMQ1QgMS8wOzwhLS0gdGhpcyB0eXBvIGlzIGludGVudGlvbmFsIC0t PgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBJdCBpcyBwb3NzaWJsZSBmb3IgTm90aWNl UmVzcG9uc2UgYW5kIFBhcmFtZXRlclN0YXR1cyBtZXNzYWdlcyB0byBiZQorICAgIEl0IGlzIHBv c3NpYmxlIGZvciBOb3RpY2VSZXNwb25zZSwgUGFyYW1ldGVyU3RhdHVzIGFuZCBHb0F3YXkgbWVz c2FnZXMgdG8gYmUKICAgICBpbnRlcnNwZXJzZWQgYmV0d2VlbiBDb3B5RGF0YSBtZXNzYWdlczsg ZnJvbnRlbmRzIG11c3QgaGFuZGxlIHRoZXNlIGNhc2VzLAogICAgIGFuZCBzaG91bGQgYmUgcHJl cGFyZWQgZm9yIG90aGVyIGFzeW5jaHJvbm91cyBtZXNzYWdlIHR5cGVzIGFzIHdlbGwgKHNlZQog ICAgIDx4cmVmIGxpbmtlbmQ9InByb3RvY29sLWFzeW5jIi8+KS4gIE90aGVyd2lzZSwgYW55IG1l c3NhZ2UgdHlwZSBvdGhlciB0aGFuCkBAIC0xNTY5LDYgKzE1ODYsMjggQEAgU0VMQ1QgMS8wOzwh LS0gdGhpcyB0eXBvIGlzIGludGVudGlvbmFsIC0tPgogICAgIHBhcmFtZXRlcnMgdGhhdCBpdCBk b2VzIG5vdCB1bmRlcnN0YW5kIG9yIGNhcmUgYWJvdXQuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJh PgorICAgIEEgR29Bd2F5IG1lc3NhZ2UgaXMgc2VudCBieSB0aGUgc2VydmVyIHRvIHBvbGl0ZWx5 IHJlcXVlc3QgdGhlIGNsaWVudCB0bworICAgIGRpc2Nvbm5lY3Qgd2hlbiBjb252ZW5pZW50IGFu ZCByZWNvbm5lY3Qgd2hlbiB0aGUgY2xpZW50IG5lZWRzIGEgY29ubmVjdGlvbgorICAgIGFnYWlu LiBUaGlzIGlzIGFkdmlzb3J5IG9ubHkgLSB0aGUgY29ubmVjdGlvbiByZW1haW5zIGZ1bGx5IGZ1 bmN0aW9uYWwgYW5kCisgICAgcXVlcmllcyBjYW4gY29udGludWUgdG8gYmUgZXhlY3V0ZWQuICJX aGVuIGNvbnZlbmllbnQiIGlzIHZlcnkgdmFndWVseQorICAgIGRlZmluZWQgb24gcHVycG9zZSBi ZWNhdXNlIGl0IGRlcGVuZHMgb24gdGhlIGNsaWVudCBhbmQgYXBwbGljYXRpb24gd2hldGhlcgor ICAgIHN1Y2ggYSBtb21lbnQgZXZlbiBleGlzdHMuIFNvIGNsaWVudHMgYXJlIGFsbG93ZWQgdG8g Y29tcGxldGVseSBpZ25vcmUgdGhpcworICAgIG1lc3NhZ2UgYW5kIGRpc2Nvbm5lY3Qgd2hlbmV2 ZXIgdGhleSBvdGhlcndpc2Ugd291bGQgaGF2ZS4gQW4gaW1wb3J0YW50CisgICAgdHlwZSBvZiBj bGllbnQgdGhhdCBjYW4gYWN0dWFsbHkgaG9ub3IgdGhlIHJlcXVlc3QgdG8gZGlzY29ubmVjdCBl YXJseSBpcyBhCisgICAgY2xpZW50IHRoYXQgbWFpbnRhaW5zIGEgY29ubmVjdGlvbiBwb29sLiBT dWNoIGEgY2xpZW50IGNhbiBob25vciB0aGUKKyAgICByZXF1ZXN0IGJ5IGRpc2Nvbm5lY3Rpbmcg YSBjb25uZWN0aW9uIHRoYXQgaGFzIHJlY2VpdmVkIGEgR29Bd2F5IG1lc3NhZ2UKKyAgICB3aGVu IGl0J3Mgbm90IGluIHVzZSBieSBhIHVzZXIgb2YgdGhlIHBvb2wuIEl0IGlzIGFsbG93ZWQgZm9y IGEgc2VydmVyIHRvCisgICAgc2VuZCBtdWx0aXBsZSBHb0F3YXkgbWVzc2FnZXMgb24gdGhlIHNh bWUgY29ubmVjdGlvbiwgYnV0IGFueSBzdWJzZXF1ZW50CisgICAgR29Bd2F5IG1lc3NhZ2VzIGFm dGVyIHRoZSBmaXJzdCBHb0F3YXkgaGF2ZSBubyBlZmZlY3Qgb24gdGhlIGNsaWVudCdzCisgICAg YmVoYXZpb3IuIFRoZSBHb0F3YXkgbWVzc2FnZSBpcyBjdXJyZW50bHkgc2VudCBieSBQb3N0Z3Jl cyBkdXJpbmcgdGhlCisgICAgInNtYXJ0IiBzaHV0ZG93biBwcm9jZWR1cmUgKGkuZS4gd2hlbiBw b3N0bWFzdGVyIHJlY2VpdmVzCisgICAgPHN5c3RlbWl0ZW0+U0lHVEVSTTwvc3lzdGVtaXRlbT4p LiBUaGUgc2VydmVyIG9ubHkgc2VuZHMgdGhlIEdvQXdheQorICAgIG1lc3NhZ2UgdG8gY2xpZW50 cyB0aGF0IHJlcXVlc3QgdGhlIDxsaXRlcmFsPmdvYXdheTwvbGl0ZXJhbD4gcHJvdG9jb2wKKyAg ICBleHRlbnNpb24gYnkgc2V0dGluZyA8bGl0ZXJhbD5fcHFfLmdvYXdheTwvbGl0ZXJhbD4gdG8g PGxpdGVyYWw+MTwvbGl0ZXJhbD4KKyAgICBpbiB0aGUgU3RhcnR1cE1lc3NhZ2UuCisgICA8L3Bh cmE+CisKICAgIDxwYXJhPgogICAgIElmIGEgZnJvbnRlbmQgaXNzdWVzIGEgPGNvbW1hbmQ+TElT VEVOPC9jb21tYW5kPiBjb21tYW5kLCB0aGVuIHRoZQogICAgIGJhY2tlbmQgd2lsbCBzZW5kIGEg Tm90aWZpY2F0aW9uUmVzcG9uc2UgbWVzc2FnZSAobm90IHRvIGJlCkBAIC01MzU5LDYgKzUzOTgs MzEgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURF TlRJRllfU1lTVEVNOyIKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAg IDx2YXJsaXN0ZW50cnkgaWQ9InByb3RvY29sLW1lc3NhZ2UtZm9ybWF0cy1Hb0F3YXkiPgorICAg IDx0ZXJtPkdvQXdheSAoQik8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8dmFyaWFibGVs aXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5CeXRlMSgnZycpPC90ZXJt PgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBJZGVudGlmaWVz IHRoZSBtZXNzYWdlIGFzIGEgcG9saXRlIHJlcXVlc3QgZm9yIHRoZSBjbGllbnQgdG8gZGlzY29u bmVjdC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQzMig0KTwv dGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgTGVuZ3Ro IG9mIG1lc3NhZ2UgY29udGVudHMgaW4gYnl0ZXMsIGluY2x1ZGluZyBzZWxmLgorICAgICAgICA8 L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICA8 L3ZhcmlhYmxlbGlzdD4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAg IDx2YXJsaXN0ZW50cnkgaWQ9InByb3RvY29sLW1lc3NhZ2UtZm9ybWF0cy1HU1NFTkNSZXF1ZXN0 Ij4KICAgICA8dGVybT5HU1NFTkNSZXF1ZXN0IChGKTwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IDNmYWM0NmM0MDJiLi5iNzlhYzM4MzUw MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKQEAgLTIxMzQsNyArMjEzNCwzMyBA QCBwcm9jZXNzX3BtX3NodXRkb3duX3JlcXVlc3Qodm9pZCkKIAkJCSAqIGxhdGVyIHN0YXRlLCBk byBub3QgY2hhbmdlIGl0LgogCQkJICovCiAJCQlpZiAocG1TdGF0ZSA9PSBQTV9SVU4gfHwgcG1T dGF0ZSA9PSBQTV9IT1RfU1RBTkRCWSkKKwkJCXsKKwkJCQlkbGlzdF9pdGVyCWl0ZXI7CisKIAkJ CQljb25uc0FsbG93ZWQgPSBmYWxzZTsKKworCQkJCS8qCisJCQkJICogU2lnbmFsIGFsbCBiYWNr ZW5kcyB0byBzZW5kIGEgR29Bd2F5IG1lc3NhZ2UgdG8gdGhlaXIKKwkJCQkgKiBjbGllbnRzLCB0 byBwb2xpdGVseSByZXF1ZXN0IHRoYXQgdGhleSBkaXNjb25uZWN0LgorCQkJCSAqLworCQkJCWRs aXN0X2ZvcmVhY2goaXRlciwgJkFjdGl2ZUNoaWxkTGlzdCkKKwkJCQl7CisJCQkJCVBNQ2hpbGQg ICAgKmJwID0gZGxpc3RfY29udGFpbmVyKFBNQ2hpbGQsIGVsZW0sIGl0ZXIuY3VyKTsKKworCQkJ CQkvKgorCQkJCQkgKiBPbmx5IHNpZ25hbCByZWd1bGFyIGJhY2tlbmRzLCBzaW5jZSB0aG9zZSBh cmUgdGhlIG9uZXMKKwkJCQkJICogdGhhdCBuZWVkIHRvIG5vdGlmeSB0aGVpciBjbGllbnRzIHVz aW5nIGEgR29Bd2F5CisJCQkJCSAqIG1lc3NhZ2UuIEZvbGxvdyB0aGUgc2FtZSBwYXR0ZXJuIGFz IFNpZ25hbENoaWxkcmVuIHRvCisJCQkJCSAqIGNvcnJlY3RseSBkaXN0aW5ndWlzaCBiYWNrZW5k cyBmcm9tIFdBTCBzZW5kZXJzLgorCQkJCQkgKi8KKwkJCQkJaWYgKGJwLT5ia2VuZF90eXBlID09 IEJfQkFDS0VORCAmJgorCQkJCQkJIUlzUG9zdG1hc3RlckNoaWxkV2FsU2VuZGVyKGJwLT5jaGls ZF9zbG90KSkKKwkJCQkJeworCQkJCQkJU2VuZFByb2NTaWduYWwoYnAtPnBpZCwgUFJPQ1NJR19H T0FXQVksCisJCQkJCQkJCQkgICBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwkJCQkJfQorCQkJCX0K KwkJCX0KIAkJCWVsc2UgaWYgKHBtU3RhdGUgPT0gUE1fU1RBUlRVUCB8fCBwbVN0YXRlID09IFBN X1JFQ09WRVJZKQogCQkJewogCQkJCS8qIFRoZXJlIHNob3VsZCBiZSBubyBjbGllbnRzLCBzbyBw cm9jZWVkIHRvIHN0b3AgY2hpbGRyZW4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwu YwppbmRleCA3ZTAxN2M4ZDUzYi4uZDFjOWUyYzQ0ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMKQEAgLTY5Nyw2ICs2OTcsOSBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxl cihTSUdOQUxfQVJHUykKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfTE9HX01FTU9SWV9D T05URVhUKSkKIAkJSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogCisJaWYgKENo ZWNrUHJvY1NpZ25hbChQUk9DU0lHX0dPQVdBWSkpCisJCUhhbmRsZUdvQXdheUludGVycnVwdCgp OworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0Up KQogCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCgpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc2lnbmFsZnVuY3MuYwppbmRleCA4MDBiNjk5ZGUyMS4uNGJkMzFjMzZhNDAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYwpAQCAtMjMsMTUgKzIzLDE3IEBACiAj aW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2ln bmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rv cy5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIAogCiAvKgotICogU2VuZCBhIHNp Z25hbCB0byBhbm90aGVyIGJhY2tlbmQuCisgKiBDaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHVz ZXIgaGFzIHBlcm1pc3Npb24gdG8gc2lnbmFsIHRoZSBiYWNrZW5kIHdpdGgKKyAqIHRoZSBnaXZl biBQSUQuCiAgKgotICogVGhlIHNpZ25hbCBpcyBkZWxpdmVyZWQgaWYgdGhlIHVzZXIgaXMgZWl0 aGVyIGEgc3VwZXJ1c2VyIG9yIHRoZSBzYW1lCisgKiBTZW5kaW5nIGEgc2lnbmFsIGlzIGFsbG93 ZWQgaWYgdGhlIHVzZXIgaXMgZWl0aGVyIGEgc3VwZXJ1c2VyIG9yIHRoZSBzYW1lCiAgKiByb2xl IGFzIHRoZSBiYWNrZW5kIGJlaW5nIHNpZ25hbGVkLiBGb3IgImRhbmdlcm91cyIgc2lnbmFscywg YW4gZXhwbGljaXQKICAqIGNoZWNrIGZvciBzdXBlcnVzZXIgbmVlZHMgdG8gYmUgZG9uZSBwcmlv ciB0byBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCiAgKgpAQCAtNDIsNiArNDQsMTAgQEAKICAqIElu IHRoZSBldmVudCBvZiBhIGdlbmVyYWwgZmFpbHVyZSAocmV0dXJuIGNvZGUgMSksIGEgd2Fybmlu ZyBtZXNzYWdlIHdpbGwKICAqIGJlIGVtaXR0ZWQuIEZvciBwZXJtaXNzaW9uIGVycm9ycywgZG9p bmcgdGhhdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YKICAqIHRoZSBjYWxsZXIuCisgKgorICog VGhlIGNhbGxlciBjYW4gb3B0aW9uYWxseSBvYnRhaW4gYSBwb2ludGVyIHRvIHRoZSBiYWNrZW5k J3MgUEdQUk9DIHN0cnVjdAorICogdXNpbmcgdGhlIHByb2NfcmV0dXJuIGFyZ3VtZW50LiAgSWYg dGhlIGNhbGxlciBkb2Vzbid0IG5lZWQgdGhhdCwgaXQgY2FuCisgKiBwYXNzIE5VTEwuCiAgKi8K ICNkZWZpbmUgU0lHTkFMX0JBQ0tFTkRfU1VDQ0VTUyAwCiAjZGVmaW5lIFNJR05BTF9CQUNLRU5E X0VSUk9SIDEKQEAgLTQ5LDE3ICs1NSwyMiBAQAogI2RlZmluZSBTSUdOQUxfQkFDS0VORF9OT1NV UEVSVVNFUiAzCiAjZGVmaW5lIFNJR05BTF9CQUNLRU5EX05PQVVUT1ZBQyA0CiBzdGF0aWMgaW50 Ci1wZ19zaWduYWxfYmFja2VuZChpbnQgcGlkLCBpbnQgc2lnKQorcGdfY2hlY2tfc2lnbmFsX2Jh Y2tlbmQoaW50IHBpZCwgUEdQUk9DICoqcHJvY19yZXR1cm4pCiB7CisKIAlQR1BST0MJICAgKnBy b2MgPSBCYWNrZW5kUGlkR2V0UHJvYyhwaWQpOwogCisJaWYgKHByb2NfcmV0dXJuICE9IE5VTEwp CisJCSpwcm9jX3JldHVybiA9IHByb2M7CisKIAkvKgogCSAqIEJhY2tlbmRQaWRHZXRQcm9jIHJl dHVybnMgTlVMTCBpZiB0aGUgcGlkIGlzbid0IHZhbGlkOyBidXQgYnkgdGhlIHRpbWUKLQkgKiB3 ZSByZWFjaCBraWxsKCksIGEgcHJvY2VzcyBmb3Igd2hpY2ggd2UgZ2V0IGEgdmFsaWQgcHJvYyBo ZXJlIG1pZ2h0Ci0JICogaGF2ZSB0ZXJtaW5hdGVkIG9uIGl0cyBvd24uICBUaGVyZSdzIG5vIHdh eSB0byBhY3F1aXJlIGEgbG9jayBvbiBhbgotCSAqIGFyYml0cmFyeSBwcm9jZXNzIHRvIHByZXZl bnQgdGhhdC4gQnV0IHNpbmNlIHNvIGZhciBhbGwgdGhlIGNhbGxlcnMgb2YKLQkgKiB0aGlzIG1l Y2hhbmlzbSBpbnZvbHZlIHNvbWUgcmVxdWVzdCBmb3IgZW5kaW5nIHRoZSBwcm9jZXNzIGFueXdh eSwgdGhhdAotCSAqIGl0IG1pZ2h0IGVuZCBvbiBpdHMgb3duIGZpcnN0IGlzIG5vdCBhIHByb2Js ZW0uCisJICogdGhlIGNhbGxlciBhY3R1YWxseSB0cmllcyB0byBzZW5kIGEgc2lnbmFsLCBhIHBy b2Nlc3MgZm9yIHdoaWNoIHdlIGdldAorCSAqIGEgdmFsaWQgcHJvYyBoZXJlIG1pZ2h0IGhhdmUg dGVybWluYXRlZCBvbiBpdHMgb3duLiAgVGhlcmUncyBubyB3YXkgdG8KKwkgKiBhY3F1aXJlIGEg bG9jayBvbiBhbiBhcmJpdHJhcnkgcHJvY2VzcyB0byBwcmV2ZW50IHRoYXQuIEJ1dCBzaW5jZSBz bworCSAqIGZhciBhbGwgdGhlIGNhbGxlcnMgb2YgdGhpcyBtZWNoYW5pc20gaW52b2x2ZSBzb21l IHJlcXVlc3QgZm9yIGVuZGluZworCSAqIHRoZSBwcm9jZXNzIGFueXdheSwgdGhhdCBpdCBtaWdo dCBlbmQgb24gaXRzIG93biBmaXJzdCBpcyBub3QgYQorCSAqIHByb2JsZW0uCiAJICoKIAkgKiBO b3RlIHRoYXQgcHJvYyB3aWxsIGFsc28gYmUgTlVMTCBpZiB0aGUgcGlkIHJlZmVycyB0byBhbiBh dXhpbGlhcnkKIAkgKiBwcm9jZXNzIG9yIHRoZSBwb3N0bWFzdGVyIChuZWl0aGVyIG9mIHdoaWNo IGNhbiBiZSBzaWduYWxlZCB2aWEKQEAgLTEwMCw2ICsxMTEsMjIgQEAgcGdfc2lnbmFsX2JhY2tl bmQoaW50IHBpZCwgaW50IHNpZykKIAkJCSAhaGFzX3ByaXZzX29mX3JvbGUoR2V0VXNlcklkKCks IFJPTEVfUEdfU0lHTkFMX0JBQ0tFTkQpKQogCQlyZXR1cm4gU0lHTkFMX0JBQ0tFTkRfTk9QRVJN SVNTSU9OOwogCisJcmV0dXJuIFNJR05BTF9CQUNLRU5EX1NVQ0NFU1M7Cit9CisKKy8qCisgKiBT ZW5kIGEgc2lnbmFsIHRvIGFub3RoZXIgYmFja2VuZCwgYWZ0ZXIgY2hlY2tpbmcgcGVybWlzc2lv bnMuCisgKgorICogU2VlIHBnX2NoZWNrX3NpZ25hbF9iYWNrZW5kIGZvciByZXR1cm4gY29kZXMu CisgKi8KK3N0YXRpYyBpbnQKK3BnX3NpZ25hbF9iYWNrZW5kKGludCBwaWQsIGludCBzaWcpCit7 CisJaW50CQkJciA9IHBnX2NoZWNrX3NpZ25hbF9iYWNrZW5kKHBpZCwgTlVMTCk7CisKKwlpZiAo ciAhPSBTSUdOQUxfQkFDS0VORF9TVUNDRVNTKQorCQlyZXR1cm4gcjsKKwogCS8qCiAJICogQ2Fu IHRoZSBwcm9jZXNzIHdlIGp1c3QgdmFsaWRhdGVkIGFib3ZlIGVuZCwgZm9sbG93ZWQgYnkgdGhl IHBpZCBiZWluZwogCSAqIHJlY3ljbGVkIGZvciBhIG5ldyBwcm9jZXNzLCBiZWZvcmUgcmVhY2hp bmcgaGVyZT8gIFRoZW4gd2UnZCBiZSB0cnlpbmcKQEAgLTI3Niw2ICszMDMsODIgQEAgcGdfdGVy bWluYXRlX2JhY2tlbmQoUEdfRlVOQ1RJT05fQVJHUykKIAkJUEdfUkVUVVJOX0JPT0wociA9PSBT SUdOQUxfQkFDS0VORF9TVUNDRVNTKTsKIH0KIAorLyoKKyAqIFJlcXVlc3QgYSBiYWNrZW5kIHRv IHNlbmQgYSBHb0F3YXkgbWVzc2FnZSB0byBpdHMgY2xpZW50LCBwb2xpdGVseSBhc2tpbmcKKyAq IGl0IHRvIGRpc2Nvbm5lY3Qgd2hlbiBjb252ZW5pZW50LiBUaGUgY29ubmVjdGlvbiByZW1haW5z IGZ1bGx5IGZ1bmN0aW9uYWwKKyAqIGFmdGVyIHJlY2VpdmluZyBHb0F3YXkuCisgKgorICogSWYg dGltZW91dCBpcyAwLCByZXR1cm5zIHRydWUgYXMgc29vbiBhcyB0aGUgc2lnbmFsIGlzIHNlbnQg c3VjY2Vzc2Z1bGx5LgorICogSWYgdGltZW91dCBpcyBub256ZXJvLCB3YWl0cyB1cCB0byB0aGF0 IG1hbnkgbWlsbGlzZWNvbmRzIGZvciB0aGUgYmFja2VuZAorICogdG8gZXhpdCAoaS5lLiBmb3Ig dGhlIGNsaWVudCB0byBob25vciB0aGUgR29Bd2F5IGFuZCBkaXNjb25uZWN0KS4gUmV0dXJucwor ICogdHJ1ZSBpZiB0aGUgYmFja2VuZCBleGl0cyB3aXRoaW4gdGhlIHRpbWVvdXQsIGZhbHNlICh3 aXRoIGEgd2FybmluZykgaWYgbm90LgorICoKKyAqIFBlcm1pc3Npb24gY2hlY2tpbmcgZm9sbG93 cyB0aGUgc2FtZSBydWxlcyBhcyBwZ19jYW5jZWxfYmFja2VuZC4KKyAqLworRGF0dW0KK3BnX2dv YXdheV9iYWNrZW5kKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJaW50CQkJcGlkOworCWludAkJCXI7 CisJaW50CQkJdGltZW91dDsJCS8qIG1pbGxpc2Vjb25kcyAqLworCVBHUFJPQwkgICAqcHJvYzsK KworCXBpZCA9IFBHX0dFVEFSR19JTlQzMigwKTsKKwl0aW1lb3V0ID0gUEdfR0VUQVJHX0lOVDY0 KDEpOworCisJaWYgKHRpbWVvdXQgPCAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0UpLAorCQkJCSBlcnJtc2coIlwidGlt ZW91dFwiIG11c3Qgbm90IGJlIG5lZ2F0aXZlIikpKTsKKworCXIgPSBwZ19jaGVja19zaWduYWxf YmFja2VuZChwaWQsICZwcm9jKTsKKworCWlmIChyID09IFNJR05BTF9CQUNLRU5EX05PU1VQRVJV U0VSKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5U X1BSSVZJTEVHRSksCisJCQkJIGVycm1zZygicGVybWlzc2lvbiBkZW5pZWQgdG8gc2VuZCBHb0F3 YXkiKSwKKwkJCQkgZXJyZGV0YWlsKCJPbmx5IHJvbGVzIHdpdGggdGhlICVzIGF0dHJpYnV0ZSBt YXkgc2VuZCBHb0F3YXkgdG8gYmFja2VuZHMgb2Ygcm9sZXMgd2l0aCB0aGUgJXMgYXR0cmlidXRl LiIsCisJCQkJCQkgICAiU1VQRVJVU0VSIiwgIlNVUEVSVVNFUiIpKSk7CisKKwlpZiAociA9PSBT SUdOQUxfQkFDS0VORF9OT0FVVE9WQUMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkgZXJybXNnKCJwZXJtaXNzaW9u IGRlbmllZCB0byBzZW5kIEdvQXdheSIpLAorCQkJCSBlcnJkZXRhaWwoIk9ubHkgcm9sZXMgd2l0 aCBwcml2aWxlZ2VzIG9mIHRoZSBcIiVzXCIgcm9sZSBtYXkgc2VuZCBHb0F3YXkgdG8gYXV0b3Zh Y3V1bSB3b3JrZXJzLiIsCisJCQkJCQkgICAicGdfc2lnbmFsX2F1dG92YWN1dW1fd29ya2VyIikp KTsKKworCWlmIChyID09IFNJR05BTF9CQUNLRU5EX05PUEVSTUlTU0lPTikKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJ CSBlcnJtc2coInBlcm1pc3Npb24gZGVuaWVkIHRvIHNlbmQgR29Bd2F5IiksCisJCQkJIGVycmRl dGFpbCgiT25seSByb2xlcyB3aXRoIHByaXZpbGVnZXMgb2YgdGhlIHJvbGUgd2hvc2UgYmFja2Vu ZCBpcyBiZWluZyBzaWduYWxlZCBvciB3aXRoIHByaXZpbGVnZXMgb2YgdGhlIFwiJXNcIiByb2xl IG1heSBzZW5kIEdvQXdheSB0byB0aGlzIGJhY2tlbmQuIiwKKwkJCQkJCSAgICJwZ19zaWduYWxf YmFja2VuZCIpKSk7CisKKwlpZiAociAhPSBTSUdOQUxfQkFDS0VORF9TVUNDRVNTKQorCQlQR19S RVRVUk5fQk9PTChmYWxzZSk7CisKKwlpZiAocHJvYy0+YmFja2VuZFR5cGUgIT0gQl9CQUNLRU5E KQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJtc2coIlBJRCAlZCBpcyBub3QgYSBy ZWd1bGFyIGJhY2tlbmQgcHJvY2VzcyIsIHBpZCkpKTsKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2Up OworCX0KKworCWlmIChTZW5kUHJvY1NpZ25hbChwaWQsIFBST0NTSUdfR09BV0FZLAorCQkJCQkg ICBJTlZBTElEX1BST0NfTlVNQkVSKSAhPSAwKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJ CShlcnJtc2coImNvdWxkIG5vdCBzZW5kIEdvQXdheSBzaWduYWwgdG8gcHJvY2VzcyAlZDogJW0i LCBwaWQpKSk7CisJCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKKwl9CisKKwkvKiBXYWl0IG9ubHkg aWYgYWN0dWFsbHkgcmVxdWVzdGVkICovCisJaWYgKHRpbWVvdXQgPiAwKQorCQlQR19SRVRVUk5f Qk9PTChwZ193YWl0X3VudGlsX3Rlcm1pbmF0aW9uKHBpZCwgdGltZW91dCkpOworCisJUEdfUkVU VVJOX0JPT0wodHJ1ZSk7Cit9CisKIC8qCiAgKiBTaWduYWwgdG8gcmVsb2FkIHRoZSBkYXRhYmFz ZSBjb25maWd1cmF0aW9uCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9iYWNrZW5k X3N0YXJ0dXAuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvYmFja2VuZF9zdGFydHVwLmMKaW5kZXggNWFi ZjI3NmM4OTguLjFiYmQ1ZGViNDQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL2JhY2tl bmRfc3RhcnR1cC5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvYmFja2VuZF9zdGFydHVwLmMKQEAg LTc3OSwxMSArNzc5LDI0IEBAIFByb2Nlc3NTdGFydHVwUGFja2V0KFBvcnQgKnBvcnQsIGJvb2wg c3NsX2RvbmUsIGJvb2wgZ3NzX2RvbmUpCiAJCQl7CiAJCQkJLyoKIAkJCQkgKiBBbnkgb3B0aW9u IGJlZ2lubmluZyB3aXRoIF9wcV8uIGlzIHJlc2VydmVkIGZvciB1c2UgYXMgYQotCQkJCSAqIHBy b3RvY29sLWxldmVsIG9wdGlvbiwgYnV0IGF0IHByZXNlbnQgbm8gc3VjaCBvcHRpb25zIGFyZQot CQkJCSAqIGRlZmluZWQuCisJCQkJICogcHJvdG9jb2wtbGV2ZWwgb3B0aW9uLgogCQkJCSAqLwot CQkJCXVucmVjb2duaXplZF9wcm90b2NvbF9vcHRpb25zID0KLQkJCQkJbGFwcGVuZCh1bnJlY29n bml6ZWRfcHJvdG9jb2xfb3B0aW9ucywgcHN0cmR1cChuYW1lcHRyKSk7CisJCQkJaWYgKHN0cmNt cChuYW1lcHRyLCAiX3BxXy5nb2F3YXkiKSA9PSAwKQorCQkJCXsKKwkJCQkJLyogQ2xpZW50IHdh bnRzIHRvIHJlY2VpdmUgR29Bd2F5IG1lc3NhZ2VzLiAqLworCQkJCQlpZiAoc3RyY21wKHZhbHB0 ciwgIjEiKSAhPSAwKQorCQkJCQkJZXJlcG9ydChGQVRBTCwKKwkJCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIHZhbHVl IGZvciBwcm90b2NvbCBvcHRpb24gXCIlc1wiOiBcIiVzXCIiLAorCQkJCQkJCQkJCW5hbWVwdHIs IHZhbHB0ciksCisJCQkJCQkJCSBlcnJoaW50KCJWYWxpZCB2YWx1ZXMgYXJlOiBcIjFcIi4iKSkp OworCQkJCQlwb3J0LT5nb2F3YXlfbmVnb3RpYXRlZCA9IHRydWU7CisJCQkJfQorCQkJCWVsc2UK KwkJCQl7CisJCQkJCXVucmVjb2duaXplZF9wcm90b2NvbF9vcHRpb25zID0KKwkJCQkJCWxhcHBl bmQodW5yZWNvZ25pemVkX3Byb3RvY29sX29wdGlvbnMsIHBzdHJkdXAobmFtZXB0cikpOworCQkJ CX0KIAkJCX0KIAkJCWVsc2UKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCBiMzU2MzExMzIxOS4u YzFkZjg0Y2M1NDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysg Yi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTQyLDggKzQyLDEwIEBACiAjaW5jbHVk ZSAiY29tbW9uL3BnX3BybmcuaCIKICNpbmNsdWRlICJqaXQvaml0LmgiCiAjaW5jbHVkZSAibGli cHEvbGlicHEuaCIKKyNpbmNsdWRlICJsaWJwcS9wcWNvbW0uaCIKICNpbmNsdWRlICJsaWJwcS9w cWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCisjaW5jbHVkZSAibGlicHEv cHJvdG9jb2wuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm1iL3N0cmlu Z2luZm9fbWIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTkzLDYgKzk1LDE0IEBAIGNv bnN0IGNoYXIgKmRlYnVnX3F1ZXJ5X3N0cmluZzsgLyogY2xpZW50LXN1cHBsaWVkIHF1ZXJ5IHN0 cmluZyAqLwogLyogTm90ZTogd2hlcmVUb1NlbmRPdXRwdXQgaXMgaW5pdGlhbGl6ZWQgZm9yIHRo ZSBib290c3RyYXAvc3RhbmRhbG9uZSBjYXNlICovCiBDb21tYW5kRGVzdCB3aGVyZVRvU2VuZE91 dHB1dCA9IERlc3REZWJ1ZzsKIAorLyoKKyAqIFRyYWNrIHdoZXRoZXIgd2UndmUgYmVlbiBhc2tl ZCB0byBzZW5kIEdvQXdheSBhbmQgd2hldGhlciB3ZSd2ZSBzZW50IGl0LgorICogR29Bd2F5UGVu ZGluZyBpcyBzZXQgYnkgdGhlIFBST0NTSUdfR09BV0FZIHNpZ25hbCBoYW5kbGVyLgorICogR29B d2F5U2VudCB0cmFja3Mgd2hldGhlciB3ZSd2ZSBhbHJlYWR5IHNlbnQgdGhlIEdvQXdheSBtZXNz YWdlLgorICovCitzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IEdvQXdheVBlbmRpbmcgPSBm YWxzZTsKK3N0YXRpYyBib29sIEdvQXdheVNlbnQgPSBmYWxzZTsKKwogLyogZmxhZyBmb3IgbG9n Z2luZyBlbmQgb2Ygc2Vzc2lvbiAqLwogYm9vbAkJTG9nX2Rpc2Nvbm5lY3Rpb25zID0gZmFsc2U7 CiAKQEAgLTUwOCw2ICs1MTgsMjAgQEAgUHJvY2Vzc0NsaWVudFJlYWRJbnRlcnJ1cHQoYm9vbCBi bG9ja2VkKQogCQkvKiBDaGVjayBmb3IgZ2VuZXJhbCBpbnRlcnJ1cHRzIHRoYXQgYXJyaXZlZCBi ZWZvcmUvd2hpbGUgcmVhZGluZyAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCisJCS8q IFNlbmQgR29Bd2F5IG1lc3NhZ2UgaWYgcmVxdWVzdGVkICovCisJCWlmIChHb0F3YXlQZW5kaW5n ICYmICFHb0F3YXlTZW50ICYmCisJCQl3aGVyZVRvU2VuZE91dHB1dCA9PSBEZXN0UmVtb3RlICYm CisJCQlNeVByb2NQb3J0ICYmIE15UHJvY1BvcnQtPmdvYXdheV9uZWdvdGlhdGVkKQorCQl7CisJ CQlTdHJpbmdJbmZvRGF0YSBidWY7CisKKwkJCXBxX2JlZ2lubWVzc2FnZSgmYnVmLCBQcU1zZ19H b0F3YXkpOworCQkJcHFfZW5kbWVzc2FnZSgmYnVmKTsKKwkJCXBxX2ZsdXNoKCk7CisKKwkJCUdv QXdheVNlbnQgPSB0cnVlOworCQl9CisKIAkJLyogUHJvY2VzcyBzaW52YWwgY2F0Y2h1cCBpbnRl cnJ1cHRzLCBpZiBhbnkgKi8KIAkJaWYgKGNhdGNodXBJbnRlcnJ1cHRQZW5kaW5nKQogCQkJUHJv Y2Vzc0NhdGNodXBJbnRlcnJ1cHQoKTsKQEAgLTMwNjcsNiArMzA5MSwxOCBAQCBGbG9hdEV4Y2Vw dGlvbkhhbmRsZXIoU0lHTkFMX0FSR1MpCiAJCQkJCSAgICJpbnZhbGlkIG9wZXJhdGlvbiwgc3Vj aCBhcyBkaXZpc2lvbiBieSB6ZXJvLiIpKSk7CiB9CiAKKy8qCisgKiBUZWxsIHRoZSBuZXh0IFBy b2Nlc3NDbGllbnRSZWFkSW50ZXJydXB0KCkgY2FsbCB0byBzZW5kIGEgR29Bd2F5IG1lc3NhZ2Ug dG8KKyAqIHRoZSBjbGllbnQuICBSdW5zIGluIGEgU0lHVVNSMSBoYW5kbGVyLgorICovCit2b2lk CitIYW5kbGVHb0F3YXlJbnRlcnJ1cHQodm9pZCkKK3sKKwlHb0F3YXlQZW5kaW5nID0gdHJ1ZTsK KwlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwkvKiBsYXRjaCB3aWxsIGJlIHNldCBieSBwcm9j c2lnbmFsX3NpZ3VzcjFfaGFuZGxlciAqLworfQorCiAvKgogICogVGVsbCB0aGUgbmV4dCBDSEVD S19GT1JfSU5URVJSVVBUUygpIHRvIHByb2Nlc3MgcmVjb3ZlcnkgY29uZmxpY3RzLiAgUnVucwog ICogaW4gYSBTSUdVU1IxIGhhbmRsZXIuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29tbW9u LmMgYi9zcmMvYmluL3BzcWwvY29tbW9uLmMKaW5kZXggMmVhZGQzOTFhOWMuLjRlOTllZDY5ODQx IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbW9uLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Nv bW1vbi5jCkBAIC03MzksNiArNzM5LDcgQEAgUFNRTGV4ZWNXYXRjaChjb25zdCBjaGFyICpxdWVy eSwgY29uc3QgcHJpbnRRdWVyeU9wdCAqb3B0LCBGSUxFICpwcmludFF1ZXJ5Rm91dCwKIHN0YXRp YyB2b2lkCiBQcmludE5vdGlmaWNhdGlvbnModm9pZCkKIHsKKwlzdGF0aWMgYm9vbCBnb2F3YXlf cmVwb3J0ZWQgPSBmYWxzZTsKIAlQR25vdGlmeSAgICpub3RpZnk7CiAKIAlQUWNvbnN1bWVJbnB1 dChwc2V0LmRiKTsKQEAgLTc1NSw2ICs3NTYsMTIgQEAgUHJpbnROb3RpZmljYXRpb25zKHZvaWQp CiAJCVBRZnJlZW1lbShub3RpZnkpOwogCQlQUWNvbnN1bWVJbnB1dChwc2V0LmRiKTsKIAl9CisK KwlpZiAoIWdvYXdheV9yZXBvcnRlZCAmJiBQUWdvQXdheVJlY2VpdmVkKHBzZXQuZGIpKQorCXsK KwkJcGdfbG9nX2luZm8oIlNlcnZlciBzZW50IEdvQXdheSwgcmVxdWVzdGluZyBkaXNjb25uZWN0 IHdoZW4gY29udmVuaWVudC4iKTsKKwkJZ29hd2F5X3JlcG9ydGVkID0gdHJ1ZTsKKwl9CiB9CiAK IApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wc3FsL21l c29uLmJ1aWxkCmluZGV4IDkyMmIyODQ1MjY3Li4wNDdiNDBjYzQwZSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wc3FsL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcHNxbC9tZXNvbi5idWlsZApAQCAt NzgsNiArNzgsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMTBfdGFiX2NvbXBsZXRpb24ucGwn LAogICAgICAgJ3QvMDIwX2NhbmNlbC5wbCcsCiAgICAgICAndC8wMzBfcGFnZXIucGwnLAorICAg ICAgJ3QvMDQwX2dvYXdheS5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy9i aW4vcHNxbC90LzA0MF9nb2F3YXkucGwgYi9zcmMvYmluL3BzcWwvdC8wNDBfZ29hd2F5LnBsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNTM2NTMzMDhiZgotLS0gL2Rl di9udWxsCisrKyBiL3NyYy9iaW4vcHNxbC90LzA0MF9nb2F3YXkucGwKQEAgLTAsMCArMSw0NiBA QAorCisjIENvcHlyaWdodCAoYykgMjAyMS0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwor Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKK3VzZSBUZXN0OjpNb3JlOwordXNlIFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7CisKK215 ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdtYWluJyk7Ciskbm9kZS0+ aW5pdDsKKyRub2RlLT5zdGFydDsKKworbXkgJHBzcWwgPSAkbm9kZS0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycpOworCisjIENvbmZpcm0gY29ubmVjdGlvbiB3b3JrcworbXkgJHJlc3VsdCA9 ICRwc3FsLT5xdWVyeV9zYWZlKCJTRUxFQ1QgJ2JlZm9yZV9nb2F3YXknIik7CitsaWtlKCRyZXN1 bHQsIHFyL2JlZm9yZV9nb2F3YXkvLCAnY29ubmVjdGlvbiB3b3JrcyBiZWZvcmUgc21hcnQgc2h1 dGRvd24nKTsKKworIyBJbml0aWF0ZSBzbWFydCBzaHV0ZG93biB3aXRob3V0IHdhaXRpbmcgZm9y IGl0IHRvIGNvbXBsZXRlCiskbm9kZS0+Y29tbWFuZF9vaygKKwlbICdwZ19jdGwnLCAnc3RvcCcs ICctRCcsICRub2RlLT5kYXRhX2RpciwgJy1tJywgJ3NtYXJ0JywgJy0tbm8td2FpdCcgXSwKKwkn cGdfY3RsIHNtYXJ0IHNodXRkb3duJyk7CisKKyMgVGhlIGJhY2tlbmQgc2VuZHMgR29Bd2F5IG9u Y2UgaXQgcHJvY2Vzc2VzIHRoZSBzbWFydCBzaHV0ZG93biBzaWduYWwuCisjIFBvbGwgd2l0aCBx dWVyaWVzIHVudGlsIHBzcWwgcmVwb3J0cyBpdC4KK215ICRzYXdfZ29hd2F5ID0gMDsKK2ZvciAo bXkgJGkgPSAwOyAkaSA8IDEwMDsgJGkrKykKK3sKKwlteSAkb3V0ID0gJHBzcWwtPnF1ZXJ5KCJT RUxFQ1QgJ2FmdGVyX2dvYXdheSciKTsKKwlpZiAoJHBzcWwtPntzdGRlcnJ9ID1+IC9TZXJ2ZXIg c2VudCBHb0F3YXksIHJlcXVlc3RpbmcgZGlzY29ubmVjdCB3aGVuIGNvbnZlbmllbnQvKQorCXsK KwkJJHNhd19nb2F3YXkgPSAxOworCQkjIFRoZSBxdWVyeSBzaG91bGQgc3RpbGwgaGF2ZSBzdWNj ZWVkZWQKKwkJbGlrZSgkb3V0LCBxci9hZnRlcl9nb2F3YXkvLCAncXVlcnkgc3RpbGwgd29ya3Mg YWZ0ZXIgR29Bd2F5Jyk7CisJCWxhc3Q7CisJfQorCXVzbGVlcCg1MF8wMDApOworfQorb2soJHNh d19nb2F3YXksICdwc3FsIHJlcG9ydGVkIEdvQXdheSBub3RpY2UgZHVyaW5nIHNtYXJ0IHNodXRk b3duJyk7CisKKyRwc3FsLT5xdWl0OworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CmluZGV4IDg0ZTdhZGRlMGU1Li5lODU4NGEzZTQ1OCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CkBAIC02NzY1LDYgKzY3NjUsMTEgQEAKICAgcHJvYXJndHlwZXMgPT4gJ2ludDQgaW50 OCcsIHByb2FyZ25hbWVzID0+ICd7cGlkLHRpbWVvdXR9JywKICAgcHJvYXJnZGVmYXVsdHMgPT4g J3swfScsCiAgIHByb3NyYyA9PiAncGdfdGVybWluYXRlX2JhY2tlbmQnIH0sCit7IG9pZCA9PiAn OTAxOCcsIGRlc2NyID0+ICdyZXF1ZXN0IGEgc2VydmVyIHByb2Nlc3MgdG8gc2VuZCBHb0F3YXkg dG8gaXRzIGNsaWVudCcsCisgIHByb25hbWUgPT4gJ3BnX2dvYXdheV9iYWNrZW5kJywgcHJvdm9s YXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICdib29sJywKKyAgcHJvYXJndHlwZXMgPT4gJ2lu dDQgaW50OCcsIHByb2FyZ25hbWVzID0+ICd7cGlkLHRpbWVvdXR9JywKKyAgcHJvYXJnZGVmYXVs dHMgPT4gJ3swfScsCisgIHByb3NyYyA9PiAncGdfZ29hd2F5X2JhY2tlbmQnIH0sCiB7IG9pZCA9 PiAnMjE3MicsIGRlc2NyID0+ICdwcmVwYXJlIGZvciB0YWtpbmcgYW4gb25saW5lIGJhY2t1cCcs CiAgIHByb25hbWUgPT4gJ3BnX2JhY2t1cF9zdGFydCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJv cGFyYWxsZWwgPT4gJ3InLAogICBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9hcmd0eXBlcyA9 PiAndGV4dCBib29sJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLmgg Yi9zcmMvaW5jbHVkZS9saWJwcS9saWJwcS1iZS5oCmluZGV4IDkyMWIyZGFhNGZmLi5iODc2OTQx MmM3MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEvbGlicHEtYmUuaAorKysgYi9zcmMv aW5jbHVkZS9saWJwcS9saWJwcS1iZS5oCkBAIC0yMDIsNiArMjAyLDExIEBAIHR5cGVkZWYgc3Ry dWN0IFBvcnQKIAl2b2lkCSAgICpnc3M7CiAjZW5kaWYKIAorCS8qCisJICogUHJvdG9jb2wgZXh0 ZW5zaW9ucy4KKwkgKi8KKwlib29sCQlnb2F3YXlfbmVnb3RpYXRlZDsJLyogY2xpZW50IHN1cHBv cnRzIEdvQXdheSBtZXNzYWdlICovCisKIAkvKgogCSAqIFNTTCBzdHJ1Y3R1cmVzLgogCSAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGlicHEvcHJvdG9jb2wuaCBiL3NyYy9pbmNsdWRlL2xp YnBxL3Byb3RvY29sLmgKaW5kZXggZWFlOGYwZTcyMzguLmZkM2MxOTVkYWEyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9saWJwcS9wcm90b2NvbC5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL3By b3RvY29sLmgKQEAgLTUzLDYgKzUzLDcgQEAKICNkZWZpbmUgUHFNc2dfRnVuY3Rpb25DYWxsUmVz cG9uc2UJJ1YnCiAjZGVmaW5lIFBxTXNnX0NvcHlCb3RoUmVzcG9uc2UJCSdXJwogI2RlZmluZSBQ cU1zZ19SZWFkeUZvclF1ZXJ5CQkJJ1onCisjZGVmaW5lIFBxTXNnX0dvQXdheQkJCQknZycKICNk ZWZpbmUgUHFNc2dfTm9EYXRhCQkJCSduJwogI2RlZmluZSBQcU1zZ19Qb3J0YWxTdXNwZW5kZWQJ CSdzJwogI2RlZmluZSBQcU1zZ19QYXJhbWV0ZXJEZXNjcmlwdGlvbgkndCcKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9w cm9jc2lnbmFsLmgKaW5kZXggMzQ4ZmJhNTNhOTMuLmVjYmM2MmI3ZmQ3IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2NzaWduYWwuaApAQCAtMzksOSArMzksMTAgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVCwJLyogYmFja2VuZCBpcyBibG9ja2luZyByZWNvdmVyeSwgY2hlY2sK IAkJCQkJCQkJICogUEdQUk9DLT5wZW5kaW5nUmVjb3ZlcnlDb25mbGljdHMgZm9yIHRoZQogCQkJ CQkJCQkgKiByZWFzb24gKi8KKwlQUk9DU0lHX0dPQVdBWSwJCQkJLyogcmVxdWVzdCBiYWNrZW5k IHRvIHNlbmQgR29Bd2F5IHRvIGNsaWVudCAqLwogfSBQcm9jU2lnbmFsUmVhc29uOwogCi0jZGVm aW5lIE5VTV9QUk9DU0lHTkFMUyAoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVCArIDEpCisjZGVm aW5lIE5VTV9QUk9DU0lHTkFMUyAoUFJPQ1NJR19HT0FXQVkgKyAxKQogCiB0eXBlZGVmIGVudW0K IHsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCBiL3NyYy9pbmNsdWRl L3Rjb3AvdGNvcHByb3QuaAppbmRleCA1YmM1YmNmYjIwZC4uYTM2NTQ3YTExZjcgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3Rj b3Bwcm90LmgKQEAgLTc0LDYgKzc0LDcgQEAgZXh0ZXJuIHZvaWQgZGllKFNJR05BTF9BUkdTKTsK IHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIHF1aWNrZGllKFNJR05BTF9BUkdTKTsKIGV4dGVybiB2 b2lkIFN0YXRlbWVudENhbmNlbEhhbmRsZXIoU0lHTkFMX0FSR1MpOwogcGdfbm9yZXR1cm4gZXh0 ZXJuIHZvaWQgRmxvYXRFeGNlcHRpb25IYW5kbGVyKFNJR05BTF9BUkdTKTsKK2V4dGVybiB2b2lk IEhhbmRsZUdvQXdheUludGVycnVwdCh2b2lkKTsKIGV4dGVybiB2b2lkIEhhbmRsZVJlY292ZXJ5 Q29uZmxpY3RJbnRlcnJ1cHQodm9pZCk7CiBleHRlcm4gdm9pZCBQcm9jZXNzQ2xpZW50UmVhZElu dGVycnVwdChib29sIGJsb2NrZWQpOwogZXh0ZXJuIHZvaWQgUHJvY2Vzc0NsaWVudFdyaXRlSW50 ZXJydXB0KGJvb2wgYmxvY2tlZCk7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9l eHBvcnRzLnR4dCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0CmluZGV4IDFlM2Q1 YmQ1ODY3Li5mNTdhYWU0NmI2NSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhw b3J0cy50eHQKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQKQEAgLTIxMSwz ICsyMTEsNCBAQCBQUWRlZmF1bHRBdXRoRGF0YUhvb2sgICAgIDIwOAogUFFmdWxsUHJvdG9jb2xW ZXJzaW9uICAgICAyMDkKIGFwcGVuZFBRRXhwQnVmZmVyVkEgICAgICAgMjEwCiBQUWdldFRocmVh ZExvY2sgICAgICAgICAgIDIxMQorUFFnb0F3YXlSZWNlaXZlZCAgICAgICAgICAyMTIKZGlmZiAt LWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2ZlLWNvbm5lY3QuYwppbmRleCBkYjliNGM4ZWRiZi4uNGQ4MWQ1ZjAzYmIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYworKysgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1jb25uZWN0LmMKQEAgLTcwMSw2ICs3MDEsNyBAQCBwcURyb3BTZXJ2ZXJE YXRhKFBHY29ubiAqY29ubikKIAljb25uLT5wYXNzd29yZF9uZWVkZWQgPSBmYWxzZTsKIAljb25u LT5nc3NhcGlfdXNlZCA9IGZhbHNlOwogCWNvbm4tPndyaXRlX2ZhaWxlZCA9IGZhbHNlOworCWNv bm4tPmdvYXdheV9yZWNlaXZlZCA9IGZhbHNlOwogCWZyZWUoY29ubi0+d3JpdGVfZXJyX21zZyk7 CiAJY29ubi0+d3JpdGVfZXJyX21zZyA9IE5VTEw7CiAJY29ubi0+b2F1dGhfd2FudF9yZXRyeSA9 IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jIGIvc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jCmluZGV4IDIwM2QzODhiZGJmLi5iYzFkOTUzMjRl ZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jCisrKyBiL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYwpAQCAtMjcwMiw2ICsyNzAyLDMzIEBAIFBRbm90aWZp ZXMoUEdjb25uICpjb25uKQogCXJldHVybiBldmVudDsKIH0KIAorLyoKKyAqIFBRZ29Bd2F5UmVj ZWl2ZWQKKyAqCSAgcmV0dXJucyAxIGlmIGEgR29Bd2F5IG1lc3NhZ2UgaGFzIGJlZW4gcmVjZWl2 ZWQgZnJvbSB0aGUgc2VydmVyCisgKgkgIHJldHVybnMgMCBpZiBub3QKKyAqCisgKiBOb3RlIHRo YXQgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZWFkIGFueSBuZXcgZGF0YSBmcm9tIHRoZSBzb2Nr ZXQ7CisgKiBjYWxsZXIgc2hvdWxkIGNhbGwgUFFjb25zdW1lSW5wdXQoKSBmaXJzdCBpZiB0aGV5 IHdhbnQgdG8gZW5zdXJlCisgKiBhbGwgYXZhaWxhYmxlIGRhdGEgaGFzIGJlZW4gcmVhZC4KKyAq LworaW50CitQUWdvQXdheVJlY2VpdmVkKFBHY29ubiAqY29ubikKK3sKKwlpZiAoIWNvbm4pCisJ CXJldHVybiAwOworCisJaWYgKGNvbm4tPmdvYXdheV9yZWNlaXZlZCkKKwkJcmV0dXJuIDE7CisK KwkvKgorCSAqIFBhcnNlIGFueSBhdmFpbGFibGUgZGF0YSB0byBzZWUgaWYgYSBHb0F3YXkgbWVz c2FnZSBoYXMgYXJyaXZlZC4KKwkgKi8KKwlwYXJzZUlucHV0KGNvbm4pOworCisJcmV0dXJuIGNv bm4tPmdvYXdheV9yZWNlaXZlZCA/IDEgOiAwOworfQorCisKIC8qCiAgKiBQUXB1dENvcHlEYXRh IC0gc2VuZCBzb21lIGRhdGEgdG8gdGhlIGJhY2tlbmQgZHVyaW5nIENPUFkgSU4gb3IgQ09QWSBC T1RICiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtcHJvdG9jb2wzLmMg Yi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYwppbmRleCA4YzFmZGE1Y2FmMC4u ZDA5MDAyYTIyYWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29s My5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jCkBAIC0xMzQsOCAr MTM0LDggQEAgcHFQYXJzZUlucHV0MyhQR2Nvbm4gKmNvbm4pCiAJCX0KIAogCQkvKgotCQkgKiBO T1RJRlkgYW5kIE5PVElDRSBtZXNzYWdlcyBjYW4gaGFwcGVuIGluIGFueSBzdGF0ZTsgYWx3YXlz IHByb2Nlc3MKLQkJICogdGhlbSByaWdodCBhd2F5LgorCQkgKiBOT1RJRlkgYW5kIE5PVElDRSBh bmQgR29Bd2F5IG1lc3NhZ2VzIGNhbiBoYXBwZW4gaW4gYW55IHN0YXRlOworCQkgKiBhbHdheXMg cHJvY2VzcyB0aGVtIHJpZ2h0IGF3YXkuCiAJCSAqCiAJCSAqIE1vc3Qgb3RoZXIgbWVzc2FnZXMg c2hvdWxkIG9ubHkgYmUgcHJvY2Vzc2VkIHdoaWxlIGluIEJVU1kgc3RhdGUuCiAJCSAqIChJbiBw YXJ0aWN1bGFyLCBpbiBSRUFEWSBzdGF0ZSB3ZSBob2xkIG9mZiBmdXJ0aGVyIHBhcnNpbmcgdW50 aWwKQEAgLTE1OSw2ICsxNTksMTAgQEAgcHFQYXJzZUlucHV0MyhQR2Nvbm4gKmNvbm4pCiAJCQlp ZiAocHFHZXRFcnJvck5vdGljZTMoY29ubiwgZmFsc2UpKQogCQkJCXJldHVybjsKIAkJfQorCQll bHNlIGlmIChpZCA9PSBQcU1zZ19Hb0F3YXkpCisJCXsKKwkJCWNvbm4tPmdvYXdheV9yZWNlaXZl ZCA9IHRydWU7CisJCX0KIAkJZWxzZSBpZiAoY29ubi0+YXN5bmNTdGF0dXMgIT0gUEdBU1lOQ19C VVNZKQogCQl7CiAJCQkvKiBJZiBub3QgSURMRSBzdGF0ZSwganVzdCB3YWl0IC4uLiAqLwpAQCAt MTQ0Niw2ICsxNDUwLDcgQEAgcHFHZXROZWdvdGlhdGVQcm90b2NvbFZlcnNpb24zKFBHY29ubiAq Y29ubikKIAlpbnQJCQludW07CiAJYm9vbAkJZm91bmRfdGVzdF9wcm90b2NvbF9uZWdvdGlhdGlv bjsKIAlib29sCQlleHBlY3RfdGVzdF9wcm90b2NvbF9uZWdvdGlhdGlvbjsKKwlib29sCQlyZXF1 ZXN0ZWRfZ29hd2F5ID0gY29ubi0+cHZlcnNpb24gPj0gUEdfUFJPVE9DT0woMywgMik7CiAKIAkv KgogCSAqIER1cmluZyAxOWJldGEgb25seSwgaWYgcHJvdG9jb2wgZ3JlYXNlIGlzIGluIHVzZSwg YXNzdW1lIHRoYXQgaXQncyB0aGUKQEAgLTE1MjEsOCArMTUyNiw3IEBAIHBxR2V0TmVnb3RpYXRl UHJvdG9jb2xWZXJzaW9uMyhQR2Nvbm4gKmNvbm4pCiAJY29ubi0+cHZlcnNpb24gPSB0aGVpcl92 ZXJzaW9uOwogCiAJLyoKLQkgKiBDaGVjayB0aGF0IGFsbCBleHBlY3RlZCB1bnN1cHBvcnRlZCBw YXJhbWV0ZXJzIGFyZSByZXBvcnRlZCBieSB0aGUKLQkgKiBzZXJ2ZXIuCisJICogUHJvY2VzcyB0 aGUgbGlzdCBvZiB1bnN1cHBvcnRlZCBwcm90b2NvbCBleHRlbnNpb25zLgogCSAqLwogCWZvdW5k X3Rlc3RfcHJvdG9jb2xfbmVnb3RpYXRpb24gPSBmYWxzZTsKIAlleHBlY3RfdGVzdF9wcm90b2Nv bF9uZWdvdGlhdGlvbiA9IChjb25uLT5tYXhfcHZlcnNpb24gPT0gUEdfUFJPVE9DT0xfR1JFQVNF KTsKQEAgLTE1MzksMTIgKzE1NDMsMjMgQEAgcHFHZXROZWdvdGlhdGVQcm90b2NvbFZlcnNpb24z KFBHY29ubiAqY29ubikKIAkJCWdvdG8gZmFpbHVyZTsKIAkJfQogCi0JCS8qIENoZWNrIGlmIHRo aXMgaXMgdGhlIGV4cGVjdGVkIHRlc3QgcGFyYW1ldGVyICovCisJCS8qCisJCSAqIEhhbmRsZSBw cm90b2NvbCBleHRlbnNpb25zIHRoYXQgd2UgcmVxdWVzdGVkLiBFeHRlbnNpb25zIHRoYXQgd2Vy ZQorCQkgKiBub3QgcmVxdWVzdGVkIGJ5IHVzIGFyZSBhbiBlcnJvci4KKwkJICovCiAJCWlmIChl eHBlY3RfdGVzdF9wcm90b2NvbF9uZWdvdGlhdGlvbiAmJgogCQkJc3RyY21wKGNvbm4tPndvcmtC dWZmZXIuZGF0YSwgIl9wcV8udGVzdF9wcm90b2NvbF9uZWdvdGlhdGlvbiIpID09IDApCiAJCXsK IAkJCWZvdW5kX3Rlc3RfcHJvdG9jb2xfbmVnb3RpYXRpb24gPSB0cnVlOwogCQl9CisJCWVsc2Ug aWYgKHJlcXVlc3RlZF9nb2F3YXkgJiYgc3RyY21wKGNvbm4tPndvcmtCdWZmZXIuZGF0YSwgIl9w cV8uZ29hd2F5IikgPT0gMCkKKwkJeworCQkJLyoKKwkJCSAqIFNlcnZlciBkb2Vzbid0IHN1cHBv cnQgR29Bd2F5LCB0aGF0J3MgZmluZS4gSXQgd2lsbCBzaW1wbHkgbmV2ZXIKKwkJCSAqIHNlbmQg dGhlIG1lc3NhZ2UuCisJCQkgKi8KKwkJCWNvbnRpbnVlOworCQl9CiAJCWVsc2UKIAkJewogCQkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInJlY2VpdmVkIGludmFsaWQgcHJvdG9jb2wg bmVnb3RpYXRpb24gbWVzc2FnZTogc2VydmVyIHJlcG9ydGVkIGFuIHVuc3VwcG9ydGVkIHBhcmFt ZXRlciB0aGF0IHdhcyBub3QgcmVxdWVzdGVkIChcIiVzXCIpIiwKQEAgLTE5MDUsNiArMTkyMCw5 IEBAIGdldENvcHlEYXRhTWVzc2FnZShQR2Nvbm4gKmNvbm4pCiAJCQkJaWYgKGdldFBhcmFtZXRl clN0YXR1cyhjb25uKSkKIAkJCQkJcmV0dXJuIDA7CiAJCQkJYnJlYWs7CisJCQljYXNlIFBxTXNn X0dvQXdheToKKwkJCQljb25uLT5nb2F3YXlfcmVjZWl2ZWQgPSB0cnVlOworCQkJCWJyZWFrOwog CQkJY2FzZSBQcU1zZ19Db3B5RGF0YToKIAkJCQlyZXR1cm4gbXNnTGVuZ3RoOwogCQkJY2FzZSBQ cU1zZ19Db3B5RG9uZToKQEAgLTIzOTgsNiArMjQxNiw5IEBAIHBxRnVuY3Rpb25DYWxsMyhQR2Nv bm4gKmNvbm4sIE9pZCBmbmlkLAogCQkJCWlmIChnZXRQYXJhbWV0ZXJTdGF0dXMoY29ubikpCiAJ CQkJCWNvbnRpbnVlOwogCQkJCWJyZWFrOworCQkJY2FzZSBQcU1zZ19Hb0F3YXk6CisJCQkJY29u bi0+Z29hd2F5X3JlY2VpdmVkID0gdHJ1ZTsKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJ LyogVGhlIGJhY2tlbmQgdmlvbGF0ZXMgdGhlIHByb3RvY29sLiAqLwogCQkJCWxpYnBxX2FwcGVu ZF9jb25uX2Vycm9yKGNvbm4sICJwcm90b2NvbCBlcnJvcjogaWQ9MHgleCIsIGlkKTsKQEAgLTI1 MzEsNiArMjU1MiwxNCBAQCBidWlsZF9zdGFydHVwX3BhY2tldChjb25zdCBQR2Nvbm4gKmNvbm4s IGNoYXIgKnBhY2tldCwKIAkJfQogCX0KIAorCS8qCisJICogUmVxdWVzdCBwcm90b2NvbCBleHRl bnNpb25zLiBPbmx5IGRvIHRoaXMgZm9yIHByb3RvY29sIHZlcnNpb24gMy4yIGFuZAorCSAqIGxh dGVyLCB0byBhdm9pZCBjb25mdXNpbmcgb2xkIHByb3hpZXMgdGhhdCBkb24ndCB1bmRlcnN0YW5k IF9wcV8uKgorCSAqIG9wdGlvbnMuCisJICovCisJaWYgKGNvbm4tPnB2ZXJzaW9uID49IFBHX1BS T1RPQ09MKDMsIDIpKQorCQlBRERfU1RBUlRVUF9PUFRJT04oIl9wcV8uZ29hd2F5IiwgIjEiKTsK KwogCS8qIEFkZCB0cmFpbGluZyB0ZXJtaW5hdG9yICovCiAJaWYgKHBhY2tldCkKIAkJcGFja2V0 W3BhY2tldF9sZW5dID0gJ1wwJzsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xp YnBxLWZlLmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCmluZGV4IGYwNmU3YTk3 MmMzLi5kMWE2ZGQ1NDQwNyAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEt ZmUuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCkBAIC02OCw2ICs2OCw4 IEBAIGV4dGVybiAiQyIKICNkZWZpbmUgTElCUFFfSEFTX0dFVF9USFJFQURfTE9DSyAxCiAvKiBJ bmRpY2F0ZXMgcHJlc2VuY2Ugb2YgdGhlIFBRQVVUSERBVEFfT0FVVEhfQkVBUkVSX1RPS0VOX1Yy IGF1dGhkYXRhIGhvb2sgKi8KICNkZWZpbmUgTElCUFFfSEFTX09BVVRIX0JFQVJFUl9UT0tFTl9W MiAxCisvKiBJbmRpY2F0ZXMgcHJlc2VuY2Ugb2YgUFFnb0F3YXlSZWNlaXZlZCAqLworI2RlZmlu ZSBMSUJQUV9IQVNfR09BV0FZIDEKIAogLyoKICAqIE9wdGlvbiBmbGFncyBmb3IgUFFjb3B5UmVz dWx0CkBAIC00MTksNiArNDIxLDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKlBRcGFyYW1ldGVyU3Rh dHVzKGNvbnN0IFBHY29ubiAqY29ubiwKIGV4dGVybiBpbnQJUFFwcm90b2NvbFZlcnNpb24oY29u c3QgUEdjb25uICpjb25uKTsKIGV4dGVybiBpbnQJUFFmdWxsUHJvdG9jb2xWZXJzaW9uKGNvbnN0 IFBHY29ubiAqY29ubik7CiBleHRlcm4gaW50CVBRc2VydmVyVmVyc2lvbihjb25zdCBQR2Nvbm4g KmNvbm4pOworZXh0ZXJuIGludAlQUWdvQXdheVJlY2VpdmVkKFBHY29ubiAqY29ubik7CiBleHRl cm4gY2hhciAqUFFlcnJvck1lc3NhZ2UoY29uc3QgUEdjb25uICpjb25uKTsKIGV4dGVybiBpbnQJ UFFzb2NrZXQoY29uc3QgUEdjb25uICpjb25uKTsKIGV4dGVybiBpbnQJUFFiYWNrZW5kUElEKGNv bnN0IFBHY29ubiAqY29ubik7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJw cS1pbnQuaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCmluZGV4IGJkN2ViNTlm NWY4Li4yMDE4OTI3ZDBjYiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEt aW50LmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKQEAgLTUxMSw2ICs1 MTEsNyBAQCBzdHJ1Y3QgcGdfY29ubgogCWJvb2wJCXNpZ3BpcGVfZmxhZzsJLyogY2FuIHdlIG1h c2sgU0lHUElQRSB2aWEgTVNHX05PU0lHTkFMPyAqLwogCWJvb2wJCXdyaXRlX2ZhaWxlZDsJLyog aGF2ZSB3ZSBoYWQgYSB3cml0ZSBmYWlsdXJlIG9uIHNvY2s/ICovCiAJY2hhcgkgICAqd3JpdGVf ZXJyX21zZzsJLyogd3JpdGUgZXJyb3IgbWVzc2FnZSwgb3IgTlVMTCBpZiBPT00gKi8KKwlib29s CQlnb2F3YXlfcmVjZWl2ZWQ7CS8qIHRydWUgaWYgc2VydmVyIHNlbnQgR29Bd2F5IG1lc3NhZ2Ug Ki8KIAogCWJvb2wJCWF1dGhfcmVxdWlyZWQ7CS8qIHJlcXVpcmUgYW4gYXV0aGVudGljYXRpb24g Y2hhbGxlbmdlIGZyb20KIAkJCQkJCQkJICogdGhlIHNlcnZlcj8gKi8KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYyBiL3NyYy90ZXN0 L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYwppbmRleCBhYTBhNmJiZTc2 Mi4uZjJiNThkNTMzOTIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxp bmUvbGlicHFfcGlwZWxpbmUuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5l L2xpYnBxX3BpcGVsaW5lLmMKQEAgLTIxMDEsNiArMjEwMSw3NiBAQCBwcm9jZXNzX3Jlc3VsdChQ R2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByZXN1bHRzLCBpbnQgbnVtc2VudCkKIH0K IAogCitzdGF0aWMgdm9pZAordGVzdF9nb2F3YXkoUEdjb25uICpjb25uKQoreworCVBHY29ubgkg ICAqb3RoZXJDb25uOworCVBHcmVzdWx0ICAgKnJlczsKKwlpbnQJCQlwaWQ7CisJY2hhcgkJcGlk X3N0clszMl07CisJaW50CQkJaTsKKworCWZwcmludGYoc3RkZXJyLCAidGVzdCBnb2F3YXkuLi4g Iik7CisKKwlvdGhlckNvbm4gPSBjb3B5X2Nvbm5lY3Rpb24oY29ubik7CisJQXNzZXJ0KFBRc3Rh dHVzKG90aGVyQ29ubikgPT0gQ09OTkVDVElPTl9PSyk7CisKKwlpZiAoIVBRY29uc3VtZUlucHV0 KGNvbm4pKQorCQlwZ19mYXRhbCgiUFFjb25zdW1lSW5wdXQgZmFpbGVkOiAlcyIsIFBRZXJyb3JN ZXNzYWdlKGNvbm4pKTsKKworCXBpZCA9IFBRYmFja2VuZFBJRChjb25uKTsKKwlzbnByaW50Zihw aWRfc3RyLCBzaXplb2YocGlkX3N0ciksICIlZCIsIHBpZCk7CisKKwkvKiBWZXJpZnkgR29Bd2F5 IGhhcyBub3QgYmVlbiByZWNlaXZlZCB5ZXQgKi8KKwlpZiAoUFFnb0F3YXlSZWNlaXZlZChjb25u KSkKKwkJcGdfZmF0YWwoIkdvQXdheSByZWNlaXZlZCBiZWZvcmUgc2VuZGluZyByZXF1ZXN0Iik7 CisKKwkvKiBBc2sgdGhlIHRhcmdldCBiYWNrZW5kIHRvIHNlbmQgR29Bd2F5ICovCisJeworCQlj b25zdCBjaGFyICpwYXJhbVZhbHVlc1sxXSA9IHtwaWRfc3RyfTsKKworCQlyZXMgPSBQUWV4ZWNQ YXJhbXMob3RoZXJDb25uLAorCQkJCQkJICAgIlNFTEVDVCBwZ19nb2F3YXlfYmFja2VuZCgkMSki LAorCQkJCQkJICAgMSwgTlVMTCwgcGFyYW1WYWx1ZXMsCisJCQkJCQkgICBOVUxMLCBOVUxMLCAw KTsKKwl9CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQorCQlw Z19mYXRhbCgicGdfZ29hd2F5X2JhY2tlbmQgZmFpbGVkOiAlcyIsIFBRZXJyb3JNZXNzYWdlKG90 aGVyQ29ubikpOworCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIDAsIDApLCAidCIpICE9IDAp CisJCXBnX2ZhdGFsKCJwZ19nb2F3YXlfYmFja2VuZCByZXR1cm5lZCBmYWxzZSIpOworCVBRY2xl YXIocmVzKTsKKworCS8qCisJICogVGhlIEdvQXdheSBzaWduYWwgaXMgZGVsaXZlcmVkIGFzeW5j aHJvbm91c2x5LiBQb2xsIFBRZ29Bd2F5UmVjZWl2ZWQgb24KKwkgKiB0aGUgdGFyZ2V0IGNvbm5l Y3Rpb24gdW50aWwgaXQgcmV0dXJucyB0cnVlLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCAxMDA7 IGkrKykKKwl7CisJCWlmICghUFFjb25zdW1lSW5wdXQoY29ubikpCisJCQlwZ19mYXRhbCgiUFFj b25zdW1lSW5wdXQgZmFpbGVkOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKworCQlpZiAo UFFnb0F3YXlSZWNlaXZlZChjb25uKSkKKwkJCWJyZWFrOworCisJCXBnX3VzbGVlcCg1MDAwMCk7 CQkvKiA1MG1zICovCisJfQorCisJaWYgKCFQUWdvQXdheVJlY2VpdmVkKGNvbm4pKQorCQlwZ19m YXRhbCgiR29Bd2F5IG5vdCByZWNlaXZlZCBhZnRlciBzZW5kaW5nIHBnX2dvYXdheV9iYWNrZW5k Iik7CisKKwkvKiBWZXJpZnkgdGhlIGNvbm5lY3Rpb24gc3RpbGwgd29ya3MgYWZ0ZXIgR29Bd2F5 ICovCisJcmVzID0gUFFleGVjKGNvbm4sICJTRUxFQ1QgJ3N0aWxsX2FsaXZlJyIpOworCWlmIChQ UXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKKwkJcGdfZmF0YWwoInF1ZXJ5 IGZhaWxlZCBhZnRlciBHb0F3YXk6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCWlmIChz dHJjbXAoUFFnZXR2YWx1ZShyZXMsIDAsIDApLCAic3RpbGxfYWxpdmUiKSAhPSAwKQorCQlwZ19m YXRhbCgidW5leHBlY3RlZCBxdWVyeSByZXN1bHQgYWZ0ZXIgR29Bd2F5Iik7CisJUFFjbGVhcihy ZXMpOworCisJUFFmaW5pc2gob3RoZXJDb25uKTsKKworCWZwcmludGYoc3RkZXJyLCAib2tcbiIp OworfQorCiBzdGF0aWMgdm9pZAogdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCiB7CkBAIC0y MTE4LDYgKzIxODgsNyBAQCBwcmludF90ZXN0X2xpc3Qodm9pZCkKIHsKIAlwcmludGYoImNhbmNl bFxuIik7CiAJcHJpbnRmKCJkaXNhbGxvd2VkX2luX3BpcGVsaW5lXG4iKTsKKwlwcmludGYoImdv YXdheVxuIik7CiAJcHJpbnRmKCJtdWx0aV9waXBlbGluZXNcbiIpOwogCXByaW50Zigibm9zeW5j XG4iKTsKIAlwcmludGYoInBpcGVsaW5lX2Fib3J0XG4iKTsKQEAgLTIyMjUsNiArMjI5Niw4IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl0ZXN0X2NhbmNlbChjb25uKTsKIAllbHNl IGlmIChzdHJjbXAodGVzdG5hbWUsICJkaXNhbGxvd2VkX2luX3BpcGVsaW5lIikgPT0gMCkKIAkJ dGVzdF9kaXNhbGxvd2VkX2luX3BpcGVsaW5lKGNvbm4pOworCWVsc2UgaWYgKHN0cmNtcCh0ZXN0 bmFtZSwgImdvYXdheSIpID09IDApCisJCXRlc3RfZ29hd2F5KGNvbm4pOwogCWVsc2UgaWYgKHN0 cmNtcCh0ZXN0bmFtZSwgIm11bHRpX3BpcGVsaW5lcyIpID09IDApCiAJCXRlc3RfbXVsdGlfcGlw ZWxpbmVzKGNvbm4pOwogCWVsc2UgaWYgKHN0cmNtcCh0ZXN0bmFtZSwgIm5vc3luYyIpID09IDAp CgpiYXNlLWNvbW1pdDogMzIyYmFiNzk3NDRkZmI4ZjdkZGI1MTkxYjMxMDJjZjc5ODZkMTRhMAot LSAKMi41My4wCgo= --b96b320b8e3fcaed51b701ca8d5572b94dc4220ccb15f92aa64c0605e399--