From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1IoS4l-0002x8-1n for mharc-grub-devel@gnu.org; Sat, 03 Nov 2007 19:06:47 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IoS4h-0002uh-9i for grub-devel@gnu.org; Sat, 03 Nov 2007 19:06:43 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IoS4g-0002uF-FE for grub-devel@gnu.org; Sat, 03 Nov 2007 19:06:42 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IoS4g-0002u9-Au for grub-devel@gnu.org; Sat, 03 Nov 2007 19:06:42 -0400 Received: from bigbox.boeglin.org ([88.191.20.48]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IoS4e-0006sR-17 for grub-devel@gnu.org; Sat, 03 Nov 2007 19:06:40 -0400 Received: by bigbox.boeglin.org (Postfix, from userid 1000) id 5D97294089; Sun, 4 Nov 2007 00:06:31 +0100 (CET) Date: Sun, 4 Nov 2007 00:06:31 +0100 From: Alexandre Boeglin To: grub-devel@gnu.org Message-ID: <20071103230631.GA2875@boeglin.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="WIyZ46R2i8wDzkSu" Content-Disposition: inline User-Agent: RoundCube Webmail/0.1b X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 2) Subject: grub2 efi patches X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Nov 2007 23:06:44 -0000 --WIyZ46R2i8wDzkSu Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hello, Here are a few patches for grub2, against cvs head: grub2_arg_doubledash.patch fixes a bug in the handling of the '--' argument, grub2_efi_chainloader_options.patch adds support for efi chainload options, it is not really beautiful (for instance, the ascii to utf16 conversion), but it works for the MacOSX loader, grub2_efi_grub_prefix.patch uses the grub_prefix variable to set the prefix environment variable, instead of the directory in which grub.efi is. This allows to have grub.efi and the modules in different folders, and the old behaviour should be preserved, if the grub_prefix is an empty string, grub2_efi_halt_reboot.patch adds support for the reboot and halt commands, provided by efi runtime services. Regards, Alex P.S.: I sent the patches as attachments, I don't know if they will be discarded by the list robot or not ... -- Alexandre Boeglin email: alex (at) boeglin (dot) org jabber: alex (at) im (dot) apinc (dot) org website: http://boeglin.org/ --WIyZ46R2i8wDzkSu Content-Type: text/x-patch; name="grub2_arg_doubledash.patch"; charset=UTF-8 Content-Disposition: attachment; filename="grub2_arg_doubledash.patch" Content-Transfer-Encoding: base64 SW5kZXg6IG5vcm1hbC9hcmcuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9zb3VyY2Vz L2dydWIvZ3J1YjIvbm9ybWFsL2FyZy5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS43DQpk aWZmIC11IC1yMS43IGFyZy5jDQotLS0gbm9ybWFsL2FyZy5jCTIxIEp1bCAyMDA3IDIzOjMy OjI4IC0wMDAwCTEuNw0KKysrIG5vcm1hbC9hcmcuYwkzIE5vdiAyMDA3IDIyOjQ0OjQxIC0w MDAwDQpAQCAtMzEzLDcgKzMxMyw3IEBADQogCSAgaWYgKGdydWJfc3RybGVuIChhcmcpID09 IDIpDQogCSAgICB7DQogCSAgICAgIGZvciAoY3VyYXJnKys7IGN1cmFyZyA8IGFyZ2M7IGN1 cmFyZysrKQ0KLQkJaWYgKGFkZF9hcmcgKGFyZykgIT0gMCkNCisJCWlmIChhZGRfYXJnIChh cmd2W2N1cmFyZ10pICE9IDApDQogCQkgIGdvdG8gZmFpbDsNCiAJICAgICAgYnJlYWs7DQog CSAgICB9DQo= --WIyZ46R2i8wDzkSu Content-Type: text/x-patch; name="grub2_efi_chainloader_options.patch"; charset=UTF-8 Content-Disposition: attachment; filename="grub2_efi_chainloader_options.patch" Content-Transfer-Encoding: base64 SW5kZXg6IGluY2x1ZGUvZ3J1Yi9lZmkvY2hhaW5sb2FkZXIuaA0KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K UkNTIGZpbGU6IC9zb3VyY2VzL2dydWIvZ3J1YjIvaW5jbHVkZS9ncnViL2VmaS9jaGFpbmxv YWRlci5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yDQpkaWZmIC11IC1yMS4yIGNoYWlu bG9hZGVyLmgNCi0tLSBpbmNsdWRlL2dydWIvZWZpL2NoYWlubG9hZGVyLmgJMjEgSnVsIDIw MDcgMjM6MzI6MjIgLTAwMDAJMS4yDQorKysgaW5jbHVkZS9ncnViL2VmaS9jaGFpbmxvYWRl ci5oCTMgTm92IDIwMDcgMjI6NDI6MDEgLTAwMDANCkBAIC0xOSw2ICsxOSw2IEBADQogI2lm bmRlZiBHUlVCX0VGSV9DSEFJTkxPQURFUl9IRUFERVINCiAjZGVmaW5lIEdSVUJfRUZJX0NI QUlOTE9BREVSX0hFQURFUgkxDQogDQotdm9pZCBncnViX2NoYWlubG9hZGVyX2NtZCAoY29u c3QgY2hhciAqZmlsZW5hbWUpOw0KK3ZvaWQgZ3J1Yl9jaGFpbmxvYWRlcl9jbWQgKGludCBh cmdjLCBjaGFyICphcmd2W10pOw0KIA0KICNlbmRpZiAvKiAhIEdSVUJfRUZJX0NIQUlOTE9B REVSX0hFQURFUiAqLw0KSW5kZXg6IGxvYWRlci9lZmkvY2hhaW5sb2FkZXIuYw0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KUkNTIGZpbGU6IC9zb3VyY2VzL2dydWIvZ3J1YjIvbG9hZGVyL2VmaS9jaGFp bmxvYWRlci5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yDQpkaWZmIC11IC1yMS4yIGNo YWlubG9hZGVyLmMNCi0tLSBsb2FkZXIvZWZpL2NoYWlubG9hZGVyLmMJMjEgSnVsIDIwMDcg MjM6MzI6MjggLTAwMDAJMS4yDQorKysgbG9hZGVyL2VmaS9jaGFpbmxvYWRlci5jCTMgTm92 IDIwMDcgMjI6NDI6NDcgLTAwMDANCkBAIC0xNyw4ICsxNyw2IEBADQogICogIGFsb25nIHdp dGggR1JVQi4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4N CiAgKi8NCiANCi0vKiBUT0RPOiBzdXBwb3J0IGxvYWQgb3B0aW9ucy4gICovDQotDQogI2lu Y2x1ZGUgPGdydWIvbG9hZGVyLmg+DQogI2luY2x1ZGUgPGdydWIvZmlsZS5oPg0KICNpbmNs dWRlIDxncnViL2Vyci5oPg0KQEAgLTE3NSw3ICsxNzMsNyBAQA0KIH0NCiANCiB2b2lkDQot Z3J1Yl9jaGFpbmxvYWRlcl9jbWQgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQ0KK2dydWJfY2hh aW5sb2FkZXJfY21kIChpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KIHsNCiAgIGdydWJfZmls ZV90IGZpbGUgPSAwOw0KICAgZ3J1Yl9zc2l6ZV90IHNpemU7DQpAQCAtMTg1LDYgKzE4Mywx MSBAQA0KICAgZ3J1Yl9kZXZpY2VfdCBkZXYgPSAwOw0KICAgZ3J1Yl9lZmlfZGV2aWNlX3Bh dGhfdCAqZHAgPSAwOw0KICAgZ3J1Yl9lZmlfbG9hZGVkX2ltYWdlX3QgKmxvYWRlZF9pbWFn ZTsNCisgIGNoYXIgKmZpbGVuYW1lID0gYXJndlswXTsNCisgIGdydWJfZWZpX2NoYXIxNl90 ICoqb3B0aW9ucyA9IE5VTEwsICpwOw0KKyAgaW50IGksIGosIG9wdGlvbnNfbGVuID0gMDsN CisNCisgIGIgPSBncnViX2VmaV9zeXN0ZW1fdGFibGUtPmJvb3Rfc2VydmljZXM7DQogICAN CiAgIGdydWJfZGxfcmVmIChteV9tb2QpOw0KIA0KQEAgLTE5Miw2ICsxOTUsMzAgQEANCiAg IGFkZHJlc3MgPSAwOw0KICAgaW1hZ2VfaGFuZGxlID0gMDsNCiAgIGZpbGVfcGF0aCA9IDA7 DQorDQorICBpZiAoYXJnYyA9PSAwKQ0KKyAgew0KKyAgICBncnViX2Vycm9yIChHUlVCX0VS Ul9CQURfQVJHVU1FTlQsICJubyBmaWxlIHNwZWNpZmllZCIpOw0KKyAgICBnb3RvIGZhaWw7 DQorICB9DQorDQorICAvKiBjb3B5IG9wdGlvbnMgKi8NCisgIGlmIChhcmdjID4gMSkNCisg IHsNCisgICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykNCisgICAgICBvcHRpb25zX2xl biArPSAoZ3J1Yl9zdHJsZW4gKGFyZ3ZbaV0pICsgMSkgKiBzaXplb2YgKCoqb3B0aW9ucyk7 DQorDQorICAgIHN0YXR1cyA9IGItPmFsbG9jYXRlX3Bvb2wgKEdSVUJfRUZJX0xPQURFUl9E QVRBLCBvcHRpb25zX2xlbiArIHNpemVvZiAoKipvcHRpb25zKSwgb3B0aW9ucyk7DQorICAg IGlmIChzdGF0dXMgIT0gR1JVQl9FRklfU1VDQ0VTUykNCisgICAgICBnb3RvIGZhaWw7DQor ICAgIHAgPSAqb3B0aW9uczsNCisNCisgICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKyl7 DQorICAgICAgKnArKyA9ICcgJzsNCisgICAgICBmb3IgKGogPSAwOyBqIDwgZ3J1Yl9zdHJs ZW4gKGFyZ3ZbaV0pICsgMTsgaisrKQ0KKyAgICAgICAgcFtqXSA9IGFyZ3ZbaV1bal07DQor ICAgIH0NCisgIH0NCiAgIA0KICAgYiA9IGdydWJfZWZpX3N5c3RlbV90YWJsZS0+Ym9vdF9z ZXJ2aWNlczsNCiANCkBAIC0yNjcsNiArMjk0LDEwIEBADQogICAgICAgZ290byBmYWlsOw0K ICAgICB9DQogICBsb2FkZWRfaW1hZ2UtPmRldmljZV9oYW5kbGUgPSBkZXZfaGFuZGxlOw0K Kw0KKyAgaWYgKCpvcHRpb25zKQ0KKyAgICBsb2FkZWRfaW1hZ2UtPmxvYWRfb3B0aW9ucyA9 ICpvcHRpb25zOw0KKyAgICBsb2FkZWRfaW1hZ2UtPmxvYWRfb3B0aW9uc19zaXplID0gb3B0 aW9uc19sZW4gKyAxOw0KICAgDQogICBncnViX2ZpbGVfY2xvc2UgKGZpbGUpOw0KICAgZ3J1 Yl9sb2FkZXJfc2V0IChncnViX2NoYWlubG9hZGVyX2Jvb3QsIGdydWJfY2hhaW5sb2FkZXJf dW5sb2FkLCAwKTsNCkBAIC0yOTIsMTAgKzMyMyw3IEBADQogc3RhdGljIHZvaWQNCiBncnVi X3Jlc2N1ZV9jbWRfY2hhaW5sb2FkZXIgKGludCBhcmdjLCBjaGFyICphcmd2W10pDQogew0K LSAgaWYgKGFyZ2MgPT0gMCkNCi0gICAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VN RU5ULCAibm8gZmlsZSBzcGVjaWZpZWQiKTsNCi0gIGVsc2UNCi0gICAgZ3J1Yl9jaGFpbmxv YWRlcl9jbWQgKGFyZ3ZbMF0pOw0KKyAgZ3J1Yl9jaGFpbmxvYWRlcl9jbWQgKGFyZ2MsIGFy Z3YpOw0KIH0NCiANCiBzdGF0aWMgY29uc3QgY2hhciBsb2FkZXJfbmFtZVtdID0gImNoYWlu bG9hZGVyIjsNCkluZGV4OiBsb2FkZXIvZWZpL2NoYWlubG9hZGVyX25vcm1hbC5jDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQpSQ1MgZmlsZTogL3NvdXJjZXMvZ3J1Yi9ncnViMi9sb2FkZXIvZWZpL2No YWlubG9hZGVyX25vcm1hbC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yDQpkaWZmIC11 IC1yMS4yIGNoYWlubG9hZGVyX25vcm1hbC5jDQotLS0gbG9hZGVyL2VmaS9jaGFpbmxvYWRl cl9ub3JtYWwuYwkyMSBKdWwgMjAwNyAyMzozMjoyOCAtMDAwMAkxLjINCisrKyBsb2FkZXIv ZWZpL2NoYWlubG9hZGVyX25vcm1hbC5jCTMgTm92IDIwMDcgMjI6NDI6NDcgLTAwMDANCkBA IC0yNiwxMCArMjYsNyBAQA0KIGNoYWlubG9hZGVyX2NvbW1hbmQgKHN0cnVjdCBncnViX2Fy Z19saXN0ICpzdGF0ZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksDQogCQkgICAgIGludCBh cmdjLCBjaGFyICoqYXJncykNCiB7DQotICBpZiAoYXJnYyA9PSAwKQ0KLSAgICBncnViX2Vy cm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsICJubyBmaWxlIHNwZWNpZmllZCIpOw0KLSAg ZWxzZQ0KLSAgICBncnViX2NoYWlubG9hZGVyX2NtZCAoYXJnc1swXSk7DQorICBncnViX2No YWlubG9hZGVyX2NtZCAoYXJnYywgYXJncyk7DQogICByZXR1cm4gZ3J1Yl9lcnJubzsNCiB9 DQogDQo= --WIyZ46R2i8wDzkSu Content-Type: text/x-patch; name="grub2_efi_grub_prefix.patch"; charset=UTF-8 Content-Disposition: attachment; filename="grub2_efi_grub_prefix.patch" Content-Transfer-Encoding: base64 SW5kZXg6IGtlcm4vZWZpL2luaXQuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9zb3Vy Y2VzL2dydWIvZ3J1YjIva2Vybi9lZmkvaW5pdC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24g MS41DQpkaWZmIC11IC1yMS41IGluaXQuYw0KLS0tIGtlcm4vZWZpL2luaXQuYwkyMSBKdWwg MjAwNyAyMzozMjoyNiAtMDAwMAkxLjUNCisrKyBrZXJuL2VmaS9pbml0LmMJMyBOb3YgMjAw NyAxOTowNTowMCAtMDAwMA0KQEAgLTUzLDcgKzUzLDE5IEBADQogICAgICAgZGV2aWNlID0g Z3J1Yl9lZmlkaXNrX2dldF9kZXZpY2VfbmFtZSAoaW1hZ2UtPmRldmljZV9oYW5kbGUpOw0K ICAgICAgIGZpbGUgPSBncnViX2VmaV9nZXRfZmlsZW5hbWUgKGltYWdlLT5maWxlX3BhdGgp Ow0KICAgICAgIA0KLSAgICAgIGlmIChkZXZpY2UgJiYgZmlsZSkNCisgICAgICBpZiAoZ3J1 Yl9wcmVmaXhbMF0gIT0gJ1wwJyAmJiBkZXZpY2UpDQorCXsNCisJICBjaGFyICpwcmVmaXg7 DQorCSAgcHJlZml4ID0gZ3J1Yl9tYWxsb2MgKDEgKyBncnViX3N0cmxlbiAoZGV2aWNlKSAr IDENCisJCQkJKyBncnViX3N0cmxlbiAoZ3J1Yl9wcmVmaXgpICsgMSk7DQorCSAgaWYgKHBy ZWZpeCkNCisJICAgIHsNCisJICAgICAgZ3J1Yl9zcHJpbnRmIChwcmVmaXgsICIoJXMpJXMi LCBkZXZpY2UsIGdydWJfcHJlZml4KTsNCisJICAgICAgZ3J1Yl9lbnZfc2V0ICgicHJlZml4 IiwgcHJlZml4KTsNCisJICAgICAgZ3J1Yl9mcmVlIChwcmVmaXgpOw0KKwkgICAgfQ0KKwl9 DQorICAgICAgZWxzZSBpZiAoZGV2aWNlICYmIGZpbGUpDQogCXsNCiAJICBjaGFyICpwOw0K IAkgIGNoYXIgKnByZWZpeDsNCg== --WIyZ46R2i8wDzkSu Content-Type: text/x-patch; name="grub2_efi_halt_reboot.patch"; charset=UTF-8 Content-Disposition: attachment; filename="grub2_efi_halt_reboot.patch" Content-Transfer-Encoding: base64 ZGlmZiAtcnVOYSAteCBDVlMgLXggJyoubWsnIC14IGdydWIuZWZpIC14ICcqLmQnIGdydWIy X29yaWcvY29tbWFuZHMvaTM4Ni9lZmkvaGFsdC5jIGdydWIyL2NvbW1hbmRzL2kzODYvZWZp L2hhbHQuYw0KLS0tIGdydWIyX29yaWcvY29tbWFuZHMvaTM4Ni9lZmkvaGFsdC5jCTE5NzAt MDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwDQorKysgZ3J1YjIvY29tbWFuZHMvaTM4 Ni9lZmkvaGFsdC5jCTIwMDctMTEtMDMgMTk6MTQ6MDUuOTA1NDkzNzUwICswMTAwDQpAQCAt MCwwICsxLDQ3IEBADQorLyogaGFsdC5jIC0gY29tbWFuZCB0byBoYWx0IHRoZSBjb21wdXRl ci4gICovDQorLyoNCisgKiAgR1JVQiAgLS0gIEdSYW5kIFVuaWZpZWQgQm9vdGxvYWRlcg0K KyAqICBDb3B5cmlnaHQgKEMpIDIwMDUsMjAwNyAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuDQorICoNCisgKiAgR1JVQiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICogIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yDQorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQor ICoNCisgKiAgR1JVQiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLA0KKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQorICogIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UNCisgKiAgYWxvbmcgd2l0aCBHUlVCLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+Lg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxncnViL25vcm1hbC5o Pg0KKyNpbmNsdWRlIDxncnViL2RsLmg+DQorI2luY2x1ZGUgPGdydWIvYXJnLmg+DQorI2lu Y2x1ZGUgPGdydWIvZWZpL2VmaS5oPg0KKw0KK3N0YXRpYyBncnViX2Vycl90DQorZ3J1Yl9j bWRfaGFsdCAoc3RydWN0IGdydWJfYXJnX2xpc3QgKnN0YXRlIF9fYXR0cmlidXRlX18gKCh1 bnVzZWQpKSwNCisJCSBpbnQgYXJnYyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksDQorCQkg Y2hhciAqKmFyZ3MgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQ0KKw0KK3sNCisgIGdydWJf aGFsdCAoKTsNCisgIHJldHVybiAwOw0KK30NCisNCisNCisNCitHUlVCX01PRF9JTklUKGhh bHQpDQorew0KKyAgKHZvaWQpbW9kOwkJCS8qIFRvIHN0b3Agd2FybmluZy4gKi8NCisgIGdy dWJfcmVnaXN0ZXJfY29tbWFuZCAoImhhbHQiLCBncnViX2NtZF9oYWx0LCBHUlVCX0NPTU1B TkRfRkxBR19CT1RILA0KKwkJCSAiaGFsdCIsICJIYWx0IHRoZSBjb21wdXRlciIsIDApOw0K K30NCisNCitHUlVCX01PRF9GSU5JKGhhbHQpDQorew0KKyAgZ3J1Yl91bnJlZ2lzdGVyX2Nv bW1hbmQgKCJoYWx0Iik7DQorfQ0KZGlmZiAtcnVOYSAteCBDVlMgLXggJyoubWsnIC14IGdy dWIuZWZpIC14ICcqLmQnIGdydWIyX29yaWcvY29tbWFuZHMvaTM4Ni9lZmkvcmVib290LmMg Z3J1YjIvY29tbWFuZHMvaTM4Ni9lZmkvcmVib290LmMNCi0tLSBncnViMl9vcmlnL2NvbW1h bmRzL2kzODYvZWZpL3JlYm9vdC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICsw MTAwDQorKysgZ3J1YjIvY29tbWFuZHMvaTM4Ni9lZmkvcmVib290LmMJMjAwNy0xMS0wMyAx OToxNDoyMi44NTA1NTI3NTAgKzAxMDANCkBAIC0wLDAgKzEsNDcgQEANCisvKiByZWJvb3Qu YyAtIGNvbW1hbmQgdG8gcmVib290IHRoZSBjb21wdXRlci4gICovDQorLyoNCisgKiAgR1JV QiAgLS0gIEdSYW5kIFVuaWZpZWQgQm9vdGxvYWRlcg0KKyAqICBDb3B5cmlnaHQgKEMpIDIw MDUsMjAwNyAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorICoNCisgKiAgR1JV QiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5DQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yDQorICogIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiAgR1JVQiBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAqICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZg0KKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlDQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuDQorICoNCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgKiAgYWxvbmcgd2l0 aCBHUlVCLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lg0K KyAqLw0KKw0KKyNpbmNsdWRlIDxncnViL25vcm1hbC5oPg0KKyNpbmNsdWRlIDxncnViL2Rs Lmg+DQorI2luY2x1ZGUgPGdydWIvYXJnLmg+DQorI2luY2x1ZGUgPGdydWIvZWZpL2VmaS5o Pg0KKw0KK3N0YXRpYyBncnViX2Vycl90DQorZ3J1Yl9jbWRfcmVib290IChzdHJ1Y3QgZ3J1 Yl9hcmdfbGlzdCAqc3RhdGUgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLA0KKwkJIGludCBh cmdjIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwNCisJCSBjaGFyICoqYXJncyBfX2F0dHJp YnV0ZV9fICgodW51c2VkKSkpDQorDQorew0KKyAgZ3J1Yl9yZWJvb3QgKCk7DQorICByZXR1 cm4gMDsNCit9DQorDQorDQorDQorR1JVQl9NT0RfSU5JVChyZWJvb3QpDQorew0KKyAgKHZv aWQpbW9kOwkJCS8qIFRvIHN0b3Agd2FybmluZy4gKi8NCisgIGdydWJfcmVnaXN0ZXJfY29t bWFuZCAoInJlYm9vdCIsIGdydWJfY21kX3JlYm9vdCwgR1JVQl9DT01NQU5EX0ZMQUdfQk9U SCwNCisJCQkgInJlYm9vdCIsICJSZWJvb3QgdGhlIGNvbXB1dGVyIiwgMCk7DQorfQ0KKw0K K0dSVUJfTU9EX0ZJTkkocmVib290KQ0KK3sNCisgIGdydWJfdW5yZWdpc3Rlcl9jb21tYW5k ICgicmVib290Iik7DQorfQ0KZGlmZiAtcnVOYSAteCBDVlMgLXggJyoubWsnIC14IGdydWIu ZWZpIC14ICcqLmQnIGdydWIyX29yaWcvY29uZi9pMzg2LWVmaS5ybWsgZ3J1YjIvY29uZi9p Mzg2LWVmaS5ybWsNCi0tLSBncnViMl9vcmlnL2NvbmYvaTM4Ni1lZmkucm1rCTIwMDctMTAt MjIgMjE6NTk6MzIuMDAwMDAwMDAwICswMjAwDQorKysgZ3J1YjIvY29uZi9pMzg2LWVmaS5y bWsJMjAwNy0xMS0wMyAxOToxNTo0OC4yNTk4OTA1MDAgKzAxMDANCkBAIC03Niw3ICs3Niw3 IEBADQogDQogIyBNb2R1bGVzLg0KIHBrZ2RhdGFfTU9EVUxFUyA9IGtlcm5lbC5tb2Qgbm9y bWFsLm1vZCBfY2hhaW4ubW9kIGNoYWluLm1vZCBcDQotCV9saW51eC5tb2QgbGludXgubW9k IGNwdWlkLm1vZA0KKwlfbGludXgubW9kIGxpbnV4Lm1vZCBjcHVpZC5tb2QgaGFsdC5tb2Qg cmVib290Lm1vZA0KIA0KICMgRm9yIGtlcm5lbC5tb2QuDQoga2VybmVsX21vZF9FWFBPUlRT ID0gbm8NCkBAIC0xNDAsNCArMTQwLDE0IEBADQogY3B1aWRfbW9kX0NGTEFHUyA9ICQoQ09N TU9OX0NGTEFHUykNCiBjcHVpZF9tb2RfTERGTEFHUyA9ICQoQ09NTU9OX0xERkxBR1MpDQog DQorIyBGb3IgaGFsdC5tb2QuDQoraGFsdF9tb2RfU09VUkNFUyA9IGNvbW1hbmRzL2kzODYv ZWZpL2hhbHQuYw0KK2hhbHRfbW9kX0NGTEFHUyA9ICQoQ09NTU9OX0NGTEFHUykNCitoYWx0 X21vZF9MREZMQUdTID0gJChDT01NT05fTERGTEFHUykNCisNCisjIEZvciByZWJvb3QubW9k Lg0KK3JlYm9vdF9tb2RfU09VUkNFUyA9IGNvbW1hbmRzL2kzODYvZWZpL3JlYm9vdC5jDQor cmVib290X21vZF9DRkxBR1MgPSAkKENPTU1PTl9DRkxBR1MpDQorcmVib290X21vZF9MREZM QUdTID0gJChDT01NT05fTERGTEFHUykNCisNCiBpbmNsdWRlICQoc3JjZGlyKS9jb25mL2Nv bW1vbi5taw0KZGlmZiAtcnVOYSAteCBDVlMgLXggJyoubWsnIC14IGdydWIuZWZpIC14ICcq LmQnIGdydWIyX29yaWcvaW5jbHVkZS9ncnViL2VmaS9lZmkuaCBncnViMi9pbmNsdWRlL2dy dWIvZWZpL2VmaS5oDQotLS0gZ3J1YjJfb3JpZy9pbmNsdWRlL2dydWIvZWZpL2VmaS5oCTIw MDctMDctMjIgMDE6MzI6MjMuMDAwMDAwMDAwICswMjAwDQorKysgZ3J1YjIvaW5jbHVkZS9n cnViL2VmaS9lZmkuaAkyMDA3LTExLTAzIDE5OjEyOjEyLjc2MjQyMjc1MCArMDEwMA0KQEAg LTU0LDYgKzU0LDggQEANCiBncnViX2VmaV9kZXZpY2VfcGF0aF90ICoNCiBFWFBPUlRfRlVO QyhncnViX2VmaV9nZXRfZGV2aWNlX3BhdGgpIChncnViX2VmaV9oYW5kbGVfdCBoYW5kbGUp Ow0KIGludCBFWFBPUlRfRlVOQyhncnViX2VmaV9leGl0X2Jvb3Rfc2VydmljZXMpIChncnVi X2VmaV91aW50bl90IG1hcF9rZXkpOw0KK3ZvaWQgRVhQT1JUX0ZVTkMgKGdydWJfcmVib290 KSAodm9pZCk7DQordm9pZCBFWFBPUlRfRlVOQyAoZ3J1Yl9oYWx0KSAodm9pZCk7DQogDQog dm9pZCBncnViX2VmaV9tbV9pbml0ICh2b2lkKTsNCiB2b2lkIGdydWJfZWZpX21tX2Zpbmkg KHZvaWQpOw0KZGlmZiAtcnVOYSAteCBDVlMgLXggJyoubWsnIC14IGdydWIuZWZpIC14ICcq LmQnIGdydWIyX29yaWcva2Vybi9lZmkvZWZpLmMgZ3J1YjIva2Vybi9lZmkvZWZpLmMNCi0t LSBncnViMl9vcmlnL2tlcm4vZWZpL2VmaS5jCTIwMDctMDctMjIgMDE6MzI6MjYuMDAwMDAw MDAwICswMjAwDQorKysgZ3J1YjIva2Vybi9lZmkvZWZpLmMJMjAwNy0xMS0wMyAxOToyNjox Ni44NzkxNzY3NTAgKzAxMDANCkBAIC0xNjIsNiArMTYyLDIyIEBADQogCQkJCQkgICAgICAw LCAwKTsNCiB9DQogDQordm9pZA0KK2dydWJfcmVib290ICh2b2lkKQ0KK3sNCisgIGdydWJf ZWZpX2ZpbmkgKCk7DQorICBncnViX2VmaV9zeXN0ZW1fdGFibGUtPnJ1bnRpbWVfc2Vydmlj ZXMtPnJlc2V0X3N5c3RlbSAoDQorICAgICAgR1JVQl9FRklfUkVTRVRfQ09MRCwgR1JVQl9F RklfU1VDQ0VTUywgMCwgTlVMTCk7DQorfQ0KKw0KK3ZvaWQNCitncnViX2hhbHQgKHZvaWQp DQorew0KKyAgZ3J1Yl9lZmlfZmluaSAoKTsNCisgIGdydWJfZWZpX3N5c3RlbV90YWJsZS0+ cnVudGltZV9zZXJ2aWNlcy0+cmVzZXRfc3lzdGVtICgNCisgICAgICBHUlVCX0VGSV9SRVNF VF9TSFVURE9XTiwgR1JVQl9FRklfU1VDQ0VTUywgMCwgTlVMTCk7DQorfQ0KKw0KIGludA0K IGdydWJfZWZpX2V4aXRfYm9vdF9zZXJ2aWNlcyAoZ3J1Yl9lZmlfdWludG5fdCBtYXBfa2V5 KQ0KIHsNCg== --WIyZ46R2i8wDzkSu--