From unknown Sat Sep 20 11:29:50 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#79298 <79298@debbugs.gnu.org> To: bug#79298 <79298@debbugs.gnu.org> Subject: Status: patch: full color in windows terminal Reply-To: bug#79298 <79298@debbugs.gnu.org> Date: Sat, 20 Sep 2025 18:29:50 +0000 retitle 79298 patch: full color in windows terminal reassign 79298 emacs submitter 79298 Ewan severity 79298 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 24 02:06:23 2025 Received: (at submit) by debbugs.gnu.org; 24 Aug 2025 06:06:23 +0000 Received: from localhost ([127.0.0.1]:43063 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uq3rz-0002u5-By for submit@debbugs.gnu.org; Sun, 24 Aug 2025 02:06:23 -0400 Received: from lists.gnu.org ([2001:470:142::17]:59974) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uq0SU-0000Kd-47 for submit@debbugs.gnu.org; Sat, 23 Aug 2025 22:27:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uq0SO-0005Xu-M0 for bug-gnu-emacs@gnu.org; Sat, 23 Aug 2025 22:27:44 -0400 Received: from mail-4323.protonmail.ch ([185.70.43.23]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uq0SK-0008Mh-Qs for bug-gnu-emacs@gnu.org; Sat, 23 Aug 2025 22:27:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756002458; x=1756261658; bh=H535G/m68CGsSqs/234s6Y4B5GLIYVRmAVmOTyMdIog=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=GF+ZOrrN2hyTTzQsIoV9EToPd6LwNJoMvqy9mMhTWvI/iy4LZck/efMFrUEadLc0B vC2+LnOH5BfKNEry4OQrtABOYVxl2trZfMAu5c3J2OIzONn4gsn3n1Se94UJpEkKW8 QcVhKqaVTfQck+AxxIoVwCRnk12IizFvyKUYPfK06HRxRnqNcW8Lq8BnPWezexUCm9 au7O05JVZPzwEHP3YJdwx8pVC/0AX+VFK5rlZ/LQt44K1d7mkeChiNLk3clIfK5FsB qU7L3Na1WRW+N2MKTorN5sJsindGAsgxzpwHS0FBQ4jvW9oYn8ysVnhu+Y/Dl8ZfQj O35aeuc7+m/wg== Date: Sun, 24 Aug 2025 02:27:35 +0000 To: "bug-gnu-emacs@gnu.org" From: Ewan Subject: Re: patch: full color in windows terminal Message-ID: In-Reply-To: References: Feedback-ID: 150490971:user:proton X-Pm-Message-ID: d088fd425f91e0bf630689df1f01599642efdf53 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_Rhn6tfDfSMxcPXG4PNNUkaNbSgP0El2fhKWmQsCLrlo" Received-SPF: pass client-ip=185.70.43.23; envelope-from=ewan@etown.dev; helo=mail-4323.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Sun, 24 Aug 2025 02:06:20 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --b1=_Rhn6tfDfSMxcPXG4PNNUkaNbSgP0El2fhKWmQsCLrlo Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Apologies, previous patch inherited an unrelated bug fix. Fixed patch attac= hed, fixed commit logs below. * configure.ac: Compiler flag for setting w32 console color space. * lisp/term/w32console.el: Define and apply different color spaces. * src/term.c: Set tty max colors based on compiler flag. * src/w32console.c: Write face colors to console via VT sequences. --b1=_Rhn6tfDfSMxcPXG4PNNUkaNbSgP0El2fhKWmQsCLrlo Content-Type: application/octet-stream; name=0001-Windows-Terminal-full-color-support.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-Windows-Terminal-full-color-support.patch RnJvbSAxZDBjMWEzMGI1MDg2MGE5OGMzNTNjMmQ4MzQ4ODE1MWY2NmUyNjA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFNhdCwg MjMgQXVnIDIwMjUgMTk6MjU6MzYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBXaW5kb3dzIFRlcm1p bmFsIGZ1bGwgY29sb3Igc3VwcG9ydAoKLS0tCiBjb25maWd1cmUuYWMgICAgICAgICAgICB8ICAy MiArKysrKwogbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwgfCAxMjUgKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tCiBzcmMvdGVybS5jICAgICAgICAgICAgICB8ICAxMiArKy0KIHNyYy93MzJjb25z b2xlLmMgICAgICAgIHwgMTg0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0KIDQgZmlsZXMgY2hhbmdlZCwgMjg5IGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAxNDBmZjc2MDI5 ZS4uNzJhNjhiODA0YjEgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUu YWMKQEAgLTI5OSw2ICsyOTksMjEgQEAgQUNfQVJHX1dJVEgoW2FsbF0sCiAgIFt3aXRoX2ZlYXR1 cmVzPSR3aXRodmFsXSwKICAgW3dpdGhfZmVhdHVyZXM9eWVzXSkKIAorQUNfQVJHX1dJVEgoW3cz Mi12dC1jb2xvcl0sCitbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC13MzItdnQtY29sb3I9QVJHXSwK K1t1c2UgVlQgc2VxdWVuY2VzIGZvciB3MzIgY29uc29sZSBjb2xvciAoQVJHIG9uZSBvZjogbm8s IDE2LCAxNTYsIDI0Yml0KV0pXSwKK1sgICAgY2FzZSAiJHt3aXRodmFsfSIgaW4KKyAgICAgbm8g KSAgICB2YWw9bm8gOzsKKyAgICAgMTYgKSAgICB2YWw9MTYgOzsKKyAgICAgMjU2ICkgICB2YWw9 MjU2IDs7CisgICAgIDI0Yml0ICkgdmFsPTI0Yml0IDs7CisgICAgICogKQorICAgICBBQ19NU0df RVJST1IoWyctLXdpdGgtdnQtY29sb3I9JHdpdGh2YWwnIGlzIGludmFsaWQ7CisgICAgIHRoZSB2 YWx1ZSBzaG91bGQgYmUgJ25vJywgJzE2JywgJzI1NicsIG9yICcyNGJpdCddKSA7OworICAgICBl c2FjCisgICAgIHdpdGhfdzMyX3Z0X2NvbG9yPSR2YWwKK10pCisKIGRubCBBUkNIX0lOREVQRU5E RU5UX0NPTkZJR19GSUxFUyhGSUxFLi4uKQogZG5sIExpa2UgQUNfQ09ORklHX0ZJTEVTKEZJTEUp LiAgSG93ZXZlciwgZG8gbm90IGdlbmVyYXRlIHRoaXMKIGRubCAgIGlmIGNvbmZpZ3VyZSBpcyBi ZWluZyBjYWxsZWQgcmVjdXJzaXZlbHkgaW4gcHJlcGFyYXRpb24KQEAgLTMwMzMsNiArMzA0OCwx MyBAQCBpZiB0ZXN0ICIke29wc3lzfSIgPSAibWluZ3czMiI7IHRoZW4KICAgICBBQ19NU0dfRVJS T1IoW3RoZSBXaW5kb3dzIEFQSSBoZWFkZXJzIGFyZSB0b28gb2xkIHRvIHN1cHBvcnQgdGhpcyBi dWlsZC5dKQogICBmaQogICBIQVZFX1czMj0ke2VtYWNzX2N2X3czMmFwaX0KKyAgY2FzZSAiJHt3 aXRoX3czMl92dF9jb2xvcn0iIGluCisgICAgICAgMTYgKSBBQ19ERUZJTkUoVVNFX1czMkNPTlZU Q09MT1JfMTYsIDEsIFtEZWZpbmUgdG8gdXNlIFZUIHNlcXVlbmNlcyBmb3IgMTYgY29sb3JzLl0p IDs7CisgICAgICAgMjU2ICkgQUNfREVGSU5FKFVTRV9XMzJDT05WVENPTE9SXzI1NiwgMSwgW0Rl ZmluZSB0byB1c2UgVlQgc2VxdWVuY2VzIGZvciAyNTYgY29sb3JzLl0pIDs7CisgICAgICAgMjRi aXQgKSBBQ19ERUZJTkUoVVNFX1czMkNPTlZUQ09MT1JfMjRCSVQsIDEsIFtEZWZpbmUgdG8gdXNl IFZUIHNlcXVlbmNlcyBmb3IgMjRiaXQgY29sb3JzLl0pIDs7CisgICAgICAgbm8gKSA7OworICAg ICAgICogKSA7OworICBlc2FjCiBmaQogCiBOVERJUj0KZGlmZiAtLWdpdCBhL2xpc3AvdGVybS93 MzJjb25zb2xlLmVsIGIvbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKaW5kZXggMWI0NGRhNDhiZjcu LjI3NzRjYWU4Y2Q2IDEwMDY0NAotLS0gYS9saXNwL3Rlcm0vdzMyY29uc29sZS5lbAorKysgYi9s aXNwL3Rlcm0vdzMyY29uc29sZS5lbApAQCAtMjQsMjUgKzI0LDQyIEBACiAKIDs7OyBDb2RlOgog Ci07OyBXMzIgdXNlcyBkaWZmZXJlbnQgY29sb3IgaW5kZXhlcyB0aGFuIHN0YW5kYXJkOgotCis7 OyBXMzIgdXNlcyBkaWZmZXJlbnQgY29sb3IgaW5kZXhlcyB0aGFuIHN0YW5kYXJkCis7OyBXaGVu IHVzaW5nIFZUIHNlcXVlbmNlcyBmb3IgY29sb3IsIHN0YW5kYXJkaXplCiAoZGVmdmFyIHczMi10 dHktc3RhbmRhcmQtY29sb3JzCi0gICcoKCJibGFjayIgICAgICAgICAgMCAgICAgMCAgICAgMCAg ICAgMCkKLSAgICAoImJsdWUiICAgICAgICAgICAxICAgICAwICAgICAwIDUyNDgwKSA7IE1lZGl1 bUJsdWUKLSAgICAoImdyZWVuIiAgICAgICAgICAyICA4NzA0IDM1NTg0ICA4NzA0KSA7IEZvcmVz dEdyZWVuCi0gICAgKCJjeWFuIiAgICAgICAgICAgMyAgICAgMCA1MjczNiA1MzUwNCkgOyBEYXJr VHVycXVvaXNlCi0gICAgKCJyZWQiICAgICAgICAgICAgNCA0NTU2OCAgODcwNCAgODcwNCkgOyBG aXJlQnJpY2sKLSAgICAoIm1hZ2VudGEiICAgICAgICA1IDM1NTg0ICAgICAwIDM1NTg0KSA7IERh cmtNYWdlbnRhCi0gICAgKCJicm93biIgICAgICAgICAgNiA0MDk2MCAyMDk5MiAxMTUyMCkgOyBT aWVubmEKLSAgICAoImxpZ2h0Z3JheSIgICAgICA3IDQ4NjQwIDQ4NjQwIDQ4NjQwKSA7IEdyYXkK LSAgICAoImRhcmtncmF5IiAgICAgICA4IDI2MTEyIDI2MTEyIDI2MTEyKSA7IEdyYXk0MAotICAg ICgibGlnaHRibHVlIiAgICAgIDkgICAgIDAgICAgIDAgNjU1MzUpIDsgQmx1ZQotICAgICgibGln aHRncmVlbiIgICAgMTAgICAgIDAgNjU1MzUgICAgIDApIDsgR3JlZW4KLSAgICAoImxpZ2h0Y3lh biIgICAgIDExICAgICAwIDY1NTM1IDY1NTM1KSA7IEN5YW4KLSAgICAoImxpZ2h0cmVkIiAgICAg IDEyIDY1NTM1ICAgICAwICAgICAwKSA7IFJlZAotICAgICgibGlnaHRtYWdlbnRhIiAgMTMgNjU1 MzUgICAgIDAgNjU1MzUpIDsgTWFnZW50YQotICAgICgieWVsbG93IiAgICAgICAgMTQgNjU1MzUg NjU1MzUgICAgIDApIDsgWWVsbG93Ci0gICAgKCJ3aGl0ZSIgICAgICAgICAxNSA2NTUzNSA2NTUz NSA2NTUzNSkpCisgIChpZiB3MzJjb24tdXNlLXZ0LWNvbG9yCisgICAgICAnKCgiYmxhY2siICAg ICAgICAgIDAgICAgIDAgICAgIDAgICAgIDApCisgICAgICAgICgicmVkIiAgICAgICAgICAgIDEg NDU1NjggIDg3MDQgIDg3MDQpIDsgRmlyZUJyaWNrCisgICAgICAgICgiZ3JlZW4iICAgICAgICAg IDIgIDg3MDQgMzU1ODQgIDg3MDQpIDsgRm9yZXN0R3JlZW4KKyAgICAgICAgKCJicm93biIgICAg ICAgICAgMyA0MDk2MCAyMDk5MiAxMTUyMCkgOyBTaWVubmEKKyAgICAgICAgKCJibHVlIiAgICAg ICAgICAgNCAgICAgMCAgICAgMCA1MjQ4MCkgOyBNZWRpdW1CbHVlCisgICAgICAgICgibWFnZW50 YSIgICAgICAgIDUgMzU1ODQgICAgIDAgMzU1ODQpIDsgRGFya01hZ2VudGEKKyAgICAgICAgKCJj eWFuIiAgICAgICAgICAgNiAgICAgMCA1MjczNiA1MzUwNCkgOyBEYXJrVHVycXVvaXNlCisgICAg ICAgICgibGlnaHRncmF5IiAgICAgIDcgNDg2NDAgNDg2NDAgNDg2NDApIDsgR3JheQorICAgICAg ICAoImRhcmtncmF5IiAgICAgICA4IDI2MTEyIDI2MTEyIDI2MTEyKSA7IEdyYXk0MAorICAgICAg ICAoImxpZ2h0cmVkIiAgICAgICA5IDY1NTM1ICAgICAwICAgICAwKSA7IFJlZAorICAgICAgICAo ImxpZ2h0Z3JlZW4iICAgIDEwICAgICAwIDY1NTM1ICAgICAwKSA7IEdyZWVuCisgICAgICAgICgi eWVsbG93IiAgICAgICAgMTEgNjU1MzUgNjU1MzUgICAgIDApIDsgWWVsbG93CisgICAgICAgICgi bGlnaHRibHVlIiAgICAgMTIgICAgIDAgICAgIDAgNjU1MzUpIDsgQmx1ZQorICAgICAgICAoImxp Z2h0bWFnZW50YSIgIDEzIDY1NTM1ICAgICAwIDY1NTM1KSA7IE1hZ2VudGEKKyAgICAgICAgKCJs aWdodGN5YW4iICAgICAxNCAgICAgMCA2NTUzNSA2NTUzNSkgOyBDeWFuCisgICAgICAgICgid2hp dGUiICAgICAgICAgMTUgNjU1MzUgNjU1MzUgNjU1MzUpKQorICAgICcoKCJibGFjayIgICAgICAg ICAgMCAgICAgMCAgICAgMCAgICAgMCkKKyAgICAgICgiYmx1ZSIgICAgICAgICAgIDEgICAgIDAg ICAgIDAgNTI0ODApIDsgTWVkaXVtQmx1ZQorICAgICAgKCJncmVlbiIgICAgICAgICAgMiAgODcw NCAzNTU4NCAgODcwNCkgOyBGb3Jlc3RHcmVlbgorICAgICAgKCJjeWFuIiAgICAgICAgICAgMyAg ICAgMCA1MjczNiA1MzUwNCkgOyBEYXJrVHVycXVvaXNlCisgICAgICAoInJlZCIgICAgICAgICAg ICA0IDQ1NTY4ICA4NzA0ICA4NzA0KSA7IEZpcmVCcmljaworICAgICAgKCJtYWdlbnRhIiAgICAg ICAgNSAzNTU4NCAgICAgMCAzNTU4NCkgOyBEYXJrTWFnZW50YQorICAgICAgKCJicm93biIgICAg ICAgICAgNiA0MDk2MCAyMDk5MiAxMTUyMCkgOyBTaWVubmEKKyAgICAgICgibGlnaHRncmF5IiAg ICAgIDcgNDg2NDAgNDg2NDAgNDg2NDApIDsgR3JheQorICAgICAgKCJkYXJrZ3JheSIgICAgICAg OCAyNjExMiAyNjExMiAyNjExMikgOyBHcmF5NDAKKyAgICAgICgibGlnaHRibHVlIiAgICAgIDkg ICAgIDAgICAgIDAgNjU1MzUpIDsgQmx1ZQorICAgICAgKCJsaWdodGdyZWVuIiAgICAxMCAgICAg MCA2NTUzNSAgICAgMCkgOyBHcmVlbgorICAgICAgKCJsaWdodGN5YW4iICAgICAxMSAgICAgMCA2 NTUzNSA2NTUzNSkgOyBDeWFuCisgICAgICAoImxpZ2h0cmVkIiAgICAgIDEyIDY1NTM1ICAgICAw ICAgICAwKSA7IFJlZAorICAgICAgKCJsaWdodG1hZ2VudGEiICAxMyA2NTUzNSAgICAgMCA2NTUz NSkgOyBNYWdlbnRhCisgICAgICAoInllbGxvdyIgICAgICAgIDE0IDY1NTM1IDY1NTM1ICAgICAw KSA7IFllbGxvdworICAgICAgKCJ3aGl0ZSIgICAgICAgICAxNSA2NTUzNSA2NTUzNSA2NTUzNSkp KQogIkEgbGlzdCBvZiBWR0EgY29uc29sZSBjb2xvcnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJp dCBSR0IgdmFsdWVzLiIpCiAKIChkZWNsYXJlLWZ1bmN0aW9uIHgtc2V0dXAtZnVuY3Rpb24ta2V5 cyAidGVybS9jb21tb24td2luIiAoZnJhbWUpKQpAQCAtNTAsNiArNjcsNDcgQEAKIChkZWNsYXJl LWZ1bmN0aW9uIHczMi1nZXQtY29uc29sZS1jb2RlcGFnZSAidzMycHJvYy5jIiAoKSkKIChkZWNs YXJlLWZ1bmN0aW9uIHczMi1nZXQtY29uc29sZS1vdXRwdXQtY29kZXBhZ2UgInczMnByb2MuYyIg KCkpCiAKKyhkZWZ1biB3MzJjb24tZGVmaW5lLWJhc2UtY29sb3JzICgpCisgICJEZWZpbmVzIGJh c2UgY29sb3Igc3BhY2UgZm9yIHczMiIKKyAgKGxldCogKChjb2xvcnMgdzMyLXR0eS1zdGFuZGFy ZC1jb2xvcnMpCisgICAgICAgICAobmJhc2UgKGxlbmd0aCBjb2xvcnMpKQorICAgICAgICAgKGNv bG9yIChjYXIgY29sb3JzKSkpCisgICAgKHByb2duICh3aGlsZSBjb2xvcnMKKyAgICAgICAgICAg ICAodHR5LWNvbG9yLWRlZmluZSAoY2FyIGNvbG9yKSAoY2FkciBjb2xvcikgKGNkZHIgY29sb3Ip KQorICAgICAgICAgICAgIChzZXRxIGNvbG9ycyAoY2RyIGNvbG9ycykKKyAgICAgICAgICAgICAg ICAgICBjb2xvciAgKGNhciBjb2xvcnMpKSkKKyAgICAgICAgICAgbmJhc2UpKSkKKworKGRlZnVu IHczMmNvbi1kZWZpbmUtMjU2LWNvbG9ycyAoKQorICAiRGVmaW5lcyAyNTYgY29sb3Igc3BhY2Ui CisgIChsZXQgKChyIDApIChiIDApIChnIDApCisgICAgICAgIChuICgtIDI1NiAodzMyY29uLWRl ZmluZS1iYXNlLWNvbG9ycykpKQorICAgICAgICAoY29udmVydC10by0xNmJpdCAobGFtYmRhIChw cmltKSAobG9naW9yIHByaW0gKGFzaCBwcmltIDgpKSkpKQorICAgICh3aGlsZSAoPiBuIDI0KSA7 OyBub24tZ3JleQorICAgICAgKGxldCAoKGkgKC0gMjU2IG4pKQorICAgICAgICAgICAgKGMgKG1h cGNhciBjb252ZXJ0LXRvLTE2Yml0CisgICAgICAgICAgICAgICAgICAgICAgIChtYXBjYXIgKGxh bWJkYSAoeCkgKGlmICh6ZXJvcCB4KSAwICgrICgqIHggNDApIDU1KSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGxpc3QgciBnIGIpKSkpKQorICAgICAgICAodHR5LWNvbG9yLWRl ZmluZSAoZm9ybWF0ICJjb2xvci0lZCIgaSkgaSBjKSkKKyAgICAgIChzZXRxIGIgKDErIGIpKQor ICAgICAgKHdoZW4gKD4gYiA1KSAoc2V0cSBnICgxKyBnKSBiIDApKQorICAgICAgKHdoZW4gKD4g ZyA1KSAoc2V0cSByICgxKyByKSBnIDApKQorICAgICAgKHNldHEgbiAoMS0gbikpKQorICAgICh3 aGlsZSAoPiBuIDApIDs7IGFsbC1ncmV5CisgICAgICAobGV0KiAoKGkgKC0gMjU2IG4pKQorICAg ICAgICAgICAgICh2IChmdW5jYWxsIGNvbnZlcnQtdG8tMTZiaXQgKCsgOCAoKiAoLSAyNCBuKSAx MCkpKSkKKyAgICAgICAgICAgICAoYyAobGlzdCB2IHYgdikpKQorICAgICAgICAodHR5LWNvbG9y LWRlZmluZSAoZm9ybWF0ICJjb2xvci0lZCIgaSkgaSBjKSkKKyAgICAgIChzZXRxIG4gKDEtIG4p KSkpKQorCisoZGVmdW4gdzMyY29uLWRlZmluZS0yNGJpdC1jb2xvcnMgKCkKKyAgIkRlZmluZXMg MjQgYml0IGNvbG9yIHNwYWNlIgorICAobGV0ICgoaSAodzMyY29uLWRlZmluZS1iYXNlLWNvbG9y cykpKQorICAgIChtYXBjIChsYW1iZGEgKGMpICh1bmxlc3MgKGFzc29jIChjYXIgYykgdzMyLXR0 eS1zdGFuZGFyZC1jb2xvcnMpCisgICAgICAgICAgICAgICAgICAgKHR0eS1jb2xvci1kZWZpbmUg KGNhciBjKSBpIChjZHIgYykpCisgICAgICAgICAgICAgICAgICAgKHNldHEgaSAoMSsgaSkpKSkK KyAgICAgICAgICBjb2xvci1uYW1lLXJnYi1hbGlzdCkpKQorCiAoZGVmdW4gdGVybWluYWwtaW5p dC13MzJjb25zb2xlICgpCiAgICJUZXJtaW5hbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3Ig dzMyIGNvbnNvbGUuIgogICA7OyBTaGFyZSBmdW5jdGlvbiBrZXkgaW5pdGlhbGl6YXRpb24gd2l0 aCB3MzIgZ3VpIGZyYW1lcwpAQCAtNjAsMjIgKzExOCwyMSBAQAogCShvZW0tY29kZS1wYWdlLW91 dHB1dC1jb2RpbmcKIAkgKGludGVybiAoZm9ybWF0ICJjcCVkIiAodzMyLWdldC1jb25zb2xlLW91 dHB1dC1jb2RlcGFnZSkpKSkKIAlvZW0tY3MtcCBvZW0tby1jcy1wKQotCShzZXRxIG9lbS1jcy1w IChjb2Rpbmctc3lzdGVtLXAgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQotCShzZXRxIG9lbS1vLWNz LXAgKGNvZGluZy1zeXN0ZW0tcCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2RpbmcpKQotCSh3aGVu IG9lbS1jcy1wCi0JICAoc2V0LWtleWJvYXJkLWNvZGluZy1zeXN0ZW0gb2VtLWNvZGUtcGFnZS1j b2RpbmcpCi0JICAoc2V0LXRlcm1pbmFsLWNvZGluZy1zeXN0ZW0KLQkgICAoaWYgb2VtLW8tY3Mt cCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2Rpbmcgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQotICAg ICAgICAgIDs7IFNpbmNlIHdlIGNoYW5nZWQgdGhlIHRlcm1pbmFsIGVuY29kaW5nLCB3ZSBuZWVk IHRvIHJlcGVhdAotICAgICAgICAgIDs7IHRoZSB0ZXN0IGZvciBVbmljb2RlIHF1b3RlcyBiZWlu ZyBkaXNwbGF5YWJsZS4KLSAgICAgICAgICAoc3RhcnR1cC0tc2V0dXAtcXVvdGUtZGlzcGxheSkp KQotICAobGV0KiAoKGNvbG9ycyB3MzItdHR5LXN0YW5kYXJkLWNvbG9ycykKLSAgICAgICAgIChj b2xvciAoY2FyIGNvbG9ycykpKQotICAgICh0dHktY29sb3ItY2xlYXIpCi0gICAgKHdoaWxlIGNv bG9ycwotICAgICAgKHR0eS1jb2xvci1kZWZpbmUgKGNhciBjb2xvcikgKGNhZHIgY29sb3IpIChj ZGRyIGNvbG9yKSkKLSAgICAgIChzZXRxIGNvbG9ycyAoY2RyIGNvbG9ycykKLSAgICAgICAgICAg IGNvbG9yIChjYXIgY29sb3JzKSkpKQorICAgIChzZXRxIG9lbS1jcy1wIChjb2Rpbmctc3lzdGVt LXAgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQorICAgIChzZXRxIG9lbS1vLWNzLXAgKGNvZGluZy1z eXN0ZW0tcCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2RpbmcpKQorICAgICh3aGVuIG9lbS1jcy1w CisgICAgICAoc2V0LWtleWJvYXJkLWNvZGluZy1zeXN0ZW0gb2VtLWNvZGUtcGFnZS1jb2Rpbmcp CisgICAgICAoc2V0LXRlcm1pbmFsLWNvZGluZy1zeXN0ZW0KKyAgICAgICAoaWYgb2VtLW8tY3Mt cCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2Rpbmcgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQorICAg ICAgOzsgU2luY2Ugd2UgY2hhbmdlZCB0aGUgdGVybWluYWwgZW5jb2RpbmcsIHdlIG5lZWQgdG8g cmVwZWF0CisgICAgICA7OyB0aGUgdGVzdCBmb3IgVW5pY29kZSBxdW90ZXMgYmVpbmcgZGlzcGxh eWFibGUuCisgICAgICAoc3RhcnR1cC0tc2V0dXAtcXVvdGUtZGlzcGxheSkpKQorICA7OyBEZWZp bmUgdGhlIGNvbG9yIHNwYWNlCisgICh0dHktY29sb3ItY2xlYXIpCisgIChsZXQgKChuY29sb3Jz IChkaXNwbGF5LWNvbG9yLWNlbGxzKSkpCisgICAgKGNvbmQgKCg9IG5jb2xvcnMgMTY3NzcyMTYp ICh3MzJjb24tZGVmaW5lLTI0Yml0LWNvbG9ycykpCisgICAgICAgICAgKCg9IG5jb2xvcnMgMjY1 ICAgICAgICh3MzJjb24tZGVmaW5lLTI1Ni1jb2xvcnMpKSkKKyAgICAgICAgICAodCAgICAgICAg ICAgICAgICAgICAgKHczMmNvbi1kZWZpbmUtYmFzZS1jb2xvcnMpKSkpCiAgIChjbGVhci1mYWNl LWNhY2hlKQogICA7OyBGaWd1cmUgb3V0IHdoYXQgYXJlIHRoZSBjb2xvcnMgb2YgdGhlIGNvbnNv bGUgd2luZG93LCBhbmQgc2V0IHVwCiAgIDs7IHRoZSBiYWNrZ3JvdW5kLW1vZGUgY29ycmVzcG9u ZGluZ2x5LgpkaWZmIC0tZ2l0IGEvc3JjL3Rlcm0uYyBiL3NyYy90ZXJtLmMKaW5kZXggYTFlM2Y2 MzEyYzYuLmU3NjIwMjRiZGQ1IDEwMDY0NAotLS0gYS9zcmMvdGVybS5jCisrKyBiL3NyYy90ZXJt LmMKQEAgLTQ2ODYsNyArNDY4NiwxNyBAQCB1c2UgdGhlIEJvdXJuZSBzaGVsbCBjb21tYW5kICdU RVJNPS4uLjsgZXhwb3J0IFRFUk0nIChDLXNoZWxsOlxuXAogICAgICBkb24ndCB0aGluayB3ZSdy ZSBsb3NpbmcgYW55dGhpbmcgYnkgdHVybmluZyBpdCBvZmYuICAqLwogICB0dHktPmxpbmVfaW5z X2RlbF9vayA9IDA7CiAKLSAgdHR5LT5UTl9tYXhfY29sb3JzID0gMTY7ICAvKiBNdXN0IGJlIG5v bi16ZXJvIGZvciB0dHktZGlzcGxheS1jb2xvci1wLiAgKi8KKyAgLyogU3VwcG9ydCBmdWxsIHJh bmdlIG9mIGNvbG9ycyBpbiBuZXcgd2luZG93cyB0ZXJtaW5hbCBhcHAgKi8KKyAgI2lmIGRlZmlu ZWQoVVNFX1czMkNPTlZUQ09MT1JfMTYpCisgICAgdHR5LT5UTl9tYXhfY29sb3JzID0gMTY7Cisg ICNlbGlmIGRlZmluZWQoVVNFX1czMkNPTlZUQ09MT1JfMjU2KQorICAgIHR0eS0+VE5fbWF4X2Nv bG9ycyA9IDI1NjsKKyAgI2VsaWYgZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8yNEJJVCkKKyAg ICB0dHktPlROX21heF9jb2xvcnMgPSAxNjc3NzIxNjsKKyAgI2Vsc2UKKyAgICAvKiBNdXN0IGJl IG5vbi16ZXJvIGZvciB0dHktZGlzcGxheS1jb2xvci1wLiAgKi8KKyAgICB0dHktPlROX21heF9j b2xvcnMgPSAxNjsKKyAgI2VuZGlmCiAjZW5kaWYJLyogRE9TX05UICovCiAKICNpZmRlZiBIQVZF X0dQTQpkaWZmIC0tZ2l0IGEvc3JjL3czMmNvbnNvbGUuYyBiL3NyYy93MzJjb25zb2xlLmMKaW5k ZXggMWJjYTBjYWRmZjkuLjVhNWQ1MTlmZmMzIDEwMDY0NAotLS0gYS9zcmMvdzMyY29uc29sZS5j CisrKyBiL3NyYy93MzJjb25zb2xlLmMKQEAgLTUzLDYgKzUzLDEwIEBAIHN0YXRpYyB2b2lkIHcz MmNvbl9zZXRfdGVybWluYWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCk7CiBzdGF0aWMgdm9p ZCB3MzJjb25fdXBkYXRlX2JlZ2luIChzdHJ1Y3QgZnJhbWUgKiBmKTsKIHN0YXRpYyB2b2lkIHcz MmNvbl91cGRhdGVfZW5kIChzdHJ1Y3QgZnJhbWUgKiBmKTsKIHN0YXRpYyBXT1JEIHczMl9mYWNl X2F0dHJpYnV0ZXMgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGZhY2VfaWQpOworI2lmIGRlZmluZWQo VVNFX1czMkNPTlZUQ09MT1JfMTYpIHx8IGRlZmluZWQoVVNFX1czMkNPTlZUQ09MT1JfMjU2KSB8 fCBkZWZpbmVkKFVTRV9XMzJDT05WVENPTE9SXzI0QklUKQorc3RhdGljIHZvaWQgdHVybl9vbl9m YWNlIChzdHJ1Y3QgZnJhbWUgKiwgaW50IGZhY2VfaWQpOworc3RhdGljIHZvaWQgdHVybl9vZmZf ZmFjZSAoc3RydWN0IGZyYW1lICosIGludCBmYWNlX2lkKTsKKyNlbmRpZgogCiBzdGF0aWMgQ09P UkQJY3Vyc29yX2Nvb3JkczsKIHN0YXRpYyBIQU5ETEUJcHJldl9zY3JlZW4sIGN1cl9zY3JlZW47 CkBAIC0xNjYsMTAgKzE3MCwxMCBAQCB3MzJjb25fY2xlYXJfZW5kX29mX2xpbmUgKHN0cnVjdCBm cmFtZSAqZiwgaW50IGVuZCkKICAgICB7CiAgICAgICBpbnQgaTsKICAgICAgIGZvciAoaSA9IDA7 IGkgPCBnbHlwaHNfbGVuOyBpKyspCi0gICAgICAgIHsKKwl7CiAJICBtZW1jcHkgKCZnbHlwaHNb aV0sICZzcGFjZV9nbHlwaCwgc2l6ZW9mIChzdHJ1Y3QgZ2x5cGgpKTsKIAkgIGdseXBoc1tpXS5m cmFtZSA9IE5VTEw7Ci0gICAgICAgIH0KKwl9CiAgICAgICBjZW9sX2luaXRpYWxpemVkID0gVFJV RTsKICAgICB9CiAgIHczMmNvbl93cml0ZV9nbHlwaHMgKGYsIGdseXBocywgZW5kIC0gY3Vyc29y X2Nvb3Jkcy5YKTsKQEAgLTIxOCwyNiArMjIyLDI2IEBAIHczMmNvbl9pbnNfZGVsX2xpbmVzIChz dHJ1Y3QgZnJhbWUgKmYsIGludCB2cG9zLCBpbnQgbikKICAgaWYgKG4gPiAwKQogICAgIHsKICAg ICAgIGlmIChzY3JvbGwuQm90dG9tIDwgZGVzdC5ZKQotICAgICAgICB7CisJewogCSAgZm9yIChp ID0gc2Nyb2xsLkJvdHRvbTsgaSA8IGRlc3QuWTsgaSsrKQotICAgICAgICAgICAgeworCSAgICB7 CiAJICAgICAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBpLCAwKTsKIAkgICAgICB3MzJjb25fY2xl YXJfZW5kX29mX2xpbmUgKGYsIEZSQU1FX0NPTFMgKGYpKTsKLSAgICAgICAgICAgIH0KLSAgICAg ICAgfQorCSAgICB9CisJfQogICAgIH0KICAgZWxzZQogICAgIHsKICAgICAgIG5iID0gZGVzdC5Z ICsgKHNjcm9sbC5Cb3R0b20gLSBzY3JvbGwuVG9wKSArIDE7CiAKICAgICAgIGlmIChuYiA8IHNj cm9sbC5Ub3ApCi0gICAgICAgIHsKKwl7CiAJICBmb3IgKGkgPSBuYjsgaSA8IHNjcm9sbC5Ub3A7 IGkrKykKLSAgICAgICAgICAgIHsKKwkgICAgewogCSAgICAgIHczMmNvbl9tb3ZlX2N1cnNvciAo ZiwgaSwgMCk7CiAJICAgICAgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9DT0xT IChmKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKwkgICAgfQorCX0KICAgICB9CiAKICAg Y3Vyc29yX2Nvb3Jkcy5YID0gMDsKQEAgLTMwNiwxMCArMzEwLDE0IEBAIHczMmNvbl9pbnNlcnRf Z2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIHN0cnVjdCBnbHlwaCAqc3RhcnQsCiAK IHN0YXRpYyB2b2lkCiB3MzJjb25fd3JpdGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lz dGVyIHN0cnVjdCBnbHlwaCAqc3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIg aW50IGxlbikKKwkJICAgICByZWdpc3RlciBpbnQgbGVuKQogewogICBEV09SRCByOworCisgICNp ZiBkZWZpbmVkKFVTRV9XMzJDT05WVENPTE9SXzE2KSB8fCBkZWZpbmVkKFVTRV9XMzJDT05WVENP TE9SXzI1NikgfHwgZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8yNEJJVCkKKyAgI2Vsc2UKICAg V09SRCBjaGFyX2F0dHI7CisgICNlbmRpZgogICBMUENTVFIgY29udmVyc2lvbl9idWZmZXI7CiAg IHN0cnVjdCBjb2Rpbmdfc3lzdGVtICpjb2Rpbmc7CiAKQEAgLTM0MCwxMCArMzQ4LDE1IEBAIHcz MmNvbl93cml0ZV9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBo ICpzdHJpbmcsCiAJICAgICAgJiYgc3RyaW5nW25dLmZyYW1lID09IGZhY2VfaWRfZnJhbWUpKQog CSAgYnJlYWs7CiAKLSAgICAgIC8qIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSBzZXRzIGZyYW1l IG9mIGdseXBocyB0byBOVUxMLiAgKi8KLSAgICAgIHN0cnVjdCBmcmFtZSAqYXR0cl9mcmFtZSA9 IGZhY2VfaWRfZnJhbWUgPyBmYWNlX2lkX2ZyYW1lIDogZjsKLSAgICAgIC8qIFR1cm4gYXBwZWFy YW5jZSBtb2RlcyBvZiB0aGUgZmFjZSBvZiB0aGUgcnVuIG9uLiAgKi8KLSAgICAgIGNoYXJfYXR0 ciA9IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGF0dHJfZnJhbWUsIGZhY2VfaWQpOworI2lmIGRlZmlu ZWQoVVNFX1czMkNPTlZUQ09MT1JfMTYpIHx8IGRlZmluZWQoVVNFX1czMkNPTlZUQ09MT1JfMjU2 KSB8fCBkZWZpbmVkKFVTRV9XMzJDT05WVENPTE9SXzI0QklUKQorCXR1cm5fb25fZmFjZSAoZiwg ZmFjZV9pZCk7CisjZWxzZQorCS8qIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSBzZXRzIGZyYW1l IG9mIGdseXBocyB0byBOVUxMLiAgKi8KKwlzdHJ1Y3QgZnJhbWUgKmF0dHJfZnJhbWUgPSBmYWNl X2lkX2ZyYW1lID8gZmFjZV9pZF9mcmFtZSA6IGY7CisKKwkvKiBUdXJuIGFwcGVhcmFuY2UgbW9k ZXMgb2YgdGhlIGZhY2Ugb2YgdGhlIHJ1biBvbi4gICovCisJY2hhcl9hdHRyID0gdzMyX2ZhY2Vf YXR0cmlidXRlcyAoYXR0cl9mcmFtZSwgZmFjZV9pZCk7CisjZW5kaWYKIAogICAgICAgaWYgKG4g PT0gbGVuKQogCS8qIFRoaXMgaXMgdGhlIGxhc3QgcnVuLiAgKi8KQEAgLTM1MSw2ICszNjQsMTUg QEAgdzMyY29uX3dyaXRlX2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3Qg Z2x5cGggKnN0cmluZywKICAgICAgIGNvbnZlcnNpb25fYnVmZmVyID0gKExQQ1NUUikgZW5jb2Rl X3Rlcm1pbmFsX2NvZGUgKHN0cmluZywgbiwgY29kaW5nKTsKICAgICAgIGlmIChjb2RpbmctPnBy b2R1Y2VkID4gMCkKIAl7CisjaWYgZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8xNikgfHwgZGVm aW5lZChVU0VfVzMyQ09OVlRDT0xPUl8yNTYpIHx8IGRlZmluZWQoVVNFX1czMkNPTlZUQ09MT1Jf MjRCSVQpCisJICBpZiAoIVdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwgY29udmVyc2lvbl9idWZm ZXIsCisJCQkgICAgIGNvZGluZy0+cHJvZHVjZWQsICZyLCBOVUxMKSkKKwkgICAgeworCSAgICAg IHByaW50ZiAoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgY2hhcmFjdGVyczogJWx1XG4iLAorCQkg ICAgICBHZXRMYXN0RXJyb3IgKCkpOworCSAgICAgIGZmbHVzaCAoc3Rkb3V0KTsKKwkgICAgfQor I2Vsc2UKIAkgIC8qIFNldCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8K IAkgIGlmICghRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0 ciwKIAkJCQkJICAgY29kaW5nLT5wcm9kdWNlZCwgY3Vyc29yX2Nvb3JkcywKQEAgLTM3MCwxMiAr MzkyLDE2IEBAIHczMmNvbl93cml0ZV9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIg c3RydWN0IGdseXBoICpzdHJpbmcsCiAJCSAgICAgIEdldExhc3RFcnJvciAoKSk7CiAJICAgICAg ZmZsdXNoIChzdGRvdXQpOwogCSAgICB9Ci0KKyNlbmRpZgogCSAgY3Vyc29yX2Nvb3Jkcy5YICs9 IGNvZGluZy0+cHJvZHVjZWQ7CiAJICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGN1cnNvcl9jb29y ZHMuWSwgY3Vyc29yX2Nvb3Jkcy5YKTsKIAl9CiAgICAgICBsZW4gLT0gbjsKICAgICAgIHN0cmlu ZyArPSBuOworCisjaWYgZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8xNikgfHwgZGVmaW5lZChV U0VfVzMyQ09OVlRDT0xPUl8yNTYpIHx8IGRlZmluZWQoVVNFX1czMkNPTlZUQ09MT1JfMjRCSVQp CisgICAgICB0dXJuX29mZl9mYWNlIChmLCBmYWNlX2lkKTsKKyNlbmRpZgogICAgIH0KIH0KIApA QCAtNDk4LDcgKzUyNCw3IEBAIHR0eV9kcmF3X3Jvd193aXRoX21vdXNlX2ZhY2UgKHN0cnVjdCB3 aW5kb3cgKncsIHN0cnVjdCBnbHlwaF9yb3cgKndpbmRvd19yb3csCiAJCSAgfQogCQkgIGJyZWFr OwogCi0JCWNhc2UgRFJBV19JTlZFUlNFX1ZJREVPOgorCQljYXNlIERSQVdfSU5WRVJTRV9WSURF TzogLy8gc2VlIGNvbW1lbnQgaW4gdHVybl9vbl9mYWNlCiAJCWNhc2UgRFJBV19DVVJTT1I6CiAJ CWNhc2UgRFJBV19JTUFHRV9SQUlTRUQ6CiAJCWNhc2UgRFJBV19JTUFHRV9TVU5LRU46CkBAIC01 NzgsNiArNjA0LDEzIEBAIHczMmNvbl9zZXRfdGVybWluYWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5h bCAqdCkKICAgLyogSW5pdGlhbGl6ZSBpbnB1dCBtb2RlOiBpbnRlcnJ1cHRfaW5wdXQgb2ZmLCBu byBmbG93IGNvbnRyb2wsIGFsbG93CiAgICAgIDggYml0IGNoYXJhY3RlciBpbnB1dCwgc3RhbmRh cmQgcXVpdCBjaGFyLiAgKi8KICAgRnNldF9pbnB1dF9tb2RlIChRbmlsLCBRbmlsLCBtYWtlX2Zp eG51bSAoMiksIFFuaWwpOworCisjaWYgZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8xNikgfHwg ZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8yNTYpIHx8IGRlZmluZWQoVVNFX1czMkNPTlZUQ09M T1JfMjRCSVQpCisgIERXT1JEIG1vZGU7CisgIEdldENvbnNvbGVNb2RlIChjdXJfc2NyZWVuLCAm bW9kZSk7CisgIG1vZGUgfD0gRU5BQkxFX1ZJUlRVQUxfVEVSTUlOQUxfUFJPQ0VTU0lORzsKKyAg U2V0Q29uc29sZU1vZGUgKGN1cl9zY3JlZW4sIG1vZGUpOworI2VuZGlmCiB9CiAKIC8qIGhtbW0u Li4gcGVyaGFwcyB0aGVzZSBsZXQgdXMgYnJhY2tldCBzY3JlZW4gY2hhbmdlcyBzbyB0aGF0IHdl IGNhbiBmbHVzaApAQCAtNzI5LDYgKzc2MiwxMTAgQEAgdzMyX2ZhY2VfYXR0cmlidXRlcyAoc3Ry dWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKICAgcmV0dXJuIGNoYXJfYXR0cjsKIH0KIAorI2lm IGRlZmluZWQoVVNFX1czMkNPTlZUQ09MT1JfMTYpIHx8IGRlZmluZWQoVVNFX1czMkNPTlZUQ09M T1JfMjU2KSB8fCBkZWZpbmVkKFVTRV9XMzJDT05WVENPTE9SXzI0QklUKQorc3RhdGljIHZvaWQK K3R1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKK3sKKyAgc3RydWN0 IGZhY2UgKmZhY2UgPSBGQUNFX0ZST01fSUQgKGYsIGZhY2VfaWQpOworICB1bnNpZ25lZCBsb25n IGZnID0gZmFjZS0+Zm9yZWdyb3VuZDsKKyAgdW5zaWduZWQgbG9uZyBiZyA9IGZhY2UtPmJhY2tn cm91bmQ7CisgIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHkgPSBGUkFNRV9UVFkgKGYpOwor ICBEV09SRCByOworCisgIC8qIHJlYWxpemVfdHR5X2ZhY2UgaW4geGZhY2VzLmMgc3dhcHMgdGhl IHZhbHVlcyBvZiBmZyBhbmQgYmcgaWYKKyAgZmFjZS0+dHR5X3JldmVyc2VfcC4gQWRkaW5nIHRo ZSB0ZXJtaW5hbCBzZXF1ZW5jZSAiG1s3bSIgaGVyZQorICBzd2FwcyB0aGVtIGJhY2ssIGFuZCBt YWtlcyBmb3IgYSB0cmlja3kgbGl0dGxlIGJ1Zy4gQmV3YXJlISAqLworICBpZiAoZmFjZS0+dHR5 X2JvbGRfcCkKKyAgICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sICIbWzFtIiwgNCwgJnIsIE5V TEwpOworICBpZiAoZmFjZS0+dHR5X2l0YWxpY19wKQorICAgIFdyaXRlQ29uc29sZSAoY3VyX3Nj cmVlbiwgIhtbM20iLCA0LCAmciwgTlVMTCk7CisgIGlmIChmYWNlLT50dHlfc3RyaWtlX3Rocm91 Z2hfcCkKKyAgICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sICIbWzltIiwgNCwgJnIsIE5VTEwp OworICBpZiAoZmFjZS0+dW5kZXJsaW5lICE9IDApIC8qIG5vIHN1cHBvcnQgZm9yIG11bHRpY29s b3IgZ2x5cGhzIG5vdyAqLworICAgIFdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwgIhtbNG0iLCA0 LCAmciwgTlVMTCk7CisKKyAgaWYgKHR0eS0+VE5fbWF4X2NvbG9ycyA+IDApCisgICAgeworICAg ICAgaWYgKHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAxNiB8fCB0dHktPlROX21heF9jb2xvcnMgPT0g MjU2KQorCXsKKwkgIGlmIChmZyA+PSAwICYmIGZnIDwgOCkKKwkgICAgeworCSAgICAgIGNoYXIg cFsxMF07CisJICAgICAgc25wcmludGYocCwgMTAsICIbWyVsdW0iLCBmZyArIDMwKTsKKwkgICAg ICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIHAsIHN0cmxlbihwKSwgJnIsIE5VTEwpOworCSAg ICB9CisJICBpZiAoZmcgPj0gOCAmJiBmZyA8IDE2KQorCSAgICB7CisJICAgICAgY2hhciBwWzEw XTsKKwkgICAgICBzbnByaW50ZihwLCAxMCwgIhtbJWx1bSIsIGZnIC0gOCArIDkwKTsKKwkgICAg ICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIHAsIHN0cmxlbihwKSwgJnIsIE5VTEwpOworCSAg ICB9CisJICBpZiAoZmcgPj0gMTYgJiYgZmcgPCAyNTYpCisJICAgIHsKKwkgICAgICBjaGFyIHBb MjBdOworCSAgICAgIHNucHJpbnRmKHAsIDIwLCAiG1szODs1OyVsdW0iLCBmZyk7CisJICAgICAg V3JpdGVDb25zb2xlIChjdXJfc2NyZWVuLCBwLCBzdHJsZW4ocCksICZyLCBOVUxMKTsKKwkgICAg fQorCSAgaWYgKGJnID49IDAgJiYgYmcgPCA4KQorCSAgICB7CisJICAgICAgY2hhciBwWzEwXTsK KwkgICAgICBzbnByaW50ZihwLCAxMCwgIhtbJWx1bSIsIGJnICsgNDApOworCSAgICAgIFdyaXRl Q29uc29sZSAoY3VyX3NjcmVlbiwgcCwgc3RybGVuKHApLCAmciwgTlVMTCk7CisJICAgIH0KKwkg IGlmIChiZyA+PSA4ICYmIGJnIDwgMTYpCisJICAgIHsKKwkgICAgICBjaGFyIHBbMTBdOworCSAg ICAgIHNucHJpbnRmKHAsIDEwLCAiG1slbHVtIiwgYmcgLSA4ICsgMTAwKTsKKwkgICAgICBXcml0 ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIHAsIHN0cmxlbihwKSwgJnIsIE5VTEwpOworCSAgICB9CisJ ICBpZiAoYmc+PSAxNiAmJiBiZyA8IDI1NikKKwkgICAgeworCSAgICAgIGNoYXIgcFsyMF07CisJ ICAgICAgc25wcmludGYocCwgMjAsICIbWzQ4OzU7JWx1bSIsIGJnKTsKKwkgICAgICBXcml0ZUNv bnNvbGUgKGN1cl9zY3JlZW4sIHAsIHN0cmxlbihwKSwgJnIsIE5VTEwpOworCSAgICB9CisJfQor ICAgICAgZWxzZSBpZiAodHR5LT5UTl9tYXhfY29sb3JzID09IDE2Nzc3MjE2KQorCisKKwl7CisJ ICBjaGFyIHBbMzBdOworCSAgc25wcmludGYocCwzMCwgIhtbMzg7MjslbHU7JWx1OyVsdW0iLCBm Zy82NTUzNiwgKGZnLzI1NikmMjU1LCBmZyYyNTUpOworCSAgV3JpdGVDb25zb2xlIChjdXJfc2Ny ZWVuLCBwLCBzdHJsZW4ocCksICZyLCBOVUxMKTsKKworCSAgY2hhciBxWzMwXTsKKwkgIHNucHJp bnRmKHEsIDMwLCAiG1s0ODsyOyVsdTslbHU7JWx1bSIsIGJnLzY1NTM2LCAoYmcvMjU2KSYyNTUs IGJnJjI1NSk7CisJICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIHEsIHN0cmxlbihxKSwgJnIs IE5VTEwpOworCX0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCit0dXJuX29mZl9mYWNlIChzdHJ1 Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lkKQoreworICBzdHJ1Y3QgZmFjZSAqZmFjZSA9IEZBQ0Vf RlJPTV9JRCAoZiwgZmFjZV9pZCk7CisgIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHkgPSBG UkFNRV9UVFkgKGYpOworICBEV09SRCByOworCisgIGlmIChmYWNlLT50dHlfYm9sZF9wCisgICAg ICB8fCBmYWNlLT50dHlfaXRhbGljX3AKKyAgICAgIHx8IGZhY2UtPnR0eV9zdHJpa2VfdGhyb3Vn aF9wCisgICAgICB8fCAoZmFjZS0+dW5kZXJsaW5lICE9IDApKQorICAgIHsKKyAgICAgIFdyaXRl Q29uc29sZSAoY3VyX3NjcmVlbiwgIhtbbSIsIDMsICZyLCBOVUxMKTsKKyAgICB9CisgIC8qIFN3 aXRjaCBiYWNrIHRvIGRlZmF1bHQgY29sb3JzLiAgKi8KKyAgaWYgKHR0eS0+VE5fbWF4X2NvbG9y cyA+IDAKKyAgICAgICYmICgoZmFjZS0+Zm9yZWdyb3VuZCAhPSBGQUNFX1RUWV9ERUZBVUxUX0NP TE9SCisJICAgJiYgZmFjZS0+Zm9yZWdyb3VuZCAhPSBGQUNFX1RUWV9ERUZBVUxUX0ZHX0NPTE9S KQorCSAgfHwgKGZhY2UtPmJhY2tncm91bmQgIT0gRkFDRV9UVFlfREVGQVVMVF9DT0xPUgorCSAg ICAgICYmIGZhY2UtPmJhY2tncm91bmQgIT0gRkFDRV9UVFlfREVGQVVMVF9CR19DT0xPUikpKQor ICAgIHsKKyAgICAgIFdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwgIhtbMzk7NDltIiwgOCwgJnIs IE5VTEwpOworICAgIH0KK30KKyNlbmRpZgorCiAvKiBUaGUgSU1FIHdpbmRvdyBpcyBuZWVkZWQg dG8gcmVjZWl2ZSB0aGUgc2Vzc2lvbiBub3RpZmljYXRpb25zCiAgICByZXF1aXJlZCB0byByZXNl dCB0aGUgbG93IGxldmVsIGtleWJvYXJkIGhvb2sgc3RhdGUuICAqLwogCkBAIC04MzQsNyArOTcx LDcgQEAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQg KndpZHRoLCBpbnQgKmhlaWdodCkKIAlHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyAoY3VyX3Nj cmVlbiwgJmluZm8pOwogCiAJLyogU2hyaW5rIHRoZSB3aW5kb3cgZmlyc3QsIHNvIHRoZSBidWZm ZXIgZGltZW5zaW9ucyBjYW4gYmUKLSAgICAgICAgICAgcmVkdWNlZCBpZiBuZWNlc3NhcnkuICAq LworCSAgIHJlZHVjZWQgaWYgbmVjZXNzYXJ5LiAgKi8KIAluZXdfd2luX2RpbXMuVG9wID0gMDsK IAluZXdfd2luX2RpbXMuTGVmdCA9IDA7CiAJbmV3X3dpbl9kaW1zLkJvdHRvbSA9IG1pbiAobmV3 X3NpemUuWSwgaW5mby5kd1NpemUuWSkgLSAxOwpAQCAtOTU3LDcgKzEwOTQsNyBAQCB2b2lkCiBz eW1zX29mX250dGVybSAodm9pZCkKIHsKICAgREVGVkFSX0JPT0wgKCJ3MzItdXNlLWZ1bGwtc2Ny ZWVuLWJ1ZmZlciIsCi0gICAgICAgICAgICAgICB3MzJfdXNlX2Z1bGxfc2NyZWVuX2J1ZmZlciwK KwkgICAgICAgdzMyX3VzZV9mdWxsX3NjcmVlbl9idWZmZXIsCiAJICAgICAgIGRvYzogLyogTm9u LW5pbCBtZWFucyBtYWtlIHRlcm1pbmFsIGZyYW1lcyB1c2UgdGhlIGZ1bGwgc2NyZWVuIGJ1ZmZl ciBkaW1lbnNpb25zLgogVGhpcyBpcyBkZXNpcmFibGUgd2hlbiBydW5uaW5nIEVtYWNzIG92ZXIg dGVsbmV0LgogQSB2YWx1ZSBvZiBuaWwgbWVhbnMgdXNlIHRoZSBjdXJyZW50IGNvbnNvbGUgd2lu ZG93IGRpbWVuc2lvbnM7IHRoaXMKQEAgLTk2NSw2ICsxMTAyLDE1IEBAIG1heSBiZSBwcmVmZXJh YmxlIHdoZW4gd29ya2luZyBkaXJlY3RseSBhdCB0aGUgY29uc29sZSB3aXRoIGEgbGFyZ2UKIHNj cm9sbC1iYWNrIGJ1ZmZlci4gICovKTsKICAgdzMyX3VzZV9mdWxsX3NjcmVlbl9idWZmZXIgPSAw OwogCisgIERFRlZBUl9CT09MICgidzMyY29uLXVzZS12dC1jb2xvciIsCisJCXczMmNvbl91c2Vf dnRfY29sb3IsCisJCWRvYzogLyogTm9uLW5pbCBtZWFucyB3MzJjb25zb2xlIHVzZXMgdGVybWlu YWwgc2VxdWVuY2VzIHJhdGhlciB0aGFuIHczMiBjb25zb2xlIEFQSSBmb3IgY29sb3IuICovKTsK KyNpZiBkZWZpbmVkKFVTRV9XMzJDT05WVENPTE9SXzE2KSB8fCBkZWZpbmVkKFVTRV9XMzJDT05W VENPTE9SXzI1NikgfHwgZGVmaW5lZChVU0VfVzMyQ09OVlRDT0xPUl8yNEJJVCkKKyAgdzMyY29u X3VzZV92dF9jb2xvciA9IDE7CisjZWxzZQorICB3MzJjb25fdXNlX3Z0X2NvbG9yID0gMDsKKyNl bmRpZgorCiAgIGRlZnN1YnIgKCZTc2V0X3NjcmVlbl9jb2xvcik7CiAgIGRlZnN1YnIgKCZTZ2V0 X3NjcmVlbl9jb2xvcik7CiAgIGRlZnN1YnIgKCZTc2V0X2N1cnNvcl9zaXplKTsKLS0gCjIuNDku MAoK --b1=_Rhn6tfDfSMxcPXG4PNNUkaNbSgP0El2fhKWmQsCLrlo-- From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 24 03:20:19 2025 Received: (at 79298) by debbugs.gnu.org; 24 Aug 2025 07:20:19 +0000 Received: from localhost ([127.0.0.1]:43219 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uq51X-0006NS-6n for submit@debbugs.gnu.org; Sun, 24 Aug 2025 03:20:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57656) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uq51U-0006NC-P8; Sun, 24 Aug 2025 03:20:17 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uq51P-0004Tk-0V; Sun, 24 Aug 2025 03:20:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=luldEC5fLhQGPRGWCX9HrEgt9rAjcQqh9LfCO8Dlbh4=; b=fPFEaH45fpv8 2XCFzwrvDXzxkPQ1Qds5HCUWmfgN13fUWViLJ6xWGtKJcl4Cx4z72dub+LL9pQKnM8dZNI9l235ZG Gw+oTAthNi9+r4zqX9ui0YqYA+XZf3lpk5N7Z0I2gC6y53l7h/E7KHYfPZ3av7zCaHq9TqqHrY2m0 RHiK81gSof8Ob8dHHzTcXQQbBOGUd3eDmBjzrcEmcjysrE3HR8AzYhpShZTiVoTsstfhtkvSuUqCK VtM5czD1k36qZSF9ks8VTbYuPB7FnPWzCNqsmSTZTTOpn/7hPUynTZyXxCboys5QsdE605egESRcf 0Ec6E+UPgNZEoYluRD/fSw==; Date: Sun, 24 Aug 2025 10:20:08 +0300 Message-Id: <865xed89uf.fsf@gnu.org> From: Eli Zaretskii To: Ewan In-Reply-To: (bug-gnu-emacs@gnu.org) Subject: Re: bug#79298: patch: full color in windows terminal References: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) merge 79298 79297 thanks > Date: Sun, 24 Aug 2025 02:27:35 +0000 > From: Ewan via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > * configure.ac: Compiler flag for setting w32 console color space. > * lisp/term/w32console.el: Define and apply different color spaces. > * src/term.c: Set tty max colors based on compiler flag. > * src/w32console.c: Write face colors to console via VT sequences. Thanks. Such a large contribution will need you to sign a copyright-assignment agreement with the FSF. If you agree to do it, I will send you the form to fill and the instructions to go with it. > --- a/configure.ac > +++ b/configure.ac > @@ -299,6 +299,21 @@ AC_ARG_WITH([all], > [with_features=$withval], > [with_features=yes]) > > +AC_ARG_WITH([w32-vt-color], > +[AS_HELP_STRING([--with-w32-vt-color=ARG], > +[use VT sequences for w32 console color (ARG one of: no, 16, 156, 24bit)])], > +[ case "${withval}" in > + no ) val=no ;; > + 16 ) val=16 ;; > + 256 ) val=256 ;; > + 24bit ) val=24bit ;; > + * ) > + AC_MSG_ERROR(['--with-vt-color=$withval' is invalid; > + the value should be 'no', '16', '256', or '24bit']) ;; > + esac > + with_w32_vt_color=$val > +]) Why do we need this configure-time switch? why not compile this feature into Emacs unconditionally? > +(defun w32con-define-256-colors () > + "Defines 256 color space" The first line of a doc string should be a single complete sentence, and must end in a period (here and elsewhere in the patch). > + ;; Define the color space > + (tty-color-clear) > + (let ((ncolors (display-color-cells))) > + (cond ((= ncolors 16777216) (w32con-define-24bit-colors)) > + ((= ncolors 265 (w32con-define-256-colors))) > + (t (w32con-define-base-colors)))) > (clear-face-cache) > ;; Figure out what are the colors of the console window, and set up > ;; the background-mode correspondingly. > diff --git a/src/term.c b/src/term.c > index a1e3f6312c6..e762024bdd5 100644 > --- a/src/term.c > +++ b/src/term.c > @@ -4686,7 +4686,17 @@ use the Bourne shell command 'TERM=...; export TERM' (C-shell:\n\ > don't think we're losing anything by turning it off. */ > tty->line_ins_del_ok = 0; > > - tty->TN_max_colors = 16; /* Must be non-zero for tty-display-color-p. */ > + /* Support full range of colors in new windows terminal app */ > + #if defined(USE_W32CONVTCOLOR_16) > + tty->TN_max_colors = 16; > + #elif defined(USE_W32CONVTCOLOR_256) > + tty->TN_max_colors = 256; > + #elif defined(USE_W32CONVTCOLOR_24BIT) > + tty->TN_max_colors = 16777216; > + #else > + /* Must be non-zero for tty-display-color-p. */ > + tty->TN_max_colors = 16; > + #endif I think it's sub-optimal to have this conditioned on the build-time conditions. I think users should be able to change the number of supported colors when starting Emacs (using the --color command-line option) and/or from within a running Emacs session by changing the value of a variable. Could you please rework the patch to allow that? > +#if defined(USE_W32CONVTCOLOR_16) || defined(USE_W32CONVTCOLOR_256) || defined(USE_W32CONVTCOLOR_24BIT) > + if (!WriteConsole (cur_screen, conversion_buffer, > + coding->produced, &r, NULL)) > + { > + printf ("Failed writing console characters: %lu\n", > + GetLastError ()); > + fflush (stdout); > + } We cannot use such printf's in a production session. I guess this is debugging code that should be removed? > +#if defined(USE_W32CONVTCOLOR_16) || defined(USE_W32CONVTCOLOR_256) || defined(USE_W32CONVTCOLOR_24BIT) > + DWORD mode; > + GetConsoleMode (cur_screen, &mode); > + mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; > + SetConsoleMode (cur_screen, mode); > +#endif AFAIK, the ENABLE_VIRTUAL_TERMINAL_PROCESSING is not supported on Windows 9X (which we still strive to support). So either we should make sure it is ignored on those old systems, or we should disable these enhanced color modes on those systems. > + snprintf(p, 10, "[%lum", fg + 30); Our style is to leave 1 space between the function's name and the following opening parenthesis. > + WriteConsole (cur_screen, p, strlen(p), &r, NULL); > + } > + if (fg >= 8 && fg < 16) > + { > + char p[10]; > + snprintf(p, 10, "[%lum", fg - 8 + 90); > + WriteConsole (cur_screen, p, strlen(p), &r, NULL); > + } > + if (fg >= 16 && fg < 256) > + { > + char p[20]; > + snprintf(p, 20, "[38;5;%lum", fg); > + WriteConsole (cur_screen, p, strlen(p), &r, NULL); > + } > + if (bg >= 0 && bg < 8) > + { > + char p[10]; > + snprintf(p, 10, "[%lum", bg + 40); > + WriteConsole (cur_screen, p, strlen(p), &r, NULL); > + } > + if (bg >= 8 && bg < 16) > + { > + char p[10]; > + snprintf(p, 10, "[%lum", bg - 8 + 100); > + WriteConsole (cur_screen, p, strlen(p), &r, NULL); > + } > + if (bg>= 16 && bg < 256) > + { > + char p[20]; > + snprintf(p, 20, "[48;5;%lum", bg); > + WriteConsole (cur_screen, p, strlen(p), &r, NULL); > + } > + } > + else if (tty->TN_max_colors == 16777216) > + > + > + { > + char p[30]; > + snprintf(p,30, "[38;2;%lu;%lu;%lum", fg/65536, (fg/256)&255, fg&255); > + WriteConsole (cur_screen, p, strlen(p), &r, NULL); > + > + char q[30]; > + snprintf(q, 30, "[48;2;%lu;%lu;%lum", bg/65536, (bg/256)&255, bg&255); > + WriteConsole (cur_screen, q, strlen(q), &r, NULL); > + } > + } Can we make this code more compact, like by using fewer snprintf calls (since they are all so much alike), and just a single WriteConsole call for each of foreground and background colors? Finally, these changes will need a NEWS entry and suitable additions/changes to the user manual. Thanks again for working on this. From debbugs-submit-bounces@debbugs.gnu.org Mon Aug 25 02:09:52 2025 Received: (at 79298) by debbugs.gnu.org; 25 Aug 2025 06:09:52 +0000 Received: from localhost ([127.0.0.1]:47920 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uqQOu-0002Ej-1e for submit@debbugs.gnu.org; Mon, 25 Aug 2025 02:09:52 -0400 Received: from mail-24421.protonmail.ch ([109.224.244.21]:16807) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uqQOp-0002EL-Pm for 79298@debbugs.gnu.org; Mon, 25 Aug 2025 02:09:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756102180; x=1756361380; bh=sVZeC4pZngH/VIeQPh9pG/Y2oArYFcURNz9Zd7cp6EA=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=v5oF9cnQafUZHZyN8SXu84WTTk3wjSACr0K9sPoTXRaur5WheSZ+KgnqEZTDu9hfY bk+2d+K+fVNXq3sEz2HgNeHoIP8lyXEIwnsawovcpXm9ELp4VWe/bpCpvkt/9yGprT /bfC1zlN6HKQX9AddF5R494mbyCFGW9tF3Rcg29YyBny/NLZV3wRj8sJTXFUeoRPea Moj8wKXLvr935oG3MV+yYFDHNoK93QZSz/Bp4hHPdYTXEnbFb7WyJX6NSGCaqtYjPp 7+YSssM3vDLZ89T1Oj9T6clGvs+QgPWAaFbfspn80EdfVcfdKl3MLdOiB0dYVUHCPK AaSzL+Jck7F/g== Date: Mon, 25 Aug 2025 06:09:37 +0000 To: Eli Zaretskii , "79298@debbugs.gnu.org" <79298@debbugs.gnu.org> From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: References: <865xed89uf.fsf@gnu.org> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: bc08385cb16625b9dfcb49a6b10244f6f754e3b7 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -1.0 (-) X-Debbugs-Envelope-To: 79298 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.0 (--) > merge 79298 79297 > Such a large contribution will need you to sign a > copyright-assignment agreement with the FSF. I assumed as much, and have sent off my details in the form request to assi= gn@gnu.org. If it's easier for you to just send me the form, that works too! > > --- a/configure.ac > > +++ b/configure.ac > > @@ -299,6 +299,21 @@ AC_ARG_WITH([all], > > [with_features=3D$withval], > > [with_features=3Dyes]) > >=20 > > +AC_ARG_WITH([w32-vt-color], > > +[AS_HELP_STRING([--with-w32-vt-color=3DARG], > > +[use VT sequences for w32 console color (ARG one of: no, 16, 156, 24bi= t)])], > > ... >=20 > Why do we need this configure-time switch? why not compile this > feature into Emacs unconditionally? This work was inherited from someone else, and I had wondered the same... I had some worries about supporting Windows Console Host (still 16-color), but on further review, they've implemented a mapping from 24bit RGB. Happy to remove the compiler flags and default to 24bit! > I think it's sub-optimal to have this conditioned on the build-time > conditions. I think users should be able to change the number of > supported colors when starting Emacs (using the --color command-line > option) and/or from within a running Emacs session by changing the > value of a variable. Could you please rework the patch to allow that? Will do (just need to figure out where the --color arg gets processed). > > +#if defined(USE_W32CONVTCOLOR_16) || defined(USE_W32CONVTCOLOR_256) ||= defined(USE_W32CONVTCOLOR_24BIT) > > + if (!WriteConsole (cur_screen, conversion_buffer, > > + coding->produced, &r, NULL)) > > + { > > + printf ("Failed writing console characters: %lu\n", > > + GetLastError ()); > > + fflush (stdout); > > + } >=20 > We cannot use such printf's in a production session. I guess this is > debugging code that should be removed? I suspect so, and the existing ones got duplicated in the changes I inherit= ed. I'll remove them in the revised patch. > > +#if defined(USE_W32CONVTCOLOR_16) || defined(USE_W32CONVTCOLOR_256) ||= defined(USE_W32CONVTCOLOR_24BIT) > > + DWORD mode; > > + GetConsoleMode (cur_screen, &mode); > > + mode |=3D ENABLE_VIRTUAL_TERMINAL_PROCESSING; > > + SetConsoleMode (cur_screen, mode); > > +#endif >=20 > AFAIK, the ENABLE_VIRTUAL_TERMINAL_PROCESSING is not supported on > Windows 9X (which we still strive to support). Will it be sufficient to disable the enhanced color modes on start up, but still allow W9 users to activate them (at their own peril)? > > + WriteConsole (cur_screen, p, strlen(p), &r, NULL); > > + } > > + if (fg >=3D 8 && fg < 16) > > + { > > + char p[10]; > > + snprintf(p, 10, "=1B[%lum", fg - 8 + 90); > > + WriteConsole (cur_screen, p, strlen(p), &r, NULL); > > + } > > + ... >=20 > Can we make this code more compact, like by using fewer snprintf calls > (since they are all so much alike), and just a single WriteConsole > call for each of foreground and background colors? More compact, definitely, and we should actually be able to get away with: - one WriteConsole call for turning the face on - one WriteConsole call for writing the text - one WriteConsole call for turning the face off > Finally, these changes will need a NEWS entry and suitable > additions/changes to the user manual. I'll add a NEWS entry. I'm not sure what exactly editing the manual entails, but happy to do so. I'll make these changes in the next few days and send off a new patch. Best, - Ewan From debbugs-submit-bounces@debbugs.gnu.org Mon Aug 25 06:50:29 2025 Received: (at 79298) by debbugs.gnu.org; 25 Aug 2025 10:50:29 +0000 Received: from localhost ([127.0.0.1]:48553 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uqUmS-0001rp-Lr for submit@debbugs.gnu.org; Mon, 25 Aug 2025 06:50:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49612) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uqUmO-0001rY-UO for 79298@debbugs.gnu.org; Mon, 25 Aug 2025 06:50:26 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uqUmH-0000Iy-VG; Mon, 25 Aug 2025 06:50:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=zSOeaFYSorMxCdTau+wil9ociNLwwRBx91XsEtam0D8=; b=PJa9YUFGWVYe lTAGzLjSYlymtHGKuCFKShrz8bgiwyxCtGdqqiswmZNrP28y09STQSDQrncfkgE7/yVM1e/UWHqGI goMERyNY6GiWckc8ooy0nYCOjFPkWIAcp14mO4jO2K/iUQtnsL41x81/KR4/fFvUWU34haob7rrkM VOfk7YDIsoYuDuc3Vl+dXp7LuNYWNc5l7/cfD1mEBDNEkj0mq1raUKnQrPoU3er/6qUH5O2gBfgrs n0Ic0XArBLBx+aFRUCGxtBogPOwqqHlZvPK/QtjJsMzoaXgmHmk0roD1VjulnvvUDCRlYj6g3//yh 80UfKkosLHee9tBZKcMAeA==; Date: Mon, 25 Aug 2025 13:50:12 +0300 Message-Id: <86sehf65gb.fsf@gnu.org> From: Eli Zaretskii To: Ewan In-Reply-To: (message from Ewan on Mon, 25 Aug 2025 06:09:37 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <865xed89uf.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 25 Aug 2025 06:09:37 +0000 > From: Ewan > > > > merge 79298 79297 > > > Such a large contribution will need you to sign a > > copyright-assignment agreement with the FSF. > > > I assumed as much, and have sent off my details in the form request to assign@gnu.org. > If it's easier for you to just send me the form, that works too! Thanks, form sent off-list. > > > --- a/configure.ac > > > +++ b/configure.ac > > > @@ -299,6 +299,21 @@ AC_ARG_WITH([all], > > > [with_features=$withval], > > > [with_features=yes]) > > > > > > +AC_ARG_WITH([w32-vt-color], > > > +[AS_HELP_STRING([--with-w32-vt-color=ARG], > > > +[use VT sequences for w32 console color (ARG one of: no, 16, 156, 24bit)])], > > > ... > > > > Why do we need this configure-time switch? why not compile this > > feature into Emacs unconditionally? > > > This work was inherited from someone else, and I had wondered the same... Hmm... the fact that some of the code is "inherited from someone else" worries me. If the code you took from someone else's work is substantial (more than, say, 15 lines), we will need that other person to assign the copyright to the FSF, in addition to your assignment. Can you tell who is that other person and how much of the code he/she wrote? > > I think it's sub-optimal to have this conditioned on the build-time > > conditions. I think users should be able to change the number of > > supported colors when starting Emacs (using the --color command-line > > option) and/or from within a running Emacs session by changing the > > value of a variable. Could you please rework the patch to allow that? > > > Will do (just need to figure out where the --color arg gets processed). It is processed in lisp/startup.el. > > AFAIK, the ENABLE_VIRTUAL_TERMINAL_PROCESSING is not supported on > > Windows 9X (which we still strive to support). > > Will it be sufficient to disable the enhanced color modes on start up, > but still allow W9 users to activate them (at their own peril)? Yes. > > > + WriteConsole (cur_screen, p, strlen(p), &r, NULL); > > > + } > > > + if (fg >= 8 && fg < 16) > > > + { > > > + char p[10]; > > > + snprintf(p, 10, "[%lum", fg - 8 + 90); > > > + WriteConsole (cur_screen, p, strlen(p), &r, NULL); > > > + } > > > + ... > > > > Can we make this code more compact, like by using fewer snprintf calls > > (since they are all so much alike), and just a single WriteConsole > > call for each of foreground and background colors? > > > More compact, definitely, and we should actually be able to get away with: > - one WriteConsole call for turning the face on > - one WriteConsole call for writing the text > - one WriteConsole call for turning the face off > > > Finally, these changes will need a NEWS entry and suitable > > additions/changes to the user manual. > > > I'll add a NEWS entry. Thanks. > I'm not sure what exactly editing the manual entails, but happy to do so. At least the description of --color in the user manual should be adjusted: it currently says that it has no effect on Windows. I think the way to turn on/off 24-bit colors in a running session should also be mentioned in the MS-Windows-specific appendix to the user manual. > I'll make these changes in the next few days and send off a new patch. TIA From debbugs-submit-bounces@debbugs.gnu.org Mon Aug 25 08:06:41 2025 Received: (at 79298) by debbugs.gnu.org; 25 Aug 2025 12:06:41 +0000 Received: from localhost ([127.0.0.1]:48803 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uqVyC-0008OE-OA for submit@debbugs.gnu.org; Mon, 25 Aug 2025 08:06:41 -0400 Received: from mail-10625.protonmail.ch ([79.135.106.25]:16625) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uqVy8-0008Ns-0M for 79298@debbugs.gnu.org; Mon, 25 Aug 2025 08:06:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756123587; x=1756382787; bh=TD1SLZbEXwZIC/dra40Pr05oHE7xkv61bXUSg0KX5Bw=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=NMcSz27upXwDmqgFz0NIt0ypaak1jn4WmBrBf1nVMCRML4UiLpoZeYJSrvEuVroaO jJXPCPI3YMKHHRPxDqKhcybfDcRej8MJMR6fEDJG4V+jtANfXhm8+O5xx2u9Hgvff7 mZuV8niJGlgTUzLNFp6zhz1x16qv2OXP/k0ae7gAap/pLhgtAfOswe8I4bY94PbiaC azeCaYmAvQK3qMo8u2bXA6LEChjZ7hjCtJW9uLnib91N3x2lBbOWjcuzjtYMUBSK6D cvZ0F4ljthFttpGtvEq8scyknfqKO2/jXj4Ou778I2boyIziT8tlW0+OiBbNH8qXKz OajdUdyi9/y0Q== Date: Mon, 25 Aug 2025 12:06:22 +0000 To: Eli Zaretskii From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: <86sehf65gb.fsf@gnu.org> References: <865xed89uf.fsf@gnu.org> <86sehf65gb.fsf@gnu.org> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 43134bbf754f34684f88a925f3f474b856a32d9a MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -1.0 (-) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.0 (--) > Hmm... the fact that some of the code is "inherited from someone else" > worries me. If the code you took from someone else's work is > substantial (more than, say, 15 lines), we will need that other person > to assign the copyright to the FSF, in addition to your assignment. > Can you tell who is that other person and how much of the code he/she > wrote? The initial patch drew heavily (>15 lines) from this public fork of emacs: https://github.com/tsuu32/emacs-w32con-vt >From breadcrumbs in the working tree and other GNU mailing list discussions= , I gather the owner of that repo has this address: tsuucat icloud.com, and has contributed patches in the past, but I don't know them. The revised patch differs substantially, but I suspect it will keep some small chunks of color-computing code, as the forumulas are what they are. > > Will do (just need to figure out where the --color arg gets processed). > It is processed in lisp/startup.el. Thank you! > At least the description of --color in the user manual should be > adjusted: it currently says that it has no effect on Windows. I think > the way to turn on/off 24-bit colors in a running session should also > be mentioned in the MS-Windows-specific appendix to the user manual. I'll take a look! From debbugs-submit-bounces@debbugs.gnu.org Mon Aug 25 09:31:37 2025 Received: (at 79298) by debbugs.gnu.org; 25 Aug 2025 13:31:37 +0000 Received: from localhost ([127.0.0.1]:49140 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uqXIO-0004R4-OK for submit@debbugs.gnu.org; Mon, 25 Aug 2025 09:31:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38194) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uqXII-0004Qg-7x for 79298@debbugs.gnu.org; Mon, 25 Aug 2025 09:31:33 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uqXIC-0002jC-6O; Mon, 25 Aug 2025 09:31:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=MBpyaZrgJZceqXX0IbIcfZd5eHibzuvrHscct12wi9k=; b=OgxipGcGBQKA VRKJnt+wlJYbEJNfn6cSvNvwR6QehlDvPD6Q5C6TGdAZshkU8QA+NdmeUAwosDd+AE0O0kpDwR8Ne twcLfcZSYxKe5aGIyXS6YQpkP0rT1SbYyi6w7r7PyqPVyVVjGYgH+OHiNH5Gt4pGEXgVH5oe/q0h9 bHUlEqrtSzreoOvsPXoyU6sXBregvVLYKJ9sZdkY7YQeMH6V0lC0tP7yzDl38qD85O2rfDztxMMCX Bg95AZqh8OLldBicge8M6tYtDSOCapQ3McMPITbUTgHUA/GTTlagTxhnb2M2WdOLkutxnp3zPpzCj n5W3qnryPbSXZBcVQPlr7w==; Date: Mon, 25 Aug 2025 16:31:19 +0300 Message-Id: <86a53nwms8.fsf@gnu.org> From: Eli Zaretskii To: Ewan In-Reply-To: (message from Ewan on Mon, 25 Aug 2025 12:06:22 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <865xed89uf.fsf@gnu.org> <86sehf65gb.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 25 Aug 2025 12:06:22 +0000 > From: Ewan > Cc: 79298@debbugs.gnu.org > > > Hmm... the fact that some of the code is "inherited from someone else" > > worries me. If the code you took from someone else's work is > > substantial (more than, say, 15 lines), we will need that other person > > to assign the copyright to the FSF, in addition to your assignment. > > Can you tell who is that other person and how much of the code he/she > > wrote? > > The initial patch drew heavily (>15 lines) from this public fork of emacs: > https://github.com/tsuu32/emacs-w32con-vt > > >From breadcrumbs in the working tree and other GNU mailing list discussions, > I gather the owner of that repo has this address: tsuucat icloud.com, > and has contributed patches in the past, but I don't know them. > > The revised patch differs substantially, but I suspect it will keep some > small chunks of color-computing code, as the forumulas are what they are. Can you identify those formulas in the patch you submitted? From debbugs-submit-bounces@debbugs.gnu.org Mon Aug 25 16:24:11 2025 Received: (at 79298) by debbugs.gnu.org; 25 Aug 2025 20:24:11 +0000 Received: from localhost ([127.0.0.1]:51453 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uqdjf-0002sx-Cj for submit@debbugs.gnu.org; Mon, 25 Aug 2025 16:24:11 -0400 Received: from mail-4323.protonmail.ch ([185.70.43.23]:42583) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uqdja-0002rv-AH for 79298@debbugs.gnu.org; Mon, 25 Aug 2025 16:24:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756153439; x=1756412639; bh=IME4H8SxqQAv+XZtQaeJKpYNAEbfjokEpcfj8xZisG4=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=JoUonFQLsC+rZY3yYfgP4Ik2y0Fw/WCNRsjQXVf9Z5t9OmpCRN/RjgYZJ4xcoOm1r KZopRNgD5M3yNpLs8zv6/zPEUqeUwhPdhMQt/tQMeGCrPBhzdT5AeYtmc7FDHll1bx wxt8DZ604UCLklRre9f5GYwPNi7FavMFRGOMO/Ks39QXovrRG1oN5UCTaN7Qm+htGf XsbzeNzWPfFQT5HzSpbLP39hVjw0xLNrg83RoXwtJ5diRs4KyfjxnT5etplSr4z0Bm AcaJ0XQyRQ8kyLv5ChSCaaI46YStG1SiaYha0YIysB3anmzyu8iXBBwgj8cdMF17XL QM4F11Npf9fVg== Date: Mon, 25 Aug 2025 20:23:52 +0000 To: Eli Zaretskii From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: <86a53nwms8.fsf@gnu.org> References: <865xed89uf.fsf@gnu.org> <86sehf65gb.fsf@gnu.org> <86a53nwms8.fsf@gnu.org> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: e5f9bdff1d4d3970a7e0746f0005b6739bc71bd5 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > > The initial patch drew heavily (>15 lines) from this public fork of ema= cs: > > https://github.com/tsuu32/emacs-w32con-vt > >=20 > > The revised patch differs substantially, but I suspect it will keep som= e > > small chunks of color-computing code, as the forumulas are what they ar= e. >=20 >=20 > Can you identify those formulas in the patch you submitted? In lisp/term/w32console.el, the definition and application of convert-to-16= -bit=20 in the body of w32con-define-256-colors, and the overall of shape of the w32con-define-N-colors functions. In src/w32console.c, within turn_on_face, the conversions of fg and bg whic= h=20 yield substituends in the calls to snprintf . From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 26 07:03:23 2025 Received: (at 79298) by debbugs.gnu.org; 26 Aug 2025 11:03:23 +0000 Received: from localhost ([127.0.0.1]:54443 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uqrSV-0006IF-B7 for submit@debbugs.gnu.org; Tue, 26 Aug 2025 07:03:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38878) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uqrSQ-0006Hx-H5 for 79298@debbugs.gnu.org; Tue, 26 Aug 2025 07:03:19 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uqrSK-0003ko-7D; Tue, 26 Aug 2025 07:03:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=FLQ4Ytb4umEoQuQlBuIB0q+V+OArgcq4cAuD35g4b7o=; b=ieaVZXM9/OIN EpTJsrYTUwmgqM25ljUE60J5dWxzpGrNKOore+p2FIckDAiICiBcR4K7PqTDuH9LaN2kDmWkJopKd vVkwZpIqltwEVVjICKm+jsF/BJLlmdRQuAB8y3pdO4oYOid0ze4h7uPQg3hyXaNM4f8AmJEVqyvqp FgFEsdU5mwyb40s9/B2rwbr27z80UhlOWqe9bSdlGw5kkxM2zaN2mbxpiCqZFq09h/jafvqlQFs9p 2m7ZNXmCdl2ZGmJSAbBIwpKpeSEsj4g9t7cwIVEM49EZSDTconCeFpeOiV5KOi+jDyiyjwfnNAtbP A83rLgpP/YnHDsxXr6iHag==; Date: Tue, 26 Aug 2025 14:02:37 +0300 Message-Id: <86plciuz02.fsf@gnu.org> From: Eli Zaretskii To: Ewan In-Reply-To: (message from Ewan on Mon, 25 Aug 2025 20:23:52 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <865xed89uf.fsf@gnu.org> <86sehf65gb.fsf@gnu.org> <86a53nwms8.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 25 Aug 2025 20:23:52 +0000 > From: Ewan > Cc: 79298@debbugs.gnu.org > > > > The initial patch drew heavily (>15 lines) from this public fork of emacs: > > > https://github.com/tsuu32/emacs-w32con-vt > > > > > > The revised patch differs substantially, but I suspect it will keep some > > > small chunks of color-computing code, as the forumulas are what they are. > > > > > > Can you identify those formulas in the patch you submitted? > > In lisp/term/w32console.el, the definition and application of convert-to-16-bit > in the body of w32con-define-256-colors, and the overall of shape of the > w32con-define-N-colors functions. > > In src/w32console.c, within turn_on_face, the conversions of fg and bg which > yield substituends in the calls to snprintf . Thanks. Is there some Microsoft documentation that describes how to convert fg and bg colors to virtual console escape sequences? If so, can you point to it? From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 27 00:29:28 2025 Received: (at 79298) by debbugs.gnu.org; 27 Aug 2025 04:29:28 +0000 Received: from localhost ([127.0.0.1]:58255 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ur7mp-0006R9-OM for submit@debbugs.gnu.org; Wed, 27 Aug 2025 00:29:28 -0400 Received: from mail-10626.protonmail.ch ([79.135.106.26]:24141) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ur7mk-0006Qs-Dz for 79298@debbugs.gnu.org; Wed, 27 Aug 2025 00:29:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756268954; x=1756528154; bh=blt0gSORNk4vevCQDXKWIOHeg56pfhojp1y7SsdM/8A=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=rxzYJ5jQkckVBEyZpcv6ZRr/9hSJMFrF36bBqY0p/liinaR3mwYAN1inOi8iAxDgq j9cTCgf66mGxMorXLMdEqHdKZNnVIC7+Tpm1eWhfWiQ+UjDb6lJFyOC3edq9iVdpsS 8yJLRarE8/K6EW8gI3e5E6kalW+LNVDn3JOPrRObH/Di7RObz6FwiSWMfZfax8Ro5h WRfZ7n/1johlPij03N7ilppAjcu0OVMOKtzb8mOEpJp/9+REBM70YA6Bl90MruYomf 5O3w2W2qYKkXmzaJ2ufKzN24H4X8Vbz0PEp4qb+o9/HzkajymN/ZK9J6pYU37XjxN8 w76okVc9Kvnmw== Date: Wed, 27 Aug 2025 04:29:00 +0000 To: Eli Zaretskii , "79298@debbugs.gnu.org" <79298@debbugs.gnu.org> From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: <86plciuz02.fsf@gnu.org> References: <865xed89uf.fsf@gnu.org> <86sehf65gb.fsf@gnu.org> <86a53nwms8.fsf@gnu.org> <86plciuz02.fsf@gnu.org> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: c9c2aaaeb829f32dc0480c6959272078400df662 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Tuesday, August 26th, 2025 at 4:03 AM, Eli Zaretskii wrot= e: > > > Date: Mon, 25 Aug 2025 20:23:52 +0000 > > > From: Ewan ewan@etown.dev > > Cc: 79298@debbugs.gnu.org > > > > > > The initial patch drew heavily (>15 lines) from this public fork of= emacs: > > > > https://github.com/tsuu32/emacs-w32con-vt > > > > > > > > The revised patch differs substantially, but I suspect it will keep= some > > > > small chunks of color-computing code, as the forumulas are what the= y are. > > > > > > Can you identify those formulas in the patch you submitted? > > > > In lisp/term/w32console.el, the definition and application of convert-t= o-16-bit > > in the body of w32con-define-256-colors, and the overall of shape of th= e > > w32con-define-N-colors functions. Note, those functions appear to be pulled, with minor changes, from xterm.e= l. > > In src/w32console.c, within turn_on_face, the conversions of fg and bg = which > > yield substituends in the calls to snprintf . > > > Thanks. Is there some Microsoft documentation that describes how to > convert fg and bg colors to virtual console escape sequences? If so, > can you point to it? The conversion is derived from the table in this spec: https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-= sequences#text-formatting I can also include the link in the source code, but it may go dead some day= . From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 27 08:11:34 2025 Received: (at 79298) by debbugs.gnu.org; 27 Aug 2025 12:11:35 +0000 Received: from localhost ([127.0.0.1]:59833 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1urF02-0007Ee-Ga for submit@debbugs.gnu.org; Wed, 27 Aug 2025 08:11:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35696) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1urEzy-0007EL-T2 for 79298@debbugs.gnu.org; Wed, 27 Aug 2025 08:11:31 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1urEzr-0001vu-12; Wed, 27 Aug 2025 08:11:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=l7msnwYm0OT6J+IACtoDhRgmdq9pB7a089+noRGuJe4=; b=SwnXOIn2Lskq yjA35fwNBEjOk4TGsy3aT/KCDHq2+LAQ5DM04JauFuJqW4NA/nrGAPLJftXAFq5JR45ZMxWZS2A+M RE1y5AojFHYURUD2N2J5ns61gbBX8hvHoL3I2nfTfBxvFb3kUEQC7kOiqUZD6rG8C+kt+o6ntYtm+ D/QULklxRkflHF9loSAxmRxpuFutGaGGQxjO1uVIGUegJ9JdLj4x6BOKKeIwSCro095PiZvMEqynl Svre4l23vErxTHlits6+5ebqCTrxWnhhXhgzkOy6OLay0upIwJTrKvRb4j3TJAYJnJI4ZO/KfwTQE fBwuzCYnU1XxUqnQCXEUXQ==; Date: Wed, 27 Aug 2025 15:11:15 +0300 Message-Id: <86sehdt15o.fsf@gnu.org> From: Eli Zaretskii To: Ewan In-Reply-To: (message from Ewan on Wed, 27 Aug 2025 04:29:00 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <865xed89uf.fsf@gnu.org> <86sehf65gb.fsf@gnu.org> <86a53nwms8.fsf@gnu.org> <86plciuz02.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Wed, 27 Aug 2025 04:29:00 +0000 > From: Ewan > > On Tuesday, August 26th, 2025 at 4:03 AM, Eli Zaretskii wrote: > > > > > > Can you identify those formulas in the patch you submitted? > > > > > > In lisp/term/w32console.el, the definition and application of convert-to-16-bit > > > in the body of w32con-define-256-colors, and the overall of shape of the > > > w32con-define-N-colors functions. > > Note, those functions appear to be pulled, with minor changes, from xterm.el. > > > > In src/w32console.c, within turn_on_face, the conversions of fg and bg which > > > yield substituends in the calls to snprintf . > > > > > > Thanks. Is there some Microsoft documentation that describes how to > > convert fg and bg colors to virtual console escape sequences? If so, > > can you point to it? > > The conversion is derived from the table in this spec: > https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#text-formatting Thanks. I think with this information, and with the rewriting to make the code more concise (as we already discussed), the actual code taken from the other person is mall and/or trivial enough for us not to bother about the legal issues. > I can also include the link in the source code, but it may go dead some day. Please do include the link. We will update it as needed. From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 05:35:57 2025 Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 09:35:57 +0000 Received: from localhost ([127.0.0.1]:38616 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utjuH-00043T-DU for submit@debbugs.gnu.org; Wed, 03 Sep 2025 05:35:57 -0400 Received: from mail-4317.protonmail.ch ([185.70.43.17]:50357) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1utjuC-00043D-3s for 79298@debbugs.gnu.org; Wed, 03 Sep 2025 05:35:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756892143; x=1757151343; bh=dKm9CN+s2MHcDqGWdoP/tEqPaViPqWYttJBMx9gfYf4=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=BxvH4YhNkb4NZQdOyaIzU+14/7/vCDAFhBqj3uN6oU/0PjVFBRQ1obqDnLd1dyCfb n0rUAV7H38/Ur5grJPbm8XXHsqG8LnqoWenDcGdBnY7ws51MVtAGfmKwKuc5LCUN3E ELl4wgQuwIN6fbVQn8lRDzDhkNRcNcgCpuxOPz3qoIX13bhjKQq2UTSiVEP0vGmbze JFi5rRrRGYp1dgUlM9gjcfvs7dPhfbq37736A2YPOY447GhAX5zIwpaj21RIfXqaXi oQhQDXP+lVcw8Nv22vDRdZc2BJBKa40K4/VJqVlegu5BC1bldQRgau59NWlWsiPzS6 JY0No6OfkJ5Fw== Date: Wed, 03 Sep 2025 09:35:37 +0000 To: Eli Zaretskii From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: <86sehdt15o.fsf@gnu.org> References: <86sehf65gb.fsf@gnu.org> <86a53nwms8.fsf@gnu.org> <86plciuz02.fsf@gnu.org> <86sehdt15o.fsf@gnu.org> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 47a494a5f8115d4cd905706ca86b27406a7b65b7 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_sbrzwfTTCXEvR1WjmejcVCxeVBJpijs6jBL1w5FbI" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --b1=_sbrzwfTTCXEvR1WjmejcVCxeVBJpijs6jBL1w5FbI Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable I'm still waiting on a disclaimer, but in the meantime, I have attached=20 the revised patch (with a slightly broadened scope). Basically, it's much smoother to do a wholesale migration from the Windows Console API to ASCII control sequences, controlled by an auto-set feature f= lag. However, (1) ASCII control sequences require moving the cursor during redisplay, (2) the Windows system cursor picks up these movements, and (3) redisplay is slow enough that cursor jumps to the echo area are percept= ible. So, I've also implemented some changes to cursor handling in Windows TTY. If the existing variable 'w32-use-visible-system-caret is nil (the default)= , then we always hide the system cursor, and Emacs handles cursor display. This is the smoothest UX, currently limited to a non-blinking solid cursor. Otherwise, the system cursor is used, but we hide it momentarily when redisplaying the echo area, resulting in a slight cursor flicker in-place (the alternative being a noticeable "flashing" of the cursor in the echo ar= ea). More details in the included news entries and changes to the manual. Logs: * doc/emacs/cmdargs.texi: Added 24-bit option and note re: --color on Windo= ws. * doc/emacs/msdos.texi: Documented VT sequence migration and feature flag(s= ). * etc/NEWS.30: Entries on VT sequences (color) and cursor display. * lisp/term/tty-colors.el: Added '24bit cell in tty-color-mode-alist. * lisp/term/w32console.el: Changes/additions enabling VT sequence migration= . * src/dispnew.c: WINDOWSNT-specific segments for w32- and Emacs-drawn curso= r(s). * src/term.c: Extended existing TTY color infrastructure to include WINDOWS= NT. * src/termchar.h: Added extern decl. (tty_setup_colors) for use in w32conso= le.c. * src/w32console.c: Migration to ASCII control sequences (feature-flagged). * src/xdisp.c: Modified #if condition to call set_tty_color_mode for WINDOW= SNT. --b1=_sbrzwfTTCXEvR1WjmejcVCxeVBJpijs6jBL1w5FbI Content-Type: application/octet-stream; name=0001-Windows-TTY-Migration-to-Virtual-Terminal-Sequences.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-Windows-TTY-Migration-to-Virtual-Terminal-Sequences.patch RnJvbSA4ZjZjNjQ1NmE1ZmZjN2FlYWQ1N2ViNDM4ZGNkZmM0YWI1NTEyMDY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFdlZCwg MyBTZXAgMjAyNSAwMTo0NzoyMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFdpbmRvd3MgVFRZIE1p Z3JhdGlvbiB0byBWaXJ0dWFsIFRlcm1pbmFsIFNlcXVlbmNlcwoKLS0tCiBkb2MvZW1hY3MvY21k YXJncy50ZXhpICB8ICAgOSArLQogZG9jL2VtYWNzL21zZG9zLnRleGkgICAgfCAgNDggKystCiBl dGMvTkVXUy4zMCAgICAgICAgICAgICB8ICAyOSArKwogbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwg fCAgIDMgKy0KIGxpc3AvdGVybS93MzJjb25zb2xlLmVsIHwgMTUyICsrKysrKy0tCiBzcmMvZGlz cG5ldy5jICAgICAgICAgICB8ICA2NyArKystCiBzcmMvdGVybS5jICAgICAgICAgICAgICB8ICA4 NSArKystCiBzcmMvdGVybWNoYXIuaCAgICAgICAgICB8ICAgMiArCiBzcmMvdzMyY29uc29sZS5j ICAgICAgICB8IDgzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiBz cmMveGRpc3AuYyAgICAgICAgICAgICB8ICAgMiArLQogMTAgZmlsZXMgY2hhbmdlZCwgOTY2IGlu c2VydGlvbnMoKyksIDI2NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvY21k YXJncy50ZXhpIGIvZG9jL2VtYWNzL2NtZGFyZ3MudGV4aQppbmRleCA3OWFlMmQwNjRkMS4uZWVk MjYzYzM5MDUgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkKKysrIGIvZG9jL2Vt YWNzL2NtZGFyZ3MudGV4aQpAQCAtMTAyNCwxOSArMTAyNCwyMiBAQCBjb2xvcmVkIGRpc3BsYXku CiBAaXRlbXggYW5zaTgKIFR1cm4gb24gdGhlIGNvbG9yIHN1cHBvcnQgdW5jb25kaXRpb25hbGx5 LCBhbmQgdXNlIGNvbG9yIGNvbW1hbmRzCiBzcGVjaWZpZWQgYnkgdGhlIEFOU0kgZXNjYXBlIHNl cXVlbmNlcyBmb3IgdGhlIDggc3RhbmRhcmQgY29sb3JzLgorQGl0ZW0gMjRiaXQKK1R1cm4gb24g c3VwcG9ydCBmb3IgYWxsIGRlZmluZWQgMjQtYml0IFJHQiBjb2xvcnMgaWYgYXZhaWxhYmxlLgor Q3VycmVudGx5IHRoaXMgaXMgZWZmZWN0aXZlIG9uIE1TLVdpbmRvd3MgKDEwKykgb25seS4KIEBp dGVtIEB2YXJ7bnVtfQogVXNlIGNvbG9yIG1vZGUgZm9yIEB2YXJ7bnVtfSBjb2xvcnMuICBJZiBA dmFye251bX0gaXMgQG1pbnVze30xLCB0dXJuIG9mZgogY29sb3Igc3VwcG9ydCAoZXF1aXZhbGVu dCB0byBAc2FtcHtuZXZlcn0pOyBpZiBpdCBpcyAwLCB1c2UgdGhlCiBkZWZhdWx0IGNvbG9yIHN1 cHBvcnQgZm9yIHRoaXMgdGVybWluYWwgKGVxdWl2YWxlbnQgdG8gQHNhbXB7YXV0b30pOwogb3Ro ZXJ3aXNlIHVzZSBhbiBhcHByb3ByaWF0ZSBzdGFuZGFyZCBtb2RlIGZvciBAdmFye251bX0gY29s b3JzLgogRGVwZW5kaW5nIG9uIHlvdXIgdGVybWluYWwncyBjYXBhYmlsaXRpZXMsIEVtYWNzIG1p Z2h0IGJlIGFibGUgdG8gdHVybgotb24gYSBjb2xvciBtb2RlIGZvciA4LCAxNiwgODgsIG9yIDI1 NiBhcyB0aGUgdmFsdWUgb2YgQHZhcntudW19LiAgSWYKLXRoZXJlIGlzIG5vIG1vZGUgdGhhdCBz dXBwb3J0cyBAdmFye251bX0gY29sb3JzLCBFbWFjcyBhY3RzIGFzIGlmCitvbiBhIGNvbG9yIG1v ZGUgZm9yIDgsIDE2LCA4OCwgMjU2LCBvciAxNjc3NzIxNiBhcyB0aGUgdmFsdWUgb2YgQHZhcntu dW19LgorSWYgdGhlcmUgaXMgbm8gbW9kZSB0aGF0IHN1cHBvcnRzIEB2YXJ7bnVtfSBjb2xvcnMs IEVtYWNzIGFjdHMgYXMgaWYKIEB2YXJ7bnVtfSB3ZXJlIDAsIGkuZS4sIGl0IHVzZXMgdGhlIHRl cm1pbmFsJ3MgZGVmYXVsdCBjb2xvciBzdXBwb3J0CiBtb2RlLgogQGVuZCB0YWJsZQogCi1UaGlz IG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUy4KK1RoaXMgb3B0 aW9uIGhhcyBubyBlZmZlY3Qgb24gTVMtRE9TLCBub3IgTVMtV2luZG93cyBwcmlvciB0byBXaW5k b3dzIDEwLgogCiBAY2luZGV4IGNvbG9ycyBvbiBjaGFyYWN0ZXIgdGVybWluYWwsIGNoYW5naW5n IGR1cmluZyBzZXNzaW9uCiBAY2luZGV4IGNoYXJhY3RlciB0ZXJtaW5hbCwgY2hhbmdlIGNvbG9y IG1vZGUKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9tc2Rvcy50ZXhpIGIvZG9jL2VtYWNzL21zZG9z LnRleGkKaW5kZXggZjk3MTUxYzYzMGYuLmNkOGUzMjAyN2M3IDEwMDY0NAotLS0gYS9kb2MvZW1h Y3MvbXNkb3MudGV4aQorKysgYi9kb2MvZW1hY3MvbXNkb3MudGV4aQpAQCAtMTE2NSw3ICsxMTY1 LDcgQEAgYW55d2hlcmUgZWxzZS4KICAgVGhlIHZhcmlhYmxlIEBjb2Rle3czMi11c2UtdmlzaWJs ZS1zeXN0ZW0tY2FyZXR9IGlzIGEgZmxhZyB0aGF0CiBkZXRlcm1pbmVzIHdoZXRoZXIgdG8gbWFr ZSB0aGUgc3lzdGVtIGNhcmV0IHZpc2libGUuICBUaGUgZGVmYXVsdCB3aGVuCiBubyBzY3JlZW4g cmVhZGVyIHNvZnR3YXJlIGlzIGluIHVzZSBpcyBAY29kZXtuaWx9LCB3aGljaCBtZWFucyBFbWFj cwotZHJhd3MgaXRzIG93biBjdXJzb3IgdG8gaW5kaWNhdGUgdGhlIHBvc2l0aW9uIG9mIHBvaW50 LiAgQQorZHJhd3MgaXRzIG93biBjdXJzb3IgdG8gaW5kaWNhdGUgdGhlIHBvc2l0aW9uIG9mIHBv aW50LiBBCiBub24tQGNvZGV7bmlsfSB2YWx1ZSBtZWFucyBFbWFjcyB3aWxsIGluZGljYXRlIHBv aW50IGxvY2F0aW9uIHdpdGggdGhlCiBzeXN0ZW0gY2FyZXQ7IHRoaXMgZmFjaWxpdGF0ZXMgdXNl IG9mIHNjcmVlbiByZWFkZXIgc29mdHdhcmUsIGFuZCBpcwogdGhlIGRlZmF1bHQgd2hlbiBzdWNo IHNvZnR3YXJlIGlzIGRldGVjdGVkIHdoZW4gcnVubmluZyBFbWFjcy4KQEAgLTEyMDAsNiArMTIw MCw1MiBAQCB5b3Ugc2hvdWxkIHNldCBpdHMgdmFsdWUgaW4geW91ciBpbml0IGZpbGUgKEBweHJl ZntJbml0IEZpbGV9KSwgZWl0aGVyCiBkaXJlY3RseSBvciB2aWEgQGtiZHtNLXggY3VzdG9taXpl LXZhcmlhYmxlfSwgd2hpY2ggbGV0cyB5b3Ugc2F2ZSB0aGUKIGN1c3RvbWl6ZWQgdmFsdWUsIHNl ZSBAcmVme1NhdmluZyBDdXN0b21pemF0aW9uc30uCiAKK0B2aW5kZXggdzMyLXVzZS12aXJ0dWFs LXRlcm1pbmFsLXNlcXVlbmNlcworQGNpbmRleCBXaW5kb3dzIFRlcm1pbmFsLCBXaW5kb3dzIENv bnNvbGUsIE1TLVdpbmRvd3MKKyAgVGhlIGltcGxlbWVudGF0aW9uIG9mIGRpc3BsYXkgZnVuY3Rp b25hbGl0eSBmb3IgV2luZG93cyBDb25zb2xlCitkaWZmZXJzIGZyb20gdGhlIGltcGxlbWVudGF0 aW9uIGZvciBvdGhlciB0ZXJtaW5hbCBlbXVsYXRvcnMsCitiZWNhdXNlIGhpc3RvcmljYWxseSwg V2luZG93cyByZXF1aXJlZCB1c2Ugb2YgYW4gaWRpb3N5bmNyYWN0aWMgQVBJLgorVGhhdCBBUEkg bGltaXRlZCBXaW5kb3dzIENvbnNvbGUgZGlzcGxheSBvZiBFbWFjcyB0byAxNiBiYXNpYyBjb2xv cnMuCitXaXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgV2luZG93cyBUZXJtaW5hbCwgTWljcm9zb2Z0 IGltcGxlbWVudGVkCitzdXBwb3J0IGZvciBBU0NJSSBjb250cm9sIHNlcXVlbmNlcywgbW9kZWxs ZWQgb24gdGhlIFZUMTAwIGFuZCBYdGVybSwKK2FuZCAyNC1iaXQgUkJHIGNvbG9yIGRpc3BsYXku CisKKyAgVGhlIHZhcmlhYmxlIEBjb2Rle3czMi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5j ZXN9IGRldGVybWluZXMKK3doZXRoZXIgdGhpcyBuZXdlciBtZWNoYW5pc20gaXMgdXNlZCBmb3Ig ZGlzcGxheSwgb3IgdGhlIG9sZGVyIG9uZS4KK0l0IGlzIGF1dG9tYXRpY2FsbHkgc2V0IGJhc2Vk IG9uIHlvdXIgdGVybWluYWwncyBjYXBhYmlsaXRpZXMgb24KK3N0YXJ0dXAuIElmIGl0IGlzIG5v bi1uaWwsIEVtYWNzIHdpbGwgdXNlIEFTQ0lJIGVzY2FwZSBzZXF1ZW5jZXMgZm9yCitjdXJzb3Ig YW5kIGNvbG9yIGRpc3BsYXkuIEJ5IGRlZmF1bHQsIDI0LWJpdCBSR0IgY29sb3Igd2lsbCBiZSB1 c2VkLAorYnV0IG90aGVyICg4LCAxNiwgMjU2KSBjb2xvciBzcGFjZXMgbWF5IGJlIHVzZWQsIGJ5 IHBhc3NpbmcgdGhlCitAY29kZXstLWNvbG9yfSBjb21tYW5kIGxpbmUgYXJndW1lbnQsIG9yIHNl dHRpbmcgdGhlIHZhbHVlIG9mIHRoZQorQGNvZGV7dHR5LWNvbG9yLW1vZGV9IGZyYW1lIHBhcmFt ZXRlci4KKworICBBbnkgdGltZSBAY29kZXt3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVu Y2VzfSBpcyBzZXQgbWFudWFsbHksCit0aGUgY2hhbmdlIGluIHZhbHVlIHNob3VsZCBiZSBpbW1l ZGlhdGVseSBmb2xsb3dlZCBieSBhIGNhbGwgdG8KK0Bjb2Rle3NldC1mcmFtZS1wYXJhbWV0ZXJ9 IChyZSlzZXR0aW5nIEBjb2Rleyd0dHktY29sb3ItbW9kZX0sIG9yCithdCB2ZXJ5IGxlYXN0LCBh IGNhbGwgdG8gQGNvZGV7dzMyY29uLXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzfS4KKworICBP bmUgbm90ZSBvbiB0aGUgdHJhbnNpdGlvbiBhd2F5IGZyb20gdGhlIG9sZCBXaW5kb3dzIENvbnNv bGUgQVBJLgorVFRZIEVtYWNzIHRyYWRpdGlvbmFsbHkgbGVhdmVzIHRleHQgY3Vyc29yIGRpc3Bs YXkgdXAgdG8gdGhlIHRlcm1pbmFsLgorU2NyZWVuIHVwZGF0ZXMgdmlhIHRoZSBXaW5kb3dzIENv bnNvbGUgQVBJIHdlcmUgcGVyZm9ybWVkIGRpcmVjdGx5IG9uCityZWdpb25zIG9mIHRoZSBzY3Jl ZW4gYnVmZmVyLCB3aXRob3V0IGFueSBuZWVkIHRvIG1vdmUgdGhlIGN1cnNvciBkdXJpbmcKK2Eg ZGlzcGxheSB1cGRhdGUuIFZpcnR1YWwgdGVybWluYWwgc2VxdWVuY2VzIHJlcXVpcmUgbW92aW5n IHRoZSBjdXJzb3IKK3RvIGV2ZXJ5IHBvaW50IGF0IHdoaWNoIHdlIG5lZWQgdG8gd3JpdGUgYSBj aGFuZ2UuIFVuZm9ydHVuYXRlbHksIHRoZQorY29udGVudCBvZiB0aGUgZWNobyBhcmVhIGNoYW5n ZXMgZnJlcXVlbnRseSwgYW5kIHVwZGF0ZXMgYXJlIG5vdCBhbHdheXMKK3F1aWNrIGVub3VnaCBm b3IgdGhlIGN1cnNvciBtb3ZlbWVudCB0byBiZSBtYWRlIGltcGVyY2VwdGlibGUuIFRoaXMKK3By ZXNlbnRzIGEgVVggZGlsZW1tYS4gRWl0aGVyIHdlICgxKSBoaWRlIHRoZSBjdXJzb3IgbW9tZW50 YXJpbHkgd2hlbmV2ZXIKK2l0IGBganVtcHMnJyB0byB0aGUgZWNobyBhcmVhLCB3aGljaCBtYW5p ZmVzdHMgaW4gdGhlIGN1cnNvciBhcHBlYXJpbmcgdG8KK2BgZmxpY2tlcicnIGluLXBsYWNlLCBv ciAoMikgd2UgZG9uJ3QsIGluIHdoaWNoIGNhc2UgdGhlIGN1cnNvciBqdW1wcyB0bworLyBmbGFz aGVzIGluIHRoZSBlY2hvIGFyZWEuIFdlIGdldCB0aHJvdWdoIHRoZSBob3JucyBvZiB0aGUgZGls ZW1tYSBieSAoMykKK2Fsd2F5cyBoaWRpbmcgdGhlIHN5c3RlbSBjdXJzb3IsIGFuZCBoYXZpbmcg RW1hY3MgdGFrZSBvdmVyIGN1cnNvciBkaXNwbGF5LgorCisgIEFmdGVyIHRoZSBtaWdyYXRpb24g dG8gdmlydHVhbCB0ZXJtaW5hbCBzZXF1ZW5jZXMgRW1hY3MgZGVmYXVsdHMgdG8gKDMpLAorYnV0 IGxlYXZlcyAoMikgYXMgYW4gb3B0aW9uLiBXaGVuIEBjb2Rle3czMi11c2UtdmlzaWJsZS1zeXN0 ZW0tY2FyZXR9IGlzCitAY29kZXtuaWx9LCBhIHNvbGlkIG5vbi1ibGlua2luZyB0ZXh0IGN1cnNv ciB3aWxsIGRpc3BsYXllZCAoaW4gdGhlCisnY3Vyc29yJyBmYWNlKS4gV2hlbiBpdCBpcyBub24t QGNvZGV7bmlsfSwgYSBzeXN0ZW0gY3Vyc29yIHdpbGwgYmUgc2hvd24KKyhwb3NzaWJseSB3aXRo IGEgc2xpZ2h0IGZsaWNrZXIpLiBUaGlzIGNoYW5nZSBpcyBpbmRlcGVuZGVudCBvZgorQGNvZGV7 dzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlc30sIGJ1dCByZXF1aXJlZCBmb3IgYSBz bW9vdGggVVguCisKKwogQGlmbm90dGV4CiBAaW5jbHVkZSBtc2Rvcy14dHJhLnRleGkKIEBlbmQg aWZub3R0ZXgKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTLjMwIGIvZXRjL05FV1MuMzAKaW5kZXggZGZl NmM1Y2FmZTYuLjgxNGNhODQzYmU1IDEwMDY0NAotLS0gYS9ldGMvTkVXUy4zMAorKysgYi9ldGMv TkVXUy4zMApAQCAtMTUsNiArMTUsMzUgQEAgaW4gb2xkZXIgRW1hY3MgdmVyc2lvbnMuCiBZb3Ug Y2FuIG5hcnJvdyBuZXdzIHRvIGEgc3BlY2lmaWMgdmVyc2lvbiBieSBjYWxsaW5nICd2aWV3LWVt YWNzLW5ld3MnCiB3aXRoIGEgcHJlZml4IGFyZ3VtZW50IG9yIGJ5IHR5cGluZyAnQy11IEMtaCBD LW4nLgogCisMCisqIENoYW5nZXMgaW4gRW1hY3MgMzAuMworKiogV2luZG93cyBUZXJtaW5hbCBu b3cgZGlzcGxheXMgMjQtYml0IFJHQi4KK1ByZXZpb3VzbHksIHRlcm1pbmFsIHNlc3Npb25zIGlu IFdpbmRvd3MgVGVybWluYWwgYW5kIFdpbmRvd3MgQ29uc29sZQorc3VwcG9ydGVkIGRpc3BsYXkg b2YgMTYgY29sb3JzLCB2aWEgdGhlIFdpbmRvd3MgQ29uc29sZSBBUEkuIFRoZXJlIGlzCitub3cg c3VwcG9ydCBpbiBXaW5kb3dzIFRlcm1pbmFsIGZvciAyNTYgYW5kIDI0LWJpdCBSR0IgY29sb3Is IGJ5CitlbWl0dGluZyBBU0NJSSBjb250cm9sIHNlcXVlbmNlcyAobW9kZWxsZWQgb24gVlQxMDAg YW5kIFh0ZXJtKS4KK0N1cnNvciBtb3ZlbWVudCAvIGRpc3BsYXkgaGFzIGFsc28gYmVlbiAocmUt KWltcGxlbWVudGVkLiBUaGlzIGFsaWducword2l0aCBNaWNyb3NvZnQncyBsb25nLXRlcm0gcm9h ZG1hcCBhbmQgaXMgYSBmaXJzdCBzdGVwIGluIG1vdmluZyBFbWFjcwordGVybWluYWwgc2Vzc2lv bnMgb3ZlciB0byB0aGUgbmV3ZXIgV2luZG93cyBUZXJtaW5hbCBpbnRlcmZhY2UuCisKK1RoZSBu ZXcgbWVjaGFuaXNtIHdpbGwgYmUgZW5hYmxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gc3VwcG9ydGVk LgorSXQgZGVmYXVsdHMgdG8gMjQtYml0IFJHQiBjb2xvciwgYnV0IGNhbiBiZSBzZXQgdG8gOCwg MTYsIDI1Niwgb3IKKycyNGJpdCcgYnkgcGFzc2luZyB0aGUgJy0tY29sb3InIGZsYWcgb3Igc2V0 dGluZyB0aGUgJ3R0eS1jb2xvci1tb2RlJworZnJhbWUgcGFyYW1ldGVyLiBJdCBjYW4gYmUgZGlz YWJsZWQvZW5hYmxlZCBieSBzZXR0aW5nIHRoZSB2YXJpYWJsZQorJ3czMi11c2UtdmlydHVhbC10 ZXJtaW5hbC1zZXF1ZW5jZXMnLiBUaGUgb2xkZXIgKDE2LWNvbG9yKSBpbnRlcmZhY2UKK3dpbGwg c3RpbGwgYmUgdXNlZCBpbiBXaW5kb3dzIENvbnNvbGUgYW5kIG9uIHByZS1XaW4xMCBzeXN0ZW1z LgorCisqKiBFbWFjcyBub3cgaGFuZGxlcyB0ZXh0IGN1cnNvciBkaXNwbGF5IGluIFdpbmRvd3Mg VGVybWluYWwvQ29uc29sZS4KK1ByZXZpb3VzbHksIHdoZW4gcnVubmluZyBpbiBXaW5kb3dzIFRl cm1pbmFsL0NvbnNvbGUsIEVtYWNzIGRlbGVnYXRlZAordGV4dCBjdXJzb3IgZGlzcGxheSB0byB0 aGUgc3lzdGVtIChhcyBvbiBvdGhlciBUVFlzKS4gVG8gZW5hYmxlIGEKK3Ntb290aCBVWCBmb2xs b3dpbmcgdGhlIG1pZ3JhdGlvbiB0byBBU0NJSSBjb250cm9sIHNlcXVlbmNlcyAoc2VlIGFib3Zl KSwKK2N1cnNvciBkaXNwbGF5IGlzIG5vdyAtLSBvcHRpb25hbGx5LCBidXQgYnkgZGVmYXVsdCAt LSBoYW5kbGVkIGJ5IEVtYWNzLgorV2hlbiAndzMyLXVzZS12aXNpYmxlLXN5c3RlbS1jYXJldCcg aXMgbmlsLCBhIHNvbGlkIG5vbi1ibGlua2luZyB0ZXh0CitjdXJzb3Igd2lsbCBkaXNwbGF5ZWQg KGluIHRoZSAnY3Vyc29yJyBmYWNlKS4gV2hlbiBpdCBpcyBzZXQgdG8gbm9uLW5pbCwKK3RoZSBz eXN0ZW0gY3Vyc29yIHdpbGwgYmUgc2hvd24uCisKK1NlZSB0aGUgbWFudWFsIGVudHJ5IHNwZWNp ZmljIHRvIE1TLVdpbmRvd3MgZm9yIG1vcmUgZGV0YWlscy4KKwogDAogKiBDaGFuZ2VzIGluIEVt YWNzIDMwLjIKIEVtYWNzIDMwLjIgaXMgYSBidWctZml4IHJlbGVhc2Ugd2l0aCBubyBuZXcgZmVh dHVyZXMuCmRpZmYgLS1naXQgYS9saXNwL3Rlcm0vdHR5LWNvbG9ycy5lbCBiL2xpc3AvdGVybS90 dHktY29sb3JzLmVsCmluZGV4IGRmZDIwN2Q3MWMxLi4xYmEwNDVjOGI3MSAxMDA2NDQKLS0tIGEv bGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwKKysrIGIvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwKQEAg LTc2NCw3ICs3NjQsOCBAQAogICAgIChhdXRvIC4gMCkKICAgICAoYW5zaTggLiA4KQogICAgIChh bHdheXMgLiA4KQotICAgICh5ZXMgLiA4KSkKKyAgICAoeWVzIC4gOCkKKyAgICAoMjRiaXQgLiAx Njc3NzIxNikpCiAgICJBbiBhbGlzdCBvZiBzdXBwb3J0ZWQgc3RhbmRhcmQgdHR5IGNvbG9yIG1v ZGVzIGFuZCB0aGVpciBhbGlhc2VzLiIpCiAKIChkZWZ1biB0dHktY29sb3ItYWxpc3QgKCZvcHRp b25hbCBfZnJhbWUpCmRpZmYgLS1naXQgYS9saXNwL3Rlcm0vdzMyY29uc29sZS5lbCBiL2xpc3Av dGVybS93MzJjb25zb2xlLmVsCmluZGV4IDFiNDRkYTQ4YmY3Li43YTI2MjA5NzQ5MiAxMDA2NDQK LS0tIGEvbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKKysrIGIvbGlzcC90ZXJtL3czMmNvbnNvbGUu ZWwKQEAgLTI0LDggKzI0LDcgQEAKIAogOzs7IENvZGU6CiAKLTs7IFczMiB1c2VzIGRpZmZlcmVu dCBjb2xvciBpbmRleGVzIHRoYW4gc3RhbmRhcmQ6Ci0KKzs7IFczMiB1c2VzIGRpZmZlcmVudCBj b2xvciBpbmRleGVzIHRoYW4gc3RhbmRhcmQKIChkZWZ2YXIgdzMyLXR0eS1zdGFuZGFyZC1jb2xv cnMKICAgJygoImJsYWNrIiAgICAgICAgICAwICAgICAwICAgICAwICAgICAwKQogICAgICgiYmx1 ZSIgICAgICAgICAgIDEgICAgIDAgICAgIDAgNTI0ODApIDsgTWVkaXVtQmx1ZQpAQCAtNDMsNTYg KzQyLDEzMyBAQAogICAgICgibGlnaHRtYWdlbnRhIiAgMTMgNjU1MzUgICAgIDAgNjU1MzUpIDsg TWFnZW50YQogICAgICgieWVsbG93IiAgICAgICAgMTQgNjU1MzUgNjU1MzUgICAgIDApIDsgWWVs bG93CiAgICAgKCJ3aGl0ZSIgICAgICAgICAxNSA2NTUzNSA2NTUzNSA2NTUzNSkpCi0iQSBsaXN0 IG9mIFZHQSBjb25zb2xlIGNvbG9ycywgdGhlaXIgaW5kaWNlcyBhbmQgMTYtYml0IFJHQiB2YWx1 ZXMuIikKKyAgIkEgbGlzdCBvZiBWR0EgY29uc29sZSBjb2xvcnMsIHRoZWlyIGluZGljZXMgYW5k IDE2LWJpdCBSR0IgdmFsdWVzLiIpCisKKzs7IFdoZW4gdXNpbmcgVlQgc2VxdWVuY2VzIGZvciBj b2xvciwgdXNlIHh0ZXJtLWxpa2UgaW5kaWNlcworKGRlZnZhciB3MzItdHR5LXZpcnR1YWwtdGVy bWluYWwtYmFzZS1jb2xvcnMKKyAgJygoImJsYWNrIiAgICAgICAgICAwICAgICAwICAgICAwICAg ICAwKQorICAgICgicmVkIiAgICAgICAgICAgIDEgNDU1NjggIDg3MDQgIDg3MDQpIDsgRmlyZUJy aWNrCisgICAgKCJncmVlbiIgICAgICAgICAgMiAgODcwNCAzNTU4NCAgODcwNCkgOyBGb3Jlc3RH cmVlbgorICAgICgiYnJvd24iICAgICAgICAgIDMgNDA5NjAgMjA5OTIgMTE1MjApIDsgU2llbm5h CisgICAgKCJibHVlIiAgICAgICAgICAgNCAgICAgMCAgICAgMCA1MjQ4MCkgOyBNZWRpdW1CbHVl CisgICAgKCJtYWdlbnRhIiAgICAgICAgNSAzNTU4NCAgICAgMCAzNTU4NCkgOyBEYXJrTWFnZW50 YQorICAgICgiY3lhbiIgICAgICAgICAgIDYgICAgIDAgNTI3MzYgNTM1MDQpIDsgRGFya1R1cnF1 b2lzZQorICAgICgibGlnaHRncmF5IiAgICAgIDcgNDg2NDAgNDg2NDAgNDg2NDApIDsgR3JheQor ICAgICgiZGFya2dyYXkiICAgICAgIDggMjYxMTIgMjYxMTIgMjYxMTIpIDsgR3JheTQwCisgICAg KCJsaWdodHJlZCIgICAgICAgOSA2NTUzNSAgICAgMCAgICAgMCkgOyBSZWQKKyAgICAoImxpZ2h0 Z3JlZW4iICAgIDEwICAgICAwIDY1NTM1ICAgICAwKSA7IEdyZWVuCisgICAgKCJ5ZWxsb3ciICAg ICAgICAxMSA2NTUzNSA2NTUzNSAgICAgMCkgOyBZZWxsb3cKKyAgICAoImxpZ2h0Ymx1ZSIgICAg IDEyICAgICAwICAgICAwIDY1NTM1KSA7IEJsdWUKKyAgICAoImxpZ2h0bWFnZW50YSIgIDEzIDY1 NTM1ICAgICAwIDY1NTM1KSA7IE1hZ2VudGEKKyAgICAoImxpZ2h0Y3lhbiIgICAgIDE0ICAgICAw IDY1NTM1IDY1NTM1KSA7IEN5YW4KKyAgICAoIndoaXRlIiAgICAgICAgIDE1IDY1NTM1IDY1NTM1 IDY1NTM1KSkKKyAgIkEgbGlzdCBvZiBWR0EgY29uc29sZSBjb2xvcnMsIHRoZWlyIGluZGljZXMg YW5kIDE2LWJpdCBSR0IgdmFsdWVzLiIpCiAKIChkZWNsYXJlLWZ1bmN0aW9uIHgtc2V0dXAtZnVu Y3Rpb24ta2V5cyAidGVybS9jb21tb24td2luIiAoZnJhbWUpKQogKGRlY2xhcmUtZnVuY3Rpb24g Z2V0LXNjcmVlbi1jb2xvciAidzMyY29uc29sZS5jIiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9uIHcz Mi1nZXQtY29uc29sZS1jb2RlcGFnZSAidzMycHJvYy5jIiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9u IHczMi1nZXQtY29uc29sZS1vdXRwdXQtY29kZXBhZ2UgInczMnByb2MuYyIgKCkpCiAKKyhkZWZ1 biB3MzJjb24tZGVmaW5lLWJhc2UtY29sb3JzICgpCisgICJEZWZpbmVzIGJhc2UgMTYtY29sb3Ig c3BhY2UgZm9yIHczMiBjb25zb2xlLiIKKyAgKGxldCogKChjb2xvcnMgKGlmIHczMi11c2Utdmly dHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMKKyAgICAgICAgICAgICAgICAgICAgIHczMi10dHktdmly dHVhbC10ZXJtaW5hbC1iYXNlLWNvbG9ycworICAgICAgICAgICAgICAgICAgIHczMi10dHktc3Rh bmRhcmQtY29sb3JzKSkKKyAgICAgICAgIChuYmFzZSAobGVuZ3RoIGNvbG9ycykpCisgICAgICAg ICAoY29sb3IgKGNhciBjb2xvcnMpKSkKKyAgICAocHJvZ24gKHdoaWxlIGNvbG9ycworICAgICAg ICAgICAgICh0dHktY29sb3ItZGVmaW5lIChjYXIgY29sb3IpIChjYWRyIGNvbG9yKSAoY2RkciBj b2xvcikpCisgICAgICAgICAgICAgKHNldHEgY29sb3JzIChjZHIgY29sb3JzKQorICAgICAgICAg ICAgICAgICAgIGNvbG9yICAoY2FyIGNvbG9ycykpKQorICAgICAgICAgICBuYmFzZSkpKQorCis7 OyBOb3RlOiB0dHktY29sb3ItZGVmaW5lIHN3YXBzIHBhc3NlZCBpbmRleCBmb3IgcGl4ZWwgb24g MjRiaXQgdGVybWluYWwKKzs7IFNvLCB3ZSBuZWVkIHRoaXMgZnVuY3Rpb24gdG8gInJlY292ZXIi IHRoZSB0ZXJtaW5hbCdzIG5hdGl2ZSBtYXBwaW5nCisoZGVmdW4gdzMyY29uLWdldC1waXhlbCAo aW5kZXgpCisgICJDb252ZXJ0IGEgYmFzZS1jb2xvciBpbmRleCBpbnRvIGEgcGl4ZWwgKGluZGV4 IGludG8gMjRiaXQgbWFwKSIKKyAgKGxldCAoKGNvbG9yIChudGggaW5kZXggdzMyLXR0eS12aXJ0 dWFsLXRlcm1pbmFsLWJhc2UtY29sb3JzKSkpCisgICAgKG9yICh0dHktY29sb3ItMjRiaXQgKGNk ZHIgY29sb3IpKSBpbmRleCkpKQorCisoZGVmdW4gdzMyY29uLWRlZmluZS0yNTYtY29sb3JzICgp CisgICJEZWZpbmVzIDI1Ni1jb2xvciBzcGFjZSBmb3IgdzMyIGNvbnNvbGUuIgorICAobGV0ICgo ciAwKSAoYiAwKSAoZyAwKQorICAgICAgICAobiAoLSAyNTYgKHczMmNvbi1kZWZpbmUtYmFzZS1j b2xvcnMpKSkKKyAgICAgICAgKGNvbnZlcnQtdG8tMTZiaXQgKGxhbWJkYSAocHJpbSkgKGxvZ2lv ciBwcmltIChhc2ggcHJpbSA4KSkpKSkKKyAgICAod2hpbGUgKD4gbiAyNCkgOyBub24tZ3JleQor ICAgICAgKGxldCAoKGkgKC0gMjU2IG4pKQorICAgICAgICAgICAgKGMgKG1hcGNhciBjb252ZXJ0 LXRvLTE2Yml0CisgICAgICAgICAgICAgICAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAoeCkgKGlm ICh6ZXJvcCB4KSAwICgrICgqIHggNDApIDU1KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpc3QgciBnIGIpKSkpKQorICAgICAgICAodHR5LWNvbG9yLWRlZmluZSAoZm9ybWF0 ICJjb2xvci0lZCIgaSkgaSBjKSkKKyAgICAgIChzZXRxIGIgKDErIGIpKQorICAgICAgKHdoZW4g KD4gYiA1KSAoc2V0cSBnICgxKyBnKSBiIDApKQorICAgICAgKHdoZW4gKD4gZyA1KSAoc2V0cSBy ICgxKyByKSBnIDApKQorICAgICAgKHNldHEgbiAoMS0gbikpKQorICAgICh3aGlsZSAoPiBuIDAp IDsgYWxsLWdyZXkKKyAgICAgIChsZXQqICgoaSAoLSAyNTYgbikpCisgICAgICAgICAgICAgKHYg KGZ1bmNhbGwgY29udmVydC10by0xNmJpdCAoKyA4ICgqICgtIDI0IG4pIDEwKSkpKQorICAgICAg ICAgICAgIChjIChsaXN0IHYgdiB2KSkpCisgICAgICAgICh0dHktY29sb3ItZGVmaW5lIChmb3Jt YXQgImNvbG9yLSVkIiBpKSBpIGMpKQorICAgICAgKHNldHEgbiAoMS0gbikpKSkpCisKKyhkZWZ1 biB3MzJjb24tZGVmaW5lLTI0Yml0LWNvbG9ycyAoKQorICAiRGVmaW5lcyAyNC1iaXQgY29sb3Ig c3BhY2UgZm9yIHczMiBjb25zb2xlLiIKKyAgKGxldCAoKGkgKHczMmNvbi1kZWZpbmUtYmFzZS1j b2xvcnMpKSkKKyAgICAobWFwYyAobGFtYmRhIChjKSAodW5sZXNzIChhc3NvYyAoY2FyIGMpIHcz Mi10dHktc3RhbmRhcmQtY29sb3JzKQorICAgICAgICAgICAgICAgICAgICh0dHktY29sb3ItZGVm aW5lIChjYXIgYykgaSAoY2RyIGMpKQorICAgICAgICAgICAgICAgICAgIChzZXRxIGkgKDErIGkp KSkpCisgICAgICAgICAgY29sb3ItbmFtZS1yZ2ItYWxpc3QpKSkKKwogKGRlZnVuIHRlcm1pbmFs LWluaXQtdzMyY29uc29sZSAoKQogICAiVGVybWluYWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24g Zm9yIHczMiBjb25zb2xlLiIKICAgOzsgU2hhcmUgZnVuY3Rpb24ga2V5IGluaXRpYWxpemF0aW9u IHdpdGggdzMyIGd1aSBmcmFtZXMKICAgKHgtc2V0dXAtZnVuY3Rpb24ta2V5cyAoc2VsZWN0ZWQt ZnJhbWUpKQogICA7OyBTZXQgdGVybWluYWwgYW5kIGtleWJvYXJkIGVuY29kaW5ncyB0byB0aGUg Y3VycmVudCBPRU0gY29kZXBhZ2UuCiAgIChsZXQgKChvZW0tY29kZS1wYWdlLWNvZGluZwotCSAo aW50ZXJuIChmb3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtY29kZXBhZ2UpKSkpCi0JKG9l bS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZwotCSAoaW50ZXJuIChmb3JtYXQgImNwJWQiICh3MzIt Z2V0LWNvbnNvbGUtb3V0cHV0LWNvZGVwYWdlKSkpKQotCW9lbS1jcy1wIG9lbS1vLWNzLXApCi0J KHNldHEgb2VtLWNzLXAgKGNvZGluZy1zeXN0ZW0tcCBvZW0tY29kZS1wYWdlLWNvZGluZykpCi0J KHNldHEgb2VtLW8tY3MtcCAoY29kaW5nLXN5c3RlbS1wIG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNv ZGluZykpCi0JKHdoZW4gb2VtLWNzLXAKLQkgIChzZXQta2V5Ym9hcmQtY29kaW5nLXN5c3RlbSBv ZW0tY29kZS1wYWdlLWNvZGluZykKLQkgIChzZXQtdGVybWluYWwtY29kaW5nLXN5c3RlbQotCSAg IChpZiBvZW0tby1jcy1wIG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZyBvZW0tY29kZS1wYWdl LWNvZGluZykpCi0gICAgICAgICAgOzsgU2luY2Ugd2UgY2hhbmdlZCB0aGUgdGVybWluYWwgZW5j b2RpbmcsIHdlIG5lZWQgdG8gcmVwZWF0Ci0gICAgICAgICAgOzsgdGhlIHRlc3QgZm9yIFVuaWNv ZGUgcXVvdGVzIGJlaW5nIGRpc3BsYXlhYmxlLgotICAgICAgICAgIChzdGFydHVwLS1zZXR1cC1x dW90ZS1kaXNwbGF5KSkpCi0gIChsZXQqICgoY29sb3JzIHczMi10dHktc3RhbmRhcmQtY29sb3Jz KQotICAgICAgICAgKGNvbG9yIChjYXIgY29sb3JzKSkpCi0gICAgKHR0eS1jb2xvci1jbGVhcikK LSAgICAod2hpbGUgY29sb3JzCi0gICAgICAodHR5LWNvbG9yLWRlZmluZSAoY2FyIGNvbG9yKSAo Y2FkciBjb2xvcikgKGNkZHIgY29sb3IpKQotICAgICAgKHNldHEgY29sb3JzIChjZHIgY29sb3Jz KQotICAgICAgICAgICAgY29sb3IgKGNhciBjb2xvcnMpKSkpCi0gIChjbGVhci1mYWNlLWNhY2hl KQotICA7OyBGaWd1cmUgb3V0IHdoYXQgYXJlIHRoZSBjb2xvcnMgb2YgdGhlIGNvbnNvbGUgd2lu ZG93LCBhbmQgc2V0IHVwCi0gIDs7IHRoZSBiYWNrZ3JvdW5kLW1vZGUgY29ycmVzcG9uZGluZ2x5 LgotICAobGV0KiAoKHNjcmVlbi1jb2xvciAoZ2V0LXNjcmVlbi1jb2xvcikpCi0JIChiZyAoY2Fk ciBzY3JlZW4tY29sb3IpKQotCSAoZGVzY3IgKHR0eS1jb2xvci1ieS1pbmRleCBiZykpCi0JIHIg ZyBiIGJnLW1vZGUpCi0gICAgKHNldHEgciAobnRoIDIgZGVzY3IpCi0JICBnIChudGggMyBkZXNj cikKLQkgIGIgKG50aCA0IGRlc2NyKSkKLSAgICAoaWYgKDwgKCsgciBnIGIpICgqIC42ICgrIDY1 NTM1IDY1NTM1IDY1NTM1KSkpCi0JKHNldHEgYmctbW9kZSAnZGFyaykKLSAgICAgIChzZXRxIGJn LW1vZGUgJ2xpZ2h0KSkKLSAgICAoc2V0LXRlcm1pbmFsLXBhcmFtZXRlciBuaWwgJ2JhY2tncm91 bmQtbW9kZSBiZy1tb2RlKSkKLSAgKHR0eS1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlcykKKyAg ICAgICAgIChpbnRlcm4gKGZvcm1hdCAiY3AlZCIgKHczMi1nZXQtY29uc29sZS1jb2RlcGFnZSkp KSkKKyAgICAgICAgKG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZworICAgICAgICAgKGludGVy biAoZm9ybWF0ICJjcCVkIiAodzMyLWdldC1jb25zb2xlLW91dHB1dC1jb2RlcGFnZSkpKSkKKyAg ICAgICAgb2VtLWNzLXAgb2VtLW8tY3MtcCkKKyAgICAoc2V0cSBvZW0tY3MtcCAoY29kaW5nLXN5 c3RlbS1wIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKKyAgICAoc2V0cSBvZW0tby1jcy1wIChjb2Rp bmctc3lzdGVtLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nKSkKKyAgICAod2hlbiBvZW0t Y3MtcAorICAgICAgKHNldC1rZXlib2FyZC1jb2Rpbmctc3lzdGVtIG9lbS1jb2RlLXBhZ2UtY29k aW5nKQorICAgICAgKHNldC10ZXJtaW5hbC1jb2Rpbmctc3lzdGVtCisgICAgICAgKGlmIG9lbS1v LWNzLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkK KyAgICAgIDs7IFNpbmNlIHdlIGNoYW5nZWQgdGhlIHRlcm1pbmFsIGVuY29kaW5nLCB3ZSBuZWVk IHRvIHJlcGVhdAorICAgICAgOzsgdGhlIHRlc3QgZm9yIFVuaWNvZGUgcXVvdGVzIGJlaW5nIGRp c3BsYXlhYmxlLgorICAgICAgKHN0YXJ0dXAtLXNldHVwLXF1b3RlLWRpc3BsYXkpKSkKKyAgKHcz MmNvbi1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlcykKICAgKHJ1bi1ob29rcyAndGVybWluYWwt aW5pdC13MzItaG9vaykpCiAKKyhkZWZ1biB3MzJjb24tc2V0LXVwLWluaXRpYWwtZnJhbWUtZmFj ZXMgKCkKKyAgIlNldCB1cCBpbml0aWFsIGZhY2UgY29sb3Igc2NoZW1lIGR5bmFtaWNhbGx5IGJh c2VkIG9uIHRoZSBudW1iZXIgb2YKK2Rpc3BsYXkgY29sb3JzIGFuZCB0aGUgdmFsdWUgb2YgYHcz Mi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMnLiIKKyAgKHR0eS1jb2xvci1jbGVhcikK KyAgKGxldCAoKG5jb2xvcnMgKGRpc3BsYXktY29sb3ItY2VsbHMpKSkKKyAgICAoaWYgdzMyLXVz ZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworICAgICAgICAoY29uZCAoKD0gbmNvbG9ycyAx Njc3NzIxNikgKHczMmNvbi1kZWZpbmUtMjRiaXQtY29sb3JzKSkKKyAgICAgICAgICAgICAgKCg9 IG5jb2xvcnMgMjY1ICAgICAgICh3MzJjb24tZGVmaW5lLTI1Ni1jb2xvcnMpKSkKKyAgICAgICAg ICAgICAgKHQgICAgICAgICAgICAgICAgICAgICh3MzJjb24tZGVmaW5lLWJhc2UtY29sb3JzKSkp CisgICAgICAodzMyY29uLWRlZmluZS1iYXNlLWNvbG9ycykpCisgICAgKGNsZWFyLWZhY2UtY2Fj aGUpCisgICAgOzsgRmlndXJlIG91dCB3aGF0IGFyZSB0aGUgY29sb3JzIG9mIHRoZSBjb25zb2xl IHdpbmRvdywgYW5kIHNldCB1cAorICAgIDs7IHRoZSBiYWNrZ3JvdW5kLW1vZGUgY29ycmVzcG9u ZGluZ2x5LgorICAgIChsZXQqICgoc2NyZWVuLWNvbG9yIChnZXQtc2NyZWVuLWNvbG9yKSkKKyAg ICAgICAgICAgKGJhc2UtaW5kZXggKGNhZHIgc2NyZWVuLWNvbG9yKSkKKyAgICAgICAgICAgKGJn LXBpeGVsICh3MzJjb24tZ2V0LXBpeGVsIGJhc2UtaW5kZXgpKQorICAgICAgICAgICAoYmcgKGlm ICg9IG5jb2xvcnMgMTY3NzcyMTYpIGJnLXBpeGVsIGJhc2UtaW5kZXgpKQorICAgICAgICAgICAo ZGVzY3IgKHR0eS1jb2xvci1ieS1pbmRleCBiZykpCisgICAgICAgICAgIHIgZyBiIGJnLW1vZGUp CisgICAgICAoc2V0cSByIChudGggMiBkZXNjcikKKyAgICAgICAgICAgIGcgKG50aCAzIGRlc2Ny KQorICAgICAgICAgICAgYiAobnRoIDQgZGVzY3IpKQorICAgICAgKGlmICg8ICgrIHIgZyBiKSAo KiAuNiAoKyA2NTUzNSA2NTUzNSA2NTUzNSkpKQorICAgICAgICAgIChzZXRxIGJnLW1vZGUgJ2Rh cmspCisgICAgICAgIChzZXRxIGJnLW1vZGUgJ2xpZ2h0KSkKKyAgICAgIChzZXQtdGVybWluYWwt cGFyYW1ldGVyIG5pbCAnYmFja2dyb3VuZC1tb2RlIGJnLW1vZGUpKSkKKyAgKHR0eS1zZXQtdXAt aW5pdGlhbC1mcmFtZS1mYWNlcykpCisKIChwcm92aWRlICd0ZXJtL3czMmNvbnNvbGUpCiAKIDs7 OyB3MzJjb25zb2xlLmVsIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvc3JjL2Rpc3BuZXcuYyBiL3Ny Yy9kaXNwbmV3LmMKaW5kZXggZDY1YTdjYmMxZjEuLjkyOGZiZDc4YzE3IDEwMDY0NAotLS0gYS9z cmMvZGlzcG5ldy5jCisrKyBiL3NyYy9kaXNwbmV3LmMKQEAgLTEwMyw2ICsxMDMsMTMgQEAgc3Rh dGljIHZvaWQgYWRqdXN0X2ZyYW1lX2dseXBoc19mb3JfZnJhbWVfcmVkaXNwbGF5IChzdHJ1Y3Qg ZnJhbWUgKik7CiBzdGF0aWMgdm9pZCBzZXRfd2luZG93X3VwZGF0ZV9mbGFncyAoc3RydWN0IHdp bmRvdyAqdywgYm9vbCBvbl9wKTsKIHN0YXRpYyB2b2lkIHR0eV9zZXRfY3Vyc29yIChzdHJ1Y3Qg ZnJhbWUgKmYpOwogCisjaWZkZWYgV0lORE9XU05UCitleHRlcm4gdm9pZCB3MzJjb25faGlkZV9j dXJzb3IgKHZvaWQpOworZXh0ZXJuIHZvaWQgdzMyY29uX3Nob3dfY3Vyc29yICh2b2lkKTsKK2V4 dGVybiB2b2lkIHczMmNvbl9zYXZlX2N1cnNvciAodm9pZCk7CitleHRlcm4gdm9pZCB3MzJjb25f cmVzdG9yZV9jdXJzb3IgKHZvaWQpOworZXh0ZXJuIHZvaWQgdzMyY29uX2RyYXdfY3Vyc29yIChz dHJ1Y3QgZnJhbWUgKik7CisjZW5kaWYKIAogI2lmIDAgLyogUGxlYXNlIGxlYXZlIHRoaXMgaW4g YXMgYSBkZWJ1Z2dpbmcgYWlkLiAgKi8KIHN0YXRpYyB2b2lkCkBAIC00MDUyLDIwICs0MDU5LDI2 IEBAIGNvbWJpbmVfdXBkYXRlc19mb3JfZnJhbWUgKHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBpbmhp Yml0X3Njcm9sbGluZykKICAgICAgIGlmICh0b3Btb3N0X2NoaWxkLT5hZnRlcl9tYWtlX2ZyYW1l KQogCWNvcHlfY2hpbGRfZ2x5cGhzIChyb290LCB0b3Btb3N0X2NoaWxkKTsKICAgICB9Ci0KLSAg dXBkYXRlX2JlZ2luIChyb290KTsKLSAgd3JpdGVfbWF0cml4IChyb290LCBpbmhpYml0X3Njcm9s bGluZywgZmFsc2UpOwotICBtYWtlX21hdHJpeF9jdXJyZW50IChyb290KTsKLSAgdXBkYXRlX2Vu ZCAocm9vdCk7Ci0KICAgLyogVGhlIHNlbGVjdGVkIGZyYW1lIGRldGVybWluZXMgd2hlcmUgdGhl IGN1cnNvciBvbiB0dHlzIGdvZXMsIGV4Y2VwdAogICAgICB3aGVuIGl0IGlzIGEgZnJhbWUgdGhh dCBpcyBjb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgZnJhbWUgYmVpbmcKICAgICAgZGlzcGxh eWVkLiAgVGhpcyBjYW4gaGFwcGVuIHdpdGggbXVsdGktdHR5LCB3aGVuIHRoZSBzZWxlY3RlZCBm cmFtZQogICAgICBjYW4gYmUgYSB3aW5kb3ctc3lzdGVtIGZyYW1lLiAgKi8KKyAgc3RydWN0IGZy YW1lICpjZjsKICAgaWYgKGZyYW1lX2FuY2VzdG9yX3AgKHJvb3QsIFNFTEVDVEVEX0ZSQU1FICgp KSkKLSAgICB0dHlfc2V0X2N1cnNvciAoU0VMRUNURURfRlJBTUUgKCkpOworICAgIGNmID0gU0VM RUNURURfRlJBTUUgKCk7CiAgIGVsc2UKLSAgICB0dHlfc2V0X2N1cnNvciAocm9vdCk7CisgICAg Y2YgPSByb290OworCisgIHVwZGF0ZV9iZWdpbiAocm9vdCk7CisjaWZkZWYgV0lORE9XU05UCisg IHR0eV9zZXRfY3Vyc29yIChjZik7CisgIHczMmNvbl9kcmF3X2N1cnNvcihjZik7CisjZW5kaWYg IAorICB3cml0ZV9tYXRyaXggKHJvb3QsIGluaGliaXRfc2Nyb2xsaW5nLCBmYWxzZSk7CisgIG1h a2VfbWF0cml4X2N1cnJlbnQgKHJvb3QpOworICB1cGRhdGVfZW5kIChyb290KTsKKworICB0dHlf c2V0X2N1cnNvciAoY2YpOwogCiAgIC8qIElmIGEgY2hpbGQgaXMgZGlzcGxheWVkLCBhbmQgdGhl IGN1cnNvciBpcyBkaXNwbGF5ZWQgaW4gYW5vdGhlcgogICAgICBmcmFtZSwgdGhlIGNoaWxkIG1p Z2h0IGxheSBhYm92ZSB0aGUgY3Vyc29yLCBzbyB0aGF0IGl0IGFwcGVhcnMgdG8KQEAgLTQxNDEs MTUgKzQxNTQsMjMgQEAgdXBkYXRlX2ZyYW1lX3dpdGhfbWVudSAoc3RydWN0IGZyYW1lICpmLCBp bnQgcm93LCBpbnQgY29sKQogCiAgIC8qIFVwZGF0ZSB0aGUgZGlzcGxheS4gICovCiAgIHVwZGF0 ZV9iZWdpbiAoZik7CisjaWZkZWYgV0lORE9XU05UCisgIGlmIChyb3cgPj0gMCAmJiBjb2wgPj0g MCkKKyAgICBjdXJzb3JfdG8gKGYsIHJvdywgY29sKTsKKyAgZWxzZQorICAgIHR0eV9zZXRfY3Vy c29yIChmKTsKKyAgdzMyY29uX2RyYXdfY3Vyc29yIChmKTsKKyNlbmRpZgogICB3cml0ZV9tYXRy aXggKGYsIHRydWUsIHRydWUpOwogICBtYWtlX21hdHJpeF9jdXJyZW50IChmKTsKLSAgY2xlYXJf ZGVzaXJlZF9tYXRyaWNlcyAoZik7CiAgIC8qIFJPVyBhbmQgQ09MIHRlbGwgdXMgd2hlcmUgaW4g dGhlIG1lbnUgdG8gcG9zaXRpb24gdGhlIGN1cnNvciwgc28KICAgICAgdGhhdCBzY3JlZW4gcmVh ZGVycyBrbm93IHRoZSBhY3RpdmUgcmVnaW9uIG9uIHRoZSBzY3JlZW4uICAqLwogICBpZiAocm93 ID49IDAgJiYgY29sID49IDApCiAgICAgY3Vyc29yX3RvIChmLCByb3csIGNvbCk7CiAgIGVsc2UK ICAgICB0dHlfc2V0X2N1cnNvciAoZik7CisKKyAgY2xlYXJfZGVzaXJlZF9tYXRyaWNlcyAoZik7 CiAgIHVwZGF0ZV9lbmQgKGYpOwogICBmbHVzaF90ZXJtaW5hbCAoZik7CiAKQEAgLTU3NDcsNyAr NTc2OCwzMyBAQCB3cml0ZV9tYXRyaXggKHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBpbmhpYml0X2lk X3AsIGJvb2wgdXBkYXRpbmdfbWVudV9wKQogICAgICBpcyBkb25lIHNvIHRoYXQgbWVzc2FnZXMg YXJlIG1hZGUgdmlzaWJsZSB3aGVuIHBhdXNpbmcuICAqLwogICBpbnQgbGFzdF9yb3cgPSBmLT5k ZXNpcmVkX21hdHJpeC0+bnJvd3MgLSAxOwogICBpZiAoTUFUUklYX1JPV19FTkFCTEVEX1AgKGYt PmRlc2lyZWRfbWF0cml4LCBsYXN0X3JvdykpCi0gICAgd3JpdGVfcm93IChmLCBsYXN0X3Jvdywg dXBkYXRpbmdfbWVudV9wKTsKKyAgICB7CisgICAgICAvKiBUaGlzIHNwZWNpYWwgY2FzZSBoYW5k bGVzIHN5c3RlbSBjdXJzb3IgZmxhc2hpbmcgaW4vdG8gdGhlIGVjaG8KKyAgICAgIGFyZWEgd2hl biBydW5uaW5nIHdpdGggY29sb3IgYmFja2dyb3VuZHMgaW4gV2luZG93cyBUZXJtaW5hbC4gV2UK KyAgICAgIGhhdmUgb25lIGN1cnNvciwgaXQgbW92ZXMgaW50byB3aGF0ZXZlciByb3cgd2Ugd3Jp dGUsIGFuZCBXaW5kb3dzCisgICAgICBkcmF3cyBpdCB0aGVyZS4gV2UgZG9uJ3Qgd2FudCB0aGUg Y3Vyc29yIGp1bXBpbmcgYXQgZXZlcnkgZWNoby4KKyAgICAgIFNvIHdlIGhpZGUgaXQgd2hlbiBp dCBqdW1wcywgYW5kIGl0IGp1c3QgImZsaWNrZXJzIiBpbi1wbGFjZS4gKi8KKworI2lmZGVmIFdJ TkRPV1NOVAorICAgICAgaW50IHByZXZfY3Vyc29yX2hpZGRlbiA9IChGUkFNRV9UVFkgKGYpKS0+ Y3Vyc29yX2hpZGRlbjsKKyAgICAgIGlmICh3MzJfdXNlX3Zpc2libGVfc3lzdGVtX2NhcmV0ICYm ICFjdXJzb3JfaW5fZWNob19hcmVhKQorCXsKKwkgIHczMmNvbl9zYXZlX2N1cnNvciAoKTsKKwkg IHczMmNvbl9oaWRlX2N1cnNvciAoKTsKKwl9CisjZW5kaWYKKworICAgICAgd3JpdGVfcm93IChm LCBsYXN0X3JvdywgdXBkYXRpbmdfbWVudV9wKTsKKworI2lmZGVmIFdJTkRPV1NOVAorICAgICAg aWYgKHczMl91c2VfdmlzaWJsZV9zeXN0ZW1fY2FyZXQgJiYgIWN1cnNvcl9pbl9lY2hvX2FyZWEp CisJeworCSAgdzMyY29uX3Jlc3RvcmVfY3Vyc29yICgpOworCSAgaWYgKCFwcmV2X2N1cnNvcl9o aWRkZW4pIHczMmNvbl9zaG93X2N1cnNvciAoKTsKKwl9CisjZW5kaWYKKyAgICB9CisKIAogICBp ZiAoZmlyc3Rfcm93ID49IDApCiAgICAgZm9yIChpbnQgaSA9IGZpcnN0X3JvdzsgaSA8IGxhc3Rf cm93OyArK2kpCmRpZmYgLS1naXQgYS9zcmMvdGVybS5jIGIvc3JjL3Rlcm0uYwppbmRleCBhMWUz ZjYzMTJjNi4uNmMzMTE2ZjdmY2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXJtLmMKKysrIGIvc3JjL3Rl cm0uYwpAQCAtNzMsNyArNzMsNiBAQCBzdGF0aWMgdm9pZCBjbGVhcl90dHlfaG9va3MgKHN0cnVj dCB0ZXJtaW5hbCAqdGVybWluYWwpOwogc3RhdGljIHZvaWQgc2V0X3R0eV9ob29rcyAoc3RydWN0 IHRlcm1pbmFsICp0ZXJtaW5hbCk7CiBzdGF0aWMgdm9pZCBkaXNzb2NpYXRlX2lmX2NvbnRyb2xs aW5nX3R0eSAoaW50IGZkKTsKIHN0YXRpYyB2b2lkIGRlbGV0ZV90dHkgKHN0cnVjdCB0ZXJtaW5h bCAqKTsKLQogI2VuZGlmIC8qICFIQVZFX0FORFJPSUQgKi8KIAogc3RhdGljIEFWT0lEIG1heWJl X2ZhdGFsIChib29sLCBzdHJ1Y3QgdGVybWluYWwgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICosCkBAIC0zNDYsMTAgKzM0NSwxMCBAQCB0dHlfaGlkZV9jdXJzb3IgKHN0cnVjdCB0dHlfZGlz cGxheV9pbmZvICp0dHkpCiB7CiAgIGlmICh0dHktPmN1cnNvcl9oaWRkZW4gPT0gMCkKICAgICB7 Ci0gICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAxOwogI2lmZGVmIFdJTkRPV1NOVAogICAgICAg dzMyY29uX2hpZGVfY3Vyc29yICgpOwogI2Vsc2UKKyAgICAgIHR0eS0+Y3Vyc29yX2hpZGRlbiA9 IDE7CiAgICAgICBPVVRQVVRfSUYgKHR0eSwgdHR5LT5UU19jdXJzb3JfaW52aXNpYmxlKTsKICNl bmRpZgogICAgIH0KQEAgLTM2MywxMCArMzYyLDEwIEBAIHR0eV9zaG93X2N1cnNvciAoc3RydWN0 IHR0eV9kaXNwbGF5X2luZm8gKnR0eSkKIHsKICAgaWYgKHR0eS0+Y3Vyc29yX2hpZGRlbikKICAg ICB7Ci0gICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAwOwogI2lmZGVmIFdJTkRPV1NOVAogICAg ICAgdzMyY29uX3Nob3dfY3Vyc29yICgpOwogI2Vsc2UKKyAgICAgIHR0eS0+Y3Vyc29yX2hpZGRl biA9IDA7CiAgICAgICBPVVRQVVRfSUYgKHR0eSwgdHR5LT5UU19jdXJzb3Jfbm9ybWFsKTsKICAg ICAgIGlmICh2aXNpYmxlX2N1cnNvcikKICAgICAgICAgT1VUUFVUX0lGICh0dHksIHR0eS0+VFNf Y3Vyc29yX3Zpc2libGUpOwpAQCAtMjIwNyw3ICsyMjA2LDcgQEAgVEVSTUlOQUwgZG9lcyBub3Qg cmVmZXIgdG8gYSB0ZXh0IHRlcm1pbmFsLiAgKi8pCiAgIHJldHVybiBtYWtlX2ZpeG51bSAodCA/ IHQtPmRpc3BsYXlfaW5mby50dHktPlROX21heF9jb2xvcnMgOiAwKTsKIH0KIAotI2lmICFkZWZp bmVkIERPU19OVCAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVmaW5lZCBNU0RPUyAm JiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKIAogLyogRGVjbGFyZSBoZXJlIHJhdGhlciB0aGFuIGlu IHRoZSBmdW5jdGlvbiwgYXMgaW4gdGhlIHJlc3Qgb2YgRW1hY3MsCiAgICB0byB3b3JrIGFyb3Vu ZCBhbiBIUFVYIGNvbXBpbGVyIGJ1ZyAoPykuIFNlZQpAQCAtMjI0Niw3ICsyMjQ1LDcgQEAgdHR5 X2RlZmF1bHRfY29sb3JfY2FwYWJpbGl0aWVzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5 LCBib29sIHNhdmUpCiAgICBNT0RFJ3MgdmFsdWUgaXMgZ2VuZXJhbGx5IHRoZSBudW1iZXIgb2Yg Y29sb3JzIHdoaWNoIHdlIHdhbnQgdG8KICAgIHN1cHBvcnQ7IHplcm8gbWVhbnMgc2V0IHVwIGZv ciB0aGUgZGVmYXVsdCBjYXBhYmlsaXRpZXMsIHRoZSBvbmVzCiAgICB3ZSBzYXcgYXQgaW5pdF90 dHkgdGltZTsgLTEgbWVhbnMgdHVybiBvZmYgY29sb3Igc3VwcG9ydC4gICovCi1zdGF0aWMgdm9p ZAordm9pZAogdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwg aW50IG1vZGUpCiB7CiAgIC8qIENhbm9uaWNhbGl6ZSBhbGwgbmVnYXRpdmUgdmFsdWVzIG9mIE1P REUuICAqLwpAQCAtMjI2NCwxOCArMjI2Myw0MiBAQCB0dHlfc2V0dXBfY29sb3JzIChzdHJ1Y3Qg dHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9kZSkKICAgICAgIGRlZmF1bHQ6CiAJdHR5X2Rl ZmF1bHRfY29sb3JfY2FwYWJpbGl0aWVzICh0dHksIDApOwogCWJyZWFrOwotICAgICAgY2FzZSA4 OgkvKiA4IHN0YW5kYXJkIEFOU0kgY29sb3JzICovCi0JdHR5LT5UU19vcmlnX3BhaXIgPSAiXDAz M1swbSI7CisgICAgICBjYXNlIDg6IC8qIDggc3RhbmRhcmQgQU5TSSBjb2xvcnMgKi8KKwl0dHkt PlRTX29yaWdfcGFpciA9ICJceDFiWzBtIjsKKwl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4 MWJbMyVkbSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQlZG0iOwogI2lmZGVm IFRFUk1JTkZPCi0JdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJcMDMzWzMlcDElZG0iOwotCXR0 eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXDAzM1s0JXAxJWRtIjsKLSNlbHNlCi0JdHR5LT5UU19z ZXRfZm9yZWdyb3VuZCA9ICJcMDMzWzMlZG0iOwotCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAi XDAzM1s0JWRtIjsKKwl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbMyVwMSVkbSI7CisJ dHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQlcDElZG0iOworI2VuZGlmCisjaWZkZWYg V0lORE9XU05UCisJdHR5LT5UU19vcmlnX3BhaXIgPSAiXHgxYlszOW1ceDFiWzQ5bSI7CisJdHR5 LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91 bmQgPSAiXHgxYlslbHVtIjsKICNlbmRpZgogCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDg7CiAJdHR5 LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CiAJYnJlYWs7CisjaWZkZWYgV0lORE9XU05UCisgICAg ICBjYXNlIDE2OgorCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlslbHVtIjsKKwl0dHkt PlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbJWx1bSI7CisJdHR5LT5UTl9tYXhfY29sb3JzID0g MTY7CisJdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisJYnJlYWs7CisgICAgICBjYXNlIDI1 NjoKKwl0dHktPlROX21heF9jb2xvcnMgPSAyNTY7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9 ICJceDFiWzM4OzU7JWx1bSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQ4OzU7 JWx1bSI7CisJdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisJYnJlYWs7CisgICAgICBjYXNl IDE2Nzc3MjE2OgorCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDE2Nzc3MjE2OworCXR0eS0+VFNfc2V0 X2ZvcmVncm91bmQgPSAiXHgxYlszODsyOyVsdTslbHU7JWx1bSI7CisJdHR5LT5UU19zZXRfYmFj a2dyb3VuZCA9ICJceDFiWzQ4OzI7JWx1OyVsdTslbHVtIjsKKwl0dHktPlROX25vX2NvbG9yX3Zp ZGVvID0gMDsKKwlicmVhazsKKyNlbmRpZgogICAgIH0KIH0KIApAQCAtMjMwNywxMiArMjMzMCwx NiBAQCBzZXRfdHR5X2NvbG9yX21vZGUgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIHN0 cnVjdCBmcmFtZSAqZikKICAgICB7CiAgICAgICB0dHktPnByZXZpb3VzX2NvbG9yX21vZGUgPSBt b2RlOwogICAgICAgdHR5X3NldHVwX2NvbG9ycyAodHR5ICwgbW9kZSk7Ci0gICAgICAvKiAgVGhp cyByZWNvbXB1dGVzIGFsbCB0aGUgZmFjZXMgZ2l2ZW4gdGhlIG5ldyBjb2xvciBkZWZpbml0aW9u cy4gICovCisgICAgICAvKiAgVGhpcyByZWNvbXB1dGVzIGFsbCB0aGUgZmFjZXMgZ2l2ZW4gdGhl IG5ldyBjb2xvciBkZWZpbml0aW9ucy4gKi8KKyNpZmRlZiBXSU5ET1dTTlQKKyAgICAgIHNhZmVf Y2FsbG4gKFF3MzJjb25fc2V0X3VwX2luaXRpYWxfZnJhbWVfZmFjZXMpOworI2Vsc2UKICAgICAg IHNhZmVfY2FsbG4gKFF0dHlfc2V0X3VwX2luaXRpYWxfZnJhbWVfZmFjZXMpOworI2VuZGlmCiAg ICAgfQogfQogCi0jZW5kaWYgLyogIURPU19OVCAmJiAhSEFWRV9BTkRST0lEICovCisjZW5kaWYg LyogIU1TRE9TICYmICFIQVZFX0FORFJPSUQgKi8KIAogY2hhciAqCiB0dHlfdHlwZV9uYW1lIChM aXNwX09iamVjdCB0ZXJtaW5hbCkKQEAgLTQ1ODYsOCArNDYxMyw4IEBAIHVzZSB0aGUgQm91cm5l IHNoZWxsIGNvbW1hbmQgJ1RFUk09Li4uOyBleHBvcnQgVEVSTScgKEMtc2hlbGw6XG5cCiAJCSB8 fCAoKGJnID0gZ2V0ZW52ICgiQ09MT1JURVJNIikpICE9IE5VTEwKIAkJICAgICAmJiBzdHJjYXNl Y21wIChiZywgInRydWVjb2xvciIpID09IDApKQogCSAgewotCSAgICB0dHktPlRTX3NldF9mb3Jl Z3JvdW5kID0gIlwwMzNbJT8lcDElezh9JTwldDMlcDElZCVlMzg7MjslcDElezY1NTM2fSUvJWQ7 JXAxJXsyNTZ9JS8lezI1NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20iOwotCSAgICB0dHktPlRTX3Nl dF9iYWNrZ3JvdW5kID0gIlwwMzNbJT8lcDElezh9JTwldDQlcDElZCVlNDg7MjslcDElezY1NTM2 fSUvJWQ7JXAxJXsyNTZ9JS8lezI1NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20iOworCSAgICB0dHkt PlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbJT8lcDElezh9JTwldDMlcDElZCVlMzg7MjslcDEl ezY1NTM2fSUvJWQ7JXAxJXsyNTZ9JS8lezI1NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20iOworCSAg ICB0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbJT8lcDElezh9JTwldDQlcDElZCVlNDg7 MjslcDElezY1NTM2fSUvJWQ7JXAxJXsyNTZ9JS8lezI1NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20i OwogCSAgICB0dHktPlROX21heF9jb2xvcnMgPSAxNjc3NzIxNjsKIAkgIH0KICAgICAgIH0KQEAg LTQ2NDEsNiArNDY2OCwyNyBAQCB1c2UgdGhlIEJvdXJuZSBzaGVsbCBjb21tYW5kICdURVJNPS4u LjsgZXhwb3J0IFRFUk0nIChDLXNoZWxsOlxuXAogCiAgICAgaW5pdGlhbGl6ZV93MzJfZGlzcGxh eSAodGVybWluYWwsICZ3aWR0aCwgJmhlaWdodCk7CiAKKyAgICAvKiAyNGJpdCBSR0Igc3VwcG9y dCBpbiBXaW5kb3dzICgxMCspIFRlcm1pbmFsIGFuZCBDb25zb2xlIEhvc3QKKyAgICAgICBodHRw czovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy9jb25zb2xlL2NvbnNvbGUtdmly dHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMgKi8KKyAgICB0dHktPlROX25vX2NvbG9yX3ZpZGVvID0g MDsKKyAgICB0dHktPlROX21heF9jb2xvcnMgPSAxNjc3NzIxNjsKKyAgICB0dHktPlRTX29yaWdf cGFpciA9ICJceDFiWzM5bVx4MWJbNDltIjsKKyAgICB0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0g Ilx4MWJbMzg7MjslbHU7JWx1OyVsdW0iOworICAgIHR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAi XHgxYls0ODsyOyVsdTslbHU7JWx1bSI7CisKKyAgICAvKiBTYXZlIGRlZmF1bHQgY29sb3IgY2Fw YWJpbGl0aWVzICovCisgICAgdHR5X2RlZmF1bHRfY29sb3JfY2FwYWJpbGl0aWVzICh0dHksIDEp OworCisgICAgdHR5LT5UU19lbnRlcl9ib2xkX21vZGUgPSAiXHgxYlsxbSI7CisgICAgdHR5LT5U U19lbnRlcl9pdGFsaWNfbW9kZSA9ICJceDFiWzNtIjsKKyAgICB0dHktPlRTX2VudGVyX3N0cmlr ZV90aHJvdWdoX21vZGUgPSAiXHgxYls5bSI7CisgICAgdHR5LT5UU19lbnRlcl91bmRlcmxpbmVf bW9kZSA9ICJceDFiWzRtIjsKKyAgICB0dHktPlRTX2V4aXRfdW5kZXJsaW5lX21vZGUgPSAiXHgx YlsyNG0iOworICAgIHR0eS0+VFNfZW50ZXJfcmV2ZXJzZV9tb2RlID0gIlx4MWJbN20iOworICAg IHR0eS0+VFNfZXhpdF9hdHRyaWJ1dGVfbW9kZSA9ICJceDFiWzBtIjsKKyAgICB0dHktPlRTX2N1 cnNvcl9pbnZpc2libGUgPSAiXHgxYls/MjVsIjsKKyAgICB0dHktPlRTX2N1cnNvcl92aXNpYmxl ID0gIlx4MWJbPzI1aCI7CisKICAgICBGcmFtZVJvd3MgKHR0eSkgPSBoZWlnaHQ7CiAgICAgRnJh bWVDb2xzICh0dHkpID0gd2lkdGg7CiAgICAgdHR5LT5zcGVjaWZpZWRfd2luZG93ID0gaGVpZ2h0 OwpAQCAtNDY4Niw3ICs0NzM0LDYgQEAgdXNlIHRoZSBCb3VybmUgc2hlbGwgY29tbWFuZCAnVEVS TT0uLi47IGV4cG9ydCBURVJNJyAoQy1zaGVsbDpcblwKICAgICAgZG9uJ3QgdGhpbmsgd2UncmUg bG9zaW5nIGFueXRoaW5nIGJ5IHR1cm5pbmcgaXQgb2ZmLiAgKi8KICAgdHR5LT5saW5lX2luc19k ZWxfb2sgPSAwOwogCi0gIHR0eS0+VE5fbWF4X2NvbG9ycyA9IDE2OyAgLyogTXVzdCBiZSBub24t emVybyBmb3IgdHR5LWRpc3BsYXktY29sb3ItcC4gICovCiAjZW5kaWYJLyogRE9TX05UICovCiAK ICNpZmRlZiBIQVZFX0dQTQpAQCAtNTIwMiwxMSArNTI0OSwxMSBAQCBub24tbmlsIHRvIGVuYWJs ZSB0aGlzIG9wdGltaXphdGlvbi4gICovKTsKICAgZGVmc3ViciAoJlN0dHlfZGlzcGxheV9waXhl bF93aWR0aCk7CiAgIGRlZnN1YnIgKCZTdHR5X2Rpc3BsYXlfcGl4ZWxfaGVpZ2h0KTsKIAotI2lm ICFkZWZpbmVkIERPU19OVCAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVmaW5lZCBN U0RPUyAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKICAgZGVmYXVsdF9vcmlnX3BhaXIgPSBOVUxM OwogICBkZWZhdWx0X3NldF9mb3JlZ3JvdW5kID0gTlVMTDsKICAgZGVmYXVsdF9zZXRfYmFja2dy b3VuZCA9IE5VTEw7Ci0jZW5kaWYgLyogIURPU19OVCAmJiAhSEFWRV9BTkRST0lEICovCisjZW5k aWYgLyogIU1TRE9TICYmICFIQVZFX0FORFJPSUQgKi8KIAogI2lmbmRlZiBIQVZFX0FORFJPSUQK ICAgZW5jb2RlX3Rlcm1pbmFsX3NyYyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvdGVybWNoYXIu aCBiL3NyYy90ZXJtY2hhci5oCmluZGV4IGVjZTNhNjc2YzZlLi4xM2FkMmYwYTcyYSAxMDA2NDQK LS0tIGEvc3JjL3Rlcm1jaGFyLmgKKysrIGIvc3JjL3Rlcm1jaGFyLmgKQEAgLTI0OSw0ICsyNDks NiBAQCBzdHJ1Y3QgaW5wdXRfZXZlbnQ7CiBleHRlcm4gTGlzcF9PYmplY3QgdHR5X2hhbmRsZV90 YWJfYmFyX2NsaWNrIChzdHJ1Y3QgZnJhbWUgKiwgaW50LCBpbnQsIGJvb2wsCiAJCQkJCSAgICAg c3RydWN0IGlucHV0X2V2ZW50ICopOwogCitleHRlcm4gdm9pZCB0dHlfc2V0dXBfY29sb3JzIChz dHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9kZSk7CisKICNlbmRpZiAvKiBFTUFD U19URVJNQ0hBUl9IICovCmRpZmYgLS1naXQgYS9zcmMvdzMyY29uc29sZS5jIGIvc3JjL3czMmNv bnNvbGUuYwppbmRleCAxYmNhMGNhZGZmOS4uZTQ5MzdiNDMxOWQgMTAwNjQ0Ci0tLSBhL3NyYy93 MzJjb25zb2xlLmMKKysrIGIvc3JjL3czMmNvbnNvbGUuYwpAQCAtMTksMTIgKzE5LDYyIEBAIGFs b25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCiAvKgogICAgVGltIEZsZWVoYXJ0IChhcG9sbG9Ab25saW5lLmNvbSkJCTEt MTctOTIKICAgIEdlb2ZmIFZvZWxrZXIgKHZvZWxrZXJAY3Mud2FzaGluZ3Rvbi5lZHUpCTktMTIt OTMKKyAgIEV3YW4gVG93bnNoZW5kIChld2FuQGV0b3duLmRldikgICAgICAgICAgICAgIDIwMjUt MDgKKworICAgYy4gfiAyMDI1OgorICAgKiAyNGJpdCBSR0Igc3VwcG9ydCBpbiBXaW5kb3dzICgx MCspIFRlcm1pbmFsCisgICAqIE1pY3Jvc29mdCBtb3ZpbmcgYXdheSBmcm9tIGlkaW9zeW5jcmF0 aWMgQVBJLCB0b3dhcmQgQVNDSUkgY29udHJvbHMKKworICAgaHR0cHM6Ly9sZWFybi5taWNyb3Nv ZnQuY29tL2VuLXVzL3dpbmRvd3MvY29uc29sZS9jb25zb2xlLXZpcnR1YWwtdGVybWluYWwtc2Vx dWVuY2VzCisKKyAgIEZvciByZWZlcmVuY2UgKG1vcmUgZGVmaW5lZCBhdCBsaW5rIGFib3ZlKToK KworICAgKiAiY2xlYXIiIDo9IG92ZXJ3cml0ZSB3aXRoIHNwYWNlIGNoYXJhY3RlcgorCisgICBc eDFiWzBKID0+IGNsZWFyIGN1cnNvciAoaW5jbHVzaXZlKSB0byBlbmQgb2Ygc2NyZWVuCisgICBc eDFiWzFKID0+IGNsZWFyIGJlZ2lubmluZyBvZiBzY3JlZW4gdG8gY3Vyc29yIChpbmNsdXNpdmUp CisgICBceDFiWzJKID0+IGNsZWFyIGVudGlyZSBzY3JlZW4gKGV4Y2x1ZGluZyBzY3JvbGxiYWNr IGFyZWEpCisgICBceDFiWzNKID0+IGNsZWFyIHNjcm9sbGJhY2sgYXJlYQorCisgICBceDFiWzBL ID0+IGNsZWFyIGN1cnNvciAoaW5jbHVzaXZlKSB0byBlbmQgb2YgbGluZQorICAgXHgxYlsxSyA9 PiBjbGVhciBiZWdpbm5pbmcgb2YgbGluZSB0byBjdXJzb3IgKGluY2x1c2l2ZSkKKyAgIFx4MWJb MksgPT4gY2xlYXIgZW50aXJlIGxpbmUKKworICAgXHgxYls8bj5AID0+IGluc2VydCA8bj4gc3Bh Y2VzIGF0IGN1cnNvciwgc2hpZnQgY3VycmVudCB0ZXh0IHJpZ2h0CisgICBceDFiWzxuPlAgPT4g ZGVsZXRlIDxuPiBjaGFycyAgYXQgY3Vyc29yLCBhZGRpbmcgc3BhY2VzIGZyb20gcmlnaHQKKwor ICAgXHgxYls3ICAgICAgICA9PiBzYXZlIGN1cnNvciBwb3NpdGlvbgorICAgXHgxYls4ICAgICAg ICA9PiByZXN0b3JlIHNhdmVkIGN1cnNvciBwb3NpdGlvbgorICAgXHgxYls8eT47PHg+SCA9PiBt b3ZlIGN1cnNvciB0byByb3cgPHk+LCBjb2wgPHg+ICgxLWluZGV4ZWQpCisgICBceDFiWz8yNWwg ICAgID0+IGhpZGUgY3Vyc29yCisgICBceDFiWz8yNWggICAgID0+IHNob3cgY3Vyc29yCisKKyAg IFx4MWJbMG0gPT4gYWxsIGF0dHJpYnV0ZXMgb2ZmCisgICBceDFiWzFtID0+IGJvbGQKKyAgIFx4 MWJbM20gPT4gaXRhbGljCisgICBceDFiWzRtID0+IHVuZGVybGluZQorICAgXHgxYls3bSA9PiBp bnZlcnNlIHZpZGVvCisgICBceDFiWzltID0+IHN0cmlrZS10aHJvdWdoCisKKyAgICogMTYgYmFz ZSBjb2xvcnMgZGVmaW5lZCBpbiB3MzJjb25zb2xlLmVsCisgICBceDFiWzM8aT4gICg8aT4gaW4g MC4uNykgPT4gZm9yZWdyb3VuZCA9IDE2Y29sb3JzW2ldCisgICBceDFiWzQ8aT4gICg8aT4gaW4g MC4uNykgPT4gYmFja2dyb3VuZCA9IDE2Y29sb3JzW2ldCisgICBceDFiWzk8aT4gICg8aT4gaW4g MC4uNykgPT4gZm9yZWdyb3VuZCA9IDE2Y29sb3JzW2kgKyA4XQorICAgXHgxYlsxMDxpPiAoPGk+ IGluIDAuLjcpID0+IGJhY2tncm91bmQgPSAxNmNvbG9yc1tpICsgOF0KKworICAgKiAyNTYgY29s b3JzIGZvbGxvdyB4dGVybQorICAgXHgxYlszODxpPiAoPGk+IGluIDAuLjI1NSkgPT4gZm9yZWdy b3VuZCA9IDI1NmNvbG9yc1tpXQorICAgXHgxYls0ODxpPiAoPGk+IGluIDAuLjI1NSkgPT4gYmFj a2dyb3VuZCA9IDI1NmNvbG9yc1tpXQorCisgICAqIDI0LWJpdCBjb3ZlcnMgYWxsIG5hbWVkIGNv bG9ycyAoc2VlIGNvbG9yLW5hbWUtcmdiLWFsaXN0KQorICAgXHgxYlszODsyOzxyPjs8Zz47PGI+ ID0+IGZvcmVncm91bmQgPSAoPHI+LCA8Zz4sIDxiPikKKyAgIFx4MWJbNDg7Mjs8cj47PGc+Ozxi PiA9PiBiYWNrZ3JvdW5kID0gKDxyPiwgPGc+LCA8Yj4pCiAqLwogCiAKICNpbmNsdWRlIDxjb25m aWcuaD4KLQogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVk ZSA8d2luZG93cy5oPgogCiAjaW5jbHVkZSAibGlzcC5oIgpAQCAtNDAsNyArOTAsNiBAQCBhbG9u ZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLwogI2luY2x1ZGUgInczMi5oIgkvKiBmb3Igc3ltc19vZl9udHRlcm0gKi8KICNl bmRpZgogCi1zdGF0aWMgdm9pZCB3MzJjb25fbW92ZV9jdXJzb3IgKHN0cnVjdCBmcmFtZSAqZiwg aW50IHJvdywgaW50IGNvbCk7CiBzdGF0aWMgdm9pZCB3MzJjb25fY2xlYXJfdG9fZW5kIChzdHJ1 Y3QgZnJhbWUgKmYpOwogc3RhdGljIHZvaWQgdzMyY29uX2NsZWFyX2ZyYW1lIChzdHJ1Y3QgZnJh bWUgKmYpOwogc3RhdGljIHZvaWQgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChzdHJ1Y3QgZnJh bWUgKmYsIGludCk7CkBAIC01MSwxMyArMTAwLDMwIEBAIHN0YXRpYyB2b2lkIHczMmNvbl9kZWxl dGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKTsKIHN0YXRpYyB2b2lkIHczMmNvbl9y ZXNldF90ZXJtaW5hbF9tb2RlcyAoc3RydWN0IHRlcm1pbmFsICp0KTsKIHN0YXRpYyB2b2lkIHcz MmNvbl9zZXRfdGVybWluYWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCk7CiBzdGF0aWMgdm9p ZCB3MzJjb25fdXBkYXRlX2JlZ2luIChzdHJ1Y3QgZnJhbWUgKiBmKTsKLXN0YXRpYyB2b2lkIHcz MmNvbl91cGRhdGVfZW5kIChzdHJ1Y3QgZnJhbWUgKiBmKTsKK3N0YXRpYyB2b2lkIHczMmNvbl91 cGRhdGVfZW5kIChzdHJ1Y3QgZnJhbWUgKmYpOworc3RhdGljIGludCAgdzMyY29uX3dyaXRlX3Z0 X3NlcSAoY2hhciAqKTsKIHN0YXRpYyBXT1JEIHczMl9mYWNlX2F0dHJpYnV0ZXMgKHN0cnVjdCBm cmFtZSAqZiwgaW50IGZhY2VfaWQpOworc3RhdGljIHZvaWQgdHVybl9vbl9mYWNlIChzdHJ1Y3Qg ZnJhbWUgKiwgaW50IGZhY2VfaWQpOworc3RhdGljIHZvaWQgdHVybl9vZmZfZmFjZSAoc3RydWN0 IGZyYW1lICosIGludCBmYWNlX2lkKTsKK3N0YXRpYyB2b2lkIHczMmNvbl9tb3ZlX2N1cnNvciAo c3RydWN0IGZyYW1lICpmLCBpbnQgcm93LCBpbnQgY29sKTsKK3ZvaWQgdzMyY29uX3NhdmVfY3Vy c29yICh2b2lkKTsKK3ZvaWQgdzMyY29uX3Jlc3RvcmVfY3Vyc29yICh2b2lkKTsKK3ZvaWQgdzMy Y29uX3Nob3dfY3Vyc29yICh2b2lkKTsKK3ZvaWQgdzMyY29uX2hpZGVfY3Vyc29yICh2b2lkKTsK K3ZvaWQgdzMyY29uX2RyYXdfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKmYpOworCitzdGF0aWMgdW5z aWduZWQgbG9uZyBnZXRfcGl4ZWwgKHVuc2lnbmVkIGxvbmcgaW5kZXgpOworCitleHRlcm4gdm9p ZCB0dHlfc2V0dXBfY29sb3JzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBpbnQgbW9k ZSk7CiAKLXN0YXRpYyBDT09SRAljdXJzb3JfY29vcmRzOwotc3RhdGljIEhBTkRMRQlwcmV2X3Nj cmVlbiwgY3VyX3NjcmVlbjsKLXN0YXRpYyBXT1JECWNoYXJfYXR0cl9ub3JtYWw7Ci1zdGF0aWMg RFdPUkQJcHJldl9jb25zb2xlX21vZGU7CitzdGF0aWMgQ09PUkQgICAgY3Vyc29yX2Nvb3JkczsK K3N0YXRpYyBDT09SRCAgICBzYXZlZF9jb29yZHM7CitzdGF0aWMgSEFORExFICAgcHJldl9zY3Jl ZW4sIGN1cl9zY3JlZW47CitzdGF0aWMgV09SRCAgICAgY2hhcl9hdHRyX25vcm1hbDsKK3N0YXRp YyBXT1JEICAgICBiZ19ub3JtYWw7CitzdGF0aWMgV09SRCAgICAgZmdfbm9ybWFsOworc3RhdGlj IERXT1JEICAgIHByZXZfY29uc29sZV9tb2RlOworc3RhdGljIGludCAgICAgIHVzaW5nX3N5c3Rl bV9jYXJldDsKIAogc3RhdGljIENPTlNPTEVfQ1VSU09SX0lORk8gY29uc29sZV9jdXJzb3JfaW5m bzsKICNpZm5kZWYgVVNFX1NFUEFSQVRFX1NDUkVFTgpAQCAtNjgsMTMgKzEzNCwxNCBAQCBleHRl cm4gSEFORExFICBrZXlib2FyZF9oYW5kbGU7CiBIQU5ETEUgIGtleWJvYXJkX2hhbmRsZTsKIGlu dCB3MzJfY29uc29sZV91bmljb2RlX2lucHV0OwogCi0KLS8qIFNldHRpbmcgdGhpcyBhcyB0aGUg Y3RybCBoYW5kbGVyIHByZXZlbnRzIGVtYWNzIGZyb20gYmVpbmcga2lsbGVkIHdoZW4KLSAgIHNv bWVvbmUgaGl0cyBeQyBpbiBhICdzdXNwZW5kZWQnIHNlc3Npb24gKGNoaWxkIHNoZWxsKS4KLSAg IEFsc28gaWdub3JlIEN0cmwtQnJlYWsgc2lnbmFscy4gICovCitleHRlcm4gc3RydWN0IHR0eV9k aXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5Oworc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJl bnRfdHR5ID0gTlVMTDsKIAogQk9PTCBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyk7CiAK Ky8qIFNldHRpbmcgdGhpcyBhcyB0aGUgY3RybCBoYW5kbGVyIHByZXZlbnRzIGVtYWNzIGZyb20g YmVpbmcga2lsbGVkCisgICB3aGVuIHNvbWVvbmUgaGl0cyBeQyBpbiBhICdzdXNwZW5kZWQnIHNl c3Npb24gKGNoaWxkIHNoZWxsKS4gQWxzbworICAgaWdub3JlIEN0cmwtQnJlYWsgc2lnbmFscy4g ICovCiBCT09MCiBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyB0eXBlKQogewpAQCAtODMs NiArMTUwLDU1IEBAIGN0cmxfY19oYW5kbGVyICh1bnNpZ25lZCBsb25nIHR5cGUpCiAJICAmJiAo dHlwZSA9PSBDVFJMX0NfRVZFTlQgfHwgdHlwZSA9PSBDVFJMX0JSRUFLX0VWRU5UKSk7CiB9CiAK KyNkZWZpbmUgU1NQUklOVEYoYnVmLCBpLCBzeiwgZm10LCAuLi4pCQkJCQlcCisgIGRvIHsJCQkJ CQkJCQlcCisgICAgaWYgKGZtdCkJCQkJCQkJCVwKKyAgICAgICppICs9IHNucHJpbnRmIChidWYg KyAqaSwgc3ogLSAqaSwgZm10LCBfX1ZBX0FSR1NfXyk7CQlcCisgIH0gd2hpbGUgKDApCisKKyNk ZWZpbmUgREVGQVVMVFAocCkJCQkJCQkJXAorICAocCA9PSBGQUNFX1RUWV9ERUZBVUxUX0NPTE9S CQkJCQkJXAorICAgfHwgcCA9PSBGQUNFX1RUWV9ERUZBVUxUX0ZHX0NPTE9SCQkJCQlcCisgICB8 fCBwID09IEZBQ0VfVFRZX0RFRkFVTFRfQkdfQ09MT1IpCisKKyNkZWZpbmUgU0VRTUFYIDI1NiAv KiBBcmJpdHJhcnkgdXBwZXIgbGltaXQgb24gVlQgc2VxdWVuY2Ugc2l6ZSAqLworCisvKiBGb3Ig ZGVidWdnaW5nICovCitzdGF0aWMgdm9pZAordnRfc2VxX2Vycm9yIChjaGFyICpzZXEpCit7Cisg IGludCBpID0gMDsgaW50IGogPSAwOworICBpZiAoc2VxKQorICAgIGlmIChzZXFbMF0gPT0gJ1ww Jykgc2VxID0gIjxlbXB0eT4iOworICAgIGVsc2UKKyAgICAgIHdoaWxlIChpIDwgU0VRTUFYKQor CXsKKwkgIGlmIChzZXFbaV0gPT0gJ1x4MWInKSBzZXFbaV0gPSAnIyc7CisJICBpZiAoc2VxW2ld ID09ICAgICclJykgc2VxW2ldID0gJ18nOworCSAgaWYgKHNlcVtpXSA9PSAgICdcMCcpIHsgaisr OyBicmVhazsgfQorCSAgaSsrOworCX0KKyAgZWxzZSBzZXEgPSAiPG51bGw+IjsKKyAgcHJpbnRm ICgiRmFpbGVkIHRvIHdyaXRlIFZUIHNlcXVlbmNlOiAlc1xuIiwgaiA/IHNlcSA6ICI8b3ZlcmZs b3c+Iik7CisgIHByaW50ZiAoIkxhc3RFcnJvcjogMHglZHhcbiIsIEdldExhc3RFcnJvciAoKSk7 CisgIGZmbHVzaCAoc3Rkb3V0KTsKKyAgZXhpdCAoMSk7Cit9CisKKy8qIFdyaXRlcyAoZHluYW1p YykgdmlydHVhbCB0ZXJtaW5hbCBBU0NJSSBzZXF1ZW5jZXMgdG8gc2NyZWVuICovCitzdGF0aWMg aW50Cit3MzJjb25fd3JpdGVfdnRfc2VxIChjaGFyICpzZXEpCit7CisgIGNoYXIgYnVmW1NFUU1B WF07CisgIERXT1JEIG4gPSAwLCBrID0gMDsKKyAgU1NQUklOVEYgKGJ1ZiwgJm4sIFNFUU1BWCwg c2VxLCBOVUxMKTsKKyAgaWYgKG4pIFdyaXRlQ29uc29sZUEgKGN1cl9zY3JlZW4sIChMUENTVFIp IGJ1ZiwgbiwgJmssIE5VTEwpOworICByZXR1cm4gazsKK30KKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Vyc29yIENvbnRyb2wKKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwogCiAvKiBNb3ZlIHRoZSBjdXJzb3IgdG8gKFJPVywgQ09MKSBvbiBGUkFNRS4gICovCiBzdGF0 aWMgdm9pZApAQCAtOTAsNTQgKzIwNiwxODAgQEAgdzMyY29uX21vdmVfY3Vyc29yIChzdHJ1Y3Qg ZnJhbWUgKmYsIGludCByb3csIGludCBjb2wpCiB7CiAgIGN1cnNvcl9jb29yZHMuWCA9IGNvbDsK ICAgY3Vyc29yX2Nvb3Jkcy5ZID0gcm93OwotCi0gIC8qIFRPRE86IGZvciBtdWx0aS10dHkgc3Vw cG9ydCwgY3VyX3NjcmVlbiBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBhCi0gICAgIHJlZmVyZW5j ZSB0byB0aGUgdGVybWluYWwgZm9yIHRoaXMgZnJhbWUuICAqLwotICBTZXRDb25zb2xlQ3Vyc29y UG9zaXRpb24gKGN1cl9zY3JlZW4sIGN1cnNvcl9jb29yZHMpOworICBpZiAodzMyX3VzZV92aXJ0 dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykKKyAgICB7CisgICAgICBjaGFyIHNlcVszMl07CisgICAg ICBzcHJpbnRmKHNlcSwgIlx4MWJbJWQ7JWRIIiwgcm93ICsgMSwgY29sICsgMSk7IC8qIDEtaW5k ZXhlZCAqLworICAgICAgdzMyY29uX3dyaXRlX3Z0X3NlcShzZXEpOworICAgIH0KKyAgZWxzZQor ICB7CisgICAgLyogVE9ETzogZm9yIG11bHRpLXR0eSBzdXBwb3J0LCBjdXJfc2NyZWVuIHNob3Vs ZCBiZSByZXBsYWNlZCB3aXRoIGEKKyAgICAgICByZWZlcmVuY2UgdG8gdGhlIHRlcm1pbmFsIGZv ciB0aGlzIGZyYW1lLiAgKi8KKyAgICBTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb24gKGN1cl9zY3Jl ZW4sIGN1cnNvcl9jb29yZHMpOworICB9CiB9CiAKIHZvaWQKIHczMmNvbl9oaWRlX2N1cnNvciAo dm9pZCkKIHsKLSAgR2V0Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1 cnNvcl9pbmZvKTsKLSAgY29uc29sZV9jdXJzb3JfaW5mby5iVmlzaWJsZSA9IEZBTFNFOwotICBT ZXRDb25zb2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVlbiwgJmNvbnNvbGVfY3Vyc29yX2luZm8pOwor ICBpZiAodXNpbmdfc3lzdGVtX2NhcmV0KQorICAgIHsKKyAgICAgIEdldENvbnNvbGVDdXJzb3JJ bmZvIChjdXJfc2NyZWVuLCAmY29uc29sZV9jdXJzb3JfaW5mbyk7CisgICAgICBjb25zb2xlX2N1 cnNvcl9pbmZvLmJWaXNpYmxlID0gRkFMU0U7CisKKyAgICAgIGlmICh3MzJfdXNlX3ZpcnR1YWxf dGVybWluYWxfc2VxdWVuY2VzKQorCWlmICghY3VycmVudF90dHktPmN1cnNvcl9oaWRkZW4pCisJ ICB3MzJjb25fd3JpdGVfdnRfc2VxICgoY2hhciAqKSBjdXJyZW50X3R0eS0+VFNfY3Vyc29yX2lu dmlzaWJsZSk7CisJZWxzZQorCSAgU2V0Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZj b25zb2xlX2N1cnNvcl9pbmZvKTsKKyAgICB9CisgIGN1cnJlbnRfdHR5LT5jdXJzb3JfaGlkZGVu ID0gMTsKIH0KIAogdm9pZAogdzMyY29uX3Nob3dfY3Vyc29yICh2b2lkKQogewotICBHZXRDb25z b2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVlbiwgJmNvbnNvbGVfY3Vyc29yX2luZm8pOwotICBjb25z b2xlX2N1cnNvcl9pbmZvLmJWaXNpYmxlID0gVFJVRTsKLSAgU2V0Q29uc29sZUN1cnNvckluZm8g KGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKKyAgaWYgKHVzaW5nX3N5c3RlbV9j YXJldCkKKyAgICB7CisgICAgICBHZXRDb25zb2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVlbiwgJmNv bnNvbGVfY3Vyc29yX2luZm8pOworICAgICAgY29uc29sZV9jdXJzb3JfaW5mby5iVmlzaWJsZSA9 IFRSVUU7CisKKyAgICAgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQor CWlmIChjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbikKKwkgIHczMmNvbl93cml0ZV92dF9zZXEg KChjaGFyICopIGN1cnJlbnRfdHR5LT5UU19jdXJzb3JfdmlzaWJsZSk7CisJZWxzZQorCSAgU2V0 Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKKyAg ICB9CisgIGN1cnJlbnRfdHR5LT5jdXJzb3JfaGlkZGVuID0gMDsKK30KKwordm9pZAordzMyY29u X3NhdmVfY3Vyc29yICh2b2lkKQoreworICBzYXZlZF9jb29yZHMgPSBjdXJzb3JfY29vcmRzOwor ICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykKKyAgICB3MzJjb25fd3Jp dGVfdnRfc2VxICgoY2hhciAqKSAiXHgxYls3Iik7Cit9CisKK3ZvaWQKK3czMmNvbl9yZXN0b3Jl X2N1cnNvciAodm9pZCkKK3sKKyAgY3Vyc29yX2Nvb3JkcyA9IHNhdmVkX2Nvb3JkczsKKyAgaWYg KHczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMpCisgICAgdzMyY29uX3dyaXRlX3Z0 X3NlcSAoKGNoYXIgKikgIlx4MWJbOCIpOworICBlbHNlCisgICAgU2V0Q29uc29sZUN1cnNvclBv c2l0aW9uIChjdXJfc2NyZWVuLCBjdXJzb3JfY29vcmRzKTsKIH0KIAorLyogVGhpcyBmdW5jdGlv biBvbmx5IHRvIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBiZWZvcmUgd3JpdGVfbWF0cml4ICovCitz dGF0aWMgdW5zaWduZWQgbG9uZyBzYXZlZF9jdXJzb3JfYmcgPSAtOTsKK3N0YXRpYyB1bnNpZ25l ZCBsb25nIHNhdmVkX2N1cnNvcl9mZyA9IC05Oworc3RhdGljIENPT1JEIHByZXZfY3Vyc29yX3Bv cyA9IHsgLTEsIC0xIH07CitzdGF0aWMgaW50IHNhdmVkX2ZhY2VfaWQgPSAtMTsKK3ZvaWQKK3cz MmNvbl9kcmF3X2N1cnNvciAoc3RydWN0IGZyYW1lICpmKQoreworICBpZiAoIXVzaW5nX3N5c3Rl bV9jYXJldCkKKyAgICB7CisgICAgICBpbnQgeCA9IGN1cnNvcl9jb29yZHMuWCwgeSA9IGN1cnNv cl9jb29yZHMuWTsKKyAgICAgIHN0cnVjdCBnbHlwaF9yb3cgKm9yb3cgPSBNQVRSSVhfUk9XIChm LT5jdXJyZW50X21hdHJpeCwgeSk7CisgICAgICBzdHJ1Y3QgZ2x5cGhfcm93ICpucm93ID0gTUFU UklYX1JPVyAoZi0+ZGVzaXJlZF9tYXRyaXgsIHkpOworICAgICAgaW50IGdseXBoX2ZhY2VfaWQg PSBucm93LT5nbHlwaHNbVEVYVF9BUkVBXVt4XS5mYWNlX2lkOworICAgICAgaWYgKGdseXBoX2Zh Y2VfaWQgIT0gQ1VSU09SX0ZBQ0VfSUQpCisJeworCSAgc3RydWN0IGZhY2UgKmdseXBoX2ZhY2Ug PSBGQUNFX0ZST01fSUQgKGYsIGdseXBoX2ZhY2VfaWQpOworCSAgc3RydWN0IGZhY2UgKmN1cnNv cl9mYWNlID0gRkFDRV9GUk9NX0lEIChmLCBDVVJTT1JfRkFDRV9JRCk7CisKKwkgIC8qIGNsZWFu IHVwIGZyb20gbGFzdCBydW4gaWYgZmFjZXMgY29uZmxpY3RlZCAqLworCSAgaWYgKHNhdmVkX2N1 cnNvcl9iZyA+IC05ICYmIHNhdmVkX2N1cnNvcl9mZyA+IC05KQorCSAgICB7CisJICAgICAgY3Vy c29yX2ZhY2UtPmJhY2tncm91bmQgPSBzYXZlZF9jdXJzb3JfYmc7CisJICAgICAgY3Vyc29yX2Zh Y2UtPmZvcmVncm91bmQgPSBzYXZlZF9jdXJzb3JfZmc7CisJICAgICAgc2F2ZWRfY3Vyc29yX2Jn ID0gLTk7CisJICAgICAgc2F2ZWRfY3Vyc29yX2ZnID0gLTk7CisJICAgIH0KKwkgIC8qIGRyYXcg Y3Vyc29yIChpLmUuIG1hbmlwdWxhdGUgZmFjZXMpICovCisJICBpZiAoY3Vyc29yX2ZhY2UtPmJh Y2tncm91bmQgPT0gZ2x5cGhfZmFjZS0+YmFja2dyb3VuZCkKKwkgICAgeworCSAgICAgIHNhdmVk X2N1cnNvcl9iZyA9IGN1cnNvcl9mYWNlLT5iYWNrZ3JvdW5kOworCSAgICAgIHNhdmVkX2N1cnNv cl9mZyA9IGN1cnNvcl9mYWNlLT5mb3JlZ3JvdW5kOworCSAgICAgIGN1cnNvcl9mYWNlLT5iYWNr Z3JvdW5kID0gZ2x5cGhfZmFjZS0+Zm9yZWdyb3VuZDsKKwkgICAgICBjdXJzb3JfZmFjZS0+Zm9y ZWdyb3VuZCA9IGdseXBoX2ZhY2UtPmJhY2tncm91bmQ7CisJICAgIH0KKwkgIG5yb3ctPmdseXBo c1tURVhUX0FSRUFdW3hdLmZhY2VfaWQgPSBDVVJTT1JfRkFDRV9JRDsKKworCSAgLyogZm9yY2Ug YSByZXdyaXRlIG9mIG5ldyBjdXJzb3Igcm93IChpbmNsdWRpbmcgc3BhY2VzKSAqLworCSAgRlJB TUVfVFRZIChmKS0+bXVzdF93cml0ZV9zcGFjZXMgPSAxOworCSAgb3Jvdy0+ZW5hYmxlZF9wID0g MDsKKwkgIG5yb3ctPmVuYWJsZWRfcCA9IDE7CisKKwkgIC8qIGZvcmNlIGEgcmV3cml0ZSBvZiBv bGQgY3Vyc29yIHJvdyAoaWYgbmVlZGVkKSAqLworCSAgaW50IHB4ID0gcHJldl9jdXJzb3JfcG9z LlgsIHB5ID0gcHJldl9jdXJzb3JfcG9zLlk7CisJICBpZiAoc2F2ZWRfZmFjZV9pZCA+IC0xICYm IChweCAhPSB4IHx8IHB5ICE9IHkpKQorCSAgICB7CisJICAgICAgc3RydWN0IGdseXBoX3JvdyAq cG9yb3cgPSBNQVRSSVhfUk9XIChmLT5jdXJyZW50X21hdHJpeCwgcHkpOworCSAgICAgIHN0cnVj dCBnbHlwaF9yb3cgKnBucm93ID0gTUFUUklYX1JPVyAoZi0+ZGVzaXJlZF9tYXRyaXgsIHB5KTsK KwkgICAgICBpZiAocG5yb3ctPmdseXBoc1tURVhUX0FSRUFdW3B4XS5mYWNlX2lkID09IENVUlNP Ul9GQUNFX0lEKQorCQlwbnJvdy0+Z2x5cGhzW1RFWFRfQVJFQV1bcHhdLmZhY2VfaWQgPSBzYXZl ZF9mYWNlX2lkOworCSAgICAgIHBvcm93LT5lbmFibGVkX3AgPSAwOworCSAgICAgIHBucm93LT5l bmFibGVkX3AgPSAxOworCSAgICB9CisJICBzYXZlZF9mYWNlX2lkID0gZ2x5cGhfZmFjZV9pZDsK KwkgIHByZXZfY3Vyc29yX3Bvcy5YID0geDsKKwkgIHByZXZfY3Vyc29yX3Bvcy5ZID0geTsKKwl9 CisgICAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICAgICAgICAgICAgICAgICBU ZXh0IE1vZGlmaWNhdGlvbgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCiAvKiBDbGVhciBmcm9tIGN1cnNv ciB0byBlbmQgb2Ygc2NyZWVuLiAgKi8KIHN0YXRpYyB2b2lkCiB3MzJjb25fY2xlYXJfdG9fZW5k IChzdHJ1Y3QgZnJhbWUgKmYpCiB7Ci0gIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAoZiwgRlJB TUVfQ09MUyAoZikgLSAxKTsKLSAgdzMyY29uX2luc19kZWxfbGluZXMgKGYsIGN1cnNvcl9jb29y ZHMuWSwgRlJBTUVfVE9UQUxfTElORVMgKGYpIC0gY3Vyc29yX2Nvb3Jkcy5ZIC0gMSk7CisgIGlm ICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQorICAgIHsKKyAgICAgIHR1cm5f b25fZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFjZV9pZCk7CisgICAgICB3MzJjb25fd3JpdGVfdnRf c2VxICgiXHgxYlsxSiIpOworICAgICAgdHVybl9vZmZfZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFj ZV9pZCk7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgdzMyY29uX2NsZWFyX2VuZF9vZl9s aW5lIChmLCBGUkFNRV9DT0xTIChmKSAtIDEpOworICAgICAgaW50IG4gPSBGUkFNRV9UT1RBTF9M SU5FUyAoZikgLSBjdXJzb3JfY29vcmRzLlkgLSAxOworICAgICAgdzMyY29uX2luc19kZWxfbGlu ZXMgKGYsIGN1cnNvcl9jb29yZHMuWSwgbik7CisgICAgfQogfQogCiAvKiBDbGVhciB0aGUgZnJh bWUuICAqLwogc3RhdGljIHZvaWQKIHczMmNvbl9jbGVhcl9mcmFtZSAoc3RydWN0IGZyYW1lICpm KQogewotICBDT09SRAkgICAgIGRlc3Q7Ci0gIGludCAgICAgICAgbjsKLSAgRFdPUkQgICAgICBy OwotICBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5GTyBpbmZvOwotCi0gIEdldENvbnNvbGVTY3Jl ZW5CdWZmZXJJbmZvIChHZXRTdGRIYW5kbGUgKFNURF9PVVRQVVRfSEFORExFKSwgJmluZm8pOwot Ci0gIC8qIFJlbWVtYmVyIHRoYXQgdGhlIHNjcmVlbiBidWZmZXIgbWlnaHQgYmUgd2lkZXIgdGhh biB0aGUgd2luZG93LiAgKi8KLSAgbiA9IEZSQU1FX1RPVEFMX0xJTkVTIChmKSAqIGluZm8uZHdT aXplLlg7Ci0gIGRlc3QuWCA9IGRlc3QuWSA9IDA7Ci0KLSAgRmlsbENvbnNvbGVPdXRwdXRBdHRy aWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0cl9ub3JtYWwsIG4sIGRlc3QsICZyKTsKLSAgRmls bENvbnNvbGVPdXRwdXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sICcgJywgbiwgZGVzdCwgJnIpOwot CisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQorICAgIHsKKyAgICAg IHR1cm5fb25fZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFjZV9pZCk7CisgICAgICB3MzJjb25fd3Jp dGVfdnRfc2VxICgiXHgxYlsySlx4MWJbM0oiKTsKKyAgICAgIHR1cm5fb2ZmX2ZhY2UgKGYsIHNw YWNlX2dseXBoLmZhY2VfaWQpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIENPT1JECSAg ICAgZGVzdDsKKyAgICAgIGludCAgICAgICAgbjsKKyAgICAgIERXT1JEICAgICAgcjsKKyAgICAg IENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIGluZm87CisgICAgICAKKyAgICAgIEdldENvbnNv bGVTY3JlZW5CdWZmZXJJbmZvIChHZXRTdGRIYW5kbGUgKFNURF9PVVRQVVRfSEFORExFKSwgJmlu Zm8pOworICAgICAgCisgICAgICAvKiBSZW1lbWJlciB0aGF0IHRoZSBzY3JlZW4gYnVmZmVyIG1p Z2h0IGJlIHdpZGVyIHRoYW4gdGhlIHdpbmRvdy4gICovCisgICAgICBuID0gRlJBTUVfVE9UQUxf TElORVMgKGYpICogaW5mby5kd1NpemUuWDsKKyAgICAgIGRlc3QuWCA9IGRlc3QuWSA9IDA7Cisg ICAgICAKKyAgICAgIEZpbGxDb25zb2xlT3V0cHV0QXR0cmlidXRlIChjdXJfc2NyZWVuLCBjaGFy X2F0dHJfbm9ybWFsLCBuLCBkZXN0LCAmcik7CisgICAgICBGaWxsQ29uc29sZU91dHB1dENoYXJh Y3RlciAoY3VyX3NjcmVlbiwgJyAnLCBuLCBkZXN0LCAmcik7CisgICAgfQogICB3MzJjb25fbW92 ZV9jdXJzb3IgKGYsIDAsIDApOwogfQogCkBAIC0xNTEsOTUgKzM5MywxMTkgQEAgc3RhdGljIEJP T0wgIGNlb2xfaW5pdGlhbGl6ZWQgPSBGQUxTRTsKIHN0YXRpYyB2b2lkCiB3MzJjb25fY2xlYXJf ZW5kX29mX2xpbmUgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGVuZCkKIHsKLSAgLyogVGltZSB0byBy ZWFsbG9jYXRlIG91ciAiZW1wdHkgcm93Ij8gIFdpdGggdG9kYXkncyBsYXJnZSBzY3JlZW5zLAot ICAgICBpdCBpcyBub3QgdW50aGlua2FibGUgdG8gc2VlIFRUWSBmcmFtZXMgd2VsbCBpbiBleGNl c3Mgb2YKLSAgICAgODAtY2hhcmFjdGVyIHdpZHRoLiAgKi8KLSAgaWYgKGVuZCAtIGN1cnNvcl9j b29yZHMuWCA+IGdseXBoc19sZW4pCisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2Vx dWVuY2VzKQogICAgIHsKLSAgICAgIGlmIChnbHlwaHMgPT0gZ2x5cGhfYmFzZSkKLQlnbHlwaHMg PSBOVUxMOwotICAgICAgZ2x5cGhzID0geHJlYWxsb2MgKGdseXBocywgRlJBTUVfQ09MUyAoZikg KiBzaXplb2YgKHN0cnVjdCBnbHlwaCkpOwotICAgICAgZ2x5cGhzX2xlbiA9IEZSQU1FX0NPTFMg KGYpOwotICAgICAgY2VvbF9pbml0aWFsaXplZCA9IEZBTFNFOworICAgICAgdHVybl9vbl9mYWNl IChmLCBzcGFjZV9nbHlwaC5mYWNlX2lkKTsKKyAgICAgIHczMmNvbl93cml0ZV92dF9zZXEgKCJc eDFiWzBLIik7CisgICAgICB0dXJuX29mZl9mYWNlIChmLCBzcGFjZV9nbHlwaC5mYWNlX2lkKTsK ICAgICB9Ci0gIGlmICghY2VvbF9pbml0aWFsaXplZCkKKyAgZWxzZQogICAgIHsKLSAgICAgIGlu dCBpOwotICAgICAgZm9yIChpID0gMDsgaSA8IGdseXBoc19sZW47IGkrKykKLSAgICAgICAgewot CSAgbWVtY3B5ICgmZ2x5cGhzW2ldLCAmc3BhY2VfZ2x5cGgsIHNpemVvZiAoc3RydWN0IGdseXBo KSk7Ci0JICBnbHlwaHNbaV0uZnJhbWUgPSBOVUxMOwotICAgICAgICB9Ci0gICAgICBjZW9sX2lu aXRpYWxpemVkID0gVFJVRTsKKyAgICAgIC8qIFRpbWUgdG8gcmVhbGxvY2F0ZSBvdXIgImVtcHR5 IHJvdyI/ICBXaXRoIHRvZGF5J3MgbGFyZ2Ugc2NyZWVucywKKwkgaXQgaXMgbm90IHVudGhpbmth YmxlIHRvIHNlZSBUVFkgZnJhbWVzIHdlbGwgaW4gZXhjZXNzIG9mCisJIDgwLWNoYXJhY3RlciB3 aWR0aC4gICovCisgICAgICBpZiAoZW5kIC0gY3Vyc29yX2Nvb3Jkcy5YID4gZ2x5cGhzX2xlbikK Kwl7CisJICBpZiAoZ2x5cGhzID09IGdseXBoX2Jhc2UpCisJICAgIGdseXBocyA9IE5VTEw7CisJ ICBnbHlwaHMgPSB4cmVhbGxvYyAoZ2x5cGhzLCBGUkFNRV9DT0xTIChmKSAqIHNpemVvZiAoc3Ry dWN0IGdseXBoKSk7CisJICBnbHlwaHNfbGVuID0gRlJBTUVfQ09MUyAoZik7CisJICBjZW9sX2lu aXRpYWxpemVkID0gRkFMU0U7CisJfQorICAgICAgaWYgKCFjZW9sX2luaXRpYWxpemVkKQorCXsK KwkgIGludCBpOworCSAgZm9yIChpID0gMDsgaSA8IGdseXBoc19sZW47IGkrKykKKwkgICAgewor CSAgICAgIG1lbWNweSAoJmdseXBoc1tpXSwgJnNwYWNlX2dseXBoLCBzaXplb2YgKHN0cnVjdCBn bHlwaCkpOworCSAgICAgIGdseXBoc1tpXS5mcmFtZSA9IE5VTEw7CisJICAgIH0KKwkgIGNlb2xf aW5pdGlhbGl6ZWQgPSBUUlVFOworCX0KKyAgICAgIHczMmNvbl93cml0ZV9nbHlwaHMgKGYsIGds eXBocywgZW5kIC0gY3Vyc29yX2Nvb3Jkcy5YKTsKICAgICB9Ci0gIHczMmNvbl93cml0ZV9nbHlw aHMgKGYsIGdseXBocywgZW5kIC0gY3Vyc29yX2Nvb3Jkcy5YKTsKIH0KIAogLyogSW5zZXJ0IG4g bGluZXMgYXQgdnBvcy4gaWYgbiBpcyBuZWdhdGl2ZSBkZWxldGUgLW4gbGluZXMuICAqLworLyog VE9ETyAtIG1pZ3JhdGUgdG8gVlQgc2VxdWVuY2VzCisgICBceDFiWzxuPkwgPT4gaW5zZXJ0IDxu PiBsaW5lcyBhYm92ZSwgc2hpZnRpbmcgY3Vyc29yIGFuZCBiZWxvdyBkb3duCisgICBceDFiWzxu Pk0gPT4gZGVsZXRlIDxuPiBsaW5lcyBiZWxvdywgZnJvbSBjdXJzb3IgbGluZSAoaW5jbC4pIGRv d24gKi8KIHN0YXRpYyB2b2lkCiB3MzJjb25faW5zX2RlbF9saW5lcyAoc3RydWN0IGZyYW1lICpm LCBpbnQgdnBvcywgaW50IG4pCiB7Ci0gIGludAkgICAgIGksIG5iOwotICBTTUFMTF9SRUNUIHNj cm9sbDsKLSAgU01BTExfUkVDVCBjbGlwOwotICBDT09SRAkgICAgIGRlc3Q7Ci0gIENIQVJfSU5G TyAgZmlsbDsKLQotICBpZiAobiA8IDApCisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxf c2VxdWVuY2VzKQogICAgIHsKLSAgICAgIHNjcm9sbC5Ub3AgPSB2cG9zIC0gbjsKLSAgICAgIHNj cm9sbC5Cb3R0b20gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZik7Ci0gICAgICBkZXN0LlkgPSB2cG9z OworICAgICAgY2hhciBzZXFbMzJdOworICAgICAgY2hhciAqZm10ID0gbiA8IDAgPyAiXHgxYlsl ZEwiIDogIlx4MWJbJWRNIjsKKyAgICAgIHNwcmludGYgKHNlcSwgZm10LCBhYnMgKG4pKTsKKwor ICAgICAgdHVybl9vbl9mYWNlIChmLCBzcGFjZV9nbHlwaC5mYWNlX2lkKTsKKyAgICAgIHczMmNv bl93cml0ZV92dF9zZXEgKHNlcSk7CisgICAgICB0dXJuX29mZl9mYWNlIChmLCBzcGFjZV9nbHlw aC5mYWNlX2lkKTsKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBzY3JvbGwuVG9wID0gdnBv czsKLSAgICAgIHNjcm9sbC5Cb3R0b20gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZikgLSBuOwotICAg ICAgZGVzdC5ZID0gdnBvcyArIG47Ci0gICAgfQotICBjbGlwLlRvcCA9IGNsaXAuTGVmdCA9IHNj cm9sbC5MZWZ0ID0gMDsKLSAgY2xpcC5SaWdodCA9IHNjcm9sbC5SaWdodCA9IEZSQU1FX0NPTFMg KGYpOwotICBjbGlwLkJvdHRvbSA9IEZSQU1FX1RPVEFMX0xJTkVTIChmKTsKKyAgICAgIGludAkg ICAgIGksIG5iOworICAgICAgU01BTExfUkVDVCBzY3JvbGw7CisgICAgICBTTUFMTF9SRUNUIGNs aXA7CisgICAgICBDT09SRAkgICAgIGRlc3Q7CisgICAgICBDSEFSX0lORk8gIGZpbGw7CiAKLSAg ZGVzdC5YID0gMDsKKyAgICAgIGlmIChuIDwgMCkKKwl7CisJICBzY3JvbGwuVG9wID0gdnBvcyAt IG47CisJICBzY3JvbGwuQm90dG9tID0gRlJBTUVfVE9UQUxfTElORVMgKGYpOworCSAgZGVzdC5Z ID0gdnBvczsKKwl9CisgICAgICBlbHNlCisJeworCSAgc2Nyb2xsLlRvcCA9IHZwb3M7CisJICBz Y3JvbGwuQm90dG9tID0gRlJBTUVfVE9UQUxfTElORVMgKGYpIC0gbjsKKwkgIGRlc3QuWSA9IHZw b3MgKyBuOworCX0KKyAgICAgIGNsaXAuVG9wID0gY2xpcC5MZWZ0ID0gc2Nyb2xsLkxlZnQgPSAw OworICAgICAgY2xpcC5SaWdodCA9IHNjcm9sbC5SaWdodCA9IEZSQU1FX0NPTFMgKGYpOworICAg ICAgY2xpcC5Cb3R0b20gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZik7CiAKLSAgZmlsbC5DaGFyLkFz Y2lpQ2hhciA9IDB4MjA7Ci0gIGZpbGwuQXR0cmlidXRlcyA9IGNoYXJfYXR0cl9ub3JtYWw7Cisg ICAgICBkZXN0LlggPSAwOwogCi0gIFNjcm9sbENvbnNvbGVTY3JlZW5CdWZmZXIgKGN1cl9zY3Jl ZW4sICZzY3JvbGwsICZjbGlwLCBkZXN0LCAmZmlsbCk7CisgICAgICBmaWxsLkNoYXIuQXNjaWlD aGFyID0gMHgyMDsKKyAgICAgIGZpbGwuQXR0cmlidXRlcyA9IGNoYXJfYXR0cl9ub3JtYWw7CiAK LSAgLyogSGVyZSB3ZSBoYXZlIHRvIGRlYWwgd2l0aCBhIHczMiBjb25zb2xlIGZsYWtlOiBJZiB0 aGUgc2Nyb2xsCi0gICAgIHJlZ2lvbiBsb29rcyBsaWtlIGFiYyBhbmQgd2Ugc2Nyb2xsIGMgdG8g YSBhbmQgZmlsbCB3aXRoIGQgd2UgZ2V0Ci0gICAgIGNiZC4uLiBpZiB3ZSBzY3JvbGwgYmxvY2sg YyBvbmUgbGluZSBhdCBhIHRpbWUgdG8gYSwgd2UgZ2V0IGNkZC4uLgotICAgICBFbWFjcyBleHBl Y3RzIGNkZCBjb25zaXN0ZW50bHkuLi4gU28gd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhhdAotICAg ICBoZXJlLi4uICh0aGlzIGFsc28gb2NjdXJzIHNjcm9sbGluZyB0aGUgc2FtZSB3YXkgaW4gdGhl IG90aGVyCi0gICAgIGRpcmVjdGlvbi4gICovCisgICAgICBTY3JvbGxDb25zb2xlU2NyZWVuQnVm ZmVyIChjdXJfc2NyZWVuLCAmc2Nyb2xsLCAmY2xpcCwgZGVzdCwgJmZpbGwpOwogCi0gIGlmIChu ID4gMCkKLSAgICB7Ci0gICAgICBpZiAoc2Nyb2xsLkJvdHRvbSA8IGRlc3QuWSkKLSAgICAgICAg ewotCSAgZm9yIChpID0gc2Nyb2xsLkJvdHRvbTsgaSA8IGRlc3QuWTsgaSsrKQotICAgICAgICAg ICAgewotCSAgICAgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgaSwgMCk7Ci0JICAgICAgdzMyY29u X2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9DT0xTIChmKSk7Ci0gICAgICAgICAgICB9Ci0g ICAgICAgIH0KLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBuYiA9IGRlc3QuWSArIChzY3Jv bGwuQm90dG9tIC0gc2Nyb2xsLlRvcCkgKyAxOwotCi0gICAgICBpZiAobmIgPCBzY3JvbGwuVG9w KQotICAgICAgICB7Ci0JICBmb3IgKGkgPSBuYjsgaSA8IHNjcm9sbC5Ub3A7IGkrKykKLSAgICAg ICAgICAgIHsKLQkgICAgICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGksIDApOwotCSAgICAgIHcz MmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAoZiwgRlJBTUVfQ09MUyAoZikpOwotICAgICAgICAgICAg fQotICAgICAgICB9Ci0gICAgfQorICAgICAgLyogSGVyZSB3ZSBoYXZlIHRvIGRlYWwgd2l0aCBh IHczMiBjb25zb2xlIGZsYWtlOiBJZiB0aGUgc2Nyb2xsCisJIHJlZ2lvbiBsb29rcyBsaWtlIGFi YyBhbmQgd2Ugc2Nyb2xsIGMgdG8gYSBhbmQgZmlsbCB3aXRoIGQgd2UgZ2V0CisJIGNiZC4uLiBp ZiB3ZSBzY3JvbGwgYmxvY2sgYyBvbmUgbGluZSBhdCBhIHRpbWUgdG8gYSwgd2UgZ2V0IGNkZC4u LgorCSBFbWFjcyBleHBlY3RzIGNkZCBjb25zaXN0ZW50bHkuLi4gU28gd2UgaGF2ZSB0byBkZWFs IHdpdGggdGhhdAorCSBoZXJlLi4uICh0aGlzIGFsc28gb2NjdXJzIHNjcm9sbGluZyB0aGUgc2Ft ZSB3YXkgaW4gdGhlIG90aGVyCisJIGRpcmVjdGlvbi4gICovCisKKyAgICAgIGlmIChuID4gMCkK Kwl7CisJICBpZiAoc2Nyb2xsLkJvdHRvbSA8IGRlc3QuWSkKKwkgICAgeworCSAgICAgIGZvciAo aSA9IHNjcm9sbC5Cb3R0b207IGkgPCBkZXN0Llk7IGkrKykKKwkJeworCQkgIHczMmNvbl9tb3Zl X2N1cnNvciAoZiwgaSwgMCk7CisJCSAgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFN RV9DT0xTIChmKSk7CisJCX0KKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBuYiA9IGRl c3QuWSArIChzY3JvbGwuQm90dG9tIC0gc2Nyb2xsLlRvcCkgKyAxOwogCisJICBpZiAobmIgPCBz Y3JvbGwuVG9wKQorCSAgICB7CisJICAgICAgZm9yIChpID0gbmI7IGkgPCBzY3JvbGwuVG9wOyBp KyspCisJCXsKKwkJICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGksIDApOworCQkgIHczMmNvbl9j bGVhcl9lbmRfb2ZfbGluZSAoZiwgRlJBTUVfQ09MUyAoZikpOworCQl9CisJICAgIH0KKwl9Cisg ICAgfQogICBjdXJzb3JfY29vcmRzLlggPSAwOwogICBjdXJzb3JfY29vcmRzLlkgPSB2cG9zOwog fQpAQCAtMjQ4LDM4ICs1MTQsNTAgQEAgdzMyY29uX2luc19kZWxfbGluZXMgKHN0cnVjdCBmcmFt ZSAqZiwgaW50IHZwb3MsIGludCBuKQogI3VuZGVmCVJJR0hUCiAjZGVmaW5lCUxFRlQJMQogI2Rl ZmluZQlSSUdIVAkwCi0KKy8qIFRoZSBpZGVhIGhlcmUgaXMgdG8gaW1wbGVtZW50IGEgaG9yaXpv bnRhbCBzY3JvbGwgaW4gb25lIGxpbmUgdG8KKyAgIGltcGxlbWVudCBkZWxldGUgYW5kIGhhbGYg b2YgaW5zZXJ0LiAgKi8KIHN0YXRpYyB2b2lkCiBzY3JvbGxfbGluZSAoc3RydWN0IGZyYW1lICpm LCBpbnQgZGlzdCwgaW50IGRpcmVjdGlvbikKIHsKLSAgLyogVGhlIGlkZWEgaGVyZSBpcyB0byBp bXBsZW1lbnQgYSBob3Jpem9udGFsIHNjcm9sbCBpbiBvbmUgbGluZSB0bwotICAgICBpbXBsZW1l bnQgZGVsZXRlIGFuZCBoYWxmIG9mIGluc2VydC4gICovCi0gIFNNQUxMX1JFQ1Qgc2Nyb2xsLCBj bGlwOwotICBDT09SRAkgICAgIGRlc3Q7Ci0gIENIQVJfSU5GTyAgZmlsbDsKLQotICBjbGlwLlRv cCA9IHNjcm9sbC5Ub3AgPSBjbGlwLkJvdHRvbSA9IHNjcm9sbC5Cb3R0b20gPSBjdXJzb3JfY29v cmRzLlk7Ci0gIGNsaXAuTGVmdCA9IDA7Ci0gIGNsaXAuUmlnaHQgPSBGUkFNRV9DT0xTIChmKTsK LQotICBpZiAoZGlyZWN0aW9uID09IExFRlQpCisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWlu YWxfc2VxdWVuY2VzKQogICAgIHsKLSAgICAgIHNjcm9sbC5MZWZ0ID0gY3Vyc29yX2Nvb3Jkcy5Y ICsgZGlzdDsKLSAgICAgIHNjcm9sbC5SaWdodCA9IEZSQU1FX0NPTFMgKGYpIC0gMTsKKyAgICAg IGNoYXIgc2VxWzMyXTsKKyAgICAgIGNoYXIgKmZtdCA9IGRpcmVjdGlvbiA9PSBMRUZUID8gIlx4 MWJbJWRAIiA6ICJceDFiWyVkUCI7CisgICAgICBzcHJpbnRmIChzZXEsIGZtdCwgYWJzIChkaXN0 KSk7CisKKyAgICAgIHR1cm5fb25fZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFjZV9pZCk7CisgICAg ICB3MzJjb25fd3JpdGVfdnRfc2VxIChzZXEpOworICAgICAgdHVybl9vZmZfZmFjZSAoZiwgc3Bh Y2VfZ2x5cGguZmFjZV9pZCk7CiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgc2Nyb2xsLkxl ZnQgPSBjdXJzb3JfY29vcmRzLlg7Ci0gICAgICBzY3JvbGwuUmlnaHQgPSBGUkFNRV9DT0xTIChm KSAtIGRpc3QgLSAxOworICAgICAgU01BTExfUkVDVCBzY3JvbGwsIGNsaXA7CisgICAgICBDT09S RAkgICAgIGRlc3Q7CisgICAgICBDSEFSX0lORk8gIGZpbGw7CisgICAgICAKKyAgICAgIGNsaXAu VG9wID0gc2Nyb2xsLlRvcCA9IGNsaXAuQm90dG9tID0gc2Nyb2xsLkJvdHRvbSA9IGN1cnNvcl9j b29yZHMuWTsKKyAgICAgIGNsaXAuTGVmdCA9IDA7CisgICAgICBjbGlwLlJpZ2h0ID0gRlJBTUVf Q09MUyAoZik7CisgICAgICAKKyAgICAgIGlmIChkaXJlY3Rpb24gPT0gTEVGVCkKKwl7CisJICBz Y3JvbGwuTGVmdCA9IGN1cnNvcl9jb29yZHMuWCArIGRpc3Q7CisJICBzY3JvbGwuUmlnaHQgPSBG UkFNRV9DT0xTIChmKSAtIDE7CisJfQorICAgICAgZWxzZQorCXsKKwkgIHNjcm9sbC5MZWZ0ID0g Y3Vyc29yX2Nvb3Jkcy5YOworCSAgc2Nyb2xsLlJpZ2h0ID0gRlJBTUVfQ09MUyAoZikgLSBkaXN0 IC0gMTsKKwl9CisgICAgICAKKyAgICAgIGRlc3QuWCA9IGN1cnNvcl9jb29yZHMuWDsKKyAgICAg IGRlc3QuWSA9IGN1cnNvcl9jb29yZHMuWTsKKyAgICAgIAorICAgICAgZmlsbC5DaGFyLkFzY2lp Q2hhciA9IDB4MjA7CisgICAgICBmaWxsLkF0dHJpYnV0ZXMgPSBjaGFyX2F0dHJfbm9ybWFsOwor ICAgICAgCisgICAgICBTY3JvbGxDb25zb2xlU2NyZWVuQnVmZmVyIChjdXJfc2NyZWVuLCAmc2Ny b2xsLCAmY2xpcCwgZGVzdCwgJmZpbGwpOwogICAgIH0KLQotICBkZXN0LlggPSBjdXJzb3JfY29v cmRzLlg7Ci0gIGRlc3QuWSA9IGN1cnNvcl9jb29yZHMuWTsKLQotICBmaWxsLkNoYXIuQXNjaWlD aGFyID0gMHgyMDsKLSAgZmlsbC5BdHRyaWJ1dGVzID0gY2hhcl9hdHRyX25vcm1hbDsKLQotICBT Y3JvbGxDb25zb2xlU2NyZWVuQnVmZmVyIChjdXJfc2NyZWVuLCAmc2Nyb2xsLCAmY2xpcCwgZGVz dCwgJmZpbGwpOwogfQogCiAKQEAgLTI4OCwxNCArNTY2LDEzIEBAIHN0YXRpYyB2b2lkCiB3MzJj b25faW5zZXJ0X2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGgg KnN0YXJ0LAogCQkgICAgICByZWdpc3RlciBpbnQgbGVuKQogeworICAvKiBNb3ZlIGxlbiBjaGFy cyB0byB0aGUgcmlnaHQgZnJvbSBjdXJzb3JfY29vcmRzLCBmaWxsIHdpdGggYmxhbmtzICovCiAg IHNjcm9sbF9saW5lIChmLCBsZW4sIFJJR0hUKTsKLQotICAvKiBNb3ZlIGxlbiBjaGFycyB0byB0 aGUgcmlnaHQgc3RhcnRpbmcgYXQgY3Vyc29yX2Nvb3JkcywgZmlsbCB3aXRoIGJsYW5rcyAqLwor ICAKICAgaWYgKHN0YXJ0KQogICAgIHsKLSAgICAgIC8qIFByaW50IHRoZSBmaXJzdCBsZW4gY2hh cmFjdGVycyBvZiBzdGFydCwgY3Vyc29yX2Nvb3Jkcy5YIGFkanVzdGVkCi0JIGJ5IHdyaXRlX2ds eXBocy4gICovCi0KKyAgICAgIC8qIFByaW50IHRoZSBmaXJzdCBsZW4gY2hhcmFjdGVycyBvZiBz dGFydC4KKwkgY3Vyc29yX2Nvb3Jkcy5YIGFkanVzdGVkIGJ5IHdyaXRlX2dseXBocy4gICovCiAg ICAgICB3MzJjb25fd3JpdGVfZ2x5cGhzIChmLCBzdGFydCwgbGVuKTsKICAgICB9CiAgIGVsc2UK QEAgLTMwNiw3ICs1ODMsNyBAQCB3MzJjb25faW5zZXJ0X2dseXBocyAoc3RydWN0IGZyYW1lICpm LCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0YXJ0LAogCiBzdGF0aWMgdm9pZAogdzMyY29uX3dy aXRlX2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0cmlu ZywKLSAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGludCBsZW4pCisJCSAgICAgcmVnaXN0 ZXIgaW50IGxlbikKIHsKICAgRFdPUkQgcjsKICAgV09SRCBjaGFyX2F0dHI7CkBAIC0zNDIsNDMg KzYxOSw0NSBAQCB3MzJjb25fd3JpdGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVy IHN0cnVjdCBnbHlwaCAqc3RyaW5nLAogCiAgICAgICAvKiB3MzJjb25fY2xlYXJfZW5kX29mX2xp bmUgc2V0cyBmcmFtZSBvZiBnbHlwaHMgdG8gTlVMTC4gICovCiAgICAgICBzdHJ1Y3QgZnJhbWUg KmF0dHJfZnJhbWUgPSBmYWNlX2lkX2ZyYW1lID8gZmFjZV9pZF9mcmFtZSA6IGY7Ci0gICAgICAv KiBUdXJuIGFwcGVhcmFuY2UgbW9kZXMgb2YgdGhlIGZhY2Ugb2YgdGhlIHJ1biBvbi4gICovCi0g ICAgICBjaGFyX2F0dHIgPSB3MzJfZmFjZV9hdHRyaWJ1dGVzIChhdHRyX2ZyYW1lLCBmYWNlX2lk KTsKIAogICAgICAgaWYgKG4gPT0gbGVuKQogCS8qIFRoaXMgaXMgdGhlIGxhc3QgcnVuLiAgKi8K IAljb2RpbmctPm1vZGUgfD0gQ09ESU5HX01PREVfTEFTVF9CTE9DSzsKKwogICAgICAgY29udmVy c2lvbl9idWZmZXIgPSAoTFBDU1RSKSBlbmNvZGVfdGVybWluYWxfY29kZSAoc3RyaW5nLCBuLCBj b2RpbmcpOwogICAgICAgaWYgKGNvZGluZy0+cHJvZHVjZWQgPiAwKQogCXsKLQkgIC8qIFNldCB0 aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8KLQkgIGlmICghRmlsbENvbnNv bGVPdXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKLQkJCQkJICAgY29kaW5n LT5wcm9kdWNlZCwgY3Vyc29yX2Nvb3JkcywKLQkJCQkJICAgJnIpKQorCSAgaWYgKHczMl91c2Vf dmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMpCiAJICAgIHsKLQkgICAgICBwcmludGYgKCJGYWls ZWQgd3JpdGluZyBjb25zb2xlIGF0dHJpYnV0ZXM6ICVsdVxuIiwKLQkJICAgICAgR2V0TGFzdEVy cm9yICgpKTsKLQkgICAgICBmZmx1c2ggKHN0ZG91dCk7CisJICAgICAgdHVybl9vbl9mYWNlIChm LCBmYWNlX2lkKTsKKwkgICAgICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25f YnVmZmVyLAorCQkJICAgIGNvZGluZy0+cHJvZHVjZWQsICZyLCBOVUxMKTsKKwkgICAgICB0dXJu X29mZl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgICAgICBjdXJzb3JfY29vcmRzLlggKz0gY29kaW5n LT5wcm9kdWNlZDsKIAkgICAgfQotCi0JICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVycy4gICovCi0J ICBpZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwgY29udmVyc2lv bl9idWZmZXIsCi0JCQkJCSAgICBjb2RpbmctPnByb2R1Y2VkLCBjdXJzb3JfY29vcmRzLAotCQkJ CQkgICAgJnIpKQorCSAgZWxzZQogCSAgICB7Ci0JICAgICAgcHJpbnRmICgiRmFpbGVkIHdyaXRp bmcgY29uc29sZSBjaGFyYWN0ZXJzOiAlbHVcbiIsCi0JCSAgICAgIEdldExhc3RFcnJvciAoKSk7 Ci0JICAgICAgZmZsdXNoIChzdGRvdXQpOwotCSAgICB9CisJICAgICAgLyogVHVybiBhcHBlYXJh bmNlIG1vZGVzIG9mIHRoZSBmYWNlIG9mIHRoZSBydW4gb24uICAqLworCSAgICAgIGNoYXJfYXR0 ciA9IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGF0dHJfZnJhbWUsIGZhY2VfaWQpOworCSAgICAgIC8q IFNldCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8KKwkgICAgICBGaWxs Q29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAorCQkJCQkgIGNv ZGluZy0+cHJvZHVjZWQsIGN1cnNvcl9jb29yZHMsCisJCQkJCSAgJnIpOworCSAgICAgIC8qIFdy aXRlIHRoZSBjaGFyYWN0ZXJzLiAgKi8KKwkgICAgICBXcml0ZUNvbnNvbGVPdXRwdXRDaGFyYWN0 ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJCQkgICBjb2RpbmctPnByb2R1 Y2VkLCBjdXJzb3JfY29vcmRzLAorCQkJCQkgICAmcik7CiAKLQkgIGN1cnNvcl9jb29yZHMuWCAr PSBjb2RpbmctPnByb2R1Y2VkOwotCSAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29v cmRzLlksIGN1cnNvcl9jb29yZHMuWCk7CisJICAgICAgY3Vyc29yX2Nvb3Jkcy5YICs9IGNvZGlu Zy0+cHJvZHVjZWQ7CisJICAgICAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29vcmRz LlksIGN1cnNvcl9jb29yZHMuWCk7CisJICAgIH0KIAl9CiAgICAgICBsZW4gLT0gbjsKICAgICAg IHN0cmluZyArPSBuOwogICAgIH0KIH0KIAorCiAvKiBVc2VkIGZvciBtb3VzZSBoaWdobGlnaHQu ICAqLwogc3RhdGljIHZvaWQKIHczMmNvbl93cml0ZV9nbHlwaHNfd2l0aF9mYWNlIChzdHJ1Y3Qg ZnJhbWUgKmYsIHJlZ2lzdGVyIGludCB4LCByZWdpc3RlciBpbnQgeSwKQEAgLTM4Nyw2ICs2NjYs NyBAQCB3MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdp c3RlciBpbnQgeCwgcmVnaXN0ZXIgaW50IHksCiB7CiAgIExQQ1NUUiBjb252ZXJzaW9uX2J1ZmZl cjsKICAgc3RydWN0IGNvZGluZ19zeXN0ZW0gKmNvZGluZzsKKyAgRFdPUkQgZmlsbGVkLCB3cml0 dGVuOwogCiAgIGlmIChsZW4gPD0gMCkKICAgICByZXR1cm47CkBAIC0zOTksMjkgKzY3OSwzOCBA QCB3MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdpc3Rl ciBpbnQgeCwgcmVnaXN0ZXIgaW50IHksCiAgIC8qIFdlIGFyZSBnb2luZyB0byB3cml0ZSB0aGUg ZW50aXJlIGJsb2NrIG9mIGdseXBocyBpbiBvbmUgZ28sIGFzCiAgICAgIHRoZXkgYWxsIGhhdmUg dGhlIHNhbWUgZmFjZS4gIFNvIHRoaXMgX2lzXyB0aGUgbGFzdCBibG9jay4gICovCiAgIGNvZGlu Zy0+bW9kZSB8PSBDT0RJTkdfTU9ERV9MQVNUX0JMT0NLOwotCiAgIGNvbnZlcnNpb25fYnVmZmVy ID0gKExQQ1NUUikgZW5jb2RlX3Rlcm1pbmFsX2NvZGUgKHN0cmluZywgbGVuLCBjb2RpbmcpOwog ICBpZiAoY29kaW5nLT5wcm9kdWNlZCA+IDApCiAgICAgewotICAgICAgRFdPUkQgZmlsbGVkLCB3 cml0dGVuOwotICAgICAgLyogQ29tcHV0ZSB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZXMgY29ycmVz cG9uZGluZyB0byB0aGUgZmFjZS4gICovCi0gICAgICBEV09SRCBjaGFyX2F0dHIgPSB3MzJfZmFj ZV9hdHRyaWJ1dGVzIChmLCBmYWNlX2lkKTsKICAgICAgIENPT1JEIHN0YXJ0X2Nvb3JkczsKLQog ICAgICAgc3RhcnRfY29vcmRzLlggPSB4OwogICAgICAgc3RhcnRfY29vcmRzLlkgPSB5OwotICAg ICAgLyogU2V0IHRoZSBhdHRyaWJ1dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLwotICAgICAg aWYgKCFGaWxsQ29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAot CQkJCSAgICAgICBjb2RpbmctPnByb2R1Y2VkLCBzdGFydF9jb29yZHMsCi0JCQkJICAgICAgICZm aWxsZWQpKQotCURlYlByaW50ICgoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgYXR0cmlidXRlczog JWRcbiIsIEdldExhc3RFcnJvciAoKSkpOworCisgICAgICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rl cm1pbmFsX3NlcXVlbmNlcykKKwl7CisJICBpbnQgcHJldl9jdXJzb3JfaGlkZGVuID0gY3VycmVu dF90dHktPmN1cnNvcl9oaWRkZW47CisJICB3MzJjb25faGlkZV9jdXJzb3IgKCk7CisJICB3MzJj b25fc2F2ZV9jdXJzb3IgKCk7CisJICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIHksIHgpOworCSAg dHVybl9vbl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgIFdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwg Y29udmVyc2lvbl9idWZmZXIsCisJCQljb2RpbmctPnByb2R1Y2VkLCAmd3JpdHRlbiwgTlVMTCk7 CisJICB0dXJuX29mZl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgIHczMmNvbl9yZXN0b3JlX2N1cnNv ciAoKTsKKwkgIGlmICghcHJldl9jdXJzb3JfaGlkZGVuKSB3MzJjb25fc2hvd19jdXJzb3IgKCk7 CisJfQogICAgICAgZWxzZQogCXsKKwkgIC8qIENvbXB1dGUgdGhlIGNoYXJhY3RlciBhdHRyaWJ1 dGVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2UuICovCisJICBEV09SRCBjaGFyX2F0dHIgPSB3 MzJfZmFjZV9hdHRyaWJ1dGVzIChmLCBmYWNlX2lkKTsKKworCSAgLyogU2V0IHRoZSBhdHRyaWJ1 dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLworCSAgRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1 dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKKwkJCQkgICAgICBjb2RpbmctPnByb2R1Y2VkLCBz dGFydF9jb29yZHMsCisJCQkJICAgICAgJmZpbGxlZCk7CiAJICAvKiBXcml0ZSB0aGUgY2hhcmFj dGVycy4gICovCi0JICBpZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVl biwgY29udmVyc2lvbl9idWZmZXIsCi0JCQkJCSAgICBmaWxsZWQsIHN0YXJ0X2Nvb3JkcywgJndy aXR0ZW4pKQotCSAgICBEZWJQcmludCAoKCJGYWlsZWQgd3JpdGluZyBjb25zb2xlIGNoYXJhY3Rl cnM6ICVkXG4iLAotCQkgICAgICAgR2V0TGFzdEVycm9yICgpKSk7CisJICBXcml0ZUNvbnNvbGVP dXRwdXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJCSAgICAg ICBmaWxsZWQsIHN0YXJ0X2Nvb3JkcywgJndyaXR0ZW4pOwogCX0KICAgICB9CiB9CkBAIC00NTIs OSArNzQxLDcgQEAgdHR5X2RyYXdfcm93X3dpdGhfbW91c2VfZmFjZSAoc3RydWN0IHdpbmRvdyAq dywgc3RydWN0IGdseXBoX3JvdyAqd2luZG93X3JvdywKICAgcm9vdF94eSAoZiwgZnJhbWVfZW5k X3gsIGZyYW1lX3ksICZyb290X2VuZF94LCAmcm9vdF95KTsKICAgc3RydWN0IGdseXBoX3JvdyAq cm9vdF9yb3cgPSBNQVRSSVhfUk9XIChyb290LT5jdXJyZW50X21hdHJpeCwgcm9vdF95KTsKIAot ICAvKiBSZW1lbWJlciBjdXJyZW50IGN1cnNvciBjb29yZGluYXRlcyBzbyB0aGF0IHdlIGNhbiBy ZXN0b3JlCi0gICAgIHRoZW0gYXQgdGhlIGVuZC4gICovCi0gIENPT1JEIHNhdmVfY29vcmRzID0g Y3Vyc29yX2Nvb3JkczsKKyAgdzMyY29uX3NhdmVfY3Vyc29yKCk7CiAKICAgLyogSWYgdGhlIHJv b3QgZnJhbWUgZGlzcGxheXMgY2hpbGQgZnJhbWVzLCB3ZSBjYW5ub3QgbmFpdmVseQogICAgICB3 cml0ZSB0byB0aGUgdGVybWluYWwgd2hhdCB0aGUgd2luZG93IHRoaW5rcyBzaG91bGQgYmUgZHJh d24uCkBAIC01MDcsOSArNzk0LDcgQEAgdHR5X2RyYXdfcm93X3dpdGhfbW91c2VfZmFjZSAoc3Ry dWN0IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqd2luZG93X3JvdywKIAkgICAgfQogCX0K ICAgICB9Ci0KLSAgLyogUmVzdG9yZSBjdXJzb3Igd2hlcmUgaXQgd2FzIGJlZm9yZS4gICovCi0g IHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgc2F2ZV9jb29yZHMuWSwgc2F2ZV9jb29yZHMuWCk7Cisg IHczMmNvbl9yZXN0b3JlX2N1cnNvcigpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNTIxLDcgKzgw Niw5IEBAIHczMmNvbl9kZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKQogCiAg IHNjcm9sbF9saW5lIChmLCBuLCBMRUZUKTsKIH0KLQorLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAg ICAgICAgICAgICAgICAgICAgU2V0IHVwIC8gVGVhciBkb3duCisqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAog c3RhdGljIHZvaWQKIHczMmNvbl9yZXNldF90ZXJtaW5hbF9tb2RlcyAoc3RydWN0IHRlcm1pbmFs ICp0KQpAQCAtNTU5LDkgKzg0NiwxMSBAQCB3MzJjb25fc2V0X3Rlcm1pbmFsX21vZGVzIChzdHJ1 Y3QgdGVybWluYWwgKnQpCiB7CiAgIENPTlNPTEVfQ1VSU09SX0lORk8gY2NpOwogCisgIHVzaW5n X3N5c3RlbV9jYXJldCA9IHczMl91c2VfdmlzaWJsZV9zeXN0ZW1fY2FyZXQ7CisKICAgLyogbWFr ZSBjdXJzb3IgYmlnIGFuZCB2aXNpYmxlICgxMDAgb24gV2luZG93cyA5NSBtYWtlcyBpdCBkaXNh cHBlYXIpICAqLwogICBjY2kuZHdTaXplID0gOTk7Ci0gIGNjaS5iVmlzaWJsZSA9IFRSVUU7Cisg IGNjaS5iVmlzaWJsZSA9IHVzaW5nX3N5c3RlbV9jYXJldCA/IFRSVUUgOiBGQUxTRTsKICAgKHZv aWQpIFNldENvbnNvbGVDdXJzb3JJbmZvIChjdXJfc2NyZWVuLCAmY2NpKTsKIAogICBTZXRDb25z b2xlQWN0aXZlU2NyZWVuQnVmZmVyIChjdXJfc2NyZWVuKTsKQEAgLTU2OSwzMCArODU4LDcwIEBA IHczMmNvbl9zZXRfdGVybWluYWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCkKICAgLyogSWYg UXVpY2sgRWRpdCBpcyBlbmFibGVkIGZvciB0aGUgY29uc29sZSwgaXQgd2lsbCBnZXQgaW4gdGhl IHdheQogICAgICBvZiByZWNlaXZpbmcgbW91c2UgZXZlbnRzLCBzbyB3ZSBkaXNhYmxlIGl0LiAg QnV0IGxlYXZlIHRoZQogICAgICBJbnNlcnQgTW9kZSBhcyBpdCB3YXMgc2V0IGJ5IHRoZSB1c2Vy LiAgKi8KLSAgRFdPUkQgbmV3X2NvbnNvbGVfbW9kZQorICBEV09SRCBpbl9tb2RlCiAgICAgPSBF TkFCTEVfTU9VU0VfSU5QVVQgfCBFTkFCTEVfV0lORE9XX0lOUFVUIHwgRU5BQkxFX0VYVEVOREVE X0ZMQUdTOwogICBpZiAoKHByZXZfY29uc29sZV9tb2RlICYgRU5BQkxFX0lOU0VSVF9NT0RFKSAh PSAwKQotICAgIG5ld19jb25zb2xlX21vZGUgfD0gRU5BQkxFX0lOU0VSVF9NT0RFOwotICBTZXRD b25zb2xlTW9kZSAoa2V5Ym9hcmRfaGFuZGxlLCBuZXdfY29uc29sZV9tb2RlKTsKKyAgICBpbl9t b2RlIHw9IEVOQUJMRV9JTlNFUlRfTU9ERTsKKyAgU2V0Q29uc29sZU1vZGUgKGtleWJvYXJkX2hh bmRsZSwgaW5fbW9kZSk7CiAKICAgLyogSW5pdGlhbGl6ZSBpbnB1dCBtb2RlOiBpbnRlcnJ1cHRf aW5wdXQgb2ZmLCBubyBmbG93IGNvbnRyb2wsIGFsbG93CiAgICAgIDggYml0IGNoYXJhY3RlciBp bnB1dCwgc3RhbmRhcmQgcXVpdCBjaGFyLiAgKi8KICAgRnNldF9pbnB1dF9tb2RlIChRbmlsLCBR bmlsLCBtYWtlX2ZpeG51bSAoMiksIFFuaWwpOworCisgIERXT1JEIG91dF9tb2RlOworICBHZXRD b25zb2xlTW9kZSAoY3VyX3NjcmVlbiwgJm91dF9tb2RlKTsKKyAgb3V0X21vZGUgfD0gRU5BQkxF X1BST0NFU1NFRF9PVVRQVVQ7CisgIG91dF9tb2RlIHw9IEVOQUJMRV9WSVJUVUFMX1RFUk1JTkFM X1BST0NFU1NJTkc7CisgIG91dF9tb2RlIHw9IERJU0FCTEVfTkVXTElORV9BVVRPX1JFVFVSTjsK KyAgdzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcyA9IFNldENvbnNvbGVNb2RlIChj dXJfc2NyZWVuLCBvdXRfbW9kZSk7CisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2Vx dWVuY2VzKQorICAgIHsKKyAgICAgIGludCBjdXJzb3Jfb2ZmX3AgPSBYV0lORE9XIChzZWxlY3Rl ZF93aW5kb3cpLT5jdXJzb3Jfb2ZmX3A7CisgICAgICB0LT5kaXNwbGF5X2luZm8udHR5LT5jdXJz b3JfaGlkZGVuID0gY3Vyc29yX29mZl9wOworICAgIH0KIH0KIAogLyogaG1tbS4uLiBwZXJoYXBz IHRoZXNlIGxldCB1cyBicmFja2V0IHNjcmVlbiBjaGFuZ2VzIHNvIHRoYXQgd2UgY2FuIGZsdXNo CiAgICBjbHVtcHMgcmF0aGVyIHRoYW4gb25lLWNoYXJhY3Rlci1hdC1hLXRpbWUuLi4KIAotICAg d2UnbGwgc3RhcnQgd2l0aCBub3QgbW92aW5nIHRoZSBjdXJzb3Igd2hpbGUgYW4gdXBkYXRlIGlz IGluIHByb2dyZXNzLiAgKi8KKyAgIHdlJ2xsIHN0YXJ0IHdpdGggbm90IG1vdmluZyB0aGUgY3Vy c29yIHdoaWxlIGFuIHVwZGF0ZSBpcyBpbiBwcm9ncmVzcy4KKworICAgLi4uIGMuIDIwMjUsIFZU IHNlcXVlbmNlcyBjYW4gb25seSBiZSB3cml0dGVuIHdpdGggV3JpdGVDb25zb2xlLAorICAgcHJp bnRmLCBldGMuLCB3aGljaCBhZHZhbmNlIHRoZSBjdXJzb3IuCisqLwogc3RhdGljIHZvaWQKIHcz MmNvbl91cGRhdGVfYmVnaW4gKHN0cnVjdCBmcmFtZSAqIGYpCiB7CisgIGN1cnJlbnRfdHR5ID0g RlJBTUVfVFRZIChmKTsKKworICBpZiAoIXczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5j ZXMKKyAgICAgICYmIGN1cnJlbnRfdHR5LT5UTl9tYXhfY29sb3JzID4gMTYpCisgICAgeworICAg ICAgdHR5X3NldHVwX2NvbG9ycyAoY3VycmVudF90dHksIDE2KTsKKyAgICAgIHNhZmVfY2FsbG4g KFF3MzJjb25fc2V0X3VwX2luaXRpYWxfZnJhbWVfZmFjZXMpOworICAgIH0KKworICBpZiAodXNp bmdfc3lzdGVtX2NhcmV0ICE9IHczMl91c2VfdmlzaWJsZV9zeXN0ZW1fY2FyZXQpCisgICAgewor ICAgICAgaWYgKHVzaW5nX3N5c3RlbV9jYXJldCkgdzMyY29uX2hpZGVfY3Vyc29yICgpOworCisg ICAgICB1c2luZ19zeXN0ZW1fY2FyZXQgPSB3MzJfdXNlX3Zpc2libGVfc3lzdGVtX2NhcmV0Owor CisgICAgICBpZiAodXNpbmdfc3lzdGVtX2NhcmV0KSAvKiBuZWVkIHRvIHN5bmMgKi8KKwl7CisJ ICBjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbiA9ICFjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRl bjsKKwkgIGlmIChjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbikKKwkgICAgdzMyY29uX3Nob3df Y3Vyc29yICgpOworCSAgZWxzZQorCSAgICB3MzJjb25faGlkZV9jdXJzb3IgKCk7CisJfQorICAg IH0KIH0KIAogc3RhdGljIHZvaWQKIHczMmNvbl91cGRhdGVfZW5kIChzdHJ1Y3QgZnJhbWUgKiBm KQogewotICBTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb24gKGN1cl9zY3JlZW4sIGN1cnNvcl9jb29y ZHMpOworICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGN1cnNvcl9jb29yZHMuWSwgY3Vyc29yX2Nv b3Jkcy5YKTsKICAgaWYgKCFYV0lORE9XIChzZWxlY3RlZF93aW5kb3cpLT5jdXJzb3Jfb2ZmX3AK ICAgICAgICYmIGN1cnNvcl9jb29yZHMuWCA8IEZSQU1FX0NPTFMgKGYpKQogICAgIHczMmNvbl9z aG93X2N1cnNvciAoKTsKQEAgLTYyNCw4ICs5NTMsNiBAQCBzeXNfdGdldHN0ciAoY2hhciAqY2Fw LCBjaGFyICoqYXJlYSkKIAkJCXN0dWJzIGZyb20gY20uYwogICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1l eHRlcm4gc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5Owotc3RydWN0IHR0eV9k aXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5ID0gTlVMTDsKIGV4dGVybiBpbnQgY29zdDsKIGludCBj b3N0ID0gMDsKIApAQCAtNjkzLDcgKzEwMjAsNiBAQCBjdXJzb3JZIChzdHJ1Y3QgdHR5X2Rpc3Bs YXlfaW5mbyAqdHR5KQogCQkJCUZhY2VzCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLQogLyogVHVybiBh cHBlYXJhbmNlcyBvZiBmYWNlIEZBQ0VfSUQgb24gdHR5IGZyYW1lIEYgb24uICAqLwogCiBzdGF0 aWMgV09SRApAQCAtNzI5LDYgKzEwNTUsMTAwIEBAIHczMl9mYWNlX2F0dHJpYnV0ZXMgKHN0cnVj dCBmcmFtZSAqZiwgaW50IGZhY2VfaWQpCiAgIHJldHVybiBjaGFyX2F0dHI7CiB9CiAKK3N0YXRp YyB2b2lkCit0dXJuX29uX2ZhY2UgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGZhY2VfaWQpCit7Cisg IHN0cnVjdCBmYWNlICpmYWNlID0gRkFDRV9GUk9NX0lEIChmLCBmYWNlX2lkKTsKKyAgc3RydWN0 IHR0eV9kaXNwbGF5X2luZm8gKnR0eSA9IEZSQU1FX1RUWSAoZik7CisgIHVuc2lnbmVkIGxvbmcg ZmcgPSBmYWNlLT5mb3JlZ3JvdW5kOworICB1bnNpZ25lZCBsb25nIGJnID0gZmFjZS0+YmFja2dy b3VuZDsKKworICAvKiBpZiBlaXRoZXIgb3V0IG9mIHJhbmdlLCBzZXQgYm90aCB0byB2YWx1ZXMg cmV0cmlldmVkIGZyb20gdGVybWluYWwgKi8KKyAgaWYgKERFRkFVTFRQIChmZykpIGZnID0gZmdf bm9ybWFsOworICBpZiAoREVGQVVMVFAgKGJnKSkgYmcgPSBiZ19ub3JtYWw7CisKKyAgLyogY29u c3RydWN0IGNvbWJpbmVkIFZUIHNlcXVlbmNlIGZvciBmYWNlIGF0dHJpYnV0ZXMgKi8KKyAgRFdP UkQgbiA9IDA7CisgIHNpemVfdCBzeiA9IFNFUU1BWDsKKyAgY2hhciBzZXFbc3pdOworICBzei0t OworCisgIGlmIChmYWNlLT50dHlfYm9sZF9wKQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwg dHR5LT5UU19lbnRlcl9ib2xkX21vZGUsIE5VTEwpOworICBpZiAoZmFjZS0+dHR5X2l0YWxpY19w KQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgdHR5LT5UU19lbnRlcl9pdGFsaWNfbW9kZSwg TlVMTCk7CisgIGlmIChmYWNlLT50dHlfc3RyaWtlX3Rocm91Z2hfcCkKKyAgICBTU1BSSU5URiAo c2VxLCAmbiwgc3osIHR0eS0+VFNfZW50ZXJfc3RyaWtlX3Rocm91Z2hfbW9kZSwgTlVMTCk7Cisg IGlmIChmYWNlLT51bmRlcmxpbmUgIT0gMCkKKyAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHR0 eS0+VFNfZW50ZXJfdW5kZXJsaW5lX21vZGUsIE5VTEwpOworICAvKiBOb3RlOiB0aGUgdmFsdWVz IG9mIGZnIGFuZCBiZyBhcmUgYWxyZWFkeSBzd2FwcGVkIHdoZW4gZmcgYW5kIGJnIGFyZQorICAg ICBzZXQgYW5kIGZhY2UtPnR0eV9yZXZlcnNlX3AuIEFkZGluZyB0aGUgdGVybWluYWwgc2VxdWVu Y2UgY29udGFpbmVkCisgICAgIGluIHR0eS0+VFNfZW50ZXJfcmV2ZXJzZV9tb2RlIHN3YXBzIHRo ZW0gYmFjaywgd2hpY2ggaXMgbm8gZ29vZC4gKi8KKworICBjb25zdCBjaGFyICpzZXRfZmcgPSB0 dHktPlRTX3NldF9mb3JlZ3JvdW5kOworICBjb25zdCBjaGFyICpzZXRfYmcgPSB0dHktPlRTX3Nl dF9iYWNrZ3JvdW5kOworICBpZiAodHR5LT5UTl9tYXhfY29sb3JzID09IDggIHx8CisgICAgICB0 dHktPlROX21heF9jb2xvcnMgPT0gMTYgfHwKKyAgICAgIHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAy NTYpCisgICAgeworICAgICAgLyogaW5kaWNlcyBpbnRvIE1pY3Jvc29mdC1kZWZpbmVkIGNvbG9y cyAoc2VlIGxpbmsgYXQgdG9wKSAqLworICAgICAgdW5zaWduZWQgbG9uZyBmZ2kgPSAwLCBiZ2kg PSAwOworCisgICAgICBmZ2kgPSAoZmcgPj0gMCAgJiYgZmcgPCA4KSAgID8gZmcgKyAzMAorCTog ICAoZmcgPj0gOCAgJiYgZmcgPCAxNikgID8gZmcgLSA4ICsgOTAKKwk6ICAgKGZnID49IDE2ICYm IGZnIDwgMjU2KSA/IGZnCisJOiAwOworICAgICAgaWYgKGZnaSkKKwlTU1BSSU5URiAoc2VxLCAm biwgc3osIHNldF9mZywgZmdpKTsKKworICAgICAgYmdpID0gKGJnID49IDAgICYmIGJnIDwgOCkg ICA/IGJnICsgNDAKKwk6ICAgKGJnID49IDggICYmIGJnIDwgMTYpICA/IGJnIC0gOCArIDEwMAor CTogICAoYmcgPj0gMTYgJiYgYmcgPCAyNTYpID8gYmcKKwk6IDA7CisgICAgICBpZiAoYmdpKQor CVNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2JnLCBiZ2kpOworICAgIH0KKyAgZWxzZSBpZiAo dHR5LT5UTl9tYXhfY29sb3JzID09IDE2Nzc3MjE2KQorICAgIHsKKyAgICAgIC8qIG5lZWQgdG8g Y29udmVydCBkZWZhdWx0ZWQgdmFsdWVzIHRvIHBpeGVsIGluZGljZXMgKi8KKyAgICAgIGlmIChm ZyA9PSBmZ19ub3JtYWwpIGZnID0gZ2V0X3BpeGVsKGZnKTsKKyAgICAgIGlmIChiZyA9PSBiZ19u b3JtYWwpIGJnID0gZ2V0X3BpeGVsKGJnKTsKKworICAgICAgLyogZmcgYW5kIGJnIGFyZSBwaXhl bCB2YWx1ZXMgLSBkZWNvbXBvc2UgdG8gcmdiIHRyaXBsZXMgKi8KKyAgICAgIHVuc2lnbmVkIGxv bmcgcmYgPSBmZy82NTUzNiwgZ2YgPSAoZmcvMjU2KSYyNTUsIGJmID0gZmcmMjU1OworICAgICAg dW5zaWduZWQgbG9uZyByYiA9IGJnLzY1NTM2LCBnYiA9IChiZy8yNTYpJjI1NSwgYmIgPSBiZyYy NTU7CisgICAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHNldF9mZywgcmYsIGdmLCBiZik7Cisg ICAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHNldF9iZywgcmIsIGdiLCBiYik7CisgICAgfQor ICB3MzJjb25fd3JpdGVfdnRfc2VxIChzZXEpOworfQorCitzdGF0aWMgdm9pZAordHVybl9vZmZf ZmFjZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKK3sKKyAgc3RydWN0IHR0eV9kaXNw bGF5X2luZm8gKnR0eSA9IEZSQU1FX1RUWSAoZik7CisgIHczMmNvbl93cml0ZV92dF9zZXEgKHR0 eS0+VFNfZXhpdF9hdHRyaWJ1dGVfbW9kZSk7Cit9CisKKy8qIHJldHVybnMgdGhlIHBpeGVsIHZh bHVlIGZvciB0aGUgZ2l2ZW4gaW5kZXggaW50byBWVCBiYXNlIGNvbG9yIG1hcCAqLworc3RhdGlj IHVuc2lnbmVkIGxvbmcgcGl4ZWxfY2FjaGVbMTZdOworc3RhdGljIHVuc2lnbmVkIGxvbmcKK2dl dF9waXhlbCAodW5zaWduZWQgbG9uZyBpbmRleCkKK3sKKyAgdW5zaWduZWQgaW50IGkgPSAodW5z aWduZWQgaW50KSBpbmRleDsKKyAgaWYgKGkgPiAxNSkgcmV0dXJuIDA7CisgIGlmIChpID09IDAg fHwgcGl4ZWxfY2FjaGVbaV0gPiAwKQorICAgIHJldHVybiBwaXhlbF9jYWNoZVtpXTsKKworICBM aXNwX09iamVjdCBwaXggPSBzYWZlX2NhbGxuIChRdzMyY29uX2dldF9waXhlbCwgbWFrZV91Zml4 bnVtIChpKSk7CisgIHBpeGVsX2NhY2hlW2ldID0gKHVuc2lnbmVkIGxvbmcpIFhVRklYTlVNIChw aXgpOworICByZXR1cm4gcGl4ZWxfY2FjaGVbaV07Cit9CisKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXphdGlvbgorKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisKIC8qIFRoZSBJTUUgd2luZG93IGlzIG5lZWRlZCB0byByZWNlaXZlIHRoZSBzZXNzaW9uIG5v dGlmaWNhdGlvbnMKICAgIHJlcXVpcmVkIHRvIHJlc2V0IHRoZSBsb3cgbGV2ZWwga2V5Ym9hcmQg aG9vayBzdGF0ZS4gICovCiAKQEAgLTgzNCw3ICsxMjU0LDcgQEAgaW5pdGlhbGl6ZV93MzJfZGlz cGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkKIAlH ZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyAoY3VyX3NjcmVlbiwgJmluZm8pOwogCiAJLyogU2hy aW5rIHRoZSB3aW5kb3cgZmlyc3QsIHNvIHRoZSBidWZmZXIgZGltZW5zaW9ucyBjYW4gYmUKLSAg ICAgICAgICAgcmVkdWNlZCBpZiBuZWNlc3NhcnkuICAqLworCSAgIHJlZHVjZWQgaWYgbmVjZXNz YXJ5LiAgKi8KIAluZXdfd2luX2RpbXMuVG9wID0gMDsKIAluZXdfd2luX2RpbXMuTGVmdCA9IDA7 CiAJbmV3X3dpbl9kaW1zLkJvdHRvbSA9IG1pbiAobmV3X3NpemUuWSwgaW5mby5kd1NpemUuWSkg LSAxOwpAQCAtODQ5LDYgKzEyNjksNyBAQCBpbml0aWFsaXplX3czMl9kaXNwbGF5IChzdHJ1Y3Qg dGVybWluYWwgKnRlcm0sIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQogCW5ld193aW5fZGltcy5C b3R0b20gPSBuZXdfc2l6ZS5ZIC0gMTsKIAluZXdfd2luX2RpbXMuUmlnaHQgPSBuZXdfc2l6ZS5Y IC0gMTsKIAlTZXRDb25zb2xlV2luZG93SW5mbyAoY3VyX3NjcmVlbiwgVFJVRSwgJm5ld193aW5f ZGltcyk7CisKICAgICAgIH0KICAgfQogCkBAIC04NjEsNiArMTI4Miw4IEBAIGluaXRpYWxpemVf dzMyX2Rpc3BsYXkgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybSwgaW50ICp3aWR0aCwgaW50ICpoZWln aHQpCiAgICAgfQogCiAgIGNoYXJfYXR0cl9ub3JtYWwgPSBpbmZvLndBdHRyaWJ1dGVzOworICBm Z19ub3JtYWwgPSBjaGFyX2F0dHJfbm9ybWFsICYgMHgwMDBmOworICBiZ19ub3JtYWwgPSAoY2hh cl9hdHRyX25vcm1hbCA+PiA0KSAmIDB4MDAwZjsKIAogICAvKiBEZXRlcm1pbmUgaWYgdGhlIGlu Zm8gcmV0dXJuZWQgYnkgR2V0Q29uc29sZVNjcmVlbkJ1ZmZlckluZm8KICAgICAgaXMgcmVhbGlz dGljLiAgT2xkIE1TIFRlbG5ldCBzZXJ2ZXJzIHVzZWQgdG8gb25seSBmaWxsIG91dApAQCAtOTE3 LDEzICsxMzQwLDIxIEBAIGluaXRpYWxpemVfdzMyX2Rpc3BsYXkgKHN0cnVjdCB0ZXJtaW5hbCAq dGVybSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQpCiB9CiAKIAorLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzcCBJbnRlcmZhY2UKKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworCisvKiBUT0RPIC0gbWlncmF0ZSB0byBWVCBzZXF1ZW5jZXMgKDI1NiBhbmQgMjRiaXQgY29s b3IpICovCiBERUZVTiAoInNldC1zY3JlZW4tY29sb3IiLCBGc2V0X3NjcmVlbl9jb2xvciwgU3Nl dF9zY3JlZW5fY29sb3IsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBTZXQgc2NyZWVuIGZvcmVn cm91bmQgYW5kIGJhY2tncm91bmQgY29sb3JzLgogCiBBcmd1bWVudHMgc2hvdWxkIGJlIGluZGlj ZXMgYmV0d2VlbiAwIGFuZCAxNSwgc2VlIHczMmNvbnNvbGUuZWwuICAqLykKICAgKExpc3BfT2Jq ZWN0IGZvcmVncm91bmQsIExpc3BfT2JqZWN0IGJhY2tncm91bmQpCiB7Ci0gIGNoYXJfYXR0cl9u b3JtYWwgPSBYRklYTkFUIChmb3JlZ3JvdW5kKSArIChYRklYTkFUIChiYWNrZ3JvdW5kKSA8PCA0 KTsKKworICBmZ19ub3JtYWwgPSBYRklYTkFUIChmb3JlZ3JvdW5kKTsKKyAgYmdfbm9ybWFsID0g WEZJWE5BVCAoYmFja2dyb3VuZCk7CisgIGNoYXJfYXR0cl9ub3JtYWwgPSBmZ19ub3JtYWwgKyAo Ymdfbm9ybWFsIDw8IDQpOwogCiAgIEZyZWNlbnRlciAoUW5pbCwgUXQpOwogICByZXR1cm4gUXQ7 CkBAIC05MzcsOCArMTM2OCw4IEBAIFNlZSB3MzJjb25zb2xlLmVsIGFuZCBgdHR5LWRlZmluZWQt Y29sb3ItYWxpc3QnIGZvciBtYXBwaW5nIG9mIGluZGljZXMKIHRvIGNvbG9ycy4gICovKQogICAo dm9pZCkKIHsKLSAgcmV0dXJuIEZjb25zIChtYWtlX2ZpeG51bSAoY2hhcl9hdHRyX25vcm1hbCAm IDB4MDAwZiksCi0JCUZjb25zIChtYWtlX2ZpeG51bSAoKGNoYXJfYXR0cl9ub3JtYWwgPj4gNCkg JiAweDAwMGYpLCBRbmlsKSk7CisgIHJldHVybiBGY29ucyAobWFrZV9maXhudW0gKGZnX25vcm1h bCksCisJCUZjb25zIChtYWtlX2ZpeG51bSAoYmdfbm9ybWFsKSwgUW5pbCkpOwogfQogCiBERUZV TiAoInNldC1jdXJzb3Itc2l6ZSIsIEZzZXRfY3Vyc29yX3NpemUsIFNzZXRfY3Vyc29yX3NpemUs IDEsIDEsIDAsCkBAIC05NTcsMTUgKzEzODgsMzQgQEAgdm9pZAogc3ltc19vZl9udHRlcm0gKHZv aWQpCiB7CiAgIERFRlZBUl9CT09MICgidzMyLXVzZS1mdWxsLXNjcmVlbi1idWZmZXIiLAotICAg ICAgICAgICAgICAgdzMyX3VzZV9mdWxsX3NjcmVlbl9idWZmZXIsCi0JICAgICAgIGRvYzogLyog Tm9uLW5pbCBtZWFucyBtYWtlIHRlcm1pbmFsIGZyYW1lcyB1c2UgdGhlIGZ1bGwgc2NyZWVuIGJ1 ZmZlciBkaW1lbnNpb25zLgorCQl3MzJfdXNlX2Z1bGxfc2NyZWVuX2J1ZmZlciwKKwkJZG9jOiAv KiBOb24tbmlsIG1lYW5zIG1ha2UgdGVybWluYWwgZnJhbWVzIHVzZSB0aGUgZnVsbCBzY3JlZW4g YnVmZmVyIGRpbWVuc2lvbnMuCiBUaGlzIGlzIGRlc2lyYWJsZSB3aGVuIHJ1bm5pbmcgRW1hY3Mg b3ZlciB0ZWxuZXQuCiBBIHZhbHVlIG9mIG5pbCBtZWFucyB1c2UgdGhlIGN1cnJlbnQgY29uc29s ZSB3aW5kb3cgZGltZW5zaW9uczsgdGhpcwogbWF5IGJlIHByZWZlcmFibGUgd2hlbiB3b3JraW5n IGRpcmVjdGx5IGF0IHRoZSBjb25zb2xlIHdpdGggYSBsYXJnZQogc2Nyb2xsLWJhY2sgYnVmZmVy LiAgKi8pOwogICB3MzJfdXNlX2Z1bGxfc2NyZWVuX2J1ZmZlciA9IDA7CiAKKyAgREVGVkFSX0JP T0wgKCJ3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzIiwKKwkJdzMyX3VzZV92aXJ0 dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcywKKwkJZG9jOiAvKiBJZiBub24tbmlsIHczMiBjb25zb2xl IHVzZXMgdGVybWluYWwgc2VxdWVuY2VzIGZvciBzb21lIG91dHB1dCBwcm9jZXNzaW5nLgorVGhp cyB2YXJpYWJsZSBpcyBzZXQgYXV0b21hdGljYWxseSBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVz IG9mIHRoZSB0ZXJtaW5hbC4KK0l0IGRldGVybWluZXMgdGhlIG51bWJlciBhbmQgaW5kaWNlcyBv ZiBjb2xvcnMgdXNlZCBmb3IgZmFjZXMgaW4gdGhlIHRlcm1pbmFsLgorSWYgdGhlIHRlcm1pbmFs IGNhbm5vdCBoYW5kbGUgVlQgc2VxdWVuY2VzLCB0aGUgdXBkYXRlIGhvb2sgdHJpZ2dlcnMgcmVj b21wdXRhdGlvbiBvZiBmYWNlcy4KK1NlZSBgdzMyY29uLXNldC11cC1pbml0aWFsLWZyYW1lLWZh Y2VzJywgd2hpY2ggc2hvdWxkIGJlIGNhbGxlZCBhZnRlciBzZXR0aW5nIHRoaXMgdmFyaWFibGUg CittYW51YWxseSBpbiBhIHJ1bm5pbmcgc2Vzc2lvbi4gKi8pOworICB3MzJfdXNlX3ZpcnR1YWxf dGVybWluYWxfc2VxdWVuY2VzID0gMDsKKworICBERUZTWU0gKFF3MzJjb25fc2V0X3VwX2luaXRp YWxfZnJhbWVfZmFjZXMsCisJICAidzMyY29uLXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzIik7 CisKKyAgREVGU1lNIChRdzMyY29uX2dldF9waXhlbCwKKwkgICJ3MzJjb24tZ2V0LXBpeGVsIik7 CisKKyAgREVGU1lNIChRaXNlYXJjaCwgImlzZWFyY2giKTsgLyogVG8gbG9vayB1cCB0aGUgZmFj ZS4gKi8KKwogICBkZWZzdWJyICgmU3NldF9zY3JlZW5fY29sb3IpOwogICBkZWZzdWJyICgmU2dl dF9zY3JlZW5fY29sb3IpOwogICBkZWZzdWJyICgmU3NldF9jdXJzb3Jfc2l6ZSk7CisKIH0KZGlm ZiAtLWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXggODk1NjFkNzUwYjYuLmQz MDQwZWE2MjliIDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAt MTcyMzksOCArMTcyMzksNyBAQCByZWRpc3BsYXlfaW50ZXJuYWwgKHZvaWQpCiAJICAgICBhcmVh LCBkaXNwbGF5aW5nIGEgZGlmZmVyZW50IGZyYW1lIG1lYW5zIHJlZGlzcGxheSB0aGUKIAkgICAg IHdob2xlIHRoaW5nLiAgKi8KIAkgIFNFVF9GUkFNRV9HQVJCQUdFRCAoc2YpOwotI2lmICFkZWZp bmVkIERPU19OVCAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVmaW5lZCBNU0RPUyAm JiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKIAkgIHNldF90dHlfY29sb3JfbW9kZSAoRlJBTUVfVFRZ IChzZiksIHNmKTsKICNlbmRpZgogCX0KLS0KMi40OS4wCgo= --b1=_sbrzwfTTCXEvR1WjmejcVCxeVBJpijs6jBL1w5FbI-- From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 10:45:10 2025 Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 14:45:10 +0000 Received: from localhost ([127.0.0.1]:40771 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utojV-0005me-Gp for submit@debbugs.gnu.org; Wed, 03 Sep 2025 10:45:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37270) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1utojT-0005hZ-8i for 79298@debbugs.gnu.org; Wed, 03 Sep 2025 10:45:08 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1utojN-0005Le-Gi; Wed, 03 Sep 2025 10:45:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=zKyWestE/tKBZ027+GeKTAF3vAey/1jAeKqCEBRdPNE=; b=BC9g6m6rYXvD XA1dMD6Pwx52/Hh2mx8ym7+se/J05s6320TcXJYDMflBHiu5cjkl0n1Up5FhK55BDPXXJPtjdV+B+ 1IcGdESPliC8OifZQMhP6ZwRReU8yIuEf1D2J+NJQg8eqvMqFGIXBjVJTVEvUl4CRKH+pKS5Sdt2m blXGp1vHabvXk19vcR+uYa4E2MptcmFGuaw8dqiK8FsaEvxL2fnqGCPdAXEZrGbVIv1GS4YB927ji 89Xa10VM5si3pAdhVHsfZh6s4iS8ITjXc5zeQSDgnfBHf1R2Bqs3VvGPAW9WPob1xDUopiXXO7MYW EzzgqpdAuMqbbGG4qosWCw==; Date: Wed, 03 Sep 2025 17:44:48 +0300 Message-Id: <86qzwnk333.fsf@gnu.org> From: Eli Zaretskii To: Ewan In-Reply-To: (message from Ewan on Wed, 03 Sep 2025 09:35:37 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <86sehf65gb.fsf@gnu.org> <86a53nwms8.fsf@gnu.org> <86plciuz02.fsf@gnu.org> <86sehdt15o.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Wed, 03 Sep 2025 09:35:37 +0000 > From: Ewan > Cc: 79298@debbugs.gnu.org > > I'm still waiting on a disclaimer, but in the meantime, I have attached > the revised patch (with a slightly broadened scope). Thanks. > Basically, it's much smoother to do a wholesale migration from the Windows > Console API to ASCII control sequences, controlled by an auto-set feature flag. > > However, > > (1) ASCII control sequences require moving the cursor during redisplay, > (2) the Windows system cursor picks up these movements, and > (3) redisplay is slow enough that cursor jumps to the echo area are perceptible. > > So, I've also implemented some changes to cursor handling in Windows TTY. > > If the existing variable 'w32-use-visible-system-caret is nil (the default), > then we always hide the system cursor, and Emacs handles cursor display. > This is the smoothest UX, currently limited to a non-blinking solid cursor. > Otherwise, the system cursor is used, but we hide it momentarily when > redisplaying the echo area, resulting in a slight cursor flicker in-place > (the alternative being a noticeable "flashing" of the cursor in the echo area). I wish you brought this up for discussion before actually coding (and documenting) these extensive changes. I'd rather we stayed with the original use of the Windows Console APIs for everything except the true color support, if possible. AFAIK, there are no fundamental incompatibilities between these two features (if I'm mistaken, please describe the problems), and we need to keep the old Console APIs anyway for as long as we support the older Windows systems. Plus, AFAIK users can choose to use the legacy ConHost even on newer Windows versions, and I wouldn't want us to have to tell the users to tweak their Emacs should it turn out ConHost causes problems with the Virtual Terminal control sequences. And you have already bumped into problems with this, in the form of cursor flashing momentarily in the wrong places and slower redisplay. In addition, the changes you propose introduce Windows-specific code into platform-independent source files, like dispnew.c, something we generally prefer to avoid. So let's take a step back and discuss the need for this part of the changes: what problems will we encounter if we leave cursor handling and the rest of console management to the old Console APIs, and use the new ASCII sequences only for true color? If the problems are not too hard to solve, I'd prefer to leave that code alone, with minimal necessary changes. If nothing else, it leaves use with code which was tested by many users during a long time. Thanks again for working on this. From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 11:54:24 2025 Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 15:54:24 +0000 Received: from localhost ([127.0.0.1]:41133 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utpoV-000179-Fa for submit@debbugs.gnu.org; Wed, 03 Sep 2025 11:54:24 -0400 Received: from mail-4317.protonmail.ch ([185.70.43.17]:35385) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1utpoS-00016i-4D for 79298@debbugs.gnu.org; Wed, 03 Sep 2025 11:54:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756914853; x=1757174053; bh=UJR5z8HW3FK6Rd2GGbgU80u/LdhNs42MwpM10wBeP+Q=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=f+rWud2AsI7yyKnmOch4RktpnCB9lD38u68i/Z+3Pahxuyr3FxjR24/lM/sdgHzO5 3mPoToI3vhrSQwteyv0MkZFhAcIOTaX9Wk0I5RyAJAcifzn7DOfIUdv80qpsrJDWcF S5MBItGvgBD5oi10jDH/zoUgRtGfAWvqAvZV3zqZp1443SZHuWi2dSE8TZW8bb3/Tj ZyuAGJil9CUCvCOAAsQlV/pFYVBhyFCtzPALGF79AUV/v+KwAprOnNG0vf7lM0HULu PwJvU7R8HnfZp349TIfZ3DMkUYby7S3eauRedRah/2EIB5an9uRSHWwX+FT7xwP3gU pRUcAzn/wndPQ== Date: Wed, 03 Sep 2025 15:54:11 +0000 To: Eli Zaretskii From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: <86qzwnk333.fsf@gnu.org> References: <86a53nwms8.fsf@gnu.org> <86plciuz02.fsf@gnu.org> <86sehdt15o.fsf@gnu.org> <86qzwnk333.fsf@gnu.org> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 3a78479a5bcbc86f97b1fcdb2207d20dce814f7d MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > > (1) ASCII control sequences require moving the cursor during redisplay, > > (2) the Windows system cursor picks up these movements, and > > (3) redisplay is slow enough that cursor jumps to the echo area are per= ceptible. > >=20 > > So, I've also implemented some changes to cursor handling in Windows TT= Y. >=20 >=20 > I wish you brought this up for discussion before actually coding (and > documenting) these extensive changes. I'd rather we stayed with the > original use of the Windows Console APIs for everything except the > true color support, if possible. AFAIK, there are no fundamental > incompatibilities between these two features (if I'm mistaken, please > describe the problems), and we need to keep the old Console APIs > anyway for as long as we support the older Windows systems. Plus, > AFAIK users can choose to use the legacy ConHost even on newer Windows > versions, and I wouldn't want us to have to tell the users to tweak > their Emacs should it turn out ConHost causes problems with the > Virtual Terminal control sequences. And you have already bumped into > problems with this, in the form of cursor flashing momentarily in the > wrong places and slower redisplay. Not a problem, the implementation will be of use to me regardless of=20 whether it goes in to master, the documentation is just to explain it=20 to others. However, there is, I think, a fundamental incompatibility=20 between the mechanism supporting true color, and the way we were doing=20 things. There's a short bit about this in the manual entry. We could=20 stick with use of the API to move the cursor, clear lines, etc. -=20 that's all just a matter of choice (before, we jumped through hoops with=20 the API to achieve things there are now specific control sequences for).=20 But the previous implementation achieved color display by direct writes to regions of the screen (using WriteConsoleOutput etc.), not requiring=20 cursor movement. The cursor was only moved once, at the very end of an=20 update cycle. That was what enabled the stable cursor appearance (and there are comments about this "trick" dating back to MSDOS). But for=20 true color support, that is not an option. We have to use WriteConsole=20 (or printf, etc.), which move the cursor during the write, and that is what (re-)introduces the "unstable cursor" problem. AFAIK, it is not=20 that redisplay is now inherently slower, per se... It is that it now=20 requires cursor movement, and if the MSDOS commentary still holds up,=20 this is "expensive" at a low level - enough so that it is perceptible, mostly because we make such frequent use of the echo area. > In addition, the changes you propose introduce Windows-specific code > into platform-independent source files, like dispnew.c, something we > generally prefer to avoid. Agreed, this is not ideal, I just couldn't think of another way to solve the unstable cursor problem. I've been careful to ensure the functional changes are only present when compiled for Windows, but if there is an=20 alternative, I'm all for it. > So let's take a step back and discuss the need for this part of the > changes: what problems will we encounter if we leave cursor handling > and the rest of console management to the old Console APIs, and use > the new ASCII sequences only for true color? If the problems are not > too hard to solve, I'd prefer to leave that code alone, with minimal > necessary changes. If nothing else, it leaves use with code which was > tested by many users during a long time. In short, ASCII sequences for true color destabilize the system cursor=20 appearance, because they undermine the "trick" we were turning. As far as I can tell, there is no way around that. > AFAIK users can choose to use the legacy ConHost even on newer Windows > versions, and I wouldn't want us to have to tell the users to tweak > their Emacs should it turn out ConHost causes problems with the > Virtual Terminal control sequences. Three things give me comfort on this front. One, Microsoft has added=20 "support" for ASCII sequences (at least for color) to the Console. "Some virtual terminal emulators support a palette of colors greater=20 than the 16 colors provided by the Windows Console. For these extended=20 colors, the Windows Console will choose the nearest appropriate color=20 from the existing 16 color table for display." Two, when initializing a TTY session on Windows, we request the=20 ENABLE_VIRTUAL_TERMINAL_PROCESSING output mode. If not available, e.g. on legacy systems, we disable the feature flag and revert to=20 the older color display "trick". Finally, the Emacs-drawn cursor replacing the system cursor when w32-use-visible-system-caret is nil, is independent of ASCII sequence=20 support. It depends only on the 'cursor' face being defined (I believe it always will be), and just adds an additional pass, for at most two=20 rows, through w32con_write_glyphs, which branches between old and new based on the feature flag, and so should work with the legacy system. I share the concern about this all being relatively untested. I'll put it through the motions in my (limited) use of Windows, but there=20 will probably be some bugs I don't catch. In any case, it's made my=20 use of terminal Emacs on Windows tolerable (if not pleasant!). From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 12:10:06 2025 Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 16:10:06 +0000 Received: from localhost ([127.0.0.1]:41199 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utq3i-00021Q-6c for submit@debbugs.gnu.org; Wed, 03 Sep 2025 12:10:06 -0400 Received: from mail-10626.protonmail.ch ([79.135.106.26]:10105) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1utq3d-00020T-V0 for 79298@debbugs.gnu.org; Wed, 03 Sep 2025 12:10:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756915794; x=1757174994; bh=X3nW9EmmuOyFu+W5Ft3rfmWPA57e+y6EWz2JHU0Gu9Y=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=RYFB99WHP3Vvyyb9m/FJu0RsliNIL7PyB8CCbGs878kTvkS5MPgSJ4GWw/nXijO96 Atfkjz/I3BLcxi49GWfzSaSaoY94A6KBDZbpy1rBxNWlGPgWHI/oP4IXD9BD/IMayl LjXA99dCoyObl4DbutKzMQdazAlumVf9P8EZ9wJ/5V7FuezfQ9IrV2p7t2BxPhLfLr G7FECsLjNdHLaQh9VQndyyKLrmu8pmJxcsyxvwJ1bS10ItnL72VySgf4LsDunBbE1u fTUgehRGnPx+VxIhswCguupU/rS4x/QwBnRBFEKiKEqDnHWSUEtsNnAV67CTUETkQC 2qBCEsuTtAJGg== Date: Wed, 03 Sep 2025 16:09:50 +0000 To: Eli Zaretskii From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: References: <86a53nwms8.fsf@gnu.org> <86plciuz02.fsf@gnu.org> <86sehdt15o.fsf@gnu.org> <86qzwnk333.fsf@gnu.org> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: e4546d0c73cbec744a83ada2dc32225f6c0dcdbf MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > Finally, the Emacs-drawn cursor replacing the system cursor when > w32-use-visible-system-caret is nil, is independent of ASCII sequence > support. It depends only on the 'cursor' face being defined (I believe > it always will be), and just adds an additional pass, for at most two > rows, through w32con_write_glyphs, which branches between old and new > based on the feature flag, and so should work with the legacy system. Correction, I managed to avoid the need for additional passes. Rather, it just forces full re-write (disabling optimizations), for at most=20 two rows (the one where the cursor was, and the one where it will be). From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 12:38:18 2025 Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 16:38:18 +0000 Received: from localhost ([127.0.0.1]:41253 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utqV0-0003Nu-3w for submit@debbugs.gnu.org; Wed, 03 Sep 2025 12:38:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49058) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1utqUx-0003Nh-Nt for 79298@debbugs.gnu.org; Wed, 03 Sep 2025 12:38:16 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1utqUr-0002k1-HD; Wed, 03 Sep 2025 12:38:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=pIWAxaw9WtFvMvLAQRLEUOu6b3zSgrUkEykOLKJK5JM=; b=IdxhNpPXyQgL J7EnrcPTHi3WpTjkWkd8fAw4ZPUpu50IGFtkqY8G4oLDvS5JyePawPA/ayWPz9+r1nP+ON8PxlbWb zV8HoLZc3oTb4QWGpcgWcYEKFFAsaGNWdoBCMDSAVLjPqW3+oLd5tTdFezvAmEkp1eoJuwd73v0o/ 6o7DZl57/SP4qVVVIOIO7PAx5Ic60ud9rnXDM/Jm+olpvblEI9FMZKPWslBWw/UMBI1SwdF0ru3fk dpVcnsyT+OUoXsmAd5vEOH5KpGzZLhR26wr+UT7ADGIpI8bLb47HuPF2ap6e3cEWlLo5MdHBuuCyS +tZoqJp9tC+GxxccKmDSLA==; Date: Wed, 03 Sep 2025 19:38:06 +0300 Message-Id: <86ms7bjxu9.fsf@gnu.org> From: Eli Zaretskii To: Ewan In-Reply-To: (message from Ewan on Wed, 03 Sep 2025 15:54:11 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <86a53nwms8.fsf@gnu.org> <86plciuz02.fsf@gnu.org> <86sehdt15o.fsf@gnu.org> <86qzwnk333.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Wed, 03 Sep 2025 15:54:11 +0000 > From: Ewan > Cc: 79298@debbugs.gnu.org > > Not a problem, the implementation will be of use to me regardless of > whether it goes in to master, the documentation is just to explain it > to others. However, there is, I think, a fundamental incompatibility > between the mechanism supporting true color, and the way we were doing > things. There's a short bit about this in the manual entry. We could > stick with use of the API to move the cursor, clear lines, etc. - > that's all just a matter of choice (before, we jumped through hoops with > the API to achieve things there are now specific control sequences for). > > But the previous implementation achieved color display by direct writes > to regions of the screen (using WriteConsoleOutput etc.), not requiring > cursor movement. The cursor was only moved once, at the very end of an > update cycle. That was what enabled the stable cursor appearance (and > there are comments about this "trick" dating back to MSDOS). But for > true color support, that is not an option. We have to use WriteConsole > (or printf, etc.), which move the cursor during the write, and that is > what (re-)introduces the "unstable cursor" problem. AFAIK, it is not > that redisplay is now inherently slower, per se... It is that it now > requires cursor movement, and if the MSDOS commentary still holds up, > this is "expensive" at a low level - enough so that it is perceptible, > mostly because we make such frequent use of the echo area. Why can't we turn off the cursor before calling WriteConsoleOutput, then turn it on again, after the call returns and we move the cursor to its original place? > I share the concern about this all being relatively untested. I'll put > it through the motions in my (limited) use of Windows, but there > will probably be some bugs I don't catch. In any case, it's made my > use of terminal Emacs on Windows tolerable (if not pleasant!). For this reason, I'd prefer to make as few changes as possible in the console-related management code. Where we must do that, fine, but let's try leaving the rest intact, as it was tested by time and many users (and we had in the past some tricky issues, which are now resolved). From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 13:06:13 2025 Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 17:06:13 +0000 Received: from localhost ([127.0.0.1]:41385 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utqw1-000500-Ec for submit@debbugs.gnu.org; Wed, 03 Sep 2025 13:06:13 -0400 Received: from mail-24421.protonmail.ch ([109.224.244.21]:38883) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1utqvv-0004zM-Hb for 79298@debbugs.gnu.org; Wed, 03 Sep 2025 13:06:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756919160; x=1757178360; bh=oDUF0BY10ijCMlQ24OaHyg71VASdm629/TXbmb2pK2A=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=bf0MWMfPkhs2ZF84jtVAVPJDOPKwM5RE+HQR7Oc1BwWEU3eAng17mY98U+3CNXNRI ML4LYd3myy/KWhiIGZdDE9G0Opnci4gYcrpLgUlhqpe9jdfMuBD7UIoXgW8/bVDxfn 80RQgVTTAOr30Ki+nxeERYgnMWRMIBH3ApsdJO3rUPPiGNlK9yDxfQkynvsAJt7xWY ml9it9at6G7BedZAZ77ZwIxilQ6wq5AlMD1y8Tyk7DxKfglOsaktyW3fNjXeTVXM9i ewQwxcewFm/O2eu22iJNk3aCycEqZB36jPiQ9HLqjWQWWvSJT891VHXou0txvJN4/R qPGydGRiOO2ZQ== Date: Wed, 03 Sep 2025 17:05:56 +0000 To: Eli Zaretskii From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: <86ms7bjxu9.fsf@gnu.org> References: <86plciuz02.fsf@gnu.org> <86sehdt15o.fsf@gnu.org> <86qzwnk333.fsf@gnu.org> <86ms7bjxu9.fsf@gnu.org> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 01644393d9efe30de4d7bfcb458f3e5dea7a82fd MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > > But the previous implementation achieved color display by direct writes > > to regions of the screen (using WriteConsoleOutput etc.), not requiring > > cursor movement. The cursor was only moved once, at the very end of an > > update cycle. That was what enabled the stable cursor appearance (and > > there are comments about this "trick" dating back to MSDOS). But for > > true color support, that is not an option. We have to use WriteConsole > > (or printf, etc.), which move the cursor during the write, and that is > > what (re-)introduces the "unstable cursor" problem. AFAIK, it is not > > that redisplay is now inherently slower, per se... It is that it now > > requires cursor movement, and if the MSDOS commentary still holds up, > > this is "expensive" at a low level - enough so that it is perceptible, > > mostly because we make such frequent use of the echo area. >=20 >=20 > Why can't we turn off the cursor before calling WriteConsoleOutput, > then turn it on again, after the call returns and we move the cursor > to its original place? WriteConsoleOutput (used by the old code) doesn't move the cursor, but can't be used for ASCII control sequences, and is being phased out by=20 Microsoft. WriteConsole is required for ASCII sequences, and moves the cursor. Hiding the system cursor before every move/call to WriteConsole=20 and showing it after, makes for a very unstable cursor (flickers wildly). Previously, we maintained the "cursor" throughout the update as an internal= =20 coordinate variable, without "realizing" the position in the system cursor, through a call to SetConsoleCursorPosition, until the after-update hook.=20 That is no longer possible -- the system cursor position must be realized= =20 in real-time. Hiding the system cursor the whole time, and replacing it with a (nominal) "cursor" drawn in with the rest of the glyphs, achieves=20 the same effect that we had before, in light of the new constraint. The (actual, system) cursor jumps around, invisibly, during the write, while=20 the (nominal, visible) cursor stays stable, then makes one discrete move=20 (when its new row is written). From debbugs-submit-bounces@debbugs.gnu.org Wed Sep 03 14:01:10 2025 Received: (at 79298) by debbugs.gnu.org; 3 Sep 2025 18:01:10 +0000 Received: from localhost ([127.0.0.1]:41836 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1utrnC-0001XV-1D for submit@debbugs.gnu.org; Wed, 03 Sep 2025 14:01:10 -0400 Received: from mail-10627.protonmail.ch ([79.135.106.27]:17175) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1utrn4-0001Vk-T0 for 79298@debbugs.gnu.org; Wed, 03 Sep 2025 14:01:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756922455; x=1757181655; bh=XumLVbgBm2hP3zMQpq8wS9y4UROKZJ2cqPeiBA8Iu5E=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=eUYF5PXaR+EgVv5Rvs2KFQUnDF4OAnC7s0OJ4Vioo+8X2LoHrYXnXTD6DheXl8v6I rNpq5nSZPZL8r1kYpKPi5at5sG65JumHNrL6qzHQRwSOt1UeKP0CHB7DvCX9HDMk9w B2o8nJeafD2ER35gKZTP6sjEnihToXzw8HeLxBgyKalq4YzXe5iaUbLwFY/34lP8PM RWa7iOLfn1iY0OEKMbYLS6xy/0TFWjmrShpgoEYSp/OOPt+XuMfS95Ozy0Kfxwh3A8 3YJqo3WYx2jB6siCMSZCDf408qQ+BgXZg8ERaz1JtFXhcddS0tcMK3cbi6/ZYvyVG9 AxiXR98wTrzyw== Date: Wed, 03 Sep 2025 18:00:49 +0000 To: Eli Zaretskii From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: References: <86a53nwms8.fsf@gnu.org> <86plciuz02.fsf@gnu.org> <86sehdt15o.fsf@gnu.org> <86qzwnk333.fsf@gnu.org> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 91b3dc5e93deeada66367d9f1cca92dc85e96c5d MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > > AFAIK users can choose to use the legacy ConHost even on newer Windows > > versions, and I wouldn't want us to have to tell the users to tweak > > their Emacs should it turn out ConHost causes problems with the > > Virtual Terminal control sequences. >=20 >=20 > Three things give me comfort on this front. One, Microsoft has added > "support" for ASCII sequences (at least for color) to the Console. I have confirmed that the conhost.exe which ships with Win11 does support the full range of ASCII control sequences. Emacs with the=20 above patch has no apparent differences from 30.2 release when run with -q in ConHost. I don't have any older systems to test this on. From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 04 00:42:16 2025 Received: (at 79298) by debbugs.gnu.org; 4 Sep 2025 04:42:16 +0000 Received: from localhost ([127.0.0.1]:44438 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uu1nb-0000aE-S7 for submit@debbugs.gnu.org; Thu, 04 Sep 2025 00:42:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36654) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uu1nW-0000Zp-54 for 79298@debbugs.gnu.org; Thu, 04 Sep 2025 00:42:11 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uu1nQ-0000hj-D5; Thu, 04 Sep 2025 00:42:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Yz9Fl15RPc4g7JZSyzyx31x5b7b3Ra74+V06Gd2UQ7Y=; b=SGz4r9w+nRnb CEiP19KHhPCTCdS8bWXztRZz07tXp9hJpgfJi+bx7S5R5HAgiumheOQ9OXVaMVDr6AIzzZ+1DqTqH NwaR7vE73qyC64NWizKMgkj6vxET+b9NfmidovwXUVeiluMgp1t+ALXfx0CGcqiwwfNyR0ryxr8T6 rJnHFJiYDXkMiNoIUjaV5eViPlpXbOjG88xM4R7WDbPEwbTfhAma5gK4swFKb2bncTWQ5OEJPrjYM i4q09KBCLRqGM/t7jJqP6085eVDOU2lT8VfZkkd4VMaY0ijPDHR25cBWRm7pP9VsPxHrEGm81eFsH Fzs3+QQ2mGJ/w5I+1I5XdQ==; Date: Thu, 04 Sep 2025 07:42:02 +0300 Message-Id: <86jz2ekew5.fsf@gnu.org> From: Eli Zaretskii To: Ewan In-Reply-To: (message from Ewan on Wed, 03 Sep 2025 17:05:56 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <86plciuz02.fsf@gnu.org> <86sehdt15o.fsf@gnu.org> <86qzwnk333.fsf@gnu.org> <86ms7bjxu9.fsf@gnu.org> X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Wed, 03 Sep 2025 17:05:56 +0000 > From: Ewan > Cc: 79298@debbugs.gnu.org > > WriteConsoleOutput (used by the old code) doesn't move the cursor, but > can't be used for ASCII control sequences, and is being phased out by > Microsoft. WriteConsole is required for ASCII sequences, and moves the > cursor. Hiding the system cursor before every move/call to WriteConsole > and showing it after, makes for a very unstable cursor (flickers wildly). I meant hiding it at the beginning of an update (in w32con_update_begin) and showing it at the end of the update, which we already do. Then we can move it at will without it appearing on the screen, right? > Previously, we maintained the "cursor" throughout the update as an internal > coordinate variable, without "realizing" the position in the system cursor, > through a call to SetConsoleCursorPosition, until the after-update hook. > That is no longer possible -- the system cursor position must be realized > in real-time. Hiding the system cursor the whole time, and replacing it > with a (nominal) "cursor" drawn in with the rest of the glyphs, achieves > the same effect that we had before, in light of the new constraint. The > (actual, system) cursor jumps around, invisibly, during the write, while > the (nominal, visible) cursor stays stable, then makes one discrete move > (when its new row is written). It sounds like you are describing what I suggested above, so we agree on how to handle this when WriteConsole is in use? But what do you mean by "replacing it with a (nominal) "cursor" drawn in with the rest of the glyphs" in this context? I thought if we hide the cursor, it is simply not shown, although the system maintains its position, and so should we. Then why "replacing", and what is the "nominal cursor"? From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 04 00:56:18 2025 Received: (at 79298) by debbugs.gnu.org; 4 Sep 2025 04:56:18 +0000 Received: from localhost ([127.0.0.1]:44478 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uu21C-0001J2-EW for submit@debbugs.gnu.org; Thu, 04 Sep 2025 00:56:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37428) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uu219-0001Io-IE for 79298@debbugs.gnu.org; Thu, 04 Sep 2025 00:56:17 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uu212-0006of-T7; Thu, 04 Sep 2025 00:56:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Ol9b/QgKnNdaMFcuPhHna/jM3cAIcb3hP82uj2wF250=; b=cMGieDaD7K2p a80JepxbELxflH3vux7ctqiByRKwyYt1ozsRtWPF2Zp+RaEfpSfjumC7cS8ePVtnbknsIAsEf9Zw5 a/DgJYetUGMdUYX0mX2UPLPxmwsnmmoMom8s/BYvFiiEA3Dpd5skitU0Vs+gYqgv7Zkj1Z4sYdnah 3ZLA3y5En269jK9BJoP4gBsQQsRHwdi2YInbNmmMDfy9rJ99ebs41pTq09q4AmszLKa2yA0d84DGv 4xW2kqc5GjyAFfdiM+bwrNxqobw7z0IX+fXn2cB5rYV42SNcEGlk8HE7ZtVEXS4d7qRnMmlvmUTH+ 8cG2kjQlAE2U6lZyJkTS+w==; Date: Thu, 04 Sep 2025 07:56:05 +0300 Message-Id: <86frd2ke8q.fsf@gnu.org> From: Eli Zaretskii To: Ewan In-Reply-To: (message from Ewan on Wed, 03 Sep 2025 18:00:49 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <86a53nwms8.fsf@gnu.org> <86plciuz02.fsf@gnu.org> <86sehdt15o.fsf@gnu.org> <86qzwnk333.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Wed, 03 Sep 2025 18:00:49 +0000 > From: Ewan > Cc: 79298@debbugs.gnu.org > > > > AFAIK users can choose to use the legacy ConHost even on newer Windows > > > versions, and I wouldn't want us to have to tell the users to tweak > > > their Emacs should it turn out ConHost causes problems with the > > > Virtual Terminal control sequences. > > > > > > Three things give me comfort on this front. One, Microsoft has added > > "support" for ASCII sequences (at least for color) to the Console. > > I have confirmed that the conhost.exe which ships with Win11 does > support the full range of ASCII control sequences. Emacs with the > above patch has no apparent differences from 30.2 release when run > with -q in ConHost. I don't have any older systems to test this on. I know that Windows 11 has ConHost which supports the control sequences. It's the potential issues with older systems (AFAIR, ConHost premiered in XP) that I'm bothered with. Although I don't expect any such issues, it would be nice not to risk them at all, by keeping as much of the current code as possible. If someone does report such issues, testing a fix for them will be quite tricky, given the almost non-existent access to such old systems, and the fact that Emacs compiled with MinGW64 cannot even run on them. From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 04 02:01:54 2025 Received: (at 79298) by debbugs.gnu.org; 4 Sep 2025 06:01:54 +0000 Received: from localhost ([127.0.0.1]:44686 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uu32f-00052z-H8 for submit@debbugs.gnu.org; Thu, 04 Sep 2025 02:01:53 -0400 Received: from mail-10625.protonmail.ch ([79.135.106.25]:44399) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uu32c-00052K-Vt for 79298@debbugs.gnu.org; Thu, 04 Sep 2025 02:01:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756965703; x=1757224903; bh=uOnwU9KgOjsGJU1VX8aRXKPpCretXPvrPzqsMM6tGew=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=v8+boVm/ZQ/76qzGR3tYijygduDDiy7bj4PIqLWviS1CdeCbMSi/TRrYBhXyD68tc c7Z8R9f6UKKeui54q5058xggU05r9vh3qUOj/dQ+T/vv4MTfDpWqrzNDYq8juYBR+j jDSeUwhUkMX4LAviIQjOaSVq7ZIIOuTdwmTzzEN1bPLZb3aBvzKGPAyEp0pwtYcPOs rjjocIXbK10Xvttgn+jPg/8W01VG2EsbouEjMno7VlG7mAs3J2vmwh/ZYSsIHITc8L ak2PUOmJu+zTuBuo7QZZHn6ORASVakM/k+ARJfQ/a2OHx2KO784SH2Z9lRiZg3qiKq Jcy1HWxxu9AFg== Date: Thu, 04 Sep 2025 06:01:41 +0000 To: Eli Zaretskii From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: <86jz2ekew5.fsf@gnu.org> References: <86sehdt15o.fsf@gnu.org> <86qzwnk333.fsf@gnu.org> <86ms7bjxu9.fsf@gnu.org> <86jz2ekew5.fsf@gnu.org> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: d1af7b11b2f38eea9184641b315454f2629909a7 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > I meant hiding it at the beginning of an update (in > w32con_update_begin) and showing it at the end of the update, which we > already do. Then we can move it at will without it appearing on the > screen, right? Correct, and I tried this initially, but while it fixes the "jumping"=20 problem, it causes the cursor to flash in-place irregularly, since it=20 is hidden during updates, and updates have a variable duration (meaning=20 you can't mitigate it with a tailored system cursor blink rate). The=20 strategy of hiding it only when updating the echo area was a response to this issue. It minimizes the "off" time, so the flashing in-place is=20 reduced to a slight flicker. > > Previously, we maintained the "cursor" throughout the update as an inte= rnal > > coordinate variable, without "realizing" the position in the system cur= sor, > > through a call to SetConsoleCursorPosition, until the after-update hook= . > > That is no longer possible -- the system cursor position must be realiz= ed > > in real-time. Hiding the system cursor the whole time, and replacing it > > with a (nominal) "cursor" drawn in with the rest of the glyphs, achieve= s > > the same effect that we had before, in light of the new constraint. The > > (actual, system) cursor jumps around, invisibly, during the write, whil= e > > the (nominal, visible) cursor stays stable, then makes one discrete mov= e > > (when its new row is written). >=20 >=20 > It sounds like you are describing what I suggested above, so we agree > on how to handle this when WriteConsole is in use?=20 Not quite. By "the whole time", I mean always, whether updating or not. We effectively replace the internal coordinate variable with the actual system cursor by making it invisible at all times, and moving it around. > But what do you mean by "replacing it with a (nominal) "cursor" drawn=20 > in with the rest of the glyphs" in this context?=20 > ... why "replacing", and what is the "nominal cursor"? You "replace" the (previously, visible) system cursor with a glyph that has its regular face_id temporarily replaced by the CURSOR_FACE_ID. The=20 "nominal cursor" is then just a temporary assignment of the cursor face to a whichever glyph will coincide with the (invisible) system cursor at=20 the end of the update cycle. You compute this position just before the=20 glyph matrix is written to the screen buffer. Visually, it is like the=20 solid GUI cursor, as its appearance is determined by the cursor face. Here's a recent build, in case you want to try for yourself: https://github.com/ewantown/wemacs-build/releases/tag/v31.35.20250904.0a313= d5 And here's a video demo, in case you don't want to run strangers' code: https://sendvid.com/o4rr6p2b > I know that Windows 11 has ConHost which supports the control > sequences. It's the potential issues with older systems (AFAIR, > ConHost premiered in XP) that I'm bothered with. Although I don't > expect any such issues, it would be nice not to risk them at all, by > keeping as much of the current code as possible. If someone does > report such issues, testing a fix for them will be quite tricky, given > the almost non-existent access to such old systems, and the fact that > Emacs compiled with MinGW64 cannot even run on them. I see, fair concern. FWIW I have not /removed/ any of the old code.=20 The old path is still intact. At runtime you can ensure that it is used=20 by setting w32-use-virtual-terminal-sequences to nil (done automatically if VT processing is not available), and w32-use-visible-system-cursor to=20 non-nil (manual - existing default is nil, unless using a screen-reader). Not quite as comforting as a static guarantee of backward compatibility, but I've tried to thread the new code through the old, branching on the feature flags, so the old path remains functionally untouched. From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 04 02:37:41 2025 Received: (at 79298) by debbugs.gnu.org; 4 Sep 2025 06:37:41 +0000 Received: from localhost ([127.0.0.1]:44889 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uu3bJ-0007K0-2A for submit@debbugs.gnu.org; Thu, 04 Sep 2025 02:37:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37202) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uu3bE-0007Je-W7 for 79298@debbugs.gnu.org; Thu, 04 Sep 2025 02:37:38 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uu3b9-0001AT-7I; Thu, 04 Sep 2025 02:37:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=HE6HnsNEBAXpEk0lEXFW3tGYD2YDc6UKXoh99eCRHWs=; b=UCEjsuEuxy/C eQAW7ODk8AtXRVprz3X2yVzYyyhM5JG6t6GLrh4f8lneUtClcpUoMZSnPM3s7fzmnLdG7zKSYipbM 0S8ed2C++5rZHzFMst/wpaGaj7p3fLjXdCECh8pqItbUOD4TCdgkpv0ZyEbNz3J/vvjaEL5Yj4od/ XxQRpMTTgUY3H1dOD7BaHyEybv07YPyaA6RRfh80L0TjaMKheoaYAHsHQNyYPGEIF5RnkfrqqKe1b BeHX8PK/2ALmsgWT0GDw40IXfzKvNvZlYZPwivahsd5EXZGbPCYBt1267aj7GD/Xjzj+ylDyFKpbP XFoF3gbse8UkZSI3pdPG4w==; Date: Thu, 04 Sep 2025 09:37:28 +0300 Message-Id: <868qiuk9jr.fsf@gnu.org> From: Eli Zaretskii To: Ewan In-Reply-To: (message from Ewan on Thu, 04 Sep 2025 06:01:41 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <86sehdt15o.fsf@gnu.org> <86qzwnk333.fsf@gnu.org> <86ms7bjxu9.fsf@gnu.org> <86jz2ekew5.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Thu, 04 Sep 2025 06:01:41 +0000 > From: Ewan > Cc: 79298@debbugs.gnu.org > > > I meant hiding it at the beginning of an update (in > > w32con_update_begin) and showing it at the end of the update, which we > > already do. Then we can move it at will without it appearing on the > > screen, right? > > Correct, and I tried this initially, but while it fixes the "jumping" > problem, it causes the cursor to flash in-place irregularly, since it > is hidden during updates, and updates have a variable duration (meaning > you can't mitigate it with a tailored system cursor blink rate). The > strategy of hiding it only when updating the echo area was a response to > this issue. It minimizes the "off" time, so the flashing in-place is > reduced to a slight flicker. > > > > Previously, we maintained the "cursor" throughout the update as an internal > > > coordinate variable, without "realizing" the position in the system cursor, > > > through a call to SetConsoleCursorPosition, until the after-update hook. > > > That is no longer possible -- the system cursor position must be realized > > > in real-time. Hiding the system cursor the whole time, and replacing it > > > with a (nominal) "cursor" drawn in with the rest of the glyphs, achieves > > > the same effect that we had before, in light of the new constraint. The > > > (actual, system) cursor jumps around, invisibly, during the write, while > > > the (nominal, visible) cursor stays stable, then makes one discrete move > > > (when its new row is written). > > > > > > It sounds like you are describing what I suggested above, so we agree > > on how to handle this when WriteConsole is in use? > > Not quite. By "the whole time", I mean always, whether updating or not. > We effectively replace the internal coordinate variable with the actual > system cursor by making it invisible at all times, and moving it around. > > > But what do you mean by "replacing it with a (nominal) "cursor" drawn > > in with the rest of the glyphs" in this context? > > ... why "replacing", and what is the "nominal cursor"? > > You "replace" the (previously, visible) system cursor with a glyph that > has its regular face_id temporarily replaced by the CURSOR_FACE_ID. The > "nominal cursor" is then just a temporary assignment of the cursor face > to a whichever glyph will coincide with the (invisible) system cursor at > the end of the update cycle. You compute this position just before the > glyph matrix is written to the screen buffer. Visually, it is like the > solid GUI cursor, as its appearance is determined by the cursor face. > > Here's a recent build, in case you want to try for yourself: > https://github.com/ewantown/wemacs-build/releases/tag/v31.35.20250904.0a313d5 > > And here's a video demo, in case you don't want to run strangers' code: > https://sendvid.com/o4rr6p2b I'm not yet sure I understand the issues and the proposed solutions. Let's back up a notch: Emacs in -nw mode on Unix systems already hides the cursor before writing glyphs, see tty_write_glyphs_1 and tty_write_glyphs_with_face. Why cannot we do the same in w32con_write_glyphs and w32con_write_glyphs_with_face, when WriteConsole is in use? Or what are the problems with doing that? In general, drawing our own cursor on TTY frames sounds like a complication I would like to avoid. We don't do anything like that on Unix, so I'd prefer Windows to work similarly, using the system cursor. > > I know that Windows 11 has ConHost which supports the control > > sequences. It's the potential issues with older systems (AFAIR, > > ConHost premiered in XP) that I'm bothered with. Although I don't > > expect any such issues, it would be nice not to risk them at all, by > > keeping as much of the current code as possible. If someone does > > report such issues, testing a fix for them will be quite tricky, given > > the almost non-existent access to such old systems, and the fact that > > Emacs compiled with MinGW64 cannot even run on them. > > I see, fair concern. FWIW I have not /removed/ any of the old code. > The old path is still intact. At runtime you can ensure that it is used > by setting w32-use-virtual-terminal-sequences to nil (done automatically > if VT processing is not available), and w32-use-visible-system-cursor to > non-nil (manual - existing default is nil, unless using a screen-reader). > Not quite as comforting as a static guarantee of backward compatibility, > but I've tried to thread the new code through the old, branching on the > feature flags, so the old path remains functionally untouched. Yes, I understand. But I would prefer to leave the old code used always, not just under the compatibility option (which should be needed only in rare cases anyway). From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 04 05:40:36 2025 Received: (at 79298) by debbugs.gnu.org; 4 Sep 2025 09:40:36 +0000 Received: from localhost ([127.0.0.1]:45556 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uu6SK-0000nQ-7A for submit@debbugs.gnu.org; Thu, 04 Sep 2025 05:40:36 -0400 Received: from mail-24420.protonmail.ch ([109.224.244.20]:34693) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uu6SD-0000mU-MG for 79298@debbugs.gnu.org; Thu, 04 Sep 2025 05:40:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1756978822; x=1757238022; bh=+ikXZh52zpcZ7EOVY5rZMAltKzcCrgyxQPqEosG3oY8=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=mng2esdzv8WxdLKHY7kx1787YiVyXNw7ijcreB1Rh2FW5dDa8spn4QuTXpFNDXUcX Uphdk2+aAmHZMKN29k1jxJvWKA8LkU3gvMzOV6NabNz4AFMCutRPTujGAAAeWn+Tk3 RtYkP1Qd0jTdlfGI3F5282GWKcrkqB/G7eAWRBu9WBx6hdizRC77A0di1C7oReGngi ZW0y5itLhMIVSJK0Q3yBSPbtgBsI3nb7MzUB+FHZCxKeOneyjl8UT89uzk+gm59HxJ 1pAHlQ5Jgsm9cuuO5OG0J45QRZ5irvIejR/KyA7C/n3qBj97dcFA4XwOJDDiej00SJ /iR2AVa7PDn+w== Date: Thu, 04 Sep 2025 09:40:18 +0000 To: Eli Zaretskii From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: <868qiuk9jr.fsf@gnu.org> References: <86qzwnk333.fsf@gnu.org> <86ms7bjxu9.fsf@gnu.org> <86jz2ekew5.fsf@gnu.org> <868qiuk9jr.fsf@gnu.org> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: c8586ad5885f32390ace4880cb1fa8a33fa99de7 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > I'm not yet sure I understand the issues and the proposed solutions. >=20 > Let's back up a notch: Emacs in -nw mode on Unix systems already hides > the cursor before writing glyphs, see tty_write_glyphs_1 and > tty_write_glyphs_with_face. Why cannot we do the same in > w32con_write_glyphs and w32con_write_glyphs_with_face, when > WriteConsole is in use? Or what are the problems with doing that? On Unix systems, this rapid off/on cycle appears to be fast enough to be imperceptible. Not so on Windows. My understanding is that cursor changes are just less efficient on Windows. Perhaps some visuals will help. Just FYI, all of these effects are=20 more pronounced with a colored background, because of the effect of colored spaces on write_row (in dispnew.c), and even more so when the=20 screen is full or changing significantly. Here is a baseline - no hiding of the cursor, so it jumps: https://sendvid.com/s25e79ou This one is from a build where the cursor is hidden before and shown after writing glyphs, as on Unix systems: https://sendvid.com/41falj8d And this one is where I ended up, hiding the cursor just for the=20 call to write_row where the row to be written is the echo area. The "flicker" is almost imperceptible, but still noticeable when=20 attending to the cursor, and esp. on my (quite large) monitor, when the 'q' in 'setq' is entered: https://sendvid.com/p43vhzav Frankly, the last of these is probably sufficient, and would=20 go unnoticed by the vast majority of users. But it required=20 changes to dispnew.c anyway, and being a perfectionist, I opted=20 for the perfectly stable option (drawing our own cursor): https://sendvid.com/6rxlxsfh > Yes, I understand. But I would prefer to leave the old code used > always, not just under the compatibility option (which should be > needed only in rare cases anyway). Totally understandable. It's fairly easy to just pull out the new bits added to handle cursor movement, clearing lines, etc., with ASCII sequences, and we just lose a tiny bit of efficiency. From debbugs-submit-bounces@debbugs.gnu.org Thu Sep 04 06:12:09 2025 Received: (at 79298) by debbugs.gnu.org; 4 Sep 2025 10:12:09 +0000 Received: from localhost ([127.0.0.1]:45695 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uu6wr-0002m4-39 for submit@debbugs.gnu.org; Thu, 04 Sep 2025 06:12:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56020) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uu6wm-0002km-7I for 79298@debbugs.gnu.org; Thu, 04 Sep 2025 06:12:05 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uu6wg-0007Wu-8J; Thu, 04 Sep 2025 06:11:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=b4w7yl8JwuPWs7fe+7Z1U79PnAX9mSbMVYYjw/2BQ3Q=; b=iafR5fwUeEsU fn1VIijK8VYqH7xzb9orhslfFKMhO93X1KrDe4hFJp5FfIdiqohsP7dYIaZ3b3G4lfZgy9bM4UkEq JA0I1dcowj7qvb4Dftjlms+xd1o0w2RyphugSnyxRkLXMhsvsyrA6r+5sqDkoT8P37SEcGb4f950x McNKCynYtBPp4izEWxlChufyv2ujq9M5EGtM29fZhgZ2ThXusDcOSZxJTFjjbWzRro3eAT3AbdJt6 mAuqLizr2Ip9IHYuzVJrY7z2oMcMYRhVj5wMjojEpsRaqHf7ENPsPbys3yOBz2FhpGuJW4rFIMbEF bVIc7yjEXKQmIJPmev+noQ==; Date: Thu, 04 Sep 2025 13:11:54 +0300 Message-Id: <864itijzmd.fsf@gnu.org> From: Eli Zaretskii To: Ewan In-Reply-To: (message from Ewan on Thu, 04 Sep 2025 09:40:18 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <86qzwnk333.fsf@gnu.org> <86ms7bjxu9.fsf@gnu.org> <86jz2ekew5.fsf@gnu.org> <868qiuk9jr.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Thu, 04 Sep 2025 09:40:18 +0000 > From: Ewan > Cc: 79298@debbugs.gnu.org > > > > I'm not yet sure I understand the issues and the proposed solutions. > > > > Let's back up a notch: Emacs in -nw mode on Unix systems already hides > > the cursor before writing glyphs, see tty_write_glyphs_1 and > > tty_write_glyphs_with_face. Why cannot we do the same in > > w32con_write_glyphs and w32con_write_glyphs_with_face, when > > WriteConsole is in use? Or what are the problems with doing that? > > On Unix systems, this rapid off/on cycle appears to be fast enough > to be imperceptible. Not so on Windows. My understanding is that > cursor changes are just less efficient on Windows. Why "rapid"? AFAICT, we hide the cursor before the first write, and unhide it only in update_end_hook, i.e. when we finished updating the entire frame. > Perhaps some visuals will help. Thanks, but they don't. Movies that show screens don't work well IME because the basic timing on the original system is basically lost. Tell you what: why don't you post a patch that includes all we were talking about, i.e. leaving most of the code not related to colors unmodified and using the system cursor, and including the call to hide/show the cursor modeled after what the Unix systems do, and we then take it from there? Maybe I'm missing something important here, but then I should be able to see if after applying the patch and building Emacs. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 05 16:48:20 2025 Received: (at 79298) by debbugs.gnu.org; 5 Sep 2025 20:48:20 +0000 Received: from localhost ([127.0.0.1]:57775 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uudM3-0001ZJ-SZ for submit@debbugs.gnu.org; Fri, 05 Sep 2025 16:48:20 -0400 Received: from mail-24421.protonmail.ch ([109.224.244.21]:54239) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uudLt-0001Yl-JV for 79298@debbugs.gnu.org; Fri, 05 Sep 2025 16:48:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1757105281; x=1757364481; bh=PwQa20q67ZgVL2LohMwQf2WHHzKiEeR7+UP5YIRfAM4=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=M+MksaLi6TuG95asLWzzL2+tAYHS/gliJ8wAo+POYci3LzFRbpcVnV8sJzgWEP0Yl JtUjhKGkpfIQ5sIQPW0NvNfFhG4fZ2FTHM9xxbHqm77XzpVVp5uDsLvXcOkyTWQUYU x9sqs08bgbXiWqyXs82QPQjHPRM6ulvOKZGt1ZL4K05SqZc28Iyu5dqVFyaXKYgnaq /VoNspUjg/GgLvxtXCnhCHl257XmjOhdNRQSTavmrOS3RtMaz/38oYI4aRQnYh9Nt0 c6ma9h6OXM9gi5XO9dqrdZReykOrHfcnijwQT/XuKi0hrK7CnqmMl98C0cQ0Y8sV+L D1629m61RSDaw== Date: Fri, 05 Sep 2025 20:47:56 +0000 To: Eli Zaretskii From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: <864itijzmd.fsf@gnu.org> References: <86ms7bjxu9.fsf@gnu.org> <86jz2ekew5.fsf@gnu.org> <868qiuk9jr.fsf@gnu.org> <864itijzmd.fsf@gnu.org> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: 9c22d08ca05e83b066a3fa9246a5bcd47bc66a72 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_bjVMxrybUQ7dRATJ96flXxCUxfCAFtrfmxAa3hg2j4" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --b1=_bjVMxrybUQ7dRATJ96flXxCUxfCAFtrfmxAa3hg2j4 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable > Tell you what: why don't you post a patch that includes all we were > talking about, i.e. leaving most of the code not related to colors > unmodified and using the system cursor, and including the call to > hide/show the cursor modeled after what the Unix systems do, and we > then take it from there? Maybe I'm missing something important here, > but then I should be able to see if after applying the patch and > building Emacs. Sure -- attached. Just ignore the documentation, comments, and cruft=20 for now, I will clean it all up once we get this figured out. --b1=_bjVMxrybUQ7dRATJ96flXxCUxfCAFtrfmxAa3hg2j4 Content-Type: application/octet-stream; name=0001-w32-Virtual-Terminal-Sequences-min.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-w32-Virtual-Terminal-Sequences-min.patch RnJvbSBhNzAzZTczZWUxY2IyN2ZhMmI0MjIwOTdhNGMwNDljZjMwODI4YTZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IEZyaSwg NSBTZXAgMjAyNSAxMzo0MDoxMSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHczMiBWaXJ0dWFsIFRl cm1pbmFsIFNlcXVlbmNlcyAobWluKQoKLS0tCiBkb2MvZW1hY3MvY21kYXJncy50ZXhpICB8ICAg OSArLQogZG9jL2VtYWNzL21zZG9zLnRleGkgICAgfCAgNDggKysrKy0KIGV0Yy9ORVdTLjMwICAg ICAgICAgICAgIHwgIDI5ICsrKwogbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwgfCAgIDMgKy0KIGxp c3AvdGVybS93MzJjb25zb2xlLmVsIHwgMTUyICsrKysrKysrKy0tLS0KIHNyYy90ZXJtLmMgICAg ICAgICAgICAgIHwgIDg1ICsrKysrKy0tCiBzcmMvdGVybWNoYXIuaCAgICAgICAgICB8ICAgMiAr CiBzcmMvdzMyY29uc29sZS5jICAgICAgICB8IDQ2OCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tCiBzcmMveGRpc3AuYyAgICAgICAgICAgICB8ICAgMiArLQogOSBmaWxl cyBjaGFuZ2VkLCA2NDUgaW5zZXJ0aW9ucygrKSwgMTUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkgYi9kb2MvZW1hY3MvY21kYXJncy50ZXhpCmluZGV4 IDc5YWUyZDA2NGQxLi5lZWQyNjNjMzkwNSAxMDA2NDQKLS0tIGEvZG9jL2VtYWNzL2NtZGFyZ3Mu dGV4aQorKysgYi9kb2MvZW1hY3MvY21kYXJncy50ZXhpCkBAIC0xMDI0LDE5ICsxMDI0LDIyIEBA IGNvbG9yZWQgZGlzcGxheS4KIEBpdGVteCBhbnNpOAogVHVybiBvbiB0aGUgY29sb3Igc3VwcG9y dCB1bmNvbmRpdGlvbmFsbHksIGFuZCB1c2UgY29sb3IgY29tbWFuZHMKIHNwZWNpZmllZCBieSB0 aGUgQU5TSSBlc2NhcGUgc2VxdWVuY2VzIGZvciB0aGUgOCBzdGFuZGFyZCBjb2xvcnMuCitAaXRl bSAyNGJpdAorVHVybiBvbiBzdXBwb3J0IGZvciBhbGwgZGVmaW5lZCAyNC1iaXQgUkdCIGNvbG9y cyBpZiBhdmFpbGFibGUuCitDdXJyZW50bHkgdGhpcyBpcyBlZmZlY3RpdmUgb24gTVMtV2luZG93 cyAoMTArKSBvbmx5LgogQGl0ZW0gQHZhcntudW19CiBVc2UgY29sb3IgbW9kZSBmb3IgQHZhcntu dW19IGNvbG9ycy4gIElmIEB2YXJ7bnVtfSBpcyBAbWludXN7fTEsIHR1cm4gb2ZmCiBjb2xvciBz dXBwb3J0IChlcXVpdmFsZW50IHRvIEBzYW1we25ldmVyfSk7IGlmIGl0IGlzIDAsIHVzZSB0aGUK IGRlZmF1bHQgY29sb3Igc3VwcG9ydCBmb3IgdGhpcyB0ZXJtaW5hbCAoZXF1aXZhbGVudCB0byBA c2FtcHthdXRvfSk7CiBvdGhlcndpc2UgdXNlIGFuIGFwcHJvcHJpYXRlIHN0YW5kYXJkIG1vZGUg Zm9yIEB2YXJ7bnVtfSBjb2xvcnMuCiBEZXBlbmRpbmcgb24geW91ciB0ZXJtaW5hbCdzIGNhcGFi aWxpdGllcywgRW1hY3MgbWlnaHQgYmUgYWJsZSB0byB0dXJuCi1vbiBhIGNvbG9yIG1vZGUgZm9y IDgsIDE2LCA4OCwgb3IgMjU2IGFzIHRoZSB2YWx1ZSBvZiBAdmFye251bX0uICBJZgotdGhlcmUg aXMgbm8gbW9kZSB0aGF0IHN1cHBvcnRzIEB2YXJ7bnVtfSBjb2xvcnMsIEVtYWNzIGFjdHMgYXMg aWYKK29uIGEgY29sb3IgbW9kZSBmb3IgOCwgMTYsIDg4LCAyNTYsIG9yIDE2Nzc3MjE2IGFzIHRo ZSB2YWx1ZSBvZiBAdmFye251bX0uCitJZiB0aGVyZSBpcyBubyBtb2RlIHRoYXQgc3VwcG9ydHMg QHZhcntudW19IGNvbG9ycywgRW1hY3MgYWN0cyBhcyBpZgogQHZhcntudW19IHdlcmUgMCwgaS5l LiwgaXQgdXNlcyB0aGUgdGVybWluYWwncyBkZWZhdWx0IGNvbG9yIHN1cHBvcnQKIG1vZGUuCiBA ZW5kIHRhYmxlCiAKLVRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gTVMtV2luZG93cyBhbmQg TVMtRE9TLgorVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBNUy1ET1MsIG5vciBNUy1XaW5k b3dzIHByaW9yIHRvIFdpbmRvd3MgMTAuCiAKIEBjaW5kZXggY29sb3JzIG9uIGNoYXJhY3RlciB0 ZXJtaW5hbCwgY2hhbmdpbmcgZHVyaW5nIHNlc3Npb24KIEBjaW5kZXggY2hhcmFjdGVyIHRlcm1p bmFsLCBjaGFuZ2UgY29sb3IgbW9kZQpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNzL21zZG9zLnRleGkg Yi9kb2MvZW1hY3MvbXNkb3MudGV4aQppbmRleCBmOTcxNTFjNjMwZi4uY2Q4ZTMyMDI3YzcgMTAw NjQ0Ci0tLSBhL2RvYy9lbWFjcy9tc2Rvcy50ZXhpCisrKyBiL2RvYy9lbWFjcy9tc2Rvcy50ZXhp CkBAIC0xMTY1LDcgKzExNjUsNyBAQCBhbnl3aGVyZSBlbHNlLgogICBUaGUgdmFyaWFibGUgQGNv ZGV7dzMyLXVzZS12aXNpYmxlLXN5c3RlbS1jYXJldH0gaXMgYSBmbGFnIHRoYXQKIGRldGVybWlu ZXMgd2hldGhlciB0byBtYWtlIHRoZSBzeXN0ZW0gY2FyZXQgdmlzaWJsZS4gIFRoZSBkZWZhdWx0 IHdoZW4KIG5vIHNjcmVlbiByZWFkZXIgc29mdHdhcmUgaXMgaW4gdXNlIGlzIEBjb2Rle25pbH0s IHdoaWNoIG1lYW5zIEVtYWNzCi1kcmF3cyBpdHMgb3duIGN1cnNvciB0byBpbmRpY2F0ZSB0aGUg cG9zaXRpb24gb2YgcG9pbnQuICBBCitkcmF3cyBpdHMgb3duIGN1cnNvciB0byBpbmRpY2F0ZSB0 aGUgcG9zaXRpb24gb2YgcG9pbnQuIEEKIG5vbi1AY29kZXtuaWx9IHZhbHVlIG1lYW5zIEVtYWNz IHdpbGwgaW5kaWNhdGUgcG9pbnQgbG9jYXRpb24gd2l0aCB0aGUKIHN5c3RlbSBjYXJldDsgdGhp cyBmYWNpbGl0YXRlcyB1c2Ugb2Ygc2NyZWVuIHJlYWRlciBzb2Z0d2FyZSwgYW5kIGlzCiB0aGUg ZGVmYXVsdCB3aGVuIHN1Y2ggc29mdHdhcmUgaXMgZGV0ZWN0ZWQgd2hlbiBydW5uaW5nIEVtYWNz LgpAQCAtMTIwMCw2ICsxMjAwLDUyIEBAIHlvdSBzaG91bGQgc2V0IGl0cyB2YWx1ZSBpbiB5b3Vy IGluaXQgZmlsZSAoQHB4cmVme0luaXQgRmlsZX0pLCBlaXRoZXIKIGRpcmVjdGx5IG9yIHZpYSBA a2Jke00teCBjdXN0b21pemUtdmFyaWFibGV9LCB3aGljaCBsZXRzIHlvdSBzYXZlIHRoZQogY3Vz dG9taXplZCB2YWx1ZSwgc2VlIEByZWZ7U2F2aW5nIEN1c3RvbWl6YXRpb25zfS4KIAorQHZpbmRl eCB3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzCitAY2luZGV4IFdpbmRvd3MgVGVy bWluYWwsIFdpbmRvd3MgQ29uc29sZSwgTVMtV2luZG93cworICBUaGUgaW1wbGVtZW50YXRpb24g b2YgZGlzcGxheSBmdW5jdGlvbmFsaXR5IGZvciBXaW5kb3dzIENvbnNvbGUKK2RpZmZlcnMgZnJv bSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIG90aGVyIHRlcm1pbmFsIGVtdWxhdG9ycywKK2JlY2F1 c2UgaGlzdG9yaWNhbGx5LCBXaW5kb3dzIHJlcXVpcmVkIHVzZSBvZiBhbiBpZGlvc3luY3JhY3Rp YyBBUEkuCitUaGF0IEFQSSBsaW1pdGVkIFdpbmRvd3MgQ29uc29sZSBkaXNwbGF5IG9mIEVtYWNz IHRvIDE2IGJhc2ljIGNvbG9ycy4KK1dpdGggdGhlIGludHJvZHVjdGlvbiBvZiBXaW5kb3dzIFRl cm1pbmFsLCBNaWNyb3NvZnQgaW1wbGVtZW50ZWQKK3N1cHBvcnQgZm9yIEFTQ0lJIGNvbnRyb2wg c2VxdWVuY2VzLCBtb2RlbGxlZCBvbiB0aGUgVlQxMDAgYW5kIFh0ZXJtLAorYW5kIDI0LWJpdCBS QkcgY29sb3IgZGlzcGxheS4KKworICBUaGUgdmFyaWFibGUgQGNvZGV7dzMyLXVzZS12aXJ0dWFs LXRlcm1pbmFsLXNlcXVlbmNlc30gZGV0ZXJtaW5lcword2hldGhlciB0aGlzIG5ld2VyIG1lY2hh bmlzbSBpcyB1c2VkIGZvciBkaXNwbGF5LCBvciB0aGUgb2xkZXIgb25lLiAKK0l0IGlzIGF1dG9t YXRpY2FsbHkgc2V0IGJhc2VkIG9uIHlvdXIgdGVybWluYWwncyBjYXBhYmlsaXRpZXMgb24gCitz dGFydHVwLiBJZiBpdCBpcyBub24tbmlsLCBFbWFjcyB3aWxsIHVzZSBBU0NJSSBlc2NhcGUgc2Vx dWVuY2VzIGZvciAKK2N1cnNvciBhbmQgY29sb3IgZGlzcGxheS4gQnkgZGVmYXVsdCwgMjQtYml0 IFJHQiBjb2xvciB3aWxsIGJlIHVzZWQsCitidXQgb3RoZXIgKDgsIDE2LCAyNTYpIGNvbG9yIHNw YWNlcyBtYXkgYmUgdXNlZCwgYnkgcGFzc2luZyB0aGUKK0Bjb2Rley0tY29sb3J9IGNvbW1hbmQg bGluZSBhcmd1bWVudCwgb3Igc2V0dGluZyB0aGUgdmFsdWUgb2YgdGhlCitAY29kZXt0dHktY29s b3ItbW9kZX0gZnJhbWUgcGFyYW1ldGVyLgorCisgIEFueSB0aW1lIEBjb2Rle3czMi11c2Utdmly dHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXN9IGlzIHNldCBtYW51YWxseSwKK3RoZSBjaGFuZ2UgaW4g dmFsdWUgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IGEgY2FsbCB0bworQGNvZGV7 c2V0LWZyYW1lLXBhcmFtZXRlcn0gKHJlKXNldHRpbmcgQGNvZGV7J3R0eS1jb2xvci1tb2RlfSwg b3IKK2F0IHZlcnkgbGVhc3QsIGEgY2FsbCB0byBAY29kZXt3MzJjb24tc2V0LXVwLWluaXRpYWwt ZnJhbWUtZmFjZXN9LgorCisgIE9uZSBub3RlIG9uIHRoZSB0cmFuc2l0aW9uIGF3YXkgZnJvbSB0 aGUgb2xkIFdpbmRvd3MgQ29uc29sZSBBUEkuCitUVFkgRW1hY3MgdHJhZGl0aW9uYWxseSBsZWF2 ZXMgdGV4dCBjdXJzb3IgZGlzcGxheSB1cCB0byB0aGUgdGVybWluYWwuCitTY3JlZW4gdXBkYXRl cyB2aWEgdGhlIFdpbmRvd3MgQ29uc29sZSBBUEkgd2VyZSBwZXJmb3JtZWQgZGlyZWN0bHkgb24K K3JlZ2lvbnMgb2YgdGhlIHNjcmVlbiBidWZmZXIsIHdpdGhvdXQgYW55IG5lZWQgdG8gbW92ZSB0 aGUgY3Vyc29yIGR1cmluZworYSBkaXNwbGF5IHVwZGF0ZS4gVmlydHVhbCB0ZXJtaW5hbCBzZXF1 ZW5jZXMgcmVxdWlyZSBtb3ZpbmcgdGhlIGN1cnNvcgordG8gZXZlcnkgcG9pbnQgYXQgd2hpY2gg d2UgbmVlZCB0byB3cml0ZSBhIGNoYW5nZS4gVW5mb3J0dW5hdGVseSwgdGhlCitjb250ZW50IG9m IHRoZSBlY2hvIGFyZWEgY2hhbmdlcyBmcmVxdWVudGx5LCBhbmQgdXBkYXRlcyBhcmUgbm90IGFs d2F5cworcXVpY2sgZW5vdWdoIGZvciB0aGUgY3Vyc29yIG1vdmVtZW50IHRvIGJlIG1hZGUgaW1w ZXJjZXB0aWJsZS4gVGhpcworcHJlc2VudHMgYSBVWCBkaWxlbW1hLiBFaXRoZXIgd2UgKDEpIGhp ZGUgdGhlIGN1cnNvciBtb21lbnRhcmlseSB3aGVuZXZlcgoraXQgYGBqdW1wcycnIHRvIHRoZSBl Y2hvIGFyZWEsIHdoaWNoIG1hbmlmZXN0cyBpbiB0aGUgY3Vyc29yIGFwcGVhcmluZyB0bworYGBm bGlja2VyJycgaW4tcGxhY2UsIG9yICgyKSB3ZSBkb24ndCwgaW4gd2hpY2ggY2FzZSB0aGUgY3Vy c29yIGp1bXBzIHRvCisvIGZsYXNoZXMgaW4gdGhlIGVjaG8gYXJlYS4gV2UgZ2V0IHRocm91Z2gg dGhlIGhvcm5zIG9mIHRoZSBkaWxlbW1hIGJ5ICgzKQorYWx3YXlzIGhpZGluZyB0aGUgc3lzdGVt IGN1cnNvciwgYW5kIGhhdmluZyBFbWFjcyB0YWtlIG92ZXIgY3Vyc29yIGRpc3BsYXkuCisKKyAg QWZ0ZXIgdGhlIG1pZ3JhdGlvbiB0byB2aXJ0dWFsIHRlcm1pbmFsIHNlcXVlbmNlcyBFbWFjcyBk ZWZhdWx0cyB0byAoMyksCitidXQgbGVhdmVzICgyKSBhcyBhbiBvcHRpb24uIFdoZW4gQGNvZGV7 dzMyLXVzZS12aXNpYmxlLXN5c3RlbS1jYXJldH0gaXMKK0Bjb2Rle25pbH0sIGEgc29saWQgbm9u LWJsaW5raW5nIHRleHQgY3Vyc29yIHdpbGwgZGlzcGxheWVkIChpbiB0aGUKKydjdXJzb3InIGZh Y2UpLiBXaGVuIGl0IGlzIG5vbi1AY29kZXtuaWx9LCBhIHN5c3RlbSBjdXJzb3Igd2lsbCBiZSBz aG93bgorKHBvc3NpYmx5IHdpdGggYSBzbGlnaHQgZmxpY2tlcikuIFRoaXMgY2hhbmdlIGlzIGlu ZGVwZW5kZW50IG9mCitAY29kZXt3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzfSwg YnV0IHJlcXVpcmVkIGZvciBhIHNtb290aCBVWC4KKworCiBAaWZub3R0ZXgKIEBpbmNsdWRlIG1z ZG9zLXh0cmEudGV4aQogQGVuZCBpZm5vdHRleApkaWZmIC0tZ2l0IGEvZXRjL05FV1MuMzAgYi9l dGMvTkVXUy4zMAppbmRleCBkZmU2YzVjYWZlNi4uODE0Y2E4NDNiZTUgMTAwNjQ0Ci0tLSBhL2V0 Yy9ORVdTLjMwCisrKyBiL2V0Yy9ORVdTLjMwCkBAIC0xNSw2ICsxNSwzNSBAQCBpbiBvbGRlciBF bWFjcyB2ZXJzaW9ucy4KIFlvdSBjYW4gbmFycm93IG5ld3MgdG8gYSBzcGVjaWZpYyB2ZXJzaW9u IGJ5IGNhbGxpbmcgJ3ZpZXctZW1hY3MtbmV3cycKIHdpdGggYSBwcmVmaXggYXJndW1lbnQgb3Ig YnkgdHlwaW5nICdDLXUgQy1oIEMtbicuCiAKKwwKKyogQ2hhbmdlcyBpbiBFbWFjcyAzMC4zCisq KiBXaW5kb3dzIFRlcm1pbmFsIG5vdyBkaXNwbGF5cyAyNC1iaXQgUkdCLgorUHJldmlvdXNseSwg dGVybWluYWwgc2Vzc2lvbnMgaW4gV2luZG93cyBUZXJtaW5hbCBhbmQgV2luZG93cyBDb25zb2xl CitzdXBwb3J0ZWQgZGlzcGxheSBvZiAxNiBjb2xvcnMsIHZpYSB0aGUgV2luZG93cyBDb25zb2xl IEFQSS4gVGhlcmUgaXMKK25vdyBzdXBwb3J0IGluIFdpbmRvd3MgVGVybWluYWwgZm9yIDI1NiBh bmQgMjQtYml0IFJHQiBjb2xvciwgYnkKK2VtaXR0aW5nIEFTQ0lJIGNvbnRyb2wgc2VxdWVuY2Vz IChtb2RlbGxlZCBvbiBWVDEwMCBhbmQgWHRlcm0pLgorQ3Vyc29yIG1vdmVtZW50IC8gZGlzcGxh eSBoYXMgYWxzbyBiZWVuIChyZS0paW1wbGVtZW50ZWQuIFRoaXMgYWxpZ25zCit3aXRoIE1pY3Jv c29mdCdzIGxvbmctdGVybSByb2FkbWFwIGFuZCBpcyBhIGZpcnN0IHN0ZXAgaW4gbW92aW5nIEVt YWNzCit0ZXJtaW5hbCBzZXNzaW9ucyBvdmVyIHRvIHRoZSBuZXdlciBXaW5kb3dzIFRlcm1pbmFs IGludGVyZmFjZS4KKworVGhlIG5ldyBtZWNoYW5pc20gd2lsbCBiZSBlbmFibGVkIGF1dG9tYXRp Y2FsbHkgd2hlbiBzdXBwb3J0ZWQuCitJdCBkZWZhdWx0cyB0byAyNC1iaXQgUkdCIGNvbG9yLCBi dXQgY2FuIGJlIHNldCB0byA4LCAxNiwgMjU2LCBvcgorJzI0Yml0JyBieSBwYXNzaW5nIHRoZSAn LS1jb2xvcicgZmxhZyBvciBzZXR0aW5nIHRoZSAndHR5LWNvbG9yLW1vZGUnCitmcmFtZSBwYXJh bWV0ZXIuIEl0IGNhbiBiZSBkaXNhYmxlZC9lbmFibGVkIGJ5IHNldHRpbmcgdGhlIHZhcmlhYmxl CisndzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcycuIFRoZSBvbGRlciAoMTYtY29s b3IpIGludGVyZmFjZQord2lsbCBzdGlsbCBiZSB1c2VkIGluIFdpbmRvd3MgQ29uc29sZSBhbmQg b24gcHJlLVdpbjEwIHN5c3RlbXMuCisKKyoqIEVtYWNzIG5vdyBoYW5kbGVzIHRleHQgY3Vyc29y IGRpc3BsYXkgaW4gV2luZG93cyBUZXJtaW5hbC9Db25zb2xlLgorUHJldmlvdXNseSwgd2hlbiBy dW5uaW5nIGluIFdpbmRvd3MgVGVybWluYWwvQ29uc29sZSwgRW1hY3MgZGVsZWdhdGVkCit0ZXh0 IGN1cnNvciBkaXNwbGF5IHRvIHRoZSBzeXN0ZW0gKGFzIG9uIG90aGVyIFRUWXMpLiBUbyBlbmFi bGUgYQorc21vb3RoIFVYIGZvbGxvd2luZyB0aGUgbWlncmF0aW9uIHRvIEFTQ0lJIGNvbnRyb2wg c2VxdWVuY2VzIChzZWUgYWJvdmUpLAorY3Vyc29yIGRpc3BsYXkgaXMgbm93IC0tIG9wdGlvbmFs bHksIGJ1dCBieSBkZWZhdWx0IC0tIGhhbmRsZWQgYnkgRW1hY3MuCitXaGVuICd3MzItdXNlLXZp c2libGUtc3lzdGVtLWNhcmV0JyBpcyBuaWwsIGEgc29saWQgbm9uLWJsaW5raW5nIHRleHQKK2N1 cnNvciB3aWxsIGRpc3BsYXllZCAoaW4gdGhlICdjdXJzb3InIGZhY2UpLiBXaGVuIGl0IGlzIHNl dCB0byBub24tbmlsLAordGhlIHN5c3RlbSBjdXJzb3Igd2lsbCBiZSBzaG93bi4KKworU2VlIHRo ZSBtYW51YWwgZW50cnkgc3BlY2lmaWMgdG8gTVMtV2luZG93cyBmb3IgbW9yZSBkZXRhaWxzLgor CiAMCiAqIENoYW5nZXMgaW4gRW1hY3MgMzAuMgogRW1hY3MgMzAuMiBpcyBhIGJ1Zy1maXggcmVs ZWFzZSB3aXRoIG5vIG5ldyBmZWF0dXJlcy4KZGlmZiAtLWdpdCBhL2xpc3AvdGVybS90dHktY29s b3JzLmVsIGIvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwKaW5kZXggZGZkMjA3ZDcxYzEuLjFiYTA0 NWM4YjcxIDEwMDY0NAotLS0gYS9saXNwL3Rlcm0vdHR5LWNvbG9ycy5lbAorKysgYi9saXNwL3Rl cm0vdHR5LWNvbG9ycy5lbApAQCAtNzY0LDcgKzc2NCw4IEBACiAgICAgKGF1dG8gLiAwKQogICAg IChhbnNpOCAuIDgpCiAgICAgKGFsd2F5cyAuIDgpCi0gICAgKHllcyAuIDgpKQorICAgICh5ZXMg LiA4KQorICAgICgyNGJpdCAuIDE2Nzc3MjE2KSkKICAgIkFuIGFsaXN0IG9mIHN1cHBvcnRlZCBz dGFuZGFyZCB0dHkgY29sb3IgbW9kZXMgYW5kIHRoZWlyIGFsaWFzZXMuIikKIAogKGRlZnVuIHR0 eS1jb2xvci1hbGlzdCAoJm9wdGlvbmFsIF9mcmFtZSkKZGlmZiAtLWdpdCBhL2xpc3AvdGVybS93 MzJjb25zb2xlLmVsIGIvbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKaW5kZXggMWI0NGRhNDhiZjcu LjdhMjYyMDk3NDkyIDEwMDY0NAotLS0gYS9saXNwL3Rlcm0vdzMyY29uc29sZS5lbAorKysgYi9s aXNwL3Rlcm0vdzMyY29uc29sZS5lbApAQCAtMjQsOCArMjQsNyBAQAogCiA7OzsgQ29kZToKIAot OzsgVzMyIHVzZXMgZGlmZmVyZW50IGNvbG9yIGluZGV4ZXMgdGhhbiBzdGFuZGFyZDoKLQorOzsg VzMyIHVzZXMgZGlmZmVyZW50IGNvbG9yIGluZGV4ZXMgdGhhbiBzdGFuZGFyZAogKGRlZnZhciB3 MzItdHR5LXN0YW5kYXJkLWNvbG9ycwogICAnKCgiYmxhY2siICAgICAgICAgIDAgICAgIDAgICAg IDAgICAgIDApCiAgICAgKCJibHVlIiAgICAgICAgICAgMSAgICAgMCAgICAgMCA1MjQ4MCkgOyBN ZWRpdW1CbHVlCkBAIC00Myw1NiArNDIsMTMzIEBACiAgICAgKCJsaWdodG1hZ2VudGEiICAxMyA2 NTUzNSAgICAgMCA2NTUzNSkgOyBNYWdlbnRhCiAgICAgKCJ5ZWxsb3ciICAgICAgICAxNCA2NTUz NSA2NTUzNSAgICAgMCkgOyBZZWxsb3cKICAgICAoIndoaXRlIiAgICAgICAgIDE1IDY1NTM1IDY1 NTM1IDY1NTM1KSkKLSJBIGxpc3Qgb2YgVkdBIGNvbnNvbGUgY29sb3JzLCB0aGVpciBpbmRpY2Vz IGFuZCAxNi1iaXQgUkdCIHZhbHVlcy4iKQorICAiQSBsaXN0IG9mIFZHQSBjb25zb2xlIGNvbG9y cywgdGhlaXIgaW5kaWNlcyBhbmQgMTYtYml0IFJHQiB2YWx1ZXMuIikKKworOzsgV2hlbiB1c2lu ZyBWVCBzZXF1ZW5jZXMgZm9yIGNvbG9yLCB1c2UgeHRlcm0tbGlrZSBpbmRpY2VzCisoZGVmdmFy IHczMi10dHktdmlydHVhbC10ZXJtaW5hbC1iYXNlLWNvbG9ycworICAnKCgiYmxhY2siICAgICAg ICAgIDAgICAgIDAgICAgIDAgICAgIDApCisgICAgKCJyZWQiICAgICAgICAgICAgMSA0NTU2OCAg ODcwNCAgODcwNCkgOyBGaXJlQnJpY2sKKyAgICAoImdyZWVuIiAgICAgICAgICAyICA4NzA0IDM1 NTg0ICA4NzA0KSA7IEZvcmVzdEdyZWVuCisgICAgKCJicm93biIgICAgICAgICAgMyA0MDk2MCAy MDk5MiAxMTUyMCkgOyBTaWVubmEKKyAgICAoImJsdWUiICAgICAgICAgICA0ICAgICAwICAgICAw IDUyNDgwKSA7IE1lZGl1bUJsdWUKKyAgICAoIm1hZ2VudGEiICAgICAgICA1IDM1NTg0ICAgICAw IDM1NTg0KSA7IERhcmtNYWdlbnRhCisgICAgKCJjeWFuIiAgICAgICAgICAgNiAgICAgMCA1Mjcz NiA1MzUwNCkgOyBEYXJrVHVycXVvaXNlCisgICAgKCJsaWdodGdyYXkiICAgICAgNyA0ODY0MCA0 ODY0MCA0ODY0MCkgOyBHcmF5CisgICAgKCJkYXJrZ3JheSIgICAgICAgOCAyNjExMiAyNjExMiAy NjExMikgOyBHcmF5NDAKKyAgICAoImxpZ2h0cmVkIiAgICAgICA5IDY1NTM1ICAgICAwICAgICAw KSA7IFJlZAorICAgICgibGlnaHRncmVlbiIgICAgMTAgICAgIDAgNjU1MzUgICAgIDApIDsgR3Jl ZW4KKyAgICAoInllbGxvdyIgICAgICAgIDExIDY1NTM1IDY1NTM1ICAgICAwKSA7IFllbGxvdwor ICAgICgibGlnaHRibHVlIiAgICAgMTIgICAgIDAgICAgIDAgNjU1MzUpIDsgQmx1ZQorICAgICgi bGlnaHRtYWdlbnRhIiAgMTMgNjU1MzUgICAgIDAgNjU1MzUpIDsgTWFnZW50YQorICAgICgibGln aHRjeWFuIiAgICAgMTQgICAgIDAgNjU1MzUgNjU1MzUpIDsgQ3lhbgorICAgICgid2hpdGUiICAg ICAgICAgMTUgNjU1MzUgNjU1MzUgNjU1MzUpKQorICAiQSBsaXN0IG9mIFZHQSBjb25zb2xlIGNv bG9ycywgdGhlaXIgaW5kaWNlcyBhbmQgMTYtYml0IFJHQiB2YWx1ZXMuIikKIAogKGRlY2xhcmUt ZnVuY3Rpb24geC1zZXR1cC1mdW5jdGlvbi1rZXlzICJ0ZXJtL2NvbW1vbi13aW4iIChmcmFtZSkp CiAoZGVjbGFyZS1mdW5jdGlvbiBnZXQtc2NyZWVuLWNvbG9yICJ3MzJjb25zb2xlLmMiICgpKQog KGRlY2xhcmUtZnVuY3Rpb24gdzMyLWdldC1jb25zb2xlLWNvZGVwYWdlICJ3MzJwcm9jLmMiICgp KQogKGRlY2xhcmUtZnVuY3Rpb24gdzMyLWdldC1jb25zb2xlLW91dHB1dC1jb2RlcGFnZSAidzMy cHJvYy5jIiAoKSkKIAorKGRlZnVuIHczMmNvbi1kZWZpbmUtYmFzZS1jb2xvcnMgKCkKKyAgIkRl ZmluZXMgYmFzZSAxNi1jb2xvciBzcGFjZSBmb3IgdzMyIGNvbnNvbGUuIgorICAobGV0KiAoKGNv bG9ycyAoaWYgdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworICAgICAgICAgICAg ICAgICAgICAgdzMyLXR0eS12aXJ0dWFsLXRlcm1pbmFsLWJhc2UtY29sb3JzCisgICAgICAgICAg ICAgICAgICAgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpKQorICAgICAgICAgKG5iYXNlIChsZW5n dGggY29sb3JzKSkKKyAgICAgICAgIChjb2xvciAoY2FyIGNvbG9ycykpKQorICAgIChwcm9nbiAo d2hpbGUgY29sb3JzCisgICAgICAgICAgICAgKHR0eS1jb2xvci1kZWZpbmUgKGNhciBjb2xvcikg KGNhZHIgY29sb3IpIChjZGRyIGNvbG9yKSkKKyAgICAgICAgICAgICAoc2V0cSBjb2xvcnMgKGNk ciBjb2xvcnMpCisgICAgICAgICAgICAgICAgICAgY29sb3IgIChjYXIgY29sb3JzKSkpCisgICAg ICAgICAgIG5iYXNlKSkpCisKKzs7IE5vdGU6IHR0eS1jb2xvci1kZWZpbmUgc3dhcHMgcGFzc2Vk IGluZGV4IGZvciBwaXhlbCBvbiAyNGJpdCB0ZXJtaW5hbAorOzsgU28sIHdlIG5lZWQgdGhpcyBm dW5jdGlvbiB0byAicmVjb3ZlciIgdGhlIHRlcm1pbmFsJ3MgbmF0aXZlIG1hcHBpbmcKKyhkZWZ1 biB3MzJjb24tZ2V0LXBpeGVsIChpbmRleCkKKyAgIkNvbnZlcnQgYSBiYXNlLWNvbG9yIGluZGV4 IGludG8gYSBwaXhlbCAoaW5kZXggaW50byAyNGJpdCBtYXApIgorICAobGV0ICgoY29sb3IgKG50 aCBpbmRleCB3MzItdHR5LXZpcnR1YWwtdGVybWluYWwtYmFzZS1jb2xvcnMpKSkKKyAgICAob3Ig KHR0eS1jb2xvci0yNGJpdCAoY2RkciBjb2xvcikpIGluZGV4KSkpCisKKyhkZWZ1biB3MzJjb24t ZGVmaW5lLTI1Ni1jb2xvcnMgKCkKKyAgIkRlZmluZXMgMjU2LWNvbG9yIHNwYWNlIGZvciB3MzIg Y29uc29sZS4iCisgIChsZXQgKChyIDApIChiIDApIChnIDApCisgICAgICAgIChuICgtIDI1NiAo dzMyY29uLWRlZmluZS1iYXNlLWNvbG9ycykpKQorICAgICAgICAoY29udmVydC10by0xNmJpdCAo bGFtYmRhIChwcmltKSAobG9naW9yIHByaW0gKGFzaCBwcmltIDgpKSkpKQorICAgICh3aGlsZSAo PiBuIDI0KSA7IG5vbi1ncmV5CisgICAgICAobGV0ICgoaSAoLSAyNTYgbikpCisgICAgICAgICAg ICAoYyAobWFwY2FyIGNvbnZlcnQtdG8tMTZiaXQKKyAgICAgICAgICAgICAgICAgICAgICAgKG1h cGNhciAobGFtYmRhICh4KSAoaWYgKHplcm9wIHgpIDAgKCsgKCogeCA0MCkgNTUpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCByIGcgYikpKSkpCisgICAgICAgICh0dHkt Y29sb3ItZGVmaW5lIChmb3JtYXQgImNvbG9yLSVkIiBpKSBpIGMpKQorICAgICAgKHNldHEgYiAo MSsgYikpCisgICAgICAod2hlbiAoPiBiIDUpIChzZXRxIGcgKDErIGcpIGIgMCkpCisgICAgICAo d2hlbiAoPiBnIDUpIChzZXRxIHIgKDErIHIpIGcgMCkpCisgICAgICAoc2V0cSBuICgxLSBuKSkp CisgICAgKHdoaWxlICg+IG4gMCkgOyBhbGwtZ3JleQorICAgICAgKGxldCogKChpICgtIDI1NiBu KSkKKyAgICAgICAgICAgICAodiAoZnVuY2FsbCBjb252ZXJ0LXRvLTE2Yml0ICgrIDggKCogKC0g MjQgbikgMTApKSkpCisgICAgICAgICAgICAgKGMgKGxpc3QgdiB2IHYpKSkKKyAgICAgICAgKHR0 eS1jb2xvci1kZWZpbmUgKGZvcm1hdCAiY29sb3ItJWQiIGkpIGkgYykpCisgICAgICAoc2V0cSBu ICgxLSBuKSkpKSkKKworKGRlZnVuIHczMmNvbi1kZWZpbmUtMjRiaXQtY29sb3JzICgpCisgICJE ZWZpbmVzIDI0LWJpdCBjb2xvciBzcGFjZSBmb3IgdzMyIGNvbnNvbGUuIgorICAobGV0ICgoaSAo dzMyY29uLWRlZmluZS1iYXNlLWNvbG9ycykpKQorICAgIChtYXBjIChsYW1iZGEgKGMpICh1bmxl c3MgKGFzc29jIChjYXIgYykgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMpCisgICAgICAgICAgICAg ICAgICAgKHR0eS1jb2xvci1kZWZpbmUgKGNhciBjKSBpIChjZHIgYykpCisgICAgICAgICAgICAg ICAgICAgKHNldHEgaSAoMSsgaSkpKSkKKyAgICAgICAgICBjb2xvci1uYW1lLXJnYi1hbGlzdCkp KQorCiAoZGVmdW4gdGVybWluYWwtaW5pdC13MzJjb25zb2xlICgpCiAgICJUZXJtaW5hbCBpbml0 aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgdzMyIGNvbnNvbGUuIgogICA7OyBTaGFyZSBmdW5jdGlv biBrZXkgaW5pdGlhbGl6YXRpb24gd2l0aCB3MzIgZ3VpIGZyYW1lcwogICAoeC1zZXR1cC1mdW5j dGlvbi1rZXlzIChzZWxlY3RlZC1mcmFtZSkpCiAgIDs7IFNldCB0ZXJtaW5hbCBhbmQga2V5Ym9h cmQgZW5jb2RpbmdzIHRvIHRoZSBjdXJyZW50IE9FTSBjb2RlcGFnZS4KICAgKGxldCAoKG9lbS1j b2RlLXBhZ2UtY29kaW5nCi0JIChpbnRlcm4gKGZvcm1hdCAiY3AlZCIgKHczMi1nZXQtY29uc29s ZS1jb2RlcGFnZSkpKSkKLQkob2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nCi0JIChpbnRlcm4g KGZvcm1hdCAiY3AlZCIgKHczMi1nZXQtY29uc29sZS1vdXRwdXQtY29kZXBhZ2UpKSkpCi0Jb2Vt LWNzLXAgb2VtLW8tY3MtcCkKLQkoc2V0cSBvZW0tY3MtcCAoY29kaW5nLXN5c3RlbS1wIG9lbS1j b2RlLXBhZ2UtY29kaW5nKSkKLQkoc2V0cSBvZW0tby1jcy1wIChjb2Rpbmctc3lzdGVtLXAgb2Vt LWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nKSkKLQkod2hlbiBvZW0tY3MtcAotCSAgKHNldC1rZXli b2FyZC1jb2Rpbmctc3lzdGVtIG9lbS1jb2RlLXBhZ2UtY29kaW5nKQotCSAgKHNldC10ZXJtaW5h bC1jb2Rpbmctc3lzdGVtCi0JICAgKGlmIG9lbS1vLWNzLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQt Y29kaW5nIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKLSAgICAgICAgICA7OyBTaW5jZSB3ZSBjaGFu Z2VkIHRoZSB0ZXJtaW5hbCBlbmNvZGluZywgd2UgbmVlZCB0byByZXBlYXQKLSAgICAgICAgICA7 OyB0aGUgdGVzdCBmb3IgVW5pY29kZSBxdW90ZXMgYmVpbmcgZGlzcGxheWFibGUuCi0gICAgICAg ICAgKHN0YXJ0dXAtLXNldHVwLXF1b3RlLWRpc3BsYXkpKSkKLSAgKGxldCogKChjb2xvcnMgdzMy LXR0eS1zdGFuZGFyZC1jb2xvcnMpCi0gICAgICAgICAoY29sb3IgKGNhciBjb2xvcnMpKSkKLSAg ICAodHR5LWNvbG9yLWNsZWFyKQotICAgICh3aGlsZSBjb2xvcnMKLSAgICAgICh0dHktY29sb3It ZGVmaW5lIChjYXIgY29sb3IpIChjYWRyIGNvbG9yKSAoY2RkciBjb2xvcikpCi0gICAgICAoc2V0 cSBjb2xvcnMgKGNkciBjb2xvcnMpCi0gICAgICAgICAgICBjb2xvciAoY2FyIGNvbG9ycykpKSkK LSAgKGNsZWFyLWZhY2UtY2FjaGUpCi0gIDs7IEZpZ3VyZSBvdXQgd2hhdCBhcmUgdGhlIGNvbG9y cyBvZiB0aGUgY29uc29sZSB3aW5kb3csIGFuZCBzZXQgdXAKLSAgOzsgdGhlIGJhY2tncm91bmQt bW9kZSBjb3JyZXNwb25kaW5nbHkuCi0gIChsZXQqICgoc2NyZWVuLWNvbG9yIChnZXQtc2NyZWVu LWNvbG9yKSkKLQkgKGJnIChjYWRyIHNjcmVlbi1jb2xvcikpCi0JIChkZXNjciAodHR5LWNvbG9y LWJ5LWluZGV4IGJnKSkKLQkgciBnIGIgYmctbW9kZSkKLSAgICAoc2V0cSByIChudGggMiBkZXNj cikKLQkgIGcgKG50aCAzIGRlc2NyKQotCSAgYiAobnRoIDQgZGVzY3IpKQotICAgIChpZiAoPCAo KyByIGcgYikgKCogLjYgKCsgNjU1MzUgNjU1MzUgNjU1MzUpKSkKLQkoc2V0cSBiZy1tb2RlICdk YXJrKQotICAgICAgKHNldHEgYmctbW9kZSAnbGlnaHQpKQotICAgIChzZXQtdGVybWluYWwtcGFy YW1ldGVyIG5pbCAnYmFja2dyb3VuZC1tb2RlIGJnLW1vZGUpKQotICAodHR5LXNldC11cC1pbml0 aWFsLWZyYW1lLWZhY2VzKQorICAgICAgICAgKGludGVybiAoZm9ybWF0ICJjcCVkIiAodzMyLWdl dC1jb25zb2xlLWNvZGVwYWdlKSkpKQorICAgICAgICAob2VtLWNvZGUtcGFnZS1vdXRwdXQtY29k aW5nCisgICAgICAgICAoaW50ZXJuIChmb3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtb3V0 cHV0LWNvZGVwYWdlKSkpKQorICAgICAgICBvZW0tY3MtcCBvZW0tby1jcy1wKQorICAgIChzZXRx IG9lbS1jcy1wIChjb2Rpbmctc3lzdGVtLXAgb2VtLWNvZGUtcGFnZS1jb2RpbmcpKQorICAgIChz ZXRxIG9lbS1vLWNzLXAgKGNvZGluZy1zeXN0ZW0tcCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2Rp bmcpKQorICAgICh3aGVuIG9lbS1jcy1wCisgICAgICAoc2V0LWtleWJvYXJkLWNvZGluZy1zeXN0 ZW0gb2VtLWNvZGUtcGFnZS1jb2RpbmcpCisgICAgICAoc2V0LXRlcm1pbmFsLWNvZGluZy1zeXN0 ZW0KKyAgICAgICAoaWYgb2VtLW8tY3MtcCBvZW0tY29kZS1wYWdlLW91dHB1dC1jb2Rpbmcgb2Vt LWNvZGUtcGFnZS1jb2RpbmcpKQorICAgICAgOzsgU2luY2Ugd2UgY2hhbmdlZCB0aGUgdGVybWlu YWwgZW5jb2RpbmcsIHdlIG5lZWQgdG8gcmVwZWF0CisgICAgICA7OyB0aGUgdGVzdCBmb3IgVW5p Y29kZSBxdW90ZXMgYmVpbmcgZGlzcGxheWFibGUuCisgICAgICAoc3RhcnR1cC0tc2V0dXAtcXVv dGUtZGlzcGxheSkpKQorICAodzMyY29uLXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzKQogICAo cnVuLWhvb2tzICd0ZXJtaW5hbC1pbml0LXczMi1ob29rKSkKIAorKGRlZnVuIHczMmNvbi1zZXQt dXAtaW5pdGlhbC1mcmFtZS1mYWNlcyAoKQorICAiU2V0IHVwIGluaXRpYWwgZmFjZSBjb2xvciBz Y2hlbWUgZHluYW1pY2FsbHkgYmFzZWQgb24gdGhlIG51bWJlciBvZgorZGlzcGxheSBjb2xvcnMg YW5kIHRoZSB2YWx1ZSBvZiBgdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcycuIgor ICAodHR5LWNvbG9yLWNsZWFyKQorICAobGV0ICgobmNvbG9ycyAoZGlzcGxheS1jb2xvci1jZWxs cykpKQorICAgIChpZiB3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzCisgICAgICAg IChjb25kICgoPSBuY29sb3JzIDE2Nzc3MjE2KSAodzMyY29uLWRlZmluZS0yNGJpdC1jb2xvcnMp KQorICAgICAgICAgICAgICAoKD0gbmNvbG9ycyAyNjUgICAgICAgKHczMmNvbi1kZWZpbmUtMjU2 LWNvbG9ycykpKQorICAgICAgICAgICAgICAodCAgICAgICAgICAgICAgICAgICAgKHczMmNvbi1k ZWZpbmUtYmFzZS1jb2xvcnMpKSkKKyAgICAgICh3MzJjb24tZGVmaW5lLWJhc2UtY29sb3JzKSkK KyAgICAoY2xlYXItZmFjZS1jYWNoZSkKKyAgICA7OyBGaWd1cmUgb3V0IHdoYXQgYXJlIHRoZSBj b2xvcnMgb2YgdGhlIGNvbnNvbGUgd2luZG93LCBhbmQgc2V0IHVwCisgICAgOzsgdGhlIGJhY2tn cm91bmQtbW9kZSBjb3JyZXNwb25kaW5nbHkuCisgICAgKGxldCogKChzY3JlZW4tY29sb3IgKGdl dC1zY3JlZW4tY29sb3IpKQorICAgICAgICAgICAoYmFzZS1pbmRleCAoY2FkciBzY3JlZW4tY29s b3IpKQorICAgICAgICAgICAoYmctcGl4ZWwgKHczMmNvbi1nZXQtcGl4ZWwgYmFzZS1pbmRleCkp CisgICAgICAgICAgIChiZyAoaWYgKD0gbmNvbG9ycyAxNjc3NzIxNikgYmctcGl4ZWwgYmFzZS1p bmRleCkpCisgICAgICAgICAgIChkZXNjciAodHR5LWNvbG9yLWJ5LWluZGV4IGJnKSkKKyAgICAg ICAgICAgciBnIGIgYmctbW9kZSkKKyAgICAgIChzZXRxIHIgKG50aCAyIGRlc2NyKQorICAgICAg ICAgICAgZyAobnRoIDMgZGVzY3IpCisgICAgICAgICAgICBiIChudGggNCBkZXNjcikpCisgICAg ICAoaWYgKDwgKCsgciBnIGIpICgqIC42ICgrIDY1NTM1IDY1NTM1IDY1NTM1KSkpCisgICAgICAg ICAgKHNldHEgYmctbW9kZSAnZGFyaykKKyAgICAgICAgKHNldHEgYmctbW9kZSAnbGlnaHQpKQor ICAgICAgKHNldC10ZXJtaW5hbC1wYXJhbWV0ZXIgbmlsICdiYWNrZ3JvdW5kLW1vZGUgYmctbW9k ZSkpKQorICAodHR5LXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzKSkKKwogKHByb3ZpZGUgJ3Rl cm0vdzMyY29uc29sZSkKIAogOzs7IHczMmNvbnNvbGUuZWwgZW5kcyBoZXJlCmRpZmYgLS1naXQg YS9zcmMvdGVybS5jIGIvc3JjL3Rlcm0uYwppbmRleCBhMWUzZjYzMTJjNi4uNmMzMTE2ZjdmY2Ug MTAwNjQ0Ci0tLSBhL3NyYy90ZXJtLmMKKysrIGIvc3JjL3Rlcm0uYwpAQCAtNzMsNyArNzMsNiBA QCBzdGF0aWMgdm9pZCBjbGVhcl90dHlfaG9va3MgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybWluYWwp Owogc3RhdGljIHZvaWQgc2V0X3R0eV9ob29rcyAoc3RydWN0IHRlcm1pbmFsICp0ZXJtaW5hbCk7 CiBzdGF0aWMgdm9pZCBkaXNzb2NpYXRlX2lmX2NvbnRyb2xsaW5nX3R0eSAoaW50IGZkKTsKIHN0 YXRpYyB2b2lkIGRlbGV0ZV90dHkgKHN0cnVjdCB0ZXJtaW5hbCAqKTsKLQogI2VuZGlmIC8qICFI QVZFX0FORFJPSUQgKi8KIAogc3RhdGljIEFWT0lEIG1heWJlX2ZhdGFsIChib29sLCBzdHJ1Y3Qg dGVybWluYWwgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosCkBAIC0zNDYsMTAgKzM0NSwx MCBAQCB0dHlfaGlkZV9jdXJzb3IgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHkpCiB7CiAg IGlmICh0dHktPmN1cnNvcl9oaWRkZW4gPT0gMCkKICAgICB7Ci0gICAgICB0dHktPmN1cnNvcl9o aWRkZW4gPSAxOwogI2lmZGVmIFdJTkRPV1NOVAogICAgICAgdzMyY29uX2hpZGVfY3Vyc29yICgp OwogI2Vsc2UKKyAgICAgIHR0eS0+Y3Vyc29yX2hpZGRlbiA9IDE7CiAgICAgICBPVVRQVVRfSUYg KHR0eSwgdHR5LT5UU19jdXJzb3JfaW52aXNpYmxlKTsKICNlbmRpZgogICAgIH0KQEAgLTM2Mywx MCArMzYyLDEwIEBAIHR0eV9zaG93X2N1cnNvciAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0 eSkKIHsKICAgaWYgKHR0eS0+Y3Vyc29yX2hpZGRlbikKICAgICB7Ci0gICAgICB0dHktPmN1cnNv cl9oaWRkZW4gPSAwOwogI2lmZGVmIFdJTkRPV1NOVAogICAgICAgdzMyY29uX3Nob3dfY3Vyc29y ICgpOwogI2Vsc2UKKyAgICAgIHR0eS0+Y3Vyc29yX2hpZGRlbiA9IDA7CiAgICAgICBPVVRQVVRf SUYgKHR0eSwgdHR5LT5UU19jdXJzb3Jfbm9ybWFsKTsKICAgICAgIGlmICh2aXNpYmxlX2N1cnNv cikKICAgICAgICAgT1VUUFVUX0lGICh0dHksIHR0eS0+VFNfY3Vyc29yX3Zpc2libGUpOwpAQCAt MjIwNyw3ICsyMjA2LDcgQEAgVEVSTUlOQUwgZG9lcyBub3QgcmVmZXIgdG8gYSB0ZXh0IHRlcm1p bmFsLiAgKi8pCiAgIHJldHVybiBtYWtlX2ZpeG51bSAodCA/IHQtPmRpc3BsYXlfaW5mby50dHkt PlROX21heF9jb2xvcnMgOiAwKTsKIH0KIAotI2lmICFkZWZpbmVkIERPU19OVCAmJiAhZGVmaW5l ZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVmaW5lZCBNU0RPUyAmJiAhZGVmaW5lZCBIQVZFX0FORFJP SUQKIAogLyogRGVjbGFyZSBoZXJlIHJhdGhlciB0aGFuIGluIHRoZSBmdW5jdGlvbiwgYXMgaW4g dGhlIHJlc3Qgb2YgRW1hY3MsCiAgICB0byB3b3JrIGFyb3VuZCBhbiBIUFVYIGNvbXBpbGVyIGJ1 ZyAoPykuIFNlZQpAQCAtMjI0Niw3ICsyMjQ1LDcgQEAgdHR5X2RlZmF1bHRfY29sb3JfY2FwYWJp bGl0aWVzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBib29sIHNhdmUpCiAgICBNT0RF J3MgdmFsdWUgaXMgZ2VuZXJhbGx5IHRoZSBudW1iZXIgb2YgY29sb3JzIHdoaWNoIHdlIHdhbnQg dG8KICAgIHN1cHBvcnQ7IHplcm8gbWVhbnMgc2V0IHVwIGZvciB0aGUgZGVmYXVsdCBjYXBhYmls aXRpZXMsIHRoZSBvbmVzCiAgICB3ZSBzYXcgYXQgaW5pdF90dHkgdGltZTsgLTEgbWVhbnMgdHVy biBvZmYgY29sb3Igc3VwcG9ydC4gICovCi1zdGF0aWMgdm9pZAordm9pZAogdHR5X3NldHVwX2Nv bG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgaW50IG1vZGUpCiB7CiAgIC8qIENh bm9uaWNhbGl6ZSBhbGwgbmVnYXRpdmUgdmFsdWVzIG9mIE1PREUuICAqLwpAQCAtMjI2NCwxOCAr MjI2Myw0MiBAQCB0dHlfc2V0dXBfY29sb3JzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5 LCBpbnQgbW9kZSkKICAgICAgIGRlZmF1bHQ6CiAJdHR5X2RlZmF1bHRfY29sb3JfY2FwYWJpbGl0 aWVzICh0dHksIDApOwogCWJyZWFrOwotICAgICAgY2FzZSA4OgkvKiA4IHN0YW5kYXJkIEFOU0kg Y29sb3JzICovCi0JdHR5LT5UU19vcmlnX3BhaXIgPSAiXDAzM1swbSI7CisgICAgICBjYXNlIDg6 IC8qIDggc3RhbmRhcmQgQU5TSSBjb2xvcnMgKi8KKwl0dHktPlRTX29yaWdfcGFpciA9ICJceDFi WzBtIjsKKwl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbMyVkbSI7CisJdHR5LT5UU19z ZXRfYmFja2dyb3VuZCA9ICJceDFiWzQlZG0iOwogI2lmZGVmIFRFUk1JTkZPCi0JdHR5LT5UU19z ZXRfZm9yZWdyb3VuZCA9ICJcMDMzWzMlcDElZG0iOwotCXR0eS0+VFNfc2V0X2JhY2tncm91bmQg PSAiXDAzM1s0JXAxJWRtIjsKLSNlbHNlCi0JdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJcMDMz WzMlZG0iOwotCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXDAzM1s0JWRtIjsKKwl0dHktPlRT X3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbMyVwMSVkbSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3Vu ZCA9ICJceDFiWzQlcDElZG0iOworI2VuZGlmCisjaWZkZWYgV0lORE9XU05UCisJdHR5LT5UU19v cmlnX3BhaXIgPSAiXHgxYlszOW1ceDFiWzQ5bSI7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9 ICJceDFiWyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYlslbHVtIjsKICNl bmRpZgogCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDg7CiAJdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9 IDA7CiAJYnJlYWs7CisjaWZkZWYgV0lORE9XU05UCisgICAgICBjYXNlIDE2OgorCXR0eS0+VFNf c2V0X2ZvcmVncm91bmQgPSAiXHgxYlslbHVtIjsKKwl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0g Ilx4MWJbJWx1bSI7CisJdHR5LT5UTl9tYXhfY29sb3JzID0gMTY7CisJdHR5LT5UTl9ub19jb2xv cl92aWRlbyA9IDA7CisJYnJlYWs7CisgICAgICBjYXNlIDI1NjoKKwl0dHktPlROX21heF9jb2xv cnMgPSAyNTY7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzM4OzU7JWx1bSI7CisJ dHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQ4OzU7JWx1bSI7CisJdHR5LT5UTl9ub19j b2xvcl92aWRlbyA9IDA7CisJYnJlYWs7CisgICAgICBjYXNlIDE2Nzc3MjE2OgorCXR0eS0+VE5f bWF4X2NvbG9ycyA9IDE2Nzc3MjE2OworCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlsz ODsyOyVsdTslbHU7JWx1bSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJceDFiWzQ4OzI7 JWx1OyVsdTslbHVtIjsKKwl0dHktPlROX25vX2NvbG9yX3ZpZGVvID0gMDsKKwlicmVhazsKKyNl bmRpZgogICAgIH0KIH0KIApAQCAtMjMwNywxMiArMjMzMCwxNiBAQCBzZXRfdHR5X2NvbG9yX21v ZGUgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIHN0cnVjdCBmcmFtZSAqZikKICAgICB7 CiAgICAgICB0dHktPnByZXZpb3VzX2NvbG9yX21vZGUgPSBtb2RlOwogICAgICAgdHR5X3NldHVw X2NvbG9ycyAodHR5ICwgbW9kZSk7Ci0gICAgICAvKiAgVGhpcyByZWNvbXB1dGVzIGFsbCB0aGUg ZmFjZXMgZ2l2ZW4gdGhlIG5ldyBjb2xvciBkZWZpbml0aW9ucy4gICovCisgICAgICAvKiAgVGhp cyByZWNvbXB1dGVzIGFsbCB0aGUgZmFjZXMgZ2l2ZW4gdGhlIG5ldyBjb2xvciBkZWZpbml0aW9u cy4gKi8KKyNpZmRlZiBXSU5ET1dTTlQKKyAgICAgIHNhZmVfY2FsbG4gKFF3MzJjb25fc2V0X3Vw X2luaXRpYWxfZnJhbWVfZmFjZXMpOworI2Vsc2UKICAgICAgIHNhZmVfY2FsbG4gKFF0dHlfc2V0 X3VwX2luaXRpYWxfZnJhbWVfZmFjZXMpOworI2VuZGlmCiAgICAgfQogfQogCi0jZW5kaWYgLyog IURPU19OVCAmJiAhSEFWRV9BTkRST0lEICovCisjZW5kaWYgLyogIU1TRE9TICYmICFIQVZFX0FO RFJPSUQgKi8KIAogY2hhciAqCiB0dHlfdHlwZV9uYW1lIChMaXNwX09iamVjdCB0ZXJtaW5hbCkK QEAgLTQ1ODYsOCArNDYxMyw4IEBAIHVzZSB0aGUgQm91cm5lIHNoZWxsIGNvbW1hbmQgJ1RFUk09 Li4uOyBleHBvcnQgVEVSTScgKEMtc2hlbGw6XG5cCiAJCSB8fCAoKGJnID0gZ2V0ZW52ICgiQ09M T1JURVJNIikpICE9IE5VTEwKIAkJICAgICAmJiBzdHJjYXNlY21wIChiZywgInRydWVjb2xvciIp ID09IDApKQogCSAgewotCSAgICB0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlwwMzNbJT8lcDEl ezh9JTwldDMlcDElZCVlMzg7MjslcDElezY1NTM2fSUvJWQ7JXAxJXsyNTZ9JS8lezI1NX0lJiVk OyVwMSV7MjU1fSUmJWQlO20iOwotCSAgICB0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlwwMzNb JT8lcDElezh9JTwldDQlcDElZCVlNDg7MjslcDElezY1NTM2fSUvJWQ7JXAxJXsyNTZ9JS8lezI1 NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20iOworCSAgICB0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0g Ilx4MWJbJT8lcDElezh9JTwldDMlcDElZCVlMzg7MjslcDElezY1NTM2fSUvJWQ7JXAxJXsyNTZ9 JS8lezI1NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20iOworCSAgICB0dHktPlRTX3NldF9iYWNrZ3Jv dW5kID0gIlx4MWJbJT8lcDElezh9JTwldDQlcDElZCVlNDg7MjslcDElezY1NTM2fSUvJWQ7JXAx JXsyNTZ9JS8lezI1NX0lJiVkOyVwMSV7MjU1fSUmJWQlO20iOwogCSAgICB0dHktPlROX21heF9j b2xvcnMgPSAxNjc3NzIxNjsKIAkgIH0KICAgICAgIH0KQEAgLTQ2NDEsNiArNDY2OCwyNyBAQCB1 c2UgdGhlIEJvdXJuZSBzaGVsbCBjb21tYW5kICdURVJNPS4uLjsgZXhwb3J0IFRFUk0nIChDLXNo ZWxsOlxuXAogCiAgICAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAodGVybWluYWwsICZ3aWR0aCwg JmhlaWdodCk7CiAKKyAgICAvKiAyNGJpdCBSR0Igc3VwcG9ydCBpbiBXaW5kb3dzICgxMCspIFRl cm1pbmFsIGFuZCBDb25zb2xlIEhvc3QKKyAgICAgICBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5j b20vZW4tdXMvd2luZG93cy9jb25zb2xlL2NvbnNvbGUtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5j ZXMgKi8KKyAgICB0dHktPlROX25vX2NvbG9yX3ZpZGVvID0gMDsKKyAgICB0dHktPlROX21heF9j b2xvcnMgPSAxNjc3NzIxNjsKKyAgICB0dHktPlRTX29yaWdfcGFpciA9ICJceDFiWzM5bVx4MWJb NDltIjsKKyAgICB0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbMzg7MjslbHU7JWx1OyVs dW0iOworICAgIHR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0ODsyOyVsdTslbHU7JWx1 bSI7CisKKyAgICAvKiBTYXZlIGRlZmF1bHQgY29sb3IgY2FwYWJpbGl0aWVzICovCisgICAgdHR5 X2RlZmF1bHRfY29sb3JfY2FwYWJpbGl0aWVzICh0dHksIDEpOworCisgICAgdHR5LT5UU19lbnRl cl9ib2xkX21vZGUgPSAiXHgxYlsxbSI7CisgICAgdHR5LT5UU19lbnRlcl9pdGFsaWNfbW9kZSA9 ICJceDFiWzNtIjsKKyAgICB0dHktPlRTX2VudGVyX3N0cmlrZV90aHJvdWdoX21vZGUgPSAiXHgx Yls5bSI7CisgICAgdHR5LT5UU19lbnRlcl91bmRlcmxpbmVfbW9kZSA9ICJceDFiWzRtIjsKKyAg ICB0dHktPlRTX2V4aXRfdW5kZXJsaW5lX21vZGUgPSAiXHgxYlsyNG0iOworICAgIHR0eS0+VFNf ZW50ZXJfcmV2ZXJzZV9tb2RlID0gIlx4MWJbN20iOworICAgIHR0eS0+VFNfZXhpdF9hdHRyaWJ1 dGVfbW9kZSA9ICJceDFiWzBtIjsKKyAgICB0dHktPlRTX2N1cnNvcl9pbnZpc2libGUgPSAiXHgx Yls/MjVsIjsKKyAgICB0dHktPlRTX2N1cnNvcl92aXNpYmxlID0gIlx4MWJbPzI1aCI7CisKICAg ICBGcmFtZVJvd3MgKHR0eSkgPSBoZWlnaHQ7CiAgICAgRnJhbWVDb2xzICh0dHkpID0gd2lkdGg7 CiAgICAgdHR5LT5zcGVjaWZpZWRfd2luZG93ID0gaGVpZ2h0OwpAQCAtNDY4Niw3ICs0NzM0LDYg QEAgdXNlIHRoZSBCb3VybmUgc2hlbGwgY29tbWFuZCAnVEVSTT0uLi47IGV4cG9ydCBURVJNJyAo Qy1zaGVsbDpcblwKICAgICAgZG9uJ3QgdGhpbmsgd2UncmUgbG9zaW5nIGFueXRoaW5nIGJ5IHR1 cm5pbmcgaXQgb2ZmLiAgKi8KICAgdHR5LT5saW5lX2luc19kZWxfb2sgPSAwOwogCi0gIHR0eS0+ VE5fbWF4X2NvbG9ycyA9IDE2OyAgLyogTXVzdCBiZSBub24temVybyBmb3IgdHR5LWRpc3BsYXkt Y29sb3ItcC4gICovCiAjZW5kaWYJLyogRE9TX05UICovCiAKICNpZmRlZiBIQVZFX0dQTQpAQCAt NTIwMiwxMSArNTI0OSwxMSBAQCBub24tbmlsIHRvIGVuYWJsZSB0aGlzIG9wdGltaXphdGlvbi4g ICovKTsKICAgZGVmc3ViciAoJlN0dHlfZGlzcGxheV9waXhlbF93aWR0aCk7CiAgIGRlZnN1YnIg KCZTdHR5X2Rpc3BsYXlfcGl4ZWxfaGVpZ2h0KTsKIAotI2lmICFkZWZpbmVkIERPU19OVCAmJiAh ZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNpZiAhZGVmaW5lZCBNU0RPUyAmJiAhZGVmaW5lZCBIQVZF X0FORFJPSUQKICAgZGVmYXVsdF9vcmlnX3BhaXIgPSBOVUxMOwogICBkZWZhdWx0X3NldF9mb3Jl Z3JvdW5kID0gTlVMTDsKICAgZGVmYXVsdF9zZXRfYmFja2dyb3VuZCA9IE5VTEw7Ci0jZW5kaWYg LyogIURPU19OVCAmJiAhSEFWRV9BTkRST0lEICovCisjZW5kaWYgLyogIU1TRE9TICYmICFIQVZF X0FORFJPSUQgKi8KIAogI2lmbmRlZiBIQVZFX0FORFJPSUQKICAgZW5jb2RlX3Rlcm1pbmFsX3Ny YyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvdGVybWNoYXIuaCBiL3NyYy90ZXJtY2hhci5oCmlu ZGV4IGVjZTNhNjc2YzZlLi4xM2FkMmYwYTcyYSAxMDA2NDQKLS0tIGEvc3JjL3Rlcm1jaGFyLmgK KysrIGIvc3JjL3Rlcm1jaGFyLmgKQEAgLTI0OSw0ICsyNDksNiBAQCBzdHJ1Y3QgaW5wdXRfZXZl bnQ7CiBleHRlcm4gTGlzcF9PYmplY3QgdHR5X2hhbmRsZV90YWJfYmFyX2NsaWNrIChzdHJ1Y3Qg ZnJhbWUgKiwgaW50LCBpbnQsIGJvb2wsCiAJCQkJCSAgICAgc3RydWN0IGlucHV0X2V2ZW50ICop OwogCitleHRlcm4gdm9pZCB0dHlfc2V0dXBfY29sb3JzIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5m byAqdHR5LCBpbnQgbW9kZSk7CisKICNlbmRpZiAvKiBFTUFDU19URVJNQ0hBUl9IICovCmRpZmYg LS1naXQgYS9zcmMvdzMyY29uc29sZS5jIGIvc3JjL3czMmNvbnNvbGUuYwppbmRleCAxYmNhMGNh ZGZmOS4uMjJmMzg4YTQxNmIgMTAwNjQ0Ci0tLSBhL3NyYy93MzJjb25zb2xlLmMKKysrIGIvc3Jj L3czMmNvbnNvbGUuYwpAQCAtMTksMTIgKzE5LDYyIEBAIGFsb25nIHdpdGggR05VIEVtYWNzLiAg SWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAvKgogICAg VGltIEZsZWVoYXJ0IChhcG9sbG9Ab25saW5lLmNvbSkJCTEtMTctOTIKICAgIEdlb2ZmIFZvZWxr ZXIgKHZvZWxrZXJAY3Mud2FzaGluZ3Rvbi5lZHUpCTktMTItOTMKKyAgIEV3YW4gVG93bnNoZW5k IChld2FuQGV0b3duLmRldikgICAgICAgICAgICAgIDIwMjUtMDgKKworICAgYy4gfiAyMDI1Ogor ICAgKiAyNGJpdCBSR0Igc3VwcG9ydCBpbiBXaW5kb3dzICgxMCspIFRlcm1pbmFsCisgICAqIE1p Y3Jvc29mdCBtb3ZpbmcgYXdheSBmcm9tIGlkaW9zeW5jcmF0aWMgQVBJLCB0b3dhcmQgQVNDSUkg Y29udHJvbHMKKworICAgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mv Y29uc29sZS9jb25zb2xlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzCisKKyAgIEZvciByZWZl cmVuY2UgKG1vcmUgZGVmaW5lZCBhdCBsaW5rIGFib3ZlKToKKworICAgKiAiY2xlYXIiIDo9IG92 ZXJ3cml0ZSB3aXRoIHNwYWNlIGNoYXJhY3RlcgorCisgICBceDFiWzBKID0+IGNsZWFyIGN1cnNv ciAoaW5jbHVzaXZlKSB0byBlbmQgb2Ygc2NyZWVuCisgICBceDFiWzFKID0+IGNsZWFyIGJlZ2lu bmluZyBvZiBzY3JlZW4gdG8gY3Vyc29yIChpbmNsdXNpdmUpCisgICBceDFiWzJKID0+IGNsZWFy IGVudGlyZSBzY3JlZW4gKGV4Y2x1ZGluZyBzY3JvbGxiYWNrIGFyZWEpCisgICBceDFiWzNKID0+ IGNsZWFyIHNjcm9sbGJhY2sgYXJlYQorCisgICBceDFiWzBLID0+IGNsZWFyIGN1cnNvciAoaW5j bHVzaXZlKSB0byBlbmQgb2YgbGluZQorICAgXHgxYlsxSyA9PiBjbGVhciBiZWdpbm5pbmcgb2Yg bGluZSB0byBjdXJzb3IgKGluY2x1c2l2ZSkKKyAgIFx4MWJbMksgPT4gY2xlYXIgZW50aXJlIGxp bmUKKworICAgXHgxYls8bj5AID0+IGluc2VydCA8bj4gc3BhY2VzIGF0IGN1cnNvciwgc2hpZnQg Y3VycmVudCB0ZXh0IHJpZ2h0CisgICBceDFiWzxuPlAgPT4gZGVsZXRlIDxuPiBjaGFycyAgYXQg Y3Vyc29yLCBhZGRpbmcgc3BhY2VzIGZyb20gcmlnaHQKKworICAgXHgxYls3ICAgICAgICA9PiBz YXZlIGN1cnNvciBwb3NpdGlvbgorICAgXHgxYls4ICAgICAgICA9PiByZXN0b3JlIHNhdmVkIGN1 cnNvciBwb3NpdGlvbgorICAgXHgxYls8eT47PHg+SCA9PiBtb3ZlIGN1cnNvciB0byByb3cgPHk+ LCBjb2wgPHg+ICgxLWluZGV4ZWQpCisgICBceDFiWz8yNWwgICAgID0+IGhpZGUgY3Vyc29yCisg ICBceDFiWz8yNWggICAgID0+IHNob3cgY3Vyc29yCisKKyAgIFx4MWJbMG0gPT4gYWxsIGF0dHJp YnV0ZXMgb2ZmCisgICBceDFiWzFtID0+IGJvbGQKKyAgIFx4MWJbM20gPT4gaXRhbGljCisgICBc eDFiWzRtID0+IHVuZGVybGluZQorICAgXHgxYls3bSA9PiBpbnZlcnNlIHZpZGVvCisgICBceDFi WzltID0+IHN0cmlrZS10aHJvdWdoCisKKyAgICogMTYgYmFzZSBjb2xvcnMgZGVmaW5lZCBpbiB3 MzJjb25zb2xlLmVsCisgICBceDFiWzM8aT4gICg8aT4gaW4gMC4uNykgPT4gZm9yZWdyb3VuZCA9 IDE2Y29sb3JzW2ldCisgICBceDFiWzQ8aT4gICg8aT4gaW4gMC4uNykgPT4gYmFja2dyb3VuZCA9 IDE2Y29sb3JzW2ldCisgICBceDFiWzk8aT4gICg8aT4gaW4gMC4uNykgPT4gZm9yZWdyb3VuZCA9 IDE2Y29sb3JzW2kgKyA4XQorICAgXHgxYlsxMDxpPiAoPGk+IGluIDAuLjcpID0+IGJhY2tncm91 bmQgPSAxNmNvbG9yc1tpICsgOF0KKworICAgKiAyNTYgY29sb3JzIGZvbGxvdyB4dGVybQorICAg XHgxYlszODxpPiAoPGk+IGluIDAuLjI1NSkgPT4gZm9yZWdyb3VuZCA9IDI1NmNvbG9yc1tpXQor ICAgXHgxYls0ODxpPiAoPGk+IGluIDAuLjI1NSkgPT4gYmFja2dyb3VuZCA9IDI1NmNvbG9yc1tp XQorCisgICAqIDI0LWJpdCBjb3ZlcnMgYWxsIG5hbWVkIGNvbG9ycyAoc2VlIGNvbG9yLW5hbWUt cmdiLWFsaXN0KQorICAgXHgxYlszODsyOzxyPjs8Zz47PGI+ID0+IGZvcmVncm91bmQgPSAoPHI+ LCA8Zz4sIDxiPikKKyAgIFx4MWJbNDg7Mjs8cj47PGc+OzxiPiA9PiBiYWNrZ3JvdW5kID0gKDxy PiwgPGc+LCA8Yj4pCiAqLwogCiAKICNpbmNsdWRlIDxjb25maWcuaD4KLQogI2luY2x1ZGUgPHN0 ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgogCiAjaW5j bHVkZSAibGlzcC5oIgpAQCAtNDAsNyArOTAsNiBAQCBhbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElm IG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogI2luY2x1ZGUg InczMi5oIgkvKiBmb3Igc3ltc19vZl9udHRlcm0gKi8KICNlbmRpZgogCi1zdGF0aWMgdm9pZCB3 MzJjb25fbW92ZV9jdXJzb3IgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHJvdywgaW50IGNvbCk7CiBz dGF0aWMgdm9pZCB3MzJjb25fY2xlYXJfdG9fZW5kIChzdHJ1Y3QgZnJhbWUgKmYpOwogc3RhdGlj IHZvaWQgdzMyY29uX2NsZWFyX2ZyYW1lIChzdHJ1Y3QgZnJhbWUgKmYpOwogc3RhdGljIHZvaWQg dzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChzdHJ1Y3QgZnJhbWUgKmYsIGludCk7CkBAIC01MSwx MyArMTAwLDMwIEBAIHN0YXRpYyB2b2lkIHczMmNvbl9kZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJh bWUgKmYsIGludCBuKTsKIHN0YXRpYyB2b2lkIHczMmNvbl9yZXNldF90ZXJtaW5hbF9tb2RlcyAo c3RydWN0IHRlcm1pbmFsICp0KTsKIHN0YXRpYyB2b2lkIHczMmNvbl9zZXRfdGVybWluYWxfbW9k ZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCk7CiBzdGF0aWMgdm9pZCB3MzJjb25fdXBkYXRlX2JlZ2lu IChzdHJ1Y3QgZnJhbWUgKiBmKTsKLXN0YXRpYyB2b2lkIHczMmNvbl91cGRhdGVfZW5kIChzdHJ1 Y3QgZnJhbWUgKiBmKTsKK3N0YXRpYyB2b2lkIHczMmNvbl91cGRhdGVfZW5kIChzdHJ1Y3QgZnJh bWUgKmYpOworc3RhdGljIGludCAgdzMyY29uX3dyaXRlX3Z0X3NlcSAoY2hhciAqKTsKIHN0YXRp YyBXT1JEIHczMl9mYWNlX2F0dHJpYnV0ZXMgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGZhY2VfaWQp Oworc3RhdGljIHZvaWQgdHVybl9vbl9mYWNlIChzdHJ1Y3QgZnJhbWUgKiwgaW50IGZhY2VfaWQp Oworc3RhdGljIHZvaWQgdHVybl9vZmZfZmFjZSAoc3RydWN0IGZyYW1lICosIGludCBmYWNlX2lk KTsKK3N0YXRpYyB2b2lkIHczMmNvbl9tb3ZlX2N1cnNvciAoc3RydWN0IGZyYW1lICpmLCBpbnQg cm93LCBpbnQgY29sKTsKK3ZvaWQgdzMyY29uX3NhdmVfY3Vyc29yICh2b2lkKTsKK3ZvaWQgdzMy Y29uX3Jlc3RvcmVfY3Vyc29yICh2b2lkKTsKK3ZvaWQgdzMyY29uX3Nob3dfY3Vyc29yICh2b2lk KTsKK3ZvaWQgdzMyY29uX2hpZGVfY3Vyc29yICh2b2lkKTsKK3ZvaWQgdzMyY29uX2RyYXdfY3Vy c29yIChzdHJ1Y3QgZnJhbWUgKmYpOwogCi1zdGF0aWMgQ09PUkQJY3Vyc29yX2Nvb3JkczsKLXN0 YXRpYyBIQU5ETEUJcHJldl9zY3JlZW4sIGN1cl9zY3JlZW47Ci1zdGF0aWMgV09SRAljaGFyX2F0 dHJfbm9ybWFsOwotc3RhdGljIERXT1JECXByZXZfY29uc29sZV9tb2RlOworc3RhdGljIHVuc2ln bmVkIGxvbmcgZ2V0X3BpeGVsICh1bnNpZ25lZCBsb25nIGluZGV4KTsKKworZXh0ZXJuIHZvaWQg dHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgaW50IG1vZGUp OworCitzdGF0aWMgQ09PUkQgICAgY3Vyc29yX2Nvb3JkczsKK3N0YXRpYyBDT09SRCAgICBzYXZl ZF9jb29yZHM7CitzdGF0aWMgSEFORExFICAgcHJldl9zY3JlZW4sIGN1cl9zY3JlZW47CitzdGF0 aWMgV09SRCAgICAgY2hhcl9hdHRyX25vcm1hbDsKK3N0YXRpYyBXT1JEICAgICBiZ19ub3JtYWw7 CitzdGF0aWMgV09SRCAgICAgZmdfbm9ybWFsOworc3RhdGljIERXT1JEICAgIHByZXZfY29uc29s ZV9tb2RlOworc3RhdGljIGludCAgICAgIHVzaW5nX3N5c3RlbV9jYXJldDsKIAogc3RhdGljIENP TlNPTEVfQ1VSU09SX0lORk8gY29uc29sZV9jdXJzb3JfaW5mbzsKICNpZm5kZWYgVVNFX1NFUEFS QVRFX1NDUkVFTgpAQCAtNjgsMTMgKzEzNCwxNCBAQCBleHRlcm4gSEFORExFICBrZXlib2FyZF9o YW5kbGU7CiBIQU5ETEUgIGtleWJvYXJkX2hhbmRsZTsKIGludCB3MzJfY29uc29sZV91bmljb2Rl X2lucHV0OwogCi0KLS8qIFNldHRpbmcgdGhpcyBhcyB0aGUgY3RybCBoYW5kbGVyIHByZXZlbnRz IGVtYWNzIGZyb20gYmVpbmcga2lsbGVkIHdoZW4KLSAgIHNvbWVvbmUgaGl0cyBeQyBpbiBhICdz dXNwZW5kZWQnIHNlc3Npb24gKGNoaWxkIHNoZWxsKS4KLSAgIEFsc28gaWdub3JlIEN0cmwtQnJl YWsgc2lnbmFscy4gICovCitleHRlcm4gc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJlbnRf dHR5Oworc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5ID0gTlVMTDsKIAogQk9P TCBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyk7CiAKKy8qIFNldHRpbmcgdGhpcyBhcyB0 aGUgY3RybCBoYW5kbGVyIHByZXZlbnRzIGVtYWNzIGZyb20gYmVpbmcga2lsbGVkCisgICB3aGVu IHNvbWVvbmUgaGl0cyBeQyBpbiBhICdzdXNwZW5kZWQnIHNlc3Npb24gKGNoaWxkIHNoZWxsKS4g QWxzbworICAgaWdub3JlIEN0cmwtQnJlYWsgc2lnbmFscy4gICovCiBCT09MCiBjdHJsX2NfaGFu ZGxlciAodW5zaWduZWQgbG9uZyB0eXBlKQogewpAQCAtODMsNiArMTUwLDU1IEBAIGN0cmxfY19o YW5kbGVyICh1bnNpZ25lZCBsb25nIHR5cGUpCiAJICAmJiAodHlwZSA9PSBDVFJMX0NfRVZFTlQg fHwgdHlwZSA9PSBDVFJMX0JSRUFLX0VWRU5UKSk7CiB9CiAKKyNkZWZpbmUgU1NQUklOVEYoYnVm LCBpLCBzeiwgZm10LCAuLi4pCQkJCQlcCisgIGRvIHsJCQkJCQkJCQlcCisgICAgaWYgKGZtdCkJ CQkJCQkJCVwKKyAgICAgICppICs9IHNucHJpbnRmIChidWYgKyAqaSwgc3ogLSAqaSwgZm10LCBf X1ZBX0FSR1NfXyk7CQlcCisgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgREVGQVVMVFAocCkJCQkJ CQkJXAorICAocCA9PSBGQUNFX1RUWV9ERUZBVUxUX0NPTE9SCQkJCQkJXAorICAgfHwgcCA9PSBG QUNFX1RUWV9ERUZBVUxUX0ZHX0NPTE9SCQkJCQlcCisgICB8fCBwID09IEZBQ0VfVFRZX0RFRkFV TFRfQkdfQ09MT1IpCisKKyNkZWZpbmUgU0VRTUFYIDI1NiAvKiBBcmJpdHJhcnkgdXBwZXIgbGlt aXQgb24gVlQgc2VxdWVuY2Ugc2l6ZSAqLworCisvKiBGb3IgZGVidWdnaW5nICovCitzdGF0aWMg dm9pZAordnRfc2VxX2Vycm9yIChjaGFyICpzZXEpCit7CisgIGludCBpID0gMDsgaW50IGogPSAw OworICBpZiAoc2VxKQorICAgIGlmIChzZXFbMF0gPT0gJ1wwJykgc2VxID0gIjxlbXB0eT4iOwor ICAgIGVsc2UKKyAgICAgIHdoaWxlIChpIDwgU0VRTUFYKQorCXsKKwkgIGlmIChzZXFbaV0gPT0g J1x4MWInKSBzZXFbaV0gPSAnIyc7CisJICBpZiAoc2VxW2ldID09ICAgICclJykgc2VxW2ldID0g J18nOworCSAgaWYgKHNlcVtpXSA9PSAgICdcMCcpIHsgaisrOyBicmVhazsgfQorCSAgaSsrOwor CX0KKyAgZWxzZSBzZXEgPSAiPG51bGw+IjsKKyAgcHJpbnRmICgiRmFpbGVkIHRvIHdyaXRlIFZU IHNlcXVlbmNlOiAlc1xuIiwgaiA/IHNlcSA6ICI8b3ZlcmZsb3c+Iik7CisgIHByaW50ZiAoIkxh c3RFcnJvcjogMHglZHhcbiIsIEdldExhc3RFcnJvciAoKSk7CisgIGZmbHVzaCAoc3Rkb3V0KTsK KyAgZXhpdCAoMSk7Cit9CisKKy8qIFdyaXRlcyAoZHluYW1pYykgdmlydHVhbCB0ZXJtaW5hbCBB U0NJSSBzZXF1ZW5jZXMgdG8gc2NyZWVuICovCitzdGF0aWMgaW50Cit3MzJjb25fd3JpdGVfdnRf c2VxIChjaGFyICpzZXEpCit7CisgIGNoYXIgYnVmW1NFUU1BWF07CisgIERXT1JEIG4gPSAwLCBr ID0gMDsKKyAgU1NQUklOVEYgKGJ1ZiwgJm4sIFNFUU1BWCwgc2VxLCBOVUxMKTsKKyAgaWYgKG4p IFdyaXRlQ29uc29sZUEgKGN1cl9zY3JlZW4sIChMUENTVFIpIGJ1ZiwgbiwgJmssIE5VTEwpOwor ICByZXR1cm4gazsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ3Vyc29yIENvbnRyb2wKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBNb3ZlIHRoZSBjdXJz b3IgdG8gKFJPVywgQ09MKSBvbiBGUkFNRS4gICovCiBzdGF0aWMgdm9pZApAQCAtOTAsNyArMjA2 LDYgQEAgdzMyY29uX21vdmVfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKmYsIGludCByb3csIGludCBj b2wpCiB7CiAgIGN1cnNvcl9jb29yZHMuWCA9IGNvbDsKICAgY3Vyc29yX2Nvb3Jkcy5ZID0gcm93 OwotCiAgIC8qIFRPRE86IGZvciBtdWx0aS10dHkgc3VwcG9ydCwgY3VyX3NjcmVlbiBzaG91bGQg YmUgcmVwbGFjZWQgd2l0aCBhCiAgICAgIHJlZmVyZW5jZSB0byB0aGUgdGVybWluYWwgZm9yIHRo aXMgZnJhbWUuICAqLwogICBTZXRDb25zb2xlQ3Vyc29yUG9zaXRpb24gKGN1cl9zY3JlZW4sIGN1 cnNvcl9jb29yZHMpOwpAQCAtMTAyLDYgKzIxNyw3IEBAIHczMmNvbl9oaWRlX2N1cnNvciAodm9p ZCkKICAgR2V0Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9p bmZvKTsKICAgY29uc29sZV9jdXJzb3JfaW5mby5iVmlzaWJsZSA9IEZBTFNFOwogICBTZXRDb25z b2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVlbiwgJmNvbnNvbGVfY3Vyc29yX2luZm8pOworICBjdXJy ZW50X3R0eS0+Y3Vyc29yX2hpZGRlbiA9IDE7CiB9CiAKIHZvaWQKQEAgLTExMCwxNCArMjI2LDMz IEBAIHczMmNvbl9zaG93X2N1cnNvciAodm9pZCkKICAgR2V0Q29uc29sZUN1cnNvckluZm8gKGN1 cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKICAgY29uc29sZV9jdXJzb3JfaW5mby5i VmlzaWJsZSA9IFRSVUU7CiAgIFNldENvbnNvbGVDdXJzb3JJbmZvIChjdXJfc2NyZWVuLCAmY29u c29sZV9jdXJzb3JfaW5mbyk7CisgIGN1cnJlbnRfdHR5LT5jdXJzb3JfaGlkZGVuID0gMDsKK30K Kwordm9pZAordzMyY29uX3NhdmVfY3Vyc29yICh2b2lkKQoreworICBzYXZlZF9jb29yZHMgPSBj dXJzb3JfY29vcmRzOwogfQogCit2b2lkCit3MzJjb25fcmVzdG9yZV9jdXJzb3IgKHZvaWQpCit7 CisgIGN1cnNvcl9jb29yZHMgPSBzYXZlZF9jb29yZHM7CisgIFNldENvbnNvbGVDdXJzb3JQb3Np dGlvbiAoY3VyX3NjcmVlbiwgY3Vyc29yX2Nvb3Jkcyk7Cit9CisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgTW9kaWZpY2F0aW9uCisgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisKIC8qIENsZWFyIGZyb20gY3Vyc29yIHRvIGVuZCBvZiBzY3JlZW4uICAqLwogc3RhdGlj IHZvaWQKIHczMmNvbl9jbGVhcl90b19lbmQgKHN0cnVjdCBmcmFtZSAqZikKIHsKICAgdzMyY29u X2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9DT0xTIChmKSAtIDEpOwotICB3MzJjb25faW5z X2RlbF9saW5lcyAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBGUkFNRV9UT1RBTF9MSU5FUyAoZikgLSBj dXJzb3JfY29vcmRzLlkgLSAxKTsKKyAgaW50IG4gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZikgLSBj dXJzb3JfY29vcmRzLlkgLSAxOworICB3MzJjb25faW5zX2RlbF9saW5lcyAoZiwgY3Vyc29yX2Nv b3Jkcy5ZLCBuKTsKIH0KIAogLyogQ2xlYXIgdGhlIGZyYW1lLiAgKi8KQEAgLTEzNyw3ICsyNzIs NiBAQCB3MzJjb25fY2xlYXJfZnJhbWUgKHN0cnVjdCBmcmFtZSAqZikKIAogICBGaWxsQ29uc29s ZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyX25vcm1hbCwgbiwgZGVzdCwg JnIpOwogICBGaWxsQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwgJyAnLCBuLCBk ZXN0LCAmcik7Ci0KICAgdzMyY29uX21vdmVfY3Vyc29yIChmLCAwLCAwKTsKIH0KIApAQCAtMTY2 LDEwICszMDAsMTAgQEAgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChzdHJ1Y3QgZnJhbWUgKmYs IGludCBlbmQpCiAgICAgewogICAgICAgaW50IGk7CiAgICAgICBmb3IgKGkgPSAwOyBpIDwgZ2x5 cGhzX2xlbjsgaSsrKQotICAgICAgICB7CisJewogCSAgbWVtY3B5ICgmZ2x5cGhzW2ldLCAmc3Bh Y2VfZ2x5cGgsIHNpemVvZiAoc3RydWN0IGdseXBoKSk7CiAJICBnbHlwaHNbaV0uZnJhbWUgPSBO VUxMOwotICAgICAgICB9CisJfQogICAgICAgY2VvbF9pbml0aWFsaXplZCA9IFRSVUU7CiAgICAg fQogICB3MzJjb25fd3JpdGVfZ2x5cGhzIChmLCBnbHlwaHMsIGVuZCAtIGN1cnNvcl9jb29yZHMu WCk7CkBAIC0yMTgsMjggKzM1MiwyNyBAQCB3MzJjb25faW5zX2RlbF9saW5lcyAoc3RydWN0IGZy YW1lICpmLCBpbnQgdnBvcywgaW50IG4pCiAgIGlmIChuID4gMCkKICAgICB7CiAgICAgICBpZiAo c2Nyb2xsLkJvdHRvbSA8IGRlc3QuWSkKLSAgICAgICAgeworCXsKIAkgIGZvciAoaSA9IHNjcm9s bC5Cb3R0b207IGkgPCBkZXN0Llk7IGkrKykKLSAgICAgICAgICAgIHsKKwkgICAgewogCSAgICAg IHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgaSwgMCk7CiAJICAgICAgdzMyY29uX2NsZWFyX2VuZF9v Zl9saW5lIChmLCBGUkFNRV9DT0xTIChmKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKwkg ICAgfQorCX0KICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBuYiA9IGRlc3QuWSArIChzY3Jv bGwuQm90dG9tIC0gc2Nyb2xsLlRvcCkgKyAxOwogCiAgICAgICBpZiAobmIgPCBzY3JvbGwuVG9w KQotICAgICAgICB7CisJewogCSAgZm9yIChpID0gbmI7IGkgPCBzY3JvbGwuVG9wOyBpKyspCi0g ICAgICAgICAgICB7CisJICAgIHsKIAkgICAgICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGksIDAp OwogCSAgICAgIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAoZiwgRlJBTUVfQ09MUyAoZikpOwot ICAgICAgICAgICAgfQotICAgICAgICB9CisJICAgIH0KKwl9CiAgICAgfQotCiAgIGN1cnNvcl9j b29yZHMuWCA9IDA7CiAgIGN1cnNvcl9jb29yZHMuWSA9IHZwb3M7CiB9CkBAIC0yNDgsMTIgKzM4 MSwxMSBAQCB3MzJjb25faW5zX2RlbF9saW5lcyAoc3RydWN0IGZyYW1lICpmLCBpbnQgdnBvcywg aW50IG4pCiAjdW5kZWYJUklHSFQKICNkZWZpbmUJTEVGVAkxCiAjZGVmaW5lCVJJR0hUCTAKLQor LyogVGhlIGlkZWEgaGVyZSBpcyB0byBpbXBsZW1lbnQgYSBob3Jpem9udGFsIHNjcm9sbCBpbiBv bmUgbGluZSB0bworICAgaW1wbGVtZW50IGRlbGV0ZSBhbmQgaGFsZiBvZiBpbnNlcnQuICAqLwog c3RhdGljIHZvaWQKIHNjcm9sbF9saW5lIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBkaXN0LCBpbnQg ZGlyZWN0aW9uKQogewotICAvKiBUaGUgaWRlYSBoZXJlIGlzIHRvIGltcGxlbWVudCBhIGhvcml6 b250YWwgc2Nyb2xsIGluIG9uZSBsaW5lIHRvCi0gICAgIGltcGxlbWVudCBkZWxldGUgYW5kIGhh bGYgb2YgaW5zZXJ0LiAgKi8KICAgU01BTExfUkVDVCBzY3JvbGwsIGNsaXA7CiAgIENPT1JECSAg ICAgZGVzdDsKICAgQ0hBUl9JTkZPICBmaWxsOwpAQCAtMjg4LDE0ICs0MjAsMTMgQEAgc3RhdGlj IHZvaWQKIHczMmNvbl9pbnNlcnRfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIHN0 cnVjdCBnbHlwaCAqc3RhcnQsCiAJCSAgICAgIHJlZ2lzdGVyIGludCBsZW4pCiB7CisgIC8qIE1v dmUgbGVuIGNoYXJzIHRvIHRoZSByaWdodCBmcm9tIGN1cnNvcl9jb29yZHMsIGZpbGwgd2l0aCBi bGFua3MgKi8KICAgc2Nyb2xsX2xpbmUgKGYsIGxlbiwgUklHSFQpOwotCi0gIC8qIE1vdmUgbGVu IGNoYXJzIHRvIHRoZSByaWdodCBzdGFydGluZyBhdCBjdXJzb3JfY29vcmRzLCBmaWxsIHdpdGgg YmxhbmtzICovCisgIAogICBpZiAoc3RhcnQpCiAgICAgewotICAgICAgLyogUHJpbnQgdGhlIGZp cnN0IGxlbiBjaGFyYWN0ZXJzIG9mIHN0YXJ0LCBjdXJzb3JfY29vcmRzLlggYWRqdXN0ZWQKLQkg Ynkgd3JpdGVfZ2x5cGhzLiAgKi8KLQorICAgICAgLyogUHJpbnQgdGhlIGZpcnN0IGxlbiBjaGFy YWN0ZXJzIG9mIHN0YXJ0LgorCSBjdXJzb3JfY29vcmRzLlggYWRqdXN0ZWQgYnkgd3JpdGVfZ2x5 cGhzLiAgKi8KICAgICAgIHczMmNvbl93cml0ZV9nbHlwaHMgKGYsIHN0YXJ0LCBsZW4pOwogICAg IH0KICAgZWxzZQpAQCAtMzA2LDEzICs0MzcsMTUgQEAgdzMyY29uX2luc2VydF9nbHlwaHMgKHN0 cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBoICpzdGFydCwKIAogc3RhdGljIHZv aWQKIHczMmNvbl93cml0ZV9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3RydWN0 IGdseXBoICpzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICByZWdpc3RlciBpbnQgbGVuKQor CQkgICAgIHJlZ2lzdGVyIGludCBsZW4pCiB7CiAgIERXT1JEIHI7CiAgIFdPUkQgY2hhcl9hdHRy OwogICBMUENTVFIgY29udmVyc2lvbl9idWZmZXI7CiAgIHN0cnVjdCBjb2Rpbmdfc3lzdGVtICpj b2Rpbmc7CiAKKyAgdzMyY29uX2hpZGVfY3Vyc29yKCk7CisKICAgaWYgKGxlbiA8PSAwKQogICAg IHJldHVybjsKIApAQCAtMzQyLDQzICs0NzUsNDUgQEAgdzMyY29uX3dyaXRlX2dseXBocyAoc3Ry dWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0cmluZywKIAogICAgICAgLyog dzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIHNldHMgZnJhbWUgb2YgZ2x5cGhzIHRvIE5VTEwuICAq LwogICAgICAgc3RydWN0IGZyYW1lICphdHRyX2ZyYW1lID0gZmFjZV9pZF9mcmFtZSA/IGZhY2Vf aWRfZnJhbWUgOiBmOwotICAgICAgLyogVHVybiBhcHBlYXJhbmNlIG1vZGVzIG9mIHRoZSBmYWNl IG9mIHRoZSBydW4gb24uICAqLwotICAgICAgY2hhcl9hdHRyID0gdzMyX2ZhY2VfYXR0cmlidXRl cyAoYXR0cl9mcmFtZSwgZmFjZV9pZCk7CiAKICAgICAgIGlmIChuID09IGxlbikKIAkvKiBUaGlz IGlzIHRoZSBsYXN0IHJ1bi4gICovCiAJY29kaW5nLT5tb2RlIHw9IENPRElOR19NT0RFX0xBU1Rf QkxPQ0s7CisKICAgICAgIGNvbnZlcnNpb25fYnVmZmVyID0gKExQQ1NUUikgZW5jb2RlX3Rlcm1p bmFsX2NvZGUgKHN0cmluZywgbiwgY29kaW5nKTsKICAgICAgIGlmIChjb2RpbmctPnByb2R1Y2Vk ID4gMCkKIAl7Ci0JICAvKiBTZXQgdGhlIGF0dHJpYnV0ZSBmb3IgdGhlc2UgY2hhcmFjdGVycy4g ICovCi0JICBpZiAoIUZpbGxDb25zb2xlT3V0cHV0QXR0cmlidXRlIChjdXJfc2NyZWVuLCBjaGFy X2F0dHIsCi0JCQkJCSAgIGNvZGluZy0+cHJvZHVjZWQsIGN1cnNvcl9jb29yZHMsCi0JCQkJCSAg ICZyKSkKKwkgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQogCSAgICB7 Ci0JICAgICAgcHJpbnRmICgiRmFpbGVkIHdyaXRpbmcgY29uc29sZSBhdHRyaWJ1dGVzOiAlbHVc biIsCi0JCSAgICAgIEdldExhc3RFcnJvciAoKSk7Ci0JICAgICAgZmZsdXNoIChzdGRvdXQpOwor CSAgICAgIHR1cm5fb25fZmFjZSAoZiwgZmFjZV9pZCk7CisJICAgICAgV3JpdGVDb25zb2xlIChj dXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwKKwkJCSAgICBjb2RpbmctPnByb2R1Y2VkLCAm ciwgTlVMTCk7CisJICAgICAgdHVybl9vZmZfZmFjZSAoZiwgZmFjZV9pZCk7CisJICAgICAgY3Vy c29yX2Nvb3Jkcy5YICs9IGNvZGluZy0+cHJvZHVjZWQ7CiAJICAgIH0KLQotCSAgLyogV3JpdGUg dGhlIGNoYXJhY3RlcnMuICAqLwotCSAgaWYgKCFXcml0ZUNvbnNvbGVPdXRwdXRDaGFyYWN0ZXIg KGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAotCQkJCQkgICAgY29kaW5nLT5wcm9kdWNl ZCwgY3Vyc29yX2Nvb3JkcywKLQkJCQkJICAgICZyKSkKKwkgIGVsc2UKIAkgICAgewotCSAgICAg IHByaW50ZiAoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgY2hhcmFjdGVyczogJWx1XG4iLAotCQkg ICAgICBHZXRMYXN0RXJyb3IgKCkpOwotCSAgICAgIGZmbHVzaCAoc3Rkb3V0KTsKLQkgICAgfQor CSAgICAgIC8qIFR1cm4gYXBwZWFyYW5jZSBtb2RlcyBvZiB0aGUgZmFjZSBvZiB0aGUgcnVuIG9u LiAgKi8KKwkgICAgICBjaGFyX2F0dHIgPSB3MzJfZmFjZV9hdHRyaWJ1dGVzIChhdHRyX2ZyYW1l LCBmYWNlX2lkKTsKKwkgICAgICAvKiBTZXQgdGhlIGF0dHJpYnV0ZSBmb3IgdGhlc2UgY2hhcmFj dGVycy4gICovCisJICAgICAgRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4s IGNoYXJfYXR0ciwKKwkJCQkJICBjb2RpbmctPnByb2R1Y2VkLCBjdXJzb3JfY29vcmRzLAorCQkJ CQkgICZyKTsKKwkgICAgICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVycy4gICovCisJICAgICAgV3Jp dGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwK KwkJCQkJICAgY29kaW5nLT5wcm9kdWNlZCwgY3Vyc29yX2Nvb3JkcywKKwkJCQkJICAgJnIpOwog Ci0JICBjdXJzb3JfY29vcmRzLlggKz0gY29kaW5nLT5wcm9kdWNlZDsKLQkgIHczMmNvbl9tb3Zl X2N1cnNvciAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBjdXJzb3JfY29vcmRzLlgpOworCSAgICAgIGN1 cnNvcl9jb29yZHMuWCArPSBjb2RpbmctPnByb2R1Y2VkOworCSAgICAgIHczMmNvbl9tb3ZlX2N1 cnNvciAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBjdXJzb3JfY29vcmRzLlgpOworCSAgICB9CiAJfQog ICAgICAgbGVuIC09IG47CiAgICAgICBzdHJpbmcgKz0gbjsKICAgICB9CiB9CiAKKwogLyogVXNl ZCBmb3IgbW91c2UgaGlnaGxpZ2h0LiAgKi8KIHN0YXRpYyB2b2lkCiB3MzJjb25fd3JpdGVfZ2x5 cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBpbnQgeCwgcmVnaXN0ZXIg aW50IHksCkBAIC0zODcsNiArNTIyLDcgQEAgdzMyY29uX3dyaXRlX2dseXBoc193aXRoX2ZhY2Ug KHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgaW50IHgsIHJlZ2lzdGVyIGludCB5LAogewogICBM UENTVFIgY29udmVyc2lvbl9idWZmZXI7CiAgIHN0cnVjdCBjb2Rpbmdfc3lzdGVtICpjb2Rpbmc7 CisgIERXT1JEIGZpbGxlZCwgd3JpdHRlbjsKIAogICBpZiAobGVuIDw9IDApCiAgICAgcmV0dXJu OwpAQCAtMzk5LDI5ICs1MzUsMzggQEAgdzMyY29uX3dyaXRlX2dseXBoc193aXRoX2ZhY2UgKHN0 cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgaW50IHgsIHJlZ2lzdGVyIGludCB5LAogICAvKiBXZSBh cmUgZ29pbmcgdG8gd3JpdGUgdGhlIGVudGlyZSBibG9jayBvZiBnbHlwaHMgaW4gb25lIGdvLCBh cwogICAgICB0aGV5IGFsbCBoYXZlIHRoZSBzYW1lIGZhY2UuICBTbyB0aGlzIF9pc18gdGhlIGxh c3QgYmxvY2suICAqLwogICBjb2RpbmctPm1vZGUgfD0gQ09ESU5HX01PREVfTEFTVF9CTE9DSzsK LQogICBjb252ZXJzaW9uX2J1ZmZlciA9IChMUENTVFIpIGVuY29kZV90ZXJtaW5hbF9jb2RlIChz dHJpbmcsIGxlbiwgY29kaW5nKTsKICAgaWYgKGNvZGluZy0+cHJvZHVjZWQgPiAwKQogICAgIHsK LSAgICAgIERXT1JEIGZpbGxlZCwgd3JpdHRlbjsKLSAgICAgIC8qIENvbXB1dGUgdGhlIGNoYXJh Y3RlciBhdHRyaWJ1dGVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2UuICAqLwotICAgICAgRFdP UkQgY2hhcl9hdHRyID0gdzMyX2ZhY2VfYXR0cmlidXRlcyAoZiwgZmFjZV9pZCk7CiAgICAgICBD T09SRCBzdGFydF9jb29yZHM7Ci0KICAgICAgIHN0YXJ0X2Nvb3Jkcy5YID0geDsKICAgICAgIHN0 YXJ0X2Nvb3Jkcy5ZID0geTsKLSAgICAgIC8qIFNldCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBj aGFyYWN0ZXJzLiAgKi8KLSAgICAgIGlmICghRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUgKGN1 cl9zY3JlZW4sIGNoYXJfYXR0ciwKLQkJCQkgICAgICAgY29kaW5nLT5wcm9kdWNlZCwgc3RhcnRf Y29vcmRzLAotCQkJCSAgICAgICAmZmlsbGVkKSkKLQlEZWJQcmludCAoKCJGYWlsZWQgd3JpdGlu ZyBjb25zb2xlIGF0dHJpYnV0ZXM6ICVkXG4iLCBHZXRMYXN0RXJyb3IgKCkpKTsKKworICAgICAg aWYgKHczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMpCisJeworCSAgaW50IHByZXZf Y3Vyc29yX2hpZGRlbiA9IGN1cnJlbnRfdHR5LT5jdXJzb3JfaGlkZGVuOworCSAgdzMyY29uX2hp ZGVfY3Vyc29yICgpOworCSAgdzMyY29uX3NhdmVfY3Vyc29yICgpOworCSAgdzMyY29uX21vdmVf Y3Vyc29yIChmLCB5LCB4KTsKKwkgIHR1cm5fb25fZmFjZSAoZiwgZmFjZV9pZCk7CisJICBXcml0 ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJY29kaW5nLT5wcm9k dWNlZCwgJndyaXR0ZW4sIE5VTEwpOworCSAgdHVybl9vZmZfZmFjZSAoZiwgZmFjZV9pZCk7CisJ ICB3MzJjb25fcmVzdG9yZV9jdXJzb3IgKCk7CisJICBpZiAoIXByZXZfY3Vyc29yX2hpZGRlbikg dzMyY29uX3Nob3dfY3Vyc29yICgpOworCX0KICAgICAgIGVsc2UKIAl7CisJICAvKiBDb21wdXRl IHRoZSBjaGFyYWN0ZXIgYXR0cmlidXRlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNlLiAqLwor CSAgRFdPUkQgY2hhcl9hdHRyID0gdzMyX2ZhY2VfYXR0cmlidXRlcyAoZiwgZmFjZV9pZCk7CisK KwkgIC8qIFNldCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8KKwkgIEZp bGxDb25zb2xlT3V0cHV0QXR0cmlidXRlIChjdXJfc2NyZWVuLCBjaGFyX2F0dHIsCisJCQkJICAg ICAgY29kaW5nLT5wcm9kdWNlZCwgc3RhcnRfY29vcmRzLAorCQkJCSAgICAgICZmaWxsZWQpOwog CSAgLyogV3JpdGUgdGhlIGNoYXJhY3RlcnMuICAqLwotCSAgaWYgKCFXcml0ZUNvbnNvbGVPdXRw dXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAotCQkJCQkgICAgZmls bGVkLCBzdGFydF9jb29yZHMsICZ3cml0dGVuKSkKLQkgICAgRGViUHJpbnQgKCgiRmFpbGVkIHdy aXRpbmcgY29uc29sZSBjaGFyYWN0ZXJzOiAlZFxuIiwKLQkJICAgICAgIEdldExhc3RFcnJvciAo KSkpOworCSAgV3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVuLCBjb252ZXJz aW9uX2J1ZmZlciwKKwkJCQkgICAgICAgZmlsbGVkLCBzdGFydF9jb29yZHMsICZ3cml0dGVuKTsK IAl9CiAgICAgfQogfQpAQCAtNDUyLDkgKzU5Nyw3IEBAIHR0eV9kcmF3X3Jvd193aXRoX21vdXNl X2ZhY2UgKHN0cnVjdCB3aW5kb3cgKncsIHN0cnVjdCBnbHlwaF9yb3cgKndpbmRvd19yb3csCiAg IHJvb3RfeHkgKGYsIGZyYW1lX2VuZF94LCBmcmFtZV95LCAmcm9vdF9lbmRfeCwgJnJvb3RfeSk7 CiAgIHN0cnVjdCBnbHlwaF9yb3cgKnJvb3Rfcm93ID0gTUFUUklYX1JPVyAocm9vdC0+Y3VycmVu dF9tYXRyaXgsIHJvb3RfeSk7CiAKLSAgLyogUmVtZW1iZXIgY3VycmVudCBjdXJzb3IgY29vcmRp bmF0ZXMgc28gdGhhdCB3ZSBjYW4gcmVzdG9yZQotICAgICB0aGVtIGF0IHRoZSBlbmQuICAqLwot ICBDT09SRCBzYXZlX2Nvb3JkcyA9IGN1cnNvcl9jb29yZHM7CisgIHczMmNvbl9zYXZlX2N1cnNv cigpOwogCiAgIC8qIElmIHRoZSByb290IGZyYW1lIGRpc3BsYXlzIGNoaWxkIGZyYW1lcywgd2Ug Y2Fubm90IG5haXZlbHkKICAgICAgd3JpdGUgdG8gdGhlIHRlcm1pbmFsIHdoYXQgdGhlIHdpbmRv dyB0aGlua3Mgc2hvdWxkIGJlIGRyYXduLgpAQCAtNTA3LDkgKzY1MCw3IEBAIHR0eV9kcmF3X3Jv d193aXRoX21vdXNlX2ZhY2UgKHN0cnVjdCB3aW5kb3cgKncsIHN0cnVjdCBnbHlwaF9yb3cgKndp bmRvd19yb3csCiAJICAgIH0KIAl9CiAgICAgfQotCi0gIC8qIFJlc3RvcmUgY3Vyc29yIHdoZXJl IGl0IHdhcyBiZWZvcmUuICAqLwotICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIHNhdmVfY29vcmRz LlksIHNhdmVfY29vcmRzLlgpOworICB3MzJjb25fcmVzdG9yZV9jdXJzb3IoKTsKIH0KIAogc3Rh dGljIHZvaWQKQEAgLTUyMSw3ICs2NjIsOSBAQCB3MzJjb25fZGVsZXRlX2dseXBocyAoc3RydWN0 IGZyYW1lICpmLCBpbnQgbikKIAogICBzY3JvbGxfbGluZSAoZiwgbiwgTEVGVCk7CiB9Ci0KKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICAgICAgICAgICAgICAgICAgICAgICAgIFNldCB1cCAvIFRlYXIgZG93 bgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCiAKIHN0YXRpYyB2b2lkCiB3MzJjb25fcmVzZXRfdGVybWluYWxf bW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCkKQEAgLTU1OSw5ICs3MDIsMTEgQEAgdzMyY29uX3Nl dF90ZXJtaW5hbF9tb2RlcyAoc3RydWN0IHRlcm1pbmFsICp0KQogewogICBDT05TT0xFX0NVUlNP Ul9JTkZPIGNjaTsKIAorICB1c2luZ19zeXN0ZW1fY2FyZXQgPSB3MzJfdXNlX3Zpc2libGVfc3lz dGVtX2NhcmV0OworCiAgIC8qIG1ha2UgY3Vyc29yIGJpZyBhbmQgdmlzaWJsZSAoMTAwIG9uIFdp bmRvd3MgOTUgbWFrZXMgaXQgZGlzYXBwZWFyKSAgKi8KICAgY2NpLmR3U2l6ZSA9IDk5OwotICBj Y2kuYlZpc2libGUgPSBUUlVFOworICBjY2kuYlZpc2libGUgPSB1c2luZ19zeXN0ZW1fY2FyZXQg PyBUUlVFIDogRkFMU0U7CiAgICh2b2lkKSBTZXRDb25zb2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVl biwgJmNjaSk7CiAKICAgU2V0Q29uc29sZUFjdGl2ZVNjcmVlbkJ1ZmZlciAoY3VyX3NjcmVlbik7 CkBAIC01NjksMzAgKzcxNCw1NCBAQCB3MzJjb25fc2V0X3Rlcm1pbmFsX21vZGVzIChzdHJ1Y3Qg dGVybWluYWwgKnQpCiAgIC8qIElmIFF1aWNrIEVkaXQgaXMgZW5hYmxlZCBmb3IgdGhlIGNvbnNv bGUsIGl0IHdpbGwgZ2V0IGluIHRoZSB3YXkKICAgICAgb2YgcmVjZWl2aW5nIG1vdXNlIGV2ZW50 cywgc28gd2UgZGlzYWJsZSBpdC4gIEJ1dCBsZWF2ZSB0aGUKICAgICAgSW5zZXJ0IE1vZGUgYXMg aXQgd2FzIHNldCBieSB0aGUgdXNlci4gICovCi0gIERXT1JEIG5ld19jb25zb2xlX21vZGUKKyAg RFdPUkQgaW5fbW9kZQogICAgID0gRU5BQkxFX01PVVNFX0lOUFVUIHwgRU5BQkxFX1dJTkRPV19J TlBVVCB8IEVOQUJMRV9FWFRFTkRFRF9GTEFHUzsKICAgaWYgKChwcmV2X2NvbnNvbGVfbW9kZSAm IEVOQUJMRV9JTlNFUlRfTU9ERSkgIT0gMCkKLSAgICBuZXdfY29uc29sZV9tb2RlIHw9IEVOQUJM RV9JTlNFUlRfTU9ERTsKLSAgU2V0Q29uc29sZU1vZGUgKGtleWJvYXJkX2hhbmRsZSwgbmV3X2Nv bnNvbGVfbW9kZSk7CisgICAgaW5fbW9kZSB8PSBFTkFCTEVfSU5TRVJUX01PREU7CisgIFNldENv bnNvbGVNb2RlIChrZXlib2FyZF9oYW5kbGUsIGluX21vZGUpOwogCiAgIC8qIEluaXRpYWxpemUg aW5wdXQgbW9kZTogaW50ZXJydXB0X2lucHV0IG9mZiwgbm8gZmxvdyBjb250cm9sLCBhbGxvdwog ICAgICA4IGJpdCBjaGFyYWN0ZXIgaW5wdXQsIHN0YW5kYXJkIHF1aXQgY2hhci4gICovCiAgIEZz ZXRfaW5wdXRfbW9kZSAoUW5pbCwgUW5pbCwgbWFrZV9maXhudW0gKDIpLCBRbmlsKTsKKworICBE V09SRCBvdXRfbW9kZTsKKyAgR2V0Q29uc29sZU1vZGUgKGN1cl9zY3JlZW4sICZvdXRfbW9kZSk7 CisgIG91dF9tb2RlIHw9IEVOQUJMRV9QUk9DRVNTRURfT1VUUFVUOworICBvdXRfbW9kZSB8PSBF TkFCTEVfVklSVFVBTF9URVJNSU5BTF9QUk9DRVNTSU5HOworICBvdXRfbW9kZSB8PSBESVNBQkxF X05FV0xJTkVfQVVUT19SRVRVUk47CisgIHczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5j ZXMgPSBTZXRDb25zb2xlTW9kZSAoY3VyX3NjcmVlbiwgb3V0X21vZGUpOworICBpZiAodzMyX3Vz ZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykKKyAgICB7CisgICAgICBpbnQgY3Vyc29yX29m Zl9wID0gWFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KS0+Y3Vyc29yX29mZl9wOworICAgICAgdC0+ ZGlzcGxheV9pbmZvLnR0eS0+Y3Vyc29yX2hpZGRlbiA9IGN1cnNvcl9vZmZfcDsKKyAgICB9CiB9 CiAKIC8qIGhtbW0uLi4gcGVyaGFwcyB0aGVzZSBsZXQgdXMgYnJhY2tldCBzY3JlZW4gY2hhbmdl cyBzbyB0aGF0IHdlIGNhbiBmbHVzaAogICAgY2x1bXBzIHJhdGhlciB0aGFuIG9uZS1jaGFyYWN0 ZXItYXQtYS10aW1lLi4uCiAKLSAgIHdlJ2xsIHN0YXJ0IHdpdGggbm90IG1vdmluZyB0aGUgY3Vy c29yIHdoaWxlIGFuIHVwZGF0ZSBpcyBpbiBwcm9ncmVzcy4gICovCisgICB3ZSdsbCBzdGFydCB3 aXRoIG5vdCBtb3ZpbmcgdGhlIGN1cnNvciB3aGlsZSBhbiB1cGRhdGUgaXMgaW4gcHJvZ3Jlc3Mu CisKKyAgIC4uLiBjLiAyMDI1LCBWVCBzZXF1ZW5jZXMgY2FuIG9ubHkgYmUgd3JpdHRlbiB3aXRo IFdyaXRlQ29uc29sZSwKKyAgIHByaW50ZiwgZXRjLiwgd2hpY2ggYWR2YW5jZSB0aGUgY3Vyc29y LgorKi8KIHN0YXRpYyB2b2lkCiB3MzJjb25fdXBkYXRlX2JlZ2luIChzdHJ1Y3QgZnJhbWUgKiBm KQogeworICBjdXJyZW50X3R0eSA9IEZSQU1FX1RUWSAoZik7CisKKyAgaWYgKCF3MzJfdXNlX3Zp cnR1YWxfdGVybWluYWxfc2VxdWVuY2VzCisgICAgICAmJiBjdXJyZW50X3R0eS0+VE5fbWF4X2Nv bG9ycyA+IDE2KQorICAgIHsKKyAgICAgIHR0eV9zZXR1cF9jb2xvcnMgKGN1cnJlbnRfdHR5LCAx Nik7CisgICAgICBzYWZlX2NhbGxuIChRdzMyY29uX3NldF91cF9pbml0aWFsX2ZyYW1lX2ZhY2Vz KTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCiB3MzJjb25fdXBkYXRlX2VuZCAoc3RydWN0IGZy YW1lICogZikKIHsKLSAgU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uIChjdXJfc2NyZWVuLCBjdXJz b3JfY29vcmRzKTsKKyAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29vcmRzLlksIGN1 cnNvcl9jb29yZHMuWCk7CiAgIGlmICghWFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KS0+Y3Vyc29y X29mZl9wCiAgICAgICAmJiBjdXJzb3JfY29vcmRzLlggPCBGUkFNRV9DT0xTIChmKSkKICAgICB3 MzJjb25fc2hvd19jdXJzb3IgKCk7CkBAIC02MjQsOCArNzkzLDYgQEAgc3lzX3RnZXRzdHIgKGNo YXIgKmNhcCwgY2hhciAqKmFyZWEpCiAJCQlzdHVicyBmcm9tIGNtLmMKICAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KIAotZXh0ZXJuIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eTsKLXN0cnVj dCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eSA9IE5VTEw7CiBleHRlcm4gaW50IGNvc3Q7 CiBpbnQgY29zdCA9IDA7CiAKQEAgLTY5Myw3ICs4NjAsNiBAQCBjdXJzb3JZIChzdHJ1Y3QgdHR5 X2Rpc3BsYXlfaW5mbyAqdHR5KQogCQkJCUZhY2VzCiAgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLQogLyog VHVybiBhcHBlYXJhbmNlcyBvZiBmYWNlIEZBQ0VfSUQgb24gdHR5IGZyYW1lIEYgb24uICAqLwog CiBzdGF0aWMgV09SRApAQCAtNzI5LDYgKzg5NSwxMDAgQEAgdzMyX2ZhY2VfYXR0cmlidXRlcyAo c3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKICAgcmV0dXJuIGNoYXJfYXR0cjsKIH0KIAor c3RhdGljIHZvaWQKK3R1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkK K3sKKyAgc3RydWN0IGZhY2UgKmZhY2UgPSBGQUNFX0ZST01fSUQgKGYsIGZhY2VfaWQpOworICBz dHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5ID0gRlJBTUVfVFRZIChmKTsKKyAgdW5zaWduZWQg bG9uZyBmZyA9IGZhY2UtPmZvcmVncm91bmQ7CisgIHVuc2lnbmVkIGxvbmcgYmcgPSBmYWNlLT5i YWNrZ3JvdW5kOworCisgIC8qIGlmIGVpdGhlciBvdXQgb2YgcmFuZ2UsIHNldCBib3RoIHRvIHZh bHVlcyByZXRyaWV2ZWQgZnJvbSB0ZXJtaW5hbCAqLworICBpZiAoREVGQVVMVFAgKGZnKSkgZmcg PSBmZ19ub3JtYWw7CisgIGlmIChERUZBVUxUUCAoYmcpKSBiZyA9IGJnX25vcm1hbDsKKworICAv KiBjb25zdHJ1Y3QgY29tYmluZWQgVlQgc2VxdWVuY2UgZm9yIGZhY2UgYXR0cmlidXRlcyAqLwor ICBEV09SRCBuID0gMDsKKyAgc2l6ZV90IHN6ID0gU0VRTUFYOworICBjaGFyIHNlcVtzel07Cisg IHN6LS07CisKKyAgaWYgKGZhY2UtPnR0eV9ib2xkX3ApCisgICAgU1NQUklOVEYgKHNlcSwgJm4s IHN6LCB0dHktPlRTX2VudGVyX2JvbGRfbW9kZSwgTlVMTCk7CisgIGlmIChmYWNlLT50dHlfaXRh bGljX3ApCisgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6LCB0dHktPlRTX2VudGVyX2l0YWxpY19t b2RlLCBOVUxMKTsKKyAgaWYgKGZhY2UtPnR0eV9zdHJpa2VfdGhyb3VnaF9wKQorICAgIFNTUFJJ TlRGIChzZXEsICZuLCBzeiwgdHR5LT5UU19lbnRlcl9zdHJpa2VfdGhyb3VnaF9tb2RlLCBOVUxM KTsKKyAgaWYgKGZhY2UtPnVuZGVybGluZSAhPSAwKQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBz eiwgdHR5LT5UU19lbnRlcl91bmRlcmxpbmVfbW9kZSwgTlVMTCk7CisgIC8qIE5vdGU6IHRoZSB2 YWx1ZXMgb2YgZmcgYW5kIGJnIGFyZSBhbHJlYWR5IHN3YXBwZWQgd2hlbiBmZyBhbmQgYmcgYXJl CisgICAgIHNldCBhbmQgZmFjZS0+dHR5X3JldmVyc2VfcC4gQWRkaW5nIHRoZSB0ZXJtaW5hbCBz ZXF1ZW5jZSBjb250YWluZWQKKyAgICAgaW4gdHR5LT5UU19lbnRlcl9yZXZlcnNlX21vZGUgc3dh cHMgdGhlbSBiYWNrLCB3aGljaCBpcyBubyBnb29kLiAqLworCisgIGNvbnN0IGNoYXIgKnNldF9m ZyA9IHR0eS0+VFNfc2V0X2ZvcmVncm91bmQ7CisgIGNvbnN0IGNoYXIgKnNldF9iZyA9IHR0eS0+ VFNfc2V0X2JhY2tncm91bmQ7CisgIGlmICh0dHktPlROX21heF9jb2xvcnMgPT0gOCAgfHwKKyAg ICAgIHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAxNiB8fAorICAgICAgdHR5LT5UTl9tYXhfY29sb3Jz ID09IDI1NikKKyAgICB7CisgICAgICAvKiBpbmRpY2VzIGludG8gTWljcm9zb2Z0LWRlZmluZWQg Y29sb3JzIChzZWUgbGluayBhdCB0b3ApICovCisgICAgICB1bnNpZ25lZCBsb25nIGZnaSA9IDAs IGJnaSA9IDA7CisKKyAgICAgIGZnaSA9IChmZyA+PSAwICAmJiBmZyA8IDgpICAgPyBmZyArIDMw CisJOiAgIChmZyA+PSA4ICAmJiBmZyA8IDE2KSAgPyBmZyAtIDggKyA5MAorCTogICAoZmcgPj0g MTYgJiYgZmcgPCAyNTYpID8gZmcKKwk6IDA7CisgICAgICBpZiAoZmdpKQorCVNTUFJJTlRGIChz ZXEsICZuLCBzeiwgc2V0X2ZnLCBmZ2kpOworCisgICAgICBiZ2kgPSAoYmcgPj0gMCAgJiYgYmcg PCA4KSAgID8gYmcgKyA0MAorCTogICAoYmcgPj0gOCAgJiYgYmcgPCAxNikgID8gYmcgLSA4ICsg MTAwCisJOiAgIChiZyA+PSAxNiAmJiBiZyA8IDI1NikgPyBiZworCTogMDsKKyAgICAgIGlmIChi Z2kpCisJU1NQUklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfYmcsIGJnaSk7CisgICAgfQorICBlbHNl IGlmICh0dHktPlROX21heF9jb2xvcnMgPT0gMTY3NzcyMTYpCisgICAgeworICAgICAgLyogbmVl ZCB0byBjb252ZXJ0IGRlZmF1bHRlZCB2YWx1ZXMgdG8gcGl4ZWwgaW5kaWNlcyAqLworICAgICAg aWYgKGZnID09IGZnX25vcm1hbCkgZmcgPSBnZXRfcGl4ZWwoZmcpOworICAgICAgaWYgKGJnID09 IGJnX25vcm1hbCkgYmcgPSBnZXRfcGl4ZWwoYmcpOworCisgICAgICAvKiBmZyBhbmQgYmcgYXJl IHBpeGVsIHZhbHVlcyAtIGRlY29tcG9zZSB0byByZ2IgdHJpcGxlcyAqLworICAgICAgdW5zaWdu ZWQgbG9uZyByZiA9IGZnLzY1NTM2LCBnZiA9IChmZy8yNTYpJjI1NSwgYmYgPSBmZyYyNTU7Cisg ICAgICB1bnNpZ25lZCBsb25nIHJiID0gYmcvNjU1MzYsIGdiID0gKGJnLzI1NikmMjU1LCBiYiA9 IGJnJjI1NTsKKyAgICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2ZnLCByZiwgZ2YsIGJm KTsKKyAgICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2JnLCByYiwgZ2IsIGJiKTsKKyAg ICB9CisgIHczMmNvbl93cml0ZV92dF9zZXEgKHNlcSk7Cit9CisKK3N0YXRpYyB2b2lkCit0dXJu X29mZl9mYWNlIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lkKQoreworICBzdHJ1Y3QgdHR5 X2Rpc3BsYXlfaW5mbyAqdHR5ID0gRlJBTUVfVFRZIChmKTsKKyAgdzMyY29uX3dyaXRlX3Z0X3Nl cSAodHR5LT5UU19leGl0X2F0dHJpYnV0ZV9tb2RlKTsKK30KKworLyogcmV0dXJucyB0aGUgcGl4 ZWwgdmFsdWUgZm9yIHRoZSBnaXZlbiBpbmRleCBpbnRvIFZUIGJhc2UgY29sb3IgbWFwICovCitz dGF0aWMgdW5zaWduZWQgbG9uZyBwaXhlbF9jYWNoZVsxNl07CitzdGF0aWMgdW5zaWduZWQgbG9u ZworZ2V0X3BpeGVsICh1bnNpZ25lZCBsb25nIGluZGV4KQoreworICB1bnNpZ25lZCBpbnQgaSA9 ICh1bnNpZ25lZCBpbnQpIGluZGV4OworICBpZiAoaSA+IDE1KSByZXR1cm4gMDsKKyAgaWYgKGkg PT0gMCB8fCBwaXhlbF9jYWNoZVtpXSA+IDApCisgICAgcmV0dXJuIHBpeGVsX2NhY2hlW2ldOwor CisgIExpc3BfT2JqZWN0IHBpeCA9IHNhZmVfY2FsbG4gKFF3MzJjb25fZ2V0X3BpeGVsLCBtYWtl X3VmaXhudW0gKGkpKTsKKyAgcGl4ZWxfY2FjaGVbaV0gPSAodW5zaWduZWQgbG9uZykgWFVGSVhO VU0gKHBpeCk7CisgIHJldHVybiBwaXhlbF9jYWNoZVtpXTsKK30KKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemF0aW9uCisqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKwogLyogVGhlIElNRSB3aW5kb3cgaXMgbmVlZGVkIHRvIHJlY2VpdmUgdGhlIHNlc3Np b24gbm90aWZpY2F0aW9ucwogICAgcmVxdWlyZWQgdG8gcmVzZXQgdGhlIGxvdyBsZXZlbCBrZXli b2FyZCBob29rIHN0YXRlLiAgKi8KIApAQCAtODM0LDcgKzEwOTQsNyBAQCBpbml0aWFsaXplX3cz Ml9kaXNwbGF5IChzdHJ1Y3QgdGVybWluYWwgKnRlcm0sIGludCAqd2lkdGgsIGludCAqaGVpZ2h0 KQogCUdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvIChjdXJfc2NyZWVuLCAmaW5mbyk7CiAKIAkv KiBTaHJpbmsgdGhlIHdpbmRvdyBmaXJzdCwgc28gdGhlIGJ1ZmZlciBkaW1lbnNpb25zIGNhbiBi ZQotICAgICAgICAgICByZWR1Y2VkIGlmIG5lY2Vzc2FyeS4gICovCisJICAgcmVkdWNlZCBpZiBu ZWNlc3NhcnkuICAqLwogCW5ld193aW5fZGltcy5Ub3AgPSAwOwogCW5ld193aW5fZGltcy5MZWZ0 ID0gMDsKIAluZXdfd2luX2RpbXMuQm90dG9tID0gbWluIChuZXdfc2l6ZS5ZLCBpbmZvLmR3U2l6 ZS5ZKSAtIDE7CkBAIC04NDksNiArMTEwOSw3IEBAIGluaXRpYWxpemVfdzMyX2Rpc3BsYXkgKHN0 cnVjdCB0ZXJtaW5hbCAqdGVybSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQpCiAJbmV3X3dpbl9k aW1zLkJvdHRvbSA9IG5ld19zaXplLlkgLSAxOwogCW5ld193aW5fZGltcy5SaWdodCA9IG5ld19z aXplLlggLSAxOwogCVNldENvbnNvbGVXaW5kb3dJbmZvIChjdXJfc2NyZWVuLCBUUlVFLCAmbmV3 X3dpbl9kaW1zKTsKKwogICAgICAgfQogICB9CiAKQEAgLTg2MSw2ICsxMTIyLDggQEAgaW5pdGlh bGl6ZV93MzJfZGlzcGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQg KmhlaWdodCkKICAgICB9CiAKICAgY2hhcl9hdHRyX25vcm1hbCA9IGluZm8ud0F0dHJpYnV0ZXM7 CisgIGZnX25vcm1hbCA9IGNoYXJfYXR0cl9ub3JtYWwgJiAweDAwMGY7CisgIGJnX25vcm1hbCA9 IChjaGFyX2F0dHJfbm9ybWFsID4+IDQpICYgMHgwMDBmOwogCiAgIC8qIERldGVybWluZSBpZiB0 aGUgaW5mbyByZXR1cm5lZCBieSBHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbwogICAgICBpcyBy ZWFsaXN0aWMuICBPbGQgTVMgVGVsbmV0IHNlcnZlcnMgdXNlZCB0byBvbmx5IGZpbGwgb3V0CkBA IC05MTcsMTMgKzExODAsMjEgQEAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAoc3RydWN0IHRlcm1p bmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkKIH0KIAogCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXNwIEludGVyZmFjZQorKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisKKy8qIFRPRE8gLSBtaWdyYXRlIHRvIFZUIHNlcXVlbmNlcyAoMjU2IGFuZCAyNGJp dCBjb2xvcikgKi8KIERFRlVOICgic2V0LXNjcmVlbi1jb2xvciIsIEZzZXRfc2NyZWVuX2NvbG9y LCBTc2V0X3NjcmVlbl9jb2xvciwgMiwgMiwgMCwKICAgICAgICBkb2M6IC8qIFNldCBzY3JlZW4g Zm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMuCiAKIEFyZ3VtZW50cyBzaG91bGQgYmUg aW5kaWNlcyBiZXR3ZWVuIDAgYW5kIDE1LCBzZWUgdzMyY29uc29sZS5lbC4gICovKQogICAoTGlz cF9PYmplY3QgZm9yZWdyb3VuZCwgTGlzcF9PYmplY3QgYmFja2dyb3VuZCkKIHsKLSAgY2hhcl9h dHRyX25vcm1hbCA9IFhGSVhOQVQgKGZvcmVncm91bmQpICsgKFhGSVhOQVQgKGJhY2tncm91bmQp IDw8IDQpOworCisgIGZnX25vcm1hbCA9IFhGSVhOQVQgKGZvcmVncm91bmQpOworICBiZ19ub3Jt YWwgPSBYRklYTkFUIChiYWNrZ3JvdW5kKTsKKyAgY2hhcl9hdHRyX25vcm1hbCA9IGZnX25vcm1h bCArIChiZ19ub3JtYWwgPDwgNCk7CiAKICAgRnJlY2VudGVyIChRbmlsLCBRdCk7CiAgIHJldHVy biBRdDsKQEAgLTkzNyw4ICsxMjA4LDggQEAgU2VlIHczMmNvbnNvbGUuZWwgYW5kIGB0dHktZGVm aW5lZC1jb2xvci1hbGlzdCcgZm9yIG1hcHBpbmcgb2YgaW5kaWNlcwogdG8gY29sb3JzLiAgKi8p CiAgICh2b2lkKQogewotICByZXR1cm4gRmNvbnMgKG1ha2VfZml4bnVtIChjaGFyX2F0dHJfbm9y bWFsICYgMHgwMDBmKSwKLQkJRmNvbnMgKG1ha2VfZml4bnVtICgoY2hhcl9hdHRyX25vcm1hbCA+ PiA0KSAmIDB4MDAwZiksIFFuaWwpKTsKKyAgcmV0dXJuIEZjb25zIChtYWtlX2ZpeG51bSAoZmdf bm9ybWFsKSwKKwkJRmNvbnMgKG1ha2VfZml4bnVtIChiZ19ub3JtYWwpLCBRbmlsKSk7CiB9CiAK IERFRlVOICgic2V0LWN1cnNvci1zaXplIiwgRnNldF9jdXJzb3Jfc2l6ZSwgU3NldF9jdXJzb3Jf c2l6ZSwgMSwgMSwgMCwKQEAgLTk1NywxNSArMTIyOCwzMiBAQCB2b2lkCiBzeW1zX29mX250dGVy bSAodm9pZCkKIHsKICAgREVGVkFSX0JPT0wgKCJ3MzItdXNlLWZ1bGwtc2NyZWVuLWJ1ZmZlciIs Ci0gICAgICAgICAgICAgICB3MzJfdXNlX2Z1bGxfc2NyZWVuX2J1ZmZlciwKLQkgICAgICAgZG9j OiAvKiBOb24tbmlsIG1lYW5zIG1ha2UgdGVybWluYWwgZnJhbWVzIHVzZSB0aGUgZnVsbCBzY3Jl ZW4gYnVmZmVyIGRpbWVuc2lvbnMuCisJCXczMl91c2VfZnVsbF9zY3JlZW5fYnVmZmVyLAorCQlk b2M6IC8qIE5vbi1uaWwgbWVhbnMgbWFrZSB0ZXJtaW5hbCBmcmFtZXMgdXNlIHRoZSBmdWxsIHNj cmVlbiBidWZmZXIgZGltZW5zaW9ucy4KIFRoaXMgaXMgZGVzaXJhYmxlIHdoZW4gcnVubmluZyBF bWFjcyBvdmVyIHRlbG5ldC4KIEEgdmFsdWUgb2YgbmlsIG1lYW5zIHVzZSB0aGUgY3VycmVudCBj b25zb2xlIHdpbmRvdyBkaW1lbnNpb25zOyB0aGlzCiBtYXkgYmUgcHJlZmVyYWJsZSB3aGVuIHdv cmtpbmcgZGlyZWN0bHkgYXQgdGhlIGNvbnNvbGUgd2l0aCBhIGxhcmdlCiBzY3JvbGwtYmFjayBi dWZmZXIuICAqLyk7CiAgIHczMl91c2VfZnVsbF9zY3JlZW5fYnVmZmVyID0gMDsKIAorICBERUZW QVJfQk9PTCAoInczMi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMiLAorCQl3MzJfdXNl X3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzLAorCQlkb2M6IC8qIElmIG5vbi1uaWwgdzMyIGNv bnNvbGUgdXNlcyB0ZXJtaW5hbCBzZXF1ZW5jZXMgZm9yIHNvbWUgb3V0cHV0IHByb2Nlc3Npbmcu CitUaGlzIHZhcmlhYmxlIGlzIHNldCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHRoZSBjYXBhYmls aXRpZXMgb2YgdGhlIHRlcm1pbmFsLgorSXQgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIGFuZCBpbmRp Y2VzIG9mIGNvbG9ycyB1c2VkIGZvciBmYWNlcyBpbiB0aGUgdGVybWluYWwuCitJZiB0aGUgdGVy bWluYWwgY2Fubm90IGhhbmRsZSBWVCBzZXF1ZW5jZXMsIHRoZSB1cGRhdGUgaG9vayB0cmlnZ2Vy cyByZWNvbXB1dGF0aW9uIG9mIGZhY2VzLgorU2VlIGB3MzJjb24tc2V0LXVwLWluaXRpYWwtZnJh bWUtZmFjZXMnLCB3aGljaCBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIHNldHRpbmcgdGhpcyB2YXJp YWJsZSAKK21hbnVhbGx5IGluIGEgcnVubmluZyBzZXNzaW9uLiAqLyk7CisgIHczMl91c2Vfdmly dHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMgPSAwOworCisgIERFRlNZTSAoUXczMmNvbl9zZXRfdXBf aW5pdGlhbF9mcmFtZV9mYWNlcywKKwkgICJ3MzJjb24tc2V0LXVwLWluaXRpYWwtZnJhbWUtZmFj ZXMiKTsKKworICBERUZTWU0gKFF3MzJjb25fZ2V0X3BpeGVsLAorCSAgInczMmNvbi1nZXQtcGl4 ZWwiKTsKKwogICBkZWZzdWJyICgmU3NldF9zY3JlZW5fY29sb3IpOwogICBkZWZzdWJyICgmU2dl dF9zY3JlZW5fY29sb3IpOwogICBkZWZzdWJyICgmU3NldF9jdXJzb3Jfc2l6ZSk7CisgIAogfQpk aWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCA4OTU2MWQ3NTBiNi4u ZDMwNDBlYTYyOWIgMTAwNjQ0Ci0tLSBhL3NyYy94ZGlzcC5jCisrKyBiL3NyYy94ZGlzcC5jCkBA IC0xNzIzOSw3ICsxNzIzOSw3IEBAIHJlZGlzcGxheV9pbnRlcm5hbCAodm9pZCkKIAkgICAgIGFy ZWEsIGRpc3BsYXlpbmcgYSBkaWZmZXJlbnQgZnJhbWUgbWVhbnMgcmVkaXNwbGF5IHRoZQogCSAg ICAgd2hvbGUgdGhpbmcuICAqLwogCSAgU0VUX0ZSQU1FX0dBUkJBR0VEIChzZik7Ci0jaWYgIWRl ZmluZWQgRE9TX05UICYmICFkZWZpbmVkIEhBVkVfQU5EUk9JRAorI2lmICFkZWZpbmVkIE1TRE9T ICYmICFkZWZpbmVkIEhBVkVfQU5EUk9JRAogCSAgc2V0X3R0eV9jb2xvcl9tb2RlIChGUkFNRV9U VFkgKHNmKSwgc2YpOwogI2VuZGlmCiAJfQotLSAKMi40OS4wCgo= --b1=_bjVMxrybUQ7dRATJ96flXxCUxfCAFtrfmxAa3hg2j4-- From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 06 03:27:43 2025 Received: (at 79298) by debbugs.gnu.org; 6 Sep 2025 07:27:43 +0000 Received: from localhost ([127.0.0.1]:33359 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uunKn-00039G-Nq for submit@debbugs.gnu.org; Sat, 06 Sep 2025 03:27:42 -0400 Received: from mout.gmx.net ([212.227.17.20]:57799) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uunKe-000378-6o for 79298@debbugs.gnu.org; Sat, 06 Sep 2025 03:27:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1757143631; x=1757748431; i=michael.albinus@gmx.de; bh=A7yWSgLRpN/JOh35xYkzQQz48npzRyt3zQyGQeH9TuE=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=nNpTJaKaX3ZeEbDcUwcqrOfwRk1/fR6lS8F+ZHbc9zA3Y8FUDofELiNDG2aIeMaF Vhd0tfqcpYtrxxME55DHrX/P4TJTaWvbdNQoScaP2WVc1gIwlrsq868DRSdIhStI+ pVJvmbV1iWd8uq8qyShi0i89UYcSuw6+P3RBzRNd0OQjbNsUQAkthGBits+Nzva2E Q9aWlgSkC7k2joeFLgUintoF8N3EqQqNvWhTJ2D5b5s+DHu0dWn8D8U8cxbsZgjVB SmjPvjoTySEbQzkINIo90v2N0TysQgEU7OUCvncoxsh2CIifOn1EnXtkzbPjZtfYQ jA0K+nBD5ZpbXqDtzw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mof9F-1u5mKc03Vh-00qJd3; Sat, 06 Sep 2025 09:27:11 +0200 From: Michael Albinus To: Ewan Subject: Re: bug#79298: patch: full color in windows terminal In-Reply-To: References: <86ms7bjxu9.fsf@gnu.org> <86jz2ekew5.fsf@gnu.org> <868qiuk9jr.fsf@gnu.org> <864itijzmd.fsf@gnu.org> Date: Sat, 06 Sep 2025 09:27:10 +0200 Message-ID: <87qzwk2g8h.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:JtlxrVoIGSzcnSyJReuvI0jtayFdMXXrACYFtn1tGG7iLMNRBpJ hoTsZQI/BaYd9sQa8eq+xOf4k+ualnfQHYBCCLwpJNFXBuhe3glNsonA01ElEgrs6AGn1Jh 8Eg07B4NfxsNAZeAKxYf8WykweEmmpxQDYfxw9EniVWyA8Ou1q/9Q2Q1sKO4WWeK6+wq1Uu AHhWkKy/XqjaGRTRrwsFw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:O/KDzm4bNGk=;5rb0E4+Cncwq+BId7xrBc/igilo 85NzXIELVdMQUFoL0EE/nByPvkSizV2e0+3/CFr6N3xLVn0vL/E5To4H165h1mh7wCownxi9F lKTe4X2Quy2w9BPxQDQlomvMr0yFPVmynGKZjm9II3d1MbWgHwcT+CofUryqOoxlW7zvpDGhT H4lvCCLcA5BhNSAPp5FngPXTHr8khSwQt7XdQssTMHRDtKcqbBf69+kQzEiKyqRzMlxM6D+0j bWBaaBH4iuWiWTKx+QQuZtWqYLU3EyFjigtFX6ilKc9ZAlUb6C+gZcJTm/gxt8aupbKPcUePr epZO38x05yogJmeFjYWKugK8IcmA7Sm1Qbr3ttKE9mWxoY6olACEoR5K98CSpiaA1DK/ggQdC nV0O0xoxNrHPNTxAPsKJG+TR2bCS2N7J1BDYLjJW5mbZwlTmkdJ8OWr8tX4JN7uzyiYKZh33u rsxNXg2UzAf3RTLUC34t+8dFHiBaOPV7qOp2jLOAsH3LbggKOs7vywIdvxfHUlPk4zDUB52o4 +UZ1vWH0Z7+vjWSvgtkeR3LMcm+1AMEh68xrAwJmEtCcS3j8fA1mPI2p26uraUu7yKLDqdPvp CpxZ+2oXhpu1kAM1i8a0jDOyuLvPFa+neS2rdv5HZHzsxXpkPwxvNkln1X5Z7OynoWSK+5Rg1 J3tUpD8apj7fEcTIUEpeU6MSQFFv9mkNngnKQROMlUgWz5PM//zpK3Osc7+9w4IZ+csLH+u+b kDI2GUpZBEukz7d87lZm7AtJ0hOnIBmISSQOq8AuDMdWhMIGG+PVlcxMp1Q6KwzR9etQCEs6R 4YDdjWEC90W6snaO3ro7ZkU6suC3fB0M7ZEZkJ7PHxjnUtkwD+l9dinzy3K41lL7p5btWOYZS afb8LxxIuuOgQwiJCJoaR/WQYJ9bisxWayKNefYgpdKA/QgtcyRspm/Y+0FoWi/wJ7fQxg4ON sDcFzctAwEOWkNNHdo8Rd1PW/fIWlF06V99ewQ6gvS5J1x4HjiVixzTyKuBoNIdTik/gMwoFO Pu2ePiN+zpP4+agmkPEc7zD9M87edY/eK+dTbwfnxHvvuNFg73Yk+3WX/Su9iQVtDlxkXRq+W g1s1jB+TohmWm3Plzwpw2gka/6Mk00BwN7bP4zsHymqzVjoNaON11vHEmv6noqzkAQ8cIxt6j /FDyIvPvUAt8/L8MdAm1qC3mSpJwxR8mcHYEeHqPgmVgMd8woGKcVkN3oSVRus19GFnnEcdC1 1nf/nRsWNoYWUO4mOdXn04Jk8S8jvjChlvABQriwzV/4/YmETu9ZmO6l7jT3im2faIZHdxHu0 OUbvol1otpeZkDGxL1JfnXdhrPFbZOePipbnFi71WQpg1hEDQDfdvQvv/242qHEbu6soVrmCd Val+UTIJjb1zRNG4t8PGrLUz5xi/NM+CZk1h3nhZujZpqg+bwJrfU8524ZBUaMFbsiaSWXu2g n/0p2vNJvZwi57RneZH+umjHcqi7auNEAVJnZ382pgD88zAtDK9oOMryB1Z2my2FIo9gGAyjB xA52klqA6vvERP23zt6RDqSc1oEOct+miOgQ9uh35N/VQZcGiUjS67v9F7yjHMJNs+oEXfAQ8 oj+CLb45MjRqrBQRByPOKX5HoH65VU/Iu5031Q4hU3YoL8sBusASdhSaYX1h8F/vTTFLVOd6T CpLyfiR+rD58CwstBTA9x8tC0yql2QSjwsu7jZARCKIuoqHtAdj8d8Ps1uLIPHH72OMmgimST +3mHd3BZDsoL5n1vexk5/ZXMaZThBz6hOiocOkozR+f9pK37ec4kQQolfb+oL1sMSgtFA4QBl KjdhkG4/L19R9IGASsem5gIk3vYlFKaTwixkjne13z8yLtjt+0PP3aZEuQWD4F/8HPgx4HF8o GkyTJQF1fhORJRJqrpdszVHnTqpGDEInMZNE0nJAdFbH5KVjzYsKRqgf/bRxwT34HOcc+D5pX O/3aQrX3mkdcVl+EWPBEBnnP+AsjdVKnlVQwJzE0m+7ZuJ2+8lDhLeWZAj6fmKMFXgKnlg1Ay ct9xruLzcG5cdc3nMpqA/MTEch5gNurOhc/apakPpPDrwKea3cdn9TWaNASReH64pnP/qZmqj q3ZFpYd0cYW807QcEA3zZ5x/05fHctiyAJylj5Qg0/5LfZlDI8kx/GAqIyUnpSzmBwLfCtOyu e9uhXnsehhBQCSzF48aVrgsqJA2vMfxTaegR3NM6lwu5ySTa90Uq/jgfBE6Hq8kvSnoSwGPif 8IyjZTFXYEDKPcRfzazMCuFhFJF94D2+jlaGNUUI7/9oz9e6Bbx1l8RD7MDOk7zHl4uainQIH 6skbUJDSdsZSqUoGbVGblwd+WubDT7NhC/1AlMI0mIzfWxga590/5ntA95UGCXBUVg5B6Xcxi xOAZR1AoHtdQrhISeZAq2c1zffgDFylTFg8+twnnONXIanNpT4eY6h3Dqoe6NtlrvorRqv714 MbhqabPrtm5snPnGHYjNbNTLG1XrsvjeF+C81ewgmWSZoK10yhm/arcYn8eZYb6YJhdpkvhjj sMxV4P+jbE4pV7BrHsqK0Z3hDJJNkoyIQCEIGme9nOHO2tPVGWdlLgZ3gXfS2BudJ0nJb4lN9 ZUUpDiElqbASVCPLzLr6d0CUHhGGf8chZ+63AnieVmiamgMTj5rWXD5oK3++k1LuOzwnFl/w8 vFWydYYiQ/M3/S4PhmwTUC4l8YqjLv/4ITqVw1CJYFcbLPyMcFX+uU0Y0C61xfBmZZwkeLh67 4/AMIe2NhPjCgNMyoB+cCvR4VWGr25JGLHLuRbvMuXLyHOacZOciL4K9muQ6TgyfS2+rYnYGx yKYUThJ8yXOsUvWzGEQhyXiDi/G/no9zxPqXj/iGFvpgiY5t+VXwGqfPdQuolsU4RhVGfc4Ab cUdII00HXlWU5CrJ3XvSylm2yCvq27vvo4FmVfFX5s+j7TxoFPogGrG/lFYLFAUBbMOtNPv2S /uU+mcLA2My3DcRBN7MDmXNSUpGq/05susvkY1koKg6rO0E9rN74xZFjFWyST1BnX9TSN3iMK pibOMKXy+6vuCnayDn7DEn4h2UdC9bmQ1Wf4YaZQ/4G2XaMHubKZJ4ZWCebTgGI2rwFLB2Rci oDwOea/zMI5szYloQJ2h1/gB4oJXc3bKSfbEeraYgrzDFLZA27JRNa5awSF2XhPLjSx1iUHDH VvU5d+t6ivIv3ri2P0RZCOIWGYngEP48tRhTcZvsWxLMNelXMYmlriF5IRVIFOeV/vKwBC6oo bedlNOWYcUGbpgC6R83cMz3l4evWF7mNsj9XY1GMFAQ8m24fibrjvnXFup5/7gY2WJOlX9mFY 3FjPCbs0DlM6//1ouilnBJxafS3YMlPpgi/kx+IhHhDVnXzgXANiJWIBacZmM/OMUq4D+QbMI e6ZHZ6eOK7i4X7GFCXTrA5Hm4BvkXujq7E6En9Qfs012mt2Os6yyvpyem5oAQf2xSFxe8KWgy rUCKuuAsL0ZSZkrq8wjemgpW4HjF6doSTWxM4SxZRfRCwqZld8Uu449Ysje8ll+9qYjRC3TbP qVMPUfF6TQuxIGVS+e8jC72SubArj04JRKGn2pbDpm+kcrhr7wQ5PQOQ6UhxaPLO31zXZB9uR CKXRechcsYWzlAacCQU15D3w4/9wMIyTDJPim/D3shunwZD+PGUhmWkeeM9fgh98GUhINpC+/ 3NHnVn6wlm7JUZiwunHGoM0W1TVqHPL/7IRZU0rnF0LAOj2fUuxtb1vC9s4MQ0jt1amyRpGaP pMMV8zMVvO0e9XE9GsUCiBoswNt0G5o6hSO3/H2+b27MH/iZLG7beTX7AVWCBdHwskeopcwbU /ENzpg9xVcuZ0ub/UTqKnYEJc9pLvmH9BrK9gcv+nTo/60xiYMHHKZ+GvtKZIzm0X08PNElP7 eLn/RULmxwtfyJ/CU4xNYru+m5V8QtNICa8Cn6Z3ZtN1TNy45vQ/fcwB/hch7DtKQnFDygw75 FFHj9RJVIlPSo3R545egk8YmYpAUInMkV5r3D1kt0J5yV+z0+TE2hRkaeGk1C+MtEYd2l8O2a jq8qKiDd2DHiGhLUA2lHGHpG2tV3D2ujb3gl4CVSv843NBI9DfLLWIwAz3zdUk1Qii1mn+c5u kIFJxfX4RzJMk+c7OvN9wXSP5/C6nWtmG47xNDlHyQzIJbNQVh+HVZMQjnTBVgkrJATOk/V3u Thuiy9IYR3/9++IAUA1ry6pzJBRaYCjqvLu91gY8oRHc+yfeCmyi2IyfVaMYJr+9Dus1ZQAJN EIIAPqq/6AEDgRY64F4rrmzJWwNrzdUj8h34NFAPKiDSr3zH3W0dbTUG1oe/qFiEatvDl2alI +RtdTLAad3rw/XQ68jes4A2mXBYLGIYluBezdoimvWnEs3RU1Bq9U0vo77M++kh7nnKogeXSw 37LiDlNz9/bZCR7ErDpnsf652cF7hQlTE3HTXctoBDgZPIo2Cty9OPRNrxmbUF81765pZhdsw kooVMSop5CgHFgZm4TeSGMsA4BH6cNIf92U1NcLrMe5AW1YUfoj/26fEOPxtG895eifLE88/x mOcunzF6zdpKx0P+Lupzww0nOWqyp02ZD7PTdOMvYDFcDhoNl8iqn2mOOxV84FdU/L6YDZA8p 2PiugRMVCTh0//yzd0QsqqdhTIs3D6zhJKnoes0OoROYBQC96ow9UHSliR9lsfn0cgr9KHGZd FuCWg4IWiTJHl6IDVtUTlWLBR2bnuVKGobbAF6EhK9aTibBxn4wZ/bbUd+YlNGbN78AVfpcCw RNNasGgvNY4FcsPE1GKqRyDyL3IJ7YPhNBBwDXmDattvDbBY7U4MvPoJ3HI5QjHxgOX57e2Qw dp1I9X5Wmg Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: Eli Zaretskii , 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ewan via "Bug reports for GNU Emacs, the Swiss army knife of text editors" writes: Hi, just a comment from the sideline: > diff --git a/etc/NEWS.30 b/etc/NEWS.30 > index dfe6c5cafe6..814ca843be5 100644 > --- a/etc/NEWS.30 > +++ b/etc/NEWS.30 > @@ -15,6 +15,35 @@ in older Emacs versions. > You can narrow news to a specific version by calling 'view-emacs-news' > with a prefix argument or by typing 'C-u C-h C-n'. > =20 > +=0C > +* Changes in Emacs 30.3 I might be wrong, but I believe the change is for master (Emacs 31.1). So pls modify etc/NEWS instead of etc/NEWS.30. Best cregards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 06 05:20:07 2025 Received: (at 79298) by debbugs.gnu.org; 6 Sep 2025 09:20:08 +0000 Received: from localhost ([127.0.0.1]:34411 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uup5b-0000BI-Q0 for submit@debbugs.gnu.org; Sat, 06 Sep 2025 05:20:07 -0400 Received: from mail-10626.protonmail.ch ([79.135.106.26]:63777) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uup5N-00007a-Re for 79298@debbugs.gnu.org; Sat, 06 Sep 2025 05:19:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=etown.dev; s=protonmail; t=1757150386; x=1757409586; bh=mz6HEjmSnJIHj9uu1/2mc21kmc0SqgB2GWbnzObBTZs=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=HW8acoDW3k25eoO9gaYIq1an4xZqZsmZaLV9CMcHrjjs4Yl4b3UxSBrQhp09u6CjH TBTYtCemxLLJUkCQ74nmH8k/xrVvt0U9EDZqjzAmO4w6FHA+Vp1m971gufHoBoacyS BudhmNzumd6Ow4olxNuQN/j3hzh9cXYkPZRH3x32pjROKKFMD6flKSjHmDCrW9/jO1 d7471k0M6DJ0PGZIPgqLPv8Qll4w9pKW7c2XTpIVO9wZAcxay+GuxdUh7MlN709kdk H4jLTH8BKLIhqYS4vVqemWENG7gAP30UVXnWqpD0689jywjM86vkZt8KGmeBIkKca2 iK+rgcgfGKqbA== Date: Sat, 06 Sep 2025 09:19:40 +0000 To: Michael Albinus From: Ewan Subject: Re: bug#79298: patch: full color in windows terminal Message-ID: In-Reply-To: <87qzwk2g8h.fsf@gmx.de> References: <86jz2ekew5.fsf@gnu.org> <868qiuk9jr.fsf@gnu.org> <864itijzmd.fsf@gnu.org> <87qzwk2g8h.fsf@gmx.de> Feedback-ID: 150490971:user:proton X-Pm-Message-ID: bdcc6314d98ade310ab387bb665906ed730f47ab MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1=_FjlyCkqGaQMWm46b5fgUbHvmiiXmASK9vYFNKBzcw" X-Debbugs-Envelope-To: 79298 Cc: Eli Zaretskii , 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --b1=_FjlyCkqGaQMWm46b5fgUbHvmiiXmASK9vYFNKBzcw Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable > I might be wrong, but I believe the change is for master (Emacs > 31.1). So pls modify etc/NEWS instead of etc/NEWS.30. Ahh, thank you - updated patches attached. ...-minimal: system cursor, VT sequences just for color. ...-full: system or Emacs-drawn cursor, complete migration to VT sequenc= es. --b1=_FjlyCkqGaQMWm46b5fgUbHvmiiXmASK9vYFNKBzcw Content-Type: application/octet-stream; name=0001-w32-VT-Sequences-minimal.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-w32-VT-Sequences-minimal.patch RnJvbSBmYzA5ZDJlNzFiMDVlYzYxZDBiMWM3ZGExMDQzYTFhN2NjZWZhYTFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFNhdCwg NiBTZXAgMjAyNSAwMTo1MTowOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHczMiBWVCBTZXF1ZW5j ZXMgKG1pbmltYWwpCgotLS0KIGRvYy9lbWFjcy9jbWRhcmdzLnRleGkgIHwgICA5ICstCiBkb2Mv ZW1hY3MvbXNkb3MudGV4aSAgICB8ICAyNiArKy0KIGV0Yy9ORVdTICAgICAgICAgICAgICAgIHwg IDEyICsrCiBsaXNwL3Rlcm0vdHR5LWNvbG9ycy5lbCB8ICAgMyArLQogbGlzcC90ZXJtL3czMmNv bnNvbGUuZWwgfCAxNTIgKysrKysrKysrLS0tLQogc3JjL3Rlcm0uYyAgICAgICAgICAgICAgfCAg ODUgKysrKysrLS0KIHNyYy90ZXJtY2hhci5oICAgICAgICAgIHwgICAyICsKIHNyYy93MzJjb25z b2xlLmMgICAgICAgIHwgNDY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0KIHNyYy94ZGlzcC5jICAgICAgICAgICAgIHwgICAyICstCiA5IGZpbGVzIGNoYW5nZWQsIDYw NCBpbnNlcnRpb25zKCspLCAxNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNz L2NtZGFyZ3MudGV4aSBiL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkKaW5kZXggNzlhZTJkMDY0ZDEu LmVlZDI2M2MzOTA1IDEwMDY0NAotLS0gYS9kb2MvZW1hY3MvY21kYXJncy50ZXhpCisrKyBiL2Rv Yy9lbWFjcy9jbWRhcmdzLnRleGkKQEAgLTEwMjQsMTkgKzEwMjQsMjIgQEAgY29sb3JlZCBkaXNw bGF5LgogQGl0ZW14IGFuc2k4CiBUdXJuIG9uIHRoZSBjb2xvciBzdXBwb3J0IHVuY29uZGl0aW9u YWxseSwgYW5kIHVzZSBjb2xvciBjb21tYW5kcwogc3BlY2lmaWVkIGJ5IHRoZSBBTlNJIGVzY2Fw ZSBzZXF1ZW5jZXMgZm9yIHRoZSA4IHN0YW5kYXJkIGNvbG9ycy4KK0BpdGVtIDI0Yml0CitUdXJu IG9uIHN1cHBvcnQgZm9yIGFsbCBkZWZpbmVkIDI0LWJpdCBSR0IgY29sb3JzIGlmIGF2YWlsYWJs ZS4KK0N1cnJlbnRseSB0aGlzIGlzIGVmZmVjdGl2ZSBvbiBNUy1XaW5kb3dzICgxMCspIG9ubHku CiBAaXRlbSBAdmFye251bX0KIFVzZSBjb2xvciBtb2RlIGZvciBAdmFye251bX0gY29sb3JzLiAg SWYgQHZhcntudW19IGlzIEBtaW51c3t9MSwgdHVybiBvZmYKIGNvbG9yIHN1cHBvcnQgKGVxdWl2 YWxlbnQgdG8gQHNhbXB7bmV2ZXJ9KTsgaWYgaXQgaXMgMCwgdXNlIHRoZQogZGVmYXVsdCBjb2xv ciBzdXBwb3J0IGZvciB0aGlzIHRlcm1pbmFsIChlcXVpdmFsZW50IHRvIEBzYW1we2F1dG99KTsK IG90aGVyd2lzZSB1c2UgYW4gYXBwcm9wcmlhdGUgc3RhbmRhcmQgbW9kZSBmb3IgQHZhcntudW19 IGNvbG9ycy4KIERlcGVuZGluZyBvbiB5b3VyIHRlcm1pbmFsJ3MgY2FwYWJpbGl0aWVzLCBFbWFj cyBtaWdodCBiZSBhYmxlIHRvIHR1cm4KLW9uIGEgY29sb3IgbW9kZSBmb3IgOCwgMTYsIDg4LCBv ciAyNTYgYXMgdGhlIHZhbHVlIG9mIEB2YXJ7bnVtfS4gIElmCi10aGVyZSBpcyBubyBtb2RlIHRo YXQgc3VwcG9ydHMgQHZhcntudW19IGNvbG9ycywgRW1hY3MgYWN0cyBhcyBpZgorb24gYSBjb2xv ciBtb2RlIGZvciA4LCAxNiwgODgsIDI1Niwgb3IgMTY3NzcyMTYgYXMgdGhlIHZhbHVlIG9mIEB2 YXJ7bnVtfS4KK0lmIHRoZXJlIGlzIG5vIG1vZGUgdGhhdCBzdXBwb3J0cyBAdmFye251bX0gY29s b3JzLCBFbWFjcyBhY3RzIGFzIGlmCiBAdmFye251bX0gd2VyZSAwLCBpLmUuLCBpdCB1c2VzIHRo ZSB0ZXJtaW5hbCdzIGRlZmF1bHQgY29sb3Igc3VwcG9ydAogbW9kZS4KIEBlbmQgdGFibGUKIAot VGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBNUy1XaW5kb3dzIGFuZCBNUy1ET1MuCitUaGlz IG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIE1TLURPUywgbm9yIE1TLVdpbmRvd3MgcHJpb3IgdG8g V2luZG93cyAxMC4KIAogQGNpbmRleCBjb2xvcnMgb24gY2hhcmFjdGVyIHRlcm1pbmFsLCBjaGFu Z2luZyBkdXJpbmcgc2Vzc2lvbgogQGNpbmRleCBjaGFyYWN0ZXIgdGVybWluYWwsIGNoYW5nZSBj b2xvciBtb2RlCmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvbXNkb3MudGV4aSBiL2RvYy9lbWFjcy9t c2Rvcy50ZXhpCmluZGV4IGY5NzE1MWM2MzBmLi5mZGExYThkNjdjZCAxMDA2NDQKLS0tIGEvZG9j L2VtYWNzL21zZG9zLnRleGkKKysrIGIvZG9jL2VtYWNzL21zZG9zLnRleGkKQEAgLTExNjUsNyAr MTE2NSw3IEBAIGFueXdoZXJlIGVsc2UuCiAgIFRoZSB2YXJpYWJsZSBAY29kZXt3MzItdXNlLXZp c2libGUtc3lzdGVtLWNhcmV0fSBpcyBhIGZsYWcgdGhhdAogZGV0ZXJtaW5lcyB3aGV0aGVyIHRv IG1ha2UgdGhlIHN5c3RlbSBjYXJldCB2aXNpYmxlLiAgVGhlIGRlZmF1bHQgd2hlbgogbm8gc2Ny ZWVuIHJlYWRlciBzb2Z0d2FyZSBpcyBpbiB1c2UgaXMgQGNvZGV7bmlsfSwgd2hpY2ggbWVhbnMg RW1hY3MKLWRyYXdzIGl0cyBvd24gY3Vyc29yIHRvIGluZGljYXRlIHRoZSBwb3NpdGlvbiBvZiBw b2ludC4gIEEKK2RyYXdzIGl0cyBvd24gY3Vyc29yIHRvIGluZGljYXRlIHRoZSBwb3NpdGlvbiBv ZiBwb2ludC4gQQogbm9uLUBjb2Rle25pbH0gdmFsdWUgbWVhbnMgRW1hY3Mgd2lsbCBpbmRpY2F0 ZSBwb2ludCBsb2NhdGlvbiB3aXRoIHRoZQogc3lzdGVtIGNhcmV0OyB0aGlzIGZhY2lsaXRhdGVz IHVzZSBvZiBzY3JlZW4gcmVhZGVyIHNvZnR3YXJlLCBhbmQgaXMKIHRoZSBkZWZhdWx0IHdoZW4g c3VjaCBzb2Z0d2FyZSBpcyBkZXRlY3RlZCB3aGVuIHJ1bm5pbmcgRW1hY3MuCkBAIC0xMjAwLDYg KzEyMDAsMzAgQEAgeW91IHNob3VsZCBzZXQgaXRzIHZhbHVlIGluIHlvdXIgaW5pdCBmaWxlIChA cHhyZWZ7SW5pdCBGaWxlfSksIGVpdGhlcgogZGlyZWN0bHkgb3IgdmlhIEBrYmR7TS14IGN1c3Rv bWl6ZS12YXJpYWJsZX0sIHdoaWNoIGxldHMgeW91IHNhdmUgdGhlCiBjdXN0b21pemVkIHZhbHVl LCBzZWUgQHJlZntTYXZpbmcgQ3VzdG9taXphdGlvbnN9LgogCitAdmluZGV4IHczMi11c2Utdmly dHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMKK0BjaW5kZXggV2luZG93cyBUZXJtaW5hbCwgV2luZG93 cyBDb25zb2xlLCBNUy1XaW5kb3dzCisgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBkaXNwbGF5IGZ1 bmN0aW9uYWxpdHkgZm9yIFdpbmRvd3MgQ29uc29sZQorZGlmZmVycyBmcm9tIHRoZSBpbXBsZW1l bnRhdGlvbiBmb3Igb3RoZXIgdGVybWluYWwgZW11bGF0b3JzLAorYmVjYXVzZSBoaXN0b3JpY2Fs bHksIFdpbmRvd3MgcmVxdWlyZWQgdXNlIG9mIGFuIGlkaW9zeW5jcmFjdGljIEFQSS4KK1RoYXQg QVBJIGxpbWl0ZWQgV2luZG93cyBDb25zb2xlIGRpc3BsYXkgb2YgRW1hY3MgdG8gMTYgYmFzaWMg Y29sb3JzLgorV2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIFdpbmRvd3MgVGVybWluYWwsIE1pY3Jv c29mdCBpbXBsZW1lbnRlZAorc3VwcG9ydCBmb3IgQVNDSUkgY29udHJvbCBzZXF1ZW5jZXMsIG1v ZGVsbGVkIG9uIHRoZSBWVDEwMCBhbmQgWHRlcm0sCithbmQgMjQtYml0IFJCRyBjb2xvciBkaXNw bGF5LgorCisgIFRoZSB2YXJpYWJsZSBAY29kZXt3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2Vx dWVuY2VzfSBkZXRlcm1pbmVzCit3aGV0aGVyIHRoaXMgbmV3ZXIgbWVjaGFuaXNtIGlzIHVzZWQg Zm9yIGRpc3BsYXksIG9yIHRoZSBvbGRlciBvbmUuCitJdCBpcyBhdXRvbWF0aWNhbGx5IHNldCBi YXNlZCBvbiB5b3VyIHRlcm1pbmFsJ3MgY2FwYWJpbGl0aWVzIG9uCitzdGFydHVwLiBJZiBpdCBp cyBub24tbmlsLCBFbWFjcyB3aWxsIHVzZSBBU0NJSSBlc2NhcGUgc2VxdWVuY2VzIGZvcgorY3Vy c29yIGFuZCBjb2xvciBkaXNwbGF5LiBCeSBkZWZhdWx0LCAyNC1iaXQgUkdCIGNvbG9yIHdpbGwg YmUgdXNlZCwKK2J1dCBvdGhlciAoOCwgMTYsIDI1NikgY29sb3Igc3BhY2VzIG1heSBiZSB1c2Vk LCBieSBwYXNzaW5nIHRoZQorQGNvZGV7LS1jb2xvcn0gY29tbWFuZCBsaW5lIGFyZ3VtZW50LCBv ciBzZXR0aW5nIHRoZSB2YWx1ZSBvZiB0aGUKK0Bjb2Rle3R0eS1jb2xvci1tb2RlfSBmcmFtZSBw YXJhbWV0ZXIuCisKKyAgQW55IHRpbWUgQGNvZGV7dzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNl cXVlbmNlc30gaXMgc2V0IG1hbnVhbGx5LAordGhlIGNoYW5nZSBpbiB2YWx1ZSBzaG91bGQgYmUg aW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYSBjYWxsIHRvCitAY29kZXtzZXQtZnJhbWUtcGFyYW1l dGVyfSAocmUpc2V0dGluZyBAY29kZXsndHR5LWNvbG9yLW1vZGV9LCBvcgorYXQgdmVyeSBsZWFz dCwgYSBjYWxsIHRvIEBjb2Rle3czMmNvbi1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlc30uCisK IEBpZm5vdHRleAogQGluY2x1ZGUgbXNkb3MteHRyYS50ZXhpCiBAZW5kIGlmbm90dGV4CmRpZmYg LS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IGUwYzRmM2NiODcxLi4zYjI3NDAyNzdh ZCAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTMyMjgsNiArMzIyOCwx OCBAQCBBY2NvcmRpbmdseSwgd2UgaGF2ZSByZXZpc2VkIG91ciByZWNvbW1lbmRhdGlvbnMgZm9y IGEgc3VpdGFibGUgREpHUFAKIHRvb2xjaGFpbiB0byBHQ0MgMTQuMi4wIGFuZCBCaW51dGlscyAy LjM1LjEgaW4gbGlldSBvZiBHQ0MgMy40LnggYW5kCiBCaW51dGlscyAyLjI2LgogCisrKysKKyoq IFdpbmRvd3MgVGVybWluYWwgbm93IGRpc3BsYXlzIDI0LWJpdCBSR0IuCitQcmV2aW91c2x5LCB0 ZXJtaW5hbCBzZXNzaW9ucyBvbiBXaW5kb3dzIHN1cHBvcnRlZCBkaXNwbGF5IG9mIDE2Citjb2xv cnMuIFRoZXJlIGlzIG5vdyBzdXBwb3J0IGZvciAyNTYgYW5kIDI0LWJpdCBSR0IgY29sb3IuIFRo ZSBuZXcKK21lY2hhbmlzbSB3aWxsIGJlIGVuYWJsZWQgYXV0b21hdGljYWxseSB3aGVuIHN1cHBv cnRlZC4gSXQgZGVmYXVsdHMKK3RvIDI0LWJpdCBSR0IgY29sb3IsIGJ1dCBjYW4gYmUgc2V0IHRv IDgsIDE2LCAyNTYsIG9yICcyNGJpdCcgYnkKK3Bhc3NpbmcgdGhlICctLWNvbG9yJyBmbGFnIG9y IHNldHRpbmcgdGhlICd0dHktY29sb3ItbW9kZScgZnJhbWUKK3BhcmFtZXRlci4gSXQgY2FuIGJl IGRpc2FibGVkL2VuYWJsZWQgYnkgc2V0dGluZyB0aGUgdmFyaWFibGUKKyd3MzItdXNlLXZpcnR1 YWwtdGVybWluYWwtc2VxdWVuY2VzJy4KKworU2VlIHRoZSBtYW51YWwgZW50cnkgc3BlY2lmaWMg dG8gTVMtV2luZG93cyBmb3IgbW9yZSBkZXRhaWxzLgorCiAMCiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBUaGlz IGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCmRpZmYgLS1naXQgYS9saXNwL3Rlcm0vdHR5LWNv bG9ycy5lbCBiL2xpc3AvdGVybS90dHktY29sb3JzLmVsCmluZGV4IGRmZDIwN2Q3MWMxLi4xYmEw NDVjOGI3MSAxMDA2NDQKLS0tIGEvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwKKysrIGIvbGlzcC90 ZXJtL3R0eS1jb2xvcnMuZWwKQEAgLTc2NCw3ICs3NjQsOCBAQAogICAgIChhdXRvIC4gMCkKICAg ICAoYW5zaTggLiA4KQogICAgIChhbHdheXMgLiA4KQotICAgICh5ZXMgLiA4KSkKKyAgICAoeWVz IC4gOCkKKyAgICAoMjRiaXQgLiAxNjc3NzIxNikpCiAgICJBbiBhbGlzdCBvZiBzdXBwb3J0ZWQg c3RhbmRhcmQgdHR5IGNvbG9yIG1vZGVzIGFuZCB0aGVpciBhbGlhc2VzLiIpCiAKIChkZWZ1biB0 dHktY29sb3ItYWxpc3QgKCZvcHRpb25hbCBfZnJhbWUpCmRpZmYgLS1naXQgYS9saXNwL3Rlcm0v dzMyY29uc29sZS5lbCBiL2xpc3AvdGVybS93MzJjb25zb2xlLmVsCmluZGV4IDFiNDRkYTQ4YmY3 Li43YTI2MjA5NzQ5MiAxMDA2NDQKLS0tIGEvbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKKysrIGIv bGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKQEAgLTI0LDggKzI0LDcgQEAKIAogOzs7IENvZGU6CiAK LTs7IFczMiB1c2VzIGRpZmZlcmVudCBjb2xvciBpbmRleGVzIHRoYW4gc3RhbmRhcmQ6Ci0KKzs7 IFczMiB1c2VzIGRpZmZlcmVudCBjb2xvciBpbmRleGVzIHRoYW4gc3RhbmRhcmQKIChkZWZ2YXIg dzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMKICAgJygoImJsYWNrIiAgICAgICAgICAwICAgICAwICAg ICAwICAgICAwKQogICAgICgiYmx1ZSIgICAgICAgICAgIDEgICAgIDAgICAgIDAgNTI0ODApIDsg TWVkaXVtQmx1ZQpAQCAtNDMsNTYgKzQyLDEzMyBAQAogICAgICgibGlnaHRtYWdlbnRhIiAgMTMg NjU1MzUgICAgIDAgNjU1MzUpIDsgTWFnZW50YQogICAgICgieWVsbG93IiAgICAgICAgMTQgNjU1 MzUgNjU1MzUgICAgIDApIDsgWWVsbG93CiAgICAgKCJ3aGl0ZSIgICAgICAgICAxNSA2NTUzNSA2 NTUzNSA2NTUzNSkpCi0iQSBsaXN0IG9mIFZHQSBjb25zb2xlIGNvbG9ycywgdGhlaXIgaW5kaWNl cyBhbmQgMTYtYml0IFJHQiB2YWx1ZXMuIikKKyAgIkEgbGlzdCBvZiBWR0EgY29uc29sZSBjb2xv cnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJpdCBSR0IgdmFsdWVzLiIpCisKKzs7IFdoZW4gdXNp bmcgVlQgc2VxdWVuY2VzIGZvciBjb2xvciwgdXNlIHh0ZXJtLWxpa2UgaW5kaWNlcworKGRlZnZh ciB3MzItdHR5LXZpcnR1YWwtdGVybWluYWwtYmFzZS1jb2xvcnMKKyAgJygoImJsYWNrIiAgICAg ICAgICAwICAgICAwICAgICAwICAgICAwKQorICAgICgicmVkIiAgICAgICAgICAgIDEgNDU1Njgg IDg3MDQgIDg3MDQpIDsgRmlyZUJyaWNrCisgICAgKCJncmVlbiIgICAgICAgICAgMiAgODcwNCAz NTU4NCAgODcwNCkgOyBGb3Jlc3RHcmVlbgorICAgICgiYnJvd24iICAgICAgICAgIDMgNDA5NjAg MjA5OTIgMTE1MjApIDsgU2llbm5hCisgICAgKCJibHVlIiAgICAgICAgICAgNCAgICAgMCAgICAg MCA1MjQ4MCkgOyBNZWRpdW1CbHVlCisgICAgKCJtYWdlbnRhIiAgICAgICAgNSAzNTU4NCAgICAg MCAzNTU4NCkgOyBEYXJrTWFnZW50YQorICAgICgiY3lhbiIgICAgICAgICAgIDYgICAgIDAgNTI3 MzYgNTM1MDQpIDsgRGFya1R1cnF1b2lzZQorICAgICgibGlnaHRncmF5IiAgICAgIDcgNDg2NDAg NDg2NDAgNDg2NDApIDsgR3JheQorICAgICgiZGFya2dyYXkiICAgICAgIDggMjYxMTIgMjYxMTIg MjYxMTIpIDsgR3JheTQwCisgICAgKCJsaWdodHJlZCIgICAgICAgOSA2NTUzNSAgICAgMCAgICAg MCkgOyBSZWQKKyAgICAoImxpZ2h0Z3JlZW4iICAgIDEwICAgICAwIDY1NTM1ICAgICAwKSA7IEdy ZWVuCisgICAgKCJ5ZWxsb3ciICAgICAgICAxMSA2NTUzNSA2NTUzNSAgICAgMCkgOyBZZWxsb3cK KyAgICAoImxpZ2h0Ymx1ZSIgICAgIDEyICAgICAwICAgICAwIDY1NTM1KSA7IEJsdWUKKyAgICAo ImxpZ2h0bWFnZW50YSIgIDEzIDY1NTM1ICAgICAwIDY1NTM1KSA7IE1hZ2VudGEKKyAgICAoImxp Z2h0Y3lhbiIgICAgIDE0ICAgICAwIDY1NTM1IDY1NTM1KSA7IEN5YW4KKyAgICAoIndoaXRlIiAg ICAgICAgIDE1IDY1NTM1IDY1NTM1IDY1NTM1KSkKKyAgIkEgbGlzdCBvZiBWR0EgY29uc29sZSBj b2xvcnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJpdCBSR0IgdmFsdWVzLiIpCiAKIChkZWNsYXJl LWZ1bmN0aW9uIHgtc2V0dXAtZnVuY3Rpb24ta2V5cyAidGVybS9jb21tb24td2luIiAoZnJhbWUp KQogKGRlY2xhcmUtZnVuY3Rpb24gZ2V0LXNjcmVlbi1jb2xvciAidzMyY29uc29sZS5jIiAoKSkK IChkZWNsYXJlLWZ1bmN0aW9uIHczMi1nZXQtY29uc29sZS1jb2RlcGFnZSAidzMycHJvYy5jIiAo KSkKIChkZWNsYXJlLWZ1bmN0aW9uIHczMi1nZXQtY29uc29sZS1vdXRwdXQtY29kZXBhZ2UgIncz MnByb2MuYyIgKCkpCiAKKyhkZWZ1biB3MzJjb24tZGVmaW5lLWJhc2UtY29sb3JzICgpCisgICJE ZWZpbmVzIGJhc2UgMTYtY29sb3Igc3BhY2UgZm9yIHczMiBjb25zb2xlLiIKKyAgKGxldCogKChj b2xvcnMgKGlmIHczMi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMKKyAgICAgICAgICAg ICAgICAgICAgIHczMi10dHktdmlydHVhbC10ZXJtaW5hbC1iYXNlLWNvbG9ycworICAgICAgICAg ICAgICAgICAgIHczMi10dHktc3RhbmRhcmQtY29sb3JzKSkKKyAgICAgICAgIChuYmFzZSAobGVu Z3RoIGNvbG9ycykpCisgICAgICAgICAoY29sb3IgKGNhciBjb2xvcnMpKSkKKyAgICAocHJvZ24g KHdoaWxlIGNvbG9ycworICAgICAgICAgICAgICh0dHktY29sb3ItZGVmaW5lIChjYXIgY29sb3Ip IChjYWRyIGNvbG9yKSAoY2RkciBjb2xvcikpCisgICAgICAgICAgICAgKHNldHEgY29sb3JzIChj ZHIgY29sb3JzKQorICAgICAgICAgICAgICAgICAgIGNvbG9yICAoY2FyIGNvbG9ycykpKQorICAg ICAgICAgICBuYmFzZSkpKQorCis7OyBOb3RlOiB0dHktY29sb3ItZGVmaW5lIHN3YXBzIHBhc3Nl ZCBpbmRleCBmb3IgcGl4ZWwgb24gMjRiaXQgdGVybWluYWwKKzs7IFNvLCB3ZSBuZWVkIHRoaXMg ZnVuY3Rpb24gdG8gInJlY292ZXIiIHRoZSB0ZXJtaW5hbCdzIG5hdGl2ZSBtYXBwaW5nCisoZGVm dW4gdzMyY29uLWdldC1waXhlbCAoaW5kZXgpCisgICJDb252ZXJ0IGEgYmFzZS1jb2xvciBpbmRl eCBpbnRvIGEgcGl4ZWwgKGluZGV4IGludG8gMjRiaXQgbWFwKSIKKyAgKGxldCAoKGNvbG9yIChu dGggaW5kZXggdzMyLXR0eS12aXJ0dWFsLXRlcm1pbmFsLWJhc2UtY29sb3JzKSkpCisgICAgKG9y ICh0dHktY29sb3ItMjRiaXQgKGNkZHIgY29sb3IpKSBpbmRleCkpKQorCisoZGVmdW4gdzMyY29u LWRlZmluZS0yNTYtY29sb3JzICgpCisgICJEZWZpbmVzIDI1Ni1jb2xvciBzcGFjZSBmb3IgdzMy IGNvbnNvbGUuIgorICAobGV0ICgociAwKSAoYiAwKSAoZyAwKQorICAgICAgICAobiAoLSAyNTYg KHczMmNvbi1kZWZpbmUtYmFzZS1jb2xvcnMpKSkKKyAgICAgICAgKGNvbnZlcnQtdG8tMTZiaXQg KGxhbWJkYSAocHJpbSkgKGxvZ2lvciBwcmltIChhc2ggcHJpbSA4KSkpKSkKKyAgICAod2hpbGUg KD4gbiAyNCkgOyBub24tZ3JleQorICAgICAgKGxldCAoKGkgKC0gMjU2IG4pKQorICAgICAgICAg ICAgKGMgKG1hcGNhciBjb252ZXJ0LXRvLTE2Yml0CisgICAgICAgICAgICAgICAgICAgICAgICht YXBjYXIgKGxhbWJkYSAoeCkgKGlmICh6ZXJvcCB4KSAwICgrICgqIHggNDApIDU1KSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgciBnIGIpKSkpKQorICAgICAgICAodHR5 LWNvbG9yLWRlZmluZSAoZm9ybWF0ICJjb2xvci0lZCIgaSkgaSBjKSkKKyAgICAgIChzZXRxIGIg KDErIGIpKQorICAgICAgKHdoZW4gKD4gYiA1KSAoc2V0cSBnICgxKyBnKSBiIDApKQorICAgICAg KHdoZW4gKD4gZyA1KSAoc2V0cSByICgxKyByKSBnIDApKQorICAgICAgKHNldHEgbiAoMS0gbikp KQorICAgICh3aGlsZSAoPiBuIDApIDsgYWxsLWdyZXkKKyAgICAgIChsZXQqICgoaSAoLSAyNTYg bikpCisgICAgICAgICAgICAgKHYgKGZ1bmNhbGwgY29udmVydC10by0xNmJpdCAoKyA4ICgqICgt IDI0IG4pIDEwKSkpKQorICAgICAgICAgICAgIChjIChsaXN0IHYgdiB2KSkpCisgICAgICAgICh0 dHktY29sb3ItZGVmaW5lIChmb3JtYXQgImNvbG9yLSVkIiBpKSBpIGMpKQorICAgICAgKHNldHEg biAoMS0gbikpKSkpCisKKyhkZWZ1biB3MzJjb24tZGVmaW5lLTI0Yml0LWNvbG9ycyAoKQorICAi RGVmaW5lcyAyNC1iaXQgY29sb3Igc3BhY2UgZm9yIHczMiBjb25zb2xlLiIKKyAgKGxldCAoKGkg KHczMmNvbi1kZWZpbmUtYmFzZS1jb2xvcnMpKSkKKyAgICAobWFwYyAobGFtYmRhIChjKSAodW5s ZXNzIChhc3NvYyAoY2FyIGMpIHczMi10dHktc3RhbmRhcmQtY29sb3JzKQorICAgICAgICAgICAg ICAgICAgICh0dHktY29sb3ItZGVmaW5lIChjYXIgYykgaSAoY2RyIGMpKQorICAgICAgICAgICAg ICAgICAgIChzZXRxIGkgKDErIGkpKSkpCisgICAgICAgICAgY29sb3ItbmFtZS1yZ2ItYWxpc3Qp KSkKKwogKGRlZnVuIHRlcm1pbmFsLWluaXQtdzMyY29uc29sZSAoKQogICAiVGVybWluYWwgaW5p dGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIHczMiBjb25zb2xlLiIKICAgOzsgU2hhcmUgZnVuY3Rp b24ga2V5IGluaXRpYWxpemF0aW9uIHdpdGggdzMyIGd1aSBmcmFtZXMKICAgKHgtc2V0dXAtZnVu Y3Rpb24ta2V5cyAoc2VsZWN0ZWQtZnJhbWUpKQogICA7OyBTZXQgdGVybWluYWwgYW5kIGtleWJv YXJkIGVuY29kaW5ncyB0byB0aGUgY3VycmVudCBPRU0gY29kZXBhZ2UuCiAgIChsZXQgKChvZW0t Y29kZS1wYWdlLWNvZGluZwotCSAoaW50ZXJuIChmb3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNv bGUtY29kZXBhZ2UpKSkpCi0JKG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZwotCSAoaW50ZXJu IChmb3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtb3V0cHV0LWNvZGVwYWdlKSkpKQotCW9l bS1jcy1wIG9lbS1vLWNzLXApCi0JKHNldHEgb2VtLWNzLXAgKGNvZGluZy1zeXN0ZW0tcCBvZW0t Y29kZS1wYWdlLWNvZGluZykpCi0JKHNldHEgb2VtLW8tY3MtcCAoY29kaW5nLXN5c3RlbS1wIG9l bS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZykpCi0JKHdoZW4gb2VtLWNzLXAKLQkgIChzZXQta2V5 Ym9hcmQtY29kaW5nLXN5c3RlbSBvZW0tY29kZS1wYWdlLWNvZGluZykKLQkgIChzZXQtdGVybWlu YWwtY29kaW5nLXN5c3RlbQotCSAgIChpZiBvZW0tby1jcy1wIG9lbS1jb2RlLXBhZ2Utb3V0cHV0 LWNvZGluZyBvZW0tY29kZS1wYWdlLWNvZGluZykpCi0gICAgICAgICAgOzsgU2luY2Ugd2UgY2hh bmdlZCB0aGUgdGVybWluYWwgZW5jb2RpbmcsIHdlIG5lZWQgdG8gcmVwZWF0Ci0gICAgICAgICAg OzsgdGhlIHRlc3QgZm9yIFVuaWNvZGUgcXVvdGVzIGJlaW5nIGRpc3BsYXlhYmxlLgotICAgICAg ICAgIChzdGFydHVwLS1zZXR1cC1xdW90ZS1kaXNwbGF5KSkpCi0gIChsZXQqICgoY29sb3JzIHcz Mi10dHktc3RhbmRhcmQtY29sb3JzKQotICAgICAgICAgKGNvbG9yIChjYXIgY29sb3JzKSkpCi0g ICAgKHR0eS1jb2xvci1jbGVhcikKLSAgICAod2hpbGUgY29sb3JzCi0gICAgICAodHR5LWNvbG9y LWRlZmluZSAoY2FyIGNvbG9yKSAoY2FkciBjb2xvcikgKGNkZHIgY29sb3IpKQotICAgICAgKHNl dHEgY29sb3JzIChjZHIgY29sb3JzKQotICAgICAgICAgICAgY29sb3IgKGNhciBjb2xvcnMpKSkp Ci0gIChjbGVhci1mYWNlLWNhY2hlKQotICA7OyBGaWd1cmUgb3V0IHdoYXQgYXJlIHRoZSBjb2xv cnMgb2YgdGhlIGNvbnNvbGUgd2luZG93LCBhbmQgc2V0IHVwCi0gIDs7IHRoZSBiYWNrZ3JvdW5k LW1vZGUgY29ycmVzcG9uZGluZ2x5LgotICAobGV0KiAoKHNjcmVlbi1jb2xvciAoZ2V0LXNjcmVl bi1jb2xvcikpCi0JIChiZyAoY2FkciBzY3JlZW4tY29sb3IpKQotCSAoZGVzY3IgKHR0eS1jb2xv ci1ieS1pbmRleCBiZykpCi0JIHIgZyBiIGJnLW1vZGUpCi0gICAgKHNldHEgciAobnRoIDIgZGVz Y3IpCi0JICBnIChudGggMyBkZXNjcikKLQkgIGIgKG50aCA0IGRlc2NyKSkKLSAgICAoaWYgKDwg KCsgciBnIGIpICgqIC42ICgrIDY1NTM1IDY1NTM1IDY1NTM1KSkpCi0JKHNldHEgYmctbW9kZSAn ZGFyaykKLSAgICAgIChzZXRxIGJnLW1vZGUgJ2xpZ2h0KSkKLSAgICAoc2V0LXRlcm1pbmFsLXBh cmFtZXRlciBuaWwgJ2JhY2tncm91bmQtbW9kZSBiZy1tb2RlKSkKLSAgKHR0eS1zZXQtdXAtaW5p dGlhbC1mcmFtZS1mYWNlcykKKyAgICAgICAgIChpbnRlcm4gKGZvcm1hdCAiY3AlZCIgKHczMi1n ZXQtY29uc29sZS1jb2RlcGFnZSkpKSkKKyAgICAgICAgKG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNv ZGluZworICAgICAgICAgKGludGVybiAoZm9ybWF0ICJjcCVkIiAodzMyLWdldC1jb25zb2xlLW91 dHB1dC1jb2RlcGFnZSkpKSkKKyAgICAgICAgb2VtLWNzLXAgb2VtLW8tY3MtcCkKKyAgICAoc2V0 cSBvZW0tY3MtcCAoY29kaW5nLXN5c3RlbS1wIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKKyAgICAo c2V0cSBvZW0tby1jcy1wIChjb2Rpbmctc3lzdGVtLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQtY29k aW5nKSkKKyAgICAod2hlbiBvZW0tY3MtcAorICAgICAgKHNldC1rZXlib2FyZC1jb2Rpbmctc3lz dGVtIG9lbS1jb2RlLXBhZ2UtY29kaW5nKQorICAgICAgKHNldC10ZXJtaW5hbC1jb2Rpbmctc3lz dGVtCisgICAgICAgKGlmIG9lbS1vLWNzLXAgb2VtLWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nIG9l bS1jb2RlLXBhZ2UtY29kaW5nKSkKKyAgICAgIDs7IFNpbmNlIHdlIGNoYW5nZWQgdGhlIHRlcm1p bmFsIGVuY29kaW5nLCB3ZSBuZWVkIHRvIHJlcGVhdAorICAgICAgOzsgdGhlIHRlc3QgZm9yIFVu aWNvZGUgcXVvdGVzIGJlaW5nIGRpc3BsYXlhYmxlLgorICAgICAgKHN0YXJ0dXAtLXNldHVwLXF1 b3RlLWRpc3BsYXkpKSkKKyAgKHczMmNvbi1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlcykKICAg KHJ1bi1ob29rcyAndGVybWluYWwtaW5pdC13MzItaG9vaykpCiAKKyhkZWZ1biB3MzJjb24tc2V0 LXVwLWluaXRpYWwtZnJhbWUtZmFjZXMgKCkKKyAgIlNldCB1cCBpbml0aWFsIGZhY2UgY29sb3Ig c2NoZW1lIGR5bmFtaWNhbGx5IGJhc2VkIG9uIHRoZSBudW1iZXIgb2YKK2Rpc3BsYXkgY29sb3Jz IGFuZCB0aGUgdmFsdWUgb2YgYHczMi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXMnLiIK KyAgKHR0eS1jb2xvci1jbGVhcikKKyAgKGxldCAoKG5jb2xvcnMgKGRpc3BsYXktY29sb3ItY2Vs bHMpKSkKKyAgICAoaWYgdzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworICAgICAg ICAoY29uZCAoKD0gbmNvbG9ycyAxNjc3NzIxNikgKHczMmNvbi1kZWZpbmUtMjRiaXQtY29sb3Jz KSkKKyAgICAgICAgICAgICAgKCg9IG5jb2xvcnMgMjY1ICAgICAgICh3MzJjb24tZGVmaW5lLTI1 Ni1jb2xvcnMpKSkKKyAgICAgICAgICAgICAgKHQgICAgICAgICAgICAgICAgICAgICh3MzJjb24t ZGVmaW5lLWJhc2UtY29sb3JzKSkpCisgICAgICAodzMyY29uLWRlZmluZS1iYXNlLWNvbG9ycykp CisgICAgKGNsZWFyLWZhY2UtY2FjaGUpCisgICAgOzsgRmlndXJlIG91dCB3aGF0IGFyZSB0aGUg Y29sb3JzIG9mIHRoZSBjb25zb2xlIHdpbmRvdywgYW5kIHNldCB1cAorICAgIDs7IHRoZSBiYWNr Z3JvdW5kLW1vZGUgY29ycmVzcG9uZGluZ2x5LgorICAgIChsZXQqICgoc2NyZWVuLWNvbG9yIChn ZXQtc2NyZWVuLWNvbG9yKSkKKyAgICAgICAgICAgKGJhc2UtaW5kZXggKGNhZHIgc2NyZWVuLWNv bG9yKSkKKyAgICAgICAgICAgKGJnLXBpeGVsICh3MzJjb24tZ2V0LXBpeGVsIGJhc2UtaW5kZXgp KQorICAgICAgICAgICAoYmcgKGlmICg9IG5jb2xvcnMgMTY3NzcyMTYpIGJnLXBpeGVsIGJhc2Ut aW5kZXgpKQorICAgICAgICAgICAoZGVzY3IgKHR0eS1jb2xvci1ieS1pbmRleCBiZykpCisgICAg ICAgICAgIHIgZyBiIGJnLW1vZGUpCisgICAgICAoc2V0cSByIChudGggMiBkZXNjcikKKyAgICAg ICAgICAgIGcgKG50aCAzIGRlc2NyKQorICAgICAgICAgICAgYiAobnRoIDQgZGVzY3IpKQorICAg ICAgKGlmICg8ICgrIHIgZyBiKSAoKiAuNiAoKyA2NTUzNSA2NTUzNSA2NTUzNSkpKQorICAgICAg ICAgIChzZXRxIGJnLW1vZGUgJ2RhcmspCisgICAgICAgIChzZXRxIGJnLW1vZGUgJ2xpZ2h0KSkK KyAgICAgIChzZXQtdGVybWluYWwtcGFyYW1ldGVyIG5pbCAnYmFja2dyb3VuZC1tb2RlIGJnLW1v ZGUpKSkKKyAgKHR0eS1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlcykpCisKIChwcm92aWRlICd0 ZXJtL3czMmNvbnNvbGUpCiAKIDs7OyB3MzJjb25zb2xlLmVsIGVuZHMgaGVyZQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlcm0uYyBiL3NyYy90ZXJtLmMKaW5kZXggYTFlM2Y2MzEyYzYuLjZjMzExNmY3ZmNl IDEwMDY0NAotLS0gYS9zcmMvdGVybS5jCisrKyBiL3NyYy90ZXJtLmMKQEAgLTczLDcgKzczLDYg QEAgc3RhdGljIHZvaWQgY2xlYXJfdHR5X2hvb2tzIChzdHJ1Y3QgdGVybWluYWwgKnRlcm1pbmFs KTsKIHN0YXRpYyB2b2lkIHNldF90dHlfaG9va3MgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybWluYWwp Owogc3RhdGljIHZvaWQgZGlzc29jaWF0ZV9pZl9jb250cm9sbGluZ190dHkgKGludCBmZCk7CiBz dGF0aWMgdm9pZCBkZWxldGVfdHR5IChzdHJ1Y3QgdGVybWluYWwgKik7Ci0KICNlbmRpZiAvKiAh SEFWRV9BTkRST0lEICovCiAKIHN0YXRpYyBBVk9JRCBtYXliZV9mYXRhbCAoYm9vbCwgc3RydWN0 IHRlcm1pbmFsICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLApAQCAtMzQ2LDEwICszNDUs MTAgQEAgdHR5X2hpZGVfY3Vyc29yIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5KQogewog ICBpZiAodHR5LT5jdXJzb3JfaGlkZGVuID09IDApCiAgICAgewotICAgICAgdHR5LT5jdXJzb3Jf aGlkZGVuID0gMTsKICNpZmRlZiBXSU5ET1dTTlQKICAgICAgIHczMmNvbl9oaWRlX2N1cnNvciAo KTsKICNlbHNlCisgICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAxOwogICAgICAgT1VUUFVUX0lG ICh0dHksIHR0eS0+VFNfY3Vyc29yX2ludmlzaWJsZSk7CiAjZW5kaWYKICAgICB9CkBAIC0zNjMs MTAgKzM2MiwxMCBAQCB0dHlfc2hvd19jdXJzb3IgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0 dHkpCiB7CiAgIGlmICh0dHktPmN1cnNvcl9oaWRkZW4pCiAgICAgewotICAgICAgdHR5LT5jdXJz b3JfaGlkZGVuID0gMDsKICNpZmRlZiBXSU5ET1dTTlQKICAgICAgIHczMmNvbl9zaG93X2N1cnNv ciAoKTsKICNlbHNlCisgICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAwOwogICAgICAgT1VUUFVU X0lGICh0dHksIHR0eS0+VFNfY3Vyc29yX25vcm1hbCk7CiAgICAgICBpZiAodmlzaWJsZV9jdXJz b3IpCiAgICAgICAgIE9VVFBVVF9JRiAodHR5LCB0dHktPlRTX2N1cnNvcl92aXNpYmxlKTsKQEAg LTIyMDcsNyArMjIwNiw3IEBAIFRFUk1JTkFMIGRvZXMgbm90IHJlZmVyIHRvIGEgdGV4dCB0ZXJt aW5hbC4gICovKQogICByZXR1cm4gbWFrZV9maXhudW0gKHQgPyB0LT5kaXNwbGF5X2luZm8udHR5 LT5UTl9tYXhfY29sb3JzIDogMCk7CiB9CiAKLSNpZiAhZGVmaW5lZCBET1NfTlQgJiYgIWRlZmlu ZWQgSEFWRV9BTkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRlZmluZWQgSEFWRV9BTkRS T0lECiAKIC8qIERlY2xhcmUgaGVyZSByYXRoZXIgdGhhbiBpbiB0aGUgZnVuY3Rpb24sIGFzIGlu IHRoZSByZXN0IG9mIEVtYWNzLAogICAgdG8gd29yayBhcm91bmQgYW4gSFBVWCBjb21waWxlciBi dWcgKD8pLiBTZWUKQEAgLTIyNDYsNyArMjI0NSw3IEBAIHR0eV9kZWZhdWx0X2NvbG9yX2NhcGFi aWxpdGllcyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgYm9vbCBzYXZlKQogICAgTU9E RSdzIHZhbHVlIGlzIGdlbmVyYWxseSB0aGUgbnVtYmVyIG9mIGNvbG9ycyB3aGljaCB3ZSB3YW50 IHRvCiAgICBzdXBwb3J0OyB6ZXJvIG1lYW5zIHNldCB1cCBmb3IgdGhlIGRlZmF1bHQgY2FwYWJp bGl0aWVzLCB0aGUgb25lcwogICAgd2Ugc2F3IGF0IGluaXRfdHR5IHRpbWU7IC0xIG1lYW5zIHR1 cm4gb2ZmIGNvbG9yIHN1cHBvcnQuICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHR0eV9zZXR1cF9j b2xvcnMgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIGludCBtb2RlKQogewogICAvKiBD YW5vbmljYWxpemUgYWxsIG5lZ2F0aXZlIHZhbHVlcyBvZiBNT0RFLiAgKi8KQEAgLTIyNjQsMTgg KzIyNjMsNDIgQEAgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0 eSwgaW50IG1vZGUpCiAgICAgICBkZWZhdWx0OgogCXR0eV9kZWZhdWx0X2NvbG9yX2NhcGFiaWxp dGllcyAodHR5LCAwKTsKIAlicmVhazsKLSAgICAgIGNhc2UgODoJLyogOCBzdGFuZGFyZCBBTlNJ IGNvbG9ycyAqLwotCXR0eS0+VFNfb3JpZ19wYWlyID0gIlwwMzNbMG0iOworICAgICAgY2FzZSA4 OiAvKiA4IHN0YW5kYXJkIEFOU0kgY29sb3JzICovCisJdHR5LT5UU19vcmlnX3BhaXIgPSAiXHgx YlswbSI7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzMlZG0iOworCXR0eS0+VFNf c2V0X2JhY2tncm91bmQgPSAiXHgxYls0JWRtIjsKICNpZmRlZiBURVJNSU5GTwotCXR0eS0+VFNf c2V0X2ZvcmVncm91bmQgPSAiXDAzM1szJXAxJWRtIjsKLQl0dHktPlRTX3NldF9iYWNrZ3JvdW5k ID0gIlwwMzNbNCVwMSVkbSI7Ci0jZWxzZQotCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXDAz M1szJWRtIjsKLQl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlwwMzNbNCVkbSI7CisJdHR5LT5U U19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzMlcDElZG0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91 bmQgPSAiXHgxYls0JXAxJWRtIjsKKyNlbmRpZgorI2lmZGVmIFdJTkRPV1NOVAorCXR0eS0+VFNf b3JpZ19wYWlyID0gIlx4MWJbMzltXHgxYls0OW0iOworCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQg PSAiXHgxYlslbHVtIjsKKwl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbJWx1bSI7CiAj ZW5kaWYKIAl0dHktPlROX21heF9jb2xvcnMgPSA4OwogCXR0eS0+VE5fbm9fY29sb3JfdmlkZW8g PSAwOwogCWJyZWFrOworI2lmZGVmIFdJTkRPV1NOVAorICAgICAgY2FzZSAxNjoKKwl0dHktPlRT X3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbJWx1bSI7CisJdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9 ICJceDFiWyVsdW0iOworCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDE2OworCXR0eS0+VE5fbm9fY29s b3JfdmlkZW8gPSAwOworCWJyZWFrOworICAgICAgY2FzZSAyNTY6CisJdHR5LT5UTl9tYXhfY29s b3JzID0gMjU2OworCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlszODs1OyVsdW0iOwor CXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0ODs1OyVsdW0iOworCXR0eS0+VE5fbm9f Y29sb3JfdmlkZW8gPSAwOworCWJyZWFrOworICAgICAgY2FzZSAxNjc3NzIxNjoKKwl0dHktPlRO X21heF9jb2xvcnMgPSAxNjc3NzIxNjsKKwl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJb Mzg7MjslbHU7JWx1OyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0ODsy OyVsdTslbHU7JWx1bSI7CisJdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisJYnJlYWs7Cisj ZW5kaWYKICAgICB9CiB9CiAKQEAgLTIzMDcsMTIgKzIzMzAsMTYgQEAgc2V0X3R0eV9jb2xvcl9t b2RlIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBzdHJ1Y3QgZnJhbWUgKmYpCiAgICAg ewogICAgICAgdHR5LT5wcmV2aW91c19jb2xvcl9tb2RlID0gbW9kZTsKICAgICAgIHR0eV9zZXR1 cF9jb2xvcnMgKHR0eSAsIG1vZGUpOwotICAgICAgLyogIFRoaXMgcmVjb21wdXRlcyBhbGwgdGhl IGZhY2VzIGdpdmVuIHRoZSBuZXcgY29sb3IgZGVmaW5pdGlvbnMuICAqLworICAgICAgLyogIFRo aXMgcmVjb21wdXRlcyBhbGwgdGhlIGZhY2VzIGdpdmVuIHRoZSBuZXcgY29sb3IgZGVmaW5pdGlv bnMuICovCisjaWZkZWYgV0lORE9XU05UCisgICAgICBzYWZlX2NhbGxuIChRdzMyY29uX3NldF91 cF9pbml0aWFsX2ZyYW1lX2ZhY2VzKTsKKyNlbHNlCiAgICAgICBzYWZlX2NhbGxuIChRdHR5X3Nl dF91cF9pbml0aWFsX2ZyYW1lX2ZhY2VzKTsKKyNlbmRpZgogICAgIH0KIH0KIAotI2VuZGlmIC8q ICFET1NfTlQgJiYgIUhBVkVfQU5EUk9JRCAqLworI2VuZGlmIC8qICFNU0RPUyAmJiAhSEFWRV9B TkRST0lEICovCiAKIGNoYXIgKgogdHR5X3R5cGVfbmFtZSAoTGlzcF9PYmplY3QgdGVybWluYWwp CkBAIC00NTg2LDggKzQ2MTMsOCBAQCB1c2UgdGhlIEJvdXJuZSBzaGVsbCBjb21tYW5kICdURVJN PS4uLjsgZXhwb3J0IFRFUk0nIChDLXNoZWxsOlxuXAogCQkgfHwgKChiZyA9IGdldGVudiAoIkNP TE9SVEVSTSIpKSAhPSBOVUxMCiAJCSAgICAgJiYgc3RyY2FzZWNtcCAoYmcsICJ0cnVlY29sb3Ii KSA9PSAwKSkKIAkgIHsKLQkgICAgdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJcMDMzWyU/JXAx JXs4fSU8JXQzJXAxJWQlZTM4OzI7JXAxJXs2NTUzNn0lLyVkOyVwMSV7MjU2fSUvJXsyNTV9JSYl ZDslcDElezI1NX0lJiVkJTttIjsKLQkgICAgdHR5LT5UU19zZXRfYmFja2dyb3VuZCA9ICJcMDMz WyU/JXAxJXs4fSU8JXQ0JXAxJWQlZTQ4OzI7JXAxJXs2NTUzNn0lLyVkOyVwMSV7MjU2fSUvJXsy NTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKKwkgICAgdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9 ICJceDFiWyU/JXAxJXs4fSU8JXQzJXAxJWQlZTM4OzI7JXAxJXs2NTUzNn0lLyVkOyVwMSV7MjU2 fSUvJXsyNTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKKwkgICAgdHR5LT5UU19zZXRfYmFja2dy b3VuZCA9ICJceDFiWyU/JXAxJXs4fSU8JXQ0JXAxJWQlZTQ4OzI7JXAxJXs2NTUzNn0lLyVkOyVw MSV7MjU2fSUvJXsyNTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKIAkgICAgdHR5LT5UTl9tYXhf Y29sb3JzID0gMTY3NzcyMTY7CiAJICB9CiAgICAgICB9CkBAIC00NjQxLDYgKzQ2NjgsMjcgQEAg dXNlIHRoZSBCb3VybmUgc2hlbGwgY29tbWFuZCAnVEVSTT0uLi47IGV4cG9ydCBURVJNJyAoQy1z aGVsbDpcblwKIAogICAgIGluaXRpYWxpemVfdzMyX2Rpc3BsYXkgKHRlcm1pbmFsLCAmd2lkdGgs ICZoZWlnaHQpOwogCisgICAgLyogMjRiaXQgUkdCIHN1cHBvcnQgaW4gV2luZG93cyAoMTArKSBU ZXJtaW5hbCBhbmQgQ29uc29sZSBIb3N0CisgICAgICAgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQu Y29tL2VuLXVzL3dpbmRvd3MvY29uc29sZS9jb25zb2xlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVu Y2VzICovCisgICAgdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisgICAgdHR5LT5UTl9tYXhf Y29sb3JzID0gMTY3NzcyMTY7CisgICAgdHR5LT5UU19vcmlnX3BhaXIgPSAiXHgxYlszOW1ceDFi WzQ5bSI7CisgICAgdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzM4OzI7JWx1OyVsdTsl bHVtIjsKKyAgICB0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbNDg7MjslbHU7JWx1OyVs dW0iOworCisgICAgLyogU2F2ZSBkZWZhdWx0IGNvbG9yIGNhcGFiaWxpdGllcyAqLworICAgIHR0 eV9kZWZhdWx0X2NvbG9yX2NhcGFiaWxpdGllcyAodHR5LCAxKTsKKworICAgIHR0eS0+VFNfZW50 ZXJfYm9sZF9tb2RlID0gIlx4MWJbMW0iOworICAgIHR0eS0+VFNfZW50ZXJfaXRhbGljX21vZGUg PSAiXHgxYlszbSI7CisgICAgdHR5LT5UU19lbnRlcl9zdHJpa2VfdGhyb3VnaF9tb2RlID0gIlx4 MWJbOW0iOworICAgIHR0eS0+VFNfZW50ZXJfdW5kZXJsaW5lX21vZGUgPSAiXHgxYls0bSI7Cisg ICAgdHR5LT5UU19leGl0X3VuZGVybGluZV9tb2RlID0gIlx4MWJbMjRtIjsKKyAgICB0dHktPlRT X2VudGVyX3JldmVyc2VfbW9kZSA9ICJceDFiWzdtIjsKKyAgICB0dHktPlRTX2V4aXRfYXR0cmli dXRlX21vZGUgPSAiXHgxYlswbSI7CisgICAgdHR5LT5UU19jdXJzb3JfaW52aXNpYmxlID0gIlx4 MWJbPzI1bCI7CisgICAgdHR5LT5UU19jdXJzb3JfdmlzaWJsZSA9ICJceDFiWz8yNWgiOworCiAg ICAgRnJhbWVSb3dzICh0dHkpID0gaGVpZ2h0OwogICAgIEZyYW1lQ29scyAodHR5KSA9IHdpZHRo OwogICAgIHR0eS0+c3BlY2lmaWVkX3dpbmRvdyA9IGhlaWdodDsKQEAgLTQ2ODYsNyArNDczNCw2 IEBAIHVzZSB0aGUgQm91cm5lIHNoZWxsIGNvbW1hbmQgJ1RFUk09Li4uOyBleHBvcnQgVEVSTScg KEMtc2hlbGw6XG5cCiAgICAgIGRvbid0IHRoaW5rIHdlJ3JlIGxvc2luZyBhbnl0aGluZyBieSB0 dXJuaW5nIGl0IG9mZi4gICovCiAgIHR0eS0+bGluZV9pbnNfZGVsX29rID0gMDsKIAotICB0dHkt PlROX21heF9jb2xvcnMgPSAxNjsgIC8qIE11c3QgYmUgbm9uLXplcm8gZm9yIHR0eS1kaXNwbGF5 LWNvbG9yLXAuICAqLwogI2VuZGlmCS8qIERPU19OVCAqLwogCiAjaWZkZWYgSEFWRV9HUE0KQEAg LTUyMDIsMTEgKzUyNDksMTEgQEAgbm9uLW5pbCB0byBlbmFibGUgdGhpcyBvcHRpbWl6YXRpb24u ICAqLyk7CiAgIGRlZnN1YnIgKCZTdHR5X2Rpc3BsYXlfcGl4ZWxfd2lkdGgpOwogICBkZWZzdWJy ICgmU3R0eV9kaXNwbGF5X3BpeGVsX2hlaWdodCk7CiAKLSNpZiAhZGVmaW5lZCBET1NfTlQgJiYg IWRlZmluZWQgSEFWRV9BTkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRlZmluZWQgSEFW RV9BTkRST0lECiAgIGRlZmF1bHRfb3JpZ19wYWlyID0gTlVMTDsKICAgZGVmYXVsdF9zZXRfZm9y ZWdyb3VuZCA9IE5VTEw7CiAgIGRlZmF1bHRfc2V0X2JhY2tncm91bmQgPSBOVUxMOwotI2VuZGlm IC8qICFET1NfTlQgJiYgIUhBVkVfQU5EUk9JRCAqLworI2VuZGlmIC8qICFNU0RPUyAmJiAhSEFW RV9BTkRST0lEICovCiAKICNpZm5kZWYgSEFWRV9BTkRST0lECiAgIGVuY29kZV90ZXJtaW5hbF9z cmMgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlcm1jaGFyLmggYi9zcmMvdGVybWNoYXIuaApp bmRleCBlY2UzYTY3NmM2ZS4uMTNhZDJmMGE3MmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXJtY2hhci5o CisrKyBiL3NyYy90ZXJtY2hhci5oCkBAIC0yNDksNCArMjQ5LDYgQEAgc3RydWN0IGlucHV0X2V2 ZW50OwogZXh0ZXJuIExpc3BfT2JqZWN0IHR0eV9oYW5kbGVfdGFiX2Jhcl9jbGljayAoc3RydWN0 IGZyYW1lICosIGludCwgaW50LCBib29sLAogCQkJCQkgICAgIHN0cnVjdCBpbnB1dF9ldmVudCAq KTsKIAorZXh0ZXJuIHZvaWQgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2lu Zm8gKnR0eSwgaW50IG1vZGUpOworCiAjZW5kaWYgLyogRU1BQ1NfVEVSTUNIQVJfSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL3czMmNvbnNvbGUuYyBiL3NyYy93MzJjb25zb2xlLmMKaW5kZXggMWJjYTBj YWRmZjkuLjQ3ZDgxZjUyZDJiIDEwMDY0NAotLS0gYS9zcmMvdzMyY29uc29sZS5jCisrKyBiL3Ny Yy93MzJjb25zb2xlLmMKQEAgLTE5LDEyICsxOSw2MiBAQCBhbG9uZyB3aXRoIEdOVSBFbWFjcy4g IElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogLyoKICAg IFRpbSBGbGVlaGFydCAoYXBvbGxvQG9ubGluZS5jb20pCQkxLTE3LTkyCiAgICBHZW9mZiBWb2Vs a2VyICh2b2Vsa2VyQGNzLndhc2hpbmd0b24uZWR1KQk5LTEyLTkzCisgICBFd2FuIFRvd25zaGVu ZCAoZXdhbkBldG93bi5kZXYpICAgICAgICAgICAgICAyMDI1LTA4CisKKyAgIGMuIH4gMjAyNToK KyAgICogMjRiaXQgUkdCIHN1cHBvcnQgaW4gV2luZG93cyAoMTArKSBUZXJtaW5hbAorICAgKiBN aWNyb3NvZnQgbW92aW5nIGF3YXkgZnJvbSBpZGlvc3luY3JhdGljIEFQSSwgdG93YXJkIEFTQ0lJ IGNvbnRyb2xzCisKKyAgIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dz L2NvbnNvbGUvY29uc29sZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworCisgICBGb3IgcmVm ZXJlbmNlIChtb3JlIGRlZmluZWQgYXQgbGluayBhYm92ZSk6CisKKyAgICogImNsZWFyIiA6PSBv dmVyd3JpdGUgd2l0aCBzcGFjZSBjaGFyYWN0ZXIKKworICAgXHgxYlswSiA9PiBjbGVhciBjdXJz b3IgKGluY2x1c2l2ZSkgdG8gZW5kIG9mIHNjcmVlbgorICAgXHgxYlsxSiA9PiBjbGVhciBiZWdp bm5pbmcgb2Ygc2NyZWVuIHRvIGN1cnNvciAoaW5jbHVzaXZlKQorICAgXHgxYlsySiA9PiBjbGVh ciBlbnRpcmUgc2NyZWVuIChleGNsdWRpbmcgc2Nyb2xsYmFjayBhcmVhKQorICAgXHgxYlszSiA9 PiBjbGVhciBzY3JvbGxiYWNrIGFyZWEKKworICAgXHgxYlswSyA9PiBjbGVhciBjdXJzb3IgKGlu Y2x1c2l2ZSkgdG8gZW5kIG9mIGxpbmUKKyAgIFx4MWJbMUsgPT4gY2xlYXIgYmVnaW5uaW5nIG9m IGxpbmUgdG8gY3Vyc29yIChpbmNsdXNpdmUpCisgICBceDFiWzJLID0+IGNsZWFyIGVudGlyZSBs aW5lCisKKyAgIFx4MWJbPG4+QCA9PiBpbnNlcnQgPG4+IHNwYWNlcyBhdCBjdXJzb3IsIHNoaWZ0 IGN1cnJlbnQgdGV4dCByaWdodAorICAgXHgxYls8bj5QID0+IGRlbGV0ZSA8bj4gY2hhcnMgIGF0 IGN1cnNvciwgYWRkaW5nIHNwYWNlcyBmcm9tIHJpZ2h0CisKKyAgIFx4MWJbNyAgICAgICAgPT4g c2F2ZSBjdXJzb3IgcG9zaXRpb24KKyAgIFx4MWJbOCAgICAgICAgPT4gcmVzdG9yZSBzYXZlZCBj dXJzb3IgcG9zaXRpb24KKyAgIFx4MWJbPHk+Ozx4PkggPT4gbW92ZSBjdXJzb3IgdG8gcm93IDx5 PiwgY29sIDx4PiAoMS1pbmRleGVkKQorICAgXHgxYls/MjVsICAgICA9PiBoaWRlIGN1cnNvcgor ICAgXHgxYls/MjVoICAgICA9PiBzaG93IGN1cnNvcgorCisgICBceDFiWzBtID0+IGFsbCBhdHRy aWJ1dGVzIG9mZgorICAgXHgxYlsxbSA9PiBib2xkCisgICBceDFiWzNtID0+IGl0YWxpYworICAg XHgxYls0bSA9PiB1bmRlcmxpbmUKKyAgIFx4MWJbN20gPT4gaW52ZXJzZSB2aWRlbworICAgXHgx Yls5bSA9PiBzdHJpa2UtdGhyb3VnaAorCisgICAqIDE2IGJhc2UgY29sb3JzIGRlZmluZWQgaW4g dzMyY29uc29sZS5lbAorICAgXHgxYlszPGk+ICAoPGk+IGluIDAuLjcpID0+IGZvcmVncm91bmQg PSAxNmNvbG9yc1tpXQorICAgXHgxYls0PGk+ICAoPGk+IGluIDAuLjcpID0+IGJhY2tncm91bmQg PSAxNmNvbG9yc1tpXQorICAgXHgxYls5PGk+ICAoPGk+IGluIDAuLjcpID0+IGZvcmVncm91bmQg PSAxNmNvbG9yc1tpICsgOF0KKyAgIFx4MWJbMTA8aT4gKDxpPiBpbiAwLi43KSA9PiBiYWNrZ3Jv dW5kID0gMTZjb2xvcnNbaSArIDhdCisKKyAgICogMjU2IGNvbG9ycyBmb2xsb3cgeHRlcm0KKyAg IFx4MWJbMzg8aT4gKDxpPiBpbiAwLi4yNTUpID0+IGZvcmVncm91bmQgPSAyNTZjb2xvcnNbaV0K KyAgIFx4MWJbNDg8aT4gKDxpPiBpbiAwLi4yNTUpID0+IGJhY2tncm91bmQgPSAyNTZjb2xvcnNb aV0KKworICAgKiAyNC1iaXQgY292ZXJzIGFsbCBuYW1lZCBjb2xvcnMgKHNlZSBjb2xvci1uYW1l LXJnYi1hbGlzdCkKKyAgIFx4MWJbMzg7Mjs8cj47PGc+OzxiPiA9PiBmb3JlZ3JvdW5kID0gKDxy PiwgPGc+LCA8Yj4pCisgICBceDFiWzQ4OzI7PHI+OzxnPjs8Yj4gPT4gYmFja2dyb3VuZCA9ICg8 cj4sIDxnPiwgPGI+KQogKi8KIAogCiAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0KICNpbmNsdWRlIDxz dGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAogI2lu Y2x1ZGUgImxpc3AuaCIKQEAgLTQwLDcgKzkwLDYgQEAgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJ ZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICNpbmNsdWRl ICJ3MzIuaCIJLyogZm9yIHN5bXNfb2ZfbnR0ZXJtICovCiAjZW5kaWYKIAotc3RhdGljIHZvaWQg dzMyY29uX21vdmVfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKmYsIGludCByb3csIGludCBjb2wpOwog c3RhdGljIHZvaWQgdzMyY29uX2NsZWFyX3RvX2VuZCAoc3RydWN0IGZyYW1lICpmKTsKIHN0YXRp YyB2b2lkIHczMmNvbl9jbGVhcl9mcmFtZSAoc3RydWN0IGZyYW1lICpmKTsKIHN0YXRpYyB2b2lk IHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAoc3RydWN0IGZyYW1lICpmLCBpbnQpOwpAQCAtNTEs MTMgKzEwMCwyOSBAQCBzdGF0aWMgdm9pZCB3MzJjb25fZGVsZXRlX2dseXBocyAoc3RydWN0IGZy YW1lICpmLCBpbnQgbik7CiBzdGF0aWMgdm9pZCB3MzJjb25fcmVzZXRfdGVybWluYWxfbW9kZXMg KHN0cnVjdCB0ZXJtaW5hbCAqdCk7CiBzdGF0aWMgdm9pZCB3MzJjb25fc2V0X3Rlcm1pbmFsX21v ZGVzIChzdHJ1Y3QgdGVybWluYWwgKnQpOwogc3RhdGljIHZvaWQgdzMyY29uX3VwZGF0ZV9iZWdp biAoc3RydWN0IGZyYW1lICogZik7Ci1zdGF0aWMgdm9pZCB3MzJjb25fdXBkYXRlX2VuZCAoc3Ry dWN0IGZyYW1lICogZik7CitzdGF0aWMgdm9pZCB3MzJjb25fdXBkYXRlX2VuZCAoc3RydWN0IGZy YW1lICpmKTsKK3N0YXRpYyBpbnQgIHczMmNvbl93cml0ZV92dF9zZXEgKGNoYXIgKik7CiBzdGF0 aWMgV09SRCB3MzJfZmFjZV9hdHRyaWJ1dGVzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lk KTsKK3N0YXRpYyB2b2lkIHR1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1lICosIGludCBmYWNlX2lk KTsKK3N0YXRpYyB2b2lkIHR1cm5fb2ZmX2ZhY2UgKHN0cnVjdCBmcmFtZSAqLCBpbnQgZmFjZV9p ZCk7CitzdGF0aWMgdm9pZCB3MzJjb25fbW92ZV9jdXJzb3IgKHN0cnVjdCBmcmFtZSAqZiwgaW50 IHJvdywgaW50IGNvbCk7Cit2b2lkIHczMmNvbl9zYXZlX2N1cnNvciAodm9pZCk7Cit2b2lkIHcz MmNvbl9yZXN0b3JlX2N1cnNvciAodm9pZCk7Cit2b2lkIHczMmNvbl9zaG93X2N1cnNvciAodm9p ZCk7Cit2b2lkIHczMmNvbl9oaWRlX2N1cnNvciAodm9pZCk7Cit2b2lkIHczMmNvbl9kcmF3X2N1 cnNvciAoc3RydWN0IGZyYW1lICpmKTsKIAotc3RhdGljIENPT1JECWN1cnNvcl9jb29yZHM7Ci1z dGF0aWMgSEFORExFCXByZXZfc2NyZWVuLCBjdXJfc2NyZWVuOwotc3RhdGljIFdPUkQJY2hhcl9h dHRyX25vcm1hbDsKLXN0YXRpYyBEV09SRAlwcmV2X2NvbnNvbGVfbW9kZTsKK3N0YXRpYyB1bnNp Z25lZCBsb25nIGdldF9waXhlbCAodW5zaWduZWQgbG9uZyBpbmRleCk7CisKK2V4dGVybiB2b2lk IHR0eV9zZXR1cF9jb2xvcnMgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIGludCBtb2Rl KTsKKworc3RhdGljIENPT1JEICAgIGN1cnNvcl9jb29yZHM7CitzdGF0aWMgQ09PUkQgICAgc2F2 ZWRfY29vcmRzOworc3RhdGljIEhBTkRMRSAgIHByZXZfc2NyZWVuLCBjdXJfc2NyZWVuOworc3Rh dGljIFdPUkQgICAgIGNoYXJfYXR0cl9ub3JtYWw7CitzdGF0aWMgV09SRCAgICAgYmdfbm9ybWFs Oworc3RhdGljIFdPUkQgICAgIGZnX25vcm1hbDsKK3N0YXRpYyBEV09SRCAgICBwcmV2X2NvbnNv bGVfbW9kZTsKIAogc3RhdGljIENPTlNPTEVfQ1VSU09SX0lORk8gY29uc29sZV9jdXJzb3JfaW5m bzsKICNpZm5kZWYgVVNFX1NFUEFSQVRFX1NDUkVFTgpAQCAtNjgsMTMgKzEzMywxNCBAQCBleHRl cm4gSEFORExFICBrZXlib2FyZF9oYW5kbGU7CiBIQU5ETEUgIGtleWJvYXJkX2hhbmRsZTsKIGlu dCB3MzJfY29uc29sZV91bmljb2RlX2lucHV0OwogCi0KLS8qIFNldHRpbmcgdGhpcyBhcyB0aGUg Y3RybCBoYW5kbGVyIHByZXZlbnRzIGVtYWNzIGZyb20gYmVpbmcga2lsbGVkIHdoZW4KLSAgIHNv bWVvbmUgaGl0cyBeQyBpbiBhICdzdXNwZW5kZWQnIHNlc3Npb24gKGNoaWxkIHNoZWxsKS4KLSAg IEFsc28gaWdub3JlIEN0cmwtQnJlYWsgc2lnbmFscy4gICovCitleHRlcm4gc3RydWN0IHR0eV9k aXNwbGF5X2luZm8gKmN1cnJlbnRfdHR5Oworc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKmN1cnJl bnRfdHR5ID0gTlVMTDsKIAogQk9PTCBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyk7CiAK Ky8qIFNldHRpbmcgdGhpcyBhcyB0aGUgY3RybCBoYW5kbGVyIHByZXZlbnRzIGVtYWNzIGZyb20g YmVpbmcga2lsbGVkCisgICB3aGVuIHNvbWVvbmUgaGl0cyBeQyBpbiBhICdzdXNwZW5kZWQnIHNl c3Npb24gKGNoaWxkIHNoZWxsKS4gQWxzbworICAgaWdub3JlIEN0cmwtQnJlYWsgc2lnbmFscy4g ICovCiBCT09MCiBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyB0eXBlKQogewpAQCAtODMs NiArMTQ5LDU1IEBAIGN0cmxfY19oYW5kbGVyICh1bnNpZ25lZCBsb25nIHR5cGUpCiAJICAmJiAo dHlwZSA9PSBDVFJMX0NfRVZFTlQgfHwgdHlwZSA9PSBDVFJMX0JSRUFLX0VWRU5UKSk7CiB9CiAK KyNkZWZpbmUgU1NQUklOVEYoYnVmLCBpLCBzeiwgZm10LCAuLi4pCQkJCQlcCisgIGRvIHsJCQkJ CQkJCQlcCisgICAgaWYgKGZtdCkJCQkJCQkJCVwKKyAgICAgICppICs9IHNucHJpbnRmIChidWYg KyAqaSwgc3ogLSAqaSwgZm10LCBfX1ZBX0FSR1NfXyk7CQlcCisgIH0gd2hpbGUgKDApCisKKyNk ZWZpbmUgREVGQVVMVFAocCkJCQkJCQkJXAorICAocCA9PSBGQUNFX1RUWV9ERUZBVUxUX0NPTE9S CQkJCQkJXAorICAgfHwgcCA9PSBGQUNFX1RUWV9ERUZBVUxUX0ZHX0NPTE9SCQkJCQlcCisgICB8 fCBwID09IEZBQ0VfVFRZX0RFRkFVTFRfQkdfQ09MT1IpCisKKyNkZWZpbmUgU0VRTUFYIDI1NiAv KiBBcmJpdHJhcnkgdXBwZXIgbGltaXQgb24gVlQgc2VxdWVuY2Ugc2l6ZSAqLworCisvKiBGb3Ig ZGVidWdnaW5nICovCitzdGF0aWMgdm9pZAordnRfc2VxX2Vycm9yIChjaGFyICpzZXEpCit7Cisg IGludCBpID0gMDsgaW50IGogPSAwOworICBpZiAoc2VxKQorICAgIGlmIChzZXFbMF0gPT0gJ1ww Jykgc2VxID0gIjxlbXB0eT4iOworICAgIGVsc2UKKyAgICAgIHdoaWxlIChpIDwgU0VRTUFYKQor CXsKKwkgIGlmIChzZXFbaV0gPT0gJ1x4MWInKSBzZXFbaV0gPSAnIyc7CisJICBpZiAoc2VxW2ld ID09ICAgICclJykgc2VxW2ldID0gJ18nOworCSAgaWYgKHNlcVtpXSA9PSAgICdcMCcpIHsgaisr OyBicmVhazsgfQorCSAgaSsrOworCX0KKyAgZWxzZSBzZXEgPSAiPG51bGw+IjsKKyAgcHJpbnRm ICgiRmFpbGVkIHRvIHdyaXRlIFZUIHNlcXVlbmNlOiAlc1xuIiwgaiA/IHNlcSA6ICI8b3ZlcmZs b3c+Iik7CisgIHByaW50ZiAoIkxhc3RFcnJvcjogMHglZHhcbiIsIEdldExhc3RFcnJvciAoKSk7 CisgIGZmbHVzaCAoc3Rkb3V0KTsKKyAgZXhpdCAoMSk7Cit9CisKKy8qIFdyaXRlcyAoZHluYW1p YykgdmlydHVhbCB0ZXJtaW5hbCBBU0NJSSBzZXF1ZW5jZXMgdG8gc2NyZWVuICovCitzdGF0aWMg aW50Cit3MzJjb25fd3JpdGVfdnRfc2VxIChjaGFyICpzZXEpCit7CisgIGNoYXIgYnVmW1NFUU1B WF07CisgIERXT1JEIG4gPSAwLCBrID0gMDsKKyAgU1NQUklOVEYgKGJ1ZiwgJm4sIFNFUU1BWCwg c2VxLCBOVUxMKTsKKyAgaWYgKG4pIFdyaXRlQ29uc29sZUEgKGN1cl9zY3JlZW4sIChMUENTVFIp IGJ1ZiwgbiwgJmssIE5VTEwpOworICByZXR1cm4gazsKK30KKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3Vyc29yIENvbnRyb2wKKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwogCiAvKiBNb3ZlIHRoZSBjdXJzb3IgdG8gKFJPVywgQ09MKSBvbiBGUkFNRS4gICovCiBzdGF0 aWMgdm9pZApAQCAtOTAsNyArMjA1LDYgQEAgdzMyY29uX21vdmVfY3Vyc29yIChzdHJ1Y3QgZnJh bWUgKmYsIGludCByb3csIGludCBjb2wpCiB7CiAgIGN1cnNvcl9jb29yZHMuWCA9IGNvbDsKICAg Y3Vyc29yX2Nvb3Jkcy5ZID0gcm93OwotCiAgIC8qIFRPRE86IGZvciBtdWx0aS10dHkgc3VwcG9y dCwgY3VyX3NjcmVlbiBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBhCiAgICAgIHJlZmVyZW5jZSB0 byB0aGUgdGVybWluYWwgZm9yIHRoaXMgZnJhbWUuICAqLwogICBTZXRDb25zb2xlQ3Vyc29yUG9z aXRpb24gKGN1cl9zY3JlZW4sIGN1cnNvcl9jb29yZHMpOwpAQCAtMTAyLDYgKzIxNiw3IEBAIHcz MmNvbl9oaWRlX2N1cnNvciAodm9pZCkKICAgR2V0Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3Jl ZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKICAgY29uc29sZV9jdXJzb3JfaW5mby5iVmlzaWJs ZSA9IEZBTFNFOwogICBTZXRDb25zb2xlQ3Vyc29ySW5mbyAoY3VyX3NjcmVlbiwgJmNvbnNvbGVf Y3Vyc29yX2luZm8pOworICBjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbiA9IDE7CiB9CiAKIHZv aWQKQEAgLTExMCwxNCArMjI1LDMzIEBAIHczMmNvbl9zaG93X2N1cnNvciAodm9pZCkKICAgR2V0 Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKICAg Y29uc29sZV9jdXJzb3JfaW5mby5iVmlzaWJsZSA9IFRSVUU7CiAgIFNldENvbnNvbGVDdXJzb3JJ bmZvIChjdXJfc2NyZWVuLCAmY29uc29sZV9jdXJzb3JfaW5mbyk7CisgIGN1cnJlbnRfdHR5LT5j dXJzb3JfaGlkZGVuID0gMDsKK30KKwordm9pZAordzMyY29uX3NhdmVfY3Vyc29yICh2b2lkKQor eworICBzYXZlZF9jb29yZHMgPSBjdXJzb3JfY29vcmRzOwogfQogCit2b2lkCit3MzJjb25fcmVz dG9yZV9jdXJzb3IgKHZvaWQpCit7CisgIGN1cnNvcl9jb29yZHMgPSBzYXZlZF9jb29yZHM7Cisg IFNldENvbnNvbGVDdXJzb3JQb3NpdGlvbiAoY3VyX3NjcmVlbiwgY3Vyc29yX2Nvb3Jkcyk7Cit9 CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgTW9kaWZp Y2F0aW9uCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKIC8qIENsZWFyIGZyb20gY3Vyc29yIHRvIGVuZCBv ZiBzY3JlZW4uICAqLwogc3RhdGljIHZvaWQKIHczMmNvbl9jbGVhcl90b19lbmQgKHN0cnVjdCBm cmFtZSAqZikKIHsKICAgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9DT0xTIChm KSAtIDEpOwotICB3MzJjb25faW5zX2RlbF9saW5lcyAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBGUkFN RV9UT1RBTF9MSU5FUyAoZikgLSBjdXJzb3JfY29vcmRzLlkgLSAxKTsKKyAgaW50IG4gPSBGUkFN RV9UT1RBTF9MSU5FUyAoZikgLSBjdXJzb3JfY29vcmRzLlkgLSAxOworICB3MzJjb25faW5zX2Rl bF9saW5lcyAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBuKTsKIH0KIAogLyogQ2xlYXIgdGhlIGZyYW1l LiAgKi8KQEAgLTEzNyw3ICsyNzEsNiBAQCB3MzJjb25fY2xlYXJfZnJhbWUgKHN0cnVjdCBmcmFt ZSAqZikKIAogICBGaWxsQ29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9h dHRyX25vcm1hbCwgbiwgZGVzdCwgJnIpOwogICBGaWxsQ29uc29sZU91dHB1dENoYXJhY3RlciAo Y3VyX3NjcmVlbiwgJyAnLCBuLCBkZXN0LCAmcik7Ci0KICAgdzMyY29uX21vdmVfY3Vyc29yIChm LCAwLCAwKTsKIH0KIApAQCAtMTY2LDEwICsyOTksMTAgQEAgdzMyY29uX2NsZWFyX2VuZF9vZl9s aW5lIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBlbmQpCiAgICAgewogICAgICAgaW50IGk7CiAgICAg ICBmb3IgKGkgPSAwOyBpIDwgZ2x5cGhzX2xlbjsgaSsrKQotICAgICAgICB7CisJewogCSAgbWVt Y3B5ICgmZ2x5cGhzW2ldLCAmc3BhY2VfZ2x5cGgsIHNpemVvZiAoc3RydWN0IGdseXBoKSk7CiAJ ICBnbHlwaHNbaV0uZnJhbWUgPSBOVUxMOwotICAgICAgICB9CisJfQogICAgICAgY2VvbF9pbml0 aWFsaXplZCA9IFRSVUU7CiAgICAgfQogICB3MzJjb25fd3JpdGVfZ2x5cGhzIChmLCBnbHlwaHMs IGVuZCAtIGN1cnNvcl9jb29yZHMuWCk7CkBAIC0yMTgsMjggKzM1MSwyNyBAQCB3MzJjb25faW5z X2RlbF9saW5lcyAoc3RydWN0IGZyYW1lICpmLCBpbnQgdnBvcywgaW50IG4pCiAgIGlmIChuID4g MCkKICAgICB7CiAgICAgICBpZiAoc2Nyb2xsLkJvdHRvbSA8IGRlc3QuWSkKLSAgICAgICAgewor CXsKIAkgIGZvciAoaSA9IHNjcm9sbC5Cb3R0b207IGkgPCBkZXN0Llk7IGkrKykKLSAgICAgICAg ICAgIHsKKwkgICAgewogCSAgICAgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgaSwgMCk7CiAJICAg ICAgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9DT0xTIChmKSk7Ci0gICAgICAg ICAgICB9Ci0gICAgICAgIH0KKwkgICAgfQorCX0KICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAg ICBuYiA9IGRlc3QuWSArIChzY3JvbGwuQm90dG9tIC0gc2Nyb2xsLlRvcCkgKyAxOwogCiAgICAg ICBpZiAobmIgPCBzY3JvbGwuVG9wKQotICAgICAgICB7CisJewogCSAgZm9yIChpID0gbmI7IGkg PCBzY3JvbGwuVG9wOyBpKyspCi0gICAgICAgICAgICB7CisJICAgIHsKIAkgICAgICB3MzJjb25f bW92ZV9jdXJzb3IgKGYsIGksIDApOwogCSAgICAgIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAo ZiwgRlJBTUVfQ09MUyAoZikpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisJICAgIH0KKwl9 CiAgICAgfQotCiAgIGN1cnNvcl9jb29yZHMuWCA9IDA7CiAgIGN1cnNvcl9jb29yZHMuWSA9IHZw b3M7CiB9CkBAIC0yNDgsMTIgKzM4MCwxMSBAQCB3MzJjb25faW5zX2RlbF9saW5lcyAoc3RydWN0 IGZyYW1lICpmLCBpbnQgdnBvcywgaW50IG4pCiAjdW5kZWYJUklHSFQKICNkZWZpbmUJTEVGVAkx CiAjZGVmaW5lCVJJR0hUCTAKLQorLyogVGhlIGlkZWEgaGVyZSBpcyB0byBpbXBsZW1lbnQgYSBo b3Jpem9udGFsIHNjcm9sbCBpbiBvbmUgbGluZSB0bworICAgaW1wbGVtZW50IGRlbGV0ZSBhbmQg aGFsZiBvZiBpbnNlcnQuICAqLwogc3RhdGljIHZvaWQKIHNjcm9sbF9saW5lIChzdHJ1Y3QgZnJh bWUgKmYsIGludCBkaXN0LCBpbnQgZGlyZWN0aW9uKQogewotICAvKiBUaGUgaWRlYSBoZXJlIGlz IHRvIGltcGxlbWVudCBhIGhvcml6b250YWwgc2Nyb2xsIGluIG9uZSBsaW5lIHRvCi0gICAgIGlt cGxlbWVudCBkZWxldGUgYW5kIGhhbGYgb2YgaW5zZXJ0LiAgKi8KICAgU01BTExfUkVDVCBzY3Jv bGwsIGNsaXA7CiAgIENPT1JECSAgICAgZGVzdDsKICAgQ0hBUl9JTkZPICBmaWxsOwpAQCAtMjg4 LDE0ICs0MTksMTMgQEAgc3RhdGljIHZvaWQKIHczMmNvbl9pbnNlcnRfZ2x5cGhzIChzdHJ1Y3Qg ZnJhbWUgKmYsIHJlZ2lzdGVyIHN0cnVjdCBnbHlwaCAqc3RhcnQsCiAJCSAgICAgIHJlZ2lzdGVy IGludCBsZW4pCiB7CisgIC8qIE1vdmUgbGVuIGNoYXJzIHRvIHRoZSByaWdodCBmcm9tIGN1cnNv cl9jb29yZHMsIGZpbGwgd2l0aCBibGFua3MgKi8KICAgc2Nyb2xsX2xpbmUgKGYsIGxlbiwgUklH SFQpOwotCi0gIC8qIE1vdmUgbGVuIGNoYXJzIHRvIHRoZSByaWdodCBzdGFydGluZyBhdCBjdXJz b3JfY29vcmRzLCBmaWxsIHdpdGggYmxhbmtzICovCisgIAogICBpZiAoc3RhcnQpCiAgICAgewot ICAgICAgLyogUHJpbnQgdGhlIGZpcnN0IGxlbiBjaGFyYWN0ZXJzIG9mIHN0YXJ0LCBjdXJzb3Jf Y29vcmRzLlggYWRqdXN0ZWQKLQkgYnkgd3JpdGVfZ2x5cGhzLiAgKi8KLQorICAgICAgLyogUHJp bnQgdGhlIGZpcnN0IGxlbiBjaGFyYWN0ZXJzIG9mIHN0YXJ0LgorCSBjdXJzb3JfY29vcmRzLlgg YWRqdXN0ZWQgYnkgd3JpdGVfZ2x5cGhzLiAgKi8KICAgICAgIHczMmNvbl93cml0ZV9nbHlwaHMg KGYsIHN0YXJ0LCBsZW4pOwogICAgIH0KICAgZWxzZQpAQCAtMzA2LDEzICs0MzYsMTUgQEAgdzMy Y29uX2luc2VydF9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBo ICpzdGFydCwKIAogc3RhdGljIHZvaWQKIHczMmNvbl93cml0ZV9nbHlwaHMgKHN0cnVjdCBmcmFt ZSAqZiwgcmVnaXN0ZXIgc3RydWN0IGdseXBoICpzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAg ICByZWdpc3RlciBpbnQgbGVuKQorCQkgICAgIHJlZ2lzdGVyIGludCBsZW4pCiB7CiAgIERXT1JE IHI7CiAgIFdPUkQgY2hhcl9hdHRyOwogICBMUENTVFIgY29udmVyc2lvbl9idWZmZXI7CiAgIHN0 cnVjdCBjb2Rpbmdfc3lzdGVtICpjb2Rpbmc7CiAKKyAgdzMyY29uX2hpZGVfY3Vyc29yKCk7CisK ICAgaWYgKGxlbiA8PSAwKQogICAgIHJldHVybjsKIApAQCAtMzQyLDQzICs0NzQsNDUgQEAgdzMy Y29uX3dyaXRlX2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGgg KnN0cmluZywKIAogICAgICAgLyogdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIHNldHMgZnJhbWUg b2YgZ2x5cGhzIHRvIE5VTEwuICAqLwogICAgICAgc3RydWN0IGZyYW1lICphdHRyX2ZyYW1lID0g ZmFjZV9pZF9mcmFtZSA/IGZhY2VfaWRfZnJhbWUgOiBmOwotICAgICAgLyogVHVybiBhcHBlYXJh bmNlIG1vZGVzIG9mIHRoZSBmYWNlIG9mIHRoZSBydW4gb24uICAqLwotICAgICAgY2hhcl9hdHRy ID0gdzMyX2ZhY2VfYXR0cmlidXRlcyAoYXR0cl9mcmFtZSwgZmFjZV9pZCk7CiAKICAgICAgIGlm IChuID09IGxlbikKIAkvKiBUaGlzIGlzIHRoZSBsYXN0IHJ1bi4gICovCiAJY29kaW5nLT5tb2Rl IHw9IENPRElOR19NT0RFX0xBU1RfQkxPQ0s7CisKICAgICAgIGNvbnZlcnNpb25fYnVmZmVyID0g KExQQ1NUUikgZW5jb2RlX3Rlcm1pbmFsX2NvZGUgKHN0cmluZywgbiwgY29kaW5nKTsKICAgICAg IGlmIChjb2RpbmctPnByb2R1Y2VkID4gMCkKIAl7Ci0JICAvKiBTZXQgdGhlIGF0dHJpYnV0ZSBm b3IgdGhlc2UgY2hhcmFjdGVycy4gICovCi0JICBpZiAoIUZpbGxDb25zb2xlT3V0cHV0QXR0cmli dXRlIChjdXJfc2NyZWVuLCBjaGFyX2F0dHIsCi0JCQkJCSAgIGNvZGluZy0+cHJvZHVjZWQsIGN1 cnNvcl9jb29yZHMsCi0JCQkJCSAgICZyKSkKKwkgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWlu YWxfc2VxdWVuY2VzKQogCSAgICB7Ci0JICAgICAgcHJpbnRmICgiRmFpbGVkIHdyaXRpbmcgY29u c29sZSBhdHRyaWJ1dGVzOiAlbHVcbiIsCi0JCSAgICAgIEdldExhc3RFcnJvciAoKSk7Ci0JICAg ICAgZmZsdXNoIChzdGRvdXQpOworCSAgICAgIHR1cm5fb25fZmFjZSAoZiwgZmFjZV9pZCk7CisJ ICAgICAgV3JpdGVDb25zb2xlIChjdXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwKKwkJCSAg ICBjb2RpbmctPnByb2R1Y2VkLCAmciwgTlVMTCk7CisJICAgICAgdHVybl9vZmZfZmFjZSAoZiwg ZmFjZV9pZCk7CisJICAgICAgY3Vyc29yX2Nvb3Jkcy5YICs9IGNvZGluZy0+cHJvZHVjZWQ7CiAJ ICAgIH0KLQotCSAgLyogV3JpdGUgdGhlIGNoYXJhY3RlcnMuICAqLwotCSAgaWYgKCFXcml0ZUNv bnNvbGVPdXRwdXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAotCQkJ CQkgICAgY29kaW5nLT5wcm9kdWNlZCwgY3Vyc29yX2Nvb3JkcywKLQkJCQkJICAgICZyKSkKKwkg IGVsc2UKIAkgICAgewotCSAgICAgIHByaW50ZiAoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgY2hh cmFjdGVyczogJWx1XG4iLAotCQkgICAgICBHZXRMYXN0RXJyb3IgKCkpOwotCSAgICAgIGZmbHVz aCAoc3Rkb3V0KTsKLQkgICAgfQorCSAgICAgIC8qIFR1cm4gYXBwZWFyYW5jZSBtb2RlcyBvZiB0 aGUgZmFjZSBvZiB0aGUgcnVuIG9uLiAgKi8KKwkgICAgICBjaGFyX2F0dHIgPSB3MzJfZmFjZV9h dHRyaWJ1dGVzIChhdHRyX2ZyYW1lLCBmYWNlX2lkKTsKKwkgICAgICAvKiBTZXQgdGhlIGF0dHJp YnV0ZSBmb3IgdGhlc2UgY2hhcmFjdGVycy4gICovCisJICAgICAgRmlsbENvbnNvbGVPdXRwdXRB dHRyaWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKKwkJCQkJICBjb2RpbmctPnByb2R1Y2Vk LCBjdXJzb3JfY29vcmRzLAorCQkJCQkgICZyKTsKKwkgICAgICAvKiBXcml0ZSB0aGUgY2hhcmFj dGVycy4gICovCisJICAgICAgV3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVu LCBjb252ZXJzaW9uX2J1ZmZlciwKKwkJCQkJICAgY29kaW5nLT5wcm9kdWNlZCwgY3Vyc29yX2Nv b3JkcywKKwkJCQkJICAgJnIpOwogCi0JICBjdXJzb3JfY29vcmRzLlggKz0gY29kaW5nLT5wcm9k dWNlZDsKLQkgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBjdXJzb3Jf Y29vcmRzLlgpOworCSAgICAgIGN1cnNvcl9jb29yZHMuWCArPSBjb2RpbmctPnByb2R1Y2VkOwor CSAgICAgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgY3Vyc29yX2Nvb3Jkcy5ZLCBjdXJzb3JfY29v cmRzLlgpOworCSAgICB9CiAJfQogICAgICAgbGVuIC09IG47CiAgICAgICBzdHJpbmcgKz0gbjsK ICAgICB9CiB9CiAKKwogLyogVXNlZCBmb3IgbW91c2UgaGlnaGxpZ2h0LiAgKi8KIHN0YXRpYyB2 b2lkCiB3MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdp c3RlciBpbnQgeCwgcmVnaXN0ZXIgaW50IHksCkBAIC0zODcsNiArNTIxLDkgQEAgdzMyY29uX3dy aXRlX2dseXBoc193aXRoX2ZhY2UgKHN0cnVjdCBmcmFtZSAqZiwgcmVnaXN0ZXIgaW50IHgsIHJl Z2lzdGVyIGludCB5LAogewogICBMUENTVFIgY29udmVyc2lvbl9idWZmZXI7CiAgIHN0cnVjdCBj b2Rpbmdfc3lzdGVtICpjb2Rpbmc7CisgIERXT1JEIGZpbGxlZCwgd3JpdHRlbjsKKworICB3MzJj b25faGlkZV9jdXJzb3IgKCk7CiAKICAgaWYgKGxlbiA8PSAwKQogICAgIHJldHVybjsKQEAgLTM5 OSwyOSArNTM2LDM4IEBAIHczMmNvbl93cml0ZV9nbHlwaHNfd2l0aF9mYWNlIChzdHJ1Y3QgZnJh bWUgKmYsIHJlZ2lzdGVyIGludCB4LCByZWdpc3RlciBpbnQgeSwKICAgLyogV2UgYXJlIGdvaW5n IHRvIHdyaXRlIHRoZSBlbnRpcmUgYmxvY2sgb2YgZ2x5cGhzIGluIG9uZSBnbywgYXMKICAgICAg dGhleSBhbGwgaGF2ZSB0aGUgc2FtZSBmYWNlLiAgU28gdGhpcyBfaXNfIHRoZSBsYXN0IGJsb2Nr LiAgKi8KICAgY29kaW5nLT5tb2RlIHw9IENPRElOR19NT0RFX0xBU1RfQkxPQ0s7Ci0KICAgY29u dmVyc2lvbl9idWZmZXIgPSAoTFBDU1RSKSBlbmNvZGVfdGVybWluYWxfY29kZSAoc3RyaW5nLCBs ZW4sIGNvZGluZyk7CiAgIGlmIChjb2RpbmctPnByb2R1Y2VkID4gMCkKICAgICB7Ci0gICAgICBE V09SRCBmaWxsZWQsIHdyaXR0ZW47Ci0gICAgICAvKiBDb21wdXRlIHRoZSBjaGFyYWN0ZXIgYXR0 cmlidXRlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBmYWNlLiAgKi8KLSAgICAgIERXT1JEIGNoYXJf YXR0ciA9IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGYsIGZhY2VfaWQpOwogICAgICAgQ09PUkQgc3Rh cnRfY29vcmRzOwotCiAgICAgICBzdGFydF9jb29yZHMuWCA9IHg7CiAgICAgICBzdGFydF9jb29y ZHMuWSA9IHk7Ci0gICAgICAvKiBTZXQgdGhlIGF0dHJpYnV0ZSBmb3IgdGhlc2UgY2hhcmFjdGVy cy4gICovCi0gICAgICBpZiAoIUZpbGxDb25zb2xlT3V0cHV0QXR0cmlidXRlIChjdXJfc2NyZWVu LCBjaGFyX2F0dHIsCi0JCQkJICAgICAgIGNvZGluZy0+cHJvZHVjZWQsIHN0YXJ0X2Nvb3JkcywK LQkJCQkgICAgICAgJmZpbGxlZCkpCi0JRGViUHJpbnQgKCgiRmFpbGVkIHdyaXRpbmcgY29uc29s ZSBhdHRyaWJ1dGVzOiAlZFxuIiwgR2V0TGFzdEVycm9yICgpKSk7CisKKyAgICAgIGlmICh3MzJf dXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQorCXsKKwkgIGludCBwcmV2X2N1cnNvcl9o aWRkZW4gPSBjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbjsKKwkgIHczMmNvbl9oaWRlX2N1cnNv ciAoKTsKKwkgIHczMmNvbl9zYXZlX2N1cnNvciAoKTsKKwkgIHczMmNvbl9tb3ZlX2N1cnNvciAo ZiwgeSwgeCk7CisJICB0dXJuX29uX2ZhY2UgKGYsIGZhY2VfaWQpOworCSAgV3JpdGVDb25zb2xl IChjdXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwKKwkJCWNvZGluZy0+cHJvZHVjZWQsICZ3 cml0dGVuLCBOVUxMKTsKKwkgIHR1cm5fb2ZmX2ZhY2UgKGYsIGZhY2VfaWQpOworCSAgdzMyY29u X3Jlc3RvcmVfY3Vyc29yICgpOworCSAgaWYgKCFwcmV2X2N1cnNvcl9oaWRkZW4pIHczMmNvbl9z aG93X2N1cnNvciAoKTsKKwl9CiAgICAgICBlbHNlCiAJeworCSAgLyogQ29tcHV0ZSB0aGUgY2hh cmFjdGVyIGF0dHJpYnV0ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjZS4gKi8KKwkgIERXT1JE IGNoYXJfYXR0ciA9IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGYsIGZhY2VfaWQpOworCisJICAvKiBT ZXQgdGhlIGF0dHJpYnV0ZSBmb3IgdGhlc2UgY2hhcmFjdGVycy4gICovCisJICBGaWxsQ29uc29s ZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAorCQkJCSAgICAgIGNvZGlu Zy0+cHJvZHVjZWQsIHN0YXJ0X2Nvb3JkcywKKwkJCQkgICAgICAmZmlsbGVkKTsKIAkgIC8qIFdy aXRlIHRoZSBjaGFyYWN0ZXJzLiAgKi8KLQkgIGlmICghV3JpdGVDb25zb2xlT3V0cHV0Q2hhcmFj dGVyIChjdXJfc2NyZWVuLCBjb252ZXJzaW9uX2J1ZmZlciwKLQkJCQkJICAgIGZpbGxlZCwgc3Rh cnRfY29vcmRzLCAmd3JpdHRlbikpCi0JICAgIERlYlByaW50ICgoIkZhaWxlZCB3cml0aW5nIGNv bnNvbGUgY2hhcmFjdGVyczogJWRcbiIsCi0JCSAgICAgICBHZXRMYXN0RXJyb3IgKCkpKTsKKwkg IFdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwgY29udmVyc2lvbl9idWZm ZXIsCisJCQkJICAgICAgIGZpbGxlZCwgc3RhcnRfY29vcmRzLCAmd3JpdHRlbik7CiAJfQogICAg IH0KIH0KQEAgLTQ1Miw5ICs1OTgsNyBAQCB0dHlfZHJhd19yb3dfd2l0aF9tb3VzZV9mYWNlIChz dHJ1Y3Qgd2luZG93ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICp3aW5kb3dfcm93LAogICByb290X3h5 IChmLCBmcmFtZV9lbmRfeCwgZnJhbWVfeSwgJnJvb3RfZW5kX3gsICZyb290X3kpOwogICBzdHJ1 Y3QgZ2x5cGhfcm93ICpyb290X3JvdyA9IE1BVFJJWF9ST1cgKHJvb3QtPmN1cnJlbnRfbWF0cml4 LCByb290X3kpOwogCi0gIC8qIFJlbWVtYmVyIGN1cnJlbnQgY3Vyc29yIGNvb3JkaW5hdGVzIHNv IHRoYXQgd2UgY2FuIHJlc3RvcmUKLSAgICAgdGhlbSBhdCB0aGUgZW5kLiAgKi8KLSAgQ09PUkQg c2F2ZV9jb29yZHMgPSBjdXJzb3JfY29vcmRzOworICB3MzJjb25fc2F2ZV9jdXJzb3IoKTsKIAog ICAvKiBJZiB0aGUgcm9vdCBmcmFtZSBkaXNwbGF5cyBjaGlsZCBmcmFtZXMsIHdlIGNhbm5vdCBu YWl2ZWx5CiAgICAgIHdyaXRlIHRvIHRoZSB0ZXJtaW5hbCB3aGF0IHRoZSB3aW5kb3cgdGhpbmtz IHNob3VsZCBiZSBkcmF3bi4KQEAgLTUwNyw5ICs2NTEsNyBAQCB0dHlfZHJhd19yb3dfd2l0aF9t b3VzZV9mYWNlIChzdHJ1Y3Qgd2luZG93ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICp3aW5kb3dfcm93 LAogCSAgICB9CiAJfQogICAgIH0KLQotICAvKiBSZXN0b3JlIGN1cnNvciB3aGVyZSBpdCB3YXMg YmVmb3JlLiAgKi8KLSAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBzYXZlX2Nvb3Jkcy5ZLCBzYXZl X2Nvb3Jkcy5YKTsKKyAgdzMyY29uX3Jlc3RvcmVfY3Vyc29yKCk7CiB9CiAKIHN0YXRpYyB2b2lk CkBAIC01MjEsNyArNjYzLDkgQEAgdzMyY29uX2RlbGV0ZV9nbHlwaHMgKHN0cnVjdCBmcmFtZSAq ZiwgaW50IG4pCiAKICAgc2Nyb2xsX2xpbmUgKGYsIG4sIExFRlQpOwogfQotCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgdXAgLyBUZWFyIGRvd24KKyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLwogCiBzdGF0aWMgdm9pZAogdzMyY29uX3Jlc2V0X3Rlcm1pbmFsX21vZGVzIChz dHJ1Y3QgdGVybWluYWwgKnQpCkBAIC01NjksMzAgKzcxMyw1NCBAQCB3MzJjb25fc2V0X3Rlcm1p bmFsX21vZGVzIChzdHJ1Y3QgdGVybWluYWwgKnQpCiAgIC8qIElmIFF1aWNrIEVkaXQgaXMgZW5h YmxlZCBmb3IgdGhlIGNvbnNvbGUsIGl0IHdpbGwgZ2V0IGluIHRoZSB3YXkKICAgICAgb2YgcmVj ZWl2aW5nIG1vdXNlIGV2ZW50cywgc28gd2UgZGlzYWJsZSBpdC4gIEJ1dCBsZWF2ZSB0aGUKICAg ICAgSW5zZXJ0IE1vZGUgYXMgaXQgd2FzIHNldCBieSB0aGUgdXNlci4gICovCi0gIERXT1JEIG5l d19jb25zb2xlX21vZGUKKyAgRFdPUkQgaW5fbW9kZQogICAgID0gRU5BQkxFX01PVVNFX0lOUFVU IHwgRU5BQkxFX1dJTkRPV19JTlBVVCB8IEVOQUJMRV9FWFRFTkRFRF9GTEFHUzsKICAgaWYgKChw cmV2X2NvbnNvbGVfbW9kZSAmIEVOQUJMRV9JTlNFUlRfTU9ERSkgIT0gMCkKLSAgICBuZXdfY29u c29sZV9tb2RlIHw9IEVOQUJMRV9JTlNFUlRfTU9ERTsKLSAgU2V0Q29uc29sZU1vZGUgKGtleWJv YXJkX2hhbmRsZSwgbmV3X2NvbnNvbGVfbW9kZSk7CisgICAgaW5fbW9kZSB8PSBFTkFCTEVfSU5T RVJUX01PREU7CisgIFNldENvbnNvbGVNb2RlIChrZXlib2FyZF9oYW5kbGUsIGluX21vZGUpOwog CiAgIC8qIEluaXRpYWxpemUgaW5wdXQgbW9kZTogaW50ZXJydXB0X2lucHV0IG9mZiwgbm8gZmxv dyBjb250cm9sLCBhbGxvdwogICAgICA4IGJpdCBjaGFyYWN0ZXIgaW5wdXQsIHN0YW5kYXJkIHF1 aXQgY2hhci4gICovCiAgIEZzZXRfaW5wdXRfbW9kZSAoUW5pbCwgUW5pbCwgbWFrZV9maXhudW0g KDIpLCBRbmlsKTsKKworICBEV09SRCBvdXRfbW9kZTsKKyAgR2V0Q29uc29sZU1vZGUgKGN1cl9z Y3JlZW4sICZvdXRfbW9kZSk7CisgIG91dF9tb2RlIHw9IEVOQUJMRV9QUk9DRVNTRURfT1VUUFVU OworICBvdXRfbW9kZSB8PSBFTkFCTEVfVklSVFVBTF9URVJNSU5BTF9QUk9DRVNTSU5HOworICBv dXRfbW9kZSB8PSBESVNBQkxFX05FV0xJTkVfQVVUT19SRVRVUk47CisgIHczMl91c2VfdmlydHVh bF90ZXJtaW5hbF9zZXF1ZW5jZXMgPSBTZXRDb25zb2xlTW9kZSAoY3VyX3NjcmVlbiwgb3V0X21v ZGUpOworICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykKKyAgICB7Cisg ICAgICBpbnQgY3Vyc29yX29mZl9wID0gWFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KS0+Y3Vyc29y X29mZl9wOworICAgICAgdC0+ZGlzcGxheV9pbmZvLnR0eS0+Y3Vyc29yX2hpZGRlbiA9IGN1cnNv cl9vZmZfcDsKKyAgICB9CiB9CiAKIC8qIGhtbW0uLi4gcGVyaGFwcyB0aGVzZSBsZXQgdXMgYnJh Y2tldCBzY3JlZW4gY2hhbmdlcyBzbyB0aGF0IHdlIGNhbiBmbHVzaAogICAgY2x1bXBzIHJhdGhl ciB0aGFuIG9uZS1jaGFyYWN0ZXItYXQtYS10aW1lLi4uCiAKLSAgIHdlJ2xsIHN0YXJ0IHdpdGgg bm90IG1vdmluZyB0aGUgY3Vyc29yIHdoaWxlIGFuIHVwZGF0ZSBpcyBpbiBwcm9ncmVzcy4gICov CisgICB3ZSdsbCBzdGFydCB3aXRoIG5vdCBtb3ZpbmcgdGhlIGN1cnNvciB3aGlsZSBhbiB1cGRh dGUgaXMgaW4gcHJvZ3Jlc3MuCisKKyAgIC4uLiBjLiAyMDI1LCBWVCBzZXF1ZW5jZXMgY2FuIG9u bHkgYmUgd3JpdHRlbiB3aXRoIFdyaXRlQ29uc29sZSwKKyAgIHByaW50ZiwgZXRjLiwgd2hpY2gg YWR2YW5jZSB0aGUgY3Vyc29yLgorKi8KIHN0YXRpYyB2b2lkCiB3MzJjb25fdXBkYXRlX2JlZ2lu IChzdHJ1Y3QgZnJhbWUgKiBmKQogeworICBjdXJyZW50X3R0eSA9IEZSQU1FX1RUWSAoZik7CisK KyAgaWYgKCF3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzCisgICAgICAmJiBjdXJy ZW50X3R0eS0+VE5fbWF4X2NvbG9ycyA+IDE2KQorICAgIHsKKyAgICAgIHR0eV9zZXR1cF9jb2xv cnMgKGN1cnJlbnRfdHR5LCAxNik7CisgICAgICBzYWZlX2NhbGxuIChRdzMyY29uX3NldF91cF9p bml0aWFsX2ZyYW1lX2ZhY2VzKTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCiB3MzJjb25fdXBk YXRlX2VuZCAoc3RydWN0IGZyYW1lICogZikKIHsKLSAgU2V0Q29uc29sZUN1cnNvclBvc2l0aW9u IChjdXJfc2NyZWVuLCBjdXJzb3JfY29vcmRzKTsKKyAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBj dXJzb3JfY29vcmRzLlksIGN1cnNvcl9jb29yZHMuWCk7CiAgIGlmICghWFdJTkRPVyAoc2VsZWN0 ZWRfd2luZG93KS0+Y3Vyc29yX29mZl9wCiAgICAgICAmJiBjdXJzb3JfY29vcmRzLlggPCBGUkFN RV9DT0xTIChmKSkKICAgICB3MzJjb25fc2hvd19jdXJzb3IgKCk7CkBAIC02MjQsOCArNzkyLDYg QEAgc3lzX3RnZXRzdHIgKGNoYXIgKmNhcCwgY2hhciAqKmFyZWEpCiAJCQlzdHVicyBmcm9tIGNt LmMKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KIAotZXh0ZXJuIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpj dXJyZW50X3R0eTsKLXN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eSA9IE5VTEw7 CiBleHRlcm4gaW50IGNvc3Q7CiBpbnQgY29zdCA9IDA7CiAKQEAgLTY5Myw3ICs4NTksNiBAQCBj dXJzb3JZIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5KQogCQkJCUZhY2VzCiAgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCiAKLQogLyogVHVybiBhcHBlYXJhbmNlcyBvZiBmYWNlIEZBQ0VfSUQgb24gdHR5 IGZyYW1lIEYgb24uICAqLwogCiBzdGF0aWMgV09SRApAQCAtNzI5LDYgKzg5NCwxMDAgQEAgdzMy X2ZhY2VfYXR0cmlidXRlcyAoc3RydWN0IGZyYW1lICpmLCBpbnQgZmFjZV9pZCkKICAgcmV0dXJu IGNoYXJfYXR0cjsKIH0KIAorc3RhdGljIHZvaWQKK3R1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1l ICpmLCBpbnQgZmFjZV9pZCkKK3sKKyAgc3RydWN0IGZhY2UgKmZhY2UgPSBGQUNFX0ZST01fSUQg KGYsIGZhY2VfaWQpOworICBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5ID0gRlJBTUVfVFRZ IChmKTsKKyAgdW5zaWduZWQgbG9uZyBmZyA9IGZhY2UtPmZvcmVncm91bmQ7CisgIHVuc2lnbmVk IGxvbmcgYmcgPSBmYWNlLT5iYWNrZ3JvdW5kOworCisgIC8qIGlmIGVpdGhlciBvdXQgb2YgcmFu Z2UsIHNldCBib3RoIHRvIHZhbHVlcyByZXRyaWV2ZWQgZnJvbSB0ZXJtaW5hbCAqLworICBpZiAo REVGQVVMVFAgKGZnKSkgZmcgPSBmZ19ub3JtYWw7CisgIGlmIChERUZBVUxUUCAoYmcpKSBiZyA9 IGJnX25vcm1hbDsKKworICAvKiBjb25zdHJ1Y3QgY29tYmluZWQgVlQgc2VxdWVuY2UgZm9yIGZh Y2UgYXR0cmlidXRlcyAqLworICBEV09SRCBuID0gMDsKKyAgc2l6ZV90IHN6ID0gU0VRTUFYOwor ICBjaGFyIHNlcVtzel07CisgIHN6LS07CisKKyAgaWYgKGZhY2UtPnR0eV9ib2xkX3ApCisgICAg U1NQUklOVEYgKHNlcSwgJm4sIHN6LCB0dHktPlRTX2VudGVyX2JvbGRfbW9kZSwgTlVMTCk7Cisg IGlmIChmYWNlLT50dHlfaXRhbGljX3ApCisgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6LCB0dHkt PlRTX2VudGVyX2l0YWxpY19tb2RlLCBOVUxMKTsKKyAgaWYgKGZhY2UtPnR0eV9zdHJpa2VfdGhy b3VnaF9wKQorICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgdHR5LT5UU19lbnRlcl9zdHJpa2Vf dGhyb3VnaF9tb2RlLCBOVUxMKTsKKyAgaWYgKGZhY2UtPnVuZGVybGluZSAhPSAwKQorICAgIFNT UFJJTlRGIChzZXEsICZuLCBzeiwgdHR5LT5UU19lbnRlcl91bmRlcmxpbmVfbW9kZSwgTlVMTCk7 CisgIC8qIE5vdGU6IHRoZSB2YWx1ZXMgb2YgZmcgYW5kIGJnIGFyZSBhbHJlYWR5IHN3YXBwZWQg d2hlbiBmZyBhbmQgYmcgYXJlCisgICAgIHNldCBhbmQgZmFjZS0+dHR5X3JldmVyc2VfcC4gQWRk aW5nIHRoZSB0ZXJtaW5hbCBzZXF1ZW5jZSBjb250YWluZWQKKyAgICAgaW4gdHR5LT5UU19lbnRl cl9yZXZlcnNlX21vZGUgc3dhcHMgdGhlbSBiYWNrLCB3aGljaCBpcyBubyBnb29kLiAqLworCisg IGNvbnN0IGNoYXIgKnNldF9mZyA9IHR0eS0+VFNfc2V0X2ZvcmVncm91bmQ7CisgIGNvbnN0IGNo YXIgKnNldF9iZyA9IHR0eS0+VFNfc2V0X2JhY2tncm91bmQ7CisgIGlmICh0dHktPlROX21heF9j b2xvcnMgPT0gOCAgfHwKKyAgICAgIHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAxNiB8fAorICAgICAg dHR5LT5UTl9tYXhfY29sb3JzID09IDI1NikKKyAgICB7CisgICAgICAvKiBpbmRpY2VzIGludG8g TWljcm9zb2Z0LWRlZmluZWQgY29sb3JzIChzZWUgbGluayBhdCB0b3ApICovCisgICAgICB1bnNp Z25lZCBsb25nIGZnaSA9IDAsIGJnaSA9IDA7CisKKyAgICAgIGZnaSA9IChmZyA+PSAwICAmJiBm ZyA8IDgpICAgPyBmZyArIDMwCisJOiAgIChmZyA+PSA4ICAmJiBmZyA8IDE2KSAgPyBmZyAtIDgg KyA5MAorCTogICAoZmcgPj0gMTYgJiYgZmcgPCAyNTYpID8gZmcKKwk6IDA7CisgICAgICBpZiAo ZmdpKQorCVNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2ZnLCBmZ2kpOworCisgICAgICBiZ2kg PSAoYmcgPj0gMCAgJiYgYmcgPCA4KSAgID8gYmcgKyA0MAorCTogICAoYmcgPj0gOCAgJiYgYmcg PCAxNikgID8gYmcgLSA4ICsgMTAwCisJOiAgIChiZyA+PSAxNiAmJiBiZyA8IDI1NikgPyBiZwor CTogMDsKKyAgICAgIGlmIChiZ2kpCisJU1NQUklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfYmcsIGJn aSk7CisgICAgfQorICBlbHNlIGlmICh0dHktPlROX21heF9jb2xvcnMgPT0gMTY3NzcyMTYpCisg ICAgeworICAgICAgLyogbmVlZCB0byBjb252ZXJ0IGRlZmF1bHRlZCB2YWx1ZXMgdG8gcGl4ZWwg aW5kaWNlcyAqLworICAgICAgaWYgKGZnID09IGZnX25vcm1hbCkgZmcgPSBnZXRfcGl4ZWwoZmcp OworICAgICAgaWYgKGJnID09IGJnX25vcm1hbCkgYmcgPSBnZXRfcGl4ZWwoYmcpOworCisgICAg ICAvKiBmZyBhbmQgYmcgYXJlIHBpeGVsIHZhbHVlcyAtIGRlY29tcG9zZSB0byByZ2IgdHJpcGxl cyAqLworICAgICAgdW5zaWduZWQgbG9uZyByZiA9IGZnLzY1NTM2LCBnZiA9IChmZy8yNTYpJjI1 NSwgYmYgPSBmZyYyNTU7CisgICAgICB1bnNpZ25lZCBsb25nIHJiID0gYmcvNjU1MzYsIGdiID0g KGJnLzI1NikmMjU1LCBiYiA9IGJnJjI1NTsKKyAgICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwg c2V0X2ZnLCByZiwgZ2YsIGJmKTsKKyAgICAgIFNTUFJJTlRGIChzZXEsICZuLCBzeiwgc2V0X2Jn LCByYiwgZ2IsIGJiKTsKKyAgICB9CisgIHczMmNvbl93cml0ZV92dF9zZXEgKHNlcSk7Cit9CisK K3N0YXRpYyB2b2lkCit0dXJuX29mZl9mYWNlIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lk KQoreworICBzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5ID0gRlJBTUVfVFRZIChmKTsKKyAg dzMyY29uX3dyaXRlX3Z0X3NlcSAodHR5LT5UU19leGl0X2F0dHJpYnV0ZV9tb2RlKTsKK30KKwor LyogcmV0dXJucyB0aGUgcGl4ZWwgdmFsdWUgZm9yIHRoZSBnaXZlbiBpbmRleCBpbnRvIFZUIGJh c2UgY29sb3IgbWFwICovCitzdGF0aWMgdW5zaWduZWQgbG9uZyBwaXhlbF9jYWNoZVsxNl07Citz dGF0aWMgdW5zaWduZWQgbG9uZworZ2V0X3BpeGVsICh1bnNpZ25lZCBsb25nIGluZGV4KQorewor ICB1bnNpZ25lZCBpbnQgaSA9ICh1bnNpZ25lZCBpbnQpIGluZGV4OworICBpZiAoaSA+IDE1KSBy ZXR1cm4gMDsKKyAgaWYgKGkgPT0gMCB8fCBwaXhlbF9jYWNoZVtpXSA+IDApCisgICAgcmV0dXJu IHBpeGVsX2NhY2hlW2ldOworCisgIExpc3BfT2JqZWN0IHBpeCA9IHNhZmVfY2FsbG4gKFF3MzJj b25fZ2V0X3BpeGVsLCBtYWtlX3VmaXhudW0gKGkpKTsKKyAgcGl4ZWxfY2FjaGVbaV0gPSAodW5z aWduZWQgbG9uZykgWFVGSVhOVU0gKHBpeCk7CisgIHJldHVybiBwaXhlbF9jYWNoZVtpXTsKK30K KworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxp emF0aW9uCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKwogLyogVGhlIElNRSB3aW5kb3cgaXMgbmVlZGVkIHRv IHJlY2VpdmUgdGhlIHNlc3Npb24gbm90aWZpY2F0aW9ucwogICAgcmVxdWlyZWQgdG8gcmVzZXQg dGhlIGxvdyBsZXZlbCBrZXlib2FyZCBob29rIHN0YXRlLiAgKi8KIApAQCAtODM0LDcgKzEwOTMs NyBAQCBpbml0aWFsaXplX3czMl9kaXNwbGF5IChzdHJ1Y3QgdGVybWluYWwgKnRlcm0sIGludCAq d2lkdGgsIGludCAqaGVpZ2h0KQogCUdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvIChjdXJfc2Ny ZWVuLCAmaW5mbyk7CiAKIAkvKiBTaHJpbmsgdGhlIHdpbmRvdyBmaXJzdCwgc28gdGhlIGJ1ZmZl ciBkaW1lbnNpb25zIGNhbiBiZQotICAgICAgICAgICByZWR1Y2VkIGlmIG5lY2Vzc2FyeS4gICov CisJICAgcmVkdWNlZCBpZiBuZWNlc3NhcnkuICAqLwogCW5ld193aW5fZGltcy5Ub3AgPSAwOwog CW5ld193aW5fZGltcy5MZWZ0ID0gMDsKIAluZXdfd2luX2RpbXMuQm90dG9tID0gbWluIChuZXdf c2l6ZS5ZLCBpbmZvLmR3U2l6ZS5ZKSAtIDE7CkBAIC04NDksNiArMTEwOCw3IEBAIGluaXRpYWxp emVfdzMyX2Rpc3BsYXkgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybSwgaW50ICp3aWR0aCwgaW50ICpo ZWlnaHQpCiAJbmV3X3dpbl9kaW1zLkJvdHRvbSA9IG5ld19zaXplLlkgLSAxOwogCW5ld193aW5f ZGltcy5SaWdodCA9IG5ld19zaXplLlggLSAxOwogCVNldENvbnNvbGVXaW5kb3dJbmZvIChjdXJf c2NyZWVuLCBUUlVFLCAmbmV3X3dpbl9kaW1zKTsKKwogICAgICAgfQogICB9CiAKQEAgLTg2MSw2 ICsxMTIxLDggQEAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJt LCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkKICAgICB9CiAKICAgY2hhcl9hdHRyX25vcm1hbCA9 IGluZm8ud0F0dHJpYnV0ZXM7CisgIGZnX25vcm1hbCA9IGNoYXJfYXR0cl9ub3JtYWwgJiAweDAw MGY7CisgIGJnX25vcm1hbCA9IChjaGFyX2F0dHJfbm9ybWFsID4+IDQpICYgMHgwMDBmOwogCiAg IC8qIERldGVybWluZSBpZiB0aGUgaW5mbyByZXR1cm5lZCBieSBHZXRDb25zb2xlU2NyZWVuQnVm ZmVySW5mbwogICAgICBpcyByZWFsaXN0aWMuICBPbGQgTVMgVGVsbmV0IHNlcnZlcnMgdXNlZCB0 byBvbmx5IGZpbGwgb3V0CkBAIC05MTcsMTMgKzExNzksMjEgQEAgaW5pdGlhbGl6ZV93MzJfZGlz cGxheSAoc3RydWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkKIH0K IAogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXNwIElu dGVyZmFjZQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRPRE8gLSBtaWdyYXRlIHRvIFZUIHNlcXVl bmNlcyAoMjU2IGFuZCAyNGJpdCBjb2xvcikgKi8KIERFRlVOICgic2V0LXNjcmVlbi1jb2xvciIs IEZzZXRfc2NyZWVuX2NvbG9yLCBTc2V0X3NjcmVlbl9jb2xvciwgMiwgMiwgMCwKICAgICAgICBk b2M6IC8qIFNldCBzY3JlZW4gZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMuCiAKIEFy Z3VtZW50cyBzaG91bGQgYmUgaW5kaWNlcyBiZXR3ZWVuIDAgYW5kIDE1LCBzZWUgdzMyY29uc29s ZS5lbC4gICovKQogICAoTGlzcF9PYmplY3QgZm9yZWdyb3VuZCwgTGlzcF9PYmplY3QgYmFja2dy b3VuZCkKIHsKLSAgY2hhcl9hdHRyX25vcm1hbCA9IFhGSVhOQVQgKGZvcmVncm91bmQpICsgKFhG SVhOQVQgKGJhY2tncm91bmQpIDw8IDQpOworCisgIGZnX25vcm1hbCA9IFhGSVhOQVQgKGZvcmVn cm91bmQpOworICBiZ19ub3JtYWwgPSBYRklYTkFUIChiYWNrZ3JvdW5kKTsKKyAgY2hhcl9hdHRy X25vcm1hbCA9IGZnX25vcm1hbCArIChiZ19ub3JtYWwgPDwgNCk7CiAKICAgRnJlY2VudGVyIChR bmlsLCBRdCk7CiAgIHJldHVybiBRdDsKQEAgLTkzNyw4ICsxMjA3LDggQEAgU2VlIHczMmNvbnNv bGUuZWwgYW5kIGB0dHktZGVmaW5lZC1jb2xvci1hbGlzdCcgZm9yIG1hcHBpbmcgb2YgaW5kaWNl cwogdG8gY29sb3JzLiAgKi8pCiAgICh2b2lkKQogewotICByZXR1cm4gRmNvbnMgKG1ha2VfZml4 bnVtIChjaGFyX2F0dHJfbm9ybWFsICYgMHgwMDBmKSwKLQkJRmNvbnMgKG1ha2VfZml4bnVtICgo Y2hhcl9hdHRyX25vcm1hbCA+PiA0KSAmIDB4MDAwZiksIFFuaWwpKTsKKyAgcmV0dXJuIEZjb25z IChtYWtlX2ZpeG51bSAoZmdfbm9ybWFsKSwKKwkJRmNvbnMgKG1ha2VfZml4bnVtIChiZ19ub3Jt YWwpLCBRbmlsKSk7CiB9CiAKIERFRlVOICgic2V0LWN1cnNvci1zaXplIiwgRnNldF9jdXJzb3Jf c2l6ZSwgU3NldF9jdXJzb3Jfc2l6ZSwgMSwgMSwgMCwKQEAgLTk1NywxNSArMTIyNywzMiBAQCB2 b2lkCiBzeW1zX29mX250dGVybSAodm9pZCkKIHsKICAgREVGVkFSX0JPT0wgKCJ3MzItdXNlLWZ1 bGwtc2NyZWVuLWJ1ZmZlciIsCi0gICAgICAgICAgICAgICB3MzJfdXNlX2Z1bGxfc2NyZWVuX2J1 ZmZlciwKLQkgICAgICAgZG9jOiAvKiBOb24tbmlsIG1lYW5zIG1ha2UgdGVybWluYWwgZnJhbWVz IHVzZSB0aGUgZnVsbCBzY3JlZW4gYnVmZmVyIGRpbWVuc2lvbnMuCisJCXczMl91c2VfZnVsbF9z Y3JlZW5fYnVmZmVyLAorCQlkb2M6IC8qIE5vbi1uaWwgbWVhbnMgbWFrZSB0ZXJtaW5hbCBmcmFt ZXMgdXNlIHRoZSBmdWxsIHNjcmVlbiBidWZmZXIgZGltZW5zaW9ucy4KIFRoaXMgaXMgZGVzaXJh YmxlIHdoZW4gcnVubmluZyBFbWFjcyBvdmVyIHRlbG5ldC4KIEEgdmFsdWUgb2YgbmlsIG1lYW5z IHVzZSB0aGUgY3VycmVudCBjb25zb2xlIHdpbmRvdyBkaW1lbnNpb25zOyB0aGlzCiBtYXkgYmUg cHJlZmVyYWJsZSB3aGVuIHdvcmtpbmcgZGlyZWN0bHkgYXQgdGhlIGNvbnNvbGUgd2l0aCBhIGxh cmdlCiBzY3JvbGwtYmFjayBidWZmZXIuICAqLyk7CiAgIHczMl91c2VfZnVsbF9zY3JlZW5fYnVm ZmVyID0gMDsKIAorICBERUZWQVJfQk9PTCAoInczMi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1 ZW5jZXMiLAorCQl3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzLAorCQlkb2M6IC8q IElmIG5vbi1uaWwgdzMyIGNvbnNvbGUgdXNlcyB0ZXJtaW5hbCBzZXF1ZW5jZXMgZm9yIHNvbWUg b3V0cHV0IHByb2Nlc3NpbmcuCitUaGlzIHZhcmlhYmxlIGlzIHNldCBhdXRvbWF0aWNhbGx5IGJh c2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIHRlcm1pbmFsLgorSXQgZGV0ZXJtaW5lcyB0 aGUgbnVtYmVyIGFuZCBpbmRpY2VzIG9mIGNvbG9ycyB1c2VkIGZvciBmYWNlcyBpbiB0aGUgdGVy bWluYWwuCitJZiB0aGUgdGVybWluYWwgY2Fubm90IGhhbmRsZSBWVCBzZXF1ZW5jZXMsIHRoZSB1 cGRhdGUgaG9vayB0cmlnZ2VycyByZWNvbXB1dGF0aW9uIG9mIGZhY2VzLgorU2VlIGB3MzJjb24t c2V0LXVwLWluaXRpYWwtZnJhbWUtZmFjZXMnLCB3aGljaCBzaG91bGQgYmUgY2FsbGVkIGFmdGVy IHNldHRpbmcgdGhpcyB2YXJpYWJsZSAKK21hbnVhbGx5IGluIGEgcnVubmluZyBzZXNzaW9uLiAq Lyk7CisgIHczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMgPSAwOworCisgIERFRlNZ TSAoUXczMmNvbl9zZXRfdXBfaW5pdGlhbF9mcmFtZV9mYWNlcywKKwkgICJ3MzJjb24tc2V0LXVw LWluaXRpYWwtZnJhbWUtZmFjZXMiKTsKKworICBERUZTWU0gKFF3MzJjb25fZ2V0X3BpeGVsLAor CSAgInczMmNvbi1nZXQtcGl4ZWwiKTsKKwogICBkZWZzdWJyICgmU3NldF9zY3JlZW5fY29sb3Ip OwogICBkZWZzdWJyICgmU2dldF9zY3JlZW5fY29sb3IpOwogICBkZWZzdWJyICgmU3NldF9jdXJz b3Jfc2l6ZSk7CisKIH0KZGlmZiAtLWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5k ZXggYWVmNDBjMzhlNTQuLmRjN2Y0MmI5OGJhIDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysg Yi9zcmMveGRpc3AuYwpAQCAtMTcyMzksOCArMTcyMzksNyBAQCByZWRpc3BsYXlfaW50ZXJuYWwg KHZvaWQpCiAJICAgICBhcmVhLCBkaXNwbGF5aW5nIGEgZGlmZmVyZW50IGZyYW1lIG1lYW5zIHJl ZGlzcGxheSB0aGUKIAkgICAgIHdob2xlIHRoaW5nLiAgKi8KIAkgIFNFVF9GUkFNRV9HQVJCQUdF RCAoc2YpOwotI2lmICFkZWZpbmVkIERPU19OVCAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKKyNp ZiAhZGVmaW5lZCBNU0RPUyAmJiAhZGVmaW5lZCBIQVZFX0FORFJPSUQKIAkgIHNldF90dHlfY29s b3JfbW9kZSAoRlJBTUVfVFRZIChzZiksIHNmKTsKICNlbmRpZgogCX0KLS0KMi40OS4wCgo= --b1=_FjlyCkqGaQMWm46b5fgUbHvmiiXmASK9vYFNKBzcw Content-Type: application/octet-stream; name=0001-w32-VT-Sequences-full.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-w32-VT-Sequences-full.patch RnJvbSAwNzgwOTFjOTQwMTc0MTkxNDc3ZmQ4MzJlMGM4NWI4NjU2YmE2ZTY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBld2FudG93biA8ZXdhbkBldG93bi5kZXY+CkRhdGU6IFNhdCwg NiBTZXAgMjAyNSAwMTozODozOCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHczMiBWVCBTZXF1ZW5j ZXMgKGZ1bGwpCgotLS0KIGRvYy9lbWFjcy9jbWRhcmdzLnRleGkgIHwgICA5ICstCiBkb2MvZW1h Y3MvbXNkb3MudGV4aSAgICB8ICA0NyArKy0KIGV0Yy9ORVdTICAgICAgICAgICAgICAgIHwgIDI1 ICsrCiBsaXNwL3Rlcm0vdHR5LWNvbG9ycy5lbCB8ICAgMyArLQogbGlzcC90ZXJtL3czMmNvbnNv bGUuZWwgfCAxNTIgKysrKysrLS0KIHNyYy9kaXNwbmV3LmMgICAgICAgICAgIHwgIDY3ICsrKy0K IHNyYy90ZXJtLmMgICAgICAgICAgICAgIHwgIDg1ICsrKy0KIHNyYy90ZXJtY2hhci5oICAgICAg ICAgIHwgICAyICsKIHNyYy93MzJjb25zb2xlLmMgICAgICAgIHwgODM0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0KIHNyYy94ZGlzcC5jICAgICAgICAgICAgIHwgICAy ICstCiAxMCBmaWxlcyBjaGFuZ2VkLCA5NjEgaW5zZXJ0aW9ucygrKSwgMjY1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9jbWRhcmdzLnRleGkgYi9kb2MvZW1hY3MvY21kYXJn cy50ZXhpCmluZGV4IDc5YWUyZDA2NGQxLi5lZWQyNjNjMzkwNSAxMDA2NDQKLS0tIGEvZG9jL2Vt YWNzL2NtZGFyZ3MudGV4aQorKysgYi9kb2MvZW1hY3MvY21kYXJncy50ZXhpCkBAIC0xMDI0LDE5 ICsxMDI0LDIyIEBAIGNvbG9yZWQgZGlzcGxheS4KIEBpdGVteCBhbnNpOAogVHVybiBvbiB0aGUg Y29sb3Igc3VwcG9ydCB1bmNvbmRpdGlvbmFsbHksIGFuZCB1c2UgY29sb3IgY29tbWFuZHMKIHNw ZWNpZmllZCBieSB0aGUgQU5TSSBlc2NhcGUgc2VxdWVuY2VzIGZvciB0aGUgOCBzdGFuZGFyZCBj b2xvcnMuCitAaXRlbSAyNGJpdAorVHVybiBvbiBzdXBwb3J0IGZvciBhbGwgZGVmaW5lZCAyNC1i aXQgUkdCIGNvbG9ycyBpZiBhdmFpbGFibGUuCitDdXJyZW50bHkgdGhpcyBpcyBlZmZlY3RpdmUg b24gTVMtV2luZG93cyAoMTArKSBvbmx5LgogQGl0ZW0gQHZhcntudW19CiBVc2UgY29sb3IgbW9k ZSBmb3IgQHZhcntudW19IGNvbG9ycy4gIElmIEB2YXJ7bnVtfSBpcyBAbWludXN7fTEsIHR1cm4g b2ZmCiBjb2xvciBzdXBwb3J0IChlcXVpdmFsZW50IHRvIEBzYW1we25ldmVyfSk7IGlmIGl0IGlz IDAsIHVzZSB0aGUKIGRlZmF1bHQgY29sb3Igc3VwcG9ydCBmb3IgdGhpcyB0ZXJtaW5hbCAoZXF1 aXZhbGVudCB0byBAc2FtcHthdXRvfSk7CiBvdGhlcndpc2UgdXNlIGFuIGFwcHJvcHJpYXRlIHN0 YW5kYXJkIG1vZGUgZm9yIEB2YXJ7bnVtfSBjb2xvcnMuCiBEZXBlbmRpbmcgb24geW91ciB0ZXJt aW5hbCdzIGNhcGFiaWxpdGllcywgRW1hY3MgbWlnaHQgYmUgYWJsZSB0byB0dXJuCi1vbiBhIGNv bG9yIG1vZGUgZm9yIDgsIDE2LCA4OCwgb3IgMjU2IGFzIHRoZSB2YWx1ZSBvZiBAdmFye251bX0u ICBJZgotdGhlcmUgaXMgbm8gbW9kZSB0aGF0IHN1cHBvcnRzIEB2YXJ7bnVtfSBjb2xvcnMsIEVt YWNzIGFjdHMgYXMgaWYKK29uIGEgY29sb3IgbW9kZSBmb3IgOCwgMTYsIDg4LCAyNTYsIG9yIDE2 Nzc3MjE2IGFzIHRoZSB2YWx1ZSBvZiBAdmFye251bX0uCitJZiB0aGVyZSBpcyBubyBtb2RlIHRo YXQgc3VwcG9ydHMgQHZhcntudW19IGNvbG9ycywgRW1hY3MgYWN0cyBhcyBpZgogQHZhcntudW19 IHdlcmUgMCwgaS5lLiwgaXQgdXNlcyB0aGUgdGVybWluYWwncyBkZWZhdWx0IGNvbG9yIHN1cHBv cnQKIG1vZGUuCiBAZW5kIHRhYmxlCiAKLVRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gTVMt V2luZG93cyBhbmQgTVMtRE9TLgorVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiBNUy1ET1Ms IG5vciBNUy1XaW5kb3dzIHByaW9yIHRvIFdpbmRvd3MgMTAuCiAKIEBjaW5kZXggY29sb3JzIG9u IGNoYXJhY3RlciB0ZXJtaW5hbCwgY2hhbmdpbmcgZHVyaW5nIHNlc3Npb24KIEBjaW5kZXggY2hh cmFjdGVyIHRlcm1pbmFsLCBjaGFuZ2UgY29sb3IgbW9kZQpkaWZmIC0tZ2l0IGEvZG9jL2VtYWNz L21zZG9zLnRleGkgYi9kb2MvZW1hY3MvbXNkb3MudGV4aQppbmRleCBmOTcxNTFjNjMwZi4uMmVi Y2EyNGQwOTAgMTAwNjQ0Ci0tLSBhL2RvYy9lbWFjcy9tc2Rvcy50ZXhpCisrKyBiL2RvYy9lbWFj cy9tc2Rvcy50ZXhpCkBAIC0xMTY1LDcgKzExNjUsNyBAQCBhbnl3aGVyZSBlbHNlLgogICBUaGUg dmFyaWFibGUgQGNvZGV7dzMyLXVzZS12aXNpYmxlLXN5c3RlbS1jYXJldH0gaXMgYSBmbGFnIHRo YXQKIGRldGVybWluZXMgd2hldGhlciB0byBtYWtlIHRoZSBzeXN0ZW0gY2FyZXQgdmlzaWJsZS4g IFRoZSBkZWZhdWx0IHdoZW4KIG5vIHNjcmVlbiByZWFkZXIgc29mdHdhcmUgaXMgaW4gdXNlIGlz IEBjb2Rle25pbH0sIHdoaWNoIG1lYW5zIEVtYWNzCi1kcmF3cyBpdHMgb3duIGN1cnNvciB0byBp bmRpY2F0ZSB0aGUgcG9zaXRpb24gb2YgcG9pbnQuICBBCitkcmF3cyBpdHMgb3duIGN1cnNvciB0 byBpbmRpY2F0ZSB0aGUgcG9zaXRpb24gb2YgcG9pbnQuIEEKIG5vbi1AY29kZXtuaWx9IHZhbHVl IG1lYW5zIEVtYWNzIHdpbGwgaW5kaWNhdGUgcG9pbnQgbG9jYXRpb24gd2l0aCB0aGUKIHN5c3Rl bSBjYXJldDsgdGhpcyBmYWNpbGl0YXRlcyB1c2Ugb2Ygc2NyZWVuIHJlYWRlciBzb2Z0d2FyZSwg YW5kIGlzCiB0aGUgZGVmYXVsdCB3aGVuIHN1Y2ggc29mdHdhcmUgaXMgZGV0ZWN0ZWQgd2hlbiBy dW5uaW5nIEVtYWNzLgpAQCAtMTIwMCw2ICsxMjAwLDUxIEBAIHlvdSBzaG91bGQgc2V0IGl0cyB2 YWx1ZSBpbiB5b3VyIGluaXQgZmlsZSAoQHB4cmVme0luaXQgRmlsZX0pLCBlaXRoZXIKIGRpcmVj dGx5IG9yIHZpYSBAa2Jke00teCBjdXN0b21pemUtdmFyaWFibGV9LCB3aGljaCBsZXRzIHlvdSBz YXZlIHRoZQogY3VzdG9taXplZCB2YWx1ZSwgc2VlIEByZWZ7U2F2aW5nIEN1c3RvbWl6YXRpb25z fS4KIAorQHZpbmRleCB3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzCitAY2luZGV4 IFdpbmRvd3MgVGVybWluYWwsIFdpbmRvd3MgQ29uc29sZSwgTVMtV2luZG93cworICBUaGUgaW1w bGVtZW50YXRpb24gb2YgZGlzcGxheSBmdW5jdGlvbmFsaXR5IGZvciBXaW5kb3dzIENvbnNvbGUK K2RpZmZlcnMgZnJvbSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIG90aGVyIHRlcm1pbmFsIGVtdWxh dG9ycywKK2JlY2F1c2UgaGlzdG9yaWNhbGx5LCBXaW5kb3dzIHJlcXVpcmVkIHVzZSBvZiBhbiBp ZGlvc3luY3JhY3RpYyBBUEkuCitUaGF0IEFQSSBsaW1pdGVkIFdpbmRvd3MgQ29uc29sZSBkaXNw bGF5IG9mIEVtYWNzIHRvIDE2IGJhc2ljIGNvbG9ycy4KK1dpdGggdGhlIGludHJvZHVjdGlvbiBv ZiBXaW5kb3dzIFRlcm1pbmFsLCBNaWNyb3NvZnQgaW1wbGVtZW50ZWQKK3N1cHBvcnQgZm9yIEFT Q0lJIGNvbnRyb2wgc2VxdWVuY2VzLCBtb2RlbGxlZCBvbiB0aGUgVlQxMDAgYW5kIFh0ZXJtLAor YXMgd2VsbCBhcyAyNC1iaXQgUkJHIGNvbG9yIGRpc3BsYXkuCisKKyAgVGhlIHZhcmlhYmxlIEBj b2Rle3czMi11c2UtdmlydHVhbC10ZXJtaW5hbC1zZXF1ZW5jZXN9IGRldGVybWluZXMKK3doZXRo ZXIgdGhpcyBuZXdlciBtZWNoYW5pc20gaXMgdXNlZCBmb3IgZGlzcGxheSwgb3IgdGhlIG9sZGVy IG9uZS4KK0l0IGlzIGF1dG9tYXRpY2FsbHkgc2V0IGJhc2VkIG9uIHlvdXIgdGVybWluYWwncyBj YXBhYmlsaXRpZXMgb24KK3N0YXJ0dXAuIElmIGl0IGlzIG5vbi1uaWwsIEVtYWNzIHdpbGwgdXNl IEFTQ0lJIGVzY2FwZSBzZXF1ZW5jZXMgZm9yCitjdXJzb3IgYW5kIGNvbG9yIGRpc3BsYXkuIEJ5 IGRlZmF1bHQsIDI0LWJpdCBSR0IgY29sb3Igd2lsbCBiZSB1c2VkLAorYnV0IG90aGVyICg4LCAx NiwgMjU2KSBjb2xvciBzcGFjZXMgbWF5IGJlIHVzZWQsIGJ5IHBhc3NpbmcgdGhlCitAY29kZXst LWNvbG9yfSBjb21tYW5kIGxpbmUgYXJndW1lbnQsIG9yIHNldHRpbmcgdGhlIHZhbHVlIG9mIHRo ZQorQGNvZGV7dHR5LWNvbG9yLW1vZGV9IGZyYW1lIHBhcmFtZXRlci4KKworICBBbnkgdGltZSBA Y29kZXt3MzItdXNlLXZpcnR1YWwtdGVybWluYWwtc2VxdWVuY2VzfSBpcyBzZXQgbWFudWFsbHks Cit0aGUgY2hhbmdlIGluIHZhbHVlIHNob3VsZCBiZSBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBh IGNhbGwgdG8KK0Bjb2Rle3NldC1mcmFtZS1wYXJhbWV0ZXJ9IChyZSlzZXR0aW5nIEBjb2Rleyd0 dHktY29sb3ItbW9kZX0sIG9yCithdCB2ZXJ5IGxlYXN0LCBhIGNhbGwgdG8gQGNvZGV7dzMyY29u LXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2VzfS4KKworICAgVFRZIEVtYWNzIHRyYWRpdGlvbmFs bHkgbGVhdmVzIHRleHQgY3Vyc29yIGRpc3BsYXkgdXAgdG8gdGhlIHRlcm1pbmFsLgorU2NyZWVu IHVwZGF0ZXMgdmlhIHRoZSBXaW5kb3dzIENvbnNvbGUgQVBJIHdlcmUgcGVyZm9ybWVkIGRpcmVj dGx5IG9uCityZWdpb25zIG9mIHRoZSBzY3JlZW4gYnVmZmVyLCB3aXRob3V0IGFueSBuZWVkIHRv IG1vdmUgdGhlIGN1cnNvciBkdXJpbmcKK2EgZGlzcGxheSB1cGRhdGUuIFZpcnR1YWwgdGVybWlu YWwgc2VxdWVuY2VzIHJlcXVpcmUgbW92aW5nIHRoZSBjdXJzb3IKK3RvIGV2ZXJ5IHBvaW50IGF0 IHdoaWNoIHdlIG5lZWQgdG8gd3JpdGUgYSBjaGFuZ2UuIFVuZm9ydHVuYXRlbHksIHRoZQorY29u dGVudCBvZiB0aGUgZWNobyBhcmVhIGNoYW5nZXMgZnJlcXVlbnRseSwgYW5kIHVwZGF0ZXMgYXJl IG5vdCBhbHdheXMKK3F1aWNrIGVub3VnaCBmb3IgdGhlIGN1cnNvciBtb3ZlbWVudCB0byBiZSBt YWRlIGltcGVyY2VwdGlibGUuIFRoaXMKK3ByZXNlbnRzIGEgVVggZGlsZW1tYS4gRWl0aGVyIHdl ICgxKSBoaWRlIHRoZSBjdXJzb3IgbW9tZW50YXJpbHkgd2hlbmV2ZXIKK2l0IGBganVtcHMnJyB0 byB0aGUgZWNobyBhcmVhLCB3aGljaCBtYW5pZmVzdHMgaW4gdGhlIGN1cnNvciBhcHBlYXJpbmcg dG8KK2BgZmxpY2tlcicnIGluLXBsYWNlLCBvciAoMikgd2UgZG9uJ3QsIGluIHdoaWNoIGNhc2Ug dGhlIGN1cnNvciBqdW1wcyB0bworLyBmbGFzaGVzIGluIHRoZSBlY2hvIGFyZWEuIFdlIGdldCB0 aHJvdWdoIHRoZSBob3JucyBvZiB0aGUgZGlsZW1tYSBieSAoMykKK2Fsd2F5cyBoaWRpbmcgdGhl IHN5c3RlbSBjdXJzb3IsIGFuZCBoYXZpbmcgRW1hY3MgdGFrZSBvdmVyIGN1cnNvciBkaXNwbGF5 LgorCisgIEFmdGVyIHRoZSBtaWdyYXRpb24gdG8gdmlydHVhbCB0ZXJtaW5hbCBzZXF1ZW5jZXMg RW1hY3MgZGVmYXVsdHMgdG8gKDMpLAorYnV0IGxlYXZlcyAoMikgYXMgYW4gb3B0aW9uLiBXaGVu IEBjb2Rle3czMi11c2UtdmlzaWJsZS1zeXN0ZW0tY2FyZXR9IGlzCitAY29kZXtuaWx9LCBhIHNv bGlkIG5vbi1ibGlua2luZyB0ZXh0IGN1cnNvciB3aWxsIGRpc3BsYXllZCAoaW4gdGhlCisnY3Vy c29yJyBmYWNlKS4gV2hlbiBpdCBpcyBub24tQGNvZGV7bmlsfSwgYSBzeXN0ZW0gY3Vyc29yIHdp bGwgYmUgc2hvd24KKyhwb3NzaWJseSB3aXRoIGEgc2xpZ2h0IGZsaWNrZXIpLiBUaGlzIGNoYW5n ZSBpcyBpbmRlcGVuZGVudCBvZgorQGNvZGV7dzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVl bmNlc30uCisKKwogQGlmbm90dGV4CiBAaW5jbHVkZSBtc2Rvcy14dHJhLnRleGkKIEBlbmQgaWZu b3R0ZXgKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggZTBjNGYzY2I4NzEu LjdjODg1NTNjMjgxIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAtMzIy OCw2ICszMjI4LDMxIEBAIEFjY29yZGluZ2x5LCB3ZSBoYXZlIHJldmlzZWQgb3VyIHJlY29tbWVu ZGF0aW9ucyBmb3IgYSBzdWl0YWJsZSBESkdQUAogdG9vbGNoYWluIHRvIEdDQyAxNC4yLjAgYW5k IEJpbnV0aWxzIDIuMzUuMSBpbiBsaWV1IG9mIEdDQyAzLjQueCBhbmQKIEJpbnV0aWxzIDIuMjYu CiAKKysrKworKiogV2luZG93cyBUZXJtaW5hbCBub3cgZGlzcGxheXMgMjQtYml0IFJHQi4KK1By ZXZpb3VzbHksIHRlcm1pbmFsIHNlc3Npb25zIG9uIFdpbmRvd3Mgc3VwcG9ydGVkIGRpc3BsYXkg b2YgMTYKK2NvbG9ycywgdmlhIHRoZSBXaW5kb3dzIENvbnNvbGUgQVBJLiBUaGVyZSBpcyBub3cg c3VwcG9ydCBmb3IgMjU2CithbmQgMjQtYml0IFJHQiBjb2xvciwgYnkgZW1pdHRpbmcgQVNDSUkg Y29udHJvbCBzZXF1ZW5jZXMuCitDdXJzb3IgbW92ZW1lbnQgLyBkaXNwbGF5IGhhcyBhbHNvIGJl ZW4gKHJlLSlpbXBsZW1lbnRlZC4KKworVGhlIG5ldyBtZWNoYW5pc20gd2lsbCBiZSBlbmFibGVk IGF1dG9tYXRpY2FsbHkgd2hlbiBzdXBwb3J0ZWQuCitJdCBkZWZhdWx0cyB0byAyNC1iaXQgUkdC IGNvbG9yLCBidXQgY2FuIGJlIHNldCB0byA4LCAxNiwgMjU2LCBvcgorJzI0Yml0JyBieSBwYXNz aW5nIHRoZSAnLS1jb2xvcicgZmxhZyBvciBzZXR0aW5nIHRoZSAndHR5LWNvbG9yLW1vZGUnCitm cmFtZSBwYXJhbWV0ZXIuIEl0IGNhbiBiZSBkaXNhYmxlZC9lbmFibGVkIGJ5IHNldHRpbmcgdGhl IHZhcmlhYmxlCisndzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcycuCisKKysrKwor KiogRW1hY3Mgbm93IGhhbmRsZXMgdGV4dCBjdXJzb3IgZGlzcGxheSBpbiBXaW5kb3dzIFRlcm1p bmFsL0NvbnNvbGUuCitQcmV2aW91c2x5LCBpbiB0ZXJtaW5hbCBzZXNzaW9ucyBvbiBXaW5kb3dz LCBFbWFjcyBkZWxlZ2F0ZWQgdGV4dCBjdXJzb3IKK2Rpc3BsYXkgdG8gdGhlIHN5c3RlbSAoYXMg b24gb3RoZXIgVFRZcykuIEZvbGxvd2luZyB0aGUgbWlncmF0aW9uIHRvCitBU0NJSSBjb250cm9s IHNlcXVlbmNlcyAoc2VlIGFib3ZlKSwgY3Vyc29yIGRpc3BsYXkgaXMgbm93IG9wdGlvbmFsbHks CitidXQgYnkgZGVmYXVsdCwgaGFuZGxlZCBieSBFbWFjcy4gV2hlbiAndzMyLXVzZS12aXNpYmxl LXN5c3RlbS1jYXJldCcgaXMKK25pbCwgYSBzb2xpZCBub24tYmxpbmtpbmcgdGV4dCBjdXJzb3Ig d2lsbCBkaXNwbGF5ZWQgKGluIHRoZSAnY3Vyc29yJworZmFjZSkuIFdoZW4gaXQgaXMgc2V0IHRv IG5vbi1uaWwsIHRoZSBzeXN0ZW0gY3Vyc29yIHdpbGwgYmUgc2hvd24uCisKK1NlZSB0aGUgbWFu dWFsIGVudHJ5IHNwZWNpZmljIHRvIE1TLVdpbmRvd3MgZm9yIG1vcmUgZGV0YWlscy4KKworCiAM CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCmRpZmYgLS1n aXQgYS9saXNwL3Rlcm0vdHR5LWNvbG9ycy5lbCBiL2xpc3AvdGVybS90dHktY29sb3JzLmVsCmlu ZGV4IGRmZDIwN2Q3MWMxLi4xYmEwNDVjOGI3MSAxMDA2NDQKLS0tIGEvbGlzcC90ZXJtL3R0eS1j b2xvcnMuZWwKKysrIGIvbGlzcC90ZXJtL3R0eS1jb2xvcnMuZWwKQEAgLTc2NCw3ICs3NjQsOCBA QAogICAgIChhdXRvIC4gMCkKICAgICAoYW5zaTggLiA4KQogICAgIChhbHdheXMgLiA4KQotICAg ICh5ZXMgLiA4KSkKKyAgICAoeWVzIC4gOCkKKyAgICAoMjRiaXQgLiAxNjc3NzIxNikpCiAgICJB biBhbGlzdCBvZiBzdXBwb3J0ZWQgc3RhbmRhcmQgdHR5IGNvbG9yIG1vZGVzIGFuZCB0aGVpciBh bGlhc2VzLiIpCiAKIChkZWZ1biB0dHktY29sb3ItYWxpc3QgKCZvcHRpb25hbCBfZnJhbWUpCmRp ZmYgLS1naXQgYS9saXNwL3Rlcm0vdzMyY29uc29sZS5lbCBiL2xpc3AvdGVybS93MzJjb25zb2xl LmVsCmluZGV4IDFiNDRkYTQ4YmY3Li43YTI2MjA5NzQ5MiAxMDA2NDQKLS0tIGEvbGlzcC90ZXJt L3czMmNvbnNvbGUuZWwKKysrIGIvbGlzcC90ZXJtL3czMmNvbnNvbGUuZWwKQEAgLTI0LDggKzI0 LDcgQEAKIAogOzs7IENvZGU6CiAKLTs7IFczMiB1c2VzIGRpZmZlcmVudCBjb2xvciBpbmRleGVz IHRoYW4gc3RhbmRhcmQ6Ci0KKzs7IFczMiB1c2VzIGRpZmZlcmVudCBjb2xvciBpbmRleGVzIHRo YW4gc3RhbmRhcmQKIChkZWZ2YXIgdzMyLXR0eS1zdGFuZGFyZC1jb2xvcnMKICAgJygoImJsYWNr IiAgICAgICAgICAwICAgICAwICAgICAwICAgICAwKQogICAgICgiYmx1ZSIgICAgICAgICAgIDEg ICAgIDAgICAgIDAgNTI0ODApIDsgTWVkaXVtQmx1ZQpAQCAtNDMsNTYgKzQyLDEzMyBAQAogICAg ICgibGlnaHRtYWdlbnRhIiAgMTMgNjU1MzUgICAgIDAgNjU1MzUpIDsgTWFnZW50YQogICAgICgi eWVsbG93IiAgICAgICAgMTQgNjU1MzUgNjU1MzUgICAgIDApIDsgWWVsbG93CiAgICAgKCJ3aGl0 ZSIgICAgICAgICAxNSA2NTUzNSA2NTUzNSA2NTUzNSkpCi0iQSBsaXN0IG9mIFZHQSBjb25zb2xl IGNvbG9ycywgdGhlaXIgaW5kaWNlcyBhbmQgMTYtYml0IFJHQiB2YWx1ZXMuIikKKyAgIkEgbGlz dCBvZiBWR0EgY29uc29sZSBjb2xvcnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJpdCBSR0IgdmFs dWVzLiIpCisKKzs7IFdoZW4gdXNpbmcgVlQgc2VxdWVuY2VzIGZvciBjb2xvciwgdXNlIHh0ZXJt LWxpa2UgaW5kaWNlcworKGRlZnZhciB3MzItdHR5LXZpcnR1YWwtdGVybWluYWwtYmFzZS1jb2xv cnMKKyAgJygoImJsYWNrIiAgICAgICAgICAwICAgICAwICAgICAwICAgICAwKQorICAgICgicmVk IiAgICAgICAgICAgIDEgNDU1NjggIDg3MDQgIDg3MDQpIDsgRmlyZUJyaWNrCisgICAgKCJncmVl biIgICAgICAgICAgMiAgODcwNCAzNTU4NCAgODcwNCkgOyBGb3Jlc3RHcmVlbgorICAgICgiYnJv d24iICAgICAgICAgIDMgNDA5NjAgMjA5OTIgMTE1MjApIDsgU2llbm5hCisgICAgKCJibHVlIiAg ICAgICAgICAgNCAgICAgMCAgICAgMCA1MjQ4MCkgOyBNZWRpdW1CbHVlCisgICAgKCJtYWdlbnRh IiAgICAgICAgNSAzNTU4NCAgICAgMCAzNTU4NCkgOyBEYXJrTWFnZW50YQorICAgICgiY3lhbiIg ICAgICAgICAgIDYgICAgIDAgNTI3MzYgNTM1MDQpIDsgRGFya1R1cnF1b2lzZQorICAgICgibGln aHRncmF5IiAgICAgIDcgNDg2NDAgNDg2NDAgNDg2NDApIDsgR3JheQorICAgICgiZGFya2dyYXki ICAgICAgIDggMjYxMTIgMjYxMTIgMjYxMTIpIDsgR3JheTQwCisgICAgKCJsaWdodHJlZCIgICAg ICAgOSA2NTUzNSAgICAgMCAgICAgMCkgOyBSZWQKKyAgICAoImxpZ2h0Z3JlZW4iICAgIDEwICAg ICAwIDY1NTM1ICAgICAwKSA7IEdyZWVuCisgICAgKCJ5ZWxsb3ciICAgICAgICAxMSA2NTUzNSA2 NTUzNSAgICAgMCkgOyBZZWxsb3cKKyAgICAoImxpZ2h0Ymx1ZSIgICAgIDEyICAgICAwICAgICAw IDY1NTM1KSA7IEJsdWUKKyAgICAoImxpZ2h0bWFnZW50YSIgIDEzIDY1NTM1ICAgICAwIDY1NTM1 KSA7IE1hZ2VudGEKKyAgICAoImxpZ2h0Y3lhbiIgICAgIDE0ICAgICAwIDY1NTM1IDY1NTM1KSA7 IEN5YW4KKyAgICAoIndoaXRlIiAgICAgICAgIDE1IDY1NTM1IDY1NTM1IDY1NTM1KSkKKyAgIkEg bGlzdCBvZiBWR0EgY29uc29sZSBjb2xvcnMsIHRoZWlyIGluZGljZXMgYW5kIDE2LWJpdCBSR0Ig dmFsdWVzLiIpCiAKIChkZWNsYXJlLWZ1bmN0aW9uIHgtc2V0dXAtZnVuY3Rpb24ta2V5cyAidGVy bS9jb21tb24td2luIiAoZnJhbWUpKQogKGRlY2xhcmUtZnVuY3Rpb24gZ2V0LXNjcmVlbi1jb2xv ciAidzMyY29uc29sZS5jIiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9uIHczMi1nZXQtY29uc29sZS1j b2RlcGFnZSAidzMycHJvYy5jIiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9uIHczMi1nZXQtY29uc29s ZS1vdXRwdXQtY29kZXBhZ2UgInczMnByb2MuYyIgKCkpCiAKKyhkZWZ1biB3MzJjb24tZGVmaW5l LWJhc2UtY29sb3JzICgpCisgICJEZWZpbmVzIGJhc2UgMTYtY29sb3Igc3BhY2UgZm9yIHczMiBj b25zb2xlLiIKKyAgKGxldCogKChjb2xvcnMgKGlmIHczMi11c2UtdmlydHVhbC10ZXJtaW5hbC1z ZXF1ZW5jZXMKKyAgICAgICAgICAgICAgICAgICAgIHczMi10dHktdmlydHVhbC10ZXJtaW5hbC1i YXNlLWNvbG9ycworICAgICAgICAgICAgICAgICAgIHczMi10dHktc3RhbmRhcmQtY29sb3JzKSkK KyAgICAgICAgIChuYmFzZSAobGVuZ3RoIGNvbG9ycykpCisgICAgICAgICAoY29sb3IgKGNhciBj b2xvcnMpKSkKKyAgICAocHJvZ24gKHdoaWxlIGNvbG9ycworICAgICAgICAgICAgICh0dHktY29s b3ItZGVmaW5lIChjYXIgY29sb3IpIChjYWRyIGNvbG9yKSAoY2RkciBjb2xvcikpCisgICAgICAg ICAgICAgKHNldHEgY29sb3JzIChjZHIgY29sb3JzKQorICAgICAgICAgICAgICAgICAgIGNvbG9y ICAoY2FyIGNvbG9ycykpKQorICAgICAgICAgICBuYmFzZSkpKQorCis7OyBOb3RlOiB0dHktY29s b3ItZGVmaW5lIHN3YXBzIHBhc3NlZCBpbmRleCBmb3IgcGl4ZWwgb24gMjRiaXQgdGVybWluYWwK Kzs7IFNvLCB3ZSBuZWVkIHRoaXMgZnVuY3Rpb24gdG8gInJlY292ZXIiIHRoZSB0ZXJtaW5hbCdz IG5hdGl2ZSBtYXBwaW5nCisoZGVmdW4gdzMyY29uLWdldC1waXhlbCAoaW5kZXgpCisgICJDb252 ZXJ0IGEgYmFzZS1jb2xvciBpbmRleCBpbnRvIGEgcGl4ZWwgKGluZGV4IGludG8gMjRiaXQgbWFw KSIKKyAgKGxldCAoKGNvbG9yIChudGggaW5kZXggdzMyLXR0eS12aXJ0dWFsLXRlcm1pbmFsLWJh c2UtY29sb3JzKSkpCisgICAgKG9yICh0dHktY29sb3ItMjRiaXQgKGNkZHIgY29sb3IpKSBpbmRl eCkpKQorCisoZGVmdW4gdzMyY29uLWRlZmluZS0yNTYtY29sb3JzICgpCisgICJEZWZpbmVzIDI1 Ni1jb2xvciBzcGFjZSBmb3IgdzMyIGNvbnNvbGUuIgorICAobGV0ICgociAwKSAoYiAwKSAoZyAw KQorICAgICAgICAobiAoLSAyNTYgKHczMmNvbi1kZWZpbmUtYmFzZS1jb2xvcnMpKSkKKyAgICAg ICAgKGNvbnZlcnQtdG8tMTZiaXQgKGxhbWJkYSAocHJpbSkgKGxvZ2lvciBwcmltIChhc2ggcHJp bSA4KSkpKSkKKyAgICAod2hpbGUgKD4gbiAyNCkgOyBub24tZ3JleQorICAgICAgKGxldCAoKGkg KC0gMjU2IG4pKQorICAgICAgICAgICAgKGMgKG1hcGNhciBjb252ZXJ0LXRvLTE2Yml0CisgICAg ICAgICAgICAgICAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAoeCkgKGlmICh6ZXJvcCB4KSAwICgr ICgqIHggNDApIDU1KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgciBn IGIpKSkpKQorICAgICAgICAodHR5LWNvbG9yLWRlZmluZSAoZm9ybWF0ICJjb2xvci0lZCIgaSkg aSBjKSkKKyAgICAgIChzZXRxIGIgKDErIGIpKQorICAgICAgKHdoZW4gKD4gYiA1KSAoc2V0cSBn ICgxKyBnKSBiIDApKQorICAgICAgKHdoZW4gKD4gZyA1KSAoc2V0cSByICgxKyByKSBnIDApKQor ICAgICAgKHNldHEgbiAoMS0gbikpKQorICAgICh3aGlsZSAoPiBuIDApIDsgYWxsLWdyZXkKKyAg ICAgIChsZXQqICgoaSAoLSAyNTYgbikpCisgICAgICAgICAgICAgKHYgKGZ1bmNhbGwgY29udmVy dC10by0xNmJpdCAoKyA4ICgqICgtIDI0IG4pIDEwKSkpKQorICAgICAgICAgICAgIChjIChsaXN0 IHYgdiB2KSkpCisgICAgICAgICh0dHktY29sb3ItZGVmaW5lIChmb3JtYXQgImNvbG9yLSVkIiBp KSBpIGMpKQorICAgICAgKHNldHEgbiAoMS0gbikpKSkpCisKKyhkZWZ1biB3MzJjb24tZGVmaW5l LTI0Yml0LWNvbG9ycyAoKQorICAiRGVmaW5lcyAyNC1iaXQgY29sb3Igc3BhY2UgZm9yIHczMiBj b25zb2xlLiIKKyAgKGxldCAoKGkgKHczMmNvbi1kZWZpbmUtYmFzZS1jb2xvcnMpKSkKKyAgICAo bWFwYyAobGFtYmRhIChjKSAodW5sZXNzIChhc3NvYyAoY2FyIGMpIHczMi10dHktc3RhbmRhcmQt Y29sb3JzKQorICAgICAgICAgICAgICAgICAgICh0dHktY29sb3ItZGVmaW5lIChjYXIgYykgaSAo Y2RyIGMpKQorICAgICAgICAgICAgICAgICAgIChzZXRxIGkgKDErIGkpKSkpCisgICAgICAgICAg Y29sb3ItbmFtZS1yZ2ItYWxpc3QpKSkKKwogKGRlZnVuIHRlcm1pbmFsLWluaXQtdzMyY29uc29s ZSAoKQogICAiVGVybWluYWwgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIHczMiBjb25zb2xl LiIKICAgOzsgU2hhcmUgZnVuY3Rpb24ga2V5IGluaXRpYWxpemF0aW9uIHdpdGggdzMyIGd1aSBm cmFtZXMKICAgKHgtc2V0dXAtZnVuY3Rpb24ta2V5cyAoc2VsZWN0ZWQtZnJhbWUpKQogICA7OyBT ZXQgdGVybWluYWwgYW5kIGtleWJvYXJkIGVuY29kaW5ncyB0byB0aGUgY3VycmVudCBPRU0gY29k ZXBhZ2UuCiAgIChsZXQgKChvZW0tY29kZS1wYWdlLWNvZGluZwotCSAoaW50ZXJuIChmb3JtYXQg ImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtY29kZXBhZ2UpKSkpCi0JKG9lbS1jb2RlLXBhZ2Utb3V0 cHV0LWNvZGluZwotCSAoaW50ZXJuIChmb3JtYXQgImNwJWQiICh3MzItZ2V0LWNvbnNvbGUtb3V0 cHV0LWNvZGVwYWdlKSkpKQotCW9lbS1jcy1wIG9lbS1vLWNzLXApCi0JKHNldHEgb2VtLWNzLXAg KGNvZGluZy1zeXN0ZW0tcCBvZW0tY29kZS1wYWdlLWNvZGluZykpCi0JKHNldHEgb2VtLW8tY3Mt cCAoY29kaW5nLXN5c3RlbS1wIG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZykpCi0JKHdoZW4g b2VtLWNzLXAKLQkgIChzZXQta2V5Ym9hcmQtY29kaW5nLXN5c3RlbSBvZW0tY29kZS1wYWdlLWNv ZGluZykKLQkgIChzZXQtdGVybWluYWwtY29kaW5nLXN5c3RlbQotCSAgIChpZiBvZW0tby1jcy1w IG9lbS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZyBvZW0tY29kZS1wYWdlLWNvZGluZykpCi0gICAg ICAgICAgOzsgU2luY2Ugd2UgY2hhbmdlZCB0aGUgdGVybWluYWwgZW5jb2RpbmcsIHdlIG5lZWQg dG8gcmVwZWF0Ci0gICAgICAgICAgOzsgdGhlIHRlc3QgZm9yIFVuaWNvZGUgcXVvdGVzIGJlaW5n IGRpc3BsYXlhYmxlLgotICAgICAgICAgIChzdGFydHVwLS1zZXR1cC1xdW90ZS1kaXNwbGF5KSkp Ci0gIChsZXQqICgoY29sb3JzIHczMi10dHktc3RhbmRhcmQtY29sb3JzKQotICAgICAgICAgKGNv bG9yIChjYXIgY29sb3JzKSkpCi0gICAgKHR0eS1jb2xvci1jbGVhcikKLSAgICAod2hpbGUgY29s b3JzCi0gICAgICAodHR5LWNvbG9yLWRlZmluZSAoY2FyIGNvbG9yKSAoY2FkciBjb2xvcikgKGNk ZHIgY29sb3IpKQotICAgICAgKHNldHEgY29sb3JzIChjZHIgY29sb3JzKQotICAgICAgICAgICAg Y29sb3IgKGNhciBjb2xvcnMpKSkpCi0gIChjbGVhci1mYWNlLWNhY2hlKQotICA7OyBGaWd1cmUg b3V0IHdoYXQgYXJlIHRoZSBjb2xvcnMgb2YgdGhlIGNvbnNvbGUgd2luZG93LCBhbmQgc2V0IHVw Ci0gIDs7IHRoZSBiYWNrZ3JvdW5kLW1vZGUgY29ycmVzcG9uZGluZ2x5LgotICAobGV0KiAoKHNj cmVlbi1jb2xvciAoZ2V0LXNjcmVlbi1jb2xvcikpCi0JIChiZyAoY2FkciBzY3JlZW4tY29sb3Ip KQotCSAoZGVzY3IgKHR0eS1jb2xvci1ieS1pbmRleCBiZykpCi0JIHIgZyBiIGJnLW1vZGUpCi0g ICAgKHNldHEgciAobnRoIDIgZGVzY3IpCi0JICBnIChudGggMyBkZXNjcikKLQkgIGIgKG50aCA0 IGRlc2NyKSkKLSAgICAoaWYgKDwgKCsgciBnIGIpICgqIC42ICgrIDY1NTM1IDY1NTM1IDY1NTM1 KSkpCi0JKHNldHEgYmctbW9kZSAnZGFyaykKLSAgICAgIChzZXRxIGJnLW1vZGUgJ2xpZ2h0KSkK LSAgICAoc2V0LXRlcm1pbmFsLXBhcmFtZXRlciBuaWwgJ2JhY2tncm91bmQtbW9kZSBiZy1tb2Rl KSkKLSAgKHR0eS1zZXQtdXAtaW5pdGlhbC1mcmFtZS1mYWNlcykKKyAgICAgICAgIChpbnRlcm4g KGZvcm1hdCAiY3AlZCIgKHczMi1nZXQtY29uc29sZS1jb2RlcGFnZSkpKSkKKyAgICAgICAgKG9l bS1jb2RlLXBhZ2Utb3V0cHV0LWNvZGluZworICAgICAgICAgKGludGVybiAoZm9ybWF0ICJjcCVk IiAodzMyLWdldC1jb25zb2xlLW91dHB1dC1jb2RlcGFnZSkpKSkKKyAgICAgICAgb2VtLWNzLXAg b2VtLW8tY3MtcCkKKyAgICAoc2V0cSBvZW0tY3MtcCAoY29kaW5nLXN5c3RlbS1wIG9lbS1jb2Rl LXBhZ2UtY29kaW5nKSkKKyAgICAoc2V0cSBvZW0tby1jcy1wIChjb2Rpbmctc3lzdGVtLXAgb2Vt LWNvZGUtcGFnZS1vdXRwdXQtY29kaW5nKSkKKyAgICAod2hlbiBvZW0tY3MtcAorICAgICAgKHNl dC1rZXlib2FyZC1jb2Rpbmctc3lzdGVtIG9lbS1jb2RlLXBhZ2UtY29kaW5nKQorICAgICAgKHNl dC10ZXJtaW5hbC1jb2Rpbmctc3lzdGVtCisgICAgICAgKGlmIG9lbS1vLWNzLXAgb2VtLWNvZGUt cGFnZS1vdXRwdXQtY29kaW5nIG9lbS1jb2RlLXBhZ2UtY29kaW5nKSkKKyAgICAgIDs7IFNpbmNl IHdlIGNoYW5nZWQgdGhlIHRlcm1pbmFsIGVuY29kaW5nLCB3ZSBuZWVkIHRvIHJlcGVhdAorICAg ICAgOzsgdGhlIHRlc3QgZm9yIFVuaWNvZGUgcXVvdGVzIGJlaW5nIGRpc3BsYXlhYmxlLgorICAg ICAgKHN0YXJ0dXAtLXNldHVwLXF1b3RlLWRpc3BsYXkpKSkKKyAgKHczMmNvbi1zZXQtdXAtaW5p dGlhbC1mcmFtZS1mYWNlcykKICAgKHJ1bi1ob29rcyAndGVybWluYWwtaW5pdC13MzItaG9vaykp CiAKKyhkZWZ1biB3MzJjb24tc2V0LXVwLWluaXRpYWwtZnJhbWUtZmFjZXMgKCkKKyAgIlNldCB1 cCBpbml0aWFsIGZhY2UgY29sb3Igc2NoZW1lIGR5bmFtaWNhbGx5IGJhc2VkIG9uIHRoZSBudW1i ZXIgb2YKK2Rpc3BsYXkgY29sb3JzIGFuZCB0aGUgdmFsdWUgb2YgYHczMi11c2UtdmlydHVhbC10 ZXJtaW5hbC1zZXF1ZW5jZXMnLiIKKyAgKHR0eS1jb2xvci1jbGVhcikKKyAgKGxldCAoKG5jb2xv cnMgKGRpc3BsYXktY29sb3ItY2VsbHMpKSkKKyAgICAoaWYgdzMyLXVzZS12aXJ0dWFsLXRlcm1p bmFsLXNlcXVlbmNlcworICAgICAgICAoY29uZCAoKD0gbmNvbG9ycyAxNjc3NzIxNikgKHczMmNv bi1kZWZpbmUtMjRiaXQtY29sb3JzKSkKKyAgICAgICAgICAgICAgKCg9IG5jb2xvcnMgMjY1ICAg ICAgICh3MzJjb24tZGVmaW5lLTI1Ni1jb2xvcnMpKSkKKyAgICAgICAgICAgICAgKHQgICAgICAg ICAgICAgICAgICAgICh3MzJjb24tZGVmaW5lLWJhc2UtY29sb3JzKSkpCisgICAgICAodzMyY29u LWRlZmluZS1iYXNlLWNvbG9ycykpCisgICAgKGNsZWFyLWZhY2UtY2FjaGUpCisgICAgOzsgRmln dXJlIG91dCB3aGF0IGFyZSB0aGUgY29sb3JzIG9mIHRoZSBjb25zb2xlIHdpbmRvdywgYW5kIHNl dCB1cAorICAgIDs7IHRoZSBiYWNrZ3JvdW5kLW1vZGUgY29ycmVzcG9uZGluZ2x5LgorICAgIChs ZXQqICgoc2NyZWVuLWNvbG9yIChnZXQtc2NyZWVuLWNvbG9yKSkKKyAgICAgICAgICAgKGJhc2Ut aW5kZXggKGNhZHIgc2NyZWVuLWNvbG9yKSkKKyAgICAgICAgICAgKGJnLXBpeGVsICh3MzJjb24t Z2V0LXBpeGVsIGJhc2UtaW5kZXgpKQorICAgICAgICAgICAoYmcgKGlmICg9IG5jb2xvcnMgMTY3 NzcyMTYpIGJnLXBpeGVsIGJhc2UtaW5kZXgpKQorICAgICAgICAgICAoZGVzY3IgKHR0eS1jb2xv ci1ieS1pbmRleCBiZykpCisgICAgICAgICAgIHIgZyBiIGJnLW1vZGUpCisgICAgICAoc2V0cSBy IChudGggMiBkZXNjcikKKyAgICAgICAgICAgIGcgKG50aCAzIGRlc2NyKQorICAgICAgICAgICAg YiAobnRoIDQgZGVzY3IpKQorICAgICAgKGlmICg8ICgrIHIgZyBiKSAoKiAuNiAoKyA2NTUzNSA2 NTUzNSA2NTUzNSkpKQorICAgICAgICAgIChzZXRxIGJnLW1vZGUgJ2RhcmspCisgICAgICAgIChz ZXRxIGJnLW1vZGUgJ2xpZ2h0KSkKKyAgICAgIChzZXQtdGVybWluYWwtcGFyYW1ldGVyIG5pbCAn YmFja2dyb3VuZC1tb2RlIGJnLW1vZGUpKSkKKyAgKHR0eS1zZXQtdXAtaW5pdGlhbC1mcmFtZS1m YWNlcykpCisKIChwcm92aWRlICd0ZXJtL3czMmNvbnNvbGUpCiAKIDs7OyB3MzJjb25zb2xlLmVs IGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvc3JjL2Rpc3BuZXcuYyBiL3NyYy9kaXNwbmV3LmMKaW5k ZXggZDY1YTdjYmMxZjEuLjkyOGZiZDc4YzE3IDEwMDY0NAotLS0gYS9zcmMvZGlzcG5ldy5jCisr KyBiL3NyYy9kaXNwbmV3LmMKQEAgLTEwMyw2ICsxMDMsMTMgQEAgc3RhdGljIHZvaWQgYWRqdXN0 X2ZyYW1lX2dseXBoc19mb3JfZnJhbWVfcmVkaXNwbGF5IChzdHJ1Y3QgZnJhbWUgKik7CiBzdGF0 aWMgdm9pZCBzZXRfd2luZG93X3VwZGF0ZV9mbGFncyAoc3RydWN0IHdpbmRvdyAqdywgYm9vbCBv bl9wKTsKIHN0YXRpYyB2b2lkIHR0eV9zZXRfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKmYpOwogCisj aWZkZWYgV0lORE9XU05UCitleHRlcm4gdm9pZCB3MzJjb25faGlkZV9jdXJzb3IgKHZvaWQpOwor ZXh0ZXJuIHZvaWQgdzMyY29uX3Nob3dfY3Vyc29yICh2b2lkKTsKK2V4dGVybiB2b2lkIHczMmNv bl9zYXZlX2N1cnNvciAodm9pZCk7CitleHRlcm4gdm9pZCB3MzJjb25fcmVzdG9yZV9jdXJzb3Ig KHZvaWQpOworZXh0ZXJuIHZvaWQgdzMyY29uX2RyYXdfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKik7 CisjZW5kaWYKIAogI2lmIDAgLyogUGxlYXNlIGxlYXZlIHRoaXMgaW4gYXMgYSBkZWJ1Z2dpbmcg YWlkLiAgKi8KIHN0YXRpYyB2b2lkCkBAIC00MDUyLDIwICs0MDU5LDI2IEBAIGNvbWJpbmVfdXBk YXRlc19mb3JfZnJhbWUgKHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBpbmhpYml0X3Njcm9sbGluZykK ICAgICAgIGlmICh0b3Btb3N0X2NoaWxkLT5hZnRlcl9tYWtlX2ZyYW1lKQogCWNvcHlfY2hpbGRf Z2x5cGhzIChyb290LCB0b3Btb3N0X2NoaWxkKTsKICAgICB9Ci0KLSAgdXBkYXRlX2JlZ2luIChy b290KTsKLSAgd3JpdGVfbWF0cml4IChyb290LCBpbmhpYml0X3Njcm9sbGluZywgZmFsc2UpOwot ICBtYWtlX21hdHJpeF9jdXJyZW50IChyb290KTsKLSAgdXBkYXRlX2VuZCAocm9vdCk7Ci0KICAg LyogVGhlIHNlbGVjdGVkIGZyYW1lIGRldGVybWluZXMgd2hlcmUgdGhlIGN1cnNvciBvbiB0dHlz IGdvZXMsIGV4Y2VwdAogICAgICB3aGVuIGl0IGlzIGEgZnJhbWUgdGhhdCBpcyBjb21wbGV0ZWx5 IHVucmVsYXRlZCB0byB0aGUgZnJhbWUgYmVpbmcKICAgICAgZGlzcGxheWVkLiAgVGhpcyBjYW4g aGFwcGVuIHdpdGggbXVsdGktdHR5LCB3aGVuIHRoZSBzZWxlY3RlZCBmcmFtZQogICAgICBjYW4g YmUgYSB3aW5kb3ctc3lzdGVtIGZyYW1lLiAgKi8KKyAgc3RydWN0IGZyYW1lICpjZjsKICAgaWYg KGZyYW1lX2FuY2VzdG9yX3AgKHJvb3QsIFNFTEVDVEVEX0ZSQU1FICgpKSkKLSAgICB0dHlfc2V0 X2N1cnNvciAoU0VMRUNURURfRlJBTUUgKCkpOworICAgIGNmID0gU0VMRUNURURfRlJBTUUgKCk7 CiAgIGVsc2UKLSAgICB0dHlfc2V0X2N1cnNvciAocm9vdCk7CisgICAgY2YgPSByb290OworCisg IHVwZGF0ZV9iZWdpbiAocm9vdCk7CisjaWZkZWYgV0lORE9XU05UCisgIHR0eV9zZXRfY3Vyc29y IChjZik7CisgIHczMmNvbl9kcmF3X2N1cnNvcihjZik7CisjZW5kaWYgIAorICB3cml0ZV9tYXRy aXggKHJvb3QsIGluaGliaXRfc2Nyb2xsaW5nLCBmYWxzZSk7CisgIG1ha2VfbWF0cml4X2N1cnJl bnQgKHJvb3QpOworICB1cGRhdGVfZW5kIChyb290KTsKKworICB0dHlfc2V0X2N1cnNvciAoY2Yp OwogCiAgIC8qIElmIGEgY2hpbGQgaXMgZGlzcGxheWVkLCBhbmQgdGhlIGN1cnNvciBpcyBkaXNw bGF5ZWQgaW4gYW5vdGhlcgogICAgICBmcmFtZSwgdGhlIGNoaWxkIG1pZ2h0IGxheSBhYm92ZSB0 aGUgY3Vyc29yLCBzbyB0aGF0IGl0IGFwcGVhcnMgdG8KQEAgLTQxNDEsMTUgKzQxNTQsMjMgQEAg dXBkYXRlX2ZyYW1lX3dpdGhfbWVudSAoc3RydWN0IGZyYW1lICpmLCBpbnQgcm93LCBpbnQgY29s KQogCiAgIC8qIFVwZGF0ZSB0aGUgZGlzcGxheS4gICovCiAgIHVwZGF0ZV9iZWdpbiAoZik7Cisj aWZkZWYgV0lORE9XU05UCisgIGlmIChyb3cgPj0gMCAmJiBjb2wgPj0gMCkKKyAgICBjdXJzb3Jf dG8gKGYsIHJvdywgY29sKTsKKyAgZWxzZQorICAgIHR0eV9zZXRfY3Vyc29yIChmKTsgIAorICB3 MzJjb25fZHJhd19jdXJzb3IgKGYpOworI2VuZGlmICAKICAgd3JpdGVfbWF0cml4IChmLCB0cnVl LCB0cnVlKTsKICAgbWFrZV9tYXRyaXhfY3VycmVudCAoZik7Ci0gIGNsZWFyX2Rlc2lyZWRfbWF0 cmljZXMgKGYpOwogICAvKiBST1cgYW5kIENPTCB0ZWxsIHVzIHdoZXJlIGluIHRoZSBtZW51IHRv IHBvc2l0aW9uIHRoZSBjdXJzb3IsIHNvCiAgICAgIHRoYXQgc2NyZWVuIHJlYWRlcnMga25vdyB0 aGUgYWN0aXZlIHJlZ2lvbiBvbiB0aGUgc2NyZWVuLiAgKi8KICAgaWYgKHJvdyA+PSAwICYmIGNv bCA+PSAwKQogICAgIGN1cnNvcl90byAoZiwgcm93LCBjb2wpOwogICBlbHNlCiAgICAgdHR5X3Nl dF9jdXJzb3IgKGYpOworCisgIGNsZWFyX2Rlc2lyZWRfbWF0cmljZXMgKGYpOwogICB1cGRhdGVf ZW5kIChmKTsKICAgZmx1c2hfdGVybWluYWwgKGYpOwogCkBAIC01NzQ3LDcgKzU3NjgsMzMgQEAg d3JpdGVfbWF0cml4IChzdHJ1Y3QgZnJhbWUgKmYsIGJvb2wgaW5oaWJpdF9pZF9wLCBib29sIHVw ZGF0aW5nX21lbnVfcCkKICAgICAgaXMgZG9uZSBzbyB0aGF0IG1lc3NhZ2VzIGFyZSBtYWRlIHZp c2libGUgd2hlbiBwYXVzaW5nLiAgKi8KICAgaW50IGxhc3Rfcm93ID0gZi0+ZGVzaXJlZF9tYXRy aXgtPm5yb3dzIC0gMTsKICAgaWYgKE1BVFJJWF9ST1dfRU5BQkxFRF9QIChmLT5kZXNpcmVkX21h dHJpeCwgbGFzdF9yb3cpKQotICAgIHdyaXRlX3JvdyAoZiwgbGFzdF9yb3csIHVwZGF0aW5nX21l bnVfcCk7CisgICAgeworICAgICAgLyogVGhpcyBzcGVjaWFsIGNhc2UgaGFuZGxlcyBzeXN0ZW0g Y3Vyc29yIGZsYXNoaW5nIGluL3RvIHRoZSBlY2hvCisgICAgICBhcmVhIHdoZW4gcnVubmluZyB3 aXRoIGNvbG9yIGJhY2tncm91bmRzIGluIFdpbmRvd3MgVGVybWluYWwuIFdlCisgICAgICBoYXZl IG9uZSBjdXJzb3IsIGl0IG1vdmVzIGludG8gd2hhdGV2ZXIgcm93IHdlIHdyaXRlLCBhbmQgV2lu ZG93cworICAgICAgZHJhd3MgaXQgdGhlcmUuIFdlIGRvbid0IHdhbnQgdGhlIGN1cnNvciBqdW1w aW5nIGF0IGV2ZXJ5IGVjaG8uCisgICAgICBTbyB3ZSBoaWRlIGl0IHdoZW4gaXQganVtcHMsIGFu ZCBpdCBqdXN0ICJmbGlja2VycyIgaW4tcGxhY2UuICovCisKKyNpZmRlZiBXSU5ET1dTTlQKKyAg ICAgIGludCBwcmV2X2N1cnNvcl9oaWRkZW4gPSAoRlJBTUVfVFRZIChmKSktPmN1cnNvcl9oaWRk ZW47CisgICAgICBpZiAodzMyX3VzZV92aXNpYmxlX3N5c3RlbV9jYXJldCAmJiAhY3Vyc29yX2lu X2VjaG9fYXJlYSkKKwl7CisJICB3MzJjb25fc2F2ZV9jdXJzb3IgKCk7CisJICB3MzJjb25faGlk ZV9jdXJzb3IgKCk7CisJfQorI2VuZGlmCisKKyAgICAgIHdyaXRlX3JvdyAoZiwgbGFzdF9yb3cs IHVwZGF0aW5nX21lbnVfcCk7CisKKyNpZmRlZiBXSU5ET1dTTlQKKyAgICAgIGlmICh3MzJfdXNl X3Zpc2libGVfc3lzdGVtX2NhcmV0ICYmICFjdXJzb3JfaW5fZWNob19hcmVhKQorCXsKKwkgIHcz MmNvbl9yZXN0b3JlX2N1cnNvciAoKTsKKwkgIGlmICghcHJldl9jdXJzb3JfaGlkZGVuKSB3MzJj b25fc2hvd19jdXJzb3IgKCk7CisJfQorI2VuZGlmCisgICAgfQorCiAKICAgaWYgKGZpcnN0X3Jv dyA+PSAwKQogICAgIGZvciAoaW50IGkgPSBmaXJzdF9yb3c7IGkgPCBsYXN0X3JvdzsgKytpKQpk aWZmIC0tZ2l0IGEvc3JjL3Rlcm0uYyBiL3NyYy90ZXJtLmMKaW5kZXggYTFlM2Y2MzEyYzYuLjZj MzExNmY3ZmNlIDEwMDY0NAotLS0gYS9zcmMvdGVybS5jCisrKyBiL3NyYy90ZXJtLmMKQEAgLTcz LDcgKzczLDYgQEAgc3RhdGljIHZvaWQgY2xlYXJfdHR5X2hvb2tzIChzdHJ1Y3QgdGVybWluYWwg KnRlcm1pbmFsKTsKIHN0YXRpYyB2b2lkIHNldF90dHlfaG9va3MgKHN0cnVjdCB0ZXJtaW5hbCAq dGVybWluYWwpOwogc3RhdGljIHZvaWQgZGlzc29jaWF0ZV9pZl9jb250cm9sbGluZ190dHkgKGlu dCBmZCk7CiBzdGF0aWMgdm9pZCBkZWxldGVfdHR5IChzdHJ1Y3QgdGVybWluYWwgKik7Ci0KICNl bmRpZiAvKiAhSEFWRV9BTkRST0lEICovCiAKIHN0YXRpYyBBVk9JRCBtYXliZV9mYXRhbCAoYm9v bCwgc3RydWN0IHRlcm1pbmFsICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLApAQCAtMzQ2 LDEwICszNDUsMTAgQEAgdHR5X2hpZGVfY3Vyc29yIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAq dHR5KQogewogICBpZiAodHR5LT5jdXJzb3JfaGlkZGVuID09IDApCiAgICAgewotICAgICAgdHR5 LT5jdXJzb3JfaGlkZGVuID0gMTsKICNpZmRlZiBXSU5ET1dTTlQKICAgICAgIHczMmNvbl9oaWRl X2N1cnNvciAoKTsKICNlbHNlCisgICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAxOwogICAgICAg T1VUUFVUX0lGICh0dHksIHR0eS0+VFNfY3Vyc29yX2ludmlzaWJsZSk7CiAjZW5kaWYKICAgICB9 CkBAIC0zNjMsMTAgKzM2MiwxMCBAQCB0dHlfc2hvd19jdXJzb3IgKHN0cnVjdCB0dHlfZGlzcGxh eV9pbmZvICp0dHkpCiB7CiAgIGlmICh0dHktPmN1cnNvcl9oaWRkZW4pCiAgICAgewotICAgICAg dHR5LT5jdXJzb3JfaGlkZGVuID0gMDsKICNpZmRlZiBXSU5ET1dTTlQKICAgICAgIHczMmNvbl9z aG93X2N1cnNvciAoKTsKICNlbHNlCisgICAgICB0dHktPmN1cnNvcl9oaWRkZW4gPSAwOwogICAg ICAgT1VUUFVUX0lGICh0dHksIHR0eS0+VFNfY3Vyc29yX25vcm1hbCk7CiAgICAgICBpZiAodmlz aWJsZV9jdXJzb3IpCiAgICAgICAgIE9VVFBVVF9JRiAodHR5LCB0dHktPlRTX2N1cnNvcl92aXNp YmxlKTsKQEAgLTIyMDcsNyArMjIwNiw3IEBAIFRFUk1JTkFMIGRvZXMgbm90IHJlZmVyIHRvIGEg dGV4dCB0ZXJtaW5hbC4gICovKQogICByZXR1cm4gbWFrZV9maXhudW0gKHQgPyB0LT5kaXNwbGF5 X2luZm8udHR5LT5UTl9tYXhfY29sb3JzIDogMCk7CiB9CiAKLSNpZiAhZGVmaW5lZCBET1NfTlQg JiYgIWRlZmluZWQgSEFWRV9BTkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRlZmluZWQg SEFWRV9BTkRST0lECiAKIC8qIERlY2xhcmUgaGVyZSByYXRoZXIgdGhhbiBpbiB0aGUgZnVuY3Rp b24sIGFzIGluIHRoZSByZXN0IG9mIEVtYWNzLAogICAgdG8gd29yayBhcm91bmQgYW4gSFBVWCBj b21waWxlciBidWcgKD8pLiBTZWUKQEAgLTIyNDYsNyArMjI0NSw3IEBAIHR0eV9kZWZhdWx0X2Nv bG9yX2NhcGFiaWxpdGllcyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgYm9vbCBzYXZl KQogICAgTU9ERSdzIHZhbHVlIGlzIGdlbmVyYWxseSB0aGUgbnVtYmVyIG9mIGNvbG9ycyB3aGlj aCB3ZSB3YW50IHRvCiAgICBzdXBwb3J0OyB6ZXJvIG1lYW5zIHNldCB1cCBmb3IgdGhlIGRlZmF1 bHQgY2FwYWJpbGl0aWVzLCB0aGUgb25lcwogICAgd2Ugc2F3IGF0IGluaXRfdHR5IHRpbWU7IC0x IG1lYW5zIHR1cm4gb2ZmIGNvbG9yIHN1cHBvcnQuICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHR0 eV9zZXR1cF9jb2xvcnMgKHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHksIGludCBtb2RlKQog ewogICAvKiBDYW5vbmljYWxpemUgYWxsIG5lZ2F0aXZlIHZhbHVlcyBvZiBNT0RFLiAgKi8KQEAg LTIyNjQsMTggKzIyNjMsNDIgQEAgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5 X2luZm8gKnR0eSwgaW50IG1vZGUpCiAgICAgICBkZWZhdWx0OgogCXR0eV9kZWZhdWx0X2NvbG9y X2NhcGFiaWxpdGllcyAodHR5LCAwKTsKIAlicmVhazsKLSAgICAgIGNhc2UgODoJLyogOCBzdGFu ZGFyZCBBTlNJIGNvbG9ycyAqLwotCXR0eS0+VFNfb3JpZ19wYWlyID0gIlwwMzNbMG0iOworICAg ICAgY2FzZSA4OiAvKiA4IHN0YW5kYXJkIEFOU0kgY29sb3JzICovCisJdHR5LT5UU19vcmlnX3Bh aXIgPSAiXHgxYlswbSI7CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzMlZG0iOwor CXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0JWRtIjsKICNpZmRlZiBURVJNSU5GTwot CXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXDAzM1szJXAxJWRtIjsKLQl0dHktPlRTX3NldF9i YWNrZ3JvdW5kID0gIlwwMzNbNCVwMSVkbSI7Ci0jZWxzZQotCXR0eS0+VFNfc2V0X2ZvcmVncm91 bmQgPSAiXDAzM1szJWRtIjsKLQl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlwwMzNbNCVkbSI7 CisJdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzMlcDElZG0iOworCXR0eS0+VFNfc2V0 X2JhY2tncm91bmQgPSAiXHgxYls0JXAxJWRtIjsKKyNlbmRpZgorI2lmZGVmIFdJTkRPV1NOVAor CXR0eS0+VFNfb3JpZ19wYWlyID0gIlx4MWJbMzltXHgxYls0OW0iOworCXR0eS0+VFNfc2V0X2Zv cmVncm91bmQgPSAiXHgxYlslbHVtIjsKKwl0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJb JWx1bSI7CiAjZW5kaWYKIAl0dHktPlROX21heF9jb2xvcnMgPSA4OwogCXR0eS0+VE5fbm9fY29s b3JfdmlkZW8gPSAwOwogCWJyZWFrOworI2lmZGVmIFdJTkRPV1NOVAorICAgICAgY2FzZSAxNjoK Kwl0dHktPlRTX3NldF9mb3JlZ3JvdW5kID0gIlx4MWJbJWx1bSI7CisJdHR5LT5UU19zZXRfYmFj a2dyb3VuZCA9ICJceDFiWyVsdW0iOworCXR0eS0+VE5fbWF4X2NvbG9ycyA9IDE2OworCXR0eS0+ VE5fbm9fY29sb3JfdmlkZW8gPSAwOworCWJyZWFrOworICAgICAgY2FzZSAyNTY6CisJdHR5LT5U Tl9tYXhfY29sb3JzID0gMjU2OworCXR0eS0+VFNfc2V0X2ZvcmVncm91bmQgPSAiXHgxYlszODs1 OyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAiXHgxYls0ODs1OyVsdW0iOworCXR0 eS0+VE5fbm9fY29sb3JfdmlkZW8gPSAwOworCWJyZWFrOworICAgICAgY2FzZSAxNjc3NzIxNjoK Kwl0dHktPlROX21heF9jb2xvcnMgPSAxNjc3NzIxNjsKKwl0dHktPlRTX3NldF9mb3JlZ3JvdW5k ID0gIlx4MWJbMzg7MjslbHU7JWx1OyVsdW0iOworCXR0eS0+VFNfc2V0X2JhY2tncm91bmQgPSAi XHgxYls0ODsyOyVsdTslbHU7JWx1bSI7CisJdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisJ YnJlYWs7CisjZW5kaWYKICAgICB9CiB9CiAKQEAgLTIzMDcsMTIgKzIzMzAsMTYgQEAgc2V0X3R0 eV9jb2xvcl9tb2RlIChzdHJ1Y3QgdHR5X2Rpc3BsYXlfaW5mbyAqdHR5LCBzdHJ1Y3QgZnJhbWUg KmYpCiAgICAgewogICAgICAgdHR5LT5wcmV2aW91c19jb2xvcl9tb2RlID0gbW9kZTsKICAgICAg IHR0eV9zZXR1cF9jb2xvcnMgKHR0eSAsIG1vZGUpOwotICAgICAgLyogIFRoaXMgcmVjb21wdXRl cyBhbGwgdGhlIGZhY2VzIGdpdmVuIHRoZSBuZXcgY29sb3IgZGVmaW5pdGlvbnMuICAqLworICAg ICAgLyogIFRoaXMgcmVjb21wdXRlcyBhbGwgdGhlIGZhY2VzIGdpdmVuIHRoZSBuZXcgY29sb3Ig ZGVmaW5pdGlvbnMuICovCisjaWZkZWYgV0lORE9XU05UCisgICAgICBzYWZlX2NhbGxuIChRdzMy Y29uX3NldF91cF9pbml0aWFsX2ZyYW1lX2ZhY2VzKTsKKyNlbHNlCiAgICAgICBzYWZlX2NhbGxu IChRdHR5X3NldF91cF9pbml0aWFsX2ZyYW1lX2ZhY2VzKTsKKyNlbmRpZgogICAgIH0KIH0KIAot I2VuZGlmIC8qICFET1NfTlQgJiYgIUhBVkVfQU5EUk9JRCAqLworI2VuZGlmIC8qICFNU0RPUyAm JiAhSEFWRV9BTkRST0lEICovCiAKIGNoYXIgKgogdHR5X3R5cGVfbmFtZSAoTGlzcF9PYmplY3Qg dGVybWluYWwpCkBAIC00NTg2LDggKzQ2MTMsOCBAQCB1c2UgdGhlIEJvdXJuZSBzaGVsbCBjb21t YW5kICdURVJNPS4uLjsgZXhwb3J0IFRFUk0nIChDLXNoZWxsOlxuXAogCQkgfHwgKChiZyA9IGdl dGVudiAoIkNPTE9SVEVSTSIpKSAhPSBOVUxMCiAJCSAgICAgJiYgc3RyY2FzZWNtcCAoYmcsICJ0 cnVlY29sb3IiKSA9PSAwKSkKIAkgIHsKLQkgICAgdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJc MDMzWyU/JXAxJXs4fSU8JXQzJXAxJWQlZTM4OzI7JXAxJXs2NTUzNn0lLyVkOyVwMSV7MjU2fSUv JXsyNTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKLQkgICAgdHR5LT5UU19zZXRfYmFja2dyb3Vu ZCA9ICJcMDMzWyU/JXAxJXs4fSU8JXQ0JXAxJWQlZTQ4OzI7JXAxJXs2NTUzNn0lLyVkOyVwMSV7 MjU2fSUvJXsyNTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKKwkgICAgdHR5LT5UU19zZXRfZm9y ZWdyb3VuZCA9ICJceDFiWyU/JXAxJXs4fSU8JXQzJXAxJWQlZTM4OzI7JXAxJXs2NTUzNn0lLyVk OyVwMSV7MjU2fSUvJXsyNTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKKwkgICAgdHR5LT5UU19z ZXRfYmFja2dyb3VuZCA9ICJceDFiWyU/JXAxJXs4fSU8JXQ0JXAxJWQlZTQ4OzI7JXAxJXs2NTUz Nn0lLyVkOyVwMSV7MjU2fSUvJXsyNTV9JSYlZDslcDElezI1NX0lJiVkJTttIjsKIAkgICAgdHR5 LT5UTl9tYXhfY29sb3JzID0gMTY3NzcyMTY7CiAJICB9CiAgICAgICB9CkBAIC00NjQxLDYgKzQ2 NjgsMjcgQEAgdXNlIHRoZSBCb3VybmUgc2hlbGwgY29tbWFuZCAnVEVSTT0uLi47IGV4cG9ydCBU RVJNJyAoQy1zaGVsbDpcblwKIAogICAgIGluaXRpYWxpemVfdzMyX2Rpc3BsYXkgKHRlcm1pbmFs LCAmd2lkdGgsICZoZWlnaHQpOwogCisgICAgLyogMjRiaXQgUkdCIHN1cHBvcnQgaW4gV2luZG93 cyAoMTArKSBUZXJtaW5hbCBhbmQgQ29uc29sZSBIb3N0CisgICAgICAgaHR0cHM6Ly9sZWFybi5t aWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3MvY29uc29sZS9jb25zb2xlLXZpcnR1YWwtdGVybWlu YWwtc2VxdWVuY2VzICovCisgICAgdHR5LT5UTl9ub19jb2xvcl92aWRlbyA9IDA7CisgICAgdHR5 LT5UTl9tYXhfY29sb3JzID0gMTY3NzcyMTY7CisgICAgdHR5LT5UU19vcmlnX3BhaXIgPSAiXHgx YlszOW1ceDFiWzQ5bSI7CisgICAgdHR5LT5UU19zZXRfZm9yZWdyb3VuZCA9ICJceDFiWzM4OzI7 JWx1OyVsdTslbHVtIjsKKyAgICB0dHktPlRTX3NldF9iYWNrZ3JvdW5kID0gIlx4MWJbNDg7Mjsl bHU7JWx1OyVsdW0iOworCisgICAgLyogU2F2ZSBkZWZhdWx0IGNvbG9yIGNhcGFiaWxpdGllcyAq LworICAgIHR0eV9kZWZhdWx0X2NvbG9yX2NhcGFiaWxpdGllcyAodHR5LCAxKTsKKworICAgIHR0 eS0+VFNfZW50ZXJfYm9sZF9tb2RlID0gIlx4MWJbMW0iOworICAgIHR0eS0+VFNfZW50ZXJfaXRh bGljX21vZGUgPSAiXHgxYlszbSI7CisgICAgdHR5LT5UU19lbnRlcl9zdHJpa2VfdGhyb3VnaF9t b2RlID0gIlx4MWJbOW0iOworICAgIHR0eS0+VFNfZW50ZXJfdW5kZXJsaW5lX21vZGUgPSAiXHgx Yls0bSI7CisgICAgdHR5LT5UU19leGl0X3VuZGVybGluZV9tb2RlID0gIlx4MWJbMjRtIjsKKyAg ICB0dHktPlRTX2VudGVyX3JldmVyc2VfbW9kZSA9ICJceDFiWzdtIjsKKyAgICB0dHktPlRTX2V4 aXRfYXR0cmlidXRlX21vZGUgPSAiXHgxYlswbSI7CisgICAgdHR5LT5UU19jdXJzb3JfaW52aXNp YmxlID0gIlx4MWJbPzI1bCI7CisgICAgdHR5LT5UU19jdXJzb3JfdmlzaWJsZSA9ICJceDFiWz8y NWgiOworCiAgICAgRnJhbWVSb3dzICh0dHkpID0gaGVpZ2h0OwogICAgIEZyYW1lQ29scyAodHR5 KSA9IHdpZHRoOwogICAgIHR0eS0+c3BlY2lmaWVkX3dpbmRvdyA9IGhlaWdodDsKQEAgLTQ2ODYs NyArNDczNCw2IEBAIHVzZSB0aGUgQm91cm5lIHNoZWxsIGNvbW1hbmQgJ1RFUk09Li4uOyBleHBv cnQgVEVSTScgKEMtc2hlbGw6XG5cCiAgICAgIGRvbid0IHRoaW5rIHdlJ3JlIGxvc2luZyBhbnl0 aGluZyBieSB0dXJuaW5nIGl0IG9mZi4gICovCiAgIHR0eS0+bGluZV9pbnNfZGVsX29rID0gMDsK IAotICB0dHktPlROX21heF9jb2xvcnMgPSAxNjsgIC8qIE11c3QgYmUgbm9uLXplcm8gZm9yIHR0 eS1kaXNwbGF5LWNvbG9yLXAuICAqLwogI2VuZGlmCS8qIERPU19OVCAqLwogCiAjaWZkZWYgSEFW RV9HUE0KQEAgLTUyMDIsMTEgKzUyNDksMTEgQEAgbm9uLW5pbCB0byBlbmFibGUgdGhpcyBvcHRp bWl6YXRpb24uICAqLyk7CiAgIGRlZnN1YnIgKCZTdHR5X2Rpc3BsYXlfcGl4ZWxfd2lkdGgpOwog ICBkZWZzdWJyICgmU3R0eV9kaXNwbGF5X3BpeGVsX2hlaWdodCk7CiAKLSNpZiAhZGVmaW5lZCBE T1NfTlQgJiYgIWRlZmluZWQgSEFWRV9BTkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYgIWRl ZmluZWQgSEFWRV9BTkRST0lECiAgIGRlZmF1bHRfb3JpZ19wYWlyID0gTlVMTDsKICAgZGVmYXVs dF9zZXRfZm9yZWdyb3VuZCA9IE5VTEw7CiAgIGRlZmF1bHRfc2V0X2JhY2tncm91bmQgPSBOVUxM OwotI2VuZGlmIC8qICFET1NfTlQgJiYgIUhBVkVfQU5EUk9JRCAqLworI2VuZGlmIC8qICFNU0RP UyAmJiAhSEFWRV9BTkRST0lEICovCiAKICNpZm5kZWYgSEFWRV9BTkRST0lECiAgIGVuY29kZV90 ZXJtaW5hbF9zcmMgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlcm1jaGFyLmggYi9zcmMvdGVy bWNoYXIuaAppbmRleCBlY2UzYTY3NmM2ZS4uMTNhZDJmMGE3MmEgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXJtY2hhci5oCisrKyBiL3NyYy90ZXJtY2hhci5oCkBAIC0yNDksNCArMjQ5LDYgQEAgc3RydWN0 IGlucHV0X2V2ZW50OwogZXh0ZXJuIExpc3BfT2JqZWN0IHR0eV9oYW5kbGVfdGFiX2Jhcl9jbGlj ayAoc3RydWN0IGZyYW1lICosIGludCwgaW50LCBib29sLAogCQkJCQkgICAgIHN0cnVjdCBpbnB1 dF9ldmVudCAqKTsKIAorZXh0ZXJuIHZvaWQgdHR5X3NldHVwX2NvbG9ycyAoc3RydWN0IHR0eV9k aXNwbGF5X2luZm8gKnR0eSwgaW50IG1vZGUpOworCiAjZW5kaWYgLyogRU1BQ1NfVEVSTUNIQVJf SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3czMmNvbnNvbGUuYyBiL3NyYy93MzJjb25zb2xlLmMKaW5k ZXggMWJjYTBjYWRmZjkuLjk3NjQwZTc1YTk2IDEwMDY0NAotLS0gYS9zcmMvdzMyY29uc29sZS5j CisrKyBiL3NyYy93MzJjb25zb2xlLmMKQEAgLTE5LDEyICsxOSw2MiBAQCBhbG9uZyB3aXRoIEdO VSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LwogLyoKICAgIFRpbSBGbGVlaGFydCAoYXBvbGxvQG9ubGluZS5jb20pCQkxLTE3LTkyCiAgICBH ZW9mZiBWb2Vsa2VyICh2b2Vsa2VyQGNzLndhc2hpbmd0b24uZWR1KQk5LTEyLTkzCisgICBFd2Fu IFRvd25zaGVuZCAoZXdhbkBldG93bi5kZXYpICAgICAgICAgICAgICAyMDI1LTA4CisKKyAgIGMu IH4gMjAyNToKKyAgICogMjRiaXQgUkdCIHN1cHBvcnQgaW4gV2luZG93cyAoMTArKSBUZXJtaW5h bAorICAgKiBNaWNyb3NvZnQgbW92aW5nIGF3YXkgZnJvbSBpZGlvc3luY3JhdGljIEFQSSwgdG93 YXJkIEFTQ0lJIGNvbnRyb2xzCisKKyAgIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11 cy93aW5kb3dzL2NvbnNvbGUvY29uc29sZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcworCisg ICBGb3IgcmVmZXJlbmNlIChtb3JlIGRlZmluZWQgYXQgbGluayBhYm92ZSk6CisKKyAgICogImNs ZWFyIiA6PSBvdmVyd3JpdGUgd2l0aCBzcGFjZSBjaGFyYWN0ZXIKKworICAgXHgxYlswSiA9PiBj bGVhciBjdXJzb3IgKGluY2x1c2l2ZSkgdG8gZW5kIG9mIHNjcmVlbgorICAgXHgxYlsxSiA9PiBj bGVhciBiZWdpbm5pbmcgb2Ygc2NyZWVuIHRvIGN1cnNvciAoaW5jbHVzaXZlKQorICAgXHgxYlsy SiA9PiBjbGVhciBlbnRpcmUgc2NyZWVuIChleGNsdWRpbmcgc2Nyb2xsYmFjayBhcmVhKQorICAg XHgxYlszSiA9PiBjbGVhciBzY3JvbGxiYWNrIGFyZWEKKworICAgXHgxYlswSyA9PiBjbGVhciBj dXJzb3IgKGluY2x1c2l2ZSkgdG8gZW5kIG9mIGxpbmUKKyAgIFx4MWJbMUsgPT4gY2xlYXIgYmVn aW5uaW5nIG9mIGxpbmUgdG8gY3Vyc29yIChpbmNsdXNpdmUpCisgICBceDFiWzJLID0+IGNsZWFy IGVudGlyZSBsaW5lCisKKyAgIFx4MWJbPG4+QCA9PiBpbnNlcnQgPG4+IHNwYWNlcyBhdCBjdXJz b3IsIHNoaWZ0IGN1cnJlbnQgdGV4dCByaWdodAorICAgXHgxYls8bj5QID0+IGRlbGV0ZSA8bj4g Y2hhcnMgIGF0IGN1cnNvciwgYWRkaW5nIHNwYWNlcyBmcm9tIHJpZ2h0CisKKyAgIFx4MWJbNyAg ICAgICAgPT4gc2F2ZSBjdXJzb3IgcG9zaXRpb24KKyAgIFx4MWJbOCAgICAgICAgPT4gcmVzdG9y ZSBzYXZlZCBjdXJzb3IgcG9zaXRpb24KKyAgIFx4MWJbPHk+Ozx4PkggPT4gbW92ZSBjdXJzb3Ig dG8gcm93IDx5PiwgY29sIDx4PiAoMS1pbmRleGVkKQorICAgXHgxYls/MjVsICAgICA9PiBoaWRl IGN1cnNvcgorICAgXHgxYls/MjVoICAgICA9PiBzaG93IGN1cnNvcgorCisgICBceDFiWzBtID0+ IGFsbCBhdHRyaWJ1dGVzIG9mZgorICAgXHgxYlsxbSA9PiBib2xkCisgICBceDFiWzNtID0+IGl0 YWxpYworICAgXHgxYls0bSA9PiB1bmRlcmxpbmUKKyAgIFx4MWJbN20gPT4gaW52ZXJzZSB2aWRl bworICAgXHgxYls5bSA9PiBzdHJpa2UtdGhyb3VnaAorCisgICAqIDE2IGJhc2UgY29sb3JzIGRl ZmluZWQgaW4gdzMyY29uc29sZS5lbAorICAgXHgxYlszPGk+ICAoPGk+IGluIDAuLjcpID0+IGZv cmVncm91bmQgPSAxNmNvbG9yc1tpXQorICAgXHgxYls0PGk+ICAoPGk+IGluIDAuLjcpID0+IGJh Y2tncm91bmQgPSAxNmNvbG9yc1tpXQorICAgXHgxYls5PGk+ICAoPGk+IGluIDAuLjcpID0+IGZv cmVncm91bmQgPSAxNmNvbG9yc1tpICsgOF0KKyAgIFx4MWJbMTA8aT4gKDxpPiBpbiAwLi43KSA9 PiBiYWNrZ3JvdW5kID0gMTZjb2xvcnNbaSArIDhdCisKKyAgICogMjU2IGNvbG9ycyBmb2xsb3cg eHRlcm0KKyAgIFx4MWJbMzg8aT4gKDxpPiBpbiAwLi4yNTUpID0+IGZvcmVncm91bmQgPSAyNTZj b2xvcnNbaV0KKyAgIFx4MWJbNDg8aT4gKDxpPiBpbiAwLi4yNTUpID0+IGJhY2tncm91bmQgPSAy NTZjb2xvcnNbaV0KKworICAgKiAyNC1iaXQgY292ZXJzIGFsbCBuYW1lZCBjb2xvcnMgKHNlZSBj b2xvci1uYW1lLXJnYi1hbGlzdCkKKyAgIFx4MWJbMzg7Mjs8cj47PGc+OzxiPiA9PiBmb3JlZ3Jv dW5kID0gKDxyPiwgPGc+LCA8Yj4pCisgICBceDFiWzQ4OzI7PHI+OzxnPjs8Yj4gPT4gYmFja2dy b3VuZCA9ICg8cj4sIDxnPiwgPGI+KQogKi8KIAogCiAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0KICNp bmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHdpbmRvd3Mu aD4KIAogI2luY2x1ZGUgImxpc3AuaCIKQEAgLTQwLDcgKzkwLDYgQEAgYWxvbmcgd2l0aCBHTlUg RW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K ICNpbmNsdWRlICJ3MzIuaCIJLyogZm9yIHN5bXNfb2ZfbnR0ZXJtICovCiAjZW5kaWYKIAotc3Rh dGljIHZvaWQgdzMyY29uX21vdmVfY3Vyc29yIChzdHJ1Y3QgZnJhbWUgKmYsIGludCByb3csIGlu dCBjb2wpOwogc3RhdGljIHZvaWQgdzMyY29uX2NsZWFyX3RvX2VuZCAoc3RydWN0IGZyYW1lICpm KTsKIHN0YXRpYyB2b2lkIHczMmNvbl9jbGVhcl9mcmFtZSAoc3RydWN0IGZyYW1lICpmKTsKIHN0 YXRpYyB2b2lkIHczMmNvbl9jbGVhcl9lbmRfb2ZfbGluZSAoc3RydWN0IGZyYW1lICpmLCBpbnQp OwpAQCAtNTEsMTMgKzEwMCwzMCBAQCBzdGF0aWMgdm9pZCB3MzJjb25fZGVsZXRlX2dseXBocyAo c3RydWN0IGZyYW1lICpmLCBpbnQgbik7CiBzdGF0aWMgdm9pZCB3MzJjb25fcmVzZXRfdGVybWlu YWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCk7CiBzdGF0aWMgdm9pZCB3MzJjb25fc2V0X3Rl cm1pbmFsX21vZGVzIChzdHJ1Y3QgdGVybWluYWwgKnQpOwogc3RhdGljIHZvaWQgdzMyY29uX3Vw ZGF0ZV9iZWdpbiAoc3RydWN0IGZyYW1lICogZik7Ci1zdGF0aWMgdm9pZCB3MzJjb25fdXBkYXRl X2VuZCAoc3RydWN0IGZyYW1lICogZik7CitzdGF0aWMgdm9pZCB3MzJjb25fdXBkYXRlX2VuZCAo c3RydWN0IGZyYW1lICpmKTsKK3N0YXRpYyBpbnQgIHczMmNvbl93cml0ZV92dF9zZXEgKGNoYXIg Kik7CiBzdGF0aWMgV09SRCB3MzJfZmFjZV9hdHRyaWJ1dGVzIChzdHJ1Y3QgZnJhbWUgKmYsIGlu dCBmYWNlX2lkKTsKK3N0YXRpYyB2b2lkIHR1cm5fb25fZmFjZSAoc3RydWN0IGZyYW1lICosIGlu dCBmYWNlX2lkKTsKK3N0YXRpYyB2b2lkIHR1cm5fb2ZmX2ZhY2UgKHN0cnVjdCBmcmFtZSAqLCBp bnQgZmFjZV9pZCk7CitzdGF0aWMgdm9pZCB3MzJjb25fbW92ZV9jdXJzb3IgKHN0cnVjdCBmcmFt ZSAqZiwgaW50IHJvdywgaW50IGNvbCk7Cit2b2lkIHczMmNvbl9zYXZlX2N1cnNvciAodm9pZCk7 Cit2b2lkIHczMmNvbl9yZXN0b3JlX2N1cnNvciAodm9pZCk7Cit2b2lkIHczMmNvbl9zaG93X2N1 cnNvciAodm9pZCk7Cit2b2lkIHczMmNvbl9oaWRlX2N1cnNvciAodm9pZCk7Cit2b2lkIHczMmNv bl9kcmF3X2N1cnNvciAoc3RydWN0IGZyYW1lICpmKTsKKworc3RhdGljIHVuc2lnbmVkIGxvbmcg Z2V0X3BpeGVsICh1bnNpZ25lZCBsb25nIGluZGV4KTsKKworZXh0ZXJuIHZvaWQgdHR5X3NldHVw X2NvbG9ycyAoc3RydWN0IHR0eV9kaXNwbGF5X2luZm8gKnR0eSwgaW50IG1vZGUpOwogCi1zdGF0 aWMgQ09PUkQJY3Vyc29yX2Nvb3JkczsKLXN0YXRpYyBIQU5ETEUJcHJldl9zY3JlZW4sIGN1cl9z Y3JlZW47Ci1zdGF0aWMgV09SRAljaGFyX2F0dHJfbm9ybWFsOwotc3RhdGljIERXT1JECXByZXZf Y29uc29sZV9tb2RlOworc3RhdGljIENPT1JEICAgIGN1cnNvcl9jb29yZHM7CitzdGF0aWMgQ09P UkQgICAgc2F2ZWRfY29vcmRzOworc3RhdGljIEhBTkRMRSAgIHByZXZfc2NyZWVuLCBjdXJfc2Ny ZWVuOworc3RhdGljIFdPUkQgICAgIGNoYXJfYXR0cl9ub3JtYWw7CitzdGF0aWMgV09SRCAgICAg Ymdfbm9ybWFsOworc3RhdGljIFdPUkQgICAgIGZnX25vcm1hbDsKK3N0YXRpYyBEV09SRCAgICBw cmV2X2NvbnNvbGVfbW9kZTsKK3N0YXRpYyBpbnQgICAgICB1c2luZ19zeXN0ZW1fY2FyZXQ7CiAK IHN0YXRpYyBDT05TT0xFX0NVUlNPUl9JTkZPIGNvbnNvbGVfY3Vyc29yX2luZm87CiAjaWZuZGVm IFVTRV9TRVBBUkFURV9TQ1JFRU4KQEAgLTY4LDEzICsxMzQsMTQgQEAgZXh0ZXJuIEhBTkRMRSAg a2V5Ym9hcmRfaGFuZGxlOwogSEFORExFICBrZXlib2FyZF9oYW5kbGU7CiBpbnQgdzMyX2NvbnNv bGVfdW5pY29kZV9pbnB1dDsKIAotCi0vKiBTZXR0aW5nIHRoaXMgYXMgdGhlIGN0cmwgaGFuZGxl ciBwcmV2ZW50cyBlbWFjcyBmcm9tIGJlaW5nIGtpbGxlZCB3aGVuCi0gICBzb21lb25lIGhpdHMg XkMgaW4gYSAnc3VzcGVuZGVkJyBzZXNzaW9uIChjaGlsZCBzaGVsbCkuCi0gICBBbHNvIGlnbm9y ZSBDdHJsLUJyZWFrIHNpZ25hbHMuICAqLworZXh0ZXJuIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZv ICpjdXJyZW50X3R0eTsKK3N0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eSA9IE5V TEw7CiAKIEJPT0wgY3RybF9jX2hhbmRsZXIgKHVuc2lnbmVkIGxvbmcpOwogCisvKiBTZXR0aW5n IHRoaXMgYXMgdGhlIGN0cmwgaGFuZGxlciBwcmV2ZW50cyBlbWFjcyBmcm9tIGJlaW5nIGtpbGxl ZAorICAgd2hlbiBzb21lb25lIGhpdHMgXkMgaW4gYSAnc3VzcGVuZGVkJyBzZXNzaW9uIChjaGls ZCBzaGVsbCkuIEFsc28KKyAgIGlnbm9yZSBDdHJsLUJyZWFrIHNpZ25hbHMuICAqLwogQk9PTAog Y3RybF9jX2hhbmRsZXIgKHVuc2lnbmVkIGxvbmcgdHlwZSkKIHsKQEAgLTgzLDYgKzE1MCw1NSBA QCBjdHJsX2NfaGFuZGxlciAodW5zaWduZWQgbG9uZyB0eXBlKQogCSAgJiYgKHR5cGUgPT0gQ1RS TF9DX0VWRU5UIHx8IHR5cGUgPT0gQ1RSTF9CUkVBS19FVkVOVCkpOwogfQogCisjZGVmaW5lIFNT UFJJTlRGKGJ1ZiwgaSwgc3osIGZtdCwgLi4uKQkJCQkJXAorICBkbyB7CQkJCQkJCQkJXAorICAg IGlmIChmbXQpCQkJCQkJCQlcCisgICAgICAqaSArPSBzbnByaW50ZiAoYnVmICsgKmksIHN6IC0g KmksIGZtdCwgX19WQV9BUkdTX18pOwkJXAorICB9IHdoaWxlICgwKQorCisjZGVmaW5lIERFRkFV TFRQKHApCQkJCQkJCVwKKyAgKHAgPT0gRkFDRV9UVFlfREVGQVVMVF9DT0xPUgkJCQkJCVwKKyAg IHx8IHAgPT0gRkFDRV9UVFlfREVGQVVMVF9GR19DT0xPUgkJCQkJXAorICAgfHwgcCA9PSBGQUNF X1RUWV9ERUZBVUxUX0JHX0NPTE9SKQorCisjZGVmaW5lIFNFUU1BWCAyNTYgLyogQXJiaXRyYXJ5 IHVwcGVyIGxpbWl0IG9uIFZUIHNlcXVlbmNlIHNpemUgKi8KKworLyogRm9yIGRlYnVnZ2luZyAq Lworc3RhdGljIHZvaWQKK3Z0X3NlcV9lcnJvciAoY2hhciAqc2VxKQoreworICBpbnQgaSA9IDA7 IGludCBqID0gMDsKKyAgaWYgKHNlcSkKKyAgICBpZiAoc2VxWzBdID09ICdcMCcpIHNlcSA9ICI8 ZW1wdHk+IjsKKyAgICBlbHNlCisgICAgICB3aGlsZSAoaSA8IFNFUU1BWCkKKwl7CisJICBpZiAo c2VxW2ldID09ICdceDFiJykgc2VxW2ldID0gJyMnOworCSAgaWYgKHNlcVtpXSA9PSAgICAnJScp IHNlcVtpXSA9ICdfJzsKKwkgIGlmIChzZXFbaV0gPT0gICAnXDAnKSB7IGorKzsgYnJlYWs7IH0K KwkgIGkrKzsKKwl9CisgIGVsc2Ugc2VxID0gIjxudWxsPiI7CisgIHByaW50ZiAoIkZhaWxlZCB0 byB3cml0ZSBWVCBzZXF1ZW5jZTogJXNcbiIsIGogPyBzZXEgOiAiPG92ZXJmbG93PiIpOworICBw cmludGYgKCJMYXN0RXJyb3I6IDB4JWR4XG4iLCBHZXRMYXN0RXJyb3IgKCkpOworICBmZmx1c2gg KHN0ZG91dCk7CisgIGV4aXQgKDEpOworfQorCisvKiBXcml0ZXMgKGR5bmFtaWMpIHZpcnR1YWwg dGVybWluYWwgQVNDSUkgc2VxdWVuY2VzIHRvIHNjcmVlbiAqLworc3RhdGljIGludAordzMyY29u X3dyaXRlX3Z0X3NlcSAoY2hhciAqc2VxKQoreworICBjaGFyIGJ1ZltTRVFNQVhdOworICBEV09S RCBuID0gMCwgayA9IDA7CisgIFNTUFJJTlRGIChidWYsICZuLCBTRVFNQVgsIHNlcSwgTlVMTCk7 CisgIGlmIChuKSBXcml0ZUNvbnNvbGVBIChjdXJfc2NyZWVuLCAoTFBDU1RSKSBidWYsIG4sICZr LCBOVUxMKTsKKyAgcmV0dXJuIGs7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEN1cnNvciBDb250cm9sCisqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogTW92 ZSB0aGUgY3Vyc29yIHRvIChST1csIENPTCkgb24gRlJBTUUuICAqLwogc3RhdGljIHZvaWQKQEAg LTkwLDU0ICsyMDYsMTgyIEBAIHczMmNvbl9tb3ZlX2N1cnNvciAoc3RydWN0IGZyYW1lICpmLCBp bnQgcm93LCBpbnQgY29sKQogewogICBjdXJzb3JfY29vcmRzLlggPSBjb2w7CiAgIGN1cnNvcl9j b29yZHMuWSA9IHJvdzsKLQotICAvKiBUT0RPOiBmb3IgbXVsdGktdHR5IHN1cHBvcnQsIGN1cl9z Y3JlZW4gc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggYQotICAgICByZWZlcmVuY2UgdG8gdGhlIHRl cm1pbmFsIGZvciB0aGlzIGZyYW1lLiAgKi8KLSAgU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uIChj dXJfc2NyZWVuLCBjdXJzb3JfY29vcmRzKTsKKyAgaWYgKHczMl91c2VfdmlydHVhbF90ZXJtaW5h bF9zZXF1ZW5jZXMpCisgICAgeworICAgICAgY2hhciBzZXFbMzJdOworICAgICAgc3ByaW50Zihz ZXEsICJceDFiWyVkOyVkSCIsIHJvdyArIDEsIGNvbCArIDEpOyAvKiAxLWluZGV4ZWQgKi8KKyAg ICAgIHczMmNvbl93cml0ZV92dF9zZXEoc2VxKTsKKyAgICB9CisgIGVsc2UKKyAgeworICAgIC8q IFRPRE86IGZvciBtdWx0aS10dHkgc3VwcG9ydCwgY3VyX3NjcmVlbiBzaG91bGQgYmUgcmVwbGFj ZWQgd2l0aCBhCisgICAgICAgcmVmZXJlbmNlIHRvIHRoZSB0ZXJtaW5hbCBmb3IgdGhpcyBmcmFt ZS4gICovCisgICAgU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uIChjdXJfc2NyZWVuLCBjdXJzb3Jf Y29vcmRzKTsKKyAgfQogfQogCiB2b2lkCiB3MzJjb25faGlkZV9jdXJzb3IgKHZvaWQpCiB7Ci0g IEdldENvbnNvbGVDdXJzb3JJbmZvIChjdXJfc2NyZWVuLCAmY29uc29sZV9jdXJzb3JfaW5mbyk7 Ci0gIGNvbnNvbGVfY3Vyc29yX2luZm8uYlZpc2libGUgPSBGQUxTRTsKLSAgU2V0Q29uc29sZUN1 cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKKyAgaWYgKHVzaW5n X3N5c3RlbV9jYXJldCkKKyAgICB7CisgICAgICBHZXRDb25zb2xlQ3Vyc29ySW5mbyAoY3VyX3Nj cmVlbiwgJmNvbnNvbGVfY3Vyc29yX2luZm8pOworICAgICAgY29uc29sZV9jdXJzb3JfaW5mby5i VmlzaWJsZSA9IEZBTFNFOworCisgICAgICBpZiAoIWN1cnJlbnRfdHR5LT5jdXJzb3JfaGlkZGVu KQorCWlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQorCSAgdzMyY29uX3dy aXRlX3Z0X3NlcSAoKGNoYXIgKikgY3VycmVudF90dHktPlRTX2N1cnNvcl9pbnZpc2libGUpOwor CWVsc2UKKwkgIFNldENvbnNvbGVDdXJzb3JJbmZvIChjdXJfc2NyZWVuLCAmY29uc29sZV9jdXJz b3JfaW5mbyk7CisgICAgfQorICBjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbiA9IDE7CiB9CiAK IHZvaWQKIHczMmNvbl9zaG93X2N1cnNvciAodm9pZCkKIHsKLSAgR2V0Q29uc29sZUN1cnNvcklu Zm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNvcl9pbmZvKTsKLSAgY29uc29sZV9jdXJzb3Jf aW5mby5iVmlzaWJsZSA9IFRSVUU7Ci0gIFNldENvbnNvbGVDdXJzb3JJbmZvIChjdXJfc2NyZWVu LCAmY29uc29sZV9jdXJzb3JfaW5mbyk7CisgIGlmICh1c2luZ19zeXN0ZW1fY2FyZXQpCisgICAg eworICAgICAgR2V0Q29uc29sZUN1cnNvckluZm8gKGN1cl9zY3JlZW4sICZjb25zb2xlX2N1cnNv cl9pbmZvKTsKKyAgICAgIGNvbnNvbGVfY3Vyc29yX2luZm8uYlZpc2libGUgPSBUUlVFOworCisg ICAgICBpZiAoY3VycmVudF90dHktPmN1cnNvcl9oaWRkZW4pCisJaWYgKHczMl91c2VfdmlydHVh bF90ZXJtaW5hbF9zZXF1ZW5jZXMpCisJICB3MzJjb25fd3JpdGVfdnRfc2VxICgoY2hhciAqKSBj dXJyZW50X3R0eS0+VFNfY3Vyc29yX3Zpc2libGUpOworCWVsc2UKKwkgIFNldENvbnNvbGVDdXJz b3JJbmZvIChjdXJfc2NyZWVuLCAmY29uc29sZV9jdXJzb3JfaW5mbyk7CisgICAgfQorICBjdXJy ZW50X3R0eS0+Y3Vyc29yX2hpZGRlbiA9IDA7Cit9CisKK3ZvaWQKK3czMmNvbl9zYXZlX2N1cnNv ciAodm9pZCkKK3sKKyAgc2F2ZWRfY29vcmRzID0gY3Vyc29yX2Nvb3JkczsKKyAgaWYgKHczMl91 c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMpCisgICAgdzMyY29uX3dyaXRlX3Z0X3NlcSAo KGNoYXIgKikgIlx4MWJbNyIpOworfQorCit2b2lkCit3MzJjb25fcmVzdG9yZV9jdXJzb3IgKHZv aWQpCit7CisgIGN1cnNvcl9jb29yZHMgPSBzYXZlZF9jb29yZHM7CisgIGlmICh3MzJfdXNlX3Zp cnR1YWxfdGVybWluYWxfc2VxdWVuY2VzKQorICAgIHczMmNvbl93cml0ZV92dF9zZXEgKChjaGFy ICopICJceDFiWzgiKTsKKyAgZWxzZQorICAgIFNldENvbnNvbGVDdXJzb3JQb3NpdGlvbiAoY3Vy X3NjcmVlbiwgY3Vyc29yX2Nvb3Jkcyk7CiB9CiAKKy8qIFRoaXMgZnVuY3Rpb24gb25seSB0byBi ZSBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIHdyaXRlX21hdHJpeCAqLworc3RhdGljIHVuc2ln bmVkIGxvbmcgc2F2ZWRfY3Vyc29yX2JnID0gLTk7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBzYXZl ZF9jdXJzb3JfZmcgPSAtOTsKK3N0YXRpYyBDT09SRCBwcmV2X2N1cnNvcl9wb3MgPSB7IC0xLCAt MSB9Oworc3RhdGljIGludCBzYXZlZF9mYWNlX2lkID0gLTE7Cit2b2lkCit3MzJjb25fZHJhd19j dXJzb3IgKHN0cnVjdCBmcmFtZSAqZikKK3sKKyAgaWYgKCF1c2luZ19zeXN0ZW1fY2FyZXQpCisg ICAgeworICAgICAgaW50IHggPSBjdXJzb3JfY29vcmRzLlgsIHkgPSBjdXJzb3JfY29vcmRzLlk7 CisgICAgICBzdHJ1Y3QgZ2x5cGhfcm93ICpvcm93ID0gTUFUUklYX1JPVyAoZi0+Y3VycmVudF9t YXRyaXgsIHkpOworICAgICAgc3RydWN0IGdseXBoX3JvdyAqbnJvdyA9IE1BVFJJWF9ST1cgKGYt PmRlc2lyZWRfbWF0cml4LCB5KTsKKyAgICAgIGludCBnbHlwaF9mYWNlX2lkID0gbnJvdy0+Z2x5 cGhzW1RFWFRfQVJFQV1beF0uZmFjZV9pZDsKKyAgICAgIGlmIChnbHlwaF9mYWNlX2lkICE9IENV UlNPUl9GQUNFX0lEKQorCXsKKwkgIHN0cnVjdCBmYWNlICpnbHlwaF9mYWNlID0gRkFDRV9GUk9N X0lEIChmLCBnbHlwaF9mYWNlX2lkKTsKKwkgIHN0cnVjdCBmYWNlICpjdXJzb3JfZmFjZSA9IEZB Q0VfRlJPTV9JRCAoZiwgQ1VSU09SX0ZBQ0VfSUQpOworCisJICAvKiBjbGVhbiB1cCBmcm9tIGxh c3QgcnVuIGlmIGZhY2VzIGNvbmZsaWN0ZWQgKi8KKwkgIGlmIChzYXZlZF9jdXJzb3JfYmcgPiAt OSAmJiBzYXZlZF9jdXJzb3JfZmcgPiAtOSkKKwkgICAgeworCSAgICAgIGN1cnNvcl9mYWNlLT5i YWNrZ3JvdW5kID0gc2F2ZWRfY3Vyc29yX2JnOworCSAgICAgIGN1cnNvcl9mYWNlLT5mb3JlZ3Jv dW5kID0gc2F2ZWRfY3Vyc29yX2ZnOworCSAgICAgIHNhdmVkX2N1cnNvcl9iZyA9IC05OworCSAg ICAgIHNhdmVkX2N1cnNvcl9mZyA9IC05OworCSAgICB9CisJICAvKiBkcmF3IGN1cnNvciAoaS5l LiBtYW5pcHVsYXRlIGZhY2VzKSAqLworCSAgaWYgKGN1cnNvcl9mYWNlLT5iYWNrZ3JvdW5kID09 IGdseXBoX2ZhY2UtPmJhY2tncm91bmQpCisJICAgIHsKKwkgICAgICBzYXZlZF9jdXJzb3JfYmcg PSBjdXJzb3JfZmFjZS0+YmFja2dyb3VuZDsKKwkgICAgICBzYXZlZF9jdXJzb3JfZmcgPSBjdXJz b3JfZmFjZS0+Zm9yZWdyb3VuZDsKKwkgICAgICBjdXJzb3JfZmFjZS0+YmFja2dyb3VuZCA9IGds eXBoX2ZhY2UtPmZvcmVncm91bmQ7CisJICAgICAgY3Vyc29yX2ZhY2UtPmZvcmVncm91bmQgPSBn bHlwaF9mYWNlLT5iYWNrZ3JvdW5kOworCSAgICB9CisJICBpZiAoIShGUkFNRV9UVFkgKGYpLT5j dXJzb3JfaGlkZGVuKSkKKwkgICAgeworCSAgICAgIG5yb3ctPmdseXBoc1tURVhUX0FSRUFdW3hd LmZhY2VfaWQgPSBDVVJTT1JfRkFDRV9JRDsKKworCSAgICAgIC8qIGZvcmNlIGEgcmV3cml0ZSBv ZiBuZXcgY3Vyc29yIHJvdyAoaW5jbHVkaW5nIHNwYWNlcykgKi8KKwkgICAgICBGUkFNRV9UVFkg KGYpLT5tdXN0X3dyaXRlX3NwYWNlcyA9IDE7CisJICAgICAgb3Jvdy0+ZW5hYmxlZF9wID0gMDsK KwkgICAgICBucm93LT5lbmFibGVkX3AgPSAxOworCSAgICB9CisJICAvKiBmb3JjZSBhIHJld3Jp dGUgb2Ygb2xkIGN1cnNvciByb3cgKGlmIG5lZWRlZCkgKi8KKwkgIGludCBweCA9IHByZXZfY3Vy c29yX3Bvcy5YLCBweSA9IHByZXZfY3Vyc29yX3Bvcy5ZOworCSAgaWYgKHNhdmVkX2ZhY2VfaWQg PiAtMSAmJiAocHggIT0geCB8fCBweSAhPSB5KSkKKwkgICAgeworCSAgICAgIHN0cnVjdCBnbHlw aF9yb3cgKnBvcm93ID0gTUFUUklYX1JPVyAoZi0+Y3VycmVudF9tYXRyaXgsIHB5KTsKKwkgICAg ICBzdHJ1Y3QgZ2x5cGhfcm93ICpwbnJvdyA9IE1BVFJJWF9ST1cgKGYtPmRlc2lyZWRfbWF0cml4 LCBweSk7CisJICAgICAgaWYgKHBucm93LT5nbHlwaHNbVEVYVF9BUkVBXVtweF0uZmFjZV9pZCA9 PSBDVVJTT1JfRkFDRV9JRCkKKwkJcG5yb3ctPmdseXBoc1tURVhUX0FSRUFdW3B4XS5mYWNlX2lk ID0gc2F2ZWRfZmFjZV9pZDsKKwkgICAgICBwb3Jvdy0+ZW5hYmxlZF9wID0gMDsKKwkgICAgICBw bnJvdy0+ZW5hYmxlZF9wID0gMTsKKwkgICAgfQorCSAgc2F2ZWRfZmFjZV9pZCA9IGdseXBoX2Zh Y2VfaWQ7CisJICBwcmV2X2N1cnNvcl9wb3MuWCA9IHg7CisJICBwcmV2X2N1cnNvcl9wb3MuWSA9 IHk7CisJfQorICAgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgICAgICAgICAgICAg ICAgICAgVGV4dCBNb2RpZmljYXRpb24KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwogLyogQ2xlYXIgZnJv bSBjdXJzb3IgdG8gZW5kIG9mIHNjcmVlbi4gICovCiBzdGF0aWMgdm9pZAogdzMyY29uX2NsZWFy X3RvX2VuZCAoc3RydWN0IGZyYW1lICpmKQogewotICB3MzJjb25fY2xlYXJfZW5kX29mX2xpbmUg KGYsIEZSQU1FX0NPTFMgKGYpIC0gMSk7Ci0gIHczMmNvbl9pbnNfZGVsX2xpbmVzIChmLCBjdXJz b3JfY29vcmRzLlksIEZSQU1FX1RPVEFMX0xJTkVTIChmKSAtIGN1cnNvcl9jb29yZHMuWSAtIDEp OworICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykKKyAgICB7CisgICAg ICB0dXJuX29uX2ZhY2UgKGYsIHNwYWNlX2dseXBoLmZhY2VfaWQpOworICAgICAgdzMyY29uX3dy aXRlX3Z0X3NlcSAoIlx4MWJbMUoiKTsKKyAgICAgIHR1cm5fb2ZmX2ZhY2UgKGYsIHNwYWNlX2ds eXBoLmZhY2VfaWQpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHczMmNvbl9jbGVhcl9l bmRfb2ZfbGluZSAoZiwgRlJBTUVfQ09MUyAoZikgLSAxKTsKKyAgICAgIGludCBuID0gRlJBTUVf VE9UQUxfTElORVMgKGYpIC0gY3Vyc29yX2Nvb3Jkcy5ZIC0gMTsKKyAgICAgIHczMmNvbl9pbnNf ZGVsX2xpbmVzIChmLCBjdXJzb3JfY29vcmRzLlksIG4pOworICAgIH0KIH0KIAogLyogQ2xlYXIg dGhlIGZyYW1lLiAgKi8KIHN0YXRpYyB2b2lkCiB3MzJjb25fY2xlYXJfZnJhbWUgKHN0cnVjdCBm cmFtZSAqZikKIHsKLSAgQ09PUkQJICAgICBkZXN0OwotICBpbnQgICAgICAgIG47Ci0gIERXT1JE ICAgICAgcjsKLSAgQ09OU09MRV9TQ1JFRU5fQlVGRkVSX0lORk8gaW5mbzsKLQotICBHZXRDb25z b2xlU2NyZWVuQnVmZmVySW5mbyAoR2V0U3RkSGFuZGxlIChTVERfT1VUUFVUX0hBTkRMRSksICZp bmZvKTsKLQotICAvKiBSZW1lbWJlciB0aGF0IHRoZSBzY3JlZW4gYnVmZmVyIG1pZ2h0IGJlIHdp ZGVyIHRoYW4gdGhlIHdpbmRvdy4gICovCi0gIG4gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZikgKiBp bmZvLmR3U2l6ZS5YOwotICBkZXN0LlggPSBkZXN0LlkgPSAwOwotCi0gIEZpbGxDb25zb2xlT3V0 cHV0QXR0cmlidXRlIChjdXJfc2NyZWVuLCBjaGFyX2F0dHJfbm9ybWFsLCBuLCBkZXN0LCAmcik7 Ci0gIEZpbGxDb25zb2xlT3V0cHV0Q2hhcmFjdGVyIChjdXJfc2NyZWVuLCAnICcsIG4sIGRlc3Qs ICZyKTsKLQorICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcykKKyAgICB7 CisgICAgICB0dXJuX29uX2ZhY2UgKGYsIHNwYWNlX2dseXBoLmZhY2VfaWQpOworICAgICAgdzMy Y29uX3dyaXRlX3Z0X3NlcSAoIlx4MWJbMkpceDFiWzNKIik7CisgICAgICB0dXJuX29mZl9mYWNl IChmLCBzcGFjZV9nbHlwaC5mYWNlX2lkKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBD T09SRAkgICAgIGRlc3Q7CisgICAgICBpbnQgICAgICAgIG47CisgICAgICBEV09SRCAgICAgIHI7 CisgICAgICBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5GTyBpbmZvOworICAgICAgCisgICAgICBH ZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyAoR2V0U3RkSGFuZGxlIChTVERfT1VUUFVUX0hBTkRM RSksICZpbmZvKTsKKyAgICAgIAorICAgICAgLyogUmVtZW1iZXIgdGhhdCB0aGUgc2NyZWVuIGJ1 ZmZlciBtaWdodCBiZSB3aWRlciB0aGFuIHRoZSB3aW5kb3cuICAqLworICAgICAgbiA9IEZSQU1F X1RPVEFMX0xJTkVTIChmKSAqIGluZm8uZHdTaXplLlg7CisgICAgICBkZXN0LlggPSBkZXN0Llkg PSAwOworICAgICAgCisgICAgICBGaWxsQ29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVl biwgY2hhcl9hdHRyX25vcm1hbCwgbiwgZGVzdCwgJnIpOworICAgICAgRmlsbENvbnNvbGVPdXRw dXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sICcgJywgbiwgZGVzdCwgJnIpOworICAgIH0KICAgdzMy Y29uX21vdmVfY3Vyc29yIChmLCAwLCAwKTsKIH0KIApAQCAtMTUxLDk1ICszOTUsMTE2IEBAIHN0 YXRpYyBCT09MICBjZW9sX2luaXRpYWxpemVkID0gRkFMU0U7CiBzdGF0aWMgdm9pZAogdzMyY29u X2NsZWFyX2VuZF9vZl9saW5lIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBlbmQpCiB7Ci0gIC8qIFRp bWUgdG8gcmVhbGxvY2F0ZSBvdXIgImVtcHR5IHJvdyI/ICBXaXRoIHRvZGF5J3MgbGFyZ2Ugc2Ny ZWVucywKLSAgICAgaXQgaXMgbm90IHVudGhpbmthYmxlIHRvIHNlZSBUVFkgZnJhbWVzIHdlbGwg aW4gZXhjZXNzIG9mCi0gICAgIDgwLWNoYXJhY3RlciB3aWR0aC4gICovCi0gIGlmIChlbmQgLSBj dXJzb3JfY29vcmRzLlggPiBnbHlwaHNfbGVuKQorICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1p bmFsX3NlcXVlbmNlcykKICAgICB7Ci0gICAgICBpZiAoZ2x5cGhzID09IGdseXBoX2Jhc2UpCi0J Z2x5cGhzID0gTlVMTDsKLSAgICAgIGdseXBocyA9IHhyZWFsbG9jIChnbHlwaHMsIEZSQU1FX0NP TFMgKGYpICogc2l6ZW9mIChzdHJ1Y3QgZ2x5cGgpKTsKLSAgICAgIGdseXBoc19sZW4gPSBGUkFN RV9DT0xTIChmKTsKLSAgICAgIGNlb2xfaW5pdGlhbGl6ZWQgPSBGQUxTRTsKKyAgICAgIHR1cm5f b25fZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFjZV9pZCk7CisgICAgICB3MzJjb25fd3JpdGVfdnRf c2VxICgiXHgxYlswSyIpOworICAgICAgdHVybl9vZmZfZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFj ZV9pZCk7CiAgICAgfQotICBpZiAoIWNlb2xfaW5pdGlhbGl6ZWQpCisgIGVsc2UKICAgICB7Ci0g ICAgICBpbnQgaTsKLSAgICAgIGZvciAoaSA9IDA7IGkgPCBnbHlwaHNfbGVuOyBpKyspCi0gICAg ICAgIHsKLQkgIG1lbWNweSAoJmdseXBoc1tpXSwgJnNwYWNlX2dseXBoLCBzaXplb2YgKHN0cnVj dCBnbHlwaCkpOwotCSAgZ2x5cGhzW2ldLmZyYW1lID0gTlVMTDsKLSAgICAgICAgfQotICAgICAg Y2VvbF9pbml0aWFsaXplZCA9IFRSVUU7CisgICAgICAvKiBUaW1lIHRvIHJlYWxsb2NhdGUgb3Vy ICJlbXB0eSByb3ciPyAgV2l0aCB0b2RheSdzIGxhcmdlIHNjcmVlbnMsCisJIGl0IGlzIG5vdCB1 bnRoaW5rYWJsZSB0byBzZWUgVFRZIGZyYW1lcyB3ZWxsIGluIGV4Y2VzcyBvZgorCSA4MC1jaGFy YWN0ZXIgd2lkdGguICAqLworICAgICAgaWYgKGVuZCAtIGN1cnNvcl9jb29yZHMuWCA+IGdseXBo c19sZW4pCisJeworCSAgaWYgKGdseXBocyA9PSBnbHlwaF9iYXNlKQorCSAgICBnbHlwaHMgPSBO VUxMOworCSAgZ2x5cGhzID0geHJlYWxsb2MgKGdseXBocywgRlJBTUVfQ09MUyAoZikgKiBzaXpl b2YgKHN0cnVjdCBnbHlwaCkpOworCSAgZ2x5cGhzX2xlbiA9IEZSQU1FX0NPTFMgKGYpOworCSAg Y2VvbF9pbml0aWFsaXplZCA9IEZBTFNFOworCX0KKyAgICAgIGlmICghY2VvbF9pbml0aWFsaXpl ZCkKKwl7CisJICBpbnQgaTsKKwkgIGZvciAoaSA9IDA7IGkgPCBnbHlwaHNfbGVuOyBpKyspCisJ ICAgIHsKKwkgICAgICBtZW1jcHkgKCZnbHlwaHNbaV0sICZzcGFjZV9nbHlwaCwgc2l6ZW9mIChz dHJ1Y3QgZ2x5cGgpKTsKKwkgICAgICBnbHlwaHNbaV0uZnJhbWUgPSBOVUxMOworCSAgICB9CisJ ICBjZW9sX2luaXRpYWxpemVkID0gVFJVRTsKKwl9CisgICAgICB3MzJjb25fd3JpdGVfZ2x5cGhz IChmLCBnbHlwaHMsIGVuZCAtIGN1cnNvcl9jb29yZHMuWCk7CiAgICAgfQotICB3MzJjb25fd3Jp dGVfZ2x5cGhzIChmLCBnbHlwaHMsIGVuZCAtIGN1cnNvcl9jb29yZHMuWCk7CiB9CiAKIC8qIElu c2VydCBuIGxpbmVzIGF0IHZwb3MuIGlmIG4gaXMgbmVnYXRpdmUgZGVsZXRlIC1uIGxpbmVzLiAg Ki8KIHN0YXRpYyB2b2lkCiB3MzJjb25faW5zX2RlbF9saW5lcyAoc3RydWN0IGZyYW1lICpmLCBp bnQgdnBvcywgaW50IG4pCiB7Ci0gIGludAkgICAgIGksIG5iOwotICBTTUFMTF9SRUNUIHNjcm9s bDsKLSAgU01BTExfUkVDVCBjbGlwOwotICBDT09SRAkgICAgIGRlc3Q7Ci0gIENIQVJfSU5GTyAg ZmlsbDsKLQotICBpZiAobiA8IDApCisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2Vx dWVuY2VzKQogICAgIHsKLSAgICAgIHNjcm9sbC5Ub3AgPSB2cG9zIC0gbjsKLSAgICAgIHNjcm9s bC5Cb3R0b20gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZik7Ci0gICAgICBkZXN0LlkgPSB2cG9zOwor ICAgICAgY2hhciBzZXFbMzJdOworICAgICAgY2hhciAqZm10ID0gbiA8IDAgPyAiXHgxYlslZEwi IDogIlx4MWJbJWRNIjsKKyAgICAgIHNwcmludGYgKHNlcSwgZm10LCBhYnMgKG4pKTsKKworICAg ICAgdHVybl9vbl9mYWNlIChmLCBzcGFjZV9nbHlwaC5mYWNlX2lkKTsKKyAgICAgIHczMmNvbl93 cml0ZV92dF9zZXEgKHNlcSk7CisgICAgICB0dXJuX29mZl9mYWNlIChmLCBzcGFjZV9nbHlwaC5m YWNlX2lkKTsKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBzY3JvbGwuVG9wID0gdnBvczsK LSAgICAgIHNjcm9sbC5Cb3R0b20gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZikgLSBuOwotICAgICAg ZGVzdC5ZID0gdnBvcyArIG47Ci0gICAgfQotICBjbGlwLlRvcCA9IGNsaXAuTGVmdCA9IHNjcm9s bC5MZWZ0ID0gMDsKLSAgY2xpcC5SaWdodCA9IHNjcm9sbC5SaWdodCA9IEZSQU1FX0NPTFMgKGYp OwotICBjbGlwLkJvdHRvbSA9IEZSQU1FX1RPVEFMX0xJTkVTIChmKTsKKyAgICAgIGludAkgICAg IGksIG5iOworICAgICAgU01BTExfUkVDVCBzY3JvbGw7CisgICAgICBTTUFMTF9SRUNUIGNsaXA7 CisgICAgICBDT09SRAkgICAgIGRlc3Q7CisgICAgICBDSEFSX0lORk8gIGZpbGw7CiAKLSAgZGVz dC5YID0gMDsKKyAgICAgIGlmIChuIDwgMCkKKwl7CisJICBzY3JvbGwuVG9wID0gdnBvcyAtIG47 CisJICBzY3JvbGwuQm90dG9tID0gRlJBTUVfVE9UQUxfTElORVMgKGYpOworCSAgZGVzdC5ZID0g dnBvczsKKwl9CisgICAgICBlbHNlCisJeworCSAgc2Nyb2xsLlRvcCA9IHZwb3M7CisJICBzY3Jv bGwuQm90dG9tID0gRlJBTUVfVE9UQUxfTElORVMgKGYpIC0gbjsKKwkgIGRlc3QuWSA9IHZwb3Mg KyBuOworCX0KKyAgICAgIGNsaXAuVG9wID0gY2xpcC5MZWZ0ID0gc2Nyb2xsLkxlZnQgPSAwOwor ICAgICAgY2xpcC5SaWdodCA9IHNjcm9sbC5SaWdodCA9IEZSQU1FX0NPTFMgKGYpOworICAgICAg Y2xpcC5Cb3R0b20gPSBGUkFNRV9UT1RBTF9MSU5FUyAoZik7CiAKLSAgZmlsbC5DaGFyLkFzY2lp Q2hhciA9IDB4MjA7Ci0gIGZpbGwuQXR0cmlidXRlcyA9IGNoYXJfYXR0cl9ub3JtYWw7CisgICAg ICBkZXN0LlggPSAwOwogCi0gIFNjcm9sbENvbnNvbGVTY3JlZW5CdWZmZXIgKGN1cl9zY3JlZW4s ICZzY3JvbGwsICZjbGlwLCBkZXN0LCAmZmlsbCk7CisgICAgICBmaWxsLkNoYXIuQXNjaWlDaGFy ID0gMHgyMDsKKyAgICAgIGZpbGwuQXR0cmlidXRlcyA9IGNoYXJfYXR0cl9ub3JtYWw7CiAKLSAg LyogSGVyZSB3ZSBoYXZlIHRvIGRlYWwgd2l0aCBhIHczMiBjb25zb2xlIGZsYWtlOiBJZiB0aGUg c2Nyb2xsCi0gICAgIHJlZ2lvbiBsb29rcyBsaWtlIGFiYyBhbmQgd2Ugc2Nyb2xsIGMgdG8gYSBh bmQgZmlsbCB3aXRoIGQgd2UgZ2V0Ci0gICAgIGNiZC4uLiBpZiB3ZSBzY3JvbGwgYmxvY2sgYyBv bmUgbGluZSBhdCBhIHRpbWUgdG8gYSwgd2UgZ2V0IGNkZC4uLgotICAgICBFbWFjcyBleHBlY3Rz IGNkZCBjb25zaXN0ZW50bHkuLi4gU28gd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhhdAotICAgICBo ZXJlLi4uICh0aGlzIGFsc28gb2NjdXJzIHNjcm9sbGluZyB0aGUgc2FtZSB3YXkgaW4gdGhlIG90 aGVyCi0gICAgIGRpcmVjdGlvbi4gICovCisgICAgICBTY3JvbGxDb25zb2xlU2NyZWVuQnVmZmVy IChjdXJfc2NyZWVuLCAmc2Nyb2xsLCAmY2xpcCwgZGVzdCwgJmZpbGwpOwogCi0gIGlmIChuID4g MCkKLSAgICB7Ci0gICAgICBpZiAoc2Nyb2xsLkJvdHRvbSA8IGRlc3QuWSkKLSAgICAgICAgewot CSAgZm9yIChpID0gc2Nyb2xsLkJvdHRvbTsgaSA8IGRlc3QuWTsgaSsrKQotICAgICAgICAgICAg ewotCSAgICAgIHczMmNvbl9tb3ZlX2N1cnNvciAoZiwgaSwgMCk7Ci0JICAgICAgdzMyY29uX2Ns ZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9DT0xTIChmKSk7Ci0gICAgICAgICAgICB9Ci0gICAg ICAgIH0KLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICBuYiA9IGRlc3QuWSArIChzY3JvbGwu Qm90dG9tIC0gc2Nyb2xsLlRvcCkgKyAxOwotCi0gICAgICBpZiAobmIgPCBzY3JvbGwuVG9wKQot ICAgICAgICB7Ci0JICBmb3IgKGkgPSBuYjsgaSA8IHNjcm9sbC5Ub3A7IGkrKykKLSAgICAgICAg ICAgIHsKLQkgICAgICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGksIDApOwotCSAgICAgIHczMmNv bl9jbGVhcl9lbmRfb2ZfbGluZSAoZiwgRlJBTUVfQ09MUyAoZikpOwotICAgICAgICAgICAgfQot ICAgICAgICB9Ci0gICAgfQorICAgICAgLyogSGVyZSB3ZSBoYXZlIHRvIGRlYWwgd2l0aCBhIHcz MiBjb25zb2xlIGZsYWtlOiBJZiB0aGUgc2Nyb2xsCisJIHJlZ2lvbiBsb29rcyBsaWtlIGFiYyBh bmQgd2Ugc2Nyb2xsIGMgdG8gYSBhbmQgZmlsbCB3aXRoIGQgd2UgZ2V0CisJIGNiZC4uLiBpZiB3 ZSBzY3JvbGwgYmxvY2sgYyBvbmUgbGluZSBhdCBhIHRpbWUgdG8gYSwgd2UgZ2V0IGNkZC4uLgor CSBFbWFjcyBleHBlY3RzIGNkZCBjb25zaXN0ZW50bHkuLi4gU28gd2UgaGF2ZSB0byBkZWFsIHdp dGggdGhhdAorCSBoZXJlLi4uICh0aGlzIGFsc28gb2NjdXJzIHNjcm9sbGluZyB0aGUgc2FtZSB3 YXkgaW4gdGhlIG90aGVyCisJIGRpcmVjdGlvbi4gICovCisKKyAgICAgIGlmIChuID4gMCkKKwl7 CisJICBpZiAoc2Nyb2xsLkJvdHRvbSA8IGRlc3QuWSkKKwkgICAgeworCSAgICAgIGZvciAoaSA9 IHNjcm9sbC5Cb3R0b207IGkgPCBkZXN0Llk7IGkrKykKKwkJeworCQkgIHczMmNvbl9tb3ZlX2N1 cnNvciAoZiwgaSwgMCk7CisJCSAgdzMyY29uX2NsZWFyX2VuZF9vZl9saW5lIChmLCBGUkFNRV9D T0xTIChmKSk7CisJCX0KKwkgICAgfQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBuYiA9IGRlc3Qu WSArIChzY3JvbGwuQm90dG9tIC0gc2Nyb2xsLlRvcCkgKyAxOwogCisJICBpZiAobmIgPCBzY3Jv bGwuVG9wKQorCSAgICB7CisJICAgICAgZm9yIChpID0gbmI7IGkgPCBzY3JvbGwuVG9wOyBpKysp CisJCXsKKwkJICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIGksIDApOworCQkgIHczMmNvbl9jbGVh cl9lbmRfb2ZfbGluZSAoZiwgRlJBTUVfQ09MUyAoZikpOworCQl9CisJICAgIH0KKwl9CisgICAg fQogICBjdXJzb3JfY29vcmRzLlggPSAwOwogICBjdXJzb3JfY29vcmRzLlkgPSB2cG9zOwogfQpA QCAtMjQ4LDM4ICs1MTMsNTAgQEAgdzMyY29uX2luc19kZWxfbGluZXMgKHN0cnVjdCBmcmFtZSAq ZiwgaW50IHZwb3MsIGludCBuKQogI3VuZGVmCVJJR0hUCiAjZGVmaW5lCUxFRlQJMQogI2RlZmlu ZQlSSUdIVAkwCi0KKy8qIFRoZSBpZGVhIGhlcmUgaXMgdG8gaW1wbGVtZW50IGEgaG9yaXpvbnRh bCBzY3JvbGwgaW4gb25lIGxpbmUgdG8KKyAgIGltcGxlbWVudCBkZWxldGUgYW5kIGhhbGYgb2Yg aW5zZXJ0LiAgKi8KIHN0YXRpYyB2b2lkCiBzY3JvbGxfbGluZSAoc3RydWN0IGZyYW1lICpmLCBp bnQgZGlzdCwgaW50IGRpcmVjdGlvbikKIHsKLSAgLyogVGhlIGlkZWEgaGVyZSBpcyB0byBpbXBs ZW1lbnQgYSBob3Jpem9udGFsIHNjcm9sbCBpbiBvbmUgbGluZSB0bwotICAgICBpbXBsZW1lbnQg ZGVsZXRlIGFuZCBoYWxmIG9mIGluc2VydC4gICovCi0gIFNNQUxMX1JFQ1Qgc2Nyb2xsLCBjbGlw OwotICBDT09SRAkgICAgIGRlc3Q7Ci0gIENIQVJfSU5GTyAgZmlsbDsKLQotICBjbGlwLlRvcCA9 IHNjcm9sbC5Ub3AgPSBjbGlwLkJvdHRvbSA9IHNjcm9sbC5Cb3R0b20gPSBjdXJzb3JfY29vcmRz Llk7Ci0gIGNsaXAuTGVmdCA9IDA7Ci0gIGNsaXAuUmlnaHQgPSBGUkFNRV9DT0xTIChmKTsKLQot ICBpZiAoZGlyZWN0aW9uID09IExFRlQpCisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxf c2VxdWVuY2VzKQogICAgIHsKLSAgICAgIHNjcm9sbC5MZWZ0ID0gY3Vyc29yX2Nvb3Jkcy5YICsg ZGlzdDsKLSAgICAgIHNjcm9sbC5SaWdodCA9IEZSQU1FX0NPTFMgKGYpIC0gMTsKKyAgICAgIGNo YXIgc2VxWzMyXTsKKyAgICAgIGNoYXIgKmZtdCA9IGRpcmVjdGlvbiA9PSBMRUZUID8gIlx4MWJb JWRAIiA6ICJceDFiWyVkUCI7CisgICAgICBzcHJpbnRmIChzZXEsIGZtdCwgYWJzIChkaXN0KSk7 CisKKyAgICAgIHR1cm5fb25fZmFjZSAoZiwgc3BhY2VfZ2x5cGguZmFjZV9pZCk7CisgICAgICB3 MzJjb25fd3JpdGVfdnRfc2VxIChzZXEpOworICAgICAgdHVybl9vZmZfZmFjZSAoZiwgc3BhY2Vf Z2x5cGguZmFjZV9pZCk7CiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgc2Nyb2xsLkxlZnQg PSBjdXJzb3JfY29vcmRzLlg7Ci0gICAgICBzY3JvbGwuUmlnaHQgPSBGUkFNRV9DT0xTIChmKSAt IGRpc3QgLSAxOworICAgICAgU01BTExfUkVDVCBzY3JvbGwsIGNsaXA7CisgICAgICBDT09SRAkg ICAgIGRlc3Q7CisgICAgICBDSEFSX0lORk8gIGZpbGw7CisgICAgICAKKyAgICAgIGNsaXAuVG9w ID0gc2Nyb2xsLlRvcCA9IGNsaXAuQm90dG9tID0gc2Nyb2xsLkJvdHRvbSA9IGN1cnNvcl9jb29y ZHMuWTsKKyAgICAgIGNsaXAuTGVmdCA9IDA7CisgICAgICBjbGlwLlJpZ2h0ID0gRlJBTUVfQ09M UyAoZik7CisgICAgICAKKyAgICAgIGlmIChkaXJlY3Rpb24gPT0gTEVGVCkKKwl7CisJICBzY3Jv bGwuTGVmdCA9IGN1cnNvcl9jb29yZHMuWCArIGRpc3Q7CisJICBzY3JvbGwuUmlnaHQgPSBGUkFN RV9DT0xTIChmKSAtIDE7CisJfQorICAgICAgZWxzZQorCXsKKwkgIHNjcm9sbC5MZWZ0ID0gY3Vy c29yX2Nvb3Jkcy5YOworCSAgc2Nyb2xsLlJpZ2h0ID0gRlJBTUVfQ09MUyAoZikgLSBkaXN0IC0g MTsKKwl9CisgICAgICAKKyAgICAgIGRlc3QuWCA9IGN1cnNvcl9jb29yZHMuWDsKKyAgICAgIGRl c3QuWSA9IGN1cnNvcl9jb29yZHMuWTsKKyAgICAgIAorICAgICAgZmlsbC5DaGFyLkFzY2lpQ2hh ciA9IDB4MjA7CisgICAgICBmaWxsLkF0dHJpYnV0ZXMgPSBjaGFyX2F0dHJfbm9ybWFsOworICAg ICAgCisgICAgICBTY3JvbGxDb25zb2xlU2NyZWVuQnVmZmVyIChjdXJfc2NyZWVuLCAmc2Nyb2xs LCAmY2xpcCwgZGVzdCwgJmZpbGwpOwogICAgIH0KLQotICBkZXN0LlggPSBjdXJzb3JfY29vcmRz Llg7Ci0gIGRlc3QuWSA9IGN1cnNvcl9jb29yZHMuWTsKLQotICBmaWxsLkNoYXIuQXNjaWlDaGFy ID0gMHgyMDsKLSAgZmlsbC5BdHRyaWJ1dGVzID0gY2hhcl9hdHRyX25vcm1hbDsKLQotICBTY3Jv bGxDb25zb2xlU2NyZWVuQnVmZmVyIChjdXJfc2NyZWVuLCAmc2Nyb2xsLCAmY2xpcCwgZGVzdCwg JmZpbGwpOwogfQogCiAKQEAgLTI4OCwxNCArNTY1LDEzIEBAIHN0YXRpYyB2b2lkCiB3MzJjb25f aW5zZXJ0X2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0 YXJ0LAogCQkgICAgICByZWdpc3RlciBpbnQgbGVuKQogeworICAvKiBNb3ZlIGxlbiBjaGFycyB0 byB0aGUgcmlnaHQgZnJvbSBjdXJzb3JfY29vcmRzLCBmaWxsIHdpdGggYmxhbmtzICovCiAgIHNj cm9sbF9saW5lIChmLCBsZW4sIFJJR0hUKTsKLQotICAvKiBNb3ZlIGxlbiBjaGFycyB0byB0aGUg cmlnaHQgc3RhcnRpbmcgYXQgY3Vyc29yX2Nvb3JkcywgZmlsbCB3aXRoIGJsYW5rcyAqLworICAK ICAgaWYgKHN0YXJ0KQogICAgIHsKLSAgICAgIC8qIFByaW50IHRoZSBmaXJzdCBsZW4gY2hhcmFj dGVycyBvZiBzdGFydCwgY3Vyc29yX2Nvb3Jkcy5YIGFkanVzdGVkCi0JIGJ5IHdyaXRlX2dseXBo cy4gICovCi0KKyAgICAgIC8qIFByaW50IHRoZSBmaXJzdCBsZW4gY2hhcmFjdGVycyBvZiBzdGFy dC4KKwkgY3Vyc29yX2Nvb3Jkcy5YIGFkanVzdGVkIGJ5IHdyaXRlX2dseXBocy4gICovCiAgICAg ICB3MzJjb25fd3JpdGVfZ2x5cGhzIChmLCBzdGFydCwgbGVuKTsKICAgICB9CiAgIGVsc2UKQEAg LTMwNiw3ICs1ODIsNyBAQCB3MzJjb25faW5zZXJ0X2dseXBocyAoc3RydWN0IGZyYW1lICpmLCBy ZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0YXJ0LAogCiBzdGF0aWMgdm9pZAogdzMyY29uX3dyaXRl X2dseXBocyAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBzdHJ1Y3QgZ2x5cGggKnN0cmluZywK LSAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGludCBsZW4pCisJCSAgICAgcmVnaXN0ZXIg aW50IGxlbikKIHsKICAgRFdPUkQgcjsKICAgV09SRCBjaGFyX2F0dHI7CkBAIC0zNDIsNDMgKzYx OCw0NSBAQCB3MzJjb25fd3JpdGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIHN0 cnVjdCBnbHlwaCAqc3RyaW5nLAogCiAgICAgICAvKiB3MzJjb25fY2xlYXJfZW5kX29mX2xpbmUg c2V0cyBmcmFtZSBvZiBnbHlwaHMgdG8gTlVMTC4gICovCiAgICAgICBzdHJ1Y3QgZnJhbWUgKmF0 dHJfZnJhbWUgPSBmYWNlX2lkX2ZyYW1lID8gZmFjZV9pZF9mcmFtZSA6IGY7Ci0gICAgICAvKiBU dXJuIGFwcGVhcmFuY2UgbW9kZXMgb2YgdGhlIGZhY2Ugb2YgdGhlIHJ1biBvbi4gICovCi0gICAg ICBjaGFyX2F0dHIgPSB3MzJfZmFjZV9hdHRyaWJ1dGVzIChhdHRyX2ZyYW1lLCBmYWNlX2lkKTsK IAogICAgICAgaWYgKG4gPT0gbGVuKQogCS8qIFRoaXMgaXMgdGhlIGxhc3QgcnVuLiAgKi8KIAlj b2RpbmctPm1vZGUgfD0gQ09ESU5HX01PREVfTEFTVF9CTE9DSzsKKwogICAgICAgY29udmVyc2lv bl9idWZmZXIgPSAoTFBDU1RSKSBlbmNvZGVfdGVybWluYWxfY29kZSAoc3RyaW5nLCBuLCBjb2Rp bmcpOwogICAgICAgaWYgKGNvZGluZy0+cHJvZHVjZWQgPiAwKQogCXsKLQkgIC8qIFNldCB0aGUg YXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8KLQkgIGlmICghRmlsbENvbnNvbGVP dXRwdXRBdHRyaWJ1dGUgKGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKLQkJCQkJICAgY29kaW5nLT5w cm9kdWNlZCwgY3Vyc29yX2Nvb3JkcywKLQkJCQkJICAgJnIpKQorCSAgaWYgKHczMl91c2Vfdmly dHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMpCiAJICAgIHsKLQkgICAgICBwcmludGYgKCJGYWlsZWQg d3JpdGluZyBjb25zb2xlIGF0dHJpYnV0ZXM6ICVsdVxuIiwKLQkJICAgICAgR2V0TGFzdEVycm9y ICgpKTsKLQkgICAgICBmZmx1c2ggKHN0ZG91dCk7CisJICAgICAgdHVybl9vbl9mYWNlIChmLCBm YWNlX2lkKTsKKwkgICAgICBXcml0ZUNvbnNvbGUgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVm ZmVyLAorCQkJICAgIGNvZGluZy0+cHJvZHVjZWQsICZyLCBOVUxMKTsKKwkgICAgICB0dXJuX29m Zl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgICAgICBjdXJzb3JfY29vcmRzLlggKz0gY29kaW5nLT5w cm9kdWNlZDsKIAkgICAgfQotCi0JICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVycy4gICovCi0JICBp ZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwgY29udmVyc2lvbl9i dWZmZXIsCi0JCQkJCSAgICBjb2RpbmctPnByb2R1Y2VkLCBjdXJzb3JfY29vcmRzLAotCQkJCQkg ICAgJnIpKQorCSAgZWxzZQogCSAgICB7Ci0JICAgICAgcHJpbnRmICgiRmFpbGVkIHdyaXRpbmcg Y29uc29sZSBjaGFyYWN0ZXJzOiAlbHVcbiIsCi0JCSAgICAgIEdldExhc3RFcnJvciAoKSk7Ci0J ICAgICAgZmZsdXNoIChzdGRvdXQpOwotCSAgICB9CisJICAgICAgLyogVHVybiBhcHBlYXJhbmNl IG1vZGVzIG9mIHRoZSBmYWNlIG9mIHRoZSBydW4gb24uICAqLworCSAgICAgIGNoYXJfYXR0ciA9 IHczMl9mYWNlX2F0dHJpYnV0ZXMgKGF0dHJfZnJhbWUsIGZhY2VfaWQpOworCSAgICAgIC8qIFNl dCB0aGUgYXR0cmlidXRlIGZvciB0aGVzZSBjaGFyYWN0ZXJzLiAgKi8KKwkgICAgICBGaWxsQ29u c29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAorCQkJCQkgIGNvZGlu Zy0+cHJvZHVjZWQsIGN1cnNvcl9jb29yZHMsCisJCQkJCSAgJnIpOworCSAgICAgIC8qIFdyaXRl IHRoZSBjaGFyYWN0ZXJzLiAgKi8KKwkgICAgICBXcml0ZUNvbnNvbGVPdXRwdXRDaGFyYWN0ZXIg KGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJCQkgICBjb2RpbmctPnByb2R1Y2Vk LCBjdXJzb3JfY29vcmRzLAorCQkJCQkgICAmcik7CiAKLQkgIGN1cnNvcl9jb29yZHMuWCArPSBj b2RpbmctPnByb2R1Y2VkOwotCSAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29vcmRz LlksIGN1cnNvcl9jb29yZHMuWCk7CisJICAgICAgY3Vyc29yX2Nvb3Jkcy5YICs9IGNvZGluZy0+ cHJvZHVjZWQ7CisJICAgICAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29vcmRzLlks IGN1cnNvcl9jb29yZHMuWCk7CisJICAgIH0KIAl9CiAgICAgICBsZW4gLT0gbjsKICAgICAgIHN0 cmluZyArPSBuOwogICAgIH0KIH0KIAorCiAvKiBVc2VkIGZvciBtb3VzZSBoaWdobGlnaHQuICAq Lwogc3RhdGljIHZvaWQKIHczMmNvbl93cml0ZV9nbHlwaHNfd2l0aF9mYWNlIChzdHJ1Y3QgZnJh bWUgKmYsIHJlZ2lzdGVyIGludCB4LCByZWdpc3RlciBpbnQgeSwKQEAgLTM4Nyw2ICs2NjUsNyBA QCB3MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdpc3Rl ciBpbnQgeCwgcmVnaXN0ZXIgaW50IHksCiB7CiAgIExQQ1NUUiBjb252ZXJzaW9uX2J1ZmZlcjsK ICAgc3RydWN0IGNvZGluZ19zeXN0ZW0gKmNvZGluZzsKKyAgRFdPUkQgZmlsbGVkLCB3cml0dGVu OwogCiAgIGlmIChsZW4gPD0gMCkKICAgICByZXR1cm47CkBAIC0zOTksMjkgKzY3OCwzOCBAQCB3 MzJjb25fd3JpdGVfZ2x5cGhzX3dpdGhfZmFjZSAoc3RydWN0IGZyYW1lICpmLCByZWdpc3RlciBp bnQgeCwgcmVnaXN0ZXIgaW50IHksCiAgIC8qIFdlIGFyZSBnb2luZyB0byB3cml0ZSB0aGUgZW50 aXJlIGJsb2NrIG9mIGdseXBocyBpbiBvbmUgZ28sIGFzCiAgICAgIHRoZXkgYWxsIGhhdmUgdGhl IHNhbWUgZmFjZS4gIFNvIHRoaXMgX2lzXyB0aGUgbGFzdCBibG9jay4gICovCiAgIGNvZGluZy0+ bW9kZSB8PSBDT0RJTkdfTU9ERV9MQVNUX0JMT0NLOwotCiAgIGNvbnZlcnNpb25fYnVmZmVyID0g KExQQ1NUUikgZW5jb2RlX3Rlcm1pbmFsX2NvZGUgKHN0cmluZywgbGVuLCBjb2RpbmcpOwogICBp ZiAoY29kaW5nLT5wcm9kdWNlZCA+IDApCiAgICAgewotICAgICAgRFdPUkQgZmlsbGVkLCB3cml0 dGVuOwotICAgICAgLyogQ29tcHV0ZSB0aGUgY2hhcmFjdGVyIGF0dHJpYnV0ZXMgY29ycmVzcG9u ZGluZyB0byB0aGUgZmFjZS4gICovCi0gICAgICBEV09SRCBjaGFyX2F0dHIgPSB3MzJfZmFjZV9h dHRyaWJ1dGVzIChmLCBmYWNlX2lkKTsKICAgICAgIENPT1JEIHN0YXJ0X2Nvb3JkczsKLQogICAg ICAgc3RhcnRfY29vcmRzLlggPSB4OwogICAgICAgc3RhcnRfY29vcmRzLlkgPSB5OwotICAgICAg LyogU2V0IHRoZSBhdHRyaWJ1dGUgZm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLwotICAgICAgaWYg KCFGaWxsQ29uc29sZU91dHB1dEF0dHJpYnV0ZSAoY3VyX3NjcmVlbiwgY2hhcl9hdHRyLAotCQkJ CSAgICAgICBjb2RpbmctPnByb2R1Y2VkLCBzdGFydF9jb29yZHMsCi0JCQkJICAgICAgICZmaWxs ZWQpKQotCURlYlByaW50ICgoIkZhaWxlZCB3cml0aW5nIGNvbnNvbGUgYXR0cmlidXRlczogJWRc biIsIEdldExhc3RFcnJvciAoKSkpOworCisgICAgICBpZiAodzMyX3VzZV92aXJ0dWFsX3Rlcm1p bmFsX3NlcXVlbmNlcykKKwl7CisJICBpbnQgcHJldl9jdXJzb3JfaGlkZGVuID0gY3VycmVudF90 dHktPmN1cnNvcl9oaWRkZW47CisJICB3MzJjb25faGlkZV9jdXJzb3IgKCk7CisJICB3MzJjb25f c2F2ZV9jdXJzb3IgKCk7CisJICB3MzJjb25fbW92ZV9jdXJzb3IgKGYsIHksIHgpOworCSAgdHVy bl9vbl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgIFdyaXRlQ29uc29sZSAoY3VyX3NjcmVlbiwgY29u dmVyc2lvbl9idWZmZXIsCisJCQljb2RpbmctPnByb2R1Y2VkLCAmd3JpdHRlbiwgTlVMTCk7CisJ ICB0dXJuX29mZl9mYWNlIChmLCBmYWNlX2lkKTsKKwkgIHczMmNvbl9yZXN0b3JlX2N1cnNvciAo KTsKKwkgIGlmICghcHJldl9jdXJzb3JfaGlkZGVuKSB3MzJjb25fc2hvd19jdXJzb3IgKCk7CisJ fQogICAgICAgZWxzZQogCXsKKwkgIC8qIENvbXB1dGUgdGhlIGNoYXJhY3RlciBhdHRyaWJ1dGVz IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2UuICovCisJICBEV09SRCBjaGFyX2F0dHIgPSB3MzJf ZmFjZV9hdHRyaWJ1dGVzIChmLCBmYWNlX2lkKTsKKworCSAgLyogU2V0IHRoZSBhdHRyaWJ1dGUg Zm9yIHRoZXNlIGNoYXJhY3RlcnMuICAqLworCSAgRmlsbENvbnNvbGVPdXRwdXRBdHRyaWJ1dGUg KGN1cl9zY3JlZW4sIGNoYXJfYXR0ciwKKwkJCQkgICAgICBjb2RpbmctPnByb2R1Y2VkLCBzdGFy dF9jb29yZHMsCisJCQkJICAgICAgJmZpbGxlZCk7CiAJICAvKiBXcml0ZSB0aGUgY2hhcmFjdGVy cy4gICovCi0JICBpZiAoIVdyaXRlQ29uc29sZU91dHB1dENoYXJhY3RlciAoY3VyX3NjcmVlbiwg Y29udmVyc2lvbl9idWZmZXIsCi0JCQkJCSAgICBmaWxsZWQsIHN0YXJ0X2Nvb3JkcywgJndyaXR0 ZW4pKQotCSAgICBEZWJQcmludCAoKCJGYWlsZWQgd3JpdGluZyBjb25zb2xlIGNoYXJhY3RlcnM6 ICVkXG4iLAotCQkgICAgICAgR2V0TGFzdEVycm9yICgpKSk7CisJICBXcml0ZUNvbnNvbGVPdXRw dXRDaGFyYWN0ZXIgKGN1cl9zY3JlZW4sIGNvbnZlcnNpb25fYnVmZmVyLAorCQkJCSAgICAgICBm aWxsZWQsIHN0YXJ0X2Nvb3JkcywgJndyaXR0ZW4pOwogCX0KICAgICB9CiB9CkBAIC00NTIsOSAr NzQwLDcgQEAgdHR5X2RyYXdfcm93X3dpdGhfbW91c2VfZmFjZSAoc3RydWN0IHdpbmRvdyAqdywg c3RydWN0IGdseXBoX3JvdyAqd2luZG93X3JvdywKICAgcm9vdF94eSAoZiwgZnJhbWVfZW5kX3gs IGZyYW1lX3ksICZyb290X2VuZF94LCAmcm9vdF95KTsKICAgc3RydWN0IGdseXBoX3JvdyAqcm9v dF9yb3cgPSBNQVRSSVhfUk9XIChyb290LT5jdXJyZW50X21hdHJpeCwgcm9vdF95KTsKIAotICAv KiBSZW1lbWJlciBjdXJyZW50IGN1cnNvciBjb29yZGluYXRlcyBzbyB0aGF0IHdlIGNhbiByZXN0 b3JlCi0gICAgIHRoZW0gYXQgdGhlIGVuZC4gICovCi0gIENPT1JEIHNhdmVfY29vcmRzID0gY3Vy c29yX2Nvb3JkczsKKyAgdzMyY29uX3NhdmVfY3Vyc29yKCk7CiAKICAgLyogSWYgdGhlIHJvb3Qg ZnJhbWUgZGlzcGxheXMgY2hpbGQgZnJhbWVzLCB3ZSBjYW5ub3QgbmFpdmVseQogICAgICB3cml0 ZSB0byB0aGUgdGVybWluYWwgd2hhdCB0aGUgd2luZG93IHRoaW5rcyBzaG91bGQgYmUgZHJhd24u CkBAIC01MDcsOSArNzkzLDcgQEAgdHR5X2RyYXdfcm93X3dpdGhfbW91c2VfZmFjZSAoc3RydWN0 IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqd2luZG93X3JvdywKIAkgICAgfQogCX0KICAg ICB9Ci0KLSAgLyogUmVzdG9yZSBjdXJzb3Igd2hlcmUgaXQgd2FzIGJlZm9yZS4gICovCi0gIHcz MmNvbl9tb3ZlX2N1cnNvciAoZiwgc2F2ZV9jb29yZHMuWSwgc2F2ZV9jb29yZHMuWCk7CisgIHcz MmNvbl9yZXN0b3JlX2N1cnNvcigpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNTIxLDcgKzgwNSw5 IEBAIHczMmNvbl9kZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKQogCiAgIHNj cm9sbF9saW5lIChmLCBuLCBMRUZUKTsKIH0KLQorLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgICAg ICAgICAgICAgICAgICAgU2V0IHVwIC8gVGVhciBkb3duCisqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogc3Rh dGljIHZvaWQKIHczMmNvbl9yZXNldF90ZXJtaW5hbF9tb2RlcyAoc3RydWN0IHRlcm1pbmFsICp0 KQpAQCAtNTU5LDkgKzg0NSwxMSBAQCB3MzJjb25fc2V0X3Rlcm1pbmFsX21vZGVzIChzdHJ1Y3Qg dGVybWluYWwgKnQpCiB7CiAgIENPTlNPTEVfQ1VSU09SX0lORk8gY2NpOwogCisgIHVzaW5nX3N5 c3RlbV9jYXJldCA9IHczMl91c2VfdmlzaWJsZV9zeXN0ZW1fY2FyZXQ7CisKICAgLyogbWFrZSBj dXJzb3IgYmlnIGFuZCB2aXNpYmxlICgxMDAgb24gV2luZG93cyA5NSBtYWtlcyBpdCBkaXNhcHBl YXIpICAqLwogICBjY2kuZHdTaXplID0gOTk7Ci0gIGNjaS5iVmlzaWJsZSA9IFRSVUU7CisgIGNj aS5iVmlzaWJsZSA9IHVzaW5nX3N5c3RlbV9jYXJldCA/IFRSVUUgOiBGQUxTRTsKICAgKHZvaWQp IFNldENvbnNvbGVDdXJzb3JJbmZvIChjdXJfc2NyZWVuLCAmY2NpKTsKIAogICBTZXRDb25zb2xl QWN0aXZlU2NyZWVuQnVmZmVyIChjdXJfc2NyZWVuKTsKQEAgLTU2OSwzMCArODU3LDczIEBAIHcz MmNvbl9zZXRfdGVybWluYWxfbW9kZXMgKHN0cnVjdCB0ZXJtaW5hbCAqdCkKICAgLyogSWYgUXVp Y2sgRWRpdCBpcyBlbmFibGVkIGZvciB0aGUgY29uc29sZSwgaXQgd2lsbCBnZXQgaW4gdGhlIHdh eQogICAgICBvZiByZWNlaXZpbmcgbW91c2UgZXZlbnRzLCBzbyB3ZSBkaXNhYmxlIGl0LiAgQnV0 IGxlYXZlIHRoZQogICAgICBJbnNlcnQgTW9kZSBhcyBpdCB3YXMgc2V0IGJ5IHRoZSB1c2VyLiAg Ki8KLSAgRFdPUkQgbmV3X2NvbnNvbGVfbW9kZQorICBEV09SRCBpbl9tb2RlCiAgICAgPSBFTkFC TEVfTU9VU0VfSU5QVVQgfCBFTkFCTEVfV0lORE9XX0lOUFVUIHwgRU5BQkxFX0VYVEVOREVEX0ZM QUdTOwogICBpZiAoKHByZXZfY29uc29sZV9tb2RlICYgRU5BQkxFX0lOU0VSVF9NT0RFKSAhPSAw KQotICAgIG5ld19jb25zb2xlX21vZGUgfD0gRU5BQkxFX0lOU0VSVF9NT0RFOwotICBTZXRDb25z b2xlTW9kZSAoa2V5Ym9hcmRfaGFuZGxlLCBuZXdfY29uc29sZV9tb2RlKTsKKyAgICBpbl9tb2Rl IHw9IEVOQUJMRV9JTlNFUlRfTU9ERTsKKyAgU2V0Q29uc29sZU1vZGUgKGtleWJvYXJkX2hhbmRs ZSwgaW5fbW9kZSk7CiAKICAgLyogSW5pdGlhbGl6ZSBpbnB1dCBtb2RlOiBpbnRlcnJ1cHRfaW5w dXQgb2ZmLCBubyBmbG93IGNvbnRyb2wsIGFsbG93CiAgICAgIDggYml0IGNoYXJhY3RlciBpbnB1 dCwgc3RhbmRhcmQgcXVpdCBjaGFyLiAgKi8KICAgRnNldF9pbnB1dF9tb2RlIChRbmlsLCBRbmls LCBtYWtlX2ZpeG51bSAoMiksIFFuaWwpOworCisgIERXT1JEIG91dF9tb2RlOworICBHZXRDb25z b2xlTW9kZSAoY3VyX3NjcmVlbiwgJm91dF9tb2RlKTsKKyAgb3V0X21vZGUgfD0gRU5BQkxFX1BS T0NFU1NFRF9PVVRQVVQ7CisgIG91dF9tb2RlIHw9IEVOQUJMRV9WSVJUVUFMX1RFUk1JTkFMX1BS T0NFU1NJTkc7CisgIG91dF9tb2RlIHw9IERJU0FCTEVfTkVXTElORV9BVVRPX1JFVFVSTjsKKyAg dzMyX3VzZV92aXJ0dWFsX3Rlcm1pbmFsX3NlcXVlbmNlcyA9IFNldENvbnNvbGVNb2RlIChjdXJf c2NyZWVuLCBvdXRfbW9kZSk7CisgIGlmICh3MzJfdXNlX3ZpcnR1YWxfdGVybWluYWxfc2VxdWVu Y2VzKQorICAgIHsKKyAgICAgIGludCBjdXJzb3Jfb2ZmX3AgPSBYV0lORE9XIChzZWxlY3RlZF93 aW5kb3cpLT5jdXJzb3Jfb2ZmX3A7CisgICAgICB0LT5kaXNwbGF5X2luZm8udHR5LT5jdXJzb3Jf aGlkZGVuID0gY3Vyc29yX29mZl9wOworICAgIH0KIH0KIAogLyogaG1tbS4uLiBwZXJoYXBzIHRo ZXNlIGxldCB1cyBicmFja2V0IHNjcmVlbiBjaGFuZ2VzIHNvIHRoYXQgd2UgY2FuIGZsdXNoCiAg ICBjbHVtcHMgcmF0aGVyIHRoYW4gb25lLWNoYXJhY3Rlci1hdC1hLXRpbWUuLi4KIAotICAgd2Un bGwgc3RhcnQgd2l0aCBub3QgbW92aW5nIHRoZSBjdXJzb3Igd2hpbGUgYW4gdXBkYXRlIGlzIGlu IHByb2dyZXNzLiAgKi8KKyAgIHdlJ2xsIHN0YXJ0IHdpdGggbm90IG1vdmluZyB0aGUgY3Vyc29y IHdoaWxlIGFuIHVwZGF0ZSBpcyBpbiBwcm9ncmVzcy4KKworICAgLi4uIGMuIDIwMjUsIFZUIHNl cXVlbmNlcyBjYW4gb25seSBiZSB3cml0dGVuIHdpdGggV3JpdGVDb25zb2xlLAorICAgcHJpbnRm LCBldGMuLCB3aGljaCBhZHZhbmNlIHRoZSBjdXJzb3IuCisqLwogc3RhdGljIHZvaWQKIHczMmNv bl91cGRhdGVfYmVnaW4gKHN0cnVjdCBmcmFtZSAqIGYpCiB7CisgIGN1cnJlbnRfdHR5ID0gRlJB TUVfVFRZIChmKTsKKworICBpZiAoIXczMl91c2VfdmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMK KyAgICAgICYmIGN1cnJlbnRfdHR5LT5UTl9tYXhfY29sb3JzID4gMTYpCisgICAgeworICAgICAg dHR5X3NldHVwX2NvbG9ycyAoY3VycmVudF90dHksIDE2KTsKKyAgICAgIHNhZmVfY2FsbG4gKFF3 MzJjb25fc2V0X3VwX2luaXRpYWxfZnJhbWVfZmFjZXMpOworICAgIH0KKyAgaWYgKHVzaW5nX3N5 c3RlbV9jYXJldCAhPSB3MzJfdXNlX3Zpc2libGVfc3lzdGVtX2NhcmV0KQorICAgIHsKKyAgICAg IGludCBwcmV2X2N1cnNvcl9oaWRkZW4gPSBjdXJyZW50X3R0eS0+Y3Vyc29yX2hpZGRlbjsKKyAg ICAgIGlmICh1c2luZ19zeXN0ZW1fY2FyZXQpCisJeworCSAgdzMyY29uX2hpZGVfY3Vyc29yICgp OworCSAgY3VycmVudF90dHktPmN1cnNvcl9oaWRkZW4gPSBwcmV2X2N1cnNvcl9oaWRkZW47CisJ fQorICAgICAgdXNpbmdfc3lzdGVtX2NhcmV0ID0gdzMyX3VzZV92aXNpYmxlX3N5c3RlbV9jYXJl dDsKKworICAgICAgaWYgKHVzaW5nX3N5c3RlbV9jYXJldCkgLyogbmVlZCB0byBzeW5jICovCisJ eworCSAgY3VycmVudF90dHktPmN1cnNvcl9oaWRkZW4gPSAhY3VycmVudF90dHktPmN1cnNvcl9o aWRkZW47CisJICBpZiAoY3VycmVudF90dHktPmN1cnNvcl9oaWRkZW4pCisJICAgIHczMmNvbl9z aG93X2N1cnNvciAoKTsKKwkgIGVsc2UKKwkgICAgdzMyY29uX2hpZGVfY3Vyc29yICgpOworCX0K KyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCiB3MzJjb25fdXBkYXRlX2VuZCAoc3RydWN0IGZyYW1l ICogZikKIHsKLSAgU2V0Q29uc29sZUN1cnNvclBvc2l0aW9uIChjdXJfc2NyZWVuLCBjdXJzb3Jf Y29vcmRzKTsKKyAgdzMyY29uX21vdmVfY3Vyc29yIChmLCBjdXJzb3JfY29vcmRzLlksIGN1cnNv cl9jb29yZHMuWCk7CiAgIGlmICghWFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KS0+Y3Vyc29yX29m Zl9wCiAgICAgICAmJiBjdXJzb3JfY29vcmRzLlggPCBGUkFNRV9DT0xTIChmKSkKICAgICB3MzJj b25fc2hvd19jdXJzb3IgKCk7CkBAIC02MjQsOCArOTU1LDYgQEAgc3lzX3RnZXRzdHIgKGNoYXIg KmNhcCwgY2hhciAqKmFyZWEpCiAJCQlzdHVicyBmcm9tIGNtLmMKICAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K IAotZXh0ZXJuIHN0cnVjdCB0dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eTsKLXN0cnVjdCB0 dHlfZGlzcGxheV9pbmZvICpjdXJyZW50X3R0eSA9IE5VTEw7CiBleHRlcm4gaW50IGNvc3Q7CiBp bnQgY29zdCA9IDA7CiAKQEAgLTY5Myw3ICsxMDIyLDYgQEAgY3Vyc29yWSAoc3RydWN0IHR0eV9k aXNwbGF5X2luZm8gKnR0eSkKIAkJCQlGYWNlcwogICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0KIC8qIFR1 cm4gYXBwZWFyYW5jZXMgb2YgZmFjZSBGQUNFX0lEIG9uIHR0eSBmcmFtZSBGIG9uLiAgKi8KIAog c3RhdGljIFdPUkQKQEAgLTcyOSw2ICsxMDU3LDEwMCBAQCB3MzJfZmFjZV9hdHRyaWJ1dGVzIChz dHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lkKQogICByZXR1cm4gY2hhcl9hdHRyOwogfQogCitz dGF0aWMgdm9pZAordHVybl9vbl9mYWNlIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBmYWNlX2lkKQor eworICBzdHJ1Y3QgZmFjZSAqZmFjZSA9IEZBQ0VfRlJPTV9JRCAoZiwgZmFjZV9pZCk7CisgIHN0 cnVjdCB0dHlfZGlzcGxheV9pbmZvICp0dHkgPSBGUkFNRV9UVFkgKGYpOworICB1bnNpZ25lZCBs b25nIGZnID0gZmFjZS0+Zm9yZWdyb3VuZDsKKyAgdW5zaWduZWQgbG9uZyBiZyA9IGZhY2UtPmJh Y2tncm91bmQ7CisKKyAgLyogaWYgZWl0aGVyIG91dCBvZiByYW5nZSwgc2V0IGJvdGggdG8gdmFs dWVzIHJldHJpZXZlZCBmcm9tIHRlcm1pbmFsICovCisgIGlmIChERUZBVUxUUCAoZmcpKSBmZyA9 IGZnX25vcm1hbDsKKyAgaWYgKERFRkFVTFRQIChiZykpIGJnID0gYmdfbm9ybWFsOworCisgIC8q IGNvbnN0cnVjdCBjb21iaW5lZCBWVCBzZXF1ZW5jZSBmb3IgZmFjZSBhdHRyaWJ1dGVzICovCisg IERXT1JEIG4gPSAwOworICBzaXplX3Qgc3ogPSBTRVFNQVg7CisgIGNoYXIgc2VxW3N6XTsKKyAg c3otLTsKKworICBpZiAoZmFjZS0+dHR5X2JvbGRfcCkKKyAgICBTU1BSSU5URiAoc2VxLCAmbiwg c3osIHR0eS0+VFNfZW50ZXJfYm9sZF9tb2RlLCBOVUxMKTsKKyAgaWYgKGZhY2UtPnR0eV9pdGFs aWNfcCkKKyAgICBTU1BSSU5URiAoc2VxLCAmbiwgc3osIHR0eS0+VFNfZW50ZXJfaXRhbGljX21v ZGUsIE5VTEwpOworICBpZiAoZmFjZS0+dHR5X3N0cmlrZV90aHJvdWdoX3ApCisgICAgU1NQUklO VEYgKHNlcSwgJm4sIHN6LCB0dHktPlRTX2VudGVyX3N0cmlrZV90aHJvdWdoX21vZGUsIE5VTEwp OworICBpZiAoZmFjZS0+dW5kZXJsaW5lICE9IDApCisgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6 LCB0dHktPlRTX2VudGVyX3VuZGVybGluZV9tb2RlLCBOVUxMKTsKKyAgLyogTm90ZTogdGhlIHZh bHVlcyBvZiBmZyBhbmQgYmcgYXJlIGFscmVhZHkgc3dhcHBlZCB3aGVuIGZnIGFuZCBiZyBhcmUK KyAgICAgc2V0IGFuZCBmYWNlLT50dHlfcmV2ZXJzZV9wLiBBZGRpbmcgdGhlIHRlcm1pbmFsIHNl cXVlbmNlIGNvbnRhaW5lZAorICAgICBpbiB0dHktPlRTX2VudGVyX3JldmVyc2VfbW9kZSBzd2Fw cyB0aGVtIGJhY2ssIHdoaWNoIGlzIG5vIGdvb2QuICovCisKKyAgY29uc3QgY2hhciAqc2V0X2Zn ID0gdHR5LT5UU19zZXRfZm9yZWdyb3VuZDsKKyAgY29uc3QgY2hhciAqc2V0X2JnID0gdHR5LT5U U19zZXRfYmFja2dyb3VuZDsKKyAgaWYgKHR0eS0+VE5fbWF4X2NvbG9ycyA9PSA4ICB8fAorICAg ICAgdHR5LT5UTl9tYXhfY29sb3JzID09IDE2IHx8CisgICAgICB0dHktPlROX21heF9jb2xvcnMg PT0gMjU2KQorICAgIHsKKyAgICAgIC8qIGluZGljZXMgaW50byBNaWNyb3NvZnQtZGVmaW5lZCBj b2xvcnMgKHNlZSBsaW5rIGF0IHRvcCkgKi8KKyAgICAgIHVuc2lnbmVkIGxvbmcgZmdpID0gMCwg YmdpID0gMDsKKworICAgICAgZmdpID0gKGZnID49IDAgICYmIGZnIDwgOCkgICA/IGZnICsgMzAK Kwk6ICAgKGZnID49IDggICYmIGZnIDwgMTYpICA/IGZnIC0gOCArIDkwCisJOiAgIChmZyA+PSAx NiAmJiBmZyA8IDI1NikgPyBmZworCTogMDsKKyAgICAgIGlmIChmZ2kpCisJU1NQUklOVEYgKHNl cSwgJm4sIHN6LCBzZXRfZmcsIGZnaSk7CisKKyAgICAgIGJnaSA9IChiZyA+PSAwICAmJiBiZyA8 IDgpICAgPyBiZyArIDQwCisJOiAgIChiZyA+PSA4ICAmJiBiZyA8IDE2KSAgPyBiZyAtIDggKyAx MDAKKwk6ICAgKGJnID49IDE2ICYmIGJnIDwgMjU2KSA/IGJnCisJOiAwOworICAgICAgaWYgKGJn aSkKKwlTU1BSSU5URiAoc2VxLCAmbiwgc3osIHNldF9iZywgYmdpKTsKKyAgICB9CisgIGVsc2Ug aWYgKHR0eS0+VE5fbWF4X2NvbG9ycyA9PSAxNjc3NzIxNikKKyAgICB7CisgICAgICAvKiBuZWVk IHRvIGNvbnZlcnQgZGVmYXVsdGVkIHZhbHVlcyB0byBwaXhlbCBpbmRpY2VzICovCisgICAgICBp ZiAoZmcgPT0gZmdfbm9ybWFsKSBmZyA9IGdldF9waXhlbChmZyk7CisgICAgICBpZiAoYmcgPT0g Ymdfbm9ybWFsKSBiZyA9IGdldF9waXhlbChiZyk7CisKKyAgICAgIC8qIGZnIGFuZCBiZyBhcmUg cGl4ZWwgdmFsdWVzIC0gZGVjb21wb3NlIHRvIHJnYiB0cmlwbGVzICovCisgICAgICB1bnNpZ25l ZCBsb25nIHJmID0gZmcvNjU1MzYsIGdmID0gKGZnLzI1NikmMjU1LCBiZiA9IGZnJjI1NTsKKyAg ICAgIHVuc2lnbmVkIGxvbmcgcmIgPSBiZy82NTUzNiwgZ2IgPSAoYmcvMjU2KSYyNTUsIGJiID0g YmcmMjU1OworICAgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfZmcsIHJmLCBnZiwgYmYp OworICAgICAgU1NQUklOVEYgKHNlcSwgJm4sIHN6LCBzZXRfYmcsIHJiLCBnYiwgYmIpOworICAg IH0KKyAgdzMyY29uX3dyaXRlX3Z0X3NlcSAoc2VxKTsKK30KKworc3RhdGljIHZvaWQKK3R1cm5f b2ZmX2ZhY2UgKHN0cnVjdCBmcmFtZSAqZiwgaW50IGZhY2VfaWQpCit7CisgIHN0cnVjdCB0dHlf ZGlzcGxheV9pbmZvICp0dHkgPSBGUkFNRV9UVFkgKGYpOworICB3MzJjb25fd3JpdGVfdnRfc2Vx ICh0dHktPlRTX2V4aXRfYXR0cmlidXRlX21vZGUpOworfQorCisvKiByZXR1cm5zIHRoZSBwaXhl bCB2YWx1ZSBmb3IgdGhlIGdpdmVuIGluZGV4IGludG8gVlQgYmFzZSBjb2xvciBtYXAgKi8KK3N0 YXRpYyB1bnNpZ25lZCBsb25nIHBpeGVsX2NhY2hlWzE2XTsKK3N0YXRpYyB1bnNpZ25lZCBsb25n CitnZXRfcGl4ZWwgKHVuc2lnbmVkIGxvbmcgaW5kZXgpCit7CisgIHVuc2lnbmVkIGludCBpID0g KHVuc2lnbmVkIGludCkgaW5kZXg7CisgIGlmIChpID4gMTUpIHJldHVybiAwOworICBpZiAoaSA9 PSAwIHx8IHBpeGVsX2NhY2hlW2ldID4gMCkKKyAgICByZXR1cm4gcGl4ZWxfY2FjaGVbaV07CisK KyAgTGlzcF9PYmplY3QgcGl4ID0gc2FmZV9jYWxsbiAoUXczMmNvbl9nZXRfcGl4ZWwsIG1ha2Vf dWZpeG51bSAoaSkpOworICBwaXhlbF9jYWNoZVtpXSA9ICh1bnNpZ25lZCBsb25nKSBYVUZJWE5V TSAocGl4KTsKKyAgcmV0dXJuIHBpeGVsX2NhY2hlW2ldOworfQorCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6YXRpb24KKyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCiAvKiBUaGUgSU1FIHdpbmRvdyBpcyBuZWVkZWQgdG8gcmVjZWl2ZSB0aGUgc2Vzc2lv biBub3RpZmljYXRpb25zCiAgICByZXF1aXJlZCB0byByZXNldCB0aGUgbG93IGxldmVsIGtleWJv YXJkIGhvb2sgc3RhdGUuICAqLwogCkBAIC04MzQsNyArMTI1Niw3IEBAIGluaXRpYWxpemVfdzMy X2Rpc3BsYXkgKHN0cnVjdCB0ZXJtaW5hbCAqdGVybSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQp CiAJR2V0Q29uc29sZVNjcmVlbkJ1ZmZlckluZm8gKGN1cl9zY3JlZW4sICZpbmZvKTsKIAogCS8q IFNocmluayB0aGUgd2luZG93IGZpcnN0LCBzbyB0aGUgYnVmZmVyIGRpbWVuc2lvbnMgY2FuIGJl Ci0gICAgICAgICAgIHJlZHVjZWQgaWYgbmVjZXNzYXJ5LiAgKi8KKwkgICByZWR1Y2VkIGlmIG5l Y2Vzc2FyeS4gICovCiAJbmV3X3dpbl9kaW1zLlRvcCA9IDA7CiAJbmV3X3dpbl9kaW1zLkxlZnQg PSAwOwogCW5ld193aW5fZGltcy5Cb3R0b20gPSBtaW4gKG5ld19zaXplLlksIGluZm8uZHdTaXpl LlkpIC0gMTsKQEAgLTg0OSw2ICsxMjcxLDcgQEAgaW5pdGlhbGl6ZV93MzJfZGlzcGxheSAoc3Ry dWN0IHRlcm1pbmFsICp0ZXJtLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCkKIAluZXdfd2luX2Rp bXMuQm90dG9tID0gbmV3X3NpemUuWSAtIDE7CiAJbmV3X3dpbl9kaW1zLlJpZ2h0ID0gbmV3X3Np emUuWCAtIDE7CiAJU2V0Q29uc29sZVdpbmRvd0luZm8gKGN1cl9zY3JlZW4sIFRSVUUsICZuZXdf d2luX2RpbXMpOworCiAgICAgICB9CiAgIH0KIApAQCAtODYxLDYgKzEyODQsOCBAQCBpbml0aWFs aXplX3czMl9kaXNwbGF5IChzdHJ1Y3QgdGVybWluYWwgKnRlcm0sIGludCAqd2lkdGgsIGludCAq aGVpZ2h0KQogICAgIH0KIAogICBjaGFyX2F0dHJfbm9ybWFsID0gaW5mby53QXR0cmlidXRlczsK KyAgZmdfbm9ybWFsID0gY2hhcl9hdHRyX25vcm1hbCAmIDB4MDAwZjsKKyAgYmdfbm9ybWFsID0g KGNoYXJfYXR0cl9ub3JtYWwgPj4gNCkgJiAweDAwMGY7CiAKICAgLyogRGV0ZXJtaW5lIGlmIHRo ZSBpbmZvIHJldHVybmVkIGJ5IEdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvCiAgICAgIGlzIHJl YWxpc3RpYy4gIE9sZCBNUyBUZWxuZXQgc2VydmVycyB1c2VkIHRvIG9ubHkgZmlsbCBvdXQKQEAg LTkxNywxMyArMTM0MiwyMSBAQCBpbml0aWFsaXplX3czMl9kaXNwbGF5IChzdHJ1Y3QgdGVybWlu YWwgKnRlcm0sIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQogfQogCiAKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3AgSW50ZXJmYWNlCisqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKworLyogVE9ETyAtIG1pZ3JhdGUgdG8gVlQgc2VxdWVuY2VzICgyNTYgYW5kIDI0Yml0 IGNvbG9yKSAqLwogREVGVU4gKCJzZXQtc2NyZWVuLWNvbG9yIiwgRnNldF9zY3JlZW5fY29sb3Is IFNzZXRfc2NyZWVuX2NvbG9yLCAyLCAyLCAwLAogICAgICAgIGRvYzogLyogU2V0IHNjcmVlbiBm b3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KIAogQXJndW1lbnRzIHNob3VsZCBiZSBp bmRpY2VzIGJldHdlZW4gMCBhbmQgMTUsIHNlZSB3MzJjb25zb2xlLmVsLiAgKi8pCiAgIChMaXNw X09iamVjdCBmb3JlZ3JvdW5kLCBMaXNwX09iamVjdCBiYWNrZ3JvdW5kKQogewotICBjaGFyX2F0 dHJfbm9ybWFsID0gWEZJWE5BVCAoZm9yZWdyb3VuZCkgKyAoWEZJWE5BVCAoYmFja2dyb3VuZCkg PDwgNCk7CisKKyAgZmdfbm9ybWFsID0gWEZJWE5BVCAoZm9yZWdyb3VuZCk7CisgIGJnX25vcm1h bCA9IFhGSVhOQVQgKGJhY2tncm91bmQpOworICBjaGFyX2F0dHJfbm9ybWFsID0gZmdfbm9ybWFs ICsgKGJnX25vcm1hbCA8PCA0KTsKIAogICBGcmVjZW50ZXIgKFFuaWwsIFF0KTsKICAgcmV0dXJu IFF0OwpAQCAtOTM3LDggKzEzNzAsOCBAQCBTZWUgdzMyY29uc29sZS5lbCBhbmQgYHR0eS1kZWZp bmVkLWNvbG9yLWFsaXN0JyBmb3IgbWFwcGluZyBvZiBpbmRpY2VzCiB0byBjb2xvcnMuICAqLykK ICAgKHZvaWQpCiB7Ci0gIHJldHVybiBGY29ucyAobWFrZV9maXhudW0gKGNoYXJfYXR0cl9ub3Jt YWwgJiAweDAwMGYpLAotCQlGY29ucyAobWFrZV9maXhudW0gKChjaGFyX2F0dHJfbm9ybWFsID4+ IDQpICYgMHgwMDBmKSwgUW5pbCkpOworICByZXR1cm4gRmNvbnMgKG1ha2VfZml4bnVtIChmZ19u b3JtYWwpLAorCQlGY29ucyAobWFrZV9maXhudW0gKGJnX25vcm1hbCksIFFuaWwpKTsKIH0KIAog REVGVU4gKCJzZXQtY3Vyc29yLXNpemUiLCBGc2V0X2N1cnNvcl9zaXplLCBTc2V0X2N1cnNvcl9z aXplLCAxLCAxLCAwLApAQCAtOTU3LDE1ICsxMzkwLDMyIEBAIHZvaWQKIHN5bXNfb2ZfbnR0ZXJt ICh2b2lkKQogewogICBERUZWQVJfQk9PTCAoInczMi11c2UtZnVsbC1zY3JlZW4tYnVmZmVyIiwK LSAgICAgICAgICAgICAgIHczMl91c2VfZnVsbF9zY3JlZW5fYnVmZmVyLAotCSAgICAgICBkb2M6 IC8qIE5vbi1uaWwgbWVhbnMgbWFrZSB0ZXJtaW5hbCBmcmFtZXMgdXNlIHRoZSBmdWxsIHNjcmVl biBidWZmZXIgZGltZW5zaW9ucy4KKwkJdzMyX3VzZV9mdWxsX3NjcmVlbl9idWZmZXIsCisJCWRv YzogLyogTm9uLW5pbCBtZWFucyBtYWtlIHRlcm1pbmFsIGZyYW1lcyB1c2UgdGhlIGZ1bGwgc2Ny ZWVuIGJ1ZmZlciBkaW1lbnNpb25zLgogVGhpcyBpcyBkZXNpcmFibGUgd2hlbiBydW5uaW5nIEVt YWNzIG92ZXIgdGVsbmV0LgogQSB2YWx1ZSBvZiBuaWwgbWVhbnMgdXNlIHRoZSBjdXJyZW50IGNv bnNvbGUgd2luZG93IGRpbWVuc2lvbnM7IHRoaXMKIG1heSBiZSBwcmVmZXJhYmxlIHdoZW4gd29y a2luZyBkaXJlY3RseSBhdCB0aGUgY29uc29sZSB3aXRoIGEgbGFyZ2UKIHNjcm9sbC1iYWNrIGJ1 ZmZlci4gICovKTsKICAgdzMyX3VzZV9mdWxsX3NjcmVlbl9idWZmZXIgPSAwOwogCisgIERFRlZB Ul9CT09MICgidzMyLXVzZS12aXJ0dWFsLXRlcm1pbmFsLXNlcXVlbmNlcyIsCisJCXczMl91c2Vf dmlydHVhbF90ZXJtaW5hbF9zZXF1ZW5jZXMsCisJCWRvYzogLyogSWYgbm9uLW5pbCB3MzIgY29u c29sZSB1c2VzIHRlcm1pbmFsIHNlcXVlbmNlcyBmb3Igc29tZSBvdXRwdXQgcHJvY2Vzc2luZy4K K1RoaXMgdmFyaWFibGUgaXMgc2V0IGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdGhlIGNhcGFiaWxp dGllcyBvZiB0aGUgdGVybWluYWwuCitJdCBkZXRlcm1pbmVzIHRoZSBudW1iZXIgYW5kIGluZGlj ZXMgb2YgY29sb3JzIHVzZWQgZm9yIGZhY2VzIGluIHRoZSB0ZXJtaW5hbC4KK0lmIHRoZSB0ZXJt aW5hbCBjYW5ub3QgaGFuZGxlIFZUIHNlcXVlbmNlcywgdGhlIHVwZGF0ZSBob29rIHRyaWdnZXJz IHJlY29tcHV0YXRpb24gb2YgZmFjZXMuCitTZWUgYHczMmNvbi1zZXQtdXAtaW5pdGlhbC1mcmFt ZS1mYWNlcycsIHdoaWNoIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgc2V0dGluZyB0aGlzIHZhcmlh YmxlCittYW51YWxseSBpbiBhIHJ1bm5pbmcgc2Vzc2lvbi4gKi8pOworICB3MzJfdXNlX3ZpcnR1 YWxfdGVybWluYWxfc2VxdWVuY2VzID0gMDsKKworICBERUZTWU0gKFF3MzJjb25fc2V0X3VwX2lu aXRpYWxfZnJhbWVfZmFjZXMsCisJICAidzMyY29uLXNldC11cC1pbml0aWFsLWZyYW1lLWZhY2Vz Iik7CisKKyAgREVGU1lNIChRdzMyY29uX2dldF9waXhlbCwKKwkgICJ3MzJjb24tZ2V0LXBpeGVs Iik7CisKICAgZGVmc3ViciAoJlNzZXRfc2NyZWVuX2NvbG9yKTsKICAgZGVmc3ViciAoJlNnZXRf c2NyZWVuX2NvbG9yKTsKICAgZGVmc3ViciAoJlNzZXRfY3Vyc29yX3NpemUpOworCiB9CmRpZmYg LS1naXQgYS9zcmMveGRpc3AuYyBiL3NyYy94ZGlzcC5jCmluZGV4IGFlZjQwYzM4ZTU0Li5kYzdm NDJiOThiYSAxMDA2NDQKLS0tIGEvc3JjL3hkaXNwLmMKKysrIGIvc3JjL3hkaXNwLmMKQEAgLTE3 MjM5LDggKzE3MjM5LDcgQEAgcmVkaXNwbGF5X2ludGVybmFsICh2b2lkKQogCSAgICAgYXJlYSwg ZGlzcGxheWluZyBhIGRpZmZlcmVudCBmcmFtZSBtZWFucyByZWRpc3BsYXkgdGhlCiAJICAgICB3 aG9sZSB0aGluZy4gICovCiAJICBTRVRfRlJBTUVfR0FSQkFHRUQgKHNmKTsKLSNpZiAhZGVmaW5l ZCBET1NfTlQgJiYgIWRlZmluZWQgSEFWRV9BTkRST0lECisjaWYgIWRlZmluZWQgTVNET1MgJiYg IWRlZmluZWQgSEFWRV9BTkRST0lECiAJICBzZXRfdHR5X2NvbG9yX21vZGUgKEZSQU1FX1RUWSAo c2YpLCBzZik7CiAjZW5kaWYKIAl9Ci0tCjIuNDkuMAoK --b1=_FjlyCkqGaQMWm46b5fgUbHvmiiXmASK9vYFNKBzcw-- From debbugs-submit-bounces@debbugs.gnu.org Sat Sep 06 05:47:42 2025 Received: (at 79298) by debbugs.gnu.org; 6 Sep 2025 09:47:42 +0000 Received: from localhost ([127.0.0.1]:34501 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uupWH-0001hO-Pb for submit@debbugs.gnu.org; Sat, 06 Sep 2025 05:47:42 -0400 Received: from mout.gmx.net ([212.227.17.21]:38353) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uupWC-0001h1-Ta for 79298@debbugs.gnu.org; Sat, 06 Sep 2025 05:47:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1757152047; x=1757756847; i=michael.albinus@gmx.de; bh=q+Y+2zYkPvR/17ezGFSaN0GXhkUr0CLGPBkCO3vmhPg=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date: Message-ID:MIME-Version:Content-Type:cc:content-transfer-encoding: content-type:date:from:message-id:mime-version:reply-to:subject: to; b=Q+C2/g5eR/xYyWceUmO9xIMVADADFlEW0NQktufXMhPyKQlTPXha7GResf9lkblz RH6rIiZUoqJAdKD4ZaNhzocK0pSynPkC35oBHk4uIfSwnuD4CO/bNXdWB1RYxeAr6 JsXo4ROsvDC0j4SZOQVZtCDDf8NfVtTc9CFznb/ej6wK9q+5B7HJsTPBpBpWKt3dm NWh/wkIka/UChS/XVt7rpp6U0SIDs7ErA63JqNuiiSQ38qjQy9wUDzSal3NF9YnFj Pfx+uVNCSbxdKc5sW4oD8cifDJhJ6h70m7G7rnZUIUfdBrSL0zKg4b5LnzClBVnOA ImnJvhW8EYu0FMHXvw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from gandalf.gmx.de ([185.89.37.61]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MVeI8-1v2dYJ3DPw-00ROH0; Sat, 06 Sep 2025 11:47:27 +0200 From: Michael Albinus To: Ewan Subject: Re: bug#79298: patch: full color in windows terminal In-Reply-To: References: <86jz2ekew5.fsf@gnu.org> <868qiuk9jr.fsf@gnu.org> <864itijzmd.fsf@gnu.org> <87qzwk2g8h.fsf@gmx.de> Date: Sat, 06 Sep 2025 11:47:26 +0200 Message-ID: <87ikhv3ob5.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:fbs/GK4Uj24NtUFkzelhmi0tSlmX71q+QfqdzTdnVvAE0sHpz+D ccWqu3OC6uFaRIockpWSQ/zzlYMA3gOFUaDxQJvoGyMgFqJmPfdBrBw3pUday/vkUeHYBl1 rsxaE/mJu+oNkNnMA9yNwPpUnCQTF1PapDem2RqjrmxLyb4/ssBc0ONdn4lN5xF4u8Q8mhK rObFZjL1/ALyBjwyDEYWQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:no+sis6UC48=;Ys6TloxPFOhzP9mh/tmikNmSTxK QqD5xt95LpyH2+y19OFMcpoxzU9IFKK4F6J43qNQZysYfo9OoQCFTCd9IfaGBQOBLPPRHkwm5 qLqitEIU9cQ6GNlwW1VbLo2YIxE0ZfGMSEwsCw4wvfQXWfeS5vbZdD0fu9F2Xbp+UFRW9f20I tocx+MFSLBIQ1th3AxGkYZpA0D7fm8rRgQV/ELvCeTa+F9PPTNsJC87pVufYyuu7E2j9GkKf1 HNT3H4tRQrnV787h2ZvxyvBIR92v2iXZw+f6lYfpavPAADI5+MT4irqxpqVYjSyVe9d/f/UZz uEqCUf/d/KEGkYQ7J/6JJBaYDYD1xxCt+BIJiYGS/4qJu0gsMWzA27prbGzlUlA6kSG6NWSIa NPWiIHi9Gml/2r1VpygwL2ZCpOLG+1/C4sQCbImzcCQAOtzYMVgBVh+W3ee76uICHbJqzDwKc kXidpbggwtkF1br9uJRFQc60gM8gb5hy4kuavMu+oOGG3MFdmWcpAynjXxZTdVpNOjGCT/YgC tqbZz/++A5sE4x+vVaSsSb5wexfr05/R3fwY2nWSZL03KPOO4dcHxyj15qmh2NxqIR4Imn4md r95GE6AhfqXb/YAXkNhU45tK4TXxT913sfJIh5j8erUVVcuB3NcwFh6W6Fr5iB4PZh98fvBNX nBBEaKn2ynlypT1WLyC69aW5ZKEk+B7NViQ4vaHdmK/dij88awMFGwv9Dyosv0KWuk2L94Iz+ 0GY01xY//HKJiwx001THut1xbMdu0rRbuNZvw8WwBETFhWa9erBAtIetnm9tdtREmNcCLi8KZ 9/BoXFk6hDHpqklNn2kz/y8zHQYsfBLgphdeNA7TUvz3HKT+SZ/g2jXMbu0r4bjNYB+AO8cgL p6vuOAK+H8Y+jJIMDT/zhzZ1D8pZKy5kzf4Fuh3AJj+q/phfYk2u/IfhAy7HVgqNIPMs5kuNJ h+kaYYm2PaP931x2S7tzAZ2zWicKPk3A3i7Swtxn5/91N2tsrxUA5v4qj7+V0DWC5qFg02Ax/ fQZA6kaU94HKQ1zRY/rDRr/mG0BJuN9k3JwWB6MgNIhjaBLAvFoC1ZWtPKF4ANTBrZEUy1r7f Fap5hiyDAPAPkk4xXTNLWwmeD99FF+T+fbI0tY/NyLX3YPM/UUfG68U6qrxU8/tnumt383vhR q8xzMJslBX/Z8WI53I7wicC9V81qTqka9Xw3K2Ix6zXyMvFY6nlIT49jZtY/oCbYbfDpmJWbN tHG9sKJkIaPn+MxiqugngN4WX738fBUEu9yCRev+Qhj450Ae0C79oMcno0eivxU/LLMI/dRBn zv3Aps9OjxAvgannsk2axBivmqpXT314eS/TqlFi4Al5JmdFaguaIAgVRNZoGVpjLA/j82UKP XZCSseS9DlgsFhUapiCOSfe1b0Sjq7vkgvWBVafB/uMovESYxIPG9XLLThFPiNms8la0I1acK Ppt7NryoLUcox20LWg9ThYdGsVxnxAlCqn9eQizfeccSArW7WwkQHrTdS4p/ELAaE45rzMOCj C6V8pVGuVHfeQ9UBq+zTqC1EI7/nqkGm/30ThKv946TRZ587ccfJlRDX9beZ9oiGnriNy6EtF kZvCfiM87Pr7Z2elA5gyGvqeTQucd3CZ341nEwoehn5tAiKAP/PkctEBd319b89PgRT6QVLPb zJ31zgsTLSto0Rhd8UAItamGI4oTcWnv9y0kx32jrlzhDcBTwzwajKbRfiSgI0TWfL00FVdvq b+Bdo3mXH10+rfIoGSaV4B+CAPsvtzRvuME6ECmzpi8jB2ADcxJcI/ZIj4rY3IUzYb4H7LWH9 vwVPobjZmvjkbB8UoR2KiQnmaC7ovIbYaqphqtc8H9aHenzC1r/r5vx5shh4BTGu9wguQJ51E qYZ+9zAxHlTkuaOxFfxOH6JfrYIofYgiNiMdwTQ0kQEedL4Nq8Z4HJjR8DijPnkm8WPpkSgsj tQM2SelULghKrGj0r3kJo8MfSpfHq4Q9khBsoeoM0gg1z4cb7xFiuXZFhiBmFhomjUICvaXCw pRLzjIwvCv0wZFjveKUvJM+36cknPJTZgIqjCtJxkfgSKOphuxwnSljOyBvIEEcyRwxzKVLwY 9H9hf/BnPHIeCItqqiCL/HjdtQS3y6G5pp6NcuIug1GrqkMVMS3O4ocHkNeEy1JBP1RvoSE7x WQw9PENnNfbYix9/wi7sduUIEA2nKCXNZMKsRVrIITux/sNMV2puJw/VPhXLIr6BVMeKncctt JX0In/rPiJME8aIZBPut/v3t0JPRwBtLIdVSlb+ieO9gtiTTUXfwvFT/Yf2BP9FM7cfxYsIVc 5dng9IUtmH5eJ0UIFlnUDxUtvkOORgnK5LhLyxGv7q7EgkWLaxI5A6wh0utEOY/CO+kQSv5z8 uzlOmsSj/1RSzty7V4PjPyZYBnTsnjwIg/qDbQp7gVR3lreEC2sBLA8XdWhaHeUV6EVMkBAR3 xj0Y1ezQVHEVhs5CybwQHxZPlO/J8VR1/cPanaeqZ0mgpX/CED/6yClifvzIKj08tzHQR0H0B 43W7+7dMZu7uhAjmRmRV+NIFjFqH4GAUXsaHeP4Eb+2w2L1wBRL5ocyxO4ZYDvcpl7dZwfjy/ 3BMFNpKRZzEMaXhhZIee9xr/GCT49s5PWq1uqQSR0XvtSI/CTC1+iBaAAcbeSnZeBQxqedsuH dN9FKT5/uGQN42FMWNj807tJT1iruQzsCTJymGR5zJc+bnSMiPlTjRni+2qhKi8WFNPbBE714 DrBKBKdO17tu8Alvq2ZutIzuBYosMKHaTwP/FkqDCjyenplx0KLjDzyfWO6U7szYkMP8wklNj 8Kq+jBezy+Z6I2QdJRaN098jO4hU0qRmbXZ1TZQepSPg3MvAUBhYCO2rKc0+h2j/8tFnwvnm2 +NXwrWFxpiGPy8Xo4EhUNOgWcTQsW0w1+sX7u+X4HIn2JGRlqy42Xkuaf14EsEYW+xAyPQLEU yjtzXL0l0ho1Hkzy/v5tFnjMiHpldn+mogMsmZwWfYBte+sqW8oHhuMgb9nFxRUxFw+abQGfL Cbljq9s2exr9T/3u2MbBeGu44Ako0R7Cq80pT3Xvra+DOMhgijzI/j5gtIXTFrIMmOKffcawj o+EVAGxV8BvnHRDxeXGJCyQYBE7Y3Tc3zpmJDIO7+QVRSIZx/hwVi7QKg3RTuayuJVADcUiBD XeYC3Ca9B6hwsL/u3t+NEOvyVhTdFdxbPfX/9jllWX8rWw3xi5iDIU3fP/rUCBl9iPidQq5vS 9UgIZuWJdAojSp02NV/EYJbGPegCsvnJkgToFJLft9sK2VdK9ydfIO203hJYnWeWlL7ZeSr/x C7RosaRCCuxH0D7NVCm50uo/1frELuNUqrucbKZDuq5cqerohFWZ95DC5Mlfd64sBynMQJ+OL oH+Yzj98nXvQUjhRVUKs1AXFMRma6bXBtGgVBEP91DAxkkoY/52WYwPMaELmdXIlTrEHD6LvR Alu07H9gY5EKv+nYznTXudaQ3mIaderWLwtML4TVzrOlqb4qs3FqFK+22NsnreIKLtQnO0SuY WY5W5/7vNfIF30kwr19m10j6jtdTGRb6t0VUlUggQztnBYwBxsrf4mYM51ZbALu32E+n5dtqo AwiQB/jbXl06gSxApbY4atYa5HfZRMLXGumWx+/gE9eqJVmC3TxPYeMfqAXp2SQ0sPkndxT6r fj3Mt7iqRYe5YN9TpEX01BW2LBq8bJ9Q+qMHlqy2jF+Gfy6Ba/8TdG0FMiQilllub5DBuWOmB 9xqmD9N6YJORzcYYpF8LvV44ihB2NJ/G9ACdCo1ZOQDYqyB4PZkZvpo6EicVdzcDlGlRbd34M oddlt5mgkddyeoOrUdTmSKbQfFJmdZPubU3cHQXgKxe7TJ53Jul62HkaZDKUnJqxzONx1O0We 5/XVXnHnDqIuoXrA7y15IpSE7s/lHGVQ3DD865tOV1A2Y4W/NG5dQ7jqYFO2hniHqMr5M+THz niAybm4ulzJi6pHP5G6v7/3a5koe2RAv044F3FSSAZ9qE6YMyI8/kT0GK2Kic/eV1EFs4azWf gsLcE+MCT2fzWwkXSgDsCv1rEc4y9+tQsOjnJT1byLdROzjlvT3v7RNGCgtB9FqwAf4enBbxp XWkP+HH2AzEPrWL+F2hYkadMtXggIA9NBAQK/gfX/ZaYYZ6iGWxujq9KWBkW33C9mf0KEgCKZ dqd8aWi/6dFsC7+nKy2EaURcYgYe+kXtuBb/o0+KOCRwrbvxu0AQ46QzleoMqNk0Q9MYTzx66 zfpziaer1ZzGJ/rVPWOfTI4wIf7MsZcjm6aI+pVEWi2HC+IIoLAJY99X5oL48zcUsodhGFfHD hcM0kWaazen1F8HKasf3WB+DwrkvC7uWzSjNnOl0YZpB5C2Reqqh0CCGMZIKyR05ARUS6Z418 941AWkp38JdYCVSApdDbVVG73MjMtuXz0orDKeOKTaeAtqYvKqsgjncZvrotcRvYEGf4kjbQ5 USPoli1G48IdI4T3n8+nMBXfvKuGgLP2rTxqjlkGcPjhrMLJFhGl0N5dKfTKIPx3N8Wpdx3wv FuQErFKsFw+vEPSazytPz59yr9wSUNiDHijeWKsRig1XdATE8PlHmfpD1lBLX/TgJ0ntKja5X gF0kt6COcg3WDmWpjn8dve6ueUwFB2+vthhCsx78fckVVUtkqR5XZtlvbBmsJ+nQwaY7Q8iUp Fbibt9L/3lK/FnPlwA58ARabk8zqLQkGmkDbZESoGqMLGS4mOjzwWLbKu/MF/3HszkUr+McEn 2X5AlRryhB3oamBhatD4lbuYWSnYYgWKopvZK8k5+0B7LkI+kEGvi/xafOxwEI= X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 79298 Cc: Eli Zaretskii , 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ewan writes: Hi, Another nitpick: > -draws its own cursor to indicate the position of point. A > +draws its own cursor to indicate the position of point. A Please use always two spaces after a period, which finishes a sentence. Everywhere in doc and comments. (You don't need to show new versions of the patches just because of this.) Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 14 08:04:19 2025 Received: (at 79298) by debbugs.gnu.org; 14 Sep 2025 12:04:19 +0000 Received: from localhost ([127.0.0.1]:60757 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1uxlSo-0005La-RG for submit@debbugs.gnu.org; Sun, 14 Sep 2025 08:04:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41162) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1uxlSg-0005KY-CY for 79298@debbugs.gnu.org; Sun, 14 Sep 2025 08:04:09 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uxlSY-00059f-DV; Sun, 14 Sep 2025 08:03:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=LkL6ZrjmR5VeMobyYQztm00bIPVrO4wU+wxERklDDDE=; b=PcyTzs8yQFWf fThGJuuRuuHwdE5p+Bh9La+FOqACyMMAUxOjspygrHQ1xTS+2TQxt0NcD+yP5PFmL+DMEkpLVFyRn sX6F4lajcW5Qj6IYo677mFttyNAh+LO/xahyXhZqZoCXjXfahpQzL+0iZnk0iXDNlhtfrkmO8/KCw qlnmYr7sujiZXXd1tYZIgyRl1szROVhwzhm0Dl+PEve+90vswiqjLm6zJzlo9z89ZcIrPezq/axVn UoNvl3lzXkyg6x/DaCt/NWA2zOlixlG+GdkutwHxJ9/qBDUOveSL5OHmNH6ctB8VmwxsRxzGN9720 Uib71RZluv76g569znci1w==; Date: Sun, 14 Sep 2025 15:03:52 +0300 Message-Id: <86wm61nsuv.fsf@gnu.org> From: Eli Zaretskii To: Ewan In-Reply-To: (message from Ewan on Sat, 06 Sep 2025 09:19:40 +0000) Subject: Re: bug#79298: patch: full color in windows terminal References: <86jz2ekew5.fsf@gnu.org> <868qiuk9jr.fsf@gnu.org> <864itijzmd.fsf@gnu.org> <87qzwk2g8h.fsf@gmx.de> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 79298 Cc: 79298@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 06 Sep 2025 09:19:40 +0000 > From: Ewan > Cc: Eli Zaretskii , 79298@debbugs.gnu.org > > > I might be wrong, but I believe the change is for master (Emacs > > 31.1). So pls modify etc/NEWS instead of etc/NEWS.30. > > Ahh, thank you - updated patches attached. > > ...-minimal: system cursor, VT sequences just for color. > ...-full: system or Emacs-drawn cursor, complete migration to VT sequences. Thanks. For now, let's focus on the "minimal" patch only. I'm also ignoring the documentation for the time being. My plan is to arrive at the agreed-upon initial patch for the code, then try it locally and fix any problems, then finalize it (including the docs). So the comments below are intended to (a) slightly cleanup the design and implementation; and (b) avoid unnecessary changes. > +;; W32 uses different color indexes than standard > (defvar w32-tty-standard-colors > '(("black" 0 0 0 0) > ("blue" 1 0 0 52480) ; MediumBlue > @@ -43,56 +42,133 @@ > ("lightmagenta" 13 65535 0 65535) ; Magenta > ("yellow" 14 65535 65535 0) ; Yellow > ("white" 15 65535 65535 65535)) > -"A list of VGA console colors, their indices and 16-bit RGB values.") > + "A list of VGA console colors, their indices and 16-bit RGB values.") > + > +;; When using VT sequences for color, use xterm-like indices > +(defvar w32-tty-virtual-terminal-base-colors > + '(("black" 0 0 0 0) > + ("red" 1 45568 8704 8704) ; FireBrick What is the rationale for using different RGB components in the VT mode? The RGB components of the 16 colors were determined by comparing X and PC colors on the same screen. I presume that the VT mode uses the same colors, so I don't understand why we need different definitions. Can you explain? > (defun terminal-init-w32console () > "Terminal initialization function for w32 console." > ;; Share function key initialization with w32 gui frames > (x-setup-function-keys (selected-frame)) > ;; Set terminal and keyboard encodings to the current OEM codepage. > (let ((oem-code-page-coding > - (intern (format "cp%d" (w32-get-console-codepage)))) > - (oem-code-page-output-coding > - (intern (format "cp%d" (w32-get-console-output-codepage)))) > - oem-cs-p oem-o-cs-p) > - (setq oem-cs-p (coding-system-p oem-code-page-coding)) > - (setq oem-o-cs-p (coding-system-p oem-code-page-output-coding)) > - (when oem-cs-p > - (set-keyboard-coding-system oem-code-page-coding) > - (set-terminal-coding-system > - (if oem-o-cs-p oem-code-page-output-coding oem-code-page-coding)) > - ;; Since we changed the terminal encoding, we need to repeat > - ;; the test for Unicode quotes being displayable. > - (startup--setup-quote-display))) > - (let* ((colors w32-tty-standard-colors) > - (color (car colors))) > - (tty-color-clear) > - (while colors > - (tty-color-define (car color) (cadr color) (cddr color)) > - (setq colors (cdr colors) > - color (car colors)))) > - (clear-face-cache) > - ;; Figure out what are the colors of the console window, and set up > - ;; the background-mode correspondingly. > - (let* ((screen-color (get-screen-color)) > - (bg (cadr screen-color)) > - (descr (tty-color-by-index bg)) > - r g b bg-mode) > - (setq r (nth 2 descr) > - g (nth 3 descr) > - b (nth 4 descr)) > - (if (< (+ r g b) (* .6 (+ 65535 65535 65535))) > - (setq bg-mode 'dark) > - (setq bg-mode 'light)) > - (set-terminal-parameter nil 'background-mode bg-mode)) > - (tty-set-up-initial-frame-faces) > + (intern (format "cp%d" (w32-get-console-codepage)))) > + (oem-code-page-output-coding > + (intern (format "cp%d" (w32-get-console-output-codepage)))) In the interests of making the patch smaller and easier to review, could you either avoid changing whitespace, or produce the patch using the --ignore-space-changes command-line switch? AFAIU, most of the above are whitespace changes (TABs to SPCes, right?), but the code is basically left intact, by an large. > --- a/src/term.c > +++ b/src/term.c > @@ -73,7 +73,6 @@ static void clear_tty_hooks (struct terminal *terminal); > static void set_tty_hooks (struct terminal *terminal); > static void dissociate_if_controlling_tty (int fd); > static void delete_tty (struct terminal *); > - > #endif /* !HAVE_ANDROID */ There are quite a few changes that add or remove empty lines, please avoid that, to make the patch smaller and more to-the-point. > @@ -346,10 +345,10 @@ tty_hide_cursor (struct tty_display_info *tty) > { > if (tty->cursor_hidden == 0) > { > - tty->cursor_hidden = 1; > #ifdef WINDOWSNT > w32con_hide_cursor (); > #else > + tty->cursor_hidden = 1; > OUTPUT_IF (tty, tty->TS_cursor_invisible); Is this change of order important? If so, why? If it isn't important, please leave the original order intact, again to make the patch smaller and easier to grasp. Same in other places where AFAICT you've modified the code for stylistic reasons, without actually changing it. > @@ -2264,18 +2263,42 @@ tty_setup_colors (struct tty_display_info *tty, int mode) > default: > tty_default_color_capabilities (tty, 0); > break; > - case 8: /* 8 standard ANSI colors */ > - tty->TS_orig_pair = "\033[0m"; > + case 8: /* 8 standard ANSI colors */ > + tty->TS_orig_pair = "\x1b[0m"; > + tty->TS_set_foreground = "\x1b[3%dm"; > + tty->TS_set_background = "\x1b[4%dm"; > #ifdef TERMINFO > - tty->TS_set_foreground = "\033[3%p1%dm"; > - tty->TS_set_background = "\033[4%p1%dm"; > -#else > - tty->TS_set_foreground = "\033[3%dm"; > - tty->TS_set_background = "\033[4%dm"; > + tty->TS_set_foreground = "\x1b[3%p1%dm"; > + tty->TS_set_background = "\x1b[4%p1%dm"; > +#endif > +#ifdef WINDOWSNT > + tty->TS_orig_pair = "\x1b[39m\x1b[49m"; > + tty->TS_set_foreground = "\x1b[%lum"; > + tty->TS_set_background = "\x1b[%lum"; I see you've consistently replaced \033 with \x1b. Any reason for that? If it's possible to use \033 as in original code, it will again make the patch smaller and easier to read. Also, WINDOWSNT and TERMINFO are mutually-exclusive, so please use #elif to show that. > { > - tty->TS_set_foreground = "\033[%?%p1%{8}%<%t3%p1%d%e38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%d%;m"; > - tty->TS_set_background = "\033[%?%p1%{8}%<%t4%p1%d%e48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%d%;m"; > + tty->TS_set_foreground = "\x1b[%?%p1%{8}%<%t3%p1%d%e38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%d%;m"; > + tty->TS_set_background = "\x1b[%?%p1%{8}%<%t4%p1%d%e48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%d%;m"; > tty->TN_max_colors = 16777216; > } This AFAIU also merely replaces \033 with \x1b. > +#define SEQMAX 256 /* Arbitrary upper limit on VT sequence size */ GNU coding conventions frown on arbitrary limits. At the very least, let's make sure the SSPRINTF macro bails out if it needs to produce more than SEQMAX bytes, and let's have eassert there in case it bails out early because the caller wanted more than that -- so that any such problems could be caught early. > +/* For debugging */ > +static void > +vt_seq_error (char *seq) Please explain in a comment how this supposed to be used for debugging. > + turn_on_face (f, face_id); > + WriteConsole (cur_screen, conversion_buffer, > + coding->produced, &r, NULL); Why do you use WriteConsole here, but WriteConsoleA elsewhere? Is there a difference? If not, let's be consistent. > static void > w32con_update_begin (struct frame * f) > { > + current_tty = FRAME_TTY (f); > + > + if (!w32_use_virtual_terminal_sequences > + && current_tty->TN_max_colors > 16) > + { > + tty_setup_colors (current_tty, 16); > + safe_calln (Qw32con_set_up_initial_frame_faces); > + } Why is this needed? This will call to Lisp each redisplay cycle, which is expensive and will slow down redisplay. Why do we need to setup colors and faces each redisplay cycle? We never needed this before. > +/* returns the pixel value for the given index into VT base color map */ > +static unsigned long pixel_cache[16]; > +static unsigned long > +get_pixel (unsigned long index) > +{ > + unsigned int i = (unsigned int) index; > + if (i > 15) return 0; > + if (i == 0 || pixel_cache[i] > 0) > + return pixel_cache[i]; > + > + Lisp_Object pix = safe_calln (Qw32con_get_pixel, make_ufixnum (i)); > + pixel_cache[i] = (unsigned long) XUFIXNUM (pix); > + return pixel_cache[i]; > +} This should be implemented in C to avoid a costly call into Lisp (each time we need to use a different color!). Reusing existing code is important, but speed of redisplay trumps that by a large margin. > + DEFVAR_BOOL ("w32-use-virtual-terminal-sequences", > + w32_use_virtual_terminal_sequences, > + doc: /* If non-nil w32 console uses terminal sequences for some output processing. > +This variable is set automatically based on the capabilities of the terminal. > +It determines the number and indices of colors used for faces in the terminal. > +If the terminal cannot handle VT sequences, the update hook triggers recomputation of faces. > +See `w32con-set-up-initial-frame-faces', which should be called after setting this variable > +manually in a running session. */); > + w32_use_virtual_terminal_sequences = 0; Do we want to support setting this from Lisp or by the user (in addition to setting it automatically at startup)? If yes, does setting it require some initialization? Thanks again for working on this.