From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1Q6nBD-0005vC-Jc for garchives@archives.gentoo.org; Mon, 04 Apr 2011 17:03:15 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id C0EB81C00C; Mon, 4 Apr 2011 17:02:26 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 9E201E0776 for ; Mon, 4 Apr 2011 17:00:48 +0000 (UTC) Received: from [192.168.1.3] (ip-94-112-147-25.net.upcbroadband.cz [94.112.147.25]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: scarabeus) by smtp.gentoo.org (Postfix) with ESMTPSA id 73D551B402A for ; Mon, 4 Apr 2011 17:00:46 +0000 (UTC) Message-ID: <4D99F91D.6010108@gentoo.org> Date: Mon, 04 Apr 2011 19:00:13 +0200 From: =?UTF-8?B?VG9tw6HFoSBDaHbDoXRhbA==?= User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.15) Gecko/20110323 Lightning/1.0b3pre Thunderbird/3.1.9 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org MIME-Version: 1.0 To: Gentoo Development Subject: [gentoo-dev] KDE4 eclasses review X-Enigmail-Version: 1.1.2 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig8D85869C4554550BA67776E2" X-Archives-Salt: X-Archives-Hash: 1361cd51cd133ed8f24bbc01479e020d This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig8D85869C4554550BA67776E2 Content-Type: multipart/mixed; boundary="------------040404070904070102050508" This is a multi-part message in MIME format. --------------040404070904070102050508 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi guys, since we didn't do this for quite long time I would like kde4 eclasses reviewed as whole rather than on patch basis (altho i attach the patches for convenience too). It is 2 years since we reviewed them last time fully on -dev so lets see how much weird/useless logic we can find (more heads know more). Remember: nitpick on everything cause this thing is used in quite a lot ebuilds so we need it in top-notch shape :) This update brings support for git since upstream is slowly moving to git repos from SVN. Dropped support for eapi2. Usage of fdo/gnome classes to update mime stuff. Most of the koffice code removed as being obsoleted and various loads of whitespace stuff. Cheers Tom --------------040404070904070102050508 Content-Type: text/plain; name="kde4-base.eclass" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kde4-base.eclass" IyBDb3B5cmlnaHQgMTk5OS0yMDEwIEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mgoj ICRIZWFkZXI6ICQKCiMgQEVDTEFTUzoga2RlNC1iYXNlLmVjbGFzcwojIEBNQUlOVEFJTkVS OgojIGtkZUBnZW50b28ub3JnCiMgQEJMVVJCOiBUaGlzIGVjbGFzcyBwcm92aWRlcyBmdW5j dGlvbnMgZm9yIGtkZSA0LlggZWJ1aWxkcwojIEBERVNDUklQVElPTjoKIyBUaGUga2RlNC1i YXNlLmVjbGFzcyBwcm92aWRlcyBzdXBwb3J0IGZvciBidWlsZGluZyBLREU0IGJhc2VkIGVi dWlsZHMKIyBhbmQgS0RFNCBhcHBsaWNhdGlvbnMuCiMKIyBOT1RFOiBLREUgNCBlYnVpbGRz IGN1cnJlbnRseSBzdXBwb3J0IEVBUEkgIjMiLiAgVGhpcyB3aWxsIGJlIHJldmlld2VkCiMg b3ZlciB0aW1lIGFzIG5ldyBFQVBJIHZlcnNpb25zIGFyZSBhcHByb3ZlZC4KCiMgQEVDTEFT Uy1WQVJJQUJMRTogVklSVFVBTFhfUkVRVUlSRUQKIyBAREVTQ1JJUFRJT046CiMgRm9yIHBy b3BlciBkZXNjcmlwdGlvbiBzZWUgdmlydHVhbHguZWNsYXNzIG1hbnBhZ2UuCiMgSGVyZSB3 ZSByZWRlZmluZSBkZWZhdWx0IHZhbHVlIHRvIGJlIG1hbnVhbCwgaWYgeW91ciBwYWNrYWdl IG5lZWRzIHZpcnR1YWx4CiMgZm9yIHRlc3RzIHlvdSBzaG91bGQgcHJvY2VlZCB3aXRoIHNl dHRpbmcgVklSVFVBTFhfUkVRVUlSRUQ9dGVzdC4KOiAke1ZJUlRVQUxYX1JFUVVJUkVEOj1t YW51YWx9Cgppbmhlcml0IGtkZTQtZnVuY3Rpb25zIGZkby1taW1lIGdub21lMi11dGlscyBi YXNlIHZpcnR1YWx4IHZlcnNpb25hdG9yIGV1dGlscwoKaWYgW1sgJHtCVUlMRF9UWVBFfSA9 IGxpdmUgXV07IHRoZW4KCWNhc2UgJHtLREVfU0NNfSBpbgoJCXN2bikgaW5oZXJpdCBzdWJ2 ZXJzaW9uIDs7CgkJZ2l0KSBpbmhlcml0IGdpdCA7OwoJZXNhYwpmaQoKIyBARUNMQVNTLVZB UklBQkxFOiBDTUFLRV9SRVFVSVJFRAojIEBERVNDUklQVElPTjoKIyBTcGVjaWZ5IGlmIGNt YWtlIGJ1aWxkc3lzdGVtIGlzIGJlaW5nIHVzZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmUgJ2Fs d2F5cycgYW5kICduZXZlcicuCiMgUGxlYXNlIG5vdGUgdGhhdCBpZiBpdCdzIHNldCB0byAn bmV2ZXInIHlvdSBuZWVkIHRvIGV4cGxpY2l0bHkgb3ZlcnJpZGUgZm9sbG93aW5nIHBoYXNl czoKIyBzcmNfY29uZmlndXJlLCBzcmNfY29tcGlsZSwgc3JjX3Rlc3QgYW5kIHNyY19pbnN0 YWxsLgojIERlZmF1bHRzIHRvICdhbHdheXMnLgo6ICR7Q01BS0VfUkVRVUlSRUQ6PWFsd2F5 c30KaWYgW1sgJHtDTUFLRV9SRVFVSVJFRH0gPSBhbHdheXMgXV07IHRoZW4KCWJ1aWxkc3lz dGVtX2VjbGFzcz0iY21ha2UtdXRpbHMiCglleHBvcnRfZm5zPSJzcmNfY29uZmlndXJlIHNy Y19jb21waWxlIHNyY190ZXN0IHNyY19pbnN0YWxsIgpmaQoKIyBWZXJpZnkgS0RFX01JTklN QUwgKGRpc3BsYXkgUUEgbm90aWNlIGluIHBrZ19zZXR1cCwgc3RpbGwgd2UgbmVlZCB0byBm aXggaXQgaGVyZSkKaWYgW1sgLW4gJHtLREVfTUlOSU1BTH0gXV07IHRoZW4KCWZvciBzbG90 IGluICR7S0RFX1NMT1RTW0BdfSAke0tERV9MSVZFX1NMT1RTW0BdfTsgZG8KCQlbWyAke0tE RV9NSU5JTUFMfSA9ICR7c2xvdH0gXV0gJiYgS0RFX01JTklNQUxfVkFMSUQ9MSAmJiBicmVh awoJZG9uZQoJdW5zZXQgc2xvdAoJW1sgLXogJHtLREVfTUlOSU1BTF9WQUxJRH0gXV0gJiYg dW5zZXQgS0RFX01JTklNQUwKZWxzZQoJS0RFX01JTklNQUxfVkFMSUQ9MQpmaQoKIyBARUNM QVNTLVZBUklBQkxFOiBLREVfTUlOSU1BTAojIEBERVNDUklQVElPTjoKIyBUaGlzIHZhcmlh YmxlIGlzIHVzZWQgd2hlbiBLREVfUkVRVUlSRUQgaXMgc2V0LCB0byBzcGVjaWZ5IHJlcXVp cmVkIEtERSBtaW5pbWFsCiMgdmVyc2lvbiBmb3IgYXBwcyB0byB3b3JrLiBDdXJyZW50bHkg ZGVmYXVsdHMgdG8gNC40CiMgT25lIG1heSBvdmVycmlkZSB0aGlzIHZhcmlhYmxlIHRvIHJh aXNlIHZlcnNpb24gcmVxdWlyZW1lbnRzLgojIEZvciBwb3NzaWJsZSB2YWx1ZXMgbG9vayBh dCBLREVfU0xPVFMgYW5kIEtERV9MSVZFX1NMT1RTIHZhcmlhYmxlcy4KIyBOb3RlIHRoYXQg aXQgaXMgZml4ZWQgdG8gJHtTTE9UfSBmb3Iga2RlLWJhc2UgcGFja2FnZXMuCktERV9NSU5J TUFMPSIke0tERV9NSU5JTUFMOi00LjR9IgoKIyBTZXQgc2xvdCBmb3IgS0RFQkFTRSBrbm93 biBwYWNrYWdlcwpjYXNlICR7S0RFQkFTRX0gaW4KCWtkZS1iYXNlKQoJCW1ham9yPSQoZ2V0 X21ham9yX3ZlcnNpb24pCgkJbWlub3I9JChnZXRfdmVyc2lvbl9jb21wb25lbnRfcmFuZ2Ug MikKCQltaWNybz0kKGdldF92ZXJzaW9uX2NvbXBvbmVudF9yYW5nZSAzKQoJCSMgRGV0ZXJt aW5lIFNMT1QgZnJvbSBQVnMKCQlbWyAke1BWfSA9PSA5OTk5KiBdXSAmJiBTTE9UPWxpdmUg IyByZWd1bGFyIGxpdmUKCQlbWyAke21ham9yfSAtZXEgNCAmJiAke21pY3JvfSA9PSA5OTk5 IF1dICYmIFNMT1Q9JHttYWpvcn0uJHttaW5vcn0gIyBzdGFibGUgbGl2ZQoJCWlmIFtbICR7 bWFqb3J9IC1lcSA0ICYmICR7bWljcm99ICE9IDk5OTkgXV07IHRoZW4KCQkJW1sgJHttaWNy b30gLWx0IDYwIF1dICYmIFwKCQkJCVNMT1Q9JHttYWpvcn0uJHttaW5vcn0KCQkJW1sgJHtt aWNyb30gLWdlIDYwIF1dICYmCgkJCQlTTE9UPSR7bWFqb3J9LiQoKCRtaW5vciArIDEpKQoJ CWZpCgkJW1sgLXogJHtTTE9UfSBdXSAmJiBkaWUgIlVuc3VwcG9ydGVkICR7UFZ9IgoJCUtE RV9NSU5JTUFMPSIke1NMT1R9IgoJCTs7Cglrb2ZmaWNlKQoJCVNMT1Q9IjIiCgkJOzsKCWtk ZXZlbG9wKQoJCWlmIFtbICR7QlVJTERfVFlQRX0gPSBsaXZlIF1dOyB0aGVuCgkJCSMgQEVD TEFTUy1WQVJJQUJMRTogS0RFVkVMT1BfVkVSU0lPTgoJCQkjIEBERVNDUklQVElPTjoKCQkJ IyBTcGVjaWZpZXMgS0RldmVsb3AgdmVyc2lvbi4gRGVmYXVsdCBpcyA0LjAuMCBmb3IgdGFn Z2VkIHBhY2thZ2VzIGFuZCA5OTk5IGZvciBsaXZlIHBhY2thZ2VzLgoJCQkjIEFwcGxpZXMg dG8gS0RFQkFTRT1rZGV2ZWxvcCBvbmx5LgoJCQlLREVWRUxPUF9WRVJTSU9OPSIke0tERVZF TE9QX1ZFUlNJT046LTk5OTl9IgoJCQkjIEBFQ0xBU1MtVkFSSUFCTEU6IEtERVZQTEFURk9S TV9WRVJTSU9OCgkJCSMgQERFU0NSSVBUSU9OOgoJCQkjIFNwZWNpZmllcyBLRGV2cGxhdGZv cm0gdmVyc2lvbi4gRGVmYXVsdCBpcyAxLjAuMCBmb3IgdGFnZ2VkIHBhY2thZ2VzIGFuZCA5 OTk5IGZvciBsaXZlIHBhY2thZ2VzLgoJCQkjIEFwcGxpZXMgdG8gS0RFQkFTRT1rZGV2ZWxv cCBvbmx5LgoJCQlLREVWUExBVEZPUk1fVkVSU0lPTj0iJHtLREVWUExBVEZPUk1fVkVSU0lP TjotOTk5OX0iCgkJZWxzZQoJCQljYXNlICR7UE59IGluCgkJCQlrZGV2ZWxvcHxxdWFudGEp CgkJCQkJS0RFVkVMT1BfVkVSU0lPTj0ke1BWfQoJCQkJCUtERVZQTEFURk9STV9WRVJTSU9O PSIkKCgkKGdldF9tYWpvcl92ZXJzaW9uKS0zKSkuJChnZXRfYWZ0ZXJfbWFqb3JfdmVyc2lv bikiCgkJCQkJOzsKCQkJCWtkZXZwbGF0Zm9ybSkKCQkJCQlLREVWRUxPUF9WRVJTSU9OPSIk KCgkKGdldF9tYWpvcl92ZXJzaW9uKSszKSkuJChnZXRfYWZ0ZXJfbWFqb3JfdmVyc2lvbiki CgkJCQkJS0RFVlBMQVRGT1JNX1ZFUlNJT049JHtQVn0KCQkJCQk7OwoJCQkJKikKCQkJCQlL REVWRUxPUF9WRVJTSU9OPSIke0tERVZFTE9QX1ZFUlNJT046LTQuMC4wfSIKCQkJCQlLREVW UExBVEZPUk1fVkVSU0lPTj0iJHtLREVWUExBVEZPUk1fVkVSU0lPTjotMS4wLjB9IgoJCQll c2FjCgkJZmkKCQlTTE9UPSI0IgoJCTs7CmVzYWMKCmluaGVyaXQgJHtidWlsZHN5c3RlbV9l Y2xhc3N9CgpFWFBPUlRfRlVOQ1RJT05TIHBrZ19zZXR1cCBzcmNfdW5wYWNrIHNyY19wcmVw YXJlICR7ZXhwb3J0X2Zuc30gcGtnX3ByZWluc3QgcGtnX3Bvc3RpbnN0IHBrZ19wb3N0cm0K CnVuc2V0IGJ1aWxkc3lzdGVtX2VjbGFzcwp1bnNldCBleHBvcnRfZm5zCgojIEBFQ0xBU1Mt VkFSSUFCTEU6IERFQ0xBUkFUSVZFX1JFUVVJUkVECiMgQERFU0NSSVBUSU9OOgojIElzIHF0 LWRlY2xhcmF0aXZlIHJlcXVpcmVkPyBQb3NzaWJsZSB2YWx1ZXMgYXJlICdhbHdheXMnLCAn b3B0aW9uYWwnIGFuZCAnbmV2ZXInLgojIFRoaXMgdmFyaWFibGUgbXVzdCBiZSBzZXQgYmVm b3JlIGluaGVyaXRpbmcgYW55IGVjbGFzc2VzLiBEZWZhdWx0cyB0byAnbmV2ZXInLgpERUNM QVJBVElWRV9SRVFVSVJFRD0iJHtERUNMQVJBVElWRV9SRVFVSVJFRDotbmV2ZXJ9IgoKIyBA RUNMQVNTLVZBUklBQkxFOiBRVEhFTFBfUkVRVUlSRUQKIyBAREVTQ1JJUFRJT046CiMgSXMg cXQtYXNzaXN0YW50IHJlcXVpcmVkPyBQb3NzaWJsZSB2YWx1ZXMgYXJlICdhbHdheXMnLCAn b3B0aW9uYWwnIGFuZCAnbmV2ZXInLgojIFRoaXMgdmFyaWFibGUgbXVzdCBiZSBzZXQgYmVm b3JlIGluaGVyaXRpbmcgYW55IGVjbGFzc2VzLiBEZWZhdWx0cyB0byAnbmV2ZXInLgpRVEhF TFBfUkVRVUlSRUQ9IiR7UVRIRUxQX1JFUVVJUkVEOi1uZXZlcn0iCgojIEBFQ0xBU1MtVkFS SUFCTEU6IE9QRU5HTF9SRVFVSVJFRAojIEBERVNDUklQVElPTjoKIyBJcyBxdC1vcGVuZ2wg cmVxdWlyZWQ/IFBvc3NpYmxlIHZhbHVlcyBhcmUgJ2Fsd2F5cycsICdvcHRpb25hbCcgYW5k ICduZXZlcicuCiMgVGhpcyB2YXJpYWJsZSBtdXN0IGJlIHNldCBiZWZvcmUgaW5oZXJpdGlu ZyBhbnkgZWNsYXNzZXMuIERlZmF1bHRzIHRvICduZXZlcicuCk9QRU5HTF9SRVFVSVJFRD0i JHtPUEVOR0xfUkVRVUlSRUQ6LW5ldmVyfSIKCiMgQEVDTEFTUy1WQVJJQUJMRTogTVVMVElN RURJQV9SRVFVSVJFRAojIEBERVNDUklQVElPTjoKIyBJcyBxdC1tdWx0aW1lZGlhIHJlcXVp cmVkPyBQb3NzaWJsZSB2YWx1ZXMgYXJlICdhbHdheXMnLCAnb3B0aW9uYWwnIGFuZCAnbmV2 ZXInLgojIFRoaXMgdmFyaWFibGUgbXVzdCBiZSBzZXQgYmVmb3JlIGluaGVyaXRpbmcgYW55 IGVjbGFzc2VzLiBEZWZhdWx0cyB0byAnbmV2ZXInLgpNVUxUSU1FRElBX1JFUVVJUkVEPSIk e01VTFRJTUVESUFfUkVRVUlSRUQ6LW5ldmVyfSIKCiMgQEVDTEFTUy1WQVJJQUJMRTogV0VC S0lUX1JFUVVJUkVECiMgQERFU0NSSVBUSU9OOgojIElzIHF0LXdlYmtpdCByZXF1cmVkPyBQ b3NzaWJsZSB2YWx1ZXMgYXJlICdhbHdheXMnLCAnb3B0aW9uYWwnIGFuZCAnbmV2ZXInLgoj IFRoaXMgdmFyaWFibGUgbXVzdCBiZSBzZXQgYmVmb3JlIGluaGVyaXRpbmcgYW55IGVjbGFz c2VzLiBEZWZhdWx0cyB0byAnbmV2ZXInLgpXRUJLSVRfUkVRVUlSRUQ9IiR7V0VCS0lUX1JF UVVJUkVEOi1uZXZlcn0iCgojIEBFQ0xBU1MtVkFSSUFCTEU6IENQUFVOSVRfUkVRVUlSRUQK IyBAREVTQ1JJUFRJT046CiMgSXMgY3BwdW5pdCByZXF1aXJlZCBmb3IgdGVzdHM/IFBvc3Np YmxlIHZhbHVlcyBhcmUgJ2Fsd2F5cycsICdvcHRpb25hbCcgYW5kICduZXZlcicuCiMgVGhp cyB2YXJpYWJsZSBtdXN0IGJlIHNldCBiZWZvcmUgaW5oZXJpdGluZyBhbnkgZWNsYXNzZXMu IERlZmF1bHRzIHRvICduZXZlcicuCkNQUFVOSVRfUkVRVUlSRUQ9IiR7Q1BQVU5JVF9SRVFV SVJFRDotbmV2ZXJ9IgoKIyBARUNMQVNTLVZBUklBQkxFOiBLREVfUkVRVUlSRUQKIyBAREVT Q1JJUFRJT046CiMgSXMga2RlIHJlcXVpcmVkPyBQb3NzaWJsZSB2YWx1ZXMgYXJlICdhbHdh eXMnLCAnb3B0aW9uYWwnIGFuZCAnbmV2ZXInLgojIFRoaXMgdmFyaWFibGUgbXVzdCBiZSBz ZXQgYmVmb3JlIGluaGVyaXRpbmcgYW55IGVjbGFzc2VzLiBEZWZhdWx0cyB0byAnYWx3YXlz JwojIElmIHNldCB0byAnYWx3YXlzJyBvciAnb3B0aW9uYWwnLCBLREVfTUlOSU1BTCBtYXkg YmUgb3ZlcnJpZGVuIGFzIHdlbGwuCiMgTm90ZSB0aGF0IGZvciBrZGUtYmFzZSBwYWNrYWdl cyB0aGlzIHZhcmlhYmxlIGlzIGZpeGVkIHRvICdhbHdheXMnLgpLREVfUkVRVUlSRUQ9IiR7 S0RFX1JFUVVJUkVEOi1hbHdheXN9IgoKIyBARUNMQVNTLVZBUklBQkxFOiBLREVfSEFOREJP T0sKIyBAREVTQ1JJUFRJT046CiMgU2V0IHRvIGVuYWJsZSBoYW5kYm9vayBpbiBhcHBsaWNh dGlvbi4gUG9zc2libGUgdmFsdWVzIGFyZSAnYWx3YXlzJywgJ29wdGlvbmFsJwojIChoYW5k Ym9vayBVU0UgZmxhZykgYW5kICduZXZlcicuCiMgVGhpcyB2YXJpYWJsZSBtdXN0IGJlIHNl dCBiZWZvcmUgaW5oZXJpdGluZyBhbnkgZWNsYXNzZXMuIERlZmF1bHRzIHRvICduZXZlcicu CiMgSXQgYWRkcyBkZWZhdWx0IGhhbmRib29rIGRpcnMgZm9yIGtkZS1iYXNlIHBhY2thZ2Vz IHRvIEtNRVhUUkEgYW5kIGluIGFueSBjYXNlIGl0CiMgZW5zdXJlcyBidWlsZHRpbWUgYW5k IHJ1bnRpbWUgZGVwZW5kZW5jaWVzLgpLREVfSEFOREJPT0s9IiR7S0RFX0hBTkRCT09LOi1u ZXZlcn0iCgojIEBFQ0xBU1MtVkFSSUFCTEU6IEtERV9MSU5HVUFTX0xJVkVfT1ZFUlJJREUK IyBAREVTQ1JJUFRJT046CiMgU2V0IHRoaXMgdmFyaWJsZSBpZiB5b3Ugd2FudCB5b3VyIGxp dmUgcGFja2FnZSB0byBtYW5hZ2UgaXRzCiMgdHJhbnNsYXRpb25zLiAoTW9zdGx5IGFsbCBr ZGUgZWJ1aWxkcyBkb2VzIG5vdCBzaGlwIGRvY3VtZW50YXRpb24KIyBhbmQgdHJhbnNsYXRp b25zIGluIGxpdmUgZWJ1aWxkcykKaWYgW1sgJHtCVUlMRF9UWVBFfSA9PSBsaXZlICYmIC16 ICR7S0RFX0xJTkdVQVNfTElWRV9PVkVSUklERX0gJiYgJHtLREVCQVNFfSAhPSAia2RlLWJh c2UiIF1dOyB0aGVuCglLREVfSEFOREJPT0s9bmV2ZXIKCUtERV9MSU5HVUFTPSIiCmZpCgoj IFNldHVwIHBhY2thZ2VzIGluaGVyaXRpbmcgdGhpcyBlY2xhc3MKY2FzZSAke0tERUJBU0V9 IGluCglrZGUtYmFzZSkKCQlIT01FUEFHRT0iaHR0cDovL3d3dy5rZGUub3JnLyIKCQlMSUNF TlNFPSJHUEwtMiIKCQlpZiBbWyAkQlVJTERfVFlQRSA9IGxpdmUgXV07IHRoZW4KCQkJIyBE aXNhYmxlIHRlc3RzIGZvciBsaXZlIGVidWlsZHMKCQkJUkVTVFJJQ1QrPSIgdGVzdCIKCQkJ IyBMaXZlIGVidWlsZHMgaW4ga2RlLWJhc2UgZGVmYXVsdCB0byBrZGVwcmVmaXggYnkgZGVm YXVsdAoJCQlJVVNFKz0iICtrZGVwcmVmaXgiCgkJZWxzZQoJCQkjIEFsbCBvdGhlciBlYnVp bGQgdHlwZXMgZGVmYXVsdCB0byAta2RlcHJlZml4IGFzIGJlZm9yZQoJCQlJVVNFKz0iIGtk ZXByZWZpeCIKCQlmaQoJCSMgVGhpcyBjb2RlIGlzIHRvIHByZXZlbnQgcG9ydGFnZSBmcm9t IHNlYXJjaGluZyBHRU5UT09fTUlSUk9SUyBmb3IKCQkjIHBhY2thZ2VzIHRoYXQgd2lsbCBu ZXZlciBiZSBtaXJyb3JlZC4gKEFzIHRoZXkgb25seSB3aWxsIGV2ZXIgYmUgaW4KCQkjIHRo ZSBvdmVybGF5KS4KCQljYXNlICR7UFZ9IGluCgkJCSo5OTk5KiB8IDQuPy5bNi05XT8pCgkJ CQlSRVNUUklDVCs9IiBtaXJyb3IiCgkJCQk7OwoJCWVzYWMKCQkjIEJsb2NrIGluc3RhbGxh dGlvbiBvZiBvdGhlciBTTE9UUyB1bmxlc3Mga2RlcHJlZml4CgkJUkRFUEVORCs9IiAkKGJs b2NrX290aGVyX3Nsb3RzKSIKCQk7OwoJa29mZmljZSkKCQlIT01FUEFHRT0iaHR0cDovL3d3 dy5rb2ZmaWNlLm9yZy8iCgkJTElDRU5TRT0iR1BMLTIiCgkJOzsKCWtkZXZlbG9wKQoJCUhP TUVQQUdFPSJodHRwOi8vd3d3LmtkZXZlbG9wLm9yZy8iCgkJTElDRU5TRT0iR1BMLTIiCgkJ OzsKZXNhYwoKIyBARUNMQVNTLVZBUklBQkxFOiBRVF9NSU5JTUFMCiMgQERFU0NSSVBUSU9O OgojIERldGVybWluZSB2ZXJzaW9uIG9mIHF0IHdlIGVuZm9yY2UgYXMgbWluaW1hbCBmb3Ig dGhlIHBhY2thZ2UuCmlmIHNsb3RfaXNfYXRfbGVhc3QgNC42ICIke0tERV9NSU5JTUFMfSI7 IHRoZW4KCVFUX01JTklNQUw9IiR7UVRfTUlOSU1BTDotNC43LjB9IgplbHNlCglRVF9NSU5J TUFMPSIke1FUX01JTklNQUw6LTQuNi4zfSIKZmkKCiMgRGVjbGFyYXRpdmUgZGVwZW5kZW5j aWVzCnF0ZGVjbGFyYXRpdmVkZXBlbmQ9IgoJPj14MTEtbGlicy9xdC1kZWNsYXJhdGl2ZS0k e1FUX01JTklNQUx9OjQKIgpjYXNlICR7REVDTEFSQVRJVkVfUkVRVUlSRUR9IGluCglhbHdh eXMpCgkJQ09NTU9OREVQRU5EKz0iICR7cXRkZWNsYXJhdGl2ZWRlcGVuZH0iCgkJOzsKCW9w dGlvbmFsKQoJCUlVU0UrPSIgZGVjbGFyYXRpdmUiCgkJQ09NTU9OREVQRU5EKz0iIGRlY2xh cmF0aXZlPyAoICR7cXRkZWNsYXJhdGl2ZWRlcGVuZH0gKSIKCQk7OwoJKikgOzsKZXNhYwp1 bnNldCBxdGRlY2xhcmF0aXZlZGVwZW5kCgojIFF0SGVscCBkZXBlbmRlbmNpZXMKcXRoZWxw ZGVwZW5kPSIKCT49eDExLWxpYnMvcXQtYXNzaXN0YW50LSR7UVRfTUlOSU1BTH06NAoiCmNh c2UgJHtRVEhFTFBfUkVRVUlSRUR9IGluCglhbHdheXMpCgkJQ09NTU9OREVQRU5EKz0iICR7 cXRoZWxwZGVwZW5kfSIKCQk7OwoJb3B0aW9uYWwpCgkJSVVTRSs9IiBxdGhlbHAiCgkJQ09N TU9OREVQRU5EKz0iIHF0aGVscD8gKCAke3F0aGVscGRlcGVuZH0gKSIKCQk7Owplc2FjCnVu c2V0IHF0aGVscGRlcGVuZAoKIyBPcGVuR0wgZGVwZW5kZW5jaWVzCnF0b3BlbmdsZGVwZW5k PSIKCT49eDExLWxpYnMvcXQtb3BlbmdsLSR7UVRfTUlOSU1BTH06NAoiCmNhc2UgJHtPUEVO R0xfUkVRVUlSRUR9IGluCglhbHdheXMpCgkJQ09NTU9OREVQRU5EKz0iICR7cXRvcGVuZ2xk ZXBlbmR9IgoJCTs7CglvcHRpb25hbCkKCQlJVVNFKz0iIG9wZW5nbCIKCQlDT01NT05ERVBF TkQrPSIgb3BlbmdsPyAoICR7cXRvcGVuZ2xkZXBlbmR9ICkiCgkJOzsKCSopIDs7CmVzYWMK dW5zZXQgcXRvcGVuZ2xkZXBlbmQKCiMgTXVsdGlNZWRpYSBkZXBlbmRlbmNpZXMKcXRtdWx0 aW1lZGlhZGVwZW5kPSIKCT49eDExLWxpYnMvcXQtbXVsdGltZWRpYS0ke1FUX01JTklNQUx9 OjQKIgpjYXNlICR7TVVMVElNRURJQV9SRVFVSVJFRH0gaW4KCWFsd2F5cykKCQlDT01NT05E RVBFTkQrPSIgJHtxdG11bHRpbWVkaWFkZXBlbmR9IgoJCTs7CglvcHRpb25hbCkKCQlJVVNF Kz0iIG11bHRpbWVkaWEiCgkJQ09NTU9OREVQRU5EKz0iIG11bHRpbWVkaWE/ICggJHtxdG11 bHRpbWVkaWFkZXBlbmR9ICkiCgkJOzsKCSopIDs7CmVzYWMKdW5zZXQgcXRtdWx0aW1lZGlh ZGVwZW5kCgojIFdlYktpdCBkZXBlbmRlbmNpZXMKY2FzZSAke0tERV9SRVFVSVJFRH0gaW4K CWFsd2F5cykKCQlxdHdlYmtpdHVzZWRlcHM9IltrZGVdIgoJCTs7CglvcHRpb25hbCkKCQlx dHdlYmtpdHVzZWRlcHM9IltrZGU/XSIKCQk7OwoJKikgOzsKZXNhYwpxdHdlYmtpdGRlcGVu ZD0iCgk+PXgxMS1saWJzL3F0LXdlYmtpdC0ke1FUX01JTklNQUx9OjQke3F0d2Via2l0dXNl ZGVwc30KIgp1bnNldCBxdHdlYmtpdHVzZWRlcHMKY2FzZSAke1dFQktJVF9SRVFVSVJFRH0g aW4KCWFsd2F5cykKCQlDT01NT05ERVBFTkQrPSIgJHtxdHdlYmtpdGRlcGVuZH0iCgkJOzsK CW9wdGlvbmFsKQoJCUlVU0UrPSIgd2Via2l0IgoJCUNPTU1PTkRFUEVORCs9IiB3ZWJraXQ/ ICggJHtxdHdlYmtpdGRlcGVuZH0gKSIKCQk7OwoJKikgOzsKZXNhYwp1bnNldCBxdHdlYmtp dGRlcGVuZAoKIyBDcHBVbml0IGRlcGVuZGVuY2llcwpjcHB1aW50ZGVwZW5kPSIKCWRldi11 dGlsL2NwcHVuaXQKIgpjYXNlICR7Q1BQVU5JVF9SRVFVSVJFRH0gaW4KCWFsd2F5cykKCQlE RVBFTkQrPSIgJHtjcHB1aW50ZGVwZW5kfSIKCQk7OwoJb3B0aW9uYWwpCgkJSVVTRSs9IiB0 ZXN0IgoJCURFUEVORCs9IiB0ZXN0PyAoICR7Y3BwdWludGRlcGVuZH0gKSIKCQk7OwoJKikg OzsKZXNhYwp1bnNldCBjcHB1aW50ZGVwZW5kCgojIEtERSBkZXBlbmRlbmNpZXMKIyBRdCBh Y2Nlc3NpYmlsaXR5IGNsYXNzZXMgYXJlIG5lZWRlZCBpbiB2YXJpb3VzIHBsYWNlcywgYnVn IDMyNTQ2MQprZGVjb21tb25kZXBlbmQ9IgoJZGV2LWxhbmcvcGVybAoJPj14MTEtbGlicy9x dC1jb3JlLSR7UVRfTUlOSU1BTH06NFtxdDNzdXBwb3J0LHNzbF0KCT49eDExLWxpYnMvcXQt Z3VpLSR7UVRfTUlOSU1BTH06NFthY2Nlc3NpYmlsaXR5LGRidXNdCgk+PXgxMS1saWJzL3F0 LXF0M3N1cHBvcnQtJHtRVF9NSU5JTUFMfTo0W2FjY2Vzc2liaWxpdHksa2RlXQoJPj14MTEt bGlicy9xdC1zY3JpcHQtJHtRVF9NSU5JTUFMfTo0Cgk+PXgxMS1saWJzL3F0LXNxbC0ke1FU X01JTklNQUx9OjRbcXQzc3VwcG9ydF0KCT49eDExLWxpYnMvcXQtc3ZnLSR7UVRfTUlOSU1B TH06NAoJPj14MTEtbGlicy9xdC10ZXN0LSR7UVRfTUlOSU1BTH06NAoJIWFxdWE/ICgKCQl4 MTEtbGlicy9saWJYZXh0CgkJeDExLWxpYnMvbGliWHQKCQl4MTEtbGlicy9saWJYeGY4NnZt CgkpCiIKCmlmIFtbICR7UE59ICE9IGtkZWxpYnMgXV07IHRoZW4KCWtkZWNvbW1vbmRlcGVu ZCs9IiAkKGFkZF9rZGViYXNlX2RlcCBrZGVsaWJzKSIKCWlmIFtbICR7S0RFQkFTRX0gPSBr ZGV2ZWxvcCBdXTsgdGhlbgoJCWlmIFtbICR7UE59ICE9IGtkZXZwbGF0Zm9ybSBdXTsgdGhl bgoJCQkjIEBFQ0xBU1MtVkFSSUFCTEU6IEtERVZQTEFURk9STV9SRVFVSVJFRAoJCQkjIEBE RVNDUklQVElPTjoKCQkJIyBTcGVjaWZpZXMgd2hldGhlciBrZGV2cGxhdGZvcm0gaXMgcmVx dWlyZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmUgJ2Fsd2F5cycgKGRlZmF1bHQpIGFuZCAnbmV2 ZXInLgoJCQkjIEFwcGxpZXMgdG8gS0RFQkFTRT1rZGV2ZWxvcCBvbmx5LgoJCQlLREVWUExB VEZPUk1fUkVRVUlSRUQ9IiR7S0RFVlBMQVRGT1JNX1JFUVVJUkVEOi1hbHdheXN9IgoJCQlj YXNlICR7S0RFVlBMQVRGT1JNX1JFUVVJUkVEfSBpbgoJCQkJYWx3YXlzKQoJCQkJCWtkZWNv bW1vbmRlcGVuZCs9IgoJCQkJCQk+PWRldi11dGlsL2tkZXZwbGF0Zm9ybS0ke0tERVZQTEFU Rk9STV9WRVJTSU9OfQoJCQkJCSIKCQkJCQk7OwoJCQkJKikgOzsKCQkJZXNhYwoJCWZpCglm aQpmaQoKa2RlZGVwZW5kPSIKCWRldi11dGlsL2F1dG9tb2MKCWRldi11dGlsL3BrZ2NvbmZp ZwoJIWFxdWE/ICgKCQk+PXgxMS1saWJzL2xpYlh0c3QtMS4xLjAKCQl4MTEtcHJvdG8veGY4 NnZpZG1vZGVwcm90bwoJKQoiCgprZGVyZGVwZW5kPSIiCgojIGFsbCBwYWNrYWdlcyBuZWVk cyBveHlnZW4gaWNvbnMgZm9yIGJhc2ljIGljb25zZXQKaWYgW1sgJHtQTn0gIT0gb3h5Z2Vu LWljb25zIF1dOyB0aGVuCglrZGVyZGVwZW5kKz0iICQoYWRkX2tkZWJhc2VfZGVwIG94eWdl bi1pY29ucykiCmZpCgojIGFkZCBhIGRlcGVuZGVuY3kgb3ZlciBrZGUtbDEwbiBpZiBFQVBJ NCBpcyBhcm91bmQKaWYgW1sgJHtLREVCQVNFfSAhPSAia2RlLWJhc2UiIF1dICYmIFtbIC1u ICR7S0RFX0xJTkdVQVN9IF1dICYmIGhhcyAiJHtFQVBJOi0wfSIgNDsgdGhlbgoJdXNlZGVw PScnCglmb3IgX2xpbmd1YSBpbiAke0tERV9MSU5HVUFTfTsgZG8KCQlbWyAtbiAke3VzZWRl cH0gXV0gJiYgdXNlZGVwKz0iLCIKCQl1c2VkZXArPSJsaW5ndWFzXyR7X2xpbmd1YX0oKyk/ IgoJZG9uZQoJIyBpZiBvdXIgcGFja2FnZSBoYXMgbGlnbnVhcyBwdWxsIGluIGtkZS1sMTBu IHdpdGggc2VsZWN0ZWQgbGluZ3VhCglrZGVyZGVwZW5kKz0iICQoYWRkX2tkZWJhc2VfZGVw IGtkZS1sMTBuICR7dXNlZGVwfSkiCgl1bnNldCB1c2VkZXAgX2xpbmd1YQpmaQoKa2RlaGFu ZGJvb2tkZXBlbmQ9IgoJYXBwLXRleHQvZG9jYm9vay14bWwtZHRkOjQuMgoJYXBwLXRleHQv ZG9jYm9vay14c2wtc3R5bGVzaGVldHMKIgprZGVoYW5kYm9va3JkZXBlbmQ9IgoJJChhZGRf a2RlYmFzZV9kZXAga2RlbGlicyAnaGFuZGJvb2snKQoiCmNhc2UgJHtLREVfSEFOREJPT0t9 IGluCglhbHdheXMpCgkJa2RlZGVwZW5kKz0iICR7a2RlaGFuZGJvb2tkZXBlbmR9IgoJCVtb ICR7UE59ICE9IGtkZWxpYnMgXV0gJiYga2RlcmRlcGVuZCs9IiAke2tkZWhhbmRib29rcmRl cGVuZH0iCgkJOzsKCW9wdGlvbmFsKQoJCUlVU0UrPSIgK2hhbmRib29rIgoJCWtkZWRlcGVu ZCs9IiBoYW5kYm9vaz8gKCAke2tkZWhhbmRib29rZGVwZW5kfSApIgoJCVtbICR7UE59ICE9 IGtkZWxpYnMgXV0gJiYga2RlcmRlcGVuZCs9IiBoYW5kYm9vaz8gKCAke2tkZWhhbmRib29r cmRlcGVuZH0gKSIKCQk7OwoJKikgOzsKZXNhYwp1bnNldCBrZGVoYW5kYm9va2RlcGVuZCBr ZGVoYW5kYm9va3JkZXBlbmQKCmNhc2UgJHtLREVfUkVRVUlSRUR9IGluCglhbHdheXMpCgkJ SVVTRSs9IiBhcXVhIgoJCVtbIC1uICR7a2RlY29tbW9uZGVwZW5kfSBdXSAmJiBDT01NT05E RVBFTkQrPSIgJHtrZGVjb21tb25kZXBlbmR9IgoJCVtbIC1uICR7a2RlZGVwZW5kfSBdXSAm JiBERVBFTkQrPSIgJHtrZGVkZXBlbmR9IgoJCVtbIC1uICR7a2RlcmRlcGVuZH0gXV0gJiYg UkRFUEVORCs9IiAke2tkZXJkZXBlbmR9IgoJCTs7CglvcHRpb25hbCkKCQlJVVNFKz0iIGFx dWEga2RlIgoJCVtbIC1uICR7a2RlY29tbW9uZGVwZW5kfSBdXSAmJiBDT01NT05ERVBFTkQr PSIga2RlPyAoICR7a2RlY29tbW9uZGVwZW5kfSApIgoJCVtbIC1uICR7a2RlZGVwZW5kfSBd XSAmJiBERVBFTkQrPSIga2RlPyAoICR7a2RlZGVwZW5kfSApIgoJCVtbIC1uICR7a2RlcmRl cGVuZH0gXV0gJiYgUkRFUEVORCs9IiBrZGU/ICggJHtrZGVyZGVwZW5kfSApIgoJCTs7Cgkq KSA7Owplc2FjCgp1bnNldCBrZGVjb21tb25kZXBlbmQga2RlZGVwZW5kIGtkZXJkZXBlbmQK CmRlYnVnLXByaW50ICIke0xJTkVOT30gJHtFQ0xBU1N9ICR7RlVOQ05BTUV9OiBDT01NT05E RVBFTkQgaXMgJHtDT01NT05ERVBFTkR9IgpkZWJ1Zy1wcmludCAiJHtMSU5FTk99ICR7RUNM QVNTfSAke0ZVTkNOQU1FfTogREVQRU5EIChvbmx5KSBpcyAke0RFUEVORH0iCmRlYnVnLXBy aW50ICIke0xJTkVOT30gJHtFQ0xBU1N9ICR7RlVOQ05BTUV9OiBSREVQRU5EIChvbmx5KSBp cyAke1JERVBFTkR9IgoKIyBBY2N1bXVsYXRlIGRlcGVuZGVuY2llcyBzZXQgYnkgdGhpcyBl Y2xhc3MKREVQRU5EKz0iICR7Q09NTU9OREVQRU5EfSIKUkRFUEVORCs9IiAke0NPTU1PTkRF UEVORH0iCnVuc2V0IENPTU1PTkRFUEVORAoKIyBBZGQgZXhwZXJpbWVudGFsIGtkZWVuYWJs ZWZpbmFsLCBtYXNrZWQgYnkgZGVmYXVsdApJVVNFKz0iIGtkZWVuYWJsZWZpbmFsIgoKIyBG ZXRjaCBzZWN0aW9uIC0gSWYgdGhlIGVidWlsZCdzIGNhdGVnb3J5IGlzIG5vdCAna2RlLWJh c2UnIGFuZCBpZiBpdCBpcyBub3QgYQojIGtvZmZpY2UgZWJ1aWxkLCB0aGUgVVJJIHNob3Vs ZCBiZSBzZXQgaW4gdGhlIGVidWlsZCBpdHNlbGYKX2NhbGN1bGF0ZV9zcmNfdXJpKCkgewoJ ZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgoKCWxvY2FsIF9rbW5hbWUg X2ttbmFtZV9wdgoKCSMgd2UgY2FsY3VsYXRlIFVSSSBvbmx5IGZvciBrbm93biBLREVCQVNF IG1vZHVsZXMKCVtbIC1uICR7S0RFQkFTRX0gXV0gfHwgcmV0dXJuCgoJIyBjYWxjdWxhdGUg dGFyYmFsbCBtb2R1bGUgbmFtZQoJaWYgW1sgLW4gJHtLTU5BTUV9IF1dOyB0aGVuCgkJIyBm aXh1cCBrZGViYXNlLWFwcHMgbmFtZQoJCWNhc2UgJHtLTU5BTUV9IGluCgkJCWtkZWJhc2Ut YXBwcykKCQkJCV9rbW5hbWU9ImtkZWJhc2UiIDs7CgkJCSopCgkJCQlfa21uYW1lPSIke0tN TkFNRX0iIDs7CgkJZXNhYwoJZWxzZQoJCV9rbW5hbWU9JHtQTn0KCWZpCglfa21uYW1lX3B2 PSIke19rbW5hbWV9LSR7UFZ9IgoJY2FzZSAke0tERUJBU0V9IGluCgkJa2RlLWJhc2UpCgkJ CWNhc2UgJHtQVn0gaW4KCQkJCTQuWzQ1Nl0uOFswNV0gfCA0Lls0NTZdLjlbMDIzNTY4XSB8 IDQuNS45NC4xKQoJCQkJCSMgVW5zdGFibGUgS0RFIFNDIHJlbGVhc2VzCgkJCQkJU1JDX1VS ST0ibWlycm9yOi8va2RlL3Vuc3RhYmxlLyR7UFZ9L3NyYy8ke19rbW5hbWVfcHZ9LnRhci5i ejIiCgkJCQkJIyBLREVQSU0gSVMgU1BFQ0lBTAoJCQkJCVtbICR7S01OQU1FfSA9PSAia2Rl cGltIiB8fCAke0tNTkFNRX0gPT0gImtkZXBpbS1ydW50aW1lIiBdXSAmJiBTUkNfVVJJPSJt aXJyb3I6Ly9rZGUvdW5zdGFibGUva2RlcGltLyR7UFZ9L3NyYy8ke19rbW5hbWVfcHZ9LnRh ci5iejIiCgkJCQkJOzsKCQkJCTQuNC5bNjc4OV0gfCA0LjQuMT8pCgkJCQkJIyBTdGFibGUg a2RlcGltIHJlbGVhc2VzCgkJCQkJU1JDX1VSST0ibWlycm9yOi8va2RlL3N0YWJsZS9rZGVw aW0tJHtQVn0vc3JjLyR7X2ttbmFtZV9wdn0udGFyLmJ6MiIKCQkJCQk7OwoJCQkJKikKCQkJ CQkjIFN0YWJsZSBLREUgU0MgcmVsZWFzZXMKCQkJCQlTUkNfVVJJPSJtaXJyb3I6Ly9rZGUv c3RhYmxlLyR7UFZ9L3NyYy8ke19rbW5hbWVfcHZ9LnRhci5iejIiCgkJCQkJOzsKCQkJZXNh YwoJCQk7OwoJCWtvZmZpY2UpCgkJCWNhc2UgJHtQVn0gaW4KCQkJCTIuWzEyMzRdLls2LTld KikgU1JDX1VSST0ibWlycm9yOi8va2RlL3Vuc3RhYmxlLyR7X2ttbmFtZV9wdn0vJHtfa21u YW1lX3B2fS50YXIuYnoyIiA7OwoJCQkJKikgU1JDX1VSST0ibWlycm9yOi8va2RlL3N0YWJs ZS8ke19rbW5hbWVfcHZ9LyR7X2ttbmFtZV9wdn0udGFyLmJ6MiIgOzsKCQkJZXNhYwoJCQk7 OwoJCWtkZXZlbG9wKQoJCQlTUkNfVVJJPSJtaXJyb3I6Ly9rZGUvc3RhYmxlL2tkZXZlbG9w LyR7S0RFVkVMT1BfVkVSU0lPTn0vc3JjLyR7UH0udGFyLmJ6MiIKCQkJOzsKCWVzYWMKfQoK X2NhbGN1bGF0ZV9saXZlX3JlcG8oKSB7CglkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNO QU1FfSAiJEAiCgoJU1JDX1VSST0iIgoJY2FzZSAke0tERV9TQ019IGluCgkJc3ZuKQoJCQkj IERldGVybWluZSBicmFuY2ggVVJMIGJhc2VkIG9uIGxpdmUgdHlwZQoJCQlsb2NhbCBicmFu Y2hfcHJlZml4CgkJCWNhc2UgJHtQVn0gaW4KCQkJCTk5OTkqKQoJCQkJCSMgdHJ1bmsKCQkJ CQlicmFuY2hfcHJlZml4PSJ0cnVuay9LREUiCgkJCQkJOzsKCQkJCSopCgkJCQkJIyBicmFu Y2gKCQkJCQlicmFuY2hfcHJlZml4PSJicmFuY2hlcy9LREUvJHtTTE9UfSIKCQkJCQkjIEBF Q0xBU1MtVkFSSUFCTEU6IEVTVk5fUFJPSkVDVF9TVUZGSVgKCQkJCQkjIEBERVNDUklQVElP TgoJCQkJCSMgU3VmZml4IGFwcGVuZGVkIHRvIEVTVk5fUFJPSkVDVCBkZXBlbmRpbmcgb24g ZmV0Y2hlZCBicmFuY2guCgkJCQkJIyBEZWZhdWx0cyBpcyBlbXB0eSAoZm9yIC05OTk5ID0g dHJ1bmspLCBhbmQgIi0ke1BWfSIgb3RoZXJ3aXNlLgoJCQkJCUVTVk5fUFJPSkVDVF9TVUZG SVg9Ii0ke1BWfSIKCQkJCQk7OwoJCQllc2FjCgkJCSMgQEVDTEFTUy1WQVJJQUJMRTogRVNW Tl9NSVJST1IKCQkJIyBAREVTQ1JJUFRJT046CgkJCSMgVGhpcyB2YXJpYWJsZSBhbGxvd3Mg ZWFzeSBvdmVycmlkaW5nIG9mIGRlZmF1bHQga2RlIG1pcnJvciBzZXJ2aWNlCgkJCSMgKGFu b25zdm4pIHdpdGggYW55dGhpbmcgZWxzZSB5b3UgbWlnaHQgd2FudCB0byB1c2UuCgkJCUVT Vk5fTUlSUk9SPSR7RVNWTl9NSVJST1I6PXN2bjovL2Fub25zdm4ua2RlLm9yZy9ob21lL2tk ZX0KCQkJIyBTcGxpdCBlYnVpbGQsIG9yIGV4dHJhZ2VhciBzdHVmZgoJCQlpZiBbWyAtbiAk e0tNTkFNRX0gXV07IHRoZW4KCQkJCUVTVk5fUFJPSkVDVD0iJHtLTU5BTUV9JHtFU1ZOX1BS T0pFQ1RfU1VGRklYfSIKCQkJCWlmIFtbIC16ICR7S01OT01PRFVMRX0gXV0gJiYgW1sgLXog JHtLTU1PRFVMRX0gXV07IHRoZW4KCQkJCQlLTU1PRFVMRT0iJHtQTn0iCgkJCQlmaQoJCQkJ IyBTcGxpdCBrZGUtYmFzZS8gZWJ1aWxkczogKHRoZXkgcmVzaWRlIGluIHRydW5rL0tERSkK CQkJCWNhc2UgJHtLTU5BTUV9IGluCgkJCQkJa2RlYmFzZS0qKQoJCQkJCQlFU1ZOX1JFUE9f VVJJPSIke0VTVk5fTUlSUk9SfS8ke2JyYW5jaF9wcmVmaXh9L2tkZWJhc2UvJHtLTU5BTUUj a2RlYmFzZS19IgoJCQkJCQk7OwoJCQkJCWtkZWxpYnMtKikKCQkJCQkJRVNWTl9SRVBPX1VS ST0iJHtFU1ZOX01JUlJPUn0vJHticmFuY2hfcHJlZml4fS9rZGVsaWJzLyR7S01OQU1FI2tk ZWxpYnMtfSIKCQkJCQkJOzsKCQkJCQlrZGVyZXZpZXcqKQoJCQkJCQlFU1ZOX1JFUE9fVVJJ PSIke0VTVk5fTUlSUk9SfS90cnVuay8ke0tNTkFNRX0vJHtLTU1PRFVMRX0iCgkJCQkJCTs7 CgkJCQkJa2Rlc3VwcG9ydCkKCQkJCQkJRVNWTl9SRVBPX1VSST0iJHtFU1ZOX01JUlJPUn0v dHJ1bmsvJHtLTU5BTUV9LyR7S01NT0RVTEV9IgoJCQkJCQlFU1ZOX1BST0pFQ1Q9IiR7UE59 JHtFU1ZOX1BST0pFQ1RfU1VGRklYfSIKCQkJCQkJOzsKCQkJCQlrZGUqKQoJCQkJCQlFU1ZO X1JFUE9fVVJJPSIke0VTVk5fTUlSUk9SfS8ke2JyYW5jaF9wcmVmaXh9LyR7S01OQU1FfSIK CQkJCQkJOzsKCQkJCQlleHRyYWdlYXIqfHBsYXlncm91bmQqKQoJCQkJCQkjIFVucGFjayB0 aGVtIGluIHRvcGxldmVsIGRpciwgc28gdGhhdCB0aGV5IHdvbid0IGNvbmZsaWN0IHdpdGgg a2RlNC1tZXRhCgkJCQkJCSMgYnVpbGQgcGFja2FnZXMgZnJvbSBzYW1lIHN2biBsb2NhdGlv bi4KCQkJCQkJRVNWTl9SRVBPX1VSST0iJHtFU1ZOX01JUlJPUn0vdHJ1bmsvJHtLTU5BTUV9 LyR7S01NT0RVTEV9IgoJCQkJCQlFU1ZOX1BST0pFQ1Q9IiR7UE59JHtFU1ZOX1BST0pFQ1Rf U1VGRklYfSIKCQkJCQkJOzsKCQkJCQlrb2ZmaWNlKQoJCQkJCQlFU1ZOX1JFUE9fVVJJPSIk e0VTVk5fTUlSUk9SfS90cnVuay8ke0tNTkFNRX0iCgkJCQkJCTs7CgkJCQkJKikKCQkJCQkJ RVNWTl9SRVBPX1VSST0iJHtFU1ZOX01JUlJPUn0vdHJ1bmsvJHtLTU5BTUV9LyR7S01NT0RV TEV9IgoJCQkJCQk7OwoJCQkJZXNhYwoJCQllbHNlCgkJCQkjIGtkZWxpYnMsIGtkZXBpbWxp YnMKCQkJCUVTVk5fUkVQT19VUkk9IiR7RVNWTl9NSVJST1J9LyR7YnJhbmNoX3ByZWZpeH0v JHtQTn0iCgkJCQlFU1ZOX1BST0pFQ1Q9IiR7UE59JHtFU1ZOX1BST0pFQ1RfU1VGRklYfSIK CQkJZmkKCQkJIyBARUNMQVNTLVZBUklBQkxFOiBFU1ZOX1VQX0ZSRVEKCQkJIyBAREVTQ1JJ UFRJT046CgkJCSMgVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGZvciBzcGVjaWZ5aW5nIHRoZSB0 aW1lb3V0IGJldHdlZW4gc3ZuIHN5bmNlcwoJCQkjIGZvciBrZGUtYmFzZSBhbmQga29mZmlj ZSBtb2R1bGVzLiBEb2VzIG5vdCBhZmZlY3QgbWlzYyBhcHBzLgoJCQkjIERlZmF1bHQgdmFs dWUgaXMgMSBob3VyLgoJCQlbWyAke0tERUJBU0V9ID0ga2RlLWJhc2UgfHwgJHtLREVCQVNF fSA9IGtvZmZpY2UgXV0gJiYgRVNWTl9VUF9GUkVRPSR7RVNWTl9VUF9GUkVROi0xfQoJCQk7 OwoJCWdpdCkKCQkJbG9jYWwgX2ttbmFtZQoJCQkjIEBFQ0xBU1MtVkFSSUFCTEU6IEVHSVRf TUlSUk9SCgkJCSMgQERFU0NSSVBUSU9OOgoJCQkjIFRoaXMgdmFyaWFibGUgYWxsb3dzIGVh c3kgb3ZlcnJpZGluZyBvZiBkZWZhdWx0IGtkZSBtaXJyb3Igc2VydmljZQoJCQkjIChhbm9u Z2l0KSB3aXRoIGFueXRoaW5nIGVsc2UgeW91IG1pZ2h0IHdhbnQgdG8gdXNlLgoJCQlFR0lU X01JUlJPUj0ke0VHSVRfTUlSUk9SOj1naXQ6Ly9hbm9uZ2l0LmtkZS5vcmd9CgoJCQkjIEBF Q0xBU1MtVkFSSUFCTEU6IEVHSVRfUkVQT05BTUUKCQkJIyBAREVTQ1JJUFRJT046CgkJCSMg VGhpcyB2YXJpYWJsZSBhbGxvd3Mgb3ZlcnJpZGluZyBvZiBkZWZhdWx0IHJlcG9zaXRvcnkK CQkJIyBuYW1lLiBTcGVjaWZ5IG9ubHkgaWYgdGhpcyBkaWZmZXIgZnJvbSBQTiBhbmQgS01O QU1FLgoJCQlpZiBbWyAtbiAke0VHSVRfUkVQT05BTUV9IF1dOyB0aGVuCgkJCQkjIHRoZSBy ZXBvc2l0b3J5IGFuZCBrbW5hbWUgZGlmZmVyZW50CgkJCQlfa21uYW1lPSR7RUdJVF9SRVBP TkFNRX0KCQkJZWxpZiBbWyAtbiAke0tNTkFNRX0gXV07IHRoZW4KCQkJCV9rbW5hbWU9JHtL TU5BTUV9CgkJCWVsc2UKCQkJCV9rbW5hbWU9JHtQTn0KCQkJZmkKCgkJCSMgZGVmYXVsdCBi cmFuY2hpbmcKCQkJY2FzZSAke1BWfSBpbgoJCQkJOTk5OSopIDs7CgkJCQkqKQoJCQkJCSMg c2V0IEVHSVRfQlJBTkNIIGFuZCBFR0lUX0NPTU1JVCB0byAke1NMT1R9CgkJCQkJY2FzZSAk e19rbW5hbWV9IGluCgkJCQkJCWtkZXBsYXNtYS1hZGRvbnMgfCBrZGVwaW0gfCBrZGVwaW0t cnVudGltZSB8IGtkZXBpbWxpYnMpCgkJCQkJCQlFR0lUX0JSQU5DSD0iJHtTTE9UfSIKCQkJ CQkJCTs7CgkJCQkJCSopIEVHSVRfQlJBTkNIPSJLREUvJHtTTE9UfSIgOzsKCQkJCQllc2Fj CgkJCQkJOzsKCQkJZXNhYwoKCQkJY2FzZSAkX2ttbmFtZSBpbgoJCQkJa2RlcGltfGtkZXBp bS1ydW50aW1lKQoJCQkJCWNhc2UgJHtQVn0gaW4KCQkJCQkJIyBrZGVwaW0gc3RpbGwgZGlk IG5vdCBicmFuY2gKCQkJCQkJNC42Ljk5OTkpCgkJCQkJCQlFR0lUX0JSQU5DSD0ibWFzdGVy IgoJCQkJCQkJOzsKCQkJCQllc2FjCgkJCQkJOzsKCQkJZXNhYwoJCQlFR0lUX1JFUE9fVVJJ PSIke0VHSVRfTUlSUk9SfS8ke19rbW5hbWV9IgoJCQlFR0lUX1BST0pFQ1Q9IiR7X2ttbmFt ZX0iCgoJCQlkZWJ1Zy1wcmludCAiJHtGVU5DTkFNRX06IFJlcG9zaXRvcnk6ICR7RUdJVF9S RVBPX1VSSX0iCgkJCWRlYnVnLXByaW50ICIke0ZVTkNOQU1FfTogQnJhbmNoOiAke0VHSVRf QlJBTkNIfSIKCQkJOzsKCWVzYWMKfQoKY2FzZSAke0JVSUxEX1RZUEV9IGluCglsaXZlKSBf Y2FsY3VsYXRlX2xpdmVfcmVwbyA7OwoJKikgX2NhbGN1bGF0ZV9zcmNfdXJpIDs7CmVzYWMK CmRlYnVnLXByaW50ICIke0xJTkVOT30gJHtFQ0xBU1N9ICR7RlVOQ05BTUV9OiBTUkNfVVJJ IGlzICR7U1JDX1VSSX0iCgojIEBFQ0xBU1MtVkFSSUFCTEU6IFBSRUZJWAojIEBERVNDUklQ VElPTjoKIyBTZXQgdGhlIGluc3RhbGxhdGlvbiBQUkVGSVggZm9yIG5vbiBrZGUtYmFzZSBh cHBsaWNhdGlvbnMuIEl0IGRlZmF1bHRzIHRvIC91c3IuCiMga2RlLWJhc2UgcGFja2FnZXMg Z28gaW50byBLREU0IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgKEtERURJUikgYnkgZGVmYXVs dC4KIyBObyBtYXR0ZXIgdGhlIFBSRUZJWCwgcGFja2FnZSB3aWxsIGJlIGJ1aWx0IGFnYWlu c3QgS0RFIGluc3RhbGxlZCBpbiBLREVESVIuCgojIEBGVU5DVElPTjoga2RlNC1iYXNlX3Br Z19zZXR1cAojIEBERVNDUklQVElPTjoKIyBEbyB0aGUgYmFzaWMga2RlcHJlZml4IEtERURJ UiBzZXR0aW5ncyBhbmQgZGV0ZXJtaW5lIHdpdGggd2hpY2gga2RlIHNob3VsZAojIG9wdGlv bmFsIGFwcGxpY2F0aW9ucyBsaW5rCmtkZTQtYmFzZV9wa2dfc2V0dXAoKSB7CglkZWJ1Zy1w cmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJEAiCgoJIyBRQSBlYnVpbGRzCglbWyAteiAk e0tERV9NSU5JTUFMX1ZBTElEfSBdXSAmJiBld2FybiAiUUEgTm90aWNlOiBpZ25vcmluZyBp bnZhbGlkIEtERV9NSU5JTUFMIChkZWZhdWx0aW5nIHRvICR7S0RFX01JTklNQUx9KS4iCgoJ IyBEb24ndCBzZXQgS0RFSE9NRSBkdXJpbmcgY29tcGlsYXRpb24sIGl0IHdpbGwgY2F1c2Ug YWNjZXNzIHZpb2xhdGlvbnMKCXVuc2V0IEtERUhPTUUKCglpZiBbWyAke0tERUJBU0V9ID0g a2RlLWJhc2UgXV07IHRoZW4KCQlpZiB1c2Uga2RlcHJlZml4OyB0aGVuCgkJCUtERURJUj0v dXNyL2tkZS8ke1NMT1R9CgkJZWxzZQoJCQlLREVESVI9L3VzcgoJCWZpCgkJOiAke1BSRUZJ WDo9JHtLREVESVJ9fQoJZWxzZQoJCSMgRGV0ZXJtaW5lIEtERURJUiBieSBsb29va2luZyBm b3IgdGhlIGNsb3Nlc3QgbWF0Y2ggd2l0aCBLREVfTUlOSU1BTAoJCUtERURJUj0KCQlsb2Nh bCBrZGVfbWluaW1hbF9tZXQKCQlmb3Igc2xvdCBpbiAke0tERV9TTE9UU1tAXX0gJHtLREVf TElWRV9TTE9UU1tAXX07IGRvCgkJCVtbIC16ICR7a2RlX21pbmltYWxfbWV0fSBdXSAmJiBb WyAke3Nsb3R9ID0gJHtLREVfTUlOSU1BTH0gXV0gJiYga2RlX21pbmltYWxfbWV0PTEKCQkJ aWYgW1sgLW4gJHtrZGVfbWluaW1hbF9tZXR9IF1dICYmIGhhc192ZXJzaW9uICJrZGUtYmFz ZS9rZGVsaWJzOiR7c2xvdH0iOyB0aGVuCgkJCQlpZiBoYXNfdmVyc2lvbiAia2RlLWJhc2Uv a2RlbGliczoke3Nsb3R9W2tkZXByZWZpeF0iOyB0aGVuCgkJCQkJS0RFRElSPS91c3Iva2Rl LyR7c2xvdH0KCQkJCWVsc2UKCQkJCQlLREVESVI9L3VzcgoJCQkJZmkKCQkJCWJyZWFrOwoJ CQlmaQoJCWRvbmUKCQl1bnNldCBzbG90CgoJCSMgQmFpbCBvdXQgaWYga2RlbGlicyByZXF1 aXJlZCBidXQgbm90IGZvdW5kCgkJaWYgW1sgJHtLREVfUkVRVUlSRUR9ID0gYWx3YXlzIF1d IHx8IHsgW1sgJHtLREVfUkVRVUlSRUR9ID0gb3B0aW9uYWwgXV0gJiYgdXNlIGtkZTsgfTsg dGhlbgoJCQlbWyAteiAke0tERURJUn0gXV0gJiYgZGllICJGYWlsZWQgdG8gZGV0ZXJtaW5l IEtERURJUiEiCgkJZWxzZQoJCQlbWyAteiAke0tERURJUn0gXV0gJiYgS0RFRElSPS91c3IK CQlmaQoKCQk6ICR7UFJFRklYOj0vdXNyfQoJZmkKCUVLREVESVI9JHtFUFJFRklYfSR7S0RF RElSfQoKCSMgUG9pbnQgcGtnLWNvbmZpZyBwYXRoIHRvIEtERSAqLnBjIGZpbGVzCglleHBv cnQgUEtHX0NPTkZJR19QQVRIPSIke0VLREVESVJ9LyQoZ2V0X2xpYmRpcikvcGtnY29uZmln JHtQS0dfQ09ORklHX1BBVEg6Kzoke1BLR19DT05GSUdfUEFUSH19IgoJIyBQb2ludCB0byBj b3JyZWN0IFFUIHBsdWdpbnMgcGF0aAoJUVRfUExVR0lOX1BBVEg9IiR7RUtERURJUn0vJChn ZXRfbGliZGlyKS9rZGU0L3BsdWdpbnMvIgoKCSMgRml4IFhERyBjb2xsaXNpb24gd2l0aCBz YW5kYm94CglleHBvcnQgWERHX0NPTkZJR19IT01FPSIke1R9Igp9CgojIEBGVU5DVElPTjog a2RlNC1iYXNlX3NyY191bnBhY2sKIyBAREVTQ1JJUFRJT046CiMgVGhpcyBmdW5jdGlvbiB1 bnBhY2tzIHRoZSBzb3VyY2UgdGFyYmFsbHMgZm9yIEtERTQgYXBwbGljYXRpb25zLgprZGU0 LWJhc2Vfc3JjX3VucGFjaygpIHsKCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9 ICIkQCIKCglpZiBbWyAke0JVSUxEX1RZUEV9ID0gbGl2ZSBdXTsgdGhlbgoJCWNhc2UgJHtL REVfU0NNfSBpbgoJCQlzdm4pCgkJCQltaWdyYXRlX3N0b3JlX2RpcgoJCQkJc3VidmVyc2lv bl9zcmNfdW5wYWNrCgkJCQk7OwoJCQlnaXQpCgkJCQlnaXRfc3JjX3VucGFjawoJCQkJOzsK CQllc2FjCgllbHNlCgkJdW5wYWNrICR7QX0KCWZpCn0KCiMgQEZVTkNUSU9OOiBrZGU0LWJh c2Vfc3JjX3ByZXBhcmUKIyBAREVTQ1JJUFRJT046CiMgR2VuZXJhbCBwcmUtY29uZmlndXJl IGFuZCBwcmUtY29tcGlsZSBmdW5jdGlvbiBmb3IgS0RFNCBhcHBsaWNhdGlvbnMuCiMgSXQg YWxzbyBoYW5kbGVzIHRyYW5zbGF0aW9ucyBpZiBLREVfTElOR1VBUyBpcyBkZWZpbmVkLiBT ZWUgS0RFX0xJTkdVQVMgYW5kCiMgZW5hYmxlX3NlbGVjdGVkX2xpbmd1YXMoKSBhbmQgZW5h YmxlX3NlbGVjdGVkX2RvY19saW5ndWFzKCkKIyBpbiBrZGU0LWZ1bmN0aW9ucy5lY2xhc3Mo NSkgZm9yIGZ1cnRoZXIgZGV0YWlscy4Ka2RlNC1iYXNlX3NyY19wcmVwYXJlKCkgewoJZGVi dWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgoKCSMgZW5hYmxlIGhhbmRib29r IGFuZCBsaW5ndWFzIG9ubHkgd2hlbiBub3QgdXNpbmcgbGl2ZSBlYnVpbGQKCgkjIE9ubHkg ZW5hYmxlIHNlbGVjdGVkIGxhbmd1YWdlcywgdXNlZCBmb3IgS0RFIGV4dHJhZ2VhciBhcHBz LgoJaWYgW1sgLW4gJHtLREVfTElOR1VBU30gXV07IHRoZW4KCQllbmFibGVfc2VsZWN0ZWRf bGluZ3VhcwoJZmkKCgkjIEVuYWJsZS9kaXNhYmxlIGhhbmRib29rcyBmb3Iga2RlNC1iYXNl IHBhY2thZ2VzCgkjIGtkZS1sMTBuIGluaGVyaXRzIGtkZTQtYmFzZSBidXQgaXMgbWV0cGFj a2FnZSwgc28gbm8gY2hlY2sgZm9yIGRvYwoJIyBrZGVsaWJzIGluaGVyaXRzIGtkZTQtYmFz ZSBidXQgaGFuZGxlIGluc3RhbGxpbmcgdGhlIGhhbmRib29rIGl0c2VsZgoJaWYgISBoYXMg a2RlNC1tZXRhICR7SU5IRVJJVEVEfSAmJiBoYXMgaGFuZGJvb2sgJHtJVVNFLy8rfTsgdGhl bgoJCWlmIFtbICR7S0RFQkFTRX0gPT0ga2RlLWJhc2UgXV07IHRoZW4KCQkJaWYgW1sgJHtQ Tn0gIT0ga2RlLWwxMG4gJiYgJHtQTn0gIT0ga2RlbGlicyBdXSAmJiB1c2UgIWhhbmRib29r OyB0aGVuCgkJCQkjIGRvY3VtZW50YXRpb24gaW4ga2RlNC1mdW5jdGlvbnMKCQkJCTogJHtL REVfRE9DX0RJUlM6PWRvY30KCQkJCWxvY2FsIGRpcgoJCQkJZm9yIGRpciBpbiAke0tERV9E T0NfRElSU307IGRvCgkJCQkJc2VkIC1lICIvXltbOnNwYWNlOl1dKmFkZF9zdWJkaXJlY3Rv cnlbWzpzcGFjZTpdXSooW1s6c3BhY2U6XV0qJHtkaXJ9W1s6c3BhY2U6XV0qKS9zL14vI0RP Tk9UQ09NUElMRSAvIiBcCgkJCQkJCS1lICIvXltbOnNwYWNlOl1dKkFERF9TVUJESVJFQ1RP UllbWzpzcGFjZTpdXSooW1s6c3BhY2U6XV0qJHtkaXJ9W1s6c3BhY2U6XV0qKS9zL14vI0RP Tk9UQ09NUElMRSAvIiBcCgkJCQkJCS1lICIvXltbOnNwYWNlOl1dKm1hY3JvX29wdGlvbmFs X2FkZF9zdWJkaXJlY3RvcnlbWzpzcGFjZTpdXSooW1s6c3BhY2U6XV0qJHtkaXJ9W1s6c3Bh Y2U6XV0qKS9zL14vI0RPTk9UQ09NUElMRSAvIiBcCgkJCQkJCS1lICIvXltbOnNwYWNlOl1d Kk1BQ1JPX09QVElPTkFMX0FERF9TVUJESVJFQ1RPUllbWzpzcGFjZTpdXSooW1s6c3BhY2U6 XV0qJHtkaXJ9W1s6c3BhY2U6XV0qKS9zL14vI0RPTk9UQ09NUElMRSAvIiBcCgkJCQkJCS1p IENNYWtlTGlzdHMudHh0IHx8IGRpZSAiZmFpbGVkIHRvIGNvbW1lbnQgb3V0IGhhbmRib29r IgoJCQkJZG9uZQoJCQlmaQoJCWVsc2UKCQkJZW5hYmxlX3NlbGVjdGVkX2RvY19saW5ndWFz CgkJZmkKCWZpCgoJIyBTQ00gYm9vdHN0cmFwCglpZiBbWyAke0JVSUxEX1RZUEV9ID0gbGl2 ZSBdXTsgdGhlbgoJCWNhc2UgJHtLREVfU0NNfSBpbgoJCQlzdm4pIHN1YnZlcnNpb25fc3Jj X3ByZXBhcmUgOzsKCQllc2FjCglmaQoKCSMgQXBwbHkgcGF0Y2hlcwoJYmFzZV9zcmNfcHJl cGFyZQoKCSMgU2F2ZSBsaWJyYXJ5IGRlcGVuZGVuY2llcwoJaWYgW1sgLW4gJHtLTVNBVkVM SUJTfSBdXSA7IHRoZW4KCQlzYXZlX2xpYnJhcnlfZGVwZW5kZW5jaWVzCglmaQoKCSMgSW5q ZWN0IGxpYnJhcnkgZGVwZW5kZW5jaWVzCglpZiBbWyAtbiAke0tNTE9BRExJQlN9IF1dIDsg dGhlbgoJCWxvYWRfbGlicmFyeV9kZXBlbmRlbmNpZXMKCWZpCgoJIyBSZXBsYWNlIEtERTRX b3Jrc3BhY2UgbGlicmFyeSB0YXJnZXRzCglmaW5kICIke1N9IiAtbmFtZSBDTWFrZUxpc3Rz LnR4dCBcCgkJLWV4ZWMgc2VkIC1pIC1yIC1lICdzL1wkXHtLREU0V09SS1NQQUNFX1RBU0tN QU5BR0VSXyhMSUJSQVJZfExJQlMpXH0vdGFza21hbmFnZXIvZycge30gKyBcCgkJLWV4ZWMg c2VkIC1pIC1yIC1lICdzL1wkXHtLREU0V09SS1NQQUNFX0tXT1JLU1BBQ0VfKExJQlJBUll8 TElCUylcfS9rd29ya3NwYWNlL2cnIHt9ICsgXAoJCS1leGVjIHNlZCAtaSAtciAtZSAncy9c JFx7S0RFNFdPUktTUEFDRV9TT0xJRENPTlRST0xJRkFDRVNfKExJQlJBUll8TElCUylcfS9z b2xpZGNvbnRyb2xpZmFjZXMvZycge30gKyBcCgkJLWV4ZWMgc2VkIC1pIC1yIC1lICdzL1wk XHtLREU0V09SS1NQQUNFX1NPTElEQ09OVFJPTF8oTElCUkFSWXxMSUJTKVx9L3NvbGlkY29u dHJvbC9nJyB7fSArIFwKCQktZXhlYyBzZWQgLWkgLXIgLWUgJ3MvXCRce0tERTRXT1JLU1BB Q0VfUFJPQ0VTU1VJXyhMSUJSQVJZfExJQlMpXH0vcHJvY2Vzc3VpL2cnIHt9ICsgXAoJCS1l eGVjIHNlZCAtaSAtciAtZSAncy9cJFx7S0RFNFdPUktTUEFDRV9MU09GVUlfKExJQlJBUll8 TElCUylcfS9sc29mdWkvZycge30gKyBcCgkJLWV4ZWMgc2VkIC1pIC1yIC1lICdzL1wkXHtL REU0V09SS1NQQUNFX1BMQVNNQUNMT0NLXyhMSUJSQVJZfExJQlMpXH0vcGxhc21hY2xvY2sv Zycge30gKyBcCgkJLWV4ZWMgc2VkIC1pIC1yIC1lICdzL1wkXHtLREU0V09SS1NQQUNFX05F UE9NVUtRVUVSWUNMSUVOVF8oTElCUkFSWXxMSUJTKVx9L25lcG9tdWtxdWVyeWNsaWVudC9n JyB7fSArIFwKCQktZXhlYyBzZWQgLWkgLXIgLWUgJ3MvXCRce0tERTRXT1JLU1BBQ0VfTkVQ T01VS1FVRVJZXyhMSUJSQVJZfExJQlMpXH0vbmVwb211a3F1ZXJ5L2cnIHt9ICsgXAoJCS1l eGVjIHNlZCAtaSAtciAtZSAncy9cJFx7S0RFNFdPUktTUEFDRV9LU0NSRUVOU0FWRVJfKExJ QlJBUll8TElCUylcfS9rc2NyZWVuc2F2ZXIvZycge30gKyBcCgkJLWV4ZWMgc2VkIC1pIC1y IC1lICdzL1wkXHtLREU0V09SS1NQQUNFX1dFQVRIRVJJT05fKExJQlJBUll8TElCUylcfS93 ZWF0aGVyX2lvbi9nJyB7fSArIFwKCQktZXhlYyBzZWQgLWkgLXIgLWUgJ3MvXCRce0tERTRX T1JLU1BBQ0VfS1dJTkVGRkVDVFNfKExJQlJBUll8TElCUylcfS9rd2luZWZmZWN0cy9nJyB7 fSArIFwKCQktZXhlYyBzZWQgLWkgLXIgLWUgJ3MvXCRce0tERTRXT1JLU1BBQ0VfS0RFQ09S QVRJT05TXyhMSUJSQVJZfExJQlMpXH0va2RlY29yYXRpb25zL2cnIHt9ICsgXAoJCS1leGVj IHNlZCAtaSAtciAtZSAncy9cJFx7S0RFNFdPUktTUEFDRV9LU0dSRF8oTElCUkFSWXxMSUJT KVx9L2tzZ3JkL2cnIHt9ICsgXAoJCS1leGVjIHNlZCAtaSAtciAtZSAncy9cJFx7S0RFNFdP UktTUEFDRV9LRVBIQUxfKExJQlJBUll8TElCUylcfS9rZXBoYWwvZycge30gKyBcCgkJfHwg ZGllICdmYWlsZWQgdG8gcmVwbGFjZSBLREU0V29ya3NwYWNlIGxpYnJhcnkgdGFyZ2V0cycK CgkjIEhhY2sgZm9yIG1hbnVhbHMgcmVseWluZyBvbiBvdXRkYXRlZCBEVEQsIG9ubHkgb3V0 c2lkZSBrZGUtYmFzZS9rb2ZmaWNlLy4uLgoJaWYgW1sgLXogJHtLREVCQVNFfSBdXTsgdGhl bgoJCWZpbmQgIiR7U30iIC1uYW1lICIqLmRvY2Jvb2siIFwKCQkJLWV4ZWMgc2VkIC1pIC1y IFwKCQkJCS1lICdzOi0vL0tERS8vRFREIERvY0Jvb2sgWE1MIFY0XC4xKFwuLik/LUJhc2Vk IFZhcmlhbnQgVjFcLlswMV0vL0VOOi0vL0tERS8vRFREIERvY0Jvb2sgWE1MIFY0LjItQmFz ZWQgVmFyaWFudCBWMS4xLy9FTjpnJyB7fSArIFwKCQkJfHwgZGllICdmYWlsZWQgdG8gZml4 IERvY0Jvb2sgdmFyaWFudCB2ZXJzaW9uJwoJZmkKfQoKIyBARlVOQ1RJT046IGtkZTQtYmFz ZV9zcmNfY29uZmlndXJlCiMgQERFU0NSSVBUSU9OOgojIEZ1bmN0aW9uIGZvciBjb25maWd1 cmluZyB0aGUgYnVpbGQgb2YgS0RFNCBhcHBsaWNhdGlvbnMuCmtkZTQtYmFzZV9zcmNfY29u ZmlndXJlKCkgewoJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgoKCSMg QnVpbGQgdGVzdHMgaW4gc3JjX3Rlc3Qgb25seSwgd2hlcmUgd2Ugb3ZlcnJpZGUgdGhpcyB2 YWx1ZQoJbG9jYWwgY21ha2VhcmdzPSgtREtERTRfQlVJTERfVEVTVFM9T0ZGKQoKCWlmIGhh cyBrZGVlbmFibGVmaW5hbCAke0lVU0UvLyt9ICYmIHVzZSBrZGVlbmFibGVmaW5hbDsgdGhl bgoJCWNtYWtlYXJncys9KC1ES0RFNF9FTkFCTEVfRklOQUw9T04pCglmaQoKCWlmIGhhcyBk ZWJ1ZyAke0lVU0UvLyt9ICYmIHVzZSBkZWJ1ZzsgdGhlbgoJCSMgU2V0ICJyZWFsIiBkZWJ1 ZyBtb2RlCgkJQ01BS0VfQlVJTERfVFlQRT0iRGVidWdmdWxsIgoJZWxzZQoJCSMgSGFuZGxl IGNvbW1vbiByZWxlYXNlIGJ1aWxkcwoJCWFwcGVuZC1jcHBmbGFncyAtRFFUX05PX0RFQlVH CglmaQoKCSMgU2V0IGRpc3RyaWJ1dGlvbiBuYW1lCglbWyAke1BOfSA9IGtkZWxpYnMgXV0g JiYgY21ha2VhcmdzKz0oLURLREVfRElTVFJJQlVUSU9OX1RFWFQ9R2VudG9vKQoKCSMgSGVy ZSB3ZSBzZXQgdGhlIGluc3RhbGwgcHJlZml4Cgl0Yy1pcy1jcm9zcy1jb21waWxlciB8fCBj bWFrZWFyZ3MrPSgtRENNQUtFX0lOU1RBTExfUFJFRklYPSIke0VQUkVGSVh9JHtQUkVGSVh9 IikKCgkjIFVzZSBjb2xvcnMKCVFURVNUX0NPTE9SRUQ9MQoKCSMgU2hhZG93IGV4aXN0aW5n IC91c3IgaW5zdGFsbGF0aW9ucwoJdW5zZXQgS0RFRElSUwoKCSMgSGFuZGxlIGtkZXByZWZp eC1lZCBLREUKCWlmIFtbICR7S0RFRElSfSAhPSAvdXNyIF1dOyB0aGVuCgkJIyBPdmVycmlk ZSBzb21lIGVudmlyb25tZW50IHZhcmlhYmxlcyAtIG9ubHkgd2hlbiBrZGVwcmVmaXggaXMg ZGlmZmVyZW50LAoJCSMgdG8gbm90IGJyZWFrIGNjYWNoZS9kaXN0Y2MKCQlQQVRIPSIke0VL REVESVJ9L2Jpbjoke1BBVEh9IgoKCQkjIEFwcGVuZCBsaWJyYXJ5IHNlYXJjaCBwYXRoCgkJ YXBwZW5kLWxkZmxhZ3MgLUwiJHtFS0RFRElSfS8kKGdldF9saWJkaXIpIgoKCQkjIEFwcGVu ZCBmdWxsIFJQQVRICgkJY21ha2VhcmdzKz0oLURDTUFLRV9TS0lQX1JQQVRIPU9GRikKCgkJ IyBTZXQgY21ha2UgcHJlZml4ZXMgdG8gYWxsb3cgYnVpbGRzeXN0ZW0gdG8gbG9jYXRlIHZh bGlkIEtERSBpbnN0YWxsYXRpb24KCQkjIHdoZW4gbW9yZSBhcmUgcHJlc2VudAoJCWNtYWtl YXJncys9KC1EQ01BS0VfU1lTVEVNX1BSRUZJWF9QQVRIPSIke0VLREVESVJ9IikKCWZpCgoJ I3FtYWtlIC1xdWVyeSBRVF9JTlNUQUxMX0xJQlMgdW5hdmFpbGFibGUgd2hlbiBjcm9zcy1j b21waWxpbmcKCXRjLWlzLWNyb3NzLWNvbXBpbGVyICYmIGNtYWtlYXJncys9KC1EUVRfTElC UkFSWV9ESVI9JHtST09UfS91c3IvbGliL3F0NCkKCSNrZGUtY29uZmlnIC1wYXRoIGRhdGEg dW5hdmFpbGFibGUgd2hlbiBjcm9zcy1jb21waWxpbmcKCXRjLWlzLWNyb3NzLWNvbXBpbGVy ICYmIGNtYWtlYXJncys9KC1ES0RFNF9EQVRBX0RJUj0ke1JPT1R9L3Vzci9zaGFyZS9hcHBz LykKCgkjIEhhbmRsZSBrZGVwcmVmaXggaW4gYXBwbGljYXRpb24gaXRzZWxmCglpZiAhIGhh cyBrZGVwcmVmaXggJHtJVVNFLy8rfSB8fCAhIHVzZSBrZGVwcmVmaXg7IHRoZW4KCQkjIElm IHByZWZpeCBpcyAvdXNyLCBzeXNjb25mIG5lZWRzIHRvIGJlIC9ldGMsIG5vdCAvdXNyL2V0 YwoJCWNtYWtlYXJncys9KC1EU1lTQ09ORl9JTlNUQUxMX0RJUj0iJHtFUFJFRklYfSIvZXRj KQoJZmkKCglpZiBbWyAkKGRlY2xhcmUgLXAgbXljbWFrZWFyZ3MgMj4mLSkgIT0gImRlY2xh cmUgLWEgbXljbWFrZWFyZ3M9IiogXV07IHRoZW4KCQlteWNtYWtlYXJncz0oJHtteWNtYWtl YXJnc30pCglmaQoKCW15Y21ha2VhcmdzPSgiJHtjbWFrZWFyZ3NbQF19IiAiJHtteWNtYWtl YXJnc1tAXX0iKQoKCWNtYWtlLXV0aWxzX3NyY19jb25maWd1cmUKfQoKIyBARlVOQ1RJT046 IGtkZTQtYmFzZV9zcmNfY29tcGlsZQojIEBERVNDUklQVElPTjoKIyBHZW5lcmFsIGZ1bmN0 aW9uIGZvciBjb21waWxpbmcgS0RFNCBhcHBsaWNhdGlvbnMuCmtkZTQtYmFzZV9zcmNfY29t cGlsZSgpIHsKCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCIKCgljbWFr ZS11dGlsc19zcmNfY29tcGlsZSAiJEAiCn0KCiMgQEZVTkNUSU9OOiBrZGU0LWJhc2Vfc3Jj X3Rlc3QKIyBAREVTQ1JJUFRJT046CiMgRnVuY3Rpb24gZm9yIHRlc3RpbmcgS0RFNCBhcHBs aWNhdGlvbnMuCmtkZTQtYmFzZV9zcmNfdGVzdCgpIHsKCWRlYnVnLXByaW50LWZ1bmN0aW9u ICR7RlVOQ05BTUV9ICIkQCIKCgkjIE92ZXJyaWRlIHRoaXMgdmFsdWUsIHNldCBpbiBrZGU0 LWJhc2Vfc3JjX2NvbmZpZ3VyZSgpCglteWNtYWtlYXJncys9KC1ES0RFNF9CVUlMRF9URVNU Uz1PTikKCWNtYWtlLXV0aWxzX3NyY19jb25maWd1cmUKCWtkZTQtYmFzZV9zcmNfY29tcGls ZQoKCSMgV2hlbiBydW4gYXMgbm9ybWFsIHVzZXIgZHVyaW5nIGVidWlsZCBkZXZlbG9wbWVu dCB3aXRoIHRoZSBlYnVpbGQgY29tbWFuZCwgdGhlCgkjIGtkZSB0ZXN0cyB0ZW5kIHRvIGFj Y2VzcyB0aGUgc2Vzc2lvbiBEQlVTLiBUaGlzIGhvd2V2ZXIgaXMgbm90IHBvc3NpYmxlIGlu IGEgcmVhbAoJIyBlbWVyZ2Ugb3Igb24gdGhlIHRpbmRlcmJveC4KCSMgPiBtYWtlIHN1cmUg aXQgZG9lcyBub3QgaGFwcGVuLCBzbyBiYWQgdGVzdHMgY2FuIGJlIHJlY29nbml6ZWQgYW5k IGRpc2FibGVkCgl1bnNldCBEQlVTX1NFU1NJT05fQlVTX0FERFJFU1MKCglpZiBbWyAke1ZJ UlRVQUxYX1JFUVVJUkVEfSA9PSBhbHdheXMgfHwgJHtWSVJUVUFMWF9SRVFVSVJFRH0gPT0g dGVzdCBdXTsgdGhlbgoJCSMgY2hlY2sgZm9yIHNhbml0eSBpZiBhbnlvbmUgYWxyZWFkeSBy ZWRlZmluZWQgVklSVFVBTFhfQ09NTUFORCBmcm9tIHRoZSBkZWZhdWx0CgkJaWYgW1sgJHtW SVJUVUFMWF9DT01NQU5EfSAhPSBlbWFrZSBdXTsgdGhlbgoJCQkjIHN1cnByaXNlLSB3ZSBh cmUgYWxyZWFkeSBJTlNJREUgdmlydHVhbG1ha2UhISEKCQkJZGVidWctcHJpbnQgIlFBIE5v dGljZTogVGhpcyB2ZXJzaW9uIG9mIGtkZTQtYmFzZS5lY2xhc3MgaW5jbHVkZXMgdGhlIHZp cnR1YWx4IGZ1bmN0aW9uYWxpdHkuIgoJCQlkZWJ1Zy1wcmludCAiICAgICAgICAgICBZb3Ug bWF5IE5PVCBzZXQgVklSVFVBTFhfQ09NTUFORCBvciBjYWxsIHZpcnR1YWxtYWtlIGZyb20g dGhlIGVidWlsZC4iCgkJCWRlYnVnLXByaW50ICIgICAgICAgICAgIFNldHRpbmcgVklSVFVB TFhfUkVRVUlSRUQgaXMgY29tcGxldGVseSBzdWZmaWNpZW50LiBTZWUgdGhlIgoJCQlkZWJ1 Zy1wcmludCAiICAgICAgICAgICBrZGU0LWJhc2UuZWNsYXNzIGRvY3MgZm9yIGRldGFpbHMu Li4gQXBwbHlpbmcgd29ya2Fyb3VuZC4iCgkJCWNtYWtlLXV0aWxzX3NyY190ZXN0CgkJZWxz ZQoJCQlWSVJUVUFMWF9DT01NQU5EPSJjbWFrZS11dGlsc19zcmNfdGVzdCIgdmlydHVhbG1h a2UKCQlmaQoJZWxzZQoJCWNtYWtlLXV0aWxzX3NyY190ZXN0CglmaQp9CgojIEBGVU5DVElP Tjoga2RlNC1iYXNlX3NyY19pbnN0YWxsCiMgQERFU0NSSVBUSU9OOgojIEZ1bmN0aW9uIGZv ciBpbnN0YWxsaW5nIEtERTQgYXBwbGljYXRpb25zLgprZGU0LWJhc2Vfc3JjX2luc3RhbGwo KSB7CglkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJEAiCgoJaWYgW1sgLW4g JHtLTVNBVkVMSUJTfSBdXSA7IHRoZW4KCQlpbnN0YWxsX2xpYnJhcnlfZGVwZW5kZW5jaWVz CglmaQoKCSMgSW5zdGFsbCBjb21tb24gZG9jdW1lbnRhdGlvbiBvZiBLREU0IGFwcGxpY2F0 aW9ucwoJbG9jYWwgZG9jCglpZiAhIGhhcyBrZGU0LW1ldGEgJHtJTkhFUklURUR9OyB0aGVu CgkJZm9yIGRvYyBpbiAiJHtTfSIve0FVVEhPUlMsQ0hBTkdFTE9HLENoYW5nZUxvZyosUkVB RE1FKixORVdTLFRPRE8sSEFDS0lOR307IGRvCgkJCVtbIC1mICR7ZG9jfSAmJiAtcyAke2Rv Y30gXV0gJiYgZG9kb2MgIiR7ZG9jfSIKCQlkb25lCgkJZm9yIGRvYyBpbiAiJHtTfSIvKi97 QVVUSE9SUyxDSEFOR0VMT0csQ2hhbmdlTG9nKixSRUFETUUqLE5FV1MsVE9ETyxIQUNLSU5H fTsgZG8KCQkJW1sgLWYgJHtkb2N9ICYmIC1zICR7ZG9jfSBdXSAmJiBuZXdkb2MgIiR7ZG9j fSIgIiQoYmFzZW5hbWUgJChkaXJuYW1lICR7ZG9jfSkpLiQoYmFzZW5hbWUgJHtkb2N9KSIK CQlkb25lCglmaQoKCWNtYWtlLXV0aWxzX3NyY19pbnN0YWxsCn0KCiMgQEZVTkNUSU9OOiBr ZGU0LWJhc2VfcGtnX3ByZWluc3QKIyBAREVTQ1JJUFRJT046CiMgRnVuY3Rpb24gc3Rvcmlu ZyBpY29uIGNhY2hlcwprZGU0LWJhc2VfcGtnX3ByZWluc3QoKSB7CglkZWJ1Zy1wcmludC1m dW5jdGlvbiAke0ZVTkNOQU1FfSAiJEAiCgoJZ25vbWUyX2ljb25fc2F2ZWxpc3QKfQoKIyBA RlVOQ1RJT046IGtkZTQtYmFzZV9wa2dfcG9zdGluc3QKIyBAREVTQ1JJUFRJT046CiMgRnVu Y3Rpb24gdG8gcmVidWlsZCB0aGUgS0RFIFN5c3RlbSBDb25maWd1cmF0aW9uIENhY2hlIGFm dGVyIGFuIGFwcGxpY2F0aW9uIGhhcyBiZWVuIGluc3RhbGxlZC4Ka2RlNC1iYXNlX3BrZ19w b3N0aW5zdCgpIHsKCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCIKCgln bm9tZTJfaWNvbl9jYWNoZV91cGRhdGUKCWZkby1taW1lX2Rlc2t0b3BfZGF0YWJhc2VfdXBk YXRlCglmZG8tbWltZV9taW1lX2RhdGFiYXNlX3VwZGF0ZQoJYnVpbGRzeWNvY2EKCglpZiBb WyAteiAke0lfS05PV19XSEFUX0lfQU1fRE9JTkd9IF1dOyB0aGVuCgkJaWYgaGFzIGtkZWVu YWJsZWZpbmFsICR7SVVTRS8vK30gJiYgdXNlIGtkZWVuYWJsZWZpbmFsOyB0aGVuCgkJCWVj aG8KCQkJZXdhcm4gIldBUk5JTkchIHlvdSBoYXZlIGtkZWVuYWJsZSBmaW5hbCB1c2VmbGFn IGVuYWJsZWQuIgoJCQlld2FybiAiVGhpcyB1c2VmbGFnIG5lZWRzIHRvIGJlIGVuYWJsZWQg b24gQUxMIGtkZSB1c2luZyBwYWNrYWdlcyBhbmQiCgkJCWV3YXJuICJpcyBrbm93biB0byBj YXVzZSBpc3N1ZXMuIgoJCQlld2FybiAiWW91IGFyZSB1c2luZyB0aGlzIHNldHVwIGF0IHlv dXIgb3duIHJpc2sgYW5kIHRoZSBrZGUgdGVhbSBkb2VzIG5vdCIKCQkJZXdhcm4gInRha2Ug cmVzcG9uc2liaWxpdGllcyBmb3IgZGVhZCBraXR0ZW5zLiIKCQkJZWNobwoJCWZpCgkJaWYg W1sgJHtCVUlMRF9UWVBFfSA9IGxpdmUgXV07IHRoZW4KCQkJZWNobwoJCQllaW5mbyAiV0FS TklORyEgVGhpcyBpcyBhbiBleHBlcmltZW50YWwgbGl2ZSBlYnVpbGQgb2YgJHtDQVRFR09S WX0vJHtQTn0iCgkJCWVpbmZvICJVc2UgaXQgYXQgeW91ciBvd24gcmlzay4iCgkJCWVpbmZv ICJEbyBfTk9UXyBmaWxlIGJ1Z3MgYXQgYnVncy5nZW50b28ub3JnIGJlY2F1c2Ugb2YgdGhp cyBlYnVpbGQhIgoJCQllY2hvCgkJZWxpZiBbWyAke0JVSUxEX1RZUEV9ICE9IGxpdmUgXV0g JiYgaGFzIGtkZXByZWZpeCAke0lVU0UvLyt9ICYmIHVzZSBrZGVwcmVmaXg7IHRoZW4KCQkJ IyB3YXJuaW5nIGFib3V0IGtkZXByZWZpeCBmb3Igbm9uLWxpdmUgdXNlcnMKCQkJZWNobwoJ CQlld2FybiAiV0FSTklORyEgWW91IGhhdmUgdGhlIGtkZXByZWZpeCB1c2VmbGFnIGVuYWJs ZWQuIgoJCQlld2FybiAiVGhpcyBzZXR0aW5nIGlzIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkIGFu ZCBtaWdodCBsZWFkIHRvIHBvdGVudGlhbCB0cm91YmxlIgoJCQlld2FybiAid2l0aCBLREUg dXBkYXRlIHN0cmF0ZWdpZXMuIgoJCQlld2FybiAiWW91IGFyZSB1c2luZyB0aGlzIHNldHVw IGF0IHlvdXIgb3duIHJpc2sgYW5kIHRoZSBrZGUgdGVhbSBkb2VzIG5vdCIKCQkJZXdhcm4g InRha2UgcmVzcG9uc2liaWxpdGllcyBmb3IgZGVhZCBraXR0ZW5zLiIKCQkJZWNobwoJCWZp CgkJIyBmb3IgYWxsIDNyZCBwYXJ0eSBzb2Z0IHRlbGwgdXNlciB0aGF0IGhlIFNIT1VMRCBp bnN0YWxsIGtkZWJhc2Utc3RhcnRrZGUgb3Iga2RlYmFzZS1ydW50aW1lLW1ldGEKCQlpZiBb WyAke0tERUJBU0V9ICE9IGtkZS1iYXNlIF1dICYmIFwKCQkJCSEgaGFzX3ZlcnNpb24gJ2tk ZS1iYXNlL2tkZWJhc2UtcnVudGltZS1tZXRhJyAmJiBcCgkJCQkhIGhhc192ZXJzaW9uICdr ZGUtYmFzZS9rZGViYXNlLXN0YXJ0a2RlJzsgdGhlbgoJCQlpZiBbWyAke0tERV9SRVFVSVJF RH0gPT0gYWx3YXlzIF1dIHx8ICggW1sgJHtLREVfUkVRVUlSRUR9ID09IG9wdGlvbmFsIF1d ICYmIHVzZSBrZGUgKTsgdGhlbgoJCQkJZWNobwoJCQkJZXdhcm4gIldBUk5JTkchIFlvdXIg c3lzdGVtIGNvbmZpZ3VyYXRpb24gY29udGFpbnMgbmVpdGhlciBcImtkZS1iYXNlL2tkZWJh c2UtcnVudGltZS1tZXRhXCIiCgkJCQlld2FybiAibm9yIFwia2RlLWJhc2Uva2RlYmFzZS1z dGFydGtkZVwiLiBZb3UgbmVlZCBvbmUgb2YgYWJvdmUuIgoJCQkJZXdhcm4gIldpdGggdGhp cyBzZXR0aW5nIHlvdSBhcmUgdW5zdXBwb3J0ZWQgYnkgS0RFIHRlYW0uIgoJCQkJZXdhcm4g IkFsbCBtaXNzaW5nIGZlYXR1cmVzIHlvdSByZXBvcnQgZm9yIG1pc2MgcGFja2FnZXMgd2ls bCBiZSBwcm9iYWJseSBpZ25vcmVkIG9yIGNsb3NlZCBhcyBJTlZBTElELiIKCQkJZmkKCQlm aQoJZmkKfQoKIyBARlVOQ1RJT046IGtkZTQtYmFzZV9wa2dfcG9zdHJtCiMgQERFU0NSSVBU SU9OOgojIEZ1bmN0aW9uIHRvIHJlYnVpbGQgdGhlIEtERSBTeXN0ZW0gQ29uZmlndXJhdGlv biBDYWNoZSBhZnRlciBhbiBhcHBsaWNhdGlvbiBoYXMgYmVlbiByZW1vdmVkLgprZGU0LWJh c2VfcGtnX3Bvc3RybSgpIHsKCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIk QCIKCglnbm9tZTJfaWNvbl9jYWNoZV91cGRhdGUKCWZkby1taW1lX2Rlc2t0b3BfZGF0YWJh c2VfdXBkYXRlCglmZG8tbWltZV9taW1lX2RhdGFiYXNlX3VwZGF0ZQoJYnVpbGRzeWNvY2EK fQo= --------------040404070904070102050508 Content-Type: text/plain; name="kde4-functions.eclass" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kde4-functions.eclass" IyBDb3B5cmlnaHQgMTk5OS0yMDEwIEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mgoj ICRIZWFkZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L2VjbGFzcy9rZGU0LWZ1bmN0aW9u cy5lY2xhc3MsdiAxLjQxIDIwMTAvMTIvMjkgMTc6NTY6MzQgdGFtcGFrcmFwIEV4cCAkCgpp bmhlcml0IHZlcnNpb25hdG9yCgojIEBFQ0xBU1M6IGtkZTQtZnVuY3Rpb25zLmVjbGFzcwoj IEBNQUlOVEFJTkVSOgojIGtkZUBnZW50b28ub3JnCiMgQEJMVVJCOiBDb21tb24gZWJ1aWxk IGZ1bmN0aW9ucyBmb3IgS0RFIDQgcGFja2FnZXMKIyBAREVTQ1JJUFRJT046CiMgVGhpcyBl Y2xhc3MgY29udGFpbnMgYWxsIGZ1bmN0aW9ucyBzaGFyZWQgYnkgdGhlIGRpZmZlcmVudCBl Y2xhc3NlcywKIyBmb3IgS0RFIDQgZWJ1aWxkcy4KCiMgQEVDTEFTUy1WQVJJQUJMRTogRUFQ SQojIEBERVNDUklQVElPTjoKIyBDdXJyZW50bHkga2RlNCBlY2xhc3NlcyBzdXBwb3J0IEVB UEkgMyBhbmQgNC4KY2FzZSAke0VBUEk6LTB9IGluCgk0fDMpIDogOzsKCSopIGRpZSAiRUFQ ST0ke0VBUEl9IGlzIG5vdCBzdXBwb3J0ZWQiIDs7CmVzYWMKCiMgQEVDTEFTUy1WQVJJQUJM RTogS0RFX09WRVJSSURFX01JTklNQUwKIyBAREVTQ1JJUFRJT046CiMgRm9yIHVzZSBvbmx5 IGluIHZlcnkgZmV3IHdlbGwtZGVmaW5lZCBjYXNlczsgbm9ybWFsbHkgaXQgc2hvdWxkIGJl IHVuc2V0LgojIElmIHRoaXMgdmFyaWFibGUgaXMgc2V0LCBhbGwgY2FsbHMgdG8gYWRkX2tk ZWJhc2VfZGVwIHJldHVybiBhIGRlcGVuZGVuY3kgb24KIyBhdCBsZWFzdCB0aGlzIHZlcnNp b24sIGluZGVwZW5kZW50IG9mIHRoZSB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlIGl0c2VsZi4K IyBJZiB5b3Uga25vdyBleGFjdGx5IHRoYXQgb25lIHNwZWNpZmljIE5FVyBLREUgY29tcG9u ZW50IGJ1aWxkcyBhbmQgcnVucyBmaW5lCiMgd2l0aCBhbGwgdGhlIHJlc3Qgb2YgS0RFIGF0 IGFuIE9MREVSIHZlcnNpb24sIHlvdSBjYW4gc2V0IHRoaXMgb2xkIHZlcnNpb24gaGVyZS4K IyBXYXJuaW5nLSBtYXkgbGVhZCB0byBnZW5lcmFsIGluc3RhYmlsaXR5IGFuZCBraWxsIHlv dXIgcGV0IHRhcmdoLgoKIyBARUNMQVNTLVZBUklBQkxFOiBLREVCQVNFCiMgQERFU0NSSVBU SU9OOgojIFRoaXMgZ2V0cyBzZXQgdG8gYSBub24temVybyB2YWx1ZSB3aGVuIGEgcGFja2Fn ZSBpcyBjb25zaWRlcmVkIGEga2RlIG9yCiMga29mZmljZSBlYnVpbGQuCmlmIFtbICR7Q0FU RUdPUll9ID0ga2RlLWJhc2UgXV07IHRoZW4KCWRlYnVnLXByaW50ICIke0VDTEFTU306IEtE RUJBU0UgZWJ1aWxkIHJlY29nbml6ZWQiCglLREVCQVNFPWtkZS1iYXNlCmVsaWYgW1sgJHtL TU5BTUUtJHtQTn19ID0ga29mZmljZSBdXTsgdGhlbgoJZGVidWctcHJpbnQgIiR7RUNMQVNT fTogS09GRklDRSBlYnVpbGQgcmVjb2duaXplZCIKCUtERUJBU0U9a29mZmljZQplbGlmIFtb ICR7S01OQU1FLSR7UE59fSA9IGtkZXZlbG9wIF1dOyB0aGVuCglkZWJ1Zy1wcmludCAiJHtF Q0xBU1N9OiBLREVWRUxPUCBlYnVpbGQgcmVjb2duaXplZCIKCUtERUJBU0U9a2RldmVsb3AK ZmkKCiMgQEVDTEFTUy1WQVJJQUJMRTogS0RFX1NMT1RTCiMgQERFU0NSSVBUSU9OOgojIFRo ZSBzbG90cyB1c2VkIGJ5IGFsbCBLREUgdmVyc2lvbnMgbGF0ZXIgdGhhbiA0LjAuIFRoZSBs aXZlIEtERSByZWxlYXNlcyB1c2UKIyBLREVfTElWRV9TTE9UUyBpbnN0ZWFkLiBWYWx1ZXMg c2hvdWxkIGJlIG9yZGVyZWQuCktERV9TTE9UUz0oICI0LjEiICI0LjIiICI0LjMiICI0LjQi ICI0LjUiICI0LjYiICkKCiMgQEVDTEFTUy1WQVJJQUJMRTogS0RFX0xJVkVfU0xPVFMKIyBA REVTQ1JJUFRJT046CiMgVGhlIHNsb3RzIHVzZWQgYnkgS0RFIGxpdmUgdmVyc2lvbnMuIFZh bHVlcyBzaG91bGQgYmUgb3JkZXJlZC4KS0RFX0xJVkVfU0xPVFM9KCAibGl2ZSIgKQoKIyBk ZXRlcm1pbmUgdGhlIGJ1aWxkIHR5cGUKaWYgW1sgJHtTTE9UfSA9IGxpdmUgfHwgJHtQVn0g PSAqOTk5OSogXV07IHRoZW4KCUJVSUxEX1RZUEU9ImxpdmUiCmVsc2UKCUJVSUxEX1RZUEU9 InJlbGVhc2UiCmZpCmV4cG9ydCBCVUlMRF9UWVBFCgojIFNldCByZXBvbmFtZSBhbmQgU0NN IGZvciBtb2R1bGVzZXMgdGhhdCBoYXZlIGZ1bGx5IG1pZ3JhdGVkIHRvIGdpdAojIChoYWNr IC0gaXQncyBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgdG8gYmUgYmVmb3JlIFNDTSBpbmhlcml0 cyBmcm9tIGtkZTQtYmFzZSkKaWYgW1sgJHtCVUlMRF9UWVBFfSA9PSBsaXZlIF1dOyB0aGVu CgljYXNlICIke0tNTkFNRX0iIGluCgkJa2RlYmFzZS13b3Jrc3BhY2UpCgkJCUtERV9TQ009 ImdpdCIKCQkJRUdJVF9SRVBPTkFNRT0ke0VHSVRfUkVQT05BTUU6PWtkZS13b3Jrc3BhY2V9 CgkJOzsKCQlrZGViYXNlLXJ1bnRpbWUpCgkJCUtERV9TQ009ImdpdCIKCQkJRUdJVF9SRVBP TkFNRT0ke0VHSVRfUkVQT05BTUU6PWtkZS1ydW50aW1lfQoJCTs7CgkJa2RlYmFzZS1hcHBz KQoJCQlLREVfU0NNPSJnaXQiCgkJCUVHSVRfUkVQT05BTUU9JHtFR0lUX1JFUE9OQU1FOj1r ZGUtYmFzZWFwcHN9CgkJOzsKCWVzYWMKZmkKCiMgQEVDTEFTUy1WQVJJQUJMRTogS0RFX1ND TQojIEBERVNDUklQVElPTjoKIyBJZiB0aGlzIGlzIGEgbGl2ZSBwYWNrYWdlIHdoaWNoIHNj bSBkb2VzIGl0IHVzZQojIEV2ZXJ5dGhpbmcgZWxzZSB1c2VzIHN2biBieSBkZWZhdWx0CktE RV9TQ009IiR7S0RFX1NDTTotc3ZufSIKY2FzZSAke0tERV9TQ019IGluCglzdm58Z2l0KSA7 OwoJKikgZGllICJLREVfU0NNOiAke0tERV9TQ019IGlzIG5vdCBzdXBwb3J0ZWQiIDs7CmVz YWMKCiMgQEVDTEFTUy1WQVJJQUJMRTogS0RFX0xJTkdVQVMKIyBAREVTQ1JJUFRJT046CiMg VGhpcyBpcyBhIHdoaXRlc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdHJhbnNsYXRpb25zIHRo aXMgZWJ1aWxkIHN1cHBvcnRzLgojIFRoZXNlIHRyYW5zbGF0aW9ucyBhcmUgYXV0b21hdGlj YWxseSBhZGRlZCB0byBJVVNFLiBUaGVyZWZvcmUgZWJ1aWxkcyBtdXN0IHNldAojIHRoaXMg dmFyaWFibGUgYmVmb3JlIGluaGVyaXRpbmcgYW55IGVjbGFzc2VzLiBUbyBlbmFibGUgb25s eSBzZWxlY3RlZAojIHRyYW5zbGF0aW9ucywgZWJ1aWxkcyBtdXN0IGNhbGwgZW5hYmxlX3Nl bGVjdGVkX2xpbmd1YXMoKS4ga2RlNC17YmFzZSxtZXRhfS5lY2xhc3MgZG9lcwojIHRoaXMg Zm9yIHlvdS4KIwojIEV4YW1wbGU6IEtERV9MSU5HVUFTPSJlbl9HQiBkZSBubCIKaWYgW1sg JHtCVUlMRF9UWVBFfSAhPSBsaXZlIHx8IC1uICR7S0RFX0xJTkdVQVNfTElWRV9PVkVSUklE RX0gXV07IHRoZW4KCWZvciBfbGluZ3VhIGluICR7S0RFX0xJTkdVQVN9OyBkbwoJCUlVU0U9 IiR7SVVTRX0gbGluZ3Vhc18ke19saW5ndWF9IgoJZG9uZQpmaQoKIyBARlVOQ1RJT046IHNs b3RfaXNfYXRfbGVhc3QKIyBAVVNBR0U6IDx3YW50PiA8aGF2ZT4KIyBAREVTQ1JJUFRJT046 CiMgVmVyc2lvbiBhd2FyZSBzbG90IGNvbXBhcmF0b3IuCiMgQ3VycmVudCBpbXBsZW1lbnRh dGlvbiByZWxpZXMgb24gdGhlIGZhY3QsIHRoYXQgc2xvdHMgY2FuIGJlIGNvbXBhcmVkIGxp a2UKIyBzdHJpbmcgbGl0ZXJhbHMgKGFuZCBsZXQncyBrZWVwIGl0IHRoaXMgd2F5KS4Kc2xv dF9pc19hdF9sZWFzdCgpIHsKCVtbICIkezJ9IiA+ICIkezF9IiB8fCAiJHsyfSIgPSAiJHsx fSIgXV0KfQoKIyBARlVOQ1RJT046IGJ1aWxkc3ljb2NhCiMgQERFU0NSSVBUSU9OOgojIEZ1 bmN0aW9uIHRvIHJlYnVpbGQgdGhlIEtERSBTeXN0ZW0gQ29uZmlndXJhdGlvbiBDYWNoZS4K IyBBbGwgS0RFIGVidWlsZHMgc2hvdWxkIHJ1biB0aGlzIGluIHBrZ19wb3N0aW5zdCBhbmQg cGtnX3Bvc3RybS4KYnVpbGRzeWNvY2EoKSB7CglkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZV TkNOQU1FfSAiJEAiCgoJIyBXZSBubyBsb25nZXIgbmVlZCB0byBydW4ga2J1aWxkc3ljb2Nh NCwgYXMga2RlZCBkb2VzIHRoYXQgYXV0b21hdGljYWxseSwgYXMgbmVlZGVkCgoJIyBmaXgg cGVybWlzc2lvbiBmb3Igc29tZSBkaXJlY3RvcmllcwoJZm9yIHggaW4gc2hhcmUve2NvbmZp ZyxrZGU0fTsgZG8KCQlbWyAke0tERURJUn0gPT0gL3VzciBdXSAmJiBESVJTPSR7RVJPT1R9 dXNyIHx8IERJUlM9IiR7RVJPT1R9dXNyICR7RVJPT1R9JHtLREVESVJ9IgoJCWZvciB5IGlu ICR7RElSU307IGRvCgkJCVtbIC1kICIke3l9LyR7eH0iIF1dIHx8IGJyZWFrICMgbm90aGlu ZyB0byBkbyBpZiBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QKCQkJaWYgW1sgJChzdGF0IC0t Zm9ybWF0PSVhICIke3l9LyR7eH0iKSAhPSA3NTUgXV07IHRoZW4KCQkJCWV3YXJuICJRQSBO b3RpY2U6IgoJCQkJZXdhcm4gIlBhY2thZ2UgJHtQTn0gaXMgYnJlYWtpbmcgJHt5fS8ke3h9 IHBlcm1pc3Npb25zLiIKCQkJCWV3YXJuICJQbGVhc2UgcmVwb3J0IHRoaXMgaXNzdWUgdG8g Z2VudG9vIGJ1Z3ppbGxhLiIKCQkJCWVpbmZvICJQZXJtaXNzaW9ucyB3aWxsIGdldCBhZGp1 c3RlZCBhdXRvbWF0aWNhbGx5IG5vdy4iCgkJCQlmaW5kICIke3l9LyR7eH0iIC10eXBlIGQg LXByaW50MCB8IHhhcmdzIC0wIGNobW9kIDc1NQoJCQlmaQoJCWRvbmUKCWRvbmUKfQoKIyBA RlVOQ1RJT046IGNvbW1lbnRfYWxsX2FkZF9zdWJkaXJlY3RvcnkKIyBAVVNBR0U6IFtsaXN0 IG9mIGRpcmVjdG9yeSBuYW1lc10KIyBAREVTQ1JJUFRJT046CiMgUmVjdXJzaXZlbHkgY29t bWVudCBhbGwgYWRkX3N1YmRpcmVjdG9yeSBpbnN0cnVjdGlvbnMgaW4gbGlzdGVkIGRpcmVj dG9yaWVzLAojIGV4Y2VwdCB0aG9zZSBpbiBjbWFrZS8uCmNvbW1lbnRfYWxsX2FkZF9zdWJk aXJlY3RvcnkoKSB7CglmaW5kICIkQCIgLW5hbWUgQ01ha2VMaXN0cy50eHQgLXByaW50MCB8 IGdyZXAgLXZGelogIi4vY21ha2UiIHwgXAoJCXhhcmdzIC0wIHNlZCAtaSBcCgkJCS1lICcv XltbOnNwYWNlOl1dKmFkZF9zdWJkaXJlY3Rvcnkvcy9eLyNET05PVENPTVBJTEUgLycgXAoJ CQktZSAnL15bWzpzcGFjZTpdXSpBRERfU1VCRElSRUNUT1JZL3MvXi8jRE9OT1RDT01QSUxF IC8nIFwKCQkJLWUgJy9eW1s6c3BhY2U6XV0qbWFjcm9fb3B0aW9uYWxfYWRkX3N1YmRpcmVj dG9yeS9zL14vI0RPTk9UQ09NUElMRSAvJyBcCgkJCS1lICcvXltbOnNwYWNlOl1dKk1BQ1JP X09QVElPTkFMX0FERF9TVUJESVJFQ1RPUlkvcy9eLyNET05PVENPTVBJTEUgLycgXAoJCQl8 fCBkaWUgIiR7TElORU5PfTogSW5pdGlhbCBzZWQgZGllZCIKfQoKIyBARlVOQ1RJT046IGVu YWJsZV9zZWxlY3RlZF9saW5ndWFzCiMgQERFU0NSSVBUSU9OOgojIEVuYWJsZSB0cmFuc2xh dGlvbnMgYmFzZWQgb24gTElOR1VBUyBzZXR0aW5ncyBhbmQgdHJhbnNsYXRpb25zIHN1cHBv cnRlZCBieQojIHRoZSBwYWNrYWdlIChzZWUgS0RFX0xJTkdVQVMpLiBCeSBkZWZhdWx0LCB0 cmFuc2xhdGlvbnMgYXJlIGZvdW5kIGluICIke1N9Ii9wbwojIGJ1dCB0aGlzIGRlZmF1bHQg Y2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgS0RFX0xJTkdVQVNfRElSLgplbmFibGVf c2VsZWN0ZWRfbGluZ3VhcygpIHsKCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9 ICIkQCIKCglsb2NhbCB4CgoJIyBpZiB0aGVyZSBpcyBubyBsaW5ndWFzIGRlZmluZWQgd2Ug ZW5hYmxlIGV2ZXJ5dGhpbmcKCWlmICEgJChlbnYgfCBncmVwIC1xICJeTElOR1VBUz0iKTsg dGhlbgoJCXJldHVybiAwCglmaQoKCSMgQEVDTEFTUy1WQVJJQUJMRTogS0RFX0xJTkdVQVNf RElSCgkjIEBERVNDUklQVElPTjoKCSMgU3BlY2lmaWVkIGZvbGRlciB3aGVyZSBhcHBsaWNh dGlvbiB0cmFuc2xhdGlvbnMgYXJlIGxvY2F0ZWQuCgkjIENhbiBiZSBkZWZpbmVkIGFzIGFy cmF5IG9mIGZvbGRlcnMgd2hlcmUgdHJhbnNsYXRpb25zIGFyZSBsb2NhdGVkLgoJIyBOb3Rl IHRoYXQgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgZGlycyBpcyBub3Qgc3VwcG9ydGVkLgoJ IyBEZWZhdWx0IHZhbHVlIGlzIHNldCB0byAicG8iLgoJaWYgW1sgIiQoZGVjbGFyZSAtcCBL REVfTElOR1VBU19ESVIgMj4vZGV2L251bGwgMj4mMSkiID09ICJkZWNsYXJlIC1hIiogXV07 IHRoZW4KCQlkZWJ1Zy1wcmludCAiJEZVTkNOQU1FOiB3ZSBoYXZlIHRoZXNlIHN1YmZvbGRl cnMgZGVmaW5lZDogJHtLREVfTElOR1VBU19ESVJ9IgoJCWZvciB4IGluICR7S0RFX0xJTkdV QVNfRElSW0BdfTsgZG8KCQkJX2VuYWJsZV9zZWxlY3RlZF9saW5ndWFzX2RpciAke3h9CgkJ ZG9uZQoJZWxzZQoJCUtERV9MSU5HVUFTX0RJUj0ke0tERV9MSU5HVUFTX0RJUjo9InBvIn0K CQlfZW5hYmxlX3NlbGVjdGVkX2xpbmd1YXNfZGlyICR7S0RFX0xJTkdVQVNfRElSfQoJZmkK fQoKIyBARlVOQ1RJT046IGVuYWJsZV9zZWxlY3RlZF9kb2NfbGluZ3VhcwojIEBERVNDUklQ VElPTjoKIyBFbmFibGUgb25seSBzZWxlY3RlZCBsaW5ndWFzIGVuYWJsZWQgZG9jIGZvbGRl cnMuCmVuYWJsZV9zZWxlY3RlZF9kb2NfbGluZ3VhcygpIHsKCWRlYnVnLXByaW50LWZ1bmN0 aW9uICR7RlVOQ05BTUV9ICIkQCIKCgkjIGlmIHRoZXJlIGlzIG5vIGxpbmd1YXMgZGVmaW5l ZCB3ZSBlbmFibGUgZXZlcnl0aGluZwoJaWYgISAkKGVudiB8IGdyZXAgLXEgIl5MSU5HVUFT PSIpOyB0aGVuCgkJcmV0dXJuIDAKCWZpCgoJIyBARUNMQVNTLVZBUklBQkxFOiBLREVfRE9D X0RJUlMKCSMgQERFU0NSSVBUSU9OOgoJIyBWYXJpYWJsZSBzcGVjaWZ5aW5nIHdoaXRlc3Bh Y2Ugc2VwYXJhdGVkIHBhdHRlcm5zIGZvciBkb2N1bWVudGF0aW9uIGxvY2F0aW9ucy4KCSMg RGVmYXVsdCBpcyAiZG9jLyVsaW5ndWEiCglLREVfRE9DX0RJUlM9JHtLREVfRE9DX0RJUlM6 PSdkb2MvJWxpbmd1YSd9Cglsb2NhbCBsaW5ndWFzCglmb3IgcGF0dGVybiBpbiAke0tERV9E T0NfRElSU307IGRvCgoJCWxvY2FsIGhhbmRib29rZGlyPWBkaXJuYW1lICR7cGF0dGVybn1g CgkJbG9jYWwgdHJhbnNsYXRpb25kaXI9YGJhc2VuYW1lICR7cGF0dGVybn1gCgkJIyBEbyBm aWxlbmFtZSBwYXR0ZXJuIHN1cHBsaWVkLCB0cmVhdCBhcyBkaXJlY3RvcnkKCQlbWyAke2hh bmRib29rZGlyfSA9ICcuJyBdXSAmJiBoYW5kYm9va2Rpcj0ke3RyYW5zbGF0aW9uZGlyfSAm JiB0cmFuc2xhdGlvbmRpcj0KCQlbWyAtZCAke2hhbmRib29rZGlyfSBdXSB8fCBkaWUgJ3dy b25nIGRvYyBkaXIgc3BlY2lmaWVkJwoKCQlpZiAhIHVzZSBoYW5kYm9vazsgdGhlbgoJCQkj IERpc2FibGUgd2hvbGUgZGlyZWN0b3J5CgkJCXNlZCAtZSAiL2FkZF9zdWJkaXJlY3Rvcnlb WzpzcGFjZTpdXSooW1s6c3BhY2U6XV0qJHtoYW5kYm9va2Rpcn1bWzpzcGFjZTpdXSopL3Mv Xi8jRE9OT1RDT01QSUxFIC8iIFwKCQkJCS1lICIvQUREX1NVQkRJUkVDVE9SWVtbOnNwYWNl Ol1dKihbWzpzcGFjZTpdXSoke2hhbmRib29rZGlyfVtbOnNwYWNlOl1dKikvcy9eLyNET05P VENPTVBJTEUgLyIgXAoJCQkJLWkgQ01ha2VMaXN0cy50eHQgfHwgZGllICdmYWlsZWQgdG8g Y29tbWVudCBvdXQgYWxsIGhhbmRib29rcycKCQllbHNlCgkJCSMgRGlzYWJsZSBzdWJkaXJl Y3RvcmllcyByZWN1cnNpdmVseQoJCQljb21tZW50X2FsbF9hZGRfc3ViZGlyZWN0b3J5ICIk e2hhbmRib29rZGlyfSIKCQkJIyBBZGQgcmVxdWVzdGVkIHRyYW5zbGF0aW9ucwoJCQlsb2Nh bCBsaW5ndWEKCQkJZm9yIGxpbmd1YSBpbiBlbiAke0tERV9MSU5HVUFTfTsgZG8KCQkJCWlm IFtbICR7bGluZ3VhfSA9IGVuIF1dIHx8IHVzZSBsaW5ndWFzXyR7bGluZ3VhfTsgdGhlbgoJ CQkJCWlmIFtbIC1kICR7aGFuZGJvb2tkaXJ9LyR7dHJhbnNsYXRpb25kaXIvLyVsaW5ndWEv JHtsaW5ndWF9fSBdXTsgdGhlbgoJCQkJCQlzZWQgLWUgIi9hZGRfc3ViZGlyZWN0b3J5W1s6 c3BhY2U6XV0qKFtbOnNwYWNlOl1dKiR7dHJhbnNsYXRpb25kaXIvLyVsaW5ndWEvJHtsaW5n dWF9fS9zL14jRE9OT1RDT01QSUxFIC8vIiBcCgkJCQkJCQktZSAiL0FERF9TVUJESVJFQ1RP UllbWzpzcGFjZTpdXSooW1s6c3BhY2U6XV0qJHt0cmFuc2xhdGlvbmRpci8vJWxpbmd1YS8k e2xpbmd1YX19L3MvXiNET05PVENPTVBJTEUgLy8iIFwKCQkJCQkJCS1pICIke2hhbmRib29r ZGlyfSIvQ01ha2VMaXN0cy50eHQgJiYgISBoYXMgJHtsaW5ndWF9ICR7bGluZ3Vhc30gJiYg bGluZ3Vhcz0iJHtsaW5ndWFzfSAke2xpbmd1YX0iCgkJCQkJZmkKCQkJCWZpCgkJCWRvbmUK CQlmaQoKCWRvbmUKCVtbIC1uICIke2xpbmd1YXN9IiBdXSAmJiBlaW5mbyAiRW5hYmxpbmcg aGFuZGJvb2sgdHJhbnNsYXRpb25zOiR7bGluZ3Vhc30iCn0KCiMgQEZVTkNUSU9OOiBtaWdy YXRlX3N0b3JlX2RpcgojIEBERVNDUklQVElPTjoKIyBVbml2ZXJzYWwgc3RvcmUgZGlyIG1p Z3JhdGlvbgojICogcGVyZm9ybXMgc3BsaXQgb2Yga2RlYmFzZSB0byBrZGViYXNlLWFwcHMg d2hlbiBuZWVkZWQKIyAqIG1vdmVzIHBsYXlncm91bmQvZXh0cmFnZWFyIGtkZTQtYmFzZS1z dHlsZSB0byB0b3BsZXZlbCBkaXIKbWlncmF0ZV9zdG9yZV9kaXIoKSB7CglpZiBbWyAke0tE RV9TQ019ICE9IHN2biBdXTsgdGhlbgoJCWRpZSAibWlncmF0ZV9zdG9yZV9kaXIoKSBvbmx5 IG1ha2VzIHNlbnNlIGZvciBzdWJ2ZXJzaW9uIgoJZmkKCglsb2NhbCBjbGVhbmRpcj0iJHtF U1ZOX1NUT1JFX0RJUn0vS0RFIgoKCWlmIFtbIC1kICR7Y2xlYW5kaXJ9IF1dOyB0aGVuCgkJ ZXdhcm4gIicke2NsZWFuZGlyfScgaGFzIGJlZW4gZm91bmQuIE1vdmluZyBjb250ZW50cyB0 byBuZXcgbG9jYXRpb24uIgoJCWFkZHdyaXRlICIke0VTVk5fU1RPUkVfRElSfSIKCQkjIFNw bGl0IGtkZWJhc2UKCQlsb2NhbCBtb2R1bGUKCQlpZiBwdXNoZCAiJHtjbGVhbmRpcn0iL2tk ZWJhc2Uva2RlYmFzZSA+IC9kZXYvbnVsbDsgdGhlbgoJCQlmb3IgbW9kdWxlIGluIGBmaW5k IC4gLW1heGRlcHRoIDEgLXR5cGUgZCAtbmFtZSBbYS16MC05XVwqYDsgZG8KCQkJCW1vZHVs ZT0iJHttb2R1bGUjLi99IgoJCQkJbWtkaXIgLXAgIiR7RVNWTl9TVE9SRV9ESVJ9L2tkZWJh c2UtJHttb2R1bGV9IiAmJiBtdiAtZiAiJHttb2R1bGV9IiAiJHtFU1ZOX1NUT1JFX0RJUn0v a2RlYmFzZS0ke21vZHVsZX0iIHx8IFwKCQkJCQlkaWUgIkZhaWxlZCB0byBtb3ZlIHRvICck e0VTVk5fU1RPUkVfRElSfS9rZGViYXNlLSR7bW9kdWxlfScuIgoJCQlkb25lCgkJCXBvcGQg PiAvZGV2L251bGwKCQkJcm0gLWZyICIke2NsZWFuZGlyfS9rZGViYXNlIiB8fCBcCgkJCQlk aWUgIkZhaWxlZCB0byByZW1vdmUgJHtjbGVhbmRpcn0va2RlYmFzZS4gWW91IG5lZWQgdG8g cmVtb3ZlIGl0IG1hbnVhbGx5LiIKCQlmaQoJCSMgTW92ZSB0aGUgcmVzdAoJCWxvY2FsIHBr ZwoJCWZvciBwa2cgaW4gIiR7Y2xlYW5kaXJ9Ii8qOyBkbwoJCQltdiAtZiAiJHtwa2d9IiAi JHtFU1ZOX1NUT1JFX0RJUn0iLyB8fCBlZXJyb3IgIkZhaWxlZCB0byBtb3ZlICcke3BrZ30n IgoJCWRvbmUKCQlybWRpciAiJHtjbGVhbmRpcn0iIHx8IGRpZSAiQ291bGQgbm90IG1vdmUg b2Jzb2xldGUgS0RFIHN0b3JlIGRpci4gIFBsZWFzZSBtb3ZlICcke2NsZWFuZGlyfScgY29u dGVudHMgdG8gYXBwcm9wcmlhdGUgbG9jYXRpb24gKHBvc3NpYmx5ICR7RVNWTl9TVE9SRV9E SVJ9KSBhbmQgbWFudWFsbHkgcmVtb3ZlICcke2NsZWFuZGlyfScgaW4gb3JkZXIgdG8gY29u dGludWUuIgoJZmkKCglpZiAhIGhhc3Ega2RlNC1tZXRhICR7SU5IRVJJVEVEfTsgdGhlbgoJ CWNhc2UgJHtLTU5BTUV9IGluCgkJCWV4dHJhZ2Vhcip8cGxheWdyb3VuZCopCgkJCQlsb2Nh bCBzY21sb2NhbHBhdGg9IiR7RVNWTl9TVE9SRV9ESVJ9Ii8iJHtLTU5BTUV9Ii8iJHtQTn0i CgkJCQlpZiBbWyAtZCAiJHtzY21sb2NhbHBhdGh9IiBdXTsgdGhlbgoJCQkJCWxvY2FsIGRl c3RkaXI9IiR7RVNWTl9TVE9SRV9ESVJ9Ii8iJHtFU1ZOX1BST0pFQ1R9Ii8iYGJhc2VuYW1l ICIke0VTVk5fUkVQT19VUkl9ImAiCgkJCQkJZXdhcm4gIicke3NjbWxvY2FscGF0aH0nIGhh cyBiZWVuIGZvdW5kLiIKCQkJCQlld2FybiAiTW92aW5nIGNvbnRlbnRzIHRvIG5ldyBsb2Nh dGlvbjogJHtkZXN0ZGlyfSIKCQkJCQlhZGR3cml0ZSAiJHtFU1ZOX1NUT1JFX0RJUn0iCgkJ CQkJbWtkaXIgLXAgIiR7RVNWTl9TVE9SRV9ESVJ9Ii8iJHtFU1ZOX1BST0pFQ1R9IiAmJiBt diAtZiAiJHtzY21sb2NhbHBhdGh9IiAiJHtkZXN0ZGlyfSIgXAoJCQkJCQl8fCBkaWUgIkZh aWxlZCB0byBtb3ZlIHRvICcke3NjbWxvY2FscGF0aH0nIgoJCQkJCSMgVHJ5IGNsZWFuaW5n IGVtcHR5IGRpcmVjdG9yaWVzCgkJCQkJcm1kaXIgImBkaXJuYW1lICIke3NjbWxvY2FscGF0 aH0iYCIgMj4gL2Rldi9udWxsCgkJCQlmaQoJCQkJOzsKCQllc2FjCglmaQp9CgojIEZ1bmN0 aW9ucyBoYW5kbGluZyBLTUxPQURMSUJTIGFuZCBLTVNBVkVMSUJTCgojIEBGVU5DVElPTjog c2F2ZV9saWJyYXJ5X2RlcGVuZGVuY2llcwojIEBERVNDUklQVElPTjoKIyBBZGQgZXhwb3J0 aW5nIENNYWtlIGRlcGVuZGVuY2llcyBmb3IgY3VycmVudCBwYWNrYWdlCnNhdmVfbGlicmFy eV9kZXBlbmRlbmNpZXMoKSB7Cglsb2NhbCBkZXBzZmlsZT0iJHtUfS8ke1BOfToke1NMT1R9 IgoKCWViZWdpbiAiU2F2aW5nIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGluICR7ZGVwc2ZpbGUj IyovfSIKCWVjaG8gIkVYUE9SVF9MSUJSQVJZX0RFUEVOREVOQ0lFUyhcIiR7ZGVwc2ZpbGV9 XCIpIiA+PiAiJHtTfS9DTWFrZUxpc3RzLnR4dCIgfHwgXAoJCWRpZSAiRmFpbGVkIHRvIHNh dmUgdGhlIGxpYnJhcnkgZGVwZW5kZW5jaWVzLiIKCWVlbmQgJD8KfQoKIyBARlVOQ1RJT046 IGluc3RhbGxfbGlicmFyeV9kZXBlbmRlbmNpZXMKIyBAREVTQ1JJUFRJT046CiMgSW5zdGFs bCBnZW5lcmF0ZWQgQ01ha2UgbGlicmFyeSBkZXBlbmRlbmNpZXMgdG8gL3Zhci9saWIva2Rl Cmluc3RhbGxfbGlicmFyeV9kZXBlbmRlbmNpZXMoKSB7Cglsb2NhbCBkZXBzZmlsZT0iJHtU fS8ke1BOfToke1NMT1R9IgoKCWViZWdpbiAiSW5zdGFsbGluZyBsaWJyYXJ5IGRlcGVuZGVu Y2llcyBhcyAke2RlcHNmaWxlIyMqL30iCglpbnNpbnRvIC92YXIvbGliL2tkZQoJZG9pbnMg IiR7ZGVwc2ZpbGV9IiB8fCBkaWUgIkZhaWxlZCB0byBpbnN0YWxsIGxpYnJhcnkgZGVwZW5k ZW5jaWVzLiIKCWVlbmQgJD8KfQoKIyBARlVOQ1RJT046IGxvYWRfbGlicmFyeV9kZXBlbmRl bmNpZXMKIyBAREVTQ1JJUFRJT046CiMgSW5qZWN0IHNwZWNpZmllZCBsaWJyYXJ5IGRlcGVu ZGVuY2llcyBpbiBjdXJyZW50IHBhY2thZ2UKbG9hZF9saWJyYXJ5X2RlcGVuZGVuY2llcygp IHsKCWxvY2FsIHBuIGkgZGVwc2ZpbGUKCWViZWdpbiAiSW5qZWN0aW5nIGxpYnJhcnkgZGVw ZW5kZW5jaWVzIGZyb20gJyR7S01MT0FETElCU30nIgoKCWk9MAoJZm9yIHBuIGluICR7S01M T0FETElCU30gOyBkbwoJCSgoaSsrKSkKCQlkZXBzZmlsZT0iJHtFUFJFRklYfS92YXIvbGli L2tkZS8ke3BufToke1NMT1R9IgoJCVtbIC1yICR7ZGVwc2ZpbGV9IF1dIHx8IGRpZSAiRGVw c2ZpbGUgJyR7ZGVwc2ZpbGV9JyBub3QgYWNjZXNzaWJsZS4gWW91IHByb2JhYmx5IG5lZWQg dG8gcmVpbnN0YWxsICR7cG59LiIKCQlzZWQgLWkgLWUgIiR7aX1pSU5DTFVERShcIiR7ZGVw c2ZpbGV9XCIpIiAiJHtTfS9DTWFrZUxpc3RzLnR4dCIgfHwgXAoJCQlkaWUgIkZhaWxlZCB0 byBpbmNsdWRlIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZvciAke3BufSIKCWRvbmUKCWVlbmQg JD8KfQoKIyBARlVOQ1RJT046IGJsb2NrX290aGVyX3Nsb3RzCiMgQERFU0NSSVBUSU9OOgoj IENyZWF0ZSBibG9ja3MgZm9yIHRoZSBjdXJyZW50IHBhY2thZ2UgaW4gb3RoZXIgc2xvdHMg d2hlbgojIGluc3RhbGxlZCB3aXRoIFVTRT0ta2RlcHJlZml4CmJsb2NrX290aGVyX3Nsb3Rz KCkgewoJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgoKCV9kb19ibG9j a2VyICR7UE59IDA6JHtTTE9UfQp9CgojIEBGVU5DVElPTjogYWRkX2Jsb2NrZXIKIyBAREVT Q1JJUFRJT046CiMgQ3JlYXRlIGNvcnJlY3QgUkRFUEVORCB2YWx1ZSBmb3IgYmxvY2tpbmcg Y29ycmVjdCBwYWNrYWdlLgojIFVzZWZ1bCBmb3IgZmlsZS1jb2xsaXNpb24gYmxvY2tzLgoj IFBhcmFtZXRlcnMgYXJlIHBhY2thZ2UgYW5kIHZlcnNpb24ocykgdG8gYmxvY2suCiMgYWRk X2Jsb2NrZXIga2RlbGlicyA0LjIuNAojIElmIG5vIHZlcnNpb24gaXMgc3BlY2lmaWVkLCB0 aGVuIGFsbCB2ZXJzaW9ucyB3aWxsIGJlIGJsb2NrZWQKIyBJZiBhbnkgYXJndW1lbnRzIChm cm9tIDIgb24pIGNvbnRhaW4gYSAiOiIsIHRoZW4gZGlmZmVyZW50IHZlcnNpb25zCiMgYXJl IGJsb2NrZWQgaW4gZGlmZmVyZW50IHNsb3RzLiAoVW5saXN0ZWQgc2xvdHMgZ2V0IHRoZSB2 ZXJzaW9uIHdpdGhvdXQKIyBhICI6IiwgaWYgbm9uZSwgdGhlbiBhbGwgdmVyc2lvbnMgYXJl IGJsb2NrZWQpLiBUaGUgcGFyYW1ldGVyIGlzIHRoZW4gb2YKIyB0aGUgZm9ybSBWRVJTSU9O OlNMT1QuICBBbnkgVkVSU0lPTiBvZiAwIG1lYW5zIHRoYXQgbm8gYmxvY2tlciB3aWxsIGJl CiMgYWRkZWQgZm9yIHRoYXQgc2xvdCAob3IsIGlmIG5vIHNsb3QsIHRoZW4gZm9yIGFueSB1 bmxpc3RlZCBzbG90KS4KIyBBIHBhcmFtZXRlciBvZiB0aGUgZm9ybSA6U0xPVCBtZWFucyB0 byBibG9jayBhbGwgdmVyc2lvbnMgZnJvbSB0aGF0IHNsb3QuCiMgSWYgVkVSU0lPTiBiZWdp bnMgd2l0aCAiPCIsIHRoZW4gIiE8Zm9vIiB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiAiITw9 Zm9vIi4KIyBBcyBhIHNwZWNpYWwgY2FzZSwgaWYgYSBwYXJhbWV0ZXIgd2l0aCBzbG90ICIz LjUiIGlzIHBhc3NlZCwgdGhlbiB0aGF0IHNsb3QKIyBtYXkgYWxzbyBiZSBibG9ja2VkLgoj CiMgVmVyc2lvbnMgdGhhdCBtYXRjaCAiNC54LjUwIiBhcmUgZXF1aXZhbGVudCB0byBhbGwg c2xvdHMgdXAgdG8gKGFuZCBpbmNsdWRpbmcpCiMgIjQueCIsIGJ1dCBub3RoaW5nIGZvbGxv d2luZyBzbG90ICI0LngiCiMKIyBBcyBhbiBleGFtcGxlLCBpZiBTTE9UPWxpdmUsIHRoZW4K IyAgICBhZGRfYmxvY2tlciBrZGVsaWJzIDAgOjQuMyAnPDQuMy45Njo0LjQnIDk5OTk6bGl2 ZQojIHdpbGwgYWRkIHRoZSBmb2xsb3dpbmcgdG8gUkRFUEVORDoKIyAgICAha2RlcHJlZml4 PyAoICFrZGUtYmFzZS9rZGVsaWJzOjQuM1sta2RlcHJlZml4XSApCiMgICAgIWtkZXByZWZp eD8gKCAhPGtkZS1iYXNlL2tkZWxpYnMtNC4zLjk2OjQuNFsta2RlcHJlZml4XSApCiMgICAg ITw9a2RlLWJhc2Uva2RlbGlicy05OTk5OmxpdmUKYWRkX2Jsb2NrZXIoKSB7CglkZWJ1Zy1w cmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJEAiCgoJUkRFUEVORCs9IiAkKF9kb19ibG9j a2VyICIkQCIpIgp9CgojIEBGVU5DVElPTjogYWRkX2tkZWJhc2VfZGVwCiMgQERFU0NSSVBU SU9OOgojIENyZWF0ZSBwcm9wZXIgZGVwZW5kZW5jeSBmb3Iga2RlLWJhc2UvIGRlcGVuZGVu Y2llcywgYWRkaW5nIFNMT1Qgd2hlbiBuZWVkZWQKIyAoYW5kICpvbmx5KiB3aGVuIG5lZWRl ZCkuCiMgVGhpcyB0YWtlcyAxIHRvIDMgYXJndW1lbnRzLiBUaGUgZmlyc3QgYmVpbmcgdGhl IHBhY2thZ2UgbmFtZSwgdGhlIG9wdGlvbmFsCiMgc2Vjb25kIGlzIGFkZGl0aW9uYWwgVVNF IGZsYWdzIHRvIGFwcGVuZCwgYW5kIHRoZSBvcHRpb25hbCB0aGlyZCBpcyB0aGUKIyB2ZXJz aW9uIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBhdXRvbWF0aWMgdmVyc2lvbiAodXNlIHNwYXJp bmdseSkuCiMgVGhlIG91dHB1dCBvZiB0aGlzIHNob3VsZCBiZSBhZGRlZCBkaXJlY3RseSB0 byBERVBFTkQvUkRFUEVORCwgYW5kIG1heSBiZQojIHdyYXBwZWQgaW4gYSBVU0UgY29uZGl0 aW9uYWwgKGJ1dCBub3QgYW4gfHwgY29uZGl0aW9uYWwgd2l0aG91dCBhbiBleHRyYSBzZXQK IyBvZiBwYXJlbnRoZXNlcykuCmFkZF9rZGViYXNlX2RlcCgpIHsKCWRlYnVnLXByaW50LWZ1 bmN0aW9uICR7RlVOQ05BTUV9ICIkQCIKCglsb2NhbCB2ZXIKCglpZiBbWyAtbiAkezN9IF1d OyB0aGVuCgkJdmVyPSR7M30KCWVsaWYgW1sgLW4gJHtLREVfT1ZFUlJJREVfTUlOSU1BTH0g XV07IHRoZW4KCQl2ZXI9JHtLREVfT1ZFUlJJREVfTUlOSU1BTH0KCWVsaWYgW1sgJHtLREVC QVNFfSAhPSBrZGUtYmFzZSBdXTsgdGhlbgoJCXZlcj0ke0tERV9NSU5JTUFMfQoJIyBGSVhN RSByZW1vdmUgaGFjayB3aGVuIGtkZXBpbS00LjQuKiBpcyBnb25lCgllbGlmIFtbICggJHtL TU5BTUV9ID09IGtkZXBpbSB8fCAke1BOfSA9PSBrZGVwaW0tcnVudGltZSApICYmICR7UFZ9 ID09IDQuNC5bNi04XSAmJiAkezF9ID1+IF5rZGUocGltKT9saWJzJCBdXTsgdGhlbgoJCXZl cj00LjQuNQoJIyBGSVhNRSByZW1vdmUgaGFjayB3aGVuIGtkZXBpbS00LjZiZXRhIGlzIGdv bmUKCWVsaWYgW1sgKCAke0tNTkFNRX0gPT0ga2RlcGltIHx8ICR7UE59ID09IGtkZXBpbS1y dW50aW1lICkgJiYgJHtQVn0gPT0gNC41Ljk4ICYmICR7MX0gPX4gXihrZGUocGltKT9saWJz fG94eWdlbi1pY29ucykkIF1dOyB0aGVuCgkJdmVyPTQuNS45MAoJIyBpZiBidWlsZGluZyBz dGFibGUtbGl2ZSB2ZXJzaW9uIGRlcGVuZCBqdXN0IG9uIHNsb3QKCSMgdG8gYWxsb3cgbWVy Z2luZyBwYWNrYWdlcyBhZ2FpbnN0IG1vcmUgc3RhYmxlIGJhc2ljIHN0dWZmCgllbGlmIFtb ICR7UFZ9ID09ICouOTk5OSBdXTsgdGhlbgoJCXZlcj0ke1NMT1R9CgllbHNlCgkJdmVyPSR7 UFZ9CglmaQoKCVtbIC16ICR7MX0gXV0gJiYgZGllICJNaXNzaW5nIHBhcmFtZXRlciIKCgls b2NhbCB1c2U9JHsyOissJHsyfX0KCglpZiBbWyAke0tERUJBU0V9ID0ga2RlLWJhc2UgXV07 IHRoZW4KCQllY2hvICIgIWtkZXByZWZpeD8gKCA+PWtkZS1iYXNlLyR7MX0tJHt2ZXJ9W2Fx dWE9LC1rZGVwcmVmaXgke3VzZX1dICkiCgkJZWNobyAiIGtkZXByZWZpeD8gKCA+PWtkZS1i YXNlLyR7MX0tJHt2ZXJ9OiR7U0xPVH1bYXF1YT0sa2RlcHJlZml4JHt1c2V9XSApIgoJZWxp ZiBbWyAke3Zlcn0gPT0gbGl2ZSBdXTsgdGhlbgoJCWVjaG8gIiBrZGUtYmFzZS8kezF9Omxp dmVbYXF1YT0ke3VzZX1dIgoJZWxzZQoJCWVjaG8gIiA+PWtkZS1iYXNlLyR7MX0tJHt2ZXJ9 W2FxdWE9JHt1c2V9XSIKCWZpCn0KCiMgX2dyZWF0ZXJfbWF4X2luX3Nsb3QgdmVyIHNsb3QK IyBzbG90IG11c3QgYmUgNC54IG9yIGxpdmUKIyByZXR1cm5zIHRydWUgaWYgdmVyIGlzID49 IHRoZSBtYXhpbXVtIHBvc3NpYmlsZSB2ZXJzaW9uIGluIHNsb3QKX2dyZWF0ZXJfbWF4X2lu X3Nsb3QoKSB7Cglsb2NhbCB2ZXI9JDEKCWxvY2FsIHNsb3Q9JDIKCSMgSWYgc2xvdCBpcyBs aXZlLCB0aGVuIHJldHVybiBmYWxzZQoJIyAobm90aGluZyBpcyBncmVhdGVyIHRoYW4gdGhl IG1heGltdW0gbGl2ZSB2ZXJzaW9uKQoJW1sgJHNsb3QgPT0gbGl2ZSBdXSAmJiByZXR1cm4g MQoJIyBPdGhlcndpc2UsIGZvciBzbG90IFguWSwgdGVzdCBhZ2FpbnN0IFguWS41MAoJbG9j YWwgdGVzdD0ke3Nsb3R9LjUwCgl2ZXJzaW9uX2NvbXBhcmUgJDEgJHt0ZXN0fQoJIyAxID0g JzwnLCAyID0gJz0nLCAzID0gJz4nCgkoKCAkPyAhPSAxICkpCn0KCiMgX2xlc3NfbWluX2lu X3Nsb3QgdmVyIHNsb3QKIyBzbG90IG11c3QgYmUgNC54IG9yIGxpdmUKIyByZXR1cm5zIHRy dWUgaWYgdmVyIGlzIDw9IHRoZSBtaW5pbXVtIHBvc3NpYmlsZSB2ZXJzaW9uIGluIHNsb3QK X2xlc3NfbWluX2luX3Nsb3QoKSB7Cglsb2NhbCB2ZXI9JDEKCWxvY2FsIHNsb3Q9JDIKCSMg SWYgc2xvdCA9PSBsaXZlLCB0aGVuIHRlc3Qgd2l0aCAiOTk5OV9wcmUiLCBzbyB0aGF0IDk5 OTkgdGVzdHMgZmFsc2UKCWxvY2FsIHRlc3Q9OTk5OV9wcmUKCSMgSWYgc2xvdCA9PSBYLlks IHRoZW4gdGVzdCB3aXRoIFguKFktMSkuNTAKCVtbICRzbG90ICE9IGxpdmUgXV0gJiYgdGVz dD0ke3Nsb3QlLip9LiQoKCR7c2xvdCMqLn0gLSAxKSkuNTAKCXZlcnNpb25fY29tcGFyZSAk MSAke3Rlc3R9CgkjIDEgPSAnPCcsIDIgPSAnPScsIDMgPSAnPicKCSgoICQ/ICE9IDMgKSkK fQoKIyBJbnRlcm5hbCBmdW5jdGlvbiB1c2VkIGZvciBhZGRfYmxvY2tlciBhbmQgYmxvY2tf b3RoZXJfc2xvdHMKIyBUaGlzIHRha2VzIHRoZSBzYW1lIHBhcmFtZXRlcnMgYXMgYWRkX2Js b2NrZXIsIGJ1dCBlY2hvcyB0bwojIHN0ZG91dCBpbnN0ZWFkIG9mIHVwZGF0aW5nIGEgdmFy aWFibGUuCl9kb19ibG9ja2VyKCkgewoJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFN RX0gIiRAIgoKCVtbIC16ICR7MX0gXV0gJiYgZGllICJNaXNzaW5nIHBhcmFtZXRlciIKCWxv Y2FsIHBrZz1rZGUtYmFzZS8kMSB1c2UKCXNoaWZ0CglpZiBbWyAkcGtnID09ICpcWypcXSBd XTsgdGhlbgoJCXVzZT0ke3BrZyMqXFt9CgkJdXNlPSR7dXNlJVxdfQoJCXBrZz0ke3BrZyVc WypcXX0KCWZpCgoJbG9jYWwgcGFyYW0gc2xvdCBkZWY9InVuc2V0IiB2YXIgYXRvbQoJIyBU aGUgZm9sbG93aW5nIHZhcmlhYmxlcyB3aWxsIGhvbGQgcGFyYW1ldGVycyB0aGF0IGNvbnRh aW4gIjoiCgkjICAtIGJsb2NrXzNfNQoJIyAgLSBibG9ja180XzEKCSMgIC0gYmxvY2tfNF8y CgkjICAtIGJsb2NrXzRfMwoJIyAgLSBibG9ja180XzQKCSMgIC0gYmxvY2tfbGl2ZQoJZm9y IHNsb3QgaW4gMy41ICR7S0RFX1NMT1RTW0BdfSAke0tERV9MSVZFX1NMT1RTW0BdfTsgZG8K CQlsb2NhbCBibG9ja18ke3Nsb3QvLy4vX309InVuc2V0IgoJZG9uZQoKCSMgVGhpcyBjb25z dHJ1Y3QgZ29lcyB0aHJvdWdoIGVhY2ggcGFyYW1ldGVyIHBhc3NlZCwgYW5kIHNldHMKCSMg ZWl0aGVyIGRlZiBvciBibG9ja18qIHRvIHRoZSB2ZXJzaW9uIHBhc3NlZAoJZm9yIHBhcmFt OyBkbwoJCSMgSWYgdGhlIHBhcmFtZXRlciBkb2VzIG5vdCBoYXZlIGEgIjoiIGluIGl0Li4u CgkJaWYgW1sgJHtwYXJhbS86fSA9PSAke3BhcmFtfSBdXTsgdGhlbgoJCQlkZWY9JHtwYXJh bX0KCQllbHNlICMgdGhlIHBhcmFtZXRlciAqZG9lcyogaGF2ZSBhICI6IiBpbiBpdAoJCQkj IHNvIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIDogaXMgdGhlIHNsb3QuLi4KCQkJc2xvdD0ke3Bh cmFtIyo6fQoJCQkjIC4uLmFuZCBldmVyeXRoaW5nIGJlZm9yZSB0aGUgOiBpcyB0aGUgdmVy c2lvbgoJCQlsb2NhbCBibG9ja18ke3Nsb3QvLy4vX309JHtwYXJhbSU6Kn0KCQlmaQoJZG9u ZQoKCWZvciBzbG90IGluICR7S0RFX1NMT1RTW0BdfSAke0tERV9MSVZFX1NMT1RTW0BdfTsg ZG8KCQkjICR7dmFyfSBjb250YWlucyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgd2UgY2Fy ZSBhYm91dCBmb3IgdGhpcyBzbG90CgkJIyAkeyF2YXJ9IGlzIGl0J3MgdmFsdWUKCQl2YXI9 YmxvY2tfJHtzbG90Ly8uL199CgkJIyBpZiB3ZSBkaWRuJ3QgcGFzcyAqOiR7c2xvdH0sIHRo ZW4gdXNlIHRoZSB1bnNsb3RlZCB2YWx1ZQoJCVtbICR7IXZhcn0gPT0gInVuc2V0IiBdXSAm JiB2YXI9ZGVmCgoJCSMgSWYgbm8gdmVyc2lvbiB3YXMgcGFzc2VkLCBvciB0aGUgdmVyc2lv biBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0KCQkjIHBvc3NpYmxlIHZlcnNpb24gaW4g dGhpcyBzbG90LCBibG9jayBhbGwgdmVyc2lvbnMgaW4gdGhpcyBzbG90CgkJaWYgW1sgJHsh dmFyfSA9PSAidW5zZXQiIF1dIHx8IFtbIC16ICR7IXZhcn0gXV0gfHwgX2dyZWF0ZXJfbWF4 X2luX3Nsb3QgJHshdmFyIzx9ICR7c2xvdH07IHRoZW4KCQkJYXRvbT0ke3BrZ30KCQkjIElm IHRoZSB2ZXJzaW9uIGlzICIwIiBvciBsZXNzIHRoYW4gdGhlIG1pbmltdW0gcG9zc2libGUg dmVyc2lvbiBpbgoJCSMgdGhpcyBzbG90LCBkbyBub3RoaW5nCgkJZWxpZiBbWyAkeyF2YXJ9 ID09ICIwIiBdXSB8fCBfbGVzc19taW5faW5fc2xvdCAkeyF2YXIjPH0gJHtzbG90fTsgdGhl bgoJCQljb250aW51ZQoJCSMgSWYgdGhlIHZlcnNpb24gcGFzc2VkIGJlZ2lucyB3aXRoIGEg IjwiLCB0aGVuIHVzZSAiPCIgaW5zdGVhZCBvZiAiPD0iCgkJZWxpZiBbWyAkeyF2YXI6MDox fSA9PSAiPCIgXV07IHRoZW4KCQkJIyB0aGlzIGFsc28gcmVtb3ZlcyB0aGUgZmlyc3QgY2hh cmFjdGVyIG9mIHRoZSB2ZXJzaW9uLCB3aGljaCBpcyBhICI8IgoJCQlhdG9tPSI8JHtwa2d9 LSR7IXZhcjoxfSIKCQllbHNlCgkJCWF0b209Ijw9JHtwa2d9LSR7IXZhcn0iCgkJZmkKCQkj IHdlIGFsd2F5cyBibG9jayBvdXIgb3duIHNsb3QsIGlnbm9yaW5nIGtkZXByZWZpeAoJCWlm IFtbICR7U0xPVH0gPT0gJHtzbG90fSBdXTsgdGhlbgoJCQllY2hvICIgISR7YXRvbX06JHtz bG90fSR7dXNlOitbJHt1c2V9XX0iCgkJZWxzZQoJCQkjIHdlIG9ubHkgYmxvY2sgb3RoZXIg c2xvdHMgb24gLWtkZXByZWZpeAoJCQllY2hvICIgIWtkZXByZWZpeD8gKCAhJHthdG9tfTok e3Nsb3R9Wy1rZGVwcmVmaXgke3VzZTorLCR7dXNlfX1dICkiCgkJZmkKCWRvbmUKCgkjIFRo aXMgaXMgYSBzcGVjaWFsIGNhc2UgYmxvY2sgZm9yIDozLjU7IGl0IGRvZXMgbm90IHVzZSB0 aGUKCSMgZGVmYXVsdCB2ZXJzaW9uIHBhc3NlZCwgYW5kIG5vIGJsb2NrZXIgaXMgb3V0cHV0 ICp1bmxlc3MqIGEgdmVyc2lvbgoJIyBpcyBwYXNzZWQsIG9yICI6My41IiBpcyBwYXNzZWQg dG8gZXhwbGljaXRseSByZXF1ZXN0IGEgYmxvY2sgb24gYWxsCgkjIDMuNSB2ZXJzaW9ucy4K CWlmIFtbICR7YmxvY2tfM181fSAhPSAidW5zZXQiICYmICR7YmxvY2tfM181fSAhPSAiMCIg XV07IHRoZW4KCQlpZiBbWyAteiAke2Jsb2NrXzNfNX0gXV07IHRoZW4KCQkJYXRvbT0ke3Br Z30KCQllbGlmIFtbICR7YmxvY2tfM181OjA6MX0gPT0gIjwiIF1dOyB0aGVuCgkJCWF0b209 Ijwke3BrZ30tJHtibG9ja18zXzU6MX0iCgkJZWxzZQoJCQlhdG9tPSI8PSR7cGtnfS0ke2Js b2NrXzNfNX0iCgkJZmkKCQllY2hvICIgISR7YXRvbX06My41JHt1c2U6K1ske3VzZX1dfSIK CWZpCn0KCiMgbG9jYWwgZnVuY3Rpb24gdG8gZW5hYmxlIHNwZWNpZmllZCB0cmFuc2xhdGlv bnMgZm9yIHNwZWNpZmllZCBkaXJlY3RvcnkKIyB1c2VkIGZyb20ga2RlNC1mdW5jdGlvbnNf ZW5hYmxlX3NlbGVjdGVkX2xpbmd1YXMgZnVuY3Rpb24KX2VuYWJsZV9zZWxlY3RlZF9saW5n dWFzX2RpcigpIHsKCWxvY2FsIGxpbmd1YSBsaW5ndWFzIHNyX21lc3Mgd3AKCWxvY2FsIGRp cj0kezF9CgoJW1sgLWQgICR7ZGlyfSBdXSB8fCBkaWUgImxpbmd1YXMgZGlyIFwiJHtkaXJ9 XCIgZG9lcyBub3QgZXhpc3QiCgljb21tZW50X2FsbF9hZGRfc3ViZGlyZWN0b3J5ICIke2Rp cn0iCglwdXNoZCAiJHtkaXJ9IiA+IC9kZXYvbnVsbAoKCSMgZml4IGFsbCB2YXJpb3VzIGNy YXp5IHNyQExhdG4gdmFyaWF0aW9ucwoJIyB0aGlzIHBhcnQgaXMgb25seSBlYXNlIGZvciBl YnVpbGRzLCBzbyB0aGVyZSB3b250IGJlIGFueSBkaWUgd2hlbiB0aGlzCgkjIGZhaWwgYXQg YW55IHBvaW50Cglzcl9tZXNzPSJzckBsYXRuIHNyQGxhdGluIHNyQExhdGluIgoJZm9yIHdw IGluICR7c3JfbWVzc307IGRvCgkJW1sgLWUgJHt3cH0ucG8gXV0gJiYgbXYgIiR7d3B9LnBv IiAic3JATGF0bi5wbyIKCQlpZiBbWyAtZCAke3dwfSBdXTsgdGhlbgoJCQkjIG1vdmUgZGly IGFuZCBmaXggY21ha2VsaXN0cwoJCQltdiAiJHt3cH0iICJzckBMYXRuIgoJCQlzZWQgLWkg XAoJCQkJLWUgInM6JHt3cH06c3JATGF0bjpnIiBcCgkJCQlDTWFrZUxpc3RzLnR4dAoJCWZp Cglkb25lCgoJZm9yIGxpbmd1YSBpbiAke0tERV9MSU5HVUFTfTsgZG8KCQlpZiBbWyAtZSAk e2xpbmd1YX0ucG8gXV07IHRoZW4KCQkJbXYgIiR7bGluZ3VhfS5wbyIgIiR7bGluZ3VhfS5w by5vbGQiCgkJZmkKCWRvbmUKCglmb3IgbGluZ3VhIGluICR7S0RFX0xJTkdVQVN9OyBkbwoJ CWlmIHVzZSBsaW5ndWFzXyR7bGluZ3VhfSA7IHRoZW4KCQkJaWYgW1sgLWQgJHtsaW5ndWF9 IF1dOyB0aGVuCgkJCQlsaW5ndWFzPSIke2xpbmd1YXN9ICR7bGluZ3VhfSIKCQkJCXNlZCAt ZSAiL2FkZF9zdWJkaXJlY3RvcnkoW1s6c3BhY2U6XV0qJHtsaW5ndWF9W1s6c3BhY2U6XV0q KVtbOnNwYWNlOl1dKiQvIHMvXiNET05PVENPTVBJTEUgLy8iIFwKCQkJCQktZSAiL0FERF9T VUJESVJFQ1RPUlkoW1s6c3BhY2U6XV0qJHtsaW5ndWF9W1s6c3BhY2U6XV0qKVtbOnNwYWNl Ol1dKiQvIHMvXiNET05PVENPTVBJTEUgLy8iIFwKCQkJCQktaSBDTWFrZUxpc3RzLnR4dCB8 fCBkaWUgIlNlZCB0byB1bmNvbW1lbnQgbGluZ3Vhc18ke2xpbmd1YX0gZmFpbGVkLiIKCQkJ ZmkKCQkJaWYgW1sgLWUgJHtsaW5ndWF9LnBvLm9sZCBdXTsgdGhlbgoJCQkJbGluZ3Vhcz0i JHtsaW5ndWFzfSAke2xpbmd1YX0iCgkJCQltdiAiJHtsaW5ndWF9LnBvLm9sZCIgIiR7bGlu Z3VhfS5wbyIKCQkJZmkKCQlmaQoJZG9uZQoJW1sgLW4gJHtsaW5ndWFzfSBdXSAmJiBlY2hv ICI+Pj4gRW5hYmxpbmcgbGFuZ3VhZ2VzOiAke2xpbmd1YXN9IgoKCXBvcGQgPiAvZGV2L251 bGwKfQo= --------------040404070904070102050508 Content-Type: text/plain; name="kde4-meta.eclass" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kde4-meta.eclass" IyBDb3B5cmlnaHQgMTk5OS0yMDEwIEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mgoj ICRIZWFkZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L2VjbGFzcy9rZGU0LW1ldGEuZWNs YXNzLHYgMS40NyAyMDEwLzEyLzI5IDE3OjU2OjM0IHRhbXBha3JhcCBFeHAgJAojCiMgQEVD TEFTUzoga2RlNC1tZXRhLmVjbGFzcwojIEBNQUlOVEFJTkVSOgojIGtkZUBnZW50b28ub3Jn CiMgQEJMVVJCOiBFY2xhc3MgZm9yIHdyaXRpbmcgInNwbGl0IiBLREUgcGFja2FnZXMuCiMg QERFU0NSSVBUSU9OOgojIFRoaXMgZWNsYXNzIHByb3ZpZGVzIGFsbCBuZWNlc3NhcnkgZnVu Y3Rpb25zIGZvciB3cml0aW5nIHNwbGl0IEtERSBlYnVpbGRzLgojCiMgWW91IG11c3QgZGVm aW5lIEtNTkFNRSB0byB1c2UgdGhpcyBlY2xhc3MsIGFuZCBkbyBzbyBiZWZvcmUgaW5oZXJp dGluZyBpdC4gQWxsIG90aGVyIHZhcmlhYmxlcyBhcmUgb3B0aW9uYWwuCiMgRG8gbm90IGlu Y2x1ZGUgdGhlIHNhbWUgaXRlbSBpbiBtb3JlIHRoYW4gb25lIG9mIEtNTU9EVUxFLCBLTU1F WFRSQSwgS01DT01QSUxFT05MWSwgS01FWFRSQUNUT05MWS4KCltbIC16ICR7S01OQU1FfSBd XSAmJiBkaWUgImtkZTQtbWV0YS5lY2xhc3MgaW5oZXJpdGVkIGJ1dCBLTU5BTUUgbm90IGRl ZmluZWQgLSBicm9rZW4gZWJ1aWxkIgoKaW5oZXJpdCBrZGU0LWJhc2UgdG9vbGNoYWluLWZ1 bmNzIHZlcnNpb25hdG9yCgpjYXNlICR7RUFQSTotMH0gaW4KCTMpCgkJS0RFTUVUQV9FWFBG PSJwa2dfc2V0dXAgc3JjX3VucGFjayBzcmNfcHJlcGFyZSBzcmNfY29uZmlndXJlIHNyY19j b21waWxlIHNyY190ZXN0IHNyY19pbnN0YWxsIHBrZ19wcmVpbnN0IHBrZ19wb3N0aW5zdCBw a2dfcG9zdHJtIgoJCTs7CgkqKQoJCUtERU1FVEFfRVhQRj0icGtnX3ByZXRlbmQgcGtnX3Nl dHVwIHNyY191bnBhY2sgc3JjX3ByZXBhcmUgc3JjX2NvbmZpZ3VyZSBzcmNfY29tcGlsZSBz cmNfdGVzdCBzcmNfaW5zdGFsbCBwa2dfcHJlaW5zdCBwa2dfcG9zdGluc3QgcGtnX3Bvc3Ry bSIKCQk7Owplc2FjCkVYUE9SVF9GVU5DVElPTlMgJHtLREVNRVRBX0VYUEZ9CgojIEFkZCBk ZXBlbmRlbmNpZXMgdGhhdCBhbGwgcGFja2FnZXMgaW4gYSBjZXJ0YWluIG1vZHVsZSBzaGFy ZS4KY2FzZSAke0tNTkFNRX0gaW4KCWtkZWJhc2V8a2RlYmFzZS1hcHBzfGtkZWJhc2Utd29y a3NwYWNlfGtkZWJhc2UtcnVudGltZXxrZGVncmFwaGljcykKCQlDT01NT05ERVBFTkQrPSIg Pj1tZWRpYS1saWJzL3FpbWFnZWJsaXR6LTAuMC40IgoJCTs7CglrZGVwaW18a2RlcGltLXJ1 bnRpbWUpCgkJY2FzZSAke1BOfSBpbgoJCQlha3JlZ2F0b3J8a2FkZHJlc3Nib29rfGtqb3Rz fGttYWlsfGtub2RlfGtub3Rlc3xrb3JnYW5pemVyfGt0aW1ldHJhY2tlcikKCQkJCUlVU0Ur PSIgK2tvbnRhY3QiCgkJCQlSREVQRU5EKz0iIGtvbnRhY3Q/ICggJChhZGRfa2RlYmFzZV9k ZXAga29udGFjdCkgKSIKCQkJCTs7CgkJZXNhYwoJCTs7CglrZGVnYW1lcykKCQlpZiBbWyAk e1BOfSAhPSBsaWJrZGVnYW1lcyBdXTsgdGhlbgoJCQlDT01NT05ERVBFTkQrPSIgJChhZGRf a2RlYmFzZV9kZXAgbGlia2RlZ2FtZXMpIgoJCWZpCgkJOzsKCWtvZmZpY2UpCgkJW1sgJHtQ Tn0gIT0ga29mZmljZS1kYXRhIF1dICYmIElVU0UrPSIgZGVidWciCgkJUkRFUEVORCs9IgoJ CQkhYXBwLW9mZmljZS8ke1BOfTowCgkJCSFhcHAtb2ZmaWNlL2tvZmZpY2U6MAoJCQkhYXBw LW9mZmljZS9rb2ZmaWNlLW1ldGE6MAoJCSIKCQlpZiBoYXMgb3BlbmV4ciAke0lVU0UvLyt9 OyB0aGVuCgkJCUNPTU1PTkRFUEVORCs9IiBtZWRpYS1nZngvaW1hZ2VtYWdpY2tbb3BlbmV4 cj9dIgoJCWVsc2UKCQkJQ09NTU9OREVQRU5EKz0iIG1lZGlhLWdmeC9pbWFnZW1hZ2ljayIK CQlmaQoKCQlDT01NT05ERVBFTkQrPSIKCQkJZGV2LWNwcC9laWdlbjoyCgkJCW1lZGlhLWxp YnMvZm9udGNvbmZpZwoJCQltZWRpYS1saWJzL2ZyZWV0eXBlOjIKCQkiCgkJaWYgW1sgJHtQ Tn0gIT0ga29mZmljZS1saWJzICYmICR7UE59ICE9IGtvZmZpY2UtZGF0YSBdXTsgdGhlbgoJ CQlDT01NT05ERVBFTkQrPSIgPj1hcHAtb2ZmaWNlL2tvZmZpY2UtbGlicy0ke1BWfToke1NM T1R9IgoJCWZpCgkJOzsKZXNhYwoKREVQRU5EKz0iICR7Q09NTU9OREVQRU5EfSIKUkRFUEVO RCs9IiAke0NPTU1PTkRFUEVORH0iCnVuc2V0IENPTU1PTkRFUEVORAoKZGVidWctcHJpbnQg ImxpbmUgJHtMSU5FTk99ICR7RUNMQVNTfTogREVQRU5EICR7REVQRU5EfSAtIGFmdGVyIG1l dGFwYWNrYWdlLXNwZWNpZmljIGRlcGVuZGVuY2llcyIKZGVidWctcHJpbnQgImxpbmUgJHtM SU5FTk99ICR7RUNMQVNTfTogUkRFUEVORCAke1JERVBFTkR9IC0gYWZ0ZXIgbWV0YXBhY2th Z2Utc3BlY2lmaWMgZGVwZW5kZW5jaWVzIgoKIyBVc2VmdWwgdG8gYnVpbGQga2RlNC1tZXRh IHN0eWxlIHN0dWZmIGZyb20gZXh0cmFnZWFyL3BsYXlncm91bmQgKHBsYXNtb2lkcyBldGMp CmNhc2UgJHtCVUlMRF9UWVBFfSBpbgoJbGl2ZSkKCQlpZiBbWyAke0tERV9TQ019ID09IHN2 biBdXTsgdGhlbgoJCQljYXNlICR7S01OQU1FfSBpbgoJCQkJZXh0cmFnZWFyKnxwbGF5Z3Jv dW5kKikKCQkJCQlFU1ZOX1JFUE9fVVJJPSIke0VTVk5fTUlSUk9SfS90cnVuay8ke0tNTkFN RX0iCgkJCQkJRVNWTl9QUk9KRUNUPSIke0tNTkFNRX0ke0VTVk5fUFJPSkVDVF9TVUZGSVh9 IgoJCQkJCTs7CgkJCWVzYWMKCQlmaQoJCTs7CmVzYWMKCiMgQEVDTEFTUy1WQVJJQUJMRTog S01OQU1FCiMgQERFU0NSSVBUSU9OOgojIE5hbWUgb2YgdGhlIHBhcmVudC1tb2R1bGUgKGUu Zy4ga2RlYmFzZSwga2RlcGltLCAuLi4pLiBZb3UgX211c3RfIHNldCBpdAojIF9iZWZvcmVf IGluaGVyaXRpbmcgdGhpcyBlY2xhc3MsICh1bmxpa2UgdGhlIG90aGVyIHBhcmFtZXRlcnMp LCBzaW5jZSBpdCdzCiMgdXNlZCB0byBzZXQgJFNSQ19VUkkuCgojIEBFQ0xBU1MtVkFSSUFC TEU6IEtNTU9EVUxFCiMgQERFU0NSSVBUSU9OOgojIFNwZWNpZnkgZXhhY3RseSBvbmUgc3Vi ZGlyZWN0b3J5IG9mICRLTU5BTUUgaGVyZS4gRGVmYXVsdHMgdG8gJFBOLgojIFRoZSBzdWJk aXJlY3RvcnkgbGlzdGVkIGhlcmUgaXMgdHJlYXRlZCBleGFjdGx5IGxpa2UgaXRlbXMgaW4g JEtNRVhUUkEuCiMKIyBFeGFtcGxlOiBUaGUgZWJ1aWxkIG5hbWUgb2YgImtkZWJhc2UvbDEw biIgaXMga2RlLWJhc2Uva2RlYmFzZS1sMTBuLCBiZWNhdXNlCiMganVzdCAnbDEwbicgd291 bGQgYmUgdG9vIGNvbmZ1c2luZy4gSGVuY2UgaXQgc2V0cyBLTU1PRFVMRT0ibDEwbiIuCgoj IEBFQ0xBU1MtVkFSSUFCTEU6IEtNTk9NT0RVTEUKIyBAREVTQ1JJUFRJT046CiMgSWYgc2V0 IHRvICJ0cnVlIiwgJEtNTU9EVUxFIGRvZXNuJ3QgaGF2ZSB0byBiZSBkZWZpbmVkLgojCiMg RXhhbXBsZSB1c2FnZTogSWYgeW91J3JlIGluc3RhbGxpbmcgc3ViZGlyZWN0b3JpZXMgb2Yg YSBwYWNrYWdlLCBsaWtlIHBsdWdpbnMsCiMgeW91IG1hcmsgdGhlIHRvcCBzdWJkaXJlY3Rv cnkgKGNvbnRhaW5pbmcgdGhlIHBhY2thZ2UpIGFzICRLTUVYVFJBQ1RPTkxZLCBhbmQKIyBz ZXQgS01OT01PRFVMRT0idHJ1ZSIuCmlmIFtbIC16ICR7S01NT0RVTEV9IF1dICYmIFtbICR7 S01OT01PRFVMRX0gIT0gdHJ1ZSBdXTsgdGhlbgoJS01NT0RVTEU9JHtQTn0KZmkKCiMgQEVD TEFTUy1WQVJJQUJMRTogS01FWFRSQQojIEBERVNDUklQVElPTjoKIyBBbGwgc3ViZGlyZWN0 b3JpZXMgbGlzdGVkIGhlcmUgd2lsbCBiZSBleHRyYWN0ZWQsIGNvbXBpbGVkICYgaW5zdGFs bGVkLgojICRLTU1PRFVMRSBpcyBhbHdheXMgYWRkZWQgdG8gJEtNRVhUUkEuCiMgSWYgS0RF X0hBTkRCT09LIGlzICdhbHdheXMnIG9yICdvcHRpb25hbCcgYW5kIGhhbmRib29rIFVTRS1m bGFnIGlzIHNldCwgYW5kIGlmIHRoaXMKIyBkaXJlY3RvcnkgZXhpc3RzLCB0aGVuICJkb2Mv JEtNTU9EVUxFIiBpcyBhZGRlZCB0byAkS01FWFRSQS4gSWYgdGhlcmUncyBhZGRpdGlvbmFs CiMgZG9jdW1lbnRhdGlvbiBpbiBkaWZmZXJlbnQgc3ViZGlyZWN0b3JpZXMsIGl0IHNob3Vs ZCBiZSBhZGRlZCB0byBLTUVYVFJBIG1hbnVhbGx5Li4KCiMgQEVDTEFTUy1WQVJJQUJMRTog S01DT01QSUxFT05MWQojIEBERVNDUklQVElPTjoKIyBBbGwgc3ViZGlyZWN0b3JpZXMgbGlz dGVkIGhlcmUgd2lsbCBiZSBleHRyYWN0ZWQgJiBjb21waWxlZCwgYnV0IG5vdCBpbnN0YWxs ZWQuCgojIFRPRE86IGJldHRlciBmb3JtdWxhdGlvbiBtYXkgYmUgbmVlZGVkCiMgQEVDTEFT Uy1WQVJJQUJMRTogS01FWFRSQUNUT05MWQojIEBERVNDUklQVElPTjoKIyBBbGwgc3ViZGly ZWN0b3JpZXMgbGlzdGVkIGhlcmUgd2lsbCBiZSBleHRyYWN0ZWQsIGJ1dCBuZWl0aGVyIGNv bXBpbGVkIG5vciBpbnN0YWxsZWQuCiMgVGhpcyBjYW4gYmUgdXNlZCB0byBhdm9pZCBjb21w aWxhdGlvbiBpbiBhIHN1YmRpcmVjdG9yeSBvZiBhIGRpcmVjdG9yeSBpbiAkS01NT0RVTEUg b3IgJEtNRVhUUkEKCiMgQEVDTEFTUy1WQVJJQUJMRTogS01UQVJQQVJBTVMKIyBAREVTQ1JJ UFRJT046CiMgU3BlY2lmeSBleHRyYSBwYXJhbWV0ZXJzIHRvIHBhc3MgdG8gdGFyLCBpbiBr ZGU0LW1ldGFfc3JjX2V4dHJhY3QuCiMgJy14cGYgLWonIGFyZSBwYXNzZWQgdG8gdGFyIGJ5 IGRlZmF1bHQuCgojIEBGVU5DVElPTjoga2RlNC1tZXRhX3BrZ19wcmV0ZW5kCiMgQERFU0NS SVBUSU9OOgojIEN1cnJlbnRseSBvbmx5IGNoZWNrcyB0aGUgZ2NjIHZlcnNpb24uCmtkZTQt bWV0YV9wa2dfcHJldGVuZCgpIHsKCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9 ICIkQCIKCglzbG90X2lzX2F0X2xlYXN0IDQuNiAke1NMT1R9ICYmICggW1sgJChnY2MtbWFq b3ItdmVyc2lvbikgLWx0IDQgXV0gfHwgXAoJCSggW1sgJChnY2MtbWFqb3ItdmVyc2lvbikg LWVxIDQgJiYgJChnY2MtbWlub3ItdmVyc2lvbikgLWxlIDMgXV0gKSApIFwKCQkmJiBkaWUg IlNvcnJ5LCBidXQgZ2NjLTQuMyBhbmQgZWFybGllciB3b250IHdvcmsgZm9yIEtERSBTQyA0 LjYgKHNlZSBidWcgMzU0ODM3KS4iCn0KCiMgQEZVTkNUSU9OOiBrZGU0LW1ldGFfcGtnX3Nl dHVwCiMgQERFU0NSSVBUSU9OOgojIEN1cnJlbnRseSBjYWxscyBpdHMgZXF1aXZhbGVudCBp biBrZGU0LWJhc2UuZWNsYXNzKDUpIGFuZCBjaGVja3MgdGhlIGdjYyB2ZXJzaW9uLgojIFVz ZSB0aGlzIG9uZSBpbiBzcGxpdCBlYnVpbGRzLgprZGU0LW1ldGFfcGtnX3NldHVwKCkgewoJ ZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgoKCWhhcyBwa2dfcHJldGVu ZCAke0tERU1FVEFfRVhQRn0gfHwga2RlNC1tZXRhX3BrZ19wcmV0ZW5kCgoJa2RlNC1iYXNl X3BrZ19zZXR1cAp9CgojIEBGVU5DVElPTjoga2RlNC1tZXRhX3NyY191bnBhY2sKIyBAREVT Q1JJUFRJT046CiMgVGhpcyBmdW5jdGlvbiB1bnBhY2tzIHRoZSBzb3VyY2UgZm9yIHNwbGl0 IGVidWlsZHMuCiMgRnVydGhlciBtb3JlIGlzIHByb2Nlc3NlZCBpbiBrZGU0LW1ldGFfc3Jj X2V4dHJhY3QKa2RlNC1tZXRhX3NyY191bnBhY2soKSB7CglkZWJ1Zy1wcmludC1mdW5jdGlv biAke0ZVTkNOQU1FfSAiJEAiCgoJaWYgW1sgJHtCVUlMRF9UWVBFfSA9IGxpdmUgXV07IHRo ZW4KCQljYXNlICIke0tERV9TQ019IiBpbgoJCQlzdm4pCgkJCQltaWdyYXRlX3N0b3JlX2Rp cgoJCQkJUz0iJHtXT1JLRElSfS8ke1B9IgoJCQkJbWtkaXIgLXAgIiR7U30iCgkJCQlFU1ZO X1JFU1RSSUNUPSJleHBvcnQiIHN1YnZlcnNpb25fc3JjX3VucGFjawoJCQkJc3VidmVyc2lv bl93Y19pbmZvCgkJCQlzdWJ2ZXJzaW9uX2Jvb3RzdHJhcAoJCQkJOzsKCQkJZ2l0KQoJCQkJ Z2l0X3NyY191bnBhY2sKCQkJCTs7CgkJZXNhYwoJZmkKCWtkZTQtbWV0YV9zcmNfZXh0cmFj dAp9CgojIEBGVU5DVElPTjoga2RlNC1tZXRhX3NyY19leHRyYWN0CiMgQERFU0NSSVBUSU9O OgojIEEgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgc291cmNlIGZvciBhIHNwbGl0IEtERSBl YnVpbGQuCiMgQWxzbyBzZWUgS01NT0RVTEUsIEtNTk9NT0RVTEUsIEtNRVhUUkEsIEtNQ09N UElMRU9OTFksIEtNRVhUUkFDVE9OTFkgYW5kCiMgS01UQVJQQVJBTVMuCmtkZTQtbWV0YV9z cmNfZXh0cmFjdCgpIHsKCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCIK CglpZiBbWyAke0JVSUxEX1RZUEV9ID0gbGl2ZSBdXTsgdGhlbgoJCSMgRXhwb3J0IHdvcmtp bmcgY29weSB0byAke1N9CgkJZWluZm8gIkV4cG9ydGluZyBwYXJ0cyBvZiB3b3JraW5nIGNv cHkgdG8gJHtTfSIKCQlrZGU0LW1ldGFfY3JlYXRlX2V4dHJhY3RsaXN0cwoKCQljYXNlICR7 S0RFX1NDTX0gaW4KCQkJc3ZuKQoJCQkJbG9jYWwgcnN5bmNfb3B0aW9ucyBzdWJkaXIga21u YW1lZGlyIHRhcmdldGRpciB3Y19wYXRoIGVzY20KCgkJCQlyc3luY19vcHRpb25zPSItLWdy b3VwIC0tbGlua3MgLS1vd25lciAtLXBlcm1zIC0tcXVpZXQgLS1leGNsdWRlPS5zdm4vIC0t ZXhjbHVkZT0uZ2l0LyIKCQkJCXdjX3BhdGg9IiR7RVNWTl9XQ19QQVRIfSIKCQkJCWVzY209 IntFU1ZOfSIKCgkJCQkjIENvcHkgJHtLTU5BTUV9IG5vbi1yZWN1cnNpdmVseSAodG9wbGV2 ZWwgZmlsZXMpCgkJCQlyc3luYyAke3JzeW5jX29wdGlvbnN9ICIke3djX3BhdGh9Ii8ke2tt bmFtZWRpcn0qICIke1N9IiBcCgkJCQkJfHwgZGllICIke2VzY219OiBjYW4ndCBleHBvcnQg dG9wbGV2ZWwgZmlsZXMgdG8gJyR7U30nLiIKCQkJCSMgQ29weSBjbWFrZSBkaXJlY3RvcnkK CQkJCWlmIFtbIC1kICIke3djX3BhdGh9LyR7a21uYW1lZGlyfWNtYWtlIiBdXTsgdGhlbgoJ CQkJCXJzeW5jIC0tcmVjdXJzaXZlICR7cnN5bmNfb3B0aW9uc30gIiR7d2NfcGF0aH0vJHtr bW5hbWVkaXJ9Y21ha2UiICIke1N9IiBcCgkJCQkJCXx8IGRpZSAiJHtlc2NtfTogY2FuJ3Qg ZXhwb3J0IGNtYWtlIGZpbGVzIHRvICcke1N9Jy4iCgkJCQlmaQoJCQkJIyBDb3B5IGFsbCBz dWJkaXJlY3RvcmllcwoJCQkJZm9yIHN1YmRpciBpbiAkKF9fbGlzdF9uZWVkZWRfc3ViZGly ZWN0b3JpZXMpOyBkbwoJCQkJCXRhcmdldGRpcj0iIgoJCQkJCWlmIFtbICRzdWJkaXIgPSBk b2MvKiAmJiAhIC1lICIkd2NfcGF0aC8ka21uYW1lZGlyJHN1YmRpciIgXV07IHRoZW4KCQkJ CQkJY29udGludWUKCQkJCQlmaQoKCQkJCQlbWyAke3N1YmRpciUvfSA9ICovKiBdXSAmJiB0 YXJnZXRkaXI9JHtzdWJkaXIlL30gJiYgdGFyZ2V0ZGlyPSR7dGFyZ2V0ZGlyJS8qfSAmJiBt a2RpciAtcCAiJHtTfS8ke3RhcmdldGRpcn0iCgkJCQkJcnN5bmMgLS1yZWN1cnNpdmUgJHty c3luY19vcHRpb25zfSAiJHt3Y19wYXRofS8ke2ttbmFtZWRpcn0ke3N1YmRpciUvfSIgIiR7 U30vJHt0YXJnZXRkaXJ9IiBcCgkJCQkJCXx8IGRpZSAiJHtlc2NtfTogY2FuJ3QgZXhwb3J0 IHN1YmRpcmVjdG9yeSAnJHtzdWJkaXJ9JyB0byAnJHtTfS8ke3RhcmdldGRpcn0nLiIKCQkJ CWRvbmUKCQkJCTs7CgkJZXNhYwoJZWxzZQoJCWxvY2FsIGFib3J0IHRhcmJhbGwgdGFyZmls ZSBmIGV4dHJhY3RsaXN0IG1vZHVsZXByZWZpeCBwb3N0Zml4CgoJCUtNVEFSUEFSQU1TKz0i IC0tYnppcDIiCgkJcG9zdGZpeD0iYnoyIgoKCQljYXNlICR7S01OQU1FfSBpbgoJCQlrZGVi YXNlLWFwcHMpCgkJCQkjIGtkZWJhc2UvYXBwcyAtPiBrZGViYXNlLWFwcHMKCQkJCXRhcmJh bGw9ImtkZWJhc2UtJHtQVn0udGFyLiR7cG9zdGZpeH0iCgkJCQlpZiAhIHNsb3RfaXNfYXRf bGVhc3QgNC42ICR7U0xPVH0gfHwgW1sgJHtQVn0gPT0gIjQuNi4wIiBdXTsgdGhlbgoJCQkJ CW1vZHVsZXByZWZpeD1hcHBzLwoJCQkJCUtNVEFSUEFSQU1TKz0iIC0tdHJhbnNmb3JtPXN8 YXBwcy98fCIKCQkJCWZpCgkJCQk7OwoJCQkqKQoJCQkJIyBDcmVhdGUgdGFyYmFsbCBuYW1l IGZyb20gbW9kdWxlIG5hbWUgKHRoaXMgaXMgdGhlIGRlZmF1bHQpCgkJCQl0YXJiYWxsPSIk e0tNTkFNRX0tJHtQVn0udGFyLiR7cG9zdGZpeH0iCgkJCQk7OwoJCWVzYWMKCgkJIyBGdWxs IHBhdGggdG8gc291cmNlIHRhcmJhbGwKCQl0YXJmaWxlPSIke0RJU1RESVJ9LyR7dGFyYmFs bH0iCgoJCSMgRGV0ZWN0IHJlYWwgdG9wbGV2ZWwgZGlyIGZyb20gdGFyYmFsbCBuYW1lIC0g aXQgd2lsbCBiZSB1c2VkIHVwb24gZXh0cmFjdGlvbgoJCSMgYW5kIGluIF9fbGlzdF9uZWVk ZWRfc3ViZGlyZWN0b3JpZXMKCQl0b3BkaXI9IiR7dGFyYmFsbCUudGFyLip9LyIKCgkJZWJl Z2luICJVbnBhY2tpbmcgcGFydHMgb2YgJHt0YXJiYWxsfSB0byAke1dPUktESVJ9IgoKCQlr ZGU0LW1ldGFfY3JlYXRlX2V4dHJhY3RsaXN0cwoKCQlmb3IgZiBpbiBjbWFrZS8gQ01ha2VM aXN0cy50eHQgQ29uZmlndXJlQ2hlY2tzLmNtYWtlIGNvbmZpZy5oLmNtYWtlIFwKCQkJQVVU SE9SUyBDT1BZSU5HIElOU1RBTEwgUkVBRE1FIE5FV1MgQ2hhbmdlTG9nCgkJZG8KCQkJZXh0 cmFjdGxpc3QrPSIgJHt0b3BkaXJ9JHttb2R1bGVwcmVmaXh9JHtmfSIKCQlkb25lCgkJZXh0 cmFjdGxpc3QrPSIgJChfX2xpc3RfbmVlZGVkX3N1YmRpcmVjdG9yaWVzKSIKCgkJcHVzaGQg IiR7V09SS0RJUn0iID4gL2Rldi9udWxsCgoJCSMgQEVDTEFTUy1WQVJJQUJMRTogS0RFNF9T VFJJQ1RFUgoJCSMgQERFU0NSSVBUSU9OOgoJCSMgUHJpbnQgb3V0IGFsbCBpc3N1ZXMgZm91 bmQgZXhlY3V0aW5nIHRhciAvIGttZXh0cmFjdCBmaWxlcwoJCSMgU2V0IG9uIGlmIHlvdSB3 YW50IHRvIGZpbmQgaXNzdWVzIGluIGtkZS1iYXNlIGVidWlsZCB1bnBhY2sgc2VxdWVuY2Vz CgkJW1sgLW4gJHtLREU0X1NUUklDVEVSfSBdXSAmJiBlY2hvICd0YXIgLXhwZiAiJHt0YXJm aWxlfSIgJHtLTVRBUlBBUkFNU30gJHtleHRyYWN0bGlzdH0nCgkJaWYgW1sgJHtJX0tOT1df V0hBVF9JX0FNX0RPSU5HfSBdXTsgdGhlbgoJCQkjIHRvIG1ha2UgdGhlIGRldnMgaGFwcHkg LSBidWcgMzM4Mzk3CgkJCXRhciAteHBmICIke3RhcmZpbGV9IiAke0tNVEFSUEFSQU1TfSAk e2V4dHJhY3RsaXN0fSB8fCBld2FybiAidGFyIGV4dHJhY3QgY29tbWFuZCBmYWlsZWQgYXQg bGVhc3QgcGFydGlhbGx5IC0gY29udGludWluZyBhbnl3YXkiCgkJZWxzZQoJCQl0YXIgLXhw ZiAiJHt0YXJmaWxlfSIgJHtLTVRBUlBBUkFNU30gJHtleHRyYWN0bGlzdH0gMj4gL2Rldi9u dWxsIHx8IGVjaG8gInRhciBleHRyYWN0IGNvbW1hbmQgZmFpbGVkIGF0IGxlYXN0IHBhcnRp YWxseSAtIGNvbnRpbnVpbmcgYW55d2F5IgoJCWZpCgoJCSMgRGVmYXVsdCAkUyBpcyBiYXNl ZCBvbiAkUDsgcmVuYW1lIHRoZSBleHRyYWN0ZWQgZGlyZWN0b3J5IHRvIG1hdGNoICRTIGlm IG5lY2Vzc2FyeQoJCW12ICR7dG9wZGlyfSAke1B9IHx8IGRpZSAiRGllZCB3aGlsZSBtb3Zp bmcgXCIke3RvcGRpcn1cIiB0byBcIiR7UH1cIiIKCgkJcG9wZCA+IC9kZXYvbnVsbAoKCQll ZW5kICQ/CgoJCSMgV2UgbmVlZCB0byBjbGVhciBpdCBoZXJlIHRvIG1ha2UgdmVyaWZpY2F0 aW9uIGJlbG93IHdvcmsKCQl1bnNldCBtb2R1bGVwcmVmaXgKCgkJaWYgW1sgLW4gJHtLREU0 X1NUUklDVEVSfSBdXTsgdGhlbgoJCQlmb3IgZiBpbiAkKF9fbGlzdF9uZWVkZWRfc3ViZGly ZWN0b3JpZXMgZmF0YWwpOyBkbwoJCQkJaWYgW1sgISAtZSAke1N9LyR7ZiMqL30gXV07IHRo ZW4KCQkJCQllZXJyb3IgIicke2YjKi99JyBpcyBtaXNzaW5nIgoJCQkJCWFib3J0PXRydWUK CQkJCWZpCgkJCWRvbmUKCQkJW1sgLW4gJHthYm9ydH0gXV0gJiYgZGllICJUaGVyZSB3ZXJl IG1pc3NpbmcgZmlsZXMuIgoJCWZpCgoJCSMgV2UgZG9uJ3QgbmVlZCBpdCBhbnltb3JlCgkJ dW5zZXQgdG9wZGlyCglmaQp9CgojIEBGVU5DVElPTjoga2RlNC1tZXRhX2NyZWF0ZV9leHRy YWN0bGlzdHMKIyBAREVTQ1JJUFRJT046CiMgQ3JlYXRlIGxpc3RzIG9mIGZpbGVzIGFuZCBz dWJkaXJlY3RvcmllcyB0byBleHRyYWN0LgojIEFsc28gc2VlIGRlc2NyaXB0aW9ucyBvZiBL TU1PRFVMRSwgS01OT01PRFVMRSwgS01FWFRSQSwgS01DT01QSUxFT05MWSwKIyBLTUVYVFJB Q1RPTkxZIGFuZCBLTVRBUlBBUkFNUy4Ka2RlNC1tZXRhX2NyZWF0ZV9leHRyYWN0bGlzdHMo KSB7CglkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJEAiCgoJIyBBZGQgZGVm YXVsdCBoYW5kYm9vayBsb2NhdGlvbnMKCSMgRklYTUUgLSBsZWdhY3kgY29kZSAtIHJlbW92 ZSB3aGVuIDQuNC41IGlzIGdvbmUgb3IgcHJlZmVycmFibHkgcG9ydCA0LjQuNS4KCWlmICEg c2xvdF9pc19hdF9sZWFzdCA0LjUgJHtTTE9UfSAmJiBoYXMgaGFuZGJvb2sgJHtJVVNFLy8r fSAmJiB1c2UgaGFuZGJvb2sgJiYgW1sgLXogJHtLTU5PTU9EVUxFfSBdXTsgdGhlbgoJCSMg V2UgdXNlIHRoZSBiYXNlbmFtZSBvZiAkS01NT0RVTEUgYmVjYXVzZSAkS01NT0RVTEUgY2Fu IGNvbnRhaW4KCQkjIHRoZSBwYXRoIHRvIHRoZSBtb2R1bGUgc3ViZGlyZWN0b3J5LgoJCUtN RVhUUkFfTk9ORkFUQUwrPSIKCQkJZG9jLyR7S01NT0RVTEUjIyovfSIKCWZpCgoJIyBBZGQg ZGVmYXVsdCBoYW5kYm9vayBsb2NhdGlvbnMKCWlmIFtbIC16ICR7S01OT01PRFVMRX0gXV0g JiYgKCBbWyAke0tERV9IQU5EQk9PS30gPT0gYWx3YXlzIF1dIHx8ICggW1sgJHtLREVfSEFO REJPT0t9ID09IG9wdGlvbmFsIF1dICYmIHVzZSBoYW5kYm9vayApICk7IHRoZW4KCQlLTUVY VFJBX05PTkZBVEFMKz0iIGRvYy8ke0tNTU9EVUxFIyMqL30iCglmaQoKCSMgQWRkIHNvbWUg Q01ha2UtZmlsZXMgdG8gS01FWFRSQUNUT05MWS4KCSMgTm90ZSB0aGF0IHRoaXMgYWN0dWFs bHkgZG9lc24ndCBpbmNsdWRlIEtNRVhUUkEgaGFuZGxpbmcuCgkjIEluIHRob3NlIGNhc2Vz IHlvdSBzaG91bGQgY2FyZSB0byBhZGQgdGhlIHJlbGV2YW50IGZpbGVzIHRvIEtNRVhUUkFD VE9OTFkKCWNhc2UgJHtLTU5BTUV9IGluCgkJa2RlYmFzZSkKCQkJaWYgISBzbG90X2lzX2F0 X2xlYXN0IDQuNiAke1NMT1R9IHx8IFtbICR7UFZ9ID09ICI0LjYuMCIgXV07IHRoZW4KCQkJ CUtNRVhUUkFDVE9OTFkrPSIKCQkJCQlhcHBzL2NvbmZpZy1hcHBzLmguY21ha2UKCQkJCQlh cHBzL0NvbmZpZ3VyZUNoZWNrcy5jbWFrZSIKCQkJZWxzZQoJCQkJS01FWFRSQUNUT05MWSs9 IgoJCQkJCWNvbmZpZy1hcHBzLmguY21ha2UKCQkJCQlDb25maWd1cmVDaGVja3MuY21ha2Ui CgkJCWZpCgkJCTs7CgkJa2RlYmFzZS1hcHBzKQoJCQlLTUVYVFJBQ1RPTkxZKz0iCgkJCQlj b25maWctYXBwcy5oLmNtYWtlCgkJCQlDb25maWd1cmVDaGVja3MuY21ha2UiCgkJCTs7CgkJ a2RlYmFzZS1ydW50aW1lKQoJCQlLTUVYVFJBQ1RPTkxZKz0iCgkJCQljb25maWctcnVudGlt ZS5oLmNtYWtlIgoJCQk7OwoJCWtkZWJhc2Utd29ya3NwYWNlKQoJCQlLTUVYVFJBQ1RPTkxZ Kz0iCgkJCQljb25maWctdW5peC5oLmNtYWtlCgkJCQlDb25maWd1cmVDaGVja3MuY21ha2UK CQkJCWNvbmZpZy13b3Jrc3BhY2UuaC5jbWFrZQoJCQkJY29uZmlnLVgxMS5oLmNtYWtlCgkJ CQlzdGFydGtkZS5jbWFrZQoJCQkJS0RFNFdvcmtzcGFjZUNvbmZpZy5jbWFrZS5pbiIKCQkJ OzsKCQlrZGVnYW1lcykKCQkJaWYgW1sgJHtQTn0gIT0gbGlia2RlZ2FtZXMgXV07IHRoZW4K CQkJCUtNRVhUUkFDVE9OTFkrPSIKCQkJCQlsaWJrZGVnYW1lcy8iCgkJCQlLTUxPQURMSUJT PSIke0tNTE9BRExJQlN9IGxpYmtkZWdhbWVzIgoJCQlmaQoJCQk7OwoJCWtkZXBpbSkKCQkJ aWYgW1sgJHtQTn0gIT0gbGlia2RlcGltIF1dOyB0aGVuCgkJCQlLTUVYVFJBQ1RPTkxZKz0i CgkJCQkJbGlia2RlcGltLyIKCQkJZmkKCQkJS01FWFRSQUNUT05MWSs9IgoJCQkJY29uZmln LWVudGVycHJpc2UuaC5jbWFrZQoJCQkJa2xlb3BhdHJhL0NvbmZpZ3VyZUNoZWNrcy5jbWFr ZSIKCQkJaWYgc2xvdF9pc19hdF9sZWFzdCA0LjUgJHtTTE9UfTsgdGhlbgoJCQkJS01FWFRS QUNUT05MWSs9IgoJCQkJCUNUZXN0Q3VzdG9tLmNtYWtlCgkJCQkJa2RlcGltLXZlcnNpb24u aC5jbWFrZSIKCQkJZWxzZQoJCQkJS01FWFRSQUNUT05MWSs9IgoJCQkJCWtkZXBpbS12ZXJz aW9uLmgiCgkJCWZpCgkJCWlmIGhhcyBrb250YWN0ICR7SVVTRS8vK30gJiYgdXNlIGtvbnRh Y3Q7IHRoZW4KCQkJCUtNRVhUUkErPSIKCQkJCQlrb250YWN0L3BsdWdpbnMvJHtQTFVHSU5O QU1FOi0ke1BOfX0vIgoJCQlmaQoJCQk7OwoJCWtkZXV0aWxzKQoJCQlLTUVYVFJBQ1RPTkxZ Kz0iCgkJCQlrZGV1dGlscy12ZXJzaW9uLmgiCgkJCTs7CgkJa29mZmljZSkKCQkJS01FWFRS QUNUT05MWSs9IgoJCQkJZmlsdGVycy9jb25maWctZmlsdGVycy5oLmNtYWtlCgkJCSIKCQkJ Y2FzZSAke1BWfSBpbgoJCQkJMi5bMTJdLiopCgkJCQkJS01FWFRSQUNUT05MWSs9IgoJCQkJ CQljb25maWctZW5kaWFuLmguY21ha2UKCQkJCQkJY29uZmlnLW9wZW5leHIuaC5jbWFrZQoJ CQkJCQljb25maWctb3BlbmdsLmguY21ha2UKCQkJCQkJY29uZmlnLXByZWZpeC5oLmNtYWtl IgoJCQkJOzsKCQkJZXNhYwoJCQk7OwoJZXNhYwoJIyBEb24ndCBpbnN0YWxsIGNtYWtlIG1v ZHVsZXMgZm9yIHNwbGl0IGVidWlsZHMsIHRvIGF2b2lkIGNvbGxpc2lvbnMuCgkjIG5vdGU6 IGtkZWdyYXBoaWNzID49IDQuNi4yIGRvZXMgbm90IGV2ZW4gaGF2ZSBjb2RlIHRvIGRvIHRo YXQsIHNvIHdlCgkjICAgc2hvdWxkIG5vdCB0cnkgaW4gdGhhdCBjYXNlCglpZiBbWyAke0tN TkFNRX0gIT0ga2RlZ3JhcGhpY3MgXV0gfHwgeyBbWyAke1NMT1R9ICE9IDQuNiB8fCAke1BW fSA8IDQuNi4yIF1dICYmICEgc2xvdF9pc19hdF9sZWFzdCA0LjcgJHtTTE9UfTsgfTsgdGhl bgoJCWNhc2UgJHtLTU5BTUV9IGluCgkJCWtkZWJhc2UtcnVudGltZXxrZGViYXNlLXdvcmtz cGFjZXxrZGVlZHV8a2RlZ2FtZXN8a2RlZ3JhcGhpY3MpCgkJCQljYXNlICR7UE59IGluCgkJ CQkJbGlia2RlZ2FtZXN8bGlia2RlZWR1fGxpYmt3b3Jrc3BhY2UpCgkJCQkJCUtNRVhUUkEr PSIKCQkJCQkJCWNtYWtlL21vZHVsZXMvIgoJCQkJCQk7OwoJCQkJCSopCgkJCQkJCUtNQ09N UElMRU9OTFkrPSIKCQkJCQkJCWNtYWtlL21vZHVsZXMvIgoJCQkJCQk7OwoJCQkJZXNhYwoJ CQk7OwoJCWVzYWMKCWZpCgoJZGVidWctcHJpbnQgImxpbmUgJHtMSU5FTk99ICR7RUNMQVNT fSAke0ZVTkNOQU1FfTogS01FWFRSQUNUT05MWSAke0tNRVhUUkFDVE9OTFl9Igp9CgpfX2xp c3RfbmVlZGVkX3N1YmRpcmVjdG9yaWVzKCkgewoJbG9jYWwgaSBqIGttZXh0cmEga21leHRy YV9leHBhbmRlZCBrbW1vZHVsZV9leHBhbmRlZCBrbWNvbXBpbGVvbmx5X2V4cGFuZGVkIGV4 dHJhY3RsaXN0CgoJIyBXZSBleHBhbmQgS01FWFRSQSBieSBhZGRpbmcgQ01ha2VMaXN0cy50 eHQgZmlsZXMKCWttZXh0cmE9IiR7S01FWFRSQX0iCglbWyAkezF9ICE9IGZhdGFsIF1dICYm IGttZXh0cmErPSIgJHtLTUVYVFJBX05PTkZBVEFMfSIKCWZvciBpIGluICR7a21leHRyYX07 IGRvCgkJa21leHRyYV9leHBhbmRlZCs9IiAke2l9IgoJCWo9JChkaXJuYW1lICR7aX0pCgkJ d2hpbGUgW1sgJHtqfSAhPSAiLiIgXV07IGRvCgkJCWttZXh0cmFfZXhwYW5kZWQrPSIgJHtq fS9DTWFrZUxpc3RzLnR4dCI7CgkJCWo9JChkaXJuYW1lICR7an0pCgkJZG9uZQoJZG9uZQoK CSMgRXhwYW5kIEtNTU9EVUxFCglpZiBbWyAtbiAke0tNTU9EVUxFfSBdXTsgdGhlbgoJCWtt bW9kdWxlX2V4cGFuZGVkPSIke0tNTU9EVUxFfSIKCQlqPSQoZGlybmFtZSAke0tNTU9EVUxF fSkKCQl3aGlsZSBbWyAke2p9ICE9ICIuIiBdXTsgZG8KCQkJa21tb2R1bGVfZXhwYW5kZWQr PSIgJHtqfS9DTWFrZUxpc3RzLnR4dCI7CgkJCWo9JChkaXJuYW1lICR7an0pCgkJZG9uZQoJ ZmkKCgkjIEV4cGFuZCBLTUNPTVBJTEVPTkxZCglmb3IgaSBpbiAke0tNQ09NUElMRU9OTFl9 OyBkbwoJCWttY29tcGlsZW9ubHlfZXhwYW5kZWQrPSIgJHtpfSIKCQlqPSQoZGlybmFtZSAk e2l9KQoJCXdoaWxlIFtbICR7an0gIT0gIi4iIF1dOyBkbwoJCQlrbWNvbXBpbGVvbmx5X2V4 cGFuZGVkKz0iICR7an0vQ01ha2VMaXN0cy50eHQiOwoJCQlqPSQoZGlybmFtZSAke2p9KQoJ CWRvbmUKCWRvbmUKCglkZWJ1Zy1wcmludCAibGluZSAke0xJTkVOT30gJHtFQ0xBU1N9ICR7 RlVOQ05BTUV9IC0ga21leHRyYV9leHBhbmRlZDogJHtrbWV4dHJhX2V4cGFuZGVkfSIKCWRl YnVnLXByaW50ICJsaW5lICR7TElORU5PfSAke0VDTEFTU30gJHtGVU5DTkFNRX0gLSBrbW1v ZHVsZV9leHBhbmRlZDogICR7a21tb2R1bGVfZXhwYW5kZWR9IgoJZGVidWctcHJpbnQgImxp bmUgJHtMSU5FTk99ICR7RUNMQVNTfSAke0ZVTkNOQU1FfSAtIGttY29tcGlsZW9ubHlfZXhw YW5kZWQ6ICR7a21jb21waWxlb25seV9leHBhbmRlZH0iCgoJIyBDcmVhdGUgZmluYWwgbGlz dCBvZiBzdHVmZiB0byBleHRyYWN0CgkjIFdlIGFwcGVuZCB0b3BkaXIgb25seSB3aGVuIHNw ZWNpZmllZCAodXN1YWxseSBmb3IgdGFyYmFsbHMpCglmb3IgaSBpbiAke2ttbW9kdWxlX2V4 cGFuZGVkfSAke2ttZXh0cmFfZXhwYW5kZWR9ICR7a21jb21waWxlb25seV9leHBhbmRlZH0g XAoJCSR7S01FWFRSQUNUT05MWX0KCWRvCgkJZXh0cmFjdGxpc3QrPSIgJHt0b3BkaXJ9JHtt b2R1bGVwcmVmaXh9JHtpfSIKCWRvbmUKCgllY2hvICR7ZXh0cmFjdGxpc3R9Cn0KCiMgQEZV TkNUSU9OOiBrZGU0LW1ldGFfc3JjX3ByZXBhcmUKIyBAREVTQ1JJUFRJT046CiMgTWV0YS1w YWNrYWdlIGJ1aWxkIHN5c3RlbSBjb25maWd1cmF0aW9uIGhhbmRsaW5nIC0gY29tbWVudGlu ZyBvdXQgdGFyZ2V0cywgZXRjLi4Ka2RlNC1tZXRhX3NyY19wcmVwYXJlKCkgewoJZGVidWct cHJpbnQtZnVuY3Rpb24gICR7RlVOQ05BTUV9ICIkQCIKCglrZGU0LW1ldGFfY2hhbmdlX2Nt YWtlbGlzdHMKCWtkZTQtYmFzZV9zcmNfcHJlcGFyZQp9CgojIEBGVU5DVElPTjogX2NoYW5n ZV9jbWFrZWxpc3RzX3BhcmVudF9kaXJzCiMgQERFU0NSSVBUSU9OOgojIEFkanVzdCBDTWFr ZUxpc3RzLnR4dCB0byBzaGFkb3cgc3ViZGlyZWN0b3JpZXMKIyB0aGF0IGFyZSBub3QgcmVx dWlyZWQgZm9yIHRoZSBidWlsZC4KX2NoYW5nZV9jbWFrZWxpc3RzX3BhcmVudF9kaXJzKCkg ewoJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgoKCWxvY2FsIF9vbGRk aXIgX2RpcgoJX2Rpcj0iJHtTfSIvJHsxfQoJdW50aWwgW1sgJHtfZGlyfSA9PSAke1N9IF1d OyBkbwoJCV9vbGRkaXI9JChiYXNlbmFtZSAiJHtfZGlyfSIpCgkJX2Rpcj0kKGRpcm5hbWUg IiR7X2Rpcn0iKQoJCWRlYnVnLXByaW50ICIke0xJTkVOT306IHByb2Nlc3NpbmcgJHtfZGly fSBDTWFrZUxpc3RzLnR4dCBzZWFyY2hpbmcgZm9yICR7X29sZGRpcn0iCgkJaWYgW1sgLWYg JHtfZGlyfS9DTWFrZUxpc3RzLnR4dCBdXTsgdGhlbgoJCQlzZWQgLWUgIi9hZGRfc3ViZGly ZWN0b3J5W1s6c3BhY2U6XV0qKFtbOnNwYWNlOl1dKiR7X29sZGRpcn1bWzpzcGFjZTpdXSop L3MvI0RPTk9UQ09NUElMRSAvL2ciIFwKCQkJCS1lICIvQUREX1NVQkRJUkVDVE9SWVtbOnNw YWNlOl1dKihbWzpzcGFjZTpdXSoke19vbGRkaXJ9W1s6c3BhY2U6XV0qKS9zLyNET05PVENP TVBJTEUgLy9nIiBcCgkJCQktaSAke19kaXJ9L0NNYWtlTGlzdHMudHh0IHx8IGRpZSAiJHtM SU5FTk99OiBkaWVkIGluICR7RlVOQ05BTUV9IHdoaWxlIHByb2Nlc3NpbmcgJHtfZGlyfSIK CQlmaQoJZG9uZQp9CgojIEBGVU5DVElPTjoga2RlNC1tZXRhX2NoYW5nZV9jbWFrZWxpc3Rz CiMgQERFU0NSSVBUSU9OOgojIEFkanVzdCBDTWFrZUxpc3RzLnR4dCB0byBjb21wbHkgdG8g b3VyIHNwbGl0dGluZy4Ka2RlNC1tZXRhX2NoYW5nZV9jbWFrZWxpc3RzKCkgewoJZGVidWct cHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgoKCXB1c2hkICIke1N9IiA+IC9kZXYv bnVsbAoKCWNvbW1lbnRfYWxsX2FkZF9zdWJkaXJlY3RvcnkgLi8KCgkjIFJlc3RvcmUgImFk ZF9zdWJkaXJlY3RvcnkoIGNtYWtlICkiIGluICR7U30vQ01ha2VMaXN0cy50eHQKCWlmIFtb IC1mIENNYWtlTGlzdHMudHh0IF1dOyB0aGVuCgkJc2VkIC1lICcvYWRkX3N1YmRpcmVjdG9y eVtbOnNwYWNlOl1dKihbWzpzcGFjZTpdXSpjbWFrZVtbOnNwYWNlOl1dKikvcy9eI0RPTk9U Q09NUElMRSAvLycgXAoJCQktZSAnL0FERF9TVUJESVJFQ1RPUllbWzpzcGFjZTpdXSooW1s6 c3BhY2U6XV0qY21ha2VbWzpzcGFjZTpdXSopL3MvXiNET05PVENPTVBJTEUgLy8nIFwKCQkJ LWkgQ01ha2VMaXN0cy50eHQgfHwgZGllICIke0xJTkVOT306IGNtYWtlIHNlZCBkaWVkIgoJ ZmkKCglpZiBbWyAteiAke0tNTk9NT0RVTEV9IF1dOyB0aGVuCgkJIyBSZXN0b3JlICJhZGRf c3ViZGlyZWN0b3J5IiBpbiAkS01NT0RVTEUgc3ViZGlyZWN0b3JpZXMKCQlmaW5kICIke1N9 Ii8ke0tNTU9EVUxFfSAtbmFtZSBDTWFrZUxpc3RzLnR4dCAtcHJpbnQwIHwgXAoJCQl4YXJn cyAtMCBzZWQgLWkgLWUgJ3MvXiNET05PVENPTVBJTEUgLy9nJyB8fCBcCgkJCQlkaWUgIiR7 TElORU5PfTogZGllZCBpbiBLTU1PRFVMRSBzZWN0aW9uIgoJCV9jaGFuZ2VfY21ha2VsaXN0 c19wYXJlbnRfZGlycyAke0tNTU9EVUxFfQoJZmkKCglsb2NhbCBpCgoJIyBLTUVYVFJBQ1RP TkxZIHNlY3Rpb24gLSBTb21lIGVidWlsZHMgbmVlZCB0byBjb21tZW50IG91dCBzb21lIHN1 YmRpcnMgaW4gS01NT0RVTEUgYW5kIHRoZXkgdXNlIEtNRVhUUkFDVE9OTFkKCWZvciBpIGlu ICR7S01FWFRSQUNUT05MWX07IGRvCgkJaWYgW1sgLWQgJHtpfSAmJiAtZiAke2l9Ly4uL0NN YWtlTGlzdHMudHh0IF1dOyB0aGVuCgkJCXNlZCAtZSAiLyhbWzpzcGFjZTpdXSokKGJhc2Vu YW1lICRpKVtbOnNwYWNlOl1dKikvcy9eLyNET05PVENPTVBJTEUgLyIgXAoJCQkJLWkgJHtp fS8uLi9DTWFrZUxpc3RzLnR4dCB8fCBcCgkJCQlkaWUgIiR7TElORU5PfTogc2VkIGRpZWQg d2hpbGUgd29ya2luZyBpbiB0aGUgS01FWFRSQUNUT05MWSBzZWN0aW9uIHdoaWxlIHByb2Nl c3NpbmcgJHtpfSIKCQlmaQoJZG9uZQoKCSMgS01DT01QSUxFT05MWQoJZm9yIGkgaW4gJHtL TUNPTVBJTEVPTkxZfTsgZG8KCQlkZWJ1Zy1wcmludCAiJHtMSU5FTk99OiBLTUNPTVBJTEVP TkxZLCBwcm9jZXNzaW5nICR7aX0iCgkJIyBVbmNvbW1lbnQgImFkZF9zdWJkaXJlY3Rvcnki IGluc3RydWN0aW9ucyBpbnNpZGUgJEtNQ09NUElMRU9OTFksIHRoZW4gY29tbWVudCAiaW5z dGFsbCIgaW5zdHJ1Y3Rpb25zLgoJCWZpbmQgIiR7U30iLyR7aX0gLW5hbWUgQ01ha2VMaXN0 cy50eHQgLXByaW50MCB8IFwKCQkJeGFyZ3MgLTAgc2VkIC1pIFwKCQkJCS1lICdzL14jRE9O T1RDT01QSUxFIC8vZycgXAoJCQkJLWUgJy9pbnN0YWxsKC4qKS97cy9eLyNET05PVElOU1RB TEwgLzt9JyBcCgkJCQktZSAnL15pbnN0YWxsKC8sLykve3MvXi8jRE9OT1RJTlNUQUxMIC87 fScgXAoJCQkJLWUgJy9rZGU0X2luc3RhbGxfaWNvbnMoLiopL3tzL14vI0RPTk9USU5TVEFM TCAvO30nIHx8IFwKCQkJCWRpZSAiJHtMSU5FTk99OiBzZWQgZGllZCBpbiB0aGUgS01DT01Q SUxFT05MWSBzZWN0aW9uIHdoaWxlIHByb2Nlc3NpbmcgJHtpfSIKCQlfY2hhbmdlX2NtYWtl bGlzdHNfcGFyZW50X2RpcnMgJHtpfQoJZG9uZQoKCSMgS01FWFRSQSBzZWN0aW9uCglmb3Ig aSBpbiAke0tNRVhUUkF9OyBkbwoJCWRlYnVnLXByaW50ICIke0xJTkVOT306IEtNRVhUUkEg c2VjdGlvbiwgcHJvY2Vzc2luZyAke2l9IgoJCWZpbmQgIiR7U30iLyR7aX0gLW5hbWUgQ01h a2VMaXN0cy50eHQgLXByaW50MCB8IFwKCQkJeGFyZ3MgLTAgc2VkIC1pIC1lICdzL14jRE9O T1RDT01QSUxFIC8vZycgfHwgXAoJCQlkaWUgIiR7TElORU5PfTogc2VkIGRpZWQgdW5jb21t ZW50aW5nIGFkZF9zdWJkaXJlY3RvcnkgaW5zdHJ1Y3Rpb25zIGluIEtNRVhUUkEgc2VjdGlv biB3aGlsZSBwcm9jZXNzaW5nICR7aX0iCgkJX2NoYW5nZV9jbWFrZWxpc3RzX3BhcmVudF9k aXJzICR7aX0KCWRvbmUKCSMgS01FWFRSQV9OT05GQVRBTCBzZWN0aW9uCglmb3IgaSBpbiAk e0tNRVhUUkFfTk9ORkFUQUx9OyBkbwoJCWlmIFtbIC1kICIke1N9Ii8ke2l9IF1dOyB0aGVu CgkJCWZpbmQgIiR7U30iLyR7aX0gLW5hbWUgQ01ha2VMaXN0cy50eHQgLXByaW50MCB8IFwK CQkJCXhhcmdzIC0wIHNlZCAtaSAtZSAncy9eI0RPTk9UQ09NUElMRSAvL2cnIHx8IFwKCQkJ CQlkaWUgIiR7TElORU5PfTogc2VkIGRpZWQgdW5jb21tZW50aW5nIGFkZF9zdWJkaXJlY3Rv cnkgaW5zdHJ1Y3Rpb25zIGluIEtNRVhUUkEgc2VjdGlvbiB3aGlsZSBwcm9jZXNzaW5nICR7 aX0iCgkJCV9jaGFuZ2VfY21ha2VsaXN0c19wYXJlbnRfZGlycyAke2l9CgkJZmkKCWRvbmUK CgljYXNlICR7S01OQU1FfSBpbgoJCWtkZWJhc2Utd29ya3NwYWNlKQoJCQkjIENPTExJU0lP TiBQUk9URUNUIHNlY3Rpb24KCQkJIyBJbnN0YWxsIHRoZSBzdGFydGtkZSBzY3JpcHQganVz dCBvbmNlLCBhcyBhIHBhcnQgb2Yga2RlLWJhc2Uva2RlYmFzZS1zdGFydGtkZSwKCQkJIyBu b3QgYXMgYSBwYXJ0IG9mIGV2ZXJ5IHBhY2thZ2UuCgkJCWlmIFtbICR7UE59ICE9IGtkZWJh c2Utc3RhcnRrZGUgJiYgLWYgQ01ha2VMaXN0cy50eHQgXV07IHRoZW4KCQkJCSMgVGhlIHN0 YXJ0a2RlIHNjcmlwdCBtb3ZlZCB0byBrZGViYXNlLXdvcmtzcGFjZSBmb3IgS0RFNCB2ZXJz aW9ucyA+IDMuOTMuMC4KCQkJCXNlZCAtZSAnL3N0YXJ0a2RlL3MvXi8jRE9OT1RJTlNUQUxM IC8nIFwKCQkJCQktaSBDTWFrZUxpc3RzLnR4dCB8fCBkaWUgIiR7TElORU5PfTogc2VkIGRp ZWQgaW4gdGhlIGtkZWJhc2Utc3RhcnRrZGUgY29sbGlzaW9uIHByZXZlbnRpb24gc2VjdGlv biIKCQkJZmkKCQkJIyBTdHJpcCBFWFBPUlQgZmVhdHVyZSBzZWN0aW9uIGZyb20gd29ya3Nw YWNlIGZvciBLREU0IHZlcnNpb25zID4gNC4xLjgyCgkJCWlmIFtbICR7UE59ICE9IGxpYmt3 b3Jrc3BhY2UgXV07IHRoZW4KCQkJCXNlZCAtZSAnL2luc3RhbGwoRklMRVMgJHtDTUFLRV9D VVJSRU5UX0JJTkFSWV9ESVJ9XC9LREU0V29ya3NwYWNlQ29uZmlnLmNtYWtlLywvXltbOnNw YWNlOl1dKkZJTEUgS0RFNFdvcmtzcGFjZUxpYnJhcnlUYXJnZXRzLmNtYWtlIClbWzpzcGFj ZTpdXSpeL2QnIFwKCQkJCQktaSBDTWFrZUxpc3RzLnR4dCB8fCBkaWUgIiR7TElORU5PfTog c2VkIGRpZWQgaW4ga2RlYmFzZS13b3Jrc3BhY2Ugc3RyaXAgY29uZmlnIGluc3RhbGwgYW5k IGZpeCBFWFBPUlQgc2VjdGlvbiIKCQkJZmkKCQkJOzsKCQlrZGViYXNlLXJ1bnRpbWUpCgkJ CSMgQ09MTElTSU9OIFBST1RFQ1Qgc2VjdGlvbgoJCQkjIE9ubHkgaW5zdGFsbCB0aGUga2Rl NCBzY3JpcHQgYXMgcGFydCBvZiBrZGUtYmFzZS9rZGViYXNlLWRhdGEKCQkJaWYgW1sgJHtQ Tn0gIT0ga2RlYmFzZS1kYXRhICYmIC1mIENNYWtlTGlzdHMudHh0IF1dOyB0aGVuCgkJCQlz ZWQgLWUgJy9eaW5zdGFsbChQUk9HUkFNU1tbOnNwYWNlOl1dKlteWzpzcGFjZTpdXSpcL2tk ZTRbWzpzcGFjZTpdXS9zL14vI0RPTk9USU5TVEFMTCAvJyBcCgkJCQkJLWkgQ01ha2VMaXN0 cy50eHQgfHwgZGllICJTZWQgdG8gZXhjbHVkZSBiaW4va2RlNCBmYWlsZWQiCgkJCWZpCgkJ CTs7CgkJa2RlbmV0d29yaykKCQkJIyBEaXNhYmxlIGhhcmRjb2RlZCBrZGVwaW1saWJzIGNo ZWNrCgkJCXNlZCAtZSAncy9maW5kX3BhY2thZ2UoS2RlcGltTGlicyBSRVFVSVJFRCkvbWFj cm9fb3B0aW9uYWxfZmluZF9wYWNrYWdlKEtkZXBpbUxpYnMpLycgXAoJCQkJLWkgQ01ha2VM aXN0cy50eHQgfHwgZGllICJmYWlsZWQgdG8gZGlzYWJsZSBoYXJkY29kZWQgY2hlY2tzIgoJ CQk7OwoJCWtkZXBpbSkKCQkJIyBEaXNhYmxlIGhhcmRjb2RlZCBjaGVja3MKCQkJc2VkIC1y IC1lICcvZmluZF9wYWNrYWdlXChLZGVwaW1MaWJzL3MvUkVRVUlSRUQvLycgXAoJCQkJLWUg Jy9maW5kX3BhY2thZ2VcKChLZGVwaW1MaWJzfEJvb3N0fFFHcGdtZXxBa29uYWRpfFpMSUJ8 U3RyaWdpfFNoYXJlZERlc2t0b3BPbnRvbG9naWVzfFNvcHJhbm98TmVwb211aykvey9tYWNy b19vcHRpb25hbF8vIXMvZmluZC9tYWNyb19vcHRpb25hbF8mL30nIFwKCQkJCS1lICcvbWFj cm9fbG9nX2ZlYXR1cmVcKChCb29zdHxRR1BHTUV8QWtvbmFkaXxaTElCfFNUUklHSXxTSEFS RURERVNLVE9QT05UT0xPR0lFU3xTb3ByYW5vfE5lcG9tdWspX0ZPVU5EL3MvIFRSVUUgLyBG QUxTRSAvJyBcCgkJCQktZSAnL2lmW1s6c3BhY2U6XV0qKFtbOnNwYWNlOl1dKkJVSUxEXy4q KS9zL14vI09WRVJSSURFIC8nIFwKCQkJCS1lICcvaWZbWzpzcGFjZTpdXSooW1s6c3BhY2U6 XV0qW1s6YWxudW06XV0qX0ZPVU5EW1s6c3BhY2U6XV0qKS9zL14vI09WRVJSSURFIC8nIFwK CQkJCS1pIENNYWtlTGlzdHMudHh0IHx8IGRpZSAiZmFpbGVkIHRvIGRpc2FibGUgaGFyZGNv ZGVkIGNoZWNrcyIKCQkJIyBEaXNhYmxlIGJyb2tlbiBvciByZWR1bmRhbnQgYnVpbGQgbG9n aWMKCQkJaWYgKCBoYXMga29udGFjdCAke0lVU0UvLyt9ICYmIHVzZSBrb250YWN0ICkgfHwg W1sgJHtQTn0gPSBrb250YWN0IF1dOyB0aGVuCgkJCQlzZWQgLWUgJy9pZltbOnNwYWNlOl1d KihbWzpzcGFjZTpdXSpCVUlMRF8uKikvcy9eLyNPVkVSUklERSAvJyBcCgkJCQkJLWUgJy9p ZltbOnNwYWNlOl1dKihbWzpzcGFjZTpdXSpbWzphbG51bTpdXSpfRk9VTkRbWzpzcGFjZTpd XSopL3MvXi8jT1ZFUlJJREUgLycgXAoJCQkJCS1pIGtvbnRhY3QvcGx1Z2lucy9DTWFrZUxp c3RzLnR4dCB8fCBkaWUgJ2ZhaWxlZCB0byBvdmVycmlkZSBidWlsZCBsb2dpYycKCQkJZmkK CQkJaWYgISBzbG90X2lzX2F0X2xlYXN0IDQuNSAke1NMT1R9OyB0aGVuCgkJCQljYXNlICR7 UE59IGluCgkJCQkJa2FsYXJtfGttYWlsY3Z0fGtvbnRhY3R8a29yZ2FuaXplcnxrb3JuKQoJ CQkJCQlzZWQgLW4gLWUgJy9xdDRfZ2VuZXJhdGVfZGJ1c19pbnRlcmZhY2UoLipvcmdcLmtk ZVwua21haWxcLlwoa21haWxcfG1haWxjb21wb3NlclwpXC54bWwvcCcgXAoJCQkJCQkJLWUg Jy9hZGRfY3VzdG9tX3RhcmdldChrbWFpbF94bWwgLywvKS9wJyBcCgkJCQkJCQktaSBrbWFp bC9DTWFrZUxpc3RzLnR4dCB8fCBkaWUgInVuY29tbWVudGluZyB4bWwgZmFpbGVkIgoJCQkJ CQlfY2hhbmdlX2NtYWtlbGlzdHNfcGFyZW50X2RpcnMga21haWwKCQkJCQk7OwoJCQkJZXNh YwoJCQlmaQoJCQk7OwoJCWtkZXdlYmRldikKCQkJIyBEaXNhYmxlIGhhcmRjb2RlZCBjaGVj a3MKCQkJc2VkIC1lICdzL2ZpbmRfcGFja2FnZShLZGVwaW1MaWJzIFJFUVVJUkVEKS9tYWNy b19vcHRpb25hbF9maW5kX3BhY2thZ2UoS2RlcGltTGlicykvJyBcCgkJCQktZSAncy9maW5k X3BhY2thZ2UoTGliWG1sMiBSRVFVSVJFRCkvbWFjcm9fb3B0aW9uYWxfZmluZF9wYWNrYWdl KExpYlhtbDIpLycgXAoJCQkJLWUgJ3MvZmluZF9wYWNrYWdlKExpYlhzbHQgUkVRVUlSRUQp L21hY3JvX29wdGlvbmFsX2ZpbmRfcGFja2FnZShMaWJYc2x0KS8nIFwKCQkJCS1lICdzL2Zp bmRfcGFja2FnZShCb29zdCBSRVFVSVJFRCkvbWFjcm9fb3B0aW9uYWxfZmluZF9wYWNrYWdl KEJvb3N0KS8nIFwKCQkJCS1pIENNYWtlTGlzdHMudHh0IHx8IGRpZSAiZmFpbGVkIHRvIGRp c2FibGUgaGFyZGNvZGVkIGNoZWNrcyIKCQkJOzsKCQlrb2ZmaWNlKQoJCQkjIFByZXZlbnQg Y29sbGlzaW9ucwoJCQlpZiBbWyAke1BOfSAhPSBrb2ZmaWNlLWRhdGEgXV07IHRoZW4KCQkJ CXNlZCAtZSAnL2luc3RhbGwoLipGaW5kS09mZmljZUxpYnMuY21ha2UvLC8pLyBkJyBcCgkJ CQkJLWkgY21ha2UvbW9kdWxlcy9DTWFrZUxpc3RzLnR4dCB8fCBkaWUgIiR7TElORU5PfTog c2VkIGRpZWQgaW4gY29sbGlzaW9uIHByZXZlbnRpb24gc2VjdGlvbiIKCQkJCXNlZCAtZSAn L2luc3RhbGwoLlwrY29uZmlnLW9wZW5leHJcLmguXCspL2QnIFwKCQkJCQktaSBDTWFrZUxp c3RzLnR4dCB8fCBkaWUgIiR7TElORU5PfTogc2VkIGRpZWQgaW4gY29sbGlzaW9uIHByZXZl bnRpb24gc2VjdGlvbiIKCQkJZmkKCWVzYWMKCglwb3BkID4gL2Rldi9udWxsCn0KCiMgQEZV TkNUSU9OOiBrZGU0LW1ldGFfc3JjX2NvbmZpZ3VyZQojIEBERVNDUklQVElPTjoKIyBDdXJy ZW50bHkganVzdCBjYWxscyBpdHMgZXF1aXZhbGVudCBpbiBrZGU0LWJhc2UuZWNsYXNzKDUp LiBVc2UgdGhpcyBvbmUgaW4gc3BsaXQKIyBlYnVpbGRzLgprZGU0LW1ldGFfc3JjX2NvbmZp Z3VyZSgpIHsKCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCIKCgkjIGJh Y2t3YXJkcy1jb21wYXRpYmlsaXR5OiBtYWtlIG15Y21ha2VhcmdzIGFuIGFycmF5LCBpZiBp dCBpc24ndCBhbHJlYWR5CglpZiBbWyAkKGRlY2xhcmUgLXAgbXljbWFrZWFyZ3MgMj4mLSkg IT0gImRlY2xhcmUgLWEgbXljbWFrZWFyZ3M9IiogXV07IHRoZW4KCQlteWNtYWtlYXJncz0o JHtteWNtYWtlYXJnc30pCglmaQoKCSMgU2V0IHNvbWUgY21ha2UgZGVmYXVsdCB2YWx1ZXMg aGVyZSAodXN1YWxseSB3b3JrYXJvdW5kcyBmb3IgYXV0b21hZ2ljIGRlcHMpCgljYXNlICR7 S01OQU1FfSBpbgoJCWtkZXdlYmRldikKCQkJbXljbWFrZWFyZ3M9KAoJCQkJLURXSVRIX0tk ZXBpbUxpYnM9T0ZGCgkJCQktRFdJVEhfTGliWG1sMj1PRkYKCQkJCS1EV0lUSF9MaWJYc2x0 PU9GRgoJCQkJLURXSVRIX0Jvb3N0PU9GRgoJCQkJLURXSVRIX0xpYlRpZHk9T0ZGCgkJCQki JHtteWNtYWtlYXJnc1tAXX0iCgkJCSkKCQkJOzsKCWVzYWMKCglrZGU0LWJhc2Vfc3JjX2Nv bmZpZ3VyZQp9CgojIEBGVU5DVElPTjoga2RlNC1tZXRhX3NyY19jb21waWxlCiMgQERFU0NS SVBUSU9OOgojIEdlbmVyYWwgZnVuY3Rpb24gZm9yIGNvbXBpbGluZyBzcGxpdCBLREU0IGFw cGxpY2F0aW9ucy4KIyBPdmVycmlkZXMga2RlNC1iYXNlX3NyY19jb21waWxlLgprZGU0LW1l dGFfc3JjX2NvbXBpbGUoKSB7CglkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAi JEAiCgoJa2RlNC1iYXNlX3NyY19jb21waWxlICIkQCIKfQoKIyBARlVOQ1RJT046IGtkZTQt bWV0YV9zcmNfdGVzdAojIEBERVNDUklQVElPTjoKIyBDdXJyZW50bHkganVzdCBjYWxscyBp dHMgZXF1aXZhbGVudCBpbiBrZGU0LWJhc2UuZWNsYXNzKDUpIGlmCiMgSV9LTk9XX1dIQVRf SV9BTV9ET0lORyBpcyBzZXQuIFVzZSB0aGlzIGluIHNwbGl0IGVidWlsZHMuCmtkZTQtbWV0 YV9zcmNfdGVzdCgpIHsKCWRlYnVnLXByaW50LWZ1bmN0aW9uICRGVU5DTkFNRSAiJEAiCgoJ aWYgW1sgJElfS05PV19XSEFUX0lfQU1fRE9JTkcgXV07IHRoZW4KCQlrZGU0LWJhc2Vfc3Jj X3Rlc3QKCWVsc2UKCQllaW5mbyAiVGVzdHMgZGlzYWJsZWQiCglmaQp9CgojIEBGVU5DVElP Tjoga2RlNC1tZXRhX3NyY19pbnN0YWxsCiMgQERFU0NSSVBUSU9OOgojIEZ1bmN0aW9uIGZv ciBpbnN0YWxsaW5nIEtERTQgc3BsaXQgYXBwbGljYXRpb25zLgprZGU0LW1ldGFfc3JjX2lu c3RhbGwoKSB7CglkZWJ1Zy1wcmludC1mdW5jdGlvbiAkRlVOQ05BTUUgIiRAIgoKCSMgU2Vh cmNoICR7U30vJHtLTU1PRFVMRX0gYW5kIGluc3RhbGwgY29tbW9uIGRvY3VtZW50YXRpb24g ZmlsZXMgZm91bmQKCWxvY2FsIGRvYwoJZm9yIGRvYyBpbiAiJHtTfS8ke0tNTU9EVUxFfSIv e0FVVEhPUlMsQ0hBTkdFTE9HLENoYW5nZUxvZyosUkVBRE1FKixORVdTLFRPRE8sSEFDS0lO R307IGRvCgkJW1sgLWYgIiR7ZG9jfSIgXV0gJiYgW1sgLXMgIiR7ZG9jfSIgXV0gJiYgZG9k b2MgIiR7ZG9jfSIKCWRvbmUKCglrZGU0LWJhc2Vfc3JjX2luc3RhbGwKfQoKIyBARlVOQ1RJ T046IGtkZTQtbWV0YV9wa2dfcHJlaW5zdAojIEBERVNDUklQVElPTjoKIyBJbnZva2UgaXRz IGVxdWl2YWxlbnQgaW4ga2RlNC1iYXNlLmVjbGFzcy4Ka2RlNC1tZXRhX3BrZ19wcmVpbnN0 KCkgewoJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgoKCWtkZTQtYmFz ZV9wa2dfcHJlaW5zdAp9CgojIEBGVU5DVElPTjoga2RlNC1tZXRhX3BrZ19wb3N0aW5zdAoj IEBERVNDUklQVElPTjoKIyBJbnZva2Uga2J1aWxkc3ljb2NhNC4Ka2RlNC1tZXRhX3BrZ19w b3N0aW5zdCgpIHsKCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCIKCglr ZGU0LWJhc2VfcGtnX3Bvc3RpbnN0Cn0KCiMgQEZVTkNUSU9OOiBrZGU0LW1ldGFfcGtnX3Bv c3RybQojIEBERVNDUklQVElPTjoKIyBDdXJyZW50bHkganVzdCBjYWxscyBpdHMgZXF1aXZh bGVudCBpbiBrZGU0LWJhc2UuZWNsYXNzKDUpLiBVc2UgdGhpcyBpbiBzcGxpdAojIGVidWls ZHMuCmtkZTQtbWV0YV9wa2dfcG9zdHJtKCkgewoJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtG VU5DTkFNRX0gIiRAIgoKCWtkZTQtYmFzZV9wa2dfcG9zdHJtCn0K --------------040404070904070102050508 Content-Type: text/plain; name="kde4-functions.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kde4-functions.diff" LS0tIGdlbnRvby9nZW50b28teDg2L2VjbGFzcy9rZGU0LWZ1bmN0aW9ucy5lY2xhc3MJMjAx MS0wMS0yOSAxOTowNTo0Mi4wMDAwMDAwMDAgKzAxMDAKKysrIC91c3IvbG9jYWwvcG9ydGFn ZS9rZGUvZWNsYXNzL2tkZTQtZnVuY3Rpb25zLmVjbGFzcwkyMDExLTA0LTAzIDIxOjM2OjU2 LjAwMDAwMDAwMCArMDIwMApAQCAtMSw2ICsxLDYgQEAKICMgQ29weXJpZ2h0IDE5OTktMjAx MCBHZW50b28gRm91bmRhdGlvbgogIyBEaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHYyCi0jICRIZWFkZXI6IC92YXIvY3Zz cm9vdC9nZW50b28teDg2L2VjbGFzcy9rZGU0LWZ1bmN0aW9ucy5lY2xhc3MsdiAxLjQ0IDIw MTEvMDEvMjkgMTg6MDU6NDIgc2NhcmFiZXVzIEV4cCAkCisjICRIZWFkZXI6IC92YXIvY3Zz cm9vdC9nZW50b28teDg2L2VjbGFzcy9rZGU0LWZ1bmN0aW9ucy5lY2xhc3MsdiAxLjQxIDIw MTAvMTIvMjkgMTc6NTY6MzQgdGFtcGFrcmFwIEV4cCAkCiAKIGluaGVyaXQgdmVyc2lvbmF0 b3IKIApAQCAtMTQsMTMgKzE0LDIxIEBACiAKICMgQEVDTEFTUy1WQVJJQUJMRTogRUFQSQog IyBAREVTQ1JJUFRJT046Ci0jIEJ5IGRlZmF1bHQga2RlNCBlY2xhc3NlcyB3YW50IEVBUEkg MiB3aGljaCBtaWdodCBiZSByZWRlZmluYWJsZSB0byBuZXdlcgotIyB2ZXJzaW9ucy4KKyMg Q3VycmVudGx5IGtkZTQgZWNsYXNzZXMgc3VwcG9ydCBFQVBJIDMgYW5kIDQuCiBjYXNlICR7 RUFQSTotMH0gaW4KLQkyfDN8NCkgOiA7OworCTR8MykgOiA7OwogCSopIGRpZSAiRUFQST0k e0VBUEl9IGlzIG5vdCBzdXBwb3J0ZWQiIDs7CiBlc2FjCiAKKyMgQEVDTEFTUy1WQVJJQUJM RTogS0RFX09WRVJSSURFX01JTklNQUwKKyMgQERFU0NSSVBUSU9OOgorIyBGb3IgdXNlIG9u bHkgaW4gdmVyeSBmZXcgd2VsbC1kZWZpbmVkIGNhc2VzOyBub3JtYWxseSBpdCBzaG91bGQg YmUgdW5zZXQuCisjIElmIHRoaXMgdmFyaWFibGUgaXMgc2V0LCBhbGwgY2FsbHMgdG8gYWRk X2tkZWJhc2VfZGVwIHJldHVybiBhIGRlcGVuZGVuY3kgb24KKyMgYXQgbGVhc3QgdGhpcyB2 ZXJzaW9uLCBpbmRlcGVuZGVudCBvZiB0aGUgdmVyc2lvbiBvZiB0aGUgcGFja2FnZSBpdHNl bGYuCisjIElmIHlvdSBrbm93IGV4YWN0bHkgdGhhdCBvbmUgc3BlY2lmaWMgTkVXIEtERSBj b21wb25lbnQgYnVpbGRzIGFuZCBydW5zIGZpbmUKKyMgd2l0aCBhbGwgdGhlIHJlc3Qgb2Yg S0RFIGF0IGFuIE9MREVSIHZlcnNpb24sIHlvdSBjYW4gc2V0IHRoaXMgb2xkIHZlcnNpb24g aGVyZS4KKyMgV2FybmluZy0gbWF5IGxlYWQgdG8gZ2VuZXJhbCBpbnN0YWJpbGl0eSBhbmQg a2lsbCB5b3VyIHBldCB0YXJnaC4KKwogIyBARUNMQVNTLVZBUklBQkxFOiBLREVCQVNFCiAj IEBERVNDUklQVElPTjoKICMgVGhpcyBnZXRzIHNldCB0byBhIG5vbi16ZXJvIHZhbHVlIHdo ZW4gYSBwYWNrYWdlIGlzIGNvbnNpZGVyZWQgYSBrZGUgb3IKQEAgLTI4LDEyICszNiwxMiBA QAogaWYgW1sgJHtDQVRFR09SWX0gPSBrZGUtYmFzZSBdXTsgdGhlbgogCWRlYnVnLXByaW50 ICIke0VDTEFTU306IEtERUJBU0UgZWJ1aWxkIHJlY29nbml6ZWQiCiAJS0RFQkFTRT1rZGUt YmFzZQotZWxpZiBbWyAke0tNTkFNRX0gPSBrb2ZmaWNlIHx8ICR7UE59ID0ga29mZmljZSBd XTsgdGhlbgorZWxpZiBbWyAke0tNTkFNRS0ke1BOfX0gPSBrb2ZmaWNlIF1dOyB0aGVuCiAJ ZGVidWctcHJpbnQgIiR7RUNMQVNTfTogS09GRklDRSBlYnVpbGQgcmVjb2duaXplZCIKIAlL REVCQVNFPWtvZmZpY2UKLWVsaWYgW1sgJHtLTU5BTUV9ID0ga2RldmVsb3AgXV07IHRoZW4K K2VsaWYgW1sgJHtLTU5BTUUtJHtQTn19ID0ga2RldmVsb3AgXV07IHRoZW4KIAlkZWJ1Zy1w cmludCAiJHtFQ0xBU1N9OiBLREVWRUxPUCBlYnVpbGQgcmVjb2duaXplZCIKLQlLREVCQVNF PSJrZGV2ZWxvcCIKKwlLREVCQVNFPWtkZXZlbG9wCiBmaQogCiAjIEBFQ0xBU1MtVkFSSUFC TEU6IEtERV9TTE9UUwpAQCAtNDcsNiArNTUsNTggQEAKICMgVGhlIHNsb3RzIHVzZWQgYnkg S0RFIGxpdmUgdmVyc2lvbnMuIFZhbHVlcyBzaG91bGQgYmUgb3JkZXJlZC4KIEtERV9MSVZF X1NMT1RTPSggImxpdmUiICkKIAorIyBkZXRlcm1pbmUgdGhlIGJ1aWxkIHR5cGUKK2lmIFtb ICR7U0xPVH0gPSBsaXZlIHx8ICR7UFZ9ID0gKjk5OTkqIF1dOyB0aGVuCisJQlVJTERfVFlQ RT0ibGl2ZSIKK2Vsc2UKKwlCVUlMRF9UWVBFPSJyZWxlYXNlIgorZmkKK2V4cG9ydCBCVUlM RF9UWVBFCisKKyMgU2V0IHJlcG9uYW1lIGFuZCBTQ00gZm9yIG1vZHVsZXNlcyB0aGF0IGhh dmUgZnVsbHkgbWlncmF0ZWQgdG8gZ2l0CisjIChoYWNrIC0gaXQncyBoZXJlIGJlY2F1c2Ug aXQgbmVlZHMgdG8gYmUgYmVmb3JlIFNDTSBpbmhlcml0cyBmcm9tIGtkZTQtYmFzZSkKK2lm IFtbICR7QlVJTERfVFlQRX0gPT0gbGl2ZSBdXTsgdGhlbgorCWNhc2UgIiR7S01OQU1FfSIg aW4KKwkJa2RlYmFzZS13b3Jrc3BhY2UpCisJCQlLREVfU0NNPSJnaXQiCisJCQlFR0lUX1JF UE9OQU1FPSR7RUdJVF9SRVBPTkFNRTo9a2RlLXdvcmtzcGFjZX0KKwkJOzsKKwkJa2RlYmFz ZS1ydW50aW1lKQorCQkJS0RFX1NDTT0iZ2l0IgorCQkJRUdJVF9SRVBPTkFNRT0ke0VHSVRf UkVQT05BTUU6PWtkZS1ydW50aW1lfQorCQk7OworCQlrZGViYXNlLWFwcHMpCisJCQlLREVf U0NNPSJnaXQiCisJCQlFR0lUX1JFUE9OQU1FPSR7RUdJVF9SRVBPTkFNRTo9a2RlLWJhc2Vh cHBzfQorCQk7OworCWVzYWMKK2ZpCisKKyMgQEVDTEFTUy1WQVJJQUJMRTogS0RFX1NDTQor IyBAREVTQ1JJUFRJT046CisjIElmIHRoaXMgaXMgYSBsaXZlIHBhY2thZ2Ugd2hpY2ggc2Nt IGRvZXMgaXQgdXNlCisjIEV2ZXJ5dGhpbmcgZWxzZSB1c2VzIHN2biBieSBkZWZhdWx0CitL REVfU0NNPSIke0tERV9TQ006LXN2bn0iCitjYXNlICR7S0RFX1NDTX0gaW4KKwlzdm58Z2l0 KSA7OworCSopIGRpZSAiS0RFX1NDTTogJHtLREVfU0NNfSBpcyBub3Qgc3VwcG9ydGVkIiA7 OworZXNhYworCisjIEBFQ0xBU1MtVkFSSUFCTEU6IEtERV9MSU5HVUFTCisjIEBERVNDUklQ VElPTjoKKyMgVGhpcyBpcyBhIHdoaXRlc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdHJhbnNs YXRpb25zIHRoaXMgZWJ1aWxkIHN1cHBvcnRzLgorIyBUaGVzZSB0cmFuc2xhdGlvbnMgYXJl IGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gSVVTRS4gVGhlcmVmb3JlIGVidWlsZHMgbXVzdCBz ZXQKKyMgdGhpcyB2YXJpYWJsZSBiZWZvcmUgaW5oZXJpdGluZyBhbnkgZWNsYXNzZXMuIFRv IGVuYWJsZSBvbmx5IHNlbGVjdGVkCisjIHRyYW5zbGF0aW9ucywgZWJ1aWxkcyBtdXN0IGNh bGwgZW5hYmxlX3NlbGVjdGVkX2xpbmd1YXMoKS4ga2RlNC17YmFzZSxtZXRhfS5lY2xhc3Mg ZG9lcworIyB0aGlzIGZvciB5b3UuCisjCisjIEV4YW1wbGU6IEtERV9MSU5HVUFTPSJlbl9H QiBkZSBubCIKK2lmIFtbICR7QlVJTERfVFlQRX0gIT0gbGl2ZSB8fCAtbiAke0tERV9MSU5H VUFTX0xJVkVfT1ZFUlJJREV9IF1dOyB0aGVuCisJZm9yIF9saW5ndWEgaW4gJHtLREVfTElO R1VBU307IGRvCisJCUlVU0U9IiR7SVVTRX0gbGluZ3Vhc18ke19saW5ndWF9IgorCWRvbmUK K2ZpCisKICMgQEZVTkNUSU9OOiBzbG90X2lzX2F0X2xlYXN0CiAjIEBVU0FHRTogPHdhbnQ+ IDxoYXZlPgogIyBAREVTQ1JJUFRJT046CkBAIC02NCwyNCArMTI0LDYgQEAKIGJ1aWxkc3lj b2NhKCkgewogCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCIKIAotCWlm IFtbICR7RUFQSX0gPT0gMiBdXSAmJiAhIHVzZSBwcmVmaXg7IHRoZW4KLQkJRVJPT1Q9JHtS T09UfQotCWZpCi0KLQlsb2NhbCBLREUzRElSPSIke0VST09UfXVzci9rZGUvMy41IgotCWlm IFtbIC16ICR7RVJPT1QlJS99ICYmIC14ICIke0tERTNESVJ9Ii9iaW4va2J1aWxkc3ljb2Nh IF1dOyB0aGVuCi0JCSMgU2luY2UgS0RFMyBpcyBhd2FyZSBvZiBzaG9ydGN1dHMgaW4gL3Vz ciwgcmVidWlsZCBkYXRhYmFzZQotCQkjIGZvciBLREUzIGFzIHdlbGwuCi0JCXRvdWNoICIk e0tERTNESVJ9Ii9zaGFyZS9zZXJ2aWNlcy9rc3ljb2NhCi0JCWNobW9kIDY0NCAiJHtLREUz RElSfSIvc2hhcmUvc2VydmljZXMva3N5Y29jYQotCi0JCWViZWdpbiAiUnVubmluZyBrYnVp bGRzeWNvY2EgdG8gYnVpbGQgZ2xvYmFsIGRhdGFiYXNlIgotCQlYREdfREFUQV9ESVJTPSIk e0VST09UfXVzci9sb2NhbC9zaGFyZToke0tERTNESVJ9L3NoYXJlOiR7RVJPT1R9dXNyL3No YXJlIiBcCi0JCQlESVNQTEFZPSIiIFwKLQkJCSIke0tERTNESVJ9Ii9iaW4va2J1aWxkc3lj b2NhIC0tZ2xvYmFsIC0tbm9pbmNyZW1lbnRhbCAmPiAvZGV2L251bGwKLQkJZWVuZCAkPwot CWZpCi0KIAkjIFdlIG5vIGxvbmdlciBuZWVkIHRvIHJ1biBrYnVpbGRzeWNvY2E0LCBhcyBr ZGVkIGRvZXMgdGhhdCBhdXRvbWF0aWNhbGx5LCBhcyBuZWVkZWQKIAogCSMgZml4IHBlcm1p c3Npb24gZm9yIHNvbWUgZGlyZWN0b3JpZXMKQEAgLTExNSwxOSArMTU3LDYgQEAKIAkJCXx8 IGRpZSAiJHtMSU5FTk99OiBJbml0aWFsIHNlZCBkaWVkIgogfQogCi0jIEBFQ0xBU1MtVkFS SUFCTEU6IEtERV9MSU5HVUFTCi0jIEBERVNDUklQVElPTjoKLSMgVGhpcyBpcyBhIHdoaXRl c3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdHJhbnNsYXRpb25zIHRoaXMgZWJ1aWxkIHN1cHBv cnRzLgotIyBUaGVzZSB0cmFuc2xhdGlvbnMgYXJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8g SVVTRS4gVGhlcmVmb3JlIGVidWlsZHMgbXVzdCBzZXQKLSMgdGhpcyB2YXJpYWJsZSBiZWZv cmUgaW5oZXJpdGluZyBhbnkgZWNsYXNzZXMuIFRvIGVuYWJsZSBvbmx5IHNlbGVjdGVkCi0j IHRyYW5zbGF0aW9ucywgZWJ1aWxkcyBtdXN0IGNhbGwgZW5hYmxlX3NlbGVjdGVkX2xpbmd1 YXMoKS4ga2RlNC17YmFzZSxtZXRhfS5lY2xhc3MgZG9lcwotIyB0aGlzIGZvciB5b3UuCi0j Ci0jIEV4YW1wbGU6IEtERV9MSU5HVUFTPSJlbl9HQiBkZSBubCIKLWZvciBfbGluZ3VhIGlu ICR7S0RFX0xJTkdVQVN9OyBkbwotCUlVU0U9IiR7SVVTRX0gbGluZ3Vhc18ke19saW5ndWF9 IgotZG9uZQotCiAjIEBGVU5DVElPTjogZW5hYmxlX3NlbGVjdGVkX2xpbmd1YXMKICMgQERF U0NSSVBUSU9OOgogIyBFbmFibGUgdHJhbnNsYXRpb25zIGJhc2VkIG9uIExJTkdVQVMgc2V0 dGluZ3MgYW5kIHRyYW5zbGF0aW9ucyBzdXBwb3J0ZWQgYnkKQEAgLTE1MSw3ICsxODAsNyBA QAogCSMgRGVmYXVsdCB2YWx1ZSBpcyBzZXQgdG8gInBvIi4KIAlpZiBbWyAiJChkZWNsYXJl IC1wIEtERV9MSU5HVUFTX0RJUiAyPi9kZXYvbnVsbCAyPiYxKSIgPT0gImRlY2xhcmUgLWEi KiBdXTsgdGhlbgogCQlkZWJ1Zy1wcmludCAiJEZVTkNOQU1FOiB3ZSBoYXZlIHRoZXNlIHN1 YmZvbGRlcnMgZGVmaW5lZDogJHtLREVfTElOR1VBU19ESVJ9IgotCQlmb3IgeCBpbiAiJHtL REVfTElOR1VBU19ESVJbQF19IjsgZG8KKwkJZm9yIHggaW4gJHtLREVfTElOR1VBU19ESVJb QF19OyBkbwogCQkJX2VuYWJsZV9zZWxlY3RlZF9saW5ndWFzX2RpciAke3h9CiAJCWRvbmUK IAllbHNlCkBAIC0xODIsOCArMjExLDggQEAKIAkJbG9jYWwgaGFuZGJvb2tkaXI9YGRpcm5h bWUgJHtwYXR0ZXJufWAKIAkJbG9jYWwgdHJhbnNsYXRpb25kaXI9YGJhc2VuYW1lICR7cGF0 dGVybn1gCiAJCSMgRG8gZmlsZW5hbWUgcGF0dGVybiBzdXBwbGllZCwgdHJlYXQgYXMgZGly ZWN0b3J5Ci0JCVtbICIke2hhbmRib29rZGlyfSIgPSAnLicgXV0gJiYgaGFuZGJvb2tkaXI9 JHt0cmFuc2xhdGlvbmRpcn0gJiYgdHJhbnNsYXRpb25kaXI9Ci0JCVtbIC1kICIke2hhbmRi b29rZGlyfSIgXV0gfHwgZGllICd3cm9uZyBkb2MgZGlyIHNwZWNpZmllZCcKKwkJW1sgJHto YW5kYm9va2Rpcn0gPSAnLicgXV0gJiYgaGFuZGJvb2tkaXI9JHt0cmFuc2xhdGlvbmRpcn0g JiYgdHJhbnNsYXRpb25kaXI9CisJCVtbIC1kICR7aGFuZGJvb2tkaXJ9IF1dIHx8IGRpZSAn d3JvbmcgZG9jIGRpciBzcGVjaWZpZWQnCiAKIAkJaWYgISB1c2UgaGFuZGJvb2s7IHRoZW4K IAkJCSMgRGlzYWJsZSB3aG9sZSBkaXJlY3RvcnkKQEAgLTE5Niw4ICsyMjUsOCBAQAogCQkJ IyBBZGQgcmVxdWVzdGVkIHRyYW5zbGF0aW9ucwogCQkJbG9jYWwgbGluZ3VhCiAJCQlmb3Ig bGluZ3VhIGluIGVuICR7S0RFX0xJTkdVQVN9OyBkbwotCQkJCWlmIFtbICR7bGluZ3VhfSA9 ICdlbicgXV0gfHwgdXNlIGxpbmd1YXNfJHtsaW5ndWF9OyB0aGVuCi0JCQkJCWlmIFtbIC1k ICIke2hhbmRib29rZGlyfS8ke3RyYW5zbGF0aW9uZGlyLy8lbGluZ3VhLyR7bGluZ3VhfX0i IF1dOyB0aGVuCisJCQkJaWYgW1sgJHtsaW5ndWF9ID0gZW4gXV0gfHwgdXNlIGxpbmd1YXNf JHtsaW5ndWF9OyB0aGVuCisJCQkJCWlmIFtbIC1kICR7aGFuZGJvb2tkaXJ9LyR7dHJhbnNs YXRpb25kaXIvLyVsaW5ndWEvJHtsaW5ndWF9fSBdXTsgdGhlbgogCQkJCQkJc2VkIC1lICIv YWRkX3N1YmRpcmVjdG9yeVtbOnNwYWNlOl1dKihbWzpzcGFjZTpdXSoke3RyYW5zbGF0aW9u ZGlyLy8lbGluZ3VhLyR7bGluZ3VhfX0vcy9eI0RPTk9UQ09NUElMRSAvLyIgXAogCQkJCQkJ CS1lICIvQUREX1NVQkRJUkVDVE9SWVtbOnNwYWNlOl1dKihbWzpzcGFjZTpdXSoke3RyYW5z bGF0aW9uZGlyLy8lbGluZ3VhLyR7bGluZ3VhfX0vcy9eI0RPTk9UQ09NUElMRSAvLyIgXAog CQkJCQkJCS1pICIke2hhbmRib29rZGlyfSIvQ01ha2VMaXN0cy50eHQgJiYgISBoYXMgJHts aW5ndWF9ICR7bGluZ3Vhc30gJiYgbGluZ3Vhcz0iJHtsaW5ndWFzfSAke2xpbmd1YX0iCkBA IC0yMTAsMjYgKzIzOSwxOSBAQAogCVtbIC1uICIke2xpbmd1YXN9IiBdXSAmJiBlaW5mbyAi RW5hYmxpbmcgaGFuZGJvb2sgdHJhbnNsYXRpb25zOiR7bGluZ3Vhc30iCiB9CiAKLSMgQEZV TkNUSU9OOiBnZXRfYnVpbGRfdHlwZQotIyBAREVTQ1JJUFRJT046Ci0jIERldGVybWluZSB3 aGV0aGVyIHdlIGFyZSB1c2luZyBsaXZlIGVidWlsZCBvciB0YnpzLgotZ2V0X2J1aWxkX3R5 cGUoKSB7Ci0JaWYgW1sgJHtTTE9UfSA9IGxpdmUgfHwgJHtQVn0gPSAqOTk5OSogXV07IHRo ZW4KLQkJQlVJTERfVFlQRT0ibGl2ZSIKLQllbHNlCi0JCUJVSUxEX1RZUEU9InJlbGVhc2Ui Ci0JZmkKLQlleHBvcnQgQlVJTERfVFlQRQotfQotCiAjIEBGVU5DVElPTjogbWlncmF0ZV9z dG9yZV9kaXIKICMgQERFU0NSSVBUSU9OOgogIyBVbml2ZXJzYWwgc3RvcmUgZGlyIG1pZ3Jh dGlvbgogIyAqIHBlcmZvcm1zIHNwbGl0IG9mIGtkZWJhc2UgdG8ga2RlYmFzZS1hcHBzIHdo ZW4gbmVlZGVkCiAjICogbW92ZXMgcGxheWdyb3VuZC9leHRyYWdlYXIga2RlNC1iYXNlLXN0 eWxlIHRvIHRvcGxldmVsIGRpcgogbWlncmF0ZV9zdG9yZV9kaXIoKSB7CisJaWYgW1sgJHtL REVfU0NNfSAhPSBzdm4gXV07IHRoZW4KKwkJZGllICJtaWdyYXRlX3N0b3JlX2RpcigpIG9u bHkgbWFrZXMgc2Vuc2UgZm9yIHN1YnZlcnNpb24iCisJZmkKKwogCWxvY2FsIGNsZWFuZGly PSIke0VTVk5fU1RPUkVfRElSfS9LREUiCi0JaWYgW1sgLWQgIiR7Y2xlYW5kaXJ9IiBdXTsg dGhlbgorCisJaWYgW1sgLWQgJHtjbGVhbmRpcn0gXV07IHRoZW4KIAkJZXdhcm4gIicke2Ns ZWFuZGlyfScgaGFzIGJlZW4gZm91bmQuIE1vdmluZyBjb250ZW50cyB0byBuZXcgbG9jYXRp b24uIgogCQlhZGR3cml0ZSAiJHtFU1ZOX1NUT1JFX0RJUn0iCiAJCSMgU3BsaXQga2RlYmFz ZQpAQCAtMjQ5LDIyICsyNzEsMjIgQEAKIAkJZm9yIHBrZyBpbiAiJHtjbGVhbmRpcn0iLyo7 IGRvCiAJCQltdiAtZiAiJHtwa2d9IiAiJHtFU1ZOX1NUT1JFX0RJUn0iLyB8fCBlZXJyb3Ig IkZhaWxlZCB0byBtb3ZlICcke3BrZ30nIgogCQlkb25lCi0JCXJtZGlyICIke2NsZWFuZGly fSIgfHwgZGllICJDb3VsZCBub3QgbW92ZSBvYnNvbGV0ZSBLREUgc3RvcmUgZGlyLiBQbGVh c2UgbW92ZSAnJHtjbGVhbmRpcn0nIGNvbnRlbnRzIHRvIGFwcHJvcHJpYXRlIGxvY2F0aW9u IChwb3NzaWJseSAke0VTVk5fU1RPUkVfRElSfSkgYW5kIG1hbnVhbGx5IHJlbW92ZSAnJHtj bGVhbmRpcn0nIGluIG9yZGVyIHRvIGNvbnRpbnVlLiIKKwkJcm1kaXIgIiR7Y2xlYW5kaXJ9 IiB8fCBkaWUgIkNvdWxkIG5vdCBtb3ZlIG9ic29sZXRlIEtERSBzdG9yZSBkaXIuICBQbGVh c2UgbW92ZSAnJHtjbGVhbmRpcn0nIGNvbnRlbnRzIHRvIGFwcHJvcHJpYXRlIGxvY2F0aW9u IChwb3NzaWJseSAke0VTVk5fU1RPUkVfRElSfSkgYW5kIG1hbnVhbGx5IHJlbW92ZSAnJHtj bGVhbmRpcn0nIGluIG9yZGVyIHRvIGNvbnRpbnVlLiIKIAlmaQogCiAJaWYgISBoYXNxIGtk ZTQtbWV0YSAke0lOSEVSSVRFRH07IHRoZW4KIAkJY2FzZSAke0tNTkFNRX0gaW4KIAkJCWV4 dHJhZ2Vhcip8cGxheWdyb3VuZCopCi0JCQkJbG9jYWwgc3ZubG9jYWxwYXRoPSIke0VTVk5f U1RPUkVfRElSfSIvIiR7S01OQU1FfSIvIiR7UE59IgotCQkJCWlmIFtbIC1kICIke3N2bmxv Y2FscGF0aH0iIF1dOyB0aGVuCisJCQkJbG9jYWwgc2NtbG9jYWxwYXRoPSIke0VTVk5fU1RP UkVfRElSfSIvIiR7S01OQU1FfSIvIiR7UE59IgorCQkJCWlmIFtbIC1kICIke3NjbWxvY2Fs cGF0aH0iIF1dOyB0aGVuCiAJCQkJCWxvY2FsIGRlc3RkaXI9IiR7RVNWTl9TVE9SRV9ESVJ9 Ii8iJHtFU1ZOX1BST0pFQ1R9Ii8iYGJhc2VuYW1lICIke0VTVk5fUkVQT19VUkl9ImAiCi0J CQkJCWV3YXJuICInJHtzdm5sb2NhbHBhdGh9JyBoYXMgYmVlbiBmb3VuZC4iCisJCQkJCWV3 YXJuICInJHtzY21sb2NhbHBhdGh9JyBoYXMgYmVlbiBmb3VuZC4iCiAJCQkJCWV3YXJuICJN b3ZpbmcgY29udGVudHMgdG8gbmV3IGxvY2F0aW9uOiAke2Rlc3RkaXJ9IgogCQkJCQlhZGR3 cml0ZSAiJHtFU1ZOX1NUT1JFX0RJUn0iCi0JCQkJCW1rZGlyIC1wICIke0VTVk5fU1RPUkVf RElSfSIvIiR7RVNWTl9QUk9KRUNUfSIgJiYgbXYgLWYgIiR7c3ZubG9jYWxwYXRofSIgIiR7 ZGVzdGRpcn0iIFwKLQkJCQkJCXx8IGRpZSAiRmFpbGVkIHRvIG1vdmUgdG8gJyR7c3ZubG9j YWxwYXRofSciCisJCQkJCW1rZGlyIC1wICIke0VTVk5fU1RPUkVfRElSfSIvIiR7RVNWTl9Q Uk9KRUNUfSIgJiYgbXYgLWYgIiR7c2NtbG9jYWxwYXRofSIgIiR7ZGVzdGRpcn0iIFwKKwkJ CQkJCXx8IGRpZSAiRmFpbGVkIHRvIG1vdmUgdG8gJyR7c2NtbG9jYWxwYXRofSciCiAJCQkJ CSMgVHJ5IGNsZWFuaW5nIGVtcHR5IGRpcmVjdG9yaWVzCi0JCQkJCXJtZGlyICJgZGlybmFt ZSAiJHtzdm5sb2NhbHBhdGh9ImAiIDI+IC9kZXYvbnVsbAorCQkJCQlybWRpciAiYGRpcm5h bWUgIiR7c2NtbG9jYWxwYXRofSJgIiAyPiAvZGV2L251bGwKIAkJCQlmaQogCQkJCTs7CiAJ CWVzYWMKQEAgLTMwOCw3ICszMzAsNyBAQAogCWZvciBwbiBpbiAke0tNTE9BRExJQlN9IDsg ZG8KIAkJKChpKyspKQogCQlkZXBzZmlsZT0iJHtFUFJFRklYfS92YXIvbGliL2tkZS8ke3Bu fToke1NMT1R9IgotCQlbWyAtciAiJHtkZXBzZmlsZX0iIF1dIHx8IGRpZSAiRGVwc2ZpbGUg JyR7ZGVwc2ZpbGV9JyBub3QgYWNjZXNzaWJsZS4gWW91IHByb2JhYmx5IG5lZWQgdG8gcmVp bnN0YWxsICR7cG59LiIKKwkJW1sgLXIgJHtkZXBzZmlsZX0gXV0gfHwgZGllICJEZXBzZmls ZSAnJHtkZXBzZmlsZX0nIG5vdCBhY2Nlc3NpYmxlLiBZb3UgcHJvYmFibHkgbmVlZCB0byBy ZWluc3RhbGwgJHtwbn0uIgogCQlzZWQgLWkgLWUgIiR7aX1pSU5DTFVERShcIiR7ZGVwc2Zp bGV9XCIpIiAiJHtTfS9DTWFrZUxpc3RzLnR4dCIgfHwgXAogCQkJZGllICJGYWlsZWQgdG8g aW5jbHVkZSBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmb3IgJHtwbn0iCiAJZG9uZQpAQCAtMzU5 LDUwICszODEsNTAgQEAKIAogIyBARlVOQ1RJT046IGFkZF9rZGViYXNlX2RlcAogIyBAREVT Q1JJUFRJT046Ci0jIENyZWF0ZSBwcm9wZXIgZGVwZW5kZW5jeSBmb3Iga2RlLWJhc2UvIGRl cGVuZGVuY2llcywKLSMgYWRkaW5nIFNMT1Qgd2hlbiBuZWVkZWQgKGFuZCAqb25seSogd2hl biBuZWVkZWQpLgotIyBUaGlzIHRha2VzIDEgb3IgMiBhcmd1bWVudHMuICBUaGUgZmlyc3Qg YmVpbmcgdGhlIHBhY2thZ2UKLSMgbmFtZSwgdGhlIG9wdGlvbmFsIHNlY29uZCwgaXMgYWRk aXRpb25hbCBVU0UgZmxhZ3MgdG8gYXBwZW5kLgotIyBUaGUgb3V0cHV0IG9mIHRoaXMgc2hv dWxkIGJlIGFkZGVkIGRpcmVjdGx5IHRvIERFUEVORC9SREVQRU5ELCBhbmQKLSMgbWF5IGJl IHdyYXBwZWQgaW4gYSBVU0UgY29uZGl0aW9uYWwgKGJ1dCBub3QgYW4gfHwgY29uZGl0aW9u YWwKLSMgd2l0aG91dCBhbiBleHRyYSBzZXQgb2YgcGFyZW50aGVzZXMpLgorIyBDcmVhdGUg cHJvcGVyIGRlcGVuZGVuY3kgZm9yIGtkZS1iYXNlLyBkZXBlbmRlbmNpZXMsIGFkZGluZyBT TE9UIHdoZW4gbmVlZGVkCisjIChhbmQgKm9ubHkqIHdoZW4gbmVlZGVkKS4KKyMgVGhpcyB0 YWtlcyAxIHRvIDMgYXJndW1lbnRzLiBUaGUgZmlyc3QgYmVpbmcgdGhlIHBhY2thZ2UgbmFt ZSwgdGhlIG9wdGlvbmFsCisjIHNlY29uZCBpcyBhZGRpdGlvbmFsIFVTRSBmbGFncyB0byBh cHBlbmQsIGFuZCB0aGUgb3B0aW9uYWwgdGhpcmQgaXMgdGhlCisjIHZlcnNpb24gdG8gdXNl IGluc3RlYWQgb2YgdGhlIGF1dG9tYXRpYyB2ZXJzaW9uICh1c2Ugc3BhcmluZ2x5KS4KKyMg VGhlIG91dHB1dCBvZiB0aGlzIHNob3VsZCBiZSBhZGRlZCBkaXJlY3RseSB0byBERVBFTkQv UkRFUEVORCwgYW5kIG1heSBiZQorIyB3cmFwcGVkIGluIGEgVVNFIGNvbmRpdGlvbmFsIChi dXQgbm90IGFuIHx8IGNvbmRpdGlvbmFsIHdpdGhvdXQgYW4gZXh0cmEgc2V0CisjIG9mIHBh cmVudGhlc2VzKS4KIGFkZF9rZGViYXNlX2RlcCgpIHsKIAlkZWJ1Zy1wcmludC1mdW5jdGlv biAke0ZVTkNOQU1FfSAiJEAiCiAKKwlsb2NhbCB2ZXIKKworCWlmIFtbIC1uICR7M30gXV07 IHRoZW4KKwkJdmVyPSR7M30KKwllbGlmIFtbIC1uICR7S0RFX09WRVJSSURFX01JTklNQUx9 IF1dOyB0aGVuCisJCXZlcj0ke0tERV9PVkVSUklERV9NSU5JTUFMfQorCWVsaWYgW1sgJHtL REVCQVNFfSAhPSBrZGUtYmFzZSBdXTsgdGhlbgorCQl2ZXI9JHtLREVfTUlOSU1BTH0KKwkj IEZJWE1FIHJlbW92ZSBoYWNrIHdoZW4ga2RlcGltLTQuNC4qIGlzIGdvbmUKKwllbGlmIFtb ICggJHtLTU5BTUV9ID09IGtkZXBpbSB8fCAke1BOfSA9PSBrZGVwaW0tcnVudGltZSApICYm ICR7UFZ9ID09IDQuNC5bNi04XSAmJiAkezF9ID1+IF5rZGUocGltKT9saWJzJCBdXTsgdGhl bgorCQl2ZXI9NC40LjUKKwkjIEZJWE1FIHJlbW92ZSBoYWNrIHdoZW4ga2RlcGltLTQuNmJl dGEgaXMgZ29uZQorCWVsaWYgW1sgKCAke0tNTkFNRX0gPT0ga2RlcGltIHx8ICR7UE59ID09 IGtkZXBpbS1ydW50aW1lICkgJiYgJHtQVn0gPT0gNC41Ljk4ICYmICR7MX0gPX4gXihrZGUo cGltKT9saWJzfG94eWdlbi1pY29ucykkIF1dOyB0aGVuCisJCXZlcj00LjUuOTAKKwkjIGlm IGJ1aWxkaW5nIHN0YWJsZS1saXZlIHZlcnNpb24gZGVwZW5kIGp1c3Qgb24gc2xvdAorCSMg dG8gYWxsb3cgbWVyZ2luZyBwYWNrYWdlcyBhZ2FpbnN0IG1vcmUgc3RhYmxlIGJhc2ljIHN0 dWZmCisJZWxpZiBbWyAke1BWfSA9PSAqLjk5OTkgXV07IHRoZW4KKwkJdmVyPSR7U0xPVH0K KwllbHNlCisJCXZlcj0ke1BWfQorCWZpCisKIAlbWyAteiAkezF9IF1dICYmIGRpZSAiTWlz c2luZyBwYXJhbWV0ZXIiCiAKIAlsb2NhbCB1c2U9JHsyOissJHsyfX0KIAogCWlmIFtbICR7 S0RFQkFTRX0gPSBrZGUtYmFzZSBdXTsgdGhlbgotCQkjIEZJWE1FIHJlbW92ZSBoYWNrIHdo ZW4gPmtkZXBpbS00LjQuNSBpcyBnb25lCi0JCWxvY2FsIEZJWE1FX1BWCi0JCWlmIFtbICR7 S01OQU1FfSA9IGtkZXBpbSB8fCAke1BOfSA9IGtkZXBpbS1ydW50aW1lIF1dICYmIFtbICR7 UFZ9ID0gNC40LjYqIHx8ICR7UFZ9ID0gNC40LjcqICB8fCAke1BWfSA9IDQuNC44KiB8fCAk e1BWfSA9IDQuNC45KiB8fCAke1BWfSA9IDQuNC4xMCogXV0gJiYgW1sgJHsxfSA9IGtkZWxp YnMgfHwgJHsxfSA9IGtkZXBpbWxpYnMgfHwgJHsxfSA9IG94eWdlbi1pY29ucyBdXTsgdGhl bgotCQkJRklYTUVfUFY9NC40LjUKLQkJIyBGSVhNRSByZW1vdmUgaGFjayB3aGVuIGtkZXBp bS00LjZiZXRhIGlzIGdvbmUKLQkJZWxpZiBbWyAke0tNTkFNRX0gPSBrZGVwaW0gfHwgJHtQ Tn0gPSBrZGVwaW0tcnVudGltZSBdXSAmJiBbWyAke1BWfSA9IDQuNS45MyogXV0gJiYgW1sg JHsxfSA9IGtkZWxpYnMgfHwgJHsxfSA9IGtkZXBpbWxpYnMgfHwgJHsxfSA9IG94eWdlbi1p Y29ucyBdXTsgdGhlbgotCQkJRklYTUVfUFY9NC41LjkwCi0JCWVsc2UKLQkJCUZJWE1FX1BW PSR7UFZ9Ci0JCWZpCi0KLQkJIyBpZiBidWlsZGluZyBzdGFibGUtbGl2ZSB2ZXJzaW9uIGRl cGVuZCBqdXN0IG9uIHNsb3QKLQkJIyB0byBhbGxvdyBtZXJnaW5nIHBhY2thZ2VzIGFnYWlu c3QgbW9yZSBzdGFibGUgYmFzaWMgc3R1ZmYKLQkJY2FzZSAke1BWfSBpbgotCQkJKi45OTk5 KikKLQkJCQllY2hvICIgIWtkZXByZWZpeD8gKCA+PWtkZS1iYXNlLyR7MX0tJHtTTE9UfVth cXVhPSwta2RlcHJlZml4JHt1c2V9XSApIgotCQkJCWVjaG8gIiBrZGVwcmVmaXg/ICggPj1r ZGUtYmFzZS8kezF9LSR7U0xPVH06JHtTTE9UfVthcXVhPSxrZGVwcmVmaXgke3VzZX1dICki Ci0JCQkJOzsKLQkJCSopCi0JCQkJZWNobyAiICFrZGVwcmVmaXg/ICggPj1rZGUtYmFzZS8k ezF9LSR7RklYTUVfUFZ9W2FxdWE9LC1rZGVwcmVmaXgke3VzZX1dICkiCi0JCQkJZWNobyAi IGtkZXByZWZpeD8gKCA+PWtkZS1iYXNlLyR7MX0tJHtGSVhNRV9QVn06JHtTTE9UfVthcXVh PSxrZGVwcmVmaXgke3VzZX1dICkiCi0JCQkJOzsKLQkJZXNhYworCQllY2hvICIgIWtkZXBy ZWZpeD8gKCA+PWtkZS1iYXNlLyR7MX0tJHt2ZXJ9W2FxdWE9LC1rZGVwcmVmaXgke3VzZX1d ICkiCisJCWVjaG8gIiBrZGVwcmVmaXg/ICggPj1rZGUtYmFzZS8kezF9LSR7dmVyfToke1NM T1R9W2FxdWE9LGtkZXByZWZpeCR7dXNlfV0gKSIKKwllbGlmIFtbICR7dmVyfSA9PSBsaXZl IF1dOyB0aGVuCisJCWVjaG8gIiBrZGUtYmFzZS8kezF9OmxpdmVbYXF1YT0ke3VzZX1dIgog CWVsc2UKLQkJaWYgW1sgJHtLREVfTUlOSU1BTH0gPSBsaXZlIF1dOyB0aGVuCi0JCQllY2hv ICIga2RlLWJhc2UvJHsxfToke0tERV9NSU5JTUFMfVthcXVhPSR7dXNlfV0iCi0JCWVsc2UK LQkJCWVjaG8gIiA+PWtkZS1iYXNlLyR7MX0tJHtLREVfTUlOSU1BTH1bYXF1YT0ke3VzZX1d IgotCQlmaQorCQllY2hvICIgPj1rZGUtYmFzZS8kezF9LSR7dmVyfVthcXVhPSR7dXNlfV0i CiAJZmkKIH0KIApAQCAtNDQ0LDggKzQ2NiwxNCBAQAogCWRlYnVnLXByaW50LWZ1bmN0aW9u ICR7RlVOQ05BTUV9ICIkQCIKIAogCVtbIC16ICR7MX0gXV0gJiYgZGllICJNaXNzaW5nIHBh cmFtZXRlciIKLQlsb2NhbCBwa2c9a2RlLWJhc2UvJDEKKwlsb2NhbCBwa2c9a2RlLWJhc2Uv JDEgdXNlCiAJc2hpZnQKKwlpZiBbWyAkcGtnID09ICpcWypcXSBdXTsgdGhlbgorCQl1c2U9 JHtwa2cjKlxbfQorCQl1c2U9JHt1c2UlXF19CisJCXBrZz0ke3BrZyVcWypcXX0KKwlmaQor CiAJbG9jYWwgcGFyYW0gc2xvdCBkZWY9InVuc2V0IiB2YXIgYXRvbQogCSMgVGhlIGZvbGxv d2luZyB2YXJpYWJsZXMgd2lsbCBob2xkIHBhcmFtZXRlcnMgdGhhdCBjb250YWluICI6Igog CSMgIC0gYmxvY2tfM181CkBAIC00OTYsMTAgKzUyNCwxMCBAQAogCQlmaQogCQkjIHdlIGFs d2F5cyBibG9jayBvdXIgb3duIHNsb3QsIGlnbm9yaW5nIGtkZXByZWZpeAogCQlpZiBbWyAk e1NMT1R9ID09ICR7c2xvdH0gXV07IHRoZW4KLQkJCWVjaG8gIiAhJHthdG9tfToke3Nsb3R9 IgorCQkJZWNobyAiICEke2F0b219OiR7c2xvdH0ke3VzZTorWyR7dXNlfV19IgogCQllbHNl CiAJCQkjIHdlIG9ubHkgYmxvY2sgb3RoZXIgc2xvdHMgb24gLWtkZXByZWZpeAotCQkJZWNo byAiICFrZGVwcmVmaXg/ICggISR7YXRvbX06JHtzbG90fVsta2RlcHJlZml4XSApIgorCQkJ ZWNobyAiICFrZGVwcmVmaXg/ICggISR7YXRvbX06JHtzbG90fVsta2RlcHJlZml4JHt1c2U6 Kywke3VzZX19XSApIgogCQlmaQogCWRvbmUKIApAQCAtNTE1LDcgKzU0Myw3IEBACiAJCWVs c2UKIAkJCWF0b209Ijw9JHtwa2d9LSR7YmxvY2tfM181fSIKIAkJZmkKLQkJZWNobyAiICEk e2F0b219OjMuNSIKKwkJZWNobyAiICEke2F0b219OjMuNSR7dXNlOitbJHt1c2V9XX0iCiAJ ZmkKIH0KIApAQCAtNTI1LDcgKzU1Myw3IEBACiAJbG9jYWwgbGluZ3VhIGxpbmd1YXMgc3Jf bWVzcyB3cAogCWxvY2FsIGRpcj0kezF9CiAKLQlbWyAtZCAgIiR7ZGlyfSIgXV0gfHwgZGll ICJsaW5ndWFzIGRpciBcIiR7ZGlyfVwiIGRvZXMgbm90IGV4aXN0IgorCVtbIC1kICAke2Rp cn0gXV0gfHwgZGllICJsaW5ndWFzIGRpciBcIiR7ZGlyfVwiIGRvZXMgbm90IGV4aXN0Igog CWNvbW1lbnRfYWxsX2FkZF9zdWJkaXJlY3RvcnkgIiR7ZGlyfSIKIAlwdXNoZCAiJHtkaXJ9 IiA+IC9kZXYvbnVsbAogCkBAIC01MzQsMzcgKzU2MiwzNyBAQAogCSMgZmFpbCBhdCBhbnkg cG9pbnQKIAlzcl9tZXNzPSJzckBsYXRuIHNyQGxhdGluIHNyQExhdGluIgogCWZvciB3cCBp biAke3NyX21lc3N9OyBkbwotCQlbWyAtZSAiJHt3cH0ucG8iIF1dICYmIG12ICIke3dwfS5w byIgInNyQExhdG4ucG8iCi0JCWlmIFtbIC1kICIke3dwfSIgXV07IHRoZW4KKwkJW1sgLWUg JHt3cH0ucG8gXV0gJiYgbXYgIiR7d3B9LnBvIiAic3JATGF0bi5wbyIKKwkJaWYgW1sgLWQg JHt3cH0gXV07IHRoZW4KIAkJCSMgbW92ZSBkaXIgYW5kIGZpeCBjbWFrZWxpc3RzCiAJCQlt diAiJHt3cH0iICJzckBMYXRuIgogCQkJc2VkIC1pIFwKLQkJCQktZSAiczoke3dwfTpzckBM YXRpbjpnIiBcCisJCQkJLWUgInM6JHt3cH06c3JATGF0bjpnIiBcCiAJCQkJQ01ha2VMaXN0 cy50eHQKIAkJZmkKIAlkb25lCiAKIAlmb3IgbGluZ3VhIGluICR7S0RFX0xJTkdVQVN9OyBk bwotCQlpZiBbWyAtZSAiJHtsaW5ndWF9LnBvIiBdXTsgdGhlbgorCQlpZiBbWyAtZSAke2xp bmd1YX0ucG8gXV07IHRoZW4KIAkJCW12ICIke2xpbmd1YX0ucG8iICIke2xpbmd1YX0ucG8u b2xkIgogCQlmaQogCWRvbmUKIAogCWZvciBsaW5ndWEgaW4gJHtLREVfTElOR1VBU307IGRv CiAJCWlmIHVzZSBsaW5ndWFzXyR7bGluZ3VhfSA7IHRoZW4KLQkJCWlmIFtbIC1kICIke2xp bmd1YX0iIF1dOyB0aGVuCisJCQlpZiBbWyAtZCAke2xpbmd1YX0gXV07IHRoZW4KIAkJCQls aW5ndWFzPSIke2xpbmd1YXN9ICR7bGluZ3VhfSIKIAkJCQlzZWQgLWUgIi9hZGRfc3ViZGly ZWN0b3J5KFtbOnNwYWNlOl1dKiR7bGluZ3VhfVtbOnNwYWNlOl1dKilbWzpzcGFjZTpdXSok LyBzL14jRE9OT1RDT01QSUxFIC8vIiBcCiAJCQkJCS1lICIvQUREX1NVQkRJUkVDVE9SWShb WzpzcGFjZTpdXSoke2xpbmd1YX1bWzpzcGFjZTpdXSopW1s6c3BhY2U6XV0qJC8gcy9eI0RP Tk9UQ09NUElMRSAvLyIgXAogCQkJCQktaSBDTWFrZUxpc3RzLnR4dCB8fCBkaWUgIlNlZCB0 byB1bmNvbW1lbnQgbGluZ3Vhc18ke2xpbmd1YX0gZmFpbGVkLiIKIAkJCWZpCi0JCQlpZiBb WyAtZSAiJHtsaW5ndWF9LnBvLm9sZCIgXV07IHRoZW4KKwkJCWlmIFtbIC1lICR7bGluZ3Vh fS5wby5vbGQgXV07IHRoZW4KIAkJCQlsaW5ndWFzPSIke2xpbmd1YXN9ICR7bGluZ3VhfSIK IAkJCQltdiAiJHtsaW5ndWF9LnBvLm9sZCIgIiR7bGluZ3VhfS5wbyIKIAkJCWZpCiAJCWZp CiAJZG9uZQotCVtbIC1uICIke2xpbmd1YXN9IiBdXSAmJiBlY2hvICI+Pj4gRW5hYmxpbmcg bGFuZ3VhZ2VzOiAke2xpbmd1YXN9IgorCVtbIC1uICR7bGluZ3Vhc30gXV0gJiYgZWNobyAi Pj4+IEVuYWJsaW5nIGxhbmd1YWdlczogJHtsaW5ndWFzfSIKIAogCXBvcGQgPiAvZGV2L251 bGwKIH0K --------------040404070904070102050508 Content-Type: text/plain; name="kde4-base.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kde4-base.diff" LS0tIGdlbnRvby9nZW50b28teDg2L2VjbGFzcy9rZGU0LWJhc2UuZWNsYXNzCTIwMTEtMDMt MTcgMTA6NDA6NDkuMDAwMDAwMDAwICswMTAwCisrKyAvdXNyL2xvY2FsL3BvcnRhZ2Uva2Rl L2VjbGFzcy9rZGU0LWJhc2UuZWNsYXNzCTIwMTEtMDQtMDMgMjE6MzE6MzEuMDAwMDAwMDAw ICswMjAwCkBAIC0xLDYgKzEsNiBAQAogIyBDb3B5cmlnaHQgMTk5OS0yMDEwIEdlbnRvbyBG b3VuZGF0aW9uCiAjIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdjIKLSMgJEhlYWRlcjogL3Zhci9jdnNyb290L2dlbnRv by14ODYvZWNsYXNzL2tkZTQtYmFzZS5lY2xhc3MsdiAxLjg1IDIwMTEvMDMvMTYgMjI6NDU6 MzAgZGlsZnJpZGdlIEV4cCAkCisjICRIZWFkZXI6ICQKIAogIyBARUNMQVNTOiBrZGU0LWJh c2UuZWNsYXNzCiAjIEBNQUlOVEFJTkVSOgpAQCAtMTAsOCArMTAsOCBAQAogIyBUaGUga2Rl NC1iYXNlLmVjbGFzcyBwcm92aWRlcyBzdXBwb3J0IGZvciBidWlsZGluZyBLREU0IGJhc2Vk IGVidWlsZHMKICMgYW5kIEtERTQgYXBwbGljYXRpb25zLgogIwotIyBOT1RFOiBLREUgNCBl YnVpbGRzIGJ5IGRlZmF1bHQgZGVmaW5lIEVBUEk9IjIiLCB0aGlzIGNhbiBiZSByZWRlZmlu ZWQgYnV0Ci0jIGVjbGFzcyB3aWxsIGZhaWwgd2l0aCB2ZXJzaW9uIG9sZGVyIHRoYW4gMi4K KyMgTk9URTogS0RFIDQgZWJ1aWxkcyBjdXJyZW50bHkgc3VwcG9ydCBFQVBJICIzIi4gIFRo aXMgd2lsbCBiZSByZXZpZXdlZAorIyBvdmVyIHRpbWUgYXMgbmV3IEVBUEkgdmVyc2lvbnMg YXJlIGFwcHJvdmVkLgogCiAjIEBFQ0xBU1MtVkFSSUFCTEU6IFZJUlRVQUxYX1JFUVVJUkVE CiAjIEBERVNDUklQVElPTjoKQEAgLTIwLDE1ICsyMCwxMyBAQAogIyBmb3IgdGVzdHMgeW91 IHNob3VsZCBwcm9jZWVkIHdpdGggc2V0dGluZyBWSVJUVUFMWF9SRVFVSVJFRD10ZXN0Lgog OiAke1ZJUlRVQUxYX1JFUVVJUkVEOj1tYW51YWx9CiAKLWluaGVyaXQga2RlNC1mdW5jdGlv bnMgYmFzZSB2aXJ0dWFseCBldXRpbHMKK2luaGVyaXQga2RlNC1mdW5jdGlvbnMgZmRvLW1p bWUgZ25vbWUyLXV0aWxzIGJhc2UgdmlydHVhbHggdmVyc2lvbmF0b3IgZXV0aWxzCiAKLWdl dF9idWlsZF90eXBlCiBpZiBbWyAke0JVSUxEX1RZUEV9ID0gbGl2ZSBdXTsgdGhlbgotCWlm IFtbICR7S0RFQkFTRX0gPSBrZGV2ZWxvcCBdXTsgdGhlbgotCQlpbmhlcml0IGdpdAotCWVs c2UKLQkJaW5oZXJpdCBzdWJ2ZXJzaW9uCi0JZmkKKwljYXNlICR7S0RFX1NDTX0gaW4KKwkJ c3ZuKSBpbmhlcml0IHN1YnZlcnNpb24gOzsKKwkJZ2l0KSBpbmhlcml0IGdpdCA7OworCWVz YWMKIGZpCiAKICMgQEVDTEFTUy1WQVJJQUJMRTogQ01BS0VfUkVRVUlSRUQKQEAgLTYzLDE4 ICs2MSwyMiBAQAogIyBOb3RlIHRoYXQgaXQgaXMgZml4ZWQgdG8gJHtTTE9UfSBmb3Iga2Rl LWJhc2UgcGFja2FnZXMuCiBLREVfTUlOSU1BTD0iJHtLREVfTUlOSU1BTDotNC40fSIKIAot IyBTZXQgc2xvdCBmb3IgcGFja2FnZXMgaW4ga2RlLWJhc2UsIGtvZmZpY2UgYW5kIGtkZXZl bG9wCisjIFNldCBzbG90IGZvciBLREVCQVNFIGtub3duIHBhY2thZ2VzCiBjYXNlICR7S0RF QkFTRX0gaW4KIAlrZGUtYmFzZSkKKwkJbWFqb3I9JChnZXRfbWFqb3JfdmVyc2lvbikKKwkJ bWlub3I9JChnZXRfdmVyc2lvbl9jb21wb25lbnRfcmFuZ2UgMikKKwkJbWljcm89JChnZXRf dmVyc2lvbl9jb21wb25lbnRfcmFuZ2UgMykKIAkJIyBEZXRlcm1pbmUgU0xPVCBmcm9tIFBW cwotCQljYXNlICR7UFZ9IGluCi0JCQkqLjk5OTkqKSBTTE9UPSIke1BWLy45OTk5Ki99IiA7 OyAjIHN0YWJsZSBsaXZlCi0JCQk0LjYqIHwgNC41Lls2LTldWzAtOV0qKSBTTE9UPSI0LjYi IDs7Ci0JCQk0LjUqIHwgNC40Lls2LTldWzAtOV0qKSBTTE9UPSI0LjUiIDs7Ci0JCQk0LjQq IHwgNC4zLls2LTldWzAtOV0qKSBTTE9UPSI0LjQiIDs7Ci0JCQk5OTk5KikgU0xPVD0ibGl2 ZSIgOzsgIyByZWd1bGFyIGxpdmUKLQkJCSopIGRpZSAiVW5zdXBwb3J0ZWQgJHtQVn0iIDs7 Ci0JCWVzYWMKKwkJW1sgJHtQVn0gPT0gOTk5OSogXV0gJiYgU0xPVD1saXZlICMgcmVndWxh ciBsaXZlCisJCVtbICR7bWFqb3J9IC1lcSA0ICYmICR7bWljcm99ID09IDk5OTkgXV0gJiYg U0xPVD0ke21ham9yfS4ke21pbm9yfSAjIHN0YWJsZSBsaXZlCisJCWlmIFtbICR7bWFqb3J9 IC1lcSA0ICYmICR7bWljcm99ICE9IDk5OTkgXV07IHRoZW4KKwkJCVtbICR7bWljcm99IC1s dCA2MCBdXSAmJiBcCisJCQkJU0xPVD0ke21ham9yfS4ke21pbm9yfQorCQkJW1sgJHttaWNy b30gLWdlIDYwIF1dICYmCisJCQkJU0xPVD0ke21ham9yfS4kKCgkbWlub3IgKyAxKSkKKwkJ ZmkKKwkJW1sgLXogJHtTTE9UfSBdXSAmJiBkaWUgIlVuc3VwcG9ydGVkICR7UFZ9IgogCQlL REVfTUlOSU1BTD0iJHtTTE9UfSIKIAkJOzsKIAlrb2ZmaWNlKQpAQCAtMTExLDExICsxMTMs OSBAQAogCQk7OwogZXNhYwogCi1zbG90X2lzX2F0X2xlYXN0IDQuNSAke0tERV9NSU5JTUFM fSAmJiBDTUFLRV9NSU5fVkVSU0lPTj0iMi44LjEiCi0KIGluaGVyaXQgJHtidWlsZHN5c3Rl bV9lY2xhc3N9CiAKLUVYUE9SVF9GVU5DVElPTlMgcGtnX3NldHVwIHNyY191bnBhY2sgc3Jj X3ByZXBhcmUgJHtleHBvcnRfZm5zfSBwa2dfcG9zdGluc3QgcGtnX3Bvc3RybQorRVhQT1JU X0ZVTkNUSU9OUyBwa2dfc2V0dXAgc3JjX3VucGFjayBzcmNfcHJlcGFyZSAke2V4cG9ydF9m bnN9IHBrZ19wcmVpbnN0IHBrZ19wb3N0aW5zdCBwa2dfcG9zdHJtCiAKIHVuc2V0IGJ1aWxk c3lzdGVtX2VjbGFzcwogdW5zZXQgZXhwb3J0X2ZucwpAQCAtMTczLDYgKzE3MywxNiBAQAog IyBlbnN1cmVzIGJ1aWxkdGltZSBhbmQgcnVudGltZSBkZXBlbmRlbmNpZXMuCiBLREVfSEFO REJPT0s9IiR7S0RFX0hBTkRCT09LOi1uZXZlcn0iCiAKKyMgQEVDTEFTUy1WQVJJQUJMRTog S0RFX0xJTkdVQVNfTElWRV9PVkVSUklERQorIyBAREVTQ1JJUFRJT046CisjIFNldCB0aGlz IHZhcmlibGUgaWYgeW91IHdhbnQgeW91ciBsaXZlIHBhY2thZ2UgdG8gbWFuYWdlIGl0cwor IyB0cmFuc2xhdGlvbnMuIChNb3N0bHkgYWxsIGtkZSBlYnVpbGRzIGRvZXMgbm90IHNoaXAg ZG9jdW1lbnRhdGlvbgorIyBhbmQgdHJhbnNsYXRpb25zIGluIGxpdmUgZWJ1aWxkcykKK2lm IFtbICR7QlVJTERfVFlQRX0gPT0gbGl2ZSAmJiAteiAke0tERV9MSU5HVUFTX0xJVkVfT1ZF UlJJREV9ICYmICR7S0RFQkFTRX0gIT0gImtkZS1iYXNlIiBdXTsgdGhlbgorCUtERV9IQU5E Qk9PSz1uZXZlcgorCUtERV9MSU5HVUFTPSIiCitmaQorCiAjIFNldHVwIHBhY2thZ2VzIGlu aGVyaXRpbmcgdGhpcyBlY2xhc3MKIGNhc2UgJHtLREVCQVNFfSBpbgogCWtkZS1iYXNlKQpA QCAtMjEwLDE0ICsyMjAsMTEgQEAKIAogIyBARUNMQVNTLVZBUklBQkxFOiBRVF9NSU5JTUFM CiAjIEBERVNDUklQVElPTjoKLSMgRGV0ZXJtaW5lIHZlcnNpb24gb2YgcXQgd2UgZW5mb3Jj ZSBhcyBtaW5pbWFsIGZvciB0aGUgcGFja2FnZS4gNC40LjAgNC41LjEuLi4KLSMgNC42LjAg Zm9yIDQuNCwgNC42LjMgZm9yIDQuNSwgYW5kIDQuNy4wIGZvciA0LjYgYW5kIGxhdGVyCisj IERldGVybWluZSB2ZXJzaW9uIG9mIHF0IHdlIGVuZm9yY2UgYXMgbWluaW1hbCBmb3IgdGhl IHBhY2thZ2UuCiBpZiBzbG90X2lzX2F0X2xlYXN0IDQuNiAiJHtLREVfTUlOSU1BTH0iOyB0 aGVuCiAJUVRfTUlOSU1BTD0iJHtRVF9NSU5JTUFMOi00LjcuMH0iCi1lbGlmIHNsb3RfaXNf YXRfbGVhc3QgNC41ICIke0tERV9NSU5JTUFMfSI7IHRoZW4KLQlRVF9NSU5JTUFMPSIke1FU X01JTklNQUw6LTQuNi4zfSIKIGVsc2UKLQlRVF9NSU5JTUFMPSIke1FUX01JTklNQUw6LTQu Ni4wfSIKKwlRVF9NSU5JTUFMPSIke1FUX01JTklNQUw6LTQuNi4zfSIKIGZpCiAKICMgRGVj bGFyYXRpdmUgZGVwZW5kZW5jaWVzCkBAIC0zNjMsNiArMzcwLDcgQEAKIAkJZmkKIAlmaQog ZmkKKwoga2RlZGVwZW5kPSIKIAlkZXYtdXRpbC9hdXRvbW9jCiAJZGV2LXV0aWwvcGtnY29u ZmlnCkBAIC0zNzEsMTIgKzM3OSwyNiBAQAogCQl4MTEtcHJvdG8veGY4NnZpZG1vZGVwcm90 bwogCSkKICIKKwoga2RlcmRlcGVuZD0iIgogCisjIGFsbCBwYWNrYWdlcyBuZWVkcyBveHln ZW4gaWNvbnMgZm9yIGJhc2ljIGljb25zZXQKIGlmIFtbICR7UE59ICE9IG94eWdlbi1pY29u cyBdXTsgdGhlbgogCWtkZXJkZXBlbmQrPSIgJChhZGRfa2RlYmFzZV9kZXAgb3h5Z2VuLWlj b25zKSIKIGZpCiAKKyMgYWRkIGEgZGVwZW5kZW5jeSBvdmVyIGtkZS1sMTBuIGlmIEVBUEk0 IGlzIGFyb3VuZAoraWYgW1sgJHtLREVCQVNFfSAhPSAia2RlLWJhc2UiIF1dICYmIFtbIC1u ICR7S0RFX0xJTkdVQVN9IF1dICYmIGhhcyAiJHtFQVBJOi0wfSIgNDsgdGhlbgorCXVzZWRl cD0nJworCWZvciBfbGluZ3VhIGluICR7S0RFX0xJTkdVQVN9OyBkbworCQlbWyAtbiAke3Vz ZWRlcH0gXV0gJiYgdXNlZGVwKz0iLCIKKwkJdXNlZGVwKz0ibGluZ3Vhc18ke19saW5ndWF9 KCspPyIKKwlkb25lCisJIyBpZiBvdXIgcGFja2FnZSBoYXMgbGlnbnVhcyBwdWxsIGluIGtk ZS1sMTBuIHdpdGggc2VsZWN0ZWQgbGluZ3VhCisJa2RlcmRlcGVuZCs9IiAkKGFkZF9rZGVi YXNlX2RlcCBrZGUtbDEwbiAke3VzZWRlcH0pIgorCXVuc2V0IHVzZWRlcCBfbGluZ3VhCitm aQorCiBrZGVoYW5kYm9va2RlcGVuZD0iCiAJYXBwLXRleHQvZG9jYm9vay14bWwtZHRkOjQu MgogCWFwcC10ZXh0L2RvY2Jvb2steHNsLXN0eWxlc2hlZXRzCkBAIC00MjUsMTUgKzQ0Nyw2 OSBAQAogUkRFUEVORCs9IiAke0NPTU1PTkRFUEVORH0iCiB1bnNldCBDT01NT05ERVBFTkQK IAotIyBBZGQgZXhwZXJpbWVudGFsIGtkZWVuYWJsZWZpbmFsLCBkaXNhYmxlZCBieSBkZWZh dWx0CisjIEFkZCBleHBlcmltZW50YWwga2RlZW5hYmxlZmluYWwsIG1hc2tlZCBieSBkZWZh dWx0CiBJVVNFKz0iIGtkZWVuYWJsZWZpbmFsIgogCiAjIEZldGNoIHNlY3Rpb24gLSBJZiB0 aGUgZWJ1aWxkJ3MgY2F0ZWdvcnkgaXMgbm90ICdrZGUtYmFzZScgYW5kIGlmIGl0IGlzIG5v dCBhCiAjIGtvZmZpY2UgZWJ1aWxkLCB0aGUgVVJJIHNob3VsZCBiZSBzZXQgaW4gdGhlIGVi dWlsZCBpdHNlbGYKLWNhc2UgJHtCVUlMRF9UWVBFfSBpbgotCWxpdmUpCi0JCVNSQ19VUkk9 IiIKLQkJaWYgaGFzIHN1YnZlcnNpb24gJHtJTkhFUklURUR9OyB0aGVuCitfY2FsY3VsYXRl X3NyY191cmkoKSB7CisJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgor CisJbG9jYWwgX2ttbmFtZSBfa21uYW1lX3B2CisKKwkjIHdlIGNhbGN1bGF0ZSBVUkkgb25s eSBmb3Iga25vd24gS0RFQkFTRSBtb2R1bGVzCisJW1sgLW4gJHtLREVCQVNFfSBdXSB8fCBy ZXR1cm4KKworCSMgY2FsY3VsYXRlIHRhcmJhbGwgbW9kdWxlIG5hbWUKKwlpZiBbWyAtbiAk e0tNTkFNRX0gXV07IHRoZW4KKwkJIyBmaXh1cCBrZGViYXNlLWFwcHMgbmFtZQorCQljYXNl ICR7S01OQU1FfSBpbgorCQkJa2RlYmFzZS1hcHBzKQorCQkJCV9rbW5hbWU9ImtkZWJhc2Ui IDs7CisJCQkqKQorCQkJCV9rbW5hbWU9IiR7S01OQU1FfSIgOzsKKwkJZXNhYworCWVsc2UK KwkJX2ttbmFtZT0ke1BOfQorCWZpCisJX2ttbmFtZV9wdj0iJHtfa21uYW1lfS0ke1BWfSIK KwljYXNlICR7S0RFQkFTRX0gaW4KKwkJa2RlLWJhc2UpCisJCQljYXNlICR7UFZ9IGluCisJ CQkJNC5bNDU2XS44WzA1XSB8IDQuWzQ1Nl0uOVswMjM1NjhdIHwgNC41Ljk0LjEpCisJCQkJ CSMgVW5zdGFibGUgS0RFIFNDIHJlbGVhc2VzCisJCQkJCVNSQ19VUkk9Im1pcnJvcjovL2tk ZS91bnN0YWJsZS8ke1BWfS9zcmMvJHtfa21uYW1lX3B2fS50YXIuYnoyIgorCQkJCQkjIEtE RVBJTSBJUyBTUEVDSUFMCisJCQkJCVtbICR7S01OQU1FfSA9PSAia2RlcGltIiB8fCAke0tN TkFNRX0gPT0gImtkZXBpbS1ydW50aW1lIiBdXSAmJiBTUkNfVVJJPSJtaXJyb3I6Ly9rZGUv dW5zdGFibGUva2RlcGltLyR7UFZ9L3NyYy8ke19rbW5hbWVfcHZ9LnRhci5iejIiCisJCQkJ CTs7CisJCQkJNC40Lls2Nzg5XSB8IDQuNC4xPykKKwkJCQkJIyBTdGFibGUga2RlcGltIHJl bGVhc2VzCisJCQkJCVNSQ19VUkk9Im1pcnJvcjovL2tkZS9zdGFibGUva2RlcGltLSR7UFZ9 L3NyYy8ke19rbW5hbWVfcHZ9LnRhci5iejIiCisJCQkJCTs7CisJCQkJKikKKwkJCQkJIyBT dGFibGUgS0RFIFNDIHJlbGVhc2VzCisJCQkJCVNSQ19VUkk9Im1pcnJvcjovL2tkZS9zdGFi bGUvJHtQVn0vc3JjLyR7X2ttbmFtZV9wdn0udGFyLmJ6MiIKKwkJCQkJOzsKKwkJCWVzYWMK KwkJCTs7CisJCWtvZmZpY2UpCisJCQljYXNlICR7UFZ9IGluCisJCQkJMi5bMTIzNF0uWzYt OV0qKSBTUkNfVVJJPSJtaXJyb3I6Ly9rZGUvdW5zdGFibGUvJHtfa21uYW1lX3B2fS8ke19r bW5hbWVfcHZ9LnRhci5iejIiIDs7CisJCQkJKikgU1JDX1VSST0ibWlycm9yOi8va2RlL3N0 YWJsZS8ke19rbW5hbWVfcHZ9LyR7X2ttbmFtZV9wdn0udGFyLmJ6MiIgOzsKKwkJCWVzYWMK KwkJCTs7CisJCWtkZXZlbG9wKQorCQkJU1JDX1VSST0ibWlycm9yOi8va2RlL3N0YWJsZS9r ZGV2ZWxvcC8ke0tERVZFTE9QX1ZFUlNJT059L3NyYy8ke1B9LnRhci5iejIiCisJCQk7Owor CWVzYWMKK30KKworX2NhbGN1bGF0ZV9saXZlX3JlcG8oKSB7CisJZGVidWctcHJpbnQtZnVu Y3Rpb24gJHtGVU5DTkFNRX0gIiRAIgorCisJU1JDX1VSST0iIgorCWNhc2UgJHtLREVfU0NN fSBpbgorCQlzdm4pCiAJCQkjIERldGVybWluZSBicmFuY2ggVVJMIGJhc2VkIG9uIGxpdmUg dHlwZQogCQkJbG9jYWwgYnJhbmNoX3ByZWZpeAogCQkJY2FzZSAke1BWfSBpbgpAQCAtNTA0 LDY0ICs1ODAsNjQgQEAKIAkJCSMgZm9yIGtkZS1iYXNlIGFuZCBrb2ZmaWNlIG1vZHVsZXMu IERvZXMgbm90IGFmZmVjdCBtaXNjIGFwcHMuCiAJCQkjIERlZmF1bHQgdmFsdWUgaXMgMSBo b3VyLgogCQkJW1sgJHtLREVCQVNFfSA9IGtkZS1iYXNlIHx8ICR7S0RFQkFTRX0gPSBrb2Zm aWNlIF1dICYmIEVTVk5fVVBfRlJFUT0ke0VTVk5fVVBfRlJFUTotMX0KLQkJZWxpZiBoYXMg Z2l0ICR7SU5IRVJJVEVEfTsgdGhlbgotCQkJaWYgW1sgLXogJHtLTU5PTU9EVUxFfSBdXSAm JiBbWyAteiAke0tNTU9EVUxFfSBdXTsgdGhlbgotCQkJCUtNTU9EVUxFPSIke1BOfSIKLQkJ CWZpCi0JCQljYXNlICR7S0RFQkFTRX0gaW4KLQkJCQlrZGV2ZWxvcCkKLQkJCQkJRUdJVF9S RVBPX1VSST0iZ2l0Oi8vZ2l0LmtkZS5vcmcvJHtLTU1PRFVMRX0iCi0JCQkJCTs7Ci0JCQll c2FjCi0JCWZpCi0JCTs7Ci0JKikKLQkJaWYgW1sgLW4gJHtLREVCQVNFfSBdXTsgdGhlbgot CQkJaWYgW1sgLW4gJHtLTU5BTUV9IF1dOyB0aGVuCi0JCQkJY2FzZSAke0tNTkFNRX0gaW4K LQkJCQkJa2RlYmFzZS1hcHBzKQotCQkJCQkJX2ttbmFtZT0ia2RlYmFzZSIgOzsKLQkJCQkJ KikKLQkJCQkJCV9rbW5hbWU9IiR7S01OQU1FfSIgOzsKLQkJCQllc2FjCisJCQk7OworCQln aXQpCisJCQlsb2NhbCBfa21uYW1lCisJCQkjIEBFQ0xBU1MtVkFSSUFCTEU6IEVHSVRfTUlS Uk9SCisJCQkjIEBERVNDUklQVElPTjoKKwkJCSMgVGhpcyB2YXJpYWJsZSBhbGxvd3MgZWFz eSBvdmVycmlkaW5nIG9mIGRlZmF1bHQga2RlIG1pcnJvciBzZXJ2aWNlCisJCQkjIChhbm9u Z2l0KSB3aXRoIGFueXRoaW5nIGVsc2UgeW91IG1pZ2h0IHdhbnQgdG8gdXNlLgorCQkJRUdJ VF9NSVJST1I9JHtFR0lUX01JUlJPUjo9Z2l0Oi8vYW5vbmdpdC5rZGUub3JnfQorCisJCQkj IEBFQ0xBU1MtVkFSSUFCTEU6IEVHSVRfUkVQT05BTUUKKwkJCSMgQERFU0NSSVBUSU9OOgor CQkJIyBUaGlzIHZhcmlhYmxlIGFsbG93cyBvdmVycmlkaW5nIG9mIGRlZmF1bHQgcmVwb3Np dG9yeQorCQkJIyBuYW1lLiBTcGVjaWZ5IG9ubHkgaWYgdGhpcyBkaWZmZXIgZnJvbSBQTiBh bmQgS01OQU1FLgorCQkJaWYgW1sgLW4gJHtFR0lUX1JFUE9OQU1FfSBdXTsgdGhlbgorCQkJ CSMgdGhlIHJlcG9zaXRvcnkgYW5kIGttbmFtZSBkaWZmZXJlbnQKKwkJCQlfa21uYW1lPSR7 RUdJVF9SRVBPTkFNRX0KKwkJCWVsaWYgW1sgLW4gJHtLTU5BTUV9IF1dOyB0aGVuCisJCQkJ X2ttbmFtZT0ke0tNTkFNRX0KIAkJCWVsc2UKIAkJCQlfa21uYW1lPSR7UE59CiAJCQlmaQot CQkJX2ttbmFtZV9wdj0iJHtfa21uYW1lfS0ke1BWfSIKLQkJCWNhc2UgJHtLREVCQVNFfSBp bgotCQkJCWtkZS1iYXNlKQotCQkJCQljYXNlICR7UFZ9IGluCi0JCQkJCQk0LjUuOTMpCi0J CQkJCQkJIyBPbmx5IGtkZXBpbSBhbmQga2RlcGltLXJ1bnRpbWUgNC42YmV0YSBoZXJlCi0J CQkJCQkJU1JDX1VSST0ibWlycm9yOi8va2RlL3Vuc3RhYmxlL2tkZXBpbS8ke1BWfS8ke19r bW5hbWV9LTQuNmJldGEzLnRhci5iejIiCi0JCQkJCQkJOzsKLQkJCQkJCTQuWzQ1Nl0uOFsw NV0gfCA0Lls0NTZdLjlbMDIzNTY4XSkKLQkJCQkJCQkjIFVuc3RhYmxlIEtERSBTQyByZWxl YXNlcwotCQkJCQkJCVNSQ19VUkk9Im1pcnJvcjovL2tkZS91bnN0YWJsZS8ke1BWfS9zcmMv JHtfa21uYW1lX3B2fS50YXIuYnoyIgotCQkJCQkJCTs7Ci0JCQkJCQk0LjQuNiB8IDQuNC43 IHwgNC40LjggfCA0LjQuOSB8IDQuNC4xMCkKLQkJCQkJCQkjIE9ubHkga2RlcGltIGhlcmUK LQkJCQkJCQlTUkNfVVJJPSJtaXJyb3I6Ly9rZGUvc3RhYmxlL2tkZXBpbS0ke1BWfS9zcmMv JHtfa21uYW1lX3B2fS50YXIuYnoyIgotCQkJCQkJCTs7Ci0JCQkJCQkqKQotCQkJCQkJCSMg U3RhYmxlIEtERSBTQyByZWxlYXNlcwotCQkJCQkJCVNSQ19VUkk9Im1pcnJvcjovL2tkZS9z dGFibGUvJHtQVn0vc3JjLyR7X2ttbmFtZV9wdn0udGFyLmJ6MiIKKworCQkJIyBkZWZhdWx0 IGJyYW5jaGluZworCQkJY2FzZSAke1BWfSBpbgorCQkJCTk5OTkqKSA7OworCQkJCSopCisJ CQkJCSMgc2V0IEVHSVRfQlJBTkNIIGFuZCBFR0lUX0NPTU1JVCB0byAke1NMT1R9CisJCQkJ CWNhc2UgJHtfa21uYW1lfSBpbgorCQkJCQkJa2RlcGxhc21hLWFkZG9ucyB8IGtkZXBpbSB8 IGtkZXBpbS1ydW50aW1lIHwga2RlcGltbGlicykKKwkJCQkJCQlFR0lUX0JSQU5DSD0iJHtT TE9UfSIKIAkJCQkJCQk7OworCQkJCQkJKikgRUdJVF9CUkFOQ0g9IktERS8ke1NMT1R9IiA7 OwogCQkJCQllc2FjCiAJCQkJCTs7Ci0JCQkJa29mZmljZSkKKwkJCWVzYWMKKworCQkJY2Fz ZSAkX2ttbmFtZSBpbgorCQkJCWtkZXBpbXxrZGVwaW0tcnVudGltZSkKIAkJCQkJY2FzZSAk e1BWfSBpbgotCQkJCQkJMi4xLls2LTldKikgU1JDX1VSST0ibWlycm9yOi8va2RlL3Vuc3Rh YmxlLyR7X2ttbmFtZV9wdn0vJHtfa21uYW1lX3B2fS50YXIuYnoyIiA7OwotCQkJCQkJKikg U1JDX1VSST0ibWlycm9yOi8va2RlL3N0YWJsZS8ke19rbW5hbWVfcHZ9LyR7X2ttbmFtZV9w dn0udGFyLmJ6MiIgOzsKKwkJCQkJCSMga2RlcGltIHN0aWxsIGRpZCBub3QgYnJhbmNoCisJ CQkJCQk0LjYuOTk5OSkKKwkJCQkJCQlFR0lUX0JSQU5DSD0ibWFzdGVyIgorCQkJCQkJCTs7 CiAJCQkJCWVzYWMKIAkJCQkJOzsKLQkJCQlrZGV2ZWxvcCkKLQkJCQkJU1JDX1VSST0ibWly cm9yOi8va2RlL3N0YWJsZS9rZGV2ZWxvcC8ke0tERVZFTE9QX1ZFUlNJT059L3NyYy8ke1B9 LnRhci5iejIiCi0JCQkJCTs7CiAJCQllc2FjCi0JCQl1bnNldCBfa21uYW1lIF9rbW5hbWVf cHYKLQkJZmkKLQkJOzsKKwkJCUVHSVRfUkVQT19VUkk9IiR7RUdJVF9NSVJST1J9LyR7X2tt bmFtZX0iCisJCQlFR0lUX1BST0pFQ1Q9IiR7X2ttbmFtZX0iCisKKwkJCWRlYnVnLXByaW50 ICIke0ZVTkNOQU1FfTogUmVwb3NpdG9yeTogJHtFR0lUX1JFUE9fVVJJfSIKKwkJCWRlYnVn LXByaW50ICIke0ZVTkNOQU1FfTogQnJhbmNoOiAke0VHSVRfQlJBTkNIfSIKKwkJCTs7CisJ ZXNhYworfQorCitjYXNlICR7QlVJTERfVFlQRX0gaW4KKwlsaXZlKSBfY2FsY3VsYXRlX2xp dmVfcmVwbyA7OworCSopIF9jYWxjdWxhdGVfc3JjX3VyaSA7OwogZXNhYwogCiBkZWJ1Zy1w cmludCAiJHtMSU5FTk99ICR7RUNMQVNTfSAke0ZVTkNOQU1FfTogU1JDX1VSSSBpcyAke1NS Q19VUkl9IgpAQCAtNTc5LDE1ICs2NTUsNiBAQAoga2RlNC1iYXNlX3BrZ19zZXR1cCgpIHsK IAlkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJEAiCiAKLQkjIFByZWZpeCBj b21wYXQ6Ci0JaWYgW1sgJHtFQVBJfSA9PSAyIF1dICYmICEgdXNlIHByZWZpeDsgdGhlbgot CQlFUFJFRklYPQotCQlFUk9PVD0ke1JPT1R9Ci0JZmkKLQotCSMgQXBwZW5kIG1pc3Npbmcg dHJhaWxpbmcgc2xhc2ggY2hhcmFjdGVyCi0JW1sgJHtFUk9PVH0gPSAqLyBdXSB8fCBFUk9P VCs9Ii8iCi0KIAkjIFFBIGVidWlsZHMKIAlbWyAteiAke0tERV9NSU5JTUFMX1ZBTElEfSBd XSAmJiBld2FybiAiUUEgTm90aWNlOiBpZ25vcmluZyBpbnZhbGlkIEtERV9NSU5JTUFMIChk ZWZhdWx0aW5nIHRvICR7S0RFX01JTklNQUx9KS4iCiAKQEAgLTY0NSwzMCArNzEyLDE2IEBA CiAJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgogCiAJaWYgW1sgJHtC VUlMRF9UWVBFfSA9IGxpdmUgXV07IHRoZW4KLQkJaWYgaGFzIHN1YnZlcnNpb24gJHtJTkhF UklURUR9OyB0aGVuCi0JCQltaWdyYXRlX3N0b3JlX2RpcgotCQkJc3VidmVyc2lvbl9zcmNf dW5wYWNrCi0JCWVsaWYgaGFzIGdpdCAke0lOSEVSSVRFRH07IHRoZW4KLQkJCWdpdF9zcmNf dW5wYWNrCi0JCWZpCi0JZWxpZiBbWyAke0VBUEl9ID09IDIgXV07IHRoZW4KLQkJbG9jYWwg ZmlsZQotCQlmb3IgZmlsZSBpbiAke0F9OyBkbwotCQkJIyBUaGlzIHNldHVwIGlzIGJlY2F1 c2UgRUFQSSA8PSAyIGNhbm5vdCB1bnBhY2sgKi50YXIueHogZmlsZXMKLQkJCSMgZGlyZWN0 bHksIHNvIHdlIGRvIGl0IG91cnNlbHZlcyAodXNpbmcgdGhlIGV4YWN0IHNhbWUgY29kZSBh cyBwb3J0YWdlKQotCQkJY2FzZSAke2ZpbGV9IGluCi0JCQkJKi50YXIueHopCi0JCQkJCWVj aG8gIj4+PiBVbnBhY2tpbmcgJHtmaWxlfSB0byAke1BXRH0iCi0JCQkJCXh6IC1kYyAiJHtE SVNURElSfSIvJHtmaWxlfSB8IHRhciB4b2YgLQotCQkJCQlhc3NlcnQgImZhaWxlZCB1bnBh Y2tpbmcgJHtmaWxlfSIKLQkJCQkJOzsKLQkJCQkqKQotCQkJCQl1bnBhY2sgJHtmaWxlfQot CQkJCQk7OwotCQkJZXNhYwotCQlkb25lCisJCWNhc2UgJHtLREVfU0NNfSBpbgorCQkJc3Zu KQorCQkJCW1pZ3JhdGVfc3RvcmVfZGlyCisJCQkJc3VidmVyc2lvbl9zcmNfdW5wYWNrCisJ CQkJOzsKKwkJCWdpdCkKKwkJCQlnaXRfc3JjX3VucGFjaworCQkJCTs7CisJCWVzYWMKIAll bHNlCi0JCSMgRm9yIEVBUEkgPj0gMywgd2UgY2FuIGp1c3QgdXNlIHVucGFjaygpIGRpcmVj dGx5CiAJCXVucGFjayAke0F9CiAJZmkKIH0KQEAgLTY4Miw2ICs3MzUsOCBAQAoga2RlNC1i YXNlX3NyY19wcmVwYXJlKCkgewogCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9 ICIkQCIKIAorCSMgZW5hYmxlIGhhbmRib29rIGFuZCBsaW5ndWFzIG9ubHkgd2hlbiBub3Qg dXNpbmcgbGl2ZSBlYnVpbGQKKwogCSMgT25seSBlbmFibGUgc2VsZWN0ZWQgbGFuZ3VhZ2Vz LCB1c2VkIGZvciBLREUgZXh0cmFnZWFyIGFwcHMuCiAJaWYgW1sgLW4gJHtLREVfTElOR1VB U30gXV07IHRoZW4KIAkJZW5hYmxlX3NlbGVjdGVkX2xpbmd1YXMKQEAgLTY5MCwxNyArNzQ1 LDMwIEBACiAJIyBFbmFibGUvZGlzYWJsZSBoYW5kYm9va3MgZm9yIGtkZTQtYmFzZSBwYWNr YWdlcwogCSMga2RlLWwxMG4gaW5oZXJpdHMga2RlNC1iYXNlIGJ1dCBpcyBtZXRwYWNrYWdl LCBzbyBubyBjaGVjayBmb3IgZG9jCiAJIyBrZGVsaWJzIGluaGVyaXRzIGtkZTQtYmFzZSBi dXQgaGFuZGxlIGluc3RhbGxpbmcgdGhlIGhhbmRib29rIGl0c2VsZgotCWlmICEgaGFzIGtk ZTQtbWV0YSAke0lOSEVSSVRFRH07IHRoZW4KLQkJaGFzIGhhbmRib29rICR7SVVTRS8vK30g JiYgW1sgJHtQTn0gIT0ga2RlLWwxMG4gXV0gJiYgW1sgJHtQTn0gIT0ga2RlbGlicyBdXSAm JiBlbmFibGVfc2VsZWN0ZWRfZG9jX2xpbmd1YXMKKwlpZiAhIGhhcyBrZGU0LW1ldGEgJHtJ TkhFUklURUR9ICYmIGhhcyBoYW5kYm9vayAke0lVU0UvLyt9OyB0aGVuCisJCWlmIFtbICR7 S0RFQkFTRX0gPT0ga2RlLWJhc2UgXV07IHRoZW4KKwkJCWlmIFtbICR7UE59ICE9IGtkZS1s MTBuICYmICR7UE59ICE9IGtkZWxpYnMgXV0gJiYgdXNlICFoYW5kYm9vazsgdGhlbgorCQkJ CSMgZG9jdW1lbnRhdGlvbiBpbiBrZGU0LWZ1bmN0aW9ucworCQkJCTogJHtLREVfRE9DX0RJ UlM6PWRvY30KKwkJCQlsb2NhbCBkaXIKKwkJCQlmb3IgZGlyIGluICR7S0RFX0RPQ19ESVJT fTsgZG8KKwkJCQkJc2VkIC1lICIvXltbOnNwYWNlOl1dKmFkZF9zdWJkaXJlY3RvcnlbWzpz cGFjZTpdXSooW1s6c3BhY2U6XV0qJHtkaXJ9W1s6c3BhY2U6XV0qKS9zL14vI0RPTk9UQ09N UElMRSAvIiBcCisJCQkJCQktZSAiL15bWzpzcGFjZTpdXSpBRERfU1VCRElSRUNUT1JZW1s6 c3BhY2U6XV0qKFtbOnNwYWNlOl1dKiR7ZGlyfVtbOnNwYWNlOl1dKikvcy9eLyNET05PVENP TVBJTEUgLyIgXAorCQkJCQkJLWUgIi9eW1s6c3BhY2U6XV0qbWFjcm9fb3B0aW9uYWxfYWRk X3N1YmRpcmVjdG9yeVtbOnNwYWNlOl1dKihbWzpzcGFjZTpdXSoke2Rpcn1bWzpzcGFjZTpd XSopL3MvXi8jRE9OT1RDT01QSUxFIC8iIFwKKwkJCQkJCS1lICIvXltbOnNwYWNlOl1dKk1B Q1JPX09QVElPTkFMX0FERF9TVUJESVJFQ1RPUllbWzpzcGFjZTpdXSooW1s6c3BhY2U6XV0q JHtkaXJ9W1s6c3BhY2U6XV0qKS9zL14vI0RPTk9UQ09NUElMRSAvIiBcCisJCQkJCQktaSBD TWFrZUxpc3RzLnR4dCB8fCBkaWUgImZhaWxlZCB0byBjb21tZW50IG91dCBoYW5kYm9vayIK KwkJCQlkb25lCisJCQlmaQorCQllbHNlCisJCQllbmFibGVfc2VsZWN0ZWRfZG9jX2xpbmd1 YXMKKwkJZmkKIAlmaQogCiAJIyBTQ00gYm9vdHN0cmFwCiAJaWYgW1sgJHtCVUlMRF9UWVBF fSA9IGxpdmUgXV07IHRoZW4KLQkJaWYgaGFzIHN1YnZlcnNpb24gJHtJTkhFUklURUR9OyB0 aGVuCi0JCQlzdWJ2ZXJzaW9uX3NyY19wcmVwYXJlCi0JCWVsaWYgaGFzIGdpdCAke0lOSEVS SVRFRH07IHRoZW4KLQkJCWdpdF9zcmNfcHJlcGFyZQotCQlmaQorCQljYXNlICR7S0RFX1ND TX0gaW4KKwkJCXN2bikgc3VidmVyc2lvbl9zcmNfcHJlcGFyZSA7OworCQllc2FjCiAJZmkK IAogCSMgQXBwbHkgcGF0Y2hlcwpAQCAtODQyLDcgKzkxMCw3IEBACiAKIAlpZiBbWyAke1ZJ UlRVQUxYX1JFUVVJUkVEfSA9PSBhbHdheXMgfHwgJHtWSVJUVUFMWF9SRVFVSVJFRH0gPT0g dGVzdCBdXTsgdGhlbgogCQkjIGNoZWNrIGZvciBzYW5pdHkgaWYgYW55b25lIGFscmVhZHkg cmVkZWZpbmVkIFZJUlRVQUxYX0NPTU1BTkQgZnJvbSB0aGUgZGVmYXVsdAotCQlpZiBbWyAk e1ZJUlRVQUxYX0NPTU1BTkR9ICE9ICJlbWFrZSIgXV07IHRoZW4KKwkJaWYgW1sgJHtWSVJU VUFMWF9DT01NQU5EfSAhPSBlbWFrZSBdXTsgdGhlbgogCQkJIyBzdXJwcmlzZS0gd2UgYXJl IGFscmVhZHkgSU5TSURFIHZpcnR1YWxtYWtlISEhCiAJCQlkZWJ1Zy1wcmludCAiUUEgTm90 aWNlOiBUaGlzIHZlcnNpb24gb2Yga2RlNC1iYXNlLmVjbGFzcyBpbmNsdWRlcyB0aGUgdmly dHVhbHggZnVuY3Rpb25hbGl0eS4iCiAJCQlkZWJ1Zy1wcmludCAiICAgICAgICAgICBZb3Ug bWF5IE5PVCBzZXQgVklSVFVBTFhfQ09NTUFORCBvciBjYWxsIHZpcnR1YWxtYWtlIGZyb20g dGhlIGVidWlsZC4iCkBAIC04NjMsMTEgKzkzMSw2IEBACiBrZGU0LWJhc2Vfc3JjX2luc3Rh bGwoKSB7CiAJZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgogCi0JIyBQ cmVmaXggc3VwcG9ydCwgZm9yIHVzYWdlIGluIGVidWlsZHMKLQlpZiBbWyAke0VBUEl9ID09 IDIgXV0gJiYgISB1c2UgcHJlZml4OyB0aGVuCi0JCUVEPSR7RH0KLQlmaQotCiAJaWYgW1sg LW4gJHtLTVNBVkVMSUJTfSBdXSA7IHRoZW4KIAkJaW5zdGFsbF9saWJyYXJ5X2RlcGVuZGVu Y2llcwogCWZpCkBAIC04NzYsNDggKzkzOSw3MyBAQAogCWxvY2FsIGRvYwogCWlmICEgaGFz IGtkZTQtbWV0YSAke0lOSEVSSVRFRH07IHRoZW4KIAkJZm9yIGRvYyBpbiAiJHtTfSIve0FV VEhPUlMsQ0hBTkdFTE9HLENoYW5nZUxvZyosUkVBRE1FKixORVdTLFRPRE8sSEFDS0lOR307 IGRvCi0JCQlbWyAtZiAiJHtkb2N9IiBdXSAmJiBbWyAtcyAiJHtkb2N9IiBdXSAmJiBkb2Rv YyAiJHtkb2N9IgorCQkJW1sgLWYgJHtkb2N9ICYmIC1zICR7ZG9jfSBdXSAmJiBkb2RvYyAi JHtkb2N9IgogCQlkb25lCiAJCWZvciBkb2MgaW4gIiR7U30iLyove0FVVEhPUlMsQ0hBTkdF TE9HLENoYW5nZUxvZyosUkVBRE1FKixORVdTLFRPRE8sSEFDS0lOR307IGRvCi0JCQlbWyAt ZiAiJHtkb2N9IiBdXSAmJiBbWyAtcyAiJHtkb2N9IiBdXSAmJiBuZXdkb2MgIiR7ZG9jfSIg IiQoYmFzZW5hbWUgJChkaXJuYW1lICR7ZG9jfSkpLiQoYmFzZW5hbWUgJHtkb2N9KSIKKwkJ CVtbIC1mICR7ZG9jfSAmJiAtcyAke2RvY30gXV0gJiYgbmV3ZG9jICIke2RvY30iICIkKGJh c2VuYW1lICQoZGlybmFtZSAke2RvY30pKS4kKGJhc2VuYW1lICR7ZG9jfSkiCiAJCWRvbmUK IAlmaQogCiAJY21ha2UtdXRpbHNfc3JjX2luc3RhbGwKIH0KIAorIyBARlVOQ1RJT046IGtk ZTQtYmFzZV9wa2dfcHJlaW5zdAorIyBAREVTQ1JJUFRJT046CisjIEZ1bmN0aW9uIHN0b3Jp bmcgaWNvbiBjYWNoZXMKK2tkZTQtYmFzZV9wa2dfcHJlaW5zdCgpIHsKKwlkZWJ1Zy1wcmlu dC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJEAiCisKKwlnbm9tZTJfaWNvbl9zYXZlbGlzdAor fQorCiAjIEBGVU5DVElPTjoga2RlNC1iYXNlX3BrZ19wb3N0aW5zdAogIyBAREVTQ1JJUFRJ T046CiAjIEZ1bmN0aW9uIHRvIHJlYnVpbGQgdGhlIEtERSBTeXN0ZW0gQ29uZmlndXJhdGlv biBDYWNoZSBhZnRlciBhbiBhcHBsaWNhdGlvbiBoYXMgYmVlbiBpbnN0YWxsZWQuCiBrZGU0 LWJhc2VfcGtnX3Bvc3RpbnN0KCkgewogCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05B TUV9ICIkQCIKIAorCWdub21lMl9pY29uX2NhY2hlX3VwZGF0ZQorCWZkby1taW1lX2Rlc2t0 b3BfZGF0YWJhc2VfdXBkYXRlCisJZmRvLW1pbWVfbWltZV9kYXRhYmFzZV91cGRhdGUKIAli dWlsZHN5Y29jYQogCi0JaWYgW1sgJHtCVUlMRF9UWVBFfSA9IGxpdmUgXV0gJiYgW1sgLXog JHtJX0tOT1dfV0hBVF9JX0FNX0RPSU5HfSBdXTsgdGhlbgotCQllY2hvCi0JCWVpbmZvICJX QVJOSU5HISBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBsaXZlIGVidWlsZCBvZiAke0NBVEVH T1JZfS8ke1BOfSIKLQkJZWluZm8gIlVzZSBpdCBhdCB5b3VyIG93biByaXNrLiIKLQkJZWlu Zm8gIkRvIF9OT1RfIGZpbGUgYnVncyBhdCBidWdzLmdlbnRvby5vcmcgYmVjYXVzZSBvZiB0 aGlzIGVidWlsZCEiCi0JCWVjaG8KLQllbGlmIFtbICR7QlVJTERfVFlQRX0gIT0gbGl2ZSBd XSAmJiBbWyAteiAke0lfS05PV19XSEFUX0lfQU1fRE9JTkd9IF1dICYmIGhhcyBrZGVwcmVm aXggJHtJVVNFLy8rfSAmJiB1c2Uga2RlcHJlZml4OyB0aGVuCi0JCSMgd2FybmluZyBhYm91 dCBrZGVwcmVmaXggZm9yIG5vbi1saXZlIHVzZXJzCi0JCWVjaG8KLQkJZXdhcm4gIldBUk5J TkchIFlvdSBoYXZlIHRoZSBrZGVwcmVmaXggdXNlZmxhZyBlbmFibGVkLiIKLQkJZXdhcm4g IlRoaXMgc2V0dGluZyBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCBhbmQgbWlnaHQgbGVhZCB0 byBwb3RlbnRpYWwgdHJvdWJsZSIKLQkJZXdhcm4gIndpdGggS0RFIHVwZGF0ZSBzdHJhdGVn aWVzLiIKLQkJZXdhcm4gIllvdSBhcmUgdXNpbmcgdGhpcyBzZXR1cCBhdCB5b3VyIG93biBy aXNrIGFuZCB0aGUga2RlIHRlYW0gZG9lcyBub3QiCi0JCWV3YXJuICJ0YWtlIHJlc3BvbnNp YmlsaXRpZXMgZm9yIGRlYWQga2l0dGVucy4iCi0JCWVjaG8KLQlmaQotCWlmIFtbIC16ICR7 SV9LTk9XX1dIQVRfSV9BTV9ET0lOR30gXV0gJiYgISBoYXNfdmVyc2lvbiAna2RlLWJhc2Uv a2RlYmFzZS1ydW50aW1lLW1ldGEnICYmICEgaGFzX3ZlcnNpb24gJ2tkZS1iYXNlL2tkZWJh c2Utc3RhcnRrZGUnOyB0aGVuCi0JCSMgd2FybiBhYm91dCBub3Qgc3VwcG9ydGVkIGFwcHJv YWNoCi0JCWlmIFtbICR7S0RFX1JFUVVJUkVEfSA9PSBhbHdheXMgXV0gfHwgKCBbWyAke0tE RV9SRVFVSVJFRH0gPT0gb3B0aW9uYWwgXV0gJiYgdXNlIGtkZSApOyB0aGVuCisJaWYgW1sg LXogJHtJX0tOT1dfV0hBVF9JX0FNX0RPSU5HfSBdXTsgdGhlbgorCQlpZiBoYXMga2RlZW5h YmxlZmluYWwgJHtJVVNFLy8rfSAmJiB1c2Uga2RlZW5hYmxlZmluYWw7IHRoZW4KKwkJCWVj aG8KKwkJCWV3YXJuICJXQVJOSU5HISB5b3UgaGF2ZSBrZGVlbmFibGUgZmluYWwgdXNlZmxh ZyBlbmFibGVkLiIKKwkJCWV3YXJuICJUaGlzIHVzZWZsYWcgbmVlZHMgdG8gYmUgZW5hYmxl ZCBvbiBBTEwga2RlIHVzaW5nIHBhY2thZ2VzIGFuZCIKKwkJCWV3YXJuICJpcyBrbm93biB0 byBjYXVzZSBpc3N1ZXMuIgorCQkJZXdhcm4gIllvdSBhcmUgdXNpbmcgdGhpcyBzZXR1cCBh dCB5b3VyIG93biByaXNrIGFuZCB0aGUga2RlIHRlYW0gZG9lcyBub3QiCisJCQlld2FybiAi dGFrZSByZXNwb25zaWJpbGl0aWVzIGZvciBkZWFkIGtpdHRlbnMuIgorCQkJZWNobworCQlm aQorCQlpZiBbWyAke0JVSUxEX1RZUEV9ID0gbGl2ZSBdXTsgdGhlbgorCQkJZWNobworCQkJ ZWluZm8gIldBUk5JTkchIFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGxpdmUgZWJ1aWxkIG9m ICR7Q0FURUdPUll9LyR7UE59IgorCQkJZWluZm8gIlVzZSBpdCBhdCB5b3VyIG93biByaXNr LiIKKwkJCWVpbmZvICJEbyBfTk9UXyBmaWxlIGJ1Z3MgYXQgYnVncy5nZW50b28ub3JnIGJl Y2F1c2Ugb2YgdGhpcyBlYnVpbGQhIgorCQkJZWNobworCQllbGlmIFtbICR7QlVJTERfVFlQ RX0gIT0gbGl2ZSBdXSAmJiBoYXMga2RlcHJlZml4ICR7SVVTRS8vK30gJiYgdXNlIGtkZXBy ZWZpeDsgdGhlbgorCQkJIyB3YXJuaW5nIGFib3V0IGtkZXByZWZpeCBmb3Igbm9uLWxpdmUg dXNlcnMKIAkJCWVjaG8KLQkJCWV3YXJuICJXQVJOSU5HISBZb3VyIHN5c3RlbSBjb25maWd1 cmF0aW9uIGNvbnRhaW5zIG5laXRoZXIgXCJrZGUtYmFzZS9rZGViYXNlLXJ1bnRpbWUtbWV0 YVwiIgotCQkJZXdhcm4gIm5vciBcImtkZS1iYXNlL2tkZWJhc2Utc3RhcnRrZGVcIi4gWW91 IG5lZWQgb25lIG9mIGFib3ZlLiIKLQkJCWV3YXJuICJXaXRoIHRoaXMgc2V0dGluZyB5b3Ug YXJlIHVuc3VwcG9ydGVkIGJ5IEtERSB0ZWFtLiIKLQkJCWV3YXJuICJBbGwgbWlzc2luZyBm ZWF0dXJlcyB5b3UgcmVwb3J0IGZvciBtaXNjIHBhY2thZ2VzIHdpbGwgYmUgcHJvYmFibHkg aWdub3JlZCBvciBjbG9zZWQgYXMgSU5WQUxJRC4iCisJCQlld2FybiAiV0FSTklORyEgWW91 IGhhdmUgdGhlIGtkZXByZWZpeCB1c2VmbGFnIGVuYWJsZWQuIgorCQkJZXdhcm4gIlRoaXMg c2V0dGluZyBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCBhbmQgbWlnaHQgbGVhZCB0byBwb3Rl bnRpYWwgdHJvdWJsZSIKKwkJCWV3YXJuICJ3aXRoIEtERSB1cGRhdGUgc3RyYXRlZ2llcy4i CisJCQlld2FybiAiWW91IGFyZSB1c2luZyB0aGlzIHNldHVwIGF0IHlvdXIgb3duIHJpc2sg YW5kIHRoZSBrZGUgdGVhbSBkb2VzIG5vdCIKKwkJCWV3YXJuICJ0YWtlIHJlc3BvbnNpYmls aXRpZXMgZm9yIGRlYWQga2l0dGVucy4iCisJCQllY2hvCisJCWZpCisJCSMgZm9yIGFsbCAz cmQgcGFydHkgc29mdCB0ZWxsIHVzZXIgdGhhdCBoZSBTSE9VTEQgaW5zdGFsbCBrZGViYXNl LXN0YXJ0a2RlIG9yIGtkZWJhc2UtcnVudGltZS1tZXRhCisJCWlmIFtbICR7S0RFQkFTRX0g IT0ga2RlLWJhc2UgXV0gJiYgXAorCQkJCSEgaGFzX3ZlcnNpb24gJ2tkZS1iYXNlL2tkZWJh c2UtcnVudGltZS1tZXRhJyAmJiBcCisJCQkJISBoYXNfdmVyc2lvbiAna2RlLWJhc2Uva2Rl YmFzZS1zdGFydGtkZSc7IHRoZW4KKwkJCWlmIFtbICR7S0RFX1JFUVVJUkVEfSA9PSBhbHdh eXMgXV0gfHwgKCBbWyAke0tERV9SRVFVSVJFRH0gPT0gb3B0aW9uYWwgXV0gJiYgdXNlIGtk ZSApOyB0aGVuCisJCQkJZWNobworCQkJCWV3YXJuICJXQVJOSU5HISBZb3VyIHN5c3RlbSBj b25maWd1cmF0aW9uIGNvbnRhaW5zIG5laXRoZXIgXCJrZGUtYmFzZS9rZGViYXNlLXJ1bnRp bWUtbWV0YVwiIgorCQkJCWV3YXJuICJub3IgXCJrZGUtYmFzZS9rZGViYXNlLXN0YXJ0a2Rl XCIuIFlvdSBuZWVkIG9uZSBvZiBhYm92ZS4iCisJCQkJZXdhcm4gIldpdGggdGhpcyBzZXR0 aW5nIHlvdSBhcmUgdW5zdXBwb3J0ZWQgYnkgS0RFIHRlYW0uIgorCQkJCWV3YXJuICJBbGwg bWlzc2luZyBmZWF0dXJlcyB5b3UgcmVwb3J0IGZvciBtaXNjIHBhY2thZ2VzIHdpbGwgYmUg cHJvYmFibHkgaWdub3JlZCBvciBjbG9zZWQgYXMgSU5WQUxJRC4iCisJCQlmaQogCQlmaQog CWZpCiB9CkBAIC05MjgsNSArMTAxNiw4IEBACiBrZGU0LWJhc2VfcGtnX3Bvc3RybSgpIHsK IAlkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJEAiCiAKKwlnbm9tZTJfaWNv bl9jYWNoZV91cGRhdGUKKwlmZG8tbWltZV9kZXNrdG9wX2RhdGFiYXNlX3VwZGF0ZQorCWZk by1taW1lX21pbWVfZGF0YWJhc2VfdXBkYXRlCiAJYnVpbGRzeWNvY2EKIH0K --------------040404070904070102050508 Content-Type: text/plain; name="kde4-meta.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kde4-meta.diff" LS0tIGdlbnRvby9nZW50b28teDg2L2VjbGFzcy9rZGU0LW1ldGEuZWNsYXNzCTIwMTEtMDMt MTMgMDk6MTk6MTUuMDAwMDAwMDAwICswMTAwCisrKyAvdXNyL2xvY2FsL3BvcnRhZ2Uva2Rl L2VjbGFzcy9rZGU0LW1ldGEuZWNsYXNzCTIwMTEtMDQtMDQgMTE6NTk6MDguMDAwMDAwMDAw ICswMjAwCkBAIC0xLDYgKzEsNiBAQAogIyBDb3B5cmlnaHQgMTk5OS0yMDEwIEdlbnRvbyBG b3VuZGF0aW9uCiAjIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdjIKLSMgJEhlYWRlcjogL3Zhci9jdnNyb290L2dlbnRv by14ODYvZWNsYXNzL2tkZTQtbWV0YS5lY2xhc3MsdiAxLjUwIDIwMTEvMDMvMTEgMTk6NTA6 NTIgZGlsZnJpZGdlIEV4cCAkCisjICRIZWFkZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2 L2VjbGFzcy9rZGU0LW1ldGEuZWNsYXNzLHYgMS40NyAyMDEwLzEyLzI5IDE3OjU2OjM0IHRh bXBha3JhcCBFeHAgJAogIwogIyBARUNMQVNTOiBrZGU0LW1ldGEuZWNsYXNzCiAjIEBNQUlO VEFJTkVSOgpAQCAtMTIsMjAgKzEyLDIwIEBACiAjIFlvdSBtdXN0IGRlZmluZSBLTU5BTUUg dG8gdXNlIHRoaXMgZWNsYXNzLCBhbmQgZG8gc28gYmVmb3JlIGluaGVyaXRpbmcgaXQuIEFs bCBvdGhlciB2YXJpYWJsZXMgYXJlIG9wdGlvbmFsLgogIyBEbyBub3QgaW5jbHVkZSB0aGUg c2FtZSBpdGVtIGluIG1vcmUgdGhhbiBvbmUgb2YgS01NT0RVTEUsIEtNTUVYVFJBLCBLTUNP TVBJTEVPTkxZLCBLTUVYVFJBQ1RPTkxZLgogCitbWyAteiAke0tNTkFNRX0gXV0gJiYgZGll ICJrZGU0LW1ldGEuZWNsYXNzIGluaGVyaXRlZCBidXQgS01OQU1FIG5vdCBkZWZpbmVkIC0g YnJva2VuIGVidWlsZCIKKwogaW5oZXJpdCBrZGU0LWJhc2UgdG9vbGNoYWluLWZ1bmNzIHZl cnNpb25hdG9yCiAKIGNhc2UgJHtFQVBJOi0wfSBpbgogCTMpCi0JCUtERU1FVEFfRVhQRj0i cGtnX3NldHVwIHNyY191bnBhY2sgc3JjX3ByZXBhcmUgc3JjX2NvbmZpZ3VyZSBzcmNfY29t cGlsZSBzcmNfdGVzdCBzcmNfaW5zdGFsbCBwa2dfcG9zdGluc3QgcGtnX3Bvc3RybSIKKwkJ S0RFTUVUQV9FWFBGPSJwa2dfc2V0dXAgc3JjX3VucGFjayBzcmNfcHJlcGFyZSBzcmNfY29u ZmlndXJlIHNyY19jb21waWxlIHNyY190ZXN0IHNyY19pbnN0YWxsIHBrZ19wcmVpbnN0IHBr Z19wb3N0aW5zdCBwa2dfcG9zdHJtIgogCQk7OwogCSopCi0JCUtERU1FVEFfRVhQRj0icGtn X3ByZXRlbmQgcGtnX3NldHVwIHNyY191bnBhY2sgc3JjX3ByZXBhcmUgc3JjX2NvbmZpZ3Vy ZSBzcmNfY29tcGlsZSBzcmNfdGVzdCBzcmNfaW5zdGFsbCBwa2dfcG9zdGluc3QgcGtnX3Bv c3RybSIKKwkJS0RFTUVUQV9FWFBGPSJwa2dfcHJldGVuZCBwa2dfc2V0dXAgc3JjX3VucGFj ayBzcmNfcHJlcGFyZSBzcmNfY29uZmlndXJlIHNyY19jb21waWxlIHNyY190ZXN0IHNyY19p bnN0YWxsIHBrZ19wcmVpbnN0IHBrZ19wb3N0aW5zdCBwa2dfcG9zdHJtIgogCQk7OwogZXNh YwogRVhQT1JUX0ZVTkNUSU9OUyAke0tERU1FVEFfRVhQRn0KIAotW1sgLXogJHtLTU5BTUV9 IF1dICYmIGRpZSAia2RlNC1tZXRhLmVjbGFzcyBpbmhlcml0ZWQgYnV0IEtNTkFNRSBub3Qg ZGVmaW5lZCAtIGJyb2tlbiBlYnVpbGQiCi0KICMgQWRkIGRlcGVuZGVuY2llcyB0aGF0IGFs bCBwYWNrYWdlcyBpbiBhIGNlcnRhaW4gbW9kdWxlIHNoYXJlLgogY2FzZSAke0tNTkFNRX0g aW4KIAlrZGViYXNlfGtkZWJhc2UtYXBwc3xrZGViYXNlLXdvcmtzcGFjZXxrZGViYXNlLXJ1 bnRpbWV8a2RlZ3JhcGhpY3MpCkBAIC03OCwxMiArNzgsMTQgQEAKICMgVXNlZnVsIHRvIGJ1 aWxkIGtkZTQtbWV0YSBzdHlsZSBzdHVmZiBmcm9tIGV4dHJhZ2Vhci9wbGF5Z3JvdW5kIChw bGFzbW9pZHMgZXRjKQogY2FzZSAke0JVSUxEX1RZUEV9IGluCiAJbGl2ZSkKLQkJY2FzZSAk e0tNTkFNRX0gaW4KLQkJCWV4dHJhZ2Vhcip8cGxheWdyb3VuZCopCi0JCQkJRVNWTl9SRVBP X1VSST0iJHtFU1ZOX01JUlJPUn0vdHJ1bmsvJHtLTU5BTUV9IgotCQkJCUVTVk5fUFJPSkVD VD0iJHtLTU5BTUV9JHtFU1ZOX1BST0pFQ1RfU1VGRklYfSIKLQkJCQk7OwotCQllc2FjCisJ CWlmIFtbICR7S0RFX1NDTX0gPT0gc3ZuIF1dOyB0aGVuCisJCQljYXNlICR7S01OQU1FfSBp bgorCQkJCWV4dHJhZ2Vhcip8cGxheWdyb3VuZCopCisJCQkJCUVTVk5fUkVQT19VUkk9IiR7 RVNWTl9NSVJST1J9L3RydW5rLyR7S01OQU1FfSIKKwkJCQkJRVNWTl9QUk9KRUNUPSIke0tN TkFNRX0ke0VTVk5fUFJPSkVDVF9TVUZGSVh9IgorCQkJCQk7OworCQkJZXNhYworCQlmaQog CQk7OwogZXNhYwogCkBAIC0xNDIsNyArMTQ0LDcgQEAKIAlkZWJ1Zy1wcmludC1mdW5jdGlv biAke0ZVTkNOQU1FfSAiJEAiCiAKIAlzbG90X2lzX2F0X2xlYXN0IDQuNiAke1NMT1R9ICYm ICggW1sgJChnY2MtbWFqb3ItdmVyc2lvbikgLWx0IDQgXV0gfHwgXAotCQkoIFtbICQoZ2Nj LW1ham9yLXZlcnNpb24pIC1lcSA0IF1dICYmIFtbICQoZ2NjLW1pbm9yLXZlcnNpb24pIC1s ZSAzIF1dICkgKSBcCisJCSggW1sgJChnY2MtbWFqb3ItdmVyc2lvbikgLWVxIDQgJiYgJChn Y2MtbWlub3ItdmVyc2lvbikgLWxlIDMgXV0gKSApIFwKIAkJJiYgZGllICJTb3JyeSwgYnV0 IGdjYy00LjMgYW5kIGVhcmxpZXIgd29udCB3b3JrIGZvciBLREUgU0MgNC42IChzZWUgYnVn IDM1NDgzNykuIgogfQogCkBAIC0xNjAsOTggKzE2Miw4NCBAQAogCiAjIEBGVU5DVElPTjog a2RlNC1tZXRhX3NyY191bnBhY2sKICMgQERFU0NSSVBUSU9OOgotIyBUaGlzIGZ1bmN0aW9u IHVucGFja3MgdGhlIHNvdXJjZSBmb3Igc3BsaXQgZWJ1aWxkcy4gU2VlIGFsc28KLSMga2Rl NC1tZXRhLXNyY19leHRyYWN0LgorIyBUaGlzIGZ1bmN0aW9uIHVucGFja3MgdGhlIHNvdXJj ZSBmb3Igc3BsaXQgZWJ1aWxkcy4KKyMgRnVydGhlciBtb3JlIGlzIHByb2Nlc3NlZCBpbiBr ZGU0LW1ldGFfc3JjX2V4dHJhY3QKIGtkZTQtbWV0YV9zcmNfdW5wYWNrKCkgewogCWRlYnVn LXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCIKIAogCWlmIFtbICR7QlVJTERfVFlQ RX0gPSBsaXZlIF1dOyB0aGVuCi0JCW1pZ3JhdGVfc3RvcmVfZGlyCi0JCVM9IiR7V09SS0RJ Un0vJHtQfSIKLQkJbWtkaXIgLXAgIiR7U30iCi0JCUVTVk5fUkVTVFJJQ1Q9ImV4cG9ydCIg c3VidmVyc2lvbl9zcmNfdW5wYWNrCi0JCXN1YnZlcnNpb25fd2NfaW5mbwotCQlzdWJ2ZXJz aW9uX2Jvb3RzdHJhcAotCQlrZGU0LW1ldGFfc3JjX2V4dHJhY3QKLQllbHNlCi0JCWtkZTQt bWV0YV9zcmNfZXh0cmFjdAorCQljYXNlICIke0tERV9TQ019IiBpbgorCQkJc3ZuKQorCQkJ CW1pZ3JhdGVfc3RvcmVfZGlyCisJCQkJUz0iJHtXT1JLRElSfS8ke1B9IgorCQkJCW1rZGly IC1wICIke1N9IgorCQkJCUVTVk5fUkVTVFJJQ1Q9ImV4cG9ydCIgc3VidmVyc2lvbl9zcmNf dW5wYWNrCisJCQkJc3VidmVyc2lvbl93Y19pbmZvCisJCQkJc3VidmVyc2lvbl9ib290c3Ry YXAKKwkJCQk7OworCQkJZ2l0KQorCQkJCWdpdF9zcmNfdW5wYWNrCisJCQkJOzsKKwkJZXNh YwogCWZpCisJa2RlNC1tZXRhX3NyY19leHRyYWN0CiB9CiAKLSMgRklYTUU6IHRoZSBkaWZm ZXJlbmNlIGJldHdlZW4ga2RlNC1tZXRhX3NyY19leHRyYWN0IGFuZCBrZGU0LW1ldGFfc3Jj X3VucGFjaz8KLQogIyBARlVOQ1RJT046IGtkZTQtbWV0YV9zcmNfZXh0cmFjdAogIyBAREVT Q1JJUFRJT046Ci0jIEEgZnVuY3Rpb24gdG8gdW5wYWNrIHRoZSBzb3VyY2UgZm9yIGEgc3Bs aXQgS0RFIGVidWlsZC4KKyMgQSBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBzb3VyY2UgZm9y IGEgc3BsaXQgS0RFIGVidWlsZC4KICMgQWxzbyBzZWUgS01NT0RVTEUsIEtNTk9NT0RVTEUs IEtNRVhUUkEsIEtNQ09NUElMRU9OTFksIEtNRVhUUkFDVE9OTFkgYW5kCiAjIEtNVEFSUEFS QU1TLgoga2RlNC1tZXRhX3NyY19leHRyYWN0KCkgewogCWRlYnVnLXByaW50LWZ1bmN0aW9u ICR7RlVOQ05BTUV9ICIkQCIKIAogCWlmIFtbICR7QlVJTERfVFlQRX0gPSBsaXZlIF1dOyB0 aGVuCi0JCWxvY2FsIHJzeW5jX29wdGlvbnMgc3ViZGlyIGttbmFtZWRpciB0YXJnZXRkaXIK IAkJIyBFeHBvcnQgd29ya2luZyBjb3B5IHRvICR7U30KIAkJZWluZm8gIkV4cG9ydGluZyBw YXJ0cyBvZiB3b3JraW5nIGNvcHkgdG8gJHtTfSIKIAkJa2RlNC1tZXRhX2NyZWF0ZV9leHRy YWN0bGlzdHMKIAotCQlyc3luY19vcHRpb25zPSItLWdyb3VwIC0tbGlua3MgLS1vd25lciAt LXBlcm1zIC0tcXVpZXQgLS1leGNsdWRlPS5zdm4vIgotCi0JCSMgQ29weSAke0tNTkFNRX0g bm9uLXJlY3Vyc2l2ZWx5ICh0b3BsZXZlbCBmaWxlcykKLQkJcnN5bmMgJHtyc3luY19vcHRp b25zfSAiJHtFU1ZOX1dDX1BBVEh9Ii8ke2ttbmFtZWRpcn0qICIke1N9IiBcCi0JCQl8fCBk aWUgIiR7RVNWTn06IGNhbid0IGV4cG9ydCB0b3BsZXZlbCBmaWxlcyB0byAnJHtTfScuIgot CQkjIENvcHkgY21ha2UgZGlyZWN0b3J5Ci0JCWlmIFtbIC1kICIke0VTVk5fV0NfUEFUSH0v JHtrbW5hbWVkaXJ9Y21ha2UiIF1dOyB0aGVuCi0JCQlyc3luYyAtLXJlY3Vyc2l2ZSAke3Jz eW5jX29wdGlvbnN9ICIke0VTVk5fV0NfUEFUSH0vJHtrbW5hbWVkaXJ9Y21ha2UiICIke1N9 IiBcCi0JCQkJfHwgZGllICIke0VTVk59OiBjYW4ndCBleHBvcnQgY21ha2UgZmlsZXMgdG8g JyR7U30nLiIKLQkJZmkKLQkJIyBDb3B5IGFsbCBzdWJkaXJlY3RvcmllcwotCQlmb3Igc3Vi ZGlyIGluICQoX19saXN0X25lZWRlZF9zdWJkaXJlY3Rvcmllcyk7IGRvCi0JCQl0YXJnZXRk aXI9IiIKLQkJCWlmIFtbICRzdWJkaXIgPSBkb2MvKiAmJiAhIC1lICIkRVNWTl9XQ19QQVRI LyRrbW5hbWVkaXIkc3ViZGlyIiBdXTsgdGhlbgotCQkJCWNvbnRpbnVlCi0JCQlmaQotCi0J CQlbWyAke3N1YmRpciUvfSA9ICovKiBdXSAmJiB0YXJnZXRkaXI9JHtzdWJkaXIlL30gJiYg dGFyZ2V0ZGlyPSR7dGFyZ2V0ZGlyJS8qfSAmJiBta2RpciAtcCAiJHtTfS8ke3RhcmdldGRp cn0iCi0JCQlyc3luYyAtLXJlY3Vyc2l2ZSAke3JzeW5jX29wdGlvbnN9ICIke0VTVk5fV0Nf UEFUSH0vJHtrbW5hbWVkaXJ9JHtzdWJkaXIlL30iICIke1N9LyR7dGFyZ2V0ZGlyfSIgXAot CQkJCXx8IGRpZSAiJHtFU1ZOfTogY2FuJ3QgZXhwb3J0IHN1YmRpcmVjdG9yeSAnJHtzdWJk aXJ9JyB0byAnJHtTfS8ke3RhcmdldGRpcn0nLiIKLQkJZG9uZQorCQljYXNlICR7S0RFX1ND TX0gaW4KKwkJCXN2bikKKwkJCQlsb2NhbCByc3luY19vcHRpb25zIHN1YmRpciBrbW5hbWVk aXIgdGFyZ2V0ZGlyIHdjX3BhdGggZXNjbQorCisJCQkJcnN5bmNfb3B0aW9ucz0iLS1ncm91 cCAtLWxpbmtzIC0tb3duZXIgLS1wZXJtcyAtLXF1aWV0IC0tZXhjbHVkZT0uc3ZuLyAtLWV4 Y2x1ZGU9LmdpdC8iCisJCQkJd2NfcGF0aD0iJHtFU1ZOX1dDX1BBVEh9IgorCQkJCWVzY209 IntFU1ZOfSIKKworCQkJCSMgQ29weSAke0tNTkFNRX0gbm9uLXJlY3Vyc2l2ZWx5ICh0b3Bs ZXZlbCBmaWxlcykKKwkJCQlyc3luYyAke3JzeW5jX29wdGlvbnN9ICIke3djX3BhdGh9Ii8k e2ttbmFtZWRpcn0qICIke1N9IiBcCisJCQkJCXx8IGRpZSAiJHtlc2NtfTogY2FuJ3QgZXhw b3J0IHRvcGxldmVsIGZpbGVzIHRvICcke1N9Jy4iCisJCQkJIyBDb3B5IGNtYWtlIGRpcmVj dG9yeQorCQkJCWlmIFtbIC1kICIke3djX3BhdGh9LyR7a21uYW1lZGlyfWNtYWtlIiBdXTsg dGhlbgorCQkJCQlyc3luYyAtLXJlY3Vyc2l2ZSAke3JzeW5jX29wdGlvbnN9ICIke3djX3Bh dGh9LyR7a21uYW1lZGlyfWNtYWtlIiAiJHtTfSIgXAorCQkJCQkJfHwgZGllICIke2VzY219 OiBjYW4ndCBleHBvcnQgY21ha2UgZmlsZXMgdG8gJyR7U30nLiIKKwkJCQlmaQorCQkJCSMg Q29weSBhbGwgc3ViZGlyZWN0b3JpZXMKKwkJCQlmb3Igc3ViZGlyIGluICQoX19saXN0X25l ZWRlZF9zdWJkaXJlY3Rvcmllcyk7IGRvCisJCQkJCXRhcmdldGRpcj0iIgorCQkJCQlpZiBb WyAkc3ViZGlyID0gZG9jLyogJiYgISAtZSAiJHdjX3BhdGgvJGttbmFtZWRpciRzdWJkaXIi IF1dOyB0aGVuCisJCQkJCQljb250aW51ZQorCQkJCQlmaQogCi0JCWlmIFtbICR7S01OQU1F fSA9IGtkZWJhc2UtcnVudGltZSAmJiAke1BOfSAhPSBrZGViYXNlLWRhdGEgXV07IHRoZW4K LQkJCXNlZCAtaSAtZSAnL15pbnN0YWxsKFBST0dSQU1TW1s6c3BhY2U6XV0qW15bOnNwYWNl Ol1dKlwva2RlNFtbOnNwYWNlOl1dL3MvXi8jRE9OT1RJTlNUQUxMIC8nIFwKLQkJCQkiJHtT fSIvQ01ha2VMaXN0cy50eHQgfHwgZGllICJTZWQgdG8gZXhjbHVkZSBiaW4va2RlNCBmYWls ZWQiCi0JCWZpCi0JZWxzZQotCQlsb2NhbCBhYm9ydCB0YXJiYWxsIHRhcmZpbGUgZiBleHRy YWN0bGlzdCBtb2R1bGVwcmVmaXggcG9zdGZpeAotCQljYXNlICR7UFZ9IGluCi0JCQk0Lls0 NV0uOFswNV0gfCA0Lls0NV0uOVswMjM1NjhdKQotCQkJCSMgQmxvY2sgZm9yIG5vcm1hbGx5 IHBhY2tlZCB1cHN0cmVhbSB1bnN0YWJsZSBzbmFwc2hvdHMKLQkJCQlLTVRBUlBBUkFNUys9 IiAtLWJ6aXAyIiAjIGJ6MgotCQkJCXBvc3RmaXg9ImJ6MiIKLQkJCQk7OwotCQkJKikKLQkJ CQlLTVRBUlBBUkFNUys9IiAtLWJ6aXAyIiAjIGJ6MgotCQkJCXBvc3RmaXg9ImJ6MiIKKwkJ CQkJW1sgJHtzdWJkaXIlL30gPSAqLyogXV0gJiYgdGFyZ2V0ZGlyPSR7c3ViZGlyJS99ICYm IHRhcmdldGRpcj0ke3RhcmdldGRpciUvKn0gJiYgbWtkaXIgLXAgIiR7U30vJHt0YXJnZXRk aXJ9IgorCQkJCQlyc3luYyAtLXJlY3Vyc2l2ZSAke3JzeW5jX29wdGlvbnN9ICIke3djX3Bh dGh9LyR7a21uYW1lZGlyfSR7c3ViZGlyJS99IiAiJHtTfS8ke3RhcmdldGRpcn0iIFwKKwkJ CQkJCXx8IGRpZSAiJHtlc2NtfTogY2FuJ3QgZXhwb3J0IHN1YmRpcmVjdG9yeSAnJHtzdWJk aXJ9JyB0byAnJHtTfS8ke3RhcmdldGRpcn0nLiIKKwkJCQlkb25lCiAJCQkJOzsKIAkJZXNh YworCWVsc2UKKwkJbG9jYWwgYWJvcnQgdGFyYmFsbCB0YXJmaWxlIGYgZXh0cmFjdGxpc3Qg bW9kdWxlcHJlZml4IHBvc3RmaXgKKworCQlLTVRBUlBBUkFNUys9IiAtLWJ6aXAyIgorCQlw b3N0Zml4PSJiejIiCisKIAkJY2FzZSAke0tNTkFNRX0gaW4KIAkJCWtkZWJhc2UtYXBwcykK IAkJCQkjIGtkZWJhc2UvYXBwcyAtPiBrZGViYXNlLWFwcHMKIAkJCQl0YXJiYWxsPSJrZGVi YXNlLSR7UFZ9LnRhci4ke3Bvc3RmaXh9IgotCQkJCWNhc2UgJHtQVn0gaW4KLQkJCQkJNC42 LjEpCi0JCQkJCQk7OwotCQkJCQkqKQotCQkJCQkJIyBHbyBvbmUgbGV2ZWwgZGVlcGVyIGZv ciBrZGViYXNlLWFwcHMgaW4gdGFyYmFsbHMKLQkJCQkJCW1vZHVsZXByZWZpeD1hcHBzLwot CQkJCQkJS01UQVJQQVJBTVMrPSIgLS10cmFuc2Zvcm09c3xhcHBzL3x8IgotCQkJCQkJOzsK LQkJCQllc2FjCi0JCQkJOzsKLQkJCWtkZXBpbSkKLQkJCQlpZiBbWyAke1BWfSA9PSA0LjUu OTMgXV0gOyB0aGVuCi0JCQkJCXRhcmJhbGw9ImtkZXBpbS00LjZiZXRhMy50YXIuJHtwb3N0 Zml4fSIKLQkJCQllbHNlCi0JCQkJCXRhcmJhbGw9IiR7S01OQU1FfS0ke1BWfS50YXIuJHtw b3N0Zml4fSIKKwkJCQlpZiAhIHNsb3RfaXNfYXRfbGVhc3QgNC42ICR7U0xPVH0gfHwgW1sg JHtQVn0gPT0gIjQuNi4wIiBdXTsgdGhlbgorCQkJCQltb2R1bGVwcmVmaXg9YXBwcy8KKwkJ CQkJS01UQVJQQVJBTVMrPSIgLS10cmFuc2Zvcm09c3xhcHBzL3x8IgogCQkJCWZpCiAJCQkJ OzsKIAkJCSopCkBAIC0yNzksNyArMjY3LDEyIEBACiAJCWV4dHJhY3RsaXN0Kz0iICQoX19s aXN0X25lZWRlZF9zdWJkaXJlY3RvcmllcykiCiAKIAkJcHVzaGQgIiR7V09SS0RJUn0iID4g L2Rldi9udWxsCi0JCVtbIC1uICR7S0RFNF9TVFJJQ1RFUn0gXV0gJiYgZWNobyB0YXIgLXhw ZiAiJHt0YXJmaWxlfSIgJHtLTVRBUlBBUkFNU30gJHtleHRyYWN0bGlzdH0KKworCQkjIEBF Q0xBU1MtVkFSSUFCTEU6IEtERTRfU1RSSUNURVIKKwkJIyBAREVTQ1JJUFRJT046CisJCSMg UHJpbnQgb3V0IGFsbCBpc3N1ZXMgZm91bmQgZXhlY3V0aW5nIHRhciAvIGttZXh0cmFjdCBm aWxlcworCQkjIFNldCBvbiBpZiB5b3Ugd2FudCB0byBmaW5kIGlzc3VlcyBpbiBrZGUtYmFz ZSBlYnVpbGQgdW5wYWNrIHNlcXVlbmNlcworCQlbWyAtbiAke0tERTRfU1RSSUNURVJ9IF1d ICYmIGVjaG8gJ3RhciAteHBmICIke3RhcmZpbGV9IiAke0tNVEFSUEFSQU1TfSAke2V4dHJh Y3RsaXN0fScKIAkJaWYgW1sgJHtJX0tOT1dfV0hBVF9JX0FNX0RPSU5HfSBdXTsgdGhlbgog CQkJIyB0byBtYWtlIHRoZSBkZXZzIGhhcHB5IC0gYnVnIDMzODM5NwogCQkJdGFyIC14cGYg IiR7dGFyZmlsZX0iICR7S01UQVJQQVJBTVN9ICR7ZXh0cmFjdGxpc3R9IHx8IGV3YXJuICJ0 YXIgZXh0cmFjdCBjb21tYW5kIGZhaWxlZCBhdCBsZWFzdCBwYXJ0aWFsbHkgLSBjb250aW51 aW5nIGFueXdheSIKQEAgLTI5OSw3ICsyOTIsNyBAQAogCiAJCWlmIFtbIC1uICR7S0RFNF9T VFJJQ1RFUn0gXV07IHRoZW4KIAkJCWZvciBmIGluICQoX19saXN0X25lZWRlZF9zdWJkaXJl Y3RvcmllcyBmYXRhbCk7IGRvCi0JCQkJaWYgW1sgISAtZSAiJHtTfS8ke2YjKi99IiBdXTsg dGhlbgorCQkJCWlmIFtbICEgLWUgJHtTfS8ke2YjKi99IF1dOyB0aGVuCiAJCQkJCWVlcnJv ciAiJyR7ZiMqL30nIGlzIG1pc3NpbmciCiAJCQkJCWFib3J0PXRydWUKIAkJCQlmaQpAQCAt MzMwLDcgKzMyMyw3IEBACiAJZmkKIAogCSMgQWRkIGRlZmF1bHQgaGFuZGJvb2sgbG9jYXRp b25zCi0JaWYgW1sgLXogJHtLTU5PTU9EVUxFfSBdXSAmJiB7IFtbICR7S0RFX0hBTkRCT09L fSA9IGFsd2F5cyBdXSB8fCB7IFtbICR7S0RFX0hBTkRCT09LfSA9IG9wdGlvbmFsIF1dICYm IHVzZSBoYW5kYm9vazsgfTsgfTsgdGhlbgorCWlmIFtbIC16ICR7S01OT01PRFVMRX0gXV0g JiYgKCBbWyAke0tERV9IQU5EQk9PS30gPT0gYWx3YXlzIF1dIHx8ICggW1sgJHtLREVfSEFO REJPT0t9ID09IG9wdGlvbmFsIF1dICYmIHVzZSBoYW5kYm9vayApICk7IHRoZW4KIAkJS01F WFRSQV9OT05GQVRBTCs9IiBkb2MvJHtLTU1PRFVMRSMjKi99IgogCWZpCiAKQEAgLTMzOSwx OCArMzMyLDE1IEBACiAJIyBJbiB0aG9zZSBjYXNlcyB5b3Ugc2hvdWxkIGNhcmUgdG8gYWRk IHRoZSByZWxldmFudCBmaWxlcyB0byBLTUVYVFJBQ1RPTkxZCiAJY2FzZSAke0tNTkFNRX0g aW4KIAkJa2RlYmFzZSkKLQkJCWNhc2UgJHtQVn0gaW4KLQkJCQk0LjYuMSkKLQkJCQkJS01F WFRSQUNUT05MWSs9IgotCQkJCQkJY29uZmlnLWFwcHMuaC5jbWFrZQotCQkJCQkJQ29uZmln dXJlQ2hlY2tzLmNtYWtlIgotCQkJCQkJOzsKLQkJCQkJKikKLQkJCQkJS01FWFRSQUNUT05M WSs9IgotCQkJCQkJYXBwcy9jb25maWctYXBwcy5oLmNtYWtlCi0JCQkJCQlhcHBzL0NvbmZp Z3VyZUNoZWNrcy5jbWFrZSIKLQkJCQkJCTs7Ci0JCQkJZXNhYworCQkJaWYgISBzbG90X2lz X2F0X2xlYXN0IDQuNiAke1NMT1R9IHx8IFtbICR7UFZ9ID09ICI0LjYuMCIgXV07IHRoZW4K KwkJCQlLTUVYVFJBQ1RPTkxZKz0iCisJCQkJCWFwcHMvY29uZmlnLWFwcHMuaC5jbWFrZQor CQkJCQlhcHBzL0NvbmZpZ3VyZUNoZWNrcy5jbWFrZSIKKwkJCWVsc2UKKwkJCQlLTUVYVFJB Q1RPTkxZKz0iCisJCQkJCWNvbmZpZy1hcHBzLmguY21ha2UKKwkJCQkJQ29uZmlndXJlQ2hl Y2tzLmNtYWtlIgorCQkJZmkKIAkJCTs7CiAJCWtkZWJhc2UtYXBwcykKIAkJCUtNRVhUUkFD VE9OTFkrPSIKQEAgLTQwNywxNCArMzk3LDYgQEAKIAkJCQlmaWx0ZXJzL2NvbmZpZy1maWx0 ZXJzLmguY21ha2UKIAkJCSIKIAkJCWNhc2UgJHtQVn0gaW4KLQkJCQkyLjAuKikKLQkJCQkJ S01FWFRSQUNUT05MWSs9IgotCQkJCQkJY29uZmlnLW9wZW5jdGwuaC5jbWFrZQotCQkJCQkJ Y29uZmlnLWVuZGlhbi5oLmNtYWtlCi0JCQkJCQljb25maWctb3BlbmV4ci5oLmNtYWtlCi0J CQkJCQljb25maWctb3BlbmdsLmguY21ha2UKLQkJCQkJCWNvbmZpZy1wcmVmaXguaC5jbWFr ZSIKLQkJCQk7OwogCQkJCTIuWzEyXS4qKQogCQkJCQlLTUVYVFJBQ1RPTkxZKz0iCiAJCQkJ CQljb25maWctZW5kaWFuLmguY21ha2UKQEAgLTQyNiwyMCArNDA4LDI0IEBACiAJCQk7Owog CWVzYWMKIAkjIERvbid0IGluc3RhbGwgY21ha2UgbW9kdWxlcyBmb3Igc3BsaXQgZWJ1aWxk cywgdG8gYXZvaWQgY29sbGlzaW9ucy4KLQljYXNlICR7S01OQU1FfSBpbgotCQlrZGViYXNl LXJ1bnRpbWV8a2RlYmFzZS13b3Jrc3BhY2V8a2RlZWR1fGtkZWdhbWVzfGtkZWdyYXBoaWNz KQotCQkJY2FzZSAke1BOfSBpbgotCQkJCWxpYmtkZWdhbWVzfGxpYmtkZWVkdXxsaWJrd29y a3NwYWNlKQotCQkJCQlLTUVYVFJBKz0iCi0JCQkJCQljbWFrZS9tb2R1bGVzLyIKLQkJCQkJ OzsKLQkJCQkqKQotCQkJCQlLTUNPTVBJTEVPTkxZKz0iCi0JCQkJCQljbWFrZS9tb2R1bGVz LyIKLQkJCQkJOzsKLQkJCWVzYWMKLQkJOzsKLQllc2FjCisJIyBub3RlOiBrZGVncmFwaGlj cyA+PSA0LjYuMiBkb2VzIG5vdCBldmVuIGhhdmUgY29kZSB0byBkbyB0aGF0LCBzbyB3ZQor CSMgICBzaG91bGQgbm90IHRyeSBpbiB0aGF0IGNhc2UKKwlpZiBbWyAke0tNTkFNRX0gIT0g a2RlZ3JhcGhpY3MgXV0gfHwgeyBbWyAke1NMT1R9ICE9IDQuNiB8fCAke1BWfSA8IDQuNi4y IF1dICYmICEgc2xvdF9pc19hdF9sZWFzdCA0LjcgJHtTTE9UfTsgfTsgdGhlbgorCQljYXNl ICR7S01OQU1FfSBpbgorCQkJa2RlYmFzZS1ydW50aW1lfGtkZWJhc2Utd29ya3NwYWNlfGtk ZWVkdXxrZGVnYW1lc3xrZGVncmFwaGljcykKKwkJCQljYXNlICR7UE59IGluCisJCQkJCWxp YmtkZWdhbWVzfGxpYmtkZWVkdXxsaWJrd29ya3NwYWNlKQorCQkJCQkJS01FWFRSQSs9Igor CQkJCQkJCWNtYWtlL21vZHVsZXMvIgorCQkJCQkJOzsKKwkJCQkJKikKKwkJCQkJCUtNQ09N UElMRU9OTFkrPSIKKwkJCQkJCQljbWFrZS9tb2R1bGVzLyIKKwkJCQkJCTs7CisJCQkJZXNh YworCQkJOzsKKwkJZXNhYworCWZpCiAKIAlkZWJ1Zy1wcmludCAibGluZSAke0xJTkVOT30g JHtFQ0xBU1N9ICR7RlVOQ05BTUV9OiBLTUVYVFJBQ1RPTkxZICR7S01FWFRSQUNUT05MWX0i CiB9CkBAIC01MDQsMTMgKzQ5MCwxNiBAQAogCWtkZTQtYmFzZV9zcmNfcHJlcGFyZQogfQog Ci0jIEZJWE1FOiBubyBjb21tZW50IGhlcmU/CisjIEBGVU5DVElPTjogX2NoYW5nZV9jbWFr ZWxpc3RzX3BhcmVudF9kaXJzCisjIEBERVNDUklQVElPTjoKKyMgQWRqdXN0IENNYWtlTGlz dHMudHh0IHRvIHNoYWRvdyBzdWJkaXJlY3RvcmllcworIyB0aGF0IGFyZSBub3QgcmVxdWly ZWQgZm9yIHRoZSBidWlsZC4KIF9jaGFuZ2VfY21ha2VsaXN0c19wYXJlbnRfZGlycygpIHsK IAlkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJEAiCiAKIAlsb2NhbCBfb2xk ZGlyIF9kaXIKIAlfZGlyPSIke1N9Ii8kezF9Ci0JdW50aWwgW1sgJHtfZGlyfSA9PSAiJHtT fSIgXV07IGRvCisJdW50aWwgW1sgJHtfZGlyfSA9PSAke1N9IF1dOyBkbwogCQlfb2xkZGly PSQoYmFzZW5hbWUgIiR7X2Rpcn0iKQogCQlfZGlyPSQoZGlybmFtZSAiJHtfZGlyfSIpCiAJ CWRlYnVnLXByaW50ICIke0xJTkVOT306IHByb2Nlc3NpbmcgJHtfZGlyfSBDTWFrZUxpc3Rz LnR4dCBzZWFyY2hpbmcgZm9yICR7X29sZGRpcn0iCkBAIC02NjAsMzEgKzY0OSw2IEBACiAJ CQkJc2VkIC1lICcvaW5zdGFsbCguXCtjb25maWctb3BlbmV4clwuaC5cKykvZCcgXAogCQkJ CQktaSBDTWFrZUxpc3RzLnR4dCB8fCBkaWUgIiR7TElORU5PfTogc2VkIGRpZWQgaW4gY29s bGlzaW9uIHByZXZlbnRpb24gc2VjdGlvbiIKIAkJCWZpCi0JCQkjIGtvZmZpY2UgMi4wCi0J CQljYXNlICR7UFZ9IGluCi0JCQkJMi4wLlsxLTldKQotCQkJCQlzZWQgLWkgLW4gLWUgJzFo OzEhSDske2c7cy9pbnN0YWxsKC5cK2NvbmZpZy1vcGVuZXhyLmguXCspLy87cH0nIFwKLQkJ CQkJCSIke1N9Ii9DTWFrZUxpc3RzLnR4dCB8fCBcCi0JCQkJCQlkaWUgIiR7TElORU5PfTog c2VkIGRpZWQgaW4gY29sbGlzaW9uIHByZXZlbnRpb24gc2VjdGlvbiIKLQkJCQkJOzsKLQkJ CQkqKSA7OwotCQkJZXNhYwotCQkJIyBrb2ZmaWNlIDIuMS5bOC05XVswLTldIGFuZCA5OTk5 Ci0JCQljYXNlICR7UFZ9IGluCi0JCQkJMi4xLjhbMC05XXwyLjEuOVswLTldfDk5OTkpCi0J CQkJCXNlZCAtZSAnL15vcHRpb24oQlVJTEQvcy9PTi9PRkYvJyBcCi0JCQkJCQktZSAnL15p ZihOT1QgQlVJTERfa2NoYXJ0LywvXmVuZGlmKE5PVCBCVUlMRF9rY2hhcnQvZCcgXAotCQkJ CQkJLWUgJy9eaWYoQlVJTERfa29yZXBvcnQvLC9eZW5kaWYoQlVJTERfa29yZXBvcnQvZCcg XAotCQkJCQkJLWUgJ3Mvc2V0KFNIT1VMRF9CVUlMRF9GX09GRklDRSBUUlVFKS9zZXQoU0hP VUxEX0JVSUxEX0ZfT0ZGSUNFIEZBTFNFKS8nIFwKLQkJCQkJCS1pICIke1N9Ii9DTWFrZUxp c3RzLnR4dCB8fCBkaWUgInNlZCBkaWVkIHdoaWxlIGZpeGluZyBjbWFrZWxpc3RzIgotCQkJ CQlpZiBbWyAke1BOfSAhPSBrb2ZmaWNlLWRhdGEgXV0gJiYgW1sgJHtQVn0gPT0gOTk5OSBd XTsgdGhlbgotCQkJCQkJc2VkIC1lICcvY29uZmlnLW9wZW5nbC5oL2QnIFwKLQkJCQkJCS1p ICIke1N9Ii9DTWFrZUxpc3RzLnR4dCB8fCBkaWUgInNlZCBkaWVkIHdoaWxlIGZpeGluZyBj bWFrZWxpc3RzIgotCi0JCQkJCWZpCi0JCQkJOzsKLQkJCQkqKSA7OwotCQkJZXNhYwogCWVz YWMKIAogCXBvcGQgPiAvZGV2L251bGwKQEAgLTcxNCwxOCArNjc4LDYgQEAKIAkJCQkiJHtt eWNtYWtlYXJnc1tAXX0iCiAJCQkpCiAJCQk7OwotCQlrb2ZmaWNlKQotCQkJY2FzZSAke1BW fSBpbgotCQkJCTIuMS44WzAtOV18Mi4xLjlbMC05XXw5OTk5KQotCQkJCQlpZiBbWyAke1BO fSAhPSAia2NoYXJ0IiBdXTsgdGhlbgotCQkJCQkJbXljbWFrZWFyZ3M9KAotCQkJCQkJCS1E QlVJTERfa29yZXBvcnQ9T0ZGCi0JCQkJCQkJIiR7bXljbWFrZWFyZ3NbQF19IgotCQkJCQkJ KQotCQkJCQlmaQotCQkJCTs7Ci0JCQllc2FjCi0JCQk7OwogCWVzYWMKIAogCWtkZTQtYmFz ZV9zcmNfY29uZmlndXJlCkBAIC03NzAsNiArNzIyLDE1IEBACiAJa2RlNC1iYXNlX3NyY19p bnN0YWxsCiB9CiAKKyMgQEZVTkNUSU9OOiBrZGU0LW1ldGFfcGtnX3ByZWluc3QKKyMgQERF U0NSSVBUSU9OOgorIyBJbnZva2UgaXRzIGVxdWl2YWxlbnQgaW4ga2RlNC1iYXNlLmVjbGFz cy4KK2tkZTQtbWV0YV9wa2dfcHJlaW5zdCgpIHsKKwlkZWJ1Zy1wcmludC1mdW5jdGlvbiAk e0ZVTkNOQU1FfSAiJEAiCisKKwlrZGU0LWJhc2VfcGtnX3ByZWluc3QKK30KKwogIyBARlVO Q1RJT046IGtkZTQtbWV0YV9wa2dfcG9zdGluc3QKICMgQERFU0NSSVBUSU9OOgogIyBJbnZv a2Uga2J1aWxkc3ljb2NhNC4K --------------040404070904070102050508-- --------------enig8D85869C4554550BA67776E2 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk2Z+R0ACgkQHB6c3gNBRYffKwCgl55H+lbeaL4iX2kTObFFmOIY osUAoJwjU5ASI/qFyl4efE97NAXEmlls =bIz3 -----END PGP SIGNATURE----- --------------enig8D85869C4554550BA67776E2--