From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Q75mx-0004xK-IN for mharc-grub-devel@gnu.org; Tue, 05 Apr 2011 08:55:19 -0400 Received: from [140.186.70.92] (port=45125 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q75mt-0004oO-F1 for grub-devel@gnu.org; Tue, 05 Apr 2011 08:55:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q75mr-0004VQ-6D for grub-devel@gnu.org; Tue, 05 Apr 2011 08:55:15 -0400 Received: from mail-ew0-f41.google.com ([209.85.215.41]:50349) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q75mq-0004Uz-RI for grub-devel@gnu.org; Tue, 05 Apr 2011 08:55:13 -0400 Received: by ewy9 with SMTP id 9so105521ewy.0 for ; Tue, 05 Apr 2011 05:55:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:subject:from:to:cc:content-type:date:message-id :mime-version:x-mailer; bh=SWDCQQe8/JGXXZ0Nlu5XJzN2c0rSGl7yulDzVg9Xj+U=; b=hCclyca8LGaYUWZTL5cuoDgc2aDA7PuOe8XypLnLOPJNfezCkjjjyYCmKa+NAbTuoL ErItizr4pmFRClbDFTanYyeVdk1VC+qvPFGTdfu83JtT8xjKATHYdQEFbfd2kOUCg0SP nwIcGMk5ftc10Q7Jco682RW9qH6gdvZgP6nQA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=subject:from:to:cc:content-type:date:message-id:mime-version :x-mailer; b=iX76LYeiLgX5ekLrLxBspeRD497YsjqyopDVAAdxssEXgkCqj2QtOL1vT1T4LfKZRw ZRa/DXjFpALhw0sLmQpPtr+HNYTPmCH00UmssE/gD7UxjgXrQ6RDAfY800QJnk7Yo7Z9 RxZWkXMRolOAZsGtqx+jPP68eMl7yw5UO3gDw= Received: by 10.14.53.66 with SMTP id f42mr4033858eec.15.1302008111142; Tue, 05 Apr 2011 05:55:11 -0700 (PDT) Received: from [138.246.45.93] (0013021f490d.dfn.mwn.de [138.246.45.93]) by mx.google.com with ESMTPS id x14sm3973997eeh.20.2011.04.05.05.55.09 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 05 Apr 2011 05:55:09 -0700 (PDT) From: Alexander Kurtz To: grub-devel@gnu.org Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-bw51wNIlAloqhibDUtDP" Date: Tue, 05 Apr 2011 14:55:07 +0200 Message-ID: <1302008107.14852.20.camel@alexander> Mime-Version: 1.0 X-Mailer: Evolution 2.30.3 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.215.41 Cc: 612417@bugs.debian.org Subject: [PATCH] add proper variable quoting to grub-mkconfig_lib (Debian bug #612417) X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 12:55:17 -0000 --=-bw51wNIlAloqhibDUtDP Content-Type: multipart/mixed; boundary="=-3edce6p1SAEjBpf17aHi" --=-3edce6p1SAEjBpf17aHi Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, currently you can't use an image which has whitespace in its filename as GRUB background image because grub-mkconfig_lib lacks proper variable quoting (see [1] for more information). I've attached three patches which should fix this problem: quote-big.patch: This patch fixes the problem with the minimal set of changes. quote-medium.patch: This patch adds proper quoting wherever it is safe to do so. quote-small.patch This patch additionally adds quoting in cases like this: ${grub-probe} --foo --bar =3D> "${grub-probe}" --foo --bar This breaks things if ${grub-probe} contains additional parameters. Please note that I already submitted similar patches a while ago[2], but these are a little outdated now. The attached patches have been refreshed and should apply cleanly to the current trunk. What do you think? Best regards Alexander Kurtz [1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D612417#5 [2] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D612417#10 --=-3edce6p1SAEjBpf17aHi Content-Disposition: attachment; filename="quote-small.patch" Content-Type: text/x-patch; name="quote-small.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtTmF1ciBiYXphYXIvdXRpbC9ncnViLW1rY29uZmlnX2xpYi5pbiBzbWFsbC91dGlsL2dy dWItbWtjb25maWdfbGliLmluDQotLS0gYmF6YWFyL3V0aWwvZ3J1Yi1ta2NvbmZpZ19saWIuaW4J MjAxMS0wNC0wNSAxMDozODoxMy4zNTcxMzkwMDAgKzAyMDANCisrKyBzbWFsbC91dGlsL2dydWIt bWtjb25maWdfbGliLmluCTIwMTEtMDQtMDUgMTQ6MTA6MDkuNjE3OTYyNDUxICswMjAwDQpAQCAt NDQsMjAgKzQ0LDIwIEBADQogDQogbWFrZV9zeXN0ZW1fcGF0aF9yZWxhdGl2ZV90b19pdHNfcm9v dCAoKQ0KIHsNCi0gICR7Z3J1Yl9ta3JlbHBhdGh9ICQxDQorICAke2dydWJfbWtyZWxwYXRofSAi JHsxfSINCiB9DQogDQogaXNfcGF0aF9yZWFkYWJsZV9ieV9ncnViICgpDQogew0KLSAgcGF0aD0k MQ0KKyAgcGF0aD0iJHsxfSINCiANCiAgICMgYWJvcnQgaWYgcGF0aCBkb2Vzbid0IGV4aXN0DQot ICBpZiB0ZXN0IC1lICRwYXRoIDsgdGhlbiA6IDtlbHNlDQorICBpZiB0ZXN0IC1lICIke3BhdGh9 IiA7IHRoZW4gOiA7ZWxzZQ0KICAgICByZXR1cm4gMQ0KICAgZmkNCiANCiAgICMgYWJvcnQgaWYg ZmlsZSBpcyBpbiBhIGZpbGVzeXN0ZW0gd2UgY2FuJ3QgcmVhZA0KLSAgaWYgJHtncnViX3Byb2Jl fSAtdCBmcyAkcGF0aCA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbiA6IDsgZWxzZQ0KKyAgaWYgJHtn cnViX3Byb2JlfSAtdCBmcyAiJHtwYXRofSIgPiAvZGV2L251bGwgMj4mMSA7IHRoZW4gOiA7IGVs c2UNCiAgICAgcmV0dXJuIDENCiAgIGZpDQogDQo= --=-3edce6p1SAEjBpf17aHi Content-Disposition: attachment; filename="quote-medium.patch" Content-Type: text/x-patch; name="quote-medium.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtTmF1ciBiYXphYXIvdXRpbC9ncnViLW1rY29uZmlnX2xpYi5pbiBtZWRpdW0vdXRpbC9n cnViLW1rY29uZmlnX2xpYi5pbg0KLS0tIGJhemFhci91dGlsL2dydWItbWtjb25maWdfbGliLmlu CTIwMTEtMDQtMDUgMTA6Mzg6MTMuMzU3MTM5MDAwICswMjAwDQorKysgbWVkaXVtL3V0aWwvZ3J1 Yi1ta2NvbmZpZ19saWIuaW4JMjAxMS0wNC0wNSAxNDoxMDoyMS4xMzY5NTI5MDcgKzAyMDANCkBA IC0xNiwxOSArMTYsMTkgQEANCiANCiB0cmFuc2Zvcm09IkBwcm9ncmFtX3RyYW5zZm9ybV9uYW1l QCINCiANCi1wcmVmaXg9QHByZWZpeEANCi1leGVjX3ByZWZpeD1AZXhlY19wcmVmaXhADQotZGF0 YXJvb3RkaXI9QGRhdGFyb290ZGlyQA0KLWRhdGFkaXI9QGRhdGFkaXJADQotYmluZGlyPUBiaW5k aXJADQotc2JpbmRpcj1Ac2JpbmRpckANCi1wa2dkYXRhZGlyPSR7ZGF0YWRpcn0vYGVjaG8gQFBB Q0tBR0VfVEFSTkFNRUAgfCBzZWQgIiR7dHJhbnNmb3JtfSJgDQorcHJlZml4PSJAcHJlZml4QCIN CitleGVjX3ByZWZpeD0iQGV4ZWNfcHJlZml4QCINCitkYXRhcm9vdGRpcj0iQGRhdGFyb290ZGly QCINCitkYXRhZGlyPSJAZGF0YWRpckAiDQorYmluZGlyPSJAYmluZGlyQCINCitzYmluZGlyPSJA c2JpbmRpckAiDQorcGtnZGF0YWRpcj0iJHtkYXRhZGlyfS9gZWNobyAiQFBBQ0tBR0VfVEFSTkFN RUAiIHwgc2VkICIke3RyYW5zZm9ybX0iYCINCiANCi1pZiB0ZXN0ICJ4JGdydWJfcHJvYmUiID0g eDsgdGhlbg0KLSAgZ3J1Yl9wcm9iZT0ke3NiaW5kaXJ9L2BlY2hvIGdydWItcHJvYmUgfCBzZWQg JHt0cmFuc2Zvcm19YA0KK2lmIHRlc3QgIngke2dydWJfcHJvYmV9IiA9ICJ4IjsgdGhlbg0KKyAg Z3J1Yl9wcm9iZT0iJHtzYmluZGlyfS9gZWNobyBncnViLXByb2JlIHwgc2VkICIke3RyYW5zZm9y bX0iYCINCiBmaQ0KLWlmIHRlc3QgIngkZ3J1Yl9ta3JlbHBhdGgiID0geDsgdGhlbg0KLSAgZ3J1 Yl9ta3JlbHBhdGg9JHtiaW5kaXJ9L2BlY2hvIGdydWItbWtyZWxwYXRoIHwgc2VkICR7dHJhbnNm b3JtfWANCitpZiB0ZXN0ICJ4JHtncnViX21rcmVscGF0aH0iID0gIngiOyB0aGVuDQorICBncnVi X21rcmVscGF0aD0iJHtiaW5kaXJ9L2BlY2hvIGdydWItbWtyZWxwYXRoIHwgc2VkICIke3RyYW5z Zm9ybX0iYCINCiBmaQ0KIA0KIGlmICQod2hpY2ggZ2V0dGV4dCA+L2Rldi9udWxsIDI+L2Rldi9u dWxsKSA7IHRoZW4NCkBAIC0zOSwyNSArMzksMjUgQEANCiANCiBncnViX3dhcm4gKCkNCiB7DQot ICBlY2hvICJXYXJuaW5nOiAkQCIgPiYyDQorICBlY2hvICJXYXJuaW5nOiAke0B9IiA+JjINCiB9 DQogDQogbWFrZV9zeXN0ZW1fcGF0aF9yZWxhdGl2ZV90b19pdHNfcm9vdCAoKQ0KIHsNCi0gICR7 Z3J1Yl9ta3JlbHBhdGh9ICQxDQorICAke2dydWJfbWtyZWxwYXRofSAiJHsxfSINCiB9DQogDQog aXNfcGF0aF9yZWFkYWJsZV9ieV9ncnViICgpDQogew0KLSAgcGF0aD0kMQ0KKyAgcGF0aD0iJHsx fSINCiANCiAgICMgYWJvcnQgaWYgcGF0aCBkb2Vzbid0IGV4aXN0DQotICBpZiB0ZXN0IC1lICRw YXRoIDsgdGhlbiA6IDtlbHNlDQorICBpZiB0ZXN0IC1lICIke3BhdGh9IiA7IHRoZW4gOiA7ZWxz ZQ0KICAgICByZXR1cm4gMQ0KICAgZmkNCiANCiAgICMgYWJvcnQgaWYgZmlsZSBpcyBpbiBhIGZp bGVzeXN0ZW0gd2UgY2FuJ3QgcmVhZA0KLSAgaWYgJHtncnViX3Byb2JlfSAtdCBmcyAkcGF0aCA+ IC9kZXYvbnVsbCAyPiYxIDsgdGhlbiA6IDsgZWxzZQ0KKyAgaWYgJHtncnViX3Byb2JlfSAtdCBm cyAiJHtwYXRofSIgPiAvZGV2L251bGwgMj4mMSA7IHRoZW4gOiA7IGVsc2UNCiAgICAgcmV0dXJu IDENCiAgIGZpDQogDQpAQCAtNzIsMjQgKzcyLDI0IEBADQogDQogY29udmVydF9zeXN0ZW1fcGF0 aF90b19ncnViX3BhdGggKCkNCiB7DQotICBwYXRoPSQxDQorICBwYXRoPSIkezF9Ig0KIA0KICAg Z3J1Yl93YXJuICJjb252ZXJ0X3N5c3RlbV9wYXRoX3RvX2dydWJfcGF0aCgpIGlzIGRlcHJlY2F0 ZWQuICBVc2UgcHJlcGFyZV9ncnViX3RvX2FjY2Vzc19kZXZpY2UoKSBpbnN0ZWFkLiINCiANCiAg ICMgYWJvcnQgaWYgR1JVQiBjYW4ndCBhY2Nlc3MgdGhlIHBhdGgNCi0gIGlmIGlzX3BhdGhfcmVh ZGFibGVfYnlfZ3J1YiAke3BhdGh9IDsgdGhlbiA6IDsgZWxzZQ0KKyAgaWYgaXNfcGF0aF9yZWFk YWJsZV9ieV9ncnViICIke3BhdGh9IiA7IHRoZW4gOiA7IGVsc2UNCiAgICAgcmV0dXJuIDENCiAg IGZpDQogDQotICBpZiBkcml2ZT1gJHtncnViX3Byb2JlfSAtdCBkcml2ZSAkcGF0aGAgOyB0aGVu IDogOyBlbHNlDQorICBpZiBkcml2ZT0iYCR7Z3J1Yl9wcm9iZX0gLXQgZHJpdmUgIiR7cGF0aH0i YCIgOyB0aGVuIDogOyBlbHNlDQogICAgIHJldHVybiAxDQogICBmaQ0KIA0KLSAgaWYgcmVsYXRp dmVfcGF0aD1gbWFrZV9zeXN0ZW1fcGF0aF9yZWxhdGl2ZV90b19pdHNfcm9vdCAkcGF0aGAgOyB0 aGVuIDogOyBlbHNlDQorICBpZiByZWxhdGl2ZV9wYXRoPSJgbWFrZV9zeXN0ZW1fcGF0aF9yZWxh dGl2ZV90b19pdHNfcm9vdCAiJHtwYXRofSJgIiA7IHRoZW4gOiA7IGVsc2UNCiAgICAgcmV0dXJu IDENCiAgIGZpDQogDQotICBlY2hvICR7ZHJpdmV9JHtyZWxhdGl2ZV9wYXRofQ0KKyAgZWNobyAi JHtkcml2ZX0ke3JlbGF0aXZlX3BhdGh9Ig0KIH0NCiANCiBzYXZlX2RlZmF1bHRfZW50cnkgKCkN CkBAIC0xMDMsMTUgKzEwMywxNSBAQA0KIA0KIHByZXBhcmVfZ3J1Yl90b19hY2Nlc3NfZGV2aWNl ICgpDQogew0KLSAgZGV2aWNlPSQxDQorICBkZXZpY2U9IiR7MX0iDQogDQogICAjIEFic3RyYWN0 aW9uIG1vZHVsZXMgYXJlbid0IGF1dG8tbG9hZGVkLg0KLSAgYWJzdHJhY3Rpb249ImAke2dydWJf cHJvYmV9IC0tZGV2aWNlICR7ZGV2aWNlfSAtLXRhcmdldD1hYnN0cmFjdGlvbmAiDQorICBhYnN0 cmFjdGlvbj0iYCR7Z3J1Yl9wcm9iZX0gLS1kZXZpY2UgIiR7ZGV2aWNlfSIgLS10YXJnZXQ9YWJz dHJhY3Rpb25gIg0KICAgZm9yIG1vZHVsZSBpbiAke2Fic3RyYWN0aW9ufSA7IGRvDQogICAgIGVj aG8gImluc21vZCAke21vZHVsZX0iDQogICBkb25lDQogDQotICBwYXJ0bWFwPSJgJHtncnViX3By b2JlfSAtLWRldmljZSAke2RldmljZX0gLS10YXJnZXQ9cGFydG1hcGAiDQorICBwYXJ0bWFwPSJg JHtncnViX3Byb2JlfSAtLWRldmljZSAiJHtkZXZpY2V9IiAtLXRhcmdldD1wYXJ0bWFwYCINCiAg IGZvciBtb2R1bGUgaW4gJHtwYXJ0bWFwfSA7IGRvDQogICAgIGNhc2UgIiR7bW9kdWxlfSIgaW4N CiAgICAgICBuZXRic2QgfCBvcGVuYnNkKQ0KQEAgLTEyMSwyMyArMTIxLDIzIEBADQogICAgIGVz YWMNCiAgIGRvbmUNCiANCi0gIGZzPSJgJHtncnViX3Byb2JlfSAtLWRldmljZSAke2RldmljZX0g LS10YXJnZXQ9ZnNgIg0KKyAgZnM9ImAke2dydWJfcHJvYmV9IC0tZGV2aWNlICIke2RldmljZX0i IC0tdGFyZ2V0PWZzYCINCiAgIGZvciBtb2R1bGUgaW4gJHtmc30gOyBkbw0KICAgICBlY2hvICJp bnNtb2QgJHttb2R1bGV9Ig0KICAgZG9uZQ0KIA0KICAgIyBJZiB0aGVyZSdzIGEgZmlsZXN5c3Rl bSBVVUlEIHRoYXQgR1JVQiBpcyBjYXBhYmxlIG9mIGlkZW50aWZ5aW5nLCB1c2UgaXQ7DQogICAj IG90aGVyd2lzZSBzZXQgcm9vdCBhcyBwZXIgdmFsdWUgaW4gZGV2aWNlLm1hcC4NCi0gIGVjaG8g InNldCByb290PSdgJHtncnViX3Byb2JlfSAtLWRldmljZSAke2RldmljZX0gLS10YXJnZXQ9ZHJp dmVgJyINCi0gIGlmIGZzX3V1aWQ9ImAke2dydWJfcHJvYmV9IC0tZGV2aWNlICR7ZGV2aWNlfSAt LXRhcmdldD1mc191dWlkIDI+IC9kZXYvbnVsbGAiIDsgdGhlbg0KKyAgZWNobyAic2V0IHJvb3Q9 J2Ake2dydWJfcHJvYmV9IC0tZGV2aWNlICIke2RldmljZX0iIC0tdGFyZ2V0PWRyaXZlYCciDQor ICBpZiBmc191dWlkPSJgJHtncnViX3Byb2JlfSAtLWRldmljZSAiJHtkZXZpY2V9IiAtLXRhcmdl dD1mc191dWlkIDI+IC9kZXYvbnVsbGAiIDsgdGhlbg0KICAgICBlY2hvICJzZWFyY2ggLS1uby1m bG9wcHkgLS1mcy11dWlkIC0tc2V0PXJvb3QgJHtmc191dWlkfSINCiAgIGZpDQogfQ0KIA0KIGdy dWJfZmlsZV9pc19ub3RfZ2FyYmFnZSAoKQ0KIHsNCi0gIGlmIHRlc3QgLWYgIiQxIiA7IHRoZW4N Ci0gICAgY2FzZSAiJDEiIGluDQorICBpZiB0ZXN0IC1mICIkezF9IiA7IHRoZW4NCisgICAgY2Fz ZSAiJHsxfSIgaW4NCiAgICAgICAqLmRwa2ctKikgcmV0dXJuIDEgOzsgIyBkZWJpYW4gZHBrZw0K ICAgICAgIFJFQURNRSopICByZXR1cm4gMSA7OyAjIGRvY3VtZW50YXRpb24NCiAgICAgZXNhYw0K QEAgLTE0OSwyMSArMTQ5LDIxIEBADQogDQogdmVyc2lvbl90ZXN0X251bWVyaWMgKCkNCiB7DQot ICBsb2NhbCBhPSQxDQotICBsb2NhbCBjbXA9JDINCi0gIGxvY2FsIGI9JDMNCi0gIGlmIFsgIiRh IiA9ICIkYiIgXSA7IHRoZW4NCi0gICAgY2FzZSAkY21wIGluDQorICBsb2NhbCBhPSIkezF9Ig0K KyAgbG9jYWwgY21wPSIkezJ9Ig0KKyAgbG9jYWwgYj0iJHszfSINCisgIGlmIFsgIiR7YX0iID0g IiR7Yn0iIF0gOyB0aGVuDQorICAgIGNhc2UgIiR7Y21wfSIgaW4NCiAgICAgICBnZXxlcXxsZSkg cmV0dXJuIDAgOzsNCiAgICAgICBndHxsdCkgcmV0dXJuIDEgOzsNCiAgICAgZXNhYw0KICAgZmkN Ci0gIGlmIFsgIiRjbXAiID0gImx0IiBdIDsgdGhlbg0KLSAgICBjPSRhDQotICAgIGE9JGINCi0g ICAgYj0kYw0KKyAgaWYgWyAiJHtjbXB9IiA9ICJsdCIgXSA7IHRoZW4NCisgICAgYz0iJHthfSIN CisgICAgYT0iJHtifSINCisgICAgYj0iJHtjfSINCiAgIGZpDQotICBpZiAoZWNobyAkYSA7IGVj aG8gJGIpIHwgc29ydCAtbiB8IGhlYWQgLW4gMSB8IGdyZXAgLXF4ICRiIDsgdGhlbg0KKyAgaWYg KGVjaG8gIiR7YX0iIDsgZWNobyAiJHtifSIpIHwgc29ydCAtbiB8IGhlYWQgLW4gMSB8IGdyZXAg LXF4ICIke2J9IiA7IHRoZW4NCiAgICAgcmV0dXJuIDANCiAgIGVsc2UNCiAgICAgcmV0dXJuIDEN CkBAIC0xNzIsNTQgKzE3Miw1NCBAQA0KIA0KIHZlcnNpb25fdGVzdF9ndCAoKQ0KIHsNCi0gIGxv Y2FsIGE9YGVjaG8gJDEgfCBzZWQgLWUgInMvW14tXSotLy8iYA0KLSAgbG9jYWwgYj1gZWNobyAk MiB8IHNlZCAtZSAicy9bXi1dKi0vLyJgDQorICBsb2NhbCBhPSJgZWNobyAiJHsxfSIgfCBzZWQg LWUgInMvW14tXSotLy8iYCINCisgIGxvY2FsIGI9ImBlY2hvICIkezJ9IiB8IHNlZCAtZSAicy9b Xi1dKi0vLyJgIg0KICAgbG9jYWwgY21wPWd0DQotICBpZiBbICJ4JGIiID0gIngiIF0gOyB0aGVu DQorICBpZiBbICJ4JHtifSIgPSAieCIgXSA7IHRoZW4NCiAgICAgcmV0dXJuIDANCiAgIGZpDQot ICBjYXNlICRhOiRiIGluDQorICBjYXNlICIke2F9OiR7Yn0iIGluDQogICAgICoub2xkOioub2xk KSA7Ow0KLSAgICAqLm9sZDoqKSBhPWBlY2hvIC1uICRhIHwgc2VkIC1lIHMvXC5vbGQkLy9gIDsg Y21wPWd0IDs7DQotICAgICo6Ki5vbGQpIGI9YGVjaG8gLW4gJGIgfCBzZWQgLWUgcy9cLm9sZCQv L2AgOyBjbXA9Z2UgOzsNCisgICAgKi5vbGQ6KikgYT0iYGVjaG8gLW4gIiR7YX0iIHwgc2VkIC1l ICdzL1wub2xkJC8vJ2AiIDsgY21wPWd0IDs7DQorICAgICo6Ki5vbGQpIGI9ImBlY2hvIC1uICIk e2J9IiB8IHNlZCAtZSAncy9cLm9sZCQvLydgIiA7IGNtcD1nZSA7Ow0KICAgZXNhYw0KLSAgdmVy c2lvbl90ZXN0X251bWVyaWMgJGEgJGNtcCAkYg0KLSAgcmV0dXJuICQ/DQorICB2ZXJzaW9uX3Rl c3RfbnVtZXJpYyAiJHthfSIgIiR7Y21wfSIgIiR7Yn0iDQorICByZXR1cm4gIiR7P30iDQogfQ0K IA0KIHZlcnNpb25fZmluZF9sYXRlc3QgKCkNCiB7DQogICBsb2NhbCBhPSIiDQotICBmb3IgaSBp biAkQCA7IGRvDQotICAgIGlmIHZlcnNpb25fdGVzdF9ndCAiJGkiICIkYSIgOyB0aGVuDQotICAg ICAgYT0iJGkiDQorICBmb3IgaSBpbiAiJHtAfSIgOyBkbw0KKyAgICBpZiB2ZXJzaW9uX3Rlc3Rf Z3QgIiR7aX0iICIke2F9IiA7IHRoZW4NCisgICAgICBhPSIke2l9Ig0KICAgICBmaQ0KICAgZG9u ZQ0KLSAgZWNobyAiJGEiDQorICBlY2hvICIke2F9Ig0KIH0NCiANCiAjIE9uZSBsYXllciBvZiBx dW90YXRpb24gaXMgZWF0ZW4gYnkgIiIsIHRoZSBzZWNvbmQgYnkgc2VkLCBhbmQgdGhlIHRoaXJk IGJ5DQogIyBwcmludGY7IHNvIHRoaXMgdHVybnMgJyBpbnRvIFwnLiAgTm90ZSB0aGF0IHlvdSBt dXN0IHVzZSB0aGUgb3V0cHV0IG9mDQogIyB0aGlzIGZ1bmN0aW9uIGluIGEgcHJpbnRmIGZvcm1h dCBzdHJpbmcuDQogZ2V0dGV4dF9xdW90ZWQgKCkgew0KLSAgJGdldHRleHQgIiRAIiB8IHNlZCAi cy8nLydcXFxcXFxcXCcnL2ciDQorICAke2dldHRleHR9ICIke0B9IiB8IHNlZCAicy8nLydcXFxc XFxcXCcnL2ciDQogfQ0KIA0KICMgUnVuIHRoZSBmaXJzdCBhcmd1bWVudCB0aHJvdWdoIGdldHRl eHRfcXVvdGVkLCBhbmQgdGhlbiBwYXNzIHRoYXQgYW5kIGFsbA0KICMgcmVtYWluaW5nIGFyZ3Vt ZW50cyB0byBwcmludGYuICBUaGlzIGlzIGEgdXNlZnVsIGFiYnJldmlhdGlvbiBhbmQgdGVuZHMg dG8NCiAjIGJlIGVhc2llciB0byB0eXBlLg0KIGdldHRleHRfcHJpbnRmICgpIHsNCi0gIGxvY2Fs IGZvcm1hdD0iJDEiDQorICBsb2NhbCBmb3JtYXQ9IiR7MX0iDQogICBzaGlmdA0KLSAgcHJpbnRm ICIkKGdldHRleHRfcXVvdGVkICIkZm9ybWF0IikiICIkQCINCisgIHByaW50ZiAiYGdldHRleHRf cXVvdGVkICIke2Zvcm1hdH0iYCIgIiR7QH0iDQogfQ0KIA0KIHVzZXNfYWJzdHJhY3Rpb24gKCkg ew0KLSAgZGV2aWNlPSQxDQorICBkZXZpY2U9IiR7MX0iDQogDQotICBhYnN0cmFjdGlvbj0iYCR7 Z3J1Yl9wcm9iZX0gLS1kZXZpY2UgJHtkZXZpY2V9IC0tdGFyZ2V0PWFic3RyYWN0aW9uYCINCisg IGFic3RyYWN0aW9uPSJgJHtncnViX3Byb2JlfSAtLWRldmljZSAiJHtkZXZpY2V9IiAtLXRhcmdl dD1hYnN0cmFjdGlvbmAiDQogICBmb3IgbW9kdWxlIGluICR7YWJzdHJhY3Rpb259OyBkbw0KLSAg ICBpZiB0ZXN0ICJ4JHttb2R1bGV9IiA9ICJ4JDIiOyB0aGVuDQorICAgIGlmIHRlc3QgIngke21v ZHVsZX0iID0gIngkezJ9IjsgdGhlbg0KICAgICAgIHJldHVybiAwDQogICAgIGZpDQogICBkb25l DQo= --=-3edce6p1SAEjBpf17aHi Content-Disposition: attachment; filename="quote-big.patch" Content-Type: text/x-patch; name="quote-big.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtTmF1ciBiYXphYXIvdXRpbC9ncnViLW1rY29uZmlnX2xpYi5pbiBiaWcvdXRpbC9ncnVi LW1rY29uZmlnX2xpYi5pbg0KLS0tIGJhemFhci91dGlsL2dydWItbWtjb25maWdfbGliLmluCTIw MTEtMDQtMDUgMTA6Mzg6MTMuMzU3MTM5MDAwICswMjAwDQorKysgYmlnL3V0aWwvZ3J1Yi1ta2Nv bmZpZ19saWIuaW4JMjAxMS0wNC0wNSAxNDoxMDozMS42Njg5NTI5MTAgKzAyMDANCkBAIC0xNiwx OSArMTYsMTkgQEANCiANCiB0cmFuc2Zvcm09IkBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQCINCiAN Ci1wcmVmaXg9QHByZWZpeEANCi1leGVjX3ByZWZpeD1AZXhlY19wcmVmaXhADQotZGF0YXJvb3Rk aXI9QGRhdGFyb290ZGlyQA0KLWRhdGFkaXI9QGRhdGFkaXJADQotYmluZGlyPUBiaW5kaXJADQot c2JpbmRpcj1Ac2JpbmRpckANCi1wa2dkYXRhZGlyPSR7ZGF0YWRpcn0vYGVjaG8gQFBBQ0tBR0Vf VEFSTkFNRUAgfCBzZWQgIiR7dHJhbnNmb3JtfSJgDQorcHJlZml4PSJAcHJlZml4QCINCitleGVj X3ByZWZpeD0iQGV4ZWNfcHJlZml4QCINCitkYXRhcm9vdGRpcj0iQGRhdGFyb290ZGlyQCINCitk YXRhZGlyPSJAZGF0YWRpckAiDQorYmluZGlyPSJAYmluZGlyQCINCitzYmluZGlyPSJAc2JpbmRp ckAiDQorcGtnZGF0YWRpcj0iJHtkYXRhZGlyfS9gZWNobyAiQFBBQ0tBR0VfVEFSTkFNRUAiIHwg c2VkICIke3RyYW5zZm9ybX0iYCINCiANCi1pZiB0ZXN0ICJ4JGdydWJfcHJvYmUiID0geDsgdGhl bg0KLSAgZ3J1Yl9wcm9iZT0ke3NiaW5kaXJ9L2BlY2hvIGdydWItcHJvYmUgfCBzZWQgJHt0cmFu c2Zvcm19YA0KK2lmIHRlc3QgIngke2dydWJfcHJvYmV9IiA9ICJ4IjsgdGhlbg0KKyAgZ3J1Yl9w cm9iZT0iJHtzYmluZGlyfS9gZWNobyBncnViLXByb2JlIHwgc2VkICIke3RyYW5zZm9ybX0iYCIN CiBmaQ0KLWlmIHRlc3QgIngkZ3J1Yl9ta3JlbHBhdGgiID0geDsgdGhlbg0KLSAgZ3J1Yl9ta3Jl bHBhdGg9JHtiaW5kaXJ9L2BlY2hvIGdydWItbWtyZWxwYXRoIHwgc2VkICR7dHJhbnNmb3JtfWAN CitpZiB0ZXN0ICJ4JHtncnViX21rcmVscGF0aH0iID0gIngiOyB0aGVuDQorICBncnViX21rcmVs cGF0aD0iJHtiaW5kaXJ9L2BlY2hvIGdydWItbWtyZWxwYXRoIHwgc2VkICIke3RyYW5zZm9ybX0i YCINCiBmaQ0KIA0KIGlmICQod2hpY2ggZ2V0dGV4dCA+L2Rldi9udWxsIDI+L2Rldi9udWxsKSA7 IHRoZW4NCkBAIC0zOSwyNSArMzksMjUgQEANCiANCiBncnViX3dhcm4gKCkNCiB7DQotICBlY2hv ICJXYXJuaW5nOiAkQCIgPiYyDQorICBlY2hvICJXYXJuaW5nOiAke0B9IiA+JjINCiB9DQogDQog bWFrZV9zeXN0ZW1fcGF0aF9yZWxhdGl2ZV90b19pdHNfcm9vdCAoKQ0KIHsNCi0gICR7Z3J1Yl9t a3JlbHBhdGh9ICQxDQorICAiJHtncnViX21rcmVscGF0aH0iICIkezF9Ig0KIH0NCiANCiBpc19w YXRoX3JlYWRhYmxlX2J5X2dydWIgKCkNCiB7DQotICBwYXRoPSQxDQorICBwYXRoPSIkezF9Ig0K IA0KICAgIyBhYm9ydCBpZiBwYXRoIGRvZXNuJ3QgZXhpc3QNCi0gIGlmIHRlc3QgLWUgJHBhdGgg OyB0aGVuIDogO2Vsc2UNCisgIGlmIHRlc3QgLWUgIiR7cGF0aH0iIDsgdGhlbiA6IDtlbHNlDQog ICAgIHJldHVybiAxDQogICBmaQ0KIA0KICAgIyBhYm9ydCBpZiBmaWxlIGlzIGluIGEgZmlsZXN5 c3RlbSB3ZSBjYW4ndCByZWFkDQotICBpZiAke2dydWJfcHJvYmV9IC10IGZzICRwYXRoID4gL2Rl di9udWxsIDI+JjEgOyB0aGVuIDogOyBlbHNlDQorICBpZiAiJHtncnViX3Byb2JlfSIgLXQgZnMg IiR7cGF0aH0iID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuIDogOyBlbHNlDQogICAgIHJldHVybiAx DQogICBmaQ0KIA0KQEAgLTcyLDI0ICs3MiwyNCBAQA0KIA0KIGNvbnZlcnRfc3lzdGVtX3BhdGhf dG9fZ3J1Yl9wYXRoICgpDQogew0KLSAgcGF0aD0kMQ0KKyAgcGF0aD0iJHsxfSINCiANCiAgIGdy dWJfd2FybiAiY29udmVydF9zeXN0ZW1fcGF0aF90b19ncnViX3BhdGgoKSBpcyBkZXByZWNhdGVk LiAgVXNlIHByZXBhcmVfZ3J1Yl90b19hY2Nlc3NfZGV2aWNlKCkgaW5zdGVhZC4iDQogDQogICAj IGFib3J0IGlmIEdSVUIgY2FuJ3QgYWNjZXNzIHRoZSBwYXRoDQotICBpZiBpc19wYXRoX3JlYWRh YmxlX2J5X2dydWIgJHtwYXRofSA7IHRoZW4gOiA7IGVsc2UNCisgIGlmIGlzX3BhdGhfcmVhZGFi bGVfYnlfZ3J1YiAiJHtwYXRofSIgOyB0aGVuIDogOyBlbHNlDQogICAgIHJldHVybiAxDQogICBm aQ0KIA0KLSAgaWYgZHJpdmU9YCR7Z3J1Yl9wcm9iZX0gLXQgZHJpdmUgJHBhdGhgIDsgdGhlbiA6 IDsgZWxzZQ0KKyAgaWYgZHJpdmU9ImAiJHtncnViX3Byb2JlfSIgLXQgZHJpdmUgIiR7cGF0aH0i YCIgOyB0aGVuIDogOyBlbHNlDQogICAgIHJldHVybiAxDQogICBmaQ0KIA0KLSAgaWYgcmVsYXRp dmVfcGF0aD1gbWFrZV9zeXN0ZW1fcGF0aF9yZWxhdGl2ZV90b19pdHNfcm9vdCAkcGF0aGAgOyB0 aGVuIDogOyBlbHNlDQorICBpZiByZWxhdGl2ZV9wYXRoPSJgbWFrZV9zeXN0ZW1fcGF0aF9yZWxh dGl2ZV90b19pdHNfcm9vdCAiJHtwYXRofSJgIiA7IHRoZW4gOiA7IGVsc2UNCiAgICAgcmV0dXJu IDENCiAgIGZpDQogDQotICBlY2hvICR7ZHJpdmV9JHtyZWxhdGl2ZV9wYXRofQ0KKyAgZWNobyAi JHtkcml2ZX0ke3JlbGF0aXZlX3BhdGh9Ig0KIH0NCiANCiBzYXZlX2RlZmF1bHRfZW50cnkgKCkN CkBAIC0xMDMsMTUgKzEwMywxNSBAQA0KIA0KIHByZXBhcmVfZ3J1Yl90b19hY2Nlc3NfZGV2aWNl ICgpDQogew0KLSAgZGV2aWNlPSQxDQorICBkZXZpY2U9IiR7MX0iDQogDQogICAjIEFic3RyYWN0 aW9uIG1vZHVsZXMgYXJlbid0IGF1dG8tbG9hZGVkLg0KLSAgYWJzdHJhY3Rpb249ImAke2dydWJf cHJvYmV9IC0tZGV2aWNlICR7ZGV2aWNlfSAtLXRhcmdldD1hYnN0cmFjdGlvbmAiDQorICBhYnN0 cmFjdGlvbj0iYCIke2dydWJfcHJvYmV9IiAtLWRldmljZSAiJHtkZXZpY2V9IiAtLXRhcmdldD1h YnN0cmFjdGlvbmAiDQogICBmb3IgbW9kdWxlIGluICR7YWJzdHJhY3Rpb259IDsgZG8NCiAgICAg ZWNobyAiaW5zbW9kICR7bW9kdWxlfSINCiAgIGRvbmUNCiANCi0gIHBhcnRtYXA9ImAke2dydWJf cHJvYmV9IC0tZGV2aWNlICR7ZGV2aWNlfSAtLXRhcmdldD1wYXJ0bWFwYCINCisgIHBhcnRtYXA9 ImAiJHtncnViX3Byb2JlfSIgLS1kZXZpY2UgIiR7ZGV2aWNlfSIgLS10YXJnZXQ9cGFydG1hcGAi DQogICBmb3IgbW9kdWxlIGluICR7cGFydG1hcH0gOyBkbw0KICAgICBjYXNlICIke21vZHVsZX0i IGluDQogICAgICAgbmV0YnNkIHwgb3BlbmJzZCkNCkBAIC0xMjEsMjMgKzEyMSwyMyBAQA0KICAg ICBlc2FjDQogICBkb25lDQogDQotICBmcz0iYCR7Z3J1Yl9wcm9iZX0gLS1kZXZpY2UgJHtkZXZp Y2V9IC0tdGFyZ2V0PWZzYCINCisgIGZzPSJgIiR7Z3J1Yl9wcm9iZX0iIC0tZGV2aWNlICIke2Rl dmljZX0iIC0tdGFyZ2V0PWZzYCINCiAgIGZvciBtb2R1bGUgaW4gJHtmc30gOyBkbw0KICAgICBl Y2hvICJpbnNtb2QgJHttb2R1bGV9Ig0KICAgZG9uZQ0KIA0KICAgIyBJZiB0aGVyZSdzIGEgZmls ZXN5c3RlbSBVVUlEIHRoYXQgR1JVQiBpcyBjYXBhYmxlIG9mIGlkZW50aWZ5aW5nLCB1c2UgaXQ7 DQogICAjIG90aGVyd2lzZSBzZXQgcm9vdCBhcyBwZXIgdmFsdWUgaW4gZGV2aWNlLm1hcC4NCi0g IGVjaG8gInNldCByb290PSdgJHtncnViX3Byb2JlfSAtLWRldmljZSAke2RldmljZX0gLS10YXJn ZXQ9ZHJpdmVgJyINCi0gIGlmIGZzX3V1aWQ9ImAke2dydWJfcHJvYmV9IC0tZGV2aWNlICR7ZGV2 aWNlfSAtLXRhcmdldD1mc191dWlkIDI+IC9kZXYvbnVsbGAiIDsgdGhlbg0KKyAgZWNobyAic2V0 IHJvb3Q9J2AiJHtncnViX3Byb2JlfSIgLS1kZXZpY2UgIiR7ZGV2aWNlfSIgLS10YXJnZXQ9ZHJp dmVgJyINCisgIGlmIGZzX3V1aWQ9ImAiJHtncnViX3Byb2JlfSIgLS1kZXZpY2UgIiR7ZGV2aWNl fSIgLS10YXJnZXQ9ZnNfdXVpZCAyPiAvZGV2L251bGxgIiA7IHRoZW4NCiAgICAgZWNobyAic2Vh cmNoIC0tbm8tZmxvcHB5IC0tZnMtdXVpZCAtLXNldD1yb290ICR7ZnNfdXVpZH0iDQogICBmaQ0K IH0NCiANCiBncnViX2ZpbGVfaXNfbm90X2dhcmJhZ2UgKCkNCiB7DQotICBpZiB0ZXN0IC1mICIk MSIgOyB0aGVuDQotICAgIGNhc2UgIiQxIiBpbg0KKyAgaWYgdGVzdCAtZiAiJHsxfSIgOyB0aGVu DQorICAgIGNhc2UgIiR7MX0iIGluDQogICAgICAgKi5kcGtnLSopIHJldHVybiAxIDs7ICMgZGVi aWFuIGRwa2cNCiAgICAgICBSRUFETUUqKSAgcmV0dXJuIDEgOzsgIyBkb2N1bWVudGF0aW9uDQog ICAgIGVzYWMNCkBAIC0xNDksMjEgKzE0OSwyMSBAQA0KIA0KIHZlcnNpb25fdGVzdF9udW1lcmlj ICgpDQogew0KLSAgbG9jYWwgYT0kMQ0KLSAgbG9jYWwgY21wPSQyDQotICBsb2NhbCBiPSQzDQot ICBpZiBbICIkYSIgPSAiJGIiIF0gOyB0aGVuDQotICAgIGNhc2UgJGNtcCBpbg0KKyAgbG9jYWwg YT0iJHsxfSINCisgIGxvY2FsIGNtcD0iJHsyfSINCisgIGxvY2FsIGI9IiR7M30iDQorICBpZiBb ICIke2F9IiA9ICIke2J9IiBdIDsgdGhlbg0KKyAgICBjYXNlICIke2NtcH0iIGluDQogICAgICAg Z2V8ZXF8bGUpIHJldHVybiAwIDs7DQogICAgICAgZ3R8bHQpIHJldHVybiAxIDs7DQogICAgIGVz YWMNCiAgIGZpDQotICBpZiBbICIkY21wIiA9ICJsdCIgXSA7IHRoZW4NCi0gICAgYz0kYQ0KLSAg ICBhPSRiDQotICAgIGI9JGMNCisgIGlmIFsgIiR7Y21wfSIgPSAibHQiIF0gOyB0aGVuDQorICAg IGM9IiR7YX0iDQorICAgIGE9IiR7Yn0iDQorICAgIGI9IiR7Y30iDQogICBmaQ0KLSAgaWYgKGVj aG8gJGEgOyBlY2hvICRiKSB8IHNvcnQgLW4gfCBoZWFkIC1uIDEgfCBncmVwIC1xeCAkYiA7IHRo ZW4NCisgIGlmIChlY2hvICIke2F9IiA7IGVjaG8gIiR7Yn0iKSB8IHNvcnQgLW4gfCBoZWFkIC1u IDEgfCBncmVwIC1xeCAiJHtifSIgOyB0aGVuDQogICAgIHJldHVybiAwDQogICBlbHNlDQogICAg IHJldHVybiAxDQpAQCAtMTcyLDU0ICsxNzIsNTQgQEANCiANCiB2ZXJzaW9uX3Rlc3RfZ3QgKCkN CiB7DQotICBsb2NhbCBhPWBlY2hvICQxIHwgc2VkIC1lICJzL1teLV0qLS8vImANCi0gIGxvY2Fs IGI9YGVjaG8gJDIgfCBzZWQgLWUgInMvW14tXSotLy8iYA0KKyAgbG9jYWwgYT0iYGVjaG8gIiR7 MX0iIHwgc2VkIC1lICJzL1teLV0qLS8vImAiDQorICBsb2NhbCBiPSJgZWNobyAiJHsyfSIgfCBz ZWQgLWUgInMvW14tXSotLy8iYCINCiAgIGxvY2FsIGNtcD1ndA0KLSAgaWYgWyAieCRiIiA9ICJ4 IiBdIDsgdGhlbg0KKyAgaWYgWyAieCR7Yn0iID0gIngiIF0gOyB0aGVuDQogICAgIHJldHVybiAw DQogICBmaQ0KLSAgY2FzZSAkYTokYiBpbg0KKyAgY2FzZSAiJHthfToke2J9IiBpbg0KICAgICAq Lm9sZDoqLm9sZCkgOzsNCi0gICAgKi5vbGQ6KikgYT1gZWNobyAtbiAkYSB8IHNlZCAtZSBzL1wu b2xkJC8vYCA7IGNtcD1ndCA7Ow0KLSAgICAqOioub2xkKSBiPWBlY2hvIC1uICRiIHwgc2VkIC1l IHMvXC5vbGQkLy9gIDsgY21wPWdlIDs7DQorICAgICoub2xkOiopIGE9ImBlY2hvIC1uICIke2F9 IiB8IHNlZCAtZSAncy9cLm9sZCQvLydgIiA7IGNtcD1ndCA7Ow0KKyAgICAqOioub2xkKSBiPSJg ZWNobyAtbiAiJHtifSIgfCBzZWQgLWUgJ3MvXC5vbGQkLy8nYCIgOyBjbXA9Z2UgOzsNCiAgIGVz YWMNCi0gIHZlcnNpb25fdGVzdF9udW1lcmljICRhICRjbXAgJGINCi0gIHJldHVybiAkPw0KKyAg dmVyc2lvbl90ZXN0X251bWVyaWMgIiR7YX0iICIke2NtcH0iICIke2J9Ig0KKyAgcmV0dXJuICIk ez99Ig0KIH0NCiANCiB2ZXJzaW9uX2ZpbmRfbGF0ZXN0ICgpDQogew0KICAgbG9jYWwgYT0iIg0K LSAgZm9yIGkgaW4gJEAgOyBkbw0KLSAgICBpZiB2ZXJzaW9uX3Rlc3RfZ3QgIiRpIiAiJGEiIDsg dGhlbg0KLSAgICAgIGE9IiRpIg0KKyAgZm9yIGkgaW4gIiR7QH0iIDsgZG8NCisgICAgaWYgdmVy c2lvbl90ZXN0X2d0ICIke2l9IiAiJHthfSIgOyB0aGVuDQorICAgICAgYT0iJHtpfSINCiAgICAg ZmkNCiAgIGRvbmUNCi0gIGVjaG8gIiRhIg0KKyAgZWNobyAiJHthfSINCiB9DQogDQogIyBPbmUg bGF5ZXIgb2YgcXVvdGF0aW9uIGlzIGVhdGVuIGJ5ICIiLCB0aGUgc2Vjb25kIGJ5IHNlZCwgYW5k IHRoZSB0aGlyZCBieQ0KICMgcHJpbnRmOyBzbyB0aGlzIHR1cm5zICcgaW50byBcJy4gIE5vdGUg dGhhdCB5b3UgbXVzdCB1c2UgdGhlIG91dHB1dCBvZg0KICMgdGhpcyBmdW5jdGlvbiBpbiBhIHBy aW50ZiBmb3JtYXQgc3RyaW5nLg0KIGdldHRleHRfcXVvdGVkICgpIHsNCi0gICRnZXR0ZXh0ICIk QCIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nIg0KKyAgIiR7Z2V0dGV4dH0iICIke0B9IiB8IHNl ZCAicy8nLydcXFxcXFxcXCcnL2ciDQogfQ0KIA0KICMgUnVuIHRoZSBmaXJzdCBhcmd1bWVudCB0 aHJvdWdoIGdldHRleHRfcXVvdGVkLCBhbmQgdGhlbiBwYXNzIHRoYXQgYW5kIGFsbA0KICMgcmVt YWluaW5nIGFyZ3VtZW50cyB0byBwcmludGYuICBUaGlzIGlzIGEgdXNlZnVsIGFiYnJldmlhdGlv biBhbmQgdGVuZHMgdG8NCiAjIGJlIGVhc2llciB0byB0eXBlLg0KIGdldHRleHRfcHJpbnRmICgp IHsNCi0gIGxvY2FsIGZvcm1hdD0iJDEiDQorICBsb2NhbCBmb3JtYXQ9IiR7MX0iDQogICBzaGlm dA0KLSAgcHJpbnRmICIkKGdldHRleHRfcXVvdGVkICIkZm9ybWF0IikiICIkQCINCisgIHByaW50 ZiAiYGdldHRleHRfcXVvdGVkICIke2Zvcm1hdH0iYCIgIiR7QH0iDQogfQ0KIA0KIHVzZXNfYWJz dHJhY3Rpb24gKCkgew0KLSAgZGV2aWNlPSQxDQorICBkZXZpY2U9IiR7MX0iDQogDQotICBhYnN0 cmFjdGlvbj0iYCR7Z3J1Yl9wcm9iZX0gLS1kZXZpY2UgJHtkZXZpY2V9IC0tdGFyZ2V0PWFic3Ry YWN0aW9uYCINCisgIGFic3RyYWN0aW9uPSJgIiR7Z3J1Yl9wcm9iZX0iIC0tZGV2aWNlICIke2Rl dmljZX0iIC0tdGFyZ2V0PWFic3RyYWN0aW9uYCINCiAgIGZvciBtb2R1bGUgaW4gJHthYnN0cmFj dGlvbn07IGRvDQotICAgIGlmIHRlc3QgIngke21vZHVsZX0iID0gIngkMiI7IHRoZW4NCisgICAg aWYgdGVzdCAieCR7bW9kdWxlfSIgPSAieCR7Mn0iOyB0aGVuDQogICAgICAgcmV0dXJuIDANCiAg ICAgZmkNCiAgIGRvbmUNCg== --=-3edce6p1SAEjBpf17aHi-- --=-bw51wNIlAloqhibDUtDP Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iQIcBAABAgAGBQJNmxErAAoJECmUnEL6df6RVPkP/izp1FFNgcNncoqi37eVMbvA RumTBWO0UZe4vLtfQL0Pyd5apbW253Doay+TWKsm2NE+4zIsW0+cVaBBcHDhQwDK QfSLyH7i/4+TCYJ/SXR+NH5CCkuVf1AfunageyU+GR2g0mAsdCfdhLbD2Enrzdys /9W6BKZVtJKYQDccxODKQVMLRtFNQP2Znz1BwdvBVjY50k1Ts75MMlVMiE3XpAk0 ul7EixnOhs32k3pJLh05LMzHZ00rV8Q7CChq/YIpRcq/2Rgogjsq30vnT8VXxwXF LVAyTbr/cxSPMchrsHZy03IYcaoCHcCt1t3Oeu6zPuWVjV/oKP0xuw4qvHlp0zL0 u0n3u58uFYpOla+ziWmUAj8sJif8/mfEqHxnHKthuawoa9v/G3bc6XzYuEBWKBE3 ZaOyXBOcpjO8tlFls9McNlwpOGM5GJz/eK7UMgYVLYX62ksT1WQUYTbIsAfndN65 7Qw26PumRRNP0U8m+p01Wredka+NTMiKhLP8N0fMwyQKOchxDcouy+JIvNixKjIT OErXacp6+dP8qYIz0zH7beat0AIIkFKfwPH2aPS5g3ECviRVAZScSPKl8nnUKG61 wXpwakMrGSOBcHrdIsZxzzF6HUVEWWOKNK0z2t9URcp1M5xLm1VNkHofMdVckp4R MM7uCEgbazgqNahKUB7k =QNx4 -----END PGP SIGNATURE----- --=-bw51wNIlAloqhibDUtDP--